@geoit/ui 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/ai/README.md +1 -1
  2. package/ai/catalog.json +64 -2
  3. package/ai/components/geo-map-admin-filter.md +1 -0
  4. package/ai/components/geo-map-legend.md +1 -0
  5. package/ai/components/geo-map-shell.md +7 -0
  6. package/ai/components/geo-tree.md +2 -0
  7. package/ai/mockup.html +2 -2
  8. package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +14 -3
  9. package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +3 -3
  10. package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +5 -3
  11. package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +3 -3
  12. package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +3 -3
  13. package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +5 -3
  14. package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +3 -3
  15. package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +3 -3
  16. package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +2 -2
  17. package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +3 -3
  18. package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +22 -3
  19. package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +3 -3
  20. package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +3 -3
  21. package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +3 -3
  22. package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +13 -1
  23. package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +17 -3
  24. package/fesm2022/geoit-ui.mjs +90 -31
  25. package/fesm2022/geoit-ui.mjs.map +1 -1
  26. package/lib/figma/geo-chart/geo-chart.component.d.ts +9 -0
  27. package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +3 -1
  28. package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +3 -1
  29. package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +19 -2
  30. package/lib/figma/geo-map/geo-map.constants.d.ts +6 -0
  31. package/lib/figma/geo-tree/geo-tree.component.d.ts +5 -1
  32. package/package.json +1 -1
package/ai/README.md CHANGED
@@ -73,6 +73,6 @@ Agent rules: [`AGENTS.md`](./AGENTS.md) · Recipes: [`recipes.md`](./recipes.md)
73
73
  | `geo-typography` | display | Text with GEO type scale (h1–tiny) and semantic colors. | [geo-typography.md](./components/geo-typography.md) |
74
74
  | `geo-upload` | forms | Drag-drop upload zone with progress list. | [geo-upload.md](./components/geo-upload.md) |
75
75
 
76
- Generated: 2026-09-03T03:52:29.749Z
76
+ Generated: 2026-09-04T09:54:08.856Z
77
77
 
78
78
  Regenerate: `npm run ai:docs`
package/ai/catalog.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "package": "@geoit/ui",
3
3
  "import": "@geoit/ui",
4
- "version": "0.0.6",
5
- "generatedAt": "2026-09-03T03:52:29.749Z",
4
+ "version": "0.0.8",
5
+ "generatedAt": "2026-09-04T09:54:08.856Z",
6
6
  "styles": [
7
7
  "@geoit/ui/src/lib/styles/design-tokens.scss",
8
8
  "@geoit/ui/src/lib/styles/theme.scss"
@@ -2610,6 +2610,12 @@
2610
2610
  "default": "[]",
2611
2611
  "note": ""
2612
2612
  },
2613
+ {
2614
+ "name": "selectionMode",
2615
+ "type": "'single' | 'multi'",
2616
+ "default": "'multi'",
2617
+ "note": "`single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định)."
2618
+ },
2613
2619
  {
2614
2620
  "name": "checkedKeys",
2615
2621
  "type": "Array<string | number>",
@@ -2960,6 +2966,12 @@
2960
2966
  "default": "[]",
2961
2967
  "note": ""
2962
2968
  },
2969
+ {
2970
+ "name": "catalogMissing",
2971
+ "type": "boolean",
2972
+ "default": "false",
2973
+ "note": "True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`)."
2974
+ },
2963
2975
  {
2964
2976
  "name": "open",
2965
2977
  "type": "boolean",
@@ -3452,12 +3464,30 @@
3452
3464
  "default": "GEO_MAP_DEMO_ADMIN_NODES",
3453
3465
  "note": ""
3454
3466
  },
3467
+ {
3468
+ "name": "adminSelectionMode",
3469
+ "type": "'single' | 'multi'",
3470
+ "default": "'multi'",
3471
+ "note": "`single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định)."
3472
+ },
3455
3473
  {
3456
3474
  "name": "locationLabel",
3457
3475
  "type": "string",
3458
3476
  "default": "'Phường 1 — TP Đà Lạt, Lâm Đồng'",
3459
3477
  "note": ""
3460
3478
  },
3479
+ {
3480
+ "name": "measureDisclaimer",
3481
+ "type": "string | null",
3482
+ "default": "'Giá trị tham khảo trên bản đồ, không có giá trị pháp lý. Diện tích pháp lý của thửa đất lấy theo hồ sơ địa chính.'",
3483
+ "note": "Ghi chú pháp lý hiển thị khi đang đo (BR-10-03). `null` ẩn ghi chú — mặc định giữ nguyên câu chữ đã dùng ở `qh-map-shell`."
3484
+ },
3485
+ {
3486
+ "name": "legendCatalogMissing",
3487
+ "type": "boolean",
3488
+ "default": "false",
3489
+ "note": "True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`)."
3490
+ },
3461
3491
  {
3462
3492
  "name": "parcelAudience",
3463
3493
  "type": "GeoMapParcelAudience",
@@ -3584,11 +3614,21 @@
3584
3614
  "type": "OutputEmitterRef<GeoMapClickEvent>",
3585
3615
  "note": ""
3586
3616
  },
3617
+ {
3618
+ "name": "located",
3619
+ "type": "OutputEmitterRef<[number, number]>",
3620
+ "note": ""
3621
+ },
3587
3622
  {
3588
3623
  "name": "locateDenied",
3589
3624
  "type": "OutputEmitterRef<void>",
3590
3625
  "note": ""
3591
3626
  },
3627
+ {
3628
+ "name": "locateError",
3629
+ "type": "OutputEmitterRef<{ reason: GeoMapLocateErrorReason; message?: string }>",
3630
+ "note": ""
3631
+ },
3592
3632
  {
3593
3633
  "name": "actionClick",
3594
3634
  "type": "OutputEmitterRef<GeoMapToolbarAction>",
@@ -3618,6 +3658,16 @@
3618
3658
  "name": "adminApply",
3619
3659
  "type": "OutputEmitterRef<Array<string | number>>",
3620
3660
  "note": ""
3661
+ },
3662
+ {
3663
+ "name": "snapshotCaptured",
3664
+ "type": "OutputEmitterRef<void>",
3665
+ "note": ""
3666
+ },
3667
+ {
3668
+ "name": "snapshotError",
3669
+ "type": "OutputEmitterRef<unknown>",
3670
+ "note": ""
3621
3671
  }
3622
3672
  ],
3623
3673
  "examples": [
@@ -5781,12 +5831,24 @@
5781
5831
  "default": "false",
5782
5832
  "note": ""
5783
5833
  },
5834
+ {
5835
+ "name": "selectionMode",
5836
+ "type": "'single' | 'multi'",
5837
+ "default": "'multi'",
5838
+ "note": "`single` — click chọn đúng 1 node (BR-06-03); `multi` — giữ hành vi checkbox hiện có."
5839
+ },
5784
5840
  {
5785
5841
  "name": "checkedKeys",
5786
5842
  "type": "Array<string | number>",
5787
5843
  "default": "[]",
5788
5844
  "note": "Two-way `model()` (supports banana binding)."
5789
5845
  },
5846
+ {
5847
+ "name": "selectedKeys",
5848
+ "type": "Array<string | number>",
5849
+ "default": "[]",
5850
+ "note": "Two-way `model()` (supports banana binding)."
5851
+ },
5790
5852
  {
5791
5853
  "name": "expandedKeys",
5792
5854
  "type": "Array<string | number>",
@@ -45,6 +45,7 @@ Every supported Input (do not invent others):
45
45
  | `open` | `boolean` | `false` | Two-way `model()` (supports banana binding). |
46
46
  | `title` | `string` | `'Đơn vị hành chính'` | — |
47
47
  | `nodes` | `GeoTreeNode[]` | `[]` | — |
48
+ | `selectionMode` | `'single' \| 'multi'` | `'multi'` | `single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định). |
48
49
  | `checkedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
49
50
  | `expandedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
50
51
 
@@ -44,6 +44,7 @@ Every supported Input (do not invent others):
44
44
  |-------|------|---------|-------------|
45
45
  | `title` | `string` | `'Chú giải'` | — |
46
46
  | `items` | `GeoMapLegendItem[]` | `[]` | — |
47
+ | `catalogMissing` | `boolean` | `false` | True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`). |
47
48
  | `open` | `boolean` | `false` | Two-way `model()` (supports banana binding). |
48
49
 
49
50
  ## Outputs
@@ -56,7 +56,10 @@ Every supported Input (do not invent others):
56
56
  | `showNav` | `boolean` | `true` | — |
57
57
  | `includeDemoLayers` | `boolean` | `true` | — |
58
58
  | `adminNodes` | `GeoTreeNode[]` | `GEO_MAP_DEMO_ADMIN_NODES` | — |
59
+ | `adminSelectionMode` | `'single' \| 'multi'` | `'multi'` | `single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định). |
59
60
  | `locationLabel` | `string` | `'Phường 1 — TP Đà Lạt, Lâm Đồng'` | — |
61
+ | `measureDisclaimer` | `string \| null` | `'Giá trị tham khảo trên bản đồ, không có giá trị pháp lý. Diện tích pháp lý của thửa đất lấy theo hồ sơ địa chính.'` | Ghi chú pháp lý hiển thị khi đang đo (BR-10-03). `null` ẩn ghi chú — mặc định giữ nguyên câu chữ đã dùng ở `qh-map-shell`. |
62
+ | `legendCatalogMissing` | `boolean` | `false` | True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`). |
60
63
  | `parcelAudience` | `GeoMapParcelAudience` | `'citizen'` | — |
61
64
  | `provinceExtent` | `readonly [number, number, number, number]` | `GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326` | — |
62
65
  | `demoSearch` | `boolean` | `true` | When true, shell seeds mock search results (Storybook / demos). |
@@ -83,13 +86,17 @@ Every supported Input (do not invent others):
83
86
  |--------|---------|-------------|
84
87
  | `mapReady` | `OutputEmitterRef<GeoMapController>` | — |
85
88
  | `mapClick` | `OutputEmitterRef<GeoMapClickEvent>` | — |
89
+ | `located` | `OutputEmitterRef<[number, number]>` | — |
86
90
  | `locateDenied` | `OutputEmitterRef<void>` | — |
91
+ | `locateError` | `OutputEmitterRef<{ reason: GeoMapLocateErrorReason; message?: string }>` | — |
87
92
  | `actionClick` | `OutputEmitterRef<GeoMapToolbarAction>` | — |
88
93
  | `search` | `OutputEmitterRef<GeoMapSearchQuery>` | — |
89
94
  | `searchReset` | `OutputEmitterRef<void>` | — |
90
95
  | `resultSelect` | `OutputEmitterRef<GeoMapSearchResultItem>` | — |
91
96
  | `parcelExport` | `OutputEmitterRef<GeoMapParcelDetail>` | — |
92
97
  | `adminApply` | `OutputEmitterRef<Array<string \| number>>` | — |
98
+ | `snapshotCaptured` | `OutputEmitterRef<void>` | — |
99
+ | `snapshotError` | `OutputEmitterRef<unknown>` | — |
93
100
 
94
101
 
95
102
  ## Examples
@@ -47,7 +47,9 @@ Every supported Input (do not invent others):
47
47
  |-------|------|---------|-------------|
48
48
  | `nodes` | `GeoTreeNode[]` | `[]` | — |
49
49
  | `checkable` | `boolean` | `false` | — |
50
+ | `selectionMode` | `'single' \| 'multi'` | `'multi'` | `single` — click chọn đúng 1 node (BR-06-03); `multi` — giữ hành vi checkbox hiện có. |
50
51
  | `checkedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
52
+ | `selectedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
51
53
  | `expandedKeys` | `Array<string \| number>` | `[]` | Two-way `model()` (supports banana binding). |
52
54
  | `showLine` | `boolean` | `false` | — |
53
55
  | `blockNode` | `boolean` | `false` | — |
package/ai/mockup.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>@geoit/ui — Component mockup (design tokens)</title>
7
7
  <!-- Generated by tools/generate-mockup.js — do not edit ai/mockup.html by hand -->
8
- <!-- 2026-09-03T03:52:29.799Z -->
8
+ <!-- 2026-09-04T09:54:08.927Z -->
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com" />
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
11
11
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
@@ -685,7 +685,7 @@
685
685
  HTML tĩnh mô phỏng visual của các <code>geo-*</code> trong <code>ai/components</code>,
686
686
  dùng đúng CSS variables từ <code>design-tokens.scss</code>.
687
687
  Tokens được inject tự động khi <code>npm run ai:docs</code> / <code>npm run build</code>.
688
- <br /><span class="typo-caption typo-secondary">Generated 2026-09-03T03:52:29.799Z · source: projects/geo-ui/src/lib/styles/design-tokens.scss · 66 component docs in ai/components</span>
688
+ <br /><span class="typo-caption typo-secondary">Generated 2026-09-04T09:54:08.927Z · source: projects/geo-ui/src/lib/styles/design-tokens.scss · 66 component docs in ai/components</span>
689
689
  </p>
690
690
  </header>
691
691
 
@@ -67,6 +67,17 @@ export class GeoChartComponent {
67
67
  colorOf(item, index) {
68
68
  return item.color || DEFAULT_COLORS[index % DEFAULT_COLORS.length];
69
69
  }
70
+ /**
71
+ * `@for` track dùng qua method thay vì `item.id ?? item.label` trực tiếp trong template —
72
+ * Angular linker (18.2.14) sinh sai scope biến tạm cho track expression chứa `??` khi bị
73
+ * hoist lên module scope, gây `ReferenceError: tmp_x_0 is not defined` lúc chạy.
74
+ */
75
+ trackDatum(item) {
76
+ return item.id ?? item.label;
77
+ }
78
+ trackSegment(seg) {
79
+ return seg.datum.id ?? seg.datum.label;
80
+ }
70
81
  barWidth(value) {
71
82
  const max = this.maxValue() || 1;
72
83
  return `${Math.max(2, (value / max) * 100)}%`;
@@ -79,10 +90,10 @@ export class GeoChartComponent {
79
90
  this.segmentClick.emit({ datum, index });
80
91
  }
81
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
82
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoChartComponent, isStandalone: true, selector: "geo-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, showSort: { classPropertyName: "showSort", publicName: "showSort", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sort: "sortChange", segmentClick: "segmentClick", sortChange: "sortChange" }, host: { classAttribute: "geo-chart-host" }, ngImport: i0, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track item.id ?? item.label; let i = $index) {\n <button\n type=\"button\"\n class=\"geo-chart__bar-row\"\n (click)=\"onSegment(item, i)\"\n >\n <span class=\"geo-chart__bar-label\" [title]=\"item.label\">{{ item.label }}</span>\n <span class=\"geo-chart__bar-track\">\n <span\n class=\"geo-chart__bar-fill\"\n [style.width]=\"barWidth(item.value)\"\n [style.background]=\"colorOf(item, i)\"\n ></span>\n </span>\n <span class=\"geo-chart__bar-value\">\n {{ item.value }}{{ unit() ? ' ' + unit() : '' }}\n </span>\n </button>\n }\n </div>\n } @else {\n <div class=\"geo-chart__donut-wrap\">\n <svg\n class=\"geo-chart__donut\"\n viewBox=\"0 0 140 140\"\n role=\"img\"\n [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 donut'\"\n >\n <circle\n class=\"geo-chart__donut-track\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n />\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <circle\n class=\"geo-chart__donut-seg\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dasharray\"\n [attr.stroke-dashoffset]=\"seg.dashoffset\"\n transform=\"rotate(-90 70 70)\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n />\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" class=\"geo-chart__donut-center-label\">\n T\u1ED5ng\n </text>\n <text x=\"70\" y=\"84\" text-anchor=\"middle\" class=\"geo-chart__donut-center-value\">\n {{ total() }}\n </text>\n </svg>\n\n @if (showLegend()) {\n <ul class=\"geo-chart__legend\">\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <li>\n <button\n type=\"button\"\n class=\"geo-chart__legend-item\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n >\n <span\n class=\"geo-chart__swatch\"\n [style.background]=\"seg.color\"\n ></span>\n <span class=\"geo-chart__legend-label\">{{ seg.datum.label }}</span>\n <span class=\"geo-chart__legend-value\">{{ seg.percent }}%</span>\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n</div>\n", styles: [".geo-chart-host{display:block}.geo-chart{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);min-height:var(--geo-chart-height, 260px)}.geo-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.geo-chart__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-chart__sort{display:inline-flex;gap:4px}.geo-chart__bars{display:flex;flex-direction:column;gap:10px;max-height:calc(var(--geo-chart-height, 260px) - 48px);overflow:auto;padding-right:4px}.geo-chart__bar-row{display:grid;grid-template-columns:minmax(88px,140px) 1fr auto;align-items:center;gap:10px;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700)}.geo-chart__bar-track{height:12px;border-radius:var(--geo-radius-sm);background:var(--geo-color-neutral-100);overflow:hidden}.geo-chart__bar-fill{display:block;height:100%;border-radius:inherit;transition:width .2s ease}.geo-chart__bar-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-800);white-space:nowrap}.geo-chart__donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.geo-chart__donut{width:180px;height:180px;flex-shrink:0}.geo-chart__donut-track{stroke:var(--geo-color-neutral-100)}.geo-chart__donut-seg{cursor:pointer;transition:opacity .15s ease}.geo-chart__donut-seg:hover{opacity:.85}.geo-chart__donut-center-label{fill:var(--geo-color-neutral-500);font-size:11px}.geo-chart__donut-center-value{fill:var(--geo-color-neutral-900);font-size:16px;font-weight:600}.geo-chart__legend{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;flex:1;min-width:160px}.geo-chart__legend-item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;width:100%;margin:0;padding:4px 0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__swatch{width:12px;height:12px;border-radius:2px}.geo-chart__legend-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-chart__legend-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-600)}\n"], dependencies: [{ kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoEmptyStateComponent, selector: "geo-empty-state", inputs: ["title", "description", "icon", "actionLabel"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
93
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoChartComponent, isStandalone: true, selector: "geo-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, showSort: { classPropertyName: "showSort", publicName: "showSort", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sort: "sortChange", segmentClick: "segmentClick", sortChange: "sortChange" }, host: { classAttribute: "geo-chart-host" }, ngImport: i0, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track trackDatum(item); let i = $index) {\n <button\n type=\"button\"\n class=\"geo-chart__bar-row\"\n (click)=\"onSegment(item, i)\"\n >\n <span class=\"geo-chart__bar-label\" [title]=\"item.label\">{{ item.label }}</span>\n <span class=\"geo-chart__bar-track\">\n <span\n class=\"geo-chart__bar-fill\"\n [style.width]=\"barWidth(item.value)\"\n [style.background]=\"colorOf(item, i)\"\n ></span>\n </span>\n <span class=\"geo-chart__bar-value\">\n {{ item.value }}{{ unit() ? ' ' + unit() : '' }}\n </span>\n </button>\n }\n </div>\n } @else {\n <div class=\"geo-chart__donut-wrap\">\n <svg\n class=\"geo-chart__donut\"\n viewBox=\"0 0 140 140\"\n role=\"img\"\n [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 donut'\"\n >\n <circle\n class=\"geo-chart__donut-track\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n />\n @for (seg of donutSegments(); track trackSegment(seg)) {\n <circle\n class=\"geo-chart__donut-seg\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dasharray\"\n [attr.stroke-dashoffset]=\"seg.dashoffset\"\n transform=\"rotate(-90 70 70)\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n />\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" class=\"geo-chart__donut-center-label\">\n T\u1ED5ng\n </text>\n <text x=\"70\" y=\"84\" text-anchor=\"middle\" class=\"geo-chart__donut-center-value\">\n {{ total() }}\n </text>\n </svg>\n\n @if (showLegend()) {\n <ul class=\"geo-chart__legend\">\n @for (seg of donutSegments(); track trackSegment(seg)) {\n <li>\n <button\n type=\"button\"\n class=\"geo-chart__legend-item\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n >\n <span\n class=\"geo-chart__swatch\"\n [style.background]=\"seg.color\"\n ></span>\n <span class=\"geo-chart__legend-label\">{{ seg.datum.label }}</span>\n <span class=\"geo-chart__legend-value\">{{ seg.percent }}%</span>\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n</div>\n", styles: [".geo-chart-host{display:block}.geo-chart{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);min-height:var(--geo-chart-height, 260px)}.geo-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.geo-chart__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-chart__sort{display:inline-flex;gap:4px}.geo-chart__bars{display:flex;flex-direction:column;gap:10px;max-height:calc(var(--geo-chart-height, 260px) - 48px);overflow:auto;padding-right:4px}.geo-chart__bar-row{display:grid;grid-template-columns:minmax(88px,140px) 1fr auto;align-items:center;gap:10px;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700)}.geo-chart__bar-track{height:12px;border-radius:var(--geo-radius-sm);background:var(--geo-color-neutral-100);overflow:hidden}.geo-chart__bar-fill{display:block;height:100%;border-radius:inherit;transition:width .2s ease}.geo-chart__bar-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-800);white-space:nowrap}.geo-chart__donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.geo-chart__donut{width:180px;height:180px;flex-shrink:0}.geo-chart__donut-track{stroke:var(--geo-color-neutral-100)}.geo-chart__donut-seg{cursor:pointer;transition:opacity .15s ease}.geo-chart__donut-seg:hover{opacity:.85}.geo-chart__donut-center-label{fill:var(--geo-color-neutral-500);font-size:11px}.geo-chart__donut-center-value{fill:var(--geo-color-neutral-900);font-size:16px;font-weight:600}.geo-chart__legend{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;flex:1;min-width:160px}.geo-chart__legend-item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;width:100%;margin:0;padding:4px 0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__swatch{width:12px;height:12px;border-radius:2px}.geo-chart__legend-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-chart__legend-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-600)}\n"], dependencies: [{ kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoEmptyStateComponent, selector: "geo-empty-state", inputs: ["title", "description", "icon", "actionLabel"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
83
94
  }
84
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoChartComponent, decorators: [{
85
96
  type: Component,
86
- args: [{ selector: 'geo-chart', standalone: true, imports: [GeoButtonComponent, GeoEmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-chart-host' }, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track item.id ?? item.label; let i = $index) {\n <button\n type=\"button\"\n class=\"geo-chart__bar-row\"\n (click)=\"onSegment(item, i)\"\n >\n <span class=\"geo-chart__bar-label\" [title]=\"item.label\">{{ item.label }}</span>\n <span class=\"geo-chart__bar-track\">\n <span\n class=\"geo-chart__bar-fill\"\n [style.width]=\"barWidth(item.value)\"\n [style.background]=\"colorOf(item, i)\"\n ></span>\n </span>\n <span class=\"geo-chart__bar-value\">\n {{ item.value }}{{ unit() ? ' ' + unit() : '' }}\n </span>\n </button>\n }\n </div>\n } @else {\n <div class=\"geo-chart__donut-wrap\">\n <svg\n class=\"geo-chart__donut\"\n viewBox=\"0 0 140 140\"\n role=\"img\"\n [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 donut'\"\n >\n <circle\n class=\"geo-chart__donut-track\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n />\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <circle\n class=\"geo-chart__donut-seg\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dasharray\"\n [attr.stroke-dashoffset]=\"seg.dashoffset\"\n transform=\"rotate(-90 70 70)\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n />\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" class=\"geo-chart__donut-center-label\">\n T\u1ED5ng\n </text>\n <text x=\"70\" y=\"84\" text-anchor=\"middle\" class=\"geo-chart__donut-center-value\">\n {{ total() }}\n </text>\n </svg>\n\n @if (showLegend()) {\n <ul class=\"geo-chart__legend\">\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <li>\n <button\n type=\"button\"\n class=\"geo-chart__legend-item\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n >\n <span\n class=\"geo-chart__swatch\"\n [style.background]=\"seg.color\"\n ></span>\n <span class=\"geo-chart__legend-label\">{{ seg.datum.label }}</span>\n <span class=\"geo-chart__legend-value\">{{ seg.percent }}%</span>\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n</div>\n", styles: [".geo-chart-host{display:block}.geo-chart{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);min-height:var(--geo-chart-height, 260px)}.geo-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.geo-chart__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-chart__sort{display:inline-flex;gap:4px}.geo-chart__bars{display:flex;flex-direction:column;gap:10px;max-height:calc(var(--geo-chart-height, 260px) - 48px);overflow:auto;padding-right:4px}.geo-chart__bar-row{display:grid;grid-template-columns:minmax(88px,140px) 1fr auto;align-items:center;gap:10px;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700)}.geo-chart__bar-track{height:12px;border-radius:var(--geo-radius-sm);background:var(--geo-color-neutral-100);overflow:hidden}.geo-chart__bar-fill{display:block;height:100%;border-radius:inherit;transition:width .2s ease}.geo-chart__bar-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-800);white-space:nowrap}.geo-chart__donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.geo-chart__donut{width:180px;height:180px;flex-shrink:0}.geo-chart__donut-track{stroke:var(--geo-color-neutral-100)}.geo-chart__donut-seg{cursor:pointer;transition:opacity .15s ease}.geo-chart__donut-seg:hover{opacity:.85}.geo-chart__donut-center-label{fill:var(--geo-color-neutral-500);font-size:11px}.geo-chart__donut-center-value{fill:var(--geo-color-neutral-900);font-size:16px;font-weight:600}.geo-chart__legend{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;flex:1;min-width:160px}.geo-chart__legend-item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;width:100%;margin:0;padding:4px 0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__swatch{width:12px;height:12px;border-radius:2px}.geo-chart__legend-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-chart__legend-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-600)}\n"] }]
97
+ args: [{ selector: 'geo-chart', standalone: true, imports: [GeoButtonComponent, GeoEmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-chart-host' }, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track trackDatum(item); let i = $index) {\n <button\n type=\"button\"\n class=\"geo-chart__bar-row\"\n (click)=\"onSegment(item, i)\"\n >\n <span class=\"geo-chart__bar-label\" [title]=\"item.label\">{{ item.label }}</span>\n <span class=\"geo-chart__bar-track\">\n <span\n class=\"geo-chart__bar-fill\"\n [style.width]=\"barWidth(item.value)\"\n [style.background]=\"colorOf(item, i)\"\n ></span>\n </span>\n <span class=\"geo-chart__bar-value\">\n {{ item.value }}{{ unit() ? ' ' + unit() : '' }}\n </span>\n </button>\n }\n </div>\n } @else {\n <div class=\"geo-chart__donut-wrap\">\n <svg\n class=\"geo-chart__donut\"\n viewBox=\"0 0 140 140\"\n role=\"img\"\n [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 donut'\"\n >\n <circle\n class=\"geo-chart__donut-track\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n />\n @for (seg of donutSegments(); track trackSegment(seg)) {\n <circle\n class=\"geo-chart__donut-seg\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dasharray\"\n [attr.stroke-dashoffset]=\"seg.dashoffset\"\n transform=\"rotate(-90 70 70)\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n />\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" class=\"geo-chart__donut-center-label\">\n T\u1ED5ng\n </text>\n <text x=\"70\" y=\"84\" text-anchor=\"middle\" class=\"geo-chart__donut-center-value\">\n {{ total() }}\n </text>\n </svg>\n\n @if (showLegend()) {\n <ul class=\"geo-chart__legend\">\n @for (seg of donutSegments(); track trackSegment(seg)) {\n <li>\n <button\n type=\"button\"\n class=\"geo-chart__legend-item\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n >\n <span\n class=\"geo-chart__swatch\"\n [style.background]=\"seg.color\"\n ></span>\n <span class=\"geo-chart__legend-label\">{{ seg.datum.label }}</span>\n <span class=\"geo-chart__legend-value\">{{ seg.percent }}%</span>\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n</div>\n", styles: [".geo-chart-host{display:block}.geo-chart{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);min-height:var(--geo-chart-height, 260px)}.geo-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.geo-chart__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-chart__sort{display:inline-flex;gap:4px}.geo-chart__bars{display:flex;flex-direction:column;gap:10px;max-height:calc(var(--geo-chart-height, 260px) - 48px);overflow:auto;padding-right:4px}.geo-chart__bar-row{display:grid;grid-template-columns:minmax(88px,140px) 1fr auto;align-items:center;gap:10px;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700)}.geo-chart__bar-track{height:12px;border-radius:var(--geo-radius-sm);background:var(--geo-color-neutral-100);overflow:hidden}.geo-chart__bar-fill{display:block;height:100%;border-radius:inherit;transition:width .2s ease}.geo-chart__bar-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-800);white-space:nowrap}.geo-chart__donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.geo-chart__donut{width:180px;height:180px;flex-shrink:0}.geo-chart__donut-track{stroke:var(--geo-color-neutral-100)}.geo-chart__donut-seg{cursor:pointer;transition:opacity .15s ease}.geo-chart__donut-seg:hover{opacity:.85}.geo-chart__donut-center-label{fill:var(--geo-color-neutral-500);font-size:11px}.geo-chart__donut-center-value{fill:var(--geo-color-neutral-900);font-size:16px;font-weight:600}.geo-chart__legend{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;flex:1;min-width:160px}.geo-chart__legend-item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;width:100%;margin:0;padding:4px 0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__swatch{width:12px;height:12px;border-radius:2px}.geo-chart__legend-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-chart__legend-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-600)}\n"] }]
87
98
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1jaGFydC9nZW8tY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWNoYXJ0L2dlby1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQVF0RixNQUFNLGNBQWMsR0FBRztJQUNyQixrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLGtDQUFrQztJQUNsQywrQkFBK0I7SUFDL0Isd0NBQXdDO0lBQ3hDLDhCQUE4QjtDQUMvQixDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQVdILE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsSUFBSSxHQUFHLEtBQUssQ0FBZSxLQUFLLENBQUMsQ0FBQztJQUNsQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLElBQUksR0FBRyxLQUFLLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLElBQUksR0FBRyxLQUFLLENBQWUsTUFBTSxDQUFDLENBQUM7SUFD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QUFPLElBQUksQ0FBQyxLQUFLLElBQUksY0FBYyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFrQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CLEVBQUUsS0FBYTtRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7d0dBeEVVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHl5Q0M3QzlCLHl1SEErR0EseWxGRHpFWSxrQkFBa0Isc09BQUUsc0JBQXNCOzs0RkFPekMsaUJBQWlCO2tCQVY3QixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQyxtQkFHcEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2VvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvLWJ1dHRvbi9nZW8tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9FbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvLWVtcHR5LXN0YXRlL2dlby1lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHR5cGUge1xuICBHZW9DaGFydERhdHVtLFxuICBHZW9DaGFydFNlZ21lbnRDbGljayxcbiAgR2VvQ2hhcnRTb3J0LFxuICBHZW9DaGFydFR5cGUsXG59IGZyb20gJy4vZ2VvLWNoYXJ0LnR5cGVzJztcblxuY29uc3QgREVGQVVMVF9DT0xPUlMgPSBbXG4gICd2YXIoLS1nZW8tY29sb3ItcHJpbWFyeS1kZWZhdWx0KScsXG4gICd2YXIoLS1nZW8tY29sb3Itd2FybmluZy1kZWZhdWx0KScsXG4gICd2YXIoLS1nZW8tY29sb3Itc3VjY2Vzcy1kZWZhdWx0KScsXG4gICd2YXIoLS1nZW8tY29sb3ItaW5mby1kZWZhdWx0KScsXG4gICd2YXIoLS1nZW8tY29sb3ItdGVhbC1kZWZhdWx0LCAjMGQ5NDg4KScsXG4gICd2YXIoLS1nZW8tY29sb3ItbmV1dHJhbC01MDApJyxcbl07XG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgU1ZHIGNoYXJ0cyBmb3IgZGFzaGJvYXJkIC8gdGjhu5FuZyBrw6ogKFRDUUguMuKAkzMpLlxuICogTm8gY2hhcnQtbGlicmFyeSBwZWVyIGRlcGVuZGVuY3kg4oCUIGhvc3QgYmluZHMgZGF0YSBvbmx5LlxuICpcbiAqIEBzdW1tYXJ5IEJp4buDdSDEkeG7kyBj4buZdCAvIGRvbnV0IHRodeG6p24gU1ZHIGNobyB0cmFuZyB0aOG7kW5nIGvDqi5cbiAqIEB3aGVuVG9Vc2UgRGFzaGJvYXJkIGRp4buHbiB0w61jaCB0aGVvIHjDoywgdOG7tyBs4buHIHRo4butYSBs4buHY2ggbeG7pWMgxJHDrWNoLlxuICogQGRvTm90VXNlV2hlbiBIZWF2eSBCSSBkYXNoYm9hcmRzIG5lZWRpbmcgem9vbS9icnVzaCDigJQgdXNlIGEgY2hhcnQgbGliIGluIHRoZSBhcHAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1jaGFydCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9CdXR0b25Db21wb25lbnQsIEdlb0VtcHR5U3RhdGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1jaGFydC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnZ2VvLWNoYXJ0LWhvc3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb0NoYXJ0Q29tcG9uZW50IHtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PEdlb0NoYXJ0VHlwZT4oJ2JhcicpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KCcnKTtcbiAgcmVhZG9ubHkgZGF0YSA9IGlucHV0PEdlb0NoYXJ0RGF0dW1bXT4oW10pO1xuICByZWFkb25seSBoZWlnaHQgPSBpbnB1dCgyNjApO1xuICByZWFkb25seSBzaG93TGVnZW5kID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dTb3J0ID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBzb3J0ID0gbW9kZWw8R2VvQ2hhcnRTb3J0PignZGVzYycpO1xuICByZWFkb25seSBlbXB0eVRleHQgPSBpbnB1dCgnQ2jGsGEgY8OzIGThu68gbGnhu4d1IHRo4buRbmcga8OqLicpO1xuICByZWFkb25seSB1bml0ID0gaW5wdXQoJycpO1xuXG4gIHJlYWRvbmx5IHNlZ21lbnRDbGljayA9IG91dHB1dDxHZW9DaGFydFNlZ21lbnRDbGljaz4oKTtcbiAgcmVhZG9ubHkgc29ydENoYW5nZSA9IG91dHB1dDxHZW9DaGFydFNvcnQ+KCk7XG5cbiAgcmVhZG9ubHkgc29ydGVkRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmRhdGEoKV07XG4gICAgY29uc3Qgc29ydCA9IHRoaXMuc29ydCgpO1xuICAgIGlmIChzb3J0ID09PSAnYXNjJykge1xuICAgICAgcmV0dXJuIGl0ZW1zLnNvcnQoKGEsIGIpID0+IGEudmFsdWUgLSBiLnZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHNvcnQgPT09ICdkZXNjJykge1xuICAgICAgcmV0dXJuIGl0ZW1zLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9KTtcblxuICByZWFkb25seSBtYXhWYWx1ZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgTWF0aC5tYXgoMCwgLi4udGhpcy5zb3J0ZWREYXRhKCkubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSksXG4gICk7XG5cbiAgcmVhZG9ubHkgdG90YWwgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuc29ydGVkRGF0YSgpLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBpdGVtLnZhbHVlLCAwKSxcbiAgKTtcblxuICByZWFkb25seSBkb251dFNlZ21lbnRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zb3J0ZWREYXRhKCk7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsKCkgfHwgMTtcbiAgICBjb25zdCByYWRpdXMgPSA1NjtcbiAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gMiAqIE1hdGguUEkgKiByYWRpdXM7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHJhdGlvID0gaXRlbS52YWx1ZSAvIHRvdGFsO1xuICAgICAgY29uc3QgbGVuZ3RoID0gcmF0aW8gKiBjaXJjdW1mZXJlbmNlO1xuICAgICAgY29uc3Qgc2VnbWVudCA9IHtcbiAgICAgICAgZGF0dW06IGl0ZW0sXG4gICAgICAgIGluZGV4LFxuICAgICAgICBjb2xvcjogaXRlbS5jb2xvciB8fCBERUZBVUxUX0NPTE9SU1tpbmRleCAlIERFRkFVTFRfQ09MT1JTLmxlbmd0aF0sXG4gICAgICAgIGRhc2hhcnJheTogYCR7bGVuZ3RofSAke2NpcmN1bWZlcmVuY2UgLSBsZW5ndGh9YCxcbiAgICAgICAgZGFzaG9mZnNldDogLW9mZnNldCxcbiAgICAgICAgcGVyY2VudDogTWF0aC5yb3VuZChyYXRpbyAqIDEwMDApIC8gMTAsXG4gICAgICB9O1xuICAgICAgb2Zmc2V0ICs9IGxlbmd0aDtcbiAgICAgIHJldHVybiBzZWdtZW50O1xuICAgIH0pO1xuICB9KTtcblxuICBjb2xvck9mKGl0ZW06IEdlb0NoYXJ0RGF0dW0sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmNvbG9yIHx8IERFRkFVTFRfQ09MT1JTW2luZGV4ICUgREVGQVVMVF9DT0xPUlMubGVuZ3RoXTtcbiAgfVxuXG4gIGJhcldpZHRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1heCA9IHRoaXMubWF4VmFsdWUoKSB8fCAxO1xuICAgIHJldHVybiBgJHtNYXRoLm1heCgyLCAodmFsdWUgLyBtYXgpICogMTAwKX0lYDtcbiAgfVxuXG4gIHNldFNvcnQobmV4dDogR2VvQ2hhcnRTb3J0KTogdm9pZCB7XG4gICAgdGhpcy5zb3J0LnNldChuZXh0KTtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChuZXh0KTtcbiAgfVxuXG4gIG9uU2VnbWVudChkYXR1bTogR2VvQ2hhcnREYXR1bSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VnbWVudENsaWNrLmVtaXQoeyBkYXR1bSwgaW5kZXggfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnZW8tY2hhcnRcIiBbc3R5bGUuLS1nZW8tY2hhcnQtaGVpZ2h0LnB4XT1cImhlaWdodCgpXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJnZW8tY2hhcnRfX2hlYWRlclwiPlxuICAgIEBpZiAodGl0bGUoKSkge1xuICAgICAgPGgzIGNsYXNzPVwiZ2VvLWNoYXJ0X190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgIH1cbiAgICBAaWYgKHNob3dTb3J0KCkgJiYgdHlwZSgpID09PSAnYmFyJykge1xuICAgICAgPGRpdiBjbGFzcz1cImdlby1jaGFydF9fc29ydFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJT4bqvcCB44bq/cFwiPlxuICAgICAgICA8Z2VvLWJ1dHRvblxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJzb3J0KCkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgKGNsaWNrZWQpPVwic2V0U29ydCgnZGVzYycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEdp4bqjbSBk4bqnblxuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInRlcnRpYXJ5XCJcbiAgICAgICAgICBbYWN0aXZlXT1cInNvcnQoKSA9PT0gJ2FzYydcIlxuICAgICAgICAgIChjbGlja2VkKT1cInNldFNvcnQoJ2FzYycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIFTEg25nIGThuqduXG4gICAgICAgIDwvZ2VvLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9oZWFkZXI+XG5cbiAgQGlmICghc29ydGVkRGF0YSgpLmxlbmd0aCkge1xuICAgIDxnZW8tZW1wdHktc3RhdGUgW3RpdGxlXT1cImVtcHR5VGV4dCgpXCIgaWNvbj1cImJhci1jaGFydFwiIC8+XG4gIH0gQGVsc2UgaWYgKHR5cGUoKSA9PT0gJ2JhcicpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNoYXJ0X19iYXJzXCIgcm9sZT1cImltZ1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGUoKSB8fCAnQmnhu4N1IMSR4buTIGPhu5l0J1wiPlxuICAgICAgQGZvciAoaXRlbSBvZiBzb3J0ZWREYXRhKCk7IHRyYWNrIGl0ZW0uaWQgPz8gaXRlbS5sYWJlbDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZ2VvLWNoYXJ0X19iYXItcm93XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWdtZW50KGl0ZW0sIGkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLWNoYXJ0X19iYXItbGFiZWxcIiBbdGl0bGVdPVwiaXRlbS5sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tY2hhcnRfX2Jhci10cmFja1wiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJnZW8tY2hhcnRfX2Jhci1maWxsXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImJhcldpZHRoKGl0ZW0udmFsdWUpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JPZihpdGVtLCBpKVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1jaGFydF9fYmFyLXZhbHVlXCI+XG4gICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19e3sgdW5pdCgpID8gJyAnICsgdW5pdCgpIDogJycgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNoYXJ0X19kb251dC13cmFwXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiZ2VvLWNoYXJ0X19kb251dFwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMTQwIDE0MFwiXG4gICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlKCkgfHwgJ0Jp4buDdSDEkeG7kyBkb251dCdcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgY2xhc3M9XCJnZW8tY2hhcnRfX2RvbnV0LXRyYWNrXCJcbiAgICAgICAgICBjeD1cIjcwXCJcbiAgICAgICAgICBjeT1cIjcwXCJcbiAgICAgICAgICByPVwiNTZcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxOFwiXG4gICAgICAgIC8+XG4gICAgICAgIEBmb3IgKHNlZyBvZiBkb251dFNlZ21lbnRzKCk7IHRyYWNrIHNlZy5kYXR1bS5pZCA/PyBzZWcuZGF0dW0ubGFiZWwpIHtcbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fZG9udXQtc2VnXCJcbiAgICAgICAgICAgIGN4PVwiNzBcIlxuICAgICAgICAgICAgY3k9XCI3MFwiXG4gICAgICAgICAgICByPVwiNTZcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMThcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNlZy5jb2xvclwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInNlZy5kYXNoYXJyYXlcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hvZmZzZXRdPVwic2VnLmRhc2hvZmZzZXRcIlxuICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKC05MCA3MCA3MClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VnbWVudChzZWcuZGF0dW0sIHNlZy5pbmRleClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgPHRleHQgeD1cIjcwXCIgeT1cIjY2XCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBjbGFzcz1cImdlby1jaGFydF9fZG9udXQtY2VudGVyLWxhYmVsXCI+XG4gICAgICAgICAgVOG7lW5nXG4gICAgICAgIDwvdGV4dD5cbiAgICAgICAgPHRleHQgeD1cIjcwXCIgeT1cIjg0XCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBjbGFzcz1cImdlby1jaGFydF9fZG9udXQtY2VudGVyLXZhbHVlXCI+XG4gICAgICAgICAge3sgdG90YWwoKSB9fVxuICAgICAgICA8L3RleHQ+XG4gICAgICA8L3N2Zz5cblxuICAgICAgQGlmIChzaG93TGVnZW5kKCkpIHtcbiAgICAgICAgPHVsIGNsYXNzPVwiZ2VvLWNoYXJ0X19sZWdlbmRcIj5cbiAgICAgICAgICBAZm9yIChzZWcgb2YgZG9udXRTZWdtZW50cygpOyB0cmFjayBzZWcuZGF0dW0uaWQgPz8gc2VnLmRhdHVtLmxhYmVsKSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fbGVnZW5kLWl0ZW1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlZ21lbnQoc2VnLmRhdHVtLCBzZWcuaW5kZXgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fc3dhdGNoXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInNlZy5jb2xvclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1jaGFydF9fbGVnZW5kLWxhYmVsXCI+e3sgc2VnLmRhdHVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLWNoYXJ0X19sZWdlbmQtdmFsdWVcIj57eyBzZWcucGVyY2VudCB9fSU8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1jaGFydC9nZW8tY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWNoYXJ0L2dlby1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQVF0RixNQUFNLGNBQWMsR0FBRztJQUNyQixrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLGtDQUFrQztJQUNsQywrQkFBK0I7SUFDL0Isd0NBQXdDO0lBQ3hDLDhCQUE4QjtDQUMvQixDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQVdILE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsSUFBSSxHQUFHLEtBQUssQ0FBZSxLQUFLLENBQUMsQ0FBQztJQUNsQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLElBQUksR0FBRyxLQUFLLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLElBQUksR0FBRyxLQUFLLENBQWUsTUFBTSxDQUFDLENBQUM7SUFD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QixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2dlby1idXR0b24vZ2VvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2dlby1lbXB0eS1zdGF0ZS9nZW8tZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHtcbiAgR2VvQ2hhcnREYXR1bSxcbiAgR2VvQ2hhcnRTZWdtZW50Q2xpY2ssXG4gIEdlb0NoYXJ0U29ydCxcbiAgR2VvQ2hhcnRUeXBlLFxufSBmcm9tICcuL2dlby1jaGFydC50eXBlcyc7XG5cbmNvbnN0IERFRkFVTFRfQ09MT1JTID0gW1xuICAndmFyKC0tZ2VvLWNvbG9yLXByaW1hcnktZGVmYXVsdCknLFxuICAndmFyKC0tZ2VvLWNvbG9yLXdhcm5pbmctZGVmYXVsdCknLFxuICAndmFyKC0tZ2VvLWNvbG9yLXN1Y2Nlc3MtZGVmYXVsdCknLFxuICAndmFyKC0tZ2VvLWNvbG9yLWluZm8tZGVmYXVsdCknLFxuICAndmFyKC0tZ2VvLWNvbG9yLXRlYWwtZGVmYXVsdCwgIzBkOTQ4OCknLFxuICAndmFyKC0tZ2VvLWNvbG9yLW5ldXRyYWwtNTAwKScsXG5dO1xuXG4vKipcbiAqIExpZ2h0d2VpZ2h0IFNWRyBjaGFydHMgZm9yIGRhc2hib2FyZCAvIHRo4buRbmcga8OqIChUQ1FILjLigJMzKS5cbiAqIE5vIGNoYXJ0LWxpYnJhcnkgcGVlciBkZXBlbmRlbmN5IOKAlCBob3N0IGJpbmRzIGRhdGEgb25seS5cbiAqXG4gKiBAc3VtbWFyeSBCaeG7g3UgxJHhu5MgY+G7mXQgLyBkb251dCB0aHXhuqduIFNWRyBjaG8gdHJhbmcgdGjhu5FuZyBrw6ouXG4gKiBAd2hlblRvVXNlIERhc2hib2FyZCBkaeG7h24gdMOtY2ggdGhlbyB4w6MsIHThu7cgbOG7hyB0aOG7rWEgbOG7h2NoIG3hu6VjIMSRw61jaC5cbiAqIEBkb05vdFVzZVdoZW4gSGVhdnkgQkkgZGFzaGJvYXJkcyBuZWVkaW5nIHpvb20vYnJ1c2gg4oCUIHVzZSBhIGNoYXJ0IGxpYiBpbiB0aGUgYXBwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tY2hhcnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbR2VvQnV0dG9uQ29tcG9uZW50LCBHZW9FbXB0eVN0YXRlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tY2hhcnQuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2dlby1jaGFydC1ob3N0JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9DaGFydENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHR5cGUgPSBpbnB1dDxHZW9DaGFydFR5cGU+KCdiYXInKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dCgnJyk7XG4gIHJlYWRvbmx5IGRhdGEgPSBpbnB1dDxHZW9DaGFydERhdHVtW10+KFtdKTtcbiAgcmVhZG9ubHkgaGVpZ2h0ID0gaW5wdXQoMjYwKTtcbiAgcmVhZG9ubHkgc2hvd0xlZ2VuZCA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBzaG93U29ydCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgc29ydCA9IG1vZGVsPEdlb0NoYXJ0U29ydD4oJ2Rlc2MnKTtcbiAgcmVhZG9ubHkgZW1wdHlUZXh0ID0gaW5wdXQoJ0NoxrBhIGPDsyBk4buvIGxp4buHdSB0aOG7kW5nIGvDqi4nKTtcbiAgcmVhZG9ubHkgdW5pdCA9IGlucHV0KCcnKTtcblxuICByZWFkb25seSBzZWdtZW50Q2xpY2sgPSBvdXRwdXQ8R2VvQ2hhcnRTZWdtZW50Q2xpY2s+KCk7XG4gIHJlYWRvbmx5IHNvcnRDaGFuZ2UgPSBvdXRwdXQ8R2VvQ2hhcnRTb3J0PigpO1xuXG4gIHJlYWRvbmx5IHNvcnRlZERhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5kYXRhKCldO1xuICAgIGNvbnN0IHNvcnQgPSB0aGlzLnNvcnQoKTtcbiAgICBpZiAoc29ydCA9PT0gJ2FzYycpIHtcbiAgICAgIHJldHVybiBpdGVtcy5zb3J0KChhLCBiKSA9PiBhLnZhbHVlIC0gYi52YWx1ZSk7XG4gICAgfVxuICAgIGlmIChzb3J0ID09PSAnZGVzYycpIHtcbiAgICAgIHJldHVybiBpdGVtcy5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbWF4VmFsdWUgPSBjb21wdXRlZCgoKSA9PlxuICAgIE1hdGgubWF4KDAsIC4uLnRoaXMuc29ydGVkRGF0YSgpLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpLFxuICApO1xuXG4gIHJlYWRvbmx5IHRvdGFsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNvcnRlZERhdGEoKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgaXRlbS52YWx1ZSwgMCksXG4gICk7XG5cbiAgcmVhZG9ubHkgZG9udXRTZWdtZW50cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuc29ydGVkRGF0YSgpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbCgpIHx8IDE7XG4gICAgY29uc3QgcmFkaXVzID0gNTY7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogcmFkaXVzO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCByYXRpbyA9IGl0ZW0udmFsdWUgLyB0b3RhbDtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHJhdGlvICogY2lyY3VtZmVyZW5jZTtcbiAgICAgIGNvbnN0IHNlZ21lbnQgPSB7XG4gICAgICAgIGRhdHVtOiBpdGVtLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgY29sb3I6IGl0ZW0uY29sb3IgfHwgREVGQVVMVF9DT0xPUlNbaW5kZXggJSBERUZBVUxUX0NPTE9SUy5sZW5ndGhdLFxuICAgICAgICBkYXNoYXJyYXk6IGAke2xlbmd0aH0gJHtjaXJjdW1mZXJlbmNlIC0gbGVuZ3RofWAsXG4gICAgICAgIGRhc2hvZmZzZXQ6IC1vZmZzZXQsXG4gICAgICAgIHBlcmNlbnQ6IE1hdGgucm91bmQocmF0aW8gKiAxMDAwKSAvIDEwLFxuICAgICAgfTtcbiAgICAgIG9mZnNldCArPSBsZW5ndGg7XG4gICAgICByZXR1cm4gc2VnbWVudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29sb3JPZihpdGVtOiBHZW9DaGFydERhdHVtLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5jb2xvciB8fCBERUZBVUxUX0NPTE9SU1tpbmRleCAlIERFRkFVTFRfQ09MT1JTLmxlbmd0aF07XG4gIH1cblxuICAvKipcbiAgICogYEBmb3JgIHRyYWNrIGTDuW5nIHF1YSBtZXRob2QgdGhheSB2w6wgYGl0ZW0uaWQgPz8gaXRlbS5sYWJlbGAgdHLhu7FjIHRp4bq/cCB0cm9uZyB0ZW1wbGF0ZSDigJRcbiAgICogQW5ndWxhciBsaW5rZXIgKDE4LjIuMTQpIHNpbmggc2FpIHNjb3BlIGJp4bq/biB04bqhbSBjaG8gdHJhY2sgZXhwcmVzc2lvbiBjaOG7qWEgYD8/YCBraGkgYuG7i1xuICAgKiBob2lzdCBsw6puIG1vZHVsZSBzY29wZSwgZ8OieSBgUmVmZXJlbmNlRXJyb3I6IHRtcF94XzAgaXMgbm90IGRlZmluZWRgIGzDumMgY2jhuqF5LlxuICAgKi9cbiAgdHJhY2tEYXR1bShpdGVtOiBHZW9DaGFydERhdHVtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5pZCA/PyBpdGVtLmxhYmVsO1xuICB9XG5cbiAgdHJhY2tTZWdtZW50KHNlZzogeyBkYXR1bTogR2VvQ2hhcnREYXR1bSB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VnLmRhdHVtLmlkID8/IHNlZy5kYXR1bS5sYWJlbDtcbiAgfVxuXG4gIGJhcldpZHRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1heCA9IHRoaXMubWF4VmFsdWUoKSB8fCAxO1xuICAgIHJldHVybiBgJHtNYXRoLm1heCgyLCAodmFsdWUgLyBtYXgpICogMTAwKX0lYDtcbiAgfVxuXG4gIHNldFNvcnQobmV4dDogR2VvQ2hhcnRTb3J0KTogdm9pZCB7XG4gICAgdGhpcy5zb3J0LnNldChuZXh0KTtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChuZXh0KTtcbiAgfVxuXG4gIG9uU2VnbWVudChkYXR1bTogR2VvQ2hhcnREYXR1bSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VnbWVudENsaWNrLmVtaXQoeyBkYXR1bSwgaW5kZXggfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnZW8tY2hhcnRcIiBbc3R5bGUuLS1nZW8tY2hhcnQtaGVpZ2h0LnB4XT1cImhlaWdodCgpXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJnZW8tY2hhcnRfX2hlYWRlclwiPlxuICAgIEBpZiAodGl0bGUoKSkge1xuICAgICAgPGgzIGNsYXNzPVwiZ2VvLWNoYXJ0X190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgIH1cbiAgICBAaWYgKHNob3dTb3J0KCkgJiYgdHlwZSgpID09PSAnYmFyJykge1xuICAgICAgPGRpdiBjbGFzcz1cImdlby1jaGFydF9fc29ydFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJT4bqvcCB44bq/cFwiPlxuICAgICAgICA8Z2VvLWJ1dHRvblxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJ0ZXJ0aWFyeVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJzb3J0KCkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgKGNsaWNrZWQpPVwic2V0U29ydCgnZGVzYycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEdp4bqjbSBk4bqnblxuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInRlcnRpYXJ5XCJcbiAgICAgICAgICBbYWN0aXZlXT1cInNvcnQoKSA9PT0gJ2FzYydcIlxuICAgICAgICAgIChjbGlja2VkKT1cInNldFNvcnQoJ2FzYycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIFTEg25nIGThuqduXG4gICAgICAgIDwvZ2VvLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9oZWFkZXI+XG5cbiAgQGlmICghc29ydGVkRGF0YSgpLmxlbmd0aCkge1xuICAgIDxnZW8tZW1wdHktc3RhdGUgW3RpdGxlXT1cImVtcHR5VGV4dCgpXCIgaWNvbj1cImJhci1jaGFydFwiIC8+XG4gIH0gQGVsc2UgaWYgKHR5cGUoKSA9PT0gJ2JhcicpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNoYXJ0X19iYXJzXCIgcm9sZT1cImltZ1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGUoKSB8fCAnQmnhu4N1IMSR4buTIGPhu5l0J1wiPlxuICAgICAgQGZvciAoaXRlbSBvZiBzb3J0ZWREYXRhKCk7IHRyYWNrIHRyYWNrRGF0dW0oaXRlbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fYmFyLXJvd1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VnbWVudChpdGVtLCBpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1jaGFydF9fYmFyLWxhYmVsXCIgW3RpdGxlXT1cIml0ZW0ubGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLWNoYXJ0X19iYXItdHJhY2tcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ2VvLWNoYXJ0X19iYXItZmlsbFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJiYXJXaWR0aChpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yT2YoaXRlbSwgaSlcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tY2hhcnRfX2Jhci12YWx1ZVwiPlxuICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB9fXt7IHVuaXQoKSA/ICcgJyArIHVuaXQoKSA6ICcnIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImdlby1jaGFydF9fZG9udXQtd3JhcFwiPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fZG9udXRcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDE0MCAxNDBcIlxuICAgICAgICByb2xlPVwiaW1nXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aXRsZSgpIHx8ICdCaeG7g3UgxJHhu5MgZG9udXQnXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZVxuICAgICAgICAgIGNsYXNzPVwiZ2VvLWNoYXJ0X19kb251dC10cmFja1wiXG4gICAgICAgICAgY3g9XCI3MFwiXG4gICAgICAgICAgY3k9XCI3MFwiXG4gICAgICAgICAgcj1cIjU2XCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMThcIlxuICAgICAgICAvPlxuICAgICAgICBAZm9yIChzZWcgb2YgZG9udXRTZWdtZW50cygpOyB0cmFjayB0cmFja1NlZ21lbnQoc2VnKSkge1xuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiZ2VvLWNoYXJ0X19kb251dC1zZWdcIlxuICAgICAgICAgICAgY3g9XCI3MFwiXG4gICAgICAgICAgICBjeT1cIjcwXCJcbiAgICAgICAgICAgIHI9XCI1NlwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxOFwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic2VnLmNvbG9yXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwic2VnLmRhc2hhcnJheVwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaG9mZnNldF09XCJzZWcuZGFzaG9mZnNldFwiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoLTkwIDcwIDcwKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWdtZW50KHNlZy5kYXR1bSwgc2VnLmluZGV4KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICA8dGV4dCB4PVwiNzBcIiB5PVwiNjZcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGNsYXNzPVwiZ2VvLWNoYXJ0X19kb251dC1jZW50ZXItbGFiZWxcIj5cbiAgICAgICAgICBU4buVbmdcbiAgICAgICAgPC90ZXh0PlxuICAgICAgICA8dGV4dCB4PVwiNzBcIiB5PVwiODRcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGNsYXNzPVwiZ2VvLWNoYXJ0X19kb251dC1jZW50ZXItdmFsdWVcIj5cbiAgICAgICAgICB7eyB0b3RhbCgpIH19XG4gICAgICAgIDwvdGV4dD5cbiAgICAgIDwvc3ZnPlxuXG4gICAgICBAaWYgKHNob3dMZWdlbmQoKSkge1xuICAgICAgICA8dWwgY2xhc3M9XCJnZW8tY2hhcnRfX2xlZ2VuZFwiPlxuICAgICAgICAgIEBmb3IgKHNlZyBvZiBkb251dFNlZ21lbnRzKCk7IHRyYWNrIHRyYWNrU2VnbWVudChzZWcpKSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fbGVnZW5kLWl0ZW1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlZ21lbnQoc2VnLmRhdHVtLCBzZWcuaW5kZXgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImdlby1jaGFydF9fc3dhdGNoXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInNlZy5jb2xvclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1jaGFydF9fbGVnZW5kLWxhYmVsXCI+e3sgc2VnLmRhdHVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLWNoYXJ0X19sZWdlbmQtdmFsdWVcIj57eyBzZWcucGVyY2VudCB9fSU8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -13,10 +13,10 @@ export class GeoListPageComponent {
13
13
  breadcrumb = input([]);
14
14
  uppercase = input(true);
15
15
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoListPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoListPageComponent, isStandalone: true, selector: "geo-list-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null }, uppercase: { classPropertyName: "uppercase", publicName: "uppercase", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-list-page-host" }, ngImport: i0, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [".geo-list-page-host{display:block}.geo-list-page{display:flex;flex-direction:column;gap:16px}.geo-list-page__filter:empty,.geo-list-page__toolbar:empty{display:none}.geo-list-page__table-panel{display:flex;flex-direction:column;min-width:0;gap:0}.geo-list-page__body{min-width:0}\n"], dependencies: [{ kind: "component", type: GeoPageHeaderComponent, selector: "geo-page-header", inputs: ["title", "breadcrumb", "uppercase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoListPageComponent, isStandalone: true, selector: "geo-list-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null }, uppercase: { classPropertyName: "uppercase", publicName: "uppercase", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-list-page-host" }, ngImport: i0, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.geo-list-page-host{display:block}.geo-list-page{display:flex;flex-direction:column;gap:16px}.geo-list-page__filter:empty,.geo-list-page__toolbar:empty{display:none}.geo-list-page__filter:not(:empty){padding:16px;background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius)}.geo-list-page__table-panel{display:flex;flex-direction:column;min-width:0;gap:0}.geo-list-page__body{min-width:0}\n"], dependencies: [{ kind: "component", type: GeoPageHeaderComponent, selector: "geo-page-header", inputs: ["title", "breadcrumb", "uppercase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoListPageComponent, decorators: [{
19
19
  type: Component,
20
- args: [{ selector: 'geo-list-page', standalone: true, imports: [GeoPageHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-list-page-host' }, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [".geo-list-page-host{display:block}.geo-list-page{display:flex;flex-direction:column;gap:16px}.geo-list-page__filter:empty,.geo-list-page__toolbar:empty{display:none}.geo-list-page__table-panel{display:flex;flex-direction:column;min-width:0;gap:0}.geo-list-page__body{min-width:0}\n"] }]
20
+ args: [{ selector: 'geo-list-page', standalone: true, imports: [GeoPageHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-list-page-host' }, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.geo-list-page-host{display:block}.geo-list-page{display:flex;flex-direction:column;gap:16px}.geo-list-page__filter:empty,.geo-list-page__toolbar:empty{display:none}.geo-list-page__filter:not(:empty){padding:16px;background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius)}.geo-list-page__table-panel{display:flex;flex-direction:column;min-width:0;gap:0}.geo-list-page__body{min-width:0}\n"] }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxpc3QtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tbGlzdC1wYWdlL2dlby1saXN0LXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxpc3QtcGFnZS9nZW8tbGlzdC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7O0FBR3RGOzs7Ozs7R0FNRztBQVdILE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixVQUFVLEdBQUcsS0FBSyxDQUFzQixFQUFFLENBQUMsQ0FBQztJQUM1QyxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO3dHQUh0QixvQkFBb0I7NEZBQXBCLG9CQUFvQix3Z0JDMUJqQywydEJBMkJBLG1WRFJZLHNCQUFzQjs7NEZBT3JCLG9CQUFvQjtrQkFWaEMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsc0JBQXNCLENBQUMsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2VvUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2dlby1wYWdlLWhlYWRlci9nZW8tcGFnZS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgR2VvQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuLi9nZW8tYnJlYWRjcnVtYi9nZW8tYnJlYWRjcnVtYi50eXBlcyc7XG5cbi8qKlxuICogU3RhbmRhcmQgbGlzdCAvIENSVUQgcGFnZSBjaHJvbWUgKGFkbWluICYgdGjhu5FuZyBrw6opLlxuICpcbiAqIEBzdW1tYXJ5IExheW91dCB0cmFuZyBkYW5oIHPDoWNoOiBoZWFkZXIgKyBmaWx0ZXIgKyB0b29sYmFyICsgbuG7mWkgZHVuZyBi4bqjbmcuXG4gKiBAd2hlblRvVXNlIFFMIG5nxrDhu51pIGTDuW5nLCDEkeG7k25nIGLhu5kgaUxJUywgUUwgZOG7i2NoIHbhu6UvYuG6o24gxJHhu5MsIHRo4buRbmcga8OqIHThu50uXG4gKiBAZG9Ob3RVc2VXaGVuIE1hcCBwb3J0YWwg4oCUIHVzZSBnZW8tbWFwLXNoZWxsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbGlzdC1wYWdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0dlb1BhZ2VIZWFkZXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWxpc3QtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbGlzdC1wYWdlLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdnZW8tbGlzdC1wYWdlLWhvc3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb0xpc3RQYWdlQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dCgnJyk7XG4gIHJlYWRvbmx5IGJyZWFkY3J1bWIgPSBpbnB1dDxHZW9CcmVhZGNydW1iSXRlbVtdPihbXSk7XG4gIHJlYWRvbmx5IHVwcGVyY2FzZSA9IGlucHV0KHRydWUpO1xufVxuIiwiPGRpdiBjbGFzcz1cImdlby1saXN0LXBhZ2VcIj5cbiAgPGdlby1wYWdlLWhlYWRlclxuICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iKClcIlxuICAgIFt1cHBlcmNhc2VdPVwidXBwZXJjYXNlKClcIlxuICA+XG4gICAgPGRpdiBnZW9QYWdlQWN0aW9ucz5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltnZW9MaXN0QWN0aW9uc11cIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZ2VvUGFnZUZpbHRlcnM+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZ2VvTGlzdEZpbHRlcnNdXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9nZW8tcGFnZS1oZWFkZXI+XG5cbiAgPGRpdiBjbGFzcz1cImdlby1saXN0LXBhZ2VfX2ZpbHRlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImdlby10YWJsZS1maWx0ZXIsW2dlb0xpc3RGaWx0ZXJdXCIgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImdlby1saXN0LXBhZ2VfX3RhYmxlLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cImdlby1saXN0LXBhZ2VfX3Rvb2xiYXJcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImdlby10YWJsZS10b29sYmFyLFtnZW9MaXN0VG9vbGJhcl1cIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnZW8tbGlzdC1wYWdlX19ib2R5XCI+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWxpc3QtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tbGlzdC1wYWdlL2dlby1saXN0LXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLWxpc3QtcGFnZS9nZW8tbGlzdC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7O0FBR3RGOzs7Ozs7R0FNRztBQVdILE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixVQUFVLEdBQUcsS0FBSyxDQUFzQixFQUFFLENBQUMsQ0FBQztJQUM1QyxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO3dHQUh0QixvQkFBb0I7NEZBQXBCLG9CQUFvQix3Z0JDMUJqQywydEJBMkJBLGloQkRSWSxzQkFBc0I7OzRGQU9yQixvQkFBb0I7a0JBVmhDLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLHNCQUFzQixDQUFDLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb1BhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9nZW8tcGFnZS1oZWFkZXIvZ2VvLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEdlb0JyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi4vZ2VvLWJyZWFkY3J1bWIvZ2VvLWJyZWFkY3J1bWIudHlwZXMnO1xuXG4vKipcbiAqIFN0YW5kYXJkIGxpc3QgLyBDUlVEIHBhZ2UgY2hyb21lIChhZG1pbiAmIHRo4buRbmcga8OqKS5cbiAqXG4gKiBAc3VtbWFyeSBMYXlvdXQgdHJhbmcgZGFuaCBzw6FjaDogaGVhZGVyICsgZmlsdGVyICsgdG9vbGJhciArIG7hu5lpIGR1bmcgYuG6o25nLlxuICogQHdoZW5Ub1VzZSBRTCBuZ8aw4budaSBkw7luZywgxJHhu5NuZyBi4buZIGlMSVMsIFFMIGThu4tjaCB24bulL2LhuqNuIMSR4buTLCB0aOG7kW5nIGvDqiB04budLlxuICogQGRvTm90VXNlV2hlbiBNYXAgcG9ydGFsIOKAlCB1c2UgZ2VvLW1hcC1zaGVsbC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLWxpc3QtcGFnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9QYWdlSGVhZGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1saXN0LXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLWxpc3QtcGFnZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnZ2VvLWxpc3QtcGFnZS1ob3N0JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9MaXN0UGFnZUNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoJycpO1xuICByZWFkb25seSBicmVhZGNydW1iID0gaW5wdXQ8R2VvQnJlYWRjcnVtYkl0ZW1bXT4oW10pO1xuICByZWFkb25seSB1cHBlcmNhc2UgPSBpbnB1dCh0cnVlKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJnZW8tbGlzdC1wYWdlXCI+XG4gIDxnZW8tcGFnZS1oZWFkZXJcbiAgICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gICAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYigpXCJcbiAgICBbdXBwZXJjYXNlXT1cInVwcGVyY2FzZSgpXCJcbiAgPlxuICAgIDxkaXYgZ2VvUGFnZUFjdGlvbnM+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZ2VvTGlzdEFjdGlvbnNdXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGdlb1BhZ2VGaWx0ZXJzPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2dlb0xpc3RGaWx0ZXJzXVwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZ2VvLXBhZ2UtaGVhZGVyPlxuXG4gIDxkaXYgY2xhc3M9XCJnZW8tbGlzdC1wYWdlX19maWx0ZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJnZW8tdGFibGUtZmlsdGVyLFtnZW9MaXN0RmlsdGVyXVwiIC8+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJnZW8tbGlzdC1wYWdlX190YWJsZS1wYW5lbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJnZW8tbGlzdC1wYWdlX190b29sYmFyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJnZW8tdGFibGUtdG9vbGJhcixbZ2VvTGlzdFRvb2xiYXJdXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWxpc3QtcGFnZV9fYm9keVwiPlxuICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -14,6 +14,8 @@ export class GeoMapAdminFilterComponent {
14
14
  open = model(false);
15
15
  title = input('Đơn vị hành chính');
16
16
  nodes = input([]);
17
+ /** `single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định). */
18
+ selectionMode = input('multi');
17
19
  checkedKeys = model([]);
18
20
  expandedKeys = model([]);
19
21
  apply = output();
@@ -40,13 +42,13 @@ export class GeoMapAdminFilterComponent {
40
42
  this.closed.emit();
41
43
  }
42
44
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapAdminFilterComponent, isStandalone: true, selector: "geo-map-admin-filter", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, checkedKeys: { classPropertyName: "checkedKeys", publicName: "checkedKeys", isSignal: true, isRequired: false, transformFunction: null }, expandedKeys: { classPropertyName: "expandedKeys", publicName: "expandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", checkedKeys: "checkedKeysChange", expandedKeys: "expandedKeysChange", apply: "apply", reset: "reset", fitProvince: "fitProvince", closed: "closed", selectionChange: "selectionChange" }, host: { properties: { "class.geo-map-admin-filter-host--open": "open()" }, classAttribute: "geo-map-admin-filter-host" }, ngImport: i0, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [checkable]=\"true\"\n [checkedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:40px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"], dependencies: [{ kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoTreeComponent, selector: "geo-tree", inputs: ["nodes", "checkable", "checkedKeys", "expandedKeys", "showLine", "blockNode"], outputs: ["checkedKeysChange", "expandedKeysChange", "nodeClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapAdminFilterComponent, isStandalone: true, selector: "geo-map-admin-filter", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, checkedKeys: { classPropertyName: "checkedKeys", publicName: "checkedKeys", isSignal: true, isRequired: false, transformFunction: null }, expandedKeys: { classPropertyName: "expandedKeys", publicName: "expandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", checkedKeys: "checkedKeysChange", expandedKeys: "expandedKeysChange", apply: "apply", reset: "reset", fitProvince: "fitProvince", closed: "closed", selectionChange: "selectionChange" }, host: { properties: { "class.geo-map-admin-filter-host--open": "open()" }, classAttribute: "geo-map-admin-filter-host" }, ngImport: i0, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [selectionMode]=\"selectionMode()\"\n [checkable]=\"selectionMode() === 'multi'\"\n [checkedKeys]=\"checkedKeys()\"\n [selectedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (selectedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:32px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"], dependencies: [{ kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoTreeComponent, selector: "geo-tree", inputs: ["nodes", "checkable", "selectionMode", "checkedKeys", "selectedKeys", "expandedKeys", "showLine", "blockNode"], outputs: ["checkedKeysChange", "selectedKeysChange", "expandedKeysChange", "nodeClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
44
46
  }
45
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, decorators: [{
46
48
  type: Component,
47
49
  args: [{ selector: 'geo-map-admin-filter', standalone: true, imports: [GeoButtonComponent, GeoIconComponent, GeoTreeComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
48
50
  class: 'geo-map-admin-filter-host',
49
51
  '[class.geo-map-admin-filter-host--open]': 'open()',
50
- }, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [checkable]=\"true\"\n [checkedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:40px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"] }]
52
+ }, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [selectionMode]=\"selectionMode()\"\n [checkable]=\"selectionMode() === 'multi'\"\n [checkedKeys]=\"checkedKeys()\"\n [selectedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (selectedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:32px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"] }]
51
53
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUd4RTs7Ozs7O0dBTUc7QUFjSCxNQUFNLE9BQU8sMEJBQTBCO0lBQzVCLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25DLEtBQUssR0FBRyxLQUFLLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFdBQVcsR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFlBQVksR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBRWpELEtBQUssR0FBRyxNQUFNLEVBQTBCLENBQUM7SUFDekMsS0FBSyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQ3ZCLFdBQVcsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUM3QixNQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDeEIsZUFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztJQUU1RCxlQUFlLENBQUMsSUFBNEI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO3dHQWxDVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiwyaUNDakN2QyxzM0NBd0NBLHdrRURqQlksa0JBQWtCLHNPQUFFLGdCQUFnQix5R0FBRSxnQkFBZ0I7OzRGQVVyRCwwQkFBMEI7a0JBYnRDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLG1CQUdoRCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSwyQkFBMkI7d0JBQ2xDLHlDQUF5QyxFQUFFLFFBQVE7cUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1idXR0b24vZ2VvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1pY29uL2dlby1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9UcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLXRyZWUvZ2VvLXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgR2VvVHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9nZW8tdHJlZS9nZW8tdHJlZS50eXBlcyc7XG5cbi8qKlxuICogQWRtaW5pc3RyYXRpdmUgdW5pdCBmaWx0ZXIgdHJlZSAoVENRSC4xNCDigJQgY+G6pXAgeMOjKS5cbiAqXG4gKiBAc3VtbWFyeSBQYW5lbCBs4buNYyBjw6J5IMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oIGPhuqVwIHjDoyB0csOqbiBi4bqjbiDEkeG7ky5cbiAqIEB3aGVuVG9Vc2UgVHJhIGPhu6l1IGLhuqNuIMSR4buTIGPhuqduIGzhu41jIHRoZW8geMOjIC8gcGjGsOG7nW5nLlxuICogQGRvTm90VXNlV2hlbiBHbG9iYWwgb3JnIGNoYXJ0cyBvdXRzaWRlIG1hcCBjb250ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLWFkbWluLWZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9CdXR0b25Db21wb25lbnQsIEdlb0ljb25Db21wb25lbnQsIEdlb1RyZWVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ2VvLW1hcC1hZG1pbi1maWx0ZXItaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8tbWFwLWFkbWluLWZpbHRlci1ob3N0LS1vcGVuXSc6ICdvcGVuKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9NYXBBZG1pbkZpbHRlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IG9wZW4gPSBtb2RlbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoJ8SQxqFuIHbhu4sgaMOgbmggY2jDrW5oJyk7XG4gIHJlYWRvbmx5IG5vZGVzID0gaW5wdXQ8R2VvVHJlZU5vZGVbXT4oW10pO1xuICByZWFkb25seSBjaGVja2VkS2V5cyA9IG1vZGVsPEFycmF5PHN0cmluZyB8IG51bWJlcj4+KFtdKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRLZXlzID0gbW9kZWw8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oW10pO1xuXG4gIHJlYWRvbmx5IGFwcGx5ID0gb3V0cHV0PEFycmF5PHN0cmluZyB8IG51bWJlcj4+KCk7XG4gIHJlYWRvbmx5IHJlc2V0ID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGZpdFByb3ZpbmNlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oKTtcblxuICBvbkNoZWNrZWRDaGFuZ2Uoa2V5czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZEtleXMuc2V0KGtleXMpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoa2V5cyk7XG4gIH1cblxuICBvbkFwcGx5KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHkuZW1pdCh0aGlzLmNoZWNrZWRLZXlzKCkpO1xuICB9XG5cbiAgb25SZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWRLZXlzLnNldChbXSk7XG4gICAgdGhpcy5yZXNldC5lbWl0KCk7XG4gIH1cblxuICBvbkZpdFByb3ZpbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuZml0UHJvdmluY2UuZW1pdCgpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG59XG4iLCJAaWYgKG9wZW4oKSkge1xuICA8c2VjdGlvbiBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyXCIgYXJpYS1sYWJlbD1cIkzhu41jIMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX19oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWFkbWluLWZpbHRlcl9faWNvbi1idG5cIlxuICAgICAgICBhcmlhLWxhYmVsPVwixJDDs25nIGLhu5kgbOG7jWNcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxnZW8taWNvbiB0eXBlPVwiY2xvc2VcIiBzaXplPVwic21cIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2JvZHlcIj5cbiAgICAgIDxnZW8tdHJlZVxuICAgICAgICBbbm9kZXNdPVwibm9kZXMoKVwiXG4gICAgICAgIFtjaGVja2FibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjaGVja2VkS2V5c109XCJjaGVja2VkS2V5cygpXCJcbiAgICAgICAgW2V4cGFuZGVkS2V5c109XCJleHBhbmRlZEtleXMoKVwiXG4gICAgICAgIChjaGVja2VkS2V5c0NoYW5nZSk9XCJvbkNoZWNrZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChleHBhbmRlZEtleXNDaGFuZ2UpPVwiZXhwYW5kZWRLZXlzLnNldCgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2Zvb3RlclwiPlxuICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIChjbGlja2VkKT1cIm9uRml0UHJvdmluY2UoKVwiPlxuICAgICAgICBYZW0gdG/DoG4gdOG7iW5oXG4gICAgICA8L2dlby1idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2Zvb3Rlci1lbmRcIj5cbiAgICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIChjbGlja2VkKT1cIm9uUmVzZXQoKVwiPlxuICAgICAgICAgIMSQ4bq3dCBs4bqhaVxuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgIDxnZW8tYnV0dG9uIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCIgKGNsaWNrZWQpPVwib25BcHBseSgpXCI+XG4gICAgICAgICAgw4FwIGThu6VuZ1xuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxufVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUd4RTs7Ozs7O0dBTUc7QUFjSCxNQUFNLE9BQU8sMEJBQTBCO0lBQzVCLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25DLEtBQUssR0FBRyxLQUFLLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLDRGQUE0RjtJQUNuRixhQUFhLEdBQUcsS0FBSyxDQUFxQixPQUFPLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQUcsS0FBSyxDQUF5QixFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLEdBQUcsS0FBSyxDQUF5QixFQUFFLENBQUMsQ0FBQztJQUVqRCxLQUFLLEdBQUcsTUFBTSxFQUEwQixDQUFDO0lBQ3pDLEtBQUssR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUN2QixXQUFXLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDN0IsTUFBTSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQ3hCLGVBQWUsR0FBRyxNQUFNLEVBQTBCLENBQUM7SUFFNUQsZUFBZSxDQUFDLElBQTRCO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzt3R0FwQ1UsMEJBQTBCOzRGQUExQiwwQkFBMEIsMnJDQ2pDdkMsOGhEQTJDQSx5aUVEcEJZLGtCQUFrQixzT0FBRSxnQkFBZ0IseUdBQUUsZ0JBQWdCOzs0RkFVckQsMEJBQTBCO2tCQWJ0QyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFHaEQsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsMkJBQTJCO3dCQUNsQyx5Q0FBeUMsRUFBRSxRQUFRO3FCQUNwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHZW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nZW8tYnV0dG9uL2dlby1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEdlb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nZW8taWNvbi9nZW8taWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby10cmVlL2dlby10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEdlb1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vZ2VvLXRyZWUvZ2VvLXRyZWUudHlwZXMnO1xuXG4vKipcbiAqIEFkbWluaXN0cmF0aXZlIHVuaXQgZmlsdGVyIHRyZWUgKFRDUUguMTQg4oCUIGPhuqVwIHjDoykuXG4gKlxuICogQHN1bW1hcnkgUGFuZWwgbOG7jWMgY8OieSDEkcahbiB24buLIGjDoG5oIGNow61uaCBj4bqlcCB4w6MgdHLDqm4gYuG6o24gxJHhu5MuXG4gKiBAd2hlblRvVXNlIFRyYSBj4bupdSBi4bqjbiDEkeG7kyBj4bqnbiBs4buNYyB0aGVvIHjDoyAvIHBoxrDhu51uZy5cbiAqIEBkb05vdFVzZVdoZW4gR2xvYmFsIG9yZyBjaGFydHMgb3V0c2lkZSBtYXAgY29udGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLW1hcC1hZG1pbi1maWx0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbR2VvQnV0dG9uQ29tcG9uZW50LCBHZW9JY29uQ29tcG9uZW50LCBHZW9UcmVlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAtYWRtaW4tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1tYXAtYWRtaW4tZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1tYXAtYWRtaW4tZmlsdGVyLWhvc3QnLFxuICAgICdbY2xhc3MuZ2VvLW1hcC1hZG1pbi1maWx0ZXItaG9zdC0tb3Blbl0nOiAnb3BlbigpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvTWFwQWRtaW5GaWx0ZXJDb21wb25lbnQge1xuICByZWFkb25seSBvcGVuID0gbW9kZWwoZmFsc2UpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KCfEkMahbiB24buLIGjDoG5oIGNow61uaCcpO1xuICByZWFkb25seSBub2RlcyA9IGlucHV0PEdlb1RyZWVOb2RlW10+KFtdKTtcbiAgLyoqIGBzaW5nbGVgIOKAlCBjaOG7jW4gxJHDum5nIDEgeMOjL3BoxrDhu51uZyAoQlItMDYtMDMpOyBgbXVsdGlgIOKAlCBjaGVja2JveCBuaGnhu4F1IGPhuqVwICht4bq3YyDEkeG7i25oKS4gKi9cbiAgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZSA9IGlucHV0PCdzaW5nbGUnIHwgJ211bHRpJz4oJ211bHRpJyk7XG4gIHJlYWRvbmx5IGNoZWNrZWRLZXlzID0gbW9kZWw8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oW10pO1xuICByZWFkb25seSBleHBhbmRlZEtleXMgPSBtb2RlbDxBcnJheTxzdHJpbmcgfCBudW1iZXI+PihbXSk7XG5cbiAgcmVhZG9ubHkgYXBwbHkgPSBvdXRwdXQ8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oKTtcbiAgcmVhZG9ubHkgcmVzZXQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgZml0UHJvdmluY2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgY2xvc2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxBcnJheTxzdHJpbmcgfCBudW1iZXI+PigpO1xuXG4gIG9uQ2hlY2tlZENoYW5nZShrZXlzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkS2V5cy5zZXQoa2V5cyk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChrZXlzKTtcbiAgfVxuXG4gIG9uQXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseS5lbWl0KHRoaXMuY2hlY2tlZEtleXMoKSk7XG4gIH1cblxuICBvblJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZEtleXMuc2V0KFtdKTtcbiAgICB0aGlzLnJlc2V0LmVtaXQoKTtcbiAgfVxuXG4gIG9uRml0UHJvdmluY2UoKTogdm9pZCB7XG4gICAgdGhpcy5maXRQcm92aW5jZS5lbWl0KCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIkBpZiAob3BlbigpKSB7XG4gIDxzZWN0aW9uIGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJcIiBhcmlhLWxhYmVsPVwiTOG7jWMgxJHGoW4gduG7iyBow6BuaCBjaMOtbmhcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2hlYWRlclwiPlxuICAgICAgPGgzIGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX3RpdGxlXCI+e3sgdGl0bGUoKSB9fTwvaDM+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX19pY29uLWJ0blwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCLEkMOzbmcgYuG7mSBs4buNY1wiXG4gICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGdlby1pY29uIHR5cGU9XCJjbG9zZVwiIHNpemU9XCJzbVwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJnZW8tbWFwLWFkbWluLWZpbHRlcl9fYm9keVwiPlxuICAgICAgPGdlby10cmVlXG4gICAgICAgIFtub2Rlc109XCJub2RlcygpXCJcbiAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcbiAgICAgICAgW2NoZWNrYWJsZV09XCJzZWxlY3Rpb25Nb2RlKCkgPT09ICdtdWx0aSdcIlxuICAgICAgICBbY2hlY2tlZEtleXNdPVwiY2hlY2tlZEtleXMoKVwiXG4gICAgICAgIFtzZWxlY3RlZEtleXNdPVwiY2hlY2tlZEtleXMoKVwiXG4gICAgICAgIFtleHBhbmRlZEtleXNdPVwiZXhwYW5kZWRLZXlzKClcIlxuICAgICAgICAoY2hlY2tlZEtleXNDaGFuZ2UpPVwib25DaGVja2VkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoc2VsZWN0ZWRLZXlzQ2hhbmdlKT1cIm9uQ2hlY2tlZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGV4cGFuZGVkS2V5c0NoYW5nZSk9XCJleHBhbmRlZEtleXMuc2V0KCRldmVudClcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxmb290ZXIgY2xhc3M9XCJnZW8tbWFwLWFkbWluLWZpbHRlcl9fZm9vdGVyXCI+XG4gICAgICA8Z2VvLWJ1dHRvbiBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCIgKGNsaWNrZWQpPVwib25GaXRQcm92aW5jZSgpXCI+XG4gICAgICAgIFhlbSB0b8OgbiB04buJbmhcbiAgICAgIDwvZ2VvLWJ1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnZW8tbWFwLWFkbWluLWZpbHRlcl9fZm9vdGVyLWVuZFwiPlxuICAgICAgICA8Z2VvLWJ1dHRvbiBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCIgKGNsaWNrZWQpPVwib25SZXNldCgpXCI+XG4gICAgICAgICAgxJDhurd0IGzhuqFpXG4gICAgICAgIDwvZ2VvLWJ1dHRvbj5cbiAgICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInByaW1hcnlcIiAoY2xpY2tlZCk9XCJvbkFwcGx5KClcIj5cbiAgICAgICAgICDDgXAgZOG7pW5nXG4gICAgICAgIDwvZ2VvLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9vdGVyPlxuICA8L3NlY3Rpb24+XG59XG4iXX0=