@rivet-health/design-system 6.2.1 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/input/checkbox/checkbox.component.mjs +19 -3
- package/fesm2015/rivet-health-design-system.mjs +18 -2
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +18 -2
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/input/checkbox/checkbox.component.d.ts +6 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rivet-health-design-system.mjs","sources":["../../../projects/riv/src/lib/icon/dom-cache.ts","../../../projects/riv/src/lib/icon/icons.ts","../../../projects/riv/src/lib/icon/icon.component.ts","../../../projects/riv/src/lib/icon/icon.component.html","../../../projects/riv/src/lib/content-toggle/text-toggle/text-toggle.component.ts","../../../projects/riv/src/lib/content-toggle/text-toggle/text-toggle.component.html","../../../projects/riv/src/lib/format/pipes/common.ts","../../../projects/riv/src/lib/format/pipes/date.pipe.ts","../../../projects/riv/src/lib/format/pipes/days.pipe.ts","../../../projects/riv/src/lib/format/pipes/dollars.pipe.ts","../../../projects/riv/src/lib/format/pipes/number.pipe.ts","../../../projects/riv/src/lib/format/pipes/option-group.pipe.ts","../../../projects/riv/src/lib/format/pipes/percentage.pipe.ts","../../../projects/riv/src/lib/format/pipes/small-currency.pipe.ts","../../../projects/riv/src/lib/modal/callout/callout.helpers.ts","../../../projects/riv/src/lib/modal/callout/lock-scroll.directive.ts","../../../projects/riv/src/lib/modal/callout/callout.component.ts","../../../projects/riv/src/lib/modal/callout/callout.component.html","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.ts","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.html","../../../projects/riv/src/lib/modal/tooltip/tooltip.directive.ts","../../../projects/riv/src/lib/format/svg-text-truncate/svg-text-truncate.directive.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.html","../../../projects/riv/src/lib/load/loading/loading.component.ts","../../../projects/riv/src/lib/load/loading/loading.component.html","../../../projects/riv/src/lib/input/button/button.component.ts","../../../projects/riv/src/lib/input/button/button.component.html","../../../projects/riv/src/lib/input/checkbox/checkbox.component.ts","../../../projects/riv/src/lib/input/checkbox/checkbox.component.html","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.ts","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.html","../../../projects/riv/src/lib/util/local-storage.ts","../../../projects/riv/src/lib/modal/help/help.component.ts","../../../projects/riv/src/lib/modal/help/help.component.html","../../../projects/riv/src/lib/navigation/link/link.component.ts","../../../projects/riv/src/lib/navigation/link/link.component.html","../../../projects/riv/src/lib/input/input-label/input-label.component.ts","../../../projects/riv/src/lib/input/input-label/input-label.component.html","../../../projects/riv/src/lib/interaction/focus-on-init.directive.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.helpers.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.html","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.html","../../../projects/riv/src/lib/input/single-select/single-select.component.ts","../../../projects/riv/src/lib/input/single-select/single-select.component.html","../../../projects/riv/src/lib/input/calendar/calendar.component.ts","../../../projects/riv/src/lib/input/calendar/calendar.component.html","../../../projects/riv/src/lib/input/date-range/date-range.component.ts","../../../projects/riv/src/lib/input/date-range/date-range.component.html","../../../projects/riv/src/lib/input/date/date.component.ts","../../../projects/riv/src/lib/input/date/date.component.html","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.ts","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.html","../../../projects/riv/src/lib/modal/callout/callout.service.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.html","../../../projects/riv/src/lib/modal/callout/callout.directive.ts","../../../projects/riv/src/lib/notification/badge/badge.component.ts","../../../projects/riv/src/lib/notification/badge/badge.component.html","../../../projects/riv/src/lib/size/content.service.ts","../../../projects/riv/src/lib/size/size.directive.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-row.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-header-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table.component.ts","../../../projects/riv/src/lib/visualization/zero-state/zero-state.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.helpers.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.html","../../../projects/riv/src/lib/visualization/trend/trend.component.ts","../../../projects/riv/src/lib/visualization/trend/trend.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.ts","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.html","../../../projects/riv/src/lib/visualization/issue/issue.component.ts","../../../projects/riv/src/lib/visualization/issue/issue.component.html","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.html","../../../projects/riv/src/lib/visualization/intervals.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.html","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.html","../../../projects/riv/src/lib/visualization/time-series/time-series.helpers.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.html","../../../projects/riv/src/lib/riv.module.ts","../../../projects/riv/src/rivet-health-design-system.ts"],"sourcesContent":["export interface CacheResult<V> {\n value: V;\n cleanup: () => void;\n}\n\n/**\n * DOM cache that clones existing elements if available.\n */\nexport class DomCache<T, V extends Node = Node> {\n private readonly nodes = new Map<T, Set<V>>();\n\n constructor(private readonly create: (key: T) => V) {}\n\n get(key: T): CacheResult<V> {\n let set = this.nodes.get(key);\n let result: V;\n if (set) {\n result = <V>set.values().next().value.cloneNode(true);\n } else {\n result = this.create(key);\n set = new Set();\n this.nodes.set(key, set);\n }\n\n set.add(result);\n\n return {\n value: result,\n cleanup: () => {\n set!.delete(result);\n if (!set!.size) {\n this.nodes.delete(key);\n }\n },\n };\n }\n}\n","const Activity = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-activity\">\\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"></polyline>\\n</svg>`;\nconst AlertCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\\n</svg>`;\nconst AlertOctagon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-octagon\">\\n <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\\n</svg>`;\nconst AlertTriangle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-triangle\">\\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\\n</svg>`;\nconst AlignLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-align-left\">\\n <line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\"></line>\\n</svg>`;\nconst Anchor = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-anchor\">\\n <circle cx=\"12\" cy=\"5\" r=\"3\"></circle><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"8\"></line><path d=\"M5 12H2a10 10 0 0 0 20 0h-3\"></path>\\n</svg>`;\nconst Archive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-archive\">\\n <polyline points=\"21 8 21 21 3 21 3 8\"></polyline><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"></rect><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><polyline points=\"19 12 12 19 5 12\"></polyline>\\n</svg>`;\nconst ArrowDownLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down-left\">\\n <line x1=\"17\" y1=\"7\" x2=\"7\" y2=\"17\"></line><polyline points=\"17 17 7 17 7 7\"></polyline>\\n</svg>`;\nconst ArrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left\">\\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line><polyline points=\"12 19 5 12 12 5\"></polyline>\\n</svg>`;\nconst ArrowLeftCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 8 8 12 12 16\"></polyline><line x1=\"16\" y1=\"12\" x2=\"8\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-right\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><polyline points=\"12 5 19 12 12 19\"></polyline>\\n</svg>`;\nconst ArrowUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up\">\\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line><polyline points=\"5 12 12 5 19 12\"></polyline>\\n</svg>`;\nconst ArrowUpRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up-right\">\\n <line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"></line><polyline points=\"7 7 17 7 17 17\"></polyline>\\n</svg>`;\nconst AtSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-at-sign\">\\n <circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"></path>\\n</svg>`;\nconst Award = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-award\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"7\"/><path d=\"M8.21 13.89 7 23l5-3 5 3-1.21-9.12\"/></svg>`;\nconst BarChart2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bar-chart-2\">\\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"></line><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"></line>\\n</svg>`;\nconst Bell = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bell\">\\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>\\n</svg>`;\nconst Book = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book\">\\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"></path><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"></path>\\n</svg>`;\nconst BookOpen = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book-open\">\\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path>\\n</svg>`;\nconst Briefcase = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-briefcase\">\\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"></path>\\n</svg>`;\nconst Calendar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-calendar\">\\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\\n</svg>`;\nconst Check = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check\">\\n <polyline points=\"20 6 9 17 4 12\"></polyline>\\n</svg>`;\nconst CheckCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-circle\">\\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\\n</svg>`;\nconst CheckSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-square\">\\n <polyline points=\"9 11 12 14 22 4\"></polyline><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"></path>\\n</svg>`;\nconst ChevronDown = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-down\\\">\\n <polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\\n</svg>`;\nconst ChevronLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-left\\\">\\n <polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\\n</svg>`;\nconst ChevronRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-right\\\">\\n <polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\\n</svg>`;\nconst ChevronsLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-left\\\">\\n <polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\\n</svg>`;\nconst ChevronsRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-right\\\">\\n <polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\\n</svg>`;\nconst ChevronUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-chevron-up\">\\n <polyline points=\"18 15 12 9 6 15\"></polyline>\\n</svg>`;\nconst Clipboard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clipboard\">\\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"></path><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\"></rect>\\n</svg>`;\nconst Clock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clock\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline>\\n</svg>`;\nconst Coffee = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-coffee\">\\n <path d=\"M18 8h1a4 4 0 0 1 0 8h-1\"></path><path d=\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"></path><line x1=\"6\" y1=\"1\" x2=\"6\" y2=\"4\"></line><line x1=\"10\" y1=\"1\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"1\" x2=\"14\" y2=\"4\"></line>\\n</svg>`;\nconst Copy = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-copy\">\\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\\n</svg>`;\nconst CornerLeftUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-corner-left-up\">\\n <polyline points=\"14 9 9 4 4 9\"></polyline><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"></path>\\n</svg>`;\nconst CreditCard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-credit-card\">\\n <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\"></rect><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"></line>\\n</svg>`;\nconst Documents = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" ><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.75 6c-.464 0-.91.169-1.237.469C7.184 6.769 7 7.176 7 7.6v12.8c0 .424.184.831.513 1.131.328.3.773.469 1.237.469h10.5c.464 0 .91-.169 1.237-.469.329-.3.513-.707.513-1.131V8a2 2 0 0 0-2-2H8.75z\" /> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 18H4.75c-.464 0-.91-.169-1.237-.469A1.534 1.534 0 0 1 3 16.4V3.6c0-.424.184-.831.513-1.131C3.84 2.169 4.286 2 4.75 2H15a2 2 0 0 1 2 2v2M17 14h-6M17 18h-6M13 10h-2\"/></svg>`;\nconst DollarSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-dollar-sign\">\\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"></line><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"></path>\\n</svg>`;\nconst Download = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download\">\\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\\n</svg>`;\nconst DownloadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download-cloud\">\\n <polyline points=\"8 17 12 21 16 17\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>\\n</svg>`;\nconst Edit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit\">\\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>\\n</svg>`;\nconst Edit2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit-2\">\\n <path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"></path>\\n</svg>`;\nconst Exchange = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.5 4l4 4-4 4M9 20l-4-4 4-4M3 8h15M6 16h15\"/></svg>`;\nconst ExternalLink = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-external-link\">\\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line>\\n</svg>`;\nconst Eye = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye\">\\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>\\n</svg>`;\nconst EyeOff = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye-off\">\\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>\\n</svg>`;\nconst File = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file\">\\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>\\n</svg>`;\nconst FilePlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-plus\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"></line><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst FileText = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-text\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline>\\n</svg>`;\nconst Filter = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-filter\">\\n <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>\\n</svg>`;\nconst Flag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-flag\">\\n <path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"></path><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"></line>\\n</svg>`;\nconst Folder = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-folder\">\\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path>\\n</svg>`;\nconst Hash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-hash\">\\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"></line><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"></line><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"></line><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"></line>\\n</svg>`;\nconst Heart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HeartActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path fill=\"currentColor\" d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HelpCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-help-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"></path><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\\n</svg>`;\nconst Home = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-home\">\\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\\n</svg>`;\nconst Inbox = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-inbox\">\\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"></polyline><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path>\\n</svg>`;\nconst Info = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-info\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\\n</svg>`;\nconst Key = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-key\">\\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"></path>\\n</svg>`;\nconst Layers = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-layers\">\\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline>\\n</svg>`;\nconst Link2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-link-2\">\\n <path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst List = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-list\">\\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\\n</svg>`;\nconst Lock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-lock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\\n</svg>`;\nconst Mail = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-mail\">\\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"></path><polyline points=\"22,6 12,13 2,6\"></polyline>\\n</svg>`;\nconst MapPin = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-map-pin\">\\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle>\\n</svg>`;\nconst Maximize = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize\">\\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path>\\n</svg>`;\nconst Maximize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize-2\">\\n <polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Menu = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-menu\">\\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\\n</svg>`;\nconst MessageCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst MessageCircleActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path fill=\"currentColor\" d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst Minimize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minimize-2\">\\n <polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Minus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst MinusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst MoreHorizontal = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-horizontal\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"19\" cy=\"12\" r=\"1\"></circle><circle cx=\"5\" cy=\"12\" r=\"1\"></circle>\\n</svg>`;\nconst MoreVertical = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-vertical\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"12\" cy=\"5\" r=\"1\"></circle><circle cx=\"12\" cy=\"19\" r=\"1\"></circle>\\n</svg>`;\nconst Paperclip = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-paperclip\">\\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"></path>\\n</svg>`;\nconst Percent = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-percent\">\\n <line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line><circle cx=\"6.5\" cy=\"6.5\" r=\"2.5\"></circle><circle cx=\"17.5\" cy=\"17.5\" r=\"2.5\"></circle>\\n</svg>`;\nconst Phone = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-phone\">\\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>\\n</svg>`;\nconst PieChart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-pie-chart\">\\n <path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"></path><path d=\"M22 12A10 10 0 0 0 12 2v10z\"></path>\\n</svg>`;\nconst PinActive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PinInactive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PlayCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-play-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"10 8 16 12 10 16 10 8\"></polygon>\\n</svg>`;\nconst Plus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst PlusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst Power = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-power\">\\n <path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"></line>\\n</svg>`;\nconst Printer = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-printer\">\\n <polyline points=\"6 9 6 2 18 2 18 9\"></polyline><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"></path><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"></rect>\\n</svg>`;\nconst RefreshCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-refresh-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><polyline points=\"1 20 1 14 7 14\"></polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"></path>\\n</svg>`;\nconst Reminder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.375 12V5.25c0-.9665-.7835-1.75-1.75-1.75H4.375c-.9665 0-1.75.7835-1.75 1.75V17.5c0 .9665.7835 1.75 1.75 1.75H12M14 1.75v3.5M7 1.75v3.5M2.625 8.75h15.75\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 22.9193c2.9915 0 5.4166-2.4252 5.4166-5.4167s-2.4251-5.4167-5.4166-5.4167c-2.9916 0-5.4167 2.4252-5.4167 5.4167s2.4251 5.4167 5.4167 5.4167Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 14.25v3.25l2.1667 1.0833\"/></svg>`;\nconst Reorder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,9 l24,0\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,15 l24,0\"/></svg>`;\nconst Reorder2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\"><path fill=\"currentColor\" d=\"M8 5h3v3H8zM8 11h3v3H8zM8 17h3v3H8zM13 5h3v3h-3zM13 11h3v3h-3zM13 17h3v3h-3z\"/></svg>`;\nconst Reply = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20 17v-1a4 4 0 0 0-4-4H4\"/></svg>`;\nconst ReplyAll = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11 17l-5-5 5-5\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M22 17v-1a4 4 0 0 0-4-4H6\"/></svg>`;\nconst RotateCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-rotate-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"></path>\\n</svg>`;\nconst Save = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-save\">\\n <path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"></path><polyline points=\"17 21 17 13 7 13 7 21\"></polyline><polyline points=\"7 3 7 8 15 8\"></polyline>\\n</svg>`;\nconst Search = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-search\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\\n</svg>`;\nconst Send = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-send\">\\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\\n</svg>`;\nconst Settings = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-settings\">\\n <circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"></path>\\n</svg>`;\nconst Share = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-share\">\\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path><polyline points=\"16 6 12 2 8 6\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"15\"></line>\\n</svg>`;\nconst Shield = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-shield\">\\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>\\n</svg>`;\nconst Sidebar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sidebar\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>\\n</svg>`;\nconst Slash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-slash\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"></line>\\n</svg>`;\nconst Sliders = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-sliders\"><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></svg>`;\nconst Smile = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-smile\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>\\n</svg>`;\nconst Star = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-star\">\\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"></polygon>\\n</svg>`;\nconst Sun = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sun\">\\n <circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>\\n</svg>`;\nconst SupportChat = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M12 16v1\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.562 20.63a9 9 0 1 1 3.666-2.133 5.014 5.014 0 0 0 2.272 2.834A4.977 4.977 0 0 1 18 22a4.983 4.983 0 0 1-3.438-1.37z\"/></svg>`;\nconst Tag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tag\">\\n <path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"></line>\\n</svg>`;\nconst Target = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-target\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle>\\n</svg>`;\nconst Tool = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tool\">\\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"></path>\\n</svg>`;\nconst Trash2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trash-2\">\\n <polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"></line><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"></line>\\n</svg>`;\nconst TrendingDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-down\">\\n <polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"></polyline><polyline points=\"17 18 23 18 23 12\"></polyline>\\n</svg>`;\nconst TrendingUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-up\">\\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"></polyline><polyline points=\"17 6 23 6 23 12\"></polyline>\\n</svg>`;\nconst Unlock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-unlock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 9.9-1\"></path>\\n</svg>`;\nconst UploadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-upload-cloud\">\\n <polyline points=\"16 16 12 12 8 16\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"></path><polyline points=\"16 16 12 12 8 16\"></polyline>\\n</svg>`;\nconst User = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user\">\\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\\n</svg>`;\nconst UserCheck = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-check\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><polyline points=\"17 11 19 13 23 9\"></polyline>\\n</svg>`;\nconst UserPlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-plus\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"></line><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>\\n</svg>`;\nconst Users = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-users\">\\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"9\" cy=\"7\" r=\"4\"></circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"></path><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"></path>\\n</svg>`;\nconst X = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x\">\\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\\n</svg>`;\nconst XCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst XSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-square\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\\n</svg>`;\nconst Zap = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" class=\"feather feather-zap\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"></polygon></svg>`;\nconst ZoomIn = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-in\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\nconst ZoomOut = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-out\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\n\nexport const icons = {\n Activity,\n AlertCircle,\n AlertOctagon,\n AlertTriangle,\n AlignLeft,\n Anchor,\n Archive,\n ArrowDown,\n ArrowDownLeft,\n ArrowLeft,\n ArrowLeftCircle,\n ArrowRight,\n ArrowUp,\n ArrowUpRight,\n AtSign,\n Award,\n BarChart2,\n Bell,\n Book,\n BookOpen,\n Briefcase,\n Calendar,\n Check,\n CheckCircle,\n CheckSquare,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n ChevronUp,\n Clipboard,\n Clock,\n Coffee,\n Copy,\n CornerLeftUp,\n CreditCard,\n Documents,\n DollarSign,\n Download,\n DownloadCloud,\n Edit,\n Edit2,\n Exchange,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePlus,\n FileText,\n Filter,\n Flag,\n Folder,\n Hash,\n Heart,\n HeartActive,\n HelpCircle,\n Home,\n Inbox,\n Info,\n Key,\n Layers,\n Link2,\n List,\n Lock,\n Mail,\n MapPin,\n Maximize,\n Maximize2,\n Menu,\n MessageCircle,\n MessageCircleActive,\n Minimize2,\n Minus,\n MinusCircle,\n MoreHorizontal,\n MoreVertical,\n Paperclip,\n Percent,\n Phone,\n PieChart,\n PinActive,\n PinInactive,\n PlayCircle,\n Plus,\n PlusCircle,\n Power,\n Printer,\n RefreshCw,\n Reminder,\n Reorder,\n Reorder2,\n Reply,\n ReplyAll,\n RotateCw,\n Save,\n Search,\n Send,\n Settings,\n Share,\n Shield,\n Sidebar,\n Slash,\n Sliders,\n Smile,\n Star,\n Sun,\n SupportChat,\n Tag,\n Target,\n Tool,\n Trash2,\n TrendingDown,\n TrendingUp,\n Unlock,\n UploadCloud,\n User,\n UserCheck,\n UserPlus,\n Users,\n X,\n XCircle,\n XSquare,\n Zap,\n ZoomIn,\n ZoomOut,\n};\n\nexport const iconsMap: { [key: string]: string } = {};\nfor (const key in icons) {\n iconsMap[key] = icons[<keyof typeof icons>key];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { CacheResult, DomCache } from './dom-cache';\nimport { icons, iconsMap } from './icons';\n\nconst cache = new DomCache<IconComponent.Name, ChildNode>(value => {\n const svgText = iconsMap[value];\n const parser = new DOMParser();\n const svg = parser.parseFromString(svgText, 'text/xml');\n return svg.documentElement;\n});\n\n@Component({\n selector: 'riv-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnDestroy {\n private cached: CacheResult<ChildNode> | undefined;\n\n constructor(private readonly element: ElementRef<HTMLElement>) {}\n\n @Input()\n set name(value: IconComponent.Name | null) {\n if (this.cached) {\n this.cached.value.remove();\n this.cached.cleanup();\n this.cached = undefined;\n }\n\n if (value == null) {\n return;\n }\n\n this.cached = cache.get(value);\n this.element.nativeElement.append(this.cached.value);\n }\n\n @Input()\n size: IconComponent.Size = 24;\n\n @Input()\n customSize: number | undefined;\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get iconSize() {\n return this.customSize ? this.customSize : this.size;\n }\n\n @Input()\n strokeWidth: number | undefined;\n\n @HostBinding('style.stroke-width')\n get calculateStrokeWidth() {\n return this.strokeWidth ? this.strokeWidth : 24 / this.iconSize;\n }\n\n ngOnDestroy() {\n this.name = null;\n }\n}\n\nexport namespace IconComponent {\n export type Name = keyof typeof icons;\n\n export const Sizes = [8, 12, 16, 24] as const;\n export type Size = (typeof Sizes)[number];\n}\n","","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-text-toggle',\n templateUrl: './text-toggle.component.html',\n styleUrls: ['./text-toggle.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextToggleComponent {\n @Input()\n showLabel: string = '';\n\n @Input()\n hideLabel: string = '';\n\n @Input()\n open: boolean = false;\n}\n","<button class=\"toggle\" type=\"button\" (click)=\"open = !open\" type=\"button\">\n <riv-icon [class.open]=\"open\" [name]=\"'ChevronDown'\" [size]=\"24\"></riv-icon>\n <div>{{ open ? hideLabel : showLabel }}</div>\n</button>\n<div *ngIf=\"open\">\n <ng-content></ng-content>\n</div>\n","export const NO_DATA_FALLBACK = '-';\n","import { DatePipe as AngularDatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDate' })\nexport class DatePipe implements PipeTransform {\n private readonly inner = new AngularDatePipe('en-US');\n transform(\n value?: string | number | Date | null,\n format: string = 'shortDate',\n ) {\n return this.inner.transform(value, format) ?? NO_DATA_FALLBACK;\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDays' })\nexport class DaysPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n const ret = this.inner.transform(value, digitsInfo ?? '1.0-2');\n return ret ? ret + (value === 1 ? ' day' : ' days') : NO_DATA_FALLBACK;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDollars' })\nexport class DollarsPipe implements PipeTransform {\n readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n return (\n this.inner.transform(\n value,\n undefined,\n undefined,\n digitsInfo ?? '1.2-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivNumber' })\nexport class NumberPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.0-0') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\n\n@Pipe({ name: 'rivOptionGroup' })\nexport class OptionGroupPipe<U extends SingleSelectComponent.Option>\n implements PipeTransform\n{\n transform(\n value?: U[],\n header?: string,\n ): SingleSelectComponent.OptionGroup<U>[] {\n return [\n {\n header: header,\n options: value ?? [],\n },\n ];\n }\n}\n","import { PercentPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivPercentage' })\nexport class PercentagePipe implements PipeTransform {\n private readonly inner = new PercentPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.1-1') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivSmallCurrency' })\nexport class SmallCurrencyPipe implements PipeTransform {\n private readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n if (value === null || value === undefined) {\n return NO_DATA_FALLBACK;\n }\n\n const num: number =\n typeof value == 'string' ? Number.parseFloat(value) : value;\n const magnitude = Math.log10(Math.abs(num));\n\n if (num === 0) {\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? '1.0-0',\n ) ?? NO_DATA_FALLBACK\n );\n }\n if (magnitude >= 9) {\n return (\n (this.inner.transform(\n num / 1_000_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'B'\n );\n }\n if (magnitude >= 6) {\n return (\n (this.inner.transform(\n num / 1_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'M'\n );\n }\n if (magnitude >= 3) {\n return (\n (this.inner.transform(\n num / 1_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'K'\n );\n }\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? num >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CalloutComponent } from './callout.component';\n\ntype Dimensions = {\n width: number;\n height: number;\n};\n\ntype Point = {\n x: number;\n y: number;\n};\n\nexport type Box = Point & Dimensions;\n\nexport type Anchor = Point & { position: CalloutComponent.AnchoredPosition };\n\nexport function getOrigin(\n anchor: Box,\n client: Dimensions,\n viewportSize: Dimensions,\n preferredPosition: CalloutComponent.AnchoredPosition,\n allowedPositions: CalloutComponent.AnchoredPosition[] | null = null,\n fallbackDirection: CalloutComponent.Direction,\n additionalOffset: number,\n): Anchor {\n let position = preferredPosition;\n const allowed =\n !allowedPositions || allowedPositions.length === 0\n ? CalloutComponent.AnchoredPositions\n : allowedPositions;\n let index = allowed.indexOf(position);\n let leastClippedIndex = index;\n let origin = originAtPosition(anchor, client, position, additionalOffset);\n let currentClippedX;\n let currentClippedY;\n let leastClipped = Infinity;\n let foundUnclipped = false;\n // Iterate through allowed positions. The first one we find that doesn't clip out of view, we use.\n // If all of the positions clip, use the one which clipped the least.\n for (\n let checkCount = 0;\n checkCount <= allowed.length && !foundUnclipped;\n checkCount++,\n index =\n fallbackDirection === 'clockwise'\n ? (index + 1) % allowed.length\n : (index - 1 + allowed.length) % allowed.length\n ) {\n position = allowed[index];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n currentClippedX =\n -1 *\n Math.min(origin.x, viewportSize.width - (origin.x + client.width), 0);\n currentClippedY =\n -1 *\n Math.min(origin.y, viewportSize.height - (origin.y + client.height), 0);\n if (currentClippedX > 0 || currentClippedY > 0) {\n const clippedArea =\n currentClippedX * currentClippedY +\n currentClippedX * (client.height - currentClippedY) +\n currentClippedY * (client.width - currentClippedX);\n if (leastClipped > clippedArea) {\n leastClipped = clippedArea;\n leastClippedIndex = index;\n }\n } else {\n foundUnclipped = true;\n }\n }\n if (!foundUnclipped) {\n position = allowed[leastClippedIndex];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n origin.y = origin.y < 0 ? 4 : origin.y;\n }\n return { ...origin, position };\n}\n\nexport function originAtPosition(\n anchor: Box,\n client: Dimensions,\n position: CalloutComponent.AnchoredPosition,\n offset: number,\n): Point {\n switch (position) {\n case 'top-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y - client.height - offset,\n };\n case 'top-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y - client.height - offset,\n };\n case 'top-right':\n return {\n x: anchor.x,\n y: anchor.y - client.height - offset,\n };\n case 'right-top':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y,\n };\n case 'center-right':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'right-bottom':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'bottom-right':\n return {\n x: anchor.x,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y + anchor.height + offset,\n };\n case 'left-bottom':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'center-left':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'left-top':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y,\n };\n }\n}\n","import { Directive, Injectable, Input, OnDestroy, OnInit } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LockScrollContextService {\n private stack = 0;\n\n getContext() {\n return this.stack;\n }\n\n pushContext() {\n return ++this.stack;\n }\n\n popContext() {\n return --this.stack;\n }\n\n public scrollPosition: number = 0;\n}\n\n@Directive({ selector: '[rivLockScroll]' })\nexport class LockScrollDirective implements OnInit, OnDestroy {\n constructor(private readonly context: LockScrollContextService) {}\n\n @Input('rivLockScroll')\n lock: boolean = false;\n\n ngOnInit() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.pushContext();\n if (oldContext === 0 && newContext === 1) {\n this.lockScroll();\n }\n }\n }\n\n ngOnDestroy() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.popContext();\n if (oldContext === 1 && newContext === 0) {\n this.unlockScroll();\n }\n }\n }\n\n private lockScroll() {\n this.context.scrollPosition = document.documentElement.scrollTop;\n document.body.style.position = 'fixed';\n document.body.style.overflow = 'hidden';\n document.body.style.width = '100%';\n document.body.style.height = '100%';\n document.body.style.top = `${this.context.scrollPosition * -1}px`;\n }\n\n private unlockScroll() {\n document.body.removeAttribute('style');\n document.documentElement.scrollTop = this.context.scrollPosition;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { getOrigin } from './callout.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of lifecycle hooks.\n@Component({\n selector: 'riv-callout',\n templateUrl: './callout.component.html',\n styleUrls: ['./callout.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutComponent implements AfterViewInit {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n isModal: boolean = true;\n\n @Input()\n preferredPosition: CalloutComponent.AnchoredPosition = 'bottom-right';\n\n @Input()\n allowedPositions: CalloutComponent.AnchoredPosition[] = [\n ...CalloutComponent.AnchoredPositions,\n ];\n\n @Input()\n fallbackDirection: CalloutComponent.Direction = 'counter-clockwise';\n\n @Input()\n showCaret: boolean = true;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @ViewChild('content') content: ElementRef<HTMLDivElement> | null = null;\n\n @ViewChild('scrim', { static: false }) scrim: ElementRef<HTMLElement> | null =\n null;\n\n scrimClick(evt: MouseEvent) {\n if (evt.target === this.scrim?.nativeElement) {\n this.close.emit();\n }\n }\n\n left: number = 0;\n top: number = 0;\n resolvedPosition: CalloutComponent.AnchoredPosition = this.preferredPosition;\n\n ngAfterViewInit() {\n const windowSize = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n if (this.anchor === null || this.content === null || this.scrim === null)\n return;\n\n const scrimRect = this.scrim.nativeElement.getBoundingClientRect();\n\n const anchorRect =\n this.anchor instanceof Element\n ? this.anchor.getBoundingClientRect()\n : this.anchor;\n\n const anchorBounds = {\n x: anchorRect.left - scrimRect.left, // In most cases, the scrim will be positioned at (0,0), but if it's not, this will make sure the callout is positioned correctly regardless.\n y: anchorRect.top - scrimRect.top,\n width: anchorRect.right - anchorRect.left,\n height: anchorRect.bottom - anchorRect.top,\n };\n\n const calloutSize = {\n width: this.content.nativeElement.clientWidth,\n height: this.content.nativeElement.clientHeight,\n };\n\n const calloutOrigin = getOrigin(\n anchorBounds,\n calloutSize,\n windowSize,\n this.preferredPosition,\n this.allowedPositions,\n this.fallbackDirection,\n this.showCaret ? 8 : 0,\n );\n\n this.left = calloutOrigin.x;\n this.top = calloutOrigin.y;\n this.resolvedPosition = calloutOrigin.position;\n this.cdr.detectChanges();\n }\n\n @Output()\n readonly close = new EventEmitter();\n}\n\nexport namespace CalloutComponent {\n export const Themes = ['light', 'dark'] as const;\n export type Theme = (typeof Themes)[number];\n\n export const AnchoredPositions = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'right-top',\n 'center-right',\n 'right-bottom',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left',\n 'left-bottom',\n 'center-left',\n 'left-top',\n ] as const;\n export type AnchoredPosition = (typeof AnchoredPositions)[number];\n\n export const Directions = ['clockwise', 'counter-clockwise'] as const;\n export type Direction = (typeof Directions)[number];\n}\n","<div\n #scrim\n class=\"scrim\"\n [class.full]=\"isModal\"\n (click)=\"$event.stopPropagation(); scrimClick($event)\"\n>\n <div\n class=\"callout\"\n [ngClass]=\"[theme, resolvedPosition]\"\n [class.caret]=\"showCaret\"\n [style.left.px]=\"left\"\n [style.top.px]=\"top\"\n [rivLockScroll]=\"isModal\"\n #content\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutComponent } from '../callout/callout.component';\n\nfunction isTemplate(\n v: string | TemplateRef<unknown>,\n): v is TemplateRef<unknown> {\n return typeof v !== 'string';\n}\n\n@Component({\n selector: 'riv-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n content?: string | TemplateRef<unknown>;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @Input()\n maxWidth: string = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n preferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Output()\n onMouseEnter = new EventEmitter<MouseEvent>();\n\n @Output()\n onMouseLeave = new EventEmitter<MouseEvent>();\n\n @HostListener('mouseleave') _onMouseLeave(evt: MouseEvent) {\n this.onMouseLeave.emit(evt);\n }\n\n @HostListener('mouseenter') _onMouseEnter(evt: MouseEvent) {\n this.onMouseEnter.emit(evt);\n }\n\n readonly isTemplate = isTemplate;\n readonly allowedPositions = [...TooltipComponent.AnchoredPositions];\n}\n\nexport namespace TooltipComponent {\n export const AnchoredPositions = [\n 'top-center',\n 'center-right',\n 'bottom-center',\n 'center-left',\n ] as const;\n export type AnchoredPosition = Extract<\n (typeof AnchoredPositions)[number],\n CalloutComponent.AnchoredPosition\n >;\n}\n","<riv-callout\n [anchor]=\"anchor\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n [isModal]=\"false\"\n [theme]=\"theme\"\n>\n <ng-container *ngIf=\"content && isTemplate(content); else stringContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #stringContent>\n <div class=\"string-content\" [style.max-width]=\"maxWidth\">\n {{ content }}\n </div>\n </ng-template>\n</riv-callout>\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[rivTooltip]',\n})\nexport class TooltipDirective implements OnDestroy {\n constructor(\n protected readonly el: ElementRef,\n protected readonly applicationRef: ApplicationRef,\n ) {}\n\n @Input()\n rivTooltip?: string | TemplateRef<unknown>;\n\n @Input()\n rivTooltipTheme: 'dark' | 'light' = 'dark';\n\n @Input()\n rivTooltipMaxWidth = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n rivTooltipPreferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Input()\n rivTooltipCloseDelay: number = 100;\n\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private closeTimeout?: number;\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.rivTooltip) return;\n if (this.tooltipRef) {\n this.cancelClose();\n } else {\n const tooltip = this.applicationRef.components[0].injector\n .get(ViewContainerRef)\n .createComponent(TooltipComponent);\n tooltip.instance.anchor = this.el.nativeElement;\n tooltip.instance.content = this.rivTooltip;\n tooltip.instance.theme = this.rivTooltipTheme;\n tooltip.instance.maxWidth = this.rivTooltipMaxWidth;\n tooltip.instance.preferredPosition = this.rivTooltipPreferredPosition;\n tooltip.instance.onMouseEnter.subscribe(this.cancelClose.bind(this));\n tooltip.instance.onMouseLeave.subscribe(this.initiateClose.bind(this));\n this.tooltipRef = tooltip;\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.initiateClose();\n }\n\n ngOnDestroy(): void {\n this.initiateClose();\n }\n\n private initiateClose() {\n this.closeTimeout = window.setTimeout(() => {\n this.tooltipRef?.destroy();\n this.tooltipRef = undefined;\n }, this.rivTooltipCloseDelay);\n }\n\n private cancelClose() {\n window.clearTimeout(this.closeTimeout);\n }\n}\n","import {\n ApplicationRef,\n Directive,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TooltipDirective } from '../../modal/tooltip/tooltip.directive';\n\n// Credit to boneskull on Github, whose work I used as a reference\n@Directive({\n selector: 'svg text[rivSVGTextTruncate]',\n})\nexport class SVGTextTruncateDirective\n extends TooltipDirective\n implements OnInit\n{\n @Input()\n text: string = '';\n\n @Input()\n width: number = 50;\n\n constructor(\n protected override readonly el: ElementRef,\n protected override readonly applicationRef: ApplicationRef,\n ) {\n super(el, applicationRef);\n }\n\n ngOnInit(): void {\n this.svgTruncate(this.el.nativeElement);\n }\n\n // Truncate through setting strings as the text-content and testing their width\n svgTruncate(element: SVGTextContentElement) {\n let currentLength: number = this.text.length;\n\n element.textContent = this.text;\n // If the text can fit in the given width, no truncation needed.\n if (\n currentLength > 0 &&\n element.getSubStringLength(0, currentLength) <= this.width\n ) {\n element.textContent = this.text;\n this.rivTooltip = '';\n } else {\n /*\n Test the length of each \"substring + ...\" combo until we find one that fits.\n Start by making room for the elipses by subtracting 3 from the length.\n */\n currentLength = currentLength - 3;\n let currentTextFitsInWidth: boolean = false;\n while (currentLength > 0 && !currentTextFitsInWidth) {\n const currentTextToTry: string =\n this.text.slice(0, currentLength) + '...';\n\n element.textContent = currentTextToTry;\n\n if (\n element.getSubStringLength(0, currentTextToTry.length) <= this.width\n ) {\n currentTextFitsInWidth = true;\n } else {\n currentLength--;\n }\n }\n\n // If we end up not finding a width of text that works, display just the ellipses.\n if (!currentTextFitsInWidth) {\n element.textContent = '...';\n }\n this.rivTooltip = this.text;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Self,\n} from '@angular/core';\nimport { TooltipDirective } from '../../modal/tooltip/tooltip.directive';\n\nfunction scrolled(element: HTMLElement): boolean {\n return element.offsetWidth < element.scrollWidth;\n}\n\n/**\n * Truncate the text to one line. When truncated, display the full text in a tooltip.\n */\n@Component({\n selector: '[rivTruncate]',\n styleUrls: ['./truncate.component.css'],\n templateUrl: './truncate.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [TooltipDirective],\n})\nexport class TruncateComponent {\n constructor(\n private readonly element: ElementRef,\n // For performance reasons, take more control\n @Self() private readonly tooltip: TooltipDirective,\n ) {}\n\n @Input()\n maxTooltipWidth: string = '200px';\n\n @HostListener('mouseenter')\n enter() {\n if (scrolled(this.element.nativeElement)) {\n this.tooltip.rivTooltip = this.element.nativeElement.textContent;\n this.tooltip.rivTooltipMaxWidth = this.maxTooltipWidth;\n this.tooltip.onMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n leave() {\n this.tooltip.onMouseLeave();\n }\n\n // For the auto-complete textbox.\n scrollIntoView() {\n this.element.nativeElement.scrollIntoView(false);\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingComponent {\n static readonly STROKE_WIDTH = 1.5;\n static readonly ARC_START_RADIANS = (Math.PI * 22.5) / 180;\n\n @Input()\n size: LoadingComponent.Size = 40;\n\n @Input()\n variant: LoadingComponent.Variant = 'dark';\n\n getPathData() {\n const size = this.size;\n const halfSize = size / 2;\n\n const stroke = LoadingComponent.STROKE_WIDTH;\n const halfStroke = stroke / 2;\n\n const top = halfStroke;\n const right = size - stroke;\n const radius = (size - stroke * 2) / 2;\n\n const commands = [\n `M${halfSize},${top}`,\n `L${right},${top}`,\n `L${right},${halfSize}`,\n `A ${radius} ${radius},0,1,1,${halfSize} ${top}`,\n ];\n return commands.join(' ');\n }\n\n readonly strokeWidth = LoadingComponent.STROKE_WIDTH;\n}\n\nexport namespace LoadingComponent {\n export const Sizes = [16, 40, 80] as const;\n export type Size = (typeof LoadingComponent.Sizes)[number];\n\n export const Variants = ['light', 'dark'] as const;\n export type Variant = (typeof LoadingComponent.Variants)[number];\n}\n","<svg\n [ngClass]=\"{\n dark: variant === 'dark',\n light: variant === 'light',\n small: size === 16,\n medium: size === 40,\n large: size === 80\n }\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n [attr.viewBox]=\"'0 0 ' + size + ' ' + size\"\n fill=\"none\"\n>\n <path [attr.stroke-width]=\"strokeWidth\" [attr.d]=\"getPathData()\"></path>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { LoadingComponent } from '../../load/loading/loading.component';\n\n@Component({\n selector: '[rivButton]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnChanges {\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @Input()\n loading?: boolean;\n\n @Input()\n full?: boolean;\n\n @Input()\n size: ButtonComponent.Size = 'medium';\n\n @Input()\n variant: ButtonComponent.Variant = 'basic';\n\n @Input()\n icon?: IconComponent.Name;\n\n @Input()\n iconPosition: ButtonComponent.IconPosition = 'first';\n\n @HostBinding('class')\n get classes() {\n return Object.entries({\n disabled: this.disabled || this.locked,\n full: this.full,\n loading: this.loading,\n [this.variant]: true,\n [this.size]: true,\n stacked: this.iconPosition === 'stacked',\n })\n .filter(([_, v]) => v)\n .map(([k]) => k)\n .join(' ');\n }\n\n getLoadingVariant(): LoadingComponent.Variant {\n switch (this.variant) {\n case 'basic':\n case 'caution':\n case 'ghost':\n return 'dark';\n case 'danger':\n case 'primary':\n return 'light';\n }\n }\n\n getIconSize(): IconComponent.Size {\n switch (this.size) {\n case 'xsmall':\n case 'small':\n return 16;\n case 'medium':\n case 'large':\n case 'xlarge':\n return 24;\n }\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n}\n\nexport namespace ButtonComponent {\n export const Sizes = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n ] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'basic',\n 'ghost',\n 'primary',\n 'danger',\n 'caution',\n ] as const;\n export type Variant = (typeof Variants)[number];\n\n export const IconPositions = ['first', 'last', 'stacked'] as const;\n export type IconPosition = (typeof IconPositions)[number];\n}\n","<riv-icon\n *ngIf=\"icon && (iconPosition === 'first' || iconPosition === 'stacked')\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<span><ng-content></ng-content></span>\n<riv-icon\n *ngIf=\"locked && !icon\"\n [name]=\"'Lock'\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-icon\n *ngIf=\"icon && iconPosition === 'last'\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-loading\n *ngIf=\"loading\"\n [size]=\"16\"\n [variant]=\"getLoadingVariant()\"\n></riv-loading>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent {\n @Input()\n name?: string;\n\n @Input()\n identifier?: string;\n\n @Input()\n value: boolean = false;\n\n @Input()\n checkedColorToken: string = '--purp-60';\n\n @Input()\n indeterminateColorToken: string = '--baloo-50';\n\n @Input()\n checkboxTooltip?: string;\n\n @Input()\n indeterminate: boolean = false;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n required: boolean = false;\n\n @Output()\n valueChange = new EventEmitter<boolean>();\n\n @ViewChild('label', { static: true }) label?: ElementRef<HTMLLabelElement>;\n\n isCheckboxOnly(): boolean {\n return !this.label || this.label.nativeElement.childNodes.length === 1;\n }\n\n getCheckedBackgroundColor(): string {\n return `var(${this.checkedColorToken})`;\n }\n\n getIndeterminateBackgroundColor(): string {\n return `var(${this.indeterminateColorToken})`;\n }\n}\n","<label\n #label\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isCheckboxOnly()\"\n>\n <input\n #input\n type=\"checkbox\"\n [id]=\"identifier\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n [indeterminate]=\"indeterminate\"\n (change)=\"valueChange.emit(!!input.checked)\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n [style.--indeterminate-background-color]=\"getIndeterminateBackgroundColor()\"\n [rivTooltip]=\"checkboxTooltip\"\n />\n <ng-content></ng-content>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-card-checkbox',\n templateUrl: './card-checkbox.component.html',\n styleUrls: ['./card-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardCheckboxComponent extends CheckboxComponent {}\n","<label [class.disabled]=\"disabled\">\n <div\n class=\"checkbox\"\n [class.checked]=\"value\"\n [class.indeterminate]=\"indeterminate\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n [style.--indeterminate-background-color]=\"getIndeterminateBackgroundColor()\"\n >\n <riv-checkbox\n [name]=\"name\"\n [identifier]=\"identifier\"\n [value]=\"value\"\n [checkedColorToken]=\"checkedColorToken\"\n [indeterminateColorToken]=\"indeterminateColorToken\"\n [checkboxTooltip]=\"checkboxTooltip\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (valueChange)=\"valueChange.emit($event)\"\n ></riv-checkbox>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { BehaviorSubject } from 'rxjs';\n\n/**\n * A BehaviorSubject backed by localStorage.\n */\nexport class LocalStorage<\n T extends LocalStorage.Serializable,\n> extends BehaviorSubject<T> {\n constructor(private readonly key: string, defaultValue: T) {\n const rawValue = localStorage.getItem(key);\n const value = rawValue ? JSON.parse(rawValue) : undefined;\n super(value ?? defaultValue);\n }\n\n override next(value: T) {\n localStorage.setItem(this.key, JSON.stringify(value));\n super.next(value);\n }\n}\n\nexport namespace LocalStorage {\n export type Serializable =\n | string\n | number\n | boolean\n | null\n | { [property: string]: Serializable }\n | Serializable[];\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-help',\n templateUrl: './help.component.html',\n styleUrls: ['./help.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HelpComponent {\n @Input() help?: string;\n @Input() size: HelpComponent.Size = 16;\n}\n\nexport namespace HelpComponent {\n export const Sizes = [12, 16] as const;\n export type Size = (typeof HelpComponent.Sizes)[number];\n}\n","<riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"size\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: '[rivLink]',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @HostBinding('class')\n get classes() {\n return this.disabled || this.locked ? 'disabled' : '';\n }\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-input-label',\n templateUrl: './input-label.component.html',\n styleUrls: ['./input-label.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputLabelComponent {\n @Input()\n label?: string;\n\n @Input()\n help?: string;\n\n @Input()\n required: boolean = false;\n\n @Input()\n labelActionText?: string;\n\n @Output()\n labelAction = new EventEmitter();\n}\n","<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\" class=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit()\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\n@Directive({\n selector: '[rivFocusOnInit]',\n})\nexport class FocusOnInitDirective implements AfterViewInit, OnChanges {\n constructor(private readonly el: ElementRef) {}\n\n @Input('rivFocusOnInit')\n shouldFocus: boolean = true;\n\n private focusOnChange: boolean = false;\n\n ngAfterViewInit() {\n if (this.shouldFocus) {\n this.focus();\n } else {\n this.focusOnChange = true;\n }\n }\n\n ngOnChanges() {\n if (this.focusOnChange && this.shouldFocus) {\n this.focusOnChange = false;\n this.focus();\n }\n }\n\n private focus() {\n if (this.el && this.el.nativeElement) {\n if (!this.el.nativeElement.hasAttribute('tabindex')) {\n this.el.nativeElement.tabIndex = 0;\n }\n this.el.nativeElement.focus();\n }\n }\n}\n","import { HighlightComponent } from './highlight.component';\n\nexport function chunks(\n text: string,\n indices: HighlightComponent.HighlightIndices[],\n): HighlightComponent.Chunk[] {\n let lastEnd = 0;\n const chunks = [];\n for (const [start, end] of indices) {\n chunks.push(\n {\n highlight: false,\n text: text.substring(lastEnd, start),\n },\n {\n highlight: true,\n text: text.substring(start, end + 1),\n },\n );\n lastEnd = end + 1;\n }\n chunks.push({\n highlight: false,\n text: text?.substring(lastEnd, text.length),\n });\n return chunks.filter(chunk => chunk.text);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { chunks } from './highlight.helpers';\n\n@Component({\n selector: 'riv-highlight',\n templateUrl: './highlight.component.html',\n styleUrls: ['./highlight.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighlightComponent {\n @Input()\n text: string = '';\n\n @Input()\n indices: HighlightComponent.HighlightIndices[] = [];\n\n getChunks(): HighlightComponent.Chunk[] {\n return chunks(this.text, this.indices);\n }\n}\n\nexport namespace HighlightComponent {\n export type HighlightIndices = [number, number];\n\n export type Chunk = {\n highlight: boolean;\n text: string;\n };\n}\n","<span *ngFor=\"let chunk of getChunks()\" [class.highlight]=\"chunk.highlight\">{{\n chunk.text\n}}</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LoadingComponent } from '../loading/loading.component';\n\n@Component({\n selector: 'riv-loading-cover',\n templateUrl: './loading-cover.component.html',\n styleUrls: ['./loading-cover.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingCoverComponent {\n @Input()\n loading: boolean = false;\n\n @Input()\n loadingSize: LoadingComponent.Size = 40;\n\n @Input()\n errorMessage?: string;\n}\n","<ng-content></ng-content>\n<div *ngIf=\"loading\" class=\"cover\">\n <riv-loading [size]=\"loadingSize\"></riv-loading>\n</div>\n<div *ngIf=\"errorMessage\" class=\"cover\">\n <span class=\"error-icon\">🙁</span>\n <span>{{ errorMessage }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-single-select',\n templateUrl: './single-select.component.html',\n styleUrls: ['./single-select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingleSelectComponent<\n T extends SingleSelectComponent.OptionGroup<U>,\n U extends SingleSelectComponent.Option,\n> extends InputLabelComponent {\n @Input()\n groups: T[] = [];\n\n @Input()\n selectedOption: U | null = null;\n\n @Input()\n filterabilityOptions: SingleSelectComponent.FilterabilityOptions = {\n enabled: false,\n };\n\n @Input()\n loading: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n maxCalloutHeight: string = '50vh';\n\n @Input()\n noOptionsMessage: string = 'No available options';\n\n @Input()\n nodeTemplate?: TemplateRef<unknown>;\n\n @Input()\n triggerTemplate?: TemplateRef<unknown>;\n\n @Input()\n placeholder: string = 'Select...';\n\n @Input()\n disabled: boolean = false;\n\n filterQuery: string = '';\n\n @Output()\n filterQueryChange = new EventEmitter<string>();\n\n @Output()\n selectedOptionChange = new EventEmitter<U>();\n\n @ViewChild('customTriggerButton') customTriggerButton?: ElementRef;\n @ViewChild('standardTriggerButton') standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n\n getFilterPlaceholder(): string {\n if (\n this.filterabilityOptions.enabled &&\n this.filterabilityOptions.placeholder\n ) {\n return this.filterabilityOptions.placeholder;\n }\n return 'Filter options...';\n }\n\n allowedOpen(): void {\n if (!this.disabled && !this.locked) {\n this.open = true;\n }\n }\n\n public close(): void {\n this.open = false;\n }\n\n selectOption(newlySelectedOption: U) {\n this.selectedOptionChange.emit(newlySelectedOption);\n this.open = false;\n\n // Clear filter after an option is selected.\n if (this.filterabilityOptions.enabled) {\n this.filterQuery = '';\n this.filterQueryChange.emit(this.filterQuery);\n }\n }\n\n trackByHeader(i: number, group: SingleSelectComponent.OptionGroup<U>) {\n return `${i}${group.header}`;\n }\n\n trackByOption(_: number, option: U) {\n return option.id;\n }\n\n open: boolean = false;\n}\n\nexport namespace SingleSelectComponent {\n export type Option = {\n id: string;\n title: string;\n subtitle?: string;\n disabled?: boolean;\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n\n export type OptionGroup<O extends Option> = {\n header?: string;\n options: O[];\n };\n\n export type FilterabilityOptions =\n | {\n enabled: false;\n }\n | {\n enabled: true;\n placeholder?: string;\n };\n\n export function getFilterSync<T extends OptionGroup<U>, U extends Option>(\n groups: T[],\n exact: boolean = false,\n ): (query: string) => T[] {\n return function filter(query: string) {\n if (!query) return groups;\n\n const fuseOptions = {\n keys: ['title', 'subtitle'],\n includeMatches: true,\n shouldSort: true,\n threshold: exact ? 0.0 : 0.6,\n };\n\n return groups\n .map(group => {\n const fuse = new Fuse(group.options, fuseOptions);\n const matches = fuse.search(query);\n\n return {\n ...group,\n options: matches.map(match => ({\n ...match.item,\n titleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'title')\n ?.indices || []),\n ],\n subtitleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'subtitle')\n ?.indices || []),\n ],\n })),\n };\n })\n .filter(group => group.options.length > 0); // Remove empty groups\n };\n }\n}\n","<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ selectedOption }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n [rivFocusOnInit]=\"true\"\n />\n <div class=\"options\" [style.max-height]=\"maxCalloutHeight\">\n <riv-loading-cover [loading]=\"loading\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"> </ng-content>\n </div>\n</riv-callout>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport {\n timeDay,\n timeDays,\n timeMonth,\n timeMonths,\n timeSunday,\n timeYear,\n timeYears,\n} from 'd3-time';\nimport { timeFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { SingleSelectComponent } from '../single-select/single-select.component';\n\nconst monthFormatter = timeFormat('%B');\nconst yearFormatter = timeFormat('%Y');\nconst dayFormatter = timeFormat('%e');\nconst weekdayNumberFormatter = timeFormat('%w');\n\nfunction getWeekdayNumber(date: Date): number {\n return parseInt(weekdayNumberFormatter(date));\n}\n\ntype DateOption = SingleSelectComponent.Option & { date: Date };\n\ntype CalendarDate = {\n date: Date;\n display: string;\n fadeIn: boolean;\n fadeOut: boolean;\n hidden: boolean;\n inCurrentMonth: boolean;\n inRange: boolean;\n roundedNe: boolean;\n roundedNw: boolean;\n roundedSe: boolean;\n roundedSw: boolean;\n selected: boolean;\n today: boolean;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarComponent {\n private readonly activeYearMonth$ = new BehaviorSubject<Date>(new Date());\n @Input()\n public set activeYearMonth(v: Date) {\n this.activeYearMonth$.next(v);\n }\n public get activeYearMonth(): Date {\n return this.activeYearMonth$.getValue();\n }\n\n private readonly displayMin$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMin,\n );\n @Input()\n public set displayMin(v: Date) {\n this.displayMin$.next(v);\n }\n public get displayMin(): Date {\n return this.displayMin$.getValue();\n }\n\n private readonly displayMax$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMax,\n );\n @Input()\n public set displayMax(v: Date) {\n this.displayMax$.next(v);\n }\n public get displayMax(): Date {\n return this.displayMax$.getValue();\n }\n\n private readonly selectableMin$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMin(v: Date | undefined) {\n this.selectableMin$.next(v);\n }\n public get selectableMin(): Date | undefined {\n return this.selectableMin$.getValue();\n }\n\n private readonly selectableMax$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMax(v: Date | undefined) {\n this.selectableMax$.next(v);\n }\n public get selectableMax(): Date | undefined {\n return this.selectableMax$.getValue();\n }\n\n private readonly omitRange$ = new BehaviorSubject<[Date, Date] | undefined>(\n undefined,\n );\n @Input()\n public set omitRange(v: [Date, Date] | undefined) {\n this.omitRange$.next(v);\n }\n public get omitRange(): [Date, Date] | undefined {\n return this.omitRange$.getValue();\n }\n\n private readonly selectedValue$ = new BehaviorSubject<\n Date | [Date, Date] | undefined\n >(undefined);\n @Input()\n public set selectedValue(v: Date | [Date, Date] | undefined) {\n this.selectedValue$.next(v);\n }\n public get selectedValue(): Date | [Date, Date] | undefined {\n return this.selectedValue$.getValue();\n }\n\n readonly yearOptions$: Observable<DateOption[]> = combineLatest([\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n activeYearMonth,\n ]) => {\n const min: Date = selectableMin ?? displayMin;\n const max: Date = selectableMax ?? displayMax;\n return timeYears(timeYear.floor(displayMin), displayMax).map(\n flooredYear => {\n const year = new Date(\n flooredYear.getFullYear(),\n activeYearMonth.getMonth(),\n );\n return {\n id: year.getFullYear().toString(),\n title: yearFormatter(year),\n disabled:\n year.getFullYear() < min.getFullYear() ||\n year.getFullYear() > max.getFullYear(),\n date: year,\n };\n },\n );\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedYearOption$ = combineLatest([\n this.yearOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([yearOptions, activeYearMonth]) =>\n yearOptions.find(\n y => y.id === activeYearMonth.getFullYear().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly monthOptions$: Observable<DateOption[]> = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n ]) => {\n const min = selectableMin ?? displayMin;\n const max = selectableMax ?? displayMax;\n return timeMonths(\n timeYear.floor(activeYearMonth),\n timeYear.floor(timeYear.offset(activeYearMonth, 1)),\n ).map(month => ({\n id: month.getMonth().toString(),\n title: monthFormatter(month),\n disabled:\n month.valueOf() < min.valueOf() || month.valueOf() > max.valueOf(),\n date: month,\n }));\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedMonthOption$ = combineLatest([\n this.monthOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([monthOptions, activeYearMonth]) =>\n monthOptions.find(\n m => m.id === activeYearMonth.getMonth().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly previousMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.selectableMin$,\n ]).pipe(\n map(([yearMonth, displayMin, selectableMin]) => {\n const min: Date = selectableMin ?? displayMin;\n const previous = timeMonth.floor(timeMonth.offset(yearMonth, -1));\n if (previous.valueOf() < min.valueOf()) return null;\n return previous;\n }),\n );\n\n readonly nextMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMax$,\n this.selectableMax$,\n ]).pipe(\n map(([yearMonth, displayMax, selectableMax]) => {\n const max: Date = selectableMax ?? displayMax;\n const next = timeMonth.floor(timeMonth.offset(yearMonth, 1));\n if (next.valueOf() > max.valueOf()) return null;\n return next;\n }),\n );\n\n private readonly datesInSelectedRange$: Observable<Date[]> =\n this.selectedValue$.pipe(\n map(selectedValue => {\n if (!selectedValue) return [];\n if (selectedValue instanceof Date) return [selectedValue];\n return timeDays(\n timeDay.floor(selectedValue[0]),\n timeDay.floor(timeDay.offset(selectedValue[1], 1)),\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly dates$: Observable<CalendarDate[]> = combineLatest([\n this.activeYearMonth$,\n this.selectedValue$,\n this.datesInSelectedRange$,\n this.selectableMin$,\n this.selectableMax$,\n this.omitRange$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n selectedValue,\n datesInSelectedRange,\n selectableMin,\n selectableMax,\n omitRange,\n ]) => {\n const calendarDates = timeDays(\n timeSunday.floor(activeYearMonth),\n timeSunday.ceil(timeMonth.offset(activeYearMonth, 1)),\n );\n const minCalendarDate = calendarDates[0];\n const maxCalendarDate = calendarDates[calendarDates.length - 1];\n const selectedDateCoordinates = new Map<number, [number, number]>();\n const visibleDatesInSelectedRange = datesInSelectedRange.filter(\n selected =>\n selected.valueOf() >= minCalendarDate.valueOf() &&\n selected.valueOf() <= maxCalendarDate.valueOf() &&\n (selectableMin\n ? selected.valueOf() >= selectableMin.valueOf()\n : true) &&\n (selectableMax\n ? selected.valueOf() <= selectableMax.valueOf()\n : true) &&\n (omitRange\n ? selected.valueOf() < omitRange[0].valueOf() ||\n selected.valueOf() > omitRange[1].valueOf()\n : true),\n );\n if (visibleDatesInSelectedRange.length > 0) {\n const firstVisibleSelectedDateOffset = getWeekdayNumber(\n visibleDatesInSelectedRange[0],\n );\n visibleDatesInSelectedRange.forEach((selected, i) => {\n const x = getWeekdayNumber(selected);\n const y = Math.floor((i + firstVisibleSelectedDateOffset) / 7);\n selectedDateCoordinates.set(selected.valueOf(), [x, y]);\n });\n }\n function serializeCoordinates(coordinates: [number, number]): string {\n return coordinates.join(':');\n }\n\n const visibleDatesInSelectedRangeCoordinates = new Set(\n [...selectedDateCoordinates.values()].map(serializeCoordinates),\n );\n\n function getRoundedCorners(date: Date): {\n nw: boolean;\n ne: boolean;\n se: boolean;\n sw: boolean;\n } {\n const coordinates = selectedDateCoordinates.get(date.valueOf());\n if (!coordinates)\n return { nw: false, ne: false, se: false, sw: false };\n const [x, y] = coordinates;\n const top = serializeCoordinates([x, y - 1]),\n right = serializeCoordinates([x + 1, y]),\n bottom = serializeCoordinates([x, y + 1]),\n left = serializeCoordinates([x - 1, y]);\n return {\n nw:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(left),\n ne:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(right),\n se:\n !visibleDatesInSelectedRangeCoordinates.has(right) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n sw:\n !visibleDatesInSelectedRangeCoordinates.has(left) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n };\n }\n\n const visibleDatesInSelectedRangeValues = new Set(\n visibleDatesInSelectedRange.map(selected => selected.valueOf()),\n );\n\n const today = timeDay.floor(new Date());\n\n return calendarDates.map(date => {\n const { nw, ne, se, sw } = getRoundedCorners(date);\n const dateValue = date.valueOf();\n const inRange = visibleDatesInSelectedRangeValues.has(dateValue);\n const selected = selectedValue\n ? selectedValue instanceof Date\n ? dateValue === selectedValue.valueOf()\n : dateValue === selectedValue[0].valueOf() ||\n dateValue === selectedValue[1].valueOf()\n : false;\n return {\n date,\n display: dayFormatter(date),\n fadeIn:\n inRange &&\n (dateValue ===\n Math.max(\n minCalendarDate.valueOf(),\n selectableMin?.valueOf() ?? -Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[1], 1).valueOf()\n : -Infinity)),\n fadeOut:\n inRange &&\n (dateValue ===\n Math.min(\n maxCalendarDate.valueOf(),\n selectableMax?.valueOf() ?? Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[0], -1).valueOf()\n : Infinity)),\n hidden:\n dateValue < (selectableMin?.valueOf() ?? -Infinity) ||\n dateValue > (selectableMax?.valueOf() ?? Infinity) ||\n (omitRange\n ? omitRange[0].valueOf() <= dateValue &&\n dateValue <= omitRange[1].valueOf()\n : false),\n inCurrentMonth:\n dateValue >= activeYearMonth.valueOf() &&\n dateValue < timeMonth.offset(activeYearMonth, 1).valueOf(),\n inRange,\n roundedNe: ne,\n roundedNw: nw,\n roundedSe: se,\n roundedSw: sw,\n selected,\n today: dateValue === today.valueOf(),\n };\n });\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n selectDay(day: CalendarDate) {\n if (!day.inCurrentMonth) {\n this.activeYearMonthChange.emit(timeMonth.floor(day.date));\n }\n this.dateSelect.emit(day.date);\n }\n\n @Output()\n activeYearMonthChange = new EventEmitter<Date>();\n\n @Output()\n dateSelect = new EventEmitter<Date>();\n}\n\nexport namespace CalendarComponent {\n export const defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));\n export const defaultMax = timeDay.offset(\n timeYear.floor(timeYear.offset(new Date(), 5)),\n -1,\n );\n}\n","<div class=\"controls\">\n <div>\n <ng-template #selectTrigger let-selectedOption=\"selectedOption\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ selectedOption.title || '...' }}\n </button>\n </ng-template>\n <riv-single-select\n placeholder=\"Month...\"\n [groups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-select>\n <riv-single-select\n placeholder=\"Year...\"\n [groups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-select>\n </div>\n <div\n *ngIf=\"{ prev: previousMonth$ | async, next: nextMonth$ | async }; let vm\"\n >\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowLeft'\"\n [disabled]=\"!vm.prev\"\n (click)=\"vm.prev ? activeYearMonthChange.emit(vm.prev) : null\"\n type=\"button\"\n ></button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowRight'\"\n [disabled]=\"!vm.next\"\n (click)=\"vm.next ? activeYearMonthChange.emit(vm.next) : null\"\n type=\"button\"\n ></button>\n </div>\n</div>\n<div class=\"calendar\">\n <span class=\"label\">Su</span>\n <span class=\"label\">Mo</span>\n <span class=\"label\">Tu</span>\n <span class=\"label\">We</span>\n <span class=\"label\">Th</span>\n <span class=\"label\">Fr</span>\n <span class=\"label\">Sa</span>\n <button\n *ngFor=\"let day of dates$ | async\"\n class=\"day\"\n [disabled]=\"day.hidden\"\n [class.bleed]=\"!day.inCurrentMonth\"\n [class.fade-in]=\"day.fadeIn\"\n [class.fade-out]=\"day.fadeOut\"\n [class.in-range]=\"day.inRange\"\n [class.rounded-ne]=\"day.roundedNe\"\n [class.rounded-nw]=\"day.roundedNw\"\n [class.rounded-se]=\"day.roundedSe\"\n [class.rounded-sw]=\"day.roundedSw\"\n (click)=\"selectDay(day)\"\n type=\"button\"\n >\n <span\n class=\"day-wrapper\"\n [class.selected]=\"day.selected\"\n [class.today]=\"day.today\"\n [class.hidden]=\"day.hidden\"\n >\n {{ day.display }}\n </span>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n Output,\n} from '@angular/core';\nimport { timeDay, timeMonth, timeSunday, timeWeek, timeYear } from 'd3-time';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n merge,\n scan,\n shareReplay,\n startWith,\n} from 'rxjs';\nimport { DatePipe } from '../../format/pipes/date.pipe';\nimport { LocalStorage } from '../../util/local-storage';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nimport { SingleSelectComponent } from '../single-select/single-select.component';\nconst timeQuarter = timeMonth.every(3)!;\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRangeComponent extends InputLabelComponent {\n readonly TODAY = new Date();\n readonly STORAGE_KEY = 'date-range.default';\n\n private readonly showPresets$ = new BehaviorSubject<boolean>(true);\n @Input()\n set showPresets(v: boolean) {\n this.showPresets$.next(v);\n }\n get showPresets(): boolean {\n return this.showPresets$.getValue();\n }\n\n readonly min$ = new BehaviorSubject<Date>(CalendarComponent.defaultMin);\n @Input()\n set min(v: Date) {\n this.min$.next(v);\n }\n get min(): Date {\n return this.min$.getValue();\n }\n\n readonly max$ = new BehaviorSubject<Date>(CalendarComponent.defaultMax);\n @Input()\n set max(v: Date) {\n this.max$.next(v);\n }\n get max(): Date {\n return this.max$.getValue();\n }\n\n readonly value$ = new BehaviorSubject<[Date, Date] | undefined>(undefined);\n @Input()\n set value(v: [Date, Date] | undefined) {\n this.value$.next(v);\n }\n get value(): [Date, Date] | undefined {\n return this.value$.getValue();\n }\n\n readonly placeholder$ = new BehaviorSubject<string>('Select date range...');\n @Input()\n set placeholder(v: string) {\n this.placeholder$.next(v);\n }\n get placeholder(): string {\n return this.placeholder$.getValue();\n }\n\n readonly disabled$ = new BehaviorSubject(false);\n @Input()\n set disabled(v: boolean) {\n this.disabled$.next(v);\n }\n get disabled(): boolean {\n return this.disabled$.getValue();\n }\n\n readonly open$ = new BehaviorSubject(false);\n\n readonly userSelectedPreset$ = new Subject<DateRangeComponent.Preset>();\n\n readonly userSelectedDate$ = new Subject<Date | undefined>();\n readonly selectedValue$: Observable<Date | [Date, Date] | undefined> = merge(\n this.value$,\n this.userSelectedDate$.pipe(\n scan(\n (previous: Date | [Date, Date] | undefined, date: Date | undefined) => {\n if (previous instanceof Date && date instanceof Date) {\n if (date.valueOf() >= previous.valueOf()) {\n const pair: [Date, Date] = [previous, date];\n return pair;\n }\n }\n return date;\n },\n ),\n ),\n this.userSelectedPreset$.pipe(map(preset => preset.dates)),\n ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n readonly presetFilterQuery$ = new BehaviorSubject('');\n readonly filteredPresetOptions$ = combineLatest([\n this.presetFilterQuery$,\n this.min$,\n this.max$,\n ]).pipe(\n map(([query, min, max]) =>\n DateRangeComponent.filterPresets(query).map(presets => ({\n ...presets,\n options: presets.options.filter(\n p =>\n p.dates[0].valueOf() >= min.valueOf() &&\n p.dates[1].valueOf() <= max.valueOf(),\n ),\n })),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedPreset$: Observable<DateRangeComponent.Preset | null> =\n combineLatest([\n this.selectedValue$,\n this.userSelectedPreset$.pipe(startWith(null)),\n ]).pipe(\n map(([selectedValue, userSelectedPreset]) => {\n if (selectedValue instanceof Array) {\n const options = DateRangeComponent.Presets.filter(\n preset =>\n preset.dates[0].valueOf() === selectedValue[0].valueOf() &&\n preset.dates[1].valueOf() === selectedValue[1].valueOf(),\n );\n if (options.length) {\n // Some date ranges match multiple presets, e.g. on Jan 19th, a\n // selected date range of Jan 1-19 would correspond to \"this month\n // so far,\" \"this quarter so far,\" and \"this year so far.\" We'll\n // use the user's most recent manual selection as a tie breaker\n // where possible.\n const mostRecent = options.find(\n option => option.id === userSelectedPreset?.id,\n );\n if (mostRecent) return mostRecent;\n return options[0];\n }\n }\n return null;\n }),\n );\n\n readonly favoritePresetIds$ = new LocalStorage<string[]>(\n this.STORAGE_KEY,\n [],\n );\n\n setFavorite(preset: DateRangeComponent.Preset, favorite: boolean) {\n const ids = new Set(this.favoritePresetIds$.getValue());\n if (favorite) {\n ids.add(preset.id);\n } else {\n ids.delete(preset.id);\n }\n this.favoritePresetIds$.next([...ids]);\n }\n\n readonly favoritePresets$: Observable<DateRangeComponent.Preset[]> =\n this.favoritePresetIds$.pipe(\n map(ids =>\n ids\n .map(id =>\n DateRangeComponent.Presets.find(preset => preset.id === id),\n )\n .filter((p): p is DateRangeComponent.Preset => p !== undefined),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userLeftActiveYearMonth$ = new Subject<Date>();\n readonly userRightActiveYearMonth$ = new Subject<Date>();\n\n readonly leftMin$ = this.min$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly leftMax$ = this.max$.pipe(\n map(max => timeDay.offset(timeMonth.floor(max), -1)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly rightMax$ = this.max$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftActiveYearMonth$ = combineLatest([\n this.leftMax$,\n merge(\n this.userLeftActiveYearMonth$.pipe(\n startWith(timeMonth.floor(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n map(preset => timeMonth.floor(preset.dates[0])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[0])),\n ),\n ),\n ]).pipe(\n map(([leftMax, left]) => {\n if (left.valueOf() >= leftMax.valueOf()) return timeMonth.floor(leftMax);\n else return left;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightActiveYearMonth$ = combineLatest([\n this.leftActiveYearMonth$,\n merge(\n this.userRightActiveYearMonth$.pipe(\n startWith(timeMonth.ceil(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n map(preset => timeMonth.floor(preset.dates[1])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[1])),\n ),\n ),\n this.rightMax$,\n ]).pipe(\n map(([left, userRight, rightMax$]) => {\n if (left.valueOf() >= userRight.valueOf())\n return timeMonth.floor(timeMonth.offset(left, 1));\n else if (userRight.valueOf() >= rightMax$.valueOf())\n return timeMonth.floor(rightMax$);\n else return userRight;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightMin$ = this.leftActiveYearMonth$.pipe(\n map(left => timeMonth.floor(timeMonth.offset(left, 1))),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftOmitRange$: Observable<[Date, Date]> =\n this.rightActiveYearMonth$.pipe(\n map<Date, [Date, Date]>(rightActiveYearMonth => {\n const first = timeMonth.floor(rightActiveYearMonth);\n const last = timeDay.offset(\n timeMonth.floor(timeMonth.offset(rightActiveYearMonth, 1)),\n -1,\n );\n return [first, last];\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n @Output()\n readonly valueChange: Observable<[Date, Date] | undefined> =\n this.selectedValue$.pipe(\n filter((v): v is [Date, Date] | undefined => !(v instanceof Date)),\n distinctUntilChanged(\n (previous, current) =>\n previous?.[0].valueOf() === current?.[0].valueOf() &&\n previous?.[1].valueOf() === current?.[1].valueOf(),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly displayValue$: Observable<string | undefined> =\n this.valueChange.pipe(\n map(v => {\n if (v) {\n return v.map(date => new DatePipe().transform(date)).join(' — ');\n }\n return undefined;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace DateRangeComponent {\n const today = new Date();\n\n export const Presets: (SingleSelectComponent.Option & {\n dates: [Date, Date];\n })[] = [\n {\n id: 'today',\n title: 'Today',\n subtitle: 'Today from midnight until the current time',\n dates: [timeDay(), timeDay()],\n },\n {\n id: 'yesterday',\n title: 'Yesterday',\n subtitle: 'The previous 24 hour day',\n dates: [timeDay.offset(timeDay(), -1), timeDay.offset(timeDay(), -1)],\n },\n {\n id: 'tomorrow',\n title: 'Tomorrow',\n subtitle: 'The next 24 hour day',\n dates: [timeDay.offset(timeDay(), 1), timeDay.offset(timeDay(), 1)],\n },\n {\n id: 'this_week',\n title: 'This week',\n subtitle: 'The current calendar week',\n dates: [\n timeSunday.floor(today),\n timeDay.offset(timeSunday.ceil(today), -1),\n ],\n },\n {\n id: 'this_week_so_far',\n title: 'This week so far',\n subtitle: 'The current calendar week up to now',\n dates: [timeSunday.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_week',\n title: 'Last week',\n subtitle: 'The previous calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), -1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_week',\n title: 'Next week',\n subtitle: 'The next calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), 1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), 1), -1),\n ],\n },\n {\n id: 'this_month',\n title: 'This month',\n subtitle: 'The current calendar month',\n dates: [\n timeMonth.floor(today),\n timeDay.offset(timeMonth.ceil(today), -1),\n ],\n },\n {\n id: 'this_month_so_far',\n title: 'This month so far',\n subtitle: 'The current calendar month up to now',\n dates: [timeMonth.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_month',\n title: 'Last month',\n subtitle: 'The previous calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), -1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_month',\n title: 'Next month',\n subtitle: 'The next calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), 1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), 1), -1),\n ],\n },\n {\n id: 'this_quarter',\n title: 'This quarter',\n subtitle: 'The current quarter',\n dates: [\n timeQuarter.floor(today),\n timeDay.offset(timeQuarter.ceil(today), -1),\n ],\n },\n {\n id: 'this_quarter_so_far',\n title: 'This quarter so far',\n subtitle: 'The current quarter up to now',\n dates: [timeQuarter.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_quarter',\n title: 'Last quarter',\n subtitle: 'The previous full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), -1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_quarter',\n title: 'Next quarter',\n subtitle: 'The next full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), 1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), 1), -1),\n ],\n },\n {\n id: 'this_year',\n title: 'This year',\n subtitle: 'The current calendar year',\n dates: [timeYear.floor(today), timeDay.offset(timeYear.ceil(today), -1)],\n },\n {\n id: 'this_year_so_far',\n title: 'This year so far',\n subtitle: 'The current calendar year up to now',\n dates: [timeYear.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_year',\n title: 'Last year',\n subtitle: 'The previous calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), -1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_year',\n title: 'Next year',\n subtitle: 'The next calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), 1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), 1), -1),\n ],\n },\n {\n id: 'last_7_days',\n title: 'Last 7 days',\n subtitle: 'The previous 7 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -8)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_14_days',\n title: 'Last 14 days',\n subtitle: 'The previous 14 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -15)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_30_days',\n title: 'Last 30 days',\n subtitle: 'The previous 30 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -31)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_60_days',\n title: 'Last 60 days',\n subtitle: 'The previous 60 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -61)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_90_days',\n title: 'Last 90 days',\n subtitle: 'The previous 90 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -91)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_180_days',\n title: 'Last 180 days',\n subtitle: 'The previous 180 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -181)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_365_days',\n title: 'Last 365 days',\n subtitle: 'The previous 365 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -366)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n ];\n\n export type Preset = (typeof Presets)[number];\n\n export const filterPresets = SingleSelectComponent.getFilterSync([\n {\n options: Presets,\n },\n ]);\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (value$ | async) }\"\n>\n <riv-callout\n *ngIf=\"open$ | async\"\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <ng-template #presetTpl let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n <riv-single-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search...' }\"\n (filterQueryChange)=\"presetFilterQuery$.next($event)\"\n [groups]=\"(filteredPresetOptions$ | async) ?? []\"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n [nodeTemplate]=\"presetTpl\"\n ></riv-single-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { timeMonth } from 'd3-time';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-date',\n templateUrl: './date.component.html',\n styleUrls: ['./date.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateComponent extends InputLabelComponent {\n @Input()\n min: Date = CalendarComponent.defaultMin;\n\n @Input()\n max: Date = CalendarComponent.defaultMax;\n\n @Input()\n value?: Date;\n\n @Input()\n placeholder: string = 'Select date...';\n\n @Input()\n disabled: boolean = false;\n\n activeYearMonth = timeMonth.floor(new Date());\n open = false;\n\n @Output()\n valueChange = new EventEmitter<Date>();\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open = true\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open = false\"\n>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open = false\"\n ></riv-calendar>\n </div>\n</riv-callout>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-switch-checkbox',\n templateUrl: './switch-checkbox.component.html',\n styleUrls: ['./switch-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SwitchCheckboxComponent extends CheckboxComponent {}\n","<label\n [class.checked]=\"value\"\n [class.disabled]=\"disabled\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n>\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CalloutService {\n public calloutStack$ = new BehaviorSubject<TemplateRef<unknown>[]>([]);\n\n public add(callout: TemplateRef<unknown>) {\n this.calloutStack$.next([...this.calloutStack$.getValue(), callout]);\n }\n\n public remove(callout: TemplateRef<unknown>) {\n this.calloutStack$.next(\n this.calloutStack$.getValue().filter(c => c !== callout),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Component({\n selector: 'riv-callout-outlet',\n templateUrl: './callout-outlet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutOutletComponent {\n constructor(readonly calloutService: CalloutService) {}\n}\n","<ng-container *ngFor=\"let callout of calloutService.calloutStack$ | async\">\n <ng-container *ngTemplateOutlet=\"callout\"></ng-container>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Directive({\n selector: '[riv-callout]',\n})\nexport class CalloutDirective implements OnInit, OnDestroy {\n constructor(\n private readonly template: TemplateRef<unknown>,\n private readonly calloutService: CalloutService,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.calloutService.add(this.template);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this.calloutService.remove(this.template);\n this.cdr.detectChanges();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input()\n variant: BadgeComponent.Variant = 'brand';\n\n @Input()\n size: BadgeComponent.Size = 'medium';\n\n @HostBinding('class')\n get classes() {\n return `${this.size} ${this.variant}`;\n }\n}\n\nexport namespace BadgeComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'brand',\n 'beta',\n 'disabled',\n\n 'qualitative-safety',\n 'qualitative-caution',\n 'qualitative-warning',\n 'qualitative-danger',\n 'qualitative-danger-inverse',\n\n 'categorical-1',\n 'categorical-2',\n 'categorical-3',\n 'categorical-4',\n 'categorical-5',\n 'categorical-6',\n 'categorical-7',\n 'categorical-8',\n 'categorical-9',\n 'categorical-10',\n\n 'categorical-1-inverse',\n 'categorical-2-inverse',\n 'categorical-3-inverse',\n 'categorical-4-inverse',\n 'categorical-5-inverse',\n 'categorical-6-inverse',\n 'categorical-7-inverse',\n 'categorical-8-inverse',\n 'categorical-9-inverse',\n 'categorical-10-inverse',\n\n 'linear-1',\n 'linear-2',\n 'linear-3',\n 'linear-4',\n 'linear-5',\n 'linear-6',\n 'linear-7',\n 'linear-8',\n 'linear-9',\n 'linear-10',\n ] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Size } from './size.directive';\n\ninterface SizeChanges extends Size {\n element: Element;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ContentService {\n private sizeChangesSource = new Subject<SizeChanges>();\n sizeChanges$ = this.sizeChangesSource.asObservable();\n\n resizeObserver: ResizeObserver;\n\n constructor() {\n this.resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n this.sizeChangesSource.next({\n element: entry.target,\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n });\n }\n });\n }\n\n observe(element: HTMLElement) {\n this.resizeObserver.observe(element);\n }\n\n unobserve(element: HTMLElement) {\n this.resizeObserver.unobserve(element);\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n Observable,\n Subscription,\n debounceTime,\n filter,\n merge,\n skip,\n take,\n} from 'rxjs';\nimport { ContentService } from './content.service';\n\nexport interface Size {\n width: number;\n height: number;\n}\n\n@Directive({\n selector: '[rivClientSize]',\n})\nexport class SizeDirective implements OnInit, OnDestroy {\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly contentService: ContentService,\n private readonly zone: NgZone,\n ) {}\n\n @Output()\n rivClientSize = new EventEmitter<Size>();\n\n subscription!: Subscription;\n\n ngOnInit() {\n this.contentService.observe(this.elementRef.nativeElement);\n this.subscription = this.contentService.sizeChanges$\n .pipe(\n filter(change => change.element === this.elementRef.nativeElement),\n debounceTimeAfterFirst(10),\n )\n .subscribe(change => {\n this.rivClientSize.emit(change);\n // TODO: Hopefully we can take this out once we switch to signals and zoneless Angular\n this.zone.run(() => {});\n });\n }\n\n ngOnDestroy() {\n this.contentService.unobserve(this.elementRef.nativeElement);\n this.subscription?.unsubscribe();\n }\n}\n\nfunction debounceTimeAfterFirst(delay: number) {\n return <T>(source: Observable<T>) =>\n merge(source.pipe(take(1)), source.pipe(skip(1), debounceTime(delay)));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-row]',\n styleUrls: ['./data-table-row.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableRowComponent {\n @Input()\n @HostBinding('class.sub-row')\n public subRow: boolean = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} from '@angular/core';\nimport { DataTableRowComponent } from './data-table-row.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-cell]',\n styleUrls: ['./data-table-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableCellComponent implements OnInit {\n constructor(private readonly row: DataTableRowComponent) {}\n\n @HostBinding('class.sub-cell')\n public subCell: boolean = false;\n\n ngOnInit(): void {\n this.subCell = this.row.subRow;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-header-cell]',\n styleUrls: ['./data-table-header-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableHeaderCellComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-data-table',\n styleUrls: ['./data-table.component.css'],\n template: '<table><ng-content></ng-content></table>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-zero-state',\n template: `{{ message }}`,\n styleUrls: ['./zero-state.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZeroStateComponent {\n @Input()\n message: string = 'No data to display.';\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { arc, pie } from 'd3-shape';\n\n@Component({\n selector: 'riv-donut',\n templateUrl: './donut.component.html',\n styleUrls: ['./donut.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutComponent {\n @Input()\n displayLabel: string = '';\n\n @Input()\n displayValue: string = '';\n\n @Input()\n data: DonutComponent.DataPoint[] = [];\n\n @Input()\n displayTooltip?: string;\n\n @Input()\n size: DonutComponent.Size = 'medium';\n\n readonly HEIGHT = 256;\n\n get arcPaths() {\n const outer = (this.HEIGHT / 2) * 0.9;\n const inner = outer - 12;\n const pieArcs = pie<DonutComponent.DataPoint>()\n .sortValues(null)\n .value(d => d.value)(this.data);\n return pieArcs.map(pieArc =>\n arc<DonutComponent.DataPoint>()\n .innerRadius(inner)\n .outerRadius(outer)\n .padAngle(0.013)\n .startAngle(pieArc.startAngle)\n .endAngle(pieArc.endAngle)(pieArc.data),\n );\n }\n\n getFillStyle(idx: number): string {\n return `var(${this.data[idx].colorToken})`;\n }\n\n get empty(): boolean {\n return (\n this.data.length === 0 || this.data.every(point => point.value === 0)\n );\n }\n}\n\nexport namespace DonutComponent {\n export type DataPoint = {\n value: number;\n colorToken: string;\n };\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<div *ngIf=\"!empty; else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n [attr.height]=\"HEIGHT\"\n viewBox=\"-128 -128 256 256\"\n >\n <path\n *ngFor=\"let path of arcPaths; let i = index\"\n [attr.d]=\"path\"\n [attr.fill]=\"getFillStyle(i)\"\n ></path>\n </svg>\n <div class=\"display\">\n <div class=\"value\" [ngClass]=\"size\" [rivTooltip]=\"displayTooltip\">\n {{ displayValue }}\n </div>\n <div class=\"label\">{{ displayLabel }}</div>\n </div>\n</div>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n","export function aggregateValues(values: number[]): number[] {\n return values.map(\n (v, ix) => v + values.slice(ix + 1).reduce((acc, n) => acc + n, 0),\n );\n}\n\nexport function calcPercentageSteps(values: number[]): number[] {\n return values.flatMap((v, ix) => {\n const next = values[ix + 1];\n return next !== undefined\n ? v === 0\n ? 0\n : [Math.round(100 * (next / v))]\n : [];\n });\n}\n\nexport function calcTrends(\n values: number[],\n previousValues: number[],\n): number[] {\n if (values.length !== previousValues.length) {\n return [];\n }\n return values.map((v, ix) => v - previousValues[ix]);\n}\n\nexport function calcPoints(\n values: number[],\n sectionWidth: number,\n height: number,\n gap: number,\n): [number, number][] {\n const divisor = Math.max(...values) / height;\n const normalizedValues = values.map(\n v => height - (divisor === 0 ? 0 : Math.round(v / divisor)),\n );\n\n // plot the points along the top edge of the graph\n return normalizedValues.slice(1).flatMap((v, ix) => [\n // top left point of current section\n [gap * (ix + 1) + sectionWidth * ix, normalizedValues[ix]],\n // bottom right point of current section\n [gap * (ix + 1) + sectionWidth * (ix + 1), v],\n // top left point of next section, required for small sections under vertical lines\n [gap * (ix + 2) + sectionWidth * (ix + 1), v],\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-metric',\n templateUrl: './metric.component.html',\n styleUrls: ['./metric.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: string = '';\n\n @Input()\n size: MetricComponent.Size = 'medium';\n\n @Input()\n @HostBinding('class.card')\n card: boolean = false;\n\n @Input()\n help?: string;\n\n @Input()\n align?: 'left' | 'right' = 'left';\n\n @Input()\n valueColorToken?: string = '--type-light-high-contrast';\n\n get valueColor(): string {\n return `var(${this.valueColorToken})`;\n }\n}\n\nexport namespace MetricComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-trend',\n templateUrl: './trend.component.html',\n styleUrls: ['./trend.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TrendComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: number = 0;\n\n @Input()\n successCondition: 'positive' | 'negative' = 'positive';\n\n getClasses() {\n const conditionalClass =\n this.value === 0\n ? ''\n : this.successCondition === 'positive'\n ? this.value > 0\n ? 'success'\n : 'danger'\n : this.value < 0\n ? 'success'\n : 'danger';\n\n return 'trend ' + conditionalClass;\n }\n}\n\nexport namespace TrendComponent {\n export function calculateTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null || previousValue === 0) {\n return 0;\n }\n return currentValue / previousValue - 1;\n }\n\n export function calculatePercentageTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null) {\n return 0;\n }\n return currentValue - previousValue;\n }\n}\n","<span [class]=\"getClasses()\">\n <riv-icon\n class=\"icon\"\n [name]=\"\n value === 0 ? 'ArrowRight' : value > 0 ? 'TrendingUp' : 'TrendingDown'\n \"\n [size]=\"16\"\n ></riv-icon>\n <span>{{ label }}</span>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { area } from 'd3-shape';\nimport {\n aggregateValues,\n calcPercentageSteps,\n calcPoints,\n calcTrends,\n} from './funnel-chart.helpers';\n\n@Component({\n selector: 'riv-funnel',\n templateUrl: './funnel-chart.component.html',\n styleUrls: ['./funnel-chart.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChartComponent implements OnChanges {\n @Input()\n data: FunnelChartComponent.Data[] = [];\n\n @Input()\n isPreAggregated: boolean = false;\n\n @Input()\n graphHeight: number = 200;\n\n @Input()\n graphWidth: number = 1200;\n\n @Input()\n showConverted: boolean = true;\n\n aggregatedValues: number[] = [];\n percentageSteps: number[] = [];\n trends: number[] = [];\n path: string | null = null;\n gapWidth: number = 0;\n sectionWidth: number = 0;\n allZeroes: boolean = true;\n\n ngOnChanges() {\n this.calcValues();\n this.calcTrends();\n this.calcSpace();\n this.createPath();\n }\n\n calcValues() {\n this.aggregatedValues = this.isPreAggregated\n ? this.data.map(d => d.value)\n : aggregateValues(this.data.map(d => d.value));\n\n this.allZeroes = Math.max(...this.aggregatedValues) === 0;\n\n this.percentageSteps = calcPercentageSteps(this.aggregatedValues);\n }\n\n calcTrends() {\n const previousValues = this.data.flatMap(d =>\n d.previousValue !== null ? [d.previousValue] : [],\n );\n\n const aggregatedValues = this.isPreAggregated\n ? previousValues\n : aggregateValues(previousValues);\n\n const previousPercentageSteps = calcPercentageSteps(aggregatedValues);\n\n this.trends = calcTrends(this.percentageSteps, previousPercentageSteps);\n }\n\n calcSpace() {\n this.gapWidth = document.querySelector('.vertical-line')?.clientWidth ?? 2;\n const totalGapSpace = this.percentageSteps.length * this.gapWidth;\n\n this.sectionWidth = Math.round(\n (this.graphWidth - totalGapSpace) / (this.percentageSteps.length || 1),\n );\n }\n\n createPath() {\n const points = calcPoints(\n this.aggregatedValues,\n this.sectionWidth,\n this.graphHeight,\n this.gapWidth,\n );\n\n this.path = area()\n .x(([x, _]) => x)\n .y1(([_, y]) => y)\n .y0(this.graphHeight)(points);\n }\n}\n\nexport namespace FunnelChartComponent {\n export type Data = {\n label: string;\n value: number;\n previousValue: number | null;\n };\n}\n","<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n label=\"placeholder\"\n value=\"0\"\n ></riv-metric>\n <!-- center each metric over vertical lines -->\n <riv-metric\n *ngFor=\"let value of aggregatedValues; let ix = index\"\n class=\"metric\"\n [label]=\"data[ix]?.label ?? ''\"\n [value]=\"value.toString()\"\n [style.left.px]=\"ix * sectionWidth + ix * gapWidth\"\n ></riv-metric>\n </div>\n\n <div class=\"chart\">\n <ng-container *ngFor=\"let step of percentageSteps; let ix = index\">\n <div class=\"vertical-line\"></div>\n\n <div>\n <div *ngIf=\"showConverted && !allZeroes\" class=\"step-info\">\n {{ step }}% converted\n <riv-trend\n *ngIf=\"trends[ix] != null\"\n [label]=\"trends[ix]! + '%'\"\n [value]=\"trends[ix]!\"\n ></riv-trend>\n </div>\n\n <!-- allocate space for the graph -->\n <div\n class=\"graph-placeholder\"\n [style.width.px]=\"sectionWidth\"\n [style.height.px]=\"graphHeight\"\n ></div>\n </div>\n </ng-container>\n\n <div class=\"vertical-line\"></div>\n\n <svg\n *ngIf=\"path\"\n class=\"graph\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"graphWidth\"\n [attr.height]=\"graphHeight\"\n >\n <linearGradient id=\"gradient\">\n <stop stop-color=\"var(--purp-30)\" offset=\"0%\" />\n <stop stop-color=\"var(--brand)\" offset=\"100%\" />\n </linearGradient>\n <path [attr.d]=\"path\" fill=\"url(#gradient)\"></path>\n </svg>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-issue',\n templateUrl: './issue.component.html',\n styleUrls: ['./issue.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IssueComponent {\n @Input()\n label?: string;\n\n @Input()\n colorToken: string = '';\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n}\n","<i [style.background-color]=\"backgroundColor\"></i>\n<span *ngIf=\"label\">{{ label }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-legend-item',\n templateUrl: './legend-item.component.html',\n styleUrls: ['./legend-item.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendItemComponent {\n @Input()\n label: string = '';\n\n @Input()\n colorToken: string = '';\n\n @Input()\n style: LegendItemComponent.Style = 'solid';\n\n @Input()\n visibility: LegendItemComponent.Visibility = 'visible';\n\n @Input()\n iconTooltip?: string;\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n\n @Input()\n clickable: boolean = false;\n\n @Input()\n showCheckWhenClickable: boolean = true;\n\n @Output()\n itemClick = new EventEmitter();\n\n isLegendItemClickable(): boolean {\n return this.clickable && this.visibility !== 'locked';\n }\n}\n\nexport namespace LegendItemComponent {\n export const Styles = ['solid', 'striped'] as const;\n export type Style = (typeof Styles)[number];\n\n export const Visibilities = ['visible', 'hidden', 'locked'] as const;\n export type Visibility = (typeof Visibilities)[number];\n}\n","<button\n (click)=\"isLegendItemClickable() ? itemClick.emit() : null\"\n [rivTooltip]=\"iconTooltip\"\n type=\"button\"\n [disabled]=\"visibility === 'locked'\"\n [class.clickable]=\"clickable\"\n>\n <i\n *ngIf=\"visibility === 'visible'\"\n [class.striped]=\"style === 'striped'\"\n [style.background-color]=\"backgroundColor\"\n class=\"opacity-hover\"\n >\n <riv-icon\n *ngIf=\"clickable && showCheckWhenClickable\"\n name=\"Check\"\n [size]=\"16\"\n [strokeWidth]=\"3\"\n style=\"color: var(--white-100)\"\n ></riv-icon>\n </i>\n <i\n *ngIf=\"visibility === 'hidden'\"\n class=\"hidden-legend-item opacity-hover\"\n [class.striped]=\"style === 'striped'\"\n [style.border-color]=\"backgroundColor\"\n [style.--background-color-hover]=\"backgroundColor\"\n ></i>\n <riv-icon *ngIf=\"visibility === 'locked'\" name=\"Lock\" [size]=\"16\"></riv-icon>\n\n <span\n *ngIf=\"label\"\n [class.low-contrast]=\"visibility === 'hidden' || visibility === 'locked'\"\n >\n {{ label }}\n </span>\n</button>\n","import { TimeInterval, utcDay, utcMonth, utcWeek, utcYear } from 'd3-time';\n\nexport const intervals = ['year', 'quarter', 'month', 'week', 'day'] as const;\nexport type Interval = (typeof intervals)[number];\n\nexport function getTimeInterval(interval: Interval): TimeInterval {\n switch (interval) {\n case 'day':\n return utcDay;\n case 'week':\n return utcWeek;\n case 'month':\n return utcMonth;\n case 'quarter':\n return utcMonth.every(3)!;\n case 'year':\n return utcYear;\n }\n}\n\nexport function getMinorIntervalFormat(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return '%-d';\n case 'month':\n return '%b';\n case 'quarter':\n return 'Q%q';\n case 'year':\n return '%Y';\n }\n}\n\nexport function getMajorInterval(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return 'month';\n case 'month':\n case 'quarter':\n case 'year':\n return 'year';\n }\n}\n\nexport function getMajorIntervalFormat(\n interval: ReturnType<typeof getMajorInterval>,\n hasMultipleYears: boolean,\n) {\n switch (interval) {\n case 'year':\n return hasMultipleYears ? '%Y' : '';\n case 'month':\n return hasMultipleYears ? '%b %Y' : '%b';\n }\n}\n\nexport function getIntervalTitle(interval: Interval) {\n switch (interval) {\n case 'year':\n return 'Years';\n case 'quarter':\n return 'Quarters';\n case 'month':\n return 'Months';\n case 'week':\n return 'Weeks';\n case 'day':\n return 'Days';\n }\n}\n","import { StackedColumnComponent } from './stacked-column.component';\n\nexport function getDateRange(\n stacks: StackedColumnComponent.Stack[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const stack of stacks) {\n for (const series of stack.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n\nexport function pointReducer(points: StackedColumnComponent.Value[]) {\n return points.reduce((total, { value }) => total + value, 0);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { index } from 'd3-array';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport { stack } from 'd3-shape';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { getDateRange, pointReducer } from './stacked-column.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'month';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-stacked-column',\n templateUrl: './stacked-column.component.html',\n styleUrls: ['./stacked-column.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedColumnComponent {\n private readonly input$ = new BehaviorSubject<StackedColumnComponent.Stack[]>(\n [],\n );\n @Input()\n public set input(v: StackedColumnComponent.Stack[]) {\n this.input$.next(v);\n }\n public get input(): StackedColumnComponent.Stack[] {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(960);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<any>;\n\n private readonly HEIGHT = 300;\n\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\n\n private readonly COLUMN_WIDTHS = [8, 16, 40, 72] as const;\n private readonly MIN_COLUMN_WIDTH = this.COLUMN_WIDTHS[0];\n\n private readonly maxColumns$ = this.width$.pipe(\n map(width => {\n const innerWidth = width - this.LEFT_OFFSET;\n const columnWidthWithPadding =\n this.MIN_COLUMN_WIDTH + this.COLUMN_PADDING * 2;\n return Math.floor(innerWidth / columnWidthWithPadding);\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n getXStepsInRange(interval: Interval, minDate: Date, maxDate: Date) {\n const timeInterval = getTimeInterval(interval);\n return timeInterval.range(\n timeInterval.floor(minDate),\n timeInterval.floor(timeInterval.offset(maxDate, 1)),\n ).length;\n }\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxColumns$,\n ]).pipe(\n map(([input, maxColumns]) => {\n const [minDate, maxDate] = getDateRange(input);\n\n return intervals.filter(interval => {\n const xStepsCount = this.getXStepsInRange(interval, minDate, maxDate);\n return input.length * xStepsCount <= maxColumns;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): SingleSelectComponent.Option => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n private columnWidth$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.width$,\n ]).pipe(\n map(([input, selectedInterval, width]) => {\n const [minDate, maxDate] = getDateRange(input);\n const xStepCount = this.getXStepsInRange(\n selectedInterval,\n minDate,\n maxDate,\n );\n\n const innerWidth = width - this.LEFT_OFFSET;\n const allowedColumnWidths = this.COLUMN_WIDTHS.filter(columnWidth => {\n const columnWidthWithPadding = columnWidth + this.COLUMN_PADDING * 2;\n return (\n innerWidth - input.length * xStepCount * columnWidthWithPadding >= 0\n );\n });\n const columnWidth = allowedColumnWidths.at(-1);\n if (!columnWidth) return 0;\n\n return columnWidth;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n ]).pipe(\n map(([input, interval]) =>\n input.map((stack): StackedColumnComponent.Stack => {\n const timeInterval = getTimeInterval(interval);\n\n return {\n ...stack,\n series: stack.series.map(series => {\n const binned = new Map<number, StackedColumnComponent.Value[]>();\n for (const point of series.data) {\n const bin = timeInterval.floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(bin)!.push(point);\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: pointReducer(points),\n })),\n };\n }),\n };\n }),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly LEFT_OFFSET = 48;\n readonly COLUMN_PADDING = 4;\n\n readonly drawData$ = combineLatest([\n this.binnedData$,\n this.width$,\n this.selectedInterval$,\n this.columnWidth$,\n ]).pipe(\n map(([binnedData, width, interval, columnWidth]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n const padding = 16;\n\n const [minDate, maxDate] = getDateRange(binnedData);\n const hasMultipleYears = minDate.getFullYear() < maxDate.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const minorTimeInterval = getTimeInterval(interval);\n const xSteps = minorTimeInterval.range(\n minorTimeInterval.floor(minDate),\n minorTimeInterval.floor(minorTimeInterval.offset(maxDate, 1)),\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const fullFormatter = utcFormat(\n `${xMinorIntervalFormat} ${xMajorIntervalFormat}`,\n );\n\n const xOuterScale = scaleBand()\n .domain(xSteps.map(date => fullFormatter(date)))\n .range([this.LEFT_OFFSET, width]);\n\n const outerPadding =\n (xOuterScale.bandwidth() -\n (this.COLUMN_PADDING * (binnedData.length - 1) +\n columnWidth * binnedData.length)) /\n 2;\n\n type SeriesPoint = StackedColumnComponent.Value & {\n series: StackedColumnComponent.Series;\n };\n\n const renderInformation = binnedData.map(stackData => {\n /*\n Create an array with every data point + their associated series.\n i.e. Make an backlink for each element to its series.\n */\n const stackedTable = stackData.series.reduce<SeriesPoint[]>(\n (table, s) => [\n ...table,\n ...s.data.map(point => ({\n ...point,\n series: s,\n })),\n ],\n [],\n );\n\n /*\n Maps each of the SeriesPoints based on label.\n Then map each of those maps to a date.\n\n Example:\n If we were indexing the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get an indexed table like the following, (note this is pseudocode):\n 'January': { 'Estimates Complete': 5, 'Estimates Incomplete': 3 }\n 'February': { 'Estimates Complete': 7, 'Estimates Incomplete': 3 }\n */\n const indexedTable: Map<Date, Map<string, SeriesPoint>> = index(\n stackedTable,\n d => d.date,\n d => d.series.label,\n );\n\n /*\n The output of \"stack()\" is an array of arrays of tuples.\n The tuples unnest as [baseline, topline].\n Each \"key\" involved in the stack has an array of tuples relating to it.\n i.e. [ Date 1 Tuple, Date 2 Tuple ]\n All \"key\" arrays are contained in the outer array.\n i.e. [ Key 1 Tuples, Key 2 Tuples]\n\n We select the keys using \".keys()\".\n For our purposes, the keys are the legend elements.\n i.e. If you have two blocks of the same color, they have the same key.\n\n We select the heights of the blocks using \".value()\".\n\n We are going to stack the blocks on top of each other.\n The baseline of the first key tuples are 0.\n The baseline of the second key tuples are the topline of the associated first key tuple.\n\n Example:\n If we were stacking the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get a stack of:\n [ [ [0,5],[0,7] ], [ [5,8],[7,10] ] ]\n */\n const stacked = stack<\n typeof indexedTable extends Map<infer K, infer V> ? [K, V] : never\n >()\n .keys(stackData.series.map(v => v.label))\n .value(([_, group], key) => {\n return group.get(key)!.value;\n })(indexedTable);\n\n return { indexedTable, stacked };\n });\n\n // The domain should be based on the highest value in any stack, on any date.\n let domainMax = 0;\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }) => {\n // For each date,\n [...indexedTable.values()].forEach((pointMap, i) => {\n // For each series,\n [...pointMap.values()].forEach((_, j) => {\n domainMax = Math.max(domainMax, ...stacked[j][i]);\n });\n });\n });\n if (domainMax === 0) domainMax = 1;\n const yScale = scaleLinear()\n .domain([0, domainMax])\n .range([this.HEIGHT - padding * 2, padding]);\n\n const rects: {\n dateValue: number;\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n seriesPoint: SeriesPoint;\n }[] = [];\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }, index) => {\n // For each date,\n [...indexedTable.entries()].forEach(([date, pointMap], i) => {\n // For each series,\n [...pointMap.entries()].forEach(([_, seriesPoint], j) => {\n // Get the size of the box we are about to draw.\n const [baseline, topline] = stacked[j][i];\n\n const width = columnWidth;\n const height = yScale(baseline) - yScale(topline);\n const x =\n (xOuterScale(fullFormatter(date)) ?? 0) +\n outerPadding +\n columnWidth * index +\n this.COLUMN_PADDING * index;\n const y = yScale(baseline) - height;\n const fill = `var(${seriesPoint.series.colorToken})`;\n\n rects.push({\n dateValue: date.valueOf(),\n x,\n y,\n width,\n height,\n fill,\n striped: seriesPoint.series.style === 'striped',\n seriesPoint,\n });\n });\n });\n });\n\n const xMinorTicks = xSteps.map(date => ({\n dateValue: date.valueOf(),\n label: minorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) + xOuterScale.bandwidth() / 2,\n }));\n const xMajorTicks =\n interval !== 'year'\n ? xSteps\n .map(date => ({\n dateValue: date.valueOf(),\n label: majorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n xOuterScale.bandwidth() / 2,\n }))\n .filter(\n (tick, i, ticks) =>\n i === 0 || tick.label !== ticks[i - 1].label,\n )\n : [];\n\n const yTicks = yScale.ticks(5);\n\n const hoverBandWidth =\n renderInformation.length * columnWidth +\n (renderInformation.length + 1) * this.COLUMN_PADDING;\n const hoverBands = xSteps.map(date => ({\n dateValue: date.valueOf(),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n (xOuterScale.bandwidth() - hoverBandWidth) / 2,\n y: yScale(domainMax),\n width: hoverBandWidth,\n height: yScale(0) - yScale(domainMax),\n }));\n\n return {\n columnWidth,\n hoverBands,\n rects,\n viewBox,\n xMinorTicks,\n xMajorTicks,\n yScale,\n yTicks,\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly empty$ = this.input$.pipe(\n map(input =>\n input.every(stack =>\n stack.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredBand$ = new BehaviorSubject<{\n dateValue: number;\n event: MouseEvent;\n } | null>(null);\n\n readonly callout$ = combineLatest([this.hoveredBand$, this.binnedData$]).pipe(\n map(([hoveredBand, binnedData]) => {\n if (!hoveredBand) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n return {\n anchor,\n content: binnedData.map(stack => {\n const seriesPoints = stack.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n style: series.style,\n value:\n series.data.find(\n ({ date }) => date.valueOf() === hoveredBand.dateValue,\n )?.value ?? 0,\n }));\n return {\n title: stack.title,\n total: this.valueFormatter(\n seriesPoints.reduce((acc, point) => point.value + acc, 0),\n ),\n series: seriesPoints.map(point => ({\n ...point,\n formattedValue: this.valueFormatter(point.value),\n })),\n };\n }),\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedColumnComponent {\n export type Value = { date: Date; value: number };\n\n export type Series = {\n label: string;\n data: Value[];\n colorToken: string;\n style: 'solid' | 'striped';\n };\n\n export type Stack = {\n title?: string;\n series: Series[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"d.columnWidth\"\n [attr.height]=\"d.columnWidth\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n x1=\"0\"\n [attr.y1]=\"d.columnWidth\"\n [attr.x2]=\"d.columnWidth\"\n y2=\"0\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let tick of d.xMinorTicks\">\n <rect\n class=\"tick-background\"\n [class.focused]=\"(hoveredBand$ | async)?.dateValue === tick.dateValue\"\n [attr.x]=\"tick.x - 20\"\n [attr.y]=\"d.yScale(0) + 3\"\n width=\"40\"\n height=\"12\"\n rx=\"2\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 12\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.xMajorTicks\">\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 24\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"tick-label\" x=\"0\" [attr.y]=\"d.yScale(tick)\" dy=\"-4\">\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g *ngFor=\"let rect of d.rects\">\n <rect\n class=\"column\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.dateValue !== rect.dateValue\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <rect\n *ngFor=\"let rect of d.hoverBands\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"transparent\"\n (mouseenter)=\"\n hoveredBand$.next({ dateValue: rect.dateValue, event: $event })\n \"\n (mouseleave)=\"hoveredBand$.next(null)\"\n ></rect>\n </svg>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [theme]=\"'light'\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div class=\"callout-stack\" *ngFor=\"let stack of callout.content\">\n <div *ngIf=\"stack.title; let title\" class=\"callout-row\">\n <span class=\"series-label\">{{ title }}</span>\n <span>{{ stack.total }}</span>\n </div>\n <div *ngFor=\"let series of stack.series\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item\n [colorToken]=\"series.colorToken\"\n [style]=\"series.style\"\n ></riv-legend-item>\n <span>{{ series.label }}</span>\n </span>\n <span>{{ series.formattedValue }}</span>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-select>\n</ng-template>\n","import { InternSet, union } from 'd3-array';\nimport { ScaleLinear } from 'd3-scale';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport { StackedRowComponent } from './stacked-row.component';\n\n// A row element with a baseline, topline, and a reference to the stack it belongs to\ntype StackedRowElement = StackedRowComponent.RowElement & {\n baseline: number;\n topline: number;\n};\n\n// The data about a rectangle we display on screen\nexport type RowRectangle = {\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n rowName: string;\n stackedRowElement: StackedRowElement;\n};\n\n// The data about a row label we display on screen\nexport type RowLabel = {\n x: number;\n y: number;\n label: string;\n};\n\n// The data we are displaying in this component\nexport type StackedRowDrawData = {\n legendItems: {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n }[];\n rowHeight: number;\n rects: RowRectangle[];\n rowNames: RowLabel[];\n rowTotals: RowLabel[];\n viewBox: string;\n xScale: ScaleLinear<number, number, never>;\n xTicks: number[];\n};\n\n// Everything that describes a row we will display\nexport type RowDisplayInfo = {\n rowName: string;\n elementsButStacked: StackedRowElement[];\n rowTotal: number;\n};\n\n// Get a ordered+unique list of keys from the row elements\nexport function getKeyOrder(\n rowStacks: StackedRowComponent.RowStack[],\n): InternSet<string> {\n const allRowElements: StackedRowComponent.RowElement[] = [];\n for (const rowStack of rowStacks) {\n allRowElements.push(...rowStack.data);\n }\n const orderedKeys: InternSet<string> = union([\n ...allRowElements.map(rowElement => rowElement.label),\n ]);\n return orderedKeys;\n}\n\n// Get a list of the legend items we should show\nexport function getLegendItems(\n rowsForDisplay: RowDisplayInfo[],\n keysInOrder: InternSet<string>,\n): {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n}[] {\n const legendItemArray: ReturnType<typeof getLegendItems> = [];\n for (const rowForDisplay of rowsForDisplay) {\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowElement | undefined =\n rowForDisplay.elementsButStacked.find(element => element.label == key);\n if (\n elementMatchingKey &&\n elementMatchingKey.value > 0 &&\n !legendItemArray.find(item => item.label == key)\n ) {\n legendItemArray.push({\n label: elementMatchingKey.label,\n colorToken: elementMatchingKey.colorToken,\n style: elementMatchingKey.style,\n });\n }\n }\n }\n return legendItemArray;\n}\n\n// Make sure we have input in a standard format.\nexport function standardizeRowStacks(\n rowStacks: StackedRowComponent.RowStack[],\n keysInOrder: InternSet<string>,\n): StackedRowComponent.RowStack[] {\n const standardizedRows: StackedRowComponent.RowStack[] = [];\n for (const rowStack of rowStacks) {\n const standardizedData: StackedRowComponent.RowElement[] = [];\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowComponent.RowElement | undefined =\n rowStack.data.find(element => element.label == key);\n if (elementMatchingKey) {\n standardizedData.push({\n ...elementMatchingKey,\n value: Math.abs(elementMatchingKey.value),\n });\n }\n }\n standardizedRows.push({\n rowName: rowStack.rowName,\n data: standardizedData,\n });\n }\n return standardizedRows;\n}\n\n// Stacks the elements and creates the baselines and toplines\nexport function getRowDisplayInfo(\n rowStack: StackedRowComponent.RowStack,\n): RowDisplayInfo {\n const elementsButStacked: StackedRowElement[] = [];\n let currentBaseline: number = 0;\n let currentTopline: number = 0;\n for (const currentElement of rowStack.data) {\n currentTopline += currentElement.value ?? 0;\n\n elementsButStacked.push({\n ...currentElement,\n baseline: currentBaseline,\n topline: currentTopline,\n });\n\n currentBaseline = currentTopline;\n }\n\n return {\n rowName: rowStack.rowName,\n elementsButStacked: elementsButStacked,\n rowTotal: currentTopline,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { InternSet } from 'd3-array';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport {\n RowDisplayInfo,\n RowLabel,\n RowRectangle,\n StackedRowDrawData,\n getKeyOrder,\n getLegendItems,\n getRowDisplayInfo,\n standardizeRowStacks,\n} from './stacked-row.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-stacked-row',\n templateUrl: './stacked-row.component.html',\n styleUrls: ['./stacked-row.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedRowComponent {\n // This is the list of rows we will display, in the order we will display them.\n private readonly input$ = new BehaviorSubject<StackedRowComponent.RowStack[]>(\n [],\n );\n @Input()\n public set input(v: StackedRowComponent.RowStack[]) {\n this.input$.next(v);\n }\n public get input(): StackedRowComponent.RowStack[] {\n return this.input$.getValue();\n }\n\n // Width helps determine the size of the viewbox this graph is displaying in.\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n // ValueFormatter determines how we style the values in a metric and the x-axis\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<any>;\n\n private readonly chartAndRowHeights$ = this.input$.pipe(\n map(input => {\n const heightWithoutRows =\n input.length * this.SECTION_PADDING.BETWEEN_ROW +\n this.SECTION_PADDING.OUTER_TOP_BOTTOM * 2 +\n this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n // The combined height of all rows at their min/max\n const minHeight =\n input.length * this.RECTANGLE_HEIGHTS.MIN_HEIGHT + heightWithoutRows;\n const maxHeight =\n input.length * this.RECTANGLE_HEIGHTS.MAX_HEIGHT + heightWithoutRows;\n\n // If the max-sized rows don't need the target size, shrink the chart\n if (maxHeight < this.TARGET_HEIGHT)\n return {\n chartHeight: maxHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n };\n // If the min-sized rows need more than the target size, grow the chart\n if (minHeight > this.TARGET_HEIGHT)\n return {\n chartHeight: minHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MIN_HEIGHT,\n };\n // Otherwise shrink the rows to fit the target size\n return {\n chartHeight: this.TARGET_HEIGHT,\n rowHeight: (this.TARGET_HEIGHT - heightWithoutRows) / input.length,\n };\n }),\n );\n\n /*\n The layout we are shooting for is:\n\n | X Axis Labels |\n Row Name | Rectangles | Totals\n */\n readonly TARGET_HEIGHT = 300;\n\n readonly RECTANGLE_HEIGHTS = {\n MIN_HEIGHT: 12, // Sets the smallest size a row can shrink to\n MAX_HEIGHT: 42, // Sets the largest size a row can expand to\n };\n\n readonly LABEL_HEIGHT = 8;\n\n readonly SECTION_HEIGHTS = {\n // Space reserved for the x-axis labels\n X_AXIS_LABEL: 14,\n };\n\n readonly SECTION_WIDTHS = {\n // Space reserved for the name at the start of the row\n ROW_NAME: 100,\n // Space reserved for the totals at the end of the row\n ROW_TOTAL_LABEL: 72,\n };\n\n readonly SECTION_PADDING = {\n // Padding between each edge of the viewbox and the content\n OUTER_TOP_BOTTOM: 4,\n OUTER_LEFT_RIGHT: 4,\n // Padding between the bottom of one row and the top of the next row\n BETWEEN_ROW: 4,\n // Space between the row and the top of a rectangle in that row\n RECTANGLE_TO_ROW: 6,\n };\n\n // The number of X-axis segments to create, with labels at the start of each segment.\n readonly X_TICK_COUNT_MAX = 8;\n readonly X_TICK_COUNT_MIN = 3;\n readonly X_TICK_MAX_WIDTH = 900;\n readonly X_TICK_MIN_WIDTH = 400;\n\n // Zero on the X axis is after the left padding and the row name.\n locationOfXAxisZero() {\n return this.SECTION_PADDING.OUTER_LEFT_RIGHT + this.SECTION_WIDTHS.ROW_NAME;\n }\n // The end of the X axis is right before the row total and the right padding.\n locationOfXAxisEnd(width: number) {\n const spaceOnRight: number =\n this.SECTION_WIDTHS.ROW_TOTAL_LABEL +\n this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n return width - spaceOnRight;\n }\n // The y-index of the x-axis ticks\n locationOfXAxisTick() {\n return (\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL\n );\n }\n // The y-index of the top of the current row\n getTopOfRow(rowIndex: number, rowHeight: number) {\n const spaceAboveRows: number =\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n const aboveRows: number = rowIndex * rowHeight;\n const aboveRowPaddings: number =\n rowIndex * this.SECTION_PADDING.BETWEEN_ROW;\n const allAboveRows: number = aboveRows + aboveRowPaddings;\n\n return spaceAboveRows + allAboveRows;\n }\n\n // Calculate all the values we need for displaying the graph on screen.\n getDrawnData(\n rowStacks: StackedRowComponent.RowStack[],\n width: number,\n chartHeight: number,\n rowHeight: number,\n ) {\n if (rowStacks.length == 0) {\n return null;\n }\n const viewBox = `0 0 ${width} ${chartHeight}`;\n\n const keysInOrder: InternSet<string> = getKeyOrder(rowStacks);\n const standardizedRows: StackedRowComponent.RowStack[] =\n standardizeRowStacks(rowStacks, keysInOrder);\n const rowsForDisplay: RowDisplayInfo[] = standardizedRows.map(stackData => {\n return getRowDisplayInfo(stackData);\n });\n\n // The maximum value of the domain should be the highest total value from the rows.\n const domainMax = Math.max(0, ...rowsForDisplay.map(row => row.rowTotal));\n const xScale: ScaleLinear<number, number, never> = scaleLinear()\n .domain([0, domainMax])\n .range([this.locationOfXAxisZero(), this.locationOfXAxisEnd(width)]);\n\n // Setup a linear scale for tick count based on width\n const tickScale = scaleLinear()\n .domain([this.X_TICK_MIN_WIDTH, this.X_TICK_MAX_WIDTH])\n .range([this.X_TICK_COUNT_MIN, this.X_TICK_COUNT_MAX])\n .clamp(true); // Ensures the scale does not go beyond the defined range\n\n const xtickCountAdjusted = Math.round(tickScale(width));\n const xTicks = xScale.ticks(xtickCountAdjusted);\n\n const rects: RowRectangle[] = this.createRectanglesFromRows(\n rowsForDisplay,\n xScale,\n rowHeight,\n );\n\n const rowNamesToDraw: RowLabel[] = this.getRowNamesToDraw(\n rowsForDisplay,\n rowHeight,\n );\n const rowTotalsToDraw: RowLabel[] = this.getRowTotalsToDraw(\n rowsForDisplay,\n width,\n rowHeight,\n );\n\n const legendItems = getLegendItems(rowsForDisplay, keysInOrder);\n\n return {\n legendItems: legendItems,\n rowHeight: rowHeight,\n rects: rects,\n rowNames: rowNamesToDraw,\n rowTotals: rowTotalsToDraw,\n viewBox: viewBox,\n xScale: xScale,\n xTicks: xTicks,\n };\n }\n\n // Get data for all the rectangles for all the rows\n createRectanglesFromRows(\n displayRows: RowDisplayInfo[],\n xScale: ScaleLinear<number, number, never>,\n rowHeight: number,\n ): RowRectangle[] {\n const rectangles: RowRectangle[] = [];\n displayRows.forEach((currentRow, rowIndex) => {\n currentRow.elementsButStacked.forEach((currentElement, _) => {\n const topOfRow: number = this.getTopOfRow(rowIndex, rowHeight);\n\n const rectangleWidth: number =\n xScale(currentElement.topline) - xScale(currentElement.baseline);\n const rectangleHeight: number = rowHeight;\n\n const rectangleX: number = xScale(currentElement.baseline);\n const rectangleY: number =\n topOfRow + this.SECTION_PADDING.RECTANGLE_TO_ROW;\n\n const fill = `var(${currentElement.colorToken})`;\n\n rectangles.push({\n x: rectangleX,\n y: rectangleY,\n width: Math.max(rectangleWidth, 0),\n height: rectangleHeight,\n fill: fill,\n striped: currentElement.style === 'striped',\n rowName: currentRow.rowName,\n stackedRowElement: currentElement,\n });\n });\n });\n return rectangles;\n }\n\n // Get data on the row names we are drawing\n getRowNamesToDraw(\n displayRows: RowDisplayInfo[],\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row name looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: row.rowName,\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n // Get data on the row totals we are drawing\n getRowTotalsToDraw(\n displayRows: RowDisplayInfo[],\n width: number,\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = width - this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row totals looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: this.valueFormatter(row.rowTotal),\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n readonly drawData$: Observable<StackedRowDrawData | null> = combineLatest([\n this.input$,\n this.width$,\n this.chartAndRowHeights$,\n ]).pipe(\n map(([input, width, height]) => {\n return this.getDrawnData(\n input,\n width,\n height.chartHeight,\n height.rowHeight,\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // Lets us know whether to display the zero data state\n readonly empty$ = this.input$.pipe(\n map(input => input.every(stack => stack.data.length === 0)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // What rectangle we are currently hovering over\n readonly hoveredRectangle$ = new BehaviorSubject<{\n rectangle: RowRectangle;\n event: MouseEvent;\n } | null>(null);\n\n // What band we are currently hovering over\n readonly hoveredBand$ = new BehaviorSubject<{\n rowName: string;\n event: MouseEvent;\n } | null>(null);\n\n // Create the metric to display based on the currently hovered rectangle\n readonly callout$ = combineLatest([this.hoveredBand$, this.drawData$]).pipe(\n map(([hoveredBand, drawData]) => {\n if (!hoveredBand || !drawData) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.rowName === hoveredBand.rowName)\n .map(rect => ({\n rect,\n label: rect.stackedRowElement.label,\n value: this.valueFormatter(rect.stackedRowElement.value),\n colorToken: rect.stackedRowElement.colorToken,\n }));\n\n return { anchor, metrics };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedRowComponent {\n // A specifically colored section of one row.\n export type RowElement = {\n label: string; // Legend element name\n value: number;\n colorToken: string;\n style?: 'solid' | 'striped';\n };\n // The input that determines one row.\n export type RowStack = {\n rowName: string;\n data: RowElement[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n rivSVGTextTruncate\n [text]=\"rowNameToDraw.label\"\n [width]=\"SECTION_WIDTHS.ROW_NAME\"\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n ></text>\n </g>\n <g *ngFor=\"let tick of draw.xTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"draw.xScale(tick)\"\n y=\"0\"\n width=\"1\"\n height=\"100%\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"draw.xScale(tick)\"\n [attr.y]=\"locationOfXAxisTick()\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g\n *ngFor=\"let rect of draw.rects\"\n (mouseenter)=\"hoveredBand$.next({ rowName: rect.rowName, event: $event })\"\n (mouseleave)=\"hoveredBand$.next(null)\"\n >\n <rect\n class=\"row\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.rowName !== rect.rowName\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <g *ngFor=\"let rowTotalToDraw of draw.rowTotals\">\n <text\n class=\"row-total\"\n [attr.x]=\"rowTotalToDraw.x\"\n [attr.y]=\"rowTotalToDraw.y\"\n text-anchor=\"end\"\n >\n {{ rowTotalToDraw.label }}\n </text>\n </g>\n </svg>\n <legend *ngIf=\"drawData$ | async; let draw\">\n <riv-legend-item\n *ngFor=\"let item of draw.legendItems\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [style]=\"item.style ? item.style : 'solid'\"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'bottom-center'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div *ngFor=\"let metric of callout.metrics\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n","import { ScaleLinear } from 'd3-scale';\nimport { TimeSeriesComponent } from './time-series.component';\n\ntype XTick = { value: number; label: string };\n\nexport type Marker = TimeSeriesComponent.DataPoint & { x: number; y: number };\n\ntype YDrawData = TimeSeriesComponent.YConfig & {\n series: (TimeSeriesComponent.Series & {\n path: string | null;\n stroke: string;\n markers: Marker[];\n })[];\n yMax: number;\n yMin: number;\n yScale: ScaleLinear<number, number, never>;\n yTicks: number[];\n};\n\nexport type DrawData = {\n viewBox: string;\n x: {\n xScale: ScaleLinear<number, number, never>;\n xMinorTicks: XTick[];\n xMajorTicks: XTick[];\n xMax: Date;\n };\n y1: YDrawData;\n y2?: YDrawData;\n};\n\nexport function getDateRange(\n configs: TimeSeriesComponent.YConfig[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const config of configs) {\n for (const series of config.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { utcDay } from 'd3-time';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { DrawData, Marker, getDateRange } from './time-series.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'day';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS. See commit e238c2d.\n@Component({\n selector: 'riv-time-series',\n templateUrl: './time-series.component.html',\n styleUrls: ['./time-series.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimeSeriesComponent {\n private readonly input$ =\n new BehaviorSubject<TimeSeriesComponent.TimeSeriesInput>([\n {\n pointReducer: points =>\n points.reduce((total, { value }) => total + value, 0),\n valueFormatter: v => new NumberPipe().transform(v) ?? '',\n series: [],\n },\n ]);\n @Input()\n public set input(v: TimeSeriesComponent.TimeSeriesInput) {\n this.input$.next(v);\n }\n public get input(): TimeSeriesComponent.TimeSeriesInput {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n protected get width() {\n return this.width$.getValue();\n }\n\n readonly HEIGHT = 300;\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n readonly BOTTOM_OFFSET = 24;\n readonly LEFT_RIGHT_OFFSET = 48;\n readonly TOP_PADDING = 16;\n readonly LEFT_RIGHT_PADDING = 8;\n readonly BOTTOM_PADDING = 8;\n readonly Y_TICK_COUNT = 5;\n readonly POINT_RADIUS = 3.5;\n\n readonly dateRange$ = this.input$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\n\n private readonly allowLegendToggle$ = new BehaviorSubject<boolean>(false);\n @Input()\n public set allowLegendToggle(v: boolean) {\n this.allowLegendToggle$.next(v);\n }\n public get allowLegendToggle(): boolean {\n return this.allowLegendToggle$.getValue();\n }\n\n private readonly maxPoints$ = combineLatest([this.width$, this.input$]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const pointWithPadding = (this.POINT_RADIUS + 4) * 2;\n return Math.floor(innerWidth / pointWithPadding);\n }),\n );\n private readonly xMinorTickLimit$ = combineLatest([\n this.width$,\n this.input$,\n ]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const minSizePerTick = 40;\n return Math.round(innerWidth / minSizePerTick);\n }),\n );\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxPoints$,\n ]).pipe(\n map(([input, maxPoints]) => {\n const [minDateValue, maxDateValue] = getDateRange(input);\n\n return intervals.filter(interval => {\n const timeInterval = getTimeInterval(interval);\n const numSteps = timeInterval.range(\n timeInterval.floor(minDateValue),\n timeInterval.ceil(utcDay.offset(maxDateValue, 1)),\n ).length;\n\n return numSteps <= maxPoints && numSteps > 1;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): SingleSelectComponent.Option => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n readonly toggleVisibility$ =\n new BehaviorSubject<TimeSeriesComponent.ToggleVisibility | null>(null);\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.toggleVisibility$,\n ]).pipe(\n map(([input, interval, toggleVisibility]) =>\n input.map((config): TimeSeriesComponent.YConfig => {\n return {\n ...config,\n series: config.series.map((series, i) => {\n const binned = new Map<number, TimeSeriesComponent.DataPoint[]>();\n for (const point of series.data) {\n const bin = getTimeInterval(interval).floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(bin)!.push(point);\n }\n if (\n this.allowLegendToggle &&\n toggleVisibility &&\n series.label === toggleVisibility.label\n ) {\n series.visibility = toggleVisibility.visibility;\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: config.pointReducer(points, i),\n })),\n };\n }),\n };\n }),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedDateRange$ = this.binnedData$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly drawData$: Observable<DrawData> = combineLatest([\n this.binnedData$,\n this.binnedDateRange$,\n this.selectedInterval$,\n this.width$,\n this.xMinorTickLimit$,\n ]).pipe(\n map(([binnedData, binnedDateRange, interval, width, xMinorTickLimit]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n\n const xScaleRangeStart = this.LEFT_RIGHT_PADDING + this.LEFT_RIGHT_OFFSET;\n const xScaleRangeEnd =\n width -\n this.LEFT_RIGHT_PADDING * 2 -\n (binnedData.length > 1 ? this.LEFT_RIGHT_OFFSET : 0);\n const xScale = scaleLinear()\n .domain(binnedDateRange)\n .range([xScaleRangeStart, xScaleRangeEnd]);\n const [minDateValue, maxDateValue] = binnedDateRange;\n const hasMultipleYears =\n minDateValue.getFullYear() < maxDateValue.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const xMinorTicks = getTimeInterval(interval)\n .range(minDateValue, utcDay.offset(maxDateValue, 1))\n .map(date => ({\n value: utcDay.offset(date, 0).valueOf(),\n label: minorFormatter(date),\n }))\n .filter((_, i, arr) =>\n arr.length > xMinorTickLimit\n ? i % Math.ceil(arr.length / xMinorTickLimit) === 0\n : true,\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const timeInterval = getTimeInterval(xMajorInterval);\n const tickFloor = timeInterval.floor(minDateValue);\n const tickCeiling = timeInterval.ceil(utcDay.offset(maxDateValue, 1));\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const xMajorTicks = timeInterval\n .range(tickFloor, tickCeiling)\n .map(tickDate => ({\n label: xMajorInterval === interval ? '' : majorFormatter(tickDate),\n value: tickDate.valueOf(),\n }));\n const x = { xMax: maxDateValue, xScale, xMinorTicks, xMajorTicks };\n\n const [y1, y2] = binnedData.map(config => {\n const visibleSeries = config.series.filter(\n s => s.visibility !== 'hidden',\n );\n const flattenedValues = visibleSeries.reduce<number[]>(\n (values, series) => [\n ...values,\n ...series.data.map(({ value }) => value),\n ],\n [],\n );\n let yMax = config.max ?? Math.max(...flattenedValues, 0);\n const yMin = config.min ?? Math.min(...flattenedValues, 0);\n // RIVET-14605 - if range is [0,0], make it [0,1] instead\n if (yMax == 0 && yMin == 0) {\n yMax = 1;\n }\n const yScale = scaleLinear()\n .domain([yMin, yMax])\n .range([\n this.HEIGHT -\n this.BOTTOM_OFFSET -\n (this.BOTTOM_PADDING + this.TOP_PADDING),\n this.TOP_PADDING,\n ]);\n const yTicks = yScale.ticks(this.Y_TICK_COUNT);\n const series = config.series.map(series => ({\n ...series,\n path: line<TimeSeriesComponent.DataPoint>()\n .x(d => xScale(d.date))\n .y(d => yScale(d.value))(series.data),\n stroke: `var(${series.colorToken})`,\n markers: series.data.map(point => ({\n ...point,\n x: xScale(point.date),\n y: yScale(point.value),\n })),\n }));\n return {\n ...config,\n series,\n yMax,\n yMin,\n yScale,\n yTicks,\n };\n });\n\n // If we have a y2, coerce y1's ticks to be visually equivalent to y2's ticks.\n if (y2?.yTicks) {\n const tickConversionScale = scaleLinear()\n .range(y1.yScale.domain())\n .domain(y2.yScale.domain());\n y1.yTicks = y2.yTicks.map(tickConversionScale);\n }\n\n return { viewBox, x, y1, y2 };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly legend$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.reduce<\n {\n label: string;\n colorToken: string;\n visibility: 'visible' | 'hidden';\n }[]\n >(\n (items, config) => [\n ...items,\n ...config.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n visibility: series.visibility ?? 'visible',\n })),\n ],\n [],\n ),\n ),\n );\n\n readonly empty$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.every(config =>\n config.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredMarker$ = new BehaviorSubject<{\n event: MouseEvent;\n marker: Marker;\n } | null>(null);\n\n readonly callout$ = combineLatest([this.hoveredMarker$, this.drawData$]).pipe(\n map(([hoveredMarker, drawData]) => {\n if (!hoveredMarker) return null;\n\n const { target } = hoveredMarker.event;\n if (!target) return null;\n const markerRect = (<SVGCircleElement>target).getBoundingClientRect();\n const padding = 8;\n const anchor = new DOMRect(\n markerRect.left - padding,\n markerRect.top - padding,\n markerRect.width + padding * 2,\n markerRect.height + padding * 2,\n );\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = [];\n\n for (const series of drawData.y1.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y1.valueFormatter(match.value),\n });\n }\n }\n }\n\n if (drawData.y2) {\n for (const series of drawData.y2.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y2.valueFormatter(match.value),\n });\n }\n }\n }\n }\n\n return { anchor, metrics };\n }),\n );\n}\n\nexport namespace TimeSeriesComponent {\n export type Series = {\n label: string;\n colorToken: string;\n data: TimeSeriesComponent.DataPoint[];\n style?: 'solid' | 'dashed';\n visibility?: 'visible' | 'hidden';\n };\n\n export type DataPoint = {\n value: number;\n date: Date;\n };\n\n export type YConfig = {\n pointReducer: (points: DataPoint[], seriesIndex: number) => number;\n valueFormatter: (reducedValue: number) => string;\n series: Series[];\n min?: number;\n max?: number;\n };\n\n export type TimeSeriesInput = [YConfig] | [YConfig, YConfig];\n\n export type ToggleVisibility = {\n label: string;\n visibility: 'hidden' | 'visible';\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <g *ngFor=\"let tick of d.x.xMajorTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n y=\"0\"\n width=\"1\"\n [attr.height]=\"d.y1.yScale(d.y1.yMin) + BOTTOM_OFFSET\"\n ></rect>\n <text\n *ngIf=\"d.x.xScale(tick.value) >= 0\"\n class=\"x-major-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.x.xMinorTicks\">\n <text\n class=\"x-minor-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n text-anchor=\"middle\"\n dominant-baseline=\"hanging\"\n dy=\"8\"\n >\n {{ tick.label }}\n <title>{{ tick.value | date }}</title>\n </text>\n </g>\n <g *ngFor=\"let tick of d.y1.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.y1.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"y-tick-label\" x=\"0\" [attr.y]=\"d.y1.yScale(tick)\" dy=\"-4\">\n {{ d.y1.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngFor=\"let tick of d.y2?.yTicks\">\n <text\n class=\"y-tick-label\"\n [attr.x]=\"width\"\n [attr.y]=\"d.y2?.yScale(tick)\"\n text-anchor=\"end\"\n dy=\"-4\"\n >\n {{ d.y2?.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngIf=\"hoveredMarker$ | async; let hoveredMarker\">\n <line\n class=\"hover-rule\"\n [attr.x1]=\"hoveredMarker.marker.x\"\n [attr.y1]=\"d.y1.yScale(d.y1.yMin)\"\n [attr.x2]=\"hoveredMarker.marker.x\"\n [attr.y2]=\"d.y1.yScale(d.y1.yMax)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n\n <ng-template #seriesTpl let-series=\"series\">\n <path\n *ngIf=\"series.visibility != 'hidden'\"\n class=\"data path\"\n [class.marker-hovered]=\"!!(hoveredMarker$ | async)\"\n [attr.d]=\"series.path\"\n fill=\"none\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n [attr.stroke-dasharray]=\"series.style === 'dashed' ? '4' : null\"\n ></path>\n <ng-container *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility != 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"(hoveredMarker$ | async)?.marker?.x === marker.x\"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n (hoveredMarker$ | async)?.marker?.x !== marker.x\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"POINT_RADIUS\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"hoveredMarker$.next({ event: $event, marker: marker })\"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n ></circle>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\n ></ng-container>\n </g>\n </svg>\n <legend>\n <riv-legend-item\n *ngFor=\"let item of legend$ | async\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [visibility]=\"item.visibility\"\n [clickable]=\"allowLegendToggle\"\n (itemClick)=\"\n allowLegendToggle\n ? toggleVisibility$.next({\n label: item.label,\n visibility: item.visibility == 'hidden' ? 'visible' : 'hidden'\n })\n : null\n \"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\" *ngFor=\"let metric of callout.metrics\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-select>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TextToggleComponent } from './content-toggle/text-toggle/text-toggle.component';\nimport { DatePipe } from './format/pipes/date.pipe';\nimport { DaysPipe } from './format/pipes/days.pipe';\nimport { DollarsPipe } from './format/pipes/dollars.pipe';\nimport { NumberPipe } from './format/pipes/number.pipe';\nimport { OptionGroupPipe } from './format/pipes/option-group.pipe';\nimport { PercentagePipe } from './format/pipes/percentage.pipe';\nimport { SmallCurrencyPipe } from './format/pipes/small-currency.pipe';\nimport { SVGTextTruncateDirective } from './format/svg-text-truncate/svg-text-truncate.directive';\nimport { TruncateComponent } from './format/truncate/truncate.component';\nimport { IconComponent } from './icon/icon.component';\nimport { ButtonComponent } from './input/button/button.component';\nimport { CalendarComponent } from './input/calendar/calendar.component';\nimport { CardCheckboxComponent } from './input/card-checkbox/card-checkbox.component';\nimport { CheckboxComponent } from './input/checkbox/checkbox.component';\nimport { DateRangeComponent } from './input/date-range/date-range.component';\nimport { DateComponent } from './input/date/date.component';\nimport { InputLabelComponent } from './input/input-label/input-label.component';\nimport { SingleSelectComponent } from './input/single-select/single-select.component';\nimport { SwitchCheckboxComponent } from './input/switch-checkbox/switch-checkbox.component';\nimport { FocusOnInitDirective } from './interaction/focus-on-init.directive';\nimport { LoadingCoverComponent } from './load/loading-cover/loading-cover.component';\nimport { LoadingComponent } from './load/loading/loading.component';\nimport { CalloutOutletComponent } from './modal/callout/callout-outlet.component';\nimport { CalloutComponent } from './modal/callout/callout.component';\nimport { CalloutDirective } from './modal/callout/callout.directive';\nimport { LockScrollDirective } from './modal/callout/lock-scroll.directive';\nimport { HelpComponent } from './modal/help/help.component';\nimport { TooltipComponent } from './modal/tooltip/tooltip.component';\nimport { TooltipDirective } from './modal/tooltip/tooltip.directive';\nimport { LinkComponent } from './navigation/link/link.component';\nimport { BadgeComponent } from './notification/badge/badge.component';\nimport { SizeDirective } from './size/size.directive';\nimport { DataTableCellComponent } from './visualization/data-table/data-table-cell.component';\nimport { DataTableHeaderCellComponent } from './visualization/data-table/data-table-header-cell.component';\nimport { DataTableRowComponent } from './visualization/data-table/data-table-row.component';\nimport { DataTableComponent } from './visualization/data-table/data-table.component';\nimport { DonutComponent } from './visualization/donut/donut.component';\nimport { FunnelChartComponent } from './visualization/funnel-chart/funnel-chart.component';\nimport { HighlightComponent } from './visualization/highlight/highlight.component';\nimport { IssueComponent } from './visualization/issue/issue.component';\nimport { LegendItemComponent } from './visualization/legend-item/legend-item.component';\nimport { MetricComponent } from './visualization/metric/metric.component';\nimport { StackedColumnComponent } from './visualization/stacked-column/stacked-column.component';\nimport { StackedRowComponent } from './visualization/stacked-row/stacked-row.component';\nimport { TimeSeriesComponent } from './visualization/time-series/time-series.component';\nimport { TrendComponent } from './visualization/trend/trend.component';\nimport { ZeroStateComponent } from './visualization/zero-state/zero-state.component';\n\n@NgModule({\n declarations: [\n BadgeComponent,\n ButtonComponent,\n CalendarComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n CardCheckboxComponent,\n CheckboxComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FocusOnInitDirective,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockScrollDirective,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n exports: [\n BadgeComponent,\n ButtonComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n CardCheckboxComponent,\n CheckboxComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FocusOnInitDirective,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n imports: [CommonModule],\n})\nexport class RivModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IconComponent","AngularDatePipe","i2.LockScrollDirective","i2.CalloutComponent","i1.TooltipDirective","i3.LoadingComponent","i1.CheckboxComponent","i1.IconComponent","i2.TooltipDirective","i2.HelpComponent","i3.LinkComponent","i2.LoadingComponent","i3.FocusOnInitDirective","i4.HighlightComponent","i5.IconComponent","i6.InputLabelComponent","i7.LoadingCoverComponent","i2.ButtonComponent","i3.SingleSelectComponent","i4.OptionGroupPipe","i3.CalendarComponent","i4.CalloutComponent","i5.HighlightComponent","i6.IconComponent","i7.InputLabelComponent","i8.SingleSelectComponent","i9.TooltipDirective","i2.CalendarComponent","i3.CalloutComponent","i4.IconComponent","i5.InputLabelComponent","i6.DatePipe","i1.CalloutService","i2","i1.ContentService","i1.DataTableRowComponent","i3.ZeroStateComponent","i3.TooltipDirective","i2.MetricComponent","i3.TrendComponent","getDateRange","DEFAULT_INTERVAL","i3.CalloutDirective","i4.LegendItemComponent","i5.SingleSelectComponent","i6.SizeDirective","i7.ZeroStateComponent","i8.OptionGroupPipe","i5.SizeDirective","i6.SVGTextTruncateDirective"],"mappings":";;;;;;;;;;;;AAKA;;AAEG;MACU,QAAQ,CAAA;AAGnB,IAAA,WAAA,CAA6B,MAAqB,EAAA;AAArB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAFjC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;KAEQ;AAEtD,IAAA,GAAG,CAAC,GAAM,EAAA;QACR,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAA,IAAI,MAAS,CAAC;AACd,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,GAAM,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvD,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhB,OAAO;AACL,YAAA,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAK;AACZ,gBAAA,GAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpB,gBAAA,IAAI,CAAC,GAAI,CAAC,IAAI,EAAE;AACd,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,iBAAA;aACF;SACF,CAAC;KACH;AACF;;ACpCD,MAAM,QAAQ,GAAG,CAAA,yKAAA,CAA2K,CAAC;AAC7L,MAAM,WAAW,GAAG,CAAA,mPAAA,CAAqP,CAAC;AAC1Q,MAAM,YAAY,GAAG,CAAA,+SAAA,CAAiT,CAAC;AACvU,MAAM,aAAa,GAAG,CAAA,uTAAA,CAAyT,CAAC;AAChV,MAAM,SAAS,GAAG,CAAA,2RAAA,CAA6R,CAAC;AAChT,MAAM,MAAM,GAAG,CAAA,wOAAA,CAA0O,CAAC;AAC1P,MAAM,OAAO,GAAG,CAAA,wPAAA,CAA0P,CAAC;AAC3Q,MAAM,SAAS,GAAG,CAAA,wMAAA,CAA0M,CAAC;AAC7N,MAAM,aAAa,GAAG,CAAA,0MAAA,CAA4M,CAAC;AACnO,MAAM,SAAS,GAAG,CAAA,uMAAA,CAAyM,CAAC;AAC5N,MAAM,eAAe,GAAG,CAAA,sPAAA,CAAwP,CAAC;AACjR,MAAM,UAAU,GAAG,CAAA,yMAAA,CAA2M,CAAC;AAC/N,MAAM,OAAO,GAAG,CAAA,qMAAA,CAAuM,CAAC;AACxN,MAAM,YAAY,GAAG,CAAA,yMAAA,CAA2M,CAAC;AACjO,MAAM,MAAM,GAAG,CAAA,iNAAA,CAAmN,CAAC;AACnO,MAAM,KAAK,GAAG,CAAA,6PAAA,CAA+P,CAAC;AAC9Q,MAAM,SAAS,GAAG,CAAA,kPAAA,CAAoP,CAAC;AACvQ,MAAM,IAAI,GAAG,CAAA,gNAAA,CAAkN,CAAC;AAChO,MAAM,IAAI,GAAG,CAAA,wOAAA,CAA0O,CAAC;AACxP,MAAM,QAAQ,GAAG,CAAA,kOAAA,CAAoO,CAAC;AACtP,MAAM,SAAS,GAAG,CAAA,sOAAA,CAAwO,CAAC;AAC3P,MAAM,QAAQ,GAAG,CAAA,ySAAA,CAA2S,CAAC;AAC7T,MAAM,KAAK,GAAG,CAAA,qJAAA,CAAuJ,CAAC;AACtK,MAAM,WAAW,GAAG,CAAA,uNAAA,CAAyN,CAAC;AAC9O,MAAM,WAAW,GAAG,CAAA,wOAAA,CAA0O,CAAC;AAC/P,MAAM,WAAW,GAAG,CAAA,oKAAA,CAAsK,CAAC;AAC3L,MAAM,WAAW,GAAG,CAAA,qKAAA,CAAuK,CAAC;AAC5L,MAAM,YAAY,GAAG,CAAA,qKAAA,CAAuK,CAAC;AAC7L,MAAM,YAAY,GAAG,CAAA,uNAAA,CAAyN,CAAC;AAC/O,MAAM,aAAa,GAAG,CAAA,uNAAA,CAAyN,CAAC;AAChP,MAAM,SAAS,GAAG,CAAA,2JAAA,CAA6J,CAAC;AAChL,MAAM,SAAS,GAAG,CAAA,kQAAA,CAAoQ,CAAC;AACvR,MAAM,KAAK,GAAG,CAAA,+LAAA,CAAiM,CAAC;AAChN,MAAM,MAAM,GAAG,CAAA,8UAAA,CAAgV,CAAC;AAChW,MAAM,IAAI,GAAG,CAAA,8OAAA,CAAgP,CAAC;AAC9P,MAAM,YAAY,GAAG,CAAA,uMAAA,CAAyM,CAAC;AAC/N,MAAM,UAAU,GAAG,CAAA,wNAAA,CAA0N,CAAC;AAC9O,MAAM,SAAS,GAAG,CAAA,ylBAAA,CAA2lB,CAAC;AAC9mB,MAAM,UAAU,GAAG,CAAA,6NAAA,CAA+N,CAAC;AACnP,MAAM,QAAQ,GAAG,CAAA,iQAAA,CAAmQ,CAAC;AACrR,MAAM,aAAa,GAAG,CAAA,kRAAA,CAAoR,CAAC;AAC3S,MAAM,IAAI,GAAG,CAAA,4PAAA,CAA8P,CAAC;AAC5Q,MAAM,KAAK,GAAG,CAAA,kLAAA,CAAoL,CAAC;AACnM,MAAM,QAAQ,GAAG,CAAA,2MAAA,CAA6M,CAAC;AAC/N,MAAM,YAAY,GAAG,CAAA,mRAAA,CAAqR,CAAC;AAC3S,MAAM,GAAG,GAAG,CAAA,2MAAA,CAA6M,CAAC;AAC1N,MAAM,MAAM,GAAG,CAAA,2VAAA,CAA6V,CAAC;AAC7W,MAAM,IAAI,GAAG,CAAA,gOAAA,CAAkO,CAAC;AAChP,MAAM,QAAQ,GAAG,CAAA,8TAAA,CAAgU,CAAC;AAClV,MAAM,QAAQ,GAAG,CAAA,wWAAA,CAA0W,CAAC;AAC5X,MAAM,MAAM,GAAG,CAAA,iLAAA,CAAmL,CAAC;AACnM,MAAM,IAAI,GAAG,CAAA,6NAAA,CAA+N,CAAC;AAC7O,MAAM,MAAM,GAAG,CAAA,sMAAA,CAAwM,CAAC;AACxN,MAAM,IAAI,GAAG,CAAA,oRAAA,CAAsR,CAAC;AACpS,MAAM,KAAK,GAAG,CAAA,2UAAA,CAA6U,CAAC;AAC5V,MAAM,WAAW,GAAG,CAAA,+VAAA,CAAiW,CAAC;AACtX,MAAM,UAAU,GAAG,CAAA,4PAAA,CAA8P,CAAC;AAClR,MAAM,IAAI,GAAG,CAAA,2NAAA,CAA6N,CAAC;AAC3O,MAAM,KAAK,GAAG,CAAA,oSAAA,CAAsS,CAAC;AACrT,MAAM,IAAI,GAAG,CAAA,0OAAA,CAA4O,CAAC;AAC1P,MAAM,GAAG,GAAG,CAAA,+OAAA,CAAiP,CAAC;AAC9P,MAAM,MAAM,GAAG,CAAA,4PAAA,CAA8P,CAAC;AAC9Q,MAAM,KAAK,GAAG,CAAA,kPAAA,CAAoP,CAAC;AACnQ,MAAM,IAAI,GAAG,CAAA,iXAAA,CAAmX,CAAC;AACjY,MAAM,IAAI,GAAG,CAAA,gNAAA,CAAkN,CAAC;AAChO,MAAM,IAAI,GAAG,CAAA,iPAAA,CAAmP,CAAC;AACjQ,MAAM,MAAM,GAAG,CAAA,iNAAA,CAAmN,CAAC;AACnO,MAAM,QAAQ,GAAG,CAAA,0NAAA,CAA4N,CAAC;AAC9O,MAAM,SAAS,GAAG,CAAA,+RAAA,CAAiS,CAAC;AACpT,MAAM,IAAI,GAAG,CAAA,yOAAA,CAA2O,CAAC;AACzP,MAAM,aAAa,GAAG,CAAA,2TAAA,CAA6T,CAAC;AACpV,MAAM,mBAAmB,GAAG,CAAA,+UAAA,CAAiV,CAAC;AAC9W,MAAM,SAAS,GAAG,CAAA,mSAAA,CAAqS,CAAC;AACxT,MAAM,KAAK,GAAG,CAAA,oJAAA,CAAsJ,CAAC;AACrK,MAAM,WAAW,GAAG,CAAA,mMAAA,CAAqM,CAAC;AAC1N,MAAM,cAAc,GAAG,CAAA,sOAAA,CAAwO,CAAC;AAChQ,MAAM,YAAY,GAAG,CAAA,oOAAA,CAAsO,CAAC;AAC5P,MAAM,SAAS,GAAG,CAAA,+OAAA,CAAiP,CAAC;AACpQ,MAAM,OAAO,GAAG,CAAA,6OAAA,CAA+O,CAAC;AAChQ,MAAM,KAAK,GAAG,CAAA,uZAAA,CAAyZ,CAAC;AACxa,MAAM,QAAQ,GAAG,CAAA,0MAAA,CAA4M,CAAC;AAC9N,MAAM,SAAS,GAAG,CAAA,mVAAA,CAAqV,CAAC;AACxW,MAAM,WAAW,GAAG,CAAA,+TAAA,CAAiU,CAAC;AACtV,MAAM,UAAU,GAAG,CAAA,wMAAA,CAA0M,CAAC;AAC9N,MAAM,IAAI,GAAG,CAAA,+LAAA,CAAiM,CAAC;AAC/M,MAAM,UAAU,GAAG,CAAA,8OAAA,CAAgP,CAAC;AACpQ,MAAM,KAAK,GAAG,CAAA,mMAAA,CAAqM,CAAC;AACpN,MAAM,OAAO,GAAG,CAAA,sSAAA,CAAwS,CAAC;AACzT,MAAM,SAAS,GAAG,CAAA,+RAAA,CAAiS,CAAC;AACpT,MAAM,QAAQ,GAAG,CAAA,4oBAAA,CAA8oB,CAAC;AAChqB,MAAM,OAAO,GAAG,CAAA,sQAAA,CAAwQ,CAAC;AACzR,MAAM,QAAQ,GAAG,CAAA,6LAAA,CAA+L,CAAC;AACjN,MAAM,KAAK,GAAG,CAAA,wRAAA,CAA0R,CAAC;AACzS,MAAM,QAAQ,GAAG,CAAA,yXAAA,CAA2X,CAAC;AAC7Y,MAAM,QAAQ,GAAG,CAAA,gNAAA,CAAkN,CAAC;AACpO,MAAM,IAAI,GAAG,CAAA,uRAAA,CAAyR,CAAC;AACvS,MAAM,MAAM,GAAG,CAAA,mMAAA,CAAqM,CAAC;AACrN,MAAM,IAAI,GAAG,CAAA,yMAAA,CAA2M,CAAC;AACzN,MAAM,QAAQ,GAAG,CAAA,k4BAAA,CAAo4B,CAAC;AACt5B,MAAM,KAAK,GAAG,CAAA,2PAAA,CAA6P,CAAC;AAC5Q,MAAM,MAAM,GAAG,CAAA,sKAAA,CAAwK,CAAC;AACxL,MAAM,OAAO,GAAG,CAAA,kNAAA,CAAoN,CAAC;AACrO,MAAM,KAAK,GAAG,CAAA,uMAAA,CAAyM,CAAC;AACxN,MAAM,OAAO,GAAG,CAAA,oQAAA,CAAsQ,CAAC;AACvR,MAAM,KAAK,GAAG,CAAA,mRAAA,CAAqR,CAAC;AACpS,MAAM,IAAI,GAAG,CAAA,kOAAA,CAAoO,CAAC;AAClP,MAAM,GAAG,GAAG,CAAA,yhBAAA,CAA2hB,CAAC;AACxiB,MAAM,WAAW,GAAG,CAAA,6cAAA,CAA+c,CAAC;AACpe,MAAM,GAAG,GAAG,CAAA,kPAAA,CAAoP,CAAC;AACjQ,MAAM,MAAM,GAAG,CAAA,+NAAA,CAAiO,CAAC;AACjP,MAAM,IAAI,GAAG,CAAA,iRAAA,CAAmR,CAAC;AACjS,MAAM,MAAM,GAAG,CAAA,+UAAA,CAAiV,CAAC;AACjW,MAAM,YAAY,GAAG,CAAA,0NAAA,CAA4N,CAAC;AAClP,MAAM,UAAU,GAAG,CAAA,uNAAA,CAAyN,CAAC;AAC7O,MAAM,MAAM,GAAG,CAAA,iNAAA,CAAmN,CAAC;AACnO,MAAM,WAAW,GAAG,CAAA,8TAAA,CAAgU,CAAC;AACrV,MAAM,IAAI,GAAG,CAAA,wMAAA,CAA0M,CAAC;AACxN,MAAM,SAAS,GAAG,CAAA,8PAAA,CAAgQ,CAAC;AACnR,MAAM,QAAQ,GAAG,CAAA,uSAAA,CAAyS,CAAC;AAC3T,MAAM,KAAK,GAAG,CAAA,+RAAA,CAAiS,CAAC;AAChT,MAAM,CAAC,GAAG,CAAA,0LAAA,CAA4L,CAAC;AACvM,MAAM,OAAO,GAAG,CAAA,yOAAA,CAA2O,CAAC;AAC5P,MAAM,OAAO,GAAG,CAAA,+PAAA,CAAiQ,CAAC;AAClR,MAAM,GAAG,GAAG,CAAA,6KAAA,CAA+K,CAAC;AAC5L,MAAM,MAAM,GAAG,CAAA,4RAAA,CAA8R,CAAC;AAC9S,MAAM,OAAO,GAAG,CAAA,iPAAA,CAAmP,CAAC;AAE7P,MAAM,KAAK,GAAG;IACnB,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,aAAa;IACb,SAAS;IACT,MAAM;IACN,OAAO;IACP,SAAS;IACT,aAAa;IACb,SAAS;IACT,eAAe;IACf,UAAU;IACV,OAAO;IACP,YAAY;IACZ,MAAM;IACN,KAAK;IACL,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,KAAK;IACL,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,SAAS;IACT,SAAS;IACT,KAAK;IACL,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,UAAU;IACV,SAAS;IACT,UAAU;IACV,QAAQ;IACR,aAAa;IACb,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,GAAG;IACH,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,KAAK;IACL,WAAW;IACX,UAAU;IACV,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,GAAG;IACH,MAAM;IACN,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,SAAS;IACT,IAAI;IACJ,aAAa;IACb,mBAAmB;IACnB,SAAS;IACT,KAAK;IACL,WAAW;IACX,cAAc;IACd,YAAY;IACZ,SAAS;IACT,OAAO;IACP,KAAK;IACL,QAAQ;IACR,SAAS;IACT,WAAW;IACX,UAAU;IACV,IAAI;IACJ,UAAU;IACV,KAAK;IACL,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;IACP,KAAK;IACL,IAAI;IACJ,GAAG;IACH,WAAW;IACX,GAAG;IACH,MAAM;IACN,IAAI;IACJ,MAAM;IACN,YAAY;IACZ,UAAU;IACV,MAAM;IACN,WAAW;IACX,IAAI;IACJ,SAAS;IACT,QAAQ;IACR,KAAK;IACL,CAAC;IACD,OAAO;IACP,OAAO;IACP,GAAG;IACH,MAAM;IACN,OAAO;CACR,CAAC;AAEK,MAAM,QAAQ,GAA8B,EAAE,CAAC;AACtD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;IACvB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAqB,GAAG,CAAC,CAAC;AAChD;;ACxPD,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAgC,KAAK,IAAG;AAChE,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,OAAO,GAAG,CAAC,eAAe,CAAC;AAC7B,CAAC,CAAC,CAAC;MAQU,aAAa,CAAA;AAGxB,IAAA,WAAA,CAA6B,OAAgC,EAAA;AAAhC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;AAmB7D,QAAA,IAAI,CAAA,IAAA,GAAuB,EAAE,CAAC;KAnBmC;IAEjE,IACI,IAAI,CAAC,KAAgC,EAAA;QACvC,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACzB,SAAA;QAED,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtD;AAQD,IAAA,IAEI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;KACtD;AAKD,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;KACjE;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;;0GA3CU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,kSCxB1B,EAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDwBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,CAAA;iGAQ3C,IAAI,EAAA,CAAA;sBADP,KAAK;gBAiBN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAKF,QAAQ,EAAA,CAAA;sBAFX,WAAW;uBAAC,gBAAgB,CAAA;;sBAC5B,WAAW;uBAAC,iBAAiB,CAAA;gBAM9B,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIF,oBAAoB,EAAA,CAAA;sBADvB,WAAW;uBAAC,oBAAoB,CAAA;;AAUnC,CAAA,UAAiB,aAAa,EAAA;AAGf,IAAA,aAAK,CAAA,KAAA,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAEhD,CAAC,EALgB,aAAa,KAAb,aAAa,GAK7B,EAAA,CAAA,CAAA;;MEnEY,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;AAGvB,QAAA,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;AAGvB,QAAA,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;KACvB;;gHATY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,iICRhC,mSAOA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mSAAA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,CAAA;8BAI/C,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;;AEfD,MAAM,gBAAgB,GAAG,GAAG;;MCKtB,QAAQ,CAAA;AADrB,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,KAAK,GAAG,IAAIC,UAAe,CAAC,OAAO,CAAC,CAAC;KAOvD;AANC,IAAA,SAAS,CACP,KAAqC,EACrC,MAAA,GAAiB,WAAW,EAAA;;AAE5B,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,gBAAgB,CAAC;KAChE;;qGAPU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;mGAAR,QAAQ,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;mBAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;;;MCCZ,QAAQ,CAAA;AADrB,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;KAKnD;IAJC,SAAS,CAAC,KAA8B,EAAE,UAAmB,EAAA;AAC3D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAV,UAAU,GAAI,OAAO,CAAC,CAAC;QAC/D,OAAO,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,gBAAgB,CAAC;KACxE;;qGALU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;mGAAR,QAAQ,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;mBAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;;;MCCZ,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;KAW5C;IAVQ,SAAS,CAAC,KAA8B,EAAE,UAAmB,EAAA;;QAClE,QACE,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,KAAK,EACL,SAAS,EACT,SAAS,EACT,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,OAAO,CACtB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,gBAAgB,EACrB;KACH;;wGAXU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAX,WAAW,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;;;MCCf,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;KAMnD;IALC,SAAS,CAAC,KAA8B,EAAE,UAAmB,EAAA;;QAC3D,QACE,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,KAAV,IAAA,IAAA,UAAU,cAAV,UAAU,GAAI,OAAO,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,gBAAgB,EACtE;KACH;;uGANU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAV,UAAU,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,IAAI;mBAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;MCAd,eAAe,CAAA;IAG1B,SAAS,CACP,KAAW,EACX,MAAe,EAAA;QAEf,OAAO;AACL,YAAA;AACE,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,GAAI,EAAE;AACrB,aAAA;SACF,CAAC;KACH;;4GAbU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;0GAAf,eAAe,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,IAAI;mBAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MCEnB,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;KAMnD;IALC,SAAS,CAAC,KAA8B,EAAE,UAAmB,EAAA;;QAC3D,QACE,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,KAAV,IAAA,IAAA,UAAU,cAAV,UAAU,GAAI,OAAO,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,gBAAgB,EACtE;KACH;;2GANU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;;;MCClB,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;KA2DpD;IA1DQ,SAAS,CAAC,KAA8B,EAAE,UAAmB,EAAA;;AAClE,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,OAAO,gBAAgB,CAAC;AACzB,SAAA;AAED,QAAA,MAAM,GAAG,GACP,OAAO,KAAK,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAE5C,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,QACE,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,GAAG,EACH,SAAS,EACT,SAAS,EACT,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,OAAO,CACtB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,gBAAgB,EACrB;AACH,SAAA;QACD,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,QACE,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CACnB,GAAG,GAAG,UAAa,EACnB,SAAS,EACT,SAAS,EACT,CAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAV,UAAU,GAAI,GAAG,GAAG,UAAa,IAAI,GAAG,IAAG,OAAO,GAAG,OAAO,CAC7D,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAgB,IAAI,GAAG,EAC5B;AACH,SAAA;QACD,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,QACE,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CACnB,GAAG,GAAG,OAAS,EACf,SAAS,EACT,SAAS,EACT,CAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAV,UAAU,GAAI,GAAG,GAAG,OAAS,IAAI,GAAG,IAAG,OAAO,GAAG,OAAO,CACzD,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAgB,IAAI,GAAG,EAC5B;AACH,SAAA;QACD,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,QACE,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CACnB,GAAG,GAAG,IAAK,EACX,SAAS,EACT,SAAS,EACT,CAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAV,UAAU,GAAI,GAAG,GAAG,IAAK,IAAI,GAAG,IAAG,OAAO,GAAG,OAAO,CACrD,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAgB,IAAI,GAAG,EAC5B;AACH,SAAA;AACD,QAAA,QACE,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,GAAG,IAAI,GAAG,IAAG,OAAO,GAAG,OAAO,CAC7C,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAgB,EACrB;KACH;;8GA3DU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,IAAI;mBAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAA;;;SCYlB,SAAS,CACvB,MAAW,EACX,MAAkB,EAClB,YAAwB,EACxB,iBAAoD,EACpD,gBAA+D,GAAA,IAAI,EACnE,iBAA6C,EAC7C,gBAAwB,EAAA;IAExB,IAAI,QAAQ,GAAG,iBAAiB,CAAC;IACjC,MAAM,OAAO,GACX,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;UAC9C,gBAAgB,CAAC,iBAAiB;UAClC,gBAAgB,CAAC;IACvB,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,IAAA,IAAI,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC1E,IAAA,IAAI,eAAe,CAAC;AACpB,IAAA,IAAI,eAAe,CAAC;IACpB,IAAI,YAAY,GAAG,QAAQ,CAAC;IAC5B,IAAI,cAAc,GAAG,KAAK,CAAC;;;AAG3B,IAAA,KACE,IAAI,UAAU,GAAG,CAAC,EAClB,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAC/C,UAAU,EAAE;QACV,KAAK;AACH,YAAA,iBAAiB,KAAK,WAAW;kBAC7B,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM;AAC9B,kBAAE,CAAC,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EACrD;AACA,QAAA,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACtE,eAAe;AACb,YAAA,CAAC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,eAAe;AACb,YAAA,CAAC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE;AAC9C,YAAA,MAAM,WAAW,GACf,eAAe,GAAG,eAAe;AACjC,gBAAA,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC;gBACnD,eAAe,IAAI,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;YACrD,IAAI,YAAY,GAAG,WAAW,EAAE;gBAC9B,YAAY,GAAG,WAAW,CAAC;gBAC3B,iBAAiB,GAAG,KAAK,CAAC;AAC3B,aAAA;AACF,SAAA;AAAM,aAAA;YACL,cAAc,GAAG,IAAI,CAAC;AACvB,SAAA;AACF,KAAA;IACD,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACtC,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACtE,QAAA,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACxC,KAAA;IACD,OAAY,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAE,EAAA,EAAA,QAAQ,EAAG,CAAA,CAAA;AACjC,CAAC;AAEK,SAAU,gBAAgB,CAC9B,MAAW,EACX,MAAkB,EAClB,QAA2C,EAC3C,MAAc,EAAA;AAEd,IAAA,QAAQ,QAAQ;AACd,QAAA,KAAK,UAAU;YACb,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;gBACzC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;aACrC,CAAC;AACJ,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;gBACjD,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;aACrC,CAAC;AACJ,QAAA,KAAK,WAAW;YACd,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC;gBACX,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;aACrC,CAAC;AACJ,QAAA,KAAK,WAAW;YACd,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;gBACnC,CAAC,EAAE,MAAM,CAAC,CAAC;aACZ,CAAC;AACJ,QAAA,KAAK,cAAc;YACjB,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;AACnC,gBAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;aACpD,CAAC;AACJ,QAAA,KAAK,cAAc;YACjB,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;gBACnC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;aAC5C,CAAC;AACJ,QAAA,KAAK,cAAc;YACjB,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC;gBACX,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;aACrC,CAAC;AACJ,QAAA,KAAK,eAAe;YAClB,OAAO;AACL,gBAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;gBACjD,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;aACrC,CAAC;AACJ,QAAA,KAAK,aAAa;YAChB,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;gBACzC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;aACrC,CAAC;AACJ,QAAA,KAAK,aAAa;YAChB,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;gBACnC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;aAC5C,CAAC;AACJ,QAAA,KAAK,aAAa;YAChB,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;AACnC,gBAAA,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;aACpD,CAAC;AACJ,QAAA,KAAK,UAAU;YACb,OAAO;gBACL,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;gBACnC,CAAC,EAAE,MAAM,CAAC,CAAC;aACZ,CAAC;AACL,KAAA;AACH;;MC9Ia,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAcX,QAAA,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;KACnC;IAbC,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,WAAW,GAAA;AACT,QAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,UAAU,GAAA;AACR,QAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;KACrB;;qHAbU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;2FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;MAoBrB,mBAAmB,CAAA;AAC9B,IAAA,WAAA,CAA6B,OAAiC,EAAA;AAAjC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;AAG9D,QAAA,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;KAH4C;IAKlE,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC9C,YAAA,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;gBACxC,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC7C,YAAA,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;gBACxC,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,aAAA;AACF,SAAA;KACF;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;KACnE;IAEO,YAAY,GAAA;AAClB,QAAA,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,QAAQ,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;KAClE;;gHAtCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;4GAKxC,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,eAAe,CAAA;;;ACZxB;AACA;MAOa,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAA6B,GAAsB,EAAA;AAAtB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAGnD,QAAA,IAAM,CAAA,MAAA,GAA6B,IAAI,CAAC;AAGxC,QAAA,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;AAGxB,QAAA,IAAiB,CAAA,iBAAA,GAAsC,cAAc,CAAC;QAGtE,IAAA,CAAA,gBAAgB,GAAwC;YACtD,GAAG,gBAAgB,CAAC,iBAAiB;SACtC,CAAC;AAGF,QAAA,IAAiB,CAAA,iBAAA,GAA+B,mBAAmB,CAAC;AAGpE,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAG1B,QAAA,IAAK,CAAA,KAAA,GAA2B,MAAM,CAAC;AAEjB,QAAA,IAAO,CAAA,OAAA,GAAsC,IAAI,CAAC;AAEjC,QAAA,IAAK,CAAA,KAAA,GAC1C,IAAI,CAAC;AAQP,QAAA,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;AACjB,QAAA,IAAG,CAAA,GAAA,GAAW,CAAC,CAAC;AAChB,QAAA,IAAA,CAAA,gBAAgB,GAAsC,IAAI,CAAC,iBAAiB,CAAC;AA+CpE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;KArFmB;AA8BvD,IAAA,UAAU,CAAC,GAAe,EAAA;;QACxB,IAAI,GAAG,CAAC,MAAM,MAAK,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAA,EAAE;AAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACnB,SAAA;KACF;IAMD,eAAe,GAAA;AACb,QAAA,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,MAAM,CAAC,UAAU;YACxB,MAAM,EAAE,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YACtE,OAAO;QAET,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAEnE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,YAAY,OAAO;AAC5B,cAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACrC,cAAE,IAAI,CAAC,MAAM,CAAC;AAElB,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI;AACnC,YAAA,CAAC,EAAE,UAAU,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG;AACjC,YAAA,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI;AACzC,YAAA,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG;SAC3C,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;AAC7C,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY;SAChD,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,SAAS,CAC7B,YAAY,EACZ,WAAW,EACX,UAAU,EACV,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CACvB,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;;6GAnFU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,qdCrB7B,4YAkBA,EAAA,MAAA,EAAA,CAAA,2jEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDGa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4YAAA,EAAA,MAAA,EAAA,CAAA,2jEAAA,CAAA,EAAA,CAAA;wGAM/C,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAMN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAGgB,OAAO,EAAA,CAAA;sBAA5B,SAAS;uBAAC,SAAS,CAAA;gBAEmB,KAAK,EAAA,CAAA;sBAA3C,SAAS;gBAAC,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBA0D5B,KAAK,EAAA,CAAA;sBADb,MAAM;;AAIT,CAAA,UAAiB,gBAAgB,EAAA;IAClB,gBAAA,CAAA,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;IAGpC,gBAAA,CAAA,iBAAiB,GAAG;QAC/B,UAAU;QACV,YAAY;QACZ,WAAW;QACX,WAAW;QACX,cAAc;QACd,cAAc;QACd,cAAc;QACd,eAAe;QACf,aAAa;QACb,aAAa;QACb,aAAa;QACb,UAAU;KACF,CAAC;IAGE,gBAAA,CAAA,UAAU,GAAG,CAAC,WAAW,EAAE,mBAAmB,CAAU,CAAC;AAExE,CAAC,EAtBgB,gBAAgB,KAAhB,gBAAgB,GAsBhC,EAAA,CAAA,CAAA;;AEzHD,SAAS,UAAU,CACjB,CAAgC,EAAA;AAEhC,IAAA,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC/B,CAAC;MAQY,gBAAgB,CAAA;AAN7B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAM,CAAA,MAAA,GAA6B,IAAI,CAAC;AAMxC,QAAA,IAAK,CAAA,KAAA,GAA2B,MAAM,CAAC;AAGvC,QAAA,IAAQ,CAAA,QAAA,GAAW,kCAAkC,CAAC;AAGtD,QAAA,IAAiB,CAAA,iBAAA,GAAsC,YAAY,CAAC;AAGpE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAc,CAAC;AAG9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAc,CAAC;AAUrC,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;QACxB,IAAA,CAAA,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;KACrE;AAV6B,IAAA,aAAa,CAAC,GAAe,EAAA;AACvD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B;AAE2B,IAAA,aAAa,CAAC,GAAe,EAAA;AACvD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B;;6GA5BU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,uVCvB7B,ufAgBA,EAAA,MAAA,EAAA,CAAA,iEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDOa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ufAAA,EAAA,MAAA,EAAA,CAAA,iEAAA,CAAA,EAAA,CAAA;8BAI/C,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,MAAM;gBAIP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAGqB,aAAa,EAAA,CAAA;sBAAxC,YAAY;uBAAC,YAAY,CAAA;gBAIE,aAAa,EAAA,CAAA;sBAAxC,YAAY;uBAAC,YAAY,CAAA;;AAQ5B,CAAA,UAAiB,gBAAgB,EAAA;IAClB,gBAAA,CAAA,iBAAiB,GAAG;QAC/B,YAAY;QACZ,cAAc;QACd,eAAe;QACf,aAAa;KACL,CAAC;AAKb,CAAC,EAXgB,gBAAgB,KAAhB,gBAAgB,GAWhC,EAAA,CAAA,CAAA;;MEpDY,gBAAgB,CAAA;IAC3B,WACqB,CAAA,EAAc,EACd,cAA8B,EAAA;AAD9B,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AACd,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAOnD,QAAA,IAAe,CAAA,eAAA,GAAqB,MAAM,CAAC;AAG3C,QAAA,IAAkB,CAAA,kBAAA,GAAG,kCAAkC,CAAC;AAGxD,QAAA,IAA2B,CAAA,2BAAA,GAAsC,YAAY,CAAC;AAG9E,QAAA,IAAoB,CAAA,oBAAA,GAAW,GAAG,CAAC;KAf/B;IAoBwB,YAAY,GAAA;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ;iBACvD,GAAG,CAAC,gBAAgB,CAAC;iBACrB,eAAe,CAAC,gBAAgB,CAAC,CAAC;YACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;YAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;YAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACtE,YAAA,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,YAAA,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC3B,SAAA;KACF;IAE2B,YAAY,GAAA;QACtC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,aAAa,GAAA;QACnB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;;AACzC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC9B,SAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAC/B;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACxC;;6GA5DU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAA;8HAQC,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,2BAA2B,EAAA,CAAA;sBAD1B,KAAK;gBAIN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAMsB,YAAY,EAAA,CAAA;sBAAvC,YAAY;uBAAC,YAAY,CAAA;gBAmBE,YAAY,EAAA,CAAA;sBAAvC,YAAY;uBAAC,YAAY,CAAA;;;AClD5B;AAIM,MAAO,wBACX,SAAQ,gBAAgB,CAAA;IASxB,WAC8B,CAAA,EAAc,EACd,cAA8B,EAAA;AAE1D,QAAA,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AAHE,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AACd,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAP5D,QAAA,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;AAGlB,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;KAOlB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;KACzC;;AAGD,IAAA,WAAW,CAAC,OAA8B,EAAA;AACxC,QAAA,IAAI,aAAa,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAE7C,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;;QAEhC,IACE,aAAa,GAAG,CAAC;YACjB,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,EAC1D;AACA,YAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACtB,SAAA;AAAM,aAAA;AACL;;;AAGE;AACF,YAAA,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC;YAClC,IAAI,sBAAsB,GAAY,KAAK,CAAC;AAC5C,YAAA,OAAO,aAAa,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACnD,gBAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC;AAE5C,gBAAA,OAAO,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAEvC,gBAAA,IACE,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EACpE;oBACA,sBAAsB,GAAG,IAAI,CAAC;AAC/B,iBAAA;AAAM,qBAAA;AACL,oBAAA,aAAa,EAAE,CAAC;AACjB,iBAAA;AACF,aAAA;;YAGD,IAAI,CAAC,sBAAsB,EAAE;AAC3B,gBAAA,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAA;KACF;;qHA7DU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;iBACzC,CAAA;8HAMC,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;;;ACVR,SAAS,QAAQ,CAAC,OAAoB,EAAA;AACpC,IAAA,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACnD,CAAC;AAED;;AAEG;MAQU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CACmB,OAAmB;;IAEX,OAAyB,EAAA;AAFjC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAEX,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;AAIpD,QAAA,IAAe,CAAA,eAAA,GAAW,OAAO,CAAC;KAH9B;IAMJ,KAAK,GAAA;QACH,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC;AACvD,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAA;KACF;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KAC7B;;IAGD,cAAc,GAAA;QACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAClD;;8GA3BU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,ECxB9B,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6BACA,EDqBiB,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,aAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAEtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,mBAGR,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,CAAA;;;8BAM9B,IAAI;;yBAIP,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,YAAY,CAAA;gBAU1B,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,YAAY,CAAA;;;MEnCf,gBAAgB,CAAA;AAN7B,IAAA,WAAA,GAAA;AAWE,QAAA,IAAI,CAAA,IAAA,GAA0B,EAAE,CAAC;AAGjC,QAAA,IAAO,CAAA,OAAA,GAA6B,MAAM,CAAC;AAsBlC,QAAA,IAAA,CAAA,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC;KACtD;IArBC,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AAE1B,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC;AAC7C,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAEvC,QAAA,MAAM,QAAQ,GAAG;YACf,CAAI,CAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA;YACrB,CAAI,CAAA,EAAA,KAAK,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA;YAClB,CAAI,CAAA,EAAA,KAAK,CAAI,CAAA,EAAA,QAAQ,CAAE,CAAA;AACvB,YAAA,CAAA,EAAA,EAAK,MAAM,CAAI,CAAA,EAAA,MAAM,UAAU,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA;SACjD,CAAC;AACF,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC3B;;AA3Be,gBAAY,CAAA,YAAA,GAAG,GAAI,CAAA;AACnB,gBAAiB,CAAA,iBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,GAAI,CAAA;6GAFhD,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,iGCR7B,maAgBA,EAAA,MAAA,EAAA,CAAA,2sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDRa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,maAAA,EAAA,MAAA,EAAA,CAAA,2sBAAA,CAAA,EAAA,CAAA;8BAO/C,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;;AA0BR,CAAA,UAAiB,gBAAgB,EAAA;IAClB,gBAAK,CAAA,KAAA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;IAG9B,gBAAA,CAAA,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAErD,CAAC,EANgB,gBAAgB,KAAhB,gBAAgB,GAMhC,EAAA,CAAA,CAAA;;ME5BY,eAAe,CAAA;IAC1B,WACmB,CAAA,EAAc,EACd,QAAmB,EAAA;AADnB,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AACd,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAgBtC,QAAA,IAAI,CAAA,IAAA,GAAyB,QAAQ,CAAC;AAGtC,QAAA,IAAO,CAAA,OAAA,GAA4B,OAAO,CAAC;AAM3C,QAAA,IAAY,CAAA,YAAA,GAAiC,OAAO,CAAC;AAyC7C,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AACtC,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;KAlEvC;AA0BJ,IAAA,IACI,OAAO,GAAA;QACT,OAAO,MAAM,CAAC,OAAO,CAAC;AACpB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;AACpB,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;AACjB,YAAA,OAAO,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS;SACzC,CAAC;aACC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aACrB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;KACd;IAED,iBAAiB,GAAA;QACf,QAAQ,IAAI,CAAC,OAAO;AAClB,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,SAAS,CAAC;AACf,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,MAAM,CAAC;AAChB,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,OAAO,CAAC;AAClB,SAAA;KACF;IAED,WAAW,GAAA;QACT,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,EAAE,CAAC;AACZ,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACF;AAKD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,YAAY,GAAY,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3E,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;gBACvB,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC;AAC9D,aAAA;AACD,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;AACzD,aAAA;AACD,YAAA,IAAI,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvC,gBAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACvD,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACvE,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAClE,iBAAA;AACF,aAAA;AACF,SAAA;KACF;;4GAzFU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+RCnB5B,0iBAqBA,EAAA,MAAA,EAAA,CAAA,8qJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDFa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0iBAAA,EAAA,MAAA,EAAA,CAAA,8qJAAA,CAAA,EAAA,CAAA;yHAS/C,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIF,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,OAAO,CAAA;;AA8DtB,CAAA,UAAiB,eAAe,EAAA;IACjB,eAAA,CAAA,KAAK,GAAG;QACnB,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,OAAO;QACP,QAAQ;KACA,CAAC;IAGE,eAAA,CAAA,QAAQ,GAAG;QACtB,OAAO;QACP,OAAO;QACP,SAAS;QACT,QAAQ;QACR,SAAS;KACD,CAAC;IAGE,eAAa,CAAA,aAAA,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAErE,CAAC,EArBgB,eAAe,KAAf,eAAe,GAqB/B,EAAA,CAAA,CAAA;;MEpHY,iBAAiB,CAAA;AAN9B,IAAA,WAAA,GAAA;AAcE,QAAA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;AAGvB,QAAA,IAAiB,CAAA,iBAAA,GAAW,WAAW,CAAC;AAGxC,QAAA,IAAuB,CAAA,uBAAA,GAAW,YAAY,CAAC;AAM/C,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAG/B,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAG1B,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAG1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAW,CAAC;KAe3C;IAXC,cAAc,GAAA;AACZ,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;KACxE;IAED,yBAAyB,GAAA;AACvB,QAAA,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;KACzC;IAED,+BAA+B,GAAA;AAC7B,QAAA,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC;KAC/C;;8GA3CU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,2dChB9B,6lBAqBA,EAAA,MAAA,EAAA,CAAA,0mDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDLa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6lBAAA,EAAA,MAAA,EAAA,CAAA,0mDAAA,CAAA,EAAA,CAAA;8BAI/C,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,uBAAuB,EAAA,CAAA;sBADtB,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAG+B,KAAK,EAAA,CAAA;sBAA1C,SAAS;gBAAC,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEtChC,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;;kHAA/C,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,gFCTlC,8zBAyBA,EAAA,MAAA,EAAA,CAAA,4yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDhBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8zBAAA,EAAA,MAAA,EAAA,CAAA,4yBAAA,CAAA,EAAA,CAAA;;;AELjD;;AAEG;AACG,MAAO,YAEX,SAAQ,eAAkB,CAAA;IAC1B,WAA6B,CAAA,GAAW,EAAE,YAAe,EAAA;QACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;QAC1D,KAAK,CAAC,KAAK,KAAL,IAAA,IAAA,KAAK,cAAL,KAAK,GAAI,YAAY,CAAC,CAAC;AAHF,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;KAIvC;AAEQ,IAAA,IAAI,CAAC,KAAQ,EAAA;AACpB,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnB;AACF;;MCVY,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;AAQW,QAAA,IAAI,CAAA,IAAA,GAAuB,EAAE,CAAC;KACxC;;0GAHY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wFCR1B,iFACA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDOa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iFAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;8BAGtC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;AAGR,CAAA,UAAiB,aAAa,EAAA;IACf,aAAA,CAAA,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAU,CAAC;AAEzC,CAAC,EAHgB,aAAa,KAAb,aAAa,GAG7B,EAAA,CAAA,CAAA;;MEHY,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAG1B,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;KAMzB;AAJC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,CAAC;KACvD;;0GAVU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wJCb1B,qGAEA,EAAA,MAAA,EAAA,CAAA,kXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDWa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qGAAA,EAAA,MAAA,EAAA,CAAA,kXAAA,CAAA,EAAA,CAAA;8BAI/C,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIF,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,OAAO,CAAA;;;MENT,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAcE,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAM1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;KAClC;;gHAfY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,oMCdhC,ubAiBA,EAAA,MAAA,EAAA,CAAA,wmBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDHa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ubAAA,EAAA,MAAA,EAAA,CAAA,wmBAAA,CAAA,EAAA,CAAA;8BAI/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,MAAM;;;MEhBI,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAA6B,EAAc,EAAA;AAAd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAG3C,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;AAEpB,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;KALQ;IAO/C,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;IAEO,KAAK,GAAA;QACX,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;gBACnD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAA;KACF;;iHA9BU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;iGAKC,WAAW,EAAA,CAAA;sBADV,KAAK;uBAAC,gBAAgB,CAAA;;;ACZT,SAAA,MAAM,CACpB,IAAY,EACZ,OAA8C,EAAA;IAE9C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE;QAClC,MAAM,CAAC,IAAI,CACT;AACE,YAAA,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;SACrC,EACD;AACE,YAAA,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;AACrC,SAAA,CACF,CAAC;AACF,QAAA,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC;AACnB,KAAA;IACD,MAAM,CAAC,IAAI,CAAC;AACV,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,IAAI,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AAC5C,KAAA,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C;;MCjBa,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;AAGlB,QAAA,IAAO,CAAA,OAAA,GAA0C,EAAE,CAAC;KAKrD;IAHC,SAAS,GAAA;QACP,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACxC;;+GATU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,mGCT/B,+GAGA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+GAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,CAAA;8BAI/C,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;;;MEJK,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAGzB,QAAA,IAAW,CAAA,WAAA,GAA0B,EAAE,CAAC;KAIzC;;kHATY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,mJCTlC,+QAQA,EAAA,MAAA,EAAA,CAAA,saAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+QAAA,EAAA,MAAA,EAAA,CAAA,saAAA,CAAA,EAAA,CAAA;8BAI/C,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;;;AEIF,MAAO,qBAGX,SAAQ,mBAAmB,CAAA;AAT7B,IAAA,WAAA,GAAA;;AAWE,QAAA,IAAM,CAAA,MAAA,GAAQ,EAAE,CAAC;AAGjB,QAAA,IAAc,CAAA,cAAA,GAAa,IAAI,CAAC;QAGhC,IAAA,CAAA,oBAAoB,GAA+C;AACjE,YAAA,OAAO,EAAE,KAAK;SACf,CAAC;AAGF,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAGzB,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAGxB,QAAA,IAAgB,CAAA,gBAAA,GAAW,MAAM,CAAC;AAGlC,QAAA,IAAgB,CAAA,gBAAA,GAAW,sBAAsB,CAAC;AASlD,QAAA,IAAW,CAAA,WAAA,GAAW,WAAW,CAAC;AAGlC,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAE1B,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAGzB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU,CAAC;AAG/C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAK,CAAC;AAmD7C,QAAA,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;KACvB;IA/CC,UAAU,GAAA;;AACR,QAAA,QACE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,MACvC,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,EACzC;KACH;IAED,oBAAoB,GAAA;AAClB,QAAA,IACE,IAAI,CAAC,oBAAoB,CAAC,OAAO;AACjC,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EACrC;AACA,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;AAC9C,SAAA;AACD,QAAA,OAAO,mBAAmB,CAAC;KAC5B;IAED,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,SAAA;KACF;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;AAED,IAAA,YAAY,CAAC,mBAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;;AAGlB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/C,SAAA;KACF;IAED,aAAa,CAAC,CAAS,EAAE,KAA2C,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,CAAA,EAAG,KAAK,CAAC,MAAM,EAAE,CAAC;KAC9B;IAED,aAAa,CAAC,CAAS,EAAE,MAAS,EAAA;QAChC,OAAO,MAAM,CAAC,EAAE,CAAC;KAClB;;kHA9FU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ovBCpBlC,ynJAuIA,EAAA,MAAA,EAAA,CAAA,qkFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnHa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ynJAAA,EAAA,MAAA,EAAA,CAAA,qkFAAA,CAAA,EAAA,CAAA;8BAO/C,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAMN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAMN,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAIP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAG2B,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB,CAAA;gBACI,qBAAqB,EAAA,CAAA;sBAAxD,SAAS;uBAAC,uBAAuB,CAAA;;AAmDpC,CAAA,UAAiB,qBAAqB,EAAA;AAwBpC,IAAA,SAAgB,aAAa,CAC3B,MAAW,EACX,QAAiB,KAAK,EAAA;QAEtB,OAAO,SAAS,MAAM,CAAC,KAAa,EAAA;AAClC,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,MAAM,CAAC;AAE1B,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AAC3B,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG;aAC7B,CAAC;AAEF,YAAA,OAAO,MAAM;iBACV,GAAG,CAAC,KAAK,IAAG;gBACX,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEnC,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAG;;AAAC,wBAAA,wCACzB,KAAK,CAAC,IAAI,CAAA,EAAA,EACb,qBAAqB,EAAE;gCACrB,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,MACrD,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,EAAE,CAAC;AACnB,6BAAA,EACD,wBAAwB,EAAE;gCACxB,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,MACxD,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,KAAI,EAAE,CAAC;AACnB,6BAAA,EAAA,CAAA,EACD;AAAA,qBAAA,CAAC,EACH,CAAA,CAAA;AACJ,aAAC,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,SAAC,CAAC;KACH;AApCe,IAAA,qBAAA,CAAA,aAAa,gBAoC5B,CAAA;AACH,CAAC,EA7DgB,qBAAqB,KAArB,qBAAqB,GA6DrC,EAAA,CAAA,CAAA;;AE1JD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,sBAAsB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAEhD,SAAS,gBAAgB,CAAC,IAAU,EAAA;AAClC,IAAA,OAAO,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAoBD;AACA;MAOa,iBAAiB,CAAA;AAN9B,IAAA,WAAA,GAAA;QAOmB,IAAgB,CAAA,gBAAA,GAAG,IAAI,eAAe,CAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QASzD,IAAW,CAAA,WAAA,GAAG,IAAI,eAAe,CAChD,iBAAiB,CAAC,UAAU,CAC7B,CAAC;QASe,IAAW,CAAA,WAAA,GAAG,IAAI,eAAe,CAChD,iBAAiB,CAAC,UAAU,CAC7B,CAAC;QASe,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CACnD,SAAS,CACV,CAAC;QASe,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CACnD,SAAS,CACV,CAAC;QASe,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAC/C,SAAS,CACV,CAAC;QASe,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAEnD,SAAS,CAAC,CAAC;AASJ,QAAA,IAAY,CAAA,YAAA,GAA6B,aAAa,CAAC;AAC9D,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CACC,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EAChB,KAAI;YACH,MAAM,GAAG,GAAS,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,aAAa,GAAI,UAAU,CAAC;YAC9C,MAAM,GAAG,GAAS,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,aAAa,GAAI,UAAU,CAAC;AAC9C,YAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAC1D,WAAW,IAAG;AACZ,gBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,WAAW,CAAC,WAAW,EAAE,EACzB,eAAe,CAAC,QAAQ,EAAE,CAC3B,CAAC;gBACF,OAAO;AACL,oBAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;AACjC,oBAAA,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EACN,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE;AACtC,wBAAA,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE;AACxC,oBAAA,IAAI,EAAE,IAAI;iBACX,CAAC;AACJ,aAAC,CACF,CAAC;AACJ,SAAC,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAmB,CAAA,mBAAA,GAAG,aAAa,CAAC;AAC3C,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,gBAAgB;SACtB,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,KAC7B,WAAW,CAAC,IAAI,CACd,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CACvD,IAAI,IAAI,CACZ,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAa,CAAA,aAAA,GAA6B,aAAa,CAAC;AAC/D,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CACC,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACd,KAAI;YACH,MAAM,GAAG,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,aAAa,GAAI,UAAU,CAAC;YACxC,MAAM,GAAG,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,aAAa,GAAI,UAAU,CAAC;AACxC,YAAA,OAAO,UAAU,CACf,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAC/B,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CACpD,CAAC,GAAG,CAAC,KAAK,KAAK;AACd,gBAAA,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AAC/B,gBAAA,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;AAC5B,gBAAA,QAAQ,EACN,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;AACpE,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA,CAAC,CAAC,CAAC;AACN,SAAC,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAoB,CAAA,oBAAA,GAAG,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,gBAAgB;SACtB,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,YAAY,EAAE,eAAe,CAAC,KAC9B,YAAY,CAAC,IAAI,CACf,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CACpD,IAAI,IAAI,CACZ,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC;AACtC,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,KAAI;YAC7C,MAAM,GAAG,GAAS,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,aAAa,GAAI,UAAU,CAAC;AAC9C,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC;AACpD,YAAA,OAAO,QAAQ,CAAC;SACjB,CAAC,CACH,CAAC;AAEO,QAAA,IAAU,CAAA,UAAA,GAAG,aAAa,CAAC;AAClC,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,KAAI;YAC7C,MAAM,GAAG,GAAS,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,aAAa,GAAI,UAAU,CAAC;AAC9C,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC;AAChD,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;AAEe,QAAA,IAAqB,CAAA,qBAAA,GACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,GAAG,CAAC,aAAa,IAAG;AAClB,YAAA,IAAI,CAAC,aAAa;AAAE,gBAAA,OAAO,EAAE,CAAC;YAC9B,IAAI,aAAa,YAAY,IAAI;gBAAE,OAAO,CAAC,aAAa,CAAC,CAAC;AAC1D,YAAA,OAAO,QAAQ,CACb,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACnD,CAAC;AACJ,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEK,QAAA,IAAM,CAAA,MAAA,GAA+B,aAAa,CAAC;AAC1D,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,qBAAqB;AAC1B,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,UAAU;SAChB,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CACC,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,SAAS,EACV,KAAI;YACH,MAAM,aAAa,GAAG,QAAQ,CAC5B,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EACjC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CACtD,CAAC;AACF,YAAA,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChE,YAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAA4B,CAAC;AACpE,YAAA,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,MAAM,CAC7D,QAAQ,IACN,QAAQ,CAAC,OAAO,EAAE,IAAI,eAAe,CAAC,OAAO,EAAE;AAC/C,gBAAA,QAAQ,CAAC,OAAO,EAAE,IAAI,eAAe,CAAC,OAAO,EAAE;AAC/C,iBAAC,aAAa;sBACV,QAAQ,CAAC,OAAO,EAAE,IAAI,aAAa,CAAC,OAAO,EAAE;sBAC7C,IAAI,CAAC;AACT,iBAAC,aAAa;sBACV,QAAQ,CAAC,OAAO,EAAE,IAAI,aAAa,CAAC,OAAO,EAAE;sBAC7C,IAAI,CAAC;AACT,iBAAC,SAAS;AACR,sBAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;wBAC3C,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7C,sBAAE,IAAI,CAAC,CACZ,CAAC;AACF,YAAA,IAAI,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1C,MAAM,8BAA8B,GAAG,gBAAgB,CACrD,2BAA2B,CAAC,CAAC,CAAC,CAC/B,CAAC;gBACF,2BAA2B,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;AAClD,oBAAA,MAAM,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACrC,oBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,8BAA8B,IAAI,CAAC,CAAC,CAAC;AAC/D,oBAAA,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,iBAAC,CAAC,CAAC;AACJ,aAAA;YACD,SAAS,oBAAoB,CAAC,WAA6B,EAAA;AACzD,gBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC9B;AAED,YAAA,MAAM,sCAAsC,GAAG,IAAI,GAAG,CACpD,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAChE,CAAC;YAEF,SAAS,iBAAiB,CAAC,IAAU,EAAA;gBAMnC,MAAM,WAAW,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,WAAW;AACd,oBAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACxD,gBAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC;gBAC3B,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1C,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EACxC,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EACzC,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO;AACL,oBAAA,EAAE,EACA,CAAC,sCAAsC,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,wBAAA,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC;AACnD,oBAAA,EAAE,EACA,CAAC,sCAAsC,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,wBAAA,CAAC,sCAAsC,CAAC,GAAG,CAAC,KAAK,CAAC;AACpD,oBAAA,EAAE,EACA,CAAC,sCAAsC,CAAC,GAAG,CAAC,KAAK,CAAC;AAClD,wBAAA,CAAC,sCAAsC,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,oBAAA,EAAE,EACA,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC;AACjD,wBAAA,CAAC,sCAAsC,CAAC,GAAG,CAAC,MAAM,CAAC;iBACtD,CAAC;aACH;AAED,YAAA,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAC/C,2BAA2B,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAChE,CAAC;YAEF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAExC,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,IAAG;;AAC9B,gBAAA,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACnD,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,iCAAiC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,aAAa;sBAC1B,aAAa,YAAY,IAAI;AAC7B,0BAAE,SAAS,KAAK,aAAa,CAAC,OAAO,EAAE;0BACrC,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AACxC,4BAAA,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;sBAC1C,KAAK,CAAC;gBACV,OAAO;oBACL,IAAI;AACJ,oBAAA,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC;AAC3B,oBAAA,MAAM,EACJ,OAAO;AACP,yBAAC,SAAS;4BACR,IAAI,CAAC,GAAG,CACN,eAAe,CAAC,OAAO,EAAE,EACzB,CAAA,EAAA,GAAA,aAAa,aAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,OAAO,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,QAAQ,CACtC;4BACD,SAAS;AACP,iCAAC,SAAS;AACR,sCAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAC3C,sCAAE,CAAC,QAAQ,CAAC,CAAC;AACrB,oBAAA,OAAO,EACL,OAAO;AACP,yBAAC,SAAS;AACR,4BAAA,IAAI,CAAC,GAAG,CACN,eAAe,CAAC,OAAO,EAAE,EACzB,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CACrC;4BACD,SAAS;AACP,iCAAC,SAAS;AACR,sCAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;sCAC1C,QAAQ,CAAC,CAAC;AACpB,oBAAA,MAAM,EACJ,SAAS,IAAI,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,OAAO,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,QAAQ,CAAC;AACnD,wBAAA,SAAS,IAAI,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,OAAO,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC;AAClD,yBAAC,SAAS;8BACN,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,SAAS;AACnC,gCAAA,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;8BACnC,KAAK,CAAC;AACZ,oBAAA,cAAc,EACZ,SAAS,IAAI,eAAe,CAAC,OAAO,EAAE;wBACtC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;oBAC5D,OAAO;AACP,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,SAAS,EAAE,EAAE;oBACb,QAAQ;AACR,oBAAA,KAAK,EAAE,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE;iBACrC,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAUF,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGjD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;KACvC;IArXC,IACW,eAAe,CAAC,CAAO,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC/B;AACD,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KACzC;IAKD,IACW,UAAU,CAAC,CAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AACD,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACpC;IAKD,IACW,UAAU,CAAC,CAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AACD,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACpC;IAKD,IACW,aAAa,CAAC,CAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7B;AACD,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACvC;IAKD,IACW,aAAa,CAAC,CAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7B;AACD,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACvC;IAKD,IACW,SAAS,CAAC,CAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACzB;AACD,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KACnC;IAKD,IACW,aAAa,CAAC,CAAkC,EAAA;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7B;AACD,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACvC;AAiSD,IAAA,SAAS,CAAC,GAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAChC;;8GAhXU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,uWC7D9B,okFAqFA,EAAA,MAAA,EAAA,CAAA,y4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDxBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,okFAAA,EAAA,MAAA,EAAA,CAAA,y4CAAA,CAAA,EAAA,CAAA;8BAKpC,eAAe,EAAA,CAAA;sBADzB,KAAK;gBAYK,UAAU,EAAA,CAAA;sBADpB,KAAK;gBAYK,UAAU,EAAA,CAAA;sBADpB,KAAK;gBAYK,aAAa,EAAA,CAAA;sBADvB,KAAK;gBAYK,aAAa,EAAA,CAAA;sBADvB,KAAK;gBAYK,SAAS,EAAA,CAAA;sBADnB,KAAK;gBAYK,aAAa,EAAA,CAAA;sBADvB,KAAK;gBA+SN,qBAAqB,EAAA,CAAA;sBADpB,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;;AAIT,CAAA,UAAiB,iBAAiB,EAAA;AACnB,IAAA,iBAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,iBAAU,CAAA,UAAA,GAAG,OAAO,CAAC,MAAM,CACtC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAC9C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,EANgB,iBAAiB,KAAjB,iBAAiB,GAMjC,EAAA,CAAA,CAAA;;AEnaD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;AAExC;AACA;AAOM,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AAN3D,IAAA,WAAA,GAAA;;AAOW,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACnB,QAAA,IAAW,CAAA,WAAA,GAAG,oBAAoB,CAAC;QAE3B,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;QAS1D,IAAI,CAAA,IAAA,GAAG,IAAI,eAAe,CAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAS/D,IAAI,CAAA,IAAA,GAAG,IAAI,eAAe,CAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAS/D,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAA2B,SAAS,CAAC,CAAC;QASlE,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAS,sBAAsB,CAAC,CAAC;QASnE,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QASvC,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAA6B,CAAC;AAE/D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAoB,CAAC;QACpD,IAAc,CAAA,cAAA,GAAgD,KAAK,CAC1E,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,IAAI,CACF,CAAC,QAAyC,EAAE,IAAsB,KAAI;AACpE,YAAA,IAAI,QAAQ,YAAY,IAAI,IAAI,IAAI,YAAY,IAAI,EAAE;gBACpD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;AACxC,oBAAA,MAAM,IAAI,GAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CACF,CACF,EACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9C,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAsB,CAAA,sBAAA,GAAG,aAAa,CAAC;AAC9C,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,IAAI;AACT,YAAA,IAAI,CAAC,IAAI;SACV,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,KACpB,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,KAC9C,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CACV,EAAA,EAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAC7B,CAAC,IACC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE;AACrC,gBAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CACxC,EAAA,CAAA,CACD,CAAC,CACJ,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAe,CAAA,eAAA,GACtB,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/C,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,kBAAkB,CAAC,KAAI;YAC1C,IAAI,aAAa,YAAY,KAAK,EAAE;AAClC,gBAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAC/C,MAAM,IACJ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AACxD,oBAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC3D,CAAC;gBACF,IAAI,OAAO,CAAC,MAAM,EAAE;;;;;;oBAMlB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,MAAM,IAAI,MAAM,CAAC,EAAE,MAAK,kBAAkB,KAAA,IAAA,IAAlB,kBAAkB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAlB,kBAAkB,CAAE,EAAE,CAAA,CAC/C,CAAC;AACF,oBAAA,IAAI,UAAU;AAAE,wBAAA,OAAO,UAAU,CAAC;AAClC,oBAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;AAEK,QAAA,IAAkB,CAAA,kBAAA,GAAG,IAAI,YAAY,CAC5C,IAAI,CAAC,WAAW,EAChB,EAAE,CACH,CAAC;AAYO,QAAA,IAAA,CAAA,gBAAgB,GACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC1B,GAAG,CAAC,GAAG,IACL,GAAG;aACA,GAAG,CAAC,EAAE,IACL,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAC5D;aACA,MAAM,CAAC,CAAC,CAAC,KAAqC,CAAC,KAAK,SAAS,CAAC,CAClE,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEK,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/C,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,OAAO,EAAQ,CAAC;QAEhD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAChC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QACO,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAChC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACpD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QACO,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CACjC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAoB,CAAA,oBAAA,GAAG,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,KAAK,CACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAChC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACvC,EACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAChD,EACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,MAAM,CAAC,CAAC,CAAC,KAAwB,CAAC,KAAK,SAAS,CAAC,EACjD,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChC,CACF;AACF,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAI;YACtB,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;AACpE,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAqB,CAAA,qBAAA,GAAG,aAAa,CAAC;AAC7C,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,KAAK,CACH,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACjC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACtC,EACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAChD,EACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,MAAM,CAAC,CAAC,CAAC,KAAwB,CAAC,KAAK,SAAS,CAAC,EACjD,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChC,CACF;AACD,YAAA,IAAI,CAAC,SAAS;AACf,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,KAAI;YACnC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE;AACvC,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC/C,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE;AACjD,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;AAC/B,gBAAA,OAAO,SAAS,CAAC;AACxB,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACjD,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EACvD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAc,CAAA,cAAA,GACrB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC7B,GAAG,CAAqB,oBAAoB,IAAG;YAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CACzB,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAC1D,CAAC,CAAC,CACH,CAAC;AACF,YAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACvB,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAGK,IAAW,CAAA,WAAA,GAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,MAAM,CAAC,CAAC,CAAC,KAAoC,EAAE,CAAC,YAAY,IAAI,CAAC,CAAC,EAClE,oBAAoB,CAClB,CAAC,QAAQ,EAAE,OAAO,KAChB,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,CAAC,CAAA,CAAE,OAAO,EAAE,OAAK,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAG,CAAC,CAAA,CAAE,OAAO,EAAE,CAAA;AAClD,YAAA,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,CAAC,CAAA,CAAE,OAAO,EAAE,OAAK,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAG,CAAC,CAAE,CAAA,OAAO,EAAE,CAAA,CACrD,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEK,QAAA,IAAa,CAAA,aAAA,GACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,EAAE;gBACL,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;AACnB,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;KACL;IA7PC,IACI,WAAW,CAAC,CAAU,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B;AACD,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACrC;IAGD,IACI,GAAG,CAAC,CAAO,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;AACD,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC7B;IAGD,IACI,GAAG,CAAC,CAAO,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;AACD,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC7B;IAGD,IACI,KAAK,CAAC,CAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;AACD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAGD,IACI,WAAW,CAAC,CAAS,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B;AACD,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACrC;IAGD,IACI,QAAQ,CAAC,CAAU,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;AACD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;IA8ED,WAAW,CAAC,MAAiC,EAAE,QAAiB,EAAA;AAC9D,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,SAAA;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KACxC;;+GA9IU,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,wPCnC/B,whMAgLA,EAAA,MAAA,EAAA,CAAA,69FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD7Ia,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,whMAAA,EAAA,MAAA,EAAA,CAAA,69FAAA,CAAA,EAAA,CAAA;8BAQ3C,WAAW,EAAA,CAAA;sBADd,KAAK;gBAUF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAUF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAUF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAUF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAUF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBA2LG,WAAW,EAAA,CAAA;sBADnB,MAAM;;AAwBT,CAAA,UAAiB,kBAAkB,EAAA;AACjC,IAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAEZ,kBAAA,CAAA,OAAO,GAEb;AACL,QAAA;AACE,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,4CAA4C;AACtD,YAAA,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC;AAC9B,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,0BAA0B;YACpC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,sBAAsB;YAChC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACpE,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;AACvB,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,KAAK,EAAE,kBAAkB;AACzB,YAAA,QAAQ,EAAE,qCAAqC;AAC/C,YAAA,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvD,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,4BAA4B;AACtC,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,wBAAwB;AAClC,YAAA,KAAK,EAAE;gBACL,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3C,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,QAAQ,EAAE,4BAA4B;AACtC,YAAA,KAAK,EAAE;AACL,gBAAA,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,QAAQ,EAAE,sCAAsC;AAChD,YAAA,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,KAAK,EAAE;AACL,gBAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,KAAK,EAAE;gBACL,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3C,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,KAAK,EAAE;AACL,gBAAA,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;AACxB,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,QAAQ,EAAE,+BAA+B;AACzC,YAAA,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxD,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,KAAK,EAAE;AACL,gBAAA,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpE,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,KAAK,EAAE;gBACL,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,2BAA2B;YACrC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,KAAK,EAAE,kBAAkB;AACzB,YAAA,QAAQ,EAAE,qCAAqC;AAC/C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrD,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,4BAA4B;AACtC,YAAA,KAAK,EAAE;AACL,gBAAA,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,wBAAwB;AAClC,YAAA,KAAK,EAAE;gBACL,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,kCAAkC;AAC5C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,mCAAmC;AAC7C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,mCAAmC;AAC7C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,mCAAmC;AAC7C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,QAAQ,EAAE,mCAAmC;AAC7C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,QAAQ,EAAE,oCAAoC;AAC9C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1C,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,QAAQ,EAAE,oCAAoC;AAC9C,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1C,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;KACF,CAAC;AAIW,IAAA,kBAAA,CAAA,aAAa,GAAG,qBAAqB,CAAC,aAAa,CAAC;AAC/D,QAAA;YACE,OAAO,EAAE,mBAAA,OAAO;AACjB,SAAA;AACF,KAAA,CAAC,CAAC;AACL,CAAC,EAjOgB,kBAAkB,KAAlB,kBAAkB,GAiOlC,EAAA,CAAA,CAAA;;AEvfK,MAAO,aAAc,SAAQ,mBAAmB,CAAA;AANtD,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,GAAG,GAAS,iBAAiB,CAAC,UAAU,CAAC;AAGzC,QAAA,IAAA,CAAA,GAAG,GAAS,iBAAiB,CAAC,UAAU,CAAC;AAMzC,QAAA,IAAW,CAAA,WAAA,GAAW,gBAAgB,CAAC;AAGvC,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAe,CAAA,eAAA,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAGb,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;KACxC;;0GArBY,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,sNCjB1B,42CAoDA,EAAA,MAAA,EAAA,CAAA,uzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnCa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,42CAAA,EAAA,MAAA,EAAA,CAAA,uzBAAA,CAAA,EAAA,CAAA;8BAI/C,GAAG,EAAA,CAAA;sBADF,KAAK;gBAIN,GAAG,EAAA,CAAA;sBADF,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,MAAM;;;AE3BH,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;;oHAAjD,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,kFCTpC,gaAiBA,EAAA,MAAA,EAAA,CAAA,yqCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDRa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACE,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gaAAA,EAAA,MAAA,EAAA,CAAA,yqCAAA,CAAA,EAAA,CAAA;;;MEHpC,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAES,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC,CAAC;KAWxE;AATQ,IAAA,GAAG,CAAC,OAA6B,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;KACtE;AAEM,IAAA,MAAM,CAAC,OAA6B,EAAA;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CACzD,CAAC;KACH;;2GAXU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCKrB,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAAqB,cAA8B,EAAA;AAA9B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAAI;;mHAD5C,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,0DCRnC,iKAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDKa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iKAAA,EAAA,CAAA;;;MEMpC,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CACmB,QAA8B,EAC9B,cAA8B,EAC9B,GAAsB,EAAA;AAFtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsB;AAC9B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;KACrC;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;;6GAfU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;;;MCEY,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAO,CAAA,OAAA,GAA2B,OAAO,CAAC;AAG1C,QAAA,IAAI,CAAA,IAAA,GAAwB,QAAQ,CAAC;KAMtC;AAJC,IAAA,IACI,OAAO,GAAA;QACT,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;KACvC;;2GAVU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kJCb3B,6BACA,EAAA,MAAA,EAAA,CAAA,w/IAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDYa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,w/IAAA,CAAA,EAAA,CAAA;8BAI/C,OAAO,EAAA,CAAA;sBADN,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIF,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,OAAO,CAAA;;AAMtB,CAAA,UAAiB,cAAc,EAAA;AAChB,IAAA,cAAK,CAAA,KAAA,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;IAGxD,cAAA,CAAA,QAAQ,GAAG;QACtB,OAAO;QACP,MAAM;QACN,UAAU;QAEV,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB;QACrB,oBAAoB;QACpB,4BAA4B;QAE5B,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,gBAAgB;QAEhB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;QAExB,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,UAAU;QACV,WAAW;KACH,CAAC;AAEb,CAAC,EAjDgB,cAAc,KAAd,cAAc,GAiD9B,EAAA,CAAA,CAAA;;MElEY,cAAc,CAAA;AAMzB,IAAA,WAAA,GAAA;AALQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAe,CAAC;QACvD,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QAKnD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;AACjD,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAC1B,OAAO,EAAE,KAAK,CAAC,MAAM;AACrB,oBAAA,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;AAC9B,oBAAA,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;AACjC,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,OAAO,CAAC,OAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACtC;AAED,IAAA,SAAS,CAAC,OAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACxC;;2GAxBU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCoBrB,aAAa,CAAA;AACxB,IAAA,WAAA,CACmB,UAAmC,EACnC,cAA8B,EAC9B,IAAY,EAAA;AAFZ,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AACnC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAI/B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;KAHrC;IAOJ,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY;aACjD,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAClE,sBAAsB,CAAC,EAAE,CAAC,CAC3B;aACA,SAAS,CAAC,MAAM,IAAG;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAEhC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK,GAAG,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;;QACT,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7D,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KAClC;;0GA7BU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;iBAC5B,CAAA;gJASC,aAAa,EAAA,CAAA;sBADZ,MAAM;;AAyBT,SAAS,sBAAsB,CAAC,KAAa,EAAA;AAC3C,IAAA,OAAO,CAAI,MAAqB,KAC9B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E;;MClDa,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;AASS,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;KAChC;;kHAJY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oJAFtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAE1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;YACS,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACrC,QAAA,EAAA,sBAAsB,YAEtB,2BAA2B,EAAA,MAAA,EAAA,CAAA,iFAAA,CAAA,EAAA,CAAA;8BAK9B,MAAM,EAAA,CAAA;sBAFZ,KAAK;;sBACL,WAAW;uBAAC,eAAe,CAAA;;;MCDjB,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAA6B,GAA0B,EAAA;AAA1B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAuB;AAGhD,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAH2B;IAK3D,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;KAChC;;mHARU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,yHAFvB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gQAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAE1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;YACS,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACrC,QAAA,EAAA,uBAAuB,YAEvB,2BAA2B,EAAA,MAAA,EAAA,CAAA,gQAAA,CAAA,EAAA,CAAA;yGAM9B,OAAO,EAAA,CAAA;sBADb,WAAW;uBAAC,gBAAgB,CAAA;;;MCTlB,4BAA4B,CAAA;;yHAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,oEAF7B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wOAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAE1B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;YACS,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACrC,QAAA,EAAA,8BAA8B,YAE9B,2BAA2B,EAAA,MAAA,EAAA,CAAA,wOAAA,CAAA,EAAA,CAAA;;;MCE1B,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sDAHnB,0CAA0C,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAGzC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAEhB,QAAA,EAAA,0CAA0C,EACnC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,CAAA;;;MCEpC,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAO,CAAA,OAAA,GAAW,qBAAqB,CAAC;KACzC;;+GAHY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sFAJnB,CAAA,aAAA,CAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAId,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,CAAe,aAAA,CAAA,EAER,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,CAAA;8BAI/C,OAAO,EAAA,CAAA;sBADN,KAAK;;;MCAK,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAG1B,QAAA,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAG1B,QAAA,IAAI,CAAA,IAAA,GAA+B,EAAE,CAAC;AAMtC,QAAA,IAAI,CAAA,IAAA,GAAwB,QAAQ,CAAC;AAE5B,QAAA,IAAM,CAAA,MAAA,GAAG,GAAG,CAAC;KA2BvB;AAzBC,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC;AACtC,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,EAA4B;aAC5C,UAAU,CAAC,IAAI,CAAC;AAChB,aAAA,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IACvB,GAAG,EAA4B;aAC5B,WAAW,CAAC,KAAK,CAAC;aAClB,WAAW,CAAC,KAAK,CAAC;aAClB,QAAQ,CAAC,KAAK,CAAC;AACf,aAAA,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;aAC7B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAC1C,CAAC;KACH;AAED,IAAA,YAAY,CAAC,GAAW,EAAA;QACtB,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;KAC5C;AAED,IAAA,IAAI,KAAK,GAAA;QACP,QACE,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,EACrE;KACH;;2GA1CU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,uLCT3B,woBAwBA,EAAA,MAAA,EAAA,CAAA,sqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDfa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,woBAAA,EAAA,MAAA,EAAA,CAAA,sqBAAA,CAAA,EAAA,CAAA;8BAI/C,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;;AAgCR,CAAA,UAAiB,cAAc,EAAA;AAKhB,IAAA,cAAK,CAAA,KAAA,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAEvE,CAAC,EAPgB,cAAc,KAAd,cAAc,GAO9B,EAAA,CAAA,CAAA;;AE7DK,SAAU,eAAe,CAAC,MAAgB,EAAA;AAC9C,IAAA,OAAO,MAAM,CAAC,GAAG,CACf,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAEK,SAAU,mBAAmB,CAAC,MAAgB,EAAA;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAI;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5B,OAAO,IAAI,KAAK,SAAS;cACrB,CAAC,KAAK,CAAC;AACP,kBAAE,CAAC;AACH,kBAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;cAChC,EAAE,CAAC;AACT,KAAC,CAAC,CAAC;AACL,CAAC;AAEe,SAAA,UAAU,CACxB,MAAgB,EAChB,cAAwB,EAAA;AAExB,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3C,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAEK,SAAU,UAAU,CACxB,MAAgB,EAChB,YAAoB,EACpB,MAAc,EACd,GAAW,EAAA;IAEX,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CACjC,CAAC,IAAI,MAAM,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAC5D,CAAC;;AAGF,IAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK;;AAElD,QAAA,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;;AAE1D,QAAA,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE7C,QAAA,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,KAAA,CAAC,CAAC;AACL;;MClCa,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAGnB,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAGnB,QAAA,IAAI,CAAA,IAAA,GAAyB,QAAQ,CAAC;AAItC,QAAA,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;AAMtB,QAAA,IAAK,CAAA,KAAA,GAAsB,MAAM,CAAC;AAGlC,QAAA,IAAe,CAAA,eAAA,GAAY,4BAA4B,CAAC;KAKzD;AAHC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,eAAe,GAAG,CAAC;KACvC;;4GAzBU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,iPCb5B,+WAYA,EAAA,MAAA,EAAA,CAAA,+iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDCa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+WAAA,EAAA,MAAA,EAAA,CAAA,+iBAAA,CAAA,EAAA,CAAA;8BAI/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAKN,IAAI,EAAA,CAAA;sBAFH,KAAK;;sBACL,WAAW;uBAAC,YAAY,CAAA;gBAIzB,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;;AAQR,CAAA,UAAiB,eAAe,EAAA;AACjB,IAAA,eAAK,CAAA,KAAA,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAEvE,CAAC,EAHgB,eAAe,KAAf,eAAe,GAG/B,EAAA,CAAA,CAAA;;MEpCY,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAQE,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAGnB,QAAA,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;AAGlB,QAAA,IAAgB,CAAA,gBAAA,GAA4B,UAAU,CAAC;KAgBxD;IAdC,UAAU,GAAA;AACR,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,KAAK,KAAK,CAAC;AACd,cAAE,EAAE;AACJ,cAAE,IAAI,CAAC,gBAAgB,KAAK,UAAU;AACtC,kBAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,sBAAE,SAAS;AACX,sBAAE,QAAQ;AACZ,kBAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAChB,sBAAE,SAAS;sBACT,QAAQ,CAAC;QAEf,OAAO,QAAQ,GAAG,gBAAgB,CAAC;KACpC;;2GAvBU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,mICR3B,iPAUA,EAAA,MAAA,EAAA,CAAA,8OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDFa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iPAAA,EAAA,MAAA,EAAA,CAAA,8OAAA,CAAA,EAAA,CAAA;8BAI/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;;AAmBR,CAAA,UAAiB,cAAc,EAAA;AAC7B,IAAA,SAAgB,cAAc,CAC5B,YAAuC,EACvC,aAAwC,EAAA;QAExC,IAAI,YAAY,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,KAAK,CAAC,EAAE;AACxE,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AACD,QAAA,OAAO,YAAY,GAAG,aAAa,GAAG,CAAC,CAAC;KACzC;AARe,IAAA,cAAA,CAAA,cAAc,iBAQ7B,CAAA;AAED,IAAA,SAAgB,wBAAwB,CACtC,YAAuC,EACvC,aAAwC,EAAA;AAExC,QAAA,IAAI,YAAY,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE;AACjD,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;QACD,OAAO,YAAY,GAAG,aAAa,CAAC;KACrC;AARe,IAAA,cAAA,CAAA,wBAAwB,2BAQvC,CAAA;AACH,CAAC,EApBgB,cAAc,KAAd,cAAc,GAoB9B,EAAA,CAAA,CAAA;;MElCY,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAI,CAAA,IAAA,GAAgC,EAAE,CAAC;AAGvC,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAGjC,QAAA,IAAW,CAAA,WAAA,GAAW,GAAG,CAAC;AAG1B,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAG1B,QAAA,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;AAE9B,QAAA,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;AAChC,QAAA,IAAe,CAAA,eAAA,GAAa,EAAE,CAAC;AAC/B,QAAA,IAAM,CAAA,MAAA,GAAa,EAAE,CAAC;AACtB,QAAA,IAAI,CAAA,IAAA,GAAkB,IAAI,CAAC;AAC3B,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;AACrB,QAAA,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;AACzB,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;KAuD3B;IArDC,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe;AAC1C,cAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAC7B,cAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACnE;IAED,UAAU,GAAA;AACR,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IACxC,CAAC,CAAC,aAAa,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,CAClD,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe;AAC3C,cAAE,cAAc;AAChB,cAAE,eAAe,CAAC,cAAc,CAAC,CAAC;AAEpC,QAAA,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;KACzE;IAED,SAAS,GAAA;;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAC5B,CAAC,IAAI,CAAC,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,CACvE,CAAC;KACH;IAED,UAAU,GAAA;QACR,MAAM,MAAM,GAAG,UAAU,CACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,CACd,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE;aACf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aAChB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aACjB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;KACjC;;iHA5EU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2NCpBjC,qtDA0DA,EAAA,MAAA,EAAA,CAAA,i9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDtCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qtDAAA,EAAA,MAAA,EAAA,CAAA,i9BAAA,CAAA,EAAA,CAAA;8BAI/C,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;;;MEzBK,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAWE,QAAA,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;KAKzB;AAHC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,UAAU,GAAG,CAAC;KAClC;;2GATU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,uGCR3B,kGAEA,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDMa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kGAAA,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA,CAAA;8BAI/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;;;MEEK,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAGnB,QAAA,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;AAGxB,QAAA,IAAK,CAAA,KAAA,GAA8B,OAAO,CAAC;AAG3C,QAAA,IAAU,CAAA,UAAA,GAAmC,SAAS,CAAC;AAUvD,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAG3B,QAAA,IAAsB,CAAA,sBAAA,GAAY,IAAI,CAAC;AAGvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;KAKhC;AAhBC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,UAAU,GAAG,CAAC;KAClC;IAWD,qBAAqB,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC;KACvD;;gHA/BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,kSCdhC,0jCAqCA,EAAA,MAAA,EAAA,CAAA,whCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDvBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0jCAAA,EAAA,MAAA,EAAA,CAAA,whCAAA,CAAA,EAAA,CAAA;8BAI/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAQN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,sBAAsB,EAAA,CAAA;sBADrB,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,MAAM;;AAQT,CAAA,UAAiB,mBAAmB,EAAA;IACrB,mBAAA,CAAA,MAAM,GAAG,CAAC,OAAO,EAAE,SAAS,CAAU,CAAC;IAGvC,mBAAY,CAAA,YAAA,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEvE,CAAC,EANgB,mBAAmB,KAAnB,mBAAmB,GAMnC,EAAA,CAAA,CAAA;;AEpDM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAGxE,SAAU,eAAe,CAAC,QAAkB,EAAA;AAChD,IAAA,QAAQ,QAAQ;AACd,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,MAAM,CAAC;AAChB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AACjB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,QAAQ,CAAC;AAClB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;AAC5B,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AAClB,KAAA;AACH,CAAC;AAEK,SAAU,sBAAsB,CAAC,QAAkB,EAAA;AACvD,IAAA,QAAQ,QAAQ;AACd,QAAA,KAAK,KAAK,CAAC;AACX,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,KAAK,CAAC;AACf,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,IAAI,CAAC;AACd,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,KAAK,CAAC;AACf,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACH,CAAC;AAEK,SAAU,gBAAgB,CAAC,QAAkB,EAAA;AACjD,IAAA,QAAQ,QAAQ;AACd,QAAA,KAAK,KAAK,CAAC;AACX,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AACjB,QAAA,KAAK,OAAO,CAAC;AACb,QAAA,KAAK,SAAS,CAAC;AACf,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,MAAM,CAAC;AACjB,KAAA;AACH,CAAC;AAEe,SAAA,sBAAsB,CACpC,QAA6C,EAC7C,gBAAyB,EAAA;AAEzB,IAAA,QAAQ,QAAQ;AACd,QAAA,KAAK,MAAM;YACT,OAAO,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AACtC,QAAA,KAAK,OAAO;YACV,OAAO,gBAAgB,GAAG,OAAO,GAAG,IAAI,CAAC;AAC5C,KAAA;AACH,CAAC;AAEK,SAAU,gBAAgB,CAAC,QAAkB,EAAA;AACjD,IAAA,QAAQ,QAAQ;AACd,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AACjB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,UAAU,CAAC;AACpB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,QAAQ,CAAC;AAClB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AACjB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,MAAM,CAAC;AACjB,KAAA;AACH;;ACrEM,SAAUG,cAAY,CAC1B,MAAsC,EAAA;IAEtC,IAAI,GAAG,GAAG,QAAQ,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;AACpB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,QAAA,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YACjC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AAClC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC;AAEK,SAAU,YAAY,CAAC,MAAsC,EAAA;AACjE,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D;;ACUA,MAAMC,kBAAgB,GAAa,OAAO,CAAC;AAE3C;AACA;MAOa,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOmB,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAC3C,EAAE,CACH,CAAC;QASe,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,GAAG,CAAC,CAAC;AAQ1C,QAAA,IAAM,CAAA,MAAA,GAAG,GAAG,CAAC;QAGvB,IAAc,CAAA,cAAA,GAA0B,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEhD,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAWA,kBAAgB,CAAC,CAAC;AAY5D,QAAA,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;QACzC,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAEzC,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC7C,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5C,MAAM,sBAAsB,GAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAC,CAAC;AACzD,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAUe,QAAA,IAAiB,CAAA,iBAAA,GAA2B,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,WAAW;AACjB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,KAAI;YAC1B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAGD,cAAY,CAAC,KAAK,CAAC,CAAC;AAE/C,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAG;AACjC,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtE,gBAAA,OAAO,KAAK,CAAC,MAAM,GAAG,WAAW,IAAI,UAAU,CAAC;AAClD,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACrD,GAAG,CAAC,SAAS,IACX,SAAS,CAAC,GAAG,CACX,CAAC,QAAQ,MAAoC;AAC3C,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC;AAClC,SAAA,CAAC,CACH,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAuB,CAAA,uBAAA,GAAG,aAAa,CAAC;AAC/C,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAI;;AAC1B,YAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAc,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACxC,MAAM,YAAY,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW;AAAE,oBAAA,OAAO,IAAI,CAAC;AAE/C,gBAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC/D,QAAQ,GAAG,YAAY,CAAC;AAC1B,gBAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC9D,QAAQ,GAAG,WAAW,CAAC;AAC1B,aAAA;AACD,YAAA,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AACtD,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC5D,GAAG,CAAC,MAAM,KAAK,MAAM,GAAI,MAAM,CAAC,EAAe,GAAGC,kBAAgB,CAAC,CAAC,CACrE,CAAC;AAMM,QAAA,IAAY,CAAA,YAAA,GAAG,aAAa,CAAC;AACnC,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,MAAM;AACZ,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,KAAI;YACvC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAGD,cAAY,CAAC,KAAK,CAAC,CAAC;AAC/C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,gBAAgB,EAChB,OAAO,EACP,OAAO,CACR,CAAC;AAEF,YAAA,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5C,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,IAAG;gBAClE,MAAM,sBAAsB,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACrE,gBAAA,QACE,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,sBAAsB,IAAI,CAAC,EACpE;AACJ,aAAC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,CAAC,CAAC;AAE3B,YAAA,OAAO,WAAW,CAAC;AACrB,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AACnC,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,iBAAiB;SACvB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KACpB,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAkC;AAChD,YAAA,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAE/C,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,KAAK,CAAA,EAAA,EACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAG;AAChC,oBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0C,CAAC;AACjE,oBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;AAC/B,wBAAA,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACrD,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACpB,4BAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACrB,yBAAA;wBACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,qBAAA;oBACD,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,KACT,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM;AACxD,4BAAA,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;AACzB,4BAAA,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;AAC5B,yBAAA,CAAC,CAAC,EACH,CAAA,CAAA;AACJ,iBAAC,CAAC,EACF,CAAA,CAAA;AACJ,SAAC,CAAC,CACH,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAEnB,QAAA,IAAS,CAAA,SAAA,GAAG,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,YAAY;AAClB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAI;YACjD,MAAM,OAAO,GAAG,CAAO,IAAA,EAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAGA,cAAY,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACvE,YAAA,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC9D,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;AACvD,YAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CACpC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,EAChC,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAC9D,CAAC;AACF,YAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,oBAAoB,GAAG,sBAAsB,CACjD,cAAc,EACd,gBAAgB,CACjB,CAAC;AACF,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,SAAS,CAC7B,CAAA,EAAG,oBAAoB,CAAI,CAAA,EAAA,oBAAoB,CAAE,CAAA,CAClD,CAAC;YAEF,MAAM,WAAW,GAAG,SAAS,EAAE;AAC5B,iBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC/C,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAEpC,YAAA,MAAM,YAAY,GAChB,CAAC,WAAW,CAAC,SAAS,EAAE;iBACrB,IAAI,CAAC,cAAc,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,oBAAA,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;AACpC,gBAAA,CAAC,CAAC;YAMJ,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,IAAG;AACnD;;;AAGE;AACF,gBAAA,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAC1C,CAAC,KAAK,EAAE,CAAC,KAAK;AACZ,oBAAA,GAAG,KAAK;AACR,oBAAA,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,qCACd,KAAK,CAAA,EAAA,EACR,MAAM,EAAE,CAAC,IACT,CAAC;iBACJ,EACD,EAAE,CACH,CAAC;AAEF;;;;;;;;;;;AAWE;gBACF,MAAM,YAAY,GAAwC,KAAK,CAC7D,YAAY,EACZ,CAAC,IAAI,CAAC,CAAC,IAAI,EACX,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;AAwBE;gBACF,MAAM,OAAO,GAAG,KAAK,EAElB;AACA,qBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;qBACxC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAI;oBACzB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,KAAK,CAAC;AAC/B,iBAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAEnB,gBAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,aAAC,CAAC,CAAC;;YAGH,IAAI,SAAS,GAAG,CAAC,CAAC;;YAElB,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAI;;AAEtD,gBAAA,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;;AAEjD,oBAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtC,wBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YACH,IAAI,SAAS,KAAK,CAAC;gBAAE,SAAS,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,WAAW,EAAE;AACzB,iBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACtB,iBAAA,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAE/C,MAAM,KAAK,GASL,EAAE,CAAC;;AAET,YAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,KAAI;;AAE7D,gBAAA,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAI;;AAE1D,oBAAA,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,KAAI;;;AAEtD,wBAAA,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE1C,MAAM,KAAK,GAAG,WAAW,CAAC;wBAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,wBAAA,MAAM,CAAC,GACL,CAAC,CAAA,EAAA,GAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC;4BACtC,YAAY;AACZ,4BAAA,WAAW,GAAG,KAAK;AACnB,4BAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;wBAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;wBACpC,MAAM,IAAI,GAAG,CAAO,IAAA,EAAA,WAAW,CAAC,MAAM,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;wBAErD,KAAK,CAAC,IAAI,CAAC;AACT,4BAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;4BACzB,CAAC;4BACD,CAAC;4BACD,KAAK;4BACL,MAAM;4BACN,IAAI;AACJ,4BAAA,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;4BAC/C,WAAW;AACZ,yBAAA,CAAC,CAAC;AACL,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAG;;AAAC,gBAAA,QAAC;AACtC,oBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AACzB,oBAAA,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;AAC3B,oBAAA,CAAC,EACC,CAAC,CAAA,EAAA,GAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,IAAI,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC;AACxE,iBAAA,EAAC;AAAA,aAAA,CAAC,CAAC;AACJ,YAAA,MAAM,WAAW,GACf,QAAQ,KAAK,MAAM;AACjB,kBAAE,MAAM;qBACH,GAAG,CAAC,IAAI,IAAG;;AAAC,oBAAA,QAAC;AACZ,wBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AACzB,wBAAA,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;AAC3B,wBAAA,CAAC,EACC,CAAC,CAAA,EAAA,GAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC;AACtC,4BAAA,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC;AAC9B,qBAAA,EAAC;iBAAA,CAAC;qBACF,MAAM,CACL,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,KACb,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAC/C;kBACH,EAAE,CAAC;YAET,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE/B,YAAA,MAAM,cAAc,GAClB,iBAAiB,CAAC,MAAM,GAAG,WAAW;gBACtC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;YACvD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAG;;AAAC,gBAAA,QAAC;AACrC,oBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AACzB,oBAAA,CAAC,EACC,CAAC,CAAA,EAAA,GAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC;wBACtC,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,cAAc,IAAI,CAAC;AAChD,oBAAA,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;AACpB,oBAAA,KAAK,EAAE,cAAc;oBACrB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,iBAAA,EAAC;AAAA,aAAA,CAAC,CAAC;YAEJ,OAAO;gBACL,WAAW;gBACX,UAAU;gBACV,KAAK;gBACL,OAAO;gBACP,WAAW;gBACX,WAAW;gBACX,MAAM;gBACN,MAAM;aACP,CAAC;AACJ,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChC,GAAG,CAAC,KAAK,IACP,KAAK,CAAC,KAAK,CAAC,KAAK,IACf,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CACvD,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAGjC,IAAI,CAAC,CAAC;QAEP,IAAQ,CAAA,QAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,KAAI;AAChC,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,IAAI,CAAC;AAE9B,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI,CAAC;AACzB,YAAA,MAAM,MAAM,GAAoB,MAAO,CAAC,qBAAqB,EAAE,CAAC;YAEhE,OAAO;gBACL,MAAM;AACN,gBAAA,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAG;oBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAG;;AAAC,wBAAA,QAAC;4BAC/C,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,4BAAA,KAAK,EACH,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CACd,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,SAAS,CACvD,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC;AAChB,yBAAA,EAAC;AAAA,qBAAA,CAAC,CAAC;oBACJ,OAAO;wBACL,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,KAAK,EAAE,IAAI,CAAC,cAAc,CACxB,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,CAC1D;wBACD,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,KACzB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KACR,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA,CAAA,CAChD,CAAC;qBACJ,CAAC;AACJ,iBAAC,CAAC;aACH,CAAC;AACJ,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;KACH;IA/bC,IACW,KAAK,CAAC,CAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;AACD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAGD,IAAc,KAAK,CAAC,CAAS,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;IAWD,IACW,QAAQ,CAAC,CAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;AACD,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAkBD,IAAA,gBAAgB,CAAC,QAAkB,EAAE,OAAa,EAAE,OAAa,EAAA;AAC/D,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,YAAY,CAAC,KAAK,CACvB,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAC3B,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CACpD,CAAC,MAAM,CAAC;KACV;AAsDD,IAAA,iBAAiB,CAAC,MAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAc,CAAC;KACvC;;mHAhHU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiBnB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1D3B,u5IA6JA,EAAA,MAAA,EAAA,CAAA,w3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDpHa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u5IAAA,EAAA,MAAA,EAAA,CAAA,w3BAAA,CAAA,EAAA,CAAA;8BAOpC,KAAK,EAAA,CAAA;sBADf,KAAK;gBAcN,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,WAAW,CAAA;gBAMlB,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAKK,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBASU,QAAQ,EAAA,CAAA;sBADvB,SAAS;uBAAC,UAAU,CAAA;;;AEtBvB;AACM,SAAU,WAAW,CACzB,SAAyC,EAAA;IAEzC,MAAM,cAAc,GAAqC,EAAE,CAAC;AAC5D,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,KAAA;IACD,MAAM,WAAW,GAAsB,KAAK,CAAC;QAC3C,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC;AACtD,KAAA,CAAC,CAAC;AACH,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;AACgB,SAAA,cAAc,CAC5B,cAAgC,EAChC,WAA8B,EAAA;IAM9B,MAAM,eAAe,GAAsC,EAAE,CAAC;AAC9D,IAAA,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;AAC1C,QAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,YAAA,MAAM,kBAAkB,GACtB,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AACzE,YAAA,IACE,kBAAkB;gBAClB,kBAAkB,CAAC,KAAK,GAAG,CAAC;AAC5B,gBAAA,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,EAChD;gBACA,eAAe,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,kBAAkB,CAAC,KAAK;oBAC/B,UAAU,EAAE,kBAAkB,CAAC,UAAU;oBACzC,KAAK,EAAE,kBAAkB,CAAC,KAAK;AAChC,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;AACgB,SAAA,oBAAoB,CAClC,SAAyC,EACzC,WAA8B,EAAA;IAE9B,MAAM,gBAAgB,GAAmC,EAAE,CAAC;AAC5D,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,gBAAgB,GAAqC,EAAE,CAAC;AAC9D,QAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,YAAA,MAAM,kBAAkB,GACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,kBAAkB,EAAE;AACtB,gBAAA,gBAAgB,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,kBAAkB,CAAA,EAAA,EACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,IACzC,CAAC;AACJ,aAAA;AACF,SAAA;QACD,gBAAgB,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,YAAA,IAAI,EAAE,gBAAgB;AACvB,SAAA,CAAC,CAAC;AACJ,KAAA;AACD,IAAA,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;AACM,SAAU,iBAAiB,CAC/B,QAAsC,EAAA;;IAEtC,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,IAAI,eAAe,GAAW,CAAC,CAAC;IAChC,IAAI,cAAc,GAAW,CAAC,CAAC;AAC/B,IAAA,KAAK,MAAM,cAAc,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC1C,QAAA,cAAc,IAAI,CAAA,EAAA,GAAA,cAAc,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;AAE5C,QAAA,kBAAkB,CAAC,IAAI,CAClB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,cAAc,CACjB,EAAA,EAAA,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,IACvB,CAAC;QAEH,eAAe,GAAG,cAAc,CAAC;AAClC,KAAA;IAED,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,QAAA,kBAAkB,EAAE,kBAAkB;AACtC,QAAA,QAAQ,EAAE,cAAc;KACzB,CAAC;AACJ;;ACxHA;AACA;MAOa,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;;QAQmB,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAC3C,EAAE,CACH,CAAC;;QAUe,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;;QAOlD,IAAc,CAAA,cAAA,GAA0B,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEhD,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CACtD,qBAAqB,CACtB,CAAC;AAYe,QAAA,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACrD,GAAG,CAAC,KAAK,IAAG;YACV,MAAM,iBAAiB,GACrB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW;AAC/C,gBAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC;AACzC,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;;AAGpC,YAAA,MAAM,SAAS,GACb,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,iBAAiB,CAAC;AACvE,YAAA,MAAM,SAAS,GACb,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,iBAAiB,CAAC;;AAGvE,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa;gBAChC,OAAO;AACL,oBAAA,WAAW,EAAE,SAAS;AACtB,oBAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU;iBAC7C,CAAC;;AAEJ,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa;gBAChC,OAAO;AACL,oBAAA,WAAW,EAAE,SAAS;AACtB,oBAAA,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU;iBAC7C,CAAC;;YAEJ,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,aAAa;gBAC/B,SAAS,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,iBAAiB,IAAI,KAAK,CAAC,MAAM;aACnE,CAAC;SACH,CAAC,CACH,CAAC;AAEF;;;;;AAKE;AACO,QAAA,IAAa,CAAA,aAAA,GAAG,GAAG,CAAC;QAEpB,IAAA,CAAA,iBAAiB,GAAG;AAC3B,YAAA,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf,CAAC;AAEO,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QAEjB,IAAA,CAAA,eAAe,GAAG;;AAEzB,YAAA,YAAY,EAAE,EAAE;SACjB,CAAC;QAEO,IAAA,CAAA,cAAc,GAAG;;AAExB,YAAA,QAAQ,EAAE,GAAG;;AAEb,YAAA,eAAe,EAAE,EAAE;SACpB,CAAC;QAEO,IAAA,CAAA,eAAe,GAAG;;AAEzB,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,gBAAgB,EAAE,CAAC;;AAEnB,YAAA,WAAW,EAAE,CAAC;;AAEd,YAAA,gBAAgB,EAAE,CAAC;SACpB,CAAC;;AAGO,QAAA,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AACrB,QAAA,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AACrB,QAAA,IAAgB,CAAA,gBAAA,GAAG,GAAG,CAAC;AACvB,QAAA,IAAgB,CAAA,gBAAA,GAAG,GAAG,CAAC;AAiLvB,QAAA,IAAS,CAAA,SAAA,GAA0C,aAAa,CAAC;AACxE,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,mBAAmB;AACzB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAI;AAC7B,YAAA,OAAO,IAAI,CAAC,YAAY,CACtB,KAAK,EACL,KAAK,EACL,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,SAAS,CACjB,CAAC;AACJ,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;;QAGO,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAC3D,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;;QAGO,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAGtC,IAAI,CAAC,CAAC;;QAGP,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAGjC,IAAI,CAAC,CAAC;;QAGP,IAAQ,CAAA,QAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAI;AAC9B,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,IAAI,CAAC;AAE3C,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI,CAAC;AACzB,YAAA,MAAM,MAAM,GAAoB,MAAO,CAAC,qBAAqB,EAAE,CAAC;AAGhE,YAAA,MAAM,OAAO,GAAa,QAAQ,CAAC,KAAK;AACrC,iBAAA,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC;AACpD,iBAAA,GAAG,CAAC,IAAI,KAAK;gBACZ,IAAI;AACJ,gBAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;gBACnC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACxD,gBAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU;AAC9C,aAAA,CAAC,CAAC,CAAC;AAEN,YAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;KACH;IApVC,IACW,KAAK,CAAC,CAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;AACD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAID,IAAc,KAAK,CAAC,CAAS,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;IASD,IACW,gBAAgB,CAAC,CAAS,EAAA;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChC;AACD,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KAC1C;;IAkFD,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;KAC7E;;AAED,IAAA,kBAAkB,CAAC,KAAa,EAAA;AAC9B,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,cAAc,CAAC,eAAe;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;QACxC,OAAO,KAAK,GAAG,YAAY,CAAC;KAC7B;;IAED,mBAAmB,GAAA;AACjB,QAAA,QACE,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EACzE;KACH;;IAED,WAAW,CAAC,QAAgB,EAAE,SAAiB,EAAA;AAC7C,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AAE5E,QAAA,MAAM,SAAS,GAAW,QAAQ,GAAG,SAAS,CAAC;QAC/C,MAAM,gBAAgB,GACpB,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAW,SAAS,GAAG,gBAAgB,CAAC;QAE1D,OAAO,cAAc,GAAG,YAAY,CAAC;KACtC;;AAGD,IAAA,YAAY,CACV,SAAyC,EACzC,KAAa,EACb,WAAmB,EACnB,SAAiB,EAAA;AAEjB,QAAA,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,MAAM,OAAO,GAAG,CAAA,IAAA,EAAO,KAAK,CAAI,CAAA,EAAA,WAAW,EAAE,CAAC;AAE9C,QAAA,MAAM,WAAW,GAAsB,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAqB,gBAAgB,CAAC,GAAG,CAAC,SAAS,IAAG;AACxE,YAAA,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;;QAGH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAuC,WAAW,EAAE;AAC7D,aAAA,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACtB,aAAA,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAGvE,MAAM,SAAS,GAAG,WAAW,EAAE;aAC5B,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACtD,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrD,aAAA,KAAK,CAAC,IAAI,CAAC,CAAC;QAEf,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAEhD,QAAA,MAAM,KAAK,GAAmB,IAAI,CAAC,wBAAwB,CACzD,cAAc,EACd,MAAM,EACN,SAAS,CACV,CAAC;QAEF,MAAM,cAAc,GAAe,IAAI,CAAC,iBAAiB,CACvD,cAAc,EACd,SAAS,CACV,CAAC;AACF,QAAA,MAAM,eAAe,GAAe,IAAI,CAAC,kBAAkB,CACzD,cAAc,EACd,KAAK,EACL,SAAS,CACV,CAAC;QAEF,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAEhE,OAAO;AACL,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;SACf,CAAC;KACH;;AAGD,IAAA,wBAAwB,CACtB,WAA6B,EAC7B,MAA0C,EAC1C,SAAiB,EAAA;QAEjB,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,KAAI;YAC3C,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,KAAI;gBAC1D,MAAM,QAAQ,GAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE/D,gBAAA,MAAM,cAAc,GAClB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACnE,MAAM,eAAe,GAAW,SAAS,CAAC;gBAE1C,MAAM,UAAU,GAAW,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC3D,MAAM,UAAU,GACd,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;AAEnD,gBAAA,MAAM,IAAI,GAAG,CAAA,IAAA,EAAO,cAAc,CAAC,UAAU,GAAG,CAAC;gBAEjD,UAAU,CAAC,IAAI,CAAC;AACd,oBAAA,CAAC,EAAE,UAAU;AACb,oBAAA,CAAC,EAAE,UAAU;oBACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;AAClC,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,OAAO,EAAE,cAAc,CAAC,KAAK,KAAK,SAAS;oBAC3C,OAAO,EAAE,UAAU,CAAC,OAAO;AAC3B,oBAAA,iBAAiB,EAAE,cAAc;AAClC,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,UAAU,CAAC;KACnB;;IAGD,iBAAiB,CACf,WAA6B,EAC7B,SAAiB,EAAA;QAEjB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AACvC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;;YAExD,MAAM,SAAS,GACb,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,gBAAgB;gBACrC,IAAI,CAAC,YAAY,GAAG,CAAC;gBACrB,SAAS,GAAG,CAAC,CAAC;YAEhB,OAAO;gBACL,KAAK,EAAE,GAAG,CAAC,OAAO;AAClB,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,SAAS;aACb,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,kBAAkB,CAChB,WAA6B,EAC7B,KAAa,EACb,SAAiB,EAAA;QAEjB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YACvC,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;;YAEhE,MAAM,SAAS,GACb,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,gBAAgB;gBACrC,IAAI,CAAC,YAAY,GAAG,CAAC;gBACrB,SAAS,GAAG,CAAC,CAAC;YAEhB,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxC,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,SAAS;aACb,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;;gHA9RU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkChB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrE3B,syHAyIA,EAAA,MAAA,EAAA,CAAA,w5BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5C,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDtGa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,syHAAA,EAAA,MAAA,EAAA,CAAA,w5BAAA,CAAA,EAAA,CAAA;8BAQpC,KAAK,EAAA,CAAA;sBADf,KAAK;gBAgBC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAOK,gBAAgB,EAAA,CAAA;sBAD1B,KAAK;gBASN,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,WAAW,CAAA;;;AEtCrB,SAAU,YAAY,CAC1B,OAAsC,EAAA;IAEtC,IAAI,GAAG,GAAG,QAAQ,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;AACpB,IAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,QAAA,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;YAClC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AAClC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;;ACfA,MAAM,gBAAgB,GAAa,KAAK,CAAC;AAEzC;AACA;MAOa,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAM,CAAA,MAAA,GACrB,IAAI,eAAe,CAAsC;AACvD,YAAA;gBACE,YAAY,EAAE,MAAM,IAClB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;AACvD,gBAAA,cAAc,EAAE,CAAC,IAAI,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,MAAA,IAAI,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAA,EAAA;AACxD,gBAAA,MAAM,EAAE,EAAE;AACX,aAAA;AACF,SAAA,CAAC,CAAC;QASY,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAQhD,QAAA,IAAM,CAAA,MAAA,GAAG,GAAG,CAAC;QAEL,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CACtD,qBAAqB,CACtB,CAAC;AASO,QAAA,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AACnB,QAAA,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AACvB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;AACvB,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AACnB,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AACjB,QAAA,IAAY,CAAA,YAAA,GAAG,GAAG,CAAC;QAEnB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACpC,GAAG,CAAC,YAAY,CAAC,EACjB,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEe,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAW,gBAAgB,CAAC,CAAC;QAY5D,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QASzD,IAAU,CAAA,UAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC1E,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;YACrB,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC;YACjE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC;SAClD,CAAC,CACH,CAAC;AACe,QAAA,IAAgB,CAAA,gBAAA,GAAG,aAAa,CAAC;AAChD,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,MAAM;AACZ,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;YACrB,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC;YACjE,MAAM,cAAc,GAAG,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC;SAChD,CAAC,CACH,CAAC;AAEe,QAAA,IAAiB,CAAA,iBAAA,GAA2B,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,UAAU;AAChB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,KAAI;YACzB,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAEzD,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAG;AACjC,gBAAA,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC/C,gBAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CACjC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,EAChC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAClD,CAAC,MAAM,CAAC;AAET,gBAAA,OAAO,QAAQ,IAAI,SAAS,IAAI,QAAQ,GAAG,CAAC,CAAC;AAC/C,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACrD,GAAG,CAAC,SAAS,IACX,SAAS,CAAC,GAAG,CACX,CAAC,QAAQ,MAAoC;AAC3C,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC;AAClC,SAAA,CAAC,CACH,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAuB,CAAA,uBAAA,GAAG,aAAa,CAAC;AAC/C,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAI;;AAC1B,YAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAc,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACxC,MAAM,YAAY,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW;AAAE,oBAAA,OAAO,IAAI,CAAC;AAE/C,gBAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC/D,QAAQ,GAAG,YAAY,CAAC;AAC1B,gBAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC9D,QAAQ,GAAG,WAAW,CAAC;AAC1B,aAAA;AACD,YAAA,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AACtD,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC5D,GAAG,CAAC,MAAM,KAAK,MAAM,GAAI,MAAM,CAAC,EAAe,GAAG,gBAAgB,CAAC,CAAC,CACrE,CAAC;QAMO,IAAA,CAAA,iBAAiB,GACxB,IAAI,eAAe,CAA8C,IAAI,CAAC,CAAC;AAEhE,QAAA,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AACnC,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,iBAAiB;SACvB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KACtC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAiC;AAChD,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,MAAM,CAAA,EAAA,EACT,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;AACtC,oBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2C,CAAC;AAClE,oBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;AAC/B,wBAAA,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AAClE,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACpB,4BAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACrB,yBAAA;wBACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,qBAAA;oBACD,IACE,IAAI,CAAC,iBAAiB;wBACtB,gBAAgB;AAChB,wBAAA,MAAM,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK,EACvC;AACA,wBAAA,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;AACjD,qBAAA;oBACD,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,KACT,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM;AACxD,4BAAA,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;4BACzB,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AACtC,yBAAA,CAAC,CAAC,EACH,CAAA,CAAA;AACJ,iBAAC,CAAC,EACF,CAAA,CAAA;AACJ,SAAC,CAAC,CACH,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC/C,GAAG,CAAC,YAAY,CAAC,EACjB,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;AAEO,QAAA,IAAS,CAAA,SAAA,GAAyB,aAAa,CAAC;AACvD,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,MAAM;AACX,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,KAAI;YACtE,MAAM,OAAO,GAAG,CAAO,IAAA,EAAA,KAAK,IAAI,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAE9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC1E,MAAM,cAAc,GAClB,KAAK;gBACL,IAAI,CAAC,kBAAkB,GAAG,CAAC;AAC3B,iBAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,WAAW,EAAE;iBACzB,MAAM,CAAC,eAAe,CAAC;AACvB,iBAAA,KAAK,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;AAC7C,YAAA,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC;YACrD,MAAM,gBAAgB,GACpB,YAAY,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;AAC1D,YAAA,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC9D,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;AACvD,YAAA,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC;iBAC1C,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACnD,iBAAA,GAAG,CAAC,IAAI,KAAK;gBACZ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AACvC,gBAAA,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;AAC5B,aAAA,CAAC,CAAC;AACF,iBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAChB,GAAG,CAAC,MAAM,GAAG,eAAe;AAC1B,kBAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;kBACjD,IAAI,CACT,CAAC;AACJ,YAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,oBAAoB,GAAG,sBAAsB,CACjD,cAAc,EACd,gBAAgB,CACjB,CAAC;AACF,YAAA,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACnD,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,YAAY;AAC7B,iBAAA,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC;AAC7B,iBAAA,GAAG,CAAC,QAAQ,KAAK;AAChB,gBAAA,KAAK,EAAE,cAAc,KAAK,QAAQ,GAAG,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC;AAClE,gBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE;AAC1B,aAAA,CAAC,CAAC,CAAC;AACN,YAAA,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAEnE,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,IAAG;;AACvC,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CACxC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CAC/B,CAAC;AACF,gBAAA,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAC1C,CAAC,MAAM,EAAE,MAAM,KAAK;AAClB,oBAAA,GAAG,MAAM;AACT,oBAAA,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;iBACzC,EACD,EAAE,CACH,CAAC;AACF,gBAAA,IAAI,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;AACzD,gBAAA,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;;AAE3D,gBAAA,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;oBAC1B,IAAI,GAAG,CAAC,CAAC;AACV,iBAAA;gBACD,MAAM,MAAM,GAAG,WAAW,EAAE;AACzB,qBAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpB,qBAAA,KAAK,CAAC;AACL,oBAAA,IAAI,CAAC,MAAM;AACT,wBAAA,IAAI,CAAC,aAAa;AAClB,yBAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,oBAAA,IAAI,CAAC,WAAW;AACjB,iBAAA,CAAC,CAAC;gBACL,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,KAClC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,KACT,IAAI,EAAE,IAAI,EAAiC;yBACxC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtB,yBAAA,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EACvC,MAAM,EAAE,CAAO,IAAA,EAAA,MAAM,CAAC,UAAU,CAAG,CAAA,CAAA,EACnC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC7B,KAAK,CAAA,EAAA,EACR,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EACrB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA,CAAA,CACtB,CAAC,EAAA,CAAA,CACH,CAAC,CAAC;gBACJ,OACK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,KACT,MAAM;oBACN,IAAI;oBACJ,IAAI;oBACJ,MAAM;AACN,oBAAA,MAAM,EACN,CAAA,CAAA;AACJ,aAAC,CAAC,CAAC;;AAGH,YAAA,IAAI,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,MAAM,EAAE;gBACd,MAAM,mBAAmB,GAAG,WAAW,EAAE;AACtC,qBAAA,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;qBACzB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9B,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAChD,aAAA;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAChC,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CACtC,GAAG,CAAC,UAAU,IACZ,UAAU,CAAC,MAAM,CAOf,CAAC,KAAK,EAAE,MAAM,KAAK;AACjB,YAAA,GAAG,KAAK;YACR,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAG;;AAAC,gBAAA,QAAC;oBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7B,oBAAA,UAAU,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,mCAAI,SAAS;AAC3C,iBAAA,EAAC;aAAA,CAAC;AACJ,SAAA,EACD,EAAE,CACH,CACF,CACF,CAAC;QAEO,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CACrC,GAAG,CAAC,UAAU,IACZ,UAAU,CAAC,KAAK,CAAC,MAAM,IACrB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CACxD,CACF,EACD,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C,CAAC;QAEO,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAGnC,IAAI,CAAC,CAAC;QAEP,IAAQ,CAAA,QAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAI;AAChC,YAAA,IAAI,CAAC,aAAa;AAAE,gBAAA,OAAO,IAAI,CAAC;AAEhC,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI,CAAC;AACzB,YAAA,MAAM,UAAU,GAAsB,MAAO,CAAC,qBAAqB,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,CACxB,UAAU,CAAC,IAAI,GAAG,OAAO,EACzB,UAAU,CAAC,GAAG,GAAG,OAAO,EACxB,UAAU,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,EAC9B,UAAU,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAChC,CAAC;YAGF,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;AACvC,gBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;oBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAC/B,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAC9C,CAAC;AACF,oBAAA,IAAI,KAAK,EAAE;wBACT,OAAO,CAAC,IAAI,CAAC;4BACX,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,yBAAA,CAAC,CAAC;AACJ,qBAAA;AACF,iBAAA;AACF,aAAA;YAED,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACf,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;AACvC,oBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;wBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAC/B,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAC9C,CAAC;AACF,wBAAA,IAAI,KAAK,EAAE;4BACT,OAAO,CAAC,IAAI,CAAC;gCACX,UAAU,EAAE,MAAM,CAAC,UAAU;gCAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,6BAAA,CAAC,CAAC;AACJ,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;SAC5B,CAAC,CACH,CAAC;KACH;IAtYC,IACW,KAAK,CAAC,CAAsC,EAAA;AACrD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;AACD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAGD,IAAc,KAAK,CAAC,CAAS,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;AACD,IAAA,IAAc,KAAK,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAOD,IACW,gBAAgB,CAAC,CAAS,EAAA;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChC;AACD,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KAC1C;IAgBD,IACW,QAAQ,CAAC,CAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;AACD,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;IAMD,IACW,iBAAiB,CAAC,CAAU,EAAA;AACrC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjC;AACD,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;KAC3C;AA6ED,IAAA,iBAAiB,CAAC,MAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAc,CAAC;KACvC;;gHAtJU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,6RCzChC,uoKA0KA,EAAA,MAAA,EAAA,CAAA,syCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3C,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDjIa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uoKAAA,EAAA,MAAA,EAAA,CAAA,syCAAA,CAAA,EAAA,CAAA;8BAapC,KAAK,EAAA,CAAA;sBADf,KAAK;gBAsBK,gBAAgB,EAAA,CAAA;sBAD1B,KAAK;gBAuBK,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBASU,QAAQ,EAAA,CAAA;sBADvB,SAAS;uBAAC,UAAU,CAAA;gBAKV,iBAAiB,EAAA,CAAA;sBAD3B,KAAK;;;ME8CK,SAAS,CAAA;;sGAAT,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,iBAnGlB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;QACtB,qBAAqB;QACrB,iBAAiB;QACjB,sBAAsB;QACtB,kBAAkB;QAClB,4BAA4B;QAC5B,qBAAqB;QACrB,aAAa;QACb,QAAQ;QACR,kBAAkB;QAClB,QAAQ;QACR,WAAW;QACX,cAAc;QACd,oBAAoB;QACpB,oBAAoB;QACpB,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,mBAAmB;QACnB,aAAa;QACb,gBAAgB;QAChB,qBAAqB;QACrB,mBAAmB;QACnB,eAAe;QACf,UAAU;QACV,eAAe;QACf,cAAc;QACd,qBAAqB;QACrB,aAAa;QACb,iBAAiB;QACjB,sBAAsB;QACtB,mBAAmB;QACnB,wBAAwB;QACxB,uBAAuB;QACvB,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,iBAAiB;QACjB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAkDV,YAAY,CAAA,EAAA,OAAA,EAAA,CA/CpB,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;QACtB,qBAAqB;QACrB,iBAAiB;QACjB,sBAAsB;QACtB,kBAAkB;QAClB,4BAA4B;QAC5B,qBAAqB;QACrB,aAAa;QACb,QAAQ;QACR,kBAAkB;QAClB,QAAQ;QACR,WAAW;QACX,cAAc;QACd,oBAAoB;QACpB,oBAAoB;QACpB,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,mBAAmB;QACnB,aAAa;QACb,gBAAgB;QAChB,qBAAqB;QACrB,eAAe;QACf,UAAU;QACV,eAAe;QACf,cAAc;QACd,qBAAqB;QACrB,aAAa;QACb,iBAAiB;QACjB,sBAAsB;QACtB,mBAAmB;QACnB,wBAAwB;QACxB,uBAAuB;QACvB,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,iBAAiB;QACjB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAIT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,YAFV,YAAY,CAAA,EAAA,CAAA,CAAA;2FAEX,SAAS,EAAA,UAAA,EAAA,CAAA;kBArGrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,gBAAgB;wBAChB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,sBAAsB;wBACtB,kBAAkB;wBAClB,4BAA4B;wBAC5B,qBAAqB;wBACrB,aAAa;wBACb,QAAQ;wBACR,kBAAkB;wBAClB,QAAQ;wBACR,WAAW;wBACX,cAAc;wBACd,oBAAoB;wBACpB,oBAAoB;wBACpB,aAAa;wBACb,kBAAkB;wBAClB,aAAa;wBACb,mBAAmB;wBACnB,cAAc;wBACd,mBAAmB;wBACnB,aAAa;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;wBACf,UAAU;wBACV,eAAe;wBACf,cAAc;wBACd,qBAAqB;wBACrB,aAAa;wBACb,iBAAiB;wBACjB,sBAAsB;wBACtB,mBAAmB;wBACnB,wBAAwB;wBACxB,uBAAuB;wBACvB,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,iBAAiB;wBACjB,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,sBAAsB;wBACtB,kBAAkB;wBAClB,4BAA4B;wBAC5B,qBAAqB;wBACrB,aAAa;wBACb,QAAQ;wBACR,kBAAkB;wBAClB,QAAQ;wBACR,WAAW;wBACX,cAAc;wBACd,oBAAoB;wBACpB,oBAAoB;wBACpB,aAAa;wBACb,kBAAkB;wBAClB,aAAa;wBACb,mBAAmB;wBACnB,cAAc;wBACd,mBAAmB;wBACnB,aAAa;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,eAAe;wBACf,UAAU;wBACV,eAAe;wBACf,cAAc;wBACd,qBAAqB;wBACrB,aAAa;wBACb,iBAAiB;wBACjB,sBAAsB;wBACtB,mBAAmB;wBACnB,wBAAwB;wBACxB,uBAAuB;wBACvB,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,iBAAiB;wBACjB,kBAAkB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;iBACxB,CAAA;;;ACvJD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"rivet-health-design-system.mjs","sources":["../../../projects/riv/src/lib/icon/dom-cache.ts","../../../projects/riv/src/lib/icon/icons.ts","../../../projects/riv/src/lib/icon/icon.component.ts","../../../projects/riv/src/lib/icon/icon.component.html","../../../projects/riv/src/lib/content-toggle/text-toggle/text-toggle.component.ts","../../../projects/riv/src/lib/content-toggle/text-toggle/text-toggle.component.html","../../../projects/riv/src/lib/format/pipes/common.ts","../../../projects/riv/src/lib/format/pipes/date.pipe.ts","../../../projects/riv/src/lib/format/pipes/days.pipe.ts","../../../projects/riv/src/lib/format/pipes/dollars.pipe.ts","../../../projects/riv/src/lib/format/pipes/number.pipe.ts","../../../projects/riv/src/lib/format/pipes/option-group.pipe.ts","../../../projects/riv/src/lib/format/pipes/percentage.pipe.ts","../../../projects/riv/src/lib/format/pipes/small-currency.pipe.ts","../../../projects/riv/src/lib/modal/callout/callout.helpers.ts","../../../projects/riv/src/lib/modal/callout/lock-scroll.directive.ts","../../../projects/riv/src/lib/modal/callout/callout.component.ts","../../../projects/riv/src/lib/modal/callout/callout.component.html","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.ts","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.html","../../../projects/riv/src/lib/modal/tooltip/tooltip.directive.ts","../../../projects/riv/src/lib/format/svg-text-truncate/svg-text-truncate.directive.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.html","../../../projects/riv/src/lib/load/loading/loading.component.ts","../../../projects/riv/src/lib/load/loading/loading.component.html","../../../projects/riv/src/lib/input/button/button.component.ts","../../../projects/riv/src/lib/input/button/button.component.html","../../../projects/riv/src/lib/input/checkbox/checkbox.component.ts","../../../projects/riv/src/lib/input/checkbox/checkbox.component.html","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.ts","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.html","../../../projects/riv/src/lib/util/local-storage.ts","../../../projects/riv/src/lib/modal/help/help.component.ts","../../../projects/riv/src/lib/modal/help/help.component.html","../../../projects/riv/src/lib/navigation/link/link.component.ts","../../../projects/riv/src/lib/navigation/link/link.component.html","../../../projects/riv/src/lib/input/input-label/input-label.component.ts","../../../projects/riv/src/lib/input/input-label/input-label.component.html","../../../projects/riv/src/lib/interaction/focus-on-init.directive.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.helpers.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.html","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.html","../../../projects/riv/src/lib/input/single-select/single-select.component.ts","../../../projects/riv/src/lib/input/single-select/single-select.component.html","../../../projects/riv/src/lib/input/calendar/calendar.component.ts","../../../projects/riv/src/lib/input/calendar/calendar.component.html","../../../projects/riv/src/lib/input/date-range/date-range.component.ts","../../../projects/riv/src/lib/input/date-range/date-range.component.html","../../../projects/riv/src/lib/input/date/date.component.ts","../../../projects/riv/src/lib/input/date/date.component.html","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.ts","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.html","../../../projects/riv/src/lib/modal/callout/callout.service.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.html","../../../projects/riv/src/lib/modal/callout/callout.directive.ts","../../../projects/riv/src/lib/notification/badge/badge.component.ts","../../../projects/riv/src/lib/notification/badge/badge.component.html","../../../projects/riv/src/lib/size/content.service.ts","../../../projects/riv/src/lib/size/size.directive.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-row.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-header-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table.component.ts","../../../projects/riv/src/lib/visualization/zero-state/zero-state.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.helpers.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.html","../../../projects/riv/src/lib/visualization/trend/trend.component.ts","../../../projects/riv/src/lib/visualization/trend/trend.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.ts","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.html","../../../projects/riv/src/lib/visualization/issue/issue.component.ts","../../../projects/riv/src/lib/visualization/issue/issue.component.html","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.html","../../../projects/riv/src/lib/visualization/intervals.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.html","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.html","../../../projects/riv/src/lib/visualization/time-series/time-series.helpers.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.html","../../../projects/riv/src/lib/riv.module.ts","../../../projects/riv/src/rivet-health-design-system.ts"],"sourcesContent":["export interface CacheResult<V> {\n value: V;\n cleanup: () => void;\n}\n\n/**\n * DOM cache that clones existing elements if available.\n */\nexport class DomCache<T, V extends Node = Node> {\n private readonly nodes = new Map<T, Set<V>>();\n\n constructor(private readonly create: (key: T) => V) {}\n\n get(key: T): CacheResult<V> {\n let set = this.nodes.get(key);\n let result: V;\n if (set) {\n result = <V>set.values().next().value.cloneNode(true);\n } else {\n result = this.create(key);\n set = new Set();\n this.nodes.set(key, set);\n }\n\n set.add(result);\n\n return {\n value: result,\n cleanup: () => {\n set!.delete(result);\n if (!set!.size) {\n this.nodes.delete(key);\n }\n },\n };\n }\n}\n","const Activity = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-activity\">\\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"></polyline>\\n</svg>`;\nconst AlertCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\\n</svg>`;\nconst AlertOctagon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-octagon\">\\n <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\\n</svg>`;\nconst AlertTriangle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-triangle\">\\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\\n</svg>`;\nconst AlignLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-align-left\">\\n <line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\"></line>\\n</svg>`;\nconst Anchor = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-anchor\">\\n <circle cx=\"12\" cy=\"5\" r=\"3\"></circle><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"8\"></line><path d=\"M5 12H2a10 10 0 0 0 20 0h-3\"></path>\\n</svg>`;\nconst Archive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-archive\">\\n <polyline points=\"21 8 21 21 3 21 3 8\"></polyline><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"></rect><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><polyline points=\"19 12 12 19 5 12\"></polyline>\\n</svg>`;\nconst ArrowDownLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down-left\">\\n <line x1=\"17\" y1=\"7\" x2=\"7\" y2=\"17\"></line><polyline points=\"17 17 7 17 7 7\"></polyline>\\n</svg>`;\nconst ArrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left\">\\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line><polyline points=\"12 19 5 12 12 5\"></polyline>\\n</svg>`;\nconst ArrowLeftCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 8 8 12 12 16\"></polyline><line x1=\"16\" y1=\"12\" x2=\"8\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-right\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><polyline points=\"12 5 19 12 12 19\"></polyline>\\n</svg>`;\nconst ArrowUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up\">\\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line><polyline points=\"5 12 12 5 19 12\"></polyline>\\n</svg>`;\nconst ArrowUpRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up-right\">\\n <line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"></line><polyline points=\"7 7 17 7 17 17\"></polyline>\\n</svg>`;\nconst AtSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-at-sign\">\\n <circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"></path>\\n</svg>`;\nconst Award = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-award\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"7\"/><path d=\"M8.21 13.89 7 23l5-3 5 3-1.21-9.12\"/></svg>`;\nconst BarChart2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bar-chart-2\">\\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"></line><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"></line>\\n</svg>`;\nconst Bell = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bell\">\\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>\\n</svg>`;\nconst Book = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book\">\\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"></path><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"></path>\\n</svg>`;\nconst BookOpen = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book-open\">\\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path>\\n</svg>`;\nconst Briefcase = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-briefcase\">\\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"></path>\\n</svg>`;\nconst Calendar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-calendar\">\\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\\n</svg>`;\nconst Check = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check\">\\n <polyline points=\"20 6 9 17 4 12\"></polyline>\\n</svg>`;\nconst CheckCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-circle\">\\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\\n</svg>`;\nconst CheckSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-square\">\\n <polyline points=\"9 11 12 14 22 4\"></polyline><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"></path>\\n</svg>`;\nconst ChevronDown = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-down\\\">\\n <polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\\n</svg>`;\nconst ChevronLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-left\\\">\\n <polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\\n</svg>`;\nconst ChevronRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-right\\\">\\n <polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\\n</svg>`;\nconst ChevronsLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-left\\\">\\n <polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\\n</svg>`;\nconst ChevronsRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-right\\\">\\n <polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\\n</svg>`;\nconst ChevronUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-chevron-up\">\\n <polyline points=\"18 15 12 9 6 15\"></polyline>\\n</svg>`;\nconst Clipboard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clipboard\">\\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"></path><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\"></rect>\\n</svg>`;\nconst Clock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clock\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline>\\n</svg>`;\nconst Coffee = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-coffee\">\\n <path d=\"M18 8h1a4 4 0 0 1 0 8h-1\"></path><path d=\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"></path><line x1=\"6\" y1=\"1\" x2=\"6\" y2=\"4\"></line><line x1=\"10\" y1=\"1\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"1\" x2=\"14\" y2=\"4\"></line>\\n</svg>`;\nconst Copy = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-copy\">\\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\\n</svg>`;\nconst CornerLeftUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-corner-left-up\">\\n <polyline points=\"14 9 9 4 4 9\"></polyline><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"></path>\\n</svg>`;\nconst CreditCard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-credit-card\">\\n <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\"></rect><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"></line>\\n</svg>`;\nconst Documents = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" ><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.75 6c-.464 0-.91.169-1.237.469C7.184 6.769 7 7.176 7 7.6v12.8c0 .424.184.831.513 1.131.328.3.773.469 1.237.469h10.5c.464 0 .91-.169 1.237-.469.329-.3.513-.707.513-1.131V8a2 2 0 0 0-2-2H8.75z\" /> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 18H4.75c-.464 0-.91-.169-1.237-.469A1.534 1.534 0 0 1 3 16.4V3.6c0-.424.184-.831.513-1.131C3.84 2.169 4.286 2 4.75 2H15a2 2 0 0 1 2 2v2M17 14h-6M17 18h-6M13 10h-2\"/></svg>`;\nconst DollarSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-dollar-sign\">\\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"></line><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"></path>\\n</svg>`;\nconst Download = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download\">\\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\\n</svg>`;\nconst DownloadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download-cloud\">\\n <polyline points=\"8 17 12 21 16 17\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>\\n</svg>`;\nconst Edit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit\">\\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>\\n</svg>`;\nconst Edit2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit-2\">\\n <path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"></path>\\n</svg>`;\nconst Exchange = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.5 4l4 4-4 4M9 20l-4-4 4-4M3 8h15M6 16h15\"/></svg>`;\nconst ExternalLink = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-external-link\">\\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line>\\n</svg>`;\nconst Eye = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye\">\\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>\\n</svg>`;\nconst EyeOff = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye-off\">\\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>\\n</svg>`;\nconst File = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file\">\\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>\\n</svg>`;\nconst FilePlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-plus\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"></line><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst FileText = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-text\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline>\\n</svg>`;\nconst Filter = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-filter\">\\n <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>\\n</svg>`;\nconst Flag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-flag\">\\n <path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"></path><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"></line>\\n</svg>`;\nconst Folder = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-folder\">\\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path>\\n</svg>`;\nconst Hash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-hash\">\\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"></line><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"></line><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"></line><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"></line>\\n</svg>`;\nconst Heart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HeartActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path fill=\"currentColor\" d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HelpCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-help-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"></path><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\\n</svg>`;\nconst Home = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-home\">\\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\\n</svg>`;\nconst Inbox = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-inbox\">\\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"></polyline><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path>\\n</svg>`;\nconst Info = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-info\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\\n</svg>`;\nconst Key = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-key\">\\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"></path>\\n</svg>`;\nconst Layers = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-layers\">\\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline>\\n</svg>`;\nconst Link2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-link-2\">\\n <path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst List = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-list\">\\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\\n</svg>`;\nconst Lock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-lock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\\n</svg>`;\nconst Mail = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-mail\">\\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"></path><polyline points=\"22,6 12,13 2,6\"></polyline>\\n</svg>`;\nconst MapPin = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-map-pin\">\\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle>\\n</svg>`;\nconst Maximize = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize\">\\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path>\\n</svg>`;\nconst Maximize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize-2\">\\n <polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Menu = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-menu\">\\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\\n</svg>`;\nconst MessageCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst MessageCircleActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path fill=\"currentColor\" d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst Minimize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minimize-2\">\\n <polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Minus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst MinusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst MoreHorizontal = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-horizontal\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"19\" cy=\"12\" r=\"1\"></circle><circle cx=\"5\" cy=\"12\" r=\"1\"></circle>\\n</svg>`;\nconst MoreVertical = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-vertical\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"12\" cy=\"5\" r=\"1\"></circle><circle cx=\"12\" cy=\"19\" r=\"1\"></circle>\\n</svg>`;\nconst Paperclip = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-paperclip\">\\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"></path>\\n</svg>`;\nconst Percent = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-percent\">\\n <line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line><circle cx=\"6.5\" cy=\"6.5\" r=\"2.5\"></circle><circle cx=\"17.5\" cy=\"17.5\" r=\"2.5\"></circle>\\n</svg>`;\nconst Phone = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-phone\">\\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>\\n</svg>`;\nconst PieChart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-pie-chart\">\\n <path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"></path><path d=\"M22 12A10 10 0 0 0 12 2v10z\"></path>\\n</svg>`;\nconst PinActive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PinInactive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PlayCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-play-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"10 8 16 12 10 16 10 8\"></polygon>\\n</svg>`;\nconst Plus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst PlusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst Power = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-power\">\\n <path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"></line>\\n</svg>`;\nconst Printer = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-printer\">\\n <polyline points=\"6 9 6 2 18 2 18 9\"></polyline><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"></path><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"></rect>\\n</svg>`;\nconst RefreshCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-refresh-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><polyline points=\"1 20 1 14 7 14\"></polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"></path>\\n</svg>`;\nconst Reminder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.375 12V5.25c0-.9665-.7835-1.75-1.75-1.75H4.375c-.9665 0-1.75.7835-1.75 1.75V17.5c0 .9665.7835 1.75 1.75 1.75H12M14 1.75v3.5M7 1.75v3.5M2.625 8.75h15.75\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 22.9193c2.9915 0 5.4166-2.4252 5.4166-5.4167s-2.4251-5.4167-5.4166-5.4167c-2.9916 0-5.4167 2.4252-5.4167 5.4167s2.4251 5.4167 5.4167 5.4167Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 14.25v3.25l2.1667 1.0833\"/></svg>`;\nconst Reorder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,9 l24,0\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,15 l24,0\"/></svg>`;\nconst Reorder2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\"><path fill=\"currentColor\" d=\"M8 5h3v3H8zM8 11h3v3H8zM8 17h3v3H8zM13 5h3v3h-3zM13 11h3v3h-3zM13 17h3v3h-3z\"/></svg>`;\nconst Reply = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20 17v-1a4 4 0 0 0-4-4H4\"/></svg>`;\nconst ReplyAll = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11 17l-5-5 5-5\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M22 17v-1a4 4 0 0 0-4-4H6\"/></svg>`;\nconst RotateCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-rotate-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"></path>\\n</svg>`;\nconst Save = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-save\">\\n <path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"></path><polyline points=\"17 21 17 13 7 13 7 21\"></polyline><polyline points=\"7 3 7 8 15 8\"></polyline>\\n</svg>`;\nconst Search = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-search\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\\n</svg>`;\nconst Send = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-send\">\\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\\n</svg>`;\nconst Settings = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-settings\">\\n <circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"></path>\\n</svg>`;\nconst Share = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-share\">\\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path><polyline points=\"16 6 12 2 8 6\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"15\"></line>\\n</svg>`;\nconst Shield = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-shield\">\\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>\\n</svg>`;\nconst Sidebar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sidebar\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>\\n</svg>`;\nconst Slash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-slash\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"></line>\\n</svg>`;\nconst Sliders = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-sliders\"><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></svg>`;\nconst Smile = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-smile\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>\\n</svg>`;\nconst Star = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-star\">\\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"></polygon>\\n</svg>`;\nconst Sun = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sun\">\\n <circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>\\n</svg>`;\nconst SupportChat = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M12 16v1\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.562 20.63a9 9 0 1 1 3.666-2.133 5.014 5.014 0 0 0 2.272 2.834A4.977 4.977 0 0 1 18 22a4.983 4.983 0 0 1-3.438-1.37z\"/></svg>`;\nconst Tag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tag\">\\n <path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"></line>\\n</svg>`;\nconst Target = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-target\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle>\\n</svg>`;\nconst Tool = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tool\">\\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"></path>\\n</svg>`;\nconst Trash2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trash-2\">\\n <polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"></line><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"></line>\\n</svg>`;\nconst TrendingDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-down\">\\n <polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"></polyline><polyline points=\"17 18 23 18 23 12\"></polyline>\\n</svg>`;\nconst TrendingUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-up\">\\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"></polyline><polyline points=\"17 6 23 6 23 12\"></polyline>\\n</svg>`;\nconst Unlock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-unlock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 9.9-1\"></path>\\n</svg>`;\nconst UploadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-upload-cloud\">\\n <polyline points=\"16 16 12 12 8 16\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"></path><polyline points=\"16 16 12 12 8 16\"></polyline>\\n</svg>`;\nconst User = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user\">\\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\\n</svg>`;\nconst UserCheck = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-check\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><polyline points=\"17 11 19 13 23 9\"></polyline>\\n</svg>`;\nconst UserPlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-plus\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"></line><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>\\n</svg>`;\nconst Users = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-users\">\\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"9\" cy=\"7\" r=\"4\"></circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"></path><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"></path>\\n</svg>`;\nconst X = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x\">\\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\\n</svg>`;\nconst XCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst XSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-square\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\\n</svg>`;\nconst Zap = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" class=\"feather feather-zap\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"></polygon></svg>`;\nconst ZoomIn = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-in\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\nconst ZoomOut = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-out\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\n\nexport const icons = {\n Activity,\n AlertCircle,\n AlertOctagon,\n AlertTriangle,\n AlignLeft,\n Anchor,\n Archive,\n ArrowDown,\n ArrowDownLeft,\n ArrowLeft,\n ArrowLeftCircle,\n ArrowRight,\n ArrowUp,\n ArrowUpRight,\n AtSign,\n Award,\n BarChart2,\n Bell,\n Book,\n BookOpen,\n Briefcase,\n Calendar,\n Check,\n CheckCircle,\n CheckSquare,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n ChevronUp,\n Clipboard,\n Clock,\n Coffee,\n Copy,\n CornerLeftUp,\n CreditCard,\n Documents,\n DollarSign,\n Download,\n DownloadCloud,\n Edit,\n Edit2,\n Exchange,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePlus,\n FileText,\n Filter,\n Flag,\n Folder,\n Hash,\n Heart,\n HeartActive,\n HelpCircle,\n Home,\n Inbox,\n Info,\n Key,\n Layers,\n Link2,\n List,\n Lock,\n Mail,\n MapPin,\n Maximize,\n Maximize2,\n Menu,\n MessageCircle,\n MessageCircleActive,\n Minimize2,\n Minus,\n MinusCircle,\n MoreHorizontal,\n MoreVertical,\n Paperclip,\n Percent,\n Phone,\n PieChart,\n PinActive,\n PinInactive,\n PlayCircle,\n Plus,\n PlusCircle,\n Power,\n Printer,\n RefreshCw,\n Reminder,\n Reorder,\n Reorder2,\n Reply,\n ReplyAll,\n RotateCw,\n Save,\n Search,\n Send,\n Settings,\n Share,\n Shield,\n Sidebar,\n Slash,\n Sliders,\n Smile,\n Star,\n Sun,\n SupportChat,\n Tag,\n Target,\n Tool,\n Trash2,\n TrendingDown,\n TrendingUp,\n Unlock,\n UploadCloud,\n User,\n UserCheck,\n UserPlus,\n Users,\n X,\n XCircle,\n XSquare,\n Zap,\n ZoomIn,\n ZoomOut,\n};\n\nexport const iconsMap: { [key: string]: string } = {};\nfor (const key in icons) {\n iconsMap[key] = icons[<keyof typeof icons>key];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { CacheResult, DomCache } from './dom-cache';\nimport { icons, iconsMap } from './icons';\n\nconst cache = new DomCache<IconComponent.Name, ChildNode>(value => {\n const svgText = iconsMap[value];\n const parser = new DOMParser();\n const svg = parser.parseFromString(svgText, 'text/xml');\n return svg.documentElement;\n});\n\n@Component({\n selector: 'riv-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnDestroy {\n private cached: CacheResult<ChildNode> | undefined;\n\n constructor(private readonly element: ElementRef<HTMLElement>) {}\n\n @Input()\n set name(value: IconComponent.Name | null) {\n if (this.cached) {\n this.cached.value.remove();\n this.cached.cleanup();\n this.cached = undefined;\n }\n\n if (value == null) {\n return;\n }\n\n this.cached = cache.get(value);\n this.element.nativeElement.append(this.cached.value);\n }\n\n @Input()\n size: IconComponent.Size = 24;\n\n @Input()\n customSize: number | undefined;\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get iconSize() {\n return this.customSize ? this.customSize : this.size;\n }\n\n @Input()\n strokeWidth: number | undefined;\n\n @HostBinding('style.stroke-width')\n get calculateStrokeWidth() {\n return this.strokeWidth ? this.strokeWidth : 24 / this.iconSize;\n }\n\n ngOnDestroy() {\n this.name = null;\n }\n}\n\nexport namespace IconComponent {\n export type Name = keyof typeof icons;\n\n export const Sizes = [8, 12, 16, 24] as const;\n export type Size = (typeof Sizes)[number];\n}\n","","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-text-toggle',\n templateUrl: './text-toggle.component.html',\n styleUrls: ['./text-toggle.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextToggleComponent {\n @Input()\n showLabel: string = '';\n\n @Input()\n hideLabel: string = '';\n\n @Input()\n open: boolean = false;\n}\n","<button class=\"toggle\" type=\"button\" (click)=\"open = !open\" type=\"button\">\n <riv-icon [class.open]=\"open\" [name]=\"'ChevronDown'\" [size]=\"24\"></riv-icon>\n <div>{{ open ? hideLabel : showLabel }}</div>\n</button>\n<div *ngIf=\"open\">\n <ng-content></ng-content>\n</div>\n","export const NO_DATA_FALLBACK = '-';\n","import { DatePipe as AngularDatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDate' })\nexport class DatePipe implements PipeTransform {\n private readonly inner = new AngularDatePipe('en-US');\n transform(\n value?: string | number | Date | null,\n format: string = 'shortDate',\n ) {\n return this.inner.transform(value, format) ?? NO_DATA_FALLBACK;\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDays' })\nexport class DaysPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n const ret = this.inner.transform(value, digitsInfo ?? '1.0-2');\n return ret ? ret + (value === 1 ? ' day' : ' days') : NO_DATA_FALLBACK;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDollars' })\nexport class DollarsPipe implements PipeTransform {\n readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n return (\n this.inner.transform(\n value,\n undefined,\n undefined,\n digitsInfo ?? '1.2-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivNumber' })\nexport class NumberPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.0-0') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\n\n@Pipe({ name: 'rivOptionGroup' })\nexport class OptionGroupPipe<U extends SingleSelectComponent.Option>\n implements PipeTransform\n{\n transform(\n value?: U[],\n header?: string,\n ): SingleSelectComponent.OptionGroup<U>[] {\n return [\n {\n header: header,\n options: value ?? [],\n },\n ];\n }\n}\n","import { PercentPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivPercentage' })\nexport class PercentagePipe implements PipeTransform {\n private readonly inner = new PercentPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.1-1') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivSmallCurrency' })\nexport class SmallCurrencyPipe implements PipeTransform {\n private readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n if (value === null || value === undefined) {\n return NO_DATA_FALLBACK;\n }\n\n const num: number =\n typeof value == 'string' ? Number.parseFloat(value) : value;\n const magnitude = Math.log10(Math.abs(num));\n\n if (num === 0) {\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? '1.0-0',\n ) ?? NO_DATA_FALLBACK\n );\n }\n if (magnitude >= 9) {\n return (\n (this.inner.transform(\n num / 1_000_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'B'\n );\n }\n if (magnitude >= 6) {\n return (\n (this.inner.transform(\n num / 1_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'M'\n );\n }\n if (magnitude >= 3) {\n return (\n (this.inner.transform(\n num / 1_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'K'\n );\n }\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? num >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CalloutComponent } from './callout.component';\n\ntype Dimensions = {\n width: number;\n height: number;\n};\n\ntype Point = {\n x: number;\n y: number;\n};\n\nexport type Box = Point & Dimensions;\n\nexport type Anchor = Point & { position: CalloutComponent.AnchoredPosition };\n\nexport function getOrigin(\n anchor: Box,\n client: Dimensions,\n viewportSize: Dimensions,\n preferredPosition: CalloutComponent.AnchoredPosition,\n allowedPositions: CalloutComponent.AnchoredPosition[] | null = null,\n fallbackDirection: CalloutComponent.Direction,\n additionalOffset: number,\n): Anchor {\n let position = preferredPosition;\n const allowed =\n !allowedPositions || allowedPositions.length === 0\n ? CalloutComponent.AnchoredPositions\n : allowedPositions;\n let index = allowed.indexOf(position);\n let leastClippedIndex = index;\n let origin = originAtPosition(anchor, client, position, additionalOffset);\n let currentClippedX;\n let currentClippedY;\n let leastClipped = Infinity;\n let foundUnclipped = false;\n // Iterate through allowed positions. The first one we find that doesn't clip out of view, we use.\n // If all of the positions clip, use the one which clipped the least.\n for (\n let checkCount = 0;\n checkCount <= allowed.length && !foundUnclipped;\n checkCount++,\n index =\n fallbackDirection === 'clockwise'\n ? (index + 1) % allowed.length\n : (index - 1 + allowed.length) % allowed.length\n ) {\n position = allowed[index];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n currentClippedX =\n -1 *\n Math.min(origin.x, viewportSize.width - (origin.x + client.width), 0);\n currentClippedY =\n -1 *\n Math.min(origin.y, viewportSize.height - (origin.y + client.height), 0);\n if (currentClippedX > 0 || currentClippedY > 0) {\n const clippedArea =\n currentClippedX * currentClippedY +\n currentClippedX * (client.height - currentClippedY) +\n currentClippedY * (client.width - currentClippedX);\n if (leastClipped > clippedArea) {\n leastClipped = clippedArea;\n leastClippedIndex = index;\n }\n } else {\n foundUnclipped = true;\n }\n }\n if (!foundUnclipped) {\n position = allowed[leastClippedIndex];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n origin.y = origin.y < 0 ? 4 : origin.y;\n }\n return { ...origin, position };\n}\n\nexport function originAtPosition(\n anchor: Box,\n client: Dimensions,\n position: CalloutComponent.AnchoredPosition,\n offset: number,\n): Point {\n switch (position) {\n case 'top-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y - client.height - offset,\n };\n case 'top-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y - client.height - offset,\n };\n case 'top-right':\n return {\n x: anchor.x,\n y: anchor.y - client.height - offset,\n };\n case 'right-top':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y,\n };\n case 'center-right':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'right-bottom':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'bottom-right':\n return {\n x: anchor.x,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y + anchor.height + offset,\n };\n case 'left-bottom':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'center-left':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'left-top':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y,\n };\n }\n}\n","import { Directive, Injectable, Input, OnDestroy, OnInit } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LockScrollContextService {\n private stack = 0;\n\n getContext() {\n return this.stack;\n }\n\n pushContext() {\n return ++this.stack;\n }\n\n popContext() {\n return --this.stack;\n }\n\n public scrollPosition: number = 0;\n}\n\n@Directive({ selector: '[rivLockScroll]' })\nexport class LockScrollDirective implements OnInit, OnDestroy {\n constructor(private readonly context: LockScrollContextService) {}\n\n @Input('rivLockScroll')\n lock: boolean = false;\n\n ngOnInit() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.pushContext();\n if (oldContext === 0 && newContext === 1) {\n this.lockScroll();\n }\n }\n }\n\n ngOnDestroy() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.popContext();\n if (oldContext === 1 && newContext === 0) {\n this.unlockScroll();\n }\n }\n }\n\n private lockScroll() {\n this.context.scrollPosition = document.documentElement.scrollTop;\n document.body.style.position = 'fixed';\n document.body.style.overflow = 'hidden';\n document.body.style.width = '100%';\n document.body.style.height = '100%';\n document.body.style.top = `${this.context.scrollPosition * -1}px`;\n }\n\n private unlockScroll() {\n document.body.removeAttribute('style');\n document.documentElement.scrollTop = this.context.scrollPosition;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { getOrigin } from './callout.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of lifecycle hooks.\n@Component({\n selector: 'riv-callout',\n templateUrl: './callout.component.html',\n styleUrls: ['./callout.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutComponent implements AfterViewInit {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n isModal: boolean = true;\n\n @Input()\n preferredPosition: CalloutComponent.AnchoredPosition = 'bottom-right';\n\n @Input()\n allowedPositions: CalloutComponent.AnchoredPosition[] = [\n ...CalloutComponent.AnchoredPositions,\n ];\n\n @Input()\n fallbackDirection: CalloutComponent.Direction = 'counter-clockwise';\n\n @Input()\n showCaret: boolean = true;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @ViewChild('content') content: ElementRef<HTMLDivElement> | null = null;\n\n @ViewChild('scrim', { static: false }) scrim: ElementRef<HTMLElement> | null =\n null;\n\n scrimClick(evt: MouseEvent) {\n if (evt.target === this.scrim?.nativeElement) {\n this.close.emit();\n }\n }\n\n left: number = 0;\n top: number = 0;\n resolvedPosition: CalloutComponent.AnchoredPosition = this.preferredPosition;\n\n ngAfterViewInit() {\n const windowSize = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n if (this.anchor === null || this.content === null || this.scrim === null)\n return;\n\n const scrimRect = this.scrim.nativeElement.getBoundingClientRect();\n\n const anchorRect =\n this.anchor instanceof Element\n ? this.anchor.getBoundingClientRect()\n : this.anchor;\n\n const anchorBounds = {\n x: anchorRect.left - scrimRect.left, // In most cases, the scrim will be positioned at (0,0), but if it's not, this will make sure the callout is positioned correctly regardless.\n y: anchorRect.top - scrimRect.top,\n width: anchorRect.right - anchorRect.left,\n height: anchorRect.bottom - anchorRect.top,\n };\n\n const calloutSize = {\n width: this.content.nativeElement.clientWidth,\n height: this.content.nativeElement.clientHeight,\n };\n\n const calloutOrigin = getOrigin(\n anchorBounds,\n calloutSize,\n windowSize,\n this.preferredPosition,\n this.allowedPositions,\n this.fallbackDirection,\n this.showCaret ? 8 : 0,\n );\n\n this.left = calloutOrigin.x;\n this.top = calloutOrigin.y;\n this.resolvedPosition = calloutOrigin.position;\n this.cdr.detectChanges();\n }\n\n @Output()\n readonly close = new EventEmitter();\n}\n\nexport namespace CalloutComponent {\n export const Themes = ['light', 'dark'] as const;\n export type Theme = (typeof Themes)[number];\n\n export const AnchoredPositions = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'right-top',\n 'center-right',\n 'right-bottom',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left',\n 'left-bottom',\n 'center-left',\n 'left-top',\n ] as const;\n export type AnchoredPosition = (typeof AnchoredPositions)[number];\n\n export const Directions = ['clockwise', 'counter-clockwise'] as const;\n export type Direction = (typeof Directions)[number];\n}\n","<div\n #scrim\n class=\"scrim\"\n [class.full]=\"isModal\"\n (click)=\"$event.stopPropagation(); scrimClick($event)\"\n>\n <div\n class=\"callout\"\n [ngClass]=\"[theme, resolvedPosition]\"\n [class.caret]=\"showCaret\"\n [style.left.px]=\"left\"\n [style.top.px]=\"top\"\n [rivLockScroll]=\"isModal\"\n #content\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutComponent } from '../callout/callout.component';\n\nfunction isTemplate(\n v: string | TemplateRef<unknown>,\n): v is TemplateRef<unknown> {\n return typeof v !== 'string';\n}\n\n@Component({\n selector: 'riv-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n content?: string | TemplateRef<unknown>;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @Input()\n maxWidth: string = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n preferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Output()\n onMouseEnter = new EventEmitter<MouseEvent>();\n\n @Output()\n onMouseLeave = new EventEmitter<MouseEvent>();\n\n @HostListener('mouseleave') _onMouseLeave(evt: MouseEvent) {\n this.onMouseLeave.emit(evt);\n }\n\n @HostListener('mouseenter') _onMouseEnter(evt: MouseEvent) {\n this.onMouseEnter.emit(evt);\n }\n\n readonly isTemplate = isTemplate;\n readonly allowedPositions = [...TooltipComponent.AnchoredPositions];\n}\n\nexport namespace TooltipComponent {\n export const AnchoredPositions = [\n 'top-center',\n 'center-right',\n 'bottom-center',\n 'center-left',\n ] as const;\n export type AnchoredPosition = Extract<\n (typeof AnchoredPositions)[number],\n CalloutComponent.AnchoredPosition\n >;\n}\n","<riv-callout\n [anchor]=\"anchor\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n [isModal]=\"false\"\n [theme]=\"theme\"\n>\n <ng-container *ngIf=\"content && isTemplate(content); else stringContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #stringContent>\n <div class=\"string-content\" [style.max-width]=\"maxWidth\">\n {{ content }}\n </div>\n </ng-template>\n</riv-callout>\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[rivTooltip]',\n})\nexport class TooltipDirective implements OnDestroy {\n constructor(\n protected readonly el: ElementRef,\n protected readonly applicationRef: ApplicationRef,\n ) {}\n\n @Input()\n rivTooltip?: string | TemplateRef<unknown>;\n\n @Input()\n rivTooltipTheme: 'dark' | 'light' = 'dark';\n\n @Input()\n rivTooltipMaxWidth = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n rivTooltipPreferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Input()\n rivTooltipCloseDelay: number = 100;\n\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private closeTimeout?: number;\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.rivTooltip) return;\n if (this.tooltipRef) {\n this.cancelClose();\n } else {\n const tooltip = this.applicationRef.components[0].injector\n .get(ViewContainerRef)\n .createComponent(TooltipComponent);\n tooltip.instance.anchor = this.el.nativeElement;\n tooltip.instance.content = this.rivTooltip;\n tooltip.instance.theme = this.rivTooltipTheme;\n tooltip.instance.maxWidth = this.rivTooltipMaxWidth;\n tooltip.instance.preferredPosition = this.rivTooltipPreferredPosition;\n tooltip.instance.onMouseEnter.subscribe(this.cancelClose.bind(this));\n tooltip.instance.onMouseLeave.subscribe(this.initiateClose.bind(this));\n this.tooltipRef = tooltip;\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.initiateClose();\n }\n\n ngOnDestroy(): void {\n this.initiateClose();\n }\n\n private initiateClose() {\n this.closeTimeout = window.setTimeout(() => {\n this.tooltipRef?.destroy();\n this.tooltipRef = undefined;\n }, this.rivTooltipCloseDelay);\n }\n\n private cancelClose() {\n window.clearTimeout(this.closeTimeout);\n }\n}\n","import {\n ApplicationRef,\n Directive,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TooltipDirective } from '../../modal/tooltip/tooltip.directive';\n\n// Credit to boneskull on Github, whose work I used as a reference\n@Directive({\n selector: 'svg text[rivSVGTextTruncate]',\n})\nexport class SVGTextTruncateDirective\n extends TooltipDirective\n implements OnInit\n{\n @Input()\n text: string = '';\n\n @Input()\n width: number = 50;\n\n constructor(\n protected override readonly el: ElementRef,\n protected override readonly applicationRef: ApplicationRef,\n ) {\n super(el, applicationRef);\n }\n\n ngOnInit(): void {\n this.svgTruncate(this.el.nativeElement);\n }\n\n // Truncate through setting strings as the text-content and testing their width\n svgTruncate(element: SVGTextContentElement) {\n let currentLength: number = this.text.length;\n\n element.textContent = this.text;\n // If the text can fit in the given width, no truncation needed.\n if (\n currentLength > 0 &&\n element.getSubStringLength(0, currentLength) <= this.width\n ) {\n element.textContent = this.text;\n this.rivTooltip = '';\n } else {\n /*\n Test the length of each \"substring + ...\" combo until we find one that fits.\n Start by making room for the elipses by subtracting 3 from the length.\n */\n currentLength = currentLength - 3;\n let currentTextFitsInWidth: boolean = false;\n while (currentLength > 0 && !currentTextFitsInWidth) {\n const currentTextToTry: string =\n this.text.slice(0, currentLength) + '...';\n\n element.textContent = currentTextToTry;\n\n if (\n element.getSubStringLength(0, currentTextToTry.length) <= this.width\n ) {\n currentTextFitsInWidth = true;\n } else {\n currentLength--;\n }\n }\n\n // If we end up not finding a width of text that works, display just the ellipses.\n if (!currentTextFitsInWidth) {\n element.textContent = '...';\n }\n this.rivTooltip = this.text;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Self,\n} from '@angular/core';\nimport { TooltipDirective } from '../../modal/tooltip/tooltip.directive';\n\nfunction scrolled(element: HTMLElement): boolean {\n return element.offsetWidth < element.scrollWidth;\n}\n\n/**\n * Truncate the text to one line. When truncated, display the full text in a tooltip.\n */\n@Component({\n selector: '[rivTruncate]',\n styleUrls: ['./truncate.component.css'],\n templateUrl: './truncate.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [TooltipDirective],\n})\nexport class TruncateComponent {\n constructor(\n private readonly element: ElementRef,\n // For performance reasons, take more control\n @Self() private readonly tooltip: TooltipDirective,\n ) {}\n\n @Input()\n maxTooltipWidth: string = '200px';\n\n @HostListener('mouseenter')\n enter() {\n if (scrolled(this.element.nativeElement)) {\n this.tooltip.rivTooltip = this.element.nativeElement.textContent;\n this.tooltip.rivTooltipMaxWidth = this.maxTooltipWidth;\n this.tooltip.onMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n leave() {\n this.tooltip.onMouseLeave();\n }\n\n // For the auto-complete textbox.\n scrollIntoView() {\n this.element.nativeElement.scrollIntoView(false);\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingComponent {\n static readonly STROKE_WIDTH = 1.5;\n static readonly ARC_START_RADIANS = (Math.PI * 22.5) / 180;\n\n @Input()\n size: LoadingComponent.Size = 40;\n\n @Input()\n variant: LoadingComponent.Variant = 'dark';\n\n getPathData() {\n const size = this.size;\n const halfSize = size / 2;\n\n const stroke = LoadingComponent.STROKE_WIDTH;\n const halfStroke = stroke / 2;\n\n const top = halfStroke;\n const right = size - stroke;\n const radius = (size - stroke * 2) / 2;\n\n const commands = [\n `M${halfSize},${top}`,\n `L${right},${top}`,\n `L${right},${halfSize}`,\n `A ${radius} ${radius},0,1,1,${halfSize} ${top}`,\n ];\n return commands.join(' ');\n }\n\n readonly strokeWidth = LoadingComponent.STROKE_WIDTH;\n}\n\nexport namespace LoadingComponent {\n export const Sizes = [16, 40, 80] as const;\n export type Size = (typeof LoadingComponent.Sizes)[number];\n\n export const Variants = ['light', 'dark'] as const;\n export type Variant = (typeof LoadingComponent.Variants)[number];\n}\n","<svg\n [ngClass]=\"{\n dark: variant === 'dark',\n light: variant === 'light',\n small: size === 16,\n medium: size === 40,\n large: size === 80\n }\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n [attr.viewBox]=\"'0 0 ' + size + ' ' + size\"\n fill=\"none\"\n>\n <path [attr.stroke-width]=\"strokeWidth\" [attr.d]=\"getPathData()\"></path>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { LoadingComponent } from '../../load/loading/loading.component';\n\n@Component({\n selector: '[rivButton]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnChanges {\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @Input()\n loading?: boolean;\n\n @Input()\n full?: boolean;\n\n @Input()\n size: ButtonComponent.Size = 'medium';\n\n @Input()\n variant: ButtonComponent.Variant = 'basic';\n\n @Input()\n icon?: IconComponent.Name;\n\n @Input()\n iconPosition: ButtonComponent.IconPosition = 'first';\n\n @HostBinding('class')\n get classes() {\n return Object.entries({\n disabled: this.disabled || this.locked,\n full: this.full,\n loading: this.loading,\n [this.variant]: true,\n [this.size]: true,\n stacked: this.iconPosition === 'stacked',\n })\n .filter(([_, v]) => v)\n .map(([k]) => k)\n .join(' ');\n }\n\n getLoadingVariant(): LoadingComponent.Variant {\n switch (this.variant) {\n case 'basic':\n case 'caution':\n case 'ghost':\n return 'dark';\n case 'danger':\n case 'primary':\n return 'light';\n }\n }\n\n getIconSize(): IconComponent.Size {\n switch (this.size) {\n case 'xsmall':\n case 'small':\n return 16;\n case 'medium':\n case 'large':\n case 'xlarge':\n return 24;\n }\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n}\n\nexport namespace ButtonComponent {\n export const Sizes = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n ] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'basic',\n 'ghost',\n 'primary',\n 'danger',\n 'caution',\n ] as const;\n export type Variant = (typeof Variants)[number];\n\n export const IconPositions = ['first', 'last', 'stacked'] as const;\n export type IconPosition = (typeof IconPositions)[number];\n}\n","<riv-icon\n *ngIf=\"icon && (iconPosition === 'first' || iconPosition === 'stacked')\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<span><ng-content></ng-content></span>\n<riv-icon\n *ngIf=\"locked && !icon\"\n [name]=\"'Lock'\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-icon\n *ngIf=\"icon && iconPosition === 'last'\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-loading\n *ngIf=\"loading\"\n [size]=\"16\"\n [variant]=\"getLoadingVariant()\"\n></riv-loading>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent implements OnChanges {\n @Input()\n name?: string;\n\n @Input()\n identifier?: string;\n\n @Input()\n value: boolean = false;\n\n @Input()\n checkedColorToken: string = '--purp-60';\n\n @Input()\n indeterminateColorToken: string = '--baloo-50';\n\n @Input()\n checkboxTooltip?: string;\n\n @Input()\n indeterminate: boolean = false;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n required: boolean = false;\n\n @Output()\n valueChange = new EventEmitter<boolean>();\n\n emit(v: boolean) {\n this.valueChange.emit(v);\n this.ensureSynchronizedState(this.value);\n }\n\n @ViewChild('label', { static: true }) label?: ElementRef<HTMLLabelElement>;\n\n @ViewChild('input', { static: true }) input?: ElementRef<HTMLInputElement>;\n\n ensureSynchronizedState(v: boolean) {\n if (this.input) {\n this.input.nativeElement.checked = v;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('value' in changes)\n this.ensureSynchronizedState(changes['value'].currentValue);\n }\n\n isCheckboxOnly(): boolean {\n return !this.label || this.label.nativeElement.childNodes.length === 1;\n }\n\n getCheckedBackgroundColor(): string {\n return `var(${this.checkedColorToken})`;\n }\n\n getIndeterminateBackgroundColor(): string {\n return `var(${this.indeterminateColorToken})`;\n }\n}\n","<label\n #label\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isCheckboxOnly()\"\n>\n <input\n #input\n type=\"checkbox\"\n [id]=\"identifier\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n [indeterminate]=\"indeterminate\"\n (change)=\"emit(!!input.checked)\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n [style.--indeterminate-background-color]=\"getIndeterminateBackgroundColor()\"\n [rivTooltip]=\"checkboxTooltip\"\n />\n <ng-content></ng-content>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-card-checkbox',\n templateUrl: './card-checkbox.component.html',\n styleUrls: ['./card-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardCheckboxComponent extends CheckboxComponent {}\n","<label [class.disabled]=\"disabled\">\n <div\n class=\"checkbox\"\n [class.checked]=\"value\"\n [class.indeterminate]=\"indeterminate\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n [style.--indeterminate-background-color]=\"getIndeterminateBackgroundColor()\"\n >\n <riv-checkbox\n [name]=\"name\"\n [identifier]=\"identifier\"\n [value]=\"value\"\n [checkedColorToken]=\"checkedColorToken\"\n [indeterminateColorToken]=\"indeterminateColorToken\"\n [checkboxTooltip]=\"checkboxTooltip\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (valueChange)=\"valueChange.emit($event)\"\n ></riv-checkbox>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { BehaviorSubject } from 'rxjs';\n\n/**\n * A BehaviorSubject backed by localStorage.\n */\nexport class LocalStorage<\n T extends LocalStorage.Serializable,\n> extends BehaviorSubject<T> {\n constructor(private readonly key: string, defaultValue: T) {\n const rawValue = localStorage.getItem(key);\n const value = rawValue ? JSON.parse(rawValue) : undefined;\n super(value ?? defaultValue);\n }\n\n override next(value: T) {\n localStorage.setItem(this.key, JSON.stringify(value));\n super.next(value);\n }\n}\n\nexport namespace LocalStorage {\n export type Serializable =\n | string\n | number\n | boolean\n | null\n | { [property: string]: Serializable }\n | Serializable[];\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-help',\n templateUrl: './help.component.html',\n styleUrls: ['./help.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HelpComponent {\n @Input() help?: string;\n @Input() size: HelpComponent.Size = 16;\n}\n\nexport namespace HelpComponent {\n export const Sizes = [12, 16] as const;\n export type Size = (typeof HelpComponent.Sizes)[number];\n}\n","<riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"size\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: '[rivLink]',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @HostBinding('class')\n get classes() {\n return this.disabled || this.locked ? 'disabled' : '';\n }\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-input-label',\n templateUrl: './input-label.component.html',\n styleUrls: ['./input-label.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputLabelComponent {\n @Input()\n label?: string;\n\n @Input()\n help?: string;\n\n @Input()\n required: boolean = false;\n\n @Input()\n labelActionText?: string;\n\n @Output()\n labelAction = new EventEmitter();\n}\n","<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\" class=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit()\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\n@Directive({\n selector: '[rivFocusOnInit]',\n})\nexport class FocusOnInitDirective implements AfterViewInit, OnChanges {\n constructor(private readonly el: ElementRef) {}\n\n @Input('rivFocusOnInit')\n shouldFocus: boolean = true;\n\n private focusOnChange: boolean = false;\n\n ngAfterViewInit() {\n if (this.shouldFocus) {\n this.focus();\n } else {\n this.focusOnChange = true;\n }\n }\n\n ngOnChanges() {\n if (this.focusOnChange && this.shouldFocus) {\n this.focusOnChange = false;\n this.focus();\n }\n }\n\n private focus() {\n if (this.el && this.el.nativeElement) {\n if (!this.el.nativeElement.hasAttribute('tabindex')) {\n this.el.nativeElement.tabIndex = 0;\n }\n this.el.nativeElement.focus();\n }\n }\n}\n","import { HighlightComponent } from './highlight.component';\n\nexport function chunks(\n text: string,\n indices: HighlightComponent.HighlightIndices[],\n): HighlightComponent.Chunk[] {\n let lastEnd = 0;\n const chunks = [];\n for (const [start, end] of indices) {\n chunks.push(\n {\n highlight: false,\n text: text.substring(lastEnd, start),\n },\n {\n highlight: true,\n text: text.substring(start, end + 1),\n },\n );\n lastEnd = end + 1;\n }\n chunks.push({\n highlight: false,\n text: text?.substring(lastEnd, text.length),\n });\n return chunks.filter(chunk => chunk.text);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { chunks } from './highlight.helpers';\n\n@Component({\n selector: 'riv-highlight',\n templateUrl: './highlight.component.html',\n styleUrls: ['./highlight.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighlightComponent {\n @Input()\n text: string = '';\n\n @Input()\n indices: HighlightComponent.HighlightIndices[] = [];\n\n getChunks(): HighlightComponent.Chunk[] {\n return chunks(this.text, this.indices);\n }\n}\n\nexport namespace HighlightComponent {\n export type HighlightIndices = [number, number];\n\n export type Chunk = {\n highlight: boolean;\n text: string;\n };\n}\n","<span *ngFor=\"let chunk of getChunks()\" [class.highlight]=\"chunk.highlight\">{{\n chunk.text\n}}</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LoadingComponent } from '../loading/loading.component';\n\n@Component({\n selector: 'riv-loading-cover',\n templateUrl: './loading-cover.component.html',\n styleUrls: ['./loading-cover.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingCoverComponent {\n @Input()\n loading: boolean = false;\n\n @Input()\n loadingSize: LoadingComponent.Size = 40;\n\n @Input()\n errorMessage?: string;\n}\n","<ng-content></ng-content>\n<div *ngIf=\"loading\" class=\"cover\">\n <riv-loading [size]=\"loadingSize\"></riv-loading>\n</div>\n<div *ngIf=\"errorMessage\" class=\"cover\">\n <span class=\"error-icon\">🙁</span>\n <span>{{ errorMessage }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-single-select',\n templateUrl: './single-select.component.html',\n styleUrls: ['./single-select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingleSelectComponent<\n T extends SingleSelectComponent.OptionGroup<U>,\n U extends SingleSelectComponent.Option,\n> extends InputLabelComponent {\n @Input()\n groups: T[] = [];\n\n @Input()\n selectedOption: U | null = null;\n\n @Input()\n filterabilityOptions: SingleSelectComponent.FilterabilityOptions = {\n enabled: false,\n };\n\n @Input()\n loading: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n maxCalloutHeight: string = '50vh';\n\n @Input()\n noOptionsMessage: string = 'No available options';\n\n @Input()\n nodeTemplate?: TemplateRef<unknown>;\n\n @Input()\n triggerTemplate?: TemplateRef<unknown>;\n\n @Input()\n placeholder: string = 'Select...';\n\n @Input()\n disabled: boolean = false;\n\n filterQuery: string = '';\n\n @Output()\n filterQueryChange = new EventEmitter<string>();\n\n @Output()\n selectedOptionChange = new EventEmitter<U>();\n\n @ViewChild('customTriggerButton') customTriggerButton?: ElementRef;\n @ViewChild('standardTriggerButton') standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n\n getFilterPlaceholder(): string {\n if (\n this.filterabilityOptions.enabled &&\n this.filterabilityOptions.placeholder\n ) {\n return this.filterabilityOptions.placeholder;\n }\n return 'Filter options...';\n }\n\n allowedOpen(): void {\n if (!this.disabled && !this.locked) {\n this.open = true;\n }\n }\n\n public close(): void {\n this.open = false;\n }\n\n selectOption(newlySelectedOption: U) {\n this.selectedOptionChange.emit(newlySelectedOption);\n this.open = false;\n\n // Clear filter after an option is selected.\n if (this.filterabilityOptions.enabled) {\n this.filterQuery = '';\n this.filterQueryChange.emit(this.filterQuery);\n }\n }\n\n trackByHeader(i: number, group: SingleSelectComponent.OptionGroup<U>) {\n return `${i}${group.header}`;\n }\n\n trackByOption(_: number, option: U) {\n return option.id;\n }\n\n open: boolean = false;\n}\n\nexport namespace SingleSelectComponent {\n export type Option = {\n id: string;\n title: string;\n subtitle?: string;\n disabled?: boolean;\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n\n export type OptionGroup<O extends Option> = {\n header?: string;\n options: O[];\n };\n\n export type FilterabilityOptions =\n | {\n enabled: false;\n }\n | {\n enabled: true;\n placeholder?: string;\n };\n\n export function getFilterSync<T extends OptionGroup<U>, U extends Option>(\n groups: T[],\n exact: boolean = false,\n ): (query: string) => T[] {\n return function filter(query: string) {\n if (!query) return groups;\n\n const fuseOptions = {\n keys: ['title', 'subtitle'],\n includeMatches: true,\n shouldSort: true,\n threshold: exact ? 0.0 : 0.6,\n };\n\n return groups\n .map(group => {\n const fuse = new Fuse(group.options, fuseOptions);\n const matches = fuse.search(query);\n\n return {\n ...group,\n options: matches.map(match => ({\n ...match.item,\n titleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'title')\n ?.indices || []),\n ],\n subtitleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'subtitle')\n ?.indices || []),\n ],\n })),\n };\n })\n .filter(group => group.options.length > 0); // Remove empty groups\n };\n }\n}\n","<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ selectedOption }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n [rivFocusOnInit]=\"true\"\n />\n <div class=\"options\" [style.max-height]=\"maxCalloutHeight\">\n <riv-loading-cover [loading]=\"loading\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectOption(node)\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"> </ng-content>\n </div>\n</riv-callout>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport {\n timeDay,\n timeDays,\n timeMonth,\n timeMonths,\n timeSunday,\n timeYear,\n timeYears,\n} from 'd3-time';\nimport { timeFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { SingleSelectComponent } from '../single-select/single-select.component';\n\nconst monthFormatter = timeFormat('%B');\nconst yearFormatter = timeFormat('%Y');\nconst dayFormatter = timeFormat('%e');\nconst weekdayNumberFormatter = timeFormat('%w');\n\nfunction getWeekdayNumber(date: Date): number {\n return parseInt(weekdayNumberFormatter(date));\n}\n\ntype DateOption = SingleSelectComponent.Option & { date: Date };\n\ntype CalendarDate = {\n date: Date;\n display: string;\n fadeIn: boolean;\n fadeOut: boolean;\n hidden: boolean;\n inCurrentMonth: boolean;\n inRange: boolean;\n roundedNe: boolean;\n roundedNw: boolean;\n roundedSe: boolean;\n roundedSw: boolean;\n selected: boolean;\n today: boolean;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarComponent {\n private readonly activeYearMonth$ = new BehaviorSubject<Date>(new Date());\n @Input()\n public set activeYearMonth(v: Date) {\n this.activeYearMonth$.next(v);\n }\n public get activeYearMonth(): Date {\n return this.activeYearMonth$.getValue();\n }\n\n private readonly displayMin$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMin,\n );\n @Input()\n public set displayMin(v: Date) {\n this.displayMin$.next(v);\n }\n public get displayMin(): Date {\n return this.displayMin$.getValue();\n }\n\n private readonly displayMax$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMax,\n );\n @Input()\n public set displayMax(v: Date) {\n this.displayMax$.next(v);\n }\n public get displayMax(): Date {\n return this.displayMax$.getValue();\n }\n\n private readonly selectableMin$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMin(v: Date | undefined) {\n this.selectableMin$.next(v);\n }\n public get selectableMin(): Date | undefined {\n return this.selectableMin$.getValue();\n }\n\n private readonly selectableMax$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMax(v: Date | undefined) {\n this.selectableMax$.next(v);\n }\n public get selectableMax(): Date | undefined {\n return this.selectableMax$.getValue();\n }\n\n private readonly omitRange$ = new BehaviorSubject<[Date, Date] | undefined>(\n undefined,\n );\n @Input()\n public set omitRange(v: [Date, Date] | undefined) {\n this.omitRange$.next(v);\n }\n public get omitRange(): [Date, Date] | undefined {\n return this.omitRange$.getValue();\n }\n\n private readonly selectedValue$ = new BehaviorSubject<\n Date | [Date, Date] | undefined\n >(undefined);\n @Input()\n public set selectedValue(v: Date | [Date, Date] | undefined) {\n this.selectedValue$.next(v);\n }\n public get selectedValue(): Date | [Date, Date] | undefined {\n return this.selectedValue$.getValue();\n }\n\n readonly yearOptions$: Observable<DateOption[]> = combineLatest([\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n activeYearMonth,\n ]) => {\n const min: Date = selectableMin ?? displayMin;\n const max: Date = selectableMax ?? displayMax;\n return timeYears(timeYear.floor(displayMin), displayMax).map(\n flooredYear => {\n const year = new Date(\n flooredYear.getFullYear(),\n activeYearMonth.getMonth(),\n );\n return {\n id: year.getFullYear().toString(),\n title: yearFormatter(year),\n disabled:\n year.getFullYear() < min.getFullYear() ||\n year.getFullYear() > max.getFullYear(),\n date: year,\n };\n },\n );\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedYearOption$ = combineLatest([\n this.yearOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([yearOptions, activeYearMonth]) =>\n yearOptions.find(\n y => y.id === activeYearMonth.getFullYear().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly monthOptions$: Observable<DateOption[]> = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n ]) => {\n const min = selectableMin ?? displayMin;\n const max = selectableMax ?? displayMax;\n return timeMonths(\n timeYear.floor(activeYearMonth),\n timeYear.floor(timeYear.offset(activeYearMonth, 1)),\n ).map(month => ({\n id: month.getMonth().toString(),\n title: monthFormatter(month),\n disabled:\n month.valueOf() < min.valueOf() || month.valueOf() > max.valueOf(),\n date: month,\n }));\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedMonthOption$ = combineLatest([\n this.monthOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([monthOptions, activeYearMonth]) =>\n monthOptions.find(\n m => m.id === activeYearMonth.getMonth().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly previousMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.selectableMin$,\n ]).pipe(\n map(([yearMonth, displayMin, selectableMin]) => {\n const min: Date = selectableMin ?? displayMin;\n const previous = timeMonth.floor(timeMonth.offset(yearMonth, -1));\n if (previous.valueOf() < min.valueOf()) return null;\n return previous;\n }),\n );\n\n readonly nextMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMax$,\n this.selectableMax$,\n ]).pipe(\n map(([yearMonth, displayMax, selectableMax]) => {\n const max: Date = selectableMax ?? displayMax;\n const next = timeMonth.floor(timeMonth.offset(yearMonth, 1));\n if (next.valueOf() > max.valueOf()) return null;\n return next;\n }),\n );\n\n private readonly datesInSelectedRange$: Observable<Date[]> =\n this.selectedValue$.pipe(\n map(selectedValue => {\n if (!selectedValue) return [];\n if (selectedValue instanceof Date) return [selectedValue];\n return timeDays(\n timeDay.floor(selectedValue[0]),\n timeDay.floor(timeDay.offset(selectedValue[1], 1)),\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly dates$: Observable<CalendarDate[]> = combineLatest([\n this.activeYearMonth$,\n this.selectedValue$,\n this.datesInSelectedRange$,\n this.selectableMin$,\n this.selectableMax$,\n this.omitRange$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n selectedValue,\n datesInSelectedRange,\n selectableMin,\n selectableMax,\n omitRange,\n ]) => {\n const calendarDates = timeDays(\n timeSunday.floor(activeYearMonth),\n timeSunday.ceil(timeMonth.offset(activeYearMonth, 1)),\n );\n const minCalendarDate = calendarDates[0];\n const maxCalendarDate = calendarDates[calendarDates.length - 1];\n const selectedDateCoordinates = new Map<number, [number, number]>();\n const visibleDatesInSelectedRange = datesInSelectedRange.filter(\n selected =>\n selected.valueOf() >= minCalendarDate.valueOf() &&\n selected.valueOf() <= maxCalendarDate.valueOf() &&\n (selectableMin\n ? selected.valueOf() >= selectableMin.valueOf()\n : true) &&\n (selectableMax\n ? selected.valueOf() <= selectableMax.valueOf()\n : true) &&\n (omitRange\n ? selected.valueOf() < omitRange[0].valueOf() ||\n selected.valueOf() > omitRange[1].valueOf()\n : true),\n );\n if (visibleDatesInSelectedRange.length > 0) {\n const firstVisibleSelectedDateOffset = getWeekdayNumber(\n visibleDatesInSelectedRange[0],\n );\n visibleDatesInSelectedRange.forEach((selected, i) => {\n const x = getWeekdayNumber(selected);\n const y = Math.floor((i + firstVisibleSelectedDateOffset) / 7);\n selectedDateCoordinates.set(selected.valueOf(), [x, y]);\n });\n }\n function serializeCoordinates(coordinates: [number, number]): string {\n return coordinates.join(':');\n }\n\n const visibleDatesInSelectedRangeCoordinates = new Set(\n [...selectedDateCoordinates.values()].map(serializeCoordinates),\n );\n\n function getRoundedCorners(date: Date): {\n nw: boolean;\n ne: boolean;\n se: boolean;\n sw: boolean;\n } {\n const coordinates = selectedDateCoordinates.get(date.valueOf());\n if (!coordinates)\n return { nw: false, ne: false, se: false, sw: false };\n const [x, y] = coordinates;\n const top = serializeCoordinates([x, y - 1]),\n right = serializeCoordinates([x + 1, y]),\n bottom = serializeCoordinates([x, y + 1]),\n left = serializeCoordinates([x - 1, y]);\n return {\n nw:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(left),\n ne:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(right),\n se:\n !visibleDatesInSelectedRangeCoordinates.has(right) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n sw:\n !visibleDatesInSelectedRangeCoordinates.has(left) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n };\n }\n\n const visibleDatesInSelectedRangeValues = new Set(\n visibleDatesInSelectedRange.map(selected => selected.valueOf()),\n );\n\n const today = timeDay.floor(new Date());\n\n return calendarDates.map(date => {\n const { nw, ne, se, sw } = getRoundedCorners(date);\n const dateValue = date.valueOf();\n const inRange = visibleDatesInSelectedRangeValues.has(dateValue);\n const selected = selectedValue\n ? selectedValue instanceof Date\n ? dateValue === selectedValue.valueOf()\n : dateValue === selectedValue[0].valueOf() ||\n dateValue === selectedValue[1].valueOf()\n : false;\n return {\n date,\n display: dayFormatter(date),\n fadeIn:\n inRange &&\n (dateValue ===\n Math.max(\n minCalendarDate.valueOf(),\n selectableMin?.valueOf() ?? -Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[1], 1).valueOf()\n : -Infinity)),\n fadeOut:\n inRange &&\n (dateValue ===\n Math.min(\n maxCalendarDate.valueOf(),\n selectableMax?.valueOf() ?? Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[0], -1).valueOf()\n : Infinity)),\n hidden:\n dateValue < (selectableMin?.valueOf() ?? -Infinity) ||\n dateValue > (selectableMax?.valueOf() ?? Infinity) ||\n (omitRange\n ? omitRange[0].valueOf() <= dateValue &&\n dateValue <= omitRange[1].valueOf()\n : false),\n inCurrentMonth:\n dateValue >= activeYearMonth.valueOf() &&\n dateValue < timeMonth.offset(activeYearMonth, 1).valueOf(),\n inRange,\n roundedNe: ne,\n roundedNw: nw,\n roundedSe: se,\n roundedSw: sw,\n selected,\n today: dateValue === today.valueOf(),\n };\n });\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n selectDay(day: CalendarDate) {\n if (!day.inCurrentMonth) {\n this.activeYearMonthChange.emit(timeMonth.floor(day.date));\n }\n this.dateSelect.emit(day.date);\n }\n\n @Output()\n activeYearMonthChange = new EventEmitter<Date>();\n\n @Output()\n dateSelect = new EventEmitter<Date>();\n}\n\nexport namespace CalendarComponent {\n export const defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));\n export const defaultMax = timeDay.offset(\n timeYear.floor(timeYear.offset(new Date(), 5)),\n -1,\n );\n}\n","<div class=\"controls\">\n <div>\n <ng-template #selectTrigger let-selectedOption=\"selectedOption\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ selectedOption.title || '...' }}\n </button>\n </ng-template>\n <riv-single-select\n placeholder=\"Month...\"\n [groups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-select>\n <riv-single-select\n placeholder=\"Year...\"\n [groups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-select>\n </div>\n <div\n *ngIf=\"{ prev: previousMonth$ | async, next: nextMonth$ | async }; let vm\"\n >\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowLeft'\"\n [disabled]=\"!vm.prev\"\n (click)=\"vm.prev ? activeYearMonthChange.emit(vm.prev) : null\"\n type=\"button\"\n ></button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowRight'\"\n [disabled]=\"!vm.next\"\n (click)=\"vm.next ? activeYearMonthChange.emit(vm.next) : null\"\n type=\"button\"\n ></button>\n </div>\n</div>\n<div class=\"calendar\">\n <span class=\"label\">Su</span>\n <span class=\"label\">Mo</span>\n <span class=\"label\">Tu</span>\n <span class=\"label\">We</span>\n <span class=\"label\">Th</span>\n <span class=\"label\">Fr</span>\n <span class=\"label\">Sa</span>\n <button\n *ngFor=\"let day of dates$ | async\"\n class=\"day\"\n [disabled]=\"day.hidden\"\n [class.bleed]=\"!day.inCurrentMonth\"\n [class.fade-in]=\"day.fadeIn\"\n [class.fade-out]=\"day.fadeOut\"\n [class.in-range]=\"day.inRange\"\n [class.rounded-ne]=\"day.roundedNe\"\n [class.rounded-nw]=\"day.roundedNw\"\n [class.rounded-se]=\"day.roundedSe\"\n [class.rounded-sw]=\"day.roundedSw\"\n (click)=\"selectDay(day)\"\n type=\"button\"\n >\n <span\n class=\"day-wrapper\"\n [class.selected]=\"day.selected\"\n [class.today]=\"day.today\"\n [class.hidden]=\"day.hidden\"\n >\n {{ day.display }}\n </span>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n Output,\n} from '@angular/core';\nimport { timeDay, timeMonth, timeSunday, timeWeek, timeYear } from 'd3-time';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n merge,\n scan,\n shareReplay,\n startWith,\n} from 'rxjs';\nimport { DatePipe } from '../../format/pipes/date.pipe';\nimport { LocalStorage } from '../../util/local-storage';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nimport { SingleSelectComponent } from '../single-select/single-select.component';\nconst timeQuarter = timeMonth.every(3)!;\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRangeComponent extends InputLabelComponent {\n readonly TODAY = new Date();\n readonly STORAGE_KEY = 'date-range.default';\n\n private readonly showPresets$ = new BehaviorSubject<boolean>(true);\n @Input()\n set showPresets(v: boolean) {\n this.showPresets$.next(v);\n }\n get showPresets(): boolean {\n return this.showPresets$.getValue();\n }\n\n readonly min$ = new BehaviorSubject<Date>(CalendarComponent.defaultMin);\n @Input()\n set min(v: Date) {\n this.min$.next(v);\n }\n get min(): Date {\n return this.min$.getValue();\n }\n\n readonly max$ = new BehaviorSubject<Date>(CalendarComponent.defaultMax);\n @Input()\n set max(v: Date) {\n this.max$.next(v);\n }\n get max(): Date {\n return this.max$.getValue();\n }\n\n readonly value$ = new BehaviorSubject<[Date, Date] | undefined>(undefined);\n @Input()\n set value(v: [Date, Date] | undefined) {\n this.value$.next(v);\n }\n get value(): [Date, Date] | undefined {\n return this.value$.getValue();\n }\n\n readonly placeholder$ = new BehaviorSubject<string>('Select date range...');\n @Input()\n set placeholder(v: string) {\n this.placeholder$.next(v);\n }\n get placeholder(): string {\n return this.placeholder$.getValue();\n }\n\n readonly disabled$ = new BehaviorSubject(false);\n @Input()\n set disabled(v: boolean) {\n this.disabled$.next(v);\n }\n get disabled(): boolean {\n return this.disabled$.getValue();\n }\n\n readonly open$ = new BehaviorSubject(false);\n\n readonly userSelectedPreset$ = new Subject<DateRangeComponent.Preset>();\n\n readonly userSelectedDate$ = new Subject<Date | undefined>();\n readonly selectedValue$: Observable<Date | [Date, Date] | undefined> = merge(\n this.value$,\n this.userSelectedDate$.pipe(\n scan(\n (previous: Date | [Date, Date] | undefined, date: Date | undefined) => {\n if (previous instanceof Date && date instanceof Date) {\n if (date.valueOf() >= previous.valueOf()) {\n const pair: [Date, Date] = [previous, date];\n return pair;\n }\n }\n return date;\n },\n ),\n ),\n this.userSelectedPreset$.pipe(map(preset => preset.dates)),\n ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n readonly presetFilterQuery$ = new BehaviorSubject('');\n readonly filteredPresetOptions$ = combineLatest([\n this.presetFilterQuery$,\n this.min$,\n this.max$,\n ]).pipe(\n map(([query, min, max]) =>\n DateRangeComponent.filterPresets(query).map(presets => ({\n ...presets,\n options: presets.options.filter(\n p =>\n p.dates[0].valueOf() >= min.valueOf() &&\n p.dates[1].valueOf() <= max.valueOf(),\n ),\n })),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedPreset$: Observable<DateRangeComponent.Preset | null> =\n combineLatest([\n this.selectedValue$,\n this.userSelectedPreset$.pipe(startWith(null)),\n ]).pipe(\n map(([selectedValue, userSelectedPreset]) => {\n if (selectedValue instanceof Array) {\n const options = DateRangeComponent.Presets.filter(\n preset =>\n preset.dates[0].valueOf() === selectedValue[0].valueOf() &&\n preset.dates[1].valueOf() === selectedValue[1].valueOf(),\n );\n if (options.length) {\n // Some date ranges match multiple presets, e.g. on Jan 19th, a\n // selected date range of Jan 1-19 would correspond to \"this month\n // so far,\" \"this quarter so far,\" and \"this year so far.\" We'll\n // use the user's most recent manual selection as a tie breaker\n // where possible.\n const mostRecent = options.find(\n option => option.id === userSelectedPreset?.id,\n );\n if (mostRecent) return mostRecent;\n return options[0];\n }\n }\n return null;\n }),\n );\n\n readonly favoritePresetIds$ = new LocalStorage<string[]>(\n this.STORAGE_KEY,\n [],\n );\n\n setFavorite(preset: DateRangeComponent.Preset, favorite: boolean) {\n const ids = new Set(this.favoritePresetIds$.getValue());\n if (favorite) {\n ids.add(preset.id);\n } else {\n ids.delete(preset.id);\n }\n this.favoritePresetIds$.next([...ids]);\n }\n\n readonly favoritePresets$: Observable<DateRangeComponent.Preset[]> =\n this.favoritePresetIds$.pipe(\n map(ids =>\n ids\n .map(id =>\n DateRangeComponent.Presets.find(preset => preset.id === id),\n )\n .filter((p): p is DateRangeComponent.Preset => p !== undefined),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userLeftActiveYearMonth$ = new Subject<Date>();\n readonly userRightActiveYearMonth$ = new Subject<Date>();\n\n readonly leftMin$ = this.min$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly leftMax$ = this.max$.pipe(\n map(max => timeDay.offset(timeMonth.floor(max), -1)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly rightMax$ = this.max$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftActiveYearMonth$ = combineLatest([\n this.leftMax$,\n merge(\n this.userLeftActiveYearMonth$.pipe(\n startWith(timeMonth.floor(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n map(preset => timeMonth.floor(preset.dates[0])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[0])),\n ),\n ),\n ]).pipe(\n map(([leftMax, left]) => {\n if (left.valueOf() >= leftMax.valueOf()) return timeMonth.floor(leftMax);\n else return left;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightActiveYearMonth$ = combineLatest([\n this.leftActiveYearMonth$,\n merge(\n this.userRightActiveYearMonth$.pipe(\n startWith(timeMonth.ceil(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n map(preset => timeMonth.floor(preset.dates[1])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[1])),\n ),\n ),\n this.rightMax$,\n ]).pipe(\n map(([left, userRight, rightMax$]) => {\n if (left.valueOf() >= userRight.valueOf())\n return timeMonth.floor(timeMonth.offset(left, 1));\n else if (userRight.valueOf() >= rightMax$.valueOf())\n return timeMonth.floor(rightMax$);\n else return userRight;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightMin$ = this.leftActiveYearMonth$.pipe(\n map(left => timeMonth.floor(timeMonth.offset(left, 1))),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftOmitRange$: Observable<[Date, Date]> =\n this.rightActiveYearMonth$.pipe(\n map<Date, [Date, Date]>(rightActiveYearMonth => {\n const first = timeMonth.floor(rightActiveYearMonth);\n const last = timeDay.offset(\n timeMonth.floor(timeMonth.offset(rightActiveYearMonth, 1)),\n -1,\n );\n return [first, last];\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n @Output()\n readonly valueChange: Observable<[Date, Date] | undefined> =\n this.selectedValue$.pipe(\n filter((v): v is [Date, Date] | undefined => !(v instanceof Date)),\n distinctUntilChanged(\n (previous, current) =>\n previous?.[0].valueOf() === current?.[0].valueOf() &&\n previous?.[1].valueOf() === current?.[1].valueOf(),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly displayValue$: Observable<string | undefined> =\n this.valueChange.pipe(\n map(v => {\n if (v) {\n return v.map(date => new DatePipe().transform(date)).join(' — ');\n }\n return undefined;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace DateRangeComponent {\n const today = new Date();\n\n export const Presets: (SingleSelectComponent.Option & {\n dates: [Date, Date];\n })[] = [\n {\n id: 'today',\n title: 'Today',\n subtitle: 'Today from midnight until the current time',\n dates: [timeDay(), timeDay()],\n },\n {\n id: 'yesterday',\n title: 'Yesterday',\n subtitle: 'The previous 24 hour day',\n dates: [timeDay.offset(timeDay(), -1), timeDay.offset(timeDay(), -1)],\n },\n {\n id: 'tomorrow',\n title: 'Tomorrow',\n subtitle: 'The next 24 hour day',\n dates: [timeDay.offset(timeDay(), 1), timeDay.offset(timeDay(), 1)],\n },\n {\n id: 'this_week',\n title: 'This week',\n subtitle: 'The current calendar week',\n dates: [\n timeSunday.floor(today),\n timeDay.offset(timeSunday.ceil(today), -1),\n ],\n },\n {\n id: 'this_week_so_far',\n title: 'This week so far',\n subtitle: 'The current calendar week up to now',\n dates: [timeSunday.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_week',\n title: 'Last week',\n subtitle: 'The previous calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), -1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_week',\n title: 'Next week',\n subtitle: 'The next calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), 1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), 1), -1),\n ],\n },\n {\n id: 'this_month',\n title: 'This month',\n subtitle: 'The current calendar month',\n dates: [\n timeMonth.floor(today),\n timeDay.offset(timeMonth.ceil(today), -1),\n ],\n },\n {\n id: 'this_month_so_far',\n title: 'This month so far',\n subtitle: 'The current calendar month up to now',\n dates: [timeMonth.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_month',\n title: 'Last month',\n subtitle: 'The previous calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), -1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_month',\n title: 'Next month',\n subtitle: 'The next calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), 1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), 1), -1),\n ],\n },\n {\n id: 'this_quarter',\n title: 'This quarter',\n subtitle: 'The current quarter',\n dates: [\n timeQuarter.floor(today),\n timeDay.offset(timeQuarter.ceil(today), -1),\n ],\n },\n {\n id: 'this_quarter_so_far',\n title: 'This quarter so far',\n subtitle: 'The current quarter up to now',\n dates: [timeQuarter.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_quarter',\n title: 'Last quarter',\n subtitle: 'The previous full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), -1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_quarter',\n title: 'Next quarter',\n subtitle: 'The next full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), 1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), 1), -1),\n ],\n },\n {\n id: 'this_year',\n title: 'This year',\n subtitle: 'The current calendar year',\n dates: [timeYear.floor(today), timeDay.offset(timeYear.ceil(today), -1)],\n },\n {\n id: 'this_year_so_far',\n title: 'This year so far',\n subtitle: 'The current calendar year up to now',\n dates: [timeYear.floor(today), timeDay.floor(today)],\n },\n {\n id: 'last_year',\n title: 'Last year',\n subtitle: 'The previous calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), -1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), -1), -1),\n ],\n },\n {\n id: 'next_year',\n title: 'Next year',\n subtitle: 'The next calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), 1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), 1), -1),\n ],\n },\n {\n id: 'last_7_days',\n title: 'Last 7 days',\n subtitle: 'The previous 7 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -8)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_14_days',\n title: 'Last 14 days',\n subtitle: 'The previous 14 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -15)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_30_days',\n title: 'Last 30 days',\n subtitle: 'The previous 30 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -31)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_60_days',\n title: 'Last 60 days',\n subtitle: 'The previous 60 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -61)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_90_days',\n title: 'Last 90 days',\n subtitle: 'The previous 90 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -91)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_180_days',\n title: 'Last 180 days',\n subtitle: 'The previous 180 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -181)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: 'last_365_days',\n title: 'Last 365 days',\n subtitle: 'The previous 365 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -366)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n ];\n\n export type Preset = (typeof Presets)[number];\n\n export const filterPresets = SingleSelectComponent.getFilterSync([\n {\n options: Presets,\n },\n ]);\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (value$ | async) }\"\n>\n <riv-callout\n *ngIf=\"open$ | async\"\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <ng-template #presetTpl let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n <riv-single-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search...' }\"\n (filterQueryChange)=\"presetFilterQuery$.next($event)\"\n [groups]=\"(filteredPresetOptions$ | async) ?? []\"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n [nodeTemplate]=\"presetTpl\"\n ></riv-single-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { timeMonth } from 'd3-time';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-date',\n templateUrl: './date.component.html',\n styleUrls: ['./date.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateComponent extends InputLabelComponent {\n @Input()\n min: Date = CalendarComponent.defaultMin;\n\n @Input()\n max: Date = CalendarComponent.defaultMax;\n\n @Input()\n value?: Date;\n\n @Input()\n placeholder: string = 'Select date...';\n\n @Input()\n disabled: boolean = false;\n\n activeYearMonth = timeMonth.floor(new Date());\n open = false;\n\n @Output()\n valueChange = new EventEmitter<Date>();\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open = true\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<riv-callout\n *ngIf=\"open\"\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open = false\"\n>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open = false\"\n ></riv-calendar>\n </div>\n</riv-callout>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-switch-checkbox',\n templateUrl: './switch-checkbox.component.html',\n styleUrls: ['./switch-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SwitchCheckboxComponent extends CheckboxComponent {}\n","<label\n [class.checked]=\"value\"\n [class.disabled]=\"disabled\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n>\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CalloutService {\n public calloutStack$ = new BehaviorSubject<TemplateRef<unknown>[]>([]);\n\n public add(callout: TemplateRef<unknown>) {\n this.calloutStack$.next([...this.calloutStack$.getValue(), callout]);\n }\n\n public remove(callout: TemplateRef<unknown>) {\n this.calloutStack$.next(\n this.calloutStack$.getValue().filter(c => c !== callout),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Component({\n selector: 'riv-callout-outlet',\n templateUrl: './callout-outlet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutOutletComponent {\n constructor(readonly calloutService: CalloutService) {}\n}\n","<ng-container *ngFor=\"let callout of calloutService.calloutStack$ | async\">\n <ng-container *ngTemplateOutlet=\"callout\"></ng-container>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Directive({\n selector: '[riv-callout]',\n})\nexport class CalloutDirective implements OnInit, OnDestroy {\n constructor(\n private readonly template: TemplateRef<unknown>,\n private readonly calloutService: CalloutService,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.calloutService.add(this.template);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this.calloutService.remove(this.template);\n this.cdr.detectChanges();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input()\n variant: BadgeComponent.Variant = 'brand';\n\n @Input()\n size: BadgeComponent.Size = 'medium';\n\n @HostBinding('class')\n get classes() {\n return `${this.size} ${this.variant}`;\n }\n}\n\nexport namespace BadgeComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'brand',\n 'beta',\n 'disabled',\n\n 'qualitative-safety',\n 'qualitative-caution',\n 'qualitative-warning',\n 'qualitative-danger',\n 'qualitative-danger-inverse',\n\n 'categorical-1',\n 'categorical-2',\n 'categorical-3',\n 'categorical-4',\n 'categorical-5',\n 'categorical-6',\n 'categorical-7',\n 'categorical-8',\n 'categorical-9',\n 'categorical-10',\n\n 'categorical-1-inverse',\n 'categorical-2-inverse',\n 'categorical-3-inverse',\n 'categorical-4-inverse',\n 'categorical-5-inverse',\n 'categorical-6-inverse',\n 'categorical-7-inverse',\n 'categorical-8-inverse',\n 'categorical-9-inverse',\n 'categorical-10-inverse',\n\n 'linear-1',\n 'linear-2',\n 'linear-3',\n 'linear-4',\n 'linear-5',\n 'linear-6',\n 'linear-7',\n 'linear-8',\n 'linear-9',\n 'linear-10',\n ] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Size } from './size.directive';\n\ninterface SizeChanges extends Size {\n element: Element;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ContentService {\n private sizeChangesSource = new Subject<SizeChanges>();\n sizeChanges$ = this.sizeChangesSource.asObservable();\n\n resizeObserver: ResizeObserver;\n\n constructor() {\n this.resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n this.sizeChangesSource.next({\n element: entry.target,\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n });\n }\n });\n }\n\n observe(element: HTMLElement) {\n this.resizeObserver.observe(element);\n }\n\n unobserve(element: HTMLElement) {\n this.resizeObserver.unobserve(element);\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n Observable,\n Subscription,\n debounceTime,\n filter,\n merge,\n skip,\n take,\n} from 'rxjs';\nimport { ContentService } from './content.service';\n\nexport interface Size {\n width: number;\n height: number;\n}\n\n@Directive({\n selector: '[rivClientSize]',\n})\nexport class SizeDirective implements OnInit, OnDestroy {\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly contentService: ContentService,\n private readonly zone: NgZone,\n ) {}\n\n @Output()\n rivClientSize = new EventEmitter<Size>();\n\n subscription!: Subscription;\n\n ngOnInit() {\n this.contentService.observe(this.elementRef.nativeElement);\n this.subscription = this.contentService.sizeChanges$\n .pipe(\n filter(change => change.element === this.elementRef.nativeElement),\n debounceTimeAfterFirst(10),\n )\n .subscribe(change => {\n this.rivClientSize.emit(change);\n // TODO: Hopefully we can take this out once we switch to signals and zoneless Angular\n this.zone.run(() => {});\n });\n }\n\n ngOnDestroy() {\n this.contentService.unobserve(this.elementRef.nativeElement);\n this.subscription?.unsubscribe();\n }\n}\n\nfunction debounceTimeAfterFirst(delay: number) {\n return <T>(source: Observable<T>) =>\n merge(source.pipe(take(1)), source.pipe(skip(1), debounceTime(delay)));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-row]',\n styleUrls: ['./data-table-row.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableRowComponent {\n @Input()\n @HostBinding('class.sub-row')\n public subRow: boolean = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} from '@angular/core';\nimport { DataTableRowComponent } from './data-table-row.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-cell]',\n styleUrls: ['./data-table-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableCellComponent implements OnInit {\n constructor(private readonly row: DataTableRowComponent) {}\n\n @HostBinding('class.sub-cell')\n public subCell: boolean = false;\n\n ngOnInit(): void {\n this.subCell = this.row.subRow;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-header-cell]',\n styleUrls: ['./data-table-header-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableHeaderCellComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-data-table',\n styleUrls: ['./data-table.component.css'],\n template: '<table><ng-content></ng-content></table>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-zero-state',\n template: `{{ message }}`,\n styleUrls: ['./zero-state.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZeroStateComponent {\n @Input()\n message: string = 'No data to display.';\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { arc, pie } from 'd3-shape';\n\n@Component({\n selector: 'riv-donut',\n templateUrl: './donut.component.html',\n styleUrls: ['./donut.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutComponent {\n @Input()\n displayLabel: string = '';\n\n @Input()\n displayValue: string = '';\n\n @Input()\n data: DonutComponent.DataPoint[] = [];\n\n @Input()\n displayTooltip?: string;\n\n @Input()\n size: DonutComponent.Size = 'medium';\n\n readonly HEIGHT = 256;\n\n get arcPaths() {\n const outer = (this.HEIGHT / 2) * 0.9;\n const inner = outer - 12;\n const pieArcs = pie<DonutComponent.DataPoint>()\n .sortValues(null)\n .value(d => d.value)(this.data);\n return pieArcs.map(pieArc =>\n arc<DonutComponent.DataPoint>()\n .innerRadius(inner)\n .outerRadius(outer)\n .padAngle(0.013)\n .startAngle(pieArc.startAngle)\n .endAngle(pieArc.endAngle)(pieArc.data),\n );\n }\n\n getFillStyle(idx: number): string {\n return `var(${this.data[idx].colorToken})`;\n }\n\n get empty(): boolean {\n return (\n this.data.length === 0 || this.data.every(point => point.value === 0)\n );\n }\n}\n\nexport namespace DonutComponent {\n export type DataPoint = {\n value: number;\n colorToken: string;\n };\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<div *ngIf=\"!empty; else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n [attr.height]=\"HEIGHT\"\n viewBox=\"-128 -128 256 256\"\n >\n <path\n *ngFor=\"let path of arcPaths; let i = index\"\n [attr.d]=\"path\"\n [attr.fill]=\"getFillStyle(i)\"\n ></path>\n </svg>\n <div class=\"display\">\n <div class=\"value\" [ngClass]=\"size\" [rivTooltip]=\"displayTooltip\">\n {{ displayValue }}\n </div>\n <div class=\"label\">{{ displayLabel }}</div>\n </div>\n</div>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n","export function aggregateValues(values: number[]): number[] {\n return values.map(\n (v, ix) => v + values.slice(ix + 1).reduce((acc, n) => acc + n, 0),\n );\n}\n\nexport function calcPercentageSteps(values: number[]): number[] {\n return values.flatMap((v, ix) => {\n const next = values[ix + 1];\n return next !== undefined\n ? v === 0\n ? 0\n : [Math.round(100 * (next / v))]\n : [];\n });\n}\n\nexport function calcTrends(\n values: number[],\n previousValues: number[],\n): number[] {\n if (values.length !== previousValues.length) {\n return [];\n }\n return values.map((v, ix) => v - previousValues[ix]);\n}\n\nexport function calcPoints(\n values: number[],\n sectionWidth: number,\n height: number,\n gap: number,\n): [number, number][] {\n const divisor = Math.max(...values) / height;\n const normalizedValues = values.map(\n v => height - (divisor === 0 ? 0 : Math.round(v / divisor)),\n );\n\n // plot the points along the top edge of the graph\n return normalizedValues.slice(1).flatMap((v, ix) => [\n // top left point of current section\n [gap * (ix + 1) + sectionWidth * ix, normalizedValues[ix]],\n // bottom right point of current section\n [gap * (ix + 1) + sectionWidth * (ix + 1), v],\n // top left point of next section, required for small sections under vertical lines\n [gap * (ix + 2) + sectionWidth * (ix + 1), v],\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-metric',\n templateUrl: './metric.component.html',\n styleUrls: ['./metric.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: string = '';\n\n @Input()\n size: MetricComponent.Size = 'medium';\n\n @Input()\n @HostBinding('class.card')\n card: boolean = false;\n\n @Input()\n help?: string;\n\n @Input()\n align?: 'left' | 'right' = 'left';\n\n @Input()\n valueColorToken?: string = '--type-light-high-contrast';\n\n get valueColor(): string {\n return `var(${this.valueColorToken})`;\n }\n}\n\nexport namespace MetricComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-trend',\n templateUrl: './trend.component.html',\n styleUrls: ['./trend.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TrendComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: number = 0;\n\n @Input()\n successCondition: 'positive' | 'negative' = 'positive';\n\n getClasses() {\n const conditionalClass =\n this.value === 0\n ? ''\n : this.successCondition === 'positive'\n ? this.value > 0\n ? 'success'\n : 'danger'\n : this.value < 0\n ? 'success'\n : 'danger';\n\n return 'trend ' + conditionalClass;\n }\n}\n\nexport namespace TrendComponent {\n export function calculateTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null || previousValue === 0) {\n return 0;\n }\n return currentValue / previousValue - 1;\n }\n\n export function calculatePercentageTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null) {\n return 0;\n }\n return currentValue - previousValue;\n }\n}\n","<span [class]=\"getClasses()\">\n <riv-icon\n class=\"icon\"\n [name]=\"\n value === 0 ? 'ArrowRight' : value > 0 ? 'TrendingUp' : 'TrendingDown'\n \"\n [size]=\"16\"\n ></riv-icon>\n <span>{{ label }}</span>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { area } from 'd3-shape';\nimport {\n aggregateValues,\n calcPercentageSteps,\n calcPoints,\n calcTrends,\n} from './funnel-chart.helpers';\n\n@Component({\n selector: 'riv-funnel',\n templateUrl: './funnel-chart.component.html',\n styleUrls: ['./funnel-chart.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChartComponent implements OnChanges {\n @Input()\n data: FunnelChartComponent.Data[] = [];\n\n @Input()\n isPreAggregated: boolean = false;\n\n @Input()\n graphHeight: number = 200;\n\n @Input()\n graphWidth: number = 1200;\n\n @Input()\n showConverted: boolean = true;\n\n aggregatedValues: number[] = [];\n percentageSteps: number[] = [];\n trends: number[] = [];\n path: string | null = null;\n gapWidth: number = 0;\n sectionWidth: number = 0;\n allZeroes: boolean = true;\n\n ngOnChanges() {\n this.calcValues();\n this.calcTrends();\n this.calcSpace();\n this.createPath();\n }\n\n calcValues() {\n this.aggregatedValues = this.isPreAggregated\n ? this.data.map(d => d.value)\n : aggregateValues(this.data.map(d => d.value));\n\n this.allZeroes = Math.max(...this.aggregatedValues) === 0;\n\n this.percentageSteps = calcPercentageSteps(this.aggregatedValues);\n }\n\n calcTrends() {\n const previousValues = this.data.flatMap(d =>\n d.previousValue !== null ? [d.previousValue] : [],\n );\n\n const aggregatedValues = this.isPreAggregated\n ? previousValues\n : aggregateValues(previousValues);\n\n const previousPercentageSteps = calcPercentageSteps(aggregatedValues);\n\n this.trends = calcTrends(this.percentageSteps, previousPercentageSteps);\n }\n\n calcSpace() {\n this.gapWidth = document.querySelector('.vertical-line')?.clientWidth ?? 2;\n const totalGapSpace = this.percentageSteps.length * this.gapWidth;\n\n this.sectionWidth = Math.round(\n (this.graphWidth - totalGapSpace) / (this.percentageSteps.length || 1),\n );\n }\n\n createPath() {\n const points = calcPoints(\n this.aggregatedValues,\n this.sectionWidth,\n this.graphHeight,\n this.gapWidth,\n );\n\n this.path = area()\n .x(([x, _]) => x)\n .y1(([_, y]) => y)\n .y0(this.graphHeight)(points);\n }\n}\n\nexport namespace FunnelChartComponent {\n export type Data = {\n label: string;\n value: number;\n previousValue: number | null;\n };\n}\n","<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n label=\"placeholder\"\n value=\"0\"\n ></riv-metric>\n <!-- center each metric over vertical lines -->\n <riv-metric\n *ngFor=\"let value of aggregatedValues; let ix = index\"\n class=\"metric\"\n [label]=\"data[ix]?.label ?? ''\"\n [value]=\"value.toString()\"\n [style.left.px]=\"ix * sectionWidth + ix * gapWidth\"\n ></riv-metric>\n </div>\n\n <div class=\"chart\">\n <ng-container *ngFor=\"let step of percentageSteps; let ix = index\">\n <div class=\"vertical-line\"></div>\n\n <div>\n <div *ngIf=\"showConverted && !allZeroes\" class=\"step-info\">\n {{ step }}% converted\n <riv-trend\n *ngIf=\"trends[ix] != null\"\n [label]=\"trends[ix]! + '%'\"\n [value]=\"trends[ix]!\"\n ></riv-trend>\n </div>\n\n <!-- allocate space for the graph -->\n <div\n class=\"graph-placeholder\"\n [style.width.px]=\"sectionWidth\"\n [style.height.px]=\"graphHeight\"\n ></div>\n </div>\n </ng-container>\n\n <div class=\"vertical-line\"></div>\n\n <svg\n *ngIf=\"path\"\n class=\"graph\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"graphWidth\"\n [attr.height]=\"graphHeight\"\n >\n <linearGradient id=\"gradient\">\n <stop stop-color=\"var(--purp-30)\" offset=\"0%\" />\n <stop stop-color=\"var(--brand)\" offset=\"100%\" />\n </linearGradient>\n <path [attr.d]=\"path\" fill=\"url(#gradient)\"></path>\n </svg>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-issue',\n templateUrl: './issue.component.html',\n styleUrls: ['./issue.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IssueComponent {\n @Input()\n label?: string;\n\n @Input()\n colorToken: string = '';\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n}\n","<i [style.background-color]=\"backgroundColor\"></i>\n<span *ngIf=\"label\">{{ label }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-legend-item',\n templateUrl: './legend-item.component.html',\n styleUrls: ['./legend-item.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendItemComponent {\n @Input()\n label: string = '';\n\n @Input()\n colorToken: string = '';\n\n @Input()\n style: LegendItemComponent.Style = 'solid';\n\n @Input()\n visibility: LegendItemComponent.Visibility = 'visible';\n\n @Input()\n iconTooltip?: string;\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n\n @Input()\n clickable: boolean = false;\n\n @Input()\n showCheckWhenClickable: boolean = true;\n\n @Output()\n itemClick = new EventEmitter();\n\n isLegendItemClickable(): boolean {\n return this.clickable && this.visibility !== 'locked';\n }\n}\n\nexport namespace LegendItemComponent {\n export const Styles = ['solid', 'striped'] as const;\n export type Style = (typeof Styles)[number];\n\n export const Visibilities = ['visible', 'hidden', 'locked'] as const;\n export type Visibility = (typeof Visibilities)[number];\n}\n","<button\n (click)=\"isLegendItemClickable() ? itemClick.emit() : null\"\n [rivTooltip]=\"iconTooltip\"\n type=\"button\"\n [disabled]=\"visibility === 'locked'\"\n [class.clickable]=\"clickable\"\n>\n <i\n *ngIf=\"visibility === 'visible'\"\n [class.striped]=\"style === 'striped'\"\n [style.background-color]=\"backgroundColor\"\n class=\"opacity-hover\"\n >\n <riv-icon\n *ngIf=\"clickable && showCheckWhenClickable\"\n name=\"Check\"\n [size]=\"16\"\n [strokeWidth]=\"3\"\n style=\"color: var(--white-100)\"\n ></riv-icon>\n </i>\n <i\n *ngIf=\"visibility === 'hidden'\"\n class=\"hidden-legend-item opacity-hover\"\n [class.striped]=\"style === 'striped'\"\n [style.border-color]=\"backgroundColor\"\n [style.--background-color-hover]=\"backgroundColor\"\n ></i>\n <riv-icon *ngIf=\"visibility === 'locked'\" name=\"Lock\" [size]=\"16\"></riv-icon>\n\n <span\n *ngIf=\"label\"\n [class.low-contrast]=\"visibility === 'hidden' || visibility === 'locked'\"\n >\n {{ label }}\n </span>\n</button>\n","import { TimeInterval, utcDay, utcMonth, utcWeek, utcYear } from 'd3-time';\n\nexport const intervals = ['year', 'quarter', 'month', 'week', 'day'] as const;\nexport type Interval = (typeof intervals)[number];\n\nexport function getTimeInterval(interval: Interval): TimeInterval {\n switch (interval) {\n case 'day':\n return utcDay;\n case 'week':\n return utcWeek;\n case 'month':\n return utcMonth;\n case 'quarter':\n return utcMonth.every(3)!;\n case 'year':\n return utcYear;\n }\n}\n\nexport function getMinorIntervalFormat(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return '%-d';\n case 'month':\n return '%b';\n case 'quarter':\n return 'Q%q';\n case 'year':\n return '%Y';\n }\n}\n\nexport function getMajorInterval(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return 'month';\n case 'month':\n case 'quarter':\n case 'year':\n return 'year';\n }\n}\n\nexport function getMajorIntervalFormat(\n interval: ReturnType<typeof getMajorInterval>,\n hasMultipleYears: boolean,\n) {\n switch (interval) {\n case 'year':\n return hasMultipleYears ? '%Y' : '';\n case 'month':\n return hasMultipleYears ? '%b %Y' : '%b';\n }\n}\n\nexport function getIntervalTitle(interval: Interval) {\n switch (interval) {\n case 'year':\n return 'Years';\n case 'quarter':\n return 'Quarters';\n case 'month':\n return 'Months';\n case 'week':\n return 'Weeks';\n case 'day':\n return 'Days';\n }\n}\n","import { StackedColumnComponent } from './stacked-column.component';\n\nexport function getDateRange(\n stacks: StackedColumnComponent.Stack[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const stack of stacks) {\n for (const series of stack.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n\nexport function pointReducer(points: StackedColumnComponent.Value[]) {\n return points.reduce((total, { value }) => total + value, 0);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { index } from 'd3-array';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport { stack } from 'd3-shape';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { getDateRange, pointReducer } from './stacked-column.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'month';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-stacked-column',\n templateUrl: './stacked-column.component.html',\n styleUrls: ['./stacked-column.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedColumnComponent {\n private readonly input$ = new BehaviorSubject<StackedColumnComponent.Stack[]>(\n [],\n );\n @Input()\n public set input(v: StackedColumnComponent.Stack[]) {\n this.input$.next(v);\n }\n public get input(): StackedColumnComponent.Stack[] {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(960);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<any>;\n\n private readonly HEIGHT = 300;\n\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\n\n private readonly COLUMN_WIDTHS = [8, 16, 40, 72] as const;\n private readonly MIN_COLUMN_WIDTH = this.COLUMN_WIDTHS[0];\n\n private readonly maxColumns$ = this.width$.pipe(\n map(width => {\n const innerWidth = width - this.LEFT_OFFSET;\n const columnWidthWithPadding =\n this.MIN_COLUMN_WIDTH + this.COLUMN_PADDING * 2;\n return Math.floor(innerWidth / columnWidthWithPadding);\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n getXStepsInRange(interval: Interval, minDate: Date, maxDate: Date) {\n const timeInterval = getTimeInterval(interval);\n return timeInterval.range(\n timeInterval.floor(minDate),\n timeInterval.floor(timeInterval.offset(maxDate, 1)),\n ).length;\n }\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxColumns$,\n ]).pipe(\n map(([input, maxColumns]) => {\n const [minDate, maxDate] = getDateRange(input);\n\n return intervals.filter(interval => {\n const xStepsCount = this.getXStepsInRange(interval, minDate, maxDate);\n return input.length * xStepsCount <= maxColumns;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): SingleSelectComponent.Option => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n private columnWidth$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.width$,\n ]).pipe(\n map(([input, selectedInterval, width]) => {\n const [minDate, maxDate] = getDateRange(input);\n const xStepCount = this.getXStepsInRange(\n selectedInterval,\n minDate,\n maxDate,\n );\n\n const innerWidth = width - this.LEFT_OFFSET;\n const allowedColumnWidths = this.COLUMN_WIDTHS.filter(columnWidth => {\n const columnWidthWithPadding = columnWidth + this.COLUMN_PADDING * 2;\n return (\n innerWidth - input.length * xStepCount * columnWidthWithPadding >= 0\n );\n });\n const columnWidth = allowedColumnWidths.at(-1);\n if (!columnWidth) return 0;\n\n return columnWidth;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n ]).pipe(\n map(([input, interval]) =>\n input.map((stack): StackedColumnComponent.Stack => {\n const timeInterval = getTimeInterval(interval);\n\n return {\n ...stack,\n series: stack.series.map(series => {\n const binned = new Map<number, StackedColumnComponent.Value[]>();\n for (const point of series.data) {\n const bin = timeInterval.floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(bin)!.push(point);\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: pointReducer(points),\n })),\n };\n }),\n };\n }),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly LEFT_OFFSET = 48;\n readonly COLUMN_PADDING = 4;\n\n readonly drawData$ = combineLatest([\n this.binnedData$,\n this.width$,\n this.selectedInterval$,\n this.columnWidth$,\n ]).pipe(\n map(([binnedData, width, interval, columnWidth]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n const padding = 16;\n\n const [minDate, maxDate] = getDateRange(binnedData);\n const hasMultipleYears = minDate.getFullYear() < maxDate.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const minorTimeInterval = getTimeInterval(interval);\n const xSteps = minorTimeInterval.range(\n minorTimeInterval.floor(minDate),\n minorTimeInterval.floor(minorTimeInterval.offset(maxDate, 1)),\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const fullFormatter = utcFormat(\n `${xMinorIntervalFormat} ${xMajorIntervalFormat}`,\n );\n\n const xOuterScale = scaleBand()\n .domain(xSteps.map(date => fullFormatter(date)))\n .range([this.LEFT_OFFSET, width]);\n\n const outerPadding =\n (xOuterScale.bandwidth() -\n (this.COLUMN_PADDING * (binnedData.length - 1) +\n columnWidth * binnedData.length)) /\n 2;\n\n type SeriesPoint = StackedColumnComponent.Value & {\n series: StackedColumnComponent.Series;\n };\n\n const renderInformation = binnedData.map(stackData => {\n /*\n Create an array with every data point + their associated series.\n i.e. Make an backlink for each element to its series.\n */\n const stackedTable = stackData.series.reduce<SeriesPoint[]>(\n (table, s) => [\n ...table,\n ...s.data.map(point => ({\n ...point,\n series: s,\n })),\n ],\n [],\n );\n\n /*\n Maps each of the SeriesPoints based on label.\n Then map each of those maps to a date.\n\n Example:\n If we were indexing the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get an indexed table like the following, (note this is pseudocode):\n 'January': { 'Estimates Complete': 5, 'Estimates Incomplete': 3 }\n 'February': { 'Estimates Complete': 7, 'Estimates Incomplete': 3 }\n */\n const indexedTable: Map<Date, Map<string, SeriesPoint>> = index(\n stackedTable,\n d => d.date,\n d => d.series.label,\n );\n\n /*\n The output of \"stack()\" is an array of arrays of tuples.\n The tuples unnest as [baseline, topline].\n Each \"key\" involved in the stack has an array of tuples relating to it.\n i.e. [ Date 1 Tuple, Date 2 Tuple ]\n All \"key\" arrays are contained in the outer array.\n i.e. [ Key 1 Tuples, Key 2 Tuples]\n\n We select the keys using \".keys()\".\n For our purposes, the keys are the legend elements.\n i.e. If you have two blocks of the same color, they have the same key.\n\n We select the heights of the blocks using \".value()\".\n\n We are going to stack the blocks on top of each other.\n The baseline of the first key tuples are 0.\n The baseline of the second key tuples are the topline of the associated first key tuple.\n\n Example:\n If we were stacking the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get a stack of:\n [ [ [0,5],[0,7] ], [ [5,8],[7,10] ] ]\n */\n const stacked = stack<\n typeof indexedTable extends Map<infer K, infer V> ? [K, V] : never\n >()\n .keys(stackData.series.map(v => v.label))\n .value(([_, group], key) => {\n return group.get(key)!.value;\n })(indexedTable);\n\n return { indexedTable, stacked };\n });\n\n // The domain should be based on the highest value in any stack, on any date.\n let domainMax = 0;\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }) => {\n // For each date,\n [...indexedTable.values()].forEach((pointMap, i) => {\n // For each series,\n [...pointMap.values()].forEach((_, j) => {\n domainMax = Math.max(domainMax, ...stacked[j][i]);\n });\n });\n });\n if (domainMax === 0) domainMax = 1;\n const yScale = scaleLinear()\n .domain([0, domainMax])\n .range([this.HEIGHT - padding * 2, padding]);\n\n const rects: {\n dateValue: number;\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n seriesPoint: SeriesPoint;\n }[] = [];\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }, index) => {\n // For each date,\n [...indexedTable.entries()].forEach(([date, pointMap], i) => {\n // For each series,\n [...pointMap.entries()].forEach(([_, seriesPoint], j) => {\n // Get the size of the box we are about to draw.\n const [baseline, topline] = stacked[j][i];\n\n const width = columnWidth;\n const height = yScale(baseline) - yScale(topline);\n const x =\n (xOuterScale(fullFormatter(date)) ?? 0) +\n outerPadding +\n columnWidth * index +\n this.COLUMN_PADDING * index;\n const y = yScale(baseline) - height;\n const fill = `var(${seriesPoint.series.colorToken})`;\n\n rects.push({\n dateValue: date.valueOf(),\n x,\n y,\n width,\n height,\n fill,\n striped: seriesPoint.series.style === 'striped',\n seriesPoint,\n });\n });\n });\n });\n\n const xMinorTicks = xSteps.map(date => ({\n dateValue: date.valueOf(),\n label: minorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) + xOuterScale.bandwidth() / 2,\n }));\n const xMajorTicks =\n interval !== 'year'\n ? xSteps\n .map(date => ({\n dateValue: date.valueOf(),\n label: majorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n xOuterScale.bandwidth() / 2,\n }))\n .filter(\n (tick, i, ticks) =>\n i === 0 || tick.label !== ticks[i - 1].label,\n )\n : [];\n\n const yTicks = yScale.ticks(5);\n\n const hoverBandWidth =\n renderInformation.length * columnWidth +\n (renderInformation.length + 1) * this.COLUMN_PADDING;\n const hoverBands = xSteps.map(date => ({\n dateValue: date.valueOf(),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n (xOuterScale.bandwidth() - hoverBandWidth) / 2,\n y: yScale(domainMax),\n width: hoverBandWidth,\n height: yScale(0) - yScale(domainMax),\n }));\n\n return {\n columnWidth,\n hoverBands,\n rects,\n viewBox,\n xMinorTicks,\n xMajorTicks,\n yScale,\n yTicks,\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly empty$ = this.input$.pipe(\n map(input =>\n input.every(stack =>\n stack.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredBand$ = new BehaviorSubject<{\n dateValue: number;\n event: MouseEvent;\n } | null>(null);\n\n readonly callout$ = combineLatest([this.hoveredBand$, this.binnedData$]).pipe(\n map(([hoveredBand, binnedData]) => {\n if (!hoveredBand) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n return {\n anchor,\n content: binnedData.map(stack => {\n const seriesPoints = stack.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n style: series.style,\n value:\n series.data.find(\n ({ date }) => date.valueOf() === hoveredBand.dateValue,\n )?.value ?? 0,\n }));\n return {\n title: stack.title,\n total: this.valueFormatter(\n seriesPoints.reduce((acc, point) => point.value + acc, 0),\n ),\n series: seriesPoints.map(point => ({\n ...point,\n formattedValue: this.valueFormatter(point.value),\n })),\n };\n }),\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedColumnComponent {\n export type Value = { date: Date; value: number };\n\n export type Series = {\n label: string;\n data: Value[];\n colorToken: string;\n style: 'solid' | 'striped';\n };\n\n export type Stack = {\n title?: string;\n series: Series[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"d.columnWidth\"\n [attr.height]=\"d.columnWidth\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n x1=\"0\"\n [attr.y1]=\"d.columnWidth\"\n [attr.x2]=\"d.columnWidth\"\n y2=\"0\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let tick of d.xMinorTicks\">\n <rect\n class=\"tick-background\"\n [class.focused]=\"(hoveredBand$ | async)?.dateValue === tick.dateValue\"\n [attr.x]=\"tick.x - 20\"\n [attr.y]=\"d.yScale(0) + 3\"\n width=\"40\"\n height=\"12\"\n rx=\"2\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 12\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.xMajorTicks\">\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 24\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"tick-label\" x=\"0\" [attr.y]=\"d.yScale(tick)\" dy=\"-4\">\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g *ngFor=\"let rect of d.rects\">\n <rect\n class=\"column\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.dateValue !== rect.dateValue\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <rect\n *ngFor=\"let rect of d.hoverBands\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"transparent\"\n (mouseenter)=\"\n hoveredBand$.next({ dateValue: rect.dateValue, event: $event })\n \"\n (mouseleave)=\"hoveredBand$.next(null)\"\n ></rect>\n </svg>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [theme]=\"'light'\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div class=\"callout-stack\" *ngFor=\"let stack of callout.content\">\n <div *ngIf=\"stack.title; let title\" class=\"callout-row\">\n <span class=\"series-label\">{{ title }}</span>\n <span>{{ stack.total }}</span>\n </div>\n <div *ngFor=\"let series of stack.series\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item\n [colorToken]=\"series.colorToken\"\n [style]=\"series.style\"\n ></riv-legend-item>\n <span>{{ series.label }}</span>\n </span>\n <span>{{ series.formattedValue }}</span>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-select>\n</ng-template>\n","import { InternSet, union } from 'd3-array';\nimport { ScaleLinear } from 'd3-scale';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport { StackedRowComponent } from './stacked-row.component';\n\n// A row element with a baseline, topline, and a reference to the stack it belongs to\ntype StackedRowElement = StackedRowComponent.RowElement & {\n baseline: number;\n topline: number;\n};\n\n// The data about a rectangle we display on screen\nexport type RowRectangle = {\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n rowName: string;\n stackedRowElement: StackedRowElement;\n};\n\n// The data about a row label we display on screen\nexport type RowLabel = {\n x: number;\n y: number;\n label: string;\n};\n\n// The data we are displaying in this component\nexport type StackedRowDrawData = {\n legendItems: {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n }[];\n rowHeight: number;\n rects: RowRectangle[];\n rowNames: RowLabel[];\n rowTotals: RowLabel[];\n viewBox: string;\n xScale: ScaleLinear<number, number, never>;\n xTicks: number[];\n};\n\n// Everything that describes a row we will display\nexport type RowDisplayInfo = {\n rowName: string;\n elementsButStacked: StackedRowElement[];\n rowTotal: number;\n};\n\n// Get a ordered+unique list of keys from the row elements\nexport function getKeyOrder(\n rowStacks: StackedRowComponent.RowStack[],\n): InternSet<string> {\n const allRowElements: StackedRowComponent.RowElement[] = [];\n for (const rowStack of rowStacks) {\n allRowElements.push(...rowStack.data);\n }\n const orderedKeys: InternSet<string> = union([\n ...allRowElements.map(rowElement => rowElement.label),\n ]);\n return orderedKeys;\n}\n\n// Get a list of the legend items we should show\nexport function getLegendItems(\n rowsForDisplay: RowDisplayInfo[],\n keysInOrder: InternSet<string>,\n): {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n}[] {\n const legendItemArray: ReturnType<typeof getLegendItems> = [];\n for (const rowForDisplay of rowsForDisplay) {\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowElement | undefined =\n rowForDisplay.elementsButStacked.find(element => element.label == key);\n if (\n elementMatchingKey &&\n elementMatchingKey.value > 0 &&\n !legendItemArray.find(item => item.label == key)\n ) {\n legendItemArray.push({\n label: elementMatchingKey.label,\n colorToken: elementMatchingKey.colorToken,\n style: elementMatchingKey.style,\n });\n }\n }\n }\n return legendItemArray;\n}\n\n// Make sure we have input in a standard format.\nexport function standardizeRowStacks(\n rowStacks: StackedRowComponent.RowStack[],\n keysInOrder: InternSet<string>,\n): StackedRowComponent.RowStack[] {\n const standardizedRows: StackedRowComponent.RowStack[] = [];\n for (const rowStack of rowStacks) {\n const standardizedData: StackedRowComponent.RowElement[] = [];\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowComponent.RowElement | undefined =\n rowStack.data.find(element => element.label == key);\n if (elementMatchingKey) {\n standardizedData.push({\n ...elementMatchingKey,\n value: Math.abs(elementMatchingKey.value),\n });\n }\n }\n standardizedRows.push({\n rowName: rowStack.rowName,\n data: standardizedData,\n });\n }\n return standardizedRows;\n}\n\n// Stacks the elements and creates the baselines and toplines\nexport function getRowDisplayInfo(\n rowStack: StackedRowComponent.RowStack,\n): RowDisplayInfo {\n const elementsButStacked: StackedRowElement[] = [];\n let currentBaseline: number = 0;\n let currentTopline: number = 0;\n for (const currentElement of rowStack.data) {\n currentTopline += currentElement.value ?? 0;\n\n elementsButStacked.push({\n ...currentElement,\n baseline: currentBaseline,\n topline: currentTopline,\n });\n\n currentBaseline = currentTopline;\n }\n\n return {\n rowName: rowStack.rowName,\n elementsButStacked: elementsButStacked,\n rowTotal: currentTopline,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { InternSet } from 'd3-array';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport {\n RowDisplayInfo,\n RowLabel,\n RowRectangle,\n StackedRowDrawData,\n getKeyOrder,\n getLegendItems,\n getRowDisplayInfo,\n standardizeRowStacks,\n} from './stacked-row.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n@Component({\n selector: 'riv-stacked-row',\n templateUrl: './stacked-row.component.html',\n styleUrls: ['./stacked-row.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedRowComponent {\n // This is the list of rows we will display, in the order we will display them.\n private readonly input$ = new BehaviorSubject<StackedRowComponent.RowStack[]>(\n [],\n );\n @Input()\n public set input(v: StackedRowComponent.RowStack[]) {\n this.input$.next(v);\n }\n public get input(): StackedRowComponent.RowStack[] {\n return this.input$.getValue();\n }\n\n // Width helps determine the size of the viewbox this graph is displaying in.\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n // ValueFormatter determines how we style the values in a metric and the x-axis\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<any>;\n\n private readonly chartAndRowHeights$ = this.input$.pipe(\n map(input => {\n const heightWithoutRows =\n input.length * this.SECTION_PADDING.BETWEEN_ROW +\n this.SECTION_PADDING.OUTER_TOP_BOTTOM * 2 +\n this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n // The combined height of all rows at their min/max\n const minHeight =\n input.length * this.RECTANGLE_HEIGHTS.MIN_HEIGHT + heightWithoutRows;\n const maxHeight =\n input.length * this.RECTANGLE_HEIGHTS.MAX_HEIGHT + heightWithoutRows;\n\n // If the max-sized rows don't need the target size, shrink the chart\n if (maxHeight < this.TARGET_HEIGHT)\n return {\n chartHeight: maxHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n };\n // If the min-sized rows need more than the target size, grow the chart\n if (minHeight > this.TARGET_HEIGHT)\n return {\n chartHeight: minHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MIN_HEIGHT,\n };\n // Otherwise shrink the rows to fit the target size\n return {\n chartHeight: this.TARGET_HEIGHT,\n rowHeight: (this.TARGET_HEIGHT - heightWithoutRows) / input.length,\n };\n }),\n );\n\n /*\n The layout we are shooting for is:\n\n | X Axis Labels |\n Row Name | Rectangles | Totals\n */\n readonly TARGET_HEIGHT = 300;\n\n readonly RECTANGLE_HEIGHTS = {\n MIN_HEIGHT: 12, // Sets the smallest size a row can shrink to\n MAX_HEIGHT: 42, // Sets the largest size a row can expand to\n };\n\n readonly LABEL_HEIGHT = 8;\n\n readonly SECTION_HEIGHTS = {\n // Space reserved for the x-axis labels\n X_AXIS_LABEL: 14,\n };\n\n readonly SECTION_WIDTHS = {\n // Space reserved for the name at the start of the row\n ROW_NAME: 100,\n // Space reserved for the totals at the end of the row\n ROW_TOTAL_LABEL: 72,\n };\n\n readonly SECTION_PADDING = {\n // Padding between each edge of the viewbox and the content\n OUTER_TOP_BOTTOM: 4,\n OUTER_LEFT_RIGHT: 4,\n // Padding between the bottom of one row and the top of the next row\n BETWEEN_ROW: 4,\n // Space between the row and the top of a rectangle in that row\n RECTANGLE_TO_ROW: 6,\n };\n\n // The number of X-axis segments to create, with labels at the start of each segment.\n readonly X_TICK_COUNT_MAX = 8;\n readonly X_TICK_COUNT_MIN = 3;\n readonly X_TICK_MAX_WIDTH = 900;\n readonly X_TICK_MIN_WIDTH = 400;\n\n // Zero on the X axis is after the left padding and the row name.\n locationOfXAxisZero() {\n return this.SECTION_PADDING.OUTER_LEFT_RIGHT + this.SECTION_WIDTHS.ROW_NAME;\n }\n // The end of the X axis is right before the row total and the right padding.\n locationOfXAxisEnd(width: number) {\n const spaceOnRight: number =\n this.SECTION_WIDTHS.ROW_TOTAL_LABEL +\n this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n return width - spaceOnRight;\n }\n // The y-index of the x-axis ticks\n locationOfXAxisTick() {\n return (\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL\n );\n }\n // The y-index of the top of the current row\n getTopOfRow(rowIndex: number, rowHeight: number) {\n const spaceAboveRows: number =\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n const aboveRows: number = rowIndex * rowHeight;\n const aboveRowPaddings: number =\n rowIndex * this.SECTION_PADDING.BETWEEN_ROW;\n const allAboveRows: number = aboveRows + aboveRowPaddings;\n\n return spaceAboveRows + allAboveRows;\n }\n\n // Calculate all the values we need for displaying the graph on screen.\n getDrawnData(\n rowStacks: StackedRowComponent.RowStack[],\n width: number,\n chartHeight: number,\n rowHeight: number,\n ) {\n if (rowStacks.length == 0) {\n return null;\n }\n const viewBox = `0 0 ${width} ${chartHeight}`;\n\n const keysInOrder: InternSet<string> = getKeyOrder(rowStacks);\n const standardizedRows: StackedRowComponent.RowStack[] =\n standardizeRowStacks(rowStacks, keysInOrder);\n const rowsForDisplay: RowDisplayInfo[] = standardizedRows.map(stackData => {\n return getRowDisplayInfo(stackData);\n });\n\n // The maximum value of the domain should be the highest total value from the rows.\n const domainMax = Math.max(0, ...rowsForDisplay.map(row => row.rowTotal));\n const xScale: ScaleLinear<number, number, never> = scaleLinear()\n .domain([0, domainMax])\n .range([this.locationOfXAxisZero(), this.locationOfXAxisEnd(width)]);\n\n // Setup a linear scale for tick count based on width\n const tickScale = scaleLinear()\n .domain([this.X_TICK_MIN_WIDTH, this.X_TICK_MAX_WIDTH])\n .range([this.X_TICK_COUNT_MIN, this.X_TICK_COUNT_MAX])\n .clamp(true); // Ensures the scale does not go beyond the defined range\n\n const xtickCountAdjusted = Math.round(tickScale(width));\n const xTicks = xScale.ticks(xtickCountAdjusted);\n\n const rects: RowRectangle[] = this.createRectanglesFromRows(\n rowsForDisplay,\n xScale,\n rowHeight,\n );\n\n const rowNamesToDraw: RowLabel[] = this.getRowNamesToDraw(\n rowsForDisplay,\n rowHeight,\n );\n const rowTotalsToDraw: RowLabel[] = this.getRowTotalsToDraw(\n rowsForDisplay,\n width,\n rowHeight,\n );\n\n const legendItems = getLegendItems(rowsForDisplay, keysInOrder);\n\n return {\n legendItems: legendItems,\n rowHeight: rowHeight,\n rects: rects,\n rowNames: rowNamesToDraw,\n rowTotals: rowTotalsToDraw,\n viewBox: viewBox,\n xScale: xScale,\n xTicks: xTicks,\n };\n }\n\n // Get data for all the rectangles for all the rows\n createRectanglesFromRows(\n displayRows: RowDisplayInfo[],\n xScale: ScaleLinear<number, number, never>,\n rowHeight: number,\n ): RowRectangle[] {\n const rectangles: RowRectangle[] = [];\n displayRows.forEach((currentRow, rowIndex) => {\n currentRow.elementsButStacked.forEach((currentElement, _) => {\n const topOfRow: number = this.getTopOfRow(rowIndex, rowHeight);\n\n const rectangleWidth: number =\n xScale(currentElement.topline) - xScale(currentElement.baseline);\n const rectangleHeight: number = rowHeight;\n\n const rectangleX: number = xScale(currentElement.baseline);\n const rectangleY: number =\n topOfRow + this.SECTION_PADDING.RECTANGLE_TO_ROW;\n\n const fill = `var(${currentElement.colorToken})`;\n\n rectangles.push({\n x: rectangleX,\n y: rectangleY,\n width: Math.max(rectangleWidth, 0),\n height: rectangleHeight,\n fill: fill,\n striped: currentElement.style === 'striped',\n rowName: currentRow.rowName,\n stackedRowElement: currentElement,\n });\n });\n });\n return rectangles;\n }\n\n // Get data on the row names we are drawing\n getRowNamesToDraw(\n displayRows: RowDisplayInfo[],\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row name looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: row.rowName,\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n // Get data on the row totals we are drawing\n getRowTotalsToDraw(\n displayRows: RowDisplayInfo[],\n width: number,\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = width - this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row totals looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: this.valueFormatter(row.rowTotal),\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n readonly drawData$: Observable<StackedRowDrawData | null> = combineLatest([\n this.input$,\n this.width$,\n this.chartAndRowHeights$,\n ]).pipe(\n map(([input, width, height]) => {\n return this.getDrawnData(\n input,\n width,\n height.chartHeight,\n height.rowHeight,\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // Lets us know whether to display the zero data state\n readonly empty$ = this.input$.pipe(\n map(input => input.every(stack => stack.data.length === 0)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // What rectangle we are currently hovering over\n readonly hoveredRectangle$ = new BehaviorSubject<{\n rectangle: RowRectangle;\n event: MouseEvent;\n } | null>(null);\n\n // What band we are currently hovering over\n readonly hoveredBand$ = new BehaviorSubject<{\n rowName: string;\n event: MouseEvent;\n } | null>(null);\n\n // Create the metric to display based on the currently hovered rectangle\n readonly callout$ = combineLatest([this.hoveredBand$, this.drawData$]).pipe(\n map(([hoveredBand, drawData]) => {\n if (!hoveredBand || !drawData) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.rowName === hoveredBand.rowName)\n .map(rect => ({\n rect,\n label: rect.stackedRowElement.label,\n value: this.valueFormatter(rect.stackedRowElement.value),\n colorToken: rect.stackedRowElement.colorToken,\n }));\n\n return { anchor, metrics };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedRowComponent {\n // A specifically colored section of one row.\n export type RowElement = {\n label: string; // Legend element name\n value: number;\n colorToken: string;\n style?: 'solid' | 'striped';\n };\n // The input that determines one row.\n export type RowStack = {\n rowName: string;\n data: RowElement[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n rivSVGTextTruncate\n [text]=\"rowNameToDraw.label\"\n [width]=\"SECTION_WIDTHS.ROW_NAME\"\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n ></text>\n </g>\n <g *ngFor=\"let tick of draw.xTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"draw.xScale(tick)\"\n y=\"0\"\n width=\"1\"\n height=\"100%\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"draw.xScale(tick)\"\n [attr.y]=\"locationOfXAxisTick()\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g\n *ngFor=\"let rect of draw.rects\"\n (mouseenter)=\"hoveredBand$.next({ rowName: rect.rowName, event: $event })\"\n (mouseleave)=\"hoveredBand$.next(null)\"\n >\n <rect\n class=\"row\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.rowName !== rect.rowName\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <g *ngFor=\"let rowTotalToDraw of draw.rowTotals\">\n <text\n class=\"row-total\"\n [attr.x]=\"rowTotalToDraw.x\"\n [attr.y]=\"rowTotalToDraw.y\"\n text-anchor=\"end\"\n >\n {{ rowTotalToDraw.label }}\n </text>\n </g>\n </svg>\n <legend *ngIf=\"drawData$ | async; let draw\">\n <riv-legend-item\n *ngFor=\"let item of draw.legendItems\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [style]=\"item.style ? item.style : 'solid'\"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'bottom-center'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div *ngFor=\"let metric of callout.metrics\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n","import { ScaleLinear } from 'd3-scale';\nimport { TimeSeriesComponent } from './time-series.component';\n\ntype XTick = { value: number; label: string };\n\nexport type Marker = TimeSeriesComponent.DataPoint & { x: number; y: number };\n\ntype YDrawData = TimeSeriesComponent.YConfig & {\n series: (TimeSeriesComponent.Series & {\n path: string | null;\n stroke: string;\n markers: Marker[];\n })[];\n yMax: number;\n yMin: number;\n yScale: ScaleLinear<number, number, never>;\n yTicks: number[];\n};\n\nexport type DrawData = {\n viewBox: string;\n x: {\n xScale: ScaleLinear<number, number, never>;\n xMinorTicks: XTick[];\n xMajorTicks: XTick[];\n xMax: Date;\n };\n y1: YDrawData;\n y2?: YDrawData;\n};\n\nexport function getDateRange(\n configs: TimeSeriesComponent.YConfig[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const config of configs) {\n for (const series of config.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { utcDay } from 'd3-time';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { DrawData, Marker, getDateRange } from './time-series.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'day';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS. See commit e238c2d.\n@Component({\n selector: 'riv-time-series',\n templateUrl: './time-series.component.html',\n styleUrls: ['./time-series.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimeSeriesComponent {\n private readonly input$ =\n new BehaviorSubject<TimeSeriesComponent.TimeSeriesInput>([\n {\n pointReducer: points =>\n points.reduce((total, { value }) => total + value, 0),\n valueFormatter: v => new NumberPipe().transform(v) ?? '',\n series: [],\n },\n ]);\n @Input()\n public set input(v: TimeSeriesComponent.TimeSeriesInput) {\n this.input$.next(v);\n }\n public get input(): TimeSeriesComponent.TimeSeriesInput {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n protected get width() {\n return this.width$.getValue();\n }\n\n readonly HEIGHT = 300;\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n readonly BOTTOM_OFFSET = 24;\n readonly LEFT_RIGHT_OFFSET = 48;\n readonly TOP_PADDING = 16;\n readonly LEFT_RIGHT_PADDING = 8;\n readonly BOTTOM_PADDING = 8;\n readonly Y_TICK_COUNT = 5;\n readonly POINT_RADIUS = 3.5;\n\n readonly dateRange$ = this.input$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\n\n private readonly allowLegendToggle$ = new BehaviorSubject<boolean>(false);\n @Input()\n public set allowLegendToggle(v: boolean) {\n this.allowLegendToggle$.next(v);\n }\n public get allowLegendToggle(): boolean {\n return this.allowLegendToggle$.getValue();\n }\n\n private readonly maxPoints$ = combineLatest([this.width$, this.input$]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const pointWithPadding = (this.POINT_RADIUS + 4) * 2;\n return Math.floor(innerWidth / pointWithPadding);\n }),\n );\n private readonly xMinorTickLimit$ = combineLatest([\n this.width$,\n this.input$,\n ]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const minSizePerTick = 40;\n return Math.round(innerWidth / minSizePerTick);\n }),\n );\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxPoints$,\n ]).pipe(\n map(([input, maxPoints]) => {\n const [minDateValue, maxDateValue] = getDateRange(input);\n\n return intervals.filter(interval => {\n const timeInterval = getTimeInterval(interval);\n const numSteps = timeInterval.range(\n timeInterval.floor(minDateValue),\n timeInterval.ceil(utcDay.offset(maxDateValue, 1)),\n ).length;\n\n return numSteps <= maxPoints && numSteps > 1;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): SingleSelectComponent.Option => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n readonly toggleVisibility$ =\n new BehaviorSubject<TimeSeriesComponent.ToggleVisibility | null>(null);\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.toggleVisibility$,\n ]).pipe(\n map(([input, interval, toggleVisibility]) =>\n input.map((config): TimeSeriesComponent.YConfig => {\n return {\n ...config,\n series: config.series.map((series, i) => {\n const binned = new Map<number, TimeSeriesComponent.DataPoint[]>();\n for (const point of series.data) {\n const bin = getTimeInterval(interval).floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(bin)!.push(point);\n }\n if (\n this.allowLegendToggle &&\n toggleVisibility &&\n series.label === toggleVisibility.label\n ) {\n series.visibility = toggleVisibility.visibility;\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: config.pointReducer(points, i),\n })),\n };\n }),\n };\n }),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedDateRange$ = this.binnedData$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly drawData$: Observable<DrawData> = combineLatest([\n this.binnedData$,\n this.binnedDateRange$,\n this.selectedInterval$,\n this.width$,\n this.xMinorTickLimit$,\n ]).pipe(\n map(([binnedData, binnedDateRange, interval, width, xMinorTickLimit]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n\n const xScaleRangeStart = this.LEFT_RIGHT_PADDING + this.LEFT_RIGHT_OFFSET;\n const xScaleRangeEnd =\n width -\n this.LEFT_RIGHT_PADDING * 2 -\n (binnedData.length > 1 ? this.LEFT_RIGHT_OFFSET : 0);\n const xScale = scaleLinear()\n .domain(binnedDateRange)\n .range([xScaleRangeStart, xScaleRangeEnd]);\n const [minDateValue, maxDateValue] = binnedDateRange;\n const hasMultipleYears =\n minDateValue.getFullYear() < maxDateValue.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const xMinorTicks = getTimeInterval(interval)\n .range(minDateValue, utcDay.offset(maxDateValue, 1))\n .map(date => ({\n value: utcDay.offset(date, 0).valueOf(),\n label: minorFormatter(date),\n }))\n .filter((_, i, arr) =>\n arr.length > xMinorTickLimit\n ? i % Math.ceil(arr.length / xMinorTickLimit) === 0\n : true,\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const timeInterval = getTimeInterval(xMajorInterval);\n const tickFloor = timeInterval.floor(minDateValue);\n const tickCeiling = timeInterval.ceil(utcDay.offset(maxDateValue, 1));\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const xMajorTicks = timeInterval\n .range(tickFloor, tickCeiling)\n .map(tickDate => ({\n label: xMajorInterval === interval ? '' : majorFormatter(tickDate),\n value: tickDate.valueOf(),\n }));\n const x = { xMax: maxDateValue, xScale, xMinorTicks, xMajorTicks };\n\n const [y1, y2] = binnedData.map(config => {\n const visibleSeries = config.series.filter(\n s => s.visibility !== 'hidden',\n );\n const flattenedValues = visibleSeries.reduce<number[]>(\n (values, series) => [\n ...values,\n ...series.data.map(({ value }) => value),\n ],\n [],\n );\n let yMax = config.max ?? Math.max(...flattenedValues, 0);\n const yMin = config.min ?? Math.min(...flattenedValues, 0);\n // RIVET-14605 - if range is [0,0], make it [0,1] instead\n if (yMax == 0 && yMin == 0) {\n yMax = 1;\n }\n const yScale = scaleLinear()\n .domain([yMin, yMax])\n .range([\n this.HEIGHT -\n this.BOTTOM_OFFSET -\n (this.BOTTOM_PADDING + this.TOP_PADDING),\n this.TOP_PADDING,\n ]);\n const yTicks = yScale.ticks(this.Y_TICK_COUNT);\n const series = config.series.map(series => ({\n ...series,\n path: line<TimeSeriesComponent.DataPoint>()\n .x(d => xScale(d.date))\n .y(d => yScale(d.value))(series.data),\n stroke: `var(${series.colorToken})`,\n markers: series.data.map(point => ({\n ...point,\n x: xScale(point.date),\n y: yScale(point.value),\n })),\n }));\n return {\n ...config,\n series,\n yMax,\n yMin,\n yScale,\n yTicks,\n };\n });\n\n // If we have a y2, coerce y1's ticks to be visually equivalent to y2's ticks.\n if (y2?.yTicks) {\n const tickConversionScale = scaleLinear()\n .range(y1.yScale.domain())\n .domain(y2.yScale.domain());\n y1.yTicks = y2.yTicks.map(tickConversionScale);\n }\n\n return { viewBox, x, y1, y2 };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly legend$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.reduce<\n {\n label: string;\n colorToken: string;\n visibility: 'visible' | 'hidden';\n }[]\n >(\n (items, config) => [\n ...items,\n ...config.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n visibility: series.visibility ?? 'visible',\n })),\n ],\n [],\n ),\n ),\n );\n\n readonly empty$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.every(config =>\n config.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredMarker$ = new BehaviorSubject<{\n event: MouseEvent;\n marker: Marker;\n } | null>(null);\n\n readonly callout$ = combineLatest([this.hoveredMarker$, this.drawData$]).pipe(\n map(([hoveredMarker, drawData]) => {\n if (!hoveredMarker) return null;\n\n const { target } = hoveredMarker.event;\n if (!target) return null;\n const markerRect = (<SVGCircleElement>target).getBoundingClientRect();\n const padding = 8;\n const anchor = new DOMRect(\n markerRect.left - padding,\n markerRect.top - padding,\n markerRect.width + padding * 2,\n markerRect.height + padding * 2,\n );\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = [];\n\n for (const series of drawData.y1.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y1.valueFormatter(match.value),\n });\n }\n }\n }\n\n if (drawData.y2) {\n for (const series of drawData.y2.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y2.valueFormatter(match.value),\n });\n }\n }\n }\n }\n\n return { anchor, metrics };\n }),\n );\n}\n\nexport namespace TimeSeriesComponent {\n export type Series = {\n label: string;\n colorToken: string;\n data: TimeSeriesComponent.DataPoint[];\n style?: 'solid' | 'dashed';\n visibility?: 'visible' | 'hidden';\n };\n\n export type DataPoint = {\n value: number;\n date: Date;\n };\n\n export type YConfig = {\n pointReducer: (points: DataPoint[], seriesIndex: number) => number;\n valueFormatter: (reducedValue: number) => string;\n series: Series[];\n min?: number;\n max?: number;\n };\n\n export type TimeSeriesInput = [YConfig] | [YConfig, YConfig];\n\n export type ToggleVisibility = {\n label: string;\n visibility: 'hidden' | 'visible';\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <g *ngFor=\"let tick of d.x.xMajorTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n y=\"0\"\n width=\"1\"\n [attr.height]=\"d.y1.yScale(d.y1.yMin) + BOTTOM_OFFSET\"\n ></rect>\n <text\n *ngIf=\"d.x.xScale(tick.value) >= 0\"\n class=\"x-major-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.x.xMinorTicks\">\n <text\n class=\"x-minor-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n text-anchor=\"middle\"\n dominant-baseline=\"hanging\"\n dy=\"8\"\n >\n {{ tick.label }}\n <title>{{ tick.value | date }}</title>\n </text>\n </g>\n <g *ngFor=\"let tick of d.y1.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.y1.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"y-tick-label\" x=\"0\" [attr.y]=\"d.y1.yScale(tick)\" dy=\"-4\">\n {{ d.y1.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngFor=\"let tick of d.y2?.yTicks\">\n <text\n class=\"y-tick-label\"\n [attr.x]=\"width\"\n [attr.y]=\"d.y2?.yScale(tick)\"\n text-anchor=\"end\"\n dy=\"-4\"\n >\n {{ d.y2?.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngIf=\"hoveredMarker$ | async; let hoveredMarker\">\n <line\n class=\"hover-rule\"\n [attr.x1]=\"hoveredMarker.marker.x\"\n [attr.y1]=\"d.y1.yScale(d.y1.yMin)\"\n [attr.x2]=\"hoveredMarker.marker.x\"\n [attr.y2]=\"d.y1.yScale(d.y1.yMax)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n\n <ng-template #seriesTpl let-series=\"series\">\n <path\n *ngIf=\"series.visibility != 'hidden'\"\n class=\"data path\"\n [class.marker-hovered]=\"!!(hoveredMarker$ | async)\"\n [attr.d]=\"series.path\"\n fill=\"none\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n [attr.stroke-dasharray]=\"series.style === 'dashed' ? '4' : null\"\n ></path>\n <ng-container *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility != 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"(hoveredMarker$ | async)?.marker?.x === marker.x\"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n (hoveredMarker$ | async)?.marker?.x !== marker.x\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"POINT_RADIUS\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"hoveredMarker$.next({ event: $event, marker: marker })\"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n ></circle>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\n ></ng-container>\n </g>\n </svg>\n <legend>\n <riv-legend-item\n *ngFor=\"let item of legend$ | async\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [visibility]=\"item.visibility\"\n [clickable]=\"allowLegendToggle\"\n (itemClick)=\"\n allowLegendToggle\n ? toggleVisibility$.next({\n label: item.label,\n visibility: item.visibility == 'hidden' ? 'visible' : 'hidden'\n })\n : null\n \"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\" *ngFor=\"let metric of callout.metrics\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-select>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TextToggleComponent } from './content-toggle/text-toggle/text-toggle.component';\nimport { DatePipe } from './format/pipes/date.pipe';\nimport { DaysPipe } from './format/pipes/days.pipe';\nimport { DollarsPipe } from './format/pipes/dollars.pipe';\nimport { NumberPipe } from './format/pipes/number.pipe';\nimport { OptionGroupPipe } from './format/pipes/option-group.pipe';\nimport { PercentagePipe } from './format/pipes/percentage.pipe';\nimport { SmallCurrencyPipe } from './format/pipes/small-currency.pipe';\nimport { SVGTextTruncateDirective } from './format/svg-text-truncate/svg-text-truncate.directive';\nimport { TruncateComponent } from './format/truncate/truncate.component';\nimport { IconComponent } from './icon/icon.component';\nimport { ButtonComponent } from './input/button/button.component';\nimport { CalendarComponent } from './input/calendar/calendar.component';\nimport { CardCheckboxComponent } from './input/card-checkbox/card-checkbox.component';\nimport { CheckboxComponent } from './input/checkbox/checkbox.component';\nimport { DateRangeComponent } from './input/date-range/date-range.component';\nimport { DateComponent } from './input/date/date.component';\nimport { InputLabelComponent } from './input/input-label/input-label.component';\nimport { SingleSelectComponent } from './input/single-select/single-select.component';\nimport { SwitchCheckboxComponent } from './input/switch-checkbox/switch-checkbox.component';\nimport { FocusOnInitDirective } from './interaction/focus-on-init.directive';\nimport { LoadingCoverComponent } from './load/loading-cover/loading-cover.component';\nimport { LoadingComponent } from './load/loading/loading.component';\nimport { CalloutOutletComponent } from './modal/callout/callout-outlet.component';\nimport { CalloutComponent } from './modal/callout/callout.component';\nimport { CalloutDirective } from './modal/callout/callout.directive';\nimport { LockScrollDirective } from './modal/callout/lock-scroll.directive';\nimport { HelpComponent } from './modal/help/help.component';\nimport { TooltipComponent } from './modal/tooltip/tooltip.component';\nimport { TooltipDirective } from './modal/tooltip/tooltip.directive';\nimport { LinkComponent } from './navigation/link/link.component';\nimport { BadgeComponent } from './notification/badge/badge.component';\nimport { SizeDirective } from './size/size.directive';\nimport { DataTableCellComponent } from './visualization/data-table/data-table-cell.component';\nimport { DataTableHeaderCellComponent } from './visualization/data-table/data-table-header-cell.component';\nimport { DataTableRowComponent } from './visualization/data-table/data-table-row.component';\nimport { DataTableComponent } from './visualization/data-table/data-table.component';\nimport { DonutComponent } from './visualization/donut/donut.component';\nimport { FunnelChartComponent } from './visualization/funnel-chart/funnel-chart.component';\nimport { HighlightComponent } from './visualization/highlight/highlight.component';\nimport { IssueComponent } from './visualization/issue/issue.component';\nimport { LegendItemComponent } from './visualization/legend-item/legend-item.component';\nimport { MetricComponent } from './visualization/metric/metric.component';\nimport { StackedColumnComponent } from './visualization/stacked-column/stacked-column.component';\nimport { StackedRowComponent } from './visualization/stacked-row/stacked-row.component';\nimport { TimeSeriesComponent } from './visualization/time-series/time-series.component';\nimport { TrendComponent } from './visualization/trend/trend.component';\nimport { ZeroStateComponent } from './visualization/zero-state/zero-state.component';\n\n@NgModule({\n declarations: [\n BadgeComponent,\n ButtonComponent,\n CalendarComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n CardCheckboxComponent,\n CheckboxComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FocusOnInitDirective,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockScrollDirective,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n exports: [\n BadgeComponent,\n ButtonComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n CardCheckboxComponent,\n CheckboxComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FocusOnInitDirective,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n imports: [CommonModule],\n})\nexport class RivModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IconComponent","AngularDatePipe","i2.LockScrollDirective","i2.CalloutComponent","i1.TooltipDirective","i3.LoadingComponent","i1.CheckboxComponent","i1.IconComponent","i2.TooltipDirective","i2.HelpComponent","i3.LinkComponent","i2.LoadingComponent","i3.FocusOnInitDirective","i4.HighlightComponent","i5.IconComponent","i6.InputLabelComponent","i7.LoadingCoverComponent","i2.ButtonComponent","i3.SingleSelectComponent","i4.OptionGroupPipe","i3.CalendarComponent","i4.CalloutComponent","i5.HighlightComponent","i6.IconComponent","i7.InputLabelComponent","i8.SingleSelectComponent","i9.TooltipDirective","i2.CalendarComponent","i3.CalloutComponent","i4.IconComponent","i5.InputLabelComponent","i6.DatePipe","i1.CalloutService","i2","i1.ContentService","i1.DataTableRowComponent","i3.ZeroStateComponent","i3.TooltipDirective","i2.MetricComponent","i3.TrendComponent","getDateRange","DEFAULT_INTERVAL","i3.CalloutDirective","i4.LegendItemComponent","i5.SingleSelectComponent","i6.SizeDirective","i7.ZeroStateComponent","i8.OptionGroupPipe","i5.SizeDirective","i6.SVGTextTruncateDirective"],"mappings":"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"}
|