From bb93648d86ab57b3cdbfe109cbb42aacc51479e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 14:44:30 -0400 Subject: [PATCH 1/6] WIP charts2 frame parts --- bar_chart.go | 4 +- chart_empty_state.go | 32 ++++++++++ chart_frame.go | 91 ++++++++++------------------- chart_legend.go | 136 +++++++++++++++++++++++++++++++++++++++++++ chart_tooltip.go | 83 ++++++++++++++++++++++++++ line_chart.go | 17 +++++- messages_charts2.go | 8 +++ pie_chart.go | 4 +- radar_chart.go | 4 +- scatter_chart.go | 4 +- 10 files changed, 312 insertions(+), 71 deletions(-) create mode 100644 chart_empty_state.go create mode 100644 chart_legend.go create mode 100644 chart_tooltip.go create mode 100644 messages_charts2.go diff --git a/bar_chart.go b/bar_chart.go index 7989ad2..be5f1de 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -32,10 +32,10 @@ func BarChart(c *ui.Context, categories []string, series []ChartSeries, opts Bar k := Tokens(c) pal := internal.Palette(k) size := FontSize(c, theme.CaptionSize) - keys := make([]chartKey, len(series)) + keys := make([]ChartLegendItem, len(series)) var vis []int for i, s := range series { - keys[i] = chartKey{Name: s.Name, Color: pal[i%len(pal)], Shape: i} + keys[i] = ChartLegendItem{Name: s.Name, Color: pal[i%len(pal)], Shape: i} if !ch.hidden(s.Name) { vis = append(vis, i) } diff --git a/chart_empty_state.go b/chart_empty_state.go new file mode 100644 index 0000000..d13ed66 --- /dev/null +++ b/chart_empty_state.go @@ -0,0 +1,32 @@ +package mujica + +import ( + "github.com/egoist/mygo/ui" +) + +// ChartEmptyStateOptions configure a ChartEmptyState. +type ChartEmptyStateOptions struct { + // Height keeps the chart's size; 0 means 240. + Height float32 + // Error describes a DataFailed status; empty uses the built-in text. + Error string + // Empty replaces the built-in "No data" text. + Empty string +} + +// ChartEmptyState holds a chart's place while it loads, fails or has no data; Changed reports Retry. +func ChartEmptyState(c *ui.Context, status DataStatus, opts ChartEmptyStateOptions) ChoiceResult { + if opts.Height < 0 { + panic("mujica: ChartEmptyState Height must be ≥ 0") + } + h := opts.Height + if h == 0 { + h = 240 + } + var res ChoiceResult + res.Element = ui.Column(c).Height(h).FillWidth().MinWidth(0) + res.Element.Children(func() { + res.changed = dataPlaceholder(c, status, opts.Error, opts.Empty, msg(c, "chart.empty")) && !res.Element.IsDisabled() + }) + return res +} diff --git a/chart_frame.go b/chart_frame.go index 9fdad75..c3ea645 100644 --- a/chart_frame.go +++ b/chart_frame.go @@ -44,18 +44,11 @@ func (r ChartResult) ValueChanged() bool { return r.value } // Toggled returns the legend series switched in this frame. func (r ChartResult) Toggled() (string, bool) { return r.toggled, r.toggled != "" } -// chartKey is a legend entry: name, color and shape. -type chartKey struct { - Name string - Color ui.Color - Shape int -} - // chartSpec is one chart's drawing and behavior. type chartSpec struct { // n counts the marks keys step through; 0 is empty. n int - keys []chartKey + keys []ChartLegendItem // toggle lets legend entries hide and show series. toggle bool draw func(p *ui.Painter, r ui.Rect, active int) @@ -66,6 +59,10 @@ type chartSpec struct { move func(i int, key ui.Key) int // activate runs on Enter, Space or a click. activate func(i int) + // anchor places mark i's tooltip in plot space; nil uses the plot's top middle. + anchor func(r ui.Rect, i int) (x, y float32) + // tip writes mark i's tooltip; nil splits the readout. + tip func(i int) []ChartTooltipLine } type chartState struct { @@ -105,33 +102,48 @@ func (ch *chart) build(spec chartSpec) (ChartResult, *ui.Element) { var plot *ui.Element ch.res.Element.Children(func() { if len(spec.keys) > 0 { - ch.legend(spec) + var hidden *map[string]bool + if spec.toggle { + hidden = &st.hidden + } + if name, ok := ChartLegend(c, hidden, spec.keys, ChartLegendOptions{}).Toggled(); ok { + ch.res.toggled = name + } } - box := ui.Box(c).Height(ch.frame.Height).FillWidth().MinWidth(0) if ch.frame.Status == DataLoading || ch.frame.Status == DataFailed || spec.n == 0 { st.focus = -1 - box.Children(func() { - ui.Column(c).Fill().Children(func() { - ch.res.retry = dataPlaceholder(c, ch.frame.Status, ch.frame.Error, ch.frame.Empty, msg(c, "chart.empty")) - }) - }) + ch.res.retry = ChartEmptyState(c, ch.frame.Status, ChartEmptyStateOptions{Height: ch.frame.Height, Error: ch.frame.Error, Empty: ch.frame.Empty}).Changed() ch.res.Point = -1 ui.Box(c).Height(u * 5) return } + box := ui.Box(c).Height(ch.frame.Height).FillWidth().MinWidth(0) plot = box.Focusable().Label(ch.frame.Label).Role(ui.RoleGroup) internal.Ring(plot, k.Focus, theme.ControlRadius) st.focus = min(st.focus, spec.n-1) ch.input(plot, spec) active := -1 - if x, y, over := plot.PointerPosition(); over && !plot.IsDisabled() { - b := plot.Bounds() - active = spec.pick(ui.Rect{W: b.W, H: b.H}, x, y) + b := plot.Bounds() + local := ui.Rect{W: b.W, H: b.H} + x, y, over := plot.PointerPosition() + if over && !plot.IsDisabled() { + active = spec.pick(local, x, y) } if active < 0 && plot.Focused() { active = st.focus + x, y = local.W/2, 0 + if spec.anchor != nil { + x, y = spec.anchor(local, active) + } } ch.res.Point = active + if active >= 0 && b.W > 0 { + lines := chartTipLines(spec.readout(active)) + if spec.tip != nil { + lines = spec.tip(active) + } + ChartTooltip(c, b.X+x, b.Y+y, lines) + } plot.Draw(func(p *ui.Painter, r ui.Rect) { spec.draw(p, r, active) }) text, col := msg(c, "chart.hint"), k.TextMuted if active >= 0 { @@ -196,49 +208,6 @@ func (ch *chart) input(plot *ui.Element, spec chartSpec) { } } -// legend shows the series keys; toggling ones are check boxes. -func (ch *chart) legend(spec chartSpec) { - c, k, st := ch.c, Tokens(ch.c), ch.st - u := Density(c).Unit() - ui.Row(c).Wrap().Gap(u * 3).Children(func() { - for _, key := range spec.keys { - ui.Row(c).Key(key.Name).Children(func() { - on := !st.hidden[key.Name] - var e *ui.Element - if spec.toggle { - e = ui.CheckboxBase(c, &on).Disabled(ch.res.Element.IsDisabled()).Label(key.Name) - internal.Ring(e, k.Focus, theme.ControlRadius) - if e.Changed() && !e.IsDisabled() { - st.hidden[key.Name] = !on - ch.res.toggled = key.Name - slog.Debug("mujica: chart toggle", "series", key.Name, "visible", on) - } - } else { - e = ui.Row(c) - } - e.MinHeight(theme.MinHitSize).Gap(u*2).AlignItems(ui.Center).Padding(0, u).Radius(theme.ControlRadius) - col := key.Color - if !on { - col = k.TextMuted - } - e.Children(func() { - ui.Box(c).Size(12, 12).Shrink(0).Draw(func(p *ui.Painter, r ui.Rect) { - if on { - internal.Marker(p, key.Shape, r.X+6, r.Y+6, 10, col) - } else { - p.Stroke(r, col, 2, 1) - } - }) - t := ui.Text(c, key.Name).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.Text) - if !on { - t.Strikethrough().TextColor(k.TextMuted) - } - }) - }) - } - }) -} - // chartText draws s anchored at (x, y) by ax, ay. func chartText(p *ui.Painter, s string, x, y, size float32, col ui.Color, ax, ay float32) (w, h float32) { w, h = p.MeasureText(0, ui.Span{Text: s, Size: size}) diff --git a/chart_legend.go b/chart_legend.go new file mode 100644 index 0000000..7712d7e --- /dev/null +++ b/chart_legend.go @@ -0,0 +1,136 @@ +package mujica + +import ( + "fmt" + "log/slog" + "maps" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChartLegendItem is a series key: name, color and marker shape. +type ChartLegendItem struct { + Name string + Color ui.Color + // Shape picks the marker: 0 circle, 1 square, 2 diamond, 3 triangle, 4 inverted. + Shape int +} + +// ChartLegendOptions configure a ChartLegend. +type ChartLegendOptions struct { + Vertical bool + // MaxItems folds the rest behind a "+N more" button; 0 shows all. + MaxItems int +} + +// ChartLegendResult is a built legend and the series switched this frame. +type ChartLegendResult struct { + Element *ui.Element + toggled string +} + +// Toggled returns the series switched in this frame. +func (r ChartLegendResult) Toggled() (string, bool) { return r.toggled, r.toggled != "" } + +// ChartLegend lists series keys; with hidden set, each is a check box hiding its series. +func ChartLegend(c *ui.Context, hidden *map[string]bool, items []ChartLegendItem, opts ChartLegendOptions) ChartLegendResult { + if opts.MaxItems < 0 { + panic("mujica: ChartLegend MaxItems must be ≥ 0") + } + seen := map[string]bool{} + for _, it := range items { + if it.Name == "" || seen[it.Name] { + panic("mujica: ChartLegend items need unique names") + } + seen[it.Name] = true + } + k := Tokens(c) + u := Density(c).Unit() + var res ChartLegendResult + res.Element = ui.Row(c).Gap(u * 3).Wrap() + orient := ui.Horizontal + if opts.Vertical { + res.Element.Column().Gap(u) + orient = ui.Vertical + } + open := ui.Local(res.Element, "mujica.legend.open", func() bool { return false }) + res.Element.FocusGroup(orient).Children(func() { + shown := items + if opts.MaxItems > 0 && len(items) > opts.MaxItems && !*open { + shown = items[:opts.MaxItems] + } + for _, it := range shown { + ui.Row(c).Key(it.Name).Children(func() { + if name, ok := chartLegendEntry(c, hidden, it, res.Element.IsDisabled()); ok { + res.toggled = name + } + }) + } + if opts.MaxItems > 0 && len(items) > opts.MaxItems { + label := fmt.Sprintf(msg(c, "chart_legend.more"), len(items)-opts.MaxItems) + if *open { + label = msg(c, "chart_legend.fewer") + } + b := ui.ButtonBase(c).MinHeight(theme.MinHitSize).Padding(0, u*2).Radius(theme.ControlRadius).Disabled(res.Element.IsDisabled()).TextColor(k.AccentText) + internal.Ring(b, k.Focus, theme.ControlRadius) + if b.Hovered() { + b.Background(k.SurfaceHover) + } + b.Children(func() { ui.Text(c, label).FontSize(FontSize(c, theme.CaptionSize)).SingleLine() }) + if b.Clicked() && !b.IsDisabled() { + *open = !*open + slog.Debug("mujica: chart_legend fold", "open", *open) + } + } + }) + return res +} + +// chartLegendEntry builds one key; a check box when hidden is set. It reports a switch. +func chartLegendEntry(c *ui.Context, hidden *map[string]bool, it ChartLegendItem, disabled bool) (string, bool) { + k := Tokens(c) + u := Density(c).Unit() + on := hidden == nil || !(*hidden)[it.Name] + var e *ui.Element + switched := false + if hidden != nil { + e = ui.CheckboxBase(c, &on).Disabled(disabled).Label(it.Name) + internal.Ring(e, k.Focus, theme.ControlRadius) + if e.Hovered() && !disabled { + e.Background(k.SurfaceHover) + } + if e.Changed() && !e.IsDisabled() { + m := maps.Clone(*hidden) + if m == nil { + m = map[string]bool{} + } + m[it.Name] = !on + *hidden, switched = m, true + slog.Debug("mujica: chart_legend toggle", "series", it.Name, "visible", on) + } + } else { + e = ui.Row(c) + } + e.MinHeight(theme.MinHitSize).Gap(u*2).AlignItems(ui.Center).Padding(0, u).Radius(theme.ControlRadius) + col := it.Color + if !on { + col = k.TextMuted + } + e.Children(func() { + ui.Box(c).Size(12, 12).Shrink(0).Draw(func(p *ui.Painter, r ui.Rect) { + if on { + internal.Marker(p, it.Shape, r.X+6, r.Y+6, 10, col) + } else { + p.Stroke(r, col, 2, 1) + } + }) + t := ui.Text(c, it.Name).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.Text) + if !on { + t.Strikethrough().TextColor(k.TextMuted) + } + }) + return it.Name, switched +} diff --git a/chart_tooltip.go b/chart_tooltip.go new file mode 100644 index 0000000..166b3dc --- /dev/null +++ b/chart_tooltip.go @@ -0,0 +1,83 @@ +package mujica + +import ( + "strings" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChartTooltipLine is one row of a tooltip; a zero Color shows no marker. +type ChartTooltipLine struct { + Text string + Color ui.Color + Shape int +} + +// ChartTooltip floats painted lines beside window point (x, y), avoiding edges. +func ChartTooltip(c *ui.Context, x, y float32, lines []ChartTooltipLine) *ui.Element { + if len(lines) == 0 { + panic("mujica: ChartTooltip needs a line") + } + k := Tokens(c) + u := Density(c).Unit() + size := FontSize(c, theme.CaptionSize) + pad, gap := u*2, float32(12) + w, h := float32(0), pad*2 + lh := make([]float32, len(lines)) + for i, l := range lines { + tw, th := c.MeasureText(0, ui.Span{Text: l.Text, Size: size, Weight: chartTipWeight(i)}) + if l.Color.A > 0 { + tw += 14 + } + w, lh[i] = max(w, tw), th + h += th + } + w += pad * 2 + ww, wh := c.Size() + left, top := x+gap, y+gap + if left+w > ww-4 { + left = x - gap - w + } + if top+h > wh-4 { + top = y - gap - h + } + left, top = max(4, left), max(4, top) + var tip *ui.Element + ui.Overlay(c, func() { + tip = ui.Box(c).Absolute().Left(left).Top(top).Size(w, h).PassThrough().Role(ui.RoleNone) + overlayStyle(c, tip, 1) + tip.Draw(func(p *ui.Painter, r ui.Rect) { + at := r.Y + pad + for i, l := range lines { + tx := r.X + pad + if l.Color.A > 0 { + internal.Marker(p, l.Shape, tx+5, at+lh[i]/2, 9, l.Color) + tx += 14 + } + p.RichText(tx, at, 0, ui.Span{Text: l.Text, Size: size, Weight: chartTipWeight(i), Color: k.Text}) + at += lh[i] + } + }) + }) + return tip +} + +// chartTipWeight sets the first line, the heading, in semibold. +func chartTipWeight(i int) int { + if i == 0 { + return 600 + } + return 400 +} + +// chartTipLines splits a readout at " · " into a heading and rows. +func chartTipLines(readout string) []ChartTooltipLine { + var out []ChartTooltipLine + for _, s := range strings.Split(readout, " · ") { + out = append(out, ChartTooltipLine{Text: s}) + } + return out +} diff --git a/line_chart.go b/line_chart.go index 44a09c2..71f56d9 100644 --- a/line_chart.go +++ b/line_chart.go @@ -71,9 +71,9 @@ func chartLines(ch *chart, d chartLineData) ChartResult { c, k := ch.c, Tokens(ch.c) pal := internal.Palette(k) size := FontSize(c, theme.CaptionSize) - keys := make([]chartKey, len(d.series)) + keys := make([]ChartLegendItem, len(d.series)) for i, s := range d.series { - keys[i] = chartKey{Name: s.Name, Color: pal[i%len(pal)], Shape: i} + keys[i] = ChartLegendItem{Name: s.Name, Color: pal[i%len(pal)], Shape: i} } var ticks []float64 var step float64 @@ -103,6 +103,19 @@ func chartLines(ch *chart, d chartLineData) ChartResult { } return strings.Join(parts, " · ") } + spec.tip = func(i int) []ChartTooltipLine { + lines := []ChartTooltipLine{{Text: d.ax.label(i)}} + for si, s := range d.series { + if !ch.hidden(s.Name) { + lines = append(lines, ChartTooltipLine{Text: s.Name + " " + chartValue(c, s.Values[i], d.format), Color: keys[si].Color, Shape: si}) + } + } + return lines + } + spec.anchor = func(r ui.Rect, i int) (float32, float32) { + plot, xs, _ := geom(r) + return xs.Map(d.ax.vals[i]), plot.Y + } spec.draw = func(p *ui.Painter, r ui.Rect, active int) { plot, xs, ys := geom(r) internal.AxisY(p, plot, ys, ticks, func(v float64) string { return internal.FormatTick(v, step) }, size, k) diff --git a/messages_charts2.go b/messages_charts2.go new file mode 100644 index 0000000..a8193bf --- /dev/null +++ b/messages_charts2.go @@ -0,0 +1,8 @@ +package mujica + +func init() { + addMessages(map[string][2]string{ + "chart_legend.more": {"+%d more", "另有 %d 项"}, + "chart_legend.fewer": {"Show fewer", "收起"}, + }) +} diff --git a/pie_chart.go b/pie_chart.go index 7024b6b..b4ce86e 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -46,9 +46,9 @@ func PieChart(c *ui.Context, slices []ChartSlice, opts PieChartOptions) ChartRes if total == 0 { n = 0 } - keys := make([]chartKey, len(parts)) + keys := make([]ChartLegendItem, len(parts)) for i, s := range parts { - keys[i] = chartKey{Name: s.Label, Color: pal[i%len(pal)], Shape: i} + keys[i] = ChartLegendItem{Name: s.Label, Color: pal[i%len(pal)], Shape: i} } // angle returns slice i's start and end, clockwise. angle := func(i int) (float64, float64) { diff --git a/radar_chart.go b/radar_chart.go index d78b869..14f6b0a 100644 --- a/radar_chart.go +++ b/radar_chart.go @@ -27,10 +27,10 @@ func RadarChart(c *ui.Context, axes []string, series []ChartSeries, opts RadarCh k := Tokens(c) pal := internal.Palette(k) size := FontSize(c, theme.CaptionSize) - keys := make([]chartKey, len(series)) + keys := make([]ChartLegendItem, len(series)) top := opts.Max for i, s := range series { - keys[i] = chartKey{Name: s.Name, Color: pal[i%len(pal)], Shape: i} + keys[i] = ChartLegendItem{Name: s.Name, Color: pal[i%len(pal)], Shape: i} for _, v := range s.Values { if v < 0 { panic("mujica: RadarChart values must be ≥ 0") diff --git a/scatter_chart.go b/scatter_chart.go index 1703011..bbf31b6 100644 --- a/scatter_chart.go +++ b/scatter_chart.go @@ -43,11 +43,11 @@ func ScatterChart(c *ui.Context, selected *[]ScatterKey, groups []ScatterGroup, k := Tokens(c) pal := internal.Palette(k) size := FontSize(c, theme.CaptionSize) - keys := make([]chartKey, len(groups)) + keys := make([]ChartLegendItem, len(groups)) var marks []ScatterKey b := [6]float64{math.Inf(1), math.Inf(-1), math.Inf(1), math.Inf(-1), math.Inf(1), math.Inf(-1)} for gi, g := range groups { - keys[gi] = chartKey{Name: g.Name, Color: pal[gi%len(pal)], Shape: gi} + keys[gi] = ChartLegendItem{Name: g.Name, Color: pal[gi%len(pal)], Shape: gi} if g.Name == "" || ch.hidden(g.Name) { continue } From e90a1528db83b2283e27f774405af11e17055e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 14:54:57 -0400 Subject: [PATCH 2/6] WIP charts2 parts --- bar_chart.go | 8 +- box_plot.go | 8 +- bullet_chart.go | 8 +- calendar_heatmap.go | 10 +- chart_annotation.go | 176 ++++++++++++++ chart_annotation_test.go | 80 ++++++ chart_axis.go | 229 ++++++++++++++++++ chart_axis_test.go | 129 ++++++++++ chart_brush.go | 207 ++++++++++++++++ chart_crosshair.go | 81 +++++++ chart_crosshair_test.go | 69 ++++++ chart_export.go | 49 ++++ chart_frame.go | 114 +++++---- chart_grid.go | 68 ++++++ chart_grid_test.go | 66 +++++ chart_legend.go | 2 +- chart_legend_test.go | 95 ++++++++ chart_tooltip_test.go | 86 +++++++ funnel_chart.go | 8 +- gauge.go | 8 +- heatmap_chart.go | 10 +- histogram.go | 8 +- internal/chart.go | 46 +++- line_chart.go | 12 +- messages_charts2.go | 3 + network_graph.go | 10 +- pie_chart.go | 8 +- radar_chart.go | 8 +- sankey_chart.go | 8 +- scatter_chart.go | 10 +- sunburst.go | 10 +- .../darwin/chart_annotation-dark.png | Bin 0 -> 17174 bytes .../darwin/chart_annotation-light.png | Bin 0 -> 16523 bytes testdata/snapshots/darwin/chart_axis-dark.png | Bin 0 -> 10536 bytes .../snapshots/darwin/chart_axis-light.png | Bin 0 -> 10076 bytes .../snapshots/darwin/chart_crosshair-dark.png | Bin 0 -> 6783 bytes .../darwin/chart_crosshair-light.png | Bin 0 -> 6688 bytes testdata/snapshots/darwin/chart_grid-dark.png | Bin 0 -> 5619 bytes .../snapshots/darwin/chart_grid-light.png | Bin 0 -> 5354 bytes .../snapshots/darwin/chart_legend-dark.png | Bin 0 -> 7727 bytes .../snapshots/darwin/chart_legend-light.png | Bin 0 -> 7271 bytes .../snapshots/darwin/chart_tooltip-dark.png | Bin 0 -> 5005 bytes .../snapshots/darwin/chart_tooltip-light.png | Bin 0 -> 6785 bytes treemap.go | 10 +- waterfall_chart.go | 8 +- 45 files changed, 1519 insertions(+), 133 deletions(-) create mode 100644 chart_annotation.go create mode 100644 chart_annotation_test.go create mode 100644 chart_axis.go create mode 100644 chart_axis_test.go create mode 100644 chart_brush.go create mode 100644 chart_crosshair.go create mode 100644 chart_crosshair_test.go create mode 100644 chart_export.go create mode 100644 chart_grid.go create mode 100644 chart_grid_test.go create mode 100644 chart_legend_test.go create mode 100644 chart_tooltip_test.go create mode 100644 testdata/snapshots/darwin/chart_annotation-dark.png create mode 100644 testdata/snapshots/darwin/chart_annotation-light.png create mode 100644 testdata/snapshots/darwin/chart_axis-dark.png create mode 100644 testdata/snapshots/darwin/chart_axis-light.png create mode 100644 testdata/snapshots/darwin/chart_crosshair-dark.png create mode 100644 testdata/snapshots/darwin/chart_crosshair-light.png create mode 100644 testdata/snapshots/darwin/chart_grid-dark.png create mode 100644 testdata/snapshots/darwin/chart_grid-light.png create mode 100644 testdata/snapshots/darwin/chart_legend-dark.png create mode 100644 testdata/snapshots/darwin/chart_legend-light.png create mode 100644 testdata/snapshots/darwin/chart_tooltip-dark.png create mode 100644 testdata/snapshots/darwin/chart_tooltip-light.png diff --git a/bar_chart.go b/bar_chart.go index be5f1de..e8aaabd 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -111,12 +111,12 @@ func BarChart(c *ui.Context, categories []string, series []ChartSeries, opts Bar return ui.Rect{X: at, Y: a, W: w, H: max(b-a, 1)} } value := func(i int) float64 { m := lay.marks[i]; return series[m.series].Values[m.cat] } - spec := chartSpec{n: len(lay.marks), keys: keys, toggle: len(series) > 1} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(lay.marks), Legend: keys, Hidden: ch.toggles(len(series) > 1)} + spec.Readout = func(i int) string { m := lay.marks[i] return categories[m.cat] + " · " + series[m.series].Name + " " + chartValue(c, value(i), opts.Format) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { _, band, vs := geom(r) for i := range lay.marks { b := rect(band, vs, i) @@ -127,7 +127,7 @@ func BarChart(c *ui.Context, categories []string, series []ChartSeries, opts Bar } return -1 } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, band, vs := geom(r) label := func(v float64) string { return internal.FormatTick(v, step) } var pos []float32 diff --git a/box_plot.go b/box_plot.go index 518ad02..931bc50 100644 --- a/box_plot.go +++ b/box_plot.go @@ -102,22 +102,22 @@ func BoxPlot(c *ui.Context, groups []BoxGroup, opts BoxPlotOptions) ChartResult return plot, internal.Band{N: len(groups), R0: plot.X, R1: plot.X + plot.W, Pad: 0.45}, internal.Linear{D0: lo, D1: hi, R0: float64(plot.Y + plot.H), R1: float64(plot.Y)} } - spec := chartSpec{n: len(groups)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(groups)} + spec.Readout = func(i int) string { s := stats[i] if s.n == 0 { return groups[i].Name + " · " + msg(c, "chart.missing") } return fmt.Sprintf(msg(c, "box_plot.readout"), groups[i].Name, val(s.median), val(s.q1), val(s.q3), val(s.lo), val(s.hi), len(s.outliers)) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { plot, band, _ := geom(r) if !plot.Contains(x, y) { return -1 } return min(len(groups)-1, int((x-plot.X)/band.Step())) } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, band, ys := geom(r) internal.AxisY(p, plot, ys, internal.Ticks(lo, hi, step), func(v float64) string { return internal.FormatTick(v, step) }, size, k) var xs []float32 diff --git a/bullet_chart.go b/bullet_chart.go index 7dbd32e..be84ad5 100644 --- a/bullet_chart.go +++ b/bullet_chart.go @@ -74,9 +74,9 @@ func BulletChart(c *ui.Context, value float64, opts BulletChartOptions) ChartRes } return ui.Rect{X: s.Map(float64(a)), Y: plot.Y + inset, W: s.Map(float64(b)) - s.Map(float64(a)), H: plot.H - 2*inset} } - spec := chartSpec{n: len(marks)} - spec.readout = func(i int) string { return marks[i] } - spec.pick = func(r ui.Rect, x, y float32) int { + spec := ChartSpec{Marks: len(marks)} + spec.Readout = func(i int) string { return marks[i] } + spec.Pick = func(r ui.Rect, x, y float32) int { plot, s := geom(r) if !plot.Contains(x, y) { return -1 @@ -99,7 +99,7 @@ func BulletChart(c *ui.Context, value float64, opts BulletChartOptions) ChartRes } return -1 } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, s := geom(r) inset := bulletInset(plot, opts.Vertical) prev := 0.0 diff --git a/calendar_heatmap.go b/calendar_heatmap.go index 1b3e542..6415748 100644 --- a/calendar_heatmap.go +++ b/calendar_heatmap.go @@ -73,8 +73,8 @@ func CalendarHeatmap(c *ui.Context, year *int, values map[Date]float64, opts Cal at := lead + i return ui.Rect{X: x + float32(at/7)*step, Y: y + float32(at%7)*step, W: step - 2, H: step - 2} } - spec := chartSpec{n: n} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: n} + spec.Readout = func(i int) string { d := first.AddDays(i) v, ok := values[d] s := d.String() + " · " @@ -83,11 +83,11 @@ func CalendarHeatmap(c *ui.Context, year *int, values map[Date]float64, opts Cal } return s + chartValue(c, v, opts.Format) } - spec.move = func(i int, key ui.Key) int { + spec.Move = func(i int, key ui.Key) int { step := map[ui.Key]int{ui.KeyLeft: -7, ui.KeyRight: 7, ui.KeyUp: -1, ui.KeyDown: 1}[key] return max(0, min(n-1, i+step)) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { x0, y0, step := geom(r) col, row := int((x-x0)/step), int((y-y0)/step) i := col*7 + row - lead @@ -96,7 +96,7 @@ func CalendarHeatmap(c *ui.Context, year *int, values map[Date]float64, opts Cal } return i } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { x0, y0, step := geom(r) for i := range n { b := cell(r, i) diff --git a/chart_annotation.go b/chart_annotation.go new file mode 100644 index 0000000..75145d3 --- /dev/null +++ b/chart_annotation.go @@ -0,0 +1,176 @@ +package mujica + +import ( + "log/slog" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChartNoteKind is what a ChartNote draws. +type ChartNoteKind int + +const ( + // NoteHLine is a horizontal line at Y value Value. + NoteHLine ChartNoteKind = iota + // NoteVLine is a vertical line at X value Value. + NoteVLine + // NoteBand shades X values Value to End. + NoteBand + // NoteText writes Text at X Value, Y End. + NoteText +) + +// ChartNote is one annotation; Draggable lets the pointer move it. +type ChartNote struct { + Kind ChartNoteKind + Value, End float64 + Text string + Draggable bool +} + +// ChartAnnotationOptions configure a ChartAnnotation; both axes are required. +type ChartAnnotationOptions struct { + X, Y *ChartAxisPart +} + +// ChartAnnotationPart is notes ready to draw, and to drag. +type ChartAnnotationPart struct { + notes []ChartNote + opts ChartAnnotationOptions + k theme.Tokens + size float32 +} + +// ChartAnnotation marks lines, bands and text on a plot; dragging writes into notes. +func ChartAnnotation(c *ui.Context, notes []ChartNote, opts ChartAnnotationOptions) ChartAnnotationPart { + if opts.X == nil || opts.Y == nil { + panic("mujica: ChartAnnotation needs X and Y axes") + } + for _, n := range notes { + if n.Kind > NoteText || n.Kind == NoteBand && n.End <= n.Value || n.Kind == NoteText && n.Text == "" { + panic("mujica: ChartAnnotation note needs a known kind, a band End above Value, and text") + } + } + return ChartAnnotationPart{notes: notes, opts: opts, k: Tokens(c), size: FontSize(c, theme.CaptionSize)} +} + +// Draw paints bands first, then lines and text, inside plot. +func (a ChartAnnotationPart) Draw(p *ui.Painter, plot ui.Rect) { + k, x, y := a.k, a.opts.X, a.opts.Y + for _, n := range a.notes { + if n.Kind == NoteBand { + x0, x1 := x.Map(plot, n.Value), x.Map(plot, n.End) + p.Fill(ui.Rect{X: x0, Y: plot.Y, W: x1 - x0, H: plot.H}, k.Info.Alpha(0.12), 0) + chartText(p, n.Text, x0+4, plot.Y+4, a.size, k.Text, 0, 0) + } + } + for _, n := range a.notes { + switch n.Kind { + case NoteHLine: + at := internal.Snap(p, y.Map(plot, n.Value)) + chartDash(p, plot.X, at, plot.X+plot.W, at, k.Text) + chartText(p, chartNoteLabel(n, y), plot.X+plot.W-4, at-3, a.size, k.Text, 1, 1) + if n.Draggable { + p.FillPath(internal.Diamond(internal.Snap(p, plot.X+8), at, 11), k.AccentText) + } + case NoteVLine: + at := internal.Snap(p, x.Map(plot, n.Value)) + chartDash(p, at, plot.Y, at, plot.Y+plot.H, k.Text) + chartText(p, chartNoteLabel(n, x), at+4, plot.Y+4, a.size, k.Text, 0, 0) + if n.Draggable { + p.FillPath(internal.Diamond(at, internal.Snap(p, plot.Y+plot.H-8), 11), k.AccentText) + } + case NoteText: + px, py := x.Map(plot, n.Value), y.Map(plot, n.End) + p.FillPath(internal.Diamond(internal.Snap(p, px), internal.Snap(p, py), 8), k.Text) + chartText(p, n.Text, px+8, py, a.size, k.Text, 0, 0.5) + } + } +} + +// chartDash draws a dashed horizontal or vertical line. +func chartDash(p *ui.Painter, x0, y0, x1, y1 float32, col ui.Color) { + const on, off = 6, 4 + if y0 == y1 { + for x := x0; x < x1; x += on + off { + p.Line(x, y0, min(x+on, x1), y0, 1.5, col) + } + return + } + for y := y0; y < y1; y += on + off { + p.Line(x0, y, x0, min(y+on, y1), 1.5, col) + } +} + +// chartNoteLabel is a line's text, or its value when it has none. +func chartNoteLabel(n ChartNote, a *ChartAxisPart) string { + if n.Text != "" { + return n.Text + " " + a.Label(n.Value) + } + return a.Label(n.Value) +} + +type noteDrag struct { + on bool + note int +} + +// Drag moves the draggable note under the pointer while plot is dragged; r is plot's box. +func (a ChartAnnotationPart) Drag(plotElement *ui.Element, plot ui.Rect) bool { + st := ui.Local(plotElement, "mujica.notes.drag", func() noteDrag { return noteDrag{} }) + dx, dy, held := plotElement.Dragged() + if !held || plotElement.IsDisabled() { + *st = noteDrag{} + return false + } + px, py, _ := plotElement.PointerPosition() + x, y := a.opts.X, a.opts.Y + if !st.on { + *st = noteDrag{on: true, note: -1} + for i, n := range a.notes { + if !n.Draggable { + continue + } + var d float32 = 1e9 + switch n.Kind { + case NoteHLine: + d = abs32(y.Map(plot, n.Value) - (py - dy)) + case NoteVLine: + d = abs32(x.Map(plot, n.Value) - (px - dx)) + case NoteBand: + if x0, x1 := x.Map(plot, n.Value), x.Map(plot, n.End); px-dx >= x0 && px-dx <= x1 { + d = 0 + } + case NoteText: + d = max(abs32(x.Map(plot, n.Value)-(px-dx)), abs32(y.Map(plot, n.End)-(py-dy))) + } + if d <= 6 { + st.note = i + } + } + } + if st.note < 0 || dx == 0 && dy == 0 { + return false + } + n := &a.notes[st.note] + shift := func(ax *ChartAxisPart, v float64, at, d float32) float64 { + return v + ax.Invert(plot, at) - ax.Invert(plot, at-d) + } + switch n.Kind { + case NoteHLine: + n.Value = shift(y, n.Value, py, dy) + case NoteVLine: + n.Value = shift(x, n.Value, px, dx) + case NoteBand: + w := n.End - n.Value + n.Value = shift(x, n.Value, px, dx) + n.End = n.Value + w + case NoteText: + n.Value, n.End = shift(x, n.Value, px, dx), shift(y, n.End, py, dy) + } + slog.Debug("mujica: chart_annotation drag", "note", st.note, "value", n.Value) + return true +} diff --git a/chart_annotation_test.go b/chart_annotation_test.go new file mode 100644 index 0000000..8558c69 --- /dev/null +++ b/chart_annotation_test.go @@ -0,0 +1,80 @@ +package mujica + +import ( + "math" + "testing" + + "github.com/egoist/mygo/ui" +) + +func TestChartAnnotationDrag(t *testing.T) { + notes := []ChartNote{ + {Kind: NoteHLine, Value: 50, Text: "Goal", Draggable: true}, + {Kind: NoteVLine, Value: 3}, + {Kind: NoteBand, Value: 6, End: 8, Text: "Lent", Draggable: true}, + {Kind: NoteText, Value: 1, End: 90, Text: "Feast"}, + } + h := &chartHarness{build: func(c *ui.Context) ChartResult { return partsChart(c, notes, false) }} + tt := ui.NewTester(h.view, 520, 420) + b := h.res.Element.Bounds() + plot := chartInset(ui.Rect{X: b.X, Y: b.Y, W: b.W, H: 240}, 52, 26) + yAt := func(v float32) float32 { return plot.Y + plot.H*(1-v/100) } + xAt := func(v float32) float32 { return plot.X + plot.W*v/10 } + // Drag the Goal line up by a fifth of the plot: 50 becomes 70. + tt.Press(xAt(4), yAt(50)) + tt.Move(xAt(4), yAt(60)) + tt.Move(xAt(4), yAt(70)) + tt.Release(xAt(4), yAt(70)) + if math.Abs(notes[0].Value-70) > 0.5 { + t.Fatalf("Goal at %v", notes[0].Value) + } + // The band moves as a whole and keeps its width. + tt.Press(xAt(7), yAt(20)) + tt.Move(xAt(8), yAt(20)) + tt.Release(xAt(8), yAt(20)) + if math.Abs(notes[2].Value-7) > 0.1 || math.Abs(notes[2].End-notes[2].Value-2) > 1e-9 { + t.Fatalf("band %v..%v", notes[2].Value, notes[2].End) + } + // The fixed line stays. + tt.Press(xAt(3), yAt(20)) + tt.Move(xAt(5), yAt(20)) + tt.Release(xAt(5), yAt(20)) + if notes[1].Value != 3 { + t.Fatalf("fixed line moved to %v", notes[1].Value) + } +} + +func TestChartAnnotationDisabledAndBad(t *testing.T) { + notes := []ChartNote{{Kind: NoteHLine, Value: 50, Draggable: true}} + h := &chartHarness{disabled: true, build: func(c *ui.Context) ChartResult { return partsChart(c, notes, false) }} + tt := ui.NewTester(h.view, 520, 420) + b := h.res.Element.Bounds() + plot := chartInset(ui.Rect{X: b.X, Y: b.Y, W: b.W, H: 240}, 52, 26) + tt.Press(plot.X+100, plot.Y+plot.H/2) + tt.Move(plot.X+100, plot.Y+20) + tt.Release(plot.X+100, plot.Y+20) + if notes[0].Value != 50 { + t.Fatalf("disabled chart dragged a note to %v", notes[0].Value) + } + defer func() { + if recover() == nil { + t.Fatal("no panic for an empty band") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + partsChart(c, []ChartNote{{Kind: NoteBand, Value: 2, End: 2}}, false) + }, 300, 300) +} + +func TestChartAnnotationSnapshot(t *testing.T) { + snapshot(t, "chart_annotation", 520, 340, func(c *ui.Context) { + notes := []ChartNote{ + {Kind: NoteHLine, Value: 65, Text: "Goal", Draggable: true}, + {Kind: NoteVLine, Value: 3, Text: "Advent"}, + {Kind: NoteBand, Value: 6, End: 8, Text: "Lent"}, + {Kind: NoteText, Value: 1, End: 90, Text: "Feast"}, + } + ui.Column(c).Padding(16).Children(func() { partsChart(c, notes, false) }) + }) +} diff --git a/chart_axis.go b/chart_axis.go new file mode 100644 index 0000000..7c2c613 --- /dev/null +++ b/chart_axis.go @@ -0,0 +1,229 @@ +package mujica + +import ( + "math" + "strconv" + "time" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChartAxisKind is how an axis maps values. +type ChartAxisKind int + +const ( + AxisLinear ChartAxisKind = iota + // AxisLog maps powers of ten evenly; Min must be above zero. + AxisLog + // AxisTime maps From..To; values are Unix seconds. + AxisTime + // AxisCategory gives each category a band; values are indices. + AxisCategory +) + +// ChartSide is where an axis runs along the plot. +type ChartSide int + +const ( + SideBottom ChartSide = iota + SideLeft + SideRight + SideTop +) + +// ChartAxisOptions configure a ChartAxis. +type ChartAxisOptions struct { + Kind ChartAxisKind + Side ChartSide + // Min and Max span a linear or log axis. + Min, Max float64 + // From and To span a time axis. + From, To time.Time + Categories []string + // Ticks fixes the tick values; nil picks them. + Ticks []float64 + // Format writes tick and readout labels; nil picks one per kind. + Format func(v float64) string +} + +// ChartAxisPart is an axis ready to map values and draw itself in a plot. +type ChartAxisPart struct { + opts ChartAxisOptions + lo, hi float64 + ticks []float64 + step float64 + layout string + k theme.Tokens + size float32 +} + +// ChartAxis resolves an axis: its domain, ticks and labels. +func ChartAxis(c *ui.Context, opts ChartAxisOptions) ChartAxisPart { + a := ChartAxisPart{opts: opts, k: Tokens(c), size: FontSize(c, theme.CaptionSize)} + switch opts.Kind { + case AxisLinear, AxisLog: + a.lo, a.hi = opts.Min, opts.Max + if !(a.hi > a.lo) || opts.Kind == AxisLog && a.lo <= 0 { + panic("mujica: ChartAxis needs Min < Max, and Min > 0 for a log axis") + } + case AxisTime: + if !opts.To.After(opts.From) { + panic("mujica: ChartAxis time axis needs From before To") + } + a.lo, a.hi = chartSeconds(opts.From), chartSeconds(opts.To) + case AxisCategory: + if len(opts.Categories) == 0 { + panic("mujica: ChartAxis category axis needs Categories") + } + a.lo, a.hi = -0.5, float64(len(opts.Categories))-0.5 + default: + panic("mujica: unknown ChartAxisKind") + } + if opts.Side > SideTop { + panic("mujica: unknown ChartSide") + } + a.ticks = opts.Ticks + if a.ticks == nil { + a.ticks = a.autoTicks() + } + return a +} + +func chartSeconds(t time.Time) float64 { return float64(t.UnixNano()) / 1e9 } + +// autoTicks picks round ticks inside the domain. +func (a *ChartAxisPart) autoTicks() []float64 { + var out []float64 + switch a.opts.Kind { + case AxisLog: + // Powers of ten, with 2 and 5 between them on short spans. + mants := []float64{1} + if a.hi/a.lo < 1000 { + mants = []float64{1, 2, 5} + } + for e := math.Floor(math.Log10(a.lo)); math.Pow(10, e) <= a.hi*(1+1e-9); e++ { + for _, m := range mants { + if v := m * math.Pow(10, e); v >= a.lo*(1-1e-9) && v <= a.hi*(1+1e-9) { + out = append(out, v) + } + } + } + case AxisTime: + ts, layout := internal.TimeTicks(a.opts.From, a.opts.To, 5) + a.layout = layout + for _, t := range ts { + out = append(out, chartSeconds(t)) + } + case AxisCategory: + for i := range a.opts.Categories { + out = append(out, float64(i)) + } + default: + lo, hi, step := internal.Nice(a.lo, a.hi, 5) + a.step = step + for _, t := range internal.Ticks(lo, hi, step) { + if t >= a.lo-step*1e-9 && t <= a.hi+step*1e-9 { + out = append(out, t) + } + } + } + return out +} + +// horizontal reports whether the axis runs across the plot. +func (a ChartAxisPart) horizontal() bool { + return a.opts.Side == SideBottom || a.opts.Side == SideTop +} + +// fraction is how far along the axis v lies, 0 to 1. +func (a ChartAxisPart) fraction(v float64) float64 { + if a.opts.Kind == AxisLog { + return (math.Log10(v) - math.Log10(a.lo)) / (math.Log10(a.hi) - math.Log10(a.lo)) + } + return (v - a.lo) / (a.hi - a.lo) +} + +// Map returns the pixel of v along the axis inside plot. +func (a ChartAxisPart) Map(plot ui.Rect, v float64) float32 { + f := float32(a.fraction(v)) + if a.horizontal() { + return plot.X + f*plot.W + } + return plot.Y + plot.H - f*plot.H +} + +// Invert returns the value at pixel px along the axis inside plot. +func (a ChartAxisPart) Invert(plot ui.Rect, px float32) float64 { + f := float64((px - plot.X) / plot.W) + if !a.horizontal() { + f = float64((plot.Y + plot.H - px) / plot.H) + } + if a.opts.Kind == AxisLog { + return math.Pow(10, math.Log10(a.lo)+f*(math.Log10(a.hi)-math.Log10(a.lo))) + } + return a.lo + f*(a.hi-a.lo) +} + +// Ticks returns the tick values. +func (a ChartAxisPart) Ticks() []float64 { return a.ticks } + +// Label writes v as the axis does. +func (a ChartAxisPart) Label(v float64) string { + switch { + case a.opts.Format != nil: + return a.opts.Format(v) + case a.opts.Kind == AxisCategory: + return a.opts.Categories[max(0, min(len(a.opts.Categories)-1, int(math.Round(v))))] + case a.opts.Kind == AxisTime: + layout := a.layout + if layout == "" { + layout = "2006-01-02 15:04" + } + return chartTime(v).Format(layout) + case a.opts.Kind == AxisLog: + return strconv.FormatFloat(v, 'f', -1, 64) + case a.step > 0: + return internal.FormatTick(v, a.step) + } + return strconv.FormatFloat(v, 'g', 6, 64) +} + +// readout writes v one decimal finer than ticks, for crosshair labels. +func (a ChartAxisPart) readout(v float64) string { + switch { + case a.opts.Format != nil, a.opts.Kind == AxisCategory, a.opts.Kind == AxisTime: + return a.Label(v) + case a.opts.Kind == AxisLog: + return strconv.FormatFloat(v, 'g', 3, 64) + case a.step > 0: + return internal.FormatTick(v, a.step/10) + } + return strconv.FormatFloat(v, 'g', 6, 64) +} + +// Draw paints the axis line and tick labels on its side of plot. +func (a ChartAxisPart) Draw(p *ui.Painter, plot ui.Rect) { + pos := make([]float32, len(a.ticks)) + labels := make([]string, len(a.ticks)) + for i, t := range a.ticks { + pos[i], labels[i] = a.Map(plot, t), a.Label(t) + } + k := a.k + switch a.opts.Side { + case SideBottom: + internal.Rule(p, plot.X, plot.X+plot.W, plot.Y+plot.H, k.ControlBorder) + internal.LabelsX(p, plot, plot.Y+plot.H+6, pos, labels, false, a.size, k) + case SideTop: + internal.Rule(p, plot.X, plot.X+plot.W, plot.Y, k.ControlBorder) + internal.LabelsX(p, plot, plot.Y-6, pos, labels, true, a.size, k) + case SideLeft: + internal.RuleV(p, plot.X, plot.Y, plot.Y+plot.H, k.ControlBorder) + internal.LabelsY(p, plot.X-6, pos, labels, false, a.size, k) + case SideRight: + internal.RuleV(p, plot.X+plot.W, plot.Y, plot.Y+plot.H, k.ControlBorder) + internal.LabelsY(p, plot.X+plot.W+6, pos, labels, true, a.size, k) + } +} diff --git a/chart_axis_test.go b/chart_axis_test.go new file mode 100644 index 0000000..595df10 --- /dev/null +++ b/chart_axis_test.go @@ -0,0 +1,129 @@ +package mujica + +import ( + "fmt" + "math" + "testing" + "time" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" +) + +func axisIn(opts ChartAxisOptions) (a ChartAxisPart) { + ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); a = ChartAxis(c, opts) }, 100, 100) + return a +} + +func TestChartAxisLinearAndLog(t *testing.T) { + plot := ui.Rect{X: 10, Y: 0, W: 100, H: 50} + lin := axisIn(ChartAxisOptions{Min: 0, Max: 97}) + if fmt.Sprint(lin.Ticks()) != "[0 20 40 60 80]" || lin.Map(plot, 48.5) != 60 || lin.Label(40) != "40" { + t.Fatalf("linear %v %v", lin.Ticks(), lin.Map(plot, 48.5)) + } + if v := lin.Invert(plot, 60); math.Abs(v-48.5) > 1e-9 { + t.Fatalf("invert %v", v) + } + log := axisIn(ChartAxisOptions{Kind: AxisLog, Side: SideLeft, Min: 1, Max: 10000}) + if fmt.Sprint(log.Ticks()) != "[1 10 100 1000 10000]" || log.Map(plot, 100) != 25 || log.Label(1000) != "1000" { + t.Fatalf("log %v %v", log.Ticks(), log.Map(plot, 100)) + } + if short := axisIn(ChartAxisOptions{Kind: AxisLog, Min: 1, Max: 50}); fmt.Sprint(short.Ticks()) != "[1 2 5 10 20 50]" { + t.Fatalf("short log %v", short.Ticks()) + } + fixed := axisIn(ChartAxisOptions{Min: 0, Max: 1, Ticks: []float64{0, 0.25, 1}, Format: func(v float64) string { return fmt.Sprintf("%.0f%%", v*100) }}) + if fmt.Sprint(fixed.Ticks()) != "[0 0.25 1]" || fixed.Label(0.25) != "25%" { + t.Fatalf("fixed %v", fixed.Ticks()) + } +} + +func TestChartAxisTimeAndCategory(t *testing.T) { + t0 := time.Date(2026, 10, 5, 9, 7, 0, 0, time.UTC) + tm := axisIn(ChartAxisOptions{Kind: AxisTime, From: t0, To: t0.Add(2 * time.Hour)}) + if len(tm.Ticks()) == 0 || tm.Label(tm.Ticks()[0]) != "09:30" { + t.Fatalf("time ticks %v", tm.Ticks()) + } + cat := axisIn(ChartAxisOptions{Kind: AxisCategory, Categories: []string{"Nave", "Choir", "Crypt", "Bells"}}) + plot := ui.Rect{W: 400, H: 10} + if cat.Map(plot, 0) != 50 || cat.Map(plot, 3) != 350 || cat.Label(cat.Invert(plot, 260)) != "Crypt" { + t.Fatalf("category %v %v", cat.Map(plot, 0), cat.Label(cat.Invert(plot, 260))) + } +} + +func TestChartAxisBad(t *testing.T) { + for name, o := range map[string]ChartAxisOptions{ + "empty": {}, + "log zero": {Kind: AxisLog, Min: 0, Max: 10}, + "time": {Kind: AxisTime}, + "category": {Kind: AxisCategory}, + "side": {Min: 0, Max: 1, Side: 9}, + } { + func() { + defer func() { + if recover() == nil { + t.Errorf("%s: no panic", name) + } + }() + axisIn(o) + }() + } +} + +// partsChart composes the public parts into a custom chart over three points. +func partsChart(c *ui.Context, notes []ChartNote, crosshair bool) ChartResult { + pts := [][2]float64{{2, 30}, {5, 80}, {8, 55}} + x := ChartAxis(c, ChartAxisOptions{Min: 0, Max: 10}) + y := ChartAxis(c, ChartAxisOptions{Side: SideLeft, Min: 0, Max: 100}) + grid := ChartGrid(c, ChartGridOptions{X: &x, Y: &y, Minor: 2}) + hair := ChartCrosshair(c, ChartCrosshairOptions{X: &x, Y: &y}) + notesPart := ChartAnnotation(c, notes, ChartAnnotationOptions{X: &x, Y: &y}) + plotOf := func(r ui.Rect) ui.Rect { return chartInset(r, 52, 26) } + ink := Tokens(c).AccentText + at := func(r ui.Rect, i int) (float32, float32) { + plot := plotOf(r) + return x.Map(plot, pts[i][0]), y.Map(plot, pts[i][1]) + } + return Chart(c, ChartFrame{Label: "Parts"}, ChartSpec{ + Marks: len(pts), + Readout: func(i int) string { return fmt.Sprintf("x %s · y %s", x.Label(pts[i][0]), y.Label(pts[i][1])) }, + Pick: func(r ui.Rect, px, py float32) int { + return hair.Snap(len(pts), func(i int) (float32, float32) { return at(r, i) }, px, py) + }, + Anchor: at, + Input: func(plot *ui.Element, r ui.Rect) { notesPart.Drag(plot, plotOf(r)) }, + Draw: func(p *ui.Painter, r ui.Rect, active int) { + plot := plotOf(r) + grid.Draw(p, plot) + x.Draw(p, plot) + y.Draw(p, plot) + notesPart.Draw(p, plot) + for i := range pts { + px, py := at(r, i) + internal.Marker(p, 0, px, py, 10, ink) + } + if crosshair && active >= 0 { + px, py := at(r, active) + hair.Draw(p, plot, px, py) + } + }, + }) +} + +func TestChartAxisSnapshot(t *testing.T) { + t0 := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC) + snapshot(t, "chart_axis", 560, 300, func(c *ui.Context) { + axes := []ChartAxisPart{ + ChartAxis(c, ChartAxisOptions{Min: 0, Max: 97}), + ChartAxis(c, ChartAxisOptions{Side: SideLeft, Kind: AxisLog, Min: 1, Max: 10000}), + ChartAxis(c, ChartAxisOptions{Side: SideTop, Kind: AxisTime, From: t0, To: t0.Add(3 * time.Hour)}), + ChartAxis(c, ChartAxisOptions{Side: SideRight, Kind: AxisCategory, Categories: []string{"Nave", "Choir", "Crypt"}}), + } + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 40, W: r.W - 140, H: r.H - 80} + for _, a := range axes { + a.Draw(p, plot) + } + }) + }) +} diff --git a/chart_brush.go b/chart_brush.go new file mode 100644 index 0000000..edaad4f --- /dev/null +++ b/chart_brush.go @@ -0,0 +1,207 @@ +package mujica + +import ( + "fmt" + "log/slog" + "math" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChartBrushOptions configure a ChartBrush. +type ChartBrushOptions struct { + // Label names the brush for assistive technology; required. + Label string + // Min and Max span the track; Min < Max. + Min, Max float64 + // Step is the grid both ends snap to; 0 means a hundredth of the span. + Step float64 + // Values draws a preview line across the track. + Values []float64 + // Height is the track height; 0 means 48 DIPs. + Height float32 + Format func(v float64) string + Disabled bool +} + +type brushDrag struct { + part int + grab float64 + start float64 +} + +// ChartBrush selects the range *value on a track: drag the window or its ends, or use the keys. +func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) ChoiceResult { + if opts.Label == "" || !(opts.Max > opts.Min) || opts.Step < 0 || opts.Height < 0 { + panic("mujica: ChartBrush needs a Label, Min < Max, Step ≥ 0 and Height ≥ 0") + } + step := opts.Step + if step == 0 { + step = (opts.Max - opts.Min) / 100 + } + spec := numberInputResolve(NumberInputOptions{Min: opts.Min, Max: opts.Max, Step: step}) + if value[0] < opts.Min || value[1] > opts.Max || !(value[1] > value[0]) { + panic("mujica: ChartBrush value must be an ascending range inside Min..Max") + } + h := opts.Height + if h == 0 { + h = 48 + } + k := Tokens(c) + u := Density(c).Unit() + val := func(v float64) string { return chartValue(c, v, opts.Format) } + snap := func(v float64) float64 { + return max(spec.lo, min(spec.hi, spec.round(spec.lo+math.Round((v-spec.lo)/spec.step)*spec.step))) + } + before := *value + var res ChoiceResult + res.Element = ui.Column(c).Gap(u).MinWidth(0).Disabled(opts.Disabled) + res.Element.Children(func() { + track := ui.Box(c).Height(h).FillWidth().MinWidth(0).Radius(theme.ControlRadius).Background(k.SurfaceHover) + b := track.Bounds() + internal.Remeasure(c, track, b.W, b.H) + at := func(v float64) float32 { return float32((v - opts.Min) / (opts.Max - opts.Min)) * b.W } + from := func(px float32) float64 { return opts.Min + float64(px/max(b.W, 1))*(opts.Max-opts.Min) } + drag := ui.Local(track, "mujica.brush.drag", func() brushDrag { return brushDrag{part: -1} }) + set := func(lo, hi float64) { + lo, hi = snap(lo), snap(hi) + if hi-lo >= spec.step-1e-9 { + *value = [2]float64{lo, hi} + } + } + track.Draw(func(p *ui.Painter, r ui.Rect) { brushPaint(p, r, *value, opts, k) }) + track.Children(func() { + x0, x1 := at(value[0]), at(value[1]) + window := ui.Box(c).Absolute().Left(x0).Top(0).Width(max(x1-x0, 1)).Height(h).Focusable(). + Role(ui.RoleGroup).Label(fmt.Sprintf(msg(c, "chart_brush.window"), opts.Label, val(value[0]), val(value[1]))) + internal.Ring(window, k.Focus, theme.ControlRadius) + ends := [2]*ui.Element{} + for i, x := range []float32{x0, x1} { + end := ui.Box(c).Absolute().Left(x - theme.MinHitSize/2).Top(0).Size(theme.MinHitSize, h).Focusable(). + Role(ui.RoleSlider).Label(fmt.Sprintf(msg(c, []string{"chart_brush.start", "chart_brush.end"}[i]), val(value[i]))) + internal.Ring(end, k.Focus, theme.ControlRadius) + end.Draw(func(p *ui.Painter, r ui.Rect) { + cx := internal.Snap(p, r.X+r.W/2) + p.Fill(ui.Rect{X: cx - 3, Y: r.Y + r.H/2 - 10, W: 6, H: 20}, k.Text, 2) + }) + ends[i] = end + } + if res.Element.IsDisabled() { + return + } + for i, end := range ends { + v, ok := brushKey(end, value[i], spec) + switch { + case !ok: + case i == 0: + set(min(v, value[1]-spec.step), value[1]) + default: + set(value[0], max(v, value[0]+spec.step)) + } + } + w := value[1] - value[0] + switch { + case window.Shortcut(0, ui.KeyLeft): + lo := max(spec.lo, spec.stepBy(value[0], -1)) + set(lo, lo+w) + case window.Shortcut(0, ui.KeyRight): + hi := min(spec.hi, spec.stepBy(value[1], 1)) + set(hi-w, hi) + case window.Shortcut(0, ui.KeyHome): + set(spec.lo, spec.lo+w) + case window.Shortcut(0, ui.KeyEnd): + set(spec.hi-w, spec.hi) + } + brushPointer(track, window, ends, drag, value, from, set) + }) + ui.Text(c, val(value[0])+" – "+val(value[1])).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.TextMuted).Role(ui.RoleStatus) + }) + res.changed = *value != before + if res.changed { + slog.Debug("mujica: chart_brush range", "from", value[0], "to", value[1]) + } + return res +} + +// brushKey steps an end for the arrow, Page, Home and End keys. +func brushKey(e *ui.Element, v float64, spec numberInputSpec) (float64, bool) { + switch { + case e.Shortcut(0, ui.KeyLeft), e.Shortcut(0, ui.KeyDown): + return spec.stepBy(v, -1), true + case e.Shortcut(0, ui.KeyRight), e.Shortcut(0, ui.KeyUp): + return spec.stepBy(v, 1), true + case e.Shortcut(0, ui.KeyPageDown): + return spec.stepBy(v, -10), true + case e.Shortcut(0, ui.KeyPageUp): + return spec.stepBy(v, 10), true + case e.Shortcut(0, ui.KeyHome): + return spec.lo, true + case e.Shortcut(0, ui.KeyEnd): + return spec.hi, true + } + return v, false +} + +// brushPointer drags an end, the window, or a new range across the track. +func brushPointer(track, window *ui.Element, ends [2]*ui.Element, drag *brushDrag, value *[2]float64, from func(float32) float64, set func(lo, hi float64)) { + px, _, _ := track.PointerPosition() + at := from(px) + parts := []*ui.Element{ends[0], ends[1], window, track} + held := -1 + for i, e := range parts { + if _, _, ok := e.Dragged(); ok && held < 0 { + held = i + } + } + if held < 0 { + drag.part = -1 + return + } + if drag.part < 0 { + *drag = brushDrag{part: held, grab: at - value[0], start: at} + } + w := value[1] - value[0] + switch drag.part { + case 0: + set(min(at, value[1]), value[1]) + case 1: + set(value[0], max(at, value[0])) + case 2: + set(at-drag.grab, at-drag.grab+w) + default: + set(min(drag.start, at), max(drag.start, at)) + } +} + +// brushPaint draws the preview line, dims outside the range and frames the window. +func brushPaint(p *ui.Painter, r ui.Rect, value [2]float64, opts ChartBrushOptions, k theme.Tokens) { + lo, hi := math.Inf(1), math.Inf(-1) + for _, v := range opts.Values { + if !math.IsNaN(v) { + lo, hi = min(lo, v), max(hi, v) + } + } + if n := len(opts.Values); n > 1 && hi > lo { + x := func(i int) float32 { return r.X + r.W*float32(i)/float32(n-1) } + chartRuns(opts.Values, x, func(idx []int) { + var line ui.Path + for j, i := range idx { + y := r.Y + 4 + (r.H-8)*float32(1-(opts.Values[i]-lo)/(hi-lo)) + if j == 0 { + line.MoveTo(x(i), y) + } else { + line.LineTo(x(i), y) + } + } + p.StrokePath(&line, 1.25, k.TextMuted) + }) + } + x0 := r.X + r.W*float32((value[0]-opts.Min)/(opts.Max-opts.Min)) + x1 := r.X + r.W*float32((value[1]-opts.Min)/(opts.Max-opts.Min)) + p.Fill(ui.Rect{X: r.X, Y: r.Y, W: x0 - r.X, H: r.H}, k.Background.Alpha(0.6), 0) + p.Fill(ui.Rect{X: x1, Y: r.Y, W: r.X + r.W - x1, H: r.H}, k.Background.Alpha(0.6), 0) + p.Stroke(ui.Rect{X: x0, Y: r.Y, W: x1 - x0, H: r.H}, k.AccentText, 0, 1.5) +} diff --git a/chart_crosshair.go b/chart_crosshair.go new file mode 100644 index 0000000..f8b9a1d --- /dev/null +++ b/chart_crosshair.go @@ -0,0 +1,81 @@ +package mujica + +import ( + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChartCrosshairOptions configure a ChartCrosshair. +type ChartCrosshairOptions struct { + // X draws the vertical line and its label on X's side; Y the horizontal one. + X, Y *ChartAxisPart + // Reach is how far, in DIPs, Snap looks for a point; 0 means 24. + Reach float32 +} + +// ChartCrosshairPart is a crosshair ready to snap to points and draw. +type ChartCrosshairPart struct { + opts ChartCrosshairOptions + k theme.Tokens + size float32 + pad float32 +} + +// ChartCrosshair crosses lines through a point with value labels on the axes. +func ChartCrosshair(c *ui.Context, opts ChartCrosshairOptions) ChartCrosshairPart { + if opts.X == nil && opts.Y == nil || opts.Reach < 0 { + panic("mujica: ChartCrosshair needs an axis and Reach ≥ 0") + } + if opts.Reach == 0 { + opts.Reach = 24 + } + return ChartCrosshairPart{opts: opts, k: Tokens(c), size: FontSize(c, theme.CaptionSize), pad: Density(c).Unit()} +} + +// Snap returns the point nearest (x, y) within Reach, or -1. +func (h ChartCrosshairPart) Snap(n int, at func(i int) (x, y float32), x, y float32) int { + return internal.Nearest(n, at, x, y, h.opts.Reach, false) +} + +// Draw paints the lines through (x, y) inside plot and each axis's value label. +func (h ChartCrosshairPart) Draw(p *ui.Painter, plot ui.Rect, x, y float32) { + k := h.k + if a := h.opts.X; a != nil { + xx := internal.Snap(p, x) + p.Line(xx, plot.Y, xx, plot.Y+plot.H, 1, k.TextMuted) + at := plot.Y + plot.H + if a.opts.Side == SideTop { + at = plot.Y + } + h.pill(p, a.readout(a.Invert(plot, x)), x, at, true, a.opts.Side == SideTop) + } + if a := h.opts.Y; a != nil { + yy := internal.Snap(p, y) + p.Line(plot.X, yy, plot.X+plot.W, yy, 1, k.TextMuted) + at := plot.X + if a.opts.Side == SideRight { + at = plot.X + plot.W + } + h.pill(p, a.readout(a.Invert(plot, y)), at, y, false, a.opts.Side == SideRight) + } +} + +// pill writes s on a Text-colored tag at the axis, outside the plot. +func (h ChartCrosshairPart) pill(p *ui.Painter, s string, x, y float32, across, far bool) { + w, ht := p.MeasureText(0, ui.Span{Text: s, Size: h.size}) + box := ui.Rect{W: w + 2*h.pad, H: ht + h.pad} + switch { + case across && far: + box.X, box.Y = x-box.W/2, y-box.H-2 + case across: + box.X, box.Y = x-box.W/2, y+2 + case far: + box.X, box.Y = x+2, y-box.H/2 + default: + box.X, box.Y = x-box.W-2, y-box.H/2 + } + p.Fill(box, h.k.Text, theme.ControlRadius) + p.Text(box.X+h.pad, box.Y+h.pad/2, s, h.size, h.k.Surface) +} diff --git a/chart_crosshair_test.go b/chart_crosshair_test.go new file mode 100644 index 0000000..7f9a43c --- /dev/null +++ b/chart_crosshair_test.go @@ -0,0 +1,69 @@ +package mujica + +import ( + "image/color" + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/theme" +) + +func TestChartCrosshairSnapsAndFollowsKeys(t *testing.T) { + h := &chartHarness{build: func(c *ui.Context) ChartResult { return partsChart(c, nil, true) }} + tt := ui.NewTester(h.view, 520, 420) + b := h.res.Element.Bounds() + plot := chartInset(ui.Rect{X: b.X, Y: b.Y, W: b.W, H: 240}, 52, 26) + // Point 1 is (5, 80); the pointer rests 10 DIPs off it. + px, py := plot.X+plot.W/2, plot.Y+plot.H*0.2 + tt.Move(px+10, py-6) + if h.res.Point != 1 || chartReadout(tt) != "x 5 · y 80" { + t.Fatalf("snap: point %d %q", h.res.Point, chartReadout(tt)) + } + if !crosshairAt(tt, int(px), int(plot.Y+plot.H-2)) { + t.Fatal("vertical line does not pass through the snapped point") + } + tt.Move(px+60, py+60) + if h.res.Point != -1 { + t.Fatalf("snapped from too far: %d", h.res.Point) + } + tabTo(t, tt, "Parts") + tt.Key(0, ui.KeyEnd) + if !crosshairAt(tt, int(plot.X+plot.W*0.8), int(plot.Y+plot.H-2)) { + t.Fatal("keyboard point has no crosshair") + } +} + +// crosshairAt reports a TextMuted pixel at (x, y), where the crosshair runs. +func crosshairAt(tt *ui.Tester, x, y int) bool { + want := toRGBA(theme.Light().TextMuted) + for dx := -1; dx <= 1; dx++ { + if color.RGBAModel.Convert(tt.Image().At(x+dx, y)).(color.RGBA) == want { + return true + } + } + return false +} + +func TestChartCrosshairBad(t *testing.T) { + defer func() { + if recover() == nil { + t.Fatal("no panic without axes") + } + }() + ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); ChartCrosshair(c, ChartCrosshairOptions{}) }, 100, 100) +} + +func TestChartCrosshairSnapshot(t *testing.T) { + snapshot(t, "chart_crosshair", 420, 240, func(c *ui.Context) { + x := ChartAxis(c, ChartAxisOptions{Min: 0, Max: 10}) + y := ChartAxis(c, ChartAxisOptions{Side: SideLeft, Min: 0, Max: 100}) + hair := ChartCrosshair(c, ChartCrosshairOptions{X: &x, Y: &y}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 48, Y: r.Y + 16, W: r.W - 64, H: r.H - 48} + x.Draw(p, plot) + y.Draw(p, plot) + hair.Draw(p, plot, x.Map(plot, 6.5), y.Map(plot, 42)) + }) + }) +} diff --git a/chart_export.go b/chart_export.go new file mode 100644 index 0000000..48421cd --- /dev/null +++ b/chart_export.go @@ -0,0 +1,49 @@ +package mujica + +import ( + "bytes" + "image/png" + "log/slog" + + "github.com/egoist/mygo/ui" +) + +// ChartExportOptions configure a ChartExport. +type ChartExportOptions struct { + // Width and Height are the image size in DIPs; required. + Width, Height int + // Scale is device pixels per DIP; 0 means 2. + Scale float32 +} + +// ChartExport renders chart off screen in this window's theme and returns PNG bytes; it writes no file. +func ChartExport(c *ui.Context, chart func(c *ui.Context), opts ChartExportOptions) ([]byte, error) { + if chart == nil || opts.Width <= 0 || opts.Height <= 0 || opts.Scale < 0 { + panic("mujica: ChartExport needs a chart, a positive size and Scale ≥ 0") + } + scale := opts.Scale + if scale == 0 { + scale = 2 + } + w := current(c) + settings := Settings{Mode: Light, Density: w.density, Locale: w.locale, Messages: w.messages} + if w.tokens.Dark { + settings.Mode = Dark + } + tokens := w.tokens + img := ui.Render(func(c *ui.Context) { + if settings.Mode == Dark { + settings.Dark = &tokens + } else { + settings.Light = &tokens + } + Use(c, settings) + ui.Column(c).Fill().Background(tokens.Surface).Padding(Density(c).Unit() * 4).Children(func() { chart(c) }) + }, opts.Width, opts.Height, scale) + var buf bytes.Buffer + if err := png.Encode(&buf, img); err != nil { + return nil, err + } + slog.Debug("mujica: chart_export png", "bytes", buf.Len(), "width", opts.Width, "height", opts.Height) + return buf.Bytes(), nil +} diff --git a/chart_frame.go b/chart_frame.go index c3ea645..4f4dfea 100644 --- a/chart_frame.go +++ b/chart_frame.go @@ -44,25 +44,39 @@ func (r ChartResult) ValueChanged() bool { return r.value } // Toggled returns the legend series switched in this frame. func (r ChartResult) Toggled() (string, bool) { return r.toggled, r.toggled != "" } -// chartSpec is one chart's drawing and behavior. -type chartSpec struct { - // n counts the marks keys step through; 0 is empty. - n int - keys []ChartLegendItem - // toggle lets legend entries hide and show series. - toggle bool - draw func(p *ui.Painter, r ui.Rect, active int) - // pick returns the mark at (x, y), or -1. - pick func(r ui.Rect, x, y float32) int - readout func(i int) string - // move steps from mark i; nil steps in order. - move func(i int, key ui.Key) int - // activate runs on Enter, Space or a click. - activate func(i int) - // anchor places mark i's tooltip in plot space; nil uses the plot's top middle. - anchor func(r ui.Rect, i int) (x, y float32) - // tip writes mark i's tooltip; nil splits the readout. - tip func(i int) []ChartTooltipLine +// ChartSpec is a chart's marks and drawing, for Chart; r is the chart box in each callback. +type ChartSpec struct { + // Marks counts what the keys step through; 0 shows the empty state. + Marks int + // Legend lists series keys above the plot. + Legend []ChartLegendItem + // Hidden, when set, makes legend keys check boxes switching series off. + Hidden *map[string]bool + // Draw paints the plot; active is the read mark, or -1. + Draw func(p *ui.Painter, r ui.Rect, active int) + // Pick returns the mark at (x, y), or -1; required. + Pick func(r ui.Rect, x, y float32) int + // Readout describes mark i; it is shown, announced and the tooltip's default. + Readout func(i int) string + // Move steps from mark i for an arrow key; nil steps in order. + Move func(i int, key ui.Key) int + // Activate runs on Enter, Space or a click on a mark. + Activate func(i int) + // Anchor places mark i's tooltip for the keyboard; nil uses the top middle. + Anchor func(r ui.Rect, i int) (x, y float32) + // Tooltip writes mark i's tooltip; nil splits Readout at " · ". + Tooltip func(i int) []ChartTooltipLine + // Input takes the plot's other input, as a ChartAnnotation's drags. + Input func(plot *ui.Element, r ui.Rect) +} + +// Chart frames a custom chart: legend, focus, keys, readout, tooltip and empty states. +func Chart(c *ui.Context, frame ChartFrame, spec ChartSpec) ChartResult { + if spec.Marks < 0 || spec.Draw == nil || spec.Pick == nil || spec.Readout == nil { + panic("mujica: Chart needs Marks ≥ 0, Draw, Pick and Readout") + } + res, _ := newChart(c, frame).build(spec) + return res } type chartState struct { @@ -92,25 +106,29 @@ func newChart(c *ui.Context, frame ChartFrame) *chart { return ch } +// toggles returns the legend's hidden set when series can be switched off. +func (ch *chart) toggles(on bool) *map[string]bool { + if on { + return &ch.st.hidden + } + return nil +} + // hidden reports whether the legend switched series name off. func (ch *chart) hidden(name string) bool { return ch.st.hidden[name] } // build lays out legend, plot and readout; returns the plot. -func (ch *chart) build(spec chartSpec) (ChartResult, *ui.Element) { +func (ch *chart) build(spec ChartSpec) (ChartResult, *ui.Element) { c, k, st := ch.c, Tokens(ch.c), ch.st u := Density(c).Unit() var plot *ui.Element ch.res.Element.Children(func() { - if len(spec.keys) > 0 { - var hidden *map[string]bool - if spec.toggle { - hidden = &st.hidden - } - if name, ok := ChartLegend(c, hidden, spec.keys, ChartLegendOptions{}).Toggled(); ok { + if len(spec.Legend) > 0 { + if name, ok := ChartLegend(c, spec.Hidden, spec.Legend, ChartLegendOptions{}).Toggled(); ok { ch.res.toggled = name } } - if ch.frame.Status == DataLoading || ch.frame.Status == DataFailed || spec.n == 0 { + if ch.frame.Status == DataLoading || ch.frame.Status == DataFailed || spec.Marks == 0 { st.focus = -1 ch.res.retry = ChartEmptyState(c, ch.frame.Status, ChartEmptyStateOptions{Height: ch.frame.Height, Error: ch.frame.Error, Empty: ch.frame.Empty}).Changed() ch.res.Point = -1 @@ -120,34 +138,38 @@ func (ch *chart) build(spec chartSpec) (ChartResult, *ui.Element) { box := ui.Box(c).Height(ch.frame.Height).FillWidth().MinWidth(0) plot = box.Focusable().Label(ch.frame.Label).Role(ui.RoleGroup) internal.Ring(plot, k.Focus, theme.ControlRadius) - st.focus = min(st.focus, spec.n-1) + st.focus = min(st.focus, spec.Marks-1) ch.input(plot, spec) + if spec.Input != nil && !plot.IsDisabled() { + b := plot.Bounds() + spec.Input(plot, ui.Rect{W: b.W, H: b.H}) + } active := -1 b := plot.Bounds() local := ui.Rect{W: b.W, H: b.H} x, y, over := plot.PointerPosition() if over && !plot.IsDisabled() { - active = spec.pick(local, x, y) + active = spec.Pick(local, x, y) } - if active < 0 && plot.Focused() { + if active < 0 && plot.Focused() && st.focus >= 0 { active = st.focus x, y = local.W/2, 0 - if spec.anchor != nil { - x, y = spec.anchor(local, active) + if spec.Anchor != nil { + x, y = spec.Anchor(local, active) } } ch.res.Point = active if active >= 0 && b.W > 0 { - lines := chartTipLines(spec.readout(active)) - if spec.tip != nil { - lines = spec.tip(active) + lines := chartTipLines(spec.Readout(active)) + if spec.Tooltip != nil { + lines = spec.Tooltip(active) } ChartTooltip(c, b.X+x, b.Y+y, lines) } - plot.Draw(func(p *ui.Painter, r ui.Rect) { spec.draw(p, r, active) }) + plot.Draw(func(p *ui.Painter, r ui.Rect) { spec.Draw(p, r, active) }) text, col := msg(c, "chart.hint"), k.TextMuted if active >= 0 { - text, col = spec.readout(active), k.Text + text, col = spec.Readout(active), k.Text } ui.Text(c, text).FontSize(FontSize(c, theme.CaptionSize)).TextColor(col).Role(ui.RoleStatus).SingleLine().Height(u * 5) }) @@ -157,7 +179,7 @@ func (ch *chart) build(spec chartSpec) (ChartResult, *ui.Element) { } // input moves the keyboard mark, and takes clicks on marks. -func (ch *chart) input(plot *ui.Element, spec chartSpec) { +func (ch *chart) input(plot *ui.Element, spec ChartSpec) { st := ch.st if plot.IsDisabled() { return @@ -170,19 +192,19 @@ func (ch *chart) input(plot *ui.Element, spec chartSpec) { switch { case st.focus < 0: to = 0 - case spec.move != nil: - to = spec.move(st.focus, key) + case spec.Move != nil: + to = spec.Move(st.focus, key) case key == ui.KeyLeft || key == ui.KeyUp: to = max(st.focus-1, 0) default: - to = min(st.focus+1, spec.n-1) + to = min(st.focus+1, spec.Marks-1) } } if plot.Shortcut(0, ui.KeyHome) { to = 0 } if plot.Shortcut(0, ui.KeyEnd) { - to = spec.n - 1 + to = spec.Marks - 1 } if plot.Shortcut(0, ui.KeyEscape) { to = -1 @@ -190,7 +212,7 @@ func (ch *chart) input(plot *ui.Element, spec chartSpec) { if to != st.focus { st.focus = to if to >= 0 { - ch.c.Announce(spec.readout(to)) + ch.c.Announce(spec.Readout(to)) } slog.Debug("mujica: chart focus", "label", ch.frame.Label, "mark", to) } @@ -199,12 +221,12 @@ func (ch *chart) input(plot *ui.Element, spec chartSpec) { plot.Focus() x, y, _ := plot.PointerPosition() b := plot.Bounds() - if i := spec.pick(ui.Rect{W: b.W, H: b.H}, x, y); i >= 0 { + if i := spec.Pick(ui.Rect{W: b.W, H: b.H}, x, y); i >= 0 { st.focus, act = i, true } } - if act && spec.activate != nil { - spec.activate(st.focus) + if act && spec.Activate != nil { + spec.Activate(st.focus) } } diff --git a/chart_grid.go b/chart_grid.go new file mode 100644 index 0000000..dd80ea5 --- /dev/null +++ b/chart_grid.go @@ -0,0 +1,68 @@ +package mujica + +import ( + "math" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" +) + +// ChartGridOptions configure a ChartGrid. +type ChartGridOptions struct { + // X and Y draw lines at their ticks; either may be nil. + X, Y *ChartAxisPart + // Minor splits each major interval into this many parts with fainter lines. + Minor int +} + +// ChartGridPart is a grid ready to draw in a plot. +type ChartGridPart struct { + opts ChartGridOptions + major, minor ui.Color +} + +// ChartGrid draws pixel-aligned lines at the axes' ticks, and minor lines between them. +func ChartGrid(c *ui.Context, opts ChartGridOptions) ChartGridPart { + if opts.Minor < 0 || opts.X == nil && opts.Y == nil { + panic("mujica: ChartGrid needs an axis and Minor ≥ 0") + } + for _, a := range []*ChartAxisPart{opts.X, opts.Y} { + if a != nil && a.opts.Kind == AxisCategory && opts.Minor > 0 { + panic("mujica: ChartGrid has no minor lines on a category axis") + } + } + k := Tokens(c) + return ChartGridPart{opts: opts, major: k.Border, minor: k.Border.Mix(k.Surface, 0.55)} +} + +// Draw paints minor lines, then major ones, inside plot. +func (g ChartGridPart) Draw(p *ui.Painter, plot ui.Rect) { + for _, a := range []*ChartAxisPart{g.opts.X, g.opts.Y} { + if a == nil { + continue + } + line := func(v float64, col ui.Color) { + at := a.Map(plot, v) + if a.horizontal() { + internal.RuleV(p, at, plot.Y, plot.Y+plot.H, col) + } else { + internal.Rule(p, plot.X, plot.X+plot.W, at, col) + } + } + ticks := a.Ticks() + for i := 1; i < len(ticks) && g.opts.Minor > 0; i++ { + for j := 1; j < g.opts.Minor; j++ { + f := float64(j) / float64(g.opts.Minor) + v := ticks[i-1] + (ticks[i]-ticks[i-1])*f + if a.opts.Kind == AxisLog { + v = math.Pow(10, math.Log10(ticks[i-1])+(math.Log10(ticks[i])-math.Log10(ticks[i-1]))*f) + } + line(v, g.minor) + } + } + for _, t := range ticks { + line(t, g.major) + } + } +} diff --git a/chart_grid_test.go b/chart_grid_test.go new file mode 100644 index 0000000..a62c041 --- /dev/null +++ b/chart_grid_test.go @@ -0,0 +1,66 @@ +package mujica + +import ( + "image/color" + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/theme" +) + +func TestChartGridPixelAlignedWithMinor(t *testing.T) { + for _, scale := range []float32{1, 2} { + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: Light}) + y := ChartAxis(c, ChartAxisOptions{Side: SideLeft, Min: 0, Max: 100, Ticks: []float64{0, 50, 100}}) + grid := ChartGrid(c, ChartGridOptions{Y: &y, Minor: 2}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { grid.Draw(p, ui.Rect{X: 0, Y: 10.3, W: 200, H: 100}) }) + }, 200, 130) + tt.SetScale(scale) + img := tt.Image() + major, minor := toRGBA(theme.Light().Border), toRGBA(theme.Light().Border.Mix(theme.Light().Surface, 0.55)) + count := map[color.RGBA]int{} + for py := range img.Bounds().Dy() { + c := color.RGBAModel.Convert(img.At(100, py)).(color.RGBA) + count[c]++ + } + // Three major and two minor lines, each exactly one device pixel per DIP, no blur. + if count[major] != 3*int(scale) || count[minor] != 2*int(scale) { + t.Fatalf("scale %v: %d major and %d minor pixel rows", scale, count[major], count[minor]) + } + } +} + +func TestChartGridBad(t *testing.T) { + for name, build := range map[string]func(c *ui.Context){ + "no axis": func(c *ui.Context) { ChartGrid(c, ChartGridOptions{}) }, + "category minor": func(c *ui.Context) { + a := ChartAxis(c, ChartAxisOptions{Kind: AxisCategory, Categories: []string{"a"}}) + ChartGrid(c, ChartGridOptions{X: &a, Minor: 2}) + }, + } { + func() { + defer func() { + if recover() == nil { + t.Errorf("%s: no panic", name) + } + }() + ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); build(c) }, 100, 100) + }() + } +} + +func TestChartGridSnapshot(t *testing.T) { + snapshot(t, "chart_grid", 420, 240, func(c *ui.Context) { + x := ChartAxis(c, ChartAxisOptions{Min: 0, Max: 10}) + y := ChartAxis(c, ChartAxisOptions{Side: SideLeft, Kind: AxisLog, Min: 1, Max: 1000}) + grid := ChartGrid(c, ChartGridOptions{X: &x, Y: &y, Minor: 4}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 48, Y: r.Y + 16, W: r.W - 64, H: r.H - 48} + grid.Draw(p, plot) + x.Draw(p, plot) + y.Draw(p, plot) + }) + }) +} diff --git a/chart_legend.go b/chart_legend.go index 7712d7e..0e5bcd4 100644 --- a/chart_legend.go +++ b/chart_legend.go @@ -53,7 +53,7 @@ func ChartLegend(c *ui.Context, hidden *map[string]bool, items []ChartLegendItem res.Element = ui.Row(c).Gap(u * 3).Wrap() orient := ui.Horizontal if opts.Vertical { - res.Element.Column().Gap(u) + res.Element.Column().Gap(u).AlignItems(ui.Start) orient = ui.Vertical } open := ui.Local(res.Element, "mujica.legend.open", func() bool { return false }) diff --git a/chart_legend_test.go b/chart_legend_test.go new file mode 100644 index 0000000..b588a79 --- /dev/null +++ b/chart_legend_test.go @@ -0,0 +1,95 @@ +package mujica + +import ( + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +func legendItems() []ChartLegendItem { + pal := internal.Palette(theme.Light()) + var out []ChartLegendItem + for i, n := range []string{"Matins", "Lauds", "Prime", "Terce", "Sext"} { + out = append(out, ChartLegendItem{Name: n, Color: pal[i], Shape: i}) + } + return out +} + +func TestChartLegendToggleKeyboard(t *testing.T) { + hidden := map[string]bool{} + var toggled []string + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: Light}) + if s, ok := ChartLegend(c, &hidden, legendItems(), ChartLegendOptions{}).Toggled(); ok { + toggled = append(toggled, s) + } + }, 500, 200) + tt.Key(0, ui.KeyTab) + if !tt.Focused("Matins") { + t.Fatal("Tab did not enter the legend") + } + tt.Key(0, ui.KeyRight) + tt.Key(0, ui.KeyRight) + tt.Key(0, ui.KeySpace) + if !hidden["Prime"] || len(toggled) != 1 || toggled[0] != "Prime" { + t.Fatalf("arrows and Space: hidden %v toggled %v", hidden, toggled) + } + if err := tt.Click("Prime"); err != nil || hidden["Prime"] { + t.Fatalf("click did not show Prime again: %v", hidden) + } + tt.Key(0, ui.KeyTab) + if tt.Focused("Lauds") || tt.Focused("Sext") { + t.Fatal("legend entries are more than one Tab stop") + } +} + +func TestChartLegendFoldAndStatic(t *testing.T) { + vertical := true + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: Light}) + ChartLegend(c, nil, legendItems(), ChartLegendOptions{Vertical: vertical, MaxItems: 2}) + }, 500, 400) + if tt.HasText("Prime") || !tt.HasText("+3 more") { + t.Fatalf("fold: %q", tt.Texts()) + } + a, _ := tt.Find("Matins") + b, _ := tt.Find("Lauds") + if b.Y <= a.Y || b.X != a.X { + t.Fatalf("vertical layout %v %v", a, b) + } + if err := tt.Click("+3 more"); err != nil || !tt.HasText("Sext") || !tt.HasText("Show fewer") { + t.Fatalf("unfold: %v %q", err, tt.Texts()) + } + if _, ok := tt.Find("Matins"); !ok || tt.Focused("Matins") { + t.Fatal("static legend took focus") + } +} + +func TestChartLegendBad(t *testing.T) { + defer func() { + if recover() == nil { + t.Fatal("no panic for duplicate names") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ChartLegend(c, nil, []ChartLegendItem{{Name: "a"}, {Name: "a"}}, ChartLegendOptions{}) + }, 100, 100) +} + +func TestChartLegendSnapshot(t *testing.T) { + snapshot(t, "chart_legend", 520, 120, func(c *ui.Context) { + hidden := map[string]bool{"Lauds": true} + items := legendItems() + for i := range items { + items[i].Color = internal.Palette(Tokens(c))[i] + } + ui.Column(c).Padding(16).Gap(12).Children(func() { + ChartLegend(c, &hidden, items, ChartLegendOptions{}) + ChartLegend(c, nil, items, ChartLegendOptions{MaxItems: 3}) + }) + }) +} diff --git a/chart_tooltip_test.go b/chart_tooltip_test.go new file mode 100644 index 0000000..f0a13cf --- /dev/null +++ b/chart_tooltip_test.go @@ -0,0 +1,86 @@ +package mujica + +import ( + "image/color" + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +func TestChartTooltipFlipsAtEdges(t *testing.T) { + var at [2]float32 + var tip ui.Rect + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: Light}) + tip = ChartTooltip(c, at[0], at[1], []ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: theme.Light().Info, Shape: 1}}).Bounds() + }, 400, 300) + at = [2]float32{50, 50} + tt.Frame() + tt.Frame() + if tip.X != 62 || tip.Y != 62 || tip.W < 40 { + t.Fatalf("tooltip at %v", tip) + } + at = [2]float32{395, 295} + tt.Frame() + tt.Frame() + if tip.X+tip.W > 395-12+0.5 || tip.Y+tip.H > 295-12+0.5 { + t.Fatalf("tooltip did not flip: %v", tip) + } + defer func() { + if recover() == nil { + t.Fatal("no panic without lines") + } + }() + ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); ChartTooltip(c, 0, 0, nil) }, 100, 100) +} + +func TestChartTooltipFollowsFocusAndPointer(t *testing.T) { + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return LineChart(c, lineSeries(), LineChartOptions{Frame: ChartFrame{Label: "Chapel"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Chapel") + tt.Key(0, ui.KeyEnd) + if !tooltipShown(tt) { + t.Fatal("no tooltip for the keyboard point") + } + tt.Key(0, ui.KeyEscape) + if tooltipShown(tt) { + t.Fatal("tooltip stayed after Escape") + } + b := h.res.Element.Bounds() + tt.Move(b.X+b.W/2, b.Y+b.H/2) + if !tooltipShown(tt) { + t.Fatal("no tooltip under the pointer") + } +} + +// tooltipShown looks for a run of Surface pixels too long for a marker ring. +func tooltipShown(tt *ui.Tester) bool { + img := tt.Image() + want := toRGBA(theme.Light().Surface) + r := img.Bounds() + for y := r.Min.Y; y < r.Max.Y; y += 2 { + run := 0 + for x := r.Min.X; x < r.Max.X; x++ { + if color.RGBAModel.Convert(img.At(x, y)).(color.RGBA) == want { + if run++; run >= 30 { + return true + } + } else { + run = 0 + } + } + } + return false +} + +func TestChartTooltipSnapshot(t *testing.T) { + snapshot(t, "chart_tooltip", 320, 140, func(c *ui.Context) { + pal := internal.Palette(Tokens(c)) + ChartTooltip(c, 20, 20, []ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: pal[0]}, {Text: "Candles 2", Color: pal[1], Shape: 1}}) + }) +} diff --git a/funnel_chart.go b/funnel_chart.go index afac694..dd7bd18 100644 --- a/funnel_chart.go +++ b/funnel_chart.go @@ -49,19 +49,19 @@ func FunnelChart(c *ui.Context, stages []ChartSlice, opts FunnelChartOptions) Ch plot := ui.Rect{X: r.X + 8, Y: r.Y + 4, W: r.W * 0.58, H: r.H - 8} return plot, internal.Band{N: len(stages), R0: plot.Y, R1: plot.Y + plot.H, Pad: 0.08} } - spec := chartSpec{n: n} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: n} + spec.Readout = func(i int) string { s := stages[i] return fmt.Sprintf(msg(c, "funnel_chart.readout"), s.Label, chartValue(c, s.Value, opts.Format), rate(i), pct(s.Value, stages[0].Value)) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { plot, band := geom(r) if y < plot.Y || y >= plot.Y+plot.H || x < r.X || x > r.X+r.W { return -1 } return min(len(stages)-1, int((y-plot.Y)/band.Step())) } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, band := geom(r) cx := plot.X + plot.W/2 width := func(i int) float32 { return max(plot.W*float32(stages[min(i, len(stages)-1)].Value/top), 2) } diff --git a/gauge.go b/gauge.go index 21915df..b2f3745 100644 --- a/gauge.go +++ b/gauge.go @@ -84,8 +84,8 @@ func Gauge(c *ui.Context, value float64, opts GaugeOptions) ChartResult { if seg >= 0 { reading += " · " + opts.Segments[seg].Label } - spec := chartSpec{n: 1 + len(opts.Segments)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: 1 + len(opts.Segments)} + spec.Readout = func(i int) string { if i == 0 { return reading } @@ -95,7 +95,7 @@ func Gauge(c *ui.Context, value float64, opts GaugeOptions) ChartResult { } return fmt.Sprintf("%s: %s–%s", s.Label, val(from), val(s.To)) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { cx, cy, rad := geom(r) d := float32(math.Hypot(float64(x-cx), float64(y-cy))) if d < rad*0.45 { @@ -114,7 +114,7 @@ func Gauge(c *ui.Context, value float64, opts GaugeOptions) ChartResult { } return -1 } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { cx, cy, rad := geom(r) from := a0 if len(opts.Segments) == 0 { diff --git a/heatmap_chart.go b/heatmap_chart.go index 321dbf0..04880b3 100644 --- a/heatmap_chart.go +++ b/heatmap_chart.go @@ -55,11 +55,11 @@ func HeatmapChart(c *ui.Context, rows, cols []string, values [][]float64, opts H cell := func(xb, yb internal.Band, i int) ui.Rect { return ui.Rect{X: xb.Start(i % len(cols)), Y: yb.Start(i / len(cols)), W: xb.Width(), H: yb.Width()} } - spec := chartSpec{n: n} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: n} + spec.Readout = func(i int) string { return rows[i/len(cols)] + " · " + cols[i%len(cols)] + " · " + chartValue(c, values[i/len(cols)][i%len(cols)], opts.Format) } - spec.move = func(i int, key ui.Key) int { + spec.Move = func(i int, key ui.Key) int { r, col := i/len(cols), i%len(cols) switch key { case ui.KeyLeft: @@ -73,7 +73,7 @@ func HeatmapChart(c *ui.Context, rows, cols []string, values [][]float64, opts H } return r*len(cols) + col } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { plot, xb, yb := geom(r) if !plot.Contains(x, y) { return -1 @@ -82,7 +82,7 @@ func HeatmapChart(c *ui.Context, rows, cols []string, values [][]float64, opts H row := min(len(rows)-1, int((y-plot.Y)/yb.Step())) return row*len(cols) + col } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, xb, yb := geom(r) for i := range len(rows) * len(cols) { b := cell(xb, yb, i) diff --git a/histogram.go b/histogram.go index b36e96d..a864b72 100644 --- a/histogram.go +++ b/histogram.go @@ -116,8 +116,8 @@ func Histogram(c *ui.Context, values []float64, opts HistogramOptions) ChartResu ys = internal.Linear{D0: 0, D1: hi, R0: float64(plot.Y + plot.H), R1: float64(plot.Y)} return plot, internal.Band{N: len(b.counts), R0: plot.X, R1: plot.X + plot.W, Pad: 0.06} } - spec := chartSpec{n: len(b.counts)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(b.counts)} + spec.Readout = func(i int) string { if opts.Cumulative { return fmt.Sprintf("≤ %s · %d", edge(i+1, 100), b.counts[i]) } @@ -127,14 +127,14 @@ func Histogram(c *ui.Context, values []float64, opts HistogramOptions) ChartResu } return fmt.Sprintf("[%s, %s%s · %d", edge(i, 100), edge(i+1, 100), closer, b.counts[i]) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { plot, band := geom(r) if !plot.Contains(x, y) { return -1 } return min(len(b.counts)-1, int((x-plot.X)/band.Step())) } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, band := geom(r) internal.AxisY(p, plot, ys, internal.Ticks(0, hi, step), func(v float64) string { return internal.FormatTick(v, step) }, size, k) var xs []float32 diff --git a/internal/chart.go b/internal/chart.go index 47df0ea..d7f49e2 100644 --- a/internal/chart.go +++ b/internal/chart.go @@ -53,7 +53,7 @@ func Nice(lo, hi float64, n int) (nlo, nhi, step float64) { func Ticks(lo, hi, step float64) []float64 { var out []float64 for i := math.Ceil(lo/step - 1e-9); i*step <= hi+step*1e-9; i++ { - out = append(out, i*step) + out = append(out, i*step+0) // +0 turns -0 into 0 } return out } @@ -191,27 +191,53 @@ func Sector(cx, cy, r0, r1 float32, a0, a1 float64) *ui.Path { // AxisY draws grid lines and tick labels left of plot. func AxisY(p *ui.Painter, plot ui.Rect, s Linear, ticks []float64, label func(float64) string, size float32, k theme.Tokens) { - for _, t := range ticks { - y := s.Map(t) - Rule(p, plot.X, plot.X+plot.W, y, k.Border) - txt := label(t) - w, h := p.MeasureText(0, ui.Span{Text: txt, Size: size}) - p.Text(plot.X-w-6, y-h/2, txt, size, k.TextMuted) + ys := make([]float32, len(ticks)) + labels := make([]string, len(ticks)) + for i, t := range ticks { + ys[i], labels[i] = s.Map(t), label(t) + Rule(p, plot.X, plot.X+plot.W, ys[i], k.Border) } + LabelsY(p, plot.X-6, ys, labels, false, size, k) } // AxisX draws a baseline and labels centered at xs. func AxisX(p *ui.Painter, plot ui.Rect, xs []float32, labels []string, size float32, k theme.Tokens) { Rule(p, plot.X, plot.X+plot.W, plot.Y+plot.H, k.ControlBorder) + LabelsX(p, plot, plot.Y+plot.H+6, xs, labels, false, size, k) +} + +// RuleV draws a pixel-aligned 1 DIP vertical line at x. +func RuleV(p *ui.Painter, x, y0, y1 float32, c ui.Color) { + xx := ruleY(p, x) + p.Line(xx, y0, xx, y1, 1, c) +} + +// LabelsY writes labels centered on ys, ending at x, or starting there if after. +func LabelsY(p *ui.Painter, x float32, ys []float32, labels []string, after bool, size float32, k theme.Tokens) { + for i, y := range ys { + w, h := p.MeasureText(0, ui.Span{Text: labels[i], Size: size}) + at := x - w + if after { + at = x + } + p.Text(at, y-h/2, labels[i], size, k.TextMuted) + } +} + +// LabelsX writes labels centered at xs from y, or ending at y if above; overlaps are skipped. +func LabelsX(p *ui.Painter, plot ui.Rect, y float32, xs []float32, labels []string, above bool, size float32, k theme.Tokens) { right := float32(math.Inf(-1)) for i, x := range xs { - w, _ := p.MeasureText(0, ui.Span{Text: labels[i], Size: size}) + w, h := p.MeasureText(0, ui.Span{Text: labels[i], Size: size}) at := min(max(x-w/2, plot.X-12), plot.X+plot.W+12-w) - // Labels that would overlap the last one drawn are skipped. if at < right+6 { continue } - p.Text(at, plot.Y+plot.H+6, labels[i], size, k.TextMuted) + top := y + if above { + top = y - h + } + p.Text(at, top, labels[i], size, k.TextMuted) right = at + w } } diff --git a/line_chart.go b/line_chart.go index 71f56d9..a51e83e 100644 --- a/line_chart.go +++ b/line_chart.go @@ -86,15 +86,15 @@ func chartLines(ch *chart, d chartLineData) ChartResult { plot := chartInset(r, 52, 26) return plot, d.ax.scale(plot), internal.Linear{D0: lo, D1: hi, R0: float64(plot.Y + plot.H), R1: float64(plot.Y)} } - spec := chartSpec{n: d.n, keys: keys, toggle: true} - spec.pick = func(r ui.Rect, x, y float32) int { + spec := ChartSpec{Marks: d.n, Legend: keys, Hidden: ch.toggles(true)} + spec.Pick = func(r ui.Rect, x, y float32) int { plot, xs, _ := geom(r) if !(ui.Rect{X: plot.X - 6, Y: plot.Y, W: plot.W + 12, H: plot.H}).Contains(x, y) { return -1 } return d.ax.nearest(xs.Invert(x)) } - spec.readout = func(i int) string { + spec.Readout = func(i int) string { parts := []string{d.ax.label(i)} for _, s := range d.series { if !ch.hidden(s.Name) { @@ -103,7 +103,7 @@ func chartLines(ch *chart, d chartLineData) ChartResult { } return strings.Join(parts, " · ") } - spec.tip = func(i int) []ChartTooltipLine { + spec.Tooltip = func(i int) []ChartTooltipLine { lines := []ChartTooltipLine{{Text: d.ax.label(i)}} for si, s := range d.series { if !ch.hidden(s.Name) { @@ -112,11 +112,11 @@ func chartLines(ch *chart, d chartLineData) ChartResult { } return lines } - spec.anchor = func(r ui.Rect, i int) (float32, float32) { + spec.Anchor = func(r ui.Rect, i int) (float32, float32) { plot, xs, _ := geom(r) return xs.Map(d.ax.vals[i]), plot.Y } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, xs, ys := geom(r) internal.AxisY(p, plot, ys, ticks, func(v float64) string { return internal.FormatTick(v, step) }, size, k) tx, tl := d.ax.ticks(plot) diff --git a/messages_charts2.go b/messages_charts2.go index a8193bf..35545ad 100644 --- a/messages_charts2.go +++ b/messages_charts2.go @@ -4,5 +4,8 @@ func init() { addMessages(map[string][2]string{ "chart_legend.more": {"+%d more", "另有 %d 项"}, "chart_legend.fewer": {"Show fewer", "收起"}, + "chart_brush.window": {"%s: %s to %s", "%s:%s 至 %s"}, + "chart_brush.start": {"Range start %s", "区间起点 %s"}, + "chart_brush.end": {"Range end %s", "区间终点 %s"}, }) } diff --git a/network_graph.go b/network_graph.go index c9f368e..5c5e66a 100644 --- a/network_graph.go +++ b/network_graph.go @@ -106,8 +106,8 @@ func NetworkGraph(c *ui.Context, s *NetworkGraphState, nodes []GraphNode, edges return max(hi[0]-lo[0], hi[1]-lo[1], 1e-9) / float64(min(r.W, r.H)-48) / float64(s.zoom) } pt := func(r ui.Rect, i int) (float32, float32) { return screen(r, s.pos[nodes[i].ID]) } - spec := chartSpec{n: len(nodes)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(nodes)} + spec.Readout = func(i int) string { var near []string for _, l := range links { switch i { @@ -119,10 +119,10 @@ func NetworkGraph(c *ui.Context, s *NetworkGraphState, nodes []GraphNode, edges } return fmt.Sprintf(msg(c, "network_graph.readout"), nodes[i].Label, len(near), strings.Join(near, ", ")) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { return internal.Nearest(len(nodes), func(i int) (float32, float32) { return pt(r, i) }, x, y, 12, false) } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { p.Clip(r, 0, func() { for _, l := range links { x0, y0 := pt(r, l[0]) @@ -154,7 +154,7 @@ func NetworkGraph(c *ui.Context, s *NetworkGraphState, nodes []GraphNode, edges } hit := func(x, y float32) string { b := plot.Bounds() - if i := spec.pick(ui.Rect{W: b.W, H: b.H}, x, y); i >= 0 { + if i := spec.Pick(ui.Rect{W: b.W, H: b.H}, x, y); i >= 0 { return nodes[i].ID } return "" diff --git a/pie_chart.go b/pie_chart.go index b4ce86e..dba6d1d 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -66,11 +66,11 @@ func PieChart(c *ui.Context, slices []ChartSlice, opts PieChartOptions) ChartRes return r.X + r.W/2, r.Y + r.H/2, r0, r1 } share := func(i int) string { return fmt.Sprintf("%.1f%%", 100*parts[i].Value/total) } - spec := chartSpec{n: n, keys: keys} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: n, Legend: keys} + spec.Readout = func(i int) string { return parts[i].Label + " · " + chartValue(c, parts[i].Value, opts.Format) + " · " + share(i) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { cx, cy, r0, r1 := geom(r) d := float32(math.Hypot(float64(x-cx), float64(y-cy))) if d < r0 || d > r1 { @@ -87,7 +87,7 @@ func PieChart(c *ui.Context, slices []ChartSlice, opts PieChartOptions) ChartRes } return -1 } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { cx, cy, r0, r1 := geom(r) for i := range parts { a0, a1 := angle(i) diff --git a/radar_chart.go b/radar_chart.go index 14f6b0a..d554784 100644 --- a/radar_chart.go +++ b/radar_chart.go @@ -54,8 +54,8 @@ func RadarChart(c *ui.Context, axes []string, series []ChartSeries, opts RadarCh return r.X + r.W/2, r.Y + r.H/2 + 4, min(r.W/2-70, r.H/2-24) } angle := func(i int) float64 { return 2 * math.Pi * float64(i) / float64(len(axes)) } - spec := chartSpec{n: n, keys: keys, toggle: len(series) > 1} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: n, Legend: keys, Hidden: ch.toggles(len(series) > 1)} + spec.Readout = func(i int) string { parts := []string{axes[i]} for _, s := range series { if !ch.hidden(s.Name) { @@ -64,14 +64,14 @@ func RadarChart(c *ui.Context, axes []string, series []ChartSeries, opts RadarCh } return strings.Join(parts, " · ") } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { cx, cy, rad := geom(r) if math.Hypot(float64(x-cx), float64(y-cy)) > float64(rad)+16 { return -1 } return internal.Nearest(len(axes), func(i int) (float32, float32) { return internal.Polar(cx, cy, rad, angle(i)) }, x, y, 2*rad+32, false) } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { cx, cy, rad := geom(r) for _, t := range internal.Ticks(step, top, step) { var ring ui.Path diff --git a/sankey_chart.go b/sankey_chart.go index edfe561..f66c4b2 100644 --- a/sankey_chart.go +++ b/sankey_chart.go @@ -127,15 +127,15 @@ func SankeyChart(c *ui.Context, nodes []SankeyNode, links []SankeyLink, opts San if len(links) == 0 { n = 0 } - spec := chartSpec{n: n} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: n} + spec.Readout = func(i int) string { if i < len(nodes) { return nodes[i].Label + " · " + msg(c, "sankey_chart.in") + " " + val(l.in[i]) + " · " + msg(c, "sankey_chart.out") + " " + val(l.out[i]) } e := links[i-len(nodes)] return nodes[l.from[i-len(nodes)]].Label + " → " + nodes[l.to[i-len(nodes)]].Label + " · " + val(e.Value) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { boxes, y0, y1, scale := geom(r) for i, b := range boxes { if (ui.Rect{X: b.X - 4, Y: b.Y, W: b.W + 8, H: b.H}).Contains(x, y) { @@ -154,7 +154,7 @@ func SankeyChart(c *ui.Context, nodes []SankeyNode, links []SankeyLink, opts San } return -1 } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { boxes, y0, y1, scale := geom(r) lit := sankeyLit(l, len(nodes), active) for i := range links { diff --git a/scatter_chart.go b/scatter_chart.go index bbf31b6..20152a4 100644 --- a/scatter_chart.go +++ b/scatter_chart.go @@ -87,8 +87,8 @@ func ScatterChart(c *ui.Context, selected *[]ScatterKey, groups []ScatterGroup, ch.res.value = true slog.Debug("mujica: scatter_chart select", "count", len(*selected)) } - spec := chartSpec{n: len(marks), keys: keys, toggle: len(groups) > 1} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(marks), Legend: keys, Hidden: ch.toggles(len(groups) > 1)} + spec.Readout = func(i int) string { m, p := marks[i], pt(marks[i]) s := fmt.Sprintf("%s · x %s · y %s", groups[m.Group].Name, chartValue(c, p.X, opts.Format), chartValue(c, p.Y, opts.Format)) if opts.Bubbles { @@ -99,14 +99,14 @@ func ScatterChart(c *ui.Context, selected *[]ScatterKey, groups []ScatterGroup, } return s } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { _, sx, sy := geom(r) return internal.Nearest(len(marks), func(i int) (float32, float32) { return sx.Map(pt(marks[i]).X), sy.Map(pt(marks[i]).Y) }, x, y, 14, false) } - spec.activate = func(i int) { toggle(marks[i]) } + spec.Activate = func(i int) { toggle(marks[i]) } drag := ui.Local(ch.res.Element, "mujica.scatter.drag", func() scatterDrag { return scatterDrag{} }) box := *drag - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, sx, sy := geom(r) internal.AxisY(p, plot, sy, internal.Ticks(ys[0], ys[1], ys[2]), func(v float64) string { return internal.FormatTick(v, ys[2]) }, size, k) var tx []float32 diff --git a/sunburst.go b/sunburst.go index 6ee6712..d6e17de 100644 --- a/sunburst.go +++ b/sunburst.go @@ -82,8 +82,8 @@ func Sunburst(c *ui.Context, path *[]string, root ChartNode, opts SunburstOption return r.X + r.W/2, r.Y + r.H/2, hole, (rad - hole) / float32(depth) } ch := newChart(c, opts.Frame) - spec := chartSpec{n: len(arcs)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(arcs)} + spec.Readout = func(i int) string { a := arcs[i] s := fmt.Sprintf("%s · %s · %.1f%%", strings.Join(a.path, " › "), chartValue(c, a.node.total(), opts.Format), 100*a.node.total()/sum) if len(a.node.Children) > 0 { @@ -91,7 +91,7 @@ func Sunburst(c *ui.Context, path *[]string, root ChartNode, opts SunburstOption } return s } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { cx, cy, hole, ring := geom(r) d := float32(math.Hypot(float64(x-cx), float64(y-cy))) a := math.Atan2(float64(x-cx), float64(cy-y)) @@ -106,7 +106,7 @@ func Sunburst(c *ui.Context, path *[]string, root ChartNode, opts SunburstOption } return -1 } - spec.activate = func(i int) { + spec.Activate = func(i int) { if len(arcs[i].node.Children) > 0 { *path = append(slices.Clone(*path), arcs[i].path...) res.value = true @@ -121,7 +121,7 @@ func Sunburst(c *ui.Context, path *[]string, root ChartNode, opts SunburstOption } return col } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { cx, cy, hole, ring := geom(r) for i, a := range arcs { r0 := hole + ring*float32(a.ring) diff --git a/testdata/snapshots/darwin/chart_annotation-dark.png b/testdata/snapshots/darwin/chart_annotation-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7373a68064d8111e5c82efa812d29e8782765e38 GIT binary patch literal 17174 zcmeIZbx>SQ*DpFi0t5yL1Q^^UxVt1ka0%`b+zG)wxJz(%cOTqcgFA%aHn`iFJkRsK z-+TT#r_Q}!-8xlwx@ym!-qWkQm;Bc1wYx(;%ZZ~P;UNJ402E0HQAGd%77+k|QAUJ? z){OHiQ33$MtCFH0m0i+~R*|)*RbCKInSdag70H4UK`pCQH$7C4nPkem9C9|KaPfF_%eASHo_7L~fK(WfhLF z&HBVyeuuqR2OH>Mt;BG60{p+~>ki znzT8)f$mKaxu0ofIk=oDj-Q^o;LbtZ2Ayx=B0*n!zmvo3;IeQpp)F#76UJ&-W?lix z=o!{Slg74nbP2)L4eihAcR%1pM*$@IzEM#@%i~*5_zl+J>gq@rdtO(dKg^d8Aar>D zk3stS%L{Q|M>ac_WbyPz>2i7bu*6xtn&($MNEp&T=C*Mga06VLd2#GVhG{Ei=4Oe7 zk`GzN11|q+{)dVKVqnbFxt};2FE5`YTvgKCW6RCfHy%K6FGjZdr~xa-@#s?Xa*A|T zLq&!ZM>VLIBpurE-~H?OY(%jTb63gIQgWDC#-bYhL;(Up4of{wAv=J-M+o!9MT{Br zMBa{!A(VssHme*$=6FjL=>nuk19u-<|`&3@dn0B?<#<wHPAwt$!qMVpD#< #sIxJCq$MN2#K$t5U4I!B()Wt|dN}L5dz)Vrc^l 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 aB?fn7Ee-P8YES&#P)0&gyh_yg!+!y=TzJg@ literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_axis-dark.png b/testdata/snapshots/darwin/chart_axis-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b3a33d93466dfbb085de0e64b09027c2e88ee6 GIT binary patch literal 10536 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 G3jSaC^ELVa literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_axis-light.png b/testdata/snapshots/darwin/chart_axis-light.png new file mode 100644 index 0000000000000000000000000000000000000000..51f2abaaf8e7cbf97f4f40a10dd3abc4316d48ca GIT binary patch literal 10076 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_crosshair-dark.png b/testdata/snapshots/darwin/chart_crosshair-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..73a0f9be6c745382c4ddb4fb31e92feac708fe9f GIT binary patch literal 6783 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 yUf}t%6x)D7F<0o1~H#$R*D2eim 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_grid-dark.png b/testdata/snapshots/darwin/chart_grid-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..740fa7567cf73858f8d74b26924d72075f6dffb4 GIT binary patch literal 5619 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 W*~E$YTgRWdG`d=bn$_wKk^cZu@r@e* literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_grid-light.png b/testdata/snapshots/darwin/chart_grid-light.png new file mode 100644 index 0000000000000000000000000000000000000000..18eb005bc507543983da735d3677bf6e473f0263 GIT binary patch literal 5354 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 TT6Cv(m^7Md+N#CMPecC=V#@zg literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_legend-dark.png b/testdata/snapshots/darwin/chart_legend-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e1cd7d32b91270781d1032075f87613493910e GIT binary patch literal 7727 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ð}~)MBQofnGvWp9yx})5oix@5JXn ztE%3r$y>FG8mbLJ&N0mym?g9;&u=>WSgw+d=hFE1Pquw0O|issdW96*Jb1A!*WU7a zbe0{ougyBCs+zoiqoS`r#Ud7CR>GTO5l9u{u&n-)+uzroJ9o8N7-VBc{N9Ka7FMPx z5V?)-?#ee$$u-3F3p_J0bK{5i(xGMN=M$lRYXSHfP40yS2G{qPuv>-9+702q6d^K6 zw*VP3!Dr=6(c5c`3E_fQrbz#fWp}^trH`4bdiknE`oRu8h~y69Frh;EU;V%KKv3^E Yl8`c48p*xp)PKAyE2St|E^g%aUowp@umAu6 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_legend-light.png b/testdata/snapshots/darwin/chart_legend-light.png new file mode 100644 index 0000000000000000000000000000000000000000..a90050f68d0112ad4870c269e58cf3d7f788f080 GIT binary patch literal 7271 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 L6`67=v%voVgAgF} literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_tooltip-dark.png b/testdata/snapshots/darwin/chart_tooltip-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..01939fd5384e5923ba1a908cbc6be19e19d7b5d5 GIT binary patch literal 5005 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 literal 0 HcmV?d00001 diff --git a/treemap.go b/treemap.go index 9b072af..8740523 100644 --- a/treemap.go +++ b/treemap.go @@ -46,15 +46,15 @@ func Treemap(c *ui.Context, path *[]string, root ChartNode, opts TreemapOptions) } ch := newChart(c, opts.Frame) tiles := func(r ui.Rect) []ui.Rect { return squarify(values, r) } - spec := chartSpec{n: len(kids)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(kids)} + spec.Readout = func(i int) string { s := fmt.Sprintf("%s · %s · %.1f%%", kids[i].Name, chartValue(c, values[i], opts.Format), 100*values[i]/sum) if len(kids[i].Children) > 0 { s += " · " + msg(c, "chart.opens") } return s } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { for i, t := range tiles(r) { if t.Contains(x, y) { return i @@ -62,14 +62,14 @@ func Treemap(c *ui.Context, path *[]string, root ChartNode, opts TreemapOptions) } return -1 } - spec.activate = func(i int) { + spec.Activate = func(i int) { if len(kids[i].Children) > 0 { *path = append(slices.Clone(*path), kids[i].Name) res.value = true slog.Debug("mujica: treemap drill", "path", strings.Join(*path, "/")) } } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { for i, t := range tiles(r) { bg := pal[i%len(pal)] p.Fill(t, bg, 2) diff --git a/waterfall_chart.go b/waterfall_chart.go index e7bf0b7..9010ecb 100644 --- a/waterfall_chart.go +++ b/waterfall_chart.go @@ -69,21 +69,21 @@ func WaterfallChart(c *ui.Context, steps []WaterfallStep, opts WaterfallChartOpt return plot, internal.Band{N: len(steps), R0: plot.X, R1: plot.X + plot.W, Pad: 0.3}, internal.Linear{D0: lo, D1: hi, R0: float64(plot.Y + plot.H), R1: float64(plot.Y)} } - spec := chartSpec{n: len(steps)} - spec.readout = func(i int) string { + spec := ChartSpec{Marks: len(steps)} + spec.Readout = func(i int) string { if steps[i].Kind != WaterfallDelta { return steps[i].Label + " · " + val(to[i]) } return steps[i].Label + " · " + signed(steps[i].Value) + " · " + msg(c, "waterfall_chart.running") + " " + val(to[i]) } - spec.pick = func(r ui.Rect, x, y float32) int { + spec.Pick = func(r ui.Rect, x, y float32) int { plot, band, _ := geom(r) if !plot.Contains(x, y) { return -1 } return min(len(steps)-1, int((x-plot.X)/band.Step())) } - spec.draw = func(p *ui.Painter, r ui.Rect, active int) { + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, band, ys := geom(r) internal.AxisY(p, plot, ys, internal.Ticks(lo, hi, step), func(v float64) string { return internal.FormatTick(v, step) }, size, k) var xs []float32 From f047c6b2ba8811a6da1693426df3f168809b8c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 14:57:28 -0400 Subject: [PATCH 3/6] WIP charts2 parts 2 --- chart_brush.go | 19 +-- chart_brush_test.go | 123 ++++++++++++++++++ chart_empty_state_test.go | 61 +++++++++ chart_export_test.go | 73 +++++++++++ pie_chart.go | 5 +- .../snapshots/darwin/chart_brush-dark.png | Bin 0 -> 10462 bytes .../snapshots/darwin/chart_brush-light.png | Bin 0 -> 10240 bytes .../darwin/chart_empty_state-dark.png | Bin 0 -> 9269 bytes .../darwin/chart_empty_state-light.png | Bin 0 -> 9085 bytes .../snapshots/darwin/chart_export-dark.png | Bin 0 -> 15523 bytes .../snapshots/darwin/chart_export-light.png | Bin 0 -> 15096 bytes 11 files changed, 271 insertions(+), 10 deletions(-) create mode 100644 chart_brush_test.go create mode 100644 chart_empty_state_test.go create mode 100644 chart_export_test.go create mode 100644 testdata/snapshots/darwin/chart_brush-dark.png create mode 100644 testdata/snapshots/darwin/chart_brush-light.png create mode 100644 testdata/snapshots/darwin/chart_empty_state-dark.png create mode 100644 testdata/snapshots/darwin/chart_empty_state-light.png create mode 100644 testdata/snapshots/darwin/chart_export-dark.png create mode 100644 testdata/snapshots/darwin/chart_export-light.png diff --git a/chart_brush.go b/chart_brush.go index edaad4f..08070e0 100644 --- a/chart_brush.go +++ b/chart_brush.go @@ -75,20 +75,21 @@ func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) Choice track.Draw(func(p *ui.Painter, r ui.Rect) { brushPaint(p, r, *value, opts, k) }) track.Children(func() { x0, x1 := at(value[0]), at(value[1]) - window := ui.Box(c).Absolute().Left(x0).Top(0).Width(max(x1-x0, 1)).Height(h).Focusable(). - Role(ui.RoleGroup).Label(fmt.Sprintf(msg(c, "chart_brush.window"), opts.Label, val(value[0]), val(value[1]))) - internal.Ring(window, k.Focus, theme.ControlRadius) - ends := [2]*ui.Element{} - for i, x := range []float32{x0, x1} { - end := ui.Box(c).Absolute().Left(x - theme.MinHitSize/2).Top(0).Size(theme.MinHitSize, h).Focusable(). + end := func(i int, x float32) *ui.Element { + e := ui.Box(c).Absolute().Left(x - theme.MinHitSize/2).Top(0).Size(theme.MinHitSize, h).Focusable(). Role(ui.RoleSlider).Label(fmt.Sprintf(msg(c, []string{"chart_brush.start", "chart_brush.end"}[i]), val(value[i]))) - internal.Ring(end, k.Focus, theme.ControlRadius) - end.Draw(func(p *ui.Painter, r ui.Rect) { + internal.Ring(e, k.Focus, theme.ControlRadius) + return e.Draw(func(p *ui.Painter, r ui.Rect) { cx := internal.Snap(p, r.X+r.W/2) p.Fill(ui.Rect{X: cx - 3, Y: r.Y + r.H/2 - 10, W: 6, H: 20}, k.Text, 2) }) - ends[i] = end } + // Tab order runs start, window, end. + ends := [2]*ui.Element{end(0, x0)} + window := ui.Box(c).Absolute().Left(x0 + theme.MinHitSize/2).Top(0).Width(max(x1-x0-theme.MinHitSize, 1)).Height(h).Focusable(). + Role(ui.RoleGroup).Label(fmt.Sprintf(msg(c, "chart_brush.window"), opts.Label, val(value[0]), val(value[1]))) + internal.Ring(window, k.Focus, theme.ControlRadius) + ends[1] = end(1, x1) if res.Element.IsDisabled() { return } diff --git a/chart_brush_test.go b/chart_brush_test.go new file mode 100644 index 0000000..17c9490 --- /dev/null +++ b/chart_brush_test.go @@ -0,0 +1,123 @@ +package mujica + +import ( + "fmt" + "testing" + + "github.com/egoist/mygo/ui" +) + +type brushHarness struct { + value [2]float64 + changes int + disabled bool + el *ui.Element +} + +func (h *brushHarness) view(c *ui.Context) { + Use(c, Settings{Mode: Light}) + ui.Column(c).Padding(10).Width(420).Children(func() { + r := ChartBrush(c, &h.value, ChartBrushOptions{Label: "Months", Min: 0, Max: 100, Step: 1, Disabled: h.disabled}) + h.el = r.Element + if r.Changed() { + h.changes++ + } + }) +} + +func TestChartBrushKeyboard(t *testing.T) { + h := &brushHarness{value: [2]float64{20, 40}} + tt := ui.NewTester(h.view, 460, 200) + tabTo(t, tt, "Months: 20 to 40") + tt.Key(0, ui.KeyRight) + tt.Key(0, ui.KeyRight) + if h.value != [2]float64{22, 42} || h.changes != 2 { + t.Fatalf("window moved to %v (%d)", h.value, h.changes) + } + tt.Key(0, ui.KeyTab) + if !tt.Focused("Range end 42") { + t.Fatal("Tab did not reach the end handle") + } + tt.Key(0, ui.KeyPageUp) + tt.Key(0, ui.KeyEnd) + if h.value != [2]float64{22, 100} { + t.Fatalf("end handle: %v", h.value) + } + tt.Key(ui.Shift, ui.KeyTab) + tt.Key(ui.Shift, ui.KeyTab) + tt.Key(0, ui.KeyEnd) // the start cannot pass the end + if h.value != [2]float64{99, 100} || !tt.HasText("99 – 100") { + t.Fatalf("start to End: %v %q", h.value, tt.Texts()) + } +} + +func TestChartBrushDrag(t *testing.T) { + h := &brushHarness{value: [2]float64{20, 40}} + tt := ui.NewTester(h.view, 460, 200) + b := h.el.Bounds() + x := func(v float32) float32 { return b.X + 400*v/100 } + y := b.Y + 24 + tt.Press(x(30), y) // inside the window + tt.Move(x(40), y) + tt.Move(x(50), y) + tt.Release(x(50), y) + if h.value != [2]float64{40, 60} { + t.Fatalf("window drag: %v", h.value) + } + tt.Press(x(60), y) // the end handle + tt.Move(x(70), y) + tt.Move(x(75), y) + tt.Release(x(75), y) + if h.value != [2]float64{40, 75} { + t.Fatalf("end drag: %v", h.value) + } + tt.Press(x(85), y) // outside: a new range + tt.Move(x(90), y) + tt.Move(x(95), y) + tt.Release(x(95), y) + if h.value != [2]float64{85, 95} { + t.Fatalf("new range: %v", h.value) + } +} + +func TestChartBrushDisabledAndBad(t *testing.T) { + h := &brushHarness{value: [2]float64{20, 40}, disabled: true} + tt := ui.NewTester(h.view, 460, 200) + b := h.el.Bounds() + tt.Press(b.X+120, b.Y+24) + tt.Move(b.X+200, b.Y+24) + tt.Release(b.X+200, b.Y+24) + for range 3 { + tt.Key(0, ui.KeyTab) + tt.Key(0, ui.KeyRight) + } + if h.value != [2]float64{20, 40} || h.changes != 0 { + t.Fatalf("disabled brush moved: %v", h.value) + } + for _, v := range [][2]float64{{50, 40}, {-1, 10}} { + func() { + defer func() { + if recover() == nil { + t.Errorf("%v: no panic", v) + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ChartBrush(c, &v, ChartBrushOptions{Label: "x", Max: 100}) + }, 300, 100) + }() + } +} + +func TestChartBrushSnapshot(t *testing.T) { + vals := make([]float64, 60) + for i := range vals { + vals[i] = float64((i*7)%13) + float64(i)/6 + } + snapshot(t, "chart_brush", 460, 110, func(c *ui.Context) { + v := [2]float64{18, 42} + ui.Column(c).Padding(16).Children(func() { + ChartBrush(c, &v, ChartBrushOptions{Label: "Months", Min: 0, Max: 59, Step: 1, Values: vals, Format: func(f float64) string { return fmt.Sprintf("week %.0f", f) }}) + }) + }) +} diff --git a/chart_empty_state_test.go b/chart_empty_state_test.go new file mode 100644 index 0000000..2a94b95 --- /dev/null +++ b/chart_empty_state_test.go @@ -0,0 +1,61 @@ +package mujica + +import ( + "testing" + + "github.com/egoist/mygo/ui" +) + +func TestChartEmptyStateKeepsSizeAndRetries(t *testing.T) { + status := DataReady + retries, disabled := 0, false + var heights []float32 + var el *ui.Element + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ui.Column(c).Width(400).Disabled(disabled).Children(func() { + r := ChartEmptyState(c, status, ChartEmptyStateOptions{Height: 180, Empty: "No hymns this week", Error: "The choir did not answer"}) + el = r.Element + if r.Changed() { + retries++ + } + }) + }, 440, 300) + heights = append(heights, el.Bounds().H) + if !tt.HasText("No hymns this week") { + t.Fatalf("empty: %q", tt.Texts()) + } + status = DataLoading + tt.Frame() + heights = append(heights, el.Bounds().H) + if !tt.HasText("Loading") { + t.Fatalf("loading: %q", tt.Texts()) + } + status = DataFailed + tt.Frame() + heights = append(heights, el.Bounds().H) + if err := tt.Click("Retry"); err != nil || retries != 1 || !tt.HasText("The choir did not answer") { + t.Fatalf("retry: %v %d", err, retries) + } + if heights[0] != 180 || heights[1] != 180 || heights[2] != 180 { + t.Fatalf("heights %v", heights) + } + disabled = true + tt.Frame() + _ = tt.Click("Retry") + if retries != 1 { + t.Fatal("disabled retry fired") + } +} + +func TestChartEmptyStateSnapshot(t *testing.T) { + snapshot(t, "chart_empty_state", 640, 220, func(c *ui.Context) { + ui.Row(c).Padding(16).Gap(16).Children(func() { + for _, st := range []DataStatus{DataReady, DataLoading, DataFailed} { + ui.Column(c).Width(192).Border(1, Tokens(c).Border).Children(func() { + ChartEmptyState(c, st, ChartEmptyStateOptions{Height: 180}) + }) + } + }) + }) +} diff --git a/chart_export_test.go b/chart_export_test.go new file mode 100644 index 0000000..14eef3f --- /dev/null +++ b/chart_export_test.go @@ -0,0 +1,73 @@ +package mujica + +import ( + "bytes" + "image/color" + "image/png" + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/theme" +) + +func TestChartExportPNGInTheme(t *testing.T) { + for _, mode := range []Mode{Light, Dark} { + var out []byte + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: mode}) + if out != nil { + return + } + b, err := ChartExport(c, func(c *ui.Context) { + BarChart(c, barCats, barSeries(), BarChartOptions{Frame: ChartFrame{Label: "Tithes", Height: 160}}) + }, ChartExportOptions{Width: 300, Height: 220, Scale: 1.5}) + if err != nil { + t.Fatal(err) + } + out = b + }, 100, 100) + img, err := png.Decode(bytes.NewReader(out)) + if err != nil { + t.Fatal(err) + } + if b := img.Bounds(); b.Dx() != 450 || b.Dy() != 330 { + t.Fatalf("%v: size %v", mode, b) + } + k := theme.Light() + if mode == Dark { + k = theme.Dark() + } + if got := color.RGBAModel.Convert(img.At(3, 3)).(color.RGBA); got != toRGBA(k.Surface) { + t.Fatalf("%v: corner %v, want the theme's Surface", mode, got) + } + } +} + +func TestChartExportBad(t *testing.T) { + defer func() { + if recover() == nil { + t.Fatal("no panic for a zero size") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + _, _ = ChartExport(c, func(*ui.Context) {}, ChartExportOptions{}) + }, 100, 100) +} + +func TestChartExportSnapshot(t *testing.T) { + snapshot(t, "chart_export", 340, 300, func(c *ui.Context) { + b, err := ChartExport(c, func(c *ui.Context) { + PieChart(c, pieSlices, PieChartOptions{Frame: ChartFrame{Label: "Stores", Height: 150}, Donut: true, MinAngle: 20}) + }, ChartExportOptions{Width: 300, Height: 260, Scale: 1}) + if err != nil { + t.Fatal(err) + } + bmp, err := ui.DecodeBitmap(b) + if err != nil { + t.Fatal(err) + } + ui.Column(c).Padding(20).Children(func() { ui.Image(c, bmp).Size(300, 260) }) + }) +} diff --git a/pie_chart.go b/pie_chart.go index dba6d1d..ae5b479 100644 --- a/pie_chart.go +++ b/pie_chart.go @@ -105,7 +105,10 @@ func PieChart(c *ui.Context, slices []ChartSlice, opts PieChartOptions) ChartRes mx, my := internal.Polar(cx, cy, (r0+r1)/2+float32(chartBool(r0 == 0))*r1*0.12, (a0+a1)/2) ink := chartInk(k, keys[i].Color) internal.Marker(p, i, mx, my-8, 9, ink) - chartText(p, share(i), mx, my+2, size, ink, 0.5, 0) + // The percent shows where the ring is wide enough to hold it. + if w, _ := p.MeasureText(0, ui.Span{Text: share(i), Size: size}); r1-r0 >= w+6 { + chartText(p, share(i), mx, my+2, size, ink, 0.5, 0) + } } } if opts.Donut { diff --git a/testdata/snapshots/darwin/chart_brush-dark.png b/testdata/snapshots/darwin/chart_brush-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..37a558eb17b00cfe8d6f8891799eb8c725f9e0c2 GIT binary patch literal 10462 zcmdUVRZv{rx-A-915J?N!7aE48h2)`GhEJz0n7Tf{^2+|>FaCd?`1Zmve32vwV zz0banx9-!ebGoZmtu-IMS>O05E$Ie; z|5FzNeG_3pWDe*t%K1~fB-q$ggku;X&?jUctTRylM&U_N8X;x0k2rOte10X1tD`Ct z4!IW}4+p}}YK$;o?o_t;TXgOj?EZ?(C^M7$)qqptby#=b$s=Y3_-r}DXchZExC!A6*#E(9 zhmtGNf+Ant81rbdCJ$meZ9Ivt{vQ)~OmNPWEewi%&6)^s_l}#$w@H!K3CG$rJFo^F zjnj*yA=sMh=F0O9Gzj(IcE`S1vXUt4$dNbPMTG!!BYJ>n(qLtg(*&7(P?N+3dv1L9 znju!$;1Iv*)@^?Bh~&7YUX8vg43y%YKD`|wOW%RE0d+kcr-fTNbYL7AAjpT?}KOLfJ9X|d2ID2IV`CLKFLmpiyH;AdLJFkNk7 zO1(j=3H{-%DiO4P^)?eHzc|J+zZL6X7cRWS4o}kScc)!-ZD1P|&~T%&KkBtiTRfnX%W@2WSS_a z6{;LyASrI1VEVkAVWBXOlY}4AY3m{;EG%AEQ}b|k8$F_iM^THyAqiD{lV>DWA5_v} zTKUyHcQx9tnk%k8&oEPCB2TLbyYY{?=W4nU3sqe_D}*JxS5zWY)LNW+mU7rVy(YPp zuFty1oJcn#f*G4ET15qpA~}{=Y9ajX*px@#_{WRrlJ8Tt?&-hHYnkKG{t3xggeCMU z|N3dY5L%TR=Qq}2>oC>OEc#x}x@3A=*z+9oG~xS}X@EGOS+RFbg3Ph6q0!%w^)l1j3tM#!sOJqh)3d0|H`t7pb{jX}!YPN$_8ia8@dU zyG-W}4eU6c#_A)s;!;Q!wMsipoZr|Ht)e8~f*Cf#?A<-?dxT=(9O{>)RjqahS zbq_Q%6CqSIrt^4_^r>$MFF~1=Agqh}WU8R@pY9`xH-L@qFZw#aaAsS6)$eTFzvAgJ zr-eBs0y7ZB66Cg&y(E$LIneJ4I8vS^R_B7uZeYr*G7rgkQT|1azG#nbhx;!U`hyxV zeWl{7xE>>C4Y~9TWf+PO5zMhpvqR{;6K1e%zE=J~9%wLK)!ZscJ)hMQ6wO&8l`ci> z@i9r0WffHphgqz7iZn7&1N@d^T-iNg!D1A#qCS4Z{gS?}&?l4d{pFgu96 z790B}@ND!b2O{?q z?X8b9tQA1CC{xQF*G4>f6%J}{DG)`9`SQ+tV|6Pp>XU~&Xi=3R&WyGuo8_9~Tv9@> zH7mr5RZfK-FkuUBUP^BZGEK1kV_Ro0P+aT3|LQ}NDqEG9A#r6y-xiV(5sR`G>lPv* z0MT@q<~&~wN{L0%^I%%+;>)+IgV?U7*0my-bRhPvpp?~zE)-X(#K+>KL!sq>_hq`~ z1DH`DWtHW?9dN>Ph4tZL+g91EMw{<8nrplaJ>ck9$zH3t|Kqk(QqR?V(WT`rcihoJ z@wvpBwfWfbYvP1mn!rcOG6=lFh1*O34+gBWxsF{P(o57+JlQfslWy`XGnGIW%$)xC zGZ%Ww_SB=kaaV?iJ0WHwCTGS+NCE>DLCWryo}UHv>45Y^lY9J`OX;Pd83iD$@Y06i zwdC_#aTTw@A3|T1RjNriMYFh)%+g=m`4W!>3$V%Y#-uD{mD_U2yVLL-%92Dyf;$q( z*kIxf#Jm|C>S0s4d&BIud>TrgHf;^a|B^mkYHf9S&CKfP4`4w)Y{$Hy} zeZ?v{#kxR~GDu@&O|<1$ByP*^r-3bBf-LcbT$af)hYQX-Z@m-E671G3hODv|`CDs; zhV()HAIb}h^GeIF1|W?>_>O>!_a|)^812_1C>p=#!n1>^_Z%s6T8f0ea^rpZCOo60 zEUF~wniGPiPKP-4;9yV#v`qdTiFA;*$rbII}+`EVA<2)h($S_be; zN@;;%;JMf3w&&>q6YZO4KI{V|oH5FKStgihAss;lq?}Hl^I)JsJze0k@A)tnbsXgv z>qbL}L3vOA=rIbr@7sVKWBP2u=uk8$6T;ylS;sn4T<5B}pCnNbxvCTpi#~-zwV1`3 z@F^XBq2C)tN2sEZ0#Y9vuS|h1Ybq*ojtdb7FwsaaaqFT1%qCZ+TdGCvD=43DHKAZ8 zC{4IoHmm-$N6>~*es1o4iQlMt=l%SU<9)pBw=sO??;c~w1aB@B&4M>BE(fva|H>Bb z8vVs7u2NIWkFKX1%+7vPrq-bl+%&(0BI#}GLnR%bFfo9hbMhyWtD*tBOx~c?;=K!W ze`NjnSi(mZlPFyKBA@8cW@#C{0Q8!!U*$5>trr)+KTp?O|uYlOiM@3fIi{WhiqBgLwx0ol>?R5AuSK|)0eOL zi_MiSzdet^A7$TdgMb*w-q}Yi^g&fQ6-JVCU-1-WYRnfqWd3_PAifNaT+LVSfXx8? zqgY%1;^{=HoG#g(MB+&O2r_zC6;=qTL613GSg?S?993hp5$&rQ=I9=u2!4AQd%g($ z>?vVnPnQoz-R?E25F@-c;c%ub<^JlJ%ZvwmCH%zGI$F(zM+pZoFH~JCC^X7_)63-C z=C%JSB*EJOK@tF1=%{+~L}+K+oF==k504#HT<-0(*+~(U=Ou5mKF8HsWA#Cx`( zAeXFMvBfX6{b$EstF#IV3%TeyQ2USDGe_wnt$UYKeTpK*ZRK^zBNS~P@q`Jhdn7*| ziPFiYY|T5pXXAPkU4b@)OO(^+WMA6+!B<$@h8c-KtGjLfNALPnW>fS0j~^#bQ|(Xn zhD;K34FnC5yY?YUfpH~nrZdq@rMe(>B<^k&Lgd!wx_Xw8R;p*e2U zgk$RG{`GY5B?%%S%JY4FKF|{mE5kqDhhx$0AKTwQjJ6IJ9;z0|6gaqeHHq_?EMl;4 zj#CbMg_q5sp?LGe znrAJfut`rHH%30Jd$6U3d_^l}}-h{;ib8qY8 zi-tv%Ft09Sn=1WEpkJkkOeWq@8LI%(n^`J*TGF$tqot88*U$33Q}o7&k>FEqqhfWt zEK%aFmabcC@t)MqI-FK<4Ax2fLPjCgI3ZXW_5`PaKJUDHVp#2u&Ts0T;=2x4VE!SQ z<9mTJNM8+X5a4qO{hHRNI;>JeP0g-C)?e> z=wERZl@+Vg5fC_5`B7;~_wMOz_E|0;gcFJ>mw+%XRCv7FnrZP;=o{Bbx?WS~9b1zq zL}^M%b)r~br=|kMiavq68d0c_S}?tJwZ0r*vyXV7-`#Q90$)ev6YXQ3-5=~68i!b< zSRLW4@)Xmb^hLI7Q}1~*8Qd!ycKg_|>dald0;E}MZh~J$5B#wQH+wnDT&yHD&Y}lP zmq@tezIH(yM&MZawbN3IO%eO(z!r#{^Ot{Riabqwei58Ad|06|O?GW#)8-QouBi%^ zg@KwyA?2|qCis?ig9yRm>T~!fvb@I71MGb>x^y3k|F;G)I7S0zW|!w{dh1=kOM2QD zpOPeU>TIQuS_#7g=BLKiT=DDUSs*~xuqTm_svedTWPIlMZv`8H?@#R@zl|3|%u6Vgp4VHXKV2oandULuMmbFk%3}j4+ zII#CFtnE|n-lPy!V@-o?pR;c2Hiz)XsIfy5Tnnmz2Os>pZgG|*xNH~jRzdhKKTevolckp) z>MVUx@cFTpgURD&AI-JY+|`GJ&``v!^rfCf9XRD0@5?7SV%4$5YW>&Ho5vH9cn2i- zgy=#h_Z1!hK8$LNfnS%Ms1%`Wy!GxdE@$ z=m9->m0Md)Tn5$$6?^FhOIhIWROnD?94m`LJ`xtV2scj$u zA+D@wbJlQqPFZB^wXBO#Tl6{l^Hwy=7}RC!;zaR^8Ylc>+uSDt5v?)FnH@2VyEkr# z9bmu=%DfCCF)QM;E%yA9@`6h|;}P5h5Z6MrpN$K2S@iS5#w9nW%MvIzUZt$A1%0sQ z)<62?Y+)B=dX6OPUwJ;UTe*$oRP37;e>+DC0Htnut(c+Q^8Q7&nsOCO@H#qW$%pN=hHp|lIP1p&Jb0uQ6jF;;aVjnrYeSuJyx#hdA z>tL5J-2(UeV`~)`SrT0yUZ?J)jd+SpR{)TJ^?7gd^tR8@bp8PQ7d$)g{(K z-9kSkuYL3e@WmFOZH1~O%O>?0H}U18y7>clre65MRpSfLunh1O1Yc0La*tEnG>j@q z=tnQJbJl%L+NudR#|?n{%7iX70w~?=>9p~(9^k6fI83hU zC>X5_Yr;tt6D$ksHcRUHp~KG3Ueh>2)ELpXfxz^fw8~gM(W+YikNE(ryq7s$6li<< z3pV0N!x~wLC=`)aJQqHTi@In2F`wkCQCMCRa|lSP<%P;sWU+@cJGu1Cqe0rpMzHdfMv?+cig)@iN(neH3z3#xfA|S zI6pDg=7t8BHSc{BgOIG>^&#=8Z%DUAM?%<#h{2&h`X0Zx*yY#@Jw8r_gvaGLbFEl^ zn%c{o{K)~RcAf2xMj3>-7!u@9*$Om!TmGOc=;&96Rfv7#it`R!4u6wr8i^DGNkGg9 zJ>60-1>f|~h$lV}UW7qS0$kK*{5Bh=QpEj(VDnt>wd? z0S2QZ&PZ8v$93x&cYK8GfZonRFE(rl1n9hJ znJ`+p@T>|m_$6kgKYOy3E z!bKgajdSyNe zWIQIE>VnXkp7>}16n8AY*MhRl0M4P^33C!hG*z;Bx2kHJ>)uUzLR@)<3Er||Tgg}< zl%_@F{DET7z{P;roSi+1TAJ9)$lu>O8Hus5=nw&eIRf^Yg|7{A^f_#uyC~udh$q@w z1;UcD5JC)$4QoAG?Kqu-{9c!P1~D-M!lsX3QD+H<3<&(b^Et?s@A}DxCY_pwnsaG5 zQ(Ip^Fg-nUND_^Ps@KnlVAoG;@a$GUuiE<8rSMwORv1#?!v(?e^VYAKK*7L#vsy8E zdFC_1>5~QRL2DCoa^`l@(B1txM%_FknThQZv!S7&Me3-uG)r{H7 zE`K%5%xI&;4im5^y>(Y-_`a}V1c5L;qBE8fX(~CQ85-jYdjON2|KTtoQSiFnMEI8SN^m^ z=jCj{ufslZ0LfM>$Mqj8?a9|tFu16s+l8!m__C>BM(L)Il|Cc!Kf4?F1bW$-G6Ldq z#EYkDh2p-b5oa*CADxfyngpEI*F9LE(g||1gaKx)5&ERjP#w9EDFx2D8I+Q88-`xp zlac(fpOmu^{3XwJo3D9l3*Yn|PJ$e00OiesYAPH?QihEemG|aN4|7UbQejp4Fmd6K z(W<7|{Hd8OZ+bz83+77-IBM@%|m?27FO6xd_rfwo}tg?Ibo zv%Q0t@gTQEq1(YlI?dB2*~G5Al~;n|X8r{k0rgyt$Q3e;j;Dn^g|KcAD`bZ&)j{C? z`WUYFzI(&{vwS&`%V1sfqYP&7=HMAO_9>x&zzjkWCsZn}^O6hxoW@Q(v}QJtj8n-4 zEjqhMHZtW)v34ow^d@$X^T2 z<+5;dw-vv^Y&O#k;L-R*e6K}#Qociz#j;iulMdzGhO-7^#IQPMf_#~4llYAYB?{lV zff;?m%@LeB_fuTn?l&{fk3$~6yWx!s-p6goA8U9ObRKE^Y*3cKmt|*3Md_jiP8m#g z89&rmVK7dsr;t0@BHSp<2+jD^B1}xSyogWO*x2-JRe$MtC8bvFhQ56ILLZ?o%ldlK zSDo*J`ecEU^YWmpg{{lW-F!_mXtTq_H^0VKwb?tXm4Hz=P2iwYaaqYb@3Zr-6Wuvb z!GR_bV9AAWYxUp9TJ*3t$LjmbY%CmFMGnyCjnBp|uHMEN6Wc-G46PJX+B`YVhTki>;%rZ4Las<^U{TLsT*HC3U(tYoPSFAtx+Ao?W)T9#%;` z12>4q?FZ%Cs(4+qmHa$E&m$7Gi2&ZH9SNcgk`4;G5IJwCw~Y4Q0^Cr`xRgfu>qeT+ zC>l3Hq>Df&aOi1u%==RY0^`0w(Sx0hi<|hMx)GufN(##7wrR5xw$O3zG^h>F?uVvX z82hZK_}<#&=U;7NK7UD`_K*Mk&~d0;T-u=cjfxvZu+V(;b-~q%XY}l13j>1`kdiTM zou$ruujR$bw=7_HE= zrLe`sgTcB7&MRa4#nv&pj3j7iuJ$Cwck&8qa7V##6(HOZkS^Qxp-k-hfh9=Gs)@71I0z!c-D5Qy}o#+X-Wl{(9l3* ze;rUvp7K;Ko6;_iuAU=KK01w!YbJTUO9tQK=JV}30;<3N{CzvLy}5a^0Nrga^GlS& zDueCoh8e+?(S)V77ESM&QTQ30#x zAQ`E-dzm?Psk)0T6u%NSy(k^sK_yF2rmlt;rT6UTW_4Db{nS*zJvAp=Sl3SD0oXc6 zUT=B^{i1;_?U>WKE11K%+)E>`rnIXsa|F+I*w%N!aS;n@Fk7!k4_L~L@l&$9rI~g4 zXb4K4uS{9E8zZLqxp7<#;Kq}9CEVx~KA)Y-bzbnG2IvZ-;U^j=5jA0;ol5 z;e>`oBnU=XajA}3eq|Miix?|LJ}Kwd38%)TPjt_`TUMyz^KxRAe2LS<0Zm3A0LcKc z`IR(q#-fC+WTH{|^{ZVP)|5ZfzQ7`^bOe8+eI#x%N1yi0z&qRcnXm|Cy z$Gq@Ao00t7^D7Q`x@Tfgp;7iNG&uzy+u|x-Bkyf)5Te^7hBZz(=eAZ?;4jzO%134 z&@`wq659>;7r2eZihJ#=-c7v3%-yA)6e;4ya6=t=<;BkIauK^k!CA>?F>5y%N>=`y z<$3d))&G-JE?rlO3Ymp9$5BkZ6Y5W>IS?{P0!Xs!ttPZ)604;iut zAbbWw(o9Kd+<`}pMBSG!P{V+gF}aO=AhxY@xgov4hg&^jx81J^N;i8;iX^-uoSwy< z40LE3V1YiPu zXU=nc0=crH>g|gku!LOhk+Ic=R9qz>5KR>~J48S}m1GhX8QbJ@%N96Z zJ;+{i(?VOx5-Oknrnl$n;H3sr5(DEp5>(w+M_}z}lWoEHwUQMDw-?h&fORyIgTjcxEhvpTm>G3^(iTYw%4flHzGIHVh zGcDv_VW|}%HU93cq?m@+)1*}>VGbF8g-K59J4@Qo-4Az(v)gvHO?W2Ih57wX#mbr% z^Er!W^5;bs>@a#gmIEWH&xDB)G7Fn^o|kyAEz&v{tpFJd&zLSRms0DPROv#6&`3W; z2IWEa4^638_4V%_HQPfQ0`|hIFD&7{RSm`ySe0*Y!+J33?0n`f7?OBnvxLtsL>?4G z`0W-i_M4jc$haZ={-ZoF6p5Jy@HS;{VUAng0r z6qBM|OoDz;i3gtdM{08jI!r9q`11WI)4yO1q>|t}jO={8U;kC=CUDW4YUFpSx2vme zoXp>~GRDo$oHk(Dd$kW|pnuRUpDt;6JVJLvwd02jZjxy;weLQpls(fXznWbzuOtDa zt&@4N0O_ekZ995h>V17DT3T8Nfr$4!a=+@w+-~o0TWd|7-3)HCX?UM*-~Go!Oanh& zu@9P1Xsn5@S9$4o*TY>RNLhJHm8dK&&nt+DQPps;2-A2B(^P!WW67q#g4c~(7k#RB|r~T{O(nbT1Ey#9_(#w9!s_L>MglF}K z^U*o#-{1RIA@cC7A*fG1$LcM)3g z0I_|QW>Q$jA%k&J?TlsF@Lx$fGoJdE{FQ ztKcDh=$~58=T?jBWGrr6==s^q%uGn1#tcg`HcYvHXCzxNtn)j&&i;s)_d?F#(e2?? zE5`4<_}T4Y|Lgo(CqO)e128NIdT;W4Ig_Q$91At?H;wKAfgyFi_s$QcV%V+AnqZJJ zopz0AmTqAZd-DFgXwpE2UbZB(^6@C3)pMsygzp{XN-$EkDZ%q#k$WbJ)4F-bI>u`% z^@x4>V*n!8$om4TjHm?!goFfy#Aa1Yzc&8-BiczyL0`iS^g%Srd-~9g!ZE~n3SJ?@ zMEiI%{bm%C1EBp&sDUYygg0Hi@Bjii4I1sw91+a;LhaCyh1s=GeLO**Ag(?rEhQz@ zfK`!$d{6%W=hCQm#rNNZ^?zpw_Z_r2|Diqqi*D{KEUTV{klY+#WK-4a@rdshk(A`r KWy^u4!T$y4C;^TD literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_brush-light.png b/testdata/snapshots/darwin/chart_brush-light.png new file mode 100644 index 0000000000000000000000000000000000000000..b29cac655c4b9558fa85e2fa34abec6e3c49dca4 GIT binary patch literal 10240 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 UE2)TlvkygGSx2c+!7}Q90Ph8tLI3~& literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_empty_state-dark.png b/testdata/snapshots/darwin/chart_empty_state-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..719b5e1380876d728c0a61f64cb258d575c5e977 GIT binary patch literal 9269 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_export-dark.png b/testdata/snapshots/darwin/chart_export-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..617329642b86f9a85ab0a759d7d4e43602384fe6 GIT binary patch literal 15523 zcmc(`bx<3B)IN$9ibJ7Lw0LoMNpXkb?i6>|;837If#O!6Kyil>99pcndvKTF1VZxT z`~GqNyK`sm%zf`nlKt$?ZuXq>Jjb#pai7!`aIwg-kdTmYl@w*QkdTmdUf%4OC@)9e zgs-V1A&EOG$x7+?=bf$x>AYF&#(?1Nq9ZF|65yZ_6u*x^lhPy%d-cm!HbQzt4DvVVwAhQy<|NbNDAp=e=;6A?%gP0$VexZ<@U z7Jd#1g<9Wj$nXw8M#fHUI56qe#tG0+peJ$^=18zG8VD+|7ykhnu!-@%xl@%;7{-Oe zpd%3yOo$SWBb}2|`aqWl-5SHU0}5YP`R)I&O7s700tEI>oA3S@`1jY34ECGt?*{;) zujaxLJGewCQCxW9uB|09&oG&d+@3M(vZ^zCC2i~UpLjHsGew7*hJx0(iP;h~HIqND zS_OmuO3D;{%T}Eo96UhyNtqWOi%nKZGb}7DY>nqV{@iyk&ZVRYE-?`Ef(df++2-b~ z)WcxQNPkX1Q-)Wl`{aU?7T?7wceMUA-Pvxzr6DDL+|sPQXl-@It2j zS*6k*k~V4Ee3~q31#VcjI&~2)SP8DsxjU& zVsiaZ=h*vXmV$oW&^-o*PWLO*J#(BFYBEev#Wn~_-d+T&Vtyq{C$7pRGBn9{B#rFlh#^Wm*_B5 z{#m4oFPg>eS#Jwr_~-0oGZx!NK}1wnW6*k-cI!kS?a+p%f&zc4eNSOd>YxWSmyjqa zT~9IWbnphzZp6Y!$7f%loSyCzi;=}dI}=c8$1HmJK#MR6otc$jc7xKr+{1|U3R+%d ze0)OT8+}m6Z#oB#P2`ZA9fS0Ui2YI9dDJC`rd7 zpBuiEl650?semUZ@|7x*;JEeT;RFdT2}u^@8zMEg#-yEF`oQ7;=>^``wEW8;8}IY^B4PmiG1@5|Z?o*cv`QzI8H?p8rMW z%n%(6y5VzrCY-)qiGd#v!TX-)nIKEIvSg5|$WT_%AkU<2#$rN+K*z^=em-z;aG;Ia z_YXKe(u_}_p^w`2Z2#3cW5=oC(^Io2HhH3H`8r$GidT(tFbV35Xc()elo=r8JUXNKwueb$wdTt79-r77H4got5CWK!($~5u>s??4dAsM(c69^Zw|5Y_qc)QtC*j zP4hA1Qz=zDdM6$9G)<&5Fumh}S@gRpGc|2iCvtdt8i)vg6CGVji)hOkx8)(b`DJSS zDdkB5_2O~K!K+@fJ;Z##pUVYFM<=6IJ0xYEG#4)`(W~S zUgtv(@$sxtpImAf*n^#58Y7+oLs5pF$}2CLJ>Ai;ak4bEH1wPACeEk@wcSUUshAf! z3ip3BxxJ$ORmo$QJz~Qf{_zXJ=-d6bZ++Co&o;cigz|Xk&-pD?$L3ZwZDB_K%8E2J z6v5~QI5=843k|j&bfd!I5K;-korF4`C<)#s&n4%Ky2;bBeY^Gmbd>NZpNQF?N}Rg$ z0#+U^FV~-?6oNs0$vys7;e~C-ozad!#7=Be=GU+G4GpB^aOcy&N=R#a2xc zM((;tDLqk_Rh@a;=vDk1tBKLoT~x9&aRSEA?Ez4D!v6A#fk*yO{(<=sImko%ecFhv zYGHrw5p5;G0V#1MNYm%`I(vdyKx1`v_44g;;J>P01aB~(O+9{Po7G)+oTEIlRx~To zIn>va#rb&?=Z+KU-oT%R1Su#O2{21^guXVE-#vRncQ@8kmL~7k{CdGOaIc8w%#~wY z%k<1l@XE^LR%O`fsY$y@K|z3qerBV0gSqW~NYqrZoTSNthvn9)?fB~l+H*RsXytih zVQ@!jser{13hstG-VbV$jGWxu7xA~KhTRJEot&Hu+xHJxo``Cbf~z?pbz|FV*my>q zl?2%4SygVXKwmyJ?t}v#rwoNfhaN=WW#UKrBcGT$CwN_9ppF4=f{>biX0anJ`S_Ie z@gId~#s}eM`CC&Sd zOcf@le_ljQtQ&zG;Fy(8NYts7f$xW#5X?R%k(?GfwtW&2WcD}|5Ly$HR*UhHB6W^ zp)M?3N|c(JpJPc|uV&{+t=;H-+AyUQW-4&)0*m>B3`N`@bNMAg_9GZ`TTW;~3wf7) zKnJ_)(}b^H%?Zy36l=2TvaTKkPFipuJ{)r~a&ghn5>vNMtc-3)rYFp5K`D)$g58Cq ze>B*Ue^M_sW&6dBpC^i%yTukrC&{cBR0^wQLyVlisTbpq`u6cXr4vBZI4gkwM2Tox zbe?=htZmH97#Zj&mn4!Ma1SCv3Tsk$@M%bBL_PP@k|Uw8Kef4_@c9c8M!Rk(rCZl` zFq<;Suj>s%fuEl~ zki<{yA?r(BYG3>?=)4V7(jawxa=cgQW4pUp4JQbM88kx^@|W@xWM|w(;FWb3lyoWn zu-$gj5KO|l?AFy6pi5V<0WYcQ}XfpN>JJAyIYR*7QP{eR^yrOYsZ3XbHh8|JZN~^uL!uu0-6gmC&U9-=TadX8IB#O|nvqY4nbY zhN{%(IAPk#XK-T1(4~cIwSh}Ne`R4_&$#AnF1mGY6sKm+C`*%V_=)z_D1Gl2`HyG} zTPeE}{kxwwUJa{BFCoriJMOzij8J-lCM2K4k$_<|n-~ws|67}J96+S3#MWYAvl>BE zW=F5awl^Xb;&lxn!V7LBiDZ~YvgD@VSpuz=wVpF6{hWP=hqxrTM1jd!`E|>e@Oe#|eK4dJnV0#)w^p*O7}Z~{G*GUT;8^J! z>`NAiya2`y6YWV~fD*cH;CKCgNHoPxr0uy1_0#4|w@#k2_bv>{kCnJqV#@g0^*FKh z`)o#uh!XWbDuV4Fp#5>dnQ?(J9;e8no~-2^`{f8fo~p{<)wQbvv0;$GjcH$72`F zZDE$A4C?ynda_$@xWw0HfHSC_EGs{1D*=VCt|Qcf-@LfdkO=I4tNepw-(YFDrdJ#_ z-}PJPB$jp)$nwz|#DXVbq<0IM;npkVv7JCh+*0$}-BUee@2tu2D0cE$Mdiri{S^5t zl%iEPj&*p;(>6+pOkipq4L80aNs+U?8i;$pe3mv!Z!F)BA6PE?p`YhJYJeds^bx*! z{?j4xWEg=C6OG)0h1Yw_{XsQU!h$h-XWM}`C*~k?3}GAyDr^TIE@zyf;9@#qgPR`8 zv34Vt4%*r6NpQDtPWWq6_5wrg=PIQrMOhRW65=6(CgrDuUw@^<$!F{ccjr%Puk&f$ zeI&iiYMt%>Ht^Ja?kmC&a-P=|{Z9^a$aS87L!HZIDs;OS^=2t)UX;VHY|7V|$NVZ$2g+&sMf1~(%2j!(7(b@Ot}pjF#=Ny`y7R!ZBoq+L;T!-(-h z1S-rnnueC)$^(3NbWIs8pp(QV-O(ac!TDGmylH<1|csQ&W%<$dz+3UU0uP_Q>Tl(!L5j)==oE?NM zH3H*d94j>Rii=XEwhEN~8xh3=Qy8kVXv|U|dZA_;vWTcKgT#HM?1u;#*ctlb(RdGp zN>|YlH8f}E8j>D89meK0{4t?rR89-2Q^&b#ETsRQHYlD3?YuTjd(Z{Zc~{FmBK3%D zwpp*%1Y3qoiuW)>1Nl-B5a#03<-4Ib*Pz9-)l`w|2Y*;0+KUSqhXHI4atf@Uo=0fj zBJk@HT%BE?nD#{RmcH9qjTEU}VoJd^g5da&Sv*8B$G@P3>lSjCJ`Ka?5g~}VS4Y_| zlps`p zgoae}nFruM;#XRWyJVjJW}{Hn3vgiL{mpz2`m^al^*H!dQ0#4D?!Zb+%{r+9?_;;6 z;axRL(M)9ouda6T5$Jvd|4Uxva}fi9NQT`gHdYnAbSJua5GA!TtB+lQNdQlkk=b

YC-%POhH&muFde4O2m;4-qO?PUDUw-pDbBDBiwF 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/chart_export-light.png b/testdata/snapshots/darwin/chart_export-light.png new file mode 100644 index 0000000000000000000000000000000000000000..1bb86bf50575f11e251d978ad68737ec6c59e5ae GIT binary patch literal 15096 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 Date: Mon, 5 Oct 2026 14:59:20 -0400 Subject: [PATCH 4/6] wip-c2-3 --- density_plot.go | 144 +++++++++++++++++ density_plot_test.go | 89 +++++++++++ messages_charts2.go | 11 +- .../snapshots/darwin/density_plot-dark.png | Bin 0 -> 22659 bytes .../snapshots/darwin/density_plot-light.png | Bin 0 -> 21917 bytes .../snapshots/darwin/violin_plot-dark.png | Bin 0 -> 18828 bytes .../snapshots/darwin/violin_plot-light.png | Bin 0 -> 18215 bytes violin_plot.go | 150 ++++++++++++++++++ violin_plot_test.go | 45 ++++++ 9 files changed, 434 insertions(+), 5 deletions(-) create mode 100644 density_plot.go create mode 100644 density_plot_test.go create mode 100644 testdata/snapshots/darwin/density_plot-dark.png create mode 100644 testdata/snapshots/darwin/density_plot-light.png create mode 100644 testdata/snapshots/darwin/violin_plot-dark.png create mode 100644 testdata/snapshots/darwin/violin_plot-light.png create mode 100644 violin_plot.go create mode 100644 violin_plot_test.go diff --git a/density_plot.go b/density_plot.go new file mode 100644 index 0000000..a62d0ed --- /dev/null +++ b/density_plot.go @@ -0,0 +1,144 @@ +package mujica + +import ( + "fmt" + "math" + + "github.com/egoist/mygo/ui" +) + +// DensityPlotOptions configure a DensityPlot. +type DensityPlotOptions struct { + Frame ChartFrame + // Bandwidth is the Gaussian kernel's width; 0 uses Silverman's rule per group. + Bandwidth float64 + // Points is how many x values the curves are sampled at; 0 means 128. + Points int + Format func(v float64) string +} + +// densitySample is finite values, sorted out of NaN and infinities. +func densitySample(values []float64) []float64 { + var out []float64 + for _, v := range values { + if !math.IsNaN(v) && !math.IsInf(v, 0) { + out = append(out, v) + } + } + return out +} + +// densityBandwidth is Silverman's rule of thumb, or 1 for flat samples. +func densityBandwidth(v []float64) float64 { + n := float64(len(v)) + mean := 0.0 + for _, x := range v { + mean += x + } + mean /= n + sd := 0.0 + for _, x := range v { + sd += (x - mean) * (x - mean) + } + sd = math.Sqrt(sd / max(n-1, 1)) + if sd == 0 { + return 1 + } + return 1.06 * sd * math.Pow(n, -0.2) +} + +// densityKDE estimates the density of v at each x with a Gaussian kernel of width h. +func densityKDE(v []float64, h float64, xs []float64) []float64 { + out := make([]float64, len(xs)) + norm := 1 / (float64(len(v)) * h * math.Sqrt(2*math.Pi)) + for i, x := range xs { + s := 0.0 + for _, p := range v { + u := (x - p) / h + s += math.Exp(-0.5 * u * u) + } + out[i] = s * norm + } + return out +} + +// densityCurves samples every group's density on one x grid, three bandwidths past the data. +func densityCurves(groups []BoxGroup, bandwidth float64, points int) (xs []float64, series []ChartSeries) { + lo, hi := math.Inf(1), math.Inf(-1) + samples := make([][]float64, len(groups)) + widths := make([]float64, len(groups)) + for i, g := range groups { + samples[i] = densitySample(g.Values) + if len(samples[i]) == 0 { + continue + } + widths[i] = bandwidth + if widths[i] == 0 { + widths[i] = densityBandwidth(samples[i]) + } + for _, v := range samples[i] { + lo, hi = min(lo, v-3*widths[i]), max(hi, v+3*widths[i]) + } + } + if math.IsInf(lo, 1) { + return nil, nil + } + xs = make([]float64, points) + for i := range xs { + xs[i] = lo + (hi-lo)*float64(i)/float64(points-1) + } + for i, g := range groups { + ys := make([]float64, points) + if len(samples[i]) > 0 { + ys = densityKDE(samples[i], widths[i], xs) + } + series = append(series, ChartSeries{Name: g.Name, Values: ys}) + } + return xs, series +} + +// DensityPlot draws each group's kernel density curve over one shared axis. +func DensityPlot(c *ui.Context, groups []BoxGroup, opts DensityPlotOptions) ChartResult { + if opts.Bandwidth < 0 || opts.Points < 0 || opts.Points == 1 { + panic("mujica: DensityPlot needs Bandwidth ≥ 0 and Points of 0 or 2 or more") + } + points := opts.Points + if points == 0 { + points = 128 + } + ch := newChart(c, opts.Frame) + ids := "" + for _, g := range groups { + ids += g.Name + chartID(g.Values) + ";" + } + type curves struct { + xs []float64 + series []ChartSeries + } + cv := chartMemo(ch, "kde", fmt.Sprint(ids, opts.Bandwidth, points), func() curves { + xs, s := densityCurves(groups, opts.Bandwidth, points) + return curves{xs, s} + }) + n := len(cv.xs) + series := cv.series + if n == 0 { + series = nil + } + tops, bases := make([][]float64, len(series)), make([][]float64, len(series)) + for i, s := range series { + tops[i], bases[i] = s.Values, make([]float64, n) + } + var ax chartX + if n > 0 { + ax = chartMemo(ch, "x", ids+fmt.Sprint(opts.Bandwidth, points), func() chartX { return newChartX(n, cv.xs, nil) }) + } + lo, hi, ok := chartYRange(ch, series, true, nil) + if !ok { + n = 0 + } + format := opts.Format + if format == nil { + format = func(v float64) string { return fmt.Sprintf("%.3g", v) } + } + return chartLines(ch, chartLineData{series: series, tops: tops, bases: bases, ax: ax, lo: lo, hi: hi, n: n, format: format}) +} diff --git a/density_plot_test.go b/density_plot_test.go new file mode 100644 index 0000000..3cfee28 --- /dev/null +++ b/density_plot_test.go @@ -0,0 +1,89 @@ +package mujica + +import ( + "math" + "strings" + "testing" + + "github.com/egoist/mygo/ui" +) + +func densityGroups() []BoxGroup { + a, b := make([]float64, 200), make([]float64, 200) + for i := range a { + u := float64(i)/200 - 0.5 + a[i] = 40 + 30*u*math.Abs(u) + b[i] = 60 + 12*math.Sin(float64(i)) + } + return []BoxGroup{{Name: "Matins", Values: a}, {Name: "Vespers", Values: b}} +} + +func TestDensityKDEIntegratesToOne(t *testing.T) { + v := []float64{1, 2, 2, 3, 7} + xs := make([]float64, 2001) + for i := range xs { + xs[i] = -10 + 30*float64(i)/2000 + } + d := densityKDE(v, densityBandwidth(v), xs) + sum := 0.0 + for _, y := range d { + sum += y * 30 / 2000 + } + if math.Abs(sum-1) > 0.01 { + t.Fatalf("density integrates to %v", sum) + } + if bw := densityBandwidth([]float64{4, 4}); bw != 1 { + t.Fatalf("flat bandwidth %v", bw) + } +} + +func TestDensityPlotReadoutAndBandwidth(t *testing.T) { + bw := 0.0 + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return DensityPlot(c, densityGroups(), DensityPlotOptions{Frame: ChartFrame{Label: "Ages"}, Bandwidth: bw, Points: 64}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Ages") + tt.Key(0, ui.KeyRight) + for range 31 { + tt.Key(0, ui.KeyRight) + } + first := chartReadout(tt) + if !strings.Contains(first, "Matins ") || !strings.Contains(first, "Vespers ") { + t.Fatalf("readout %q", first) + } + bw = 1 + tt.Frame() + if chartReadout(tt) == first { + t.Fatal("bandwidth did not change the curve") + } + if err := tt.Click("Vespers"); err != nil || strings.Contains(chartReadout(tt), "Vespers") { + t.Fatalf("legend did not hide a group: %q", chartReadout(tt)) + } +} + +func TestDensityPlotBadAndEmpty(t *testing.T) { + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return DensityPlot(c, []BoxGroup{{Name: "a", Values: []float64{math.NaN()}}}, DensityPlotOptions{Frame: ChartFrame{Label: "Ages"}}) + }} + if tt := ui.NewTester(h.view, 520, 420); !tt.HasText("No data") { + t.Fatal("NaN sample is not empty") + } + defer func() { + if recover() == nil { + t.Fatal("no panic for Points 1") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + DensityPlot(c, densityGroups(), DensityPlotOptions{Frame: ChartFrame{Label: "x"}, Points: 1}) + }, 300, 300) +} + +func TestDensityPlotSnapshot(t *testing.T) { + snapshot(t, "density_plot", 520, 340, func(c *ui.Context) { + ui.Column(c).Padding(16).Children(func() { + DensityPlot(c, densityGroups(), DensityPlotOptions{Frame: ChartFrame{Label: "Ages"}}) + }) + }) +} diff --git a/messages_charts2.go b/messages_charts2.go index 35545ad..aa8fced 100644 --- a/messages_charts2.go +++ b/messages_charts2.go @@ -2,10 +2,11 @@ package mujica func init() { addMessages(map[string][2]string{ - "chart_legend.more": {"+%d more", "另有 %d 项"}, - "chart_legend.fewer": {"Show fewer", "收起"}, - "chart_brush.window": {"%s: %s to %s", "%s:%s 至 %s"}, - "chart_brush.start": {"Range start %s", "区间起点 %s"}, - "chart_brush.end": {"Range end %s", "区间终点 %s"}, + "chart_legend.more": {"+%d more", "另有 %d 项"}, + "chart_legend.fewer": {"Show fewer", "收起"}, + "chart_brush.window": {"%s: %s to %s", "%s:%s 至 %s"}, + "chart_brush.start": {"Range start %s", "区间起点 %s"}, + "chart_brush.end": {"Range end %s", "区间终点 %s"}, + "violin_plot.readout": {"%s · median %s · quartiles %s–%s · %d values", "%s · 中位数 %s · 四分位 %s–%s · %d 个值"}, }) } diff --git a/testdata/snapshots/darwin/density_plot-dark.png b/testdata/snapshots/darwin/density_plot-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cb242f57d91e976eca71839debcc1afa4793b0 GIT binary patch literal 22659 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/density_plot-light.png b/testdata/snapshots/darwin/density_plot-light.png new file mode 100644 index 0000000000000000000000000000000000000000..9059fc0df15ff4016d067f3fd054ccdecd1ab870 GIT binary patch literal 21917 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/violin_plot-dark.png b/testdata/snapshots/darwin/violin_plot-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e271f5212baf09441ce189c792f48cae2828f1ed GIT binary patch literal 18828 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 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/violin_plot-light.png b/testdata/snapshots/darwin/violin_plot-light.png new file mode 100644 index 0000000000000000000000000000000000000000..c68f1b2d09667eb73ec4fc0b57cae9423834c609 GIT binary patch literal 18215 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 Q>;P#A1@Wr?H>ZRq0L%vcwEzGB literal 0 HcmV?d00001 diff --git a/violin_plot.go b/violin_plot.go new file mode 100644 index 0000000..00323fc --- /dev/null +++ b/violin_plot.go @@ -0,0 +1,150 @@ +package mujica + +import ( + "fmt" + "math" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ViolinPlotOptions configure a ViolinPlot. +type ViolinPlotOptions struct { + Frame ChartFrame + // Bandwidth is the kernel width; 0 uses Silverman's rule per group. + Bandwidth float64 + Format func(v float64) string +} + +// violinShape is one group's density outline over its value range, and its quartiles. +type violinShape struct { + ys, dens []float64 + stats boxStats +} + +// violinPoints is how many values each outline is sampled at. +const violinPoints = 64 + +// ViolinPlot mirrors each group's density around its middle, with the median and quartiles marked. +func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartResult { + if opts.Bandwidth < 0 { + panic("mujica: ViolinPlot Bandwidth must be ≥ 0") + } + ch := newChart(c, opts.Frame) + k := Tokens(c) + pal := internal.Palette(k) + size := FontSize(c, theme.CaptionSize) + ids := "" + for _, g := range groups { + if g.Name == "" { + panic("mujica: ViolinPlot groups need names") + } + ids += chartID(g.Values) + ";" + } + shapes := chartMemo(ch, "violins", fmt.Sprint(ids, opts.Bandwidth), func() []violinShape { + out := make([]violinShape, len(groups)) + for i, g := range groups { + v := densitySample(g.Values) + if len(v) == 0 { + continue + } + h := opts.Bandwidth + if h == 0 { + h = densityBandwidth(v) + } + s := boxSummary(v) + lo, hi := s.lo, s.hi + for _, o := range s.outliers { + lo, hi = min(lo, o), max(hi, o) + } + ys := make([]float64, violinPoints) + for j := range ys { + ys[j] = lo + (hi-lo)*float64(j)/float64(violinPoints-1) + } + out[i] = violinShape{ys: ys, dens: densityKDE(v, h, ys), stats: s} + } + return out + }) + lo, hi := math.Inf(1), math.Inf(-1) + for _, s := range shapes { + if s.stats.n > 0 { + lo, hi = min(lo, s.ys[0]), max(hi, s.ys[len(s.ys)-1]) + } + } + var step float64 + n := len(groups) + if math.IsInf(lo, 1) { + n = 0 + } else { + lo, hi, step = internal.Nice(lo, hi, 4) + } + val := func(v float64) string { return chartValue(c, v, opts.Format) } + geom := func(r ui.Rect) (ui.Rect, internal.Band, internal.Linear) { + plot := chartInset(r, 52, 26) + return plot, internal.Band{N: len(groups), R0: plot.X, R1: plot.X + plot.W, Pad: 0.15}, + internal.Linear{D0: lo, D1: hi, R0: float64(plot.Y + plot.H), R1: float64(plot.Y)} + } + spec := ChartSpec{Marks: n} + spec.Readout = func(i int) string { + s := shapes[i].stats + if s.n == 0 { + return groups[i].Name + " · " + msg(c, "chart.missing") + } + return fmt.Sprintf(msg(c, "violin_plot.readout"), groups[i].Name, val(s.median), val(s.q1), val(s.q3), s.n) + } + spec.Pick = func(r ui.Rect, x, y float32) int { + plot, band, _ := geom(r) + if !plot.Contains(x, y) { + return -1 + } + return min(len(groups)-1, int((x-plot.X)/band.Step())) + } + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { + plot, band, ys := geom(r) + internal.AxisY(p, plot, ys, internal.Ticks(lo, hi, step), func(v float64) string { return internal.FormatTick(v, step) }, size, k) + var xs []float32 + var names []string + for i, g := range groups { + xs, names = append(xs, band.Center(i)), append(names, g.Name) + } + internal.AxisX(p, plot, xs, names, size, k) + for i, s := range shapes { + if s.stats.n == 0 { + continue + } + // Each violin fills its band at its own widest point. + cx, half, top := band.Center(i), band.Width()/2, 0.0 + for _, d := range s.dens { + top = max(top, d) + } + var outline ui.Path + for j, y := range s.ys { + x := cx + half*float32(s.dens[j]/top) + if j == 0 { + outline.MoveTo(x, ys.Map(y)) + } else { + outline.LineTo(x, ys.Map(y)) + } + } + for j := len(s.ys) - 1; j >= 0; j-- { + outline.LineTo(cx-half*float32(s.dens[j]/top), ys.Map(s.ys[j])) + } + outline.Close() + col := pal[i%len(pal)] + p.FillPath(&outline, col.Alpha(0.22)) + w := float32(1.5) + if i == active { + w = 3 + } + p.StrokePath(&outline, w, col) + // The quartile bar and a diamond at the median read without color. + p.Fill(ui.Rect{X: cx - 3, Y: ys.Map(s.stats.q3), W: 6, H: max(ys.Map(s.stats.q1)-ys.Map(s.stats.q3), 1)}, k.Text, 1) + p.FillPath(internal.Diamond(internal.Snap(p, cx), internal.Snap(p, ys.Map(s.stats.median)), 10), k.Surface) + p.FillPath(internal.Diamond(internal.Snap(p, cx), internal.Snap(p, ys.Map(s.stats.median)), 7), k.Text) + } + } + res, _ := ch.build(spec) + return res +} diff --git a/violin_plot_test.go b/violin_plot_test.go new file mode 100644 index 0000000..3b8a573 --- /dev/null +++ b/violin_plot_test.go @@ -0,0 +1,45 @@ +package mujica + +import ( + "testing" + + "github.com/egoist/mygo/ui" +) + +func TestViolinPlotReadout(t *testing.T) { + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ViolinPlot(c, append(densityGroups(), boxGroups[0]), ViolinPlotOptions{Frame: ChartFrame{Label: "Hymns"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Hymns") + tt.Key(0, ui.KeyEnd) + if got := chartReadout(tt); got != "Choir · median 5.5 · quartiles 3.25–7.75 · 10 values" { + t.Fatalf("readout %q", got) + } + tt.Key(0, ui.KeyEscape) + b := h.res.Element.Bounds() + tt.Move(b.X+52+(b.W-64)/6, b.Y+120) + if h.res.Point != 0 { + t.Fatalf("hover %d", h.res.Point) + } +} + +func TestViolinPlotBad(t *testing.T) { + defer func() { + if recover() == nil { + t.Fatal("no panic for an unnamed group") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ViolinPlot(c, []BoxGroup{{Values: []float64{1}}}, ViolinPlotOptions{Frame: ChartFrame{Label: "x"}}) + }, 300, 300) +} + +func TestViolinPlotSnapshot(t *testing.T) { + snapshot(t, "violin_plot", 520, 320, func(c *ui.Context) { + ui.Column(c).Padding(16).Children(func() { + ViolinPlot(c, densityGroups(), ViolinPlotOptions{Frame: ChartFrame{Label: "Hymns"}}) + }) + }) +} From 5ead43911d0c369d6fbc250a4445d3a7937dcd7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 15:01:34 -0400 Subject: [PATCH 5/6] wip-c2-4 --- chord_diagram.go | 159 ++++++++++++++ chord_diagram_test.go | 72 +++++++ messages_charts2.go | 15 +- parallel_coordinates.go | 196 ++++++++++++++++++ parallel_coordinates_test.go | 84 ++++++++ .../snapshots/darwin/chord_diagram-dark.png | Bin 0 -> 29370 bytes .../snapshots/darwin/chord_diagram-light.png | Bin 0 -> 28520 bytes .../darwin/parallel_coordinates-dark.png | Bin 0 -> 13584 bytes .../darwin/parallel_coordinates-light.png | Bin 0 -> 13165 bytes 9 files changed, 520 insertions(+), 6 deletions(-) create mode 100644 chord_diagram.go create mode 100644 chord_diagram_test.go create mode 100644 parallel_coordinates.go create mode 100644 parallel_coordinates_test.go create mode 100644 testdata/snapshots/darwin/chord_diagram-dark.png create mode 100644 testdata/snapshots/darwin/chord_diagram-light.png create mode 100644 testdata/snapshots/darwin/parallel_coordinates-dark.png create mode 100644 testdata/snapshots/darwin/parallel_coordinates-light.png diff --git a/chord_diagram.go b/chord_diagram.go new file mode 100644 index 0000000..b6979b7 --- /dev/null +++ b/chord_diagram.go @@ -0,0 +1,159 @@ +package mujica + +import ( + "math" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ChordDiagramOptions configure a ChordDiagram. +type ChordDiagramOptions struct { + Frame ChartFrame + Format func(v float64) string +} + +// chordLayout is each group's arc and each pair's chord ends, as angles. +type chordLayout struct { + arcs [][2]float64 + sub [][][2]float64 + pairs [][2]int + total float64 +} + +// chordGap is the angle left between group arcs. +const chordGap = 0.04 + +func chordPlace(matrix [][]float64) chordLayout { + n := len(matrix) + l := chordLayout{arcs: make([][2]float64, n), sub: make([][][2]float64, n)} + sums := make([]float64, n) + for i, row := range matrix { + if len(row) != n { + panic("mujica: ChordDiagram matrix must be square") + } + for j, v := range row { + if v < 0 || math.IsNaN(v) || math.IsInf(v, 0) { + panic("mujica: ChordDiagram values must be finite and ≥ 0") + } + sums[i] += v + if j > i && v+matrix[j][i] > 0 { + l.pairs = append(l.pairs, [2]int{i, j}) + } + } + l.total += sums[i] + } + if l.total == 0 { + return l + } + span := 2*math.Pi - chordGap*float64(n) + a := 0.0 + for i := range n { + l.arcs[i] = [2]float64{a, a + span*sums[i]/l.total} + l.sub[i] = make([][2]float64, n) + at := a + for j := range n { + w := span * matrix[i][j] / l.total + l.sub[i][j] = [2]float64{at, at + w} + at += w + } + a = l.arcs[i][1] + chordGap + } + return l +} + +// ChordDiagram joins group arcs by chords; reading a group highlights them. +func ChordDiagram(c *ui.Context, names []string, matrix [][]float64, opts ChordDiagramOptions) ChartResult { + if len(names) != len(matrix) { + panic("mujica: ChordDiagram needs a name per matrix row") + } + ch := newChart(c, opts.Frame) + l := chartMemo(ch, "chords", chartID(matrix), func() chordLayout { return chordPlace(matrix) }) + k := Tokens(c) + pal := internal.Palette(k) + size := FontSize(c, theme.CaptionSize) + val := func(v float64) string { return chartValue(c, v, opts.Format) } + n := len(names) + len(l.pairs) + if l.total == 0 { + n = 0 + } + geom := func(r ui.Rect) (cx, cy, rad float32) { + return r.X + r.W/2, r.Y + r.H/2, min(r.W, r.H)/2 - 30 + } + spec := ChartSpec{Marks: n} + spec.Readout = func(i int) string { + if i < len(names) { + out, in := 0.0, 0.0 + for j := range names { + out += matrix[i][j] + in += matrix[j][i] + } + return names[i] + " · " + msg(c, "chord_diagram.out") + " " + val(out) + " · " + msg(c, "chord_diagram.in") + " " + val(in) + } + p := l.pairs[i-len(names)] + return names[p[0]] + " → " + names[p[1]] + " " + val(matrix[p[0]][p[1]]) + " · " + names[p[1]] + " → " + names[p[0]] + " " + val(matrix[p[1]][p[0]]) + } + spec.Pick = func(r ui.Rect, x, y float32) int { + cx, cy, rad := geom(r) + d := float32(math.Hypot(float64(x-cx), float64(y-cy))) + a := math.Atan2(float64(x-cx), float64(cy-y)) + if a < 0 { + a += 2 * math.Pi + } + if d >= rad-2 && d <= rad+14 { + for i, arc := range l.arcs { + if a >= arc[0] && a < arc[1] { + return i + } + } + } + return -1 + } + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { + cx, cy, rad := geom(r) + lit := func(pair [2]int) bool { + switch { + case active < 0: + return true + case active < len(names): + return pair[0] == active || pair[1] == active + } + return l.pairs[active-len(names)] == pair + } + for pi, pair := range l.pairs { + i, j := pair[0], pair[1] + s, t := l.sub[i][j], l.sub[j][i] + var path ui.Path + internal.Arc(&path, cx, cy, rad, s[0], s[1], true) + tx, ty := internal.Polar(cx, cy, rad, t[0]) + path.QuadTo(cx, cy, tx, ty) + internal.Arc(&path, cx, cy, rad, t[0], t[1], false) + sx, sy := internal.Polar(cx, cy, rad, s[0]) + path.QuadTo(cx, cy, sx, sy).Close() + alpha := float32(0.45) + if !lit(pair) { + alpha = 0.08 + } + p.FillPath(&path, pal[i%len(pal)].Alpha(alpha)) + if active == len(names)+pi { + p.StrokePath(&path, 1.5, k.Text) + } + } + for i, arc := range l.arcs { + grow := float32(0) + if i == active { + grow = 4 + } + p.FillPath(internal.Sector(cx, cy, rad+2, rad+12+grow, arc[0], arc[1]), pal[i%len(pal)]) + if arc[1]-arc[0] > 0.15 { + lx, ly := internal.Polar(cx, cy, rad+20, (arc[0]+arc[1])/2) + ax := 0.5 - 0.5*float32(math.Sin((arc[0]+arc[1])/2)) + chartText(p, names[i], lx, ly, size, k.Text, ax, 0.5+0.5*float32(math.Cos((arc[0]+arc[1])/2))) + } + } + } + res, _ := ch.build(spec) + return res +} diff --git a/chord_diagram_test.go b/chord_diagram_test.go new file mode 100644 index 0000000..e513e1d --- /dev/null +++ b/chord_diagram_test.go @@ -0,0 +1,72 @@ +package mujica + +import ( + "math" + "testing" + + "github.com/egoist/mygo/ui" +) + +var chordNames = []string{"Nave", "Choir", "Crypt", "Cloister"} +var chordMatrix = [][]float64{{0, 5, 2, 3}, {4, 0, 1, 0}, {1, 2, 0, 6}, {2, 0, 3, 0}} + +func TestChordPlace(t *testing.T) { + l := chordPlace(chordMatrix) + if l.total != 29 || len(l.pairs) != 5 { + t.Fatalf("total %v pairs %v", l.total, l.pairs) + } + span := 2*math.Pi - 4*chordGap + if got := l.arcs[0][1] - l.arcs[0][0]; math.Abs(got-span*10/29) > 1e-9 { + t.Fatalf("Nave arc %v", got) + } + if l.sub[0][1][1]-l.sub[0][1][0] <= 0 || l.sub[1][3][1] != l.sub[1][3][0] { + t.Fatal("sub-arcs not sized by the matrix") + } +} + +func TestChordDiagramReadout(t *testing.T) { + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ChordDiagram(c, chordNames, chordMatrix, ChordDiagramOptions{Frame: ChartFrame{Label: "Paths"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Paths") + tt.Key(0, ui.KeyRight) + if got := chartReadout(tt); got != "Nave · out 10 · in 7" { + t.Fatalf("group %q", got) + } + tt.Key(0, ui.KeyEnd) + if got := chartReadout(tt); got != "Crypt → Cloister 6 · Cloister → Crypt 3" { + t.Fatalf("chord %q", got) + } + tt.Key(0, ui.KeyEscape) + b := h.res.Element.Bounds() + cx, cy, rad := b.X+b.W/2, b.Y+120, float32(240)/2-30 + tt.Move(cx+(rad+6)*0.5, cy-(rad+6)*0.866) // 30°: inside the first arc + if h.res.Point != 0 { + t.Fatalf("hover %d", h.res.Point) + } +} + +func TestChordDiagramBad(t *testing.T) { + for name, m := range map[string][][]float64{"ragged": {{1, 2}, {1}}, "negative": {{0, -1}, {1, 0}}} { + func() { + defer func() { + if recover() == nil { + t.Errorf("%s: no panic", name) + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ChordDiagram(c, []string{"a", "b"}, m, ChordDiagramOptions{Frame: ChartFrame{Label: "x"}}) + }, 300, 300) + }() + } +} + +func TestChordDiagramSnapshot(t *testing.T) { + snapshot(t, "chord_diagram", 520, 340, func(c *ui.Context) { + ui.Column(c).Padding(16).Children(func() { + ChordDiagram(c, chordNames, chordMatrix, ChordDiagramOptions{Frame: ChartFrame{Label: "Paths"}}) + }) + }) +} diff --git a/messages_charts2.go b/messages_charts2.go index aa8fced..bc2e4d9 100644 --- a/messages_charts2.go +++ b/messages_charts2.go @@ -2,11 +2,14 @@ package mujica func init() { addMessages(map[string][2]string{ - "chart_legend.more": {"+%d more", "另有 %d 项"}, - "chart_legend.fewer": {"Show fewer", "收起"}, - "chart_brush.window": {"%s: %s to %s", "%s:%s 至 %s"}, - "chart_brush.start": {"Range start %s", "区间起点 %s"}, - "chart_brush.end": {"Range end %s", "区间终点 %s"}, - "violin_plot.readout": {"%s · median %s · quartiles %s–%s · %d values", "%s · 中位数 %s · 四分位 %s–%s · %d 个值"}, + "chart_legend.more": {"+%d more", "另有 %d 项"}, + "chart_legend.fewer": {"Show fewer", "收起"}, + "chart_brush.window": {"%s: %s to %s", "%s:%s 至 %s"}, + "chart_brush.start": {"Range start %s", "区间起点 %s"}, + "chart_brush.end": {"Range end %s", "区间终点 %s"}, + "violin_plot.readout": {"%s · median %s · quartiles %s–%s · %d values", "%s · 中位数 %s · 四分位 %s–%s · %d 个值"}, + "parallel_coordinates.filtered": {"filtered out", "已筛除"}, + "chord_diagram.out": {"out", "流出"}, + "chord_diagram.in": {"in", "流入"}, }) } diff --git a/parallel_coordinates.go b/parallel_coordinates.go new file mode 100644 index 0000000..6381b05 --- /dev/null +++ b/parallel_coordinates.go @@ -0,0 +1,196 @@ +package mujica + +import ( + "log/slog" + "maps" + "math" + "strings" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +// ParallelCoordinatesOptions configure a ParallelCoordinates chart. +type ParallelCoordinatesOptions struct { + Frame ChartFrame + // Names labels each row in the readout; nil uses the row number. + Names []string + Format func(v float64) string +} + +// pcDrag is a brush being dragged on one axis. +type pcDrag struct { + axis int + y0, y1 float32 +} + +// ParallelCoordinates draws rows across parallel axes; dragging an axis filters. +func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []string, rows [][]float64, opts ParallelCoordinatesOptions) ChartResult { + if filters == nil || len(axes) < 2 || opts.Names != nil && len(opts.Names) != len(rows) { + panic("mujica: ParallelCoordinates needs filters, two or more axes and a name per row") + } + for _, r := range rows { + if len(r) != len(axes) { + panic("mujica: ParallelCoordinates rows need one value per axis") + } + } + ch := newChart(c, opts.Frame) + k := Tokens(c) + size := FontSize(c, theme.CaptionSize) + ink := internal.Palette(k)[0] + type scales struct{ lo, hi []float64 } + sc := chartMemo(ch, "scales", chartID(rows), func() scales { + s := scales{lo: make([]float64, len(axes)), hi: make([]float64, len(axes))} + for a := range axes { + lo, hi := math.Inf(1), math.Inf(-1) + for _, r := range rows { + if !math.IsNaN(r[a]) { + lo, hi = min(lo, r[a]), max(hi, r[a]) + } + } + if math.IsInf(lo, 1) { + lo, hi = 0, 1 + } + s.lo[a], s.hi[a], _ = internal.Nice(lo, hi, 4) + } + return s + }) + keep := func(r []float64) bool { + for a, name := range axes { + if f, ok := (*filters)[name]; ok && (math.IsNaN(r[a]) || r[a] < f[0] || r[a] > f[1]) { + return false + } + } + return true + } + geom := func(r ui.Rect) (ui.Rect, func(a int) float32, func(a int, v float64) float32) { + plot := ui.Rect{X: r.X + 36, Y: r.Y + 24, W: r.W - 72, H: r.H - 32} + ax := func(a int) float32 { return plot.X + plot.W*float32(a)/float32(len(axes)-1) } + y := func(a int, v float64) float32 { + return plot.Y + plot.H*float32(1-(v-sc.lo[a])/(sc.hi[a]-sc.lo[a])) + } + return plot, ax, y + } + name := func(i int) string { + if opts.Names != nil { + return opts.Names[i] + } + return "#" + chartValue(c, float64(i+1), nil) + } + spec := ChartSpec{Marks: len(rows)} + spec.Readout = func(i int) string { + parts := []string{name(i)} + for a, n := range axes { + parts = append(parts, n+" "+chartValue(c, rows[i][a], opts.Format)) + } + if !keep(rows[i]) { + parts = append(parts, msg(c, "parallel_coordinates.filtered")) + } + return strings.Join(parts, " · ") + } + spec.Pick = func(r ui.Rect, x, y float32) int { + _, ax, ys := geom(r) + best, dist := -1, float32(8) + for i, row := range rows { + for a := 0; a+1 < len(axes); a++ { + x0, x1 := ax(a), ax(a+1) + if x < x0 || x > x1 || math.IsNaN(row[a]) || math.IsNaN(row[a+1]) { + continue + } + t := (x - x0) / (x1 - x0) + if d := abs32(ys(a, row[a]) + t*(ys(a+1, row[a+1])-ys(a, row[a])) - y); d < dist { + best, dist = i, d + } + } + } + return best + } + drag := ui.Local(ch.res.Element, "mujica.pc.drag", func() pcDrag { return pcDrag{axis: -1} }) + spec.Input = func(plot *ui.Element, r ui.Rect) { + box, ax, _ := geom(r) + px, py, _ := plot.PointerPosition() + _, _, held := plot.Dragged() + switch { + case held && drag.axis < 0: + for a := range axes { + if abs32(px-ax(a)) <= 12 { + *drag = pcDrag{axis: a, y0: py, y1: py} + } + } + case held: + drag.y1 = max(box.Y, min(box.Y+box.H, py)) + case drag.axis >= 0: + a := drag.axis + m := maps.Clone(*filters) + if m == nil { + m = map[string][2]float64{} + } + if abs32(drag.y1-drag.y0) < 4 { + delete(m, axes[a]) + } else { + v := func(y float32) float64 { + return sc.lo[a] + float64((box.Y+box.H-y)/box.H)*(sc.hi[a]-sc.lo[a]) + } + m[axes[a]] = [2]float64{min(v(drag.y0), v(drag.y1)), max(v(drag.y0), v(drag.y1))} + } + *filters, ch.res.value = m, true + *drag = pcDrag{axis: -1} + slog.Debug("mujica: parallel_coordinates brush", "axis", axes[a], "filters", len(m)) + } + } + shownDrag := *drag + spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { + plot, ax, ys := geom(r) + line := func(row []float64, w float32, col ui.Color) { + var path ui.Path + started := false + for a := range axes { + if math.IsNaN(row[a]) { + started = false + continue + } + x, y := ax(a), ys(a, row[a]) + if started { + path.LineTo(x, y) + } else { + path.MoveTo(x, y) + } + started = true + } + p.StrokePath(&path, w, col) + } + for _, row := range rows { + if !keep(row) { + line(row, 1, k.Border) + } + } + for _, row := range rows { + if keep(row) { + line(row, 1.25, ink.Alpha(0.6)) + } + } + if active >= 0 { + line(rows[active], 3, k.Text) + } + for a, n := range axes { + x := internal.Snap(p, ax(a)) + p.Line(x, plot.Y, x, plot.Y+plot.H, 1.5, k.ControlBorder) + if f, ok := (*filters)[n]; ok { + y0, y1 := max(plot.Y, ys(a, f[1])), min(plot.Y+plot.H, ys(a, f[0])) + p.Fill(ui.Rect{X: x - 6, Y: y0, W: 12, H: max(y1-y0, 1)}, k.Selection, 2) + p.Stroke(ui.Rect{X: x - 6, Y: y0, W: 12, H: max(y1-y0, 1)}, k.AccentText, 2, 1.5) + } + chartText(p, n, x, plot.Y-8, size, k.Text, 0.5, 1) + chartText(p, internal.FormatTick(sc.hi[a], (sc.hi[a]-sc.lo[a])/4), x+10, plot.Y, size, k.TextMuted, 0, 0) + chartText(p, internal.FormatTick(sc.lo[a], (sc.hi[a]-sc.lo[a])/4), x+10, plot.Y+plot.H, size, k.TextMuted, 0, 1) + } + if shownDrag.axis >= 0 { + x := ax(shownDrag.axis) + p.Stroke(ui.Rect{X: x - 6, Y: min(shownDrag.y0, shownDrag.y1), W: 12, H: abs32(shownDrag.y1 - shownDrag.y0)}, k.AccentText, 2, 1.5) + } + } + res, _ := ch.build(spec) + return res +} diff --git a/parallel_coordinates_test.go b/parallel_coordinates_test.go new file mode 100644 index 0000000..fbb1a32 --- /dev/null +++ b/parallel_coordinates_test.go @@ -0,0 +1,84 @@ +package mujica + +import ( + "math" + "testing" + + "github.com/egoist/mygo/ui" +) + +var pcAxes = []string{"Age", "Hymns", "Vigils"} +var pcRows = [][]float64{{20, 3, 9}, {35, 8, 2}, {50, 5, 5}, {65, 1, math.NaN()}} +var pcNames = []string{"Agnès", "Clare", "Hild", "Bede"} + +func TestParallelCoordinatesReadoutAndBrush(t *testing.T) { + filters := map[string][2]float64{} + values := 0 + h := &chartHarness{build: func(c *ui.Context) ChartResult { + r := ParallelCoordinates(c, &filters, pcAxes, pcRows, ParallelCoordinatesOptions{Frame: ChartFrame{Label: "Monks"}, Names: pcNames}) + if r.ValueChanged() { + values++ + } + return r + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Monks") + tt.Key(0, ui.KeyEnd) + if got := chartReadout(tt); got != "Bede · Age 65 · Hymns 1 · Vigils no value" { + t.Fatalf("readout %q", got) + } + b := h.res.Element.Bounds() + plot := ui.Rect{X: b.X + 36, Y: b.Y + 24, W: b.W - 72, H: 240 - 32} + // Age runs 20..80 on the first axis: brush 30..55. + y := func(v float32) float32 { return plot.Y + plot.H*(1-(v-20)/60) } + tt.Press(plot.X, y(55)) + tt.Move(plot.X, y(40)) + tt.Move(plot.X, y(30)) + tt.Release(plot.X, y(30)) + f, ok := filters["Age"] + if !ok || math.Abs(f[0]-30) > 0.5 || math.Abs(f[1]-55) > 0.5 || values != 1 { + t.Fatalf("brush %v %v (%d)", f, ok, values) + } + tt.Key(0, ui.KeyHome) + if got := chartReadout(tt); got != "Agnès · Age 20 · Hymns 3 · Vigils 9 · filtered out" { + t.Fatalf("filtered readout %q", got) + } + tt.Press(plot.X, y(45)) // a click on the axis clears it + tt.Release(plot.X, y(45)) + if _, ok := filters["Age"]; ok { + t.Fatal("click did not clear the brush") + } +} + +func TestParallelCoordinatesHoverAndBad(t *testing.T) { + filters := map[string][2]float64{} + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ParallelCoordinates(c, &filters, pcAxes, pcRows, ParallelCoordinatesOptions{Frame: ChartFrame{Label: "Monks"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + b := h.res.Element.Bounds() + plot := ui.Rect{X: b.X + 36, Y: b.Y + 24, W: b.W - 72, H: 240 - 32} + // A quarter into the first gap, row 2 (Age 50 of 20..80, Hymns 5 of 0..8) is 0.53 up. + tt.Move(plot.X+plot.W/8, plot.Y+plot.H*(1-0.53125)) + if h.res.Point != 2 { + t.Fatalf("hover picked %d", h.res.Point) + } + defer func() { + if recover() == nil { + t.Fatal("no panic for a short row") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ParallelCoordinates(c, &filters, pcAxes, [][]float64{{1}}, ParallelCoordinatesOptions{Frame: ChartFrame{Label: "x"}}) + }, 300, 300) +} + +func TestParallelCoordinatesSnapshot(t *testing.T) { + snapshot(t, "parallel_coordinates", 520, 320, func(c *ui.Context) { + filters := map[string][2]float64{"Hymns": {2, 9}} + ui.Column(c).Padding(16).Children(func() { + ParallelCoordinates(c, &filters, pcAxes, pcRows, ParallelCoordinatesOptions{Frame: ChartFrame{Label: "Monks"}, Names: pcNames}) + }) + }) +} diff --git a/testdata/snapshots/darwin/chord_diagram-dark.png b/testdata/snapshots/darwin/chord_diagram-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0b369b7404ee913f6812cb111426b4a3a5b2b226 GIT binary patch literal 29370 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

nPYUaIyF@Jbv4G_k39PQv+IrlyZK16^ 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 DN`8pa literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/parallel_coordinates-dark.png b/testdata/snapshots/darwin/parallel_coordinates-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b5039ea564fa8430ef35fb4c504a5877f5699aec GIT binary patch literal 13584 zcmeIYWl$Vn^fovILLf+h5Ez`nAqmdlPOuOx2_XcB;2PX*GC=U)u0tSrU~sn}!QI{6 z9k$_D|E>4))>iGlRd4sFKJuLBoO}D8d%HSNSy2Y(Dd|%X2!taiE2RnoJ;DHiP{c4E z0TMNj=Q$t{_n4fN_y^~t?HQ~O@6S;F9(Y+v_@;^df=PXdl7I8Y=dchgM!5jdcwv() zvuR#fT8%8!F#Bk@m=}s3rFx(;VPC4ja)=jz2TOxtzIf?4{(|tgLY}JFOB$CQx`U$U zwja%v_mB<` z%g@}@J@k%x-a3*l3~Z$o7RQdQs2IA`UQb83UspH1K`zlp>EEJPI$Sy!1cq0ZwxGs zj=o&07Z81|Vd3r5reAlqOQjgKHp28{tWaBJqye^2&03S)`utV@f$(Msj~=_|je()svd4r*_Y3s=ElCDHK>Z8T}~O(Y<^go*SFU=0LtO zFJ#0$Kum(4pHo<6oB7&kbvUavI;^IWpAUPg^eqkE{)TCALwhhbYEWAO=?k?FnvP|~ zAIM2NmTWO02X;%VZGEgiV-QwTFCe%?PtS!|ojSssHcZKo8b530^i548N<5B0c6P3$ zFiNwWek=KTx)y(vKSiFQ!>Q&NgmwDo6j;PhN-(yX+pH}u@@wm+6B9HB%lD3t4z7=? zqd$8II-kofsd*tQY5di@ATbnd2BvvX`9S< zTYYBx{jFNm~` z0eQ7vQmxPo?2)HlNq$|O!HS@@BIY3*3oBOKwo}IDF#KIEEIg6d`ewyXN+KYvq6Uc^ zY40(mNKPIrs`zST;o#`_TkyS7AFSW++Fkg@U3g=*E;KrdvGDf2Z1H;IFaGqV4Buvg z5NSz_D#xAn&DI`Rc*lPDYRubILke~-E;q~5V7=4k_G}}Gj!PVZHx8C97uF(I_G7J> zORrwP#(>BpRMT^Cu;b;F!W4wGlU4=Ml&Rd2l78aRjoc3b6mXFh{j$Lfs?A5<~ zA#n;Jxd_yAwXammd#7Gy(Vfl15^bho&j*pBF19qS$`Vy%<*ry4!9UDcl9lLK^FQs# znusU)f(gOJZCN+PbIqZxdc$hv1AnIDHM1oO3;$B#$rStPJNlDgva6qUb?goEah?h8 zPCM1R&mm6LHB*8DI1Secq0&5?)K!h-atrxKUn zJ6eaLW7#M~EY{ItOH?8t2u_zzV-&71q20yPb@oeAE(UBN%1`7(>WCa+txsOnh4m7J zco$dW0wg+nfw4n64?Z{Iqo`JvD5ZdTuQ z2m2f>8#IEBJU(w|X*n&f-3=StwInX?+B*$l!aQs5yll5b&Hr`m$#2?4buE_~{Gz({ z$CZngkFI4t@w!{In!WU~qB$l!xR4Bub)Ox|OlnvUv)`RS#iU-ym396Z^yTie!OcOS z_}Nq97VJ{ug!p)^>gma$%xw=a>e9v&{}x+&`%2dp!Rasavx^hEuNBr7N0sy%?=SXI z-QYW!|Cc%@TnCCR&T8dp&^{mxQ>eZ@SJDT!Cm@dO?_}g%iIT}VcuzGq zcM)evYy5$^zs`1tIxkj)>dJlyaRg9pjTIzbo+(-3OWYDu7UB$5?-%f$t0mFbzhG45 zz1j*~*-QP*zDMEPMa4e;VGl;z@n7rtvZ%wvLJeCMMcNtnhK8|fxt#rb z!tma{v+3se8(Mrwr>?uD(tvMg+87x+oN%e+{9W`frM9+&;rfo+Qf4r^I35iRRQ-#_ z-7b~MUfJA^trRH^EPQ$=9_QWb*9DeNZscPP7p#ok5_@8NeHO0*nPpNuPgCr?6<@_- z+YxwFExStMF%uYb@<1ngQyRn=4QD0@HR-EncB`q#v_*>hO!{R=LN-iu*H}N`OXwTu zYiM|Rp8KTHX%aShDPIO zkANLvWK*T6F)<{odUy3koH1D&!fP>l0ez)yeJp_%0p;AYcv|>#QGo*(lOnG#SM7mL zp{e;`3JSL^liaZ_2VC3@2mJcC0ZnJia(9i?b(kmkVS&GQ^-U`wF zPCY2yoBXbc5$^fxXzA@Id0e7BPtLKe6Gw+L&06HPuVhrjsXB?hz+9oG_1nJQgG!lTUH1C2}<)f$SC z6Lv4rC=v0+DfW3uhBhp7FA2;I(?zwI|BH@tf`8AGW{Y+lM8;PlF6IHd#5jpKe}JR3 z_#e3656`RrH~i$obNT-~6G}aVYx$pWPYdtELHNkZNFUB7cy!q5I#f;Q}iBprL+*-u95>D}$Ct1fGAK6#FW%uu$$3 z&d^gfxsTYQPxk1i*c{#c2?!por|kM5Ov34+zZc;7`h+|{BO-yrkz`I|qbi`UMEc+m zfKYYS-N14AKozW^#Zr#|Oml41mJ@u7`BwB(S)fDcz1GvM2ePo3YGlC#@bhu7uZLxd zedNf-8ScS(ynQMF@M1&MXLR>ud9mF`0W}KQIpjX&3*Grzz`G0S!+Rer9232Fi`EMW zPiTyq`rz;cJ11;)lXg6fkj(iW5#3Zz%%iLlaDrH&-ZK!F04r0y{z%mX?=SQDNN}sy zH|sb!nZXy_$5idq%4ECcXuZWz@~-lrnr)y)M2;#?X&|v)EHc|vUtXB-F}@Fok~*t| z(BPv@lRytgdqoT}oTT!m$K6X8gs!7YO%>8BGd>@U6K<1=rVE0v>rqoZ{s&0>aKiWF z?j-?$BqTbl81jaUS`Uob2*Orr786OJrqYui2~qNNe4n@SHMNRU^;Y%;S5ZIFe4+VQQ(w)catI3nX!#ZRH00aeHR640QzS!U-yPdr5zPb8B*4JwlIx%c4qP>c4b+hx~ z?ouMEaX^BVIN^A&G4*xV@1lQ4n`PFY++EIE-MSs*j9N@nL;!G?hxkw-b5y!kabI=- zF4@ZXE+;%uXIy*AM7x{>@f?iklwk&FfsFtg8DAmrrFFr?dD-1cTbEbxpl#UTa^^6= zNT?WvV39$b1-rLOyXY?y#TnB(kwZG5GIQv%vT(E}c6Rx{0`iez?%gu&mfkQrIlO16 znfBzF+!q~v?uJ8vQ3@J8U?jtLZ`3Q3ZQ%_olkGBY&gg9o1j zQEA05WJ_?u=TR}A>gh(M=teP61$N6^T6m**$tq(3ZjJYDyi~a*CUX5u+KveYUPBw6a1M#XEMnJ7`($+8pg_DAHL; zwlfQl`-d)DEcS?92-Pn@MZ-x%9#~(j)7>?gQfIXzx#CX{U*E|Fe?_GmhoFETHO(I} z6);dCa2rdle@%_}OW^^PC&g^UBSaUKF%7)v@B-ySIGO=Oxkv25Py9qP%kC~@pMa#p zoh?x5)EQ8~?eHdlmB~DJ!zZ8_+3AV!_>`1{1Ya~;x@*I|T^E|XM|{CWu7+UZF-RJ# zk&QP8lVbC4bzKEbtRRO>qW0Ejy2g47#3f~aN=oftyUV>QV@IdOw;@>xk^Q?De+O3cOtXAj@8fD)web>Sdl00B11S5hH!a%xU5L<-F?XY%2LEXjT z%K{yzxw}oQdV)vS@*wob?BLKrqg7gvESC2ZS?p&rRPHw`*B)HF)-w{{!#{%Hn(W}9 z!LBu0P(O;doos74?C>%dcvyO4`~m}{`6Nw@&QP`y-2yxgv`sx_0>md`s=EF2$OiIl z>zm3_%`Z8xP`v#?U`d)6nB#brIH+Xa;=Q@zo7Bov!3Oz)>DdKq^+nE#hcwx@U7|X1q6lrhSa1yFVtgH5H3P zrHzW&7amu0wtdlln5QHv$e}$eJUwSt(PeEP^4|gv6iGT#D*&jf?7t1i&YmK4GJ>=BE19A3Eg;l6PiVZrh@Wf@He%buLfN)1dj|2w2nI8+G1|4<+?Y#<3#w)gO?6X)|UWKqCF_Z z4tHsf#+)P{(JhNVBCD+s2YEAqmiI(BT>wili71$btVLNlTVcMwUo3PSx5d0qc#j;^ zc{GsIAo7!+83!{wEfLLy&WPa`gHo#J()USUtpkZm~j+<3XKN9;UA}_+M zwS5-_N0SAIQ~R}Ev{xCEc85%8{Bja5mjhZ-j=$c{q0`;X`f}vLzDCL2dr|^wNDK^( zuHICus`5{D)lmx-?_IDZ0rdhoL34=CP|sQGMMvYwOgIR$OOEgKb}mCyL&vS6isQGO zH%w9%?yks*wrjZ2*lj0ta_#V$vg_J;Fj@<%PHb(;Rt`Y>iEdvI_!xbb{px#oHbZAEr zLr3^3)s0Lzm_O+VfelX98^F+o9Wca^F_o2l>njW}#J(pT29UO7ke8G&B6wAXLMMGs z(LDj6c$vXXx6IgNL?)&WzNa$>&`~2pK*S-KisPVr*KWYIfKFc07nflA4@BWU>|Y?P zfN_-PP4nCEG(R*MON=M?zGr}M?{mPH3bSxZmol(nqRK1wcQaq;lG0d_A0$EZUs__e zBp&R`yfR)H9~KXfl$~7}_X%4W5cIP&k z;K7a1!7?8xxus;QEFOBD-hOx(81bG2VTuY=5gsl(UCnRRK!=^sJkJFnjs3nkr3X-4 z%JlBIY4zst(RuXtlfn|*m)DqPh8zwD`}f!9Wp$h?Zi1ox@Y<=gI}G<_E-DvJc_+t? z@1@9rrii0oPs$w~wY_eR9XF0z$3I>P19)W%sZb1eG^%LlsKSp|GX8M3QFt)NUTkdk zrgaQ&{S+I&>oZH6DRiGOp|wl~s%VQS5m{-SQMJ@M4fX5te-1E(BHDg9CsKT#_S_^j z?1zYa1zjdpjp)uK9XARx4J9RW}#Q@=);eHD9=F3Tu*a4kImo&ErQ*DW&<0=TUi4%5+2&euK& zInJ480CeAA+z9;tGMvvGcaL%hT&Xi1fdJ&?4*@W#+JN~++rjh{pz-N}hJ3FKzRX5+ z$jEywt#Eup!eoGQPk^%VjL;6uP zRNqCv9%tRUyE&aHILyQB)mWm*t>lN$C&kG0|4Yn44($(7ds*> zL+ESN%sW%S)I^fye+Y4;aLS)$+Xt5tqftcv@EBX%evAT)uV=Zq8+ccf%0F!QP^CG@ z)auUt%r%pvf9&jh*5j&ap>%eJ04A~swF(#bTFILMsRIT7DEL2}hAROvPaKH4A1 zy77L$ElKvXO#H`zfrRuMhRkJN1b-6PAKGe#sz;5jrzaZ`tUn#)$oXI57^r$C`0(ux z**m6pWG1MVcpVs=UGc$DVGsGE`vg;|;7l*g&JD(K{3-F?c?TBGJ7rz(mG_a7mm%BFvQ#J1(AUtJ}iHm~?kZ zjB6JMl)%}t9|c=lSvqPkYLNLgLQhf$DjS90#Y7v0kKjhwZ_1mFbjSB1vP)$%3c!A)y!1(iEMDqJT zBNchFBpmVo&@-d&(aUxLt8gHcO7=@yc~g1QnYX5X{~=GLKRBJdMuhzPFM1^BrZKZ{ z!acY&v!(ifINebyNmXj{yl{C_BsQ6@U(*DhuAdZ1dhj1rl9P%kH7wv82RI1__r8=#?kb*0E{Ia%W-eNonV%3<~{buF>F zgG}<67tUpTcd;MYhiWYGK_Qt2W@2X5S)l>L>nSMk`3O-&^6!y;Q9apLxS!#kUkN$% zG979W$gE0PEy7yf{n@lVH_2823j>_t2Z>Ulwe0J2aqSM(nVeJ->|(%#usUdw>gcAb zD|0WDPw~8y1PXVF2&SPlDrJCGt{-S#G28siGu1n5L?2J1CA$=vlL+!&5YX)yDI1GX zqp&u;F`Kyrtrw!J>BRF)jX7NGcg8gI3cSwV)sn&eJ%uU9zNW|e28V7|CC>z= zl;+|@$vX?nQZX$&sNS1A^G&bp=r!Tc7^5gK9LIC5_bA?6N=czaVuSU4^}IXF^1tcT zkNmkCt9xrCJhHH3W@2_-?fDkr&@ueua2c@$ynw z8UGZ?Yw4G_1M$=o{e?<=25r zdxR3NbTnNo#Vzt@Y8^e0)wp0+ABcs)WX)df+?ftZvR#$7*HvAuX6dh?t)q)!PDm$w zK);NDvf%d5!rpt!qu(*PskeI_7B?{iF0o&d2{Meq0Pm84%^o;+*z(bs`)xv>&e6rz ztMh9fi~b0l4P3a(5S5_;DcR7^i8yIl4f^w0cDrQ{GYCbbLFsDV(Xspj#upboTdfu< z3k3rM4NkHl47rwRE=SFpsS)?dTq2O9yDl{h@0+B4*LeeqF7Pex{`=hj{9zG~1^1fZ zd0xy=hzv{Zl#p$%XUP8(^{yPW2q#i`sX>g#Tg>W^hb&hs8v8OeS%jRjbh|=Ul$Rsr zU%XJsL#l1nW3l8g;Srot{6S^$c@^od6eAabtv=<7ob#CD?L)QeP2x44<>$J)sC!P0 z{=fYVM+t0dnR!if%&fn4@Ym&VP3+gub7u~0IL^Sn;b(PO_P;}Z+?vr>JmH2pPp72WNEb~z=d=k< z@J3&@!1xp`jC^P3Q(f`+$VB|Q`=3`YX)R5J!p1L$UNJR#X&y4^Z$(Tc1(z*g+P029 zFF|i?x(gTz@bb*l152kXJ8nWdYSVWS|j+h}GEl#hjZ{-uhQ+!~W9XSKsZo%~ujk zeC)c8m%|{@xr9r&))g){vWx%)J4FEM(mZbX#O>-5o^4&R7uB&0R9Q*}He|Uj?spw~ zw}a$)8S{DYaO2Y)9PM$hLL$NX-qi5m>C%7!Vx?ILYBioxQ&grI&i#tRU^DAv&wV^o z^>uu#OVQhSr+vmnH%}y_cD$-|u+(WKdjGLUuaR@d`=GV2R?c@zHD}d$5@cgVb?(UG zw0&1Ea|V9X^D?>TVC?n=(dqL&>x$7)-k+?BL;gz}CATBdh(~(*n%jjQPq3_szA!>f z!tZ?ZKZ|IF*48aGE@XZxnv=qK^9I%@pSaz&5_R|(JMoIe0Sx!J?oIR$rR-}^gW)A` zoJ@#&*56$ol5OP^(Bf@4h*uX&`l1s5i{EHFAe77EcM-*4NnJN4WTL;Ri2A9}TZTj$ zlx~l|f(CuZBaOj}jgL^XKN<}czVfK8)7CD>fN*oC07AzlHM!o|8*TDF#L*fJY`0*h|21(3O*6&w9T2yfX7wZ&I}lv%_{=akwt5fAHe7&+VOJ& zu`p+=&csZs<}a#Bfrz7WAr=7WCVPs~@_6FSjk9vO7LOMaNg`H!lM!`lh zk(*o1Cmqcn=E%9-@tN6ygTui$yM=|o|3lf2sM*Yl6N7>__6;&=rdkQ^Cs$5D@rxkh zBq6tS7+bMO;zu5bQwv8;dqRnhxiQAZIVI)K!i@>cD_BJ{O!aPOv!lsXG$m2?wi-!_ znN@s(k1wxQmTww~)xsGZH+-vpQ;w`|C#}Ye5)+BYWDby1kgKt3jU%>a|9B85E1n%J z5*%O`j%_7sXu$E?5D}98!%*&@Mk9+^V~;nQwaax271GbogNhKG7mF@-0U$AKF>ECe zN4`cq?3}pA%l4zD!tld&|oBsc1}ad{<%7i+95iB@NU2PJjZ(>L#01bX}aDp3gACP*O0OC}6t7+vgyaIPTso7ZoK-a{pF z{#&C`>Y}`E4`0Cg_aO%=3+c^Wn?O-5YYthpn58f-oZVciYd-rPuQ^)y9dFuS{zym| zv91l#14l~)h6PUA%`?^)`?BQ+Jbe~KLay>z%Y2*+LjL#r#}SP5%}Lh?^~KdiU%W11 zn;aNh&hK2Z=Ae_+ZyWZci9NH(J+Ux(gvs7{szY8~)igZYsKptk@n-RBQQ?pY wh z#l;FfWYvj9HU4^PrzXJVCL!j0+=M9TqAkYatJ7J}6e3Z?)yYO3Lr0l|Pl&LkIG{K@ zJ7%;=4^lu=lIbU`qb!cb{zcjQZg}|MN!Ydi4{2AZbxc&-Q3e~K=DUCpD^p8zGgAsK zGbt}~>DgIUg15uzn}gpV5&`zMvsJ}*cW=*uom4@B~;F(#Oa!scR3sL9GJYVtJ@u+`==7AE&sB-JJyuKAcrmYSa;3>)h2f zd05f%NJ2}}#4nyf>>oaiBsI9xa~Vud$8WgnwVhR6vBTn-{-P;hq{l!9#30yQDqz*I z+0Z4v5P2YI4q+D~886-qx;PR8HKAiFNuM| z?OkaMQ=~?ORM(0#(M&B5y@R`QBQa#tnSmH4}YXI{Q$!Kjps^tlbcL&!Ut5?GIZgpmV?@m(9xPyQHX-E7U^(3BY7 zEo6S@{Si1Lem^=D>;VYXZjV;`Ia>#gyWO_qFwMg7u4P~~YKIzHTd!@ekB?7hjBV`f z?EKr44f)EnRPgz7^hv67WmPD-fZ=779P$L`Q!sHuTcF_Us?HZXuPrky1<&G&sFr46 z>rz=m)B<~@`6L@oyR%be^k3*AJd1(<%&Lm?#`nl`*4Kf|typ_c+Rtcq3t2rJ+22hy z^(tm77k^gZLRq(;a@?7)n^!)b-~Sg}mLFW!Gv&B$U;XaOpSS0ax<#adbu7J;fRHTF zmk5WVEeE5EVH2bjBdM^yiJ|lOoz<+W))!GzclnHuoq1v1%TF0)p0Gs!SmJ~00UcqC zkk@>36RF|e1+#V6`)XQcbCGc&>0B~e>5W%ykLaK1TtLuc&AH!Y0y~~8<5C#gx=QZf zFp`~~mAFlVXPR6wM^e>%fyuk2r=hr8t<}|heR0r>{(&W9R&7Un8|S?chio(r+<1xf zNI(0GDYNjKB= z<1NBd+1La)8~dD&1Jc_E)&c%wg_@yD)xi5+IJ9u?Q53r8-~jx#=~7vhFD_bM;wajNX$HnW(U<$mZ&IyUW9R8$HhuiwZ# z6B3>dRFujbI2O36V?`8&jSb1Q1g?4({4U1@UVE~E_#p;CegO=YJlkYN<&Q6jpMO+i z-BxAUB1>={i1;c&pojMskyx?QXzRW*xRy)!bYr5`wszmh7N|7vx-ne3^e3oPSMm9y zJt0N?`ASj$?^Q5&3HR>>l!lsL{(3EOB5m%fzqdA-3A=p%#m{Q?+LdOPsw-^SJpRrL zbTkp|Y4b5_5%#>SvF{En>I$o|R1Lfv@g7W0(L?LrvmlP;)@&*n2%*rSwH0XI%_v0huK4?gC4Ypl+; zLNWik{~*80X8o})-=l+P+-8fDuFXdnbf>1CZPZvJf3)i74u8uMs7tZul$!E;vUw~p zbT?<5 zh3mb0UGOA~QU=2V>2THEO;mSvImdzhlJ&Kq8^;_$>+$9CblWwiLFB}%(TL~2LY}kt zwL0?&#A_a$oC%h44z|;WspgG{QVO$fo+zFlMmOtW+5%f;;0R;3MMe>#^v5;%0?)OL z!@6tvN6*x^KStRhBs>|JM~bJrLeJmDV6r%?M9{B1f+@>YQ8&(2)MgA4_;ds>NKMy` zAx+<&CYpbGm&m>FH}kJt-)eLQ8E`ZsB8=Dh^{m$D$J=hwgfFw|M_s_#iAF1ls3Pgr z5|Nxf&~FZFEf(Gl7>;CdzGHV|dQ_x#&O&GQ?(g(GGwJ39}DTw3l)DpDNuQ!0*<50|Ouq&7A- zneT7^>CWF@ULH^MK>r`#=XXrl)c@!He_Vk&*uot;NDtMFXu literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/parallel_coordinates-light.png b/testdata/snapshots/darwin/parallel_coordinates-light.png new file mode 100644 index 0000000000000000000000000000000000000000..59f768c9619580d3f471a2a4fd5f00a076df8ac9 GIT binary patch literal 13165 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 literal 0 HcmV?d00001 From 33e924f2b143d4a8c6ae324d9513c645e81cd15f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 15:43:43 -0400 Subject: [PATCH 6/6] WIP components (as built) --- PRD.md | 462 ------------------ TASKS.md | 47 -- chart_annotation.go | 84 +++- chart_annotation_test.go | 43 +- chart_axis.go | 65 ++- chart_axis_test.go | 40 +- chart_brush.go | 85 +++- chart_brush_test.go | 43 ++ chart_crosshair.go | 17 +- chart_crosshair_test.go | 24 +- chart_empty_state.go | 4 +- chart_export.go | 18 +- chart_export_test.go | 21 + chart_frame.go | 2 +- chart_grid.go | 8 +- chart_grid_test.go | 2 +- chart_legend.go | 21 +- chart_legend_test.go | 30 ++ chart_series.go | 12 + chart_tooltip.go | 51 +- chart_tooltip_test.go | 19 +- chord_diagram.go | 44 +- chord_diagram_test.go | 39 ++ density_plot.go | 24 +- density_plot_test.go | 32 ++ docs/components/121-chart-legend.md | 38 ++ docs/components/122-chart-tooltip.md | 36 ++ docs/components/123-chart-crosshair.md | 43 ++ docs/components/124-chart-axis.md | 38 ++ docs/components/125-chart-grid.md | 43 ++ docs/components/126-chart-brush.md | 36 ++ docs/components/127-chart-annotation.md | 47 ++ docs/components/128-chart-export.md | 45 ++ docs/components/129-violin-plot.md | 36 ++ docs/components/130-parallel-coordinates.md | 38 ++ docs/components/131-chord-diagram.md | 37 ++ docs/components/132-spark-bar.md | 36 ++ docs/components/133-trend-indicator.md | 35 ++ docs/components/138-density-plot.md | 36 ++ docs/components/140-chart-empty-state.md | 35 ++ docs/prd/ext-1.md | 232 --------- docs/prd/ext-2.md | 155 ------ docs/prd/ext-3.md | 130 ----- example_charts2_test.go | 180 +++++++ examples/gallery/pages_charts2.go | 69 ++- examples/gallery/pages_charts2_code.go | 145 ++++++ .../gallery/pages_charts2_distribution.go | 105 ++++ examples/gallery/pages_charts2_parts.go | 138 ++++++ examples/gallery/pages_charts2_stats.go | 194 ++++++++ examples/gallery/pages_charts2_test.go | 111 +++++ internal/chart.go | 11 +- messages_charts2.go | 17 +- parallel_coordinates.go | 107 +++- parallel_coordinates_test.go | 50 +- pie_chart_test.go | 2 +- spark_bar.go | 31 ++ spark_bar_test.go | 161 ++++++ sparkline.go | 68 ++- testdata/snapshots/darwin/area_chart-dark.png | Bin 18845 -> 18859 bytes .../snapshots/darwin/area_chart-light.png | Bin 18427 -> 18464 bytes testdata/snapshots/darwin/bar_chart-dark.png | Bin 19288 -> 19242 bytes testdata/snapshots/darwin/bar_chart-light.png | Bin 18661 -> 18659 bytes .../snapshots/darwin/chart_brush-dark.png | Bin 10462 -> 10275 bytes .../snapshots/darwin/chart_brush-light.png | Bin 10240 -> 10081 bytes .../snapshots/darwin/chart_export-dark.png | Bin 15523 -> 15570 bytes .../snapshots/darwin/chart_export-light.png | Bin 15096 -> 15047 bytes .../snapshots/darwin/chart_legend-dark.png | Bin 7727 -> 7726 bytes .../snapshots/darwin/chart_legend-light.png | Bin 7271 -> 7262 bytes .../snapshots/darwin/chart_tooltip-dark.png | Bin 5005 -> 5021 bytes .../snapshots/darwin/chart_tooltip-light.png | Bin 6785 -> 6788 bytes .../snapshots/darwin/chord_diagram-dark.png | Bin 29370 -> 34480 bytes .../snapshots/darwin/chord_diagram-light.png | Bin 28520 -> 33674 bytes .../snapshots/darwin/density_plot-dark.png | Bin 22659 -> 22613 bytes .../snapshots/darwin/density_plot-light.png | Bin 21917 -> 21875 bytes testdata/snapshots/darwin/line_chart-dark.png | Bin 23341 -> 23304 bytes .../snapshots/darwin/line_chart-light.png | Bin 22386 -> 22342 bytes .../darwin/parallel_coordinates-dark.png | Bin 13584 -> 13556 bytes .../darwin/parallel_coordinates-light.png | Bin 13165 -> 13191 bytes testdata/snapshots/darwin/pie_chart-dark.png | Bin 41218 -> 45844 bytes testdata/snapshots/darwin/pie_chart-light.png | Bin 41206 -> 45283 bytes .../snapshots/darwin/radar_chart-dark.png | Bin 30389 -> 30382 bytes .../snapshots/darwin/radar_chart-light.png | Bin 29501 -> 29482 bytes .../snapshots/darwin/realtime_chart-dark.png | Bin 29105 -> 29044 bytes .../snapshots/darwin/realtime_chart-light.png | Bin 28010 -> 27961 bytes .../snapshots/darwin/scatter_chart-dark.png | Bin 13704 -> 13683 bytes .../snapshots/darwin/scatter_chart-light.png | Bin 13140 -> 13099 bytes testdata/snapshots/darwin/spark_bar-dark.png | Bin 0 -> 1562 bytes testdata/snapshots/darwin/spark_bar-light.png | Bin 0 -> 1566 bytes testdata/snapshots/darwin/sparkline-dark.png | Bin 2981 -> 2990 bytes testdata/snapshots/darwin/sparkline-light.png | Bin 2901 -> 2922 bytes .../snapshots/darwin/trend_indicator-dark.png | Bin 0 -> 4635 bytes .../darwin/trend_indicator-light.png | Bin 0 -> 4462 bytes .../snapshots/darwin/violin_plot-dark.png | Bin 18828 -> 18643 bytes .../snapshots/darwin/violin_plot-light.png | Bin 18215 -> 18080 bytes trend_indicator.go | 70 +++ trend_indicator_test.go | 90 ++++ violin_plot.go | 35 +- violin_plot_test.go | 33 ++ 98 files changed, 2746 insertions(+), 1204 deletions(-) delete mode 100644 PRD.md delete mode 100644 TASKS.md create mode 100644 docs/components/121-chart-legend.md create mode 100644 docs/components/122-chart-tooltip.md create mode 100644 docs/components/123-chart-crosshair.md create mode 100644 docs/components/124-chart-axis.md create mode 100644 docs/components/125-chart-grid.md create mode 100644 docs/components/126-chart-brush.md create mode 100644 docs/components/127-chart-annotation.md create mode 100644 docs/components/128-chart-export.md create mode 100644 docs/components/129-violin-plot.md create mode 100644 docs/components/130-parallel-coordinates.md create mode 100644 docs/components/131-chord-diagram.md create mode 100644 docs/components/132-spark-bar.md create mode 100644 docs/components/133-trend-indicator.md create mode 100644 docs/components/138-density-plot.md create mode 100644 docs/components/140-chart-empty-state.md delete mode 100644 docs/prd/ext-1.md delete mode 100644 docs/prd/ext-2.md delete mode 100644 docs/prd/ext-3.md create mode 100644 example_charts2_test.go create mode 100644 examples/gallery/pages_charts2_code.go create mode 100644 examples/gallery/pages_charts2_distribution.go create mode 100644 examples/gallery/pages_charts2_parts.go create mode 100644 examples/gallery/pages_charts2_stats.go create mode 100644 examples/gallery/pages_charts2_test.go create mode 100644 spark_bar.go create mode 100644 spark_bar_test.go create mode 100644 testdata/snapshots/darwin/spark_bar-dark.png create mode 100644 testdata/snapshots/darwin/spark_bar-light.png create mode 100644 testdata/snapshots/darwin/trend_indicator-dark.png create mode 100644 testdata/snapshots/darwin/trend_indicator-light.png create mode 100644 trend_indicator.go create mode 100644 trend_indicator_test.go diff --git a/PRD.md b/PRD.md deleted file mode 100644 index 96ec51b..0000000 --- a/PRD.md +++ /dev/null @@ -1,462 +0,0 @@ -# MujicaUI 产品需求文档 - -版本:1.1 -日期:2026-10-05 -交付范围:500 个组件、两套主题、三种密度、原生 Gallery、文档与测试。001—100 见本文第 4 节;101—500 见 `docs/prd/ext-1.md`、`ext-2.md`、`ext-3.md`。 - -## 1. 产品定义 - -MujicaUI 是基于 MyGo 原生 UI 的 Go 桌面组件库。采用古典宫廷与哥特风格,覆盖 Windows、macOS、Linux。面向开发桌面工具、设置界面和数据应用的 Go 开发者。 - -MyGo 原生 UI 使用 Go 构建并自绘界面,不依赖 HTML、JavaScript 或 WebView。MujicaUI 复用该路线,不开发网页组件库。[^native] - -首版交付本文及扩展文件规定的全部功能。已有组件换肤、已有能力组合和新增组件合计 500 个,不是在 MyGo 之外再增加 500 个。尺寸、颜色、状态、子部件和模式不单独计数。 - -不包含浏览器端适配、新渲染引擎、新布局引擎、独立状态管理框架、业务后端和上传服务。图表与行情组件以 MyGo Painter 绘制,不建通用图表引擎;媒体组件只提供播放与采集界面,解码与设备访问由调用方完成;文档类组件只提供显示与轻量编辑,不建富文本编辑引擎。 - -## 2. MyGo 复用规则 - -| 情况 | 实现要求 | -| --- | --- | -| 只需调整颜色、字体、尺寸 | 封装现有组件,使用主题与公开样式接口。 | -| 需要改变外形或内部布局 | 使用已公开的 Base,重做外观,保留输入、焦点和无障碍行为。 | -| 需要组合交互 | 组合 MyGo 与 MujicaUI 组件;仅补充缺失的状态和行为。 | -| 系统窗口操作、文件选择 | 调用 MyGo 桌面 API;系统控制的外观保持系统样式。 | -| 公开接口不足 | 提交上游扩展;合入后固定依赖版本。不访问上游 internal,不另建渲染或输入实现。 | - -已核验的 Base 包括 Button、Checkbox、Switch、Toggle、Radio、Slider、Tabs、Segmented、Collapsible、Select、Combobox、Popover、Dialog、TextInput 和 TextArea 对应的 Base。不得假设存在未公开的 TableBase、TreeBase 等接口。[^bases] - -应用内 Menubar、DropdownMenu、ContextMenu 使用 MujicaUI 自绘样式。系统菜单、系统文件对话框和系统窗口按钮不承诺换肤;不得把系统菜单直接显示为已完成的哥特样式菜单。 - -MyGo 的主题可调整颜色、字体、间距与圆角,也可读取高对比度、文本缩放和减少动画设置。MujicaUI 扩展设计变量,不另建 CSS 或样式解释器。[^theme] - -## 3. 视觉规范 - -### 3.1 风格与装饰 - -视觉参考为用户提供的宫廷场景图片:象牙白墙面、黑红服装、金色细节与衬线标题。只提取配色、线条和字形,不使用人物、海报、Logo 或照片作为组件素材。 - -页面以象牙白或炭黑为底。酒红表示主要操作与选中状态。旧金用于分隔线、角饰和面板标题,不用于正文。成功、警告和错误使用独立语义颜色。 - -按钮、输入框和数据行不加花纹。Heading、Divider 可使用单个菱形或对称细线。Card、Dialog 的双线边框与角饰通过 `Decorated` 开启,默认关闭。装饰不占焦点、不遮挡内容、不缩小点击区域。 - -不使用背景纹理、仿皮革、仿金属、发光、玻璃效果和装饰性渐变。颜色选择器中的色谱不受此限制。 - -### 3.2 颜色 - -以下为首版默认设计值,不是从参考图精确取色的结果。 - -| 变量 | 浅色主题 | 深色主题 | 用途 | -| --- | --- | --- | --- | -| Background | `#F2EBDD` | `#191618` | 窗口背景 | -| Surface | `#FBF7EF` | `#242024` | 卡片与弹层 | -| SurfaceHover | `#E8DFD0` | `#342C32` | 悬停背景 | -| Text | `#211C1D` | `#F2EBDD` | 正文与标题 | -| TextMuted | `#6A5B55` | `#BCAEAA` | 说明与占位文字 | -| Border | `#D2C3AF` | `#51424A` | 非交互分隔线 | -| ControlBorder | `#877662` | `#968278` | 输入框等交互边界 | -| Accent | `#7D2034` | `#9C3C53` | 主按钮填充 | -| AccentHover | `#651729` | `#AA425C` | 主按钮悬停 | -| AccentPressed | `#511020` | `#813047` | 主按钮按下 | -| OnAccent | `#FFF8EE` | `#FFF8EE` | 主按钮文字与图标 | -| AccentText | `#7D2034` | `#E4A0AE` | 链接与强调文字 | -| Selection | `#EAD7D9` | `#492A36` | 选中项背景 | -| Focus | `#7D2034` | `#E4A0AE` | 焦点环 | -| Ornament | `#AD9164` | `#BDA172` | 非语义装饰 | -| Success | `#326247` | `#94C6A4` | 成功文字与图标 | -| Warning | `#805714` | `#DFC080` | 警告文字与图标 | -| Danger | `#A12635` | `#F0A1AA` | 错误文字与图标 | -| Info | `#355E80` | `#9DBDDA` | 信息文字与图标 | - -语义颜色默认用于文字、图标和边界,不直接拿浅色主题值填满深色主题控件。危险按钮的底色与前景色单独定义并检查对比度。焦点环与控件之间保留背景色间隔。 - -### 3.3 字体、尺寸与密度 - -标题使用衬线字体,中文标题使用宋体类字形。正文、表单、表格使用系统无衬线字体。代码与快捷键使用系统等宽字体。装饰字形不用于控件标签。 - -标题默认 28、22、18 DIP;正文 14 DIP;说明文字 12 DIP;正文行高为字号的 1.5 倍。字体允许由应用注册与覆盖;缺失字体使用系统回退,不显示空白或方框替代正常文字。MyGo 提供字体注册与字体回退接口。[^text] - -| 密度 | 单行控件最小高度 | 数据行最小高度 | 基础间距单位 | -| --- | --- | --- | --- | -| Compact | 28 DIP | 28 DIP | 3 DIP | -| Default | 36 DIP | 36 DIP | 4 DIP | -| Comfortable | 44 DIP | 44 DIP | 5 DIP | - -默认间距采用 4、8、12、16、24、32、48 DIP。输入框与按钮圆角 2 DIP;卡片 4 DIP;弹层 6 DIP。边框 1 DIP;焦点环 2 DIP,外留 2 DIP 间隔。图标采用 16、20、24 DIP,独立操作的命中区域不小于 28 × 28 DIP。 - -高度是下限,不是固定值。文本放大、换行或字体回退时允许增长。切换密度不缩小字号,也不改变组件语义。细线须按设备像素对齐。 - -### 3.4 组件外观与主题行为 - -Button 使用酒红填充、象牙白文字与小圆角。TextInput 使用实色背景与细边框。Checkbox 保留方框和勾选、半选含义;Radio 保留单选圆形。Slider 可使用菱形滑块,命中区域仍为矩形。Tabs 与 Sidebar 使用背景、边线和文字共同标记当前项。 - -Card 与 Dialog 的装饰只出现在边缘和标题区。DataTable 表头、行分隔和选中行不添加纹样。Button、TextInput、Checkbox、Tabs、Card、Dialog 作为视觉回归基准。 - -主题提供 `System`、`Light`、`Dark`,默认跟随系统。每个窗口可独立设置主题与密度。切换主题不得重置表单值、展开状态、选择、焦点或滚动位置。 - -样式覆盖顺序为局部参数、窗口主题、库默认值。系统高对比度、文本缩放与减少动画要求仍须生效。主色默认保留酒红,不自动替换为系统强调色;高对比度模式以可读性为先。 - -状态过渡默认 120 毫秒,弹层过渡 160 毫秒。不使用弹跳或装饰性循环动画。减少动画模式直接切换状态;加载标记保留静态说明。 - -## 4. 组件清单 - -以下每行是一个公开组件及其首版最低功能。全部适用组件同时遵守第 5 节的交互要求。 - -### 4.1 布局与桌面 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 001 | AppShell | 标题栏、侧栏、主内容、状态栏插槽;侧栏折叠;内容区独立滚动。 | -| 002 | TitleBar | 应用标题与工具插槽;窗口拖动;为系统窗口按钮留出空间。 | -| 003 | StatusBar | 左右分区;状态文字、进度与操作;宽度不足时折叠次要内容。 | -| 004 | Container | 内边距、最大宽度、居中、填充;内容裁剪可配置。 | -| 005 | Stack | 横向或纵向排列;间距、对齐、换行;隐藏项不占间距。 | -| 006 | Grid | 行列尺寸、间距、跨行跨列;固定尺寸与剩余空间分配。 | -| 007 | ScrollArea | 横纵滚动;滚动条;滚动到指定位置;保留滚动位置。 | -| 008 | SplitPane | 横纵分栏;拖动分隔条;最小尺寸;折叠;键盘调整。 | -| 009 | AspectRatio | 保持指定宽高比;在父容器约束下缩放;不拉伸子内容。 | -| 010 | Divider | 横纵分隔;文字插槽;可选菱形装饰;不获取焦点。 | - -### 4.2 基础展示 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 011 | Text | 换行、省略、选择复制;可编辑模式支持确认、取消和外部保存结果。 | -| 012 | Heading | 三级标题;衬线字形;可选副标题和分隔线;支持文本缩放。 | -| 013 | Icon | SVG 图标;尺寸与语义颜色;图标名称;加载失败回退。 | -| 014 | Image | 位图与 SVG;包含或裁切;占位、加载、错误;替代说明。 | -| 015 | Avatar | 图片、姓名首字母与默认图标回退;尺寸可配置。 | -| 016 | AvatarGroup | 头像排列;最大显示数量;剩余数量;展开完整名单。 | -| 017 | Badge | 文字或计数;上限显示;位置可配置;朗读完整数值。 | -| 018 | Tag | 标签文字、图标;可关闭;关闭动作与标签点击分离。 | -| 019 | Link | 外部地址或应用内动作;键盘激活;文本下划线;打开失败反馈。 | -| 020 | Kbd | 单键与组合键展示;按平台显示 Command 或 Ctrl;仅展示、不注册快捷键。 | - -### 4.3 基础输入 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 021 | Button | 主按钮、次按钮、描边、无底色、危险变体;图标;加载与禁用。 | -| 022 | IconButton | 仅图标按钮;必填操作名称;提示文字;加载与禁用。 | -| 023 | ButtonGroup | 横纵组合;统一边界与尺寸;组内方向键移动;逐项禁用。 | -| 024 | TextInput | 单行编辑;占位、前后插槽、清空;选择、撤销、剪贴板与输入法。 | -| 025 | TextArea | 多行编辑;最小与最大高度;滚动;字数提示;提交快捷键可配置。 | -| 026 | NumberInput | 数值输入与步进;范围、步长、精度、空值;支持仅步进按钮模式。 | -| 027 | PasswordInput | 密码遮蔽;显隐切换;粘贴;默认不朗读或记录密码内容。 | -| 028 | SearchInput | 搜索与清空;提交;查找栏模式提供匹配数量、上一项和下一项。 | -| 029 | Checkbox | 选中、未选、半选;关联标签;组内全选;键盘操作。 | -| 030 | RadioGroup | 横纵单选组;稳定选项值;方向键选择;逐项禁用。 | - -### 4.4 选择控件 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 031 | Switch | 开关值;标签;禁用;切换后回传结果;不自行调用业务接口。 | -| 032 | Toggle | 保持按下状态的按钮;文字或图标;选中状态可辨认。 | -| 033 | ToggleGroup | 单选或多选;是否允许空选;键盘导航;逐项禁用。 | -| 034 | Slider | 数值范围、步长、刻度、值提示;拖动、方向键、Home 和 End。 | -| 035 | RangeSlider | 双端范围;步长;两端不交叉;分别提供焦点和数值说明。 | -| 036 | Select | 单选列表;占位、清空、禁用项、空状态;方向键与输入定位。 | -| 037 | MultiSelect | 多选、搜索、全选、数量限制;标签折叠;无结果状态。 | -| 038 | Combobox | 输入筛选与选项选择;可允许自定义值;异步结果由调用方提供。 | -| 039 | Cascader | 多级选择;完整路径;叶节点限制;外部加载子项;加载失败重试。 | -| 040 | TreeSelect | 树形单选或多选;搜索、展开、半选;父子选择规则可配置。 | - -### 4.5 表单组合 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 041 | Form | 字段注册;校验;提交、重置;提交中防重入;错误字段定位。 | -| 042 | FormField | 标签、必填标记、说明、错误;标签关联控件;上下或左右布局。 | -| 043 | InputGroup | 输入框与前后文字、按钮组合;统一边框;各操作保留独立焦点。 | -| 044 | PinInput | 位数限制;输入与退格;整段粘贴;完成事件;允许前导零。 | -| 045 | TagsInput | 标签增删、粘贴分隔、去重、数量限制;提交前校验。 | -| 046 | Rating | 评分与只读展示;步长配置;键盘调整;数值说明。 | -| 047 | ColorPicker | HEX、RGB、透明度;颜色选择;预设色;输入校验;透明度背景格。 | -| 048 | FilePicker | 调用系统文件或目录选择器;单选、多选、扩展名筛选;取消不报错。 | -| 049 | FileDropZone | 文件拖入提示;文件列表;类型、数量和大小检查;移除与错误提示。 | -| 050 | Transfer | 两侧列表;搜索、选择、移动、批量移动;禁用项;保留稳定条目 ID。 | - -### 4.6 日期与时间 · 8 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 051 | Calendar | 月视图;日期选择;今日标记;不可选日期;周起始日可配置。 | -| 052 | DatePicker | 日期输入与日历弹层;格式、范围、清空;无效输入提示。 | -| 053 | DateRangePicker | 起止日期;范围预览;起止限制;确认与清空。 | -| 054 | TimePicker | 时分秒;12/24 小时;步长与范围;输入与选择。 | -| 055 | TimeRangePicker | 起止时间;范围校验;跨午夜须显式开启。 | -| 056 | DateTimePicker | 日期与时间组合;时区由调用方指定;范围限制;确认与取消。 | -| 057 | MonthPicker | 年份切换;月份选择;范围、禁用与清空。 | -| 058 | YearPicker | 年份区间浏览;键盘选择;范围、禁用与清空。 | - -### 4.7 导航 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 059 | Tabs | 标签与面板关联;横纵布局;方向键导航;禁用项;溢出滚动。 | -| 060 | SegmentedControl | 分段单选;文字或图标;等宽或自适应;键盘导航。 | -| 061 | Breadcrumb | 路径导航;当前项;中间项折叠;完整名称提示。 | -| 062 | Pagination | 页码、上一页、下一页、页容量、跳页;总数变化时修正有效页码。 | -| 063 | Steps | 当前、完成、等待、错误;横纵布局;是否可点击由调用方控制。 | -| 064 | Sidebar | 分组与嵌套;图标、计数、选中项;展开折叠;紧凑模式。 | -| 065 | NavigationMenu | 层级导航;当前路径;可选前进、后退按钮;接入已有导航状态。 | -| 066 | Menubar | 应用窗口内菜单栏;子菜单;勾选和单选项;快捷键提示;键盘导航。 | -| 067 | Toolbar | 操作分组;分隔;窄宽溢出菜单;方向键导航;图标名称。 | -| 068 | CommandPalette | 快捷键打开;搜索、分组、无结果;方向键选择;执行后关闭。 | - -### 4.8 内容与数据 · 12 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 069 | Card | 标题、内容、页脚插槽;描边;可选角饰;不默认增加点击行为。 | -| 070 | List | 虚拟化列表与网格模式;稳定条目键;单选、多选;键盘导航与空状态。 | -| 071 | DataTable | 虚拟化;排序、筛选、多选;列宽、列顺序、列显隐;自定义单元格。 | -| 072 | Tree | 节点展开;选择;键盘导航;外部加载子项;空状态;大量节点虚拟化。 | -| 073 | TreeTable | 树形层级与列组合;展开、选择、列宽、排序状态;可见行虚拟化。 | -| 074 | Accordion | 单项或多项展开;是否允许全部关闭;键盘操作;展开状态受控。 | -| 075 | Collapsible | 触发区与内容区;外部控制展开;隐藏内容退出焦点序列。 | -| 076 | Timeline | 时间、标题、内容、状态;纵向排列;长内容换行。 | -| 077 | DescriptionList | 名称与值;多列、跨列、复制值;窄宽时改为单列。 | -| 078 | Statistic | 数值、单位、前后缀、精度;变化值说明;不计算业务指标。 | -| 079 | ImageViewer | 放大、缩小、平移、适应窗口、切换图片;键盘操作与关闭。 | -| 080 | Carousel | 上一项、下一项、位置指示;默认不自动播放;开启后支持暂停。 | - -### 4.9 浮层与菜单 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 081 | Dialog | 标题、说明、内容、操作区;焦点限制与恢复;关闭规则可配置。 | -| 082 | AlertDialog | 危险操作确认;默认聚焦取消;默认不允许点击遮罩关闭。 | -| 083 | Drawer | 四侧展开;尺寸限制;模态或非模态;关闭与焦点恢复。 | -| 084 | Popover | 锚点定位;自动避让窗口边缘;外部点击与 Escape 关闭。 | -| 085 | Tooltip | 悬停或聚焦显示;延迟;边缘避让;不放交互内容。 | -| 086 | HoverCard | 悬停或聚焦预览;允许移入内容;键盘可进入;延迟关闭。 | -| 087 | DropdownMenu | 按钮触发菜单;分组、子菜单、勾选、禁用;操作后按规则关闭。 | -| 088 | ContextMenu | 应用内右键菜单;键盘触发;按指针或焦点定位;边缘避让。 | -| 089 | Popconfirm | 锚点旁确认与取消;说明关联;可聚焦操作;不替代高风险确认框。 | -| 090 | Overlay | 窗口内覆盖层;定位、遮罩、模态行为;与现有 MyGo 浮层协作。 | - -### 4.10 反馈与状态 · 10 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 091 | Alert | 信息、成功、警告、错误;标题、内容、操作;可关闭。 | -| 092 | Toast | 消息队列;去重 ID;操作、关闭、时长;悬停或聚焦时暂停计时。 | -| 093 | Progress | 确定与不确定进度;线形与环形;计量模式支持范围和阈值。 | -| 094 | Spinner | 加载标记;尺寸与说明;隐藏或停止加载后停止动画。 | -| 095 | Skeleton | 文字、圆形、矩形占位;固定内容尺寸;减少动画模式使用静态填充。 | -| 096 | EmptyState | 标题、说明、可选图标与操作;区分无数据和无搜索结果。 | -| 097 | Result | 成功、失败、无权限等结果页;说明与下一步操作;不执行业务跳转。 | -| 098 | StatusIndicator | 状态标记与文字;成功、警告、错误、离线、处理中;不能只靠颜色。 | -| 099 | NotificationCenter | 应用内消息列表;已读、未读、清除、操作;消息与持久化由调用方管理。 | -| 100 | LoadingOverlay | 容器范围加载遮罩;阻止该范围重复操作;说明;可选取消动作。 | - -### 4.11 上游组件归并 - -MyGo 已有能力按以下方式纳入清单,不增加计数。其余同类组件按第 2 节复用。[^native] - -| MyGo 能力 | MujicaUI 对应项 | -| --- | --- | -| Primary button、Menu button | Button 的主按钮变体、DropdownMenu | -| Stepper、Number input | NumberInput 的步进模式与输入模式 | -| Search field、Find bar | SearchInput 的搜索模式与查找栏模式 | -| Autocomplete、Combobox | Combobox 的自由输入与选项选择模式 | -| Token field、Editable text | TagsInput、Text 的可编辑模式 | -| List、Grid view | List 的列表模式与网格模式 | -| Table、Outline、Tree | DataTable、TreeTable、Tree | -| Date input、Time input | DatePicker、TimePicker | -| Back and forward buttons | NavigationMenu 的历史导航操作 | -| Meter、Progress bar | Progress 的计量模式与进度模式 | - -## 5. 交互与状态 - -### 5.1 通用状态 - -| 状态 | 要求 | -| --- | --- | -| 默认 | 内容、边界与可操作性可辨认。 | -| 悬停 | 改变背景或边界,不改变布局尺寸。 | -| 按下 | 显示按下反馈;释放在无效区域时不误触发。 | -| 聚焦 | 键盘焦点可见;选中或错误状态不能覆盖焦点环。 | -| 选中 | 同时使用标记、形状或文字,不只改变颜色。 | -| 禁用 | 不修改值,不执行操作,退出常规 Tab 序列;仍向辅助技术报告禁用。 | -| 只读 | 不修改值;文字仍可聚焦、选择和复制;不得等同于禁用。 | -| 加载 | 保留尺寸与标签;阻止重复提交;完成或失败后恢复操作。 | -| 错误 | 保留输入;显示具体字段错误;提供修正或重试入口。 | - -只为适用组件提供对应状态。展示与布局组件不添加无用途的 Loading、Disabled 等参数。 - -### 5.2 键盘与无障碍 - -所有操作必须能通过键盘完成。Tab 与 Shift+Tab 跨组移动;方向键在 Tabs、菜单、单选组和工具栏内部移动。快捷键遵循平台习惯,不抢占文本编辑和输入法按键。MyGo 已提供焦点组、平台快捷键映射和输入法处理,封装时不得移除。[^input] - -无文字的操作必须提供名称。字段关联标签、说明与错误。复合组件提供对应角色、值、选中、展开和禁用状态。装饰不进入无障碍树。沿用 MyGo 的角色、Label、Description 与 Error 机制。[^accessibility] - -项目对比度下限:正常文字与占位文字 4.5:1;用于识别控件、状态和焦点的图形 3:1。纯装饰边框与禁用状态不按正文处理。采用 WCAG 的对比度计算方法;不以此代替整套无障碍验收。[^text-contrast][^ui-contrast] - -### 5.3 输入与表单 - -文本组件必须保留中文输入法、组合输入、选择、剪贴板、撤销和重做。输入法组合期间不自动提交、不跳到下一格、不拆分尚未提交的文本。PasswordInput 不在日志、测试报告或无障碍值中泄露明文。 - -Form 支持同步校验与调用方提供的异步校验结果;支持失焦和提交时校验。首次提交前不持续显示未触碰字段错误。提交失败保留所有值并定位第一个错误字段。异步旧结果不得覆盖更新后的字段值;提交中不得重复触发。 - -Form 不自带业务模型、远程接口或持久化。跨字段规则由调用方提供。重置恢复调用方给定的初始值,并清除提交与校验状态。 - -### 5.4 数据组件 - -DataTable 以稳定行 ID 和列 ID 保存状态。排序、筛选、列调整后,选择仍指向同一条数据。提供受控模式与可选本地排序、筛选辅助函数;外部数据查询由调用方负责。 - -MyGo Table 提供排序状态和界面交互,但数据仍按调用方提供的顺序显示。MujicaUI 不能只显示排序箭头而不完成排序或向调用方发出排序请求。[^table] - -List、DataTable、Tree、TreeTable 使用虚拟化;不能为全部数据逐项创建界面元素。排序与筛选只在数据或条件变化时执行,不在每帧重复执行。异步加载分别展示首次加载、追加加载、失败和无数据。 - -### 5.5 浮层与消息 - -模态窗口限制焦点并阻止背景交互;非模态浮层不锁住整个窗口。Escape 优先交给输入法和当前编辑控件,再关闭最上层可关闭浮层。关闭后恢复到触发控件;触发控件消失时回到有效父级。复用 MyGo 的浮层和焦点机制。[^overlays] - -弹层在窗口边缘翻转或限高滚动。嵌套 Select、菜单或 Popover 时,不提前关闭父 Dialog。危险操作默认聚焦取消;不得通过 Enter 在未确认目标时执行。 - -Toast 默认显示 5 秒,同一窗口最多同时显示 3 条,其余排队。含操作的消息在悬停或聚焦时暂停计时;错误消息默认保留到用户关闭。消息不得抢走正在输入的焦点。 - -### 5.6 日期、文件与本地化 - -日期选择保存日期值,不因隐式 UTC 转换改变日期。时间范围默认不跨午夜;日期时间由调用方指定时区。无法表示或无法确定的日期时间须提示,不静默修正。 - -FilePicker 只负责选择并返回结果。FileDropZone 只负责接收、校验与展示,不包含上传。文件内容读取、图片解码和网络访问不得阻塞界面线程。取消文件选择不作为错误。 - -组件内置文案提供 `zh-CN` 与 `en-US`,应用可覆盖。日期格式、周起始日、12/24 小时制和数字格式可配置。业务文案由调用方传入,不写死在组件内部。 - -## 6. API 与实现约束 - -### 6.1 API 约定 - -对外包名为 `mujica`。函数首参使用 `*ui.Context`;值通过状态指针或专用状态结构传入;配置使用有类型的 Options。基础组件返回 `*ui.Element`;复合组件按需返回命名部件或状态结果。不用 `map[string]any` 作为常规配置接口。 - -下列为 MujicaUI 的目标接口,不是 MyGo 现有接口: - -```go -func Button(c *ui.Context, label string, opts ButtonOptions) *ui.Element -func TextInput(c *ui.Context, value *string, opts TextInputOptions) *ui.Element -func Checkbox(c *ui.Context, value *bool, label string, opts CheckboxOptions) *ui.Element -``` - -事件沿用 `.Clicked()`、`.Changed()`、`.Submitted()` 的调用习惯。一次操作只产生一次业务事件。禁用、只读、范围等会影响行为的参数须在处理输入前生效,不依赖事后换色。 - -零值 Options 提供默认样式。必填参数、有效范围和空值规则必须写入 API 文档。子内容使用回调或命名插槽,不为每种组合另建组件。原生 MyGo 组件可以与 MujicaUI 混用。 - -### 6.2 状态与生命周期 - -业务状态由应用持有;组件只保留输入、展开、焦点、动画等界面状态。临时状态使用 MyGo 已有机制,不建立第二套全局状态仓库。 - -MyGo 的视图按帧构建,Element 只属于当前帧。不得跨帧缓存 Element,也不得在 goroutine 中操作它。异步结果通过 `Window.Update` 回到界面线程;窗口关闭后取消任务或忽略结果。动态项目使用稳定键;需即时处理输入的组件通过外层有键容器保持身份。[^views] - -缓存只覆盖字体、图标、装饰路径和必要的布局结果。主题、缩放、字体或数据变化时使相关缓存失效。隐藏组件不持续请求重绘。 - -### 6.3 项目结构 - -单仓库、单 Go 模块。组件放在根包,测试与实现同目录;不按组件拆成 100 个包。 - -```text -mujicaui/ -├── go.mod -├── go.sum -├── button.go -├── button_test.go -├── ... 其余组件及对应测试 -├── theme/ 主题、设计变量与对比度测试 -├── icons/ 图标接口与必要资源 -├── internal/ 少量共享实现与上游适配 -├── examples/gallery/ 原生演示应用 -├── docs/components/ 100 个组件文档 -├── testdata/ 测试数据与视觉基准 -├── README.md -├── LICENSE -└── THIRD_PARTY_NOTICES.md -``` - -固定 MyGo 的已验证 tag 或 commit,并提交 go.mod 与 go.sum。Go 最低版本与系统依赖以该版本为准,写入兼容表。不使用浮动 main,不为 Go 库运行引入 Node.js、WebView 或浏览器依赖。 - -## 7. 平台与资源 - -Windows、macOS、Linux 均需运行同一套组件 API。允许字体栅格化、系统窗口按钮和系统对话框不同;不允许缺失组件功能。 - -TitleBar 使用 MyGo 提供的窗口控制预留区域与拖动接口,不覆盖系统按钮。原生路线在 Windows 不要求 WebView2,在 Linux 仍有 GTK 3 等系统依赖,不能把“不使用 WebView”写成“没有运行时依赖”。[^windows] - -测试 100%、125%、150%、200% 显示缩放,以及跨不同缩放显示器移动窗口。文本缩放到 200% 后,不裁掉标签、字段错误和主要操作。Gallery 默认窗口为 1200 × 800 DIP,最小为 800 × 600 DIP;窄宽时折叠导航,长表格横向滚动。 - -发布说明列出已实测的操作系统版本、CPU 架构与 Linux 会话类型。X11、原生 Wayland 和 XWayland 分别记录,不把 XWayland 结果标成原生 Wayland 支持。 - -库和 Gallery 默认离线可用,无遥测、账号和强制网络字体。应用未请求时,不读取文件内容、不连接网络、不写入业务配置。字体可由应用提供;自带资源须记录来源与许可,图标和角饰不得依赖远程请求。 - -## 8. Gallery 与文档 - -Gallery 必须使用 MujicaUI 本身构建,不用网页或截图替代原生组件。提供组件分类、中英文搜索、主题切换、密度切换和示例代码复制。 - -每个组件页面包含可交互示例、适用状态展示、参数控制、事件结果和键盘说明。事件展示不得记录密码。提供设置页、文件列表、表单提交三个组合示例,验证跨组件协作,不接业务后端。 - -文档包含安装、最小运行示例、主题配置、MyGo 兼容版本和平台依赖。每个组件单独一页,列明参数、默认值、状态、事件、键盘操作、可复制代码和限制。所有 Go 示例必须通过编译检查。 - -文档中的组件截图由原生 Gallery 或渲染测试生成。文档可作为静态站发布,但浏览器页面不宣称能运行 Go 原生组件。API 名称与代码使用英文,首版说明文档使用中文。 - -## 9. 测试与性能 - -### 9.1 功能测试 - -使用 MyGo `ui.NewTester` 执行无窗口点击、键盘、输入、滚动与状态测试;使用图像快照检查渲染。MyGo 测试接口还提供缩放、主题、偏好和输入法组合模拟。[^testing] - -每个组件均需覆盖适用的正常、边界、错误与键盘路径。复用上游不免除封装层测试;新增样式不能破坏点击区域、焦点与无障碍名称。 - -快照覆盖全部组件的浅色、深色默认状态。六个视觉基准组件额外覆盖三种密度和全部适用交互状态。各平台使用独立字体与快照基准,不要求不同系统逐像素相同。 - -真机补测系统文件选择、窗口控制、中文输入法、跨屏缩放与屏幕阅读器。无窗口测试不能替代这些项目。发布测试记录包含 VoiceOver、Windows Narrator 或 NVDA,以及 Linux Orca 的结果。 - -### 9.2 性能要求 - -以下为验收目标,不是已测量结果。三个平台各固定一台基准设备,记录 CPU、GPU、内存、系统、驱动、字体、显示缩放与 MyGo 版本;使用发布构建,关闭 Inspector。 - -| 场景 | 验收要求 | -| --- | --- | -| 大列表 | 100,000 条固定高度记录可滚动、搜索和选择;每帧创建的元素数量由可见区域与预取范围决定。 | -| 大表格 | 100,000 行、10 列纯文本数据;排序与筛选后保留有效选择;不逐帧重算排序。 | -| 大树 | 100,000 个节点;折叠子树不创建界面元素;展开、搜索与滚动不阻塞输入。 | -| 渲染开销 | 同设备、同尺寸、同内容,对有等价上游实现的控件比较;MujicaUI 的界面构建与绘制 P95 耗时增幅不超过 20%。 | -| 空闲 | 关闭加载和过渡动画后,连续观察 60 秒,无组件定时器或自身逻辑持续触发重绘。 | -| 生命周期 | 连续打开、关闭同一弹层 100 次;回收后无持续增加的组件实例、后台任务或事件订阅。 | - -持续集成执行格式检查、静态检查、单元测试、示例编译与快照检查。支持的环境运行竞态检测。平台集成与性能结果随发布保存,不用单一平台的结果代替三平台验证。 - -## 10. 发布验收 - -代码采用 MIT 许可证。仓库保留第三方声明;任何复制的上游代码须保留其声明。发布 Go 模块、源码、三平台 Gallery 构建产物、文档和兼容表。 - -| 验收项 | 通过条件 | -| --- | --- | -| 数量 | 001—500 均有实现、文档、Gallery 示例与测试;变体不重复计数。 | -| 功能 | 每项最低功能可操作;不存在占位按钮、空事件或仅静态展示的交互组件。 | -| 样式 | 全部组件覆盖浅深主题;无 MyGo 默认外观混入;系统控制的界面按已声明例外处理。 | -| 主题与密度 | 切换无需重启;业务状态、焦点与滚动位置不丢失;无文字裁切。 | -| 输入与无障碍 | 键盘、中文输入法、焦点恢复、标签关联与屏幕阅读器测试通过。 | -| 数据与生命周期 | 大数据测试通过;无状态串行、重复提交、后台任务或订阅泄漏。 | -| 三平台 | 兼容表内的平台及架构均完成构建和实机验证;限制写入对应文档。 | -| 交付 | 固定依赖、示例可编译、Gallery 可运行、默认离线可用、资源许可齐全。 | - -首次公开发布须满足全部验收项,不以占位组件或后续补齐代替首版范围。 - -## 参考资料 - -上游能力核验日期:2026-10-05。实现与发布以固定依赖版本的代码为准。 - -[^native]: MyGo — [Native UI](https://mygo.egoist.dev/docs/ui). -[^bases]: MyGo — [Custom widgets](https://mygo.egoist.dev/docs/ui/custom-widgets). -[^theme]: MyGo — [Styling and themes](https://mygo.egoist.dev/docs/ui/styling). -[^text]: MyGo — [Text](https://mygo.egoist.dev/docs/ui/text). -[^input]: MyGo — [Input](https://mygo.egoist.dev/docs/ui/input). -[^accessibility]: MyGo — [Accessibility](https://mygo.egoist.dev/docs/ui/accessibility). -[^table]: MyGo — [Table](https://mygo.egoist.dev/docs/ui/table). -[^overlays]: MyGo — [Overlays](https://mygo.egoist.dev/docs/ui/overlays). -[^views]: MyGo — [Views](https://mygo.egoist.dev/docs/ui/views). -[^windows]: MyGo — [Windows with native UI](https://mygo.egoist.dev/docs/ui/windows). -[^testing]: MyGo — [Testing](https://mygo.egoist.dev/docs/ui/testing). -[^text-contrast]: W3C — [Contrast (Minimum)](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html). -[^ui-contrast]: W3C — [Non-text Contrast](https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast.html). diff --git a/TASKS.md b/TASKS.md deleted file mode 100644 index d3c27b5..0000000 --- a/TASKS.md +++ /dev/null @@ -1,47 +0,0 @@ -# TASKS - -Ordered by PRD sections. Check an item only after its codex review passes. Review rounds noted as `r1`, `r2`, `r3`. - -- [x] T01 §1–2 Module, MyGo v0.2.10 pin, reuse rules, AGENTS.md — r1 FAIL (line height, enum checks), r2 PASS -- [x] T02 §3 Tokens, density, type, motion, contrast tests, `Use`, icons, i18n — r1 FAIL, r2 PASS -- [x] T03 §4.1 Layout 001–010 — r1 FAIL 8, r2 FAIL 2, r3 FAIL 1 (folded focus); fixed b34958b, verified by coordinator red/green after cap -- [x] T04 §4.2 Display 011–020 — r1 FAIL 5, r2 FAIL 5, r3 FAIL 2 (image sizing, Retry clip); fixed e922651, verified by coordinator tests and snapshot after cap -- [x] T05 §4.3 Inputs 021–030 — r1 FAIL 10, r2 FAIL 5, r3 FAIL 2 (float grid, password in test output); fixed 07a90f4, verified by coordinator red/green after cap -- [x] T06 §4.4 Choices 031–040 — r1 FAIL 16, r2 FAIL 5, r3 FAIL 1 (tiny-step direction); fixed 9e78900, verified by coordinator red/green after cap -- [x] T07 §4.5 Forms 041–050 — r1 FAIL 7, r2 FAIL 4, r3 FAIL 1 (disabled cut); fixed 49b3b78, coordinator red/green verified -- [x] T08 §4.6 Date and time 051–058 — r1 FAIL 9, r2 FAIL 5, r3 FAIL 2 (popup pick commit, selection mark); fixed e3eaef7, coordinator red/green verified -- [x] T09 §4.7 Navigation 059–068 — r1 FAIL 5, r2 FAIL 5, r3 FAIL 1 (Tab out of menubar); fixed 7e4d862, coordinator red/green verified -- [x] T10 §4.8 Content and data 069–080 — r1 FAIL 9, r2 FAIL 4, r3 PASS -- [x] T11 §4.9 Overlays and menus 081–090 — r1 FAIL 12, r2 FAIL 5, r3 PASS -- [x] T12 §4.10 Feedback 091–100 — r1 FAIL 5, r2 FAIL 4, r3 PASS -- [ ] T12.01 §4.12 Charts I 101–120 (docs/prd) -- [ ] T12.02 §4.13 Charts II 121–140 (docs/prd) -- [ ] T12.03 §4.14 Market Charts 141–160 (docs/prd) -- [ ] T12.04 §4.15 Trading 161–180 (docs/prd) -- [ ] T12.05 §4.16 Markets 181–200 (docs/prd) -- [ ] T12.06 §4.17 Chat Messages 201–220 (docs/prd) -- [ ] T12.07 §4.18 Chat Input 221–240 (docs/prd) -- [ ] T12.08 §4.19 Chat Sessions 241–260 (docs/prd) -- [ ] T12.09 §4.20 Agent 261–280 (docs/prd) -- [ ] T12.10 §4.21 Agent Ops & Motion 281–300 (docs/prd) -- [ ] T12.11 §4.22 Git 301–320 (docs/prd) -- [ ] T12.12 §4.23 Terminal & Code 321–340 (docs/prd) -- [ ] T12.13 §4.24 Media 341–360 (docs/prd) -- [ ] T12.14 §4.25 Projects 361–380 (docs/prd) -- [ ] T12.15 §4.26 Files & Collaboration 381–400 (docs/prd) -- [ ] T12.16 §4.27 Messaging & Mail 401–420 (docs/prd) -- [ ] T12.17 §4.28 Calendar 421–440 (docs/prd) -- [ ] T12.18 §4.29 Dashboards & Dev Tools 441–460 (docs/prd) -- [ ] T12.19 §4.30 Settings & Account 461–480 (docs/prd) -- [ ] T12.20 §4.31 Essentials 481–500 (docs/prd) -- [ ] T13 §4.11 Upstream mapping documented -- [ ] T14 §5 States, keyboard, a11y, input, overlays: cross-cutting tests -- [ ] T15 §6 API and lifecycle audit; README, LICENSE, THIRD_PARTY_NOTICES -- [ ] T16 §7 Platform table, offline, resources -- [ ] T17 §8 Native Gallery: categories, zh/en search, theme, density, code copy, three composite demos -- [ ] T18 §8 Web mirror of the Gallery (user request) -- [ ] T19 §8 Docs: install, minimal example, theme, compat; 100 component pages; examples compile -- [ ] T20 §9 Snapshots, density baselines, large-data and lifecycle tests -- [ ] T21 §9 CI workflow -- [ ] T22 §6.3 Split into category sub-packages after 001–500 land (user decision 2026-10-05); update PRD §6.3, docs, Gallery, CI -- [ ] T23 §10 Acceptance checklist diff --git a/chart_annotation.go b/chart_annotation.go index 75145d3..92e7bf8 100644 --- a/chart_annotation.go +++ b/chart_annotation.go @@ -1,7 +1,9 @@ package mujica import ( + "fmt" "log/slog" + "math" "github.com/egoist/mygo/ui" @@ -38,23 +40,24 @@ type ChartAnnotationOptions struct { // ChartAnnotationPart is notes ready to draw, and to drag. type ChartAnnotationPart struct { + c *ui.Context notes []ChartNote opts ChartAnnotationOptions k theme.Tokens size float32 } -// ChartAnnotation marks lines, bands and text on a plot; dragging writes into notes. +// ChartAnnotation draws notes and enables optional movement. func ChartAnnotation(c *ui.Context, notes []ChartNote, opts ChartAnnotationOptions) ChartAnnotationPart { if opts.X == nil || opts.Y == nil { panic("mujica: ChartAnnotation needs X and Y axes") } for _, n := range notes { - if n.Kind > NoteText || n.Kind == NoteBand && n.End <= n.Value || n.Kind == NoteText && n.Text == "" { + if n.Kind < NoteHLine || n.Kind > NoteText || math.IsNaN(n.Value) || math.IsInf(n.Value, 0) || math.IsNaN(n.End) || math.IsInf(n.End, 0) || n.Kind == NoteBand && n.End <= n.Value || n.Kind == NoteText && n.Text == "" { panic("mujica: ChartAnnotation note needs a known kind, a band End above Value, and text") } } - return ChartAnnotationPart{notes: notes, opts: opts, k: Tokens(c), size: FontSize(c, theme.CaptionSize)} + return ChartAnnotationPart{c: c, notes: notes, opts: opts, k: Tokens(c), size: FontSize(c, theme.CaptionSize)} } // Draw paints bands first, then lines and text, inside plot. @@ -105,7 +108,7 @@ func chartDash(p *ui.Painter, x0, y0, x1, y1 float32, col ui.Color) { } } -// chartNoteLabel is a line's text, or its value when it has none. +// chartNoteLabel formats a line's label and value. func chartNoteLabel(n ChartNote, a *ChartAxisPart) string { if n.Text != "" { return n.Text + " " + a.Label(n.Value) @@ -118,8 +121,14 @@ type noteDrag struct { note int } -// Drag moves the draggable note under the pointer while plot is dragged; r is plot's box. +// Drag handles movement; plot uses element coordinates. func (a ChartAnnotationPart) Drag(plotElement *ui.Element, plot ui.Rect) bool { + if plotElement.IsDisabled() { + return false + } + if a.keyboard(plotElement) { + return true + } st := ui.Local(plotElement, "mujica.notes.drag", func() noteDrag { return noteDrag{} }) dx, dy, held := plotElement.Dragged() if !held || plotElement.IsDisabled() { @@ -174,3 +183,68 @@ func (a ChartAnnotationPart) Drag(plotElement *ui.Element, plot ui.Rect) bool { slog.Debug("mujica: chart_annotation drag", "note", st.note, "value", n.Value) return true } + +func (a ChartAnnotationPart) keyboard(e *ui.Element) bool { + index := ui.Local(e, "mujica.notes.key", func() int { return 0 }) + dir := 0 + if e.Shortcut(ui.Alt, ui.KeyPageDown) { + dir = 1 + } + if e.Shortcut(ui.Alt, ui.KeyPageUp) { + dir = -1 + } + var editable []int + for i, n := range a.notes { + if n.Draggable { + editable = append(editable, i) + } + } + if len(editable) == 0 { + return false + } + *index = (*index + dir + len(editable)) % len(editable) + n := &a.notes[editable[*index]] + dx, dy := 0.0, 0.0 + if e.Shortcut(ui.Alt, ui.KeyRight) { + dx = 1 + } + if e.Shortcut(ui.Alt, ui.KeyLeft) { + dx = -1 + } + if e.Shortcut(ui.Alt, ui.KeyUp) { + dy = 1 + } + if e.Shortcut(ui.Alt, ui.KeyDown) { + dy = -1 + } + xstep := (a.opts.X.hi - a.opts.X.lo) / 100 + ystep := (a.opts.Y.hi - a.opts.Y.lo) / 100 + before := *n + switch n.Kind { + case NoteHLine: + n.Value += dy * ystep + case NoteVLine: + n.Value += dx * xstep + case NoteBand: + n.Value, n.End = n.Value+dx*xstep, n.End+dx*xstep + case NoteText: + n.Value, n.End = n.Value+dx*xstep, n.End+dy*ystep + } + if dir != 0 || before != *n { + key := "chart_annotation.x" + value := a.opts.X.Label(n.Value) + switch n.Kind { + case NoteHLine: + key, value = "chart_annotation.y", a.opts.Y.Label(n.Value) + case NoteBand: + value += "–" + a.opts.X.Label(n.End) + case NoteText: + value += " · " + fmt.Sprintf(msg(a.c, "chart_annotation.y"), a.opts.Y.Label(n.End)) + } + text := fmt.Sprintf(msg(a.c, "chart_annotation.readout"), editable[*index]+1, fmt.Sprintf(msg(a.c, key), value)) + e.Description(text) + a.c.Announce(text) + slog.Debug("mujica: chart_annotation keyboard", "note", editable[*index], "value", n.Value) + } + return before != *n +} diff --git a/chart_annotation_test.go b/chart_annotation_test.go index 8558c69..8eecf18 100644 --- a/chart_annotation_test.go +++ b/chart_annotation_test.go @@ -2,6 +2,7 @@ package mujica import ( "math" + "strings" "testing" "github.com/egoist/mygo/ui" @@ -20,7 +21,7 @@ func TestChartAnnotationDrag(t *testing.T) { plot := chartInset(ui.Rect{X: b.X, Y: b.Y, W: b.W, H: 240}, 52, 26) yAt := func(v float32) float32 { return plot.Y + plot.H*(1-v/100) } xAt := func(v float32) float32 { return plot.X + plot.W*v/10 } - // Drag the Goal line up by a fifth of the plot: 50 becomes 70. + // Drag Goal from 50 to 70. tt.Press(xAt(4), yAt(50)) tt.Move(xAt(4), yAt(60)) tt.Move(xAt(4), yAt(70)) @@ -78,3 +79,43 @@ func TestChartAnnotationSnapshot(t *testing.T) { ui.Column(c).Padding(16).Children(func() { partsChart(c, notes, false) }) }) } + +func TestChartAnnotationKeyboardEditsEveryKind(t *testing.T) { + notes := []ChartNote{ + {Kind: NoteHLine, Value: 50, Draggable: true}, + {Kind: NoteVLine, Value: 3, Draggable: true}, + {Kind: NoteBand, Value: 6, End: 8, Draggable: true}, + {Kind: NoteText, Value: 1, End: 90, Text: "Feast", Draggable: true}, + } + h := &chartHarness{build: func(c *ui.Context) ChartResult { return partsChart(c, notes, false) }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Parts") + tt.Key(ui.Alt, ui.KeyUp) + if notes[0].Value != 51 { + t.Fatalf("horizontal line %v", notes[0].Value) + } + if said := tt.Announcements(); len(said) == 0 || !strings.Contains(said[len(said)-1], "y 51") { + t.Fatalf("horizontal readout %q", said) + } + tt.Key(ui.Alt, ui.KeyPageDown) + tt.Key(ui.Alt, ui.KeyRight) + if notes[1].Value != 3.1 { + t.Fatalf("vertical line %v", notes[1].Value) + } + tt.Key(ui.Alt, ui.KeyPageDown) + tt.Key(ui.Alt, ui.KeyRight) + if math.Abs(notes[2].Value-6.1) > 1e-9 || notes[2].End-notes[2].Value != 2 { + t.Fatalf("band %+v", notes[2]) + } + tt.Key(ui.Alt, ui.KeyPageDown) + tt.Key(ui.Alt, ui.KeyUp) + if notes[3].End != 91 { + t.Fatalf("text %+v", notes[3]) + } + h.disabled = true + tt.Frame() + tt.Key(ui.Alt, ui.KeyUp) + if notes[3].End != 91 { + t.Fatalf("disabled text %+v", notes[3]) + } +} diff --git a/chart_axis.go b/chart_axis.go index 7c2c613..dd27c04 100644 --- a/chart_axis.go +++ b/chart_axis.go @@ -16,7 +16,7 @@ type ChartAxisKind int const ( AxisLinear ChartAxisKind = iota - // AxisLog maps powers of ten evenly; Min must be above zero. + // AxisLog maps powers of ten; Min must be positive. AxisLog // AxisTime maps From..To; values are Unix seconds. AxisTime @@ -45,11 +45,11 @@ type ChartAxisOptions struct { Categories []string // Ticks fixes the tick values; nil picks them. Ticks []float64 - // Format writes tick and readout labels; nil picks one per kind. + // Format overrides tick and readout labels. Format func(v float64) string } -// ChartAxisPart is an axis ready to map values and draw itself in a plot. +// ChartAxisPart maps values and draws an axis. type ChartAxisPart struct { opts ChartAxisOptions lo, hi float64 @@ -66,7 +66,7 @@ func ChartAxis(c *ui.Context, opts ChartAxisOptions) ChartAxisPart { switch opts.Kind { case AxisLinear, AxisLog: a.lo, a.hi = opts.Min, opts.Max - if !(a.hi > a.lo) || opts.Kind == AxisLog && a.lo <= 0 { + if !(a.hi > a.lo) || math.IsInf(a.lo, 0) || math.IsInf(a.hi, 0) || opts.Kind == AxisLog && a.lo <= 0 { panic("mujica: ChartAxis needs Min < Max, and Min > 0 for a log axis") } case AxisTime: @@ -82,10 +82,15 @@ func ChartAxis(c *ui.Context, opts ChartAxisOptions) ChartAxisPart { default: panic("mujica: unknown ChartAxisKind") } - if opts.Side > SideTop { + if opts.Side < SideBottom || opts.Side > SideTop { panic("mujica: unknown ChartSide") } a.ticks = opts.Ticks + for i, v := range a.ticks { + if math.IsNaN(v) || math.IsInf(v, 0) || v < a.lo || v > a.hi || i > 0 && v <= a.ticks[i-1] { + panic("mujica: ChartAxis ticks must ascend inside the domain") + } + } if a.ticks == nil { a.ticks = a.autoTicks() } @@ -99,7 +104,7 @@ func (a *ChartAxisPart) autoTicks() []float64 { var out []float64 switch a.opts.Kind { case AxisLog: - // Powers of ten, with 2 and 5 between them on short spans. + // Short spans include powers of two and five. mants := []float64{1} if a.hi/a.lo < 1000 { mants = []float64{1, 2, 5} @@ -118,9 +123,14 @@ func (a *ChartAxisPart) autoTicks() []float64 { out = append(out, chartSeconds(t)) } case AxisCategory: - for i := range a.opts.Categories { + n := len(a.opts.Categories) + step := max(1, (n+63)/64) + for i := 0; i < n; i += step { out = append(out, float64(i)) } + if out[len(out)-1] != float64(n-1) { + out = append(out, float64(n-1)) + } default: lo, hi, step := internal.Nice(a.lo, a.hi, 5) a.step = step @@ -138,7 +148,7 @@ func (a ChartAxisPart) horizontal() bool { return a.opts.Side == SideBottom || a.opts.Side == SideTop } -// fraction is how far along the axis v lies, 0 to 1. +// fraction returns the normalized position along the axis. func (a ChartAxisPart) fraction(v float64) float64 { if a.opts.Kind == AxisLog { return (math.Log10(v) - math.Log10(a.lo)) / (math.Log10(a.hi) - math.Log10(a.lo)) @@ -146,7 +156,7 @@ func (a ChartAxisPart) fraction(v float64) float64 { return (v - a.lo) / (a.hi - a.lo) } -// Map returns the pixel of v along the axis inside plot. +// Map returns the pixel position of v. func (a ChartAxisPart) Map(plot ui.Rect, v float64) float32 { f := float32(a.fraction(v)) if a.horizontal() { @@ -155,7 +165,7 @@ func (a ChartAxisPart) Map(plot ui.Rect, v float64) float32 { return plot.Y + plot.H - f*plot.H } -// Invert returns the value at pixel px along the axis inside plot. +// Invert returns the value at a pixel position. func (a ChartAxisPart) Invert(plot ui.Rect, px float32) float64 { f := float64((px - plot.X) / plot.W) if !a.horizontal() { @@ -191,7 +201,7 @@ func (a ChartAxisPart) Label(v float64) string { return strconv.FormatFloat(v, 'g', 6, 64) } -// readout writes v one decimal finer than ticks, for crosshair labels. +// readout uses finer precision than ticks. func (a ChartAxisPart) readout(v float64) string { switch { case a.opts.Format != nil, a.opts.Kind == AxisCategory, a.opts.Kind == AxisTime: @@ -204,11 +214,16 @@ func (a ChartAxisPart) readout(v float64) string { return strconv.FormatFloat(v, 'g', 6, 64) } -// Draw paints the axis line and tick labels on its side of plot. +// Draw paints the axis line and tick labels. func (a ChartAxisPart) Draw(p *ui.Painter, plot ui.Rect) { - pos := make([]float32, len(a.ticks)) - labels := make([]string, len(a.ticks)) - for i, t := range a.ticks { + spacing := a.size * 2 + if a.horizontal() { + spacing = a.size * 4 + } + ticks := a.drawTicks(plot, spacing) + pos := make([]float32, len(ticks)) + labels := make([]string, len(ticks)) + for i, t := range ticks { pos[i], labels[i] = a.Map(plot, t), a.Label(t) } k := a.k @@ -227,3 +242,23 @@ func (a ChartAxisPart) Draw(p *ui.Painter, plot ui.Rect) { internal.LabelsY(p, plot.X+plot.W+6, pos, labels, true, a.size, k) } } + +func (a ChartAxisPart) drawTicks(plot ui.Rect, spacing float32) []float64 { + length := plot.H + if a.horizontal() { + length = plot.W + } + limit := max(2, int(length/max(spacing, 1))) + if len(a.ticks) <= limit { + return a.ticks + } + step := (len(a.ticks) + limit - 1) / limit + out := make([]float64, 0, limit+1) + for i := 0; i < len(a.ticks); i += step { + out = append(out, a.ticks[i]) + } + if out[len(out)-1] != a.ticks[len(a.ticks)-1] { + out = append(out, a.ticks[len(a.ticks)-1]) + } + return out +} diff --git a/chart_axis_test.go b/chart_axis_test.go index 595df10..447f1cb 100644 --- a/chart_axis_test.go +++ b/chart_axis_test.go @@ -53,11 +53,15 @@ func TestChartAxisTimeAndCategory(t *testing.T) { func TestChartAxisBad(t *testing.T) { for name, o := range map[string]ChartAxisOptions{ - "empty": {}, - "log zero": {Kind: AxisLog, Min: 0, Max: 10}, - "time": {Kind: AxisTime}, - "category": {Kind: AxisCategory}, - "side": {Min: 0, Max: 1, Side: 9}, + "empty": {}, + "log zero": {Kind: AxisLog, Min: 0, Max: 10}, + "time": {Kind: AxisTime}, + "category": {Kind: AxisCategory}, + "side": {Min: 0, Max: 1, Side: 9}, + "negative side": {Min: 0, Max: 1, Side: -1}, + "infinite domain": {Min: 0, Max: math.Inf(1)}, + "outside tick": {Min: 0, Max: 1, Ticks: []float64{2}}, + "infinite tick": {Min: 0, Max: 1, Ticks: []float64{math.Inf(1)}}, } { func() { defer func() { @@ -70,7 +74,7 @@ func TestChartAxisBad(t *testing.T) { } } -// partsChart composes the public parts into a custom chart over three points. +// partsChart composes public parts over three points. func partsChart(c *ui.Context, notes []ChartNote, crosshair bool) ChartResult { pts := [][2]float64{{2, 30}, {5, 80}, {8, 55}} x := ChartAxis(c, ChartAxisOptions{Min: 0, Max: 10}) @@ -127,3 +131,27 @@ func TestChartAxisSnapshot(t *testing.T) { }) }) } + +func TestChartAxisLargeCategoriesBounded(t *testing.T) { + categories := make([]string, 100_000) + for i := range categories { + categories[i] = fmt.Sprint(i) + } + a := axisIn(ChartAxisOptions{Kind: AxisCategory, Categories: categories}) + if n := len(a.Ticks()); n > 65 || n == 0 { + t.Fatalf("built %d category ticks", n) + } + if a.Label(99999) != "99999" || a.Map(ui.Rect{W: 1000}, 99999) < 999 { + t.Fatal("last category mapping") + } +} + +func charts2MustPanic(t *testing.T, view func(*ui.Context)) { + t.Helper() + defer func() { + if recover() == nil { + t.Error("invalid options accepted") + } + }() + ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); view(c) }, 320, 240) +} diff --git a/chart_brush.go b/chart_brush.go index 08070e0..d4a0da3 100644 --- a/chart_brush.go +++ b/chart_brush.go @@ -17,7 +17,7 @@ type ChartBrushOptions struct { Label string // Min and Max span the track; Min < Max. Min, Max float64 - // Step is the grid both ends snap to; 0 means a hundredth of the span. + // Step defaults to one hundredth of the span. Step float64 // Values draws a preview line across the track. Values []float64 @@ -33,10 +33,10 @@ type brushDrag struct { start float64 } -// ChartBrush selects the range *value on a track: drag the window or its ends, or use the keys. +// ChartBrush selects a range with dragging and keyboard controls. func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) ChoiceResult { - if opts.Label == "" || !(opts.Max > opts.Min) || opts.Step < 0 || opts.Height < 0 { - panic("mujica: ChartBrush needs a Label, Min < Max, Step ≥ 0 and Height ≥ 0") + if opts.Label == "" || !(opts.Max > opts.Min) || math.IsInf(opts.Min, 0) || math.IsInf(opts.Max, 0) || math.IsNaN(opts.Step) || math.IsInf(opts.Step, 0) || opts.Step < 0 || math.IsNaN(float64(opts.Height)) || math.IsInf(float64(opts.Height), 0) || opts.Height != 0 && opts.Height < theme.MinHitSize { + panic("mujica: ChartBrush needs a Label, finite domain and step, and Height ≥ 28") } step := opts.Step if step == 0 { @@ -63,7 +63,7 @@ func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) Choice track := ui.Box(c).Height(h).FillWidth().MinWidth(0).Radius(theme.ControlRadius).Background(k.SurfaceHover) b := track.Bounds() internal.Remeasure(c, track, b.W, b.H) - at := func(v float64) float32 { return float32((v - opts.Min) / (opts.Max - opts.Min)) * b.W } + at := func(v float64) float32 { return float32((v-opts.Min)/(opts.Max-opts.Min)) * b.W } from := func(px float32) float64 { return opts.Min + float64(px/max(b.W, 1))*(opts.Max-opts.Min) } drag := ui.Local(track, "mujica.brush.drag", func() brushDrag { return brushDrag{part: -1} }) set := func(lo, hi float64) { @@ -72,11 +72,28 @@ func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) Choice *value = [2]float64{lo, hi} } } - track.Draw(func(p *ui.Painter, r ui.Rect) { brushPaint(p, r, *value, opts, k) }) + move := func(lo, hi float64) { + w := hi - lo + lo = max(spec.lo, min(lo, spec.hi-w)) + set(lo, lo+w) + } + preview := ui.Local(track, "mujica.brush.preview", func() brushPreview { return brushPreview{} }) + if id := chartID(opts.Values); preview.id != id { + *preview = brushPreview{id: id, lo: math.Inf(1), hi: math.Inf(-1)} + for _, v := range opts.Values { + if math.IsInf(v, 0) { + panic("mujica: ChartBrush preview values must be finite or NaN") + } + if !math.IsNaN(v) { + preview.lo, preview.hi = min(preview.lo, v), max(preview.hi, v) + } + } + } + track.Draw(func(p *ui.Painter, r ui.Rect) { brushPaint(p, r, *value, opts, k, preview) }) track.Children(func() { x0, x1 := at(value[0]), at(value[1]) end := func(i int, x float32) *ui.Element { - e := ui.Box(c).Absolute().Left(x - theme.MinHitSize/2).Top(0).Size(theme.MinHitSize, h).Focusable(). + e := ui.Box(c).Absolute().Left(x-theme.MinHitSize/2).Top(0).Size(theme.MinHitSize, h).Focusable(). Role(ui.RoleSlider).Label(fmt.Sprintf(msg(c, []string{"chart_brush.start", "chart_brush.end"}[i]), val(value[i]))) internal.Ring(e, k.Focus, theme.ControlRadius) return e.Draw(func(p *ui.Painter, r ui.Rect) { @@ -86,11 +103,12 @@ func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) Choice } // Tab order runs start, window, end. ends := [2]*ui.Element{end(0, x0)} - window := ui.Box(c).Absolute().Left(x0 + theme.MinHitSize/2).Top(0).Width(max(x1-x0-theme.MinHitSize, 1)).Height(h).Focusable(). + window := ui.Box(c).Absolute().Left(x0 + theme.MinHitSize/2).Top(0).Width(max(x1-x0-theme.MinHitSize, theme.MinHitSize)).Height(h).Focusable(). Role(ui.RoleGroup).Label(fmt.Sprintf(msg(c, "chart_brush.window"), opts.Label, val(value[0]), val(value[1]))) internal.Ring(window, k.Focus, theme.ControlRadius) ends[1] = end(1, x1) if res.Element.IsDisabled() { + drag.part = -1 return } for i, end := range ends { @@ -116,19 +134,23 @@ func ChartBrush(c *ui.Context, value *[2]float64, opts ChartBrushOptions) Choice case window.Shortcut(0, ui.KeyEnd): set(spec.hi-w, spec.hi) } - brushPointer(track, window, ends, drag, value, from, set) + brushPointer(track, window, ends, drag, value, from, set, move) }) ui.Text(c, val(value[0])+" – "+val(value[1])).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.TextMuted).Role(ui.RoleStatus) }) res.changed = *value != before if res.changed { + c.Announce(fmt.Sprintf(msg(c, "chart_brush.window"), opts.Label, val(value[0]), val(value[1]))) slog.Debug("mujica: chart_brush range", "from", value[0], "to", value[1]) } return res } -// brushKey steps an end for the arrow, Page, Home and End keys. +// brushKey handles arrow, Page, Home and End keys. func brushKey(e *ui.Element, v float64, spec numberInputSpec) (float64, bool) { + if e.IsDisabled() { + return v, false + } switch { case e.Shortcut(0, ui.KeyLeft), e.Shortcut(0, ui.KeyDown): return spec.stepBy(v, -1), true @@ -146,8 +168,8 @@ func brushKey(e *ui.Element, v float64, spec numberInputSpec) (float64, bool) { return v, false } -// brushPointer drags an end, the window, or a new range across the track. -func brushPointer(track, window *ui.Element, ends [2]*ui.Element, drag *brushDrag, value *[2]float64, from func(float32) float64, set func(lo, hi float64)) { +// brushPointer drags handles, the window, or a new range. +func brushPointer(track, window *ui.Element, ends [2]*ui.Element, drag *brushDrag, value *[2]float64, from func(float32) float64, set, move func(lo, hi float64)) { px, _, _ := track.PointerPosition() at := from(px) parts := []*ui.Element{ends[0], ends[1], window, track} @@ -171,34 +193,43 @@ func brushPointer(track, window *ui.Element, ends [2]*ui.Element, drag *brushDra case 1: set(value[0], max(at, value[0])) case 2: - set(at-drag.grab, at-drag.grab+w) + lo := at - drag.grab + // Shift both ends together at a boundary. + move(lo, lo+w) default: set(min(drag.start, at), max(drag.start, at)) } } -// brushPaint draws the preview line, dims outside the range and frames the window. -func brushPaint(p *ui.Painter, r ui.Rect, value [2]float64, opts ChartBrushOptions, k theme.Tokens) { - lo, hi := math.Inf(1), math.Inf(-1) - for _, v := range opts.Values { - if !math.IsNaN(v) { - lo, hi = min(lo, v), max(hi, v) - } - } +// brushPaint draws the preview and frames the selected range. +type brushPreview struct { + id string + lo, hi float64 + width float32 + runs [][]int +} + +func brushPaint(p *ui.Painter, r ui.Rect, value [2]float64, opts ChartBrushOptions, k theme.Tokens, preview *brushPreview) { + lo, hi := preview.lo, preview.hi if n := len(opts.Values); n > 1 && hi > lo { - x := func(i int) float32 { return r.X + r.W*float32(i)/float32(n-1) } - chartRuns(opts.Values, x, func(idx []int) { + x := func(i int) float32 { return r.W * float32(i) / float32(n-1) } + if preview.width != r.W || preview.runs == nil { + preview.width, preview.runs = r.W, nil + chartRuns(opts.Values, x, func(idx []int) { preview.runs = append(preview.runs, idx) }) + } + for _, idx := range preview.runs { var line ui.Path for j, i := range idx { - y := r.Y + 4 + (r.H-8)*float32(1-(opts.Values[i]-lo)/(hi-lo)) + px := internal.Snap(p, r.X+x(i)) + py := internal.Snap(p, r.Y+4+(r.H-8)*float32(1-(opts.Values[i]-lo)/(hi-lo))) if j == 0 { - line.MoveTo(x(i), y) + line.MoveTo(px, py) } else { - line.LineTo(x(i), y) + line.LineTo(px, py) } } p.StrokePath(&line, 1.25, k.TextMuted) - }) + } } x0 := r.X + r.W*float32((value[0]-opts.Min)/(opts.Max-opts.Min)) x1 := r.X + r.W*float32((value[1]-opts.Min)/(opts.Max-opts.Min)) diff --git a/chart_brush_test.go b/chart_brush_test.go index 17c9490..86d83b8 100644 --- a/chart_brush_test.go +++ b/chart_brush_test.go @@ -2,6 +2,7 @@ package mujica import ( "fmt" + "math" "testing" "github.com/egoist/mygo/ui" @@ -121,3 +122,45 @@ func TestChartBrushSnapshot(t *testing.T) { }) }) } + +func TestChartBrushWindowDragPreservesSpanAtEdges(t *testing.T) { + h := &brushHarness{value: [2]float64{20, 60}} + tt := ui.NewTester(h.view, 460, 200) + b := h.el.Bounds() + tt.Press(b.X+160, b.Y+24) + tt.Move(b.X+380, b.Y+24) + tt.Release(b.X+380, b.Y+24) + if h.value != [2]float64{60, 100} { + t.Fatalf("right edge shrank window: %v", h.value) + } + tt.Press(b.X+320, b.Y+24) + tt.Move(b.X-50, b.Y+24) + tt.Release(b.X-50, b.Y+24) + if h.value != [2]float64{0, 40} { + t.Fatalf("left edge shrank window: %v", h.value) + } +} + +func TestChartBrushInvalidMetrics(t *testing.T) { + for _, o := range []ChartBrushOptions{ + {Label: "Range", Max: 100, Step: math.Inf(1)}, + {Label: "Range", Max: math.Inf(1)}, + {Label: "Range", Max: 100, Height: 10}, + } { + charts2MustPanic(t, func(c *ui.Context) { v := [2]float64{20, 40}; ChartBrush(c, &v, o) }) + } +} + +func TestChartBrushNarrowRangeHitAndAnnouncement(t *testing.T) { + h := &brushHarness{value: [2]float64{40, 41}} + tt := ui.NewTester(h.view, 460, 200) + b, ok := tt.Find("Months: 40 to 41") + if !ok || b.W < 28 || b.H < 28 { + t.Fatalf("window hit area %v", b) + } + tabTo(t, tt, "Months: 40 to 41") + tt.Key(0, ui.KeyRight) + if said := tt.Announcements(); len(said) == 0 || said[len(said)-1] != "Months: 41 to 42" { + t.Fatalf("window announcement %q", said) + } +} diff --git a/chart_crosshair.go b/chart_crosshair.go index f8b9a1d..d25ba55 100644 --- a/chart_crosshair.go +++ b/chart_crosshair.go @@ -2,6 +2,7 @@ package mujica import ( "github.com/egoist/mygo/ui" + "math" "mujicaui/internal" "mujicaui/theme" @@ -9,13 +10,13 @@ import ( // ChartCrosshairOptions configure a ChartCrosshair. type ChartCrosshairOptions struct { - // X draws the vertical line and its label on X's side; Y the horizontal one. + // X draws vertical lines; Y draws horizontal lines. X, Y *ChartAxisPart - // Reach is how far, in DIPs, Snap looks for a point; 0 means 24. + // Reach defaults to 24 DIPs for point snapping. Reach float32 } -// ChartCrosshairPart is a crosshair ready to snap to points and draw. +// ChartCrosshairPart draws and snaps the crosshair. type ChartCrosshairPart struct { opts ChartCrosshairOptions k theme.Tokens @@ -23,9 +24,9 @@ type ChartCrosshairPart struct { pad float32 } -// ChartCrosshair crosses lines through a point with value labels on the axes. +// ChartCrosshair draws crossed lines and axis readouts. func ChartCrosshair(c *ui.Context, opts ChartCrosshairOptions) ChartCrosshairPart { - if opts.X == nil && opts.Y == nil || opts.Reach < 0 { + if opts.X == nil && opts.Y == nil || opts.Reach < 0 || math.IsNaN(float64(opts.Reach)) || math.IsInf(float64(opts.Reach), 0) { panic("mujica: ChartCrosshair needs an axis and Reach ≥ 0") } if opts.Reach == 0 { @@ -34,12 +35,12 @@ func ChartCrosshair(c *ui.Context, opts ChartCrosshairOptions) ChartCrosshairPar return ChartCrosshairPart{opts: opts, k: Tokens(c), size: FontSize(c, theme.CaptionSize), pad: Density(c).Unit()} } -// Snap returns the point nearest (x, y) within Reach, or -1. +// Snap returns the nearest point within Reach, or -1. func (h ChartCrosshairPart) Snap(n int, at func(i int) (x, y float32), x, y float32) int { return internal.Nearest(n, at, x, y, h.opts.Reach, false) } -// Draw paints the lines through (x, y) inside plot and each axis's value label. +// Draw paints crossed lines and value labels. func (h ChartCrosshairPart) Draw(p *ui.Painter, plot ui.Rect, x, y float32) { k := h.k if a := h.opts.X; a != nil { @@ -62,7 +63,7 @@ func (h ChartCrosshairPart) Draw(p *ui.Painter, plot ui.Rect, x, y float32) { } } -// pill writes s on a Text-colored tag at the axis, outside the plot. +// pill paints a value tag outside the plot. func (h ChartCrosshairPart) pill(p *ui.Painter, s string, x, y float32, across, far bool) { w, ht := p.MeasureText(0, ui.Span{Text: s, Size: h.size}) box := ui.Rect{W: w + 2*h.pad, H: ht + h.pad} diff --git a/chart_crosshair_test.go b/chart_crosshair_test.go index 7f9a43c..45cfc20 100644 --- a/chart_crosshair_test.go +++ b/chart_crosshair_test.go @@ -2,6 +2,7 @@ package mujica import ( "image/color" + "math" "testing" "github.com/egoist/mygo/ui" @@ -14,7 +15,7 @@ func TestChartCrosshairSnapsAndFollowsKeys(t *testing.T) { tt := ui.NewTester(h.view, 520, 420) b := h.res.Element.Bounds() plot := chartInset(ui.Rect{X: b.X, Y: b.Y, W: b.W, H: 240}, 52, 26) - // Point 1 is (5, 80); the pointer rests 10 DIPs off it. + // Point 1 is ten DIPs from the pointer. px, py := plot.X+plot.W/2, plot.Y+plot.H*0.2 tt.Move(px+10, py-6) if h.res.Point != 1 || chartReadout(tt) != "x 5 · y 80" { @@ -34,7 +35,7 @@ func TestChartCrosshairSnapsAndFollowsKeys(t *testing.T) { } } -// crosshairAt reports a TextMuted pixel at (x, y), where the crosshair runs. +// crosshairAt checks a crosshair pixel. func crosshairAt(tt *ui.Tester, x, y int) bool { want := toRGBA(theme.Light().TextMuted) for dx := -1; dx <= 1; dx++ { @@ -67,3 +68,22 @@ func TestChartCrosshairSnapshot(t *testing.T) { }) }) } + +func TestChartCrosshairDisablesFocusedReadout(t *testing.T) { + h := &chartHarness{build: func(c *ui.Context) ChartResult { return partsChart(c, nil, true) }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Parts") + tt.Key(0, ui.KeyRight) + h.disabled = true + tt.Frame() + if h.res.Point != -1 { + t.Fatalf("disabled readout %d", h.res.Point) + } +} + +func TestChartCrosshairFiniteReach(t *testing.T) { + charts2MustPanic(t, func(c *ui.Context) { + a := ChartAxis(c, ChartAxisOptions{Max: 1}) + ChartCrosshair(c, ChartCrosshairOptions{X: &a, Reach: float32(math.NaN())}) + }) +} diff --git a/chart_empty_state.go b/chart_empty_state.go index d13ed66..3b83d4f 100644 --- a/chart_empty_state.go +++ b/chart_empty_state.go @@ -14,7 +14,7 @@ type ChartEmptyStateOptions struct { Empty string } -// ChartEmptyState holds a chart's place while it loads, fails or has no data; Changed reports Retry. +// ChartEmptyState preserves plot size and reports retry clicks. func ChartEmptyState(c *ui.Context, status DataStatus, opts ChartEmptyStateOptions) ChoiceResult { if opts.Height < 0 { panic("mujica: ChartEmptyState Height must be ≥ 0") @@ -26,7 +26,7 @@ func ChartEmptyState(c *ui.Context, status DataStatus, opts ChartEmptyStateOptio var res ChoiceResult res.Element = ui.Column(c).Height(h).FillWidth().MinWidth(0) res.Element.Children(func() { - res.changed = dataPlaceholder(c, status, opts.Error, opts.Empty, msg(c, "chart.empty")) && !res.Element.IsDisabled() + res.changed = dataPlaceholder(c, status, opts.Error, opts.Empty, msg(c, "chart_empty_state.empty")) && !res.Element.IsDisabled() }) return res } diff --git a/chart_export.go b/chart_export.go index 48421cd..901b888 100644 --- a/chart_export.go +++ b/chart_export.go @@ -4,6 +4,7 @@ import ( "bytes" "image/png" "log/slog" + "math" "github.com/egoist/mygo/ui" ) @@ -16,9 +17,9 @@ type ChartExportOptions struct { Scale float32 } -// ChartExport renders chart off screen in this window's theme and returns PNG bytes; it writes no file. +// ChartExport returns a PNG rendered in the current theme. func ChartExport(c *ui.Context, chart func(c *ui.Context), opts ChartExportOptions) ([]byte, error) { - if chart == nil || opts.Width <= 0 || opts.Height <= 0 || opts.Scale < 0 { + if chart == nil || opts.Width <= 0 || opts.Height <= 0 || opts.Scale < 0 || math.IsNaN(float64(opts.Scale)) || math.IsInf(float64(opts.Scale), 0) { panic("mujica: ChartExport needs a chart, a positive size and Scale ≥ 0") } scale := opts.Scale @@ -31,7 +32,11 @@ func ChartExport(c *ui.Context, chart func(c *ui.Context), opts ChartExportOptio settings.Mode = Dark } tokens := w.tokens - img := ui.Render(func(c *ui.Context) { + ready := false + tester := ui.NewTester(func(c *ui.Context) { + if !ready { + return + } if settings.Mode == Dark { settings.Dark = &tokens } else { @@ -39,7 +44,12 @@ func ChartExport(c *ui.Context, chart func(c *ui.Context), opts ChartExportOptio } Use(c, settings) ui.Column(c).Fill().Background(tokens.Surface).Padding(Density(c).Unit() * 4).Children(func() { chart(c) }) - }, opts.Width, opts.Height, scale) + }, opts.Width, opts.Height) + tester.SetScale(scale) + tester.SetPreferences(c.Preferences()) + ready = true + tester.Frame() + img := tester.Image() var buf bytes.Buffer if err := png.Encode(&buf, img); err != nil { return nil, err diff --git a/chart_export_test.go b/chart_export_test.go index 14eef3f..b608e9c 100644 --- a/chart_export_test.go +++ b/chart_export_test.go @@ -71,3 +71,24 @@ func TestChartExportSnapshot(t *testing.T) { ui.Column(c).Padding(20).Children(func() { ui.Image(c, bmp).Size(300, 260) }) }) } + +func TestChartExportPreservesPreferences(t *testing.T) { + var data []byte + var got ui.Preferences + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: Dark, Locale: ZhCN}) + if data != nil { + return + } + var err error + data, err = ChartExport(c, func(c *ui.Context) { got = c.Preferences(); ui.Text(c, "Scale") }, ChartExportOptions{Width: 100, Height: 80, Scale: 1}) + if err != nil { + t.Fatal(err) + } + }, 100, 80) + data = nil + tt.SetPreferences(ui.Preferences{TextScale: 2, ReduceMotion: true, HighContrast: true}) + if got.TextScale != 2 || !got.ReduceMotion || !got.HighContrast { + t.Fatalf("export preferences %+v", got) + } +} diff --git a/chart_frame.go b/chart_frame.go index 4f4dfea..e69bae0 100644 --- a/chart_frame.go +++ b/chart_frame.go @@ -151,7 +151,7 @@ func (ch *chart) build(spec ChartSpec) (ChartResult, *ui.Element) { if over && !plot.IsDisabled() { active = spec.Pick(local, x, y) } - if active < 0 && plot.Focused() && st.focus >= 0 { + if active < 0 && plot.Focused() && st.focus >= 0 && !plot.IsDisabled() { active = st.focus x, y = local.W/2, 0 if spec.Anchor != nil { diff --git a/chart_grid.go b/chart_grid.go index dd80ea5..e64556d 100644 --- a/chart_grid.go +++ b/chart_grid.go @@ -10,9 +10,9 @@ import ( // ChartGridOptions configure a ChartGrid. type ChartGridOptions struct { - // X and Y draw lines at their ticks; either may be nil. + // X and Y provide grid ticks; either may be nil. X, Y *ChartAxisPart - // Minor splits each major interval into this many parts with fainter lines. + // Minor subdivides major intervals with fainter lines. Minor int } @@ -22,7 +22,7 @@ type ChartGridPart struct { major, minor ui.Color } -// ChartGrid draws pixel-aligned lines at the axes' ticks, and minor lines between them. +// ChartGrid draws pixel-aligned major and minor lines. func ChartGrid(c *ui.Context, opts ChartGridOptions) ChartGridPart { if opts.Minor < 0 || opts.X == nil && opts.Y == nil { panic("mujica: ChartGrid needs an axis and Minor ≥ 0") @@ -50,7 +50,7 @@ func (g ChartGridPart) Draw(p *ui.Painter, plot ui.Rect) { internal.Rule(p, plot.X, plot.X+plot.W, at, col) } } - ticks := a.Ticks() + ticks := a.drawTicks(plot, 4) for i := 1; i < len(ticks) && g.opts.Minor > 0; i++ { for j := 1; j < g.opts.Minor; j++ { f := float64(j) / float64(g.opts.Minor) diff --git a/chart_grid_test.go b/chart_grid_test.go index a62c041..b81c0e3 100644 --- a/chart_grid_test.go +++ b/chart_grid_test.go @@ -25,7 +25,7 @@ func TestChartGridPixelAlignedWithMinor(t *testing.T) { c := color.RGBAModel.Convert(img.At(100, py)).(color.RGBA) count[c]++ } - // Three major and two minor lines, each exactly one device pixel per DIP, no blur. + // Three major and two minor lines stay pixel-aligned. if count[major] != 3*int(scale) || count[minor] != 2*int(scale) { t.Fatalf("scale %v: %d major and %d minor pixel rows", scale, count[major], count[minor]) } diff --git a/chart_legend.go b/chart_legend.go index 0e5bcd4..b269165 100644 --- a/chart_legend.go +++ b/chart_legend.go @@ -15,27 +15,31 @@ import ( type ChartLegendItem struct { Name string Color ui.Color - // Shape picks the marker: 0 circle, 1 square, 2 diamond, 3 triangle, 4 inverted. + // Shape selects circle, square, diamond, triangle, or inverted triangle. Shape int } // ChartLegendOptions configure a ChartLegend. type ChartLegendOptions struct { Vertical bool - // MaxItems folds the rest behind a "+N more" button; 0 shows all. + // MaxItems folds overflow; zero shows all items. MaxItems int } -// ChartLegendResult is a built legend and the series switched this frame. +// ChartLegendResult exposes the element and legend events. type ChartLegendResult struct { - Element *ui.Element - toggled string + Element *ui.Element + toggled string + expanded, folded bool } // Toggled returns the series switched in this frame. func (r ChartLegendResult) Toggled() (string, bool) { return r.toggled, r.toggled != "" } -// ChartLegend lists series keys; with hidden set, each is a check box hiding its series. +// Expanded reports the new state when expansion changes. +func (r ChartLegendResult) Expanded() (bool, bool) { return r.expanded, r.folded } + +// ChartLegend lists series; hidden enables visibility toggles. func ChartLegend(c *ui.Context, hidden *map[string]bool, items []ChartLegendItem, opts ChartLegendOptions) ChartLegendResult { if opts.MaxItems < 0 { panic("mujica: ChartLegend MaxItems must be ≥ 0") @@ -82,6 +86,7 @@ func ChartLegend(c *ui.Context, hidden *map[string]bool, items []ChartLegendItem b.Children(func() { ui.Text(c, label).FontSize(FontSize(c, theme.CaptionSize)).SingleLine() }) if b.Clicked() && !b.IsDisabled() { *open = !*open + res.expanded, res.folded = *open, true slog.Debug("mujica: chart_legend fold", "open", *open) } } @@ -89,7 +94,7 @@ func ChartLegend(c *ui.Context, hidden *map[string]bool, items []ChartLegendItem return res } -// chartLegendEntry builds one key; a check box when hidden is set. It reports a switch. +// chartLegendEntry builds a series visibility control. func chartLegendEntry(c *ui.Context, hidden *map[string]bool, it ChartLegendItem, disabled bool) (string, bool) { k := Tokens(c) u := Density(c).Unit() @@ -114,7 +119,7 @@ func chartLegendEntry(c *ui.Context, hidden *map[string]bool, it ChartLegendItem } else { e = ui.Row(c) } - e.MinHeight(theme.MinHitSize).Gap(u*2).AlignItems(ui.Center).Padding(0, u).Radius(theme.ControlRadius) + e.MinWidth(theme.MinHitSize).MinHeight(Density(c).ControlHeight()).Gap(u*2).AlignItems(ui.Center).Padding(0, u).Radius(theme.ControlRadius) col := it.Color if !on { col = k.TextMuted diff --git a/chart_legend_test.go b/chart_legend_test.go index b588a79..7fa3572 100644 --- a/chart_legend_test.go +++ b/chart_legend_test.go @@ -93,3 +93,33 @@ func TestChartLegendSnapshot(t *testing.T) { }) }) } + +func TestChartLegendDisabledAndExpansionEvents(t *testing.T) { + hidden := map[string]bool{} + disabled := false + events := 0 + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ui.Column(c).Disabled(disabled).Children(func() { + r := ChartLegend(c, &hidden, legendItems(), ChartLegendOptions{MaxItems: 2}) + if _, ok := r.Expanded(); ok { + events++ + } + }) + }, 500, 200) + if err := tt.Click("+3 more"); err != nil { + t.Fatal(err) + } + tt.Frame() + if events != 1 || !tt.HasText("Sext") { + t.Fatalf("expansion events %d", events) + } + disabled = true + tt.Frame() + _ = tt.Click("Matins") + _ = tt.Click("Show fewer") + tt.Key(0, ui.KeySpace) + if hidden["Matins"] || events != 1 || !tt.HasText("Sext") { + t.Fatalf("disabled legend %v events %d", hidden, events) + } +} diff --git a/chart_series.go b/chart_series.go index 2e992bc..0856a04 100644 --- a/chart_series.go +++ b/chart_series.go @@ -204,3 +204,15 @@ func chartRuns(vals []float64, x func(i int) float32, f func(idx []int)) { i = j } } + +func chartVisibleIndices(n, limit, active int) []int { + step := max(1, (n+limit-1)/limit) + out := make([]int, 0, min(n, limit+1)) + for i := 0; i < n; i += step { + out = append(out, i) + } + if active >= 0 && active < n && active%step != 0 { + out = append(out, active) + } + return out +} diff --git a/chart_tooltip.go b/chart_tooltip.go index 166b3dc..d760884 100644 --- a/chart_tooltip.go +++ b/chart_tooltip.go @@ -9,14 +9,14 @@ import ( "mujicaui/theme" ) -// ChartTooltipLine is one row of a tooltip; a zero Color shows no marker. +// ChartTooltipLine pairs readout text with an optional marker. type ChartTooltipLine struct { Text string Color ui.Color Shape int } -// ChartTooltip floats painted lines beside window point (x, y), avoiding edges. +// ChartTooltip shows readouts beside a window point, avoiding edges. func ChartTooltip(c *ui.Context, x, y float32, lines []ChartTooltipLine) *ui.Element { if len(lines) == 0 { panic("mujica: ChartTooltip needs a line") @@ -37,29 +37,42 @@ func ChartTooltip(c *ui.Context, x, y float32, lines []ChartTooltipLine) *ui.Ele } w += pad * 2 ww, wh := c.Size() - left, top := x+gap, y+gap - if left+w > ww-4 { - left = x - gap - w + w, h = min(w, max(1, ww-8)), min(h, max(1, wh-8)) + left, top := overlayPlace(c, ui.Rect{X: x, Y: y}, w, h, gap) + if x+gap+w <= ww-4 { + left = max(4, x+gap) + } else { + left = max(4, min(x-gap-w, ww-4-w)) } - if top+h > wh-4 { - top = y - gap - h - } - left, top = max(4, left), max(4, top) var tip *ui.Element ui.Overlay(c, func() { - tip = ui.Box(c).Absolute().Left(left).Top(top).Size(w, h).PassThrough().Role(ui.RoleNone) - overlayStyle(c, tip, 1) - tip.Draw(func(p *ui.Painter, r ui.Rect) { - at := r.Y + pad + tip = ui.Column(c).Absolute().Left(left).Top(top).Size(w, h).Role(ui.RoleNone) + overlayStyle(c, tip, overlayEnter(c, tip)) + tip.Children(func() { + inner := max(1, w-2*pad) + content := float32(0) for i, l := range lines { - tx := r.X + pad + width := inner if l.Color.A > 0 { - internal.Marker(p, l.Shape, tx+5, at+lh[i]/2, 9, l.Color) - tx += 14 + width = max(1, width-14) } - p.RichText(tx, at, 0, ui.Span{Text: l.Text, Size: size, Weight: chartTipWeight(i), Color: k.Text}) - at += lh[i] + _, lh[i] = c.MeasureText(width, ui.Span{Text: l.Text, Size: size, Weight: chartTipWeight(i)}) + content += lh[i] } + ui.Scroll(c).Fill().Padding(pad).Children(func() { + ui.Box(c).Width(inner).Height(content).Shrink(0).Draw(func(p *ui.Painter, r ui.Rect) { + at := r.Y + for i, l := range lines { + tx, width := r.X, inner + if l.Color.A > 0 { + internal.Marker(p, l.Shape, tx+5, at+lh[i]/2, 9, l.Color) + tx, width = tx+14, max(1, width-14) + } + p.RichText(tx, at, width, ui.Span{Text: l.Text, Size: size, Weight: chartTipWeight(i), Color: k.Text}) + at += lh[i] + } + }) + }) }) }) return tip @@ -73,7 +86,7 @@ func chartTipWeight(i int) int { return 400 } -// chartTipLines splits a readout at " · " into a heading and rows. +// chartTipLines splits a readout into tooltip lines. func chartTipLines(readout string) []ChartTooltipLine { var out []ChartTooltipLine for _, s := range strings.Split(readout, " · ") { diff --git a/chart_tooltip_test.go b/chart_tooltip_test.go index f0a13cf..08f47d0 100644 --- a/chart_tooltip_test.go +++ b/chart_tooltip_test.go @@ -42,6 +42,7 @@ func TestChartTooltipFollowsFocusAndPointer(t *testing.T) { return LineChart(c, lineSeries(), LineChartOptions{Frame: ChartFrame{Label: "Chapel"}}) }} tt := ui.NewTester(h.view, 520, 420) + tt.SetPreferences(ui.Preferences{ReduceMotion: true, TextScale: 1}) tabTo(t, tt, "Chapel") tt.Key(0, ui.KeyEnd) if !tooltipShown(tt) { @@ -58,7 +59,7 @@ func TestChartTooltipFollowsFocusAndPointer(t *testing.T) { } } -// tooltipShown looks for a run of Surface pixels too long for a marker ring. +// tooltipShown finds Surface runs longer than marker rings. func tooltipShown(tt *ui.Tester) bool { img := tt.Image() want := toRGBA(theme.Light().Surface) @@ -84,3 +85,19 @@ func TestChartTooltipSnapshot(t *testing.T) { ChartTooltip(c, 20, 20, []ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: pal[0]}, {Text: "Candles 2", Color: pal[1], Shape: 1}}) }) } + +func TestChartTooltipFitsLongContent(t *testing.T) { + var b ui.Rect + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + lines := make([]ChartTooltipLine, 40) + for i := range lines { + lines[i].Text = "A very long series name that wraps across the tooltip panel" + } + b = ChartTooltip(c, 159, 99, lines).Bounds() + }, 160, 100) + tt.Frame() + if b.X < 4 || b.Y < 4 || b.X+b.W > 156 || b.Y+b.H > 96 { + t.Fatalf("tooltip outside window: %v", b) + } +} diff --git a/chord_diagram.go b/chord_diagram.go index b6979b7..078e4c9 100644 --- a/chord_diagram.go +++ b/chord_diagram.go @@ -15,7 +15,7 @@ type ChordDiagramOptions struct { Format func(v float64) string } -// chordLayout is each group's arc and each pair's chord ends, as angles. +// chordLayout stores group arcs and relation endpoints. type chordLayout struct { arcs [][2]float64 sub [][][2]float64 @@ -28,6 +28,11 @@ const chordGap = 0.04 func chordPlace(matrix [][]float64) chordLayout { n := len(matrix) + for _, row := range matrix { + if len(row) != n { + panic("mujica: ChordDiagram matrix must be square") + } + } l := chordLayout{arcs: make([][2]float64, n), sub: make([][][2]float64, n)} sums := make([]float64, n) for i, row := range matrix { @@ -39,16 +44,20 @@ func chordPlace(matrix [][]float64) chordLayout { panic("mujica: ChordDiagram values must be finite and ≥ 0") } sums[i] += v - if j > i && v+matrix[j][i] > 0 { + if j >= i && v+matrix[j][i] > 0 { l.pairs = append(l.pairs, [2]int{i, j}) } } l.total += sums[i] } + if math.IsInf(l.total, 0) { + panic("mujica: ChordDiagram total must be finite") + } if l.total == 0 { return l } - span := 2*math.Pi - chordGap*float64(n) + gap := min(chordGap, math.Pi/float64(n)) + span := 2*math.Pi - gap*float64(n) a := 0.0 for i := range n { l.arcs[i] = [2]float64{a, a + span*sums[i]/l.total} @@ -59,16 +68,23 @@ func chordPlace(matrix [][]float64) chordLayout { l.sub[i][j] = [2]float64{at, at + w} at += w } - a = l.arcs[i][1] + chordGap + a = l.arcs[i][1] + gap } return l } -// ChordDiagram joins group arcs by chords; reading a group highlights them. +// ChordDiagram connects group arcs and highlights read relationships. func ChordDiagram(c *ui.Context, names []string, matrix [][]float64, opts ChordDiagramOptions) ChartResult { if len(names) != len(matrix) { panic("mujica: ChordDiagram needs a name per matrix row") } + seen := map[string]bool{} + for _, name := range names { + if name == "" || seen[name] { + panic("mujica: ChordDiagram groups need unique names") + } + seen[name] = true + } ch := newChart(c, opts.Frame) l := chartMemo(ch, "chords", chartID(matrix), func() chordLayout { return chordPlace(matrix) }) k := Tokens(c) @@ -82,6 +98,7 @@ func ChordDiagram(c *ui.Context, names []string, matrix [][]float64, opts ChordD geom := func(r ui.Rect) (cx, cy, rad float32) { return r.X + r.W/2, r.Y + r.H/2, min(r.W, r.H)/2 - 30 } + visible := ui.Local(ch.res.Element, "mujica.chord.visible", func() []int { return nil }) spec := ChartSpec{Marks: n} spec.Readout = func(i int) string { if i < len(names) { @@ -122,21 +139,26 @@ func ChordDiagram(c *ui.Context, names []string, matrix [][]float64, opts ChordD } return l.pairs[active-len(names)] == pair } - for pi, pair := range l.pairs { + *visible = chartVisibleIndices(len(l.pairs), max(1, int(rad*4)), active-len(names)) + for _, pi := range *visible { + pair := l.pairs[pi] i, j := pair[0], pair[1] s, t := l.sub[i][j], l.sub[j][i] var path ui.Path - internal.Arc(&path, cx, cy, rad, s[0], s[1], true) + internal.Arc(&path, cx, cy, rad, s[0], s[1], true, p) tx, ty := internal.Polar(cx, cy, rad, t[0]) - path.QuadTo(cx, cy, tx, ty) - internal.Arc(&path, cx, cy, rad, t[0], t[1], false) + path.QuadTo(internal.Snap(p, cx), internal.Snap(p, cy), internal.Snap(p, tx), internal.Snap(p, ty)) + internal.Arc(&path, cx, cy, rad, t[0], t[1], false, p) sx, sy := internal.Polar(cx, cy, rad, s[0]) - path.QuadTo(cx, cy, sx, sy).Close() + path.QuadTo(internal.Snap(p, cx), internal.Snap(p, cy), internal.Snap(p, sx), internal.Snap(p, sy)).Close() alpha := float32(0.45) if !lit(pair) { alpha = 0.08 } p.FillPath(&path, pal[i%len(pal)].Alpha(alpha)) + if lit(pair) { + p.StrokePath(&path, 1, pal[i%len(pal)]) + } if active == len(names)+pi { p.StrokePath(&path, 1.5, k.Text) } @@ -146,7 +168,7 @@ func ChordDiagram(c *ui.Context, names []string, matrix [][]float64, opts ChordD if i == active { grow = 4 } - p.FillPath(internal.Sector(cx, cy, rad+2, rad+12+grow, arc[0], arc[1]), pal[i%len(pal)]) + p.FillPath(internal.Sector(cx, cy, rad+2, rad+12+grow, arc[0], arc[1], p), pal[i%len(pal)]) if arc[1]-arc[0] > 0.15 { lx, ly := internal.Polar(cx, cy, rad+20, (arc[0]+arc[1])/2) ax := 0.5 - 0.5*float32(math.Sin((arc[0]+arc[1])/2)) diff --git a/chord_diagram_test.go b/chord_diagram_test.go index e513e1d..156f6d4 100644 --- a/chord_diagram_test.go +++ b/chord_diagram_test.go @@ -1,6 +1,7 @@ package mujica import ( + "fmt" "math" "testing" @@ -70,3 +71,41 @@ func TestChordDiagramSnapshot(t *testing.T) { }) }) } + +func TestChordPlaceSelfRelation(t *testing.T) { + l := chordPlace([][]float64{{3}}) + if len(l.pairs) != 1 || l.pairs[0] != [2]int{0, 0} { + t.Fatalf("self relation %v", l.pairs) + } +} + +func TestChordDiagramDenseDataBoundedAndDisabled(t *testing.T) { + const n = 450 + names := make([]string, n) + matrix := make([][]float64, n) + for i := range matrix { + names[i] = fmt.Sprint(i) + matrix[i] = make([]float64, n) + for j := range matrix[i] { + matrix[i][j] = 1 + } + } + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ChordDiagram(c, names, matrix, ChordDiagramOptions{Frame: ChartFrame{Label: "Dense chords"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + shown := ui.Local(h.res.Element, "mujica.chord.visible", func() []int { return nil }) + if len(*shown) == 0 || len(*shown) > 360 { + t.Fatalf("built %d chords", len(*shown)) + } + tabTo(t, tt, "Dense chords") + tt.Key(0, ui.KeyEnd) + if h.res.Point != n+n*(n+1)/2-1 || len(*shown) > 361 { + t.Fatalf("last relation %d, built %d", h.res.Point, len(*shown)) + } + h.disabled = true + tt.Frame() + if h.res.Point != -1 { + t.Fatalf("disabled chord %d", h.res.Point) + } +} diff --git a/density_plot.go b/density_plot.go index a62d0ed..5ae92ec 100644 --- a/density_plot.go +++ b/density_plot.go @@ -10,9 +10,9 @@ import ( // DensityPlotOptions configure a DensityPlot. type DensityPlotOptions struct { Frame ChartFrame - // Bandwidth is the Gaussian kernel's width; 0 uses Silverman's rule per group. + // Bandwidth defaults to the per-group Gaussian estimate. Bandwidth float64 - // Points is how many x values the curves are sampled at; 0 means 128. + // Points defaults to 128 samples per curve. Points int Format func(v float64) string } @@ -21,14 +21,17 @@ type DensityPlotOptions struct { func densitySample(values []float64) []float64 { var out []float64 for _, v := range values { - if !math.IsNaN(v) && !math.IsInf(v, 0) { + if math.IsInf(v, 0) { + panic("mujica: density values must be finite or NaN") + } + if !math.IsNaN(v) { out = append(out, v) } } return out } -// densityBandwidth is Silverman's rule of thumb, or 1 for flat samples. +// densityBandwidth estimates spread, using 1 for flat samples. func densityBandwidth(v []float64) float64 { n := float64(len(v)) mean := 0.0 @@ -47,7 +50,7 @@ func densityBandwidth(v []float64) float64 { return 1.06 * sd * math.Pow(n, -0.2) } -// densityKDE estimates the density of v at each x with a Gaussian kernel of width h. +// densityKDE estimates Gaussian density at xs. func densityKDE(v []float64, h float64, xs []float64) []float64 { out := make([]float64, len(xs)) norm := 1 / (float64(len(v)) * h * math.Sqrt(2*math.Pi)) @@ -62,7 +65,7 @@ func densityKDE(v []float64, h float64, xs []float64) []float64 { return out } -// densityCurves samples every group's density on one x grid, three bandwidths past the data. +// densityCurves samples groups on a shared padded grid. func densityCurves(groups []BoxGroup, bandwidth float64, points int) (xs []float64, series []ChartSeries) { lo, hi := math.Inf(1), math.Inf(-1) samples := make([][]float64, len(groups)) @@ -97,9 +100,9 @@ func densityCurves(groups []BoxGroup, bandwidth float64, points int) (xs []float return xs, series } -// DensityPlot draws each group's kernel density curve over one shared axis. +// DensityPlot overlays groups on a shared density axis. func DensityPlot(c *ui.Context, groups []BoxGroup, opts DensityPlotOptions) ChartResult { - if opts.Bandwidth < 0 || opts.Points < 0 || opts.Points == 1 { + if opts.Bandwidth < 0 || math.IsNaN(opts.Bandwidth) || math.IsInf(opts.Bandwidth, 0) || opts.Points < 0 || opts.Points == 1 { panic("mujica: DensityPlot needs Bandwidth ≥ 0 and Points of 0 or 2 or more") } points := opts.Points @@ -108,7 +111,12 @@ func DensityPlot(c *ui.Context, groups []BoxGroup, opts DensityPlotOptions) Char } ch := newChart(c, opts.Frame) ids := "" + seen := map[string]bool{} for _, g := range groups { + if g.Name == "" || seen[g.Name] { + panic("mujica: DensityPlot groups need unique names") + } + seen[g.Name] = true ids += g.Name + chartID(g.Values) + ";" } type curves struct { diff --git a/density_plot_test.go b/density_plot_test.go index 3cfee28..4bd901d 100644 --- a/density_plot_test.go +++ b/density_plot_test.go @@ -87,3 +87,35 @@ func TestDensityPlotSnapshot(t *testing.T) { }) }) } + +func TestDensityPlotFiniteBandwidthAndNames(t *testing.T) { + charts2MustPanic(t, func(c *ui.Context) { + DensityPlot(c, densityGroups(), DensityPlotOptions{Frame: ChartFrame{Label: "Density"}, Bandwidth: math.Inf(1)}) + }) + charts2MustPanic(t, func(c *ui.Context) { + DensityPlot(c, []BoxGroup{{Name: "A"}, {Name: "A"}}, DensityPlotOptions{Frame: ChartFrame{Label: "Density"}}) + }) +} + +func TestDensityPlotLargeDataBoundedAndDisabled(t *testing.T) { + values := make([]float64, 100_000) + for i := range values { + values[i] = float64(i % 100) + } + groups := []BoxGroup{{Name: "Sample", Values: values}} + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return DensityPlot(c, groups, DensityPlotOptions{Frame: ChartFrame{Label: "Large density"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Large density") + tt.Key(0, ui.KeyEnd) + if h.res.Point != 127 { + t.Fatalf("built sample index %d", h.res.Point) + } + h.disabled = true + tt.Frame() + tt.Key(0, ui.KeyLeft) + if h.res.Point != -1 { + t.Fatalf("disabled density %d", h.res.Point) + } +} diff --git a/docs/components/121-chart-legend.md b/docs/components/121-chart-legend.md new file mode 100644 index 0000000..00648b1 --- /dev/null +++ b/docs/components/121-chart-legend.md @@ -0,0 +1,38 @@ +# 121 ChartLegend 图例 + +## 用途 + +展示序列名称与形状;点击或键盘切换序列显隐,支持横纵布局和折叠。 + +## 最小示例 + +```go +hidden := map[string]bool{} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + k := mujica.Tokens(c) + items := []mujica.ChartLegendItem{{Name: "Pews", Color: k.Info}, {Name: "Candles", Color: k.Success, Shape: 1}} + mujica.ChartLegend(c, &hidden, items, mujica.ChartLegendOptions{MaxItems: 1}) +} +ui.Render(view, 400, 200, 1) +``` + +## 参数 + +`hidden *map[string]bool`:名称映射到隐藏状态,nil 为静态图例。`items []ChartLegendItem`:唯一非空 `Name`、`Color`、`Shape`(0–4)。`Vertical` 默认 false;`MaxItems` 默认 0,显示全部,负值 panic。 + +## 状态 + +可见项显示形状,隐藏项显示空框与删除线;支持祖先禁用。折叠后显示展开按钮。 + +## 事件 + +`Toggled()` 返回本帧切换的序列名称和是否发生事件。 + +## 键盘操作 + +Tab 进入图例;方向键在项之间移动;Space 切换显隐;展开按钮支持 Enter 和 Space。 + +## 限制 + +调用方依据 hidden 控制数据序列。图例颜色来自调用方,应使用主题色;形状提供颜色之外的识别。 diff --git a/docs/components/122-chart-tooltip.md b/docs/components/122-chart-tooltip.md new file mode 100644 index 0000000..9d3e9bc --- /dev/null +++ b/docs/components/122-chart-tooltip.md @@ -0,0 +1,36 @@ +# 122 ChartTooltip 读数浮层 + +## 用途 + +在指针或键盘数据点旁显示多序列读数,自动避让窗口边缘。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + k := mujica.Tokens(c) + mujica.ChartTooltip(c, 40, 40, []mujica.ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: k.Info}, {Text: "Candles 2", Color: k.Success, Shape: 1}}) +} +ui.Render(view, 400, 200, 1) +``` + +## 参数 + +`x, y float32`:窗口 DIP 坐标。`lines []ChartTooltipLine` 必须非空;`Text` 为读数,`Color` 为标记色,透明色隐藏标记;`Shape` 为标记形状。 + +## 状态 + +160 ms 进入过渡;减少动画直接出现。宽度和高度受窗口限制,长文字换行,内容可滚动。 + +## 事件 + +返回浮层 `*ui.Element`;读数事件由所属 Chart 提供。 + +## 键盘操作 + +通过 `Chart` 使用时,方向键改变锚点,Escape 清除浮层;浮层内容沿用滚动容器操作。 + +## 限制 + +调用方传入当前读数和锚点,负责显示时机;所属图表应同时显示并朗读读数。 diff --git a/docs/components/123-chart-crosshair.md b/docs/components/123-chart-crosshair.md new file mode 100644 index 0000000..93c7be7 --- /dev/null +++ b/docs/components/123-chart-crosshair.md @@ -0,0 +1,43 @@ +# 123 ChartCrosshair 十字光标 + +## 用途 + +绘制横纵十字线和轴侧读数标签,提供最近数据点吸附。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + hair := mujica.ChartCrosshair(c, mujica.ChartCrosshairOptions{X: &x, Y: &y}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + x.Draw(p, plot) + y.Draw(p, plot) + hair.Draw(p, plot, x.Map(plot, 5), y.Map(plot, 70)) + }) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`X, Y *ChartAxisPart`:至少提供一条轴。`Reach` 默认 24 DIP,负值 panic。返回 `ChartCrosshairPart`;`Snap(n, at, x, y)` 返回范围内最近索引,范围外为 -1。 + +## 状态 + +静态部件;随调用方传入的坐标变化。移动路径使用像素网格对齐。 + +## 事件 + +吸附返回索引;读数变化使用所属 `ChartResult.Changed()`。 + +## 键盘操作 + +与 Chart 的 `Pick`、`Anchor`、`Readout` 组合,方向键逐点显示并朗读数值。 + +## 限制 + +`Draw` 使用窗口坐标,`Snap` 和 at 必须采用相同坐标系;轴部件在每帧创建。 diff --git a/docs/components/124-chart-axis.md b/docs/components/124-chart-axis.md new file mode 100644 index 0000000..62a17c6 --- /dev/null +++ b/docs/components/124-chart-axis.md @@ -0,0 +1,38 @@ +# 124 ChartAxis 坐标轴 + +## 用途 + +提供数值、时间、类别和对数刻度,以及值和像素之间的映射。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + axis := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Kind: mujica.AxisLog, Min: 1, Max: 1000}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + axis.Draw(p, ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60}) + }) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`Kind` 默认 `AxisLinear`;`Side` 默认 `SideBottom`。数值与对数轴需要有限 `Min < Max`,对数轴 `Min > 0`。时间轴需要 `From < To`。类别轴需要非空 `Categories`。`Ticks` 为递增且位于范围内的指定刻度,nil 自动生成。`Format func(float64) string` 自定义标签。 + +## 状态 + +展示部件,继承当前主题、文本缩放和字体。 + +## 事件 + +`Map`、`Invert`、`Ticks`、`Label` 返回映射与标签;组件自身没有业务事件。 + +## 键盘操作 + +所属 Chart 负责聚焦、方向键和读数。坐标轴作为绘图部件随图表展示。 + +## 限制 + +为标签预留边距。时间值采用 Unix 秒,默认格式使用 UTC;需要本地时区时通过 Format 格式化。数据和刻度切片在使用期间保持稳定。 diff --git a/docs/components/125-chart-grid.md b/docs/components/125-chart-grid.md new file mode 100644 index 0000000..490bdf8 --- /dev/null +++ b/docs/components/125-chart-grid.md @@ -0,0 +1,43 @@ +# 125 ChartGrid 图表网格 + +## 用途 + +按坐标轴主刻度和次刻度绘制对齐设备像素的网格线。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + grid := mujica.ChartGrid(c, mujica.ChartGridOptions{X: &x, Y: &y, Minor: 2}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + grid.Draw(p, plot) + x.Draw(p, plot) + y.Draw(p, plot) + }) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`X, Y *ChartAxisPart` 至少一条轴;`Minor` 默认 0,正整数表示每个主刻度间隔的等分数。类别轴的 Minor 必须为 0。负值 panic。 + +## 状态 + +展示部件;主网格使用 Border,次网格使用较淡的 Border。 + +## 事件 + +返回 `ChartGridPart`,由 `Draw(p, plot)` 绘制。 + +## 键盘操作 + +所属图表的键盘操作保持生效;网格随图表展示。 + +## 限制 + +对数轴次刻度按对数距离等分。大范围刻度按绘图像素密度抽样绘制。 diff --git a/docs/components/126-chart-brush.md b/docs/components/126-chart-brush.md new file mode 100644 index 0000000..6c35456 --- /dev/null +++ b/docs/components/126-chart-brush.md @@ -0,0 +1,36 @@ +# 126 ChartBrush 区间刷选 + +## 用途 + +选择图表可见区间,支持移动窗口、调整两端和拖动新建范围。 + +## 最小示例 + +```go +value := [2]float64{20, 60} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChartBrush(c, &value, mujica.ChartBrushOptions{Label: "Months", Max: 100, Step: 1, Values: []float64{2, 4, 3, 8, 5}}) +} +ui.Render(view, 400, 160, 1) +``` + +## 参数 + +`value *[2]float64` 为域内严格递增区间;`Label` 必填;有限 `Min < Max`。`Step` 默认跨度的 1/100,负值 panic。`Values` 为预览折线。`Height` 默认 48 DIP,显式高度至少 28 DIP。`Format` 自定义值文本。`Disabled` 默认 false。 + +## 状态 + +显示选区边框与两端手柄;自身或祖先禁用时保持区间。拖动窗口到边缘保持跨度。 + +## 事件 + +返回 `ChoiceResult`;`Changed()` 表示区间变化;新范围会被朗读,调用方据此调整图表范围。 + +## 键盘操作 + +Tab 按起点、窗口、终点顺序聚焦;方向键移动一个步长;手柄 PageUp/PageDown 移动十个步长;Home/End 到域边界。 + +## 限制 + +范围至少保留一个 Step。预览切片按身份缓存,更新数据时替换切片。调用方负责图表缩放和查询。 diff --git a/docs/components/127-chart-annotation.md b/docs/components/127-chart-annotation.md new file mode 100644 index 0000000..682bd16 --- /dev/null +++ b/docs/components/127-chart-annotation.md @@ -0,0 +1,47 @@ +# 127 ChartAnnotation 图表标注 + +## 用途 + +在图表上显示水平线、垂直线、区间带和文字标注,可选择开启移动。 + +## 最小示例 + +```go +notes := []mujica.ChartNote{{Kind: mujica.NoteHLine, Value: 50, Text: "Goal", Draggable: true}, {Kind: mujica.NoteBand, Value: 6, End: 8, Text: "Lent"}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + annotation := mujica.ChartAnnotation(c, notes, mujica.ChartAnnotationOptions{X: &x, Y: &y}) + box := ui.Box(c).Fill().Focusable().Label("Annotations") + b := box.Bounds() + annotation.Drag(box, ui.Rect{X: 60, Y: 20, W: b.W - 80, H: b.H - 60}) + box.Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + x.Draw(p, plot) + y.Draw(p, plot) + annotation.Draw(p, plot) + }) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`notes []ChartNote`:`Kind` 默认为 `NoteHLine`;`Value` 是水平线 Y 或其他标注 X;`End` 是带末端 X 或文字 Y;`Text` 是文案;`Draggable` 默认 false。`X, Y` 均必填;坐标必须有限,带需要 End > Value,文字需要非空 Text。 + +## 状态 + +先绘制区间带,再绘制线和文字;可移动线带有菱形手柄。祖先禁用阻止移动。 + +## 事件 + +`Drag(element, plot)` 处理指针和键盘,修改原切片并返回是否发生变化。`Draw` 绘制当前标注。 + +## 键盘操作 + +Tab 聚焦宿主图表;Alt+PageUp/PageDown 选择可移动标注;Alt+方向键每次移动轴跨度的 1/100。选中说明和变化会被朗读。 + +## 限制 + +Drag 的 plot 是元素局部坐标;Draw 的 plot 是窗口坐标。标注切片由调用方持有;移动后调用方负责业务保存。 diff --git a/docs/components/128-chart-export.md b/docs/components/128-chart-export.md new file mode 100644 index 0000000..9286b82 --- /dev/null +++ b/docs/components/128-chart-export.md @@ -0,0 +1,45 @@ +# 128 ChartExport 图表导出 + +## 用途 + +以当前窗口主题离屏绘制图表,返回 PNG 字节,供调用方保存或传输。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + data, err := mujica.ChartExport(c, func(c *ui.Context) { + mujica.SparkBar(c, []float64{3, -2, 5}, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}}) + }, mujica.ChartExportOptions{Width: 300, Height: 100, Scale: 2}) + if err != nil { + panic(err) + } + bitmap, err := ui.DecodeBitmap(data) + if err != nil { + panic(err) + } + ui.Image(c, bitmap).Size(300, 100) +} +ui.Render(view, 400, 160, 1) +``` + +## 参数 + +`chart func(*ui.Context)` 必填;`Width, Height int` 为正 DIP 尺寸;有限 `Scale float32` 默认 2,负值 panic。 + +## 状态 + +沿用当前主题、密度、本地化、自定义 token 和桌面偏好。导出过程为同步渲染。 + +## 事件 + +返回 `([]byte, error)`;PNG 编码错误直接返回调用方。 + +## 键盘操作 + +导出触发按钮由调用方提供,支持 Enter 和 Space。 + +## 限制 + +图表回调应独立渲染,复用调用方数据;调用方在用户触发导出时调用以控制开销。组件只返回字节。 diff --git a/docs/components/129-violin-plot.md b/docs/components/129-violin-plot.md new file mode 100644 index 0000000..25e5c94 --- /dev/null +++ b/docs/components/129-violin-plot.md @@ -0,0 +1,36 @@ +# 129 ViolinPlot 小提琴图 + +## 用途 + +比较多组样本的核密度轮廓,中位数以菱形标记,四分位以粗条表示。 + +## 最小示例 + +```go +groups := []mujica.BoxGroup{{Name: "Choir", Values: []float64{1, 2, 3, 4, 7, 9}}, {Name: "Nave", Values: []float64{2, 4, 5, 6, 8}}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ViolinPlot(c, groups, mujica.ViolinPlotOptions{Frame: mujica.ChartFrame{Label: "Hymns"}, Bandwidth: 1}) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`groups []BoxGroup`:唯一非空 Name 与样本 Values;NaN 为缺值,无穷值 panic。`Frame` 指定名称、高度、状态和占位文案。有限 `Bandwidth` 默认 0,按组自动估计;负值 panic。`Format` 自定义数值读数。 + +## 状态 + +默认、悬停、键盘读数、加载、错误、空数据、祖先禁用。单值或相同值样本保留密度轮廓。 + +## 事件 + +`ChartResult.Point` 为组索引;`Changed()` 表示读数组变化;`Retried()` 表示重试。 + +## 键盘操作 + +Tab 聚焦;方向键逐组读取中位数和四分位;Home/End 首尾;Escape 清除读数。 + +## 限制 + +每组轮廓使用 64 个采样点;大量组按像素位置抽样绘制,当前读数组保留。排序和核密度在样本切片身份或带宽变化时计算;更新数据需替换切片。 diff --git a/docs/components/130-parallel-coordinates.md b/docs/components/130-parallel-coordinates.md new file mode 100644 index 0000000..220d642 --- /dev/null +++ b/docs/components/130-parallel-coordinates.md @@ -0,0 +1,38 @@ +# 130 ParallelCoordinates 平行坐标 + +## 用途 + +在多条平行轴间展示每行数值;轴上刷选筛除行,当前读数行用粗线高亮。 + +## 最小示例 + +```go +filters := map[string][2]float64{} +axes := []string{"Age", "Hymns", "Vigils"} +rows := [][]float64{{20, 3, 9}, {35, 8, 2}, {50, 5, 5}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ParallelCoordinates(c, &filters, axes, rows, mujica.ParallelCoordinatesOptions{Frame: mujica.ChartFrame{Label: "Monks"}, Names: []string{"Agnes", "Clare", "Hild"}}) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`filters *map[string][2]float64` 必填,键为轴名,值为有限递增范围。`axes []string` 至少两个唯一非空名称;每行长度与轴数一致。NaN 为缺值。`Names` 为逐行名称,nil 显示序号。`Frame` 与 `Format` 同其他图表。 + +## 状态 + +默认、高亮、筛除、加载、错误、空数据、祖先禁用;筛除行的读数附带本地化文字。 + +## 事件 + +`Changed()` 表示读数行变化;`ValueChanged()` 表示刷选范围变化;`Retried()` 表示重试。 + +## 键盘操作 + +Tab 聚焦;方向键逐行读数;Home/End 首尾。Alt+PageUp/PageDown 选择轴;Alt+上下调整下端;Alt+Shift+上下调整上端;Alt+Delete 清除该轴刷选。 + +## 限制 + +指针拖动轴设置范围,轴上点击清除范围。100,000 行绘制数量受图表高度约束,键盘可读取全部行。范围与过滤仅在数据或筛选变化时计算;更新数据需替换外层 rows 切片。 diff --git a/docs/components/131-chord-diagram.md b/docs/components/131-chord-diagram.md new file mode 100644 index 0000000..3dc1776 --- /dev/null +++ b/docs/components/131-chord-diagram.md @@ -0,0 +1,37 @@ +# 131 ChordDiagram 弦图 + +## 用途 + +以组弧和弦带展示关系矩阵,悬停或键盘读数组时高亮相关连线。 + +## 最小示例 + +```go +names := []string{"Nave", "Choir", "Crypt"} +matrix := [][]float64{{0, 5, 2}, {4, 0, 1}, {1, 2, 0}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChordDiagram(c, names, matrix, mujica.ChordDiagramOptions{Frame: mujica.ChartFrame{Label: "Paths"}}) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`names []string` 为唯一非空组名;`matrix [][]float64` 为同阶方阵,数值须有限且非负。`Frame` 控制名称、尺寸和加载状态。`Format` 自定义关系数值。 + +## 状态 + +默认、组高亮、弦高亮、加载、错误、空矩阵、祖先禁用;对角线值形成自身关系。 + +## 事件 + +`Point` 先枚举组,再枚举关系;`Changed()` 表示读数变化;`Retried()` 表示重试。 + +## 键盘操作 + +Tab 聚焦;方向键依次读取组的流入流出与关系值;Home/End 首尾;Escape 清除。 + +## 限制 + +高密度矩阵按绘图区半径抽样绘制弦带,当前键盘关系保留;布局仅在外层 matrix 切片身份变化时计算。更新数据需替换外层切片。组弧标签在有足够空间时展示,完整名称始终包含在键盘读数中。 diff --git a/docs/components/132-spark-bar.md b/docs/components/132-spark-bar.md new file mode 100644 index 0000000..dd6644a --- /dev/null +++ b/docs/components/132-spark-bar.md @@ -0,0 +1,36 @@ +# 132 SparkBar 迷你柱 + +## 用途 + +行内展示正负数值柱,零线区分方向,末项以强调颜色和菱形标记。 + +## 最小示例 + +```go +values := []float64{3, -2, 4, 1, -3} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.SparkBar(c, values, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}, BarWidth: 10}) +} +ui.Render(view, 400, 100, 1) +``` + +## 参数 + +`values []float64`:有限数值,NaN 表示缺值。`Frame.Label` 必填;`Frame.Height` 默认 28 DIP。`Frame.Status`、`Error`、`Empty` 控制占位。`BarWidth` 默认 6 DIP,负值 panic;整体宽度受窗口限制。`Format` 自定义读数。 + +## 状态 + +默认显示末值;悬停或聚焦显示当前点。加载、错误与空数据保持绘图区尺寸;祖先禁用阻止操作。 + +## 事件 + +返回 `ChartResult`,`Point` 为当前索引,`Changed()` 表示读数变化,`Retried()` 表示重试。 + +## 键盘操作 + +Tab 聚焦;左右箭头逐点读数并朗读;Home/End 到首尾;Escape 恢复末值。 + +## 限制 + +大数据按像素列保留首、极值和末项,绘制数量受宽度约束。数据范围与抽样缓存按切片身份更新;更换数据时替换切片。 diff --git a/docs/components/133-trend-indicator.md b/docs/components/133-trend-indicator.md new file mode 100644 index 0000000..173ccde --- /dev/null +++ b/docs/components/133-trend-indicator.md @@ -0,0 +1,35 @@ +# 133 TrendIndicator 趋势指示 + +## 用途 + +以方向箭头、带符号数值和无障碍方向文字展示指标变化。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.TrendIndicator(c, 12.5, mujica.TrendIndicatorOptions{Precision: 1, Unit: "%", Note: "vs Lent"}) +} +ui.Render(view, 400, 100, 1) +``` + +## 参数 + +`change float64` 必须有限;`Precision` 默认 0,负值 panic;`Unit` 和 `Note` 默认空;`Invert` 默认 false,开启后下降采用成功语义;`Format` 替换数值格式。 + +## 状态 + +上升、下降、持平;正负号与箭头提供颜色之外的区分;方向词支持中英文和消息覆盖。 + +## 事件 + +返回 `*ui.Element`,展示调用方提供的变化值。 + +## 键盘操作 + +展示部件;辅助技术读取方向和完整变化值。 + +## 限制 + +变化值由调用方计算;组件提供显示和语义颜色。 diff --git a/docs/components/138-density-plot.md b/docs/components/138-density-plot.md new file mode 100644 index 0000000..a97920c --- /dev/null +++ b/docs/components/138-density-plot.md @@ -0,0 +1,36 @@ +# 138 DensityPlot 密度图 + +## 用途 + +将多组样本的高斯核密度曲线叠加在同一坐标域,以形状和颜色区分序列。 + +## 最小示例 + +```go +groups := []mujica.BoxGroup{{Name: "Matins", Values: []float64{1, 2, 2, 3, 7}}, {Name: "Vespers", Values: []float64{3, 4, 5, 6, 6}}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.DensityPlot(c, groups, mujica.DensityPlotOptions{Frame: mujica.ChartFrame{Label: "Ages"}, Bandwidth: 1, Points: 128}) +} +ui.Render(view, 400, 300, 1) +``` + +## 参数 + +`groups []BoxGroup` 为唯一非空组名和样本;NaN 为缺值。有限 `Bandwidth` 默认 0,按组自动估计;负值 panic。`Points` 默认 128,显式值须至少 2。`Frame` 和 `Format` 控制图表与密度读数。 + +## 状态 + +默认、序列显隐、悬停、键盘读数、加载、错误、空数据、祖先禁用。 + +## 事件 + +`Changed()` 表示采样位置变化;`Toggled()` 表示序列显隐;`Retried()` 表示重试。 + +## 键盘操作 + +Tab 先到图例,再到图表;图例 Space 切换显隐;图表方向键读取共享 X 位置的各组密度;Home/End 首尾;Escape 清除。 + +## 限制 + +核密度计算在数据、带宽或 Points 变化时执行;绘制曲线按像素列抽样。100,000 个样本默认生成每组 128 个密度点。更新数据需替换样本切片。 diff --git a/docs/components/140-chart-empty-state.md b/docs/components/140-chart-empty-state.md new file mode 100644 index 0000000..54dc64b --- /dev/null +++ b/docs/components/140-chart-empty-state.md @@ -0,0 +1,35 @@ +# 140 ChartEmptyState 图表占位 + +## 用途 + +在图表无数据、加载或失败时保持图表尺寸,并在失败时提供重试。 + +## 最小示例 + +```go +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChartEmptyState(c, mujica.DataFailed, mujica.ChartEmptyStateOptions{Height: 180, Error: "The archive did not answer"}) +} +ui.Render(view, 400, 240, 1) +``` + +## 参数 + +`status DataStatus`:DataReady 显示空数据,DataLoading 显示加载,DataFailed 显示错误和重试;其他有效加载状态同样显示加载。`Height` 默认 240 DIP,负值 panic;`Error`、`Empty` 默认内置本地化文案。 + +## 状态 + +空数据、加载、错误;祖先禁用保持展示并阻止重试;减少动画显示静态加载说明。 + +## 事件 + +返回 `ChoiceResult`,`Changed()` 表示点击重试,数据请求由调用方执行。 + +## 键盘操作 + +Tab 聚焦重试;Enter 或 Space 触发一次重试。 + +## 限制 + +只管理占位展示和事件;数据和异步状态由调用方维护。 diff --git a/docs/prd/ext-1.md b/docs/prd/ext-1.md deleted file mode 100644 index 4726b5c..0000000 --- a/docs/prd/ext-1.md +++ /dev/null @@ -1,232 +0,0 @@ -# MujicaUI PRD 扩展一:101—280 - -版本:1.1 -日期:2026-10-05 -来源:ELY GPUI 组件清单(`Ely-GPUI-Components/gpui-components.md`)中与本库路线相符的条目。 - -本扩展沿用 PRD 第 2、3、5、6、8、9、10 节的全部规则。每行一个公开组件;子部件、变体、尺寸不单独计数。图表、行情与媒体组件以 MyGo Painter 绘制,不建图表引擎、音视频解码或富文本编辑引擎:数据、帧与解码由调用方提供。 - -## 4.12 通用图表一 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 101 | LineChart | 多序列折线;数值与时间轴;缺值断开;悬停读数;序列显隐。 | -| 102 | AreaChart | 面积图;单序列与堆叠;基线可配置;悬停读数。 | -| 103 | BarChart | 纵横向柱状;分组与堆叠;负值;柱标签;键盘逐柱读数。 | -| 104 | PieChart | 饼图与环形;扇区标签;最小角合并为“其他”;中心总计。 | -| 105 | ScatterChart | 散点;点大小映射(气泡);分组颜色;框选。 | -| 106 | RadarChart | 多维雷达;多序列;刻度环;悬停读数。 | -| 107 | HeatmapChart | 二维矩阵热力;色阶图例;单元格读数;空值样式。 | -| 108 | CalendarHeatmap | 按日贡献图;年份切换;周起始可配置;色阶与读数。 | -| 109 | Histogram | 分箱计数;箱宽与箱数可配置;累计模式。 | -| 110 | BoxPlot | 四分位、须线、离群点;多组对比。 | -| 111 | WaterfallChart | 增减累计;小计与总计柱;正负语义色。 | -| 112 | FunnelChart | 漏斗阶段;转化率;阶段读数。 | -| 113 | BulletChart | 实际值、目标值、区间带;纵横向。 | -| 114 | Sparkline | 行内迷你折线、柱形与面积;末值标记;无坐标轴。 | -| 115 | Gauge | 半圆或整圆仪表;阈值分段;数值与单位;不能只靠颜色表达区间。 | -| 116 | Treemap | 层级矩形;点击下钻与返回;标签按面积省略。 | -| 117 | Sunburst | 层级环形;下钻;路径面包屑。 | -| 118 | SankeyChart | 节点与流量带;悬停高亮路径;节点排序稳定。 | -| 119 | NetworkGraph | 节点与边;调用方给定或简单力导布局;拖动节点;缩放平移。 | -| 120 | RealtimeChart | 实时追加数据;固定窗口滚动;暂停;隐藏时停止重绘。 | - -## 4.13 通用图表二与图表部件 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 121 | ChartLegend | 序列图例;点击显隐;键盘切换;横纵布局与溢出折叠。 | -| 122 | ChartTooltip | 跟随指针或焦点的读数浮层;多序列同点读数;边缘避让。 | -| 123 | ChartCrosshair | 十字光标;轴上读数标签;吸附最近数据点。 | -| 124 | ChartAxis | 数值、时间、类别轴;刻度自动与指定;格式化函数;对数轴。 | -| 125 | ChartGrid | 网格线;主次刻度;按设备像素对齐。 | -| 126 | ChartBrush | 区间选择与缩放;拖动、调整两端;键盘移动;回调区间。 | -| 127 | ChartAnnotation | 水平线、垂直线、区间带与文字标注;拖动可选。 | -| 128 | ChartExport | 以当前主题渲染图表为 PNG 字节;尺寸与缩放可配置;不写文件。 | -| 129 | ViolinPlot | 核密度轮廓;中位数与四分位;多组。 | -| 130 | ParallelCoordinates | 多维平行轴;轴上刷选;线高亮。 | -| 131 | ChordDiagram | 关系矩阵弦图;悬停高亮;组弧标签。 | -| 132 | SparkBar | 行内迷你柱;正负值;高亮末项。 | -| 133 | TrendIndicator | 趋势箭头与变化值;正负语义;不只靠颜色。 | -| 134 | MetricCard | 指标名、值、变化、迷你图插槽;加载与错误状态。 | -| 135 | ProgressChart | 多目标完成度环或条;目标线;百分比读数。 | -| 136 | StackedPercentBar | 百分比堆叠条;分段标签;悬停读数。 | -| 137 | DualAxisChart | 左右双轴组合(柱与线);各自刻度与格式。 | -| 138 | DensityPlot | 一维核密度曲线;带宽可配置;多组叠加。 | -| 139 | QuadrantChart | 四象限散点;象限标题与中线可配置。 | -| 140 | ChartEmptyState | 图表的无数据、加载、错误与重试占位;保持图表尺寸。 | - -## 4.14 行情图表与技术分析 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 141 | CandlestickChart | K 线;涨跌色可配置(红涨或绿涨);缩放平移;万根级只绘可见区。 | -| 142 | OHLCChart | 美国线;与 K 线共用数据接口。 | -| 143 | HeikinAshiChart | 平均 K 线;由调用方 OHLC 计算;与原 K 线可切换。 | -| 144 | LineQuoteChart | 分时图;昨收基线;均价线;盘前盘后分段。 | -| 145 | VolumeChart | 成交量柱;涨跌着色;与主图共享时间轴。 | -| 146 | DepthChart | 买卖深度累计面积;中间价;悬停读数。 | -| 147 | VolumeProfile | 价格分布成交量;价值区与控制点。 | -| 148 | MultiChartLayout | 1、2、4、6 宫格多图;独立品种与周期;布局切换不丢状态。 | -| 149 | ChartSync | 多图十字光标与时间范围同步;可逐图解除。 | -| 150 | TimeRangeSelector | 1D、5D、1M、3M、YTD、1Y、5Y、自定义;键盘导航。 | -| 151 | IntervalSelector | 1m 至 1M 周期;分组;收藏周期。 | -| 152 | ChartTypeSwitcher | K 线、美国线、折线、面积、平均 K 线切换。 | -| 153 | IndicatorOverlay | 主图叠加 MA、EMA、BOLL、VWAP;参数可配;计算由调用方或内置辅助函数。 | -| 154 | IndicatorPane | 副图 MACD、RSI、KDJ、OBV;多副图堆叠与高度调整。 | -| 155 | IndicatorSelector | 指标搜索、添加、移除、参数编辑。 | -| 156 | DrawingTools | 趋势线、水平线、斐波那契、矩形、文字标注;选中、移动、删除、撤销。 | -| 157 | DrawingToolbar | 画线工具栏;当前工具;锁定与清除;键盘快捷键提示。 | -| 158 | CompareSymbol | 叠加对比品种;百分比归一;序列颜色与移除。 | -| 159 | PriceAlertLine | 价格预警线;拖动调整;触发回调;不自行通知。 | -| 160 | CandleCountdown | 当前 K 线收盘倒计时;随周期变化;隐藏时停止计时重绘。 | - -## 4.15 报价、盘口与交易 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 161 | TickerTape | 滚动行情条;悬停与聚焦暂停;减少动画时静态分页。 | -| 162 | QuoteCard | 代码、名称、现价、涨跌、迷你图插槽。 | -| 163 | PriceText | 价格精度与千分位;涨跌色;变化闪烁一次(减少动画时无闪烁)。 | -| 164 | PriceChangeBadge | 涨跌额与幅度;箭头与符号;不只靠颜色。 | -| 165 | OrderBook | 买卖档位;深度条;价格聚合档位;点击价格回传。 | -| 166 | Level2Quotes | 多档买卖与委托量;逐档变化高亮。 | -| 167 | TimeAndSales | 逐笔成交;大单标记;虚拟化;暂停跟随。 | -| 168 | DepthLadder | 价格阶梯(DOM);买卖量列;当前价居中;点击下单回调。 | -| 169 | SpreadIndicator | 买卖价差与百分比;阈值提示。 | -| 170 | BidAskBar | 买卖力量对比条;数值标签。 | -| 171 | OrderEntry | 限价、市价、止损、条件单;数量、价格、有效期;校验与预估金额;提交防重入。 | -| 172 | QuickTradeButtons | 快速买卖;数量预设;危险操作确认可配置。 | -| 173 | PositionTable | 持仓;成本、市值、浮动盈亏;平仓操作回调;稳定行 ID。 | -| 174 | OrderTable | 委托;状态筛选;撤单回调;部分成交进度。 | -| 175 | TradeHistoryTable | 成交记录;时间范围筛选;导出回调。 | -| 176 | PnLDisplay | 已实现、未实现、当日盈亏;正负语义;隐私遮蔽切换。 | -| 177 | LeverageSlider | 杠杆档位;风险提示区间;确认后生效。 | -| 178 | MarginIndicator | 保证金率;警戒与强平线;不只靠颜色。 | -| 179 | RiskMeter | 风险等级刻度与说明文字。 | -| 180 | OrderConfirmDialog | 下单摘要与风险提示;默认聚焦取消;二次确认可配置。 | - -## 4.16 市场与资产 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 181 | OptionChain | 行权价居中的认购认沽表;到期日切换;价内高亮。 | -| 182 | GreeksTable | Delta、Gamma、Theta、Vega、Rho;精度与说明。 | -| 183 | PayoffDiagram | 期权组合到期损益;盈亏平衡点;当前价标记。 | -| 184 | Watchlist | 自选分组;拖动排序;实时刷新不丢选择;列可配置。 | -| 185 | SymbolSearch | 代码与名称搜索;市场筛选;最近搜索;异步结果由调用方提供。 | -| 186 | SymbolBadge | 代码、市场、类型标签;可点击。 | -| 187 | MarketHeatmap | 板块与个股热力;面积映射市值;涨跌色阶;下钻。 | -| 188 | Screener | 条件构建(字段、比较、值);结果表;保存条件回调。 | -| 189 | MarketOverview | 指数卡片组与涨跌家数;时间戳。 | -| 190 | IndexCard | 指数现价、涨跌、迷你图。 | -| 191 | MarketStatus | 开盘、收盘、盘前、盘后、休市;下一状态时间。 | -| 192 | TradingSessionClock | 多市场交易时段时钟;时区由调用方指定。 | -| 193 | EconomicCalendar | 经济事件;重要性;预期、前值、实际;国家筛选。 | -| 194 | EarningsCalendar | 财报日程;盘前盘后;预期与实际。 | -| 195 | NewsFeed | 新闻流;来源、时间、相关代码;已读状态;虚拟化。 | -| 196 | SentimentGauge | 情绪刻度(恐惧到贪婪);数值与文字。 | -| 197 | PortfolioSummary | 总资产、当日盈亏、累计收益;分账户。 | -| 198 | AssetAllocationChart | 资产配置环形与列表;目标与偏离。 | -| 199 | PerformanceChart | 收益曲线、基准对比、最大回撤区间。 | -| 200 | CurrencyConverter | 币种选择与互换;汇率由调用方提供;精度规则。 | - -## 4.17 AI 对话:消息 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 201 | ChatContainer | 消息区、输入区、侧栏插槽;新消息自动滚底,用户上翻时停止跟随。 | -| 202 | MessageList | 虚拟化消息列表;稳定消息 ID;新消息提示;按日期分隔。 | -| 203 | MessageBubble | 用户、助手、系统、错误四种;头像与名称插槽;宽度限制。 | -| 204 | MessageHeader | 模型名、时间、状态。 | -| 205 | StreamingText | 流式追加文本;平滑出字可关闭;流式光标;减少动画时直接显示。 | -| 206 | MarkdownView | Markdown 子集渲染:标题、段落、强调、列表、引用、链接、代码、表格、分隔线;流式增量渲染不重排已完成块。 | -| 207 | CodeBlock | 语言标签、行号、基础语法着色、复制、折叠、换行切换。 | -| 208 | TableBlock | 消息内表格;横向滚动;复制为 TSV。 | -| 209 | ImageGrid | 1 至 9 张图片网格;点击打开 ImageViewer;加载与失败。 | -| 210 | FileMessage | 文件名、类型图标、大小、打开与下载回调。 | -| 211 | AudioMessage | 语音条;波形;播放进度;时长;播放由调用方驱动。 | -| 212 | LinkPreviewCard | 标题、描述、站点、缩略图;元数据由调用方提供。 | -| 213 | QuoteReply | 引用原消息摘要;点击跳转原消息。 | -| 214 | MessageActions | 复制、重新生成、编辑、赞、踩、朗读、分享;按角色显示。 | -| 215 | MessageEditor | 编辑已发送消息;保存与取消;保存后产生新分支回调。 | -| 216 | BranchNavigator | 分支切换(< 2/3 >);键盘操作。 | -| 217 | ErrorMessage | 失败原因、重试;限流倒计时(RateLimit);不吞掉原错误文本。 | -| 218 | ThinkingBlock | 可折叠思考过程;思考中动画与耗时;默认折叠可配置。 | -| 219 | ScrollToBottomButton | 离开底部时出现;未读计数;点击回到底部。 | -| 220 | TypingIndicator | 对方正在输入三点动画;减少动画时显示静态文字。 | - -## 4.18 AI 对话:输入与引用 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 221 | PromptComposer | 多行输入;Enter 发送、Shift+Enter 换行可配置;输入法组合期间不发送;附件与工具插槽。 | -| 222 | AttachmentChip | 附件名、类型、大小、上传进度、移除;失败重试。 | -| 223 | PasteImagePreview | 粘贴或拖入图片的预览缩略图;移除。 | -| 224 | DragDropOverlay | 拖入文件时的全区域遮罩与提示;类型检查回调。 | -| 225 | VoiceInputButton | 录音开始与停止;录音时长;权限失败提示;录音由调用方实现。 | -| 226 | VoiceWaveform | 输入电平波形;静音提示。 | -| 227 | SlashCommandMenu | 输入“/”弹出命令;筛选;方向键选择;Tab 补全。 | -| 228 | ContextMentionMenu | 输入“@”选择文件、文档、网页等上下文;分组;异步结果。 | -| 229 | ContextChips | 已附加上下文列表;移除;溢出折叠。 | -| 230 | ModelSelector | 模型列表;能力标签与上下文长度;不可用项说明。 | -| 231 | ModeSelector | 对话、搜索、深度研究、Agent 模式切换。 | -| 232 | ToolToggleMenu | 联网、代码执行等工具开关;需授权项标记。 | -| 233 | ParameterPanel | 温度、Top-p、最大长度等参数;范围与默认值;重置。 | -| 234 | TokenCounter | 当前输入 token 数与上限;估算值由调用方提供。 | -| 235 | ContextWindowMeter | 上下文使用率条;分段(系统、历史、附件);阈值警告。 | -| 236 | SendButton | 发送与停止两态;禁用条件;快捷键提示。 | -| 237 | CitationBadge | 行内引用编号;悬停预览来源;点击定位来源。 | -| 238 | SourceCard | 来源标题、站点、摘要、时间;打开回调。 | -| 239 | SourcesPanel | 来源列表;按引用顺序;与正文引用联动高亮。 | -| 240 | SearchProgress | 搜索中关键词与已读来源数;阶段列表;完成后折叠。 | - -## 4.19 AI 对话:会话与引导 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 241 | ConversationList | 按今天、昨天、7 天内、更早分组;置顶;虚拟化。 | -| 242 | ConversationItem | 标题、时间、重命名、删除、置顶、导出回调;行内重命名。 | -| 243 | ConversationSearch | 标题与内容搜索;匹配高亮;异步结果。 | -| 244 | ProjectList | 项目与文件夹;会话归属;拖动移入。 | -| 245 | ProjectKnowledgePanel | 项目知识文件列表;添加、移除、容量提示。 | -| 246 | WelcomeScreen | 问候、能力卡片、起始提示插槽。 | -| 247 | SuggestionChips | 起始提示与追问建议;点击填入或直接发送可配置。 | -| 248 | PromptLibrary | 提示模板分类、搜索、预览、插入;变量占位符填写。 | -| 249 | CapabilityCards | 能力说明卡片;点击示例。 | -| 250 | FeedbackForm | 赞踩后的原因选项与文字;提交与取消。 | -| 251 | DateSeparator | 消息日期分隔;今天、昨天与日期格式本地化。 | -| 252 | ThinkingIndicator | 思考中状态动画与阶段文字;减少动画时静态。 | -| 253 | StopGeneratingButton | 停止生成;生成结束后隐藏;快捷键。 | -| 254 | SystemPromptEditor | 系统提示多行编辑;字数;恢复默认;未保存标记。 | -| 255 | CostEstimator | 输入、输出 token 与费用估算;单价由调用方提供。 | -| 256 | SharedConversationView | 只读会话视图;分享者与时间;复制链接回调。 | -| 257 | ConversationExport | 导出为 Markdown、JSON、纯文本;范围选择;内容由组件生成,写文件由调用方完成。 | -| 258 | RegenerateMenu | 重新生成;换模型重试;更长、更短等变体选项。 | -| 259 | ArtifactCard | 消息内产物卡片(代码、文档、网页);打开产物面板回调。 | -| 260 | ChatEmptyState | 新会话、无搜索结果、离线三种空状态。 | - -## 4.20 AI Agent 与工具调用 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 261 | ToolCallCard | 工具名、参数、结果、耗时、状态;参数与结果折叠;JSON 高亮。 | -| 262 | ToolCallGroup | 连续调用折叠为一组;总耗时与失败数。 | -| 263 | ToolApprovalDialog | 执行前审批;参数预览;允许、拒绝;默认聚焦拒绝。 | -| 264 | PermissionPrompt | 允许一次、始终允许、拒绝;作用范围说明。 | -| 265 | AgentStepList | 执行步骤时间线;当前步;步骤展开详情;失败步重试回调。 | -| 266 | AgentPlan | 计划清单;实时勾选;新增与跳过项;进度。 | -| 267 | AgentStatus | 规划中、执行中、等待、完成、失败;不只靠颜色;状态动画可关闭。 | -| 268 | AgentProgress | 总体进度与当前动作文字;不确定模式。 | -| 269 | SubAgentTree | 子 Agent 层级;各自状态;展开查看。 | -| 270 | FileChangeCard | 文件变更预览;增删统计;接受与拒绝;打开差异。 | -| 271 | MultiFileDiffReview | 多文件审阅;逐文件接受拒绝;全部接受;进度。 | -| 272 | CommandExecutionCard | 命令、工作目录、输出(ANSI)、退出码、耗时;中止回调。 | -| 273 | ScreenshotStream | Agent 画面帧序列查看;帧由调用方提供;暂停与逐帧。 | -| 274 | ArtifactPanel | 产物面板;代码、文档、网页预览插槽;复制与导出回调。 | -| 275 | ArtifactVersionSwitcher | 产物版本切换与差异入口。 | -| 276 | SandboxStatus | 沙箱运行状态、资源与剩余时间。 | -| 277 | MCPServerList | 服务器列表;连接状态;启停与重连回调;工具数。 | -| 278 | MemoryPanel | 记忆条目列表;搜索;编辑与删除。 | -| 279 | CheckpointList | 检查点;回滚确认;当前点标记。 | -| 280 | HumanInputRequest | Agent 请求用户输入;问题、选项与自由回答;超时提示。 | diff --git a/docs/prd/ext-2.md b/docs/prd/ext-2.md deleted file mode 100644 index c14aced..0000000 --- a/docs/prd/ext-2.md +++ /dev/null @@ -1,155 +0,0 @@ -# MujicaUI PRD 扩展二:281—400 - -版本:1.1 -日期:2026-10-05 -规则同扩展一。动画组件服从 PRD 3.4:状态过渡 120 毫秒、弹层 160 毫秒,不用弹跳与装饰性循环,减少动画模式直接切换或显示静态说明。 - -## 4.21 Agent 运维与动效 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 281 | InterruptButton | 中断运行中的 Agent;确认可配置;中断中状态。 | -| 282 | TokenUsageChart | 按会话或步骤的 token 用量柱线图;输入输出分色。 | -| 283 | CostBreakdown | 按模型、工具、步骤的费用分解表与合计。 | -| 284 | TraceViewer | 调用链树与时间轴;跨度耗时;选中查看属性。 | -| 285 | EvalResultTable | 评测用例、得分、通过与失败;差异查看回调。 | -| 286 | ToolRegistryPanel | 可用工具列表;参数模式预览;启停。 | -| 287 | DotsLoader | 三点加载;尺寸与说明;减少动画时静态。 | -| 288 | BarsLoader | 条形加载;同上。 | -| 289 | PulseLoader | 单点呼吸式加载;强度受限,不发光;减少动画时静态。 | -| 290 | OrbitLoader | 菱形环绕加载;与 Spinner 同一视觉语言。 | -| 291 | WaveLoader | 波形加载;同上。 | -| 292 | Shimmer | 占位扫光;仅用于加载中;减少动画时静态填充。 | -| 293 | CountUp | 数字从旧值过渡到新值;时长与精度;减少动画时直接显示。 | -| 294 | Typewriter | 逐字显示文本;速度;完成回调;跳过;减少动画时直接显示。 | -| 295 | ShimmerText | 处理中文字扫光(如“思考中”);减少动画时静态。 | -| 296 | Stagger | 子项依次进场;间隔可配;只在出现时执行一次。 | -| 297 | ReorderTransition | 列表重排时元素移动过渡;稳定键。 | -| 298 | LayoutTransition | 布局尺寸与位置变化过渡(FLIP)。 | -| 299 | Presence | 元素进出场过渡(淡入淡出、滑动、缩放);退出完成后移除。 | -| 300 | BlinkHighlight | 数值变化单次高亮;方向色;减少动画时改为静态标记。 | - -## 4.22 版本控制 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 301 | DiffViewer | 并排与统一视图;行号;增删高亮;折叠未变更区;大文件只构建可见行。 | -| 302 | InlineDiff | 行内词级差异高亮。 | -| 303 | ThreeWayMerge | 本地、基准、远端三栏与结果栏;逐块采纳。 | -| 304 | ConflictResolver | 冲突块列表;采纳当前、传入、两者;已解决计数。 | -| 305 | ChangesList | 暂存与未暂存分组;逐文件与全部暂存;状态标记。 | -| 306 | CommitInput | 提交标题与正文;标题长度提示;提交与修订;防重入。 | -| 307 | CommitGraph | 提交图谱泳道;分支与合并线;虚拟化。 | -| 308 | CommitList | 提交列表;作者、时间、哈希、消息;选择查看。 | -| 309 | BranchSelector | 本地与远端分支搜索选择;新建分支入口。 | -| 310 | BranchList | 分支列表;当前分支、上游、领先落后数;操作回调。 | -| 311 | TagList | 标签列表;注释;跳转提交。 | -| 312 | StashList | 贮藏列表;应用、弹出、删除回调。 | -| 313 | BlameView | 逐行作者与提交;同提交行合并;悬停详情。 | -| 314 | FileHistory | 单文件提交历史与差异入口。 | -| 315 | PullRequestCard | 标题、作者、状态、检查、评审人、差异统计。 | -| 316 | ReviewComment | 行级评审评论;回复;解决与重开。 | -| 317 | DiffStat | +增 −删 统计与比例条。 | -| 318 | GitStatusBadge | M、A、D、U、R、C 状态标记;不只靠颜色。 | -| 319 | CommandBlock | 命令分块(输入、输出、退出码、耗时);折叠;复制。 | -| 320 | AnsiText | ANSI 16 色、256 色、真彩与粗斜下划线渲染;未知序列原样保留并记录。 | - -## 4.23 终端、代码与调试 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 321 | Terminal | 终端网格:ANSI 光标移动与清屏、滚动缓冲、选择复制、输入回调;PTY 由调用方提供。 | -| 322 | TerminalTabs | 多终端标签;重命名;关闭确认。 | -| 323 | TerminalSearch | 滚动缓冲内搜索;匹配数与上下跳转。 | -| 324 | CommandHistory | 命令历史列表;搜索;重放回调。 | -| 325 | LogViewer | 日志级别过滤、跟随尾部、关键字高亮、虚拟化十万行。 | -| 326 | ProcessList | 进程表;CPU、内存排序;结束进程回调与确认。 | -| 327 | CodeViewer | 只读代码视图:行号、基础语法着色、折叠、当前行、选择复制;大文件虚拟化。 | -| 328 | Minimap | 代码缩略图;可见区框;拖动跳转。 | -| 329 | FindWidget | 查找与替换;大小写、整词、正则;匹配数。 | -| 330 | SearchPanel | 多文件搜索结果;按文件分组;匹配预览;包含与排除模式。 | -| 331 | ProblemsPanel | 错误、警告、信息列表;按文件分组;跳转回调。 | -| 332 | OutputPanel | 多通道输出;清空;跟随尾部。 | -| 333 | SymbolOutline | 符号大纲树;类型图标;筛选;跟随光标。 | -| 334 | CompletionMenu | 补全候选;类型图标与详情;方向键与 Tab 接受。 | -| 335 | DebugToolbar | 继续、单步、步入、步出、重启、停止;状态禁用规则。 | -| 336 | BreakpointList | 断点列表;启用开关;条件断点编辑。 | -| 337 | CallStack | 调用栈帧;当前帧;线程分组。 | -| 338 | VariablesPanel | 变量树形展开;值修改回调;变化高亮。 | -| 339 | HexViewer | 十六进制与 ASCII 对照;偏移列;选择同步;虚拟化。 | -| 340 | Flamegraph | 火焰图;点击放大子树;搜索高亮;耗时读数。 | - -## 4.24 媒体 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 341 | ImageCropper | 裁剪框;比例锁定;旋转 90 度;输出裁剪矩形。 | -| 342 | ImageAnnotator | 矩形、箭头、文字标注;选择与删除;导出标注数据。 | -| 343 | ImageThumbnail | 缩略图;比例裁切;选中与加载失败状态。 | -| 344 | Lightbox | 全窗图片浏览;左右切换;说明文字;Escape 关闭与焦点恢复。 | -| 345 | VideoPlayer | 帧由调用方提供的播放器外壳:播放、进度、倍速、字幕、全屏、画中画回调。 | -| 346 | VideoScrubber | 时间轴拖动;缓冲段;悬停时间与缩略图插槽。 | -| 347 | VideoThumbnailStrip | 缩略帧条;当前帧;点击跳转。 | -| 348 | AudioPlayer | 播放、暂停、进度、时长;播放由调用方驱动。 | -| 349 | AudioWaveform | 波形绘制;播放进度覆盖;区间选择。 | -| 350 | AudioSpectrum | 频谱柱;数据由调用方提供;隐藏时停止重绘。 | -| 351 | VolumeControl | 音量滑块与静音;方向键。 | -| 352 | PlaybackSpeedControl | 倍速选择 0.5×—2×。 | -| 353 | MediaControls | 上一首、播放、下一首、循环、随机;键盘。 | -| 354 | Playlist | 播放列表;当前项;拖动排序;移除。 | -| 355 | SubtitleEditor | 字幕条目时间与文本编辑;时间重叠校验。 | -| 356 | ScreenRecorderControls | 开始、暂停、停止、计时;录制由调用方实现。 | -| 357 | CameraPreview | 摄像头帧预览外壳;无信号状态;镜像切换。 | -| 358 | MicLevelMeter | 麦克风电平条;峰值保持。 | -| 359 | DeviceSelector | 麦克风、摄像头、扬声器选择;设备列表由调用方提供。 | -| 360 | ImageCompare | 前后对比滑块;键盘调整。 | - -## 4.25 项目与任务管理 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 361 | KanbanBoard | 列与卡片;拖动跨列移动与排序;列 WIP 上限;键盘移动卡片。 | -| 362 | TaskList | 任务列表;分组;完成过滤;虚拟化。 | -| 363 | TaskItem | 复选、标题、优先级、截止日期、负责人;行内编辑。 | -| 364 | TaskDetailPanel | 任务详情侧栏;字段编辑;活动记录插槽。 | -| 365 | SubtaskList | 子任务;进度;增删与排序。 | -| 366 | GanttChart | 任务条、依赖线、里程碑;拖动调整日期;今日线;时间缩放。 | -| 367 | Roadmap | 季度或月度路线图;泳道;条目拖动。 | -| 368 | SprintBoard | 迭代信息、剩余天数、看板。 | -| 369 | BurndownChart | 理想线与实际线;剩余工作量。 | -| 370 | PriorityIndicator | 紧急、高、中、低、无;图形与文字。 | -| 371 | StatusSelect | 工作流状态选择;状态分组。 | -| 372 | AssigneePicker | 成员搜索与多选;头像。 | -| 373 | DueDatePicker | 截止日期快捷项(今天、明天、下周)与日历;逾期标记。 | -| 374 | LabelManager | 标签创建、编辑颜色、删除、选择。 | -| 375 | IssueCard | 编号、标题、状态、优先级、负责人、标签。 | -| 376 | IssueIdBadge | ENG-123 样式编号;复制。 | -| 377 | MilestoneProgress | 里程碑完成度与日期。 | -| 378 | WorkloadView | 成员负载条;超载提示。 | -| 379 | TimeTracker | 计时开始停止;累计时长;手动修正。 | -| 380 | PomodoroTimer | 专注与休息周期;暂停;完成回调;隐藏时停止重绘。 | - -## 4.26 文件与协作 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 381 | FileExplorer | 文件夹树与文件列表组合;导航历史;选择。 | -| 382 | FileGrid | 文件网格视图;缩略图插槽;多选。 | -| 383 | FileIcon | 按扩展名与类型的图标;文件夹开合。 | -| 384 | FilePreview | 快速预览外壳:图片、文本、代码、不支持类型说明。 | -| 385 | PathBar | 路径分段;点击跳转;长路径中间折叠。 | -| 386 | RenameInline | 行内重命名;默认选中扩展名前部分;校验回调。 | -| 387 | FileOperationProgress | 复制、移动、删除进度;取消;冲突询问。 | -| 388 | TransferQueue | 上传下载队列;暂停、继续、重试、移除。 | -| 389 | StorageUsage | 存储占用分段条与明细。 | -| 390 | RecentFiles | 最近文件;时间分组;清除。 | -| 391 | ArchiveViewer | 压缩包条目树;大小与压缩率;条目由调用方提供。 | -| 392 | PresenceAvatars | 在线协作者头像;溢出计数;跟随入口。 | -| 393 | CommentThread | 评论与回复;编辑、删除、解决;提及插槽。 | -| 394 | Reactions | 表情回应与计数;添加回应选择器。 | -| 395 | ShareDialog | 分享对象、权限、链接复制回调。 | -| 396 | PermissionSelect | 可查看、可评论、可编辑。 | -| 397 | ActivityLog | 操作记录;按日分组;过滤。 | -| 398 | VersionHistory | 版本列表;预览与恢复回调;命名版本。 | -| 399 | LiveIndicator | 实时同步状态;断线提示。 | -| 400 | RemoteCursor | 远程光标与选区标记;姓名标签。 | diff --git a/docs/prd/ext-3.md b/docs/prd/ext-3.md deleted file mode 100644 index 003c5cd..0000000 --- a/docs/prd/ext-3.md +++ /dev/null @@ -1,130 +0,0 @@ -# MujicaUI PRD 扩展三:401—500 - -版本:1.1 -日期:2026-10-05 -规则同扩展一。账户类组件只负责界面与输入,不实现认证、不保存凭据;凭据只经调用方回调传出,不进日志、无障碍值或测试报告。 - -## 4.27 即时通讯与邮件 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 401 | ChannelList | 频道与私信;未读数、静音、置顶;分组折叠。 | -| 402 | ChatMessage | 连续消息合并、时间戳、编辑标记、回复与回应插槽。 | -| 403 | UnreadDivider | 未读分隔线与计数。 | -| 404 | ReadReceipt | 已发送、已送达、已读;多人已读头像。 | -| 405 | MemberList | 成员分组(在线、离线);角色。 | -| 406 | UserProfileCard | 头像、名称、状态、角色、操作插槽。 | -| 407 | OnlineStatus | 在线、离开、忙碌、离线;形状加文字。 | -| 408 | StatusSetter | 自定义状态文字与表情;清除时间。 | -| 409 | CallControls | 静音、摄像头、共享、挂断;状态与快捷键。 | -| 410 | VideoCallGrid | 参与者宫格;发言者高亮;帧由调用方提供。 | -| 411 | IncomingCallDialog | 来电接听与拒绝;默认聚焦拒绝可配置。 | -| 412 | EmojiPicker | 分类、搜索、最近使用、肤色。 | -| 413 | PinnedMessages | 置顶消息列表;跳转;取消置顶。 | -| 414 | ThreadPanel | 话题侧栏;原消息与回复。 | -| 415 | MailList | 未读粗体、星标、附件图标;多选;虚拟化。 | -| 416 | MailReader | 邮件头、正文(纯文本与安全子集)、附件。 | -| 417 | MailComposer | 收件人、抄送、密送、主题、正文、附件;草稿保存回调。 | -| 418 | RecipientInput | 收件人标签输入;地址校验;联系人建议。 | -| 419 | QuotedText | 引用文字折叠与展开。 | -| 420 | SnoozePicker | 稍后提醒快捷项与自定义时间。 | - -## 4.28 日历与时间 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 421 | CalendarMonthView | 月视图事件格;溢出“+N”;拖动改期。 | -| 422 | CalendarWeekView | 周视图时间网格;全天行;拖动创建与调整。 | -| 423 | CalendarDayView | 日视图;重叠事件并列。 | -| 424 | AgendaView | 日程列表;按日分组。 | -| 425 | YearView | 年视图;事件密度标记。 | -| 426 | EventChip | 事件块;颜色、时间、标题;截断。 | -| 427 | EventEditor | 标题、时间、地点、参与者、提醒、重复;校验。 | -| 428 | EventPopover | 事件摘要浮层;编辑、删除入口。 | -| 429 | CurrentTimeIndicator | 当前时间线;隐藏时停止更新。 | -| 430 | RecurrenceEditor | 每日、每周、每月、每年与自定义;结束条件。 | -| 431 | AvailabilityPicker | 空闲时段选择网格;多人重叠。 | -| 432 | TimezoneSelect | 时区搜索;偏移显示;常用时区。 | -| 433 | ReminderPicker | 提前提醒选项。 | -| 434 | AttendeeList | 参与者与回复状态。 | -| 435 | WeekPicker | 周选择;周起始可配置。 | -| 436 | DurationPicker | 时长输入(时分秒);范围。 | -| 437 | CronEditor | Cron 表达式编辑与可视化;校验;下次运行时间预览。 | -| 438 | RelativeTime | 相对时间文本;自动更新频率随时间远近;隐藏时停止。 | -| 439 | Countdown | 倒计时;结束回调;格式。 | -| 440 | Stopwatch | 秒表;计次;暂停与复位。 | - -## 4.29 仪表盘与开发工具 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 441 | DashboardGrid | 卡片网格;拖动与调整尺寸;布局保存回调。 | -| 442 | StatCard | 统计卡片;值、变化、迷你图;加载与错误。 | -| 443 | AlertList | 告警列表;级别、来源、时间;确认与静默回调。 | -| 444 | IncidentCard | 事件标题、状态、影响、时间线。 | -| 445 | UptimeBar | 按日可用性条;悬停详情。 | -| 446 | ServiceStatus | 服务状态列表;正常、降级、中断。 | -| 447 | LogStream | 实时日志流;暂停;级别过滤;虚拟化。 | -| 448 | TraceWaterfall | 请求瀑布图;跨度层级与耗时。 | -| 449 | ResourceGauge | CPU、内存、磁盘仪表;阈值。 | -| 450 | SystemMonitor | 多资源实时折线组合;采样数据由调用方提供。 | -| 451 | RefreshIntervalSelector | 刷新间隔选择;手动刷新。 | -| 452 | DashboardFilterBar | 时间范围、环境、标签过滤;清除。 | -| 453 | JsonViewer | JSON 树;展开折叠;路径复制;搜索。 | -| 454 | JsonEditor | JSON 文本编辑;格式化;解析错误定位。 | -| 455 | SchemaTree | 数据库、表、列、索引树。 | -| 456 | ApiRequestBuilder | 方法、URL、参数、请求头、正文;发送回调。 | -| 457 | ResponseViewer | 状态码、耗时、大小、正文(JSON 与文本)、响应头。 | -| 458 | KeyValueInput | 键值对行编辑;启用开关;增删。 | -| 459 | EnvironmentSelector | 环境切换;变量预览。 | -| 460 | RegexTester | 正则输入、测试文本、匹配高亮与分组;语法错误提示。 | - -## 4.30 设置、账户与引导 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 461 | SettingsLayout | 设置分区导航、分节、设置行(标签、说明、控件)。 | -| 462 | SettingsSearch | 设置项搜索;匹配高亮;跳转。 | -| 463 | ThemeSelector | 系统、浅色、深色预览卡选择。 | -| 464 | AccentColorPicker | 主色候选;对比度不足的候选标记。 | -| 465 | ShortcutRecorder | 录制快捷键;冲突提示;平台修饰键显示。 | -| 466 | KeyboardShortcutsList | 快捷键表;分组;搜索。 | -| 467 | LoginForm | 账号、密码、记住我;提交中与错误;凭据仅经回调传出。 | -| 468 | OAuthButtons | 第三方登录按钮组;名称由调用方提供,不使用商标图形。 | -| 469 | TwoFactorInput | 六位验证码;粘贴;重发倒计时。 | -| 470 | ProfileEditor | 头像、名称、简介;未保存标记。 | -| 471 | AccountSwitcher | 多账户切换;添加账户入口。 | -| 472 | WorkspaceSwitcher | 工作区搜索与切换。 | -| 473 | UserMenu | 用户头像菜单;状态、设置、退出。 | -| 474 | SessionList | 登录会话;设备与位置;注销其他会话回调。 | -| 475 | ApiKeyManager | 密钥列表;创建时只显示一次;撤销确认;明文不入日志。 | -| 476 | UsageQuota | 用量与配额条;重置时间。 | -| 477 | OnboardingWizard | 多步引导;进度;跳过;完成回调。 | -| 478 | Coachmark | 功能提示锚点;步骤导航;Escape 关闭。 | -| 479 | WhatsNewDialog | 更新内容列表;不再显示。 | -| 480 | FeedbackWidget | 反馈类型、文字、截图附件插槽;提交回调。 | - -## 4.31 通用补充 · 20 个 - -| 编号 | 组件 | 首版功能 | -| --- | --- | --- | -| 481 | SplitButton | 主操作与下拉菜单;两部分独立焦点。 | -| 482 | CopyButton | 复制并短暂显示已复制;屏幕阅读器播报。 | -| 483 | HoldToConfirm | 按住确认危险操作;进度;键盘按住空格;减少动画时显示计时文字。 | -| 484 | BulkActionBar | 多选后出现的批量操作条;选中数;清除选择。 | -| 485 | ScrubInput | 拖动标签调整数值;精度与范围;输入模式。 | -| 486 | CurrencyInput | 货币金额输入;币种符号;千分位;精度。 | -| 487 | MaskedInput | 格式掩码输入(电话、卡号等);输入法安全。 | -| 488 | MentionInput | @ 提及输入;候选;提及标记为整体删除。 | -| 489 | ChoiceChips | 单选或多选筛选芯片;键盘导航。 | -| 490 | Knob | 旋钮;拖动与方向键;刻度与数值。 | -| 491 | VerticalSlider | 纵向滑块;同 Slider 规则。 | -| 492 | ColorPalette | 预设色板;选择与键盘导航;自定义色入口。 | -| 493 | SignaturePad | 手写签名画板;清除;导出路径数据。 | -| 494 | Banner | 页面顶部横幅;信息、警告、错误;操作与关闭。 | -| 495 | UndoToast | 可撤销操作的消息;倒计时;撤销回调。 | -| 496 | Masonry | 瀑布流布局;列数随宽度;稳定键。 | -| 497 | ResizablePanelGroup | 多面板可调尺寸;最小值;折叠;尺寸保存回调。 | -| 498 | DockPanel | 可停靠面板区;拖动标签到边缘停靠;布局状态由调用方保存。 | -| 499 | QRCode | 文本生成二维码;纠错级别;尺寸;离线生成。 | -| 500 | ActivityFeed | 活动流;参与者、动作、对象、时间;按日分组。 | diff --git a/example_charts2_test.go b/example_charts2_test.go new file mode 100644 index 0000000..b568723 --- /dev/null +++ b/example_charts2_test.go @@ -0,0 +1,180 @@ +package mujica_test + +import ( + "github.com/egoist/mygo/ui" + mujica "mujicaui" +) + +func ExampleChartLegend() { + hidden := map[string]bool{} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + k := mujica.Tokens(c) + items := []mujica.ChartLegendItem{{Name: "Pews", Color: k.Info}, {Name: "Candles", Color: k.Success, Shape: 1}} + mujica.ChartLegend(c, &hidden, items, mujica.ChartLegendOptions{MaxItems: 1}) + } + ui.Render(view, 400, 200, 1) +} + +func ExampleChartTooltip() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + k := mujica.Tokens(c) + mujica.ChartTooltip(c, 40, 40, []mujica.ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: k.Info}, {Text: "Candles 2", Color: k.Success, Shape: 1}}) + } + ui.Render(view, 400, 200, 1) +} + +func ExampleChartCrosshair() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + hair := mujica.ChartCrosshair(c, mujica.ChartCrosshairOptions{X: &x, Y: &y}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + x.Draw(p, plot) + y.Draw(p, plot) + hair.Draw(p, plot, x.Map(plot, 5), y.Map(plot, 70)) + }) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleChartAxis() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + axis := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Kind: mujica.AxisLog, Min: 1, Max: 1000}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + axis.Draw(p, ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60}) + }) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleChartGrid() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + grid := mujica.ChartGrid(c, mujica.ChartGridOptions{X: &x, Y: &y, Minor: 2}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + grid.Draw(p, plot) + x.Draw(p, plot) + y.Draw(p, plot) + }) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleChartBrush() { + value := [2]float64{20, 60} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChartBrush(c, &value, mujica.ChartBrushOptions{Label: "Months", Max: 100, Step: 1, Values: []float64{2, 4, 3, 8, 5}}) + } + ui.Render(view, 400, 160, 1) +} + +func ExampleChartAnnotation() { + notes := []mujica.ChartNote{{Kind: mujica.NoteHLine, Value: 50, Text: "Goal", Draggable: true}, {Kind: mujica.NoteBand, Value: 6, End: 8, Text: "Lent"}} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + annotation := mujica.ChartAnnotation(c, notes, mujica.ChartAnnotationOptions{X: &x, Y: &y}) + box := ui.Box(c).Fill().Focusable().Label("Annotations") + b := box.Bounds() + annotation.Drag(box, ui.Rect{X: 60, Y: 20, W: b.W - 80, H: b.H - 60}) + box.Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + x.Draw(p, plot) + y.Draw(p, plot) + annotation.Draw(p, plot) + }) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleChartExport() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + data, err := mujica.ChartExport(c, func(c *ui.Context) { + mujica.SparkBar(c, []float64{3, -2, 5}, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}}) + }, mujica.ChartExportOptions{Width: 300, Height: 100, Scale: 2}) + if err != nil { + panic(err) + } + bitmap, err := ui.DecodeBitmap(data) + if err != nil { + panic(err) + } + ui.Image(c, bitmap).Size(300, 100) + } + ui.Render(view, 400, 160, 1) +} + +func ExampleSparkBar() { + values := []float64{3, -2, 4, 1, -3} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.SparkBar(c, values, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}, BarWidth: 10}) + } + ui.Render(view, 400, 100, 1) +} + +func ExampleTrendIndicator() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.TrendIndicator(c, 12.5, mujica.TrendIndicatorOptions{Precision: 1, Unit: "%", Note: "vs Lent"}) + } + ui.Render(view, 400, 100, 1) +} + +func ExampleChartEmptyState() { + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChartEmptyState(c, mujica.DataFailed, mujica.ChartEmptyStateOptions{Height: 180, Error: "The archive did not answer"}) + } + ui.Render(view, 400, 240, 1) +} + +func ExampleViolinPlot() { + groups := []mujica.BoxGroup{{Name: "Choir", Values: []float64{1, 2, 3, 4, 7, 9}}, {Name: "Nave", Values: []float64{2, 4, 5, 6, 8}}} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ViolinPlot(c, groups, mujica.ViolinPlotOptions{Frame: mujica.ChartFrame{Label: "Hymns"}, Bandwidth: 1}) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleParallelCoordinates() { + filters := map[string][2]float64{} + axes := []string{"Age", "Hymns", "Vigils"} + rows := [][]float64{{20, 3, 9}, {35, 8, 2}, {50, 5, 5}} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ParallelCoordinates(c, &filters, axes, rows, mujica.ParallelCoordinatesOptions{Frame: mujica.ChartFrame{Label: "Monks"}, Names: []string{"Agnes", "Clare", "Hild"}}) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleChordDiagram() { + names := []string{"Nave", "Choir", "Crypt"} + matrix := [][]float64{{0, 5, 2}, {4, 0, 1}, {1, 2, 0}} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChordDiagram(c, names, matrix, mujica.ChordDiagramOptions{Frame: mujica.ChartFrame{Label: "Paths"}}) + } + ui.Render(view, 400, 300, 1) +} + +func ExampleDensityPlot() { + groups := []mujica.BoxGroup{{Name: "Matins", Values: []float64{1, 2, 2, 3, 7}}, {Name: "Vespers", Values: []float64{3, 4, 5, 6, 6}}} + view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.DensityPlot(c, groups, mujica.DensityPlotOptions{Frame: mujica.ChartFrame{Label: "Ages"}, Bandwidth: 1, Points: 128}) + } + ui.Render(view, 400, 300, 1) +} diff --git a/examples/gallery/pages_charts2.go b/examples/gallery/pages_charts2.go index 27e0197..ef6aa5f 100644 --- a/examples/gallery/pages_charts2.go +++ b/examples/gallery/pages_charts2.go @@ -1,3 +1,70 @@ package main -var charts2Pages = []page{} +import ( + "fmt" + + "github.com/egoist/mygo/ui" + + mujica "mujicaui" +) + +const c2Category = "Charts II" + +var charts2Pages = []page{ + {ID: "121", Name: "ChartLegend", ZhName: "图例", Category: c2Category, Demo: c2LegendDemo, Code: c2ChartLegendCode, Keys: "Tab enters; arrows move; Space toggles; Enter expands."}, + {ID: "122", Name: "ChartTooltip", ZhName: "读数浮层", Category: c2Category, Demo: c2TooltipDemo, Code: c2ChartTooltipCode, Keys: c1Keys}, + {ID: "123", Name: "ChartCrosshair", ZhName: "十字光标", Category: c2Category, Demo: c2CrosshairDemo, Code: c2ChartCrosshairCode, Keys: c1Keys}, + {ID: "124", Name: "ChartAxis", ZhName: "坐标轴", Category: c2Category, Demo: c2AxisDemo, Code: c2ChartAxisCode, Keys: c1Keys}, + {ID: "125", Name: "ChartGrid", ZhName: "图表网格", Category: c2Category, Demo: c2GridDemo, Code: c2ChartGridCode, Keys: c1Keys}, + {ID: "126", Name: "ChartBrush", ZhName: "区间刷选", Category: c2Category, Demo: c2BrushDemo, Code: c2ChartBrushCode, Keys: "Tab: start, window, end; arrows step; PageUp/Down step ten; Home/End reach bounds."}, + {ID: "127", Name: "ChartAnnotation", ZhName: "图表标注", Category: c2Category, Demo: c2AnnotationDemo, Code: c2ChartAnnotationCode, Keys: c1Keys + " Alt+PageUp/Down selects a movable note; Alt+arrows move it."}, + {ID: "128", Name: "ChartExport", ZhName: "图表导出", Category: c2Category, Demo: c2ExportDemo, Code: c2ChartExportCode, Keys: "Tab reaches Export PNG; Enter or Space renders bytes in the current theme."}, + {ID: "129", Name: "ViolinPlot", ZhName: "小提琴图", Category: c2Category, Demo: c2ViolinDemo, Code: c2ViolinPlotCode, Keys: c1Keys}, + {ID: "130", Name: "ParallelCoordinates", ZhName: "平行坐标", Category: c2Category, Demo: c2ParallelDemo, Code: c2ParallelCoordinatesCode, Keys: c1Keys + " Alt+PageUp/Down selects an axis; Alt+Up/Down adjusts its lower bound; Alt+Shift+Up/Down adjusts its upper bound; Alt+Delete clears."}, + {ID: "131", Name: "ChordDiagram", ZhName: "弦图", Category: c2Category, Demo: c2ChordDemo, Code: c2ChordDiagramCode, Keys: c1Keys}, + {ID: "132", Name: "SparkBar", ZhName: "迷你柱", Category: c2Category, Demo: c2SparkBarDemo, Code: c2SparkBarCode, Keys: "Tab focuses bars; Left/Right read points; Home/End jump; Escape restores the last value."}, + {ID: "133", Name: "TrendIndicator", ZhName: "趋势指示", Category: c2Category, Demo: c2TrendDemo, Code: c2TrendIndicatorCode, Keys: "Change and Invert controls use the keyboard; the indicator is read as text."}, + {ID: "138", Name: "DensityPlot", ZhName: "密度图", Category: c2Category, Demo: c2DensityDemo, Code: c2DensityPlotCode, Keys: c1Keys + " Space on legend entries hides or shows a group."}, + {ID: "140", Name: "ChartEmptyState", ZhName: "图表占位", Category: c2Category, Demo: c2EmptyDemo, Code: c2ChartEmptyStateCode, Keys: "Tab reaches Retry; Enter or Space retries."}, +} + +func c2Check(c *ui.Context, value *bool, label string, log func(string)) { + if mujica.Checkbox(c, value, label, mujica.CheckboxOptions{}).Changed() { + log(fmt.Sprintf("%s = %v", label, *value)) + } +} + +func c2Number(c *ui.Context, value *float64, label string, lo, hi, step float64, log func(string)) { + ui.Row(c).Gap(8).AlignItems(ui.Center).Children(func() { + ui.Text(c, label) + r := mujica.NumberInput(c, value, mujica.NumberInputOptions{Label: label, Min: lo, Max: hi, Step: step}) + r.Element.Width(150) + if r.Changed() { + log(fmt.Sprintf("%s = %g", label, *value)) + } + }) +} + +func c2Select(c *ui.Context, value *string, label string, choices []string, log func(string)) { + items := make([]mujica.SelectOption[string], len(choices)) + for i, s := range choices { + items[i] = mujica.SelectOption[string]{Value: s, Label: s} + } + r := mujica.Select(c, value, items, mujica.SelectOptions{Label: label}) + r.Element.Width(160) + if r.Changed() { + log(label + " = " + *value) + } +} + +func c2Frame(c *ui.Context, label string, status *string, log func(string)) (mujica.ChartFrame, bool) { + c2Select(c, status, "Status", c1Statuses, log) + f := mujica.ChartFrame{Label: label} + if *status == "Loading" { + f.Status = mujica.DataLoading + } + if *status == "Failed" { + f.Status, f.Error = mujica.DataFailed, "The archive did not answer" + } + return f, *status != "Empty" +} diff --git a/examples/gallery/pages_charts2_code.go b/examples/gallery/pages_charts2_code.go new file mode 100644 index 0000000..e74b2a5 --- /dev/null +++ b/examples/gallery/pages_charts2_code.go @@ -0,0 +1,145 @@ +package main + +const c2ChartLegendCode = `hidden := map[string]bool{} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + k := mujica.Tokens(c) + items := []mujica.ChartLegendItem{{Name: "Pews", Color: k.Info}, {Name: "Candles", Color: k.Success, Shape: 1}} + mujica.ChartLegend(c, &hidden, items, mujica.ChartLegendOptions{MaxItems: 1}) +} +ui.Render(view, 400, 200, 1)` + +const c2ChartTooltipCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + k := mujica.Tokens(c) + mujica.ChartTooltip(c, 40, 40, []mujica.ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: k.Info}, {Text: "Candles 2", Color: k.Success, Shape: 1}}) +} +ui.Render(view, 400, 200, 1)` + +const c2ChartCrosshairCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + hair := mujica.ChartCrosshair(c, mujica.ChartCrosshairOptions{X: &x, Y: &y}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + x.Draw(p, plot) + y.Draw(p, plot) + hair.Draw(p, plot, x.Map(plot, 5), y.Map(plot, 70)) + }) +} +ui.Render(view, 400, 300, 1)` + +const c2ChartAxisCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + axis := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Kind: mujica.AxisLog, Min: 1, Max: 1000}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + axis.Draw(p, ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60}) + }) +} +ui.Render(view, 400, 300, 1)` + +const c2ChartGridCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + grid := mujica.ChartGrid(c, mujica.ChartGridOptions{X: &x, Y: &y, Minor: 2}) + ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + grid.Draw(p, plot) + x.Draw(p, plot) + y.Draw(p, plot) + }) +} +ui.Render(view, 400, 300, 1)` + +const c2ChartBrushCode = `value := [2]float64{20, 60} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChartBrush(c, &value, mujica.ChartBrushOptions{Label: "Months", Max: 100, Step: 1, Values: []float64{2, 4, 3, 8, 5}}) +} +ui.Render(view, 400, 160, 1)` + +const c2ChartAnnotationCode = `notes := []mujica.ChartNote{{Kind: mujica.NoteHLine, Value: 50, Text: "Goal", Draggable: true}, {Kind: mujica.NoteBand, Value: 6, End: 8, Text: "Lent"}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100}) + annotation := mujica.ChartAnnotation(c, notes, mujica.ChartAnnotationOptions{X: &x, Y: &y}) + box := ui.Box(c).Fill().Focusable().Label("Annotations") + b := box.Bounds() + annotation.Drag(box, ui.Rect{X: 60, Y: 20, W: b.W - 80, H: b.H - 60}) + box.Draw(func(p *ui.Painter, r ui.Rect) { + plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60} + x.Draw(p, plot) + y.Draw(p, plot) + annotation.Draw(p, plot) + }) +} +ui.Render(view, 400, 300, 1)` + +const c2ChartExportCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + data, err := mujica.ChartExport(c, func(c *ui.Context) { + mujica.SparkBar(c, []float64{3, -2, 5}, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}}) + }, mujica.ChartExportOptions{Width: 300, Height: 100, Scale: 2}) + if err != nil { + panic(err) + } + bitmap, err := ui.DecodeBitmap(data) + if err != nil { + panic(err) + } + ui.Image(c, bitmap).Size(300, 100) +} +ui.Render(view, 400, 160, 1)` + +const c2SparkBarCode = `values := []float64{3, -2, 4, 1, -3} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.SparkBar(c, values, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}, BarWidth: 10}) +} +ui.Render(view, 400, 100, 1)` + +const c2TrendIndicatorCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.TrendIndicator(c, 12.5, mujica.TrendIndicatorOptions{Precision: 1, Unit: "%", Note: "vs Lent"}) +} +ui.Render(view, 400, 100, 1)` + +const c2ChartEmptyStateCode = `view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChartEmptyState(c, mujica.DataFailed, mujica.ChartEmptyStateOptions{Height: 180, Error: "The archive did not answer"}) +} +ui.Render(view, 400, 240, 1)` + +const c2ViolinPlotCode = `groups := []mujica.BoxGroup{{Name: "Choir", Values: []float64{1, 2, 3, 4, 7, 9}}, {Name: "Nave", Values: []float64{2, 4, 5, 6, 8}}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ViolinPlot(c, groups, mujica.ViolinPlotOptions{Frame: mujica.ChartFrame{Label: "Hymns"}, Bandwidth: 1}) +} +ui.Render(view, 400, 300, 1)` + +const c2ParallelCoordinatesCode = `filters := map[string][2]float64{} +axes := []string{"Age", "Hymns", "Vigils"} +rows := [][]float64{{20, 3, 9}, {35, 8, 2}, {50, 5, 5}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ParallelCoordinates(c, &filters, axes, rows, mujica.ParallelCoordinatesOptions{Frame: mujica.ChartFrame{Label: "Monks"}, Names: []string{"Agnes", "Clare", "Hild"}}) +} +ui.Render(view, 400, 300, 1)` + +const c2ChordDiagramCode = `names := []string{"Nave", "Choir", "Crypt"} +matrix := [][]float64{{0, 5, 2}, {4, 0, 1}, {1, 2, 0}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.ChordDiagram(c, names, matrix, mujica.ChordDiagramOptions{Frame: mujica.ChartFrame{Label: "Paths"}}) +} +ui.Render(view, 400, 300, 1)` + +const c2DensityPlotCode = `groups := []mujica.BoxGroup{{Name: "Matins", Values: []float64{1, 2, 2, 3, 7}}, {Name: "Vespers", Values: []float64{3, 4, 5, 6, 6}}} +view := func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + mujica.DensityPlot(c, groups, mujica.DensityPlotOptions{Frame: mujica.ChartFrame{Label: "Ages"}, Bandwidth: 1, Points: 128}) +} +ui.Render(view, 400, 300, 1)` diff --git a/examples/gallery/pages_charts2_distribution.go b/examples/gallery/pages_charts2_distribution.go new file mode 100644 index 0000000..6dae3f8 --- /dev/null +++ b/examples/gallery/pages_charts2_distribution.go @@ -0,0 +1,105 @@ +package main + +import ( + "fmt" + + "github.com/egoist/mygo/ui" + + mujica "mujicaui" +) + +func c2ViolinDemo(c *ui.Context, log func(string)) { c2DistributionDemo(c, log, "129", "ViolinPlot") } +func c2DensityDemo(c *ui.Context, log func(string)) { c2DistributionDemo(c, log, "138", "DensityPlot") } + +func c2DistributionDemo(c *ui.Context, log func(string), id, name string) { + type state struct { + status string + bandwidth float64 + disabled bool + groups []mujica.BoxGroup + } + s := ui.Local(c.Root(), id, func() state { + return state{status: "Ready", groups: []mujica.BoxGroup{ + {Name: "Matins", Values: []float64{1, 2, 2, 3, 4, 5, 8, 9}}, + {Name: "Vespers", Values: []float64{3, 4, 5, 6, 6, 7, 8, 11}}, + }} + }) + c1Section(c, name, func() { + c2Number(c, &s.bandwidth, "Bandwidth", 0, 5, 0.5, log) + c2Check(c, &s.disabled, "Disabled", log) + }, func() { + f, show := c2Frame(c, name, &s.status, log) + groups := s.groups + if !show { + groups = nil + } + ui.Column(c).Disabled(s.disabled).Children(func() { + if id == "129" { + c1Log(log, name, mujica.ViolinPlot(c, groups, mujica.ViolinPlotOptions{Frame: f, Bandwidth: s.bandwidth})) + } else { + c1Log(log, name, mujica.DensityPlot(c, groups, mujica.DensityPlotOptions{Frame: f, Bandwidth: s.bandwidth})) + } + }) + }) +} + +func c2ParallelDemo(c *ui.Context, log func(string)) { + type state struct { + status string + disabled bool + filters map[string][2]float64 + rows [][]float64 + } + s := ui.Local(c.Root(), "130", func() state { + return state{status: "Ready", filters: map[string][2]float64{}, rows: [][]float64{{20, 3, 9}, {35, 8, 2}, {50, 5, 5}, {65, 1, 4}}} + }) + c1Section(c, "ParallelCoordinates", func() { + c2Check(c, &s.disabled, "Disabled", log) + if mujica.Button(c, "Clear filters", mujica.ButtonOptions{Disabled: s.disabled}).Clicked() { + s.filters = map[string][2]float64{} + log("ParallelCoordinates: clear filters") + } + }, func() { + f, show := c2Frame(c, "ParallelCoordinates", &s.status, log) + rows := s.rows + names := []string{"Agnes", "Clare", "Hild", "Bede"} + if !show { + rows = nil + names = nil + } + ui.Column(c).Disabled(s.disabled).Children(func() { + c1Log(log, "ParallelCoordinates", mujica.ParallelCoordinates(c, &s.filters, []string{"Age", "Hymns", "Vigils"}, rows, mujica.ParallelCoordinatesOptions{Frame: f, Names: names})) + }) + ui.Text(c, fmt.Sprintf("Filters: %v", s.filters)) + }) +} + +func c2ChordDemo(c *ui.Context, log func(string)) { + type state struct { + status string + disabled bool + amount float64 + matrix [][]float64 + } + s := ui.Local(c.Root(), "131", func() state { + return state{status: "Ready", amount: 5, matrix: [][]float64{{0, 5, 2}, {4, 0, 1}, {1, 2, 0}}} + }) + c1Section(c, "ChordDiagram", func() { + old := s.amount + c2Number(c, &s.amount, "Nave to Choir", 0, 20, 1, log) + if old != s.amount { + s.matrix = [][]float64{{0, s.amount, 2}, {4, 0, 1}, {1, 2, 0}} + } + c2Check(c, &s.disabled, "Disabled", log) + }, func() { + f, show := c2Frame(c, "ChordDiagram", &s.status, log) + names, matrix := []string{"Nave", "Choir", "Crypt"}, s.matrix + if !show { + names = nil + matrix = nil + } + ui.Column(c).Disabled(s.disabled).Children(func() { + c1Log(log, "ChordDiagram", mujica.ChordDiagram(c, names, matrix, mujica.ChordDiagramOptions{Frame: f})) + }) + }) +} diff --git a/examples/gallery/pages_charts2_parts.go b/examples/gallery/pages_charts2_parts.go new file mode 100644 index 0000000..1390f5d --- /dev/null +++ b/examples/gallery/pages_charts2_parts.go @@ -0,0 +1,138 @@ +package main + +import ( + "fmt" + "time" + + "github.com/egoist/mygo/ui" + + mujica "mujicaui" + "mujicaui/internal" +) + +type c2PartsState struct { + status, kind string + disabled, crosshair, draggable, fixed bool + minor float64 + notes []mujica.ChartNote +} + +func c2TooltipDemo(c *ui.Context, log func(string)) { c2PartsDemo(c, log, "122", "ChartTooltip") } +func c2CrosshairDemo(c *ui.Context, log func(string)) { c2PartsDemo(c, log, "123", "ChartCrosshair") } +func c2AxisDemo(c *ui.Context, log func(string)) { c2PartsDemo(c, log, "124", "ChartAxis") } +func c2GridDemo(c *ui.Context, log func(string)) { c2PartsDemo(c, log, "125", "ChartGrid") } +func c2AnnotationDemo(c *ui.Context, log func(string)) { c2PartsDemo(c, log, "127", "ChartAnnotation") } + +func c2PartsDemo(c *ui.Context, log func(string), id, name string) { + s := ui.Local(c.Root(), id, func() c2PartsState { + return c2PartsState{status: "Ready", kind: "Linear", crosshair: true, minor: 2, draggable: true, notes: []mujica.ChartNote{ + {Kind: mujica.NoteHLine, Value: 50, Text: "Goal"}, + {Kind: mujica.NoteVLine, Value: 3, Text: "Advent"}, + {Kind: mujica.NoteBand, Value: 6, End: 8, Text: "Lent"}, + {Kind: mujica.NoteText, Value: 1, End: 90, Text: "Feast"}, + }} + }) + c1Section(c, name, func() { + c2Check(c, &s.disabled, "Disabled", log) + switch id { + case "123": + c2Check(c, &s.crosshair, "Crosshair", log) + case "124": + c2Select(c, &s.kind, "Axis kind", []string{"Linear", "Log", "Time", "Category"}, log) + c2Check(c, &s.fixed, "Fixed ticks", log) + case "125": + c2Number(c, &s.minor, "Minor", 0, 8, 1, log) + case "127": + c2Check(c, &s.draggable, "Draggable", log) + } + }, func() { + f, show := c2Frame(c, name, &s.status, log) + ui.Column(c).Disabled(s.disabled).Children(func() { + c1Log(log, name, c2PartsChart(c, f, show, s, id, log)) + }) + if id == "127" { + ui.Text(c, fmt.Sprintf("Goal %.1f · Advent %.1f · Lent %.1f–%.1f · Feast %.1f, %.1f", s.notes[0].Value, s.notes[1].Value, s.notes[2].Value, s.notes[2].End, s.notes[3].Value, s.notes[3].End)) + } + }) +} + +func c2PartsChart(c *ui.Context, frame mujica.ChartFrame, show bool, s *c2PartsState, id string, log func(string)) mujica.ChartResult { + xo := mujica.ChartAxisOptions{Max: 10} + yo := mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100} + pts := [][2]float64{{2, 30}, {5, 80}, {8, 55}} + if id == "124" { + switch s.kind { + case "Log": + yo.Kind, yo.Min = mujica.AxisLog, 1 + case "Time": + xo.Kind = mujica.AxisTime + xo.From = time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC) + xo.To = xo.From.Add(10 * time.Hour) + for i := range pts { + pts[i][0] = float64(xo.From.Unix()) + pts[i][0]*3600 + } + case "Category": + xo.Kind, xo.Categories = mujica.AxisCategory, []string{"Nave", "Choir", "Crypt"} + for i := range pts { + pts[i][0] = float64(i) + } + } + if s.fixed { + yo.Ticks = []float64{10, 50, 90} + } + } + x, y := mujica.ChartAxis(c, xo), mujica.ChartAxis(c, yo) + grid := mujica.ChartGrid(c, mujica.ChartGridOptions{Y: &y, Minor: int(s.minor)}) + hair := mujica.ChartCrosshair(c, mujica.ChartCrosshairOptions{X: &x, Y: &y}) + var notes []mujica.ChartNote + if id == "127" { + notes = s.notes + for i := range notes { + notes[i].Draggable = s.draggable + } + } + annotation := mujica.ChartAnnotation(c, notes, mujica.ChartAnnotationOptions{X: &x, Y: &y}) + plotOf := func(r ui.Rect) ui.Rect { + return ui.Rect{X: r.X + 64, Y: r.Y + 16, W: max(1, r.W-100), H: max(1, r.H-56)} + } + at := func(r ui.Rect, i int) (float32, float32) { + plot := plotOf(r) + return x.Map(plot, pts[i][0]), y.Map(plot, pts[i][1]) + } + marks := len(pts) + if !show { + marks = 0 + } + colors := internal.Palette(mujica.Tokens(c)) + return mujica.Chart(c, frame, mujica.ChartSpec{ + Marks: marks, + Pick: func(r ui.Rect, px, py float32) int { + return hair.Snap(len(pts), func(i int) (float32, float32) { return at(r, i) }, px, py) + }, + Anchor: at, + Readout: func(i int) string { return fmt.Sprintf("x %s · y %s", x.Label(pts[i][0]), y.Label(pts[i][1])) }, + Tooltip: func(i int) []mujica.ChartTooltipLine { + return []mujica.ChartTooltipLine{{Text: x.Label(pts[i][0])}, {Text: "Pews " + y.Label(pts[i][1]), Color: colors[0]}, {Text: "Candles " + y.Label(pts[i][1]/2), Color: colors[1], Shape: 1}} + }, + Input: func(el *ui.Element, r ui.Rect) { + if annotation.Drag(el, plotOf(r)) { + log("ChartAnnotation: moved") + } + }, + Draw: func(p *ui.Painter, r ui.Rect, active int) { + plot := plotOf(r) + grid.Draw(p, plot) + x.Draw(p, plot) + y.Draw(p, plot) + annotation.Draw(p, plot) + for i := range pts { + px, py := at(r, i) + internal.Marker(p, i, px, py, 10, colors[i]) + } + if id == "123" && s.crosshair && active >= 0 { + px, py := at(r, active) + hair.Draw(p, plot, px, py) + } + }, + }) +} diff --git a/examples/gallery/pages_charts2_stats.go b/examples/gallery/pages_charts2_stats.go new file mode 100644 index 0000000..95f8c7a --- /dev/null +++ b/examples/gallery/pages_charts2_stats.go @@ -0,0 +1,194 @@ +package main + +import ( + "fmt" + + "github.com/egoist/mygo/ui" + + mujica "mujicaui" + "mujicaui/internal" +) + +func c2LegendDemo(c *ui.Context, log func(string)) { + type state struct { + hidden map[string]bool + vertical, disabled bool + max float64 + } + s := ui.Local(c.Root(), "121", func() state { return state{hidden: map[string]bool{}, max: 3} }) + c1Section(c, "ChartLegend", func() { + c2Check(c, &s.vertical, "Vertical", log) + c2Check(c, &s.disabled, "Disabled", log) + c2Number(c, &s.max, "Max items", 0, 6, 1, log) + }, func() { + pal := internal.Palette(mujica.Tokens(c)) + names := []string{"Matins", "Lauds", "Prime", "Terce", "Sext", "None"} + items := make([]mujica.ChartLegendItem, len(names)) + for i, n := range names { + items[i] = mujica.ChartLegendItem{Name: n, Color: pal[i], Shape: i % 5} + } + ui.Column(c).Disabled(s.disabled).Children(func() { + r := mujica.ChartLegend(c, &s.hidden, items, mujica.ChartLegendOptions{Vertical: s.vertical, MaxItems: int(s.max)}) + if expanded, ok := r.Expanded(); ok { + log(fmt.Sprintf("ChartLegend: expanded %v", expanded)) + } + if n, ok := r.Toggled(); ok { + log("ChartLegend: toggled " + n) + } + }) + ui.Text(c, fmt.Sprintf("Hidden: %v", s.hidden)) + }) +} + +func c2BrushDemo(c *ui.Context, log func(string)) { + type state struct { + value [2]float64 + disabled bool + step float64 + } + s := ui.Local(c.Root(), "126", func() state { return state{value: [2]float64{20, 60}, step: 1} }) + c1Section(c, "ChartBrush", func() { + c2Check(c, &s.disabled, "Disabled", log) + c2Number(c, &s.step, "Step", 1, 10, 1, log) + }, func() { + vals := []float64{1, 4, 2, 7, 3, 8, 4, 9} + r := mujica.ChartBrush(c, &s.value, mujica.ChartBrushOptions{Label: "Months", Max: 100, Step: s.step, Values: vals, Disabled: s.disabled}) + if r.Changed() { + log(fmt.Sprintf("ChartBrush: range %g–%g", s.value[0], s.value[1])) + } + x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Min: s.value[0], Max: s.value[1]}) + y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 10}) + xs := []float64{0, 15, 30, 45, 60, 75, 90, 100} + var visible []int + for i, v := range xs { + if v >= s.value[0] && v <= s.value[1] { + visible = append(visible, i) + } + } + plotOf := func(r ui.Rect) ui.Rect { return ui.Rect{X: r.X + 40, Y: r.Y + 8, W: max(1, r.W-60), H: max(1, r.H-40)} } + at := func(r ui.Rect, i int) (float32, float32) { + plot := plotOf(r) + return x.Map(plot, xs[visible[i]]), y.Map(plot, vals[visible[i]]) + } + c1Log(log, "Zoom preview", mujica.Chart(c, mujica.ChartFrame{Label: "Zoom preview", Height: 140}, mujica.ChartSpec{ + Marks: len(visible), Anchor: at, + Pick: func(r ui.Rect, px, py float32) int { + return internal.Nearest(len(visible), func(i int) (float32, float32) { return at(r, i) }, px, py, 24, false) + }, + Readout: func(i int) string { return fmt.Sprintf("x %g · y %g", xs[visible[i]], vals[visible[i]]) }, + Draw: func(p *ui.Painter, r ui.Rect, active int) { + plot := plotOf(r) + x.Draw(p, plot) + y.Draw(p, plot) + for i := range visible { + px, py := at(r, i) + internal.Marker(p, 0, px, py, 8, mujica.Tokens(c).AccentText) + } + }, + })) + }) +} + +func c2ExportDemo(c *ui.Context, log func(string)) { + type state struct { + width, height, scale float64 + disabled bool + bitmap *ui.Bitmap + bytes int + error string + } + s := ui.Local(c.Root(), "128", func() state { return state{width: 400, height: 240, scale: 2} }) + c1Section(c, "ChartExport", func() { + c2Number(c, &s.width, "Width", 200, 600, 50, log) + c2Number(c, &s.height, "Height", 160, 400, 40, log) + c2Number(c, &s.scale, "Scale", 1, 3, 0.5, log) + c2Check(c, &s.disabled, "Disabled", log) + }, func() { + if mujica.Button(c, "Export PNG", mujica.ButtonOptions{Disabled: s.disabled}).Clicked() { + data, err := mujica.ChartExport(c, func(c *ui.Context) { + mujica.BarChart(c, []string{"Nave", "Choir", "Crypt"}, []mujica.ChartSeries{{Name: "Pews", Values: []float64{3, 5, 2}}}, mujica.BarChartOptions{Frame: mujica.ChartFrame{Label: "Exported chart", Height: float32(s.height) - 80}}) + }, mujica.ChartExportOptions{Width: int(s.width), Height: int(s.height), Scale: float32(s.scale)}) + if err == nil { + s.bitmap, err = ui.DecodeBitmap(data) + } + if err != nil { + s.error = err.Error() + log("ChartExport: " + s.error) + } else { + s.error = "" + s.bytes = len(data) + log(fmt.Sprintf("ChartExport: %d bytes", s.bytes)) + } + } + if s.error != "" { + ui.Text(c, s.error).TextColor(mujica.Tokens(c).Danger).Role(ui.RoleStatus) + } + if s.bitmap != nil { + ui.Image(c, s.bitmap).Size(float32(s.width), float32(s.height)) + ui.Text(c, fmt.Sprintf("PNG: %d bytes", s.bytes)) + } + }) +} + +func c2SparkBarDemo(c *ui.Context, log func(string)) { + type state struct { + status string + width float64 + disabled bool + } + s := ui.Local(c.Root(), "132", func() state { return state{status: "Ready", width: 10} }) + c1Section(c, "SparkBar", func() { + c2Number(c, &s.width, "Bar width", 2, 20, 1, log) + c2Check(c, &s.disabled, "Disabled", log) + }, func() { + f, show := c2Frame(c, "Alms", &s.status, log) + vals := []float64{3, -2, 4, 1, -3} + if !show { + vals = nil + } + ui.Column(c).Disabled(s.disabled).Children(func() { + c1Log(log, "SparkBar", mujica.SparkBar(c, vals, mujica.SparkBarOptions{Frame: f, BarWidth: float32(s.width)})) + }) + }) +} + +func c2TrendDemo(c *ui.Context, log func(string)) { + type state struct { + change, precision float64 + invert bool + } + s := ui.Local(c.Root(), "133", func() state { return state{change: 12.5, precision: 1} }) + c1Section(c, "TrendIndicator", func() { + c2Number(c, &s.change, "Change", -100, 100, 0.5, log) + c2Number(c, &s.precision, "Precision", 0, 3, 1, log) + c2Check(c, &s.invert, "Invert", log) + }, func() { + mujica.TrendIndicator(c, s.change, mujica.TrendIndicatorOptions{Precision: int(s.precision), Unit: "%", Note: "vs Lent", Invert: s.invert}) + ui.Row(c).Gap(24).Children(func() { + mujica.TrendIndicator(c, 3, mujica.TrendIndicatorOptions{}) + mujica.TrendIndicator(c, -3, mujica.TrendIndicatorOptions{}) + mujica.TrendIndicator(c, 0, mujica.TrendIndicatorOptions{}) + }) + }) +} + +func c2EmptyDemo(c *ui.Context, log func(string)) { + type state struct { + status string + height float64 + disabled bool + } + s := ui.Local(c.Root(), "140", func() state { return state{status: "Failed", height: 180} }) + c1Section(c, "ChartEmptyState", func() { + c2Number(c, &s.height, "Height", 160, 320, 40, log) + c2Check(c, &s.disabled, "Disabled", log) + }, func() { + f, _ := c2Frame(c, "ChartEmptyState", &s.status, log) + ui.Column(c).Disabled(s.disabled).Border(1, mujica.Tokens(c).Border).Children(func() { + if mujica.ChartEmptyState(c, f.Status, mujica.ChartEmptyStateOptions{Height: float32(s.height), Error: f.Error}).Changed() { + log("ChartEmptyState: retry") + s.status = "Loading" + } + }) + }) +} diff --git a/examples/gallery/pages_charts2_test.go b/examples/gallery/pages_charts2_test.go new file mode 100644 index 0000000..bd9dc8d --- /dev/null +++ b/examples/gallery/pages_charts2_test.go @@ -0,0 +1,111 @@ +package main + +import ( + "slices" + "strings" + "testing" + + "github.com/egoist/mygo/ui" + + mujica "mujicaui" +) + +func c2Demo(t *testing.T, id string) (*ui.Tester, *[]string) { + t.Helper() + i := slices.IndexFunc(charts2Pages, func(p page) bool { return p.ID == id }) + if i < 0 { + t.Fatalf("missing page %s", id) + } + events := &[]string{} + tt := ui.NewTester(func(c *ui.Context) { + mujica.Use(c, mujica.Settings{}) + ui.Scroll(c).Fill().Padding(24).Children(func() { charts2Pages[i].Demo(c, func(s string) { *events = append(*events, s) }) }) + }, 900, 760) + tt.SetPreferences(ui.Preferences{ReduceMotion: true, TextScale: 1}) + return tt, events +} + +func TestCharts2ExistingSet(t *testing.T) { + want := []string{"121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "138", "140"} + var ids []string + for _, p := range charts2Pages { + ids = append(ids, p.ID) + if p.Category != "Charts II" || p.Code == "" || p.Keys == "" { + t.Fatalf("incomplete page %s", p.ID) + } + c2Demo(t, p.ID) + } + if !slices.Equal(ids, want) { + t.Fatalf("page IDs %v", ids) + } +} + +func TestCharts2ReadoutsAndControlsLog(t *testing.T) { + for _, id := range []string{"122", "123", "124", "125", "127", "129", "130", "131", "132", "138"} { + tt, events := c2Demo(t, id) + p := charts2Pages[slices.IndexFunc(charts2Pages, func(p page) bool { return p.ID == id })] + label := p.Name + if id == "132" { + label = "Alms" + } + tabUntil(t, tt, label) + tt.Key(0, ui.KeyRight) + if !slices.Contains(*events, p.Name+": point 0") { + t.Errorf("%s readout events %q", id, *events) + } + if err := tt.Click("Disabled"); err != nil { + t.Fatal(err) + } + if !slices.Contains(*events, "Disabled = true") { + t.Errorf("%s disabled events %q", id, *events) + } + } +} + +func TestCharts2LegendBrushAnnotationAndRetry(t *testing.T) { + tt, events := c2Demo(t, "121") + if err := tt.Click("+3 more"); err != nil { + t.Fatal(err) + } + if err := tt.Click("Matins"); err != nil { + t.Fatal(err) + } + if !slices.Contains(*events, "ChartLegend: expanded true") || !slices.Contains(*events, "ChartLegend: toggled Matins") { + t.Fatalf("legend events %q", *events) + } + tt, events = c2Demo(t, "126") + tabUntil(t, tt, "Months: 20 to 60") + tt.Key(0, ui.KeyRight) + if !slices.Contains(*events, "ChartBrush: range 21–61") { + t.Fatalf("brush events %q", *events) + } + tt, events = c2Demo(t, "127") + tabUntil(t, tt, "ChartAnnotation") + tt.Key(ui.Alt, ui.KeyUp) + if !slices.Contains(*events, "ChartAnnotation: moved") || !tt.HasText("Goal 51.0 · Advent 3.0 · Lent 6.0–8.0 · Feast 1.0, 90.0") { + t.Fatalf("annotation events %q text %q", *events, tt.Texts()) + } + tt, events = c2Demo(t, "140") + if err := tt.Click("Retry"); err != nil { + t.Fatal(err) + } + if !slices.Contains(*events, "ChartEmptyState: retry") || !tt.HasText("Loading") { + t.Fatalf("retry events %q", *events) + } +} + +func TestCharts2ExportAndTrendControls(t *testing.T) { + tt, events := c2Demo(t, "128") + tabUntil(t, tt, "Export PNG") + tt.Key(0, ui.KeyEnter) + if len(*events) == 0 || !strings.HasPrefix((*events)[len(*events)-1], "ChartExport: ") || !strings.HasSuffix((*events)[len(*events)-1], " bytes") { + t.Fatalf("export events %q", *events) + } + tt, events = c2Demo(t, "133") + if err := tt.Click("Invert"); err != nil { + t.Fatal(err) + } + if !slices.Contains(*events, "Invert = true") { + t.Fatalf("trend events %q", *events) + } +} diff --git a/internal/chart.go b/internal/chart.go index d7f49e2..9598c7b 100644 --- a/internal/chart.go +++ b/internal/chart.go @@ -159,10 +159,13 @@ func Marker(p *ui.Painter, i int, cx, cy, size float32, col ui.Color) { } // Arc appends a polyline from a0 to a1, clockwise radians. -func Arc(path *ui.Path, cx, cy, r float32, a0, a1 float64, move bool) { +func Arc(path *ui.Path, cx, cy, r float32, a0, a1 float64, move bool, painters ...*ui.Painter) { n := max(2, int(math.Ceil(math.Abs(a1-a0)/(math.Pi/48)))) for i := 0; i <= n; i++ { x, y := Polar(cx, cy, r, a0+(a1-a0)*float64(i)/float64(n)) + if len(painters) > 0 { + x, y = Snap(painters[0], x), Snap(painters[0], y) + } if i == 0 && move { path.MoveTo(x, y) } else { @@ -177,11 +180,11 @@ func Polar(cx, cy, r float32, a float64) (float32, float32) { } // Sector returns a ring slice; zero r0 makes a wedge. -func Sector(cx, cy, r0, r1 float32, a0, a1 float64) *ui.Path { +func Sector(cx, cy, r0, r1 float32, a0, a1 float64, painters ...*ui.Painter) *ui.Path { var path ui.Path - Arc(&path, cx, cy, r1, a0, a1, true) + Arc(&path, cx, cy, r1, a0, a1, true, painters...) if r0 > 0 { - Arc(&path, cx, cy, r0, a1, a0, false) + Arc(&path, cx, cy, r0, a1, a0, false, painters...) } else { path.LineTo(cx, cy) } diff --git a/messages_charts2.go b/messages_charts2.go index bc2e4d9..a214257 100644 --- a/messages_charts2.go +++ b/messages_charts2.go @@ -2,14 +2,23 @@ package mujica func init() { addMessages(map[string][2]string{ + "violin_plot.readout": {"%s · median %s · quartiles %s–%s · %d values", "%s · 中位数 %s · 四分位 %s–%s · %d 个值"}, + "parallel_coordinates.filtered": {"filtered out", "已筛除"}, + "parallel_coordinates.brush": {"%s filter %s–%s", "%s 筛选 %s–%s"}, + "chord_diagram.out": {"out", "流出"}, + "chord_diagram.in": {"in", "流入"}, + "chart_annotation.readout": {"Annotation %d · %s", "标注 %d · %s"}, + "chart_annotation.x": {"x %s", "x %s"}, + "chart_annotation.y": {"y %s", "y %s"}, + "spark_bar.empty": {"No data", "暂无数据"}, + "chart_empty_state.empty": {"No data", "暂无数据"}, "chart_legend.more": {"+%d more", "另有 %d 项"}, "chart_legend.fewer": {"Show fewer", "收起"}, "chart_brush.window": {"%s: %s to %s", "%s:%s 至 %s"}, "chart_brush.start": {"Range start %s", "区间起点 %s"}, "chart_brush.end": {"Range end %s", "区间终点 %s"}, - "violin_plot.readout": {"%s · median %s · quartiles %s–%s · %d values", "%s · 中位数 %s · 四分位 %s–%s · %d 个值"}, - "parallel_coordinates.filtered": {"filtered out", "已筛除"}, - "chord_diagram.out": {"out", "流出"}, - "chord_diagram.in": {"in", "流入"}, + "trend_indicator.up": {"up", "上升"}, + "trend_indicator.down": {"down", "下降"}, + "trend_indicator.flat": {"unchanged", "持平"}, }) } diff --git a/parallel_coordinates.go b/parallel_coordinates.go index 6381b05..e2fd991 100644 --- a/parallel_coordinates.go +++ b/parallel_coordinates.go @@ -1,6 +1,7 @@ package mujica import ( + "fmt" "log/slog" "maps" "math" @@ -15,7 +16,7 @@ import ( // ParallelCoordinatesOptions configure a ParallelCoordinates chart. type ParallelCoordinatesOptions struct { Frame ChartFrame - // Names labels each row in the readout; nil uses the row number. + // Names labels rows; nil uses row numbers. Names []string Format func(v float64) string } @@ -31,9 +32,16 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s if filters == nil || len(axes) < 2 || opts.Names != nil && len(opts.Names) != len(rows) { panic("mujica: ParallelCoordinates needs filters, two or more axes and a name per row") } - for _, r := range rows { - if len(r) != len(axes) { - panic("mujica: ParallelCoordinates rows need one value per axis") + seen := map[string]bool{} + for _, name := range axes { + if name == "" || seen[name] { + panic("mujica: ParallelCoordinates axes need unique names") + } + seen[name] = true + } + for name, f := range *filters { + if !seen[name] || math.IsNaN(f[0]) || math.IsNaN(f[1]) || math.IsInf(f[0], 0) || math.IsInf(f[1], 0) || f[0] > f[1] { + panic("mujica: ParallelCoordinates filters need known axes and finite ascending ranges") } } ch := newChart(c, opts.Frame) @@ -41,7 +49,17 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s size := FontSize(c, theme.CaptionSize) ink := internal.Palette(k)[0] type scales struct{ lo, hi []float64 } - sc := chartMemo(ch, "scales", chartID(rows), func() scales { + sc := chartMemo(ch, "scales", [2]string{chartID(rows), chartID(axes)}, func() scales { + for _, r := range rows { + if len(r) != len(axes) { + panic("mujica: ParallelCoordinates rows need one value per axis") + } + for _, v := range r { + if math.IsInf(v, 0) { + panic("mujica: ParallelCoordinates values must be finite or NaN") + } + } + } s := scales{lo: make([]float64, len(axes)), hi: make([]float64, len(axes))} for a := range axes { lo, hi := math.Inf(1), math.Inf(-1) @@ -65,6 +83,14 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s } return true } + passing := chartMemo(ch, "pc_filter", [2]string{chartID(rows), fmt.Sprint(*filters)}, func() []bool { + out := make([]bool, len(rows)) + for i, row := range rows { + out[i] = keep(row) + } + return out + }) + visible := ui.Local(ch.res.Element, "mujica.pc.visible", func() []int { return nil }) geom := func(r ui.Rect) (ui.Rect, func(a int) float32, func(a int, v float64) float32) { plot := ui.Rect{X: r.X + 36, Y: r.Y + 24, W: r.W - 72, H: r.H - 32} ax := func(a int) float32 { return plot.X + plot.W*float32(a)/float32(len(axes)-1) } @@ -85,7 +111,7 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s for a, n := range axes { parts = append(parts, n+" "+chartValue(c, rows[i][a], opts.Format)) } - if !keep(rows[i]) { + if !passing[i] { parts = append(parts, msg(c, "parallel_coordinates.filtered")) } return strings.Join(parts, " · ") @@ -93,7 +119,8 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s spec.Pick = func(r ui.Rect, x, y float32) int { _, ax, ys := geom(r) best, dist := -1, float32(8) - for i, row := range rows { + for _, i := range *visible { + row := rows[i] for a := 0; a+1 < len(axes); a++ { x0, x1 := ax(a), ax(a+1) if x < x0 || x > x1 || math.IsNaN(row[a]) || math.IsNaN(row[a+1]) { @@ -108,7 +135,54 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s return best } drag := ui.Local(ch.res.Element, "mujica.pc.drag", func() pcDrag { return pcDrag{axis: -1} }) + keyAxis := ui.Local(ch.res.Element, "mujica.pc.axis", func() int { return 0 }) spec.Input = func(plot *ui.Element, r ui.Rect) { + if plot.IsDisabled() { + *drag = pcDrag{axis: -1} + return + } + if plot.Shortcut(ui.Alt, ui.KeyPageDown) { + *keyAxis = (*keyAxis + 1) % len(axes) + } + if plot.Shortcut(ui.Alt, ui.KeyPageUp) { + *keyAxis = (*keyAxis + len(axes) - 1) % len(axes) + } + *keyAxis = min(*keyAxis, len(axes)-1) + a := *keyAxis + f, ok := (*filters)[axes[a]] + if !ok { + f = [2]float64{sc.lo[a], sc.hi[a]} + } + before := f + step := (sc.hi[a] - sc.lo[a]) / 100 + if plot.Shortcut(ui.Alt, ui.KeyUp) { + f[0] = min(f[1], f[0]+step) + } + if plot.Shortcut(ui.Alt, ui.KeyDown) { + f[0] = max(sc.lo[a], f[0]-step) + } + if plot.Shortcut(ui.Alt|ui.Shift, ui.KeyUp) { + f[1] = min(sc.hi[a], f[1]+step) + } + if plot.Shortcut(ui.Alt|ui.Shift, ui.KeyDown) { + f[1] = max(f[0], f[1]-step) + } + clear := plot.Shortcut(ui.Alt, ui.KeyDelete) + if f != before || clear && ok { + m := maps.Clone(*filters) + if m == nil { + m = map[string][2]float64{} + } + if clear { + delete(m, axes[a]) + } else { + m[axes[a]] = f + } + *filters, ch.res.value = m, true + c.Invalidate() + c.Announce(fmt.Sprintf(msg(c, "parallel_coordinates.brush"), axes[a], chartValue(c, f[0], opts.Format), chartValue(c, f[1], opts.Format))) + slog.Debug("mujica: parallel_coordinates keyboard", "axis", axes[a]) + } box, ax, _ := geom(r) px, py, _ := plot.PointerPosition() _, _, held := plot.Dragged() @@ -136,6 +210,7 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s m[axes[a]] = [2]float64{min(v(drag.y0), v(drag.y1)), max(v(drag.y0), v(drag.y1))} } *filters, ch.res.value = m, true + c.Invalidate() *drag = pcDrag{axis: -1} slog.Debug("mujica: parallel_coordinates brush", "axis", axes[a], "filters", len(m)) } @@ -143,6 +218,7 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s shownDrag := *drag spec.Draw = func(p *ui.Painter, r ui.Rect, active int) { plot, ax, ys := geom(r) + *visible = chartVisibleIndices(len(rows), max(1, int(plot.H*2)), active) line := func(row []float64, w float32, col ui.Color) { var path ui.Path started := false @@ -151,7 +227,7 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s started = false continue } - x, y := ax(a), ys(a, row[a]) + x, y := internal.Snap(p, ax(a)), internal.Snap(p, ys(a, row[a])) if started { path.LineTo(x, y) } else { @@ -161,14 +237,14 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s } p.StrokePath(&path, w, col) } - for _, row := range rows { - if !keep(row) { - line(row, 1, k.Border) + for _, i := range *visible { + if !passing[i] { + line(rows[i], 1, k.Border) } } - for _, row := range rows { - if keep(row) { - line(row, 1.25, ink.Alpha(0.6)) + for _, i := range *visible { + if passing[i] { + line(rows[i], 1.25, ink) } } if active >= 0 { @@ -192,5 +268,8 @@ func ParallelCoordinates(c *ui.Context, filters *map[string][2]float64, axes []s } } res, _ := ch.build(spec) + if res.Element.IsDisabled() { + *drag = pcDrag{axis: -1} + } return res } diff --git a/parallel_coordinates_test.go b/parallel_coordinates_test.go index fbb1a32..1cb158d 100644 --- a/parallel_coordinates_test.go +++ b/parallel_coordinates_test.go @@ -58,7 +58,7 @@ func TestParallelCoordinatesHoverAndBad(t *testing.T) { tt := ui.NewTester(h.view, 520, 420) b := h.res.Element.Bounds() plot := ui.Rect{X: b.X + 36, Y: b.Y + 24, W: b.W - 72, H: 240 - 32} - // A quarter into the first gap, row 2 (Age 50 of 20..80, Hymns 5 of 0..8) is 0.53 up. + // Row 2 crosses this point between the first axes. tt.Move(plot.X+plot.W/8, plot.Y+plot.H*(1-0.53125)) if h.res.Point != 2 { t.Fatalf("hover picked %d", h.res.Point) @@ -82,3 +82,51 @@ func TestParallelCoordinatesSnapshot(t *testing.T) { }) }) } + +func TestParallelCoordinatesKeyboardBrushAndDisabled(t *testing.T) { + filters := map[string][2]float64{} + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ParallelCoordinates(c, &filters, pcAxes, pcRows, ParallelCoordinatesOptions{Frame: ChartFrame{Label: "Monks"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Monks") + tt.Key(ui.Alt, ui.KeyUp) + f, ok := filters["Age"] + if !ok || math.Abs(f[0]-20.6) > 1e-9 || f[1] != 80 { + t.Fatalf("keyboard brush %v", filters) + } + h.disabled = true + tt.Frame() + tt.Key(ui.Alt, ui.KeyUp) + if filters["Age"] != f { + t.Fatal("disabled keyboard brush") + } + h.disabled = false + tt.Frame() + tabTo(t, tt, "Monks") + tt.Key(ui.Alt, ui.KeyDelete) + if len(filters) != 0 { + t.Fatalf("clear brush %v", filters) + } +} + +func TestParallelCoordinatesLargeDataBounded(t *testing.T) { + rows := make([][]float64, 100_000) + for i := range rows { + rows[i] = []float64{float64(i % 70), float64(i % 11), float64(i % 17)} + } + filters := map[string][2]float64{} + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ParallelCoordinates(c, &filters, pcAxes, rows, ParallelCoordinatesOptions{Frame: ChartFrame{Label: "Large parallel"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + shown := ui.Local(h.res.Element, "mujica.pc.visible", func() []int { return nil }) + if len(*shown) == 0 || len(*shown) > 480 { + t.Fatalf("built %d rows", len(*shown)) + } + tabTo(t, tt, "Large parallel") + tt.Key(0, ui.KeyEnd) + if h.res.Point != 99_999 || len(*shown) > 481 { + t.Fatalf("last row %d, built %d", h.res.Point, len(*shown)) + } +} diff --git a/pie_chart_test.go b/pie_chart_test.go index addb559..19328dd 100644 --- a/pie_chart_test.go +++ b/pie_chart_test.go @@ -69,7 +69,7 @@ func TestPieChartBad(t *testing.T) { } func TestPieChartSnapshot(t *testing.T) { - snapshot(t, "pie_chart", 640, 320, func(c *ui.Context) { + snapshot(t, "pie_chart", 640, 360, func(c *ui.Context) { ui.Row(c).Padding(16).Gap(16).Children(func() { ui.Column(c).Width(296).Children(func() { PieChart(c, pieSlices, PieChartOptions{Frame: ChartFrame{Label: "Pie", Height: 220}}) diff --git a/spark_bar.go b/spark_bar.go new file mode 100644 index 0000000..431e83f --- /dev/null +++ b/spark_bar.go @@ -0,0 +1,31 @@ +package mujica + +import ( + "github.com/egoist/mygo/ui" + "math" +) + +// SparkBarOptions configure a SparkBar; Frame.Height 0 means 28 DIPs. +type SparkBarOptions struct { + Frame ChartFrame + // BarWidth defaults to 6 DIPs; width fits the window. + BarWidth float32 + Format func(v float64) string +} + +// SparkBar draws signed inline bars and highlights the last. +func SparkBar(c *ui.Context, values []float64, opts SparkBarOptions) ChartResult { + if opts.BarWidth < 0 || math.IsNaN(float64(opts.BarWidth)) || math.IsInf(float64(opts.BarWidth), 0) { + panic("mujica: SparkBar BarWidth must be ≥ 0") + } + bw := opts.BarWidth + if bw == 0 { + bw = 6 + } + w, _ := c.Size() + frame := opts.Frame + if frame.Empty == "" { + frame.Empty = msg(c, "spark_bar.empty") + } + return Sparkline(c, values, SparklineOptions{Frame: frame, Kind: SparklineBar, Width: min(max(28, float32(len(values))*(bw+1)+6), max(28, w-48)), Format: opts.Format}) +} diff --git a/spark_bar_test.go b/spark_bar_test.go new file mode 100644 index 0000000..4e468c3 --- /dev/null +++ b/spark_bar_test.go @@ -0,0 +1,161 @@ +package mujica + +import ( + "image/color" + "math" + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/internal" + "mujicaui/theme" +) + +var sparkBarValues = []float64{3, -2, 4, 1, -3} + +func TestSparkBarWidthAndColors(t *testing.T) { + values := sparkBarValues + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return SparkBar(c, values, SparkBarOptions{Frame: ChartFrame{Label: "Alms"}, BarWidth: 10}) + }} + tt := ui.NewTester(h.view, 300, 200) + r, _ := tt.Find("Alms") + if r.W != 5*11+6 || chartReadout(tt) != "-3" { + t.Fatalf("box %v readout %q", r, chartReadout(tt)) + } + k := theme.Light() + at := func(i int, below bool) color.RGBA { + x := r.X + 3 + (r.W-6)*float32(i)/4 + y := r.Y + r.H*0.3 + if below { + y = r.Y + r.H*0.65 + } + return color.RGBAModel.Convert(tt.Image().At(int(x), int(y))).(color.RGBA) + } + if at(4, true) != toRGBA(k.Danger) || at(0, false) != toRGBA(k.TextMuted) { + t.Fatalf("last fall %v, first rise %v", at(4, true), at(0, false)) + } + tabTo(t, tt, "Alms") + tt.Key(0, ui.KeyHome) + if chartReadout(tt) != "3" || at(0, false) != toRGBA(internal.Palette(k)[0]) { + t.Fatalf("read bar not highlighted: %q", chartReadout(tt)) + } + defer func() { + if recover() == nil { + t.Fatal("no panic for a negative width") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + SparkBar(c, values, SparkBarOptions{Frame: ChartFrame{Label: "x"}, BarWidth: -1}) + }, 100, 100) +} + +func TestSparkBarSnapshot(t *testing.T) { + snapshot(t, "spark_bar", 360, 80, func(c *ui.Context) { + ui.Row(c).Padding(16).Gap(24).Children(func() { + SparkBar(c, sparkBarValues, SparkBarOptions{Frame: ChartFrame{Label: "Alms"}}) + SparkBar(c, []float64{1, 3, 2, 5, 4, 6, 8}, SparkBarOptions{Frame: ChartFrame{Label: "Bells"}, BarWidth: 8}) + }) + }) +} + +func TestSparkBarShrinkingAndDisabled(t *testing.T) { + values := []float64{1, 2, 3, 4} + disabled := false + var r ChartResult + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ui.Column(c).Disabled(disabled).Children(func() { + r = SparkBar(c, values, SparkBarOptions{Frame: ChartFrame{Label: "Bars"}}) + }) + }, 320, 100) + tabTo(t, tt, "Bars") + tt.Key(0, ui.KeyEnd) + values = []float64{7} + tt.Frame() + if r.Point != 0 || !tt.HasText("7") { + t.Fatalf("shortened data: point %d, text %q", r.Point, tt.Texts()) + } + disabled = true + tt.Frame() + tt.Key(0, ui.KeyLeft) + if r.Point != -1 { + t.Fatalf("disabled point %d", r.Point) + } +} + +func TestSparkBarLargeData(t *testing.T) { + values := make([]float64, 100_000) + for i := range values { + values[i] = float64(i%17 - 8) + } + var built int + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + res := SparkBar(c, values, SparkBarOptions{Frame: ChartFrame{Label: "Large bars"}}) + memo := ui.Local(res.Element, "mujica.sparkline.data", func() sparkMemo { return sparkMemo{} }) + built = len(memo.indices) + }, 320, 100) + tt.Frame() + r, _ := tt.Find("Large bars") + if built == 0 || built > 4*int(r.W)+4 { + t.Fatalf("built %d bars for width %v", built, r.W) + } + if r.W > 320 { + t.Fatalf("unbounded plot width %v", r.W) + } + tabTo(t, tt, "Large bars") + tt.Key(0, ui.KeyEnd) + if !tt.HasText("-3") { + t.Fatalf("last value %q", tt.Texts()) + } +} + +func TestSparkBarFiniteWidthAndStates(t *testing.T) { + charts2MustPanic(t, func(c *ui.Context) { + SparkBar(c, []float64{1}, SparkBarOptions{Frame: ChartFrame{Label: "Bars"}, BarWidth: float32(math.Inf(1))}) + }) + status := DataReady + retries := 0 + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + r := SparkBar(c, []float64{2, -1, 3}, SparkBarOptions{Frame: ChartFrame{Label: "Bars", Status: status, Height: 40}}) + if r.Retried() { + retries++ + } + }, 320, 100) + ready, _ := tt.Find("Bars") + status = DataFailed + tt.Frame() + if err := tt.Click("Retry"); err != nil || retries != 1 { + t.Fatalf("retry %v count %d", err, retries) + } + status = DataLoading + tt.Frame() + if ready.W != 28 || ready.H != 40 { + t.Fatalf("ready plot %v", ready) + } + status = DataReady + tt.Frame() + tt.Move(319, 99) + tabTo(t, tt, "Bars") + tt.Key(0, ui.KeyEnd) + if !tt.HasText("3") { + t.Fatalf("restored data %q", tt.Texts()) + } +} + +func TestSparkBarMinimumHitWidth(t *testing.T) { + for _, values := range [][]float64{nil, {1}} { + var result ChartResult + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + result = SparkBar(c, values, SparkBarOptions{Frame: ChartFrame{Label: "Bars"}}) + }, 200, 100) + tt.Frame() + if result.Element.Bounds().W < 28 { + t.Fatalf("hit width %v", result.Element.Bounds().W) + } + } +} diff --git a/sparkline.go b/sparkline.go index 7048ebe..43c25a7 100644 --- a/sparkline.go +++ b/sparkline.go @@ -32,7 +32,7 @@ type SparklineOptions struct { // Sparkline is an inline chart without axes. func Sparkline(c *ui.Context, values []float64, opts SparklineOptions) ChartResult { f := opts.Frame - if f.Label == "" || f.Height < 0 || opts.Width < 0 || opts.Kind > SparklineArea { + if f.Label == "" || f.Height < 0 || opts.Width < 0 || opts.Kind < SparklineLine || opts.Kind > SparklineArea { panic("mujica: Sparkline needs a Label, sizes ≥ 0 and a known Kind") } if f.Height == 0 { @@ -46,16 +46,23 @@ func Sparkline(c *ui.Context, values []float64, opts SparklineOptions) ChartResu u := Density(c).Unit() col := internal.Palette(k)[0] size := FontSize(c, theme.CaptionSize) - lo, hi := math.Inf(1), math.Inf(-1) - last := -1 - for i, v := range values { - if !math.IsNaN(v) { - lo, hi, last = min(lo, v), max(hi, v), i + res := ChartResult{Point: -1} + res.Element = ui.Row(c).Gap(u * 2).AlignItems(ui.Center).MinWidth(0) + memo := ui.Local(res.Element, "mujica.sparkline.data", func() sparkMemo { return sparkMemo{} }) + if id := chartID(values); memo.id != id { + *memo = sparkMemo{id: id, lo: math.Inf(1), hi: math.Inf(-1), last: -1} + for i, v := range values { + if math.IsInf(v, 0) { + panic("mujica: Sparkline values must be finite or NaN") + } + if !math.IsNaN(v) { + memo.lo, memo.hi, memo.last = min(memo.lo, v), max(memo.hi, v), i + } } } - res := ChartResult{Point: -1} - res.Element = ui.Row(c).Gap(u * 2).AlignItems(ui.Center) + lo, hi, last := memo.lo, memo.hi, memo.last st := ui.Local(res.Element, "mujica.sparkline", func() chartState { return chartState{focus: -1, last: -1} }) + st.focus = min(st.focus, len(values)-1) res.Element.Children(func() { if f.Status == DataLoading || f.Status == DataFailed || last < 0 { box := ui.Row(c).Size(w, f.Height).AlignItems(ui.Center).Gap(u) @@ -115,22 +122,18 @@ func Sparkline(c *ui.Context, values []float64, opts SparklineOptions) ChartResu active := -1 if px, _, over := plot.PointerPosition(); over && !plot.IsDisabled() { active = max(0, min(n-1, int(math.Round(float64((px-3)/(w-6)*float32(max(n-1, 1))))))) - } else if plot.Focused() { + } else if plot.Focused() && !plot.IsDisabled() { active = st.focus } res.Point = active plot.Draw(func(p *ui.Painter, r ui.Rect) { s := ys(r) if opts.Kind == SparklineBar { - bw := max((r.W-6)/float32(n)-1, 1) - for i, v := range values { - if math.IsNaN(v) { - continue - } - a, b := s.Map(0), s.Map(v) - cx := x(r, i) - p.Fill(ui.Rect{X: cx - bw/2, Y: min(a, b), W: bw, H: max(abs32(a-b), 1)}, col, 0) + if memo.width != r.W || memo.indices == nil { + memo.width = r.W + memo.indices = internal.Columns(n, func(i int) float32 { return x(r, i) }, func(i int) float64 { return values[i] }) } + sparkBars(p, r, values, memo.indices, func(i int) float32 { return x(r, i) }, s, last, active, k) } else { chartRuns(values, func(i int) float32 { return x(r, i) }, func(idx []int) { var line ui.Path @@ -168,3 +171,34 @@ func Sparkline(c *ui.Context, values []float64, opts SparklineOptions) ChartResu st.last = res.Point return res } + +type sparkMemo struct { + id string + lo, hi float64 + last int + width float32 + indices []int +} + +// sparkBars highlights the last and active bars. +func sparkBars(p *ui.Painter, r ui.Rect, values []float64, indices []int, x func(int) float32, s internal.Linear, last, active int, k theme.Tokens) { + n := len(values) + bw := max((r.W-6)/float32(n)-1, 1) + zero := s.Map(0) + internal.Rule(p, r.X, r.X+r.W, zero, k.Border) + for _, i := range indices { + v := values[i] + if math.IsNaN(v) { + continue + } + col := k.TextMuted + if i == last || i == active { + col = internal.Palette(k)[0] + if v < 0 { + col = k.Danger + } + } + b := s.Map(v) + p.Fill(ui.Rect{X: x(i) - bw/2, Y: min(zero, b), W: bw, H: max(abs32(zero-b), 1)}, col, 0) + } +} diff --git a/testdata/snapshots/darwin/area_chart-dark.png b/testdata/snapshots/darwin/area_chart-dark.png index 26128f55099cbef8291767e32fe8dbc80655fca1..7bf10dd215998ebc465b6fc903da730e7dd9e8e5 100644 GIT binary patch literal 18859 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 literal 18845 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

Drib?#Z-9kT_(TD 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 diff --git a/testdata/snapshots/darwin/area_chart-light.png b/testdata/snapshots/darwin/area_chart-light.png index 101392a5d071cccfa830dc4ef215f3709dde0934..1e2f471f971dee65593fd49d3a67b909f1bf98e6 100644 GIT binary patch literal 18464 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 literal 18427 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 Jmvv4FO#qX`@xA~6 diff --git a/testdata/snapshots/darwin/bar_chart-dark.png b/testdata/snapshots/darwin/bar_chart-dark.png index 118d3936d7a7a60b1c658be6543cd3a6dc1e4b62..de88c4d104ec11a63489cd2370c889f64447c81c 100644 GIT binary patch literal 19242 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

YC-%POhH&muFde4O2m;4-qO?PUDUw-pDbBDBiwF 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 diff --git a/testdata/snapshots/darwin/chart_export-light.png b/testdata/snapshots/darwin/chart_export-light.png index 1bb86bf50575f11e251d978ad68737ec6c59e5ae..e699b43f4fce0880fdd632acb63803527d14eee3 100644 GIT binary patch literal 15047 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

Pm;8+GK=+W2|C-FFZ4tzAT`A5g2Lt%CK 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 literal 15096 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 literal 7727 zcmeHsWm6nLvn~k<5;S;_;3Qb^0Kt7>ac6ON2)e)mo8S^4cyM=jhoFnQv&iD^1c$?W z&M&xi@3(uZyQZgR=F7A^&vZ?wvZ4&uJJNSZNJv<+07+FOq}OOKa}TuFFCz(U8XO6U z;-9Rfn7T*mAsk&${oon()RKtn7mw^>>4G!#QT1O+Eufr+N!GdU_pyD}6;pJWm0>M7 zUKydeD~%o>m+RX|oz-kc0StGuN_e&%7A)`kP1Nvo?JH6+SK`t>#=%vvH+(NR=7QoG z()!v@lnNK^O>l@763UNPMo1+8Kbad`OtaS4d#q~1ea}Y1vWl7sk~9cX5qXB1{Q56@ z|I#+6TN?j8^O?O{a6j@p?D@5$qvVA3KR!Zi7_+O-85miV^V_`vV>pw+nkP65ex_+>Grq(Ys-O^V&Er|E}v68;Xnx+P85eB`w+GX*>;- z$p5|L!KzMHl9ylN#_{v*}59)!)sVyv(KA7hpkNT zh;-mO`qULN58Qrfpu#U(o9EU@MM6l}>wjNwYx7GIjfaN^_07jd@}(uu z#VPa<40afj3uf0g3Fb^)OY!&zaQKIy{Y4KTAVl(YsATOQ8wO@(e_N~aM|r%^d7s97 zE{yH5B)-l+yg#_??^-FuP@RC!`H6{_ofIKGE0McovRZ^*#b{We@+O=~;d(*|6_?GP z_bXAOF8ag*2x(tchkS(wr{>s%pBRSJa@}SY$+l{Yo92-yjkCJq-8A~kbB)avp7-^L z!5PVwyKv&X#z))y#@a7j*Yqo1Y)MUQ5S3TdwdNNfbf>dkhxD)RU#=&)kn0`QNm!!D zL{dlbalJ6dO?S&+m4AoHE8bcBOu9uyjgyp=JhT7>rt(MO;t}R8E^4n6aXTDZQJ(PF z6c1|5T$;ipOxMfP_?mTna>HWQzvG)eeyAT60NW`xraMz}GMvND2IcO+tJbnW*{6>g zwUCqO`g(WTZl@GpFDAx_&&(C`?>$Z(ycm4f9BFI@<-T0(U{hu*Ki`eyF`s>is#cF9 z5K3Ux*{MkzFp~=jN40yR-~EeV@*06kTaVSHakz$vJNUke7vH@F;9O~e#uIn zI^$?!jIb~Wq&i9~%l6U#5#?*jBNZ10wJY=03REWQZl!0fr|7ib1$J;?c(7{~AJ+=s z@8I2>_JzF_8L3RR`L^;~p24ReC++sLfUxj@%Z#e5Y^ZH0uTTA(Ds4MP#(^VWGI@E- z{R4x*j24gMF8T+$jFgPDUjVve^YQ7keU-B&CBx};A_OBNBQqnT1X^8PLx;D{glELz z@wT94eO+8`Pg*S|Wk(vOwC)_Oeq&Gf@`z{s@}-#nX0^-t*LxIA&58Ss%xrw;zCFxO zu`4Z=rq%Nk==>f)4{jc5hP>Pr;LgWUi`C51Lp=vVYGj|~nU6pjYuoK@!Z%0nd{vbR zT+ZZ;5j9w34MSLQLX^JTcatY~8-1=qug)aIqh5JoE_-3NdIm<>@5>uJsi8v1#APbx zofpkW6-oJy=1=9>tZrLGYPo`*Do&KmVL3JG5tPcmy^NIQiQdtHa+Uyi%g@>*{UBMl7eM zWnob|=QC9BXJywdeubxfX+hbUp8Ng3wwzC+Ao;Y$fgy=CfaL<{Wi=r>sqW;j6PDYI zzF7OCtMcVtelA4HBRu0}yu8Et6(i&wXD_n!jr}iV&`gaXoRE}AL!lx%mdxX34I3Nv z7WJ5zxPSr+J6rX$Wp}p4qP8M8*FvR3QzIYiT?6y$PgIvAnXqxwC(1OUp`*EK*Lvnz7>1TT!;B}~<an5~E($+4;GR}5 zQs2*trDkO#tbSyv*)h&6~ZCTAY2L_z#Nff5N&jXCRgUI>a zgLI`nbACHEI%PagZQ2I3vK1EoWZzg_x;goNbyFP|DqeB2S{;Ntn_ zed%fgx=X9QmqsxiVIYA%eRl_=dno1#F?9yE_jSQpcA_3?-cO)WoA)Br7*gJm?@g>_ zKAQ{uyISgP+5I2{3YN>ego#lHtgD{OU#ZhuJ%Brk@`S$7$51K%pb0< zvoUAyqV-*Bd2Y=5SzcQ^9hvFxxYAx$Rwm-)+K`ZNw>2L?$x`s<4l*=2$YNMmm6cVM zh>!ciyDR=#mD$4pi5op}W2q$3JV;nrhNZcPdu7J${>(vDbB;byg)?{qtdhu*ezI#M zlN0J@5V1~)7ju3d7TKXbys^yyi zO+Z%^Wfu?i!X7Lm8JoWrb#5G+vLdo$BGgB~32UUfKH1zp5OPNTd~6#@QO%dfK1(!Q1lLN6>RW(u5e3C2e_g8Q zFz+vz?~4Y6I&q_ue`!I0X0CdFzp{M|)(3(9QE`Q%`WJ^y#zsD(#djmv?EK9EBluVjD0>TWJY8&-NR__OIcf5WHGBaa2||>U%Zrs-A*-Istn$%F zhjcP+7NTf?VEw04uR+!oeOWph6%DBYhvu!%3K4nfWQ(h9-8j#^cDv#4(5O*zMqDT5 zTd($tinD10zIvg;0g6%-p4T5xd!N^ijq8(miGBDvD2eal1_$?JVydqUmQJ6)De5jk zGJ0PsRPM$F8sgXL=l4*vLvQ$y`7PG9q8~14dMb*ZMGIUeexV~bTi>v-NQkO(obR)- z%2_z1NGmR0T3ua}D@lGzmTPJ0wxX;qUf|>I`r-JXk#|9kxm_+;WJ87R6V))sU-E8< z3noq&h9Vr-nZtLzZ${WR9^th|1noCc2_mBap3gc`N`&AgCAR58_pt+J)eDqh`_H%xu?xV&Kv638B>7f)IyyWR z1)b1q87bLl`E@V&ppi1;w9c%^DO;Xx6K||`vJ$zV)$e6Y-?N1bdP$mz-U;7%+`zXk zmS=ZL+#FTiEe~ZZ`RW>Tt)D#yOsY;VyuF&q#$^cG*CyxZ0Z|yGd@bQoC(b0s0ppd9n)R(r-;tqQm zl=p9WzoytCh4(tx+D3&cd{5;)aApCc`7KAUuM=}P%_XongZB4_ThtL(ceFXCypQYe z-5Io3=VL}pF2X37A8=%d!bdEs3_E-wOmtoL1Ae_26l7#64`A|};R?-}>Dh=$^)V>Z zX7(>ps$DDVaa%~M%*Q6cG(qGfDE=!zt9ACGR6+RsLw)x&RN4{ z@$(hZ`yn*g!D?!{;5)r(L4g$64Fx%a1dS=%d2&Udt?l}Vx^9WJi+x#&E@)KR;34(c zZ`@a6Rb%%qYE><*ce_Ku?&~w_M#qE)>ah(>xI_~|3EzQk&ml|Fa2z@GCDo|hoC$Lv zsunVCBfcIpTU;1g_9tC14buARG>FT~*JfuA4he{^0VKM!tfM)yMOz2!VvenG@%iSc{BFKe}@7IDX_L57w6d84MC7468{Mz z?@d?ZiHqEW32QJ{`KJ{Y7O#I0`9Cd7QK;ByhhDGOWda|NB}iy0e#~_=g@mbwN}2$H zC8EfolKX;$5S9=xjTZe5VUB3 zS#2FUyaTweNr#JOVv_y(8T-xap9~DM@X7PB`*;#{ra%B)eLd%Q#L~MYc_PBRuRJ^( zenySge^eyjtW-GeXKrq7eI|%5W@`S+5+0W;=>iNFt-7Ct{WtO4y+zSB`uUbf`{^n0 z#{477|9PK$1M5D89;Tpb6UfZNcHAreA}BIniAh%CiV?gON}dRRGp_XOhl$w4ys{~Q zWR6OwQbb5$6|QOcTY+9bZDm|^Vw%q+?45YUR9i^=xXSy>E7x#}oJl+kN#XOSosVgr zs|(APeDlvw78XBAe*CZew+B{YNdS>@yn3jQFnatn*^F8*cYQberb+^sDAhO=$ZfB{ zst1MYkdQQ;*`x07(gaMtJ6FWWKCuw&8;G22too|6!2jXH0^fL*>fE^M)OcSRgV*`z zw^{<4MB5g5dFC(MeB-0pTzg+^w=a3Q2702w(5)@x)I+9+^ztwZyf4qG&CH<;dNxu9L$>b ze>u$9GaYYwV?QYc-#M;^n<{K_dWstxJ9&%ar70@OhP9JAxs+WKr5hP)yO;an*uEPiBMMz5yVP8@7BSnG`?soPs#N zwPFtVtoC2=9E)OY;h8EEva?gZ&y_oqA~ro+mUJ>j;aRBvE*i> z75P-V>9Rk3!J%Bxh!%fjN;M%qJ$e-UhH+vEd5R!ikGIDStF?Dga63w3-qcq=pIYw5 z$r8v`iL_FNA{_6d@Z~U3x)+=tCjQo-QPa~WO!YYN`3I#Wm0lZ6bY!$w7T)~r+%QJW z;T)|Rvu9QqWUS0;wxTQ6)ZgAp!W#(*$cenSjf{=Y);fcV^+w}udBKNpEiElaYYw>O zk+YD{a_htEj7^#y`#venrEZ!;Y1>+4d?4h+j7 z1NG*J`Z`j+kX|E_gMDa~6QQ`(^5zFkWYkb5=Ful2m%U?qZwD$As-Q1&m|<>#V1>3x z|6r&>3TL!*4&yB5yxrF2C5tDD{pwvuT)<+bHN?05`_OisUH$n>$a;In@M2Yc=Y5c< zr)vs=m=b9#tQMDE`sQvn!_ZWoDf3)H9O_#8lBmK`@7uvE8kMG#?YbMkG$~e@g3{8` zvb>^9dWP7d7h9S;4Q$yNJt8|eAoG57ci~%hg5Hm`xsxCe=0mNkyR# zy1I_${3c3&#|Ey|<{%Iq-LquFoHjRF`ZML}nLdpY<5o=L&XkuznN-)_g}xUxr@i~3E8xGL zop|E9dJm1;Qo4^qUtfnt04uq9H=^pplmK19zQ4WPPK-0l{Bc!PR7ne`QVi|IW%Hb( zRGmJKtS?1yb3bjLM)943cJSZK#p1_uPLYq4;lLYHe?Otg<_WZeBy%Qi`Xn5muZ*6t z7Oqt_)Y>dp@V@B2rB>HwSR`>4SEPHhI#0J|qpfNIQng6lDv+KH>brKSPS!*E_3Bqv z_y-A)So&5$Sp|JA;U>Z+MQ*HLPVv@dkpNa*?aZYXTe0oQ;+#Q0mU(+&(WvNRQ4?<{ z6tV6PQt|cu`2dYeNr9Pg488deB~_dTR(xc}3>z0We?*lvkf*h$mjl!_ zK}_OkLQn&07A7&Y7f2uoAGSB{Tw)QM+Pmz9ex9VP& zsGDqTY=<(mr~*hg#nJZm_G0MvnueEMk_2K(l*oKc8)bx?$5(8 zo|6y8(rGqJKgs8bR;kj^VEcYfTQW1jc&waED#XNGGCkdR9tqG^FD)-0wP4oLnqyDG zj8O7&?Rf#wpa%FKbzNOvn_sjJZ5;t!CIRE16IPXp*K~wx|;*w_5f_t*GezmWWA0f)>u zb9rg1lmA-htY+}t%boX0Nk49GvDA`PR1}#PPJOZpj5@IV%7@;A)H5y>`ik0>?i&ry z^*~GenzRZh&Tl|rbMsv#@O}BzC;e8s6u->P!Tx@1j1FPw@o*r91wFi}V3!dB$7riP z78r~D3Gvk2_>7)6&&E~(Af<%S5zuE14l!d>3LOcr+OLq$6&Dk?`$B{tW{L?quRcW` zZ_EmW#3-{6UCbkdJl3Yi5nowlw3Mj?@m-DY)IV9mo@JZZQtlI!V@eNGPkg|v*V=ru zzVaY13$dTSv*{=}nza;9%h?*+Zo3_s%RQv?>8c(7%`jt!^_4VdM+GN>|9)BhOAA5s z3%Ng1TnokZZg-#RZcVi$jJOc2&co)y(5N3ð}~)MBQofnGvWp9yx})5oix@5JXn ztE%3r$y>FG8mbLJ&N0mym?g9;&u=>WSgw+d=hFE1Pquw0O|issdW96*Jb1A!*WU7a zbe0{ougyBCs+zoiqoS`r#Ud7CR>GTO5l9u{u&n-)+uzroJ9o8N7-VBc{N9Ka7FMPx z5V?)-?#ee$$u-3F3p_J0bK{5i(xGMN=M$lRYXSHfP40yS2G{qPuv>-9+702q6d^K6 zw*VP3!Dr=6(c5c`3E_fQrbz#fWp}^trH`4bdiknE`oRu8h~y69Frh;EU;V%KKv3^E Yl8`c48p*xp)PKAyE2St|E^g%aUowp@umAu6 diff --git a/testdata/snapshots/darwin/chart_legend-light.png b/testdata/snapshots/darwin/chart_legend-light.png index a90050f68d0112ad4870c269e58cf3d7f788f080..69142d45e6d3084540206f6f0723a6170d5e666e 100644 GIT binary patch delta 6165 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 delta 6078 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 D@8I4) literal 6785 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 diff --git a/testdata/snapshots/darwin/chord_diagram-dark.png b/testdata/snapshots/darwin/chord_diagram-dark.png index 0b369b7404ee913f6812cb111426b4a3a5b2b226..d56cf01f6055428da398c5630ece6f6fc05ab38b 100644 GIT binary patch delta 29484 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%0AY=xhugE+em5z+#0$->*ST9K zkJ}|)x@RCwMxNQFyWhA4=gW)e!#rbvT{`SBzUy}HS~Pvagl63Q&IdRl zkf%(UKzP)!su@ts>$8hDtB&(Uxz&@FW?~9mEElkPaq-t8qy2EXrGLEX+WEUC)C(5oK*Tjmjh!2-R&>WM5{Q!)#%_ek zF>os<$%2rSk;H$QWM(g1KUK6fO__}@Ggr9fq6vA-k0E93wa^?m1H^fJKf1z0%ArA^ zf;Pg<*lkfIP^zroza+$gj2x8!*OBd^Fv!P0k7Jt^QHq2sO17{$USBWqL+v3ibdUTz zN0#cjnD+YShiXF=F-yU1R;b#Vl0@kft$f%PJ!5oYAI)qwW9_Kw!_T-bDliC+N;DXV z;`vQ^{sB9;T^@3PHvU}mWkkSGx-WXz#*fLe2D-dV8XhAb3iyAwKp_IQ<(kwfydAuN z@fbE(MxFYDtu|?@KW9QeKKS=AtvvH#1>gggvJg2>1J*>}XvTg+{HXL+Kf@3+qZvd) z7A4`oE=Z4kZh1(bv42PimrE9{JkHqqs@A-8iM?VDWddTxv@Pi_H^)lj@BdW|{*z1> zdk@KBK+JsfyD*E!*#6qkZtV#t-S6d~>P@XERzz+VgDygOvc01xjhbMywl=ZRZA=(r zTP~1hy5%oLAhU}-Wtw~-;S{_R`%X>0hUv&McQ_F>dx`$j*gN#n)$uI0=>%L|p4zqT zKyiR44mK}(T^%b`HrayS5?1@0m_tns$8Xyau%8qr!}uZo6hq9q7E^o;JpSWd zagV1L7KW|!9?Ci&37yp?u|LVo=`f)75=MZ}{hXpk_T$vAz5lP0Koj^0h4&EIRw0tW z+34Gbw^dx@zLDfs$>#a}2r7Yxw|U9{ah?pGuejk8tgC4bsvJ#YdW7kydZ7j!QCj6j z2NV=AoCKx3FYhNQFunAVGA5~2V5a@gxXP+Gj(Sy^)I0sMlF)_w!9m=$)+PY5L9ISc zqK)KU`QwHe(|LyFDd)h^W}z1*CvPx@HW$w8%9Ic*_{S ztN|}7=zb}#FLNxO1rC50T;c~a7KUfwb`-X-faB$joBIhFiIU7PsJx86vMBRUO|?sL zjZ135$@TTH{1L#HmIUDDrDdGdS1&I15Eo7H)wFT^;xjIqMN?kJfQnOCAp6N=h$KVm zYh&_|2IB6siXwmwIJolSPv7=BQ;3Z@Z&=%F7<+;SgHWrmP=V6Qjwrl4%%6GPwd%8J z&wIGZtEB;L_aBo)Pqc33Wd=XdGe_xqH`EoqKSM&q!o~2+ZJwrZEM3SXnY1e3cp9|D z4d^|e`4ujxi*76nO_g~i)``FMF1uA2``D%Dv6(j)i z)s5`2;eFhw;{mKE!gn%z(phW)CbCZ_E)E@~+_O4N@!NfxC@+4Pse2LcZFL2cWUWi- zNbZ6&RD=7Qa(_XK)UFF|(T-n)1=$8|Y3CdA;k0vKn(cG;k@Ywaj zu|jqhpn`xvI+(8cT)3G@;v`Xa7C-Ucnd0`1ral&h%B62TG)f=R1UqpbsLTXRU3H@w zAhHGb^aN4@(3P4KYg~=m}qFCfxHYn2*zh4%NI%n zBTjcgS(^w<(7Dd)ki!yUVPGTO|J+}?dt2$(yqFSzc{PcZAQ&(oh4d787P`J}|5Z4j z^DJMk<`-#JzQTe>NtT&yFS5JbRyp38o+Ksm%$z=Xo0qYyEX7@5;$8)hS$G5uaOBE+ zwhef8VLk{vE#`JpF@%UWpZMy1Q+TRtE^T*!VfKNv-xz>c0}>_bpbG66u3rq*Jq6q!KF#LuUG+;sMwRI;{Xaoiun z@XRZRZ7l97F`6}XgVviW?(D|2}_+@SQ7HsXA(VcM ziH?7>pD|!ePUrD>$QRSej#BZ3OFY-1FH%2?!=uX8(29*#=U`=O>sUuC}Da)umt<_dEaeS8~VEy{~9 zfcei*LAA4Tw6i+O<-H7UJfGq`49)>Ert2#LBve@ME2oUu_u>fKoL_=EA1nWyyIZzB z4srEq*c*DgdR!^x+Io6H2M4!Q0dSBFPp*MJTg*o%qAIcC9h^Eimq7Oo-IV zV|<15!6cMfQ3FpXmx^&8vauKaG{*8uKZ_aH@2=l8`cgEl#x$yWBmCE$1A`C(CoG!3 zR=thrS+9CebRpPj4>&xGWin~seHL|jtjUJkaqj_i>S!sMEiVq&V1b@t>!P-t$dB{h z%{UVF7TAk3yH<@EeY@kd*l8WY#^s2#hn-0jz%gpB04*{deLK7^PMRnZ=97tJUmcyt zZJJPwzJ_EL+a$n-M;U56mQ-~`6jn(<0P@Y1R5td(@4}u2pZ=PN_HXj(yK^Ozg9tJN zNFt>Z5T_&=uqPhM0(Q%^Jah@O0TAtR{mST3M-KFZRHmtk5WK=8T;~^h+^<9;{PTqG z&}s6{p;L~c8jTdLN(kmrnJfBDnBxlbzn6ULbkO4YCEMH`LbicIZoKsLK|l-`+`3e+!THC1&`9{>tB{6XYjwQX;+=ev|J zr1@<7G3ab@vXD^e?ikG)r+B2WpQVIfs}Wer5HosDRdJOa%^obSs+1RMQk5C3$87Dq zAyMI#USy(*;G2K_+De>o)~0#`4;NrKMva3>^?30hXSBy&P%ZoAYNH63MP2JqL6Ssf zo1?6iAT3pd5@=ACvk%OzJDS%bshw8;zn(?V&Wb<6ee|kwrP5obNy(pnXmuF4b<$)8M$39ZCNMEyWUB~kusWZ>pES1AU|8a z@DpuI!_F=tL{thXf5f}(JBW_b(MNcn1p|OTZ~43OE0qCm&n~X++Bu4DI=@?DU?}4@ zO5CWgF;^u!GNB6h_9DpZxo@eD1QHMu4-AAcx@}l@&OUv0%7Msz%ppRH&$E8b5;qdJ zvJtl`*3K$!(OytiO>?!dTg_@QTx}iN+-3SLM~WHZjC|91^6S*QW|gz!><4@tA4DD< zJ+7m&9vxnae8|@64m`uEVy?fUPAW{|IzrP|6JRe+Y2tz{rQ5-cYvx$TVF z5o8c7P<2a)h42b(A40r7wbS~jBnoD)V~bFpCl9-0U@*hWQjU5tx^FlQ9ULPp^1Ekh z>FKMkC_6S)tycKCCf1$JerLI{L;yOQy+&~4-o{DeYSXOX zqbPiwo?MQ66UUTFtx{Dh`0s~VBJXf?vK)Be@nZtoLZGOyES;(2I{vUFYEnxjCSnf# zMOt1CGpj1DTjH@1bjw*+1r*{mg|=yxo31*e*{Rr&q7xq&U5Rh;W2Vao+)j=GWTjp3 zjhO40FXV+m;ZTHKHm<0yzZfocFE`&C%1q3+`xll~Nog)jtI))7*ILFIYaqbK#be=j z{F!=r=rmw)0IkUlUr8_ABmACu91e7am~$ZKM)RnA#^~bwa^@Ns462AXJ6k_r9o3`{ zQ#3ALmRgLcvC2`*##d&bQgJG&`#tt*FTGd-ZukBIK~3+h3GXbn*NqBMeO)!yPU-sJivMi({4+2*puo*YFH+h;I2A4nO1DNC&ntT}iM{RfGrsk}Yq6W28 z6OS&d3ahx}SK^vnDGldpgJ~rUMA)@R+NuE_8+ITutak!|HcC8el9rP%K$1qyQXM~S zV54%`jj=AOZN=S|Ur>wm&t%fOM>~9>?a9aGRDnwEd{(gl_eF+b2n=-%!*yAlzcj0A zv4qPO%+JHaF^(*qfN;JMXTw@*Z72Oce-9cyvtI70NNMYOn_RxZR8RDG_>Z z5(9@cwuE#`O-i20P8aP-4MS?1RndvIQ;D``YvVhV$6OpM6uFoiM3t?}*L(2W-GcdIseyEhlN#9Y7c zBHs^kdVd*J4eT!t{12`{24J|Zd1w(X9i5u$67A%>8wa4RzrB1ralOHipN%9XV7l=+G9bBV7QX8xGB1gr1%0seCbv}U=R8^h=Sa8-B&aB8J? zF;Pur_+kaMA-(_ZhwYOO$6a^-NSWIzM3ch3%s5lX$GCjygik@gtXYB1PJ@2Y#JZjVpy< zIadi4J!Ws@?i{CjCI0p<^yI#FbB+L-VoSz^K1nuPxxfTDOgw9`INmVEVcy1(Q#2*a zEPKKPj6Zq%?g0L}@s;db+gI+)nd=+6#WaEe1w-+lK{noRCH=vye#E9Z!nyRrR(@t2s>+x; zfUkhUu(%Y>dm$1g9Ty+eZj1!Z4j$fK@8_1AQD#2g*tNDa6hCX4N#e8rS!;dvbl5of z!$1SPE#347M`P^~^Offn9(PVqJjFAA2@bV*s&&oiAB9M>pLeu0xq8_btk2iIJrjCB zBR5lHN#kG( zC>i588MZsN=o@?Wz{XEf`r8?8o-bw+rv+kIGNfse#ubSKujeiqvR=D3A`?3?mXyA@ z6%c*EZpms9BgWnjBKkzV=cVxfPp!l_1IXar-eC5LOBulQ_kH5}=C;EvO8JMJ#a9;{GBMqU~63kh1mH?tS?5k8-d{}JC`lH>dd&F>MG+Y}gaT_!uC=xk8SPoUiiM??6SJ=X`1d kf#9wG9f4UTWMdAGt?GZVjAGrx0fPKwBoxIpF delta 24328 zcmYJaWmH^S(>00(n$QG?Mgu{EHU!t;?(XjHP6sEr28ZCm-95OwTX1*x%SoR1yQ9YF zpR0OR%{fc<-W3rrP214Xq!0&RaUp&sx3r^0ZzaWDLWHy6VJa)TKt3RL0?3gOCc z?;>kOw`-U*rUyJq7z#=Wv773C6j~Nv2a*;m=g0ZywEe8%#Nu%tPCwvWv7!S=6uH#B zPrAS+ho)u_N4;>ct&3~u`y^OH?^65h1K~JZUUNJh(cOyMU4IX|^#Xw7M}^}zgL8^G zpN}Jk7K600fj~j>g)qXO(5$2X{OQ=rh4Wwr^YX5?_q#0)4aKoS!RkQ)zd?ha)b#Y! zCwiY)Qi`IY2r$6_7-!E#e+>s+V7aPbg zcTJR3GmA?m$Kn4uhYCV~gV$Ztmo4C_%rjFxFY^wFmSjof$%{?iFMPg@2aqf<@UU5m z9E6~un2-8Yacd3L1;DS+6#gQt??yg+Qpq zlGEbPrib4#C66t#w2RAR%-febj;*5Hp703)KCd*_=H$?Da#j_J-#&$f?LR`ncR+#O zVsZ!RLdC)r0dTlHky%HVF1gySw51YpSl*P>%;{>@wAYl#XucMg;H=VUyl+Hx=(3&g$%z2e+ii@O1CmDGE#>5p zs+9GcTTLpfm_I#jF`|fCGrSnq?r?i&J`yo}=311^Kf6SX9ts*FW3v4|ta;=i4)X15 zAxGH%zID~CS(3J5Qm=XJf^S;ykk(^zc)+Op1)pm;-;!cZwpxB|VPe5BAA$q@_d;D! zFz|uDGf@q|HIu!>$(+UtwL4EKwe6$daAnQoccbnmZ>^3;ZTU(_~!WNT9n(eTlfOQhZPZ^p&hSTQCLacjvn_^rHg82Sc$2*j{~-ekhynwwb=JiYm{d@-`F$oO@^D32U}EC^$gLn5#$QO_z3EPt_nX7a zoN?I;BBxwzEhd>+@Bul4Da#zuTcUgLTKu{F=gmz333l^wcG-S- zU0wE$WNDUhNAequq2N2t1Oqyam_AZ-RhhhvjhPk(XAZ|QTF-_8U#k|%EBY6nR9dMD@COL=-+?=FVKIm>{XdGqH(oct~=(y zPC&_9sFsi_3s`s0aAkL&SFYk?r?L~5sZ*k!u)xP|Z5ie`v^!~Hck8Po^ki*mK438Z zc*gxY7bQ#J`uwr^>Q823d!?HzL|k8B@@mdO1=DJf=JP5oDqxUCCeh38PjBG!apO>k z&~VOXydwHcR8MhBYqzWC!b(CwYdZwyr47ZHOnOu-#j0{iW=4nG;l@dMh1`l+KW87I zZDI?J__n}sixMYG?w1@~O}+P&Y32ATojxcC>$?rx;qkF??IOGt1|!fBayg|-Yw`|; zUw7?K;u@p8#eI1EFY^HlhR>3oHlu!d2#3z;Wh4_;RN2RmNo9vT5Uz3#j}xg8e4+Dky z@c2qJ5>kZG#%3~uiC2#>$f;UaYs;=w3X|z%d=P8b`hj9FOTrx84=&vx;*-(#1ul$= z{86WJN}fm8-h=U2HJP)@+d9nPoL_JVw+-8 zpgnkZ(Lejq`>8I6ATS?GWXM?CB8w)qMmVgg zhFG}dF{WDUtvluNcB~>>RScR;-##sc|H#kkWOl+nJA#~b5OSAYN$E?|NmD%t;;Aj; zOPTqDcsW3n-mij-P$jr)r$RIRLu%KAX?^m;V@YHT*TK5qxRS6^5jV9o8Wvsbr+#Lq zYD)17p^2Q_s}|I%NLfHfU5BE%S}{w6_dh6rWjntSpB-e9 z@m09!qgqM`BQ|BUZDNgxjIo1Dx-TjP|NqbgRnmmiMzVasHPI z{Z)T{a+HN9Ih}0kaECj(oQ0c_!l0_Dh?(of&RbD9;fAcvmI}R$=&`MeLZoNKLuF@8 z?IDO#2Uwu@rR_$?+f&vxaRRJH^`YyGZg4LFsp`GLls_o$bW7g3wbAUftci7`I}rv9 z_1EB-KxXVs`p&&g&65<*9@hu-*2NGVHZcHa^feI(+ z-4uv2YcK8iEHO2{b1Aiz#ko>;xT5{$uOKU!AjCOdf8){N0tv@x@*FZSeO|j)!*H}H zpJR@@^G*-yuL119KdGwhrF)-?Cn?WWEWzr0423Tnac>!MnQ~)&4#iwMNb^8PSJq?AkWBea7UO z1U$^3u)l$XyhRg^6GSF3Dj9_>mHm~!xZbO--2tLrI&)IU{U_)`Si-!5%*g?Xp-pUQ zxvcG|l%kn|@?*L<*e%gtY{SD1S z{~(DPt=B&mx%#A6*8W_HOmW!fNspO010;gfQR_}*9&K-!w!u?;0 zh{0!#!)&ZL^dsTf1Q=n&1Cw#cV^(xLIul2BP5$Ir_F=I?5}#!<3#V{;5d;--4OmIx zi#mgFP*@9cmW-O_r_Zi?-b2u$K9c|V&}^fHjHxY}+2--ih{o3{&wM}y=FLwMJXmN5 z?zGh{QQ|}tH?gVocA+#c^JB@up=*U3e^EG`c{ngNB@*GHjIWcY2v=+Cc2&zF3+#J=Y}N8{_y-vLH~vYG6~2{!biOJ1b5`YfM?`^48nhGF4`rdDWF1 zuB1pI{IQ?%nCZW8P$eCDB7~W%>Xt8z3kw5dLL1-t7ihuy39@S?2pxO^qz||i-Y-rR zoyHkUkVMI9Gi87=>BPj@uGB3wH2*7_|CtFs5Dc`|NW4$=#C}MUJaEBSa)sP3)?u`Y z(2$1UHdCqR#{YJ#ar$EPgD9@Dcn+TtBGm8wWW_rb^vSG&SP7kWJQ=7h(&dX}N&=8j z6na#^gy}kq4KRWWVql(C5{b?Zge%K-cI^T$axu8o=8C74&PZJgoWD- zwlABF6zR`pOL7YGEs*mH0E#lU+cFwnl+b?9v+*0pjo8IMq&cv}5$b{5C5<%^Q;YO( zC(LO>7fKK-o1+&>{FfUae`vv&T}UFt)Q9`chp{PMrdMlj?Ua})<3_b&Ak+CUR>?h0 zPT5?^?a6F!@Q@jZHMw~>2^ACr9~|QUPFuuZq@0G=Rf8I!eE*{&9+e~vO)^SV6`kz= zC<*r0`?(I;8;UA_V`e_V=D_}^)w{c`y4PYm_7xa$GcOm3Z*cDgO^yy2ZYhtHpHLF>h>V31B+h><00p%8kA&F41eT|w!$piY{9P)$n<4igJTjo1a-c;;j zaFfP?2{Yc18+W*_K!?w*B^#F?)!m_nmIE*O0Q&#q0+iltsz9bJtKV=aaSleeS~zs5DD!^|-J; zn|sImZf}3@giT`y2?U>*5dX=(e&H9(4bj6(GrRd)k?ijK*dzAow_7KrWib`P z{~a6Od3N?N?CCYcPfcG8dERU`{!pMvg1JqeHvtY8GOMg& z&K@U{*;>w{-X*7mMp38s*gTR?n#dsWj)XB5VBsLu6D$hPm}Gij`TzUC?D&sv2($FL zBAe#BFN17+9Kx}3p<0b{SZvdAk%B+5(}-ahtj230PK%G$I^d8l^(%L%AYUtTb_I|K zYVPc~=fg<$vUE8chy=gC` zTlQ`&9xGLCYB76%R{q2P7zWSRiAslIwW7tY--i?%u)1h(VQNnf?5gjf6#gzEUL%Sa zB9ray#PoC0kQ0xEKG+h>Lm@$yJgEQdm>o?_A2nigJgZ#CoNPVYV=q2EyeFW?&cImv zWZ@ju!~Oq6sS^i$25B6=)oB?@JaMx&A5d72*(udE#g0)PiCkbvBl@ zc&G`eXA74PB}==9haW@BDj_D~5}PV5Zd$c+WM?wO_?0{nXgF_;I1o(3aJ6(yn*V>2 z)C&t6Nn&e7f0Y+^bF;GRf~}ejh)s;gCP7s=nGmjq2r}~yZM=^+gw?Q|5kw0YpxR(k zpC0x?kLvmG;r-;EbK-OanYf8ipTd_Mnvl*G;Ve$KEEr5-|Li^auM@T%eRcHKgw&$*;Y1J#IUHLy9t)lf&H%4E~+F=H1(Pxb8cn`u?vcefUmd zGzV6`B*}WeKX?&U< zH`AS}uTQ|pO@`L9>9-5>f)VM48@9VAS|#$rhqhau`5?TmbywrQW3y|wNCz|jO6Mgs zkSet0%8Vb?)6eOJLV7Ihlz;@lq)dcG8Iil}(?4Mn?FeVptCb(j87vB9>+|z$VP+D~ zf6Ky7J7hZd_~&v?*bv01waF)kVWiiZ)pKI@)~C{9yQ*c0DzlGhzJi{O@^GZS{&cna z6o>D1fAIIV@=Wc}k5%kXfFR<%H5FP?fI{gkW@{Ze7tLmAeZ6jrQtftQAGYbE6868T z5EWI=P0w0HVj1q^E3(NF1S{c6GhP0Zc+qmy)N3%VIOjCvVGoRGc@i3t9*Kt5H39_> z@UxK@68+A-qV{?=hvGq-ukXkwS0#0RCVP_orX_PH4S;xc` zZ3T_G^1Eo6f+&T-b`G!QeW&eR248(Qcm9((1e7T=HyxST$o6Ai`-`i(*OiIY)#Suf z=@qEAL_?szkyLa>XHY$Fzx7^bP8{0Z)tZt^&BIv)Iwr$#$uXPw`i@OY5!B{)TFz7s zi$SN1%N1xm<;X#QhUei(64xe*Ar5`PGWC}8S12{~lzhVZZ^#TK8`!OD>D2@4c)cJF zBIFg2)V@G0}oc&B;S2mJ%VzK~~{IIxg#iVeY!) z#4%yI_G(E0?3$73O4Gp!*TF$K3p2B`lNkxXW2aHoW<-ne z?yhTd4EFCRGz<&2QcEX^lZqDBaLGR}?qbP^4eYMjKVUPp-tR?JBmdA>xxj0?px??t z8pLlnx!3spGa&qkp3kS{0UfeUq%9F+WXMnQMn~P3%Z_u5f<^+{XN=G+GV$Nwr;Z?J z^ve3N!|%3ZYNd6ab7j=LXUK5w1|c*o&Z$0+9|y$G!?5!c6He}r{cja--?o2m22cY3 z+9EkTNg;Nu6f~t@e4&Hm$1Q3wmtrN?4yY9#>o`{vhl|vIX?3%JI9x3Sy|DueL<~T8 zxW_G0izR!l**!hx@fhT3I??s;EMfkg=odxDfR!w@(;0g1y86g2lJ|6R8Kt^f+0rU_ zNMy&EJ}S6IAc%U`;oAjU{*B1{h$C*`X+YH0+OzyuQPWMFtg9j$?0cckSn&ClF0zv% zfd9`iL%D=f#M~@o?U;hKwV}L8hXx~Po8oR7vczCWEpQ%9oI15IK5<~z=;bjI?|eR< zjE@ob*8U>JGfwaA$luQ#?39gmi`|Q&@G<(pC}^kdsGefq<8x$D{Whr_{?Ud=1Gn#l z=SQqkY#q;m%J?k=S_lY@#aPlvYV1Y*74<4{Y)pC1a={7Gi^-PO$CR2MY}bUa8MMIR zmP`gHcs9|Iz?=M?Dt(_x$ND`Q|CQ`WoF8y09zOKLUqYH16#>SXDM5FR%sM{sn#Dz&$%Gmpcz zV+YG(C2t^Qr`o@?SF9DIRDGUS(<4R;jXX~li%Q}%dTWCv2tHoF#W-v|Ehd1p_)BwMv!kBdY+F+NwT$ANjd3*AyT$Jz%zVhKNDEm%Co4d#FGLB?m@ zEj0a?JZ$|nwbKbfRZK@m5?8@)|zuiE8$P1ED_EgX-y%FT@A_iu?Wk_#+e{UwZOco6A5yqMXw8$CrCW`FPQmmpb?u zmlV+0z;Baiguod6sI|q67?M0Me!k`S=_w*uIDT$Z+?xj>^@rxnmuCC2yBUmvTY`gs z8^LjZy+5V-PIYRp8rO$8ubGWptpXTZjlTNcr5Mz7)~d^-U~b6X&Be|S>s0Us$jErk zondjoS0BCalx`H_b*eIwhxdG+db$^^=ZBy42cDvVhYe#H`%~fT!+V`O$2l-;OjB1U|FkOpLJ# z>)mx~gt#V_(Bex{%rSjVAs)kf@N4P02-9S{{sIO0Z?_Y)3kytj6_;CX@grH{rPT?5jG)` zGzo;>1w&Z-#fAN2<$S-vS2_6Ain1!tEs6v+SkVQOHD~9Ynr5v0w6=%#4MW9uog1ftc0z{l}LH#n=wS9K% zUqkAF31nq>z0vhyb8hty_3wJzMUiWkFbw zg-0%WM4X zsy~XZDr8PMKfk2MM^EAW&ovsb{AoSam+`m}#E*7rclMi2*9j8Dyz4z^dk|EVZ^j%_8RDQkj;)sR@=H|XqUo3#*e<@SmA3tmpr$t31#nKlq*&kfvIGkS%K2^2ltE*#no!5$aLDDJ2s|Tj_xv7j}>{yn&zZx_|Y+h`~ z&Px@XD6};&)obm-z(qU?f)*?Msx^T@`dA8RAl4v)@0*1!(f!8qaE;7NWejtn9TjTS z9IXViINv;U#cZD)zv1Emb=`K!pK~L-tJt4=;#E?e_H#|gqmCMc^DllEpq#v{9hYYp zLaY0RFUBXE7nF)9wASU1W<{xNXTVhgK1qjH3ann$j%OO5uIO2SKX?~ zb*XVrRY8{sl!DI>xPJ#|K@{Kht>WFQu7`&Qh^-l23c_>hSO)tJK5}}qi~HF!XvF%| zL~SUSujMiI@Ya?xVA0E&OKK4FKzH8SB$O8opnk(B`BjYVsWz|dI7bu`M<$HA9XfAi z7=-~{ioRZ;`y`?JtK3%CN1g9~vX2EOrt;V@&M6!XQ>?ZOWAyuU#9Ppoj~h<>hNvri zoIYJ{>r3`J7}g1+4V-!#pNBJ@rtvfA7V>VVwzvc%Qs6o+?dq)sNcB{w!EStkDlE?H(X!#%f?&(j-fAJhrG zFS;`ONQ+n3ejfL}%hVg+VvAorOf-6zjGlquCzYNZA>o8R(c_%dw~ zF)RXU_<`aJYGqVE4o4&D5d%$A^{ooW_F1PyE2kcRZa~a1OqucmmVIO31uLk;i<9H2 z25i$fi{BvCef}tkw0@V;2E`5khY>0&>yZb3lU+faYSil)HAr8zT~)W3AvWugB6v)< znaR$i+i1cfU0GRME#mp8c+7TG28a65qsDf2%fQidq2Ge5h4|EK))^JA8A;=z)sy>e zYt!n2013)EOm4he+B%p(X+jNiTz_{`Z#~^M%C{@t|8J_#=PK4&=7h~~h-Fdu1g{d9^FkIvC z?Dwy~Os1ovnFhnef(#j=qLRg`){e!I8X-#b^|!^hOh0m0ST%)X!<%(mTsDA}?N_}2 z(1!C(|Llm0A2-l|$SdD@m#s{_h-TJ=h?~vjrL_3DKva!}l4h{0f5TIEwV|HfmRqyo z%c33OL)uB{3Suu&*ZCM@2kKVkA`k21#-c@~g82wa;7^iz6hGok5@Z5tT_Q;G`2Uo- zi2x|L8^JraAVl$`N5qeonm9L?f)Q$X0=+gcH=60QnQco3*xYOFxxcmbc`@Tyj!lOK zxSt^?tEFn0@Zuirj$jMN9@dB*WXPfW>XWuX`5Gb>SI*ir0xo0-dQRwvac>pgP2}#9 zrNDKZrG3+v;w#AsZih6L)*9Tf%K=MUXLBdgKD!y5E!PfVFr+g+-h0Lb-nKt@xfnO@ zmti#{Z+_sq#}$m`U1c${Uj)@j^1z3E$3+RK>Jf1BmR8ohF}!X^IjH8sRBq*U_Ov`# zZ{}o`pK?U}JI!a&bp8Rl<6+@h&tH|-u8e+Ym(*pi(VHKJXd;Y;r$G)a)&eWvFLe(ghTzUS4&%8m+$K^NCNE!)ZSzS^~LO*a;snkI;y$2 zh*$)hMe0A@Vs@No5a|SHd7Yd?OY55rj)BNjNPA0Q@g#WRViyJst;_7KTBQH~yQJ2pYzn;#*}l7ujiwlKCtBDCli7^aKLZ=5~6?haBY zJerubQt6JtuT99qhz5|Rqc`*Q6vN8f-1rZ=)t5HKE(IC7-%XGLDcbITzGqK+lewMY zD=r4D**Obm8#_4B%1vCye}msV4rm$H2ea=$xA;UlwSC1LZ1rJo7%5p`b<}~k*`Js( zq+8?C5ns|~Ja5LrKsT8^0rCM+aXs*fpYpXv1r++Bft$cufyCK|WfqtE>x_UJz^^TZ ze_$G%AAorD1s1J;N$`P45R^83HcZy_|$Ml5rCRS3G-l{_RElWD! zhR`&JTYp-|gh%AFJFUK1mG>cpq|hD`QtYw=C@(igx|eCOydIKDg-DS#W{l95^j_6+ za!&E({;#Y#k%PkXml&iO%<5qaKXdm)254URe3^WB}a@WEKtLzfSb@c1<3yd%@8GsF=y=T zVpAC42T{}PLNh1)qAs63(CwdBaJUc-QyBbgFWrQsnXlv;5yMWjr5)!D%i9cV>nP(h z^v5EkeQbYKEQm6|iZ5q!_%CP?D#Il(q`mBuU;r7t~!MwxJEV=IwKC4F+jZxsV1$vJh zhH24jD5-)tCXR|~eqz^xK~|TZn@bZVuEr)cBC+Jl?raP-R_n6em@>*_Q1#bSbsyw4Y&(PKU zOt_)*IWGm^!3@*2g8(nWdeIe^<p9r#K&rzRWL3b3F2G7&^E2*7e|WIU zQzTBL1v=UgiUU5{aBq;nzY7(3ZcG;{?KoUEV^|m;J+$>McwwV<5hWTKdkPY$;;TOd z0J>^g+Z30oeWnc5;$&ccOggPwe7ey-wjvjfB%8giCXGv<$-pAQ_WZcqn^1r( zQ>m7;jU_AodpYx+c2J*-nli*G9o6f5cB(WY3OG;W6@J7kVANYR4iI87^FJKtu8k&k zOHgFW;so$aO>01-pE^NOEQqanQZr5LG`7@Cy#~Wug7A%?wiuW?1<$fn#!A^Z&Xe?jDL<`e}C0}F? z{V6_Ffa_MAnIz#QJ9W3dx#8Rfe9C%`wFMe@}52=+dL%;Hzc zo|B!NAS#ioD}_+1rSz^9;dRvug_8)8s85k8Cpat5G9MO%qkC212%Loqal>ygqDJXw zal?E0`{k>3x<+0;4C1oSFwm&R@ijf^LVTLzv>!cgV-ihqA!j+a?8ElBC`uJfV|q3G zcp!cx_@ZA_ennzMFza{jAr%NwzFQ!%$hRNAL_@tw6mLL@@yQijkl2_%2>?G(_6Bzg zzt*7o#m(?>2%-5oN6NMcr!Y8tHwK?AVpA02un=IBDw^qhcuI|8~ z9Z+`tRU|3|jQVE7j35Daa8k#Sul`*ZO^AhR%GZxx7{LHc5-GTFf_NXzCn<6jAkBQ#DP+q(ynnQLfb zYQ#dF99aNaxT{4Z_A!ut*l$7-0%H9LB$zz2$V||9;I$|2JeD{d6H5wTxxHM~8oXL> z?{t`sCH2vVz>RKI?P1oxq{hslX2vzM$FTzoPtN%F%3e|aLB|&c_NdrimuiLqLPNCq zg--r%iGk1BxT@UsBju-w<{Bn2b9zKyBO0unT~gmSs_B?+k3<}-@?vrCm}fRreVSym zls6{(ej_o{14D29uIDXKi-hLv9#;PF3ss=@GS+cNyvHPG+Jbj=-s4(t?CsqiPOPp) zB*LgDH1FTc;6o^8xHghAMF4ID#GG0BZ>&(kU{KR&pzZT6zQ%i4!laJw4$_cWdNwEL zEhAciyxRFFrK|!E)qYskFklUMMQ^`Ekfb~d&fKClqaX7 zW+oqh8*8R9VjZDX)2tgOjuDv0nU9bX!JdOc`oR2A&}I#-keDUlFNb&DR^(Ob15Gy5`}JyMRZZcZ9vl^)RZtvAGq8l6qC2zz0xaS2h73ss9ZS;+0cpz ztaz+69BNpTNwVQh`*#8gSWoacYx~TZt;?XF`74jE^XN(LVeEJ$*+o@+7$vJhvhPVi zo*b34q3xv@6WWIH{!cp&ov0;d?x1a~|0wF~281AOGn&1(QQop(V#OrtRM;-rQ#F!0 zKE$dROuLhj#5^INY83iC+TcK&8rieL)Td*7OJ}*0ls=|-0a5{g{xfVOpaD|7G5L>5 zm-~Z*eow2NDb#=&MaYI&nYprFN}x&W>URB?1tljIj4)3E5Bn(~Mh&?r*`-dr1)F^03reVmgf{K+; zFZnP3?8%8h$Gy~t%dxqhLav2cU!VOlT4hc;^{MgWbc1X9G09jOtP*C}A>q?WL`K|& zdw*$K(BLt}0An-(>;NOJQY1;^kB#3X+7o^{m4kB{2AX!GzYw=GIex5YuGy`8)f1RU z59AzMLR|7G43gjGsu#|KlqEz^YL$(SLNO}~)+dg0%xNio`oCh(9T{Q|Fbf*6(L8Mr zMLohaSRaSDc3yxU>ej}YTbtX^dQa-def3pqb)t^2m1{pcwbDMw3ahr3+a>uO!5@t{ zVONJ1&`8EM0Zu6X*2{PB@3Y>jN!gE;#yQxomT-L#M9{01uCBT3v{{qN{7d?Gz|gqjGc;7abW^He5JbN*48Lf-vxJ76j$%n|+Yj zAoFMW*%=AA0_6$p>2lm1H!YN*`i%Cyj8XwM)4&Mo>@=#6FO6U^N;OJDGIz)HrSVzy z#mN!U*Z3#9+G2r&?BAs^L3r+IebLRf?m!2<&hgUvbMi*lm{u{4VSALh*;WRHS!i}@ zEFon^DE4w?-uMd_!4A1V4*EnfPSYHQ|1Sw0gf~wh$Q>tEk|zxd$CxrrJwqAFtUSjymAn@_C!nA{6)6#z z8Yu44|FW_z+_>`l$g(o29 z!x*-g-P^coDx8Usvz{Ksjd83b%X?c2u*sx(=yAZLQN(`RE|`jJbn8bg0)lC{g#Pcy@6JPM|m(R<9(f?RZZdc!LB1Q2K+Eq%4r(nezf`q(!uKXG z7LTgNLj)35;c{(nGTG;}oa7pu{x3NIc&~o)=4wb=72X6U-PdZy!H-B7gzq2C3@s_+ zs^7~>J0>CM5hR8s0nmF>1a7roS_bQFZ#b>;nX2DYomZ9YY0ziPYd5o<$+xfia6A0J zV}lOV(Jn!??`_-aR*|_9^upP|%&kt$opUqu5?iUQeX4OJ6Q%uz$au-`OKAs`cq zfF6_0pLUGk_P55*@(KQne~3b!VNXokLSIjeku*=gENiFW-x>*42YRi|g;+kN7ZZ>5QJet`<3h(=d%31s)_yhliL5jXtNxTeo&kN_=w%nbMO~4Cc zd&wj|8hg&JXDh2?SDGdP3k7d@Zj^^)hEnzY9GZK;!>5^$buGt< zrKpepN6-$x^{r!H$Gz-?nf}pBZ8$XD)Z12?H+OPocM$7M^-t*D*Lt>p`1c8XvZ>c> z-oLnNEe++ZZI9vqR;KH4p}>!lveguu*>3iHTkDn z+-@g0E_KK1T*_3dwUi>ohHOo4x^7;5={s!SQ-!{acs>-}*!OKE6MYj_9Vu1^1hAIFn-LPS^Ejwe{!wt-9!5l~1p? zc5576fw7~O%2FbWuGOaI%*{_P5Ac0eIo|F~2KS5?T<>*{zbV!lfsYa@-aOxS4h>%+-_IQYS|J9UG9hy-9O*_ZIuT z@9Eu-^qN(*r^R`=<~zKhJdoAwk@J(5_D#MWp3A{rij>Sz_py6IF<>;vB z(&)!gf^)0Y)q%a~3B{jv;ihX?gt?-FyP>{AqjznP!b5!>TA-OWhJ#cz9A&c%LE(xP zdY<(fR!6 zf=U-IEyz7rlQatM`#Scgpo}1w%pt+jPkQ&(x`?K6)9~O^*{_3VP^{zmq3x$8*2Xrx zsc4d326s;jdi4>fyr~dT0EbqdkW0~i=-{u9nL8;T0I^4mdr(lfr3+v0KXn}5&bibo z()Vn$j-1He1MQkJ=2%5YmHRMELZFud*3?Q)SnA5%U2=B>8rjbQZKK1FBGf0Kx=iUYWvv#U~}%EGy^vz559DVgf^N~wzPjVtP*l9WXOY^<|||SKNrLX zP*BY2jZ)eoP=3V4r>mGMg@@{>fd{PV3;ACZi*ZHn66vT!Ha=?^vX`j?#B;y@VOrp# zE;6HfxK9{zUOAo$Hwg-MTGb__(Sm~V(sIpc3iuav^iS}D<+HhwEM2W$mRPDCm-E`y ziL(${RDR&8?Ln5xm#E*&c}aZ*D)JL~b0Vqf;C8*qz50am;n+N)1l8wJBd`6l32Lzp9ih%C8)!O-rhk$ zxfA8Ps|JNjzpeg%{EB4bi_})WHX2l*>iZ27N{l=Ax^(4IJZgelqaoCi+ie>2VQD+# z!(8-f%*fIlR-$wh3z2QwQ;8tbf3Sdm2*B!A5Zx@4OeIM1er3~bYF0gc>wLiw(0m3rgr*H?SaRH0&bFmT^5gU$Dj9qw8lA#-n^0@MBg z_QnKhsQvOd#4P&#B}nrmT%XL-Zi^fDva&({)rB)oe2bml35@;ZtQ?i<#2aW^^5!lW9;V3{l-z;)){p0;yf?9%d+&Lkm?YC$OZ z`aBh8OZLG_NtTVO)yPL58D zrwjVD3Pp>-MGhKd=rLjIs>_$u})l<|o!re&(dKXTGx>pdpFG-R|Q)&{CiS)_Gp zH{pGNlt)1Lc~2Q@;#j@wac?@7G9y#3sU|*OgI%OXX9%T#JRlcqN zZfJjVn*6_@K#>OJ;WGvVzgHt@#0rElS0a>#4?}w&G)>nkNTe&FLcN_K9c`ql9k#}` z{&`rh5{ag$I_$@n0&&E-cF+q+ne-`}1sZ1F;63SwyWsoA5x3ftr5*8GY94{f+< zm)ehJE^(#TvrA=MRm4paK0 zOAbWls5)+roZc(QS5D6eOc~L&xr<4PuSFoUbB+A+|KDLdT5tx z#j7^IbO8UXINYPTFP&P(huwq`9qP}>7qC_XR@XZ*U_CwK72EX{i;H40K+i#K>EjYc zhV63EdxPrYz&~}IwdocX??6&614YQfG;0hb=72MoJ&Daxnw+!s>Zbee5?hEhKz(|?QX(YFRw3KgtuVBjCAHgWn{b1 zT{>_N20AQR5aXMQr#&B5&U?7$;nTc*T?@zP^|O@W_c5*jYM1B1l1TFy+(1=m1Q&!n z)al^Gi63TsZBj0la~*%946#}!`4gh#Cj_XP4_At9!UT-rDIr76t#31|3cW-^8N6T? zROFPL5=c=D3(D?nk8+xv+whwy@GN{Co81s}pJwAY=s1}-sFvPp9;mJ=JL`T#FE8N` zUe~a%cALk_po~*IO!K+qSN_-@nIt4fgj`fCkSf_BAOg5yRS1JS_cZ(miO|Gb+Y@OU z1nn=vkR(POh6M2I7v6CCKE34xcNWthMK)ll%5aV6w5`q|ZuOzo6=8&&@twbg{VdSv|CYM^TYQyS{h&;}6^HFG-M|;@JX| z?XjaM0KC2OR9@}79x5gdb`yXQ^G?z?I6vZisM(bnDGrgZFjY#8cZc9kaM)nMS=?d2&As>co^Sr>b7s$(sqX5Ur=O~=Dha^jme^yS zpC0ue783&sP)-nIR^RFu{H??>Y}YxtRU?2NieF4Gv*20_xGZOVXIXD{qoC>x7}E~X z<@Oz@;hVXFB9>;@wd{MeQebM8tX88}1EWEnY|12KNEgbA=XoHC&@&03g-X$?Hm~aP0gC8E4spBhW zV{Yd%M28u(;)aQ8|FAz5prpbxVSQtJFVT%5L36fMT24CVG}cZ^(V(!J%@lXF8v<){ zgwCra7wUK1?k;$1-NqaESr%{rd4cI%Gm6Q9fz)STDJ_3+d+b zfKHQOY7?Ug9WufUG?6stza^yD`KLL|Aw?0Pl{r(C)>Ro~p$;-nRJEj7Z6%XkgC z68NS`Eo(9gszFkYe5ew%L{g-zslW1yR?J2|57RMjki?*b-t7Ic_hD-CgwE?YEPO1e z%bEsK7_`Vy{e^x;$@FFv-L0|L`>qpA_=%zgUtr|9*zzrup0?9 zTtBVOW`m#Q=3dMaCJb48ap#RIVUMdKj*Gs$Zzv+MM2SRv!_6qZI(^U}SR13Wm8LVM zp2`@#soX0T>%KWfyz8<@@aI~?vb3g-b-WKy!&&P$Oh-m&T3KDkx_N^++^}-bw2ky> zv<)f@yBm+{P@>i$6b?6wdu*S@{C6L*K7zig4;@ss)8n6X!g_O$0)Lb9?$`sj4=Q}+ zRmI0Dq(eg+P?1Mi^4=H!^j==(DuBp953eZyIsj_M2(~2U!KEgF@US9DYvclzrnh#M z#$4NA-`!uUQlIKT5+sAJVayfB)oX&t;@p^weJWV)+A5*Dd^Y!E(v09*=nyPHId)W) z%yH(OiT}P1FwSZyeM>{r6I}W=B3-`4dV;dm339c&IWcS0V$N-#{CE&kZ~r|p(TCT> z@Znyl%6YZssjF7Sd9kgspa6KtM}xjQ(`zbsv6Q;?hd!-8+_uc)KH2^H{sJxNWVRLp z6cm^*_Qzb(<^OK?hIMVbH9D=*5Mi>)J|W=BWl8=hWDm}^0;@81 zH1BKW&dg{))au+SSlN=!#)Q#BckNr+it~H|s>kSQ(1%katVNQ7H36_vp8zi{yNS(| zZRqTvq6k>XkF&MO)a&hdW8-IfUsxlMs6nP@03IOGc3SLTKfM>qjGlB*T8R9YBXF)p z=YMSyD_@|o~T96aJG1a&3Q1}%uO05ozQ}Wz|F&b*1dg>`bq>J zPE97*j1NocsfoYY+T#-RwHV#QO<%nEC4%^5L5e*I5V-o{A8Y`F=!eX+MfRWlhCpB! zoyLKi=8lgaldQS0AsuYO-M~PDl1zLKePu})y#4}KmS!AyFzJtGa({m3X@U_Eoq6tQ zruIugM^LaZ2mg1_;Y=D#I^3Kg83Cd35wf~Ca_%ZR7uf7sXY`ifCB}QtqE^#>!SzGn z4&W=*lCmY8W#*QpBZ?nV zc=Yl){}JV?hv2(+!&5zR#Rqd)fT(gOz#=aJ^}iy>S3GQJzN=IcSCCnqPBYT6njE&))bvWoD=&V@!Xrj<)|M*8!HeKmMH&ldw&t_d( z=>9anJBQB>1@33U&tVifY|89+q{DS*mLC!aJA?MDRodAUV@u*ESjGCPR=yA^4 z(^WiyS{t_I(hsH_^$dCZ@F9Ujn)ijTR%A}MqhOy5^7~%UAKjnMlR6aZeE>PA$Vv|_ zl&EN>GGJI`zvvNFn9(RuJVXeiH2$&n zRcJoVBQ5w{B}pV@{q-ls%yj{mK9`3r(y;D}VdtDq_xXnD#2%8I`_onLqr<)IawxI( zL}l~tS&@kP-@bG8+^=XxhF!1fi8I(mww~-|zo^44sp;3kz76D-U17l}+^U zDZGkyNkV=<6#Y4QzSE{gj#6K#wm3n$Q1qfbw`7}0?Rc>3L4vyD3XuR)stN5s{Yqhb zwVn&9JPxjVJpCzx!OK!Q4?FA!6gr>&8gCT!O1`V}2Z{leEa9kv-7ke7Ugz1zv5CGt zSru(Rt(n=o1G+#dPp@0Z0bCQ4@@X-uSJsb^Bc*;Xr5*|V!Ek?PaqsMp?_h5}dJQxa9`EPs7NxVwQRWDbhxU7xkPoYJLbkkU8t z7v|u(xlzLmzuj9{$parr|pu8p3?*X~LGg>i@X+Nrd|+Px{bzVeq@7L6!LkAy|A zsC7C1xSpQUTMf01TA7KLap*@}>2!KN%3;>sKuKa9pMsJBp?Kl})Q^)uTeaT!@gaNu z+lycvryt!od`)Z@sEx>M_+83bg5D?BfV%z9nrBf76rFDMuR&Q(bLsR$YmxEOI4lco z0=IW7pWb(R%PyBT?2Q^eOX%$s(M_k35aCPUPqHg_HQR@>>U?EnUvWg_;a;;!q<55N z1Hj#*dR^7^Kh5t7Dl%w3*0)|A`EBhr0neiPPyWP+b`c9N|H~=OhWo_e|7+RdnG%wX zMMgf%SVw%3lt-AUD@}E-_@n`irtwYb_dy_cfHv;29?~oOdd%Hd~frx-a~PWnE#<@2DNSW z+P)WsxQYEkp5Xy9qK~u>U6h=6hHDSs6NmVnejJ_!kl`FT@4Kdt(#v5Moizu1-up=^0pX((4XMHroh$XDCJ$reUXrQyIXj##6&$}hYKEI&CrEME(Fz9No)*iI?q z&HcY<7ChDbwK;%*ug2si) z9#bNmOcT!GZ$HL{=5c{gJynWXE#)DAHk)iXyGNbZ9;z+R-8)Et*JC!Gs<-+2sOZ|= z#!2h{(WcL!VsY$w6gI!xq0rfM39+b7_48z4xS+gJp@JR!%a)g6WQOooQ$(o=8wsW0 zb)A+!($mkUwb+Lm$(C+X)&^Ixl%Aa!;-6qkbgV3=j_-}j3x;d+If1Tln!K;fI-4sJ zaCj8<|4CEAMhMP{#MLW)pGlhlzd@*euYQs;4gV?am)#T|df)V7Isl8*x@S0u!4sS2k)czO-D3<6RP&|9W$d{+^jgAKGdkQ@!v#*1){bfR zB6m;|Ww{Ide~IB|&;}tA%}`|vv7YvK%?$2tY7AjB^~Il`Lau^ZyB(&lW=It~WS{#U z)UA6ixanc*_Y45zW{GchS)Ht{)OCF1jfv_syZd2-|(_tURp{o~+-f-1dVc^EpRGHY05oW|T`IB4I_F*`8j9ZfGN z`Q;8UBo;9ywq!7)gXP9E^d+au_s%zUL#Z2kp@f3H0Qa|Hg+p;+a&+WV4k7&|G+u;Y z&(C~9$^L|d3nE@tmwO;0-e0ovMg@Dm7qzCaL8@F;f*?Sa3L8ktfCN$0HH!Y+2P zSzaUHk`vv%<(B2tV&~cl-%lhJ*nNu-wHP5*0@*}vIGJyZ!b>Os@4~d(FwBx5DyMRv zRIl66Ht4m*be1UK`uw@|OXL~^l;Z4B3hv%X?yL-Mwvly3QcR*^wj_iIb=mx^R5`3H zGrvKLL^Aoz&k?K^p3h%Z6FTd+*)(1S0xH0}i8I2FwKwk;^(c;E9fh0TxjD%<6ni`O ztI#zpQ+Tnv9H*+iywUTb^72&eR>7i{I#<2g3g=1aMN>JF52KN$VULxP@-9B!jUBR~ z^b6D{8%gKJ0>dCnN6HFv=~1Y={g&I6=b}XloO=pJ-6b6Ot7j-iNMG;9IP1*wssSVe zQ+r54`Vd%u%3Ucuvkx1d2G{#F)NG40>yS7)LWi0#I}L$wyu~h3$J$EINaBVtuFl>MDWr$zD@2jL2l$<5pomvSl<{ERPYIp;xwIwUR(`CJ_3GLdUih_#dH0s$A|5LI@H+{XkxRl;$*@_ivKCZ&zH2=E z?5|w-(&s6$w}=3msDXvGH=7O89nsomoZzv_40v?HCDneA0CaU{=+!yGo+yi@tM^Jyv|itv3Ila6ac$kS!Tr4F1oWotQv_W+NZBnjcGi-isGilI7n5 zmSg5AnrUOL{#mN99C*H3prT9*uTOUUKoZAS)Gue%m}z&s zfTgRts-f~vasoVVEhfP9EJ^%;PeAvl`UK&dSrt+S(VE3WxS2IPSq0J&=X=7Nb^S8| zLu$^?5LL+rm}0K|q?%A8?)KCw&<=06RYq>VQ*Ibt@}`njh6m)5sZ{L}&Cyf2CM!XK z_c0@FWUMsU z-jpw+q+ZH?G1RM^dXZMjQ9(7h;o~_vVfIA1YPHKHFi6U~zjryazoY7;Plx_~+xwGm zz_400I=%h1UrU8Vr740qK6^r^>958#(G&c_h{CB+m>A?woalM;p)cNl3RwASN|U6+ zWZmC;-S9BxMtm;14}8d%UA8umk0dP|cXS)RsBs*ok>1KeGZ3>ZpS$OreE%f)CF?UO~w z#}zOUpD?|R?L|Qr7ZLL1p-A}ha>r`CES)dRZRW+qLHTdj40bWScB;Y|zQb#489OXZ ztxPFz*lL!g{jT*ANAif^O$nskiuY0#_dnt3f~GVQXzYIXVP(Ws?MYUFb46BrR5lP_ zpzd1tl?eApX0P}Q%aluQ+X%&OOWmbZsTwdIbU>y>ayOGCMSG63$+u58$QwtV1yz2X z6g>aowB=C5+3KqS0owN5gh`9d7{rcjM}5Ma5pe*|8D4Knj*N-VWSAuO*YcW_;VZYS zPq`MYS1x+phGE1?wD)#;F|et3dKJh8vvir&DipbSR@bQK_wA1PM>7&uI7YdjQ<0IZ zjPu+oR<4I5)eru<(}~*PvhK3JY{?E1`$MLH6NEf6EYC)MvhK5!(R_7~9+7WTeooR8ZaR&7H=b}I8S1pPLBIH3JUnB4Z#B9`YE+fp$K-JdE^X@Q)#)jKnR2BNVt zy~*(8=zpPyjdQEKsm5Zv5O1`pqPpvTfC=nr5Qzo|V$ZFKM@>BkUBxxCZ=G_5;1gng z80vHBQfa}r_|qeVY#!SyzDNP@$7e=ce)uigfiI?HCc}f-`|C`pg>Y)DjC(?zOK@etkv`iE zP>kPLPw%yH1+k3>fhUen@%-Jj2$C46OjHexwba!r%D+|4&X(54U9_6bB<}^>KRHt4 zUcH}xx$DO>RVnjVyF^G5$KUKGSq&On8uSJpwEa@YA|Ka-XAZpm;vH6ZYFmdyqjep$ zQW&%4i#3K6nKNRrbscbrx7}3Phqr-zrnHfrn3%0}%@DaEnQBc&7VXz8-(!dvJeFcf z7-yO_?i&J;<4*Dj*80fTpTUnU4G?y7p}F*Bjc1wFsB_-3btz5Y$*6SHkbHw>|EHiD zTcPca(_yRH$oPh^+#umu@A$J2F@8lGTK=O`BLjj5xJt*a(pZXxMMv!P%{R^~W%ufzfUE9Z0JM zohM$}r>;{Q(>mBUF^|pe-!-@tkX65{$x2PSpp23K^nHSZCV`86i@Rp+MJ-x;?_+7C zbiSY3B2^onZo}OZp$epa_s3srD(M-2%LsE*uIN*kq&_p zLO^RpgWi0TLwu#>oMdWx&)SsdR{~B$Xf$m~^mUftimOG!-pXr=2~{U}X~%zuJa*S- z6GZNYYtXX4fT71-Tg#o4Ql=FpBS$7W2zee08xXG=ne=@RTs7ryN(yFx++Y0f(THGL z4&m&nM$f(F7JTBeuku>Ue9i;9NXPDqu0bCw6~;6YV~2Q09R0D19Y0MdRvZjaXC@VJZD zS-kcyulY;uG%&GoF5iq=l^Kg>zNSUr$cH|;JhC{)Wzo7@O|0CE1J_riu*W^1tW>*9 zlL6X(P6i&+gY6pt>n>XrCLQJ3B5@Q970h3Vzcdr3eD~<5RL~b)J$))pDD@8BdPAQ} zdy74^7(8r{b(iqj>s3=bV43Hbd zMuXmmr{8!vKF7asI3D)na%&e4eS}Ycf}uxi?s@V`d{hG%bh*il=;khyXDe9bPn#J7 z{IFB@g!#s&l*S1!k1wz7v$|YE@19AQ7?baV^5UQUHx!#vN~~FMm+G>*2}ELqHjQq_ z;Pm!=kxdpv3Sm_G2h`RX5s^R(W2O!_0zCr+BJunq0|ZF~9tA(=EE2cA_Sz%Mx|Wy#9-rlJ22d9$c= diff --git a/testdata/snapshots/darwin/chord_diagram-light.png b/testdata/snapshots/darwin/chord_diagram-light.png index c7a36e90d2e228f883f8456fdfbf94cb514a4728..8a442a53712b9c36b88e87d51e0c1eefd972b87a 100644 GIT binary patch literal 33674 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 literal 28520 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 X)>qrH=JjR|(5$zotDnm{r-UW|ZV|pk literal 19288 zcmeFZbx>W|*ER?QcY=Fxm*7rthv4q+?i$<)5Zpb;#ob+l2X}XOz2EKbU%%boJ2f*k z|4hA8HFbCGWBY7dYd`B*YafXCDldTqj|UG128JXhDXIhp1`z-T2L1&W0(7UKN=p|E zOomuWR7k}m^K`{qW%hs&`jSap(B%dX1ZBKVlpRpVj;}SfDMze)XsKORX`XdAqx`W^gmy48}(sOK|c#{xL z;Q`;|7;)EwufM(gyXOSeF3YS0H7TSJDx^>`2kRmf7<4xn4%i0+FvI|G=KufV|2PL5 zBmw5N2qhnJ2|7jau#Zm^M4^?vJLR=4+s8S8GG@P0w=SA;%genD9KHi$(1<2=@j8lc z`yyW+U>4JjMJu)D*WQ+>7yvegfmiX6H+)Yv90@(|0?rxnv zSl<>kOZL*^uvDT%)q?_#i#DB%fSq7;uY7SsbBL1J8MmPbkj#k zWqggyJ+Gv?n9UY688N$h%5O4hVT(4=kkFB;Eopfq2oXQ4ss!m?R<$oM_z0-@t9TmB z{jIFEUs4tDKNv^CfVz}lQaP_|z7ZIUhzxvCL!Zum9FOnWvf*&Uz@4;FSiW99@n3y^ zJa-Y3mvoqlN||VFX{mX;5RWY(-17E%_i-OBh-e$VRn<%z5?$}zMv*4=ye-Wr!aQY! zOq<9p0gd`Nklz(+lW>O1jXRcs^!npv6P2y!meczMW9Q7&qRU-6&zT3ZIVBbI7g^Dl z`_mbWc1`Wl7MCqe`-`X3Db9!(&6kM=b^PP^O!qBrg~=rwPp^-7wU;8ks%f3e4o%z) zJ1!H>2N9B_SKdcrMUvzu?(w8#cfB_yU7dwVbjgPT9=yz7PxmOk?wP5nW4uef4Js>; zqbWK#e3iOd8D*t9E{n{5yy9@f6Uv1Db3PasmCeD4-uW!swM8+Ah_?6l)h;`e8NSA= zrBpwSBzxORMZ^^n{5Tr3o}gwDr-yHQ^g(VL_>A@Fk>jiOneBFNL|OV{$1;gJeURf{Iy#O4Pi%5vF%U^XMAZHU6YJ*wU{T-7 zvgX>z${%l@d46`b@uPaH#x?^Q8b*Jz%Sp{M!Zub^S;dL(Ow#6bxqRWbBYyrICmX2m zN3B0^u=VDXj_s3^B>-BKF?xVbMN!e~+tadRFEh>NJzCYC@Jur|Q_)6PP7_^fSBlPW~TPy_mJ3oJptNR1$ zG`7CaldV2s(yg`& zOlk6W0_20KZ)*b~>J1_4KEA&FMuN{g#mES}VV@FFZ!!4A6m+XgCLl7aX5UX{fYoB6 z;>JK`W5~MMAJ5=l2?}ps z)x0700SQ_J65`!Hu7nXD1sCsGT3_$YrOfD&0%CBMUM_~%~4%11=^jF>^Jx|YQ7 z*pa$qi9r-#5ntBex!Cs+#DDazl5Krr_UDofxhLM8|9eE<(#&197MaXCiOf1KR;$Cx zd@y>X{>EoE{0wc{vSXt{Yd5~MdaJ#eg3_+j!|HlqLr_*hYpXcv%MtxkZPA9H>oq4| zHt$MW=K1D6A?Kaa)MxR%k4@`{;ee(L5u+OsBs zd_j@F+!|_pOP!Unhs&ewq^zLP6_P z2}Ye3`6!8kMgoV4k(vY>7{N&!*&UV;%~FVn&ZHaioiU$(F=QqU&0NLoA{AFHv=r0U zMZBx)u6Dj6#6|*(c-}wrjG#4980?oJnK9a&I|28W zgf2ek$C?n-#Kc5S`-Xk{jpg4Mues{5j=6`!EwwuhbLN<0mTen~+Wr);f~H>G!5iV? zFRe8SOC_hXk}D;YI{jBsahg=;^ypwf8UrG+|g0MS}8EQ8hJy!x`NoyTE71pS!`Ry+$>sYaPbAYN2IizD#;q zrF??>HzN(10o>ru5c`n7;8M|a{+TE_h{rB}^s#cQ^HtkKrtr*P^)R~p{Bb$=D2RIYompA&jOPE$>mqqT zIXAG5#0 z{M{s18F-`k?QBT8Ax7x5@#TFGu< zvBboRo{ok?MZSEjhk5aOni!B-5v&?@`|JgUW-OuiZEr-%57@l26Q8IYktv8tVIe*B zBbP=0y1@|tNrH%%=J)69jU(4FJCARC{NNP4)rwjM znLvMJ+)q?uipZhi;v6{NNnmlIub9~tjXm;G5rg35<=Cv)JHL;h8jYa#Q+&4|N01#H z9nIq*#0dFp6E@}6KdtEM;ZO z&>E3Z@Qqw<-pU8ue3NxD2$2K$RXo;UL{Y#-OvRY}|z zSiG-jgQm&d|0DlZaF81JiUB`3n{n$(`15VWn@6xaElwru4FuWFBfNi^OPO;G)7?8+ zIICE9&aKpgttq_RG8DO9_W~9ul7%uc&=LrcPu`3jF~pYbCp%w*@0yibx}Dj@E7`HC6W1SoA;LF}AcNdn2TjV05>)oyNMS1b_GcxbWG%Z+gdCS}j#p+%s9j zTABzctoL4lBgdBeVYdvEC#$lh$n^R5NQAfWuV(Az(pmH8^l>J>HxDj?caIx$udMTd z8LC^aEFZ8Vw)Enqhx5)d`)h^vo$q=s>JRyU!Lc%w0ZD%`Am`y|&3Y+6iG#~wX2&qxiUtsq1u0cM7O|hiRzVp89Ri@YK$iMZeVihgH3H(ne zlP3uXL50aea+hy0zKb*+v6b&Sr9jxfs93*|8-M>59gS2~fhpW?RO7V}PlG;mfP|-^ zteuic9M%_aKHpg}P{k%+P?PFIe#Dj>Eo-fIA0t-HPPdW}Pvc&nYbi7vSPWWFJZsuh zBdRs7Z9;y;QdKg);Zj6M5~u5bZjwBGRP;W){4IqJgHk`ojUS9Em#xf`^(;9Zcv?}R z$$IX05rg!B{%y}%szec^$VKm488v8jf5(dKO@^s-|NT4C1h-CiyDRu&o5HASAIGD1G0{0Y9au{)2J#LI!sx{ZxCbSd$lL>w7yz9=%Yd~Lze`+*mgk`RfGw+ z1nSfIoCmag*hfy~HTdJ?ebT*KUSb!Z-Q;GYpK`F)#AH3TDfD3%`A;bSvz-@2gD}=n zqZ$+Q1NpRjJ4eTnS_TOEe2N3Zp8=I%eJOKcJcn6bcaK58dvCv< zGNuLn(#qrv=pmyTdacLoVoQz;)yhA3BQzBkkD=INUte!;=X$;Aocf8eaXwXyuiQCK z&caY^bkxcB7PAhW&A-{Ae0OGm$Q@+6=S%EzYisRwZRTh0Px>gIoX}|vCCG;(~ zeioD6(Pw$$;z7eTD$ehkM{-EHG?CCzceg@n+O=c5cZm#NeI(?o!e%`l*q@-;NxVt4 zhCaEQV-42aSUF+CLSt6Pv_35GZm~s7QRK{$jO@c0;y&oTfg6TbScTea!otlvaMRK8 z(oysuR(9CUAk-8UgUj#a;q7iyKX!LLMG}${Y4>}6RIYFPD2eUx=?A;Mk8#sV-x&%5 zi4J4flFfTcm-xRaUDM*n+eX4!%Gfc<9ExCSMw++F*2SMT zhNbA?zO9t9I)VR9;kbT)RsJlK1{zqJhz6tPACF?T*f=!WZn&~N$m`x7b#|1<6Y=`= z<3B;ws}vTIGGJPkO3DljYSBVC$Urw6KE|%|c41WH*S6=^ZlwgatbHykd%r%BYLS8^ z3C6)?3aS%R**`)27Z9S3bdvr=ZY6y|K+&f3)aT((M{mr?pbUxV8!GxLcdy^@%YOF4V$ z;7!hWHyy~TB47coAimJxOm#EQn8}FE^{261VrkKo>;s5?RfE`vOm-D%;iHh5` zpSeX!nCI%V-P2Ug=M32nq9d!=@Fax(%~aX_2{`^;P!ts>AOm5O!&b|Ft&!DteOtL? z((H_1LrH7C5g=oy1R~ylk?X^K2B9h3d0 z{3e$H?{Cko#s%)@%VeDY@!y&~!8xQi+V;q}$-vWp`1!79e+Ie2L=#tfojUX>a3uYc zf6({Vf#h8LcbmoL2JcC8eYvd1#eys4l1HF3=eENA1Qhk?$>~nm8k8Yi%HDQu_$Ddj z9%(hT@%7cxT<*YUXdY2GwLxuCy}?502Kjnb-t=E=4TY48;>I&B=!rPfi+B-pU!~sGkm+G`fVd$q@Tg#;j$=Cipp=d2~e)@E9!WbEgBv5uSS*b9)wrijGHhQn&Vw zp7wjX!bN+zXX+ynQVvP~uIi5(Php#t^XM0AjbCK&56pknXrxA|Uav7>&xpa|K!gU6 z82ouyLSrT=+^w5Qn3R5d^#R3Z^z02zOh5hg@Xs=x>fMcp$1_tTJ(Tn|y}kd=+&B$M zP+@~vVIW^WK@t!U;9y`#vVwtu8D|nr1)4QM5n@q3D^HhCD;fz8?>*bkS8U8o=jBHI z3{V6wfDng@hR4BVrZsS*-PE_Ib2zy2yT6T0ntU@->hEuO8asriHBjmPr)+8ieDljh z)`FhkFsi5A+U~HF3)DYjAu*VT)T#C~zo;TtAn8{K%o{}9FHB9;Tt`D%UfAyRzy zZGI)}h`<5Nqds(uPs>>N=iySjj-x17N?%LCT&Mf)A~rVT^V4Jd_paj<-Upv5wYAmN z>lCK9{O#>FVu4)X4xViBJ!8Yv1Y(1g&Rf;NHJcj6B5_D83Q)ktWXr$8xOXU83j z1j^Qd7cPyh@efWT1{hv>_IuAh`vByD$DMD4@Ougek_#2X%4NR^v&hzJEE=@*R~yF+ z*k<6cj^XJoA^in6QV{f;aMkapr*pxC zY-Dc*y=S9umuMp35RDnQwY`pIX-N9VW}WwD%(qJh4{t+nl2j#t&om?^Z*^mgIteLR zyug_#{NK9iha=m?`|}-Q_A}Uyh-OiyiKm-$$;F)tj5zzUws-DXO;Kuq1ILzITI|Bk z{8P7Cx%4|UB6JjRAP%@OHd|X;?gBtFyN>$iuqK-`9O&&63JU1yf`i?n5n(N_F8kSc zXg>}G4fyk#mb(+jV2laScCIg`W@KT0x}*xO(7V4WjT0vp@M=F@O;H%n;Z)~|LM6St z*?CCLgYXCb=nrNEQVS|xyFVXrN7uPt`@P%`fqGZx>Xe=b6@$g5H8n9EsQ07eJ8D8k zVp2w;7_6oJMJhYh7(1{Gw%nb~2gfp{=N>UBinq!&rea)7iMVQ<1aga->?D6>A{!5BpU79sYf|x(a8t5HoB8$!hZa$h&m#VX zVDDQD7J%vMtF;dchsaSAc5O#qRQT* z?;l4#u9zYk7o}*P>2*6^Hm`2%@w)>*lP|18$iYTr&>*R!tc%dXVoj6aAlc<#k+|?t zHb1Vsxp1Y56qT6n<;+%~TsUSEw^z@lOqQSrrPY`c61K9m2~raq-Ah#SyJHd7Ue6Nf zM#twA&xUg5Odfc<(*95@cMUgvxpZ(huZUi<$wNoE)sOvP-|y&U#779B<}lng{>wvZ zV9yGqS7(PnhQbnGa#i$V)mGJu=_rG4F0ljv$cjNyt;|uF$wUY0R_}JGbYynMOxIeTO z1ZId3`tsMbfwBnKAPZRSE=Xec!;oNTBMr_BiZdfbt`(-hTH6stEYWs*9t$O(NNF*s zS`VY}lh+gx-)V!#C8-jcsp3x}T51h?ewQ8sFS^uZIb&tTYU^23&ahC*)+go06%q4b zn{1BcNK00!b*av-mi7zTyhOwis*9Be&oNSZEW;YuC@~HCUc7rT4G>xN{3lfTcPP9K z#UTT@V~7$vxPQ~S`s>S}qmAW%yhevEa6KBmL^DBSUitk|VmGm<4BX*9$J1B)E|)7N z1GMDEsA@Ms-j^P1s=|e6%j<$LV*b~|qno(w0an4Rg?;a*;jL$hsG*{TgVPn(f=S+j zxpA=SA+ScDP6^+F8M0th;q$@Wx?%J9$$YFFvA=v@TX3SQ7YPaCL?VzMw7unF48P1A z?Y{1{6Vk6YR?7%X1D=*wft-(aAh9XrFW6KxW-GO*p8=XYbU6`sXIT5x6=9-`{pe#phHkJ zs@>qc;OdiBDJZ9Yek_FI%VGGJll6|>EnT{OH&aN~W*5)T+j~|Mids z^l)6xt;^_v?w<_h!f&s`{{tmR9iZv|FP z?vFv5!D|)gBJ3%ZcS@J8H2S(6ndIptpa*|n9{|XmutiwnM669pqWmFUZ7}&g7QplR zXRah;Z}dh^!@sh`bz6IgZV?!Vnp%?a#)&^7*?*;K1TY2Yp`xXE&ws}32EJ*+W|;OM z;6BEdI30ZZ&k9_$4Io3$3u$>$3u2hnNzEwv7$Hqg8~;-@|6^%NlH?B(Bx7797OV|) z&jcQW!3&S2+|5N?n3!EM5k@$Xs zuXuzlZU=>d5d$hOfDr=fhwewlZ+lov>_i^9CXSrjl{i-#5u_tLxMD7pJmDbeiw=G6 z`?q`3foOMl02(+Mgg9h0EYAPQjb~U5!1UB{@XN+Oe#oK;l+Hv|(cDIqRsjv* zU>a*4+?bI0-&tG-GERo$d-6C}PjKLwfgm$8^~FUA;eQ~RI5$A?t3WP`z1{6~bI62z zEM82pBDsL)zK@JGKB14fnWv|Rr^7iGUm@WanYea^WhVC;b8VKidX&HY3l3v&7?{VB zS94WAl82#J7<#($hH_w5i|-1M^`T6K)@!(JYlq+3&jt~akJP}=`ld$PQ&kw8qXs|b75ENRQU~}OOY!YlJv2j9f$^Vu)&9+gvY{mxSWYA zT51}-CJaw~FDq%6*u!Meyf}(#VE~*lbtGy!ZT09{c4ao+uF`Kw^YB_A&{!1a#s_kU z!>5m!oCE2}44;fB6G@Wp{Mw!MdwdxQAq`e*>g(%stQMx1#CY}gZU^j@7=F1}P$nKL-SdQ704PcfOHP8yx4 zv@BNF^VW`5nGWNc2G)3B~6fg=kvvTa|iPQ`_gU3 zU|^kmw^#1D0d&y*gu3>tZEttDv97Kt2n+`zPvhf99A+n&;4=f@^!&IU5dlx7M5#)$ zn#wx^H8UIacWov4wum}1?FZ@1#nWj?yoLB%9;e1IY(Q+U0rTq`za_$-ifRn|c%9T< zaZ1+OrH*wqh85W_$Iq|C0~G?kp) ze`&Fs6O-*f$Zv4d3UfN_28)71)Cp7Z74gl*-X%-iYdQ4i@D#%eivL90LF*E=LIw2}xlLFD+9H)>BQJ>f*xQ&i3LEufu$GeL6m=MWjf{QD*e~ zFqueIMU^v>qOGaK-|rT(Dpmo7P1&rPFs^dt^_hj72l)@eS1km2dUE3YxGA8UbUU(V z81J}@M?#0b(^ObYz?<#N)b*VRAz+J|nx2-L-pPa)Bu1jr=tERacB+!%E+?pw+D5-_ zhGN2Hr>)VuOy`YKcDxYbJX>_q#5+H)P1M8@pNph^N;NY%ckUWL1fu?LFpir-1cN@P zLw&tQ8{IASMdo(0CiClrDNgp8&(C~kAG%@NO&RO&MPnitzqf0B!T=4$A}9M>kB}B2 z)IDM21+20yr9wlRtoENEg|F6KwR3Rd{CfBvdeHkCm~$W+h9;b?B5-z+*!5(Afw7Y` zdYrENf?VIw^|f?vnS&%@KlwIVq1C&Pi^)+B@2ovIfMoLl>vDzy!Nx|z|LUG6(OFcm zXs@djQ=#mT3k)5qRF*PnL{IY<&wNnjf3TIRH2{TB!1M4@Y8e6y%zz8$k^DC24?x&z!b5;rY8d#zYut2=-X008sz ztq5wO<@vd%aqbF)yB&d*&{Km&$$# zB&Oe^-2W=afMVdTjt%3T2iJXlj8|F_J!V*^QQ;dFdwBaioMsqxAOYBT#*@CJBeGCrApnm*g)MN)_`H%)I!Rhj*I0*&h|R+Av^}_KUA27f5!Y6$ zjtvi6DA$hcWGNV2yqg&!6zy_M0770?UQSkiKtdb=@p5dOi49z%R7nvwu<+}qI5a0q zb9_(CFBh^P*Y0X$oOy8fIUWP`c;{c44xHHWi9sTZg_}l}mQhL(S*U@bsBFQxB#=lX z7O+Ahu&u1ZQ(YBGp3M85# z%!K;rEmEP7>T(US*nS0uYEETwB0O6{+(LMPcLeBtVak1g`oeSyh2$;Nr#DrN&Gz>x z)(QgNzhzqu1twdo>DG+sB_&oe+iWwjgFg0h2l}E?DI*=|F?rSvCYYabI>E4c0~%*#is}q=+i_ZC(@vKL_^B17DA7|U4wz7@ z(&}7Y?*)vPHl;ASxK!)EU5Ph{8zW+TrEU`hx{Mv@o0$rB%jrS3w1#i*Ph6jF2`N#_ zjgP;e5X-dreIQ};)*2q?)ud7YhU2@@2Y$j5l_-95GS@nz; zXC2Y|^f=V}WQ5{gB<*_NyVpn6*++yRNxfO6k-53GABj53M7!Slh99NB4$>Iw4gJ!E zqn!;em<7!*1RO8pP&FOiUP{y$r4^^Z&Q(o{szG^JA$K|0bm6@4Oak*zc{?&BVe$d$ zQ-8GnM&phSlW$0KW;b0;RXTNy{5$)-sV#3Ww}bD3$vp-dSCetbg+xP`^FP0J3Vg2X zt8*f1@3MPqmD5Io1!&bolS`cfs|Jid_faaKUV1h|{2n*4Hm>7xTOTN2zykRA`;Sh; z8B2IZcpH>FVQ|`WBuT#+tUZgAQc=bcpIq$3@MC@5jb;w&srH#$p3AXus%^@79JDyC ziI#+?5U`4sE~1n|*l*J9eZT8kS=WAn6GFY|Eipz3&TXTI0X{+0?XU0046GcI(52 zRnwOB-y?R&dW*dx`TaT)i)K%7U7iCEhZniG3PQUkYU;-PQo~TSI=QmRX+RaI(j`B6 zJ>>9{{Vvhp0KwBXc1`HhesM>ywi@;$5Wcn|Mi6jz*503cty5)p}+# zI}zjAnMa%=B?_7(l3-yfCP+^UyNLY^$F z!wZR$S!bu4Y!B}5cQVu%pfC#=Rj0j`+7C&Y5_y~y?XMQk$K#Z|SafFckClbHVNXzE zA4}bH)*%Eg_RrcD?d|T)&RpN6wG<qLY8#d@176`cTWf_UA4t2pcZ z*pITaHgp+NQ-pjnse~V+CRNZ#R#fhW5&f|PTAkGLMM}O|9s$w`bXZhhOa1+Z=ftiZ zoa2+!(>Wg5mgWgJ2;R=?Yl6Rb#XU@7S7mbfntjii{JA9}$KUhr>qRWf?{{VO{9}`I zFc!yd)ZjBNqVcyOgxd#x@2y%We+I(zu#A%|@1-;FLFpEsxh{@fER5x^r4RyD<|uLf zyT84;Q3_d>zW1Ez8+`@!=r&IriP-CGaJ=wGfv>msfVemtJ6%FtmMCl%moFth8G0A& zPu@~#y$;_6fmw_&br=}ZVE9Ps>RDMQH+KZS@b8iQXoXHG@*lx}2~HQmlA$0ru_7~t>?`yVup>)WqkaJsA6`trL8BR7vZ zbr%n12hrdQ=&;k#lhf=qb(AjHE#^;KrOAeh7r@~iURW^6c4fDaGp5TIaC0xOAV3}A zrull^nbc^2086z@rNQ-%xU+3l732peZ+97DZacTIyEZ%?N)_pLUELJX72BkhgZ`L= z8ocv^8?j`k6GOpWs|(Ba{kG}qs)ad|o`CN?pFl0VVyOyIin6kH7+v=7iNc_efx!#| zufg#m$7xw;k?sR-ZZ4fZhc}QGL@1lf`ddxhqIT#3KQV2jQqj@B(?ytk=icMY6--)o zs{)xS3oEsHtoV#5YOncU&MB42sw&%!W*_6sSJi&jl$PGXvU9Mfap2Wf{8YIH0h*lL zxL|fy@CkkHE6QzOFzOk_pf~e51 zP5+qFZ=C>Z7N4)e0nUD~Qgg1%UtT-zvcw(>McQ#enaYl^A3vOa z{~+AFY3?x=H>3hxd+@TBR#%)v1R=m==Jr@~;Xn0$z&Z0w zu?~lL>FiXkF!{*vviAw2eo}Mp$mI?RiH~u}qp26^%Y2pT1z>Q1WBRB*Nd}vPovzWh zMY&{l%j#yNKBFV0WD#;xkAGm#j5tKlkX3{d2Kv!<^*-cj2RyDkE(Kc%)t(``5A(1b zfWM*r5+SypL?cpSsf!SVs#MNS9wLk?YJLa(3Fh@TfkWFFzeoSzU@@Ri7|$4*L7HMb z8H=}QQC%H3y3H6KYBNV z5Y)ll70tVuDI)58PMMyL4j3m6NcQ7*&bf+!^FTf9Z_R( z#FIT5`LW^C+^iOx-S}w~SmTIk+pAt#vILwwAY+R@w9O20?g44TjC1=)&&kGd&hO%(=@YGI z|MSNfla3q;N*0T?)^L^PgDeA@Fn5dRIJ}srSdnGl@p1Yxp?89r0s=0pQK}X|!0$L3 za~}aSG8wSaB_AH^W4=Th`00nV>daO_Q{6dP@GZ2+ins94JCQI?EIpl zcBOX@=1W6AA>rQyltCmkNxlu7BOdEoT8ujK_?%vlQ6u%&P*Vnk=~2T=_Fw#iry>X7 z0GNlr6$Gh>U$9=r3;AJ`)aa!&fP%z7=Z@|DACLSdL{4i00wv;@CxAIz0xsJg#@nT> zW_!nR)w2~=7B)8eti1=0cV4xIxq))o4Q|H=dNa-}qiJ zWMgYXjWK#tD3vN3s#IE=U~89c1|qB@CMpZR1>_4#M&<{_?We38u)>$$#L(d%wE*{u zeaZ_#O9)W-f;tTkQ}J{Ql^OFvwt7wbry(*2jJl@Ghi9zr%jjm1LK;t;2xf1Tn>Xp{ zm{tvV^0RgFiDF`?!QUqrEZ8TTy}MzXStYtBleG$tavRBLFc_LGI;_;F(=j8F3H;CM zv@^0lV=rS^Wed8i)rda742bb`yu&?jcXty%sDH^dAA>Jp4CFV24$6xvZtsSDoQw_- zV#?;S;fNafnV>G%$;zBzTcT9fYM=7~5<;^M><{Ox8m;>iDy)f_;-(7!MJdF8ckTY0 zr}uwU+-1pv&Q+=0GX zus?J0etEFIxSOwPkjBKER>HP4GzLrxap6-X;RPFl6Pr07 zlB8p>#bzz!Mf)~utH0;@WMeztN;FiL1QK7+LiY&}{POl@-i2|1=kj&p@-=}dp3Zc$ zeQUp+x z(;3`z2%qRNMVL{R=#K!k{wwgq2TIBqirDPtaRmiJOkx=Vq)2`+E~rchc^E-?n*NM1 zcEmnO@|jBC4Yj#>(mM7g>WB#{qY>jF$+1z2qCL^R3(FuYmJi&CBdP4ZR)#f?cIw#E z_Xo98c|GWZ6xjm)5f+cLxSJTD&J(`=(fP*qbd1Qdbe8Gku6i75I*X&vb+agC zkfMgltK5WN2N4y-r?6QEoUoqUu4)546;ZC(9jK6|I_IuFq)^WJj+trChtkb%XwO8V zp%=NqYdi~ss4{jouJ929oe`#C{#&xx9Y&k`>j7Le5|Xm{`OsoBZOAb?=5GJ-QPUI7 zj*^8FP1$`I`?s@;9AKN&Gz-7!On=D`3yzDW<eS5*pc?9dh zr0zr=l%uO**G*H`r{MW2JH@=r=wP~vWl&L5r#DbNxe)fn!sJ-vqxt6oo zT0Y%IRS5?M?H9_Uz+aZ9aQgb+YSf6{kL=6wIwNDq6h@Gt&zQ@uJ)TQ+;Ei94;Xbs^ zwS@V75;(xdXN=V3;$*N^u#4ANwrB4X$<}J5HlBq69=0yTpf0yNg1*Xr@_gciUS^ew zC@_=Hk}a5if12L+_iN}VE1uZeuWx_ktBR=tFeZRq-z^MZP} zz3m0p3|%jEAGP~V=8TxGG3#Rb$b*|_1>|%HtjdL32@q^R*!cZXF?`QGJbX@p!j(n@wV9X z&5YT{g6S_HRWo;TQc@B1xPQNh&E(7CWBe?S5rewj+%h1Bppez}*jJNypIGzw<%7iF z01?0I{_hYO8uY=i5JWLpfJXZ#>Q4sh=idT*dG9F*sc1oD@w;TP7)j#DIRPhp$o9nv zE2r!873)Ex-3BJkrl4uBNAOhb0ZXrN==r*TwFarL;a21XDJ&ioTw(?@vuB*l0jbUQ+ zj1|snZf&m6t0~l8tFt{IqD?wJVfeJ2wrasPKek5}VYHBn)>m$ILSS|$#rqd9{o?YK zg=#n3bJ}LmdYwsMwAjk}IMO6YAO!1LK6j#CW%3#KD*uqQ#s&BwNE&Q)vIo-DaJ09W z0Ta-7s~vj&r@xnG511@ndGcXY7v}G7Z)sHlwb#iBT@0#`Q&kkXz9vP#e>fl6TOeD1cZkdhB6M03=vqq*QFL~69n~WXlb_G zkGnG?k|jzyPWSr4_@j<7&SH6)_kAO@K>$L?);GwKPdH{g^49{#;VlnGl&b`N z1Z<6fjB=S)*K$i(>H?ExL{x+k^C56Kx#;|;#kIs^Z0G_B0Rc@$CM+b(2nP!dONq&z z01InovBJUCFsi6X6s#Ny2Ktv|n#Xa`i+{RR3`PY@Or~zDz&Gva!0%4>*Dl> zvoz3-otan^hl)0RJV`Kt-Guj=)wWBb{YI9usxs$Sqm8GR5}uCip4=0cRu9Gc6qp5x zPr1_;z~x2}zC<*1O1PxjSexI@-kwaRC0lk%7|a4c6EHMi?1;Hs;Wv0mfO7Yd z!Qhec$4gG{2le^XY;gSX{qY0Mgm6@=@0@AL!9(bm?b3zwgRRh>x4FGtE#^~R_+)RVShl;QAsr;vZg!C6g3bwxi4Cgp^=CNVKbK8-7Tz+`zoW%7niw|3cOqysO;H~!cy zLbQBNOicU{{&CLrZafl;GHC0+38GrKwEpbFSm#!&wttto=j`%wu}XuNQ_DU_zgZnu zWu+^UQ$f$LSzSe!5Oc}^{q*|#B{~zzIcSla%jIaPDtphpQdm1f(8K~70J`hH+l?Ot zPSlt$p!3nWGohzFa~M*y+?r0-lWjG}8Aee!JLK6OI1#;neX}LZ5-*tU%ThM>vpXAc z1#Q}xE;G_6mjPl%aDVuNy96D8ou^WWUl1w`jEf zDLA*at@VOMJ(ImhpGCFb+tIC8K6(s3KPd~}sehwg`OmU69vbeRO2~ytRe&vMuiS(M zcgPX3ubE)tu2DN_j@^r2!1r3TrlLZFRJ+CH%0V&u&6ZvGaAwXYHe+mTET#RfX9&cT z2rJD%wzzy+9#3#WqPyw$oWJYj;{3?gKDm7B?Pig!xnzjz?4ycBTSqL;kL6wWa} z{;KA^QvmmfH3Ng;EGx@MbLnz1wLc!tPhkB-&6H7>YvVR1R|)Cr0bNWC`uPPk*j_fA zyp$9s%`PvBSo}x|mQ{o9s~5j?$Er477mMl?80)=HkMHTX)@v{MJEL$I2 z_Gx1$5IH-Auyk$Rtto)|@Y9oy}QdcSLNIhZMpSqu^if^r^xG@fX~a_ z4>&1NMC&&sP8``JLmtArvriQjwUM%v;|dugj?Ug*zkV_hcTL`0lk=d32!FE4eK721HxQUJD?Sn@Cd zn0B6u-C7O8(A6BB-ls%KWOekRt5@w1%gJIDl{pQS-l{X)hA>_#6N~TMxk2MnnI1XZ zvh*P~tx{)4XGPr8W^zr8(qgVi5u#oK#<6h$z|~bvMCdgE9liH)5Y|;SZ9d0nccrT$ zh&L0&1{^flsZvhP&IX-y+Nqj#m8gMmjb`(<3$7%tB7ni&-`8GuTtS}^?y=o;(sar~ z-W4e($963gmB;z2Hegbl&!1y$sij8qYT!OAIo*3ZdB&Hg2X@?^&M z*8+D(f-W_Ox@rwsNRFqLG0&)jaX;_A);aujHtd-SVp}#G2F_5bN!`nRZwCGP?xnQ( zd==joXU@+UNNh-9j>v@Ejn^S!Ih_w~#&yDZD$A9>4cK@x5vT7@J|Kw)?Y*UFE>(3l z+uY#$pQ)8o6q!~sGKwN5y03S5pWe2Z55{F=W|Ai-X$G#+#7E{IyKCA6)98yYwCSp1FqiM zR_gw($#Ui6<9+X5?3umQ{CbeA=EP}TEfZaZG@Vv>DDm=qm^@|LO(lVuhPp1-_r3!b z4fmqZ_*FcW{r${Ck0#w>`#Jk{+}{_Qb@|MfpUv$~ zwJVx%W8S@c#nV4OTYC0{hrh0l-bS9xz*U>Ry_-MZEV<^<3#sC#tMZF<^mMh~hpnDH zOLW?M!Q+vt-xSZE4weu+_Hf6=xpP|uAIjbNY_&H|La^-Lr>kwp)RdkmOThYMM_J-( z9{sJ)N)hUGTAE>UtFAXhJu82GTZX~T&Bng#kAJN_rMXN#+RFO%mtA%LXC@RIbw1h9 zkPM_;7GKoyS9*K)p~)NB!v<_~@2w59eo_4(MXqSUTQAe7wTTU<7Y40N5n35ud_QFF zijba`ucy}vPwg`BS-p4t#b+~avi%ZyovgyPcYFBb4>D|X*Imr|eRreX4d6VE!_WGV z&GBbFJs&??e!eF6@$G5#MHMS-lh6-4Y%F4{j`m!=ROio4=5e^p)1Ox<8TJ`BfU)ARuC; z;@<_8+%iv>e5Gcc@dvJC7gWDR-{Ai&uWluAE~`k@!5`X+u_!d?oUOjDWm{u@rld#p z{eeGZ*8Rz98tF2I!Z+5qAr+AZA`Fa~<7e-v-a6GS1bX*N-fMH4$@5T&DN&lHx zp-^fTgcyzNFR28{864xV3qzromsdLjLwG*hS8f)awqmKDUFQtP=qut-x2C3Chw(Vl z8pmgjpNP4%quGsC!KbzyT5Xh+o!egW^C&)8!hUpjA0M|;63EV)vHA$GN3cCdWKS!4 z;41L}DyrJFbvBHSCGY2#9tMvTMs3Li8a+xfEAdvMWA4vh8V{tZCJtCKq}9{R6DW@M z_A%|-<^q2glwR=1L^kJ{SSrj@{&^u*tfJQ za2UOBKPt=HAR{8KCC735>hw%)tk5TOj0}etOGV$l)To!s>)a-0PtWL`nEwqK@mavfz*1yf+17qtJx8Bu zRne#^C~(#OP_AzEQwCZ3PDF&OZ>p`Wg~Ov4zv8M?1^evIU8|Nhe~v6ad1U`$`0yKc zCxepef^?QgiVSwLDXoA#1&#GSqiUy&8z zgBGU8V(VXcs;jSAgH$2ZnK*F}zr5QZRRTU1yt}%6`90}B_Hyaqu5;?tMsx7#RvKPN zGw8k4yYpHcKWHOdna#H$BKo}cM}w#p6=-P7_D6>>g}knejm571ub^^98~ni5`Pnk3{6V<5tc_a z!GB}4l>25Ja$n3vft_O2;`Kxz3YR6rVQHcwycae`ORJ#&yX7P$3&-r87pqKkHvZ;M`KP|$(;uP z5mA-H%8QN9+QH0BOk((VukoI<^M+;m{dlx?SXh3PNPw42q%=;2MWy!(f5+6C_s`pz zqK)<=pU0Fus=d8|Mk{a48P=)=&w^Jq)f7*yZ5;KBlp5H41gPGZHvZ9(v2)L=tjx^Y zb5GAKnTEoK3caQDi5M^P2Q;+7$zmX(+%PY!Aim%-y031tkG=w3*sm#AbPjE{bVIsl zH%~U}?Oe_h$3@!>LZM3^8SY04Z`%jD4lS){Xd>2Y3UoP#Ej>L#>?s%>_s^Ou>#K3B z#P+X`5b9U7l7tzrqPmwUBc7&?L#+)#8Ab1=E^@ItRSVeGT82$48X7A`0NrbcI@b%X zST4Su`??G`)e45;(QMa~`HD|0MaIS^^|}|ap0Kb+hl-qPp{mx7*f21VTc1?qw-TCx|3)T zRV5x$aHaeAXj3BA@%h~zPmk*Ob8L4zMHsZ|nW(75&i5cjVN=nWDD`BzGX1zfp|>Hl zyh}X}?z4zKTQJL1Ft9L7vyP`GqK5(h;VM3nADi-sFR_5RLVPI~zR-bC1;*)3M=FK3!Vc|Mo14BXhoC-d~3%79`Fx#!jk<#?2{ zWK0`0jIU&Hj~Ryd@^f?-TiQ}7syL%}4yLfQS(6nKY5XCbXoTHq1FUuEP=cYrJoSks z8+mplSL4^{V(Dsz;?p>rgabyjuv${l@|ZXh+=Dbf*%QOVPIcplO%Y9VSWp;wgTnJk zmWb|WnqV`pT)(}wxQ)9n7r8e-?!F>JSH|xT*BZCAl6@$O1p7wi47@+Z#UQnR{J_03 z+Ru@i_D%Z@vY2S&z@=T7rvw9pJu076j&47$$94`>h2hh&Sn16)ChLEi3sQcAZ(USb z-B=Jf|Mc+k79A0drWw}y4JcPKBQ!%ut2L7bm;H5-94o_r4pY1@c8vRC_@<) zZ5fp!sr-kAx3sl1C%#ULLt#3&9thN5$0jA>Wv@CrHX9oLw{0A>fmqJq-(Se0iR}^0 z^<#+TF@)un;xR$Mnf_PDT;y$(T&EdMaJze(Io<&v0%os~=r%ai$E+B)0d+h;7^3Lt@m>mF}}J zf6F}qQm@tw{QvdSH4_5F)oX3)S=^EgO&+~x-HPz@CuP#wt|`{uWwzi3%fO-%>e}k5 z5_lmP_w+ag?t#o`8&PHHxwlWw33OJCDi^G2chyzpYJlc?R9sw`$t!ZxR*?B7; z#}O8+IgA}|?#JhmxS)Rt;1a(}D0DTdB{~A>#HGx=LVZklK~fU)IWbbmf{ z1Nj41M@ibJC{bh=z=QraZf4#BKwiB-A#e5Kp0*FMt`U#Q9yTnY5nOz zq#kAamE&MW%G`5ft<8L-h~><*AW?lu{hMm=zD@WDcnW<>^5xoPNkZ}T^o+~J2H-Vq zuXshK%r#*^WTrIZVQt}IeKr1&3~(59F8r644Zs7(nB~m#Emv*=na_em!*hLU=2m5< zb<}x}F%cSE@FV9vZ#r*lBbYR9aQAn?!Wlgk4Gtb2e2|bcqVvA<{`0~KpUp&;!1*s^ zqL|3;cJ6uicToiv7KHsdi{AuHo?WM)b(cGu^i0}?rTwqA8LXCv$<>}Bcb;BVm3 zHX*jF#S15fp1n)Sr-{bYq#Ppc1h(sS?zAf9m+oGFB5WjN=U{(o zDZVJkfQ!HN#1i)kkD+fM8z0}=+?4WzL{`NrI~$wxppRLlZ7F6lhR)~q<2$zq>%OU^ z%&AxlDeIc1UopfV)CmL|fio|cByK%NS+|d~q5rY~p77i%ZO5*VU_b0Q=>k(>C&Z|w zkBSOg3jxtOcWClz3Y>1ncDMUxRu%31mflP_r){$wJUpIn%Xfx^gz%5x#|^tvakVd( zu%F^A@ZaL%4hv%A|C)^v){w8*o~C#!N_S9~p68A0$;r-_rn@=aR0bk6@ldmzGw`sb4;L#l)d7EUF_I1xb$aFj^^pu^cZ`iYx#plYU3ZFBfch4($ zb_04&)y;DJdArghEapXCq8%pl1~Jx)^||L#+HXtGbc*xg%CzO|WnNg@Q(jjmEN%B2 zk^`|&-?nB_I+F4Qa1cJ3!QaY}95fyTpMrznB-&Bo&*f7jh|9c^zJqoy8DQDFUN*L- zn{XctPjNc_YSwZYz$7+ks|;qI=nwT4@U==hjTWG69F=^u4aQ|+)3fNB^@~yl?;uT6 z|G1wRX6`0wyVRY$>(I2}@~iRtuO|>y!HcG*bBXmJBK=UAz(l%Wa6n1_AFX8WgGIxp zmQl5YGk;N)=dW#MMS(%;++N9kn=6#vgZmc=38b4pKsz@G&6?FRa*_6w0!z_A(f?H_ z`M}Q4kH&^-WS=&6%~(rIY5p2@38*4?5tJ078=XZLA0NO(dgZle9I{W6cHY+7s+~d= zv)p7YvJKxG6%k_aU>0t5y5>`Hw_*IhZfKTSn-M(RL|3)eI}>Q-Mv zTe?;fLJGpF0EUwlXSwa-=g3_^9@Slr_m+$6SkA{!EhB8!wx3IoV+>|4f_3oe+LJ>| zklISDoq4ZEhEg#BC9C;AM%r|*8P!34uOB`2CJPdW2W&$ zavwyd@o+pX2nYzZxJ3aRK*x5x0KaU^B2BMmxg4m!m1IGUjnSf#DhxoT$<_g%3nOJC z+4QmP95~~ue(>A4$T`ad*t~I%l@IknI>Mtc zGs@UqTiPrHDwAl#iYw2BLs)Hw)_y7hTQgY3?e^0z!CMz3(d}3nOGwMo6 z0=-zzz{hNgZ26xC`z-Q9i@WoK)-bXnZ%py*R4d#%uK?}oOdU)GGF1l>A+R>=7OHq z%}!?Zt>@n-c&l&mL%W38G8{Mv7{czOb}`X9@@h&F6n}I7&!5Ifzt8T`#R>{D(*koR zcMea04{iGAp-d2F*uQ%Gv*T)Gh*6W8XoB^e^z;Tjc_*h)NtRXZChIr0wBNW)^L{n| zk{FgIxX*dZ<%oM)R+hGwCqqUbNiUG{zXyN-s;SUbWaqG*KoRr@yZ+%Dm7r!LMATOz zlzDuVOCy-(y0SKOQ>HBhip=gnmelfn1d7C;^8Sr)X!Tk?jP?WP&(AAwZ*Se*H|u;3 zegnPgD4g(Mrh=PvFqT~KV1EcKW6UoG;3`C9$3WNYM*gAY*+xft!$zNjB!V%-?cl;}J0p z)C44EzPd)#(u{3+eO-qj$F)=R=y^W--1 zgD-lg*^z{Ul7p4k>1lY+sH;|L$Kf&CMw{NX0bs!l^@o(I?_eJnJt@iO8jj3A>g(#d zgb=GcGpf*h-6xjiXk@J@5R^mcBFA6=oin$oY7nGv`3TNM)jRu_3o zqzAM34B^Fapm1N@Qmhyas||tv-YW}MZa#`l8X#^PnixU;htd*&a?G+(B@J8iG}drg zh38>0=qwUn#Ij3DgE7!E&{NaontSXWCv8RaP=`;OJ0H|dEQncfYRNq2T^h@eP=!kf zBrw3Ch6#Nq%z70&q$#f~y}!QK$f?fuLcP%&FzPRUopW42{gDJ8tgWY&7!k7&f`@j; zt@&>LapVuusV+2)w<(f^0Te@pYFFRFFw*B|Pls!rA6+H+JK0Azbj+|IOw-HL$6PZr zM!Jf>fA`B_6sq8rwKdtUMQ`9UR-znu#goFJ)-0XEb780BX0W%{3YN&3m>ThL@jwPa zQDcO6bnu7gVZaIBxQ^LdZu6RW#4fPl{iulxxc`hW;a&%BNJ{J2K?DvG2@kVa3+D4d zNbQX)Jv}b)i3bA{W%EJ2pZZT4+^c4WmcnjDYPntR=&IDu3C@LeG1siyPVN#@zSF5c zTyyLC>W1fO6wt?K#Q&Tma%lNNk}L`V1s$Kwb%lf;x6jnx`~6SN)lBi587H8W2I)G4 z3G@$MhMLBM&9UVj&KNUsY|+Y+DL$6Jqw>^R)0P%>Z)6L6Rv{}WdkK)ohcHz(V(tvXsL2ddo7{m?pKWzZ?65H#(aQQ zuQA{){P&n9L*}YIo8eB_ZZS4Q6cAu_l|Mecv@|yx6`2ehI{r3qt;~6|(IRV=mPjPWzz) zTE2>~%Tr^0uHuWPwgA$OSXl8m2fov`^?RBIgc6I+vOJcS$1;rYF00UtRhen&K`Xf27oDz=(oHL#gNDT{gpik+?d zcm8MD=ugPo&F#0?1+aAf>g(1W6{rGl<%fc*KOx?z$PfK~^%ZbItaQJp1?5{g2os^0 zAR~p4+Mz}cbQHC_JIJi#U|LscxRk*T=xyPYhwwwelOO7nn=$y_es0bD(l6Z^AN^6B zw>7T!An#vvgd*_JtEmzP3IulS@XVXJ2+bAuc+>bInqvW_xBInKSDXd`x$Wy#Rlz`` z3}cC8)b;I?-BgLx2DyIyTJ`n9nI)!zJ>t<1N(6?DFSmU;EdnPiD}}$t7+;H;Gyh{j zRY*5&C20jbPqI?ISC)|O1MbHpR%Q3Q(fcF0e6FZNPP3q0>H=*e+v2iZuO@t14iR_J z^h`QTFT8|ye)WL7n|!E^Rjwtn*^m{C&B7Uko>HJHdQjDeG&J5;&w9kd-I0mK(FlDl zM=41mA|dzRoC}y!f$77gs>hHppK(c`YSfdaw>GHzF69yuXq51I$+{!1ijlv0`hF!jgShB+SMWIeqDwblqP`k-}<8^)M$r zRZTiCn|MR}RCZ_}l%RHKelwJyR<^!nTYV|yj;T@yQxE*lYRn-|C;fh&*^y;7P@tYt zT~BFCucPHgqo6F%qxejYUH|PutK0EU?|3r_mNREUR!T|?3It?RpI6cUoPWxDZyIxk z^^X4ehbt09KsWRU0jZuySES!3P!=!~h*6luQdGN-hW9dnDzdlRueTW&Qp?-S<2c%X zx!aA>UEoJQ8m+C_YSQI6>q%Sk1=bk&8a6l{{952w%^2A)DlXpJ9-j14 zu^DEt$y=zGSY$aLk1>B*N&H8U@qUgwEpnVn7Nwhv=FH z5gsE>6U{sVMSHf2%>M|+09C~tRmJGr@4-)nMa;FqMdop0Mn{a)b93%W=_C0srA{L* zE~beVgW5LLa_LJe+F2=N>U@d^P^K*Xd6mlf)E{+Q!DkuTk6-A0Gh%KjjhvegBys+7 zOx#NR@+ZEBgam6UMJQOfnYnozc@yDm5-xpvk8>vQRZNeGDlrj7$Ub|mD}<1SO-ExT zKZK(Zq|`tMV0*GWFbC^r@;NrPG^kgCfPlE6*+%-|W#DSAXvBEik17?tw|B6#C{_X; zg8$mjSY!vKExa$fr*NgbdGg}KPv-yU77pkN9dMGiqQwKPmm5w_icK;Rj6cyZ5N!N2 zpHBV!z}MT1d%{DH@2-?;TN&8dS*KlV4{|hJcmKUvafWKgo3uJ(zj*L~jb7MDuSqSlY?gV?e=}~m^;o^uB zf9|9Z9AqA8q@#ZPvp&}73ZPT`&uOMZwCP6EGTCv16kQw-B-!tbXfqt$&RN?^_zgsE zTj2hjt*GQC2KCme&1<$} zDOvFmrFG5*H3(D}2o6Xme%Bd&h0(Lt39tgL2ZG=S-0dZR_G@^;&6ty*5w%jGW!Kk7 z$70u)9;TrC<92l$h*f(&?fBw{Zh*ClrG3AT6G<*QY?j#JcOlAn7M{4t;N56zv1PBQ z%33Jzu0wDULZ)ZGDdeuXErwVug|@h*IZtN3GW>hRWaqDf3wcT&<_s}_a=IeoPxanRiLP;sfnm*^Rl~l zWu|H77RQyK{!p`0rxngG1mqrBnam3yj&&yxo=5lLq|N=h5=7{5%Fe?TEv1pF>s=Ex z3gk;>)=XdV8~7`F0$Lh@6njPmg7SKcwF9kG~-vbwU8oRJNOZkw0&{HZ#xEy0s-aN(PN z+1Fhf0YC2}IfArk-#}*Z;~Mb1G=%|L{tQf3fu50p7ni4;-9%V%Ee+Yw* zZi;eMNA!94K7%8GYv-Iz(@uQzFu8rP{e+z?Y90}0-gxCf-UIJk z_p}K?CyJb2gbG}FGV0vg6vUV=f`-_vE`l*942K8!E^Xer^AGm$Xeqwc=XZ|}4a*h| zK)zupW{3kf=`4(r$r<5Qpd8&-Lw|*~rgN9gE$g2%9U^X_Zq0s;Po|_6!Z=oQer&&7 zKGr}=>BYWOr%UGidb+i>uUm8H+eZe3DM-N^vx`QfXuRxkCxA(~sOiURe$g9&^M~Rt#q(spqISA=fG-9Z@Vs%nIXO8Nwf?3srl_n6 z+$(D5;dmVyC^nTGzrVdbboMxNwvHtU&7)#SvGg+Yntck*+@9z1Wh!1-6{iuc+{0*O z!xIZ)C#xsUMKs@DiEV9dwX`^fT8ZW5$VO>d9rQ3kqiJ07gU!Fs9Le*QU_`8l?DYWp}>8cD}tB5rz@LAX)J(azx+s%nW*AGzt70 z=@uX`&=no%ndoupj4fK-2Up;gtI#G4k(stQYn8&AH=_<1t%s7bvKE}i zY>4lL%GfT}Iv*585q6?>hL#f#l6@!g+Sf4)&pWm_xsE<~dU_dy&G2gG$kjD150sGsSLH(aF!GE^& zkM;ed+5crF2JW)+G|N*-QMI+p6-@?>GnZ`3oQM|;L!ysJq9XJcef?yf8>*$fSwqE6 z{qn%*>UhHp_L+mlMY@cq>V?I^=&A}GxsqTYi3)Wd%-r-8Ef^f6VC)0SkJyKu-BrvU z6MQ;A7Im!OhV9G1(#wjUdhE@}`@QQpC}@D6U>A`d3KI-);|vVy|3-Bal2)%@;1&xM zVL#7P{GX^INar|<*)y{v@_lNWn`o~@(*?MIenzR zD9$L_Bma9Km#Z*p6$&AufyJf;D-crEu=xLN$h@XtDkVx@pgFs7SP?-(f%RMkW5m`- z=8j?+-YaLGHkt@&3Bf#~N7=#W7|9}Fa8Y~!-sod}47Sm2h zK}bje>|9;bQ?spVae+b)Ddn3yhV)DmJdTW!9Z3NCQkFYOz=_`$w_Y=nTV*Bq`S~%w zj@zmpQ>yfSX?UsMPY|j;e+9aKPUVo=;d`Ofhb!`BbG26LuBJe{a(R2b+TvM^w}A-# z-}Gc6%8!z*Tw#Xw%p--Cz>mi4mw)iTPKQfn{@JkECwU%b*r%Yq1Wf;&s`D>E!GUb( zA_4!moc_>1D`e1&$RhhaPT-gp#u$RMes~IqSUR5kGQfDi$DL~)He=c*uq*yHbGvw$ zx@6T4elJ*|qKFaX=^|1#Wx=Mg3jQ7~Xe(DX*X$~K4mx4V^ZK+Emm3G@T;p*DD9(43 zn`V3V3rrHqsv}VChUdGBwsE(arBk@??%$3*FtlM4EBVy&k}#9FSkq;5k{0$APJNj= zL7(3N72O@)qct5Kr`m-}FM0!iBlO+2{~_lW@WF~9oK?n&jYoKLdKx+42l)rJTdTeG zLF~9ucxW6_ZC72dtPL7(PsKS8clW3=-(Lf+@X**dLqE%v&2r`JBitgZQAz$JW4bAk zGR5ZkaHri3NB(#u4jFO3J5#+%{XBVcS8KI27M&3)BKcjCIcGex&(cm0^0k*%FTKdq z(}Px4bsO~i3@g7D8P09+#QOnDCCkI!g3kKK`g>pj#1gT(t}J2n2bmAxVgbo!5tx0F&qqVH;q+5XSm8(;_ZpiC-);vok1lkWWxX<8e`-U-|gTfS$(O@}I z3DnfBZhibrfeyOI_>sMis}K&CR|nC)lJMwzB>Wn1W6EJS-t03z=1Tl3F5Ljq`yWL| zJ-tEMI@vA)S6J8>q=ENFC6a?}O;qCjd!mS_8++uFxG>{<{(HUXjcCF(@d!O>nAN-4kQ+uGAbvP8=L z!`;EbehNPAk=e;5@~x}AefP$SyqUR0NvFccDg4B>mb(@Y z+E>}9_I7u&OYZkH3{-$Vds+lsc=&Y$!@L%2n$(Z@uYq#wxx9g~4`>&evJM_?o|15q ztvqch5-Hn+2EM~GiSCS7K1MU7bd*>bV@QbbXU$W@NGKU&`^fJ%;8`k^BgyV=?ijn6 zv1CVkXF(|3y3X%HcR^z2M&p!R*QoC1_U7v5>b|pM-K_88?v;k)misde32d zubxD5<;t6FgYY(@h(h1jeWElBC4-kDMz9$;IQxg)<%l!^qAR|%W5a6^LJm#j_^RXfzW7IW=YS41qE>#&{X;^t# z1sHRR%xgLyHQv}P5pr9XTfd6`95Nf`OQpRH#sfLvF3s=qdN%-@!$4P&wgfSD2 z6|{4MvpBW5%h3Lt*vZ97N}!k>GFKbt#VTN?cc#~%hH4;@Pn$1I)>Oiu+`zYHt_0oj zm|x z3GmdqWQFw-VQ-gRZ5`_N;wF0=JAp>{RE-aP_I0(DQ&&LO(qL52%*LYQj-KTMILCm1 zFws|%7=}mSS(_mR-74?O!f>8e-S+Lh!ca7t3$?Dr79K2Hz6&O|AdxIf#`S!Zi&xLO zEoTEj@0c;DT2JGWq>`^(HY-n?myVZVO?lh>-d!j!>FMF&#H}r15gs#WI+H97%yU6f zD`92l?#I5gx8?rwFc2slD4t&!k23W214QUoP3{+RHgZl@HC*~AZM+q?2GofxqqFCR zIQcl>L~-jP#!-&Eeq!ku9n<814uNWmWdQc4k*+}%j;k8|aCb`|p}~$ST4tb1uUo^r zdmanq$A<1pcDLT5OgeDZ@)BsJb}%tWU9>LEta49GJQPY$VHXG zuzw-Pi6>Lup~0`mW0l4pgo6+gbc*B?(8}iXo)_J9wA}?n+ui>hRr;pgTY2EZ_cWRS zT-RihvU|GK_1KL&9*Gvedx&`4>(<%6DgFW|X}Y&MxS1{9@7K)TRdbzYoN+)yLj_zQ zQHVRZ>8TaZ83W>jI$@#^VqPIzFBC!7y?3f5FX2_X!Utoc9}>8fZl@x^ue~tNKO;M(#D*+X4MaJ0hgB z@{H}=$BZ#PT5}hXM=DOgtIN7h+;n=cM{}&G4q|So__iHzcwYMP5sSy?{hFmOX}n(fz5DyPZjL%b z(GDMiHw8=tMqG%D_CnL0_2O3rR+kE7r^RVUF$;Nib!5DDMV9KA}30iVwgE(~@9tYXTX%kXH{Y%m zMzCQ6Gd9#;*3X*&6>CP!-mkiZnj6Mg>3P2v-rpL$ZO_|A&KP)&-%*-1WnCdWndJph zexK?zK~WzPN(#!JN7_ito3Tn$+kTQY>VXveS+NYewFUmJH zN9o&k*_7K&Tp{Aw_-YkPHki&vk_p2;wKNr03<4iBoi_~x74_EU9sr#R6(C?SN8iV_ z6rOM}7gi4vv^BG}w6(E{4v+2;wME!KNJ;HeIZa$Hn za&INEvMbbj`ZlKHX}sXZtE2XPF|C$`B4500N<~#=;{2Sm-0vd?lSwGFcdNi!lIQUt zV7>yE;8PPn!@&$bRDk^nd)T1r@BQjNPyR}s;xh>vUU z=XP=r|zuk@t6g*)yMGXcj9H0o0Tc%$EpTKo>B|ddv9nh7FLpI626;G77#M z2F0?JeoY5%Q2-efLf{P}3xS0&{H5@WIYR(&Qyd0*JDHEn7yAejJ%LVbPM!01SNB$R zVOpaWHWcRb?!##SJ={sdkuh5PEnzQ@M0e`UJm9I@*uTWX87qSP8hz{MXR)>TbRfBB zsvC`Jbb{T2cr)zVgP-qN$p*|#5|)HCfi7tM)ykB)vz94CKzAzpx!mEMM}-J23Y^dI z$BYqcO{SX5D#>%o%HknTH-(r(zpRi*{uMx=ox_;}EpSql&amsAhp=D-R zx%`4~;C&1%I>tdtJbw3dejaS*QNU#!vb2PDZRZ8WK?nwg02T&z3$u$h21J1t6JOW) z7o@IP4NW6WMZ;OMjc2jriPVA1vT<>ii?ry4^}tE({B)@l>K?IK1X3dv5h#Z6I-{@- z>|jQFf}<*DCYAfoJT1e67hhBQiKUm!tSsA$n2n{F$4g4!iogk;vt0!p>1S#IVO9DP zlRWU=IkXzH6cy3h8iFuFESo7^vxi4KE4L7vmVI=-#ZPI4l*CSqhli*50pbA)Kn~OC zwV~_fN}XFquy+4}dg&z6^;0+7hUg!j~9SL83`U1rR+DCJ;4b zJro#-XW!(p1Pyy&9R~yf1PTP)547vg+y7HllRM{3@=51m?p8(vW& z-^kTcmTl`FHqMJHvz4S@G}XQd)bDp#BfkIO4C2gc;mktv^ZmHLaP4eZv16U%kmq8_ zqfJt^X5SB)i7677{Jt^H8hJ*8A-b(IOMU9I49D#R5h7{63C7QXWkdCC0U6BX1 zFgO|P*@byU)fg%5&)VAxU!2)?xL!!*wzzo~(xrBT*L`27(X4ERUdALU;hWGnM^U>Zh zA?@LS#bVE%`!fh>;OW`fXMFr$w16ZIXO!?Y;GD14*=#;yrDF!x&tPh>*Q*EWH78Ny85F;h=|&z%a6 z%te_(Y{>|?2qR|o%T7p2a>_5KIJi+1lq|)Kt@A@m=2O$cc~o(^C`l4`3o#$zD9fF; zzN>l7?h}W^WDJ-oNs0P6jdVUsiZ?kzFu+~r1Ji>Ii_X2BlRAqv8jff@WxsWrVH!Ai zI8jj%$PWMAv7u<0=xsE6N5wiV3R_F-m7AsPwzXPf<8Q8}u0AsF6&X$KZaO3A$uCbY zXD?P8>35b89scRZ=`1a#>+5fg!0)YmTsrthe6H#uN+w$J_xtxxcb4#U*AM${m@US} zqsI+5@I6liHu83y0w=o}kwqqAkYM3!W=$)#TU@vw>Lp5^A7u%P&!zS}?8aPVu5k!( z->+?TfnNbO-3pmcM~K%QjIukI7ic;#?-;3?rbI-H+>~V_XQM}=v@W@@2vBwwmr;_@ zeJ`8Bg(Hh$C@NC}GZ(g2HQ-(ZAo3}Bf}-*HN}>;h)f zV`FFFraQ>&{(h%nH})L<`q6b|I51Q+JT$6~(nJLOXR}N1JWMMv7U3FM5%0c+T8Z>wV`+>J$eG*;4V8dX-Q{3&uy*9atawPQu;#(Iz#uc}7yx+RR!2@Or z?c;mv=}(jhw-?td+I+q`yP$Z)ne|%aI-jJf zUcP(3415S9KO<9+%p-cehj)AW4d`B4c(dzEwFN27=~PT2wNC2e&X9?NRa z$|zu{+$2gExHNEu@pt>%$31#X_@6&>X+^)|603476n5%_qojB0y)UtNT+C{fp$dof zko2Gk0d=92s!Xlc3sxDVRta&&!N9-}c-;ExBuQj*$WD`@LcyX6*+*;-_Mi%hBoU8I z2Yj*rvK!W{w7NPux^r_}xjKsrx->4HKlN+n zuF>PoLX|^RGTQrYOjTTIhg0X(@#=8!*LsM>SXPx)Z8gRh4w5sybeUqjPXuvJl0u|H zz|fF-)%Y*LOd(*=aLklJ@6uFgiq#>d^z z)<26yr!_gXUh^;m7-txt_|1pj#2G#Og_J#m&whK9f&)>4d>S~hCG5#t%qOGWO}D{_ zjY@Ef_JF=f*6X{`OO#8NOb7~G3KGqip*k@Qv%O@UY1Z*6- zhU-*CrQ%(E_3pPi*!8e0@p=;+X9f~q7Y)$zc>S7S81PY&-7qrX$f$%&SPcTsDG$uQIym&0iAX)g+BmH zffz!;#l=le;yNukr7UY7A=t{A%4BgRIft81AjH6!GDU8*pQ_(y zHE|a|25EiO`&!ss+g7GoJcGH5ZG=De)8W>n5!XbzP@x824G1a5qQ-X93rj{-_I(J* z@KzQ!9#&%xcA4E}U1i4laDWI4c`tDhIDy9W^>-^7l{_e7IHWeo?nU&CLA3w^il0T0E zvDI&%zcd{_j{V8x2?GxDDM^wsc^zQcO(dWA>)FEjW$Zq-I@Z&}+0BfTkyf@uE;=eY zYnYoHF9Dct+Fs7GA9+HBI7M+uYbLf?#B zWUuRaH$c|P+PZ~6%fYPKXXlwTB<9rJHb$lxJ_3fcEn1Kj*Sfn0k}HkNd%7b?5?f(t zCzu#PpALGyD1~FsXg?F!SoF*e`nEa}-7yjdE~$hwoJrBiJxlUQRUo zN_rmElR+1k<7=6J1jjYi@jgBiPFU+<6W*<6s8D)j5l( zbu2dAD48;r>k5g&9;QgGR8~x`2IC_|3YX}?T^A{yx`)9%2Vm@=glkkHS8nxf78enfSCn)c6o4Yl@aj5Ctx%Mh(m)20j8cpBtyt519Z4IDM7lLUTkKLoFv;E zz7oZN zxx_a?W%sPp6@aqx0w~nws8Ip}f)p4hghtjZ9B~BvXtn6)d{CzOUl56=hRZ=p7;+kVfbPA;q~ul+se&}K^bO**$j917)C>t>w3b?>t6;Bvg@u`ul{6Kz(t9b@ zAdSk`8X;>|s{NhodGA3EOQgEJhgtWlBC?iSGxdo*{b66UV1A@(`_NdoLp1GGrD zXnZ1aE)_+~osetlnl8R&utdQ}gE&%Uht|h<(r>RPzCO8WSSqRsZmc}{b@?=gYP>pL zhP5BvMBw1>*!@if{QyBiNn$sOYU{4IAHih(Edm|}pliWjoUs3Dy1Hl?Ogkr8n4zfV z8_X6bJ zC6Om^9yo&aa6tR{QN+Edv@ZQ_GJ{Q5u>b+)Us5u>nC)nCx7DX%RE1i*vp@tVqR<_p zrn`an6=tc5;Ku!f27#+|o_3=tCY;BaJ>ly%okR5YL}<^b>M zW+O-_@+^h~(3YtJ&1-+()UYP9 z?PcVLlZiLAim-5^xG_iP8D#w0<)yvUiHk=JD_g_j^4P)EfGz&*-5n-vbpegj=MaPS zjYhVE%(I{>O4<T|N#Lmk4C}pbI5Bc<% zdsrNMs0)!k{AY)i2J+2e=*KTEQE*EP_%*I!1VpnwJk=jRhk;p8q}d>;k%gsDr zB1Guh-QTAm`-nHuh}rQO8Yje(XK>M!UZ5}u&*#gX{FsUFdVZtm@9nN}@wdp63^6Jp8l7#O=fI8Ux#R?Eu#6x{Ws?6TM|evm%pGyrU8C zCk7t3&!{SxgAT7_jD4G9b3J0-?HZ9Gnh=UVCc6DZqm85$uo~QEBqgA`u=heip z?%l?L+ELrsIKS*sNcOwEy7?!+R9Ln_cCD;NQE;QI&7&Az*OK(iE8{~=X|2$V*NSVj zs%oc42brb56zymNvzBIQiNE(mZ|{$>eZ+-B*@GMo^psS!EZNY(9R=_pG;Q^wa;5o_ zvlHhJQ1T#Tq4yq6-z!fLgzo=?k9N>%i;Na+Sw0jY7$On8)MGSNQ!`U&J;W4uDQ-KL z2(J)bB$@WiYFZk5-YK7owKLbUNkvelf20)!(AemhPrSI4A62WhfRWBpjdw&Hej4Ib@&`S$2iBce&VuZeKK36$JDv|R^bh#g{YQL|D~oQ zy`s}kQND^MXKtMewW^1pDWoIO0d*Z6mBjz_xixe*j}a|4|2W0<)pNTL42e;(1fqch zOr)?nUhg(CMrbu>kjV^Dxy`uVd1}a*Tkx28Xy4Yu%iON1X<=fil=$@SVYpJM)Vm_^ zH27vYm*2-Z{~*U>d)&G+9sI*60(>)KBw|*(RDl(aNYSZ;**AT(W0Zj*O8{MK%381v zavX#8j{;#3-QlzT+vDNmYY~8IZ)hbxL_aWt2xuq~%>4?W3pwSVLIU69p6LuAV<3Oj z6lZ|ygFyX#Xn`UI3+LI3^MyB-+0;Zb&9Jh`C>j0Z9XYyrc810HU@M6nK80I}YYT7V zpf1EUhuoS~5lx!|y${!J91w8E{~RBz-5ZN7ZE56HoH08G3eUZkV35gh0oe>UkmO;U zwb8VqeIYgR<29_2TD9;8QjKKmN69knj1KgXqMvoxrL%B;FtTq;r#RO|Rj2g_ZR$%J zGKM8J&Pp$u!`I)^77(PfAg3Zw?Y;15^B&wds#JKO-xIEtf^JK{?$>}#NbI@_awXN;t$BTkC6MelLd=zEJi#@I0p{A8R9y%jD znGv(LymK2L8S)^1=uHMb1H)OU{(CU;{6R$lL+ZS4@tYZmCd~AujIgNbz`2}jm3qVW zc5tNP$ZGrQJ?@ziL&SWF>WQM2JE>RYv-ZGiRJNxZj#Bi&WR}_md7|jd$ioHT=S5!~ zSB2Ra9r)TEEj`!st_#LQm?@tYkUp$i^k{+_E87BVA zOhCgOLrBABWZB%!1|3Y5tt#_qIv&F`yVe_1GyAdU5jlEv{qW?%t>eX>Wi~#8d#mHt z>ZQ9;ivLV)c*!)ypTmn-1 z@5CEPtxpuxqrYgoq3d0$31g69M!ll$dS6zTQHX9wsoE5Fnq}P~nA=9WpwIftZsn>c zCZsiF^e)xKLnpYRmv!>zIa%UfN?nWXMxOCA%g=cGpZAt!%h6_}Szlwn4&re6KJ(16 z5e1Q&6K{zti{5#3aHlcm=?|q@&XRivG?ndeoRl_La*T7e_Egdrv1MTR9#hW)WTTcJ zLKm!$9iNrn47NVrS%m)z^i4;9 z+a1f;I?fOFaR>r7?t8!watJbH)NNwo7?|rR&gfqP2>O1}gE$Jib2c^);ud*y^&L=c zb-xy1H0&0BPd+?M@*OO6%havPb#-lU9f19R;{)&nK=vsmV}3-9DJ03oP+dR0o>e`v z7kxbTsS$(!BewPi@p@}rIJukiQnQh_Wn(iI=>gsGbLi&O$74jqf-Y|Zx3#bt9b$ZF zDRQGkQ$!0UVC2*H=)Uzk0-XUbgvN^|u(z_xR8TqSYIlAN8z!q8kHWBvz`G5@KX zj?QMBu0lj4vFp)mB@P;z0Z{OJr-eKLCQp`ZO3Pj)_awk;$G_$CYpr|+ZD zTw4>SfB+qX-P8#BD4IrP84nGx{)F)mbGXzjy+*u~7_Z@QOt_tB%ANthyFUyl*Cy5p zXzs_(kG}J<@iW4ABblT0?VG1>s6?~rv#@~}UC)JBE_L+kCs3LM==rwuVd|~v@blab z;ot+Hg9+fBfSvu)xs!@{rvy^(jt{NSe8AyUs7Qj!RC$0YI&0Z?4ajk7b5+5UIyi0t zU-RKHGrcUGywc%_AMGy_S{;pN`czBZ4JAFSy85hicblc4-XF$=SNm*TVV0I9`6=Ke6U9%3&DuU zUTyhRwN!E8Pq>uL13K1wQhHcS$K|6-#YNRK3M(`_eDrO7+t#S|?f<3mC~#S2=u^iQ zNz>FZhTM%)^U8G_#%kge2v9lse8 zPowjQeFFK@(k}%-z22K{-ku-e!PVJHfmkH~x_Sq_6iR4Qqkav<%2)zETSn3=<5PEL z&8GQ?(MrjgpB|Z^7mYh@1rRc@8K|sehl_NAdY#UIjntP{AKy*WP5be!)fdORMGMP1 zHlIeP$?Ltyeh4yi$*H98RDwzYg%H_`WQV;!dP~n#tf&`;YO~UlxvH#lhQ28d#$;c< zycHCnCy+u4=Y9PWCs2Di<)59N?)^*b-;~|vH?ZnqV`@Fca|cgW87V2b&oe0Vzru~^ zQrf%d3zUjZIBb?1_Yxnt6yr(I|ITV|NYFtq*AO;c5sHppEUD|b)~scbx-v#w=CYHL zW_yeRzQ6>8SyNs)*C|9%h$6mpn#N)Q{l$NggPhbLmReeY_wEkd5%_)xAPz)<$E1K)YS-8*_B@gZ_&V8tOe`tzgV8&*tgLGpG;cK}BWkRB@Zyii--g#)pxFQg4v${Qj)Ft@B$QHn#4gG9RPH4%9j@`N z2CazmmU%q34@hnm!uV@P&J}AVJj}KgZAvRKb<}gJ`d_Qnt0T{9UCZDpUHnAzwtlGM zREvZ82a%F8E%oen2Tc7S$J)LCq#pq$pCU-UOlCd2OuTGip~evXCj&e%kv3@FY)yN$ zt;xc`<`7BA>MCfc2xAiI!(f4h`2G3i8tVuCp@`3GFFTFf;Bxh>X>nk`qj@+;q3u?VzYPE)Wb~i&u{WG&|gKl?s_?><&RMD7v zFu7B`U_L}ND(hc`vvpKfF#oUaj$gYIiS%vkaxwVQ zrUGIA$cBwP81sNN>mO3Tvt{Iz+xS{qwD`Q-pEWl>`Ffgh zKwPwP>xN$EA;pNKp3LRfx{^>!ZT)_UrqhFn#iM`fR|Bl_XJM@oJSHN-omgpMV!I@c==5+t#09qpI%04uHx0SbZqGp zpntY7UdGnSwk84)vEf)gb$zM#vzROp;E>~=v}X6sy1ANI;{m6*-2J8@p&_K$dp$RL z6y$le;{ZuCL&nFRC@l(hN@)y547V!%q+Wd(b~my-eQg zXt4AMUu;&ACp&33ZaPck28Si7c!<8kRkh%em4WNg96hRmN--Kz9D za%!lA6{;w?6o_L}oj9|8C;SHbytqDff>kq^m}u}Ky^BHW*|Hprj9+1&dg~Xkmcf$in zoKZj+!y3hC&|odtGuTS3OoJy9AV*6lRMw8$(Vy$4phWtfF&D(Xi69GcFZ1BgbNnLz z^?MZB=;*qD$$^R0iOe9}ksD7?{RiHkBW)7Ze*G%Y8TekfHOi~YvyyewFc5(i?Ob?> zv4eG*6(K&tU7Z5r7`x_s_^f=zB{ku?C!}8({SZMfwY}Q!?Vv!?h#^8Dn#z`6?%tdO zvOcccf5-~fp&)cFM)V!!cj&x$ypZ1{ATW&8KtKirP zMtrOVPq8pTL9``}m4ALCrW&K0EoNiSthhf}zOHrb;k>9e#3JWqZr{Fv3+(xRuBi6W z#LY{cMcKYrJ^1ssTQNly9CkfBJS3V6TS zh*&^&Kt%a38PaiU$<-N*Vc7XlqBSE6H0te-rb7Nu1uZ=_)s2ZYl{xiZ3j&o_B&sf*9PO-Ur@}2hA`P=T*mWppGsQm zong+Q3#(43@dZ#%r8MP2^EKidEROc0S)G`_bKtpi&lKZ7=!p8hw#FfLq^qpN&g5A= zKDJYgZ zGWE6bNw&oO)Zr;s#~<}JFzI`~8lOaHpFP;C83W!<91WPiJ;1(2yXG4&$_w}Xc;XDe zNSanO@!1l0SwHX7ymwQN5Uj^H*bEA+mmqq#EWqI4ec(r_-J1cWcbq;JIlp3~-OY?M zaJkZNAprmK60y1N2nRpryV8@9iig^gTQz>on(oSW?PSQ;FUT-*h^Ky`Zrv(ka3m?D z%={!HdJ7D*O*BcY;7SNNUld&BSx&|8k`~jh4%MYpuTE1<3&|n*|kWfk2Tx68L2P-nw*f38Hv6rXihs; zn%?(vR(`2g0-$?tl(aqE8Pv>oyzIw$;}c#TQI$U1oyevjjsF|535fKC!W32(9-p`} z{7WPsx7`&Eu{s_<=lDYXCD-C-h|@rZ;X?-4UK$}rCDBk4=cc9D@-rg#`vn<$s0pBp0#N0+Tox-OKQ)xPSZvIJqRNZ5+y|3F5O65yF;#XeFQSgDMtO@iLLdp*)Af}xG(qaC1p_f#MP@m1 zPHPHT&nKyFm>s z&1q&e4AHNHfAEZd6OOKgn|wL$oc@KyollhQR;e3oe+I+$L!bm8SsrIW?YGPkrCIJf z%E#D<=&mR71|kaky2C>Rnbp1ZuqT6hY8&snR!b|gxrrd0uzrak?fkHtx4qCyYI>=B zu`^V9PmgtzCX+j_PlFM@KFpoZj39W7e&d5FPm2kB^L`rOrk~Q-^#4l%@e1cp@-h}0 z$VX>pX4Z-ULmdcC|MY;)tF>sJri;bKitJf>FJ~g0==YZeCNNWoF_<(IMiPC|?kK-( z98eBli}i|)j>n_^Uz7f~FLp%AaUaGiX~SbJF*Z89OJml zlCbu=>0)#gd=O*4wP*7FXflP$yzqN^fGHgJH>Ih%{-tNRy9qt~K1N#~U#Ch=idK6e87fCyA=X&4J?2xwI~nmr~ll}2jWicPME&`P0EtxDZ%Gf{n@~(L!pFET_;iQ zFV^gjWrIb0zZ7*;=8~WBy2?2zXVCs$GpvO`?9v#ZB%`b|0y#s zn0@EZ*yESkO)rVmKSZvC_7jG_oHjbDIsXqMR1FRyU|lgf%C`pnAL`HGZq`V0;ii|Fe@_@Ni$;*;5$VDqA7~jO zWjn;;A^iHcp!rBx-ra}bqJ)gkeuEd_0|r@DPFNK7G_7r|0A7OBL9)+(d-_W9-7vq< zfJ-tX@Ma9o^=^y^`M--(s4`8muo9<@t=VwijlO)=NA~~r3-c*6Iu`2rWfnrOjYbR%S9^0ar&MLs5M~OB9W`ZV?oSLlH;w)03aA15;y>vN`ovoy(6QwYCRxS{4d7ba_UiK*bz`A2*@Q-Fel5 zH{MRE=iBAE*OjP69vn2r%ACb%d&e#_AOMwF&Fl1e9@n7mj?e2h%>b*N?EE^#U5S^K zZ#KkILi7sqbuPWEfaNDRICzR|WKDmw;W(U4m}-fls+tOq?B|kV#YttP4S9!rVsDq{ zA3sINM98Aua9s>qgCJo+S-_b2N8=!*z3^9z)T`OE8LlbP!G)i&RRjwUvc244aX^h!I0ckP==V-Jj&F0|jbIj7Y@x zgazv~dYm>i^CA9J@@JIG2CJrsNGW)^SLeO!Be(Z1^NS{~T{sX~A?oDDrY7K1-)HdV zG9~k`_g>i9*yrYEgAavXU*AFsOSVLgwt9es!_Wyx8rauvT{?Y2!utcQ1t@45^9)(( zC_4)a5;YKeRL9`~K%7&shU_x~#G_-it@%k#i? zDY*7v{-C3ygW^VxeU_uW_LGEwnx2x*&G)08tRc+Nq64W3tqN76vYKPnWYMxbO35$C z^#V4&^KVhB+jH97X$w|IDTBg;8F&l1ILPFa>C?6 zB9|m7%Gpv&Xuo0qL}YYKWFe&_W@X~A$&2gRO1+U%9C6s{VL_Ufw3xusyCW`Y3*w*Q zuM))S@^Yii3;m#5x{%N7B2o-rf$!|;yXi+~helo=%Www>Cz5x)E@8z5tD9ppUf$F+ zCuvGp9g=aP7F3^UokqnxmM}s(R@5$1LgI#8p~Z6O&LjJdW6McndELsHHGAgj-W+eG z9e1rE4Z$yeXopQfyh<-*F?DtGCA+SKF~PFwdcf#JG%o*}o+5ENcsFDi+0J=zA!TW2 zW#^{5Kdn4Fk0E=yQ}>qR&?RK`MYXrsA(NKJSc-zup91GfE?p6tj)}z->yVR9b z6bl7hO3BlD>>U$=Z7s`}Ca0eO*FGVlc!{J)F-*=Tw(U80I-x)wpup}eL3638Eo^OV zY;E~mN{!6}sOd*kN&<#mKvp4pkd5v|=^jO%eV7^mR`QI+M?gXHYhwC2gN)F5^->!2lLVYDzs|0F^c6dkw@{kJQvTvTvQ+ zxq^(&5!i+Vr^IGZ0z@wf@~#FgdSGz_v7$|0Fh+l*dZcif4SrEWReDRuf~;QsXi0|^ z_nA&dnGTDSR!x#TBua#OK^U=eLB1LUI&iP$1B-v$!_Mw1dar4-I=&q|Y0pK|+s^5m z4FOZu&FK2e%0YKLU(DC;FZ#%gFjx=>U{IieeuDow?c{+t#k1;`iI(Bg+ug+Ru%8Po zIVx#}`e!|NSBP@e5=>Eg=}GY>*fjmmoM8Xu=Xr>7#ga!b{$Ub24ERLYnSDkZ#D8b! zw=??_MEcQ^EUcXM6jrgaMQv_d9dfpSgucDaFaH#2Gab2Fs1gewy8$+hVH2J&m^xXq zM4A8YR!N$?uKD|;{CggqR@3G=(0o8Py%+~VDtC;;@_v+WpCXw}bCzwZ@m(*Hz_kSQ zZN>2d7fC!SR8r_hpBW>2(tMigCIy~B2*LbjHaR&A{7@L9{0tzxnqvJvC!nGxpxTdX zE^Ds5lD)HoIyK`({4mex)abS+3WUej9y*_Z$36uQ@$Rlha&No`b#rmWr{}e1#2O=a zQW2R8*o2IWfGkn}PbQlku@|N^#gVUCX0lXU8AA^hNOX;1vr;o2c;O%TU({eG*8Ler zwZtOBwQCTc<0}TMv7qojvfD8e!40^amv#?x%yQ5^9L9fV)%jJR;J{w!<^}&BHEN9n zni*Bdw1-uxA$1Tf8?5bb)s$aQV)BhCzzQ+iQrd(S%i&Y=N}h#>v+=Ao`wrC0chxeg zh+a0H{5kUm9J)%-kM8dr#dDV0Z8Qsh2eqdk9v_#Rmr`B67LHv?^OfZXdS3jDl*n%B zNR+z~fdFV89&U>aa=>oL?WYHZPC_DOpL$+qYGzj#+H-d)$w(=ql)-Wd^*~&__()9p z97>+NIN+>1d90Hl}CB3++VWzsII1_whG0GO(#S5;`A_sv24y-DWlDE zHURFVG;4Xcpy#u;G9%TDd=>kvN=7}B#Pw^1;(=HC%*KLU9<3meVEUwKYwOa}q!y8y z*K?5^m-a;FMOXOBsh@6Ds>!Hr{l-_;>(4JH{Ha`lp7#0>uQMe28HJv$p472w+fd(T zSoyOkux>-D-d|`cX&&yHbT{6n&x3wKEb(jDxiQ3SpmeR>X+byHX<2D)aRk%ssCGVV zdD>n0tgNkhU+CSxC%Da6GZPB9Y8TCIL3IyTtJ7|Hy~$j+?v^9fHD0XhDyTBCG6n@Y z4K_h;IJT_1y+2OO>)BOss!p%Z$B?*wKNZIYGGy5#Mk6&DGi;oOgytFat9q2z7)x)x zTH5ka$jf&Vm2MC1C&&99x0ecd>7eSqj}Hr%OqWRX3wq=LA!lq+9wiv@?Io+NOg+}@V*~5<8{j!(h5Q@<=1%IIU>ZAz`VP=-#ge(#iO>c zvq3_Db9Qp-+gMRBx3#Y9Qvc|sVYplcNRzXCMb&3cr;NBpx~$^Uv%-h=Rr9I8J=Fiu z-~AyD6==Yo9tjr_aUD4^m&KAU4O9nAUb{B{hKNugH;cj1qt!zaPO6o=6+;4Zi_p+_ zBqr(U@rk$d-5~`&a@;gjET~D(E|oSeZG2zuedlwwD#d6D0N{zfiylXMbhZ%8C61)mP9e6($NFfVr6q&iP5RV&0m4 zup-=uIUOu-Q+h6avs!=UiN{PHEtz3-axsGl4ekl-eY1Nr%#d`u69zBW3JtFRH*|`} zB_B+{;mOfVFqo>2xYVZI}bZim7&)vw}W5ZQ5ppq$b4B8RN`sI$@U%uOzxq#_+ z*bA|?wzfV5ZySkzki5M8R75fj;y!-8I&Jf~rX*rA3}0{;V2@)9zVGJd+9D$bLb7sJ zuVw(bw5$Ri4we~Prp41KShx3#!S`iS zMGl{fq zY=5or_U=A7D0mac(Zy-4(I_)@XwL>v8OW*|XInCJB!ShWKVlI!N9_)ME^s>9GxL0zx7IC>GG)6*|Ax-OaT-K-S(s!ft})m+*mpV+ zy^GKo7#Lb!Q;Z^qamyf~ARTpDY$|Lb3`ES`4|lDu?(Z5qFzg5~nD)}9VF0resbX(u zJ$7PZ6gl>-JA3$@KAkW``8{bjBC^2x!m+$TJQMf?UP!>0mKAFWuh9m~0!qo#$CZjl zaei&??fOEmacBG<-LZe^xQ@rS=`+XT=LAx!2+6fHOQ|jyY1wjqjqF+?$U(vGIx65m z6IUOqg-*dA<1rtFWW+)Uet}nF|4FM=BVDy{F}!Tlk;fiL6dlj5Ym0YCs9tLwE~DuM z`Vn2uaoObX?e&+B3PmZaW%L=75=iU{@=p@kaH5BeYb%ClSkI33h8+!5)Kquq#c@bFw0&FZ@@Lpp5#u1t8Uf!H#XlRI) z>_Sk`ic|98M7R#VXT_1`TsU>$`uCZm2)GE%3@xAQnLy|8+mQkqd>eeF8M$|#{fj{G zK+WiTMYqb?06-9MLO=ZdI@SjOPhZPEU&;n$5-(F{c zpzqawU<4J|V_F9kel2T$6pLZLKA-Lg@N&)XegK{VPvc?X48*+VNMRC9_* z7hNwog%&_is^iId8^&gL@Jk!rlLRAE;&=>UK=?TEeN(BLd4Ya3<4rVJpg=6gcd=ae+pS-r4qh?h5>ijcc6w(%o*a?=lG3sW zFbLf!Jo4{4Elb8JXPM%d=r56WIqYe;s{`r4y?!<7+aOGc%l@;`B|vf4eQ&%Y`%&?5 z+UafZV^&S%gdMYhks@7v@VKd*RTp-)>Y&RWGgg$v8Dg+*)q-U`a1xdEkxQKZ8sV@&K=fk_xK9`m{~5vjFXE#AAx!#ToL*3a zelWbugU!t*S3VGt5<$SkLIed}!fhstfs`b}#asx&cTO3qSgUAStvIaR%O1?9Pn^|{ z%JQ6L#H_ExESOXjsH78*2v1?)TPu78qm1C)Eg7N#jW;8ppx|-~?h8){MWQY{%Kmtn z)Xb`TSn_p!@9^!sIr9dC!$M=E)R*u6?k5Nu2nGd-@ZbBw=AdG?8}#|Qb(@6V+pCXt z7m`OuXJ=#17ns)W#wmw7qs<8r?>njfq^@APF=4Hol}2R3A*G?2qtTfXQgN@fQ&jvUdh-CeF~g=bnDn-~k)B(IgcK}W^m6dJE=j zODW6JK68Z9KdM3OQUOy*^udub3>MMu;o;%#?l(PbX;pHX4tZ{7USinzav7bI%}squ z+SKHfBt#@c=wOI~pM~~#Tx9)Z!hyoWR*5J=3st&Z+5mvmGX~zEQ>`P;366%fYHx4Q zqh9}vuEP9udE})xhr64Gx;mC4 z1Q&Iy!?PV7HLW7W62pUE^q#KRLgM+;#)PA`t<%2_ZomV;q6muf<)+;pySFypuG~U) zNyFssy{?yWt6DC#M;KC4(NZasN2Yw?Wh7(_c&cFohDImKsw&(ZTr{fP{aHmVodb3r z^#opNgv>uW-(cZU_j!%J5NWiO|0oCRt0oJV%E@>^6DlrhD`ITAbRD!2@aNQ9BDM9{u7@LUoarJ$!_f) z<(XDW69XBm`XbTWYQ75PCGy1bWMVfL;PjB`>gpQY5*(vF7%YYPJJ$&b7=E@4I&pM1 zPm3KIF=yyx>kM{s-w*h9_82pv2tf-7VDWIU(-My@XSKNQEg!wkG(&w{$`KY`NMpLg z(#pynV-euIzuM(a=CHKA3IRrLs94O#S&_=y#eA4gjDfr5Gc#A}%5pwsqemdO&iRxv zR#i6vokwD6vBN0DlASs^0j+xL>GDern7oATgq+Hp*?Q%hVw{Uy@<85TU~1Uo&E5v? zg+mTH1gS~jFkQ+l+w!7 zLJ=Y%Az@3kLQO1Y!Rh(ru*~WxL3=NL}|4O2%{W6|sxB7H`#504> zi73{|E7X*ecB0JNbg^2gS~lt9mV(o~oT1qT(v_;~Jxog53^n;k9C$Dy<;$i+iQ(gP zm>Iu?;)e8aKkphe6&-^6=KYq9pAC~Y5Hf(x&vH1~5;_qxkslgMFQa?3<0lP3-& zP%>><6*3EfvLxsagYQe*n_sp+-2mNeEjMeI8~Zv=uIR#rlTfJ8VtptmNKFLm^>AL` zGw{2XPWlR_|mDqU*c=dMzu|aI7xJ7%1@X(H_bjBvG z=#SKxRivcc{qk@|_z}5ieedZDsOoIw=Vs6FFxKj@z1w(r*D0Er(GlaQ9&=EvsdN6x-3wP?{pnxuyjG9uI<`Q8AC z5iX&jpDallR#>UXV%b9@CUhK{LBs}qcOkR&v)?zr^!cV};YScap7l{9^kD0$+}~cW z-pyBDF)M2+wb|})$E%Z~Mjltrv9YlO83Al+8MrQvBqbBRUIn&+yREIRA)KK&Znd<3T)n^$RjA?;VB4;; zp*+I@4K(k?g@G2RD4YgUn`2ENUxylrQ^~Pv-9`l)FP|AxAya|!J1k`%qm#n-yYCl9 z$~ad>e|~_TgTmGEU0EM-UwO2tv9htZjko$YbzuHg-mfn527Di3Fuu=ek12f&dp*RL z7=wZWxYx*zV-a}I8sBOKSzPjoCO<=Nu?b$$^&pk=v#LUo6A=3e{y;U`oH zla6gTCb!eh)C9OWaB+1$e{-)Y%RFI$og}4|{%%FU#nv04|4y@`bcr%G zUkC5tXk2RQLOy9@Q|v=;0el@x-LNz>FEg)&3u^Dw;i36J55hCX?u1*B93Af5XZFnT zE&D&Xl`|zOm5a_ddYxF{qoU)9V19fl`rcTmTA~c(EePW$-I*L+bL!EI5F&*t?GM_N zl0poyHWI7iXo&NPC$qUY+}+|xhg+_kA|oTbgZPE?h*tb%c+$Q;^*e%V{FYnA5L3b- zc{|=z3*iu{S`ZtL@hImqa&Uxehj8xL`mUOuBw5hkty|gd^?v%qFG84Tp{_+DQQK9u z@tAyedMf=sO%eo*2rx2T>dp$=)dh;a6V;@53qgi5rm=Bs#d^8*NMRp=n2?o=;+Pyaw2uj?+<=FXg~!50@pPufvf+91;(cjz z<}ODrD9%Cfw>egbgwfBthP!KBfV1^2+K=aN2-j%9G@EiWdrr|%h(ZZlo}%LB=4v&Y z@nc4WxF)RMP(p}wE_n_J#5mF9C+e#A0<|bYK+ZGfK8C+V&>uTDXCjN+iTVI-F#a<( z`mkvxKY+^-zs=T-Zxho|ut#vN_BiL9phH(rSv|>xHL{W^t>0Fi6>qRbR@)5oAf*t) za`HDG2G0%Ur;?s~q+5Z9H?CyGxs@3$4PA)^>Fzb}Z7$iWh18TJoQDC#*GbT1MRZ=4 z#cCfBoL2}aNJRlw;5_?u?b}seQkmzCHI`#BY0N};$$}7HC0?SOqDQ*`+9>MO6L0rOjYPOm$dws3_31 zo4*u&&7Y5oj>#V3D!@}JojVT50<*lilK}loKZV!M5pavY409slA4ZUTe5R^tNKh3g z`F~?s*tuQgy@djadxTtUT)o9GWVlF#GTN%w+k800*FAT1FJuA^A1}>)H`kpZuwVQ2q#x+#70KrO zz?f%5xPiai;dT)4xFGTL^z={lO9(mPs1$H~9LjOKKfHSmD~7Q=#_G{$+#kKaM`v6&Y!xj>m`XrX|$$>io^@yQXBrg`MqT{We@Fjp=aGG5K?34 zez48j=Y`M3ejXo7(s|+?e^k z&=wO@-XEz)=2Jz-zuTWfACt|6PNZ+9_vEnf3OrUJxpp*+ZtvEc?)#h6rd`2rvvdx1 zGt%ytgr}NhWo75AJZirWzs>-P`ri$K9PDxr-y@8-x^+rbE<;1c!)7t{F5K}0mSuyc zDtTlMzRhHP6)S#yCId)~f(yeR0h-CNMrr}B?P$x(HR!8y!m=Vdl|Tj!c}%NQX|DLiJFzyB3#C_=6H+-=p0IRhT=u zQ*L=0PK5kB1lv7IB-IDe&ybJPl2_2IF`SD4x+kp&ARvnvU*rfm$ z6Nl^XRS`izsv*DT@Z08qfr5j6fWcrPARwH6hi2{aM$1#+$|e-2@u@fosGK$cefxL=kD{Jd*07i z_5QrNcg?C*y?Ryks-9!^m}7RY2qgunkH|#GFfcG5Wu(PbU|`;jLEH9-@1b{UqWT{& zFto=q;-YFEnWvdnj;h*jLmS?I+-)|fKbfSDqZoC!#e5w6(q`3KOskr9BsVVi6Rc74 z%e+K}A*tqCCr4VHW-Utgh&8I_wFh-34@vbvC~Jf#$l5Buk;X)_AMnXN=(>|57?pK zGDbLE8`=V3fq4IzTNXu|*>%yMHT7NK9ywaZ_>QCb0p9lyps)1BDkVl{pVw$jRj#ZZ zZ}GbxL^glKhd|ADD_%m`)Wwtj(JL{G9X0AeYn}oA5>vJ?Q6Mu)xNF0@?#V~ELJ~>C zpp)0u?d+U^GzEpYpE5z(xuoBy7EV($0R5kD--U>|xx4ON_&t4!arF)`5sMr!{wYm$ z$yEFcOPLDG^YXGri*D0-sXL3FG-cGB{Z^6#YxXp=GI(?^CGp2?3R8$&AbGe(!I$gx zPkSmdbi|FzB;D^QP@wkIOA+3RPZ>K0-veZNaOD7n-OBwF0Klok=F5q^||j-F2D9b*X}+kk=q7 zDlBb^l=tpM!=|-z4BQ0c)0Q~*|HdPS%oK83y4uzBL2$Gry_AGnaAM=FPedRkxiyXy z?))Q-Su__x^mmK5WnY96i&XBE$jEXDJ{sTB!_E^~~q?ZNZ@-Y9lVYhB8G2 zCrDR~lA$Mk^}Xn?!Cup+ZuhYgz(Nx6$hGn~4IMq>^DMGBxT|omrALTjHB^c4Ftqy^ zi8G8hYpIr?bZN97F<{L&U+N;tke$n!UVb&qLX0*!L_RPanD~{x?$2qD5!;T>@oBpO z6JCw>3DyM)ywCFn-A`KH7&8-XK{P3c?rQ?HgZ$Ammf6zo?Q}YvNO8)UPh*NC{lH=1 zurP#qqeN|Q8ij_0=)G^vtbXc+gYj;g{f}5T#CpgiY57)!@ z{VNV`DkT!WQTRqz)yg!CQ^JL6!y4`DduA!?MnGk?lK6lmPVleoXt+WbC#&T>mibZ+ zBdG$Fn4@pDt9tfLeOpY7>Iaj-MUj#P=VcY(eUDHjxVIX4^OLb1z81A!quq9cl6V39 z6dynTQ$hewl?8j6aRNp;?XN`Hm)9RIPDs4}0(X(HmdG`qv%SoV_R>x;DXCQCc@sgG zf%_do4Z(LWm%h$*#=f`ftL4A)g?|X84EEj&`l)xfes+DR{MR(C+)KBAgniN#3#o_?1cUJ9e>?&3*U*xpMNGXb?*Et>#`%9 zvmwInxnk{dgO2J>#wUIM^W^TF5+vPcg54be7t}MGqiv8#5hO3D2Xh*QYAN?_RntLXH+tO5>hiywfK|3+qD+L`98h5n^;OSFiuA zX00pxl9X5Tg`D}?aXgr+1}7my^;4(9=S}w_AW04h&W9+; z8n9EHk+legwznyKz!dqOnvh~;H85ZzS4M?gf(BHGRnsG`XVIip{`%!hneu?jN1N(V z>bAa!e9OIwUIg_d=aR((j{ zfOlNJayukEqp4_hdENQsPQPp%6HQ8(Z%tLT!Q{F~rTYG7Nd95m+cUb~jl~9Qs_ogS zWsC2@`f29*=|gAZ{^Kd9p0S#Z%UbQI@AX~Q{qKb(Sz*l%7jH?4vKo6uDlEb_ZX{wG zewRv3Iwq?nLlokWLJj(LrtO6!Inlh1*)C0b*8N!z8g1B8LpJ^O1`-15thqsC{b4 zEkkEcEvrVDz`GV8cPF)S$?nOYaY+5h(hA=5a_3uz!|M^5AA%s`lJ|`wciYYxk3fKc zs%}$aS>oUIQL%{3^a)41?S+UYG*voy1@%sXvdYy^TI{}ri94UPsmO6NotVEWBCiZZ zMO_{Mfwu`={bf%qmK4<{cSzxDS;DZ+aM5f==ulG-m_c-S z-_6^L<>PlZ&Vvg%>3R3gTLaa;^)p?@A3<7#U5|P)=y~yqc}gmfQ^`7N9ORPuk$N{} z?x>+1EOSz3jkd{y#lewt9Dp_h-qu;Z5tlCSFIzOyIFrVu-UP>e=j4ZHzo4FSWyZgm z>aQsC~H zz4rsBpqdz}4&&Ko!9w^2WA-2j3k?|#`W3-L%(JDq&Q`BFqP39WGwp}_xd$EwZgot% z4JDkTQ_Hl}_ADLqv!f1Rp3)!PPXRj*Wi_352mVi>KoS#zP!ho@K{n32vJIaZtuD=^ zou<(IVJNeKb=`l`52)tot1*~1w3YQxBQ-Q}E|E+ewW0s`oJZjHISjp#2GscaW%Ds+ z#YjkXk;Xo4Y+=$v)HL{&2+hdO*C)BIXQkpWsK=J4`jX1 z@D)P4CHb)7_dy+v|r*4jtUR zLO>d?KLN^LhAk<@{YWGeki+z8rb2kmIJLAoJ+4aJP+MlF#o`gFDS(eFgI1O}mYhc5 z)kLa*p)k|1*91TitZ!D**j#VhxI{W8_#xH;U&H97j2bJ{i8tgxyT7dFiZglitVSTy zBLG*zMej8-U3z#!Rn@b`VY4n>bAnRFCaHqq1EH6*iWn@X2{_I)Ico=-W`5_jlL3<&jsve2 zVg>Gq%k0wFeH(1mDB02Ou$8I9+kw5k^Td?Z=>&LYnDSUe zjzcGczinR916FJ5lMIzg`?Y9cA|J7WzgL!!7;n;4zYx-WcCjEMBX>rJT-nHy<&25G zS!lVCHyyD7RE9c3WvJ};q^%(Xj<%7XP_5^3&0iv}SJN_P?!F7fL1&5(0GO-dGL6b? zW&wTe-MV~1fZx|f40+EGf>kw0)A}%M>KWVH%V>ju&N+F4icU6OS?(dyHMKFlK!uZt zGwY3m93mp@>ZdtB0j0j~usOAJx~;29)Y$h@=?eaSG7OmbE|)loJM?6Jmwh6S9gu(^ ztt-L7;rp1f&x_`ylYVDs1uY{tPj_=umi2klClU3Vk&wFUj7OT6id9&x ze|K%>HM4xoj-z`za~-3MaC^-4j;8cK~UU zMyZ%+I1~c`4|wwO8yT%H5;NDU@)m60?w42VRX9ioTZO=twQ5mW(|;2O_-A$jR&+Qc z=g{<0J4zBEiN%Au>GQ5PeC^YS)>uAGC8)b&VsCo1)%6iGzz0ulRDOu$1dpNb@v{vfj= z^;RD~mh0%221hK(`8gUda=RX&UGDjpU}AteWu-!cJ~I0BeZUv?6rnn3l&uE76Dfe- z_I-AQ%gLdQW9O+dsYyjnQ)9q9ib`E~b~!#@^G45c)7Y{>(^(Ot@FU;S0wEi3wXQ4@EJtPMvV3?SBTe-;MdT5CbC{k#Yhgys{qZ^qLME&b zViY=Ts)CUHu6aLZk3Cuc+y$T2y|Kx3Xy<;NP(o_R0Y(Z~JYk?TOzrCJPE8bG`~U91Wx+t}4aKzw zO0L4gtMbe?kB7~GqPg{_*hWdvve!iqs$)4lF%s>hrA+^OR5510-lbp6htV~yssW=0 zsnipeNi@QiP-(p9)+Uslxf+)>tx~d!7>UC)G{D#SR}cVWh&hbMHyJo?eAT?V?5Y16 zaRLA6d-|DXUxiiwbGA`0^bDGa@AM1(KC!#Q@xOS4&?%Y%g z6YVy1oN7cqV!I6)zjY7SRJzfCl;tjz*$4zZ?|^-;f8-0(V;4g65>CLsnDZnkJvv259n@)C;?fp4*#O;y`c;wf3k5;pij)3ZV(*2{nYf`Ye&F=L}maGBWYt- z+6LeyLNyPig>tD-2dsXWj;A0?g!r+g4KYzi=QcG$c!4Sg>M)E>WbQ5_qfH(pOi&LrZ_~vOg*R;<-xL{NxFWu%h!Vpa zuu+v5uT!EoyIKG}V=wMGx8L?}ec#Wqpuj_NF06SUkUMP&-WX4zAd1l#6O7vJzoo51 zp%%2S&0t+Y93>x*NyDv}xJ&j%Cq24JYX}U;bDE5VEN$IUddHDY2&SdKZbQ1BR=z*# zv~t9q`&=10dbAr|D677#cQW>EIeK_5&%0RVo*3EO$rh>5+tr|cIX(~}k`U(eHKgSX0$AZPqN*vc6oSc+r4F z^Wr)FNbp3$2Z?s{{L&a1tv@zP8Ld;v4PuBCuaaM_)iO*ndftQXXGNU6e@7NU>E#>X ziAT(xF}g*7EU#CrLZ?#0)^gx;(iS;_Ta6cN}aOp9zN$X^*~!${QVlU zUE*p1`_fh(VI^Hfq^3|uePAEZo2k!B{CYF?u*M}Y%3~FEBm~6Rh2{vvK*6+GGw3oV zd?mv>7IO9$1T|sp-PfG(#L%3qXwOz0LoP(~r>C#R1Vde%j*QqaG+Ho(#ZLPH!kKSSp_ZSF}HpEVfzz(18eO%2iww9YTv)Zjv|E+B!(^HT~ph{Nv^Uv|~VM7c50bGfAZ-|AQ`AOvBle1r742rgd6ZWD6 z@Lif5cN+7DX4rZBvQXH3uNQA5=!|X z4ix^OpLm(BhG}klt<|$$u;M;5a>dB6a z+d%n>={ZI}u zM`#0|v0<<6w2Z3BLZXWFiT6&zB6AINd-vN-S*B$IePN#dxz9y?sJFK^4@(w z9(&5li-v70E(mOCzqFDg0E>aH;3VzZP(TOZ(pNj!pIv8I&<*O_VQD%TuZ)E%0;mGv zK$9|E=}V)9&OHw7hH3d}I2+b<<2PN3%z)p61v3h8cN%=nWDFWf z{a_LhaS{!8D(C6me=mr_f}dldEJwsh{BF&sg|@QnvL%x=WhIL^d+?xYyqJ#H$=ARl zSA`y6m48T!bwy7f_PN&1)V9~${dEBSRf{6URP%S2&&BlYafx?aZ-SyiR@G{a-AVG_ zg`yYxIB1kwRZEu#XkFVXUVLHixo72Zjj_Cz3vI&BB@mkYkT09yF^}E`WCXUCrLR@jabl>91aS z;%Pk1x?b<4HfLK3$?zc(jDA`Igc|LqHIpKTeCIc5KSXF9DZlE&B)rmZm&A_{7vb|o zlSnX2X)}_$F=kS{n0~8srKGnBqA7dBaD!v%NyIX~vsi`FjNer3?uT;9Na^NQ zzqQ%OObB)8mAo#w=eXSEq|S&Jn$?bKzNRPhZXMAgWbye|S*~QFe%OhG@aT2^Jb!d{ zkKc_|V<@9zX!(4hBxV_gJBo+p|HBp%%Cs@le&8mW0N(WqN>~%{4muMl+UKuCsCgd` z-bED%^TR`Jtx8ELuD9Y^Ft{gVCXL%UI9Lj9R(;g2Uvs3ytqi4+Bd<UZ%VXS;!9huM z^ino)=#h-oH=9J25@bwA!tWaZs}^QL9s<-npm5B7NP@Ja>(2U%NW{Q`r08ESiP5K; z^SZg?52$_FzFwDEfaOEX$>(^t@|G@T+uNH@JasIFG7b-Ou!t$sM#LB!pxscy=)oD4 zWeCD-ZS6p1G4Q+f;SK*HemW9X*ns^}tLl{CMTOUpq!hO$XUG6n275$tn3RTFHWC*- zC;}+9x<)_oF(y#!ouIv=q&b>jV(Ojy2qF%_=)xy){Il0{Hg?ow;+I-mE}-Qh!f5!r zsh9XtQQw>q_5U(v_s_PUidS!*}fCj7Sbwe~r+C(W@A_^x+d-!d zd$++Ri$L#|P8h4X`JW~oo3-?V;7FAc_?EVnf2V>Pz*n>0fZ-}h4RqiK_->`b*w z6)(zutr+F%C$RQB0$1+v%NEaSYA!Yw=16!-n8||93y1|OUB=r+h@V-{`erPCCr(_> zH?{0|L8zHdg^tg?<6vshv1Ro!|whECq<2tf4~tj+cSOcfAW1XO>x5(|5Hn%gN-jfa03d5%ar2 z{G`Ok$NNo-dJnzE)zuQY`Q+FWF1tguJB-kZ9WOQU)MZ}jm8Ih*SB)W848)tu(F)($ z3qpiu*^K2+RnwNg_Vzh+__JccMy3b*n3{Sh7tOJ)wH|-wdj%>@sK)pj5CXo$wfy<0 zJzAsb=BfH7iy&i$`|1~c_}lS8U+R;4iuJjiD9=nxhBhhbTqDy^z?a;iuV*aya3Aj5 zZo2BxL0~mX_9`W=lrv#3FLIJa3Q&j~9$;CD8RS~5)LcP`fax%GyXJL)2?qx!UM&6u zSpL-?f#V+O3rUvp_@}qOEAGy$R&%y$agi|~`-@^O?G*OmGIjj;@I-@%21-2q@cVy! zG7-#V0B2db!F~9OBGQ5OKHxl#|B`gWUhnwEiw^%w3(N?-5{n1wD7<8Wa`9r5)p6HR zFFdqL%xy#oA{*|zg?;z$fwX@xeZeFDKjZ#CJuX*7xFrx0~&=RDnG=6k-B=HlMg_txrmgB|Fb9+vB&A7-3OLt?(n)K`p%=x<;d)rLQkfaS;HV}(4X zRIZm^GR=Kf{hBw&$U~CYLqBx@GtfirEt((yXT(Hu{`qih! zav)+zSV*N#tH;5<`~{14|G|fyc#_-I>PcZAhm#`3pT&w!E_Ke>Z^nSb6Ak7e2g@KP z!aj|P6)kOb6ZyuqRUe=Bs+SiaC!pzHDN-RdDGmQb*ULshy84x^Z_Y<|LX~-TPUl z5}wxqqp8`qmfI8XMk2%QgKUaC4R+XCLLlrv5#bw6&RAA{I?wTe0tXv+Ytr;CHmc#7 zzqY7xB12La;2*0|wsy7ljtB5i0q?T5I{bp|MXNyYbkJ}kW+nAVeUr{VaX&70et_VfqqU^l#8?T4vac^ZBd^qaQ>hyLL%g+$wE7*WTt+*p#O9^GMM}7iwT66pzfFW4F<~NS=TCo zT-8D2BbbWbX751?ac7vW#d1WSNJ20oaY78_yGRL1B@3qS-r`HAt!+-u{i=PCQu>Zk zFmjR@h5e5J!0>To;;AM`0NE@CP>sR$;nTG`!|lO_t;4*3wU)ER5=b%H{~OM-F{_3J z0w6eEsoQhRyY-Qt_K}n0?Jr;MgpiN1Bp%!k6><0 zka2hge=ST-{MtestFdzb_&15B!1bMe@gh3uRF#}YC*xjjk}=){W$^jPiDI^pi03nb zlV8vL%}IZUe)#0hPw8JA_qY2>@v#ugUbhB{#d?nuas+LX*IJ@)5h z%3(nn=FNTf+J1N6F$Tg!0ow8KofLz6HnV{tB2o@JchSHI#uir z^ihQN{u#5n=xo90iU5`f`aPcRy*+bz>lm{Mgf};#;A#Pez&k_L?_qnzLi)ml)S>cB zbLTR%eWg=an8L?EBbN8G01t!U*m#UjTQvs7?z2Y>zrLt4xEWv4X-O3L?rjI68SUft zdyo5feyR0IrSFHJZ{PmP)n*Cx=Pb@F+TIht@jqWHcdS>N_Z=k7&zqv^CJIL39_Bor zI4NMrQlWkW9QN~w(x9X4xWg!JZM0@1!8MZ~ zUvdTq2Xo?bn5ur4|1L*1uiKZ)*xnMYC@)=a}}En1^5^_;Mkz<(?*Zr+AY1tH4)5d_*{}n|bO9L<56tqL>BY zWhxVbq_65coEWeq2|O`HvnM(gTW;if!r2eecoB2Q`NaPc3@GpJIE+MK|Nq>w%tT=S xqc;ApssJ4o3K;M|$o;Qr#C@fC+IR<}lN^RiR(bUe`tu)*jD&)CCD17FzX0HM2v-0A literal 10462 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 KWy^u4!T$y4C;^TD diff --git a/testdata/snapshots/darwin/chart_brush-light.png b/testdata/snapshots/darwin/chart_brush-light.png index b29cac655c4b9558fa85e2fa34abec6e3c49dca4..d28c948978e68896cbdfc6ade994df6b02a3820b 100644 GIT binary patch literal 10081 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 P=iua|lqKuLO+x+$@V}vY literal 10240 zcmdUVRajeH*Da+$@dCx2;O_43(f|R16f5rT?(R~oNT5i71}IP*N`sc-#R?Qci#rtm z^L}#f|8sTDx|q+-PWFK=DDSqYKqiuA3*BdM43uXl}Rr89+0SYaGng)iZMB_Tu$Kr|MSR-TS7MoCpykN*lxjXRIqWWmlf&t;sb{g=*brr|c@ zXzNp;?MJn`wLI?jWB;>gsrK*q>Bj5QzP-WtOXEj1m}toMW#3lthdo*&dMBkXzy(3W`Xx)gZLiNew9*)9i$t{T{(g3(-O>N?*b<&1%#RApUZ+H! z06#?UUBo5N1Do;b>S{fI@n3f~3XaMYy&Hw_$fT=1#>y_-!bws&p?VdwShlaswabK!byDbUS^ ztnu9)5An7lT>Lr0)UOdmNf3yfEpx@fhZ$Dw%w>t8ELj3fwEkPpxLNrF0@4477IH5zY)^wlcmj)rN5;#aI`nTOA@kUUo^5arrr|Qe`5lQkmaT=anFnhMT zG9WWBQYIWuh}KpPEX)~4WZiVh^&7Dvc9i$Q0r#EA@ik7u7C<0?<|Aa%R8*Pqb^8k5 zssU5Bdj2eA;R87?#)(n(*n?6gHT!POUKUAB!fby@c+}DPQWeo!NADdio z|As!+Chit3-YJw5oJ`ZxroX&=+3x!Zn=@A0y^Nw$`g0i58TCm}cZ;C+hWTqH0Ab%$ zpUrQ-S_3BwJ~I8*Eb<+n&vScPcJM7vVMs%Q<@;lULsi0{31TBW&=QpG+=v<9}Otp?;+BVPwwd22ncS;>5`?#qa zei2}?x*ARpg|K!%iGiMrn?of->f&}V5O)Q~1R6}R-qzfIwL zmpS4syPm<-HAi%^fd_}Ymr@~o=K)7p#-oZ{lvK3cvp<*ea!Ylui_O5`WqO9Q;0NTS zS@OY?AlxA&z;knRArR(Nkhafii-|-}8faRBDch~42>9NXkG!quBCJoA!1x=3WV{*s z@8(@ZK#2ueI^67AMXp{_XE6`8stZWcz0=8@gocH#0`>Om+Lpe8N%!AMZCwn$J-A zJlzF8VL;!ntJ(Uwm&rPRUg|U85nL|l_YAo|LW`o$m+6hl(W*)jz1!b&+80@@6W+@k znl$41&Iuk;^ba6ejjMj%ABo8s>s}($8^&;Z9&aQwD0R$QG6}7jdTMV9J%J}%#wH0Z zm1D=6xqlZdoFHOSw)HbKR4Au^z^~2J;7|sf0}Q9VDs=GkP4yMI^{~-UV}Vu{tr<66 zi(8s3*%~C;l$wv}Lsrh0;G+3Yq_G^OY5}Vju^OA_w^0N19{QPsp7Cq7dK|`Fq$XTx zN)@zZc(XeUtEC1tA%a(F-6=J1mv8zWq z88pr^vUK}0v%lw%WIA&U{Gb5o-rCdM##c0WsV{^iE)h6J17mUh*>K(Q(j_GV+nqFrto1mW%#i+v1H4xkC^?D?4HDQVOYFR$sc-$_IA1kdjgZh)lT7=>3N->KTL$E z&ENzNk1y%sJbpPxSQQLg2OnS4MUZfWSiAwqXV7Gi^3Cl^yS;=~kYLB=KOd)DbFz!4 zPbde`;X?zw&K{Hin|^^pl)|o|z>;rKhax$aeskpp96z{7Cw=>E1=!hv&s1NF9i$~; zms&LCj=tSN*Q`^^9N0Rm0b7-ysqSa4=J)F-laqghKNYG@4Nf=HMCXnwR3PrvDg$YMb6S?rmJ*dJC>`;j6|vPgIUzE1Vi_qF5W^L&DWE{Ag4)#pg=d9n#9dw7tI_E+W?JRd=LJv2St&94P(j0(Hu-wn(Sx!AGhs;@|{$aH%3#C$pt za1A)|Q>JXkh>J|en9aUMZni586f=t2&AG9TG~6pzWg2F3*wW$+?~iA8T}gxH5X35O zX0G^4cC9$ti_5AeJRVQUpOpl5J+={dN|6HO zRoY84Nu+Qm1~m@a^k6B+5}F3miaHH5L+-1f5Dmkf!k*UC8xp6sF{h7te+48D@O$O- z49#QdF_VX9D13C{1&I=)E^$|PVG(8wrW1XX!@t*DxhT6c;O4r#`(5oH|X=oA&P z=q*$Gcg2neMQSjyv>Zd$mSFSL*0`yrW)l~m{iaCe%IU<9qy4~*(N+D8%4ca?)juD< zR!9HhIIV4Qzj@H~cT0^LmLd^@u!IcYC z?LvkhuNrq;D&v1P(W(FZD?<}p)%2656}$eroVRnf9vhPz3d{NGP0Pz8SuWhnkBhC| zi)n+b8X5^0+U<4q_50U{&-M*MstLGd1O>@))l;`;;Q5*(N8^zQ1$V2*QjJY~WK6Mp zkETu9?Osa6uN9hNwXGZoE7|26y`RV+j<)(B_%}4BB6gW3M5gca=eiS^*`Eur1$w@M zAF~z&1Y0_=76l7Yp6_JSlshC2E5Wd&cFkE4a)~<$gKKGetvT4qOA2ubYBq0ywCP3u zukl9+Zlq*LlbMN{H!@;I8Gt~gV)L%uj$>|jCW?n?sxR%?3u%&vCGOm& zw*Srz-UCj0EO9C03D9;QT3?F&;kTtEHA=ibs$UO&-}~vC#|>&vg)qNNCk!?dbiwCA zPYL~ebHbpJFoBbI!#edj%|C--tZkKmo0m5|_2<6C&)2`um?7E-p-mEvKDkD$SkzA7 zsqIlM{E%5UHxDBnUccUD&+X{KlO8O6Axi0_%E=k~D+H#=2_{S*e@>k+zH2Q|I9y;3 zeVv_@x2`)&{n|konAo9V*4~MaOzn-Sw)|Wq*hKT9;}wuU%Jiws*Pq8UtUiBt;{iFW zH>=h2SJIdtvg-J5iMe&FuSeu)K(s{fUedTVG&C?#W#Eg5I0)@=lGS>pB7x(22ZHM0 zP*adQUA`!yf9S>6|nlxV0cch1<>$5$me1eceT{>N*%^SW$#c+(M{YApGO%RR3e zz7Ofu8?li@SDQi+{la)yL5dn!|9kSl;q`$^vQkA@*_)E=uTi&Rs+IFU8vM>o zm9*U1m#)Ta1rn}a$0zWDz6tW?Dh= zZ4)wM8gn3iSYjKSP*IM2;5XyBo>-|lUZsT0V^^~ty@)PnJcRbkj|khZ9|nr_d4xL| zHhu)V=u!qW-glHss7vjNM6)Y6~OEIVHrum_$}q8 z(Y1Xv)LsoJ?A7=m{C$3;zk z8{U;CDvU^c?j$H=Jnun`jDR0%uP-B3EUrZl*3A2|&nfIldN-LgGq{`-Z%}25CcQe% zm|NE7d(y7;&H8rl{4 zTs-uuYW;VgVDVyv5WfgTs)}j)ClokGnjbY%7K=8nG0hj)pW~FkSI!$p;7Cc}l)Crk zX_t(7`&|ltsTw|c{O5Ivg@x&$!(TPbGO*J)$K&20lOVK2IeM`r?}|S6@4q1&;D^v? zja)By+F{PoU+>?+|5R?b0i_3NeZls)@Y9_k?F}N15v0yre6nh)_i)9nNT<=d>M8?v(-klqgTUHB6I9TpqMih{V=5!|hzu8WJISkEY6z5Hp>$U28=(yhgaaFTGaJK0N)1DuRwhY@Y^gZecl zOSXC~anCeU^78b@=~HX_L>T?`=Vgf=P)*y)ck6RRe-&)PLbVlTVTO3QrH4N@*u47t z(G`78ESZ%>dit;(Rt)O7LajBwiC*>lW|(^YSA!(X&g!N`V&gG3@F!@+)Z>6)vY>mJ3PDvvw_;kIlbh?F)WU#ui<^aLRIZd%VX#xnl4O_B zsN4EuPaOCGk>0e!0hVcU_Xd)+Z_fXp>*!;nE#S4YHTQG8uwI z`kDjBtM{g+H}wa<6-yrabYLr9oD8JE4_%L)o~PkTq_zEy8`<@c?w0jF2p}`AQQ&~q zHV}W44czh3Td{C_ZOH5%Gb$`(U2(FBsog|E%H^v@;l`1gvUYoq35MdkrC3fT$ zlp&0(IDX_S&}l$VP>{?9PK#3M*T~cZf0y`$-oxMjy7hZ6X)^p3@|42_$Z6+j#~NfK z;$DjrJ2?D}mXK~iCpX=ZDg)#8&wN3&Hl9=4-dL=26{Vm^5N{&0DfnfiF9)vgEwWtd zdzcSKYIB|?l4x+Hgzpu%LL(N&cuL)#1H!A*1^@0q(*7td#RP|rJz)oPHZtxZP+vSj z;|~Rr$;D;R%@UAhv`*6+%vI21yZlax?DX&YO1OPM&ZM;{tpq0Mk7sjjd2Qz@QXci6 zM!h!Vmbn74GAjjOi(U~S7hV%9My=zPkkV6)6!6(^ldO?7hY<)s9;aUB%(Kqfevta9 z+47r?JG+$@OUo(2=`co`XsPXN_@lrmJAduO{?Mtx8cX!}u7wGEP*M?WaeiSpdR#s{ zvI3p*nPE(F!7;CqNle-^A@*Q%ZDsf&k$0yyinyI z4#ExJeS_woG~d63iKSFMFK)0Mux_F<1p(Yx`90oLDr>Y+WkruVJ%QS?aW zwpS+E;EdhLQv}vtEJJi7qmwc>yO2|@EhIOLr61XW7F`|HvvQQ*BrQ~`w&>K<_w2KI z*wWW#`p`N*T`Z^OUL;7hk9&vTK68x}@P?ly&_Xu{RzgKn4$WN;0NEO#)X0l&@7vDb z+|q9nj&!9l(NJAW#FuT--YVMio7&S&=KgJ78gq0lvD&}lemnaE&)F-MTGM)3t+j#r z8vH|(c}WStf4(t2_l4LuvX@YgAy>Vg*-$AGgIBf|S3V;t2|E|;$X+10EjOwnr@pIz zq#Sio)S0qn1|oKhEScOMB_|w+ya?)os{j)b1$Wef9HV8ms0uQzc2eW4nJ~}AEvPxV zJ(hHx5p(OWN2pZ({A9yvJQc0Q;h&j{4|OYOO9%s-nIzDkg$>sYxrA8*(c70I!Ul%3)bAZ#CAmnGWjZx3 z914SwioC9V#Q=xYu{qRUr9k3)2i;!_W{~2A1CMu1V^iPFNjXujs({kdWAggJYG-8u zb`DOV*{#Ai+8z!YzKoJC|37#VV;7`qFob$u@oMJaDFR`cs3~1KuOinYPnJCFfNlaK z%z!P{&T)_ymE8R;EHnUB5$XZ;xrttR$Em?MS1{QKPL`;D^}P|H^M8-u8^N2a-U3E5 z9*tf>$a^rE9%+@0E!>65Xe6LU_K%HWAASwHT~#kzl=UidkUIF13RFIJ&5ivbQ-#L_qENlGZjNZ1`_O_65ieGVi|`P;bPKT z*Eh(*?N1+!Yp3&E`nrY|_wwbGlv&A7AnN+VKzrY1iF?C?%Y6_dO~p<)>)B9s9}R2X=I2|sPSH@`kw z8LHn{cD<@FB5-t>*gwte;jbc!% z-TORGP6(a6l^B-0mU~b0pUObo5uXMQ(K8MP?-kg{&w@fBJb)QvRrEduK<$EqZ~%6> zG zPm%Q4makc~{=#c7rq`v&#wA;;Ri3kdvAn9T3_+g5FbN9}hlw+;VHSu^0V*93@d*xS zJ{<;>%q?>7NAL)5Y|6fPo?cW+E9WrA`wEb!cpsPIaiM!qi_Yy1{Hp(w2QAvaJ{si! zcUIOtCii$hbK0Bu^*28zCdLRA4U-{84uufHmSpIE>Pn)#SJ$9%sMEgxgS5*}a;-$d zw??PN*AKoNzqU{d<%C5oyntFCV$)iDv=So zRMUX5E`IW#zxe~D+*1DNC?z{=xly=m>2L~EK#mS5gY2(eaWNQGh@~k-{nSop#Bf_? zRa%9dv>iU!1LzCQw;mHh+C5omGa~|&FnS`@(%z>f!|}tdQXpR|kw+Y{&h3x8;!ZnH zO>a5#C{x>=d0!Di_cVo3pM^VpO@P!9D0qiUuh_L&iMV`g3USqw(c%c&T*|%aoU8e$ zF0{%@Alq+WfCAf!KhQH#`Q_5b_4EBT?jo)s$2re9Id86UylU%+QvVM^qG!t1gvrCe z+PUb`5LO#`wRgMy^T#$Q&;c1Q!#w=u!Vx*5g|3!g|K z!Cqfp#qKi^@sAtkh~*4`pH|?t2nVmAcgL%TcMb11-ox{FI|DYI-#Q1c%^&~frET~r zki~B@VgJ&j^QE%Zjm65>%X&qMFX0$mq?(j;Mjf7b!q0=6zwkMcJQ{Tt4jr;R zrrySFWY9YfZrnMlcGWda70A4WyuGp`%UwB}AJ94ImWVmPcP;j6b3b~nYY&o|8n>Cq@=TmK*5xk`aK4%+U6e*PZMX&A~q2_&1t(YCq0xx zBB9M5f(n0z-vOOad}N9H?b3H~wyte^D*1nP7_TM<`|QxKbjDxA zvQ^p#wS&k>cJrI7&i_zZ$-bc_{)Q~@#$@oP6O-Xm{kL)ZW1meqGxxh--0v!ja{tS0Rq-==amOLX%yRM zFq9>$3<$TOvP$dUklw5$he9p?<&N2;6o)nraM#>gWv%^y-3zVpv5Ow6;4)?a0IU>* z>gpBKj)ivL+^lB;9Q_ zOkg^5;K-GZ07Qjh0i%C@4`^YR8Wa?d0J_RZm^NU3dv)x5fH6BA=97)OA)K%Ugpm4R~U)BhSB0~V%fNJt2E zD3^D4c-Oa0Vi8xq` zIk0rbq`q#!I0&OC?7>HkJjy0d3GQOmbonJv`0B3`CpkI!kB-y2ij4mJ*I=XIBq-#nS&F2%05_YUy6kiZ|jVE<#hZH(TtWzOjE-O1|8 z`1D^o)I-g&nq)jCy)j^%jDN4@8W+|J{ab0>1DYZ`@vKuDOk`vQ&H&FqzYA}*UtH0A z=r!&MSh9Ayi3U)^b!nw3NNDC47vs&mBuZ2teQlK=lMa@aph*i4Pe01UrC(tyE0n9T z5#J>Lxr+c|h_#bKkB=B7S!sXxTmHT(c_AzHVR6@d zU2Z+>{BR{aJb1Cbi(`y4u0#E?U~&if)2@KWU*9nm*tob{R^EK-^q&wZny7WG)nXA8 z;u7MK`Q{>^FZc*?G3>qG2_Au*>5g&AKG+}7kLox3k{0WCJ3sf= z-_$e;ec1WBBi(iNL2`bs|NUO$!XLo+Lf>w4+|bnWM8UcGK$Ey7mjb`(Q+~0n7+37Xn7ii zr|Z`7I(%y|pX>uC1MU!hsE-;sGt)I%T&vrbM7o{HIoVVbThj+TAZ~JeE2bT0nJAE5AF)=ZJL!Kq&ic`DFq0NN+ulm{l zi5txqCV_Qkl?#^S)eb;gTRXOQ#8vGD#qSz`wMfqRxfKZb$QJGzmS0^D|E~XJ6KV&t z``U_ItMwVVI;y8mc{6kdctmAuM-J~s(@IC$W>Z5xpGLw`^ZD;@MsFI@Qc`fSDHm+a zYUbO7+B=^9wE9!4;KwuOs^_|DXxFevNfi%U@3u<3trvJ*I$|r}=zd(|EXzG^%95#J zCnKSs$Hv&>8H_#T__eMVS5@7`R=%5kzTg)-EClo%O#%t2c#3U3$ z87*z{BRlpV16j$&!@^2TOFYu^LoTX*p@HM(!}h0Bzj#>X`{wtXeR!lTZ;|Mm16R%N zx%sXGh1iie=)@q%hckyU%#|O=VImsGE=?sG`uh4BI=GNdxH@n_LJ4FB3TwFEwJ)vS znVw&+UpK!=yH)y;Vj>8V>CL*0$*IQR19K>97H!w9Hw`))G08H)6Q#rrie|C^=;kh()nVb`AaMTPd-T$qHHZH8b7HVs+-pQ|O_*f%MNyLH z@M&}i`R|^>wy+YhU`!OkT9rJ$`Lnyl{LUDsPcab@4F?TVY2hl`M4tfRvDcStxyA27 z_O@$j6?MN2QrFK1J>2a(L5xy=!-{c;o)Y#B=GK zS9)sG8BXvkvrF^f|8|JQ0Ve z|Cp%Eb{xzR9gSX~H#56<;(%pUHDtkHF~g#q$--Ks$hqG61qKE(SM+pUzq{2wBMw}f zmq-O~`AF1%1JUqG9(~5Z#>1PO7%R>e{H-=hm_4dwUZmoA>M52M9=f?78Tl-G^kNd> z&V)sD3t==4Q3y%zRh@6lVjkUQKim0gS2WL(#7qr5Ua{dLS3j#d&;5;zeb=qSXgb<% zkpHAF1rsJ&gLxmRYR3!2tl&)hL!jw2joR}vSQT-_{$dqz(Y%U+h#1q~#F|pE(6fs|-Kl2r z14Q6>v|>~XtVPIa^6~o0hMXmZ$nEbM#-2b75`C`j&a$AOiHFN|MJd|jQCX?Ly)U(O zymcPb`OKpWjc+uy(=@bL^z)d!B}$(0C@ZVRs>Wnf4Yal!=^5*R&2GQGS@)1Ap_mm| z^#_Yb7HjLe20fKrBaF5M>1a~=&^v{EETV?36PcBa8=BgiK7A%-XtiIYwZ<=pgJeEA z>;m?z=?VU9E=upFSn`{8NHqqFjqmy_yNJ-HtKy}ovScR?ZFa;TALlu^zZ~Mji1y@t z^!-m-xoe@v!9X?@O7HtO|4Y{V4}1S#F)pet90jQ+2L3B6{(rexiXYB?SVx&H`0d3k UE2)TlvkygGSx2c+!7}Q90Ph8tLI3~& diff --git a/testdata/snapshots/darwin/chart_export-dark.png b/testdata/snapshots/darwin/chart_export-dark.png index 617329642b86f9a85ab0a759d7d4e43602384fe6..bbb754f34767637b5775a65da5d648fbd261a52a 100644 GIT binary patch literal 15570 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 W%nbh|;837If#O!6Kyil>99pcndvKTF1VZxT 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

nPYUaIyF@Jbv4G_k39PQv+IrlyZK16^ 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 DN`8pa diff --git a/testdata/snapshots/darwin/density_plot-dark.png b/testdata/snapshots/darwin/density_plot-dark.png index a3cb242f57d91e976eca71839debcc1afa4793b0..40e8501d6515139dd70d3466f1adc4ec539cef85 100644 GIT binary patch literal 22613 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

-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 lBA}=Hf7u4X&=B8?dGLcDg~R!{{Yx0f-3+3 literal 22659 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 diff --git a/testdata/snapshots/darwin/density_plot-light.png b/testdata/snapshots/darwin/density_plot-light.png index 9059fc0df15ff4016d067f3fd054ccdecd1ab870..8ee0cf902dae52d5030fdbd7831b1a606f34256b 100644 GIT binary patch literal 21875 zcmeFZWmKC@7cLx1kwUOiAV`b5g+g(+;_gt~o#O89?(XjH?(SaPp}520kv{L=@8@^c zI+Au zwL@{|n<r-;h)CVtU)XyL*g)1fNG~VZO4G7Z)c#fl^pf zq*c9$N)nQf`VU8bFMDO4YNDL9b;wA{lEvrjA zDlK`4L;i@7Zn=BaIKrX4fl@@V_q>0do4ZpqrPaGsb0zkQdFfzIKQ%=^o6D!Oweu^Y z7nP(528#CSg_qFPZys5a^K2y1nwq-w2ceAJW=!+49D1Ax0gaRYm!YR{8XNt~N6A(8ZVCg$J$V-`vNJg#NGvqU-0Z+;FB zQ=T41O&g2_@@EAiy2~KI3X4h5)q|I#6T5bn`uj=AVu$oZ2}?@9i{0*&zgi;TZ@)ap zAyz8YLfDoQxBpVQO4^Z*gugj`bmr?8;2r1-uM2<4wlyD9U#82Bik3Ybz-o@#ABB!P1hGK|Ghg0RP-P*H#VRbm-ZJiiUezZf@;y4|$tErFUn8(@7II zo{i0g%`c~h-%s-S-{##xbSuW4PZ8JHbz(`Is2J%JH{2Obi4j`eO|MaW{s@iEw`odL zjZW82JR4RpW&V)!I@VpJOy(=cDx?;zdN~gQLcfmzvh-V+o*ORZ8IbO5Vj8gjIC8@; z(2vNtORk=|{i+`A_BN}`5?>6>d?zZyU!|KJz0`2q437F zVOSNlXfDqotUotzRFB))u8KPq6|mW#9vmH6F}sS3hwhDiIBu-JD9#VJ4haF;=U9|7 zJL;aMD5tw5Nz1BAD*iL~@N|QfSVOE-J_&sf->f0~&C))kX~0xhUT3G`r0>zrlu9U5 zD3>Xvqy*Hhemv&-y^pKT2k8xufra~uCtDslsB6s^AEzj%tgI}N*yHLZ!GIyjY4N>} z)7rXvquU>aS8y@J1rHf#Y%G3wr?&Q*9+FT+b=lbXsGBhB{W}Qztkl?8y>XM5ulc_Z zYmdy3-m}?%mU54nUvpE_l0N7aRb*vjo1UWInkSyxJCG1L9HUm9zPi3%$z!=a%D-G% z=NtoB_Ic3ztnZ|v>WTD;;b#(!7c5ES&Y=6#o~&_kCfWA)zZ{#VR2m$cSZ zrKYz9!bJ%9y?yz_3wFG}OktL6=f+ho>T2Zhj_U(^GDEHmIWjB)@amu^8RW@bP`rF* zRi7i1s75nCxnYxz?n8x`c5*hjXKNE+Yx_7^EGM2R^+r4=rzV@tgPQta=9D%n^k9h$ zZSG!=APBT>S{XXSG9weC$x~FvFKBZ6bRdfcIG>2LGqWoOYU;W;^yILnZr!ixGCUmj z^c2XvZcgwN(Ek|mQxm1%y5o$Inc4K@hM|ec^oRF65wCnN!)vR)b@F{yIPOsi`lR{d z(a|)l-F1fhRO$h6VM~?CX0<^fo(Q$lINm|~tH^!?SrfsY4jZFoc|d4sU`=G~ebs0( zD=T9JJ|#kKf{X%_ezaa%JhAxvG~qW_U6FI+Q1OfB)a1RCJ*hsLG5_^;_8N6;zUcfU zDKfHnA7q)}2HcVGjm@`*aSS}j1LFVh+4#M8CiYKZSbSaCZT!Xp+p6eA`fLNLX*i=y z&v_WT9=n0m*ePDDFK?kqcJMNC3ECasm@OZZ+#Fbvgn6P-JsIovan>pJ{nlz;SvCs>>w z1XomAw5d3wP@9`8a5@1p1TsKlL561HWAWi@1hC^+HLCH#md_X48rH+t>xB2eEPXm3 zb7-MgS1uWt@BMLU?uPIFw6(SK(@}B0%yS;vMb+hJbRV})2Hjt6U9W?vrZ0-!97*Nm zzlFR$P}dkGHI*T?(J^1$NNHt)lfJ~V{oSAE+bxCxeaMDLBco%3Y+6|QU{H+xQO?;8 zXZm=4T@i19cR7w&st8M%EH%!pf%!v{+DBd?S)#e?7_~VT;6~W*oxovAN=ozk<|-v} z^x%!KiWN1|>h>|g`tQZyySh8mWpxa{&^sjUm>#k~>5th&g2J^RVq4Bhqve~PJ0G)U z47Ud4Dc;EwX+EYgH|v`h4eF=V`=d)8LY-IB zlFO+yl-sIY^zMhue<`B>e>02BFfE~W`lkcy@|T<88W#Yt@GDueHfSJ4XC{3 zs*XP$>`&48g#)<^yYre@&n+jVM%LdN ze$yV`G=pE^8SPq1inN!Rs61H%I{OgS=2h zrndZtK(vn^y*^_rxI(p{5vc>-5fPya6?8yLVR&Hm;Kmb~o03|whl%UR^xtF*-U(** zgr%mQxs1!rZZi+{1&6y?pQgeCA^bbNH=2>S9A!$EUo}SCTh>Z&3hdfbN~@Zn{)HRR zVcAf9`}{pUaNwj~1EafQs_r32Bd`|D7XII%KzM9~KXP4-^9&jAZ_i?;D zss61mXiZoE(4Wnj;9^tNUeY~k_xRQcgsW^%P z8|rLf#zo;9JNBvD@0U1n)C#AX1Zl(w?K&VUda~$zwocT6?&egO<5yXFj zXr0ZEs^?>mQ~Bo;7R{IE?kPNi8_EtL{%OGb6#R6{GNn99ORTR0U+OeXt{{i>FK=r6 zH!@+oU7z29UeK`QVE!$&@$ZxbLTU~C+W?=3rXfqHprgC7K5Lx149A}Vf`PFJXK0OY zpmev~!HbvVbx)(@D;dou7s3218dmr3;8&aj_o8!C%)En8T($TKZbLiY%U8U*wx*{4dbnVPK;4@l^Nan+VFZ|MB1#?gERU$?|=Wfh@t#-}{ySRks7%q}3%i z%hP{Kk|dF{(Cn4KCH@=%5&{xIe}oL=+3NXa8o!#>93hsF8F7eE;y_{q5;SXGIkJ=g zgFb`z#uZCc?azB_B9sr3-*=CD%^!2rOa91{2A-)CAw&cvaM8Q#zl=ON_T1Bh#h8J~ zUw{h6?Efnsc)|pcU_%=;GdyGy)qSmq^(+ON>VfnqA;Dr`pn19CdRc&$61nQNpePXP zO*GFQZf!ie{R9x!j&Z*0#~(F$`g!taQB^W_WH{z>H_N3uv;R&-&_6US`%>5+Vd#~N zmQNaMx$OUAj*VxhMwD(SWcT8WK_4GRWz2Qlaa`~v;7X5zI{${k1syNJ+9D#3xi z!hGl?5Z&*)f0;UkdzaL3d;z*?JMh2B@DEzzsNS&>Vez1<;lGjlOS}m%9S%$A)^4bc66W&dy|!3A{VzK(UI2ihwic@Phe(}wz&?^m81{o(DOBBdNezV#LO>d_j^c>c5C z;2{M)xff!TrLTs&DHodj<2E}o(10g%>)N2q!ru+apoc*GM6g)3beWwb>wiRx2J)Fz z6P20dns&DgF&X-GTidnFpD>Cz|E~t3w~#5Z<1826T-E4P;ywMP0mtt6YlS^ctGJp4 zh>P9|Ht;0j?jtG0%M)ZlsgDYch`h=Sd`1whl&yTzeh^fROmn78uA7&Fyiv3E?68*r z(*%MHF@>BDEEBPB-UP1>sg;zXy< z+kWR8IE0BkihqRr@AP|}4l=AWH!PDefdN$%0R2yROX;&F$l{mUER1~fl^KbjP6ypD zkR^~AdXLRdyA7P)P+V7Ymz{~m46Pzu6Jq<>)BdrAD@0R(hJ2Q+_XyT*SM>Hfmep^8BT@!KiVjx(7p<#3^|GGR~Y68Pu z9HvX zWQ;R3ePjrO==XRNH{k%}R|fpi=5Rj%^F7SXg&}z??Pa6JMfM(;hRgmkdtRm)Uv?y_ z9Ij*7LHCr()lX{l_bB)&3-3#FHj2BOZ;!+H3Dwi>*F9bN6#ci8hYawWE%#UXmhH_n zHvj6GElPKLoC7DfU)t&KOE6CEJPtTVrqEDwh8eo7o-}&w6CBjN%(1Jh#kyZxZn=Hz zQ18^Sl8p51QpKn{JTrJ?W9cX#Z# z@M497K)FUGFTmtJUc-OXK$W(Q4s=w6$OqkUSQBsx-ZP;0zW&zBp_5>2&SpxXyDGvY(SB z55Co1^z{Yu(HEI;{`+R-U7F&}fPA>}nQ{LF2Hjp)`eEIkNxqxYNo&3CTU5x7{Ghph z`!ZUAGku<6bnkM|Yr^)2bj%y1$yYz`tK-*cjC+~dp9*ZvlBt-=Dk%vK+V9FFhvl9#q~0Uf-t6g4+B6&_5|DkuIa} z6Yi4$XA+^ieMRqVL|{12O7Gy zMDfLyGRP?TAE6=N=={sDADo^*u?zqC=&AI?L~r!H?HqKp`PQErokn5!w$3FNknXNm znTJ8MmTu6!mYNAs+5rh?#!;H+tFvBuQOUQ;yU8>Y5W`qAk%S{oWg9W2P2hBZl-{+)@TTqrGr5s6(YM!49~~hMB@x4!l`;DX z|Ic~qUMk3BJ)m;7?6_BH#y&-ACYS5re@m9g(?$5B5QI*!OEsKdsDd{SS&$Z1845k} zTUwyezYA`CLHG)YL*0g^cPf>CWjsg3Bf}9riA#3gPXkzg_*fw8S<3*rp`Jg zJhPBCh3@$D;P#QZd)1y})hglsH~V-QJP6Q@17a5j;e73|bWhHlek*|dE2PGg3+~C+ zhA0o8Ha0DLH#e#yqgbNd=Ya{S4@{ub?8{ig?A~K?{+MO>V|xY@p(MF~JBErN4EwMt zIspaZ?-n4y1t`$>j39k?%)5{hc4u}hc$-J1KYZqq2al*nZIe+)9h^10Pa6AU{DFx= z>$k(%*@t1&y4MwiKhoHO2kcCiS0a<>?%4itr2q+f(cCPVt;AP?0PY5XzxzKkl!Nwe zVH>|~!>?JIVdC#EtS?Dch{ z;){9T__s~2E8hK)3r@4aIalX~a?tus5N45J8|Y`tdW)|h?azPV^%qlewf38@a0!Z@ z#`F~iFhV8v$gCrY?#t||5dXAs0j@!ncI(wv7{J=A`bcnSat(m~hoVwYK%HmrEl55= z>%7t02-_+WcV+TA%!*MDGe1(hC-oo*Tpx&73wI10q28J#ZQP*Z+=Y zgEd`aXGKMp+zSHq&B&Lr#;d~ZFAl|jPQARlzyarpFD9uyR`q;zP$jZ>h0lA3s-xDMM$NhZr*r={c=C3hdM^qrgl*lGmuZ{{Z zXGqieuYXJ}*tP3N4s}<*O2ccoIdYuaCJKV4`$;JBNX`E$HNI`pW_kI0ixu~QPH%OZ zoAHJd>FHS4>=z;b&_Mx|<1@q3ti7eKkz0h8Jd*=aEUYBnWjqyKo%9|w^UnLs*dNSb zJXX6yL!+Ncv8kdcjI+nF%*uhO_opAfd;d%wyU&HXuHURuE)3{NcX5idYsfg!nrELr z9Q_&e2t9B*T6V3vw8zR=^}9&u4AJgYa=QW4zr6Bu^xN1zvgps(CKBGop*)g{(OX|~ zIP=Ud{qm1W5@2_y7#{GR{`w;pKo5^gApZ^C_(;C+m z=OcBEUH1}(ecQlVu4~y#u4jO0neS|KU6q8bvP^Yd@d0Xk|FZSzlI%F=sPR7{Ip~52 zA_pehaZ3wJm7BH9rrVPb!)979E)}mHXla(YUc$FXq7Oou)|=a$&u0{Z zo#7$-wibHZ#WwYC@%LO0382sIE)8h`X=~43GUF!B3Hu>_K^9#0*X0O%>xGny6+zPl zw{n#+KDk6x#JP(yGUF#{At52x<7M;4waNA7VX%>&FA#PS{L;r)Hs*_Uy@m`;B5G){ zXlX}-0%knOR0{AGyYye_9q28%U&gY}qBGaSMhxS-=u!{JwQT++72c@ySSp;@W4 zz&2E;+n>KRU1{V^*Qi7U%UegB9AI2Oixn!kHi9~N^LaVE#hE`U=T#%}?8w-Fb{fxK zB?@U9pWu6~$!~L};@Pw+j5fRG^PdJ=jZfEli@`W0g2?=d4MU1$aN z521pn!F^tx865p%h*7ipvxW>W5bec8_X$|99_yzIyD(E1*Bc@fS2b; z43Zy^pbuYfR0*7Ro0o%z;;UH^qBPVf#D(9CWq#dc>2a@q=JyIL6|oli2T|dJ)|eWH zL2cc|N*6 zlZK@Q^lHFKH_Nw)`kv(a2(hKiA=Ki3(JPOr#)AG~aDTN6dy006724`QZd?%PlSf`UNd9@Et zgqo(({u36`IeYozx?WHKawL%v&)hqO9K8pcdiT4n`hfk$^y43L@?(cr!{>_b9CWM_ z{9MND1A9udZcVUJi1)P4dk|=|wb$p?`P~5enM_32h_z&5kqQs2Y$K9wSM-mUVqziW zyRDM0beyBr0~q@+;zb1`z^fUTkQkg}()M_o9c9|$sHw8q@WRaUCU zZA%;Hzuns3vOFHsi-q~=b3=DmjLG4(f1l69M~u%FgsK|JZ%fOQ<&pbg|8Rt`jRL?D zhXQnj)M^}94!(xbubU|hZBK-Dc>J9vXu*d0gFRExqI2ZBKi9|}k=#_FR+A{;LRrmb z_e^!n1q5GWubVTlJt6*0nf96;XhR&*>$B_>J4y*{b!0)j*5lMu9Nv4@eLIHKl7&9$pHY>=L4wSf8pWDFqpgs;HXp zCvpRgHo;}xF3(4fBw>sd207#>GqWQJ4p`nVV|99rFXsP^+M{FQ1Mt1X)2Am+fM$WPkI_heqYq#C+ekJ8~PvJ+m7rqq&OK}3SE2iJFa~5EcOP!gjUXrrp z?OykLgF;+>@IhL67jb4VN_kS9oo`&(fm7~&nq5tb_uVK|zUt3Mc)R#^!K23N;oit{^tk&r<(h`_&niW+T=q#_td@l7*1iK$7$rUlm%^p+eQm4d&J>-nx}d2fPX`7A(2=xX zfy{Ko6{{j>4KxhXS{R|*$ND+L4gjEkNBUwMyw6&4V1nLXvH%Tes5%V~IOFo=C>MMW z@rC_kn#4$Jsywu7j`#aK*E{489*8Y;rx$$_W zgE$LQG~Z(2Xv?2}Oj5u<8cT4`FzmZ2e-0jBb8H(n4%`>gP*g=l&#t#%5w%m3DH1oW zb8W$K_;QnH(Y_nxSD|r&T=$VQ%6jP4mP~qTN?LY!B!YvhtAA+*!1_?qmrorp1NSz% zq@JQyHzcZLJ*^VkGc8zPHx@8dPriLzMT`b3N5+cyo>%vP7&g=`SudmYEHn4E>Z2RS zJ6P?9Ls~V$K3;n+`B}U*H`aUQ7%+z%xUXAK(m&HqMWd6u6P$tvVkiQd>wZ2pz(v{K zKI-AK$e_K4erRZM8};-do&D_1MFnkk`pJSxRTge%c16|qV|Zh<`-vM0W)=NGdMhR} z=J9(r6c94V?-Q^=rjeYe=mfc?+10n9&a-!NdSgG_$HbXMl*^f8>-ajpe6027cxX?E z%umBG9(c=27lRh;+IGpf;zD1C{FU!;e&Sd5hOv~gmz0Pa!#?IyyW;0*ANLLY{1P6R zd*qgh?w2j*hm4cb#V@9fW{mL1c(SRkZ4-Z&D3S{YKN-5rxi(yFJcXYfRWVrPqrUfx zg!a2Dg^@u_A=S{Cr`lCY;;D}-7JqN`JKG%qc(27{VSWeg^oS>1>@r=+c8(-Eu&O%R z2%mS4S&<0I{Ej4wWGAMdgu@GQs?Cv>VWeNeKX7;3DJfc(>>QQp=M;SL>26H1$j%YC z1;>$QuFuV@bD+H;QsL*OAS1xTqEGpo1$%nG<7pu*5EclD;P-T7KmOth@5`Hb_oJq; zn%ai2kjTg|Ou15?#;g|MLU+H4iUZ26n$U1W9RVU2L*cn%PcXV6Rw7pn9?jTt1CY*g;F%1#iiKGZ0P+Cjb>k5I5THWVWYehGI-R{}mZOKP*aFBI#{ zZ2qjH%w1ucY!S`5y+wgPTZS|3@bUCL(|hRme)s@BSK;25#$jFU!dIASL2 zg+)h0By%Q@fDQ$`t_coqrpdpBYVQN;*d>0EQDR_keORkgLE{@h8@j8Bvh_FTfiY?u z+ud+Otn1dl(!V^Gv~Zgp-*UIlLaR8~GDWG4l7^)o2NLgV4-3J7(cM$Q2LRmAQGHrV@l7`3ZS`KV z6@hnZ2!i0T%8FCum3o@x^M>jtIKS>B0`;&KZVXX-=jyRyWWPX}OW!x|Om5Y+99eI* zk;C(4hF5b!23*6y_3SzqPdzG0O7#*PJ6;fJtyQivMKW1fKGz*5vQ|wZpEz% z$!XyOCv!pZ(s)L4Rj8|@k5|FywmR>|jS8W@RwZie#^D^!{_fZ216dOzT0V~^2n(#X z-okWkS<;xSb603ft>ye`$_1q26a?VqU9kKmNybc7n(Qz#NF5G{klVFd z-HvameK<7Uz_>dRI@79>)N5~-?$QUH$LXv!g6LN!Q7@-SXBeyxy_9IJ72a1MkT*bH zxayku*k4@fIo2=hx_UBNA|?l~Ruyd0c6U#3OiJC+`}3J}qv9Kg05+?j>Rd_9PDI^T zWhcwvIv9rv2*ud<&V&%*$GM_9<-?AcNOjI^tVNYw=MiL0+&fR6;ZANZEsGiZ*>I7R zKA898sUKX0Xd`NbXQs$R*4*3behUj-scvzmA~*whkWt&^L-AZM)eA^uc*L&>jAZPT zpSnNNmzfL8quLa2>zjCKDLIx3ohY+sXd1dK$w*TUQ5LgV5%zbll?db+YS7=YH!df- zA)gLnu6YZz)+~_>-b@eLj>>#3*SdBNK;Wo`@XX}W90+Q~Y>rA1cYR!UH^9tTqH--B zl~Mh@Jr&M2Xxr=0n8bQ1i~-ekOv4o&CK2b#iyJ}7 zbELxMSCNC_Vtz2POhk@m_2M^h=ijDNEK~oC%Cncl= zg(LHWYAXcoF*3-T`p?Ic7DIaWWBD@Cm7Za0f%FFqwbpAO>I9r$u&P+)Bvwa3KXh-Z zDc5zkx`YkI3jOJb-}}9IXuYoJ#V$hi*(sE_m>0w?bnc^>xpz**WCJ`n;-_vjB=V=p z(#K#e>lpnELX`rEO63tYN3srQT(s)5nIH{Z=)=+wvkR)|R>s$SvWt7HzKdqxh!wp} zHgrGcoh6a1()P~)s)Rh^n{(9tXEWbKpP|sX+&=m3W~DP>gmz3AfIqFeIcyHsQn}uQ zTx(1#i`fjTy9~eRB1lr`D4N3nMmTD;jzYb1QhvfgJsK93$3t5DZtDS85NK`fZrN)F zGjN8}uPviPD*dS5HkWA3Z^aB2ZjQb0>6_t>7myqz#xP@1#g=CZNbV`cVVoY|&KFvE zJ0PtnmUk=-@Pe>sqcT536}X5nMIkhq|H#_!&j*< z-eJ@P{4hgdd&k$_!HxX5`{XWf9=U!jG*7ORfl)Xv!hw_Qyi@0Jyzm~5CH1#^bc>f- zt$FzV&_h0{#co0CWILS-hcf)ZY*C9s&8ZXt0B@rA=PKz2-wlUfWu|o9URaf_$-UK} ze4{{F;s`XqhlM#)PA{nZ%#ka_-;biTCX^M=1 z=F46++ZDLe1Uxy>)b7nt{WVo#cx-GQrrHW@)6j)&J-vA&t_SK$O^c6>)j`(ciR$VS zM#kvJJiJ&$_wZDC;poWkE8kWcqU2D2x%g)Y$TBJYz8**bPT!qOft-zo+-6R5zA)mTJ%Iczlc=o0p`$`skA~f!Q2?h?luaxw*LxnNF^?v< zrUNHPH!7~#c|0l`*FyX~DDQlp{*zz<8*2z}_7b#H6c3;2J2)(<3Gf{cr1ET}#Iubc z_v1N|^Cp@I&f6Tm0j1e+y=*1y8eNFGJ~S*)3SSssWOzu{oYwChFOzW zFk7ra#sRq0b&#&9M2TVALm$geGcWU5C#U>!p6LnG=CF6$D?M!O;Plhq`_84Rs40mb zCXetA**Jo~b`V<1b`|t$cL-azOt$p3GUgt|>N?YU?WaYe=+#KW8SN%Qo*g3u(@aO0 zF9}`j(j;3Wo)&zv*=W14Z!-Q`^nWwv)c^U0RC6MIs z>|v%2if_sqBVb*Hg!u5@c0iIa^ni{R$^)ip(Z94a(;4APCoT7*zjjyIiIopGi#NRx zJllQoc^v}=LI-1vu;DwCTcHhIRx)Kgph{0m(@>@Mi_T5R&ZkB1Q7q$Qw|R#0FPjR{B6xz zCPlOAc-<}>p60CHe(Zjn>Zl}Z(AK{m9eeEKvpRqXM@A9!sgyvV61{ZEs5Uq^_=NpO z!L(Cpt*mPQn}1!K8*6QCrLScz4QrL}{A^!>h$oOiAsXR|@-fbbh=>$_d9ZODp9MC6 z4E=-W?IoN0_H!%Cq0ZX2^V-Q{7Yj5-nohy+b8R(GA4(%kk2tmz6lT)#(9I?Znw4A} z((4!bPB&k6hHP;a)nr+m)TW3J;eFV7H}U~b!iSe<%}JXEisu(j_xp4myj_qfNTDWtq4^g!nuyNV0R~+%Q|6a) z%Fx*pRsc6|#odb>1OV?hA-WF$Q1x=h^cBXF8NtW$%Bu_9>6`f-RA!K-$W(vP!XJp8 zMra+830A3Se^zrn6~unWE#q^$S;(n7`ixvnfeDx>ojr;zf{;fJnC`TCDm(M+0tg$g z`6fdM8W_8c{)j@^D|#GN=Yr+->@k$J)xsv>HH2Ij@#l9e)@$4}vLnY2>JqT$zd}X^ zRPVCxZi@Vp6)Bg@XYR!i@TZXjP=!K~sv}!{`WVHPUHd(QWxg4^*o${Lq`GF9JK96u zJ9+UkNe|1dZS%b)y{Io9TYMTjHy>Uv_haIT(ZZ06zTU=)f<^6$a zOkwi2R$w*Cdpk22J2U)j!HRTn&v>_6uis;B@l`2BjYOHbwBZ&ZsdWDq1a*J{g!u2z zBzFy?H@z$Q5P+zK0VoT0zC3(ykF8(P^ixG?g}aF#H*_Z5W+Kxvy6LFSmVw?)CQCsA z(~6wDdHBeCvXeP?FITqNi*SI2M!Ii3l0tJKsK2}yN?|G~ox_)Ldv^0miL4`dxW(sa zt0_;4kPin{=~mr) z`f9Pm@qHJUeHjCK;0a@EX#QN(#rhgy&9tQcSlGayw*fXh+J)xC#^9a{VNcue3?rm# z8wS(`y4k_$ifvGCnmOZF?h)TnTn;_ZO2{!#42UrIgK2g_;Na^CKS^m{R(2zE{tG@` ztf_E`)&qa9zUZBw06;L$^YfDwE<|vNi`4s(Ky&Ky6JvQi*i8=N05LwiG5^sV+GOnA zqt4>!;^omd_+tnJzPT3B> zu3t-CcpQn=#>-3qj~K2t3dBUQJbXkE6$TAmMb?tT=l6rME`pZVlN^Ghyw==^i!6D2w17HAWB6-cVvF96;5W|A6&WrfTkH;r7 zt7LN_Q>OqC%?UQ$>85bdGx{v|<}P!qS24&62MG>A<#vjd_4&oWaTI#X_w}ib{V2*c z;W2R)mym{Nhw!sgb#0D7v}|@n-3^-*yUkH)BdOIWpKI29!$! zA}}91H^H=N`~zQV1-^HOh8^~qU>XD}0vvpydP+oYuwK3@$YmNAcY-na(?dm zPQiMV9BVr&#yRh<0!kgl%5ArmGG%mB7FR6h{dFXK2V$K)?$q9oi=9oVDPZO&fQwss z`$-9jn~ry@n*TKLHCERMeJ&emPdB z>=;Nj+$xRc67)AY*sH&J_z#fJgG182+WRl}#jQiE{oOvy{83jomt!9(Y_pH2+|TF@ z16HpA9u++-R^wa}3So@xt(|zVAMsHHg!m^o4qho#D3lWvw@=C4+d9ggJ{-}f_vU#DGSWRkr_?{vsnW01R&-+~_H(hnQty(`!CsK_XLniZNOCuK}%!5X> zY3Lr-vlwBOY-V&hsLig?DjLL8)Jr#S+LbKo4xLwi9M5}6jdRo4N3jJ<*zS67xN>Jo zd+&~31qU`EH0?eSG*EI$ui%JPx>tw`cWZ_jlv7HpVE_Kj={ zcxNApNpBccN`0NfoPA+fbJr)7q^64DdVV^D(pVVuT}Uzl3_{G*hneT!3gauw?p694 z8yF0paJC%Q#zNHP0e~4biVHX-U`RMVYIgqsBZwwA@~c1SRjppv$>@i(zo2_{YjI9l zDoDUW=HnSa^KlL5;-o{d$LxeZ&~ti0b4Ihs)DRbJxwJA-G>d(Y!}N6{iBGuyYk1=5 zE@`@B6d9o6$lc!8$Dc|>ox$eh=C;0Ext>JZ`2G0~9jLCo-E|r!nO_^Fa_B|q#(jI} z0SyLUC%<{T&#;v5&9^KTa6go}QlCm!iQ!6(HKeHlPb2^W!B1G^Z@c6+;km zewFl-)*?wmVc#c#6r^7&a7hyA0oNufagLZHH3j|jNsjglpb<5$Qm@mV`>oFEF$`tvqhQJxzTxDYpA@&{`=mG}g-^w`F}G8Ubn^Lr910$_K=@M~L$*1|pgp6?f4_rUf#(PUeqVO<6U6;bAw@igTtQR(lh zFhN-u)wE+tt|q(vtLw=U*)o=@X9D@ssTYYT7+wdjfb2o4Exb4lQ!K1nq+A)Iu zdE7OFpH5OzUk2@3)tWMb{^8U;U2*i_$6roxvRo4OK@@MNLU~+UOw`8;q^2qhT{fht zB3^iJQd@Iam{o@>ryhTj2bmy{P*~X^uaYQG9>>?KqhjFR<6(^$j?*Da3QuACBjKDf z+FU|C<)^!=e8ej(EnB@@O}h#`Q0G*ypJ%7bn>~JUksi+s3cgSgsdH zeMP_?F=POd!tzN`PgS=^J#mB~Zj)h(wJ(rlJNHBMd*SdA_Whe*wn$zt_s zLxWSdQaL{?ogf4t#bE8e>y-nw%(edI8^>Ws8zg$L-mg@!8qo#K4msKo^>W?QK{c1J zpRfK)%wjb3+gYHkwe|ADUa3)ej$Znhd4UDq*;t&(VYY?)H4*YMVqVNH$Vlmb_6Q#n3etcbXJQpll{aVpJ_lUH3>wsu1B)0b6if*@O zys)f<)A_>G&HN>>n-radx+eVnFXpw|;FZFC981C!9S>`u_XwRP$nIi)Fh-A@N`dRv zE$s1ed39Q{o zlDl8_r^D-B9FL;(L~oueB*PD(PTvJDYBRDtJg}yYwe17m=dUq!uRDpcoaZ)4EoDl8k)iEFU|eyE_Vx*a_@DK3AKQ%tmbSzizx{@DL1(^ zS>L3?Cl@6!5;p8H146n}Q%+3oqfXR0(S2VcvsIheSN$mAG2JWI=sTwnIwA@}g5)d| z1QN2hC+gsmAns|80exBl`+4W2ER};Y!L9wsk;kWW*8ZXi4Nud7e^KZCZ*JDXCS&C|cA=RL$7bN)UV1cvPx(YwuNR6PqSN6}5M?_KF!o zDQf4vpU?Xjyg$6>54f-Uy6*Em=li|xa}KF9Py8_(Ht159C@DvVShh``rJ1nzY9rjmYavCcVU+$ zhUJVZGI1eIe;^H-E zG{TS=gEGUGrRlEFK9_=unP{r8KM1Su-fKzPC9bPx`z2)PC)e0x8RtrG7Z<7N1kLJ5 zI8BVszw~K!4mj{4U8A{ndOd&*d=I@17@1spzaTkROib2PTvCRgEF2N^A_wACnR~8;C5dcWxcr;s?Q=(wO4|4{f@-8k~^sT*JKsrI=C&&&e838{6R9 zs{YT@Z-|>_m`+zUnU~`l_k1~H$F0K@iMW{4jDS$xY7eqzekKF2zI*=iHq2o{*gFjb zvi83kZk~%sSEBsITR6U{ zICDA0iE3Nw@dYUu!Oiq5^h)36{teZ9u{`PFC1-A7Xi?enW3<=(sAZ~FBfXb4jz~E^ zzDtvD4)N_8ip##ta(4rXJraXhhFedbH=hg-_)+r~Zs;?wu*^E+Hi=t_X;~Y>ZlAf> zDr+lhOR63H9F3PnUYH~vI*QkhbhxvRR`|dZ&@zeT-~;$Z~e&?&Rbou)^ft_8KTn^&%UGKsfd(WZ_7w1{Qo` zbw9QpcV&*r?M;+p>F7Zf8uEz;j1W`uv6=xHwAS}or2F>=BK(}#7MRs2q_ZJfNX}Z3 zmH{8HDz#-v2f;U|#tK;zi{ur$#H%&mi9;lCbp_*7Qzs{#>tVU{YBYcczx-%4GBI_B ziRIJJO&$7Pa`bRp8qRHJJRf!+9TgpQhdU~Xz}#PwQB@oy>Im_1POVb7zdG*VBb*YEb`Dxi+~2+7`3-VV_0$DHno<5KAWvr7fmwDngh{ z1I3RShsYvzm{OLzajCAJB13c+yv~(Q<>5)!O3!9|!MZNeb1TCe`Hk(!sD(|u8~DZ7YNkM0;9-f z?{>o8DCqDr2DSY;%WvmpHA?-lW{4hXz#{Pqc(MzbCjS&0a7*kKX?NBDc&X5!8!Q5# zeI|dC#v%<62Rpk{^N**3tEQQzpF_uJPqnSw76(iu%->aQNmqILco&hg1SQyRQe9BJ z247H}J5go&@(*`S*b#T7siCy;UW-6ng2(z$S}#o0SNjQME*vn`cuAv(tlsrQV zh!jFt_KtZ*%RxE!e{nNIM2c~ouZMk$lxid*$4r=86Swc6ea04{YvNb}N|JMtbYOL$ ze@|RoyvOi&OgGJ!X6(QjSspzSlP&?x2FIC586jTB*H%Y>(Ieabbt3)3>!Mj&vQK}M zS#Lg&6O@w^oIajJHt?b1Yqf;v68O+I4&4buj4JlYyo1xRqcx)|P=6=?@dm+oV}0KS zQ2{A|d*H7cMVu~kQLcUO4cNmZGPpfFeP>$ies9R~V^SVqG+DGdZ6cf3G<8&i!f?g7 znk&3FJ7yJP&QzY{13y#L3Y2NO1Ue(}T{}5D>(Rr$A~lxKXCWAJQXnT2o1*z|1Kgkx$k$N|g-EVzT1 zJ51RcyC?MJm@qrSCHM~#;mp)bdm3p8e^UuHJVW$D0P^!xoiDrkrZq**7%?8a#X7(A9~O} z_1sKcUeY;cDPm^_)@W=Mk;W3=`e4oqe3OnIp!6dVx;!7$IVWgiq?r*7aMXw=xjC{o zlJE{-2^}j}I;QIzR$i$Kx&YxCxciE|PD4BQE&$((X~LLJaZ3vHNVaBv=hn)UMcM;C z8wc~1k%cI*o|$cD8JD5e0u@7?yCY%2&f}HauCC5i!WcfK#+uc69p-!J3WJU@7z&0u z%HM9>a-k0UiD)~lq;+b zfUKxz!wYLG+YMkdS+mOu+|p@LP#hoDF-PdeTW=cr;AqTx@>x2-p_zHW=6D!`Pdhh( zcy~>CAR_&xzVV6xfW~Nf7i*Zu(aM@IM96Ul#=ZKmGg^_ z8PKLF1JWy7=25VCiiR&kg$SLz{#>*8QNlKXsGDN z1BsW=A*hNkFOVoigc7N>g3be(xuc501)Ua~?FE`lJRRr`ZgEZeE)G)u2xblzx#$3s zAv%@_=9Ng?Xk)+}>Bgo+L|TbwTypFa(NrY6F|k%x&G3BexWu7Al4EdTo{~9QJZ_## z!~5#$$ZNLnUOu~qeYjn!2ZBI2Q%gSjl1KM^Bqz+Kkb2P#7Bc+qCps{k>i zph=9Gkh~-3e$Y9ZRbU2j^?N4s-d3@oo;c+_yPdYEbq*Agm+cEbFaBl)W@cfw=jkcb zj8Ov!SBHC+!?35D7obh}JeN~GRStyBYABuqk-8X`V^~fwkE)6q`@8J5wy3D>?^j{% zx_V|d@cUC23pjwgEhas+ZH)k*?%n$JKuLp}gX?rHq_woFtSFEzw%4Y1vVvBz{LY(b z17U;BFM4>3h1toL-{aZ7;k&x;Xnrnh3yvEs1~?o;SKn!p>J1|K`OKnoFE%S&pZV4- z+xQwaVcNvlPkyft-MD_^zv)VMcccEfGiJpB1_FS+@H1gt(wo-V zf(gWP8%EjU#OHljIo#3Cbor>Ge2csxzW#4sW+ooJm+-xl2f1}q+yCZW@z^tA5$e|% zekk^+8w|36quad9IOIrECHEd(NvVX>=yS3l*%esa+oHqZ$CZcGzg;Vx2dzS z?=B38YC-6JubGu@dUZbkqZmVQqr6Lsu|1>=Otp4L+} zy}PUQWF@pUTVk)aHdNC45x832ancG_H&yzcMVaCLF-@j~tDG9cwW_W`@qT!0O0P}E zqbmqW4(Uu6TU82^?H4OYL2+7Ja(~b?!k9yu0nw0=l?c7p-zUEqTV&a{BN6gc`(9FZ+NJ`$xBUs@P>gC5Xz{SBY-YL$kbGF-?(Wsz7l&)w8KN*u_v zF29NwP(_s?QvoOjo|fSeA1KnE-FPly=qcNPg%mKz(^2vVmaFoAcf%fKNdOwNuY^Ci zNe!;%s)J4_`yr`*< z{06p_?88Ds6%6arOBikfwoSW1L1#;yj@@J3@N?+;Y#m;D3= zCa)(Vz$@pJe6(mR7p;g3eU{|&op+|7554iq5}z)lC^iB$wSy`1jR(#++q%I= zgZ07i*XBUKwHd)5_<$eypT!rzf#1RDz@Xc}KwywsVE_L<8HMtOK5qJkSu{FzLfJGw z_7y;nX`qdMWUkE#AFJBD_b8|X7>LZ!Y(#l-RR2{IlmocY=IZ5*azYhyfL0pdb zn8&ctVGCRNb#}&70w>D#t(MFtj^Gw*F(f?qDou*vrqS2XKzN-&`d8TfSZbN%Z14B) z)(ORUc2W#N#4$$?ln@UA5PXO%QlgsK8ze|~cx zF>HWXi#x+ah#aW*BRaf#dhF$Sc<atfLfj_K!ew)w^mKJUGOLoCHvkxx0>b^;U> zMe}Aia}~OKQ2(Oeq)zvyoa|*or2}Id-^}8sA7Op%P5dq{4eIJP>mAz>^TEgUCoLWX zs4+aqd^(#OQmL#d6^x8jYRcPg*wwk&+2YFVRO&H_vFj}M%%k=uCMte~c1A{ZNFSTD zj#z8k(w%wI%+p8D;5OQKQ#hR)>g#h%1w_Mf9c@#(bSg$tT3J2Y;b4SEeS;NVY>s&b znD`L%w$HgBaj?0vGG_w?22zRwa*8Huk746+U)r5U_u{XS0|lIM2Y$j)~k{vdwcshT1^Q+{kf?upN@^4T-S*@d1$C&m2HsR zDUI$f3ju*wnx*pV<-FgpY72?a)J&?VxF{^*d(nV!j+bRb4h9B!MO^Ny@PGj4_vk|} z%p9#PFHb96#*{o7$%!?a57$^%+iPbS{-dmJJ?ocZY;GPWJKNism}u6|5AckPlS|%$ zvTk=0615EqUwdw7VF^-FQm`eraJsdKi5TDiD&R(qnTCdbU}o-=N_h|=GgGa2B0>ws zz^U#^*mc|#iY_k+MY55iz~MB~nt8#wvS2VTtj+7yn5&(RFTMXbMIQ@C4MslV`GA7K|{XGaA6_Nt_S`jGJ zNo9145$lrZ)slKi-0SV^@6%DE+e_i*&b1Hs#)^~;4%?6tv9%CqA0)w9i~d)Wo*ws@ zRscOcGjecD5;eVNU~xf#t<8(Ak&}S>GKwU})bia4jlI2LVv_2c(e5@j(t$$6;>rL} zd@#a@uBDBPqf*W)w%c(T{8YOmuo_hkn|FaL71rk^j_(GNU@2<|bDiF7P&GdIl!?7e#gFQAEdNY687+ z;q~6Z3l>Y2$H~^i)&~>U+2!oKpa$p5n$%Pp|H;9wE~A;D@2ReoEv{Fry<=lqrVF_j zx-f>r$uHe;`_oMJcJKZTEK@*l-{-Hr_uzJRJYkoRsTW1Snwl&ZW8<7${kuo!aW=vj z(Ko`@JM%EB>W;2FzMf(39j0+Do~^+o;3kEIg((vR4-8OJQ&W?K?Q(OG9t6Xr)iSx) zCM4`f5O~89be8xpqXOQ%M895TVq$|a_&POp$=ma_*CQdkzH^MsOiX0%GI=JcTkT)O z%ryQmU%V~k?lU!HX-F^MTDlK@Gx7ps4C^A4y-Pb%HvPpOiGnwGR~nt-ay#R(ZHZ?H zWYulM=xns_X-nC(WY_7l^=uDq*SdRfIa#S%?Y@6esLRM`A6om~ms255GC4RIBN~j6&v-_F(B4JYK37%h3LCe5@1f^^Ag|z;j`DVlg5;Zfa{2953z%lV)hh5mfpX z`Z)=J?Ipp#UKh4gn+Ojt92{`I8B>442i^!6Fgz);NsTnTW6!rn&!_MA}XD3E+ z9MP}0u#kK*`D5)JFXI#EUDJ(2MVO?eOH5_|woPQdx}u`LBxhm`^9TRQ;BK99SUF%m z=o@{yjuSbm_d{ZAF3B(XCk! z1Y5PW={jHjA#rDtI(^fobWTo=ylPTbPL3cc5)|(gRw&CFQ_CX#=g;ZtP`nXwA9h}M zwa0${t;9nAFKLX^uJ#?Rt0DU2)P3)H-f`=c4B7U_v$B+L3euH&wu~eAJwta4Y9WjX z@IgsE0#!ql!^l96u!BB@zp_De7Y^70_JXZx1X<5k?vTKRc`(aNe%7b(h$^Ycy%ij|t8+bDigX z6XVPk&KgJ90HFnYj||jkMa@@C`QQG__Ng;wdx9 z8I5@;da^|!D8`uSeRfb0`4wgKXIg3)UUT=mxqmqjjcYzj(>YxbdiFlch|=4_u=VN12&$n z5}fXs9Q9-*xnak;Ro75sPGvTG9>fs4cKrSKvS69@6 zlm&XaA`~$u=Ef2^GP53au|-=hGtL_ociUodcrU-s@FAZehp&hG^=x)l#0SHv1-k_e zE~D=UjsMZJ0A--UMCPxkql6oNVFV^<%rZCE?u5-^b`AXsr5>T)1(9|}TzZ6#c%0Hm%!HXFDZYZ>hq?Ov z+3q>l4ernK$D6*5E+ziyzGIdzAnpkjlEu3+c_ftfa2x4=G#FE`6?q@Ndk+^}YaSFX zpvRVCv|5f0@lRle)S?3ekw6PCnkM-msfL}PlSJD}q^gMspO?n)|6N}}gLS6yJV&*_ z6wDF%IK5n}+k8s7ko91L`olCWFgkHy7#smJ-io6q31<@X38(Fl`cXnFr2TF}?OaS( zDY3(+3d%rrk)DN^&lB^Ej^-xkjFoh~e(rcF8m|Lr%1D3Lb0H9Z30rn`d8>N#l!DW9i z@rZ3c@Z9N_r@#z=z^`xhXj#G%OAx#Fd>)1)FsT@?a&81Ny8tNwa-*kl-`CdFOU$zA zy(E{-eg<+OMFt$~xz(4SAEl>kzK{o|bRmc|he;geIvnvP4Sz&8Gn|!6$MG~Q8hD-^ z_~ak%ahbII&TrpuJrdE|RUZJP^@U~vht>l7U6-{1$emw7GvC2MzpHkTmXT|y&^A6j zN3@2E#PENYwez`e@FJ5Mo6O=nJu~WAVviEC6-#RlC72-pj1;PU_i0YpMIHX71vq(i z2ty7F?*q*TnX%q61_oqrEB92Ot2->xZ9!ieKHED{Gywy){Zkt{@VD=F*y^G#$qBl4 zX0iUek=XHVb)Lt#Mn;)5#(v7IPsR0h`BF*-0+J5wt$L5palSmM5(qFbDn6j(jgOR!1+~w*njOE=#sflKi?us3?`25PMK|qrkQ`@`a~ZA`U)h5 zM)vLrY^Rjh)1=w5&DAfM?~76H$MTb=lz(VWO$7h*L<73yV9*v?fsIP0{#O$ILOYcJ$Q~2hStC;R&746deve2f7~HpjoK3MTJL@yodW(_vP_`0 z0+@i>cz*PC43y3YB-V6+-XhrIn6`AVza^>NwuE65v-k}9(RJq2_2rKwi6qd586$C`nOBQ903>Kmogxay+mFB4%C=s&QW`?oKyB;nKC#cAJp zzOT3+hW@KFDE=|dMwI5o-AYeSwX(7|xA9LGBu@~6$8y*eT}Zp>c5|(}%7FY|n}G34 zv+yMFDL?YT6i|Bqj>mAy>tD;~B?bN9>2@q_y2F042@3u*QaUOy<%Urkq|g!Og3{@% z)3*zpG?PPcU6%c8_kOIM-xe28WY`5~=}7P46KmZ2hp$|ldsa^Wli%8(H{i;~V*(F9 z`G?pacsYOlhPR`f<2;hs1p1%icg_SEs4a@ZZ$;NnDgTFgyoewNQm4{`H8_ojotXc$ zhV{Y~i!J|5!f~ap`f>j{J?`h88kR^ouiHzXIONq5bYn zO6Vy|_RmAhQqAWz6T6cs}bpA#VzXEB0$_J?Pbt zn3(3y`MCNfRUN{we=*u{BsEZgNF(j`sr%B=VpZDFB<=d?A*YNch1H!8UgMH8Ci_)I zgyC`*B)o6^6ZiLFg;{vN8U~mkPJ$Vn*xLr*Z8NV{p(Mw$y_C1>C+xTSbYCiyBj@o# zT(a+yW!ZpIai1_eYUW{Zd0CT`wir#nHDjZZHe1~5^e8|aH|*Pyfy0g0%2Gh%SW?+9 zo+G!yv!6MWo!xsHC z+zFEDm-9?tt(w){ylhmWL_CHC)$ELR0sk$kx_&p`*QdG)l028yBx!dq?~7VBxwx!V z1WsOUUmvOu4YkRj3*~yl z!qn@Wcm)h{4Uxl940+g#QeB2G)sI1bL^n-mc`e7z2LpI%ZqL4n1U?PwDmVL04HngK zzCW}<+-Xwq*(xO_i8ni=j!A_v1BiGY$_%1uuTRG-?#(7kO{q(X^*582x~FMRN4=I) zz~1k=ZS-rPg>}%-R#mCui1D|$#r#^D>k_PLWT}`SzkoTucZ1HKWApkz|CWUW`t+Tj zb=HdN3q-G4R^h$T5{5xoNhW{8c7|=6mf4I0?$ha$t4X=6al=WtZ??*IC|6U3Kg-Qo z5AIvxb*!+e% zNvrYhV6tc>9E)F!zD{0GZ^_gfHMt=EO|FvKwN6tF#Tt4y@qh}HF^1vj;E?}rN!lTU zFk`YI9XO!hGgF?w`!C*5QHU(7i7@E;WdOQ~gG7Gc zQSK&A5tU(4jQU5E-vW;ngtcdgM(u-iv?V4}Nzo{`E1CYzaLt5{RZfHiB55D0uZ4rs7vXK8%|KRGTfDlhB zQFv@=CpS3(v^;}pu)k`jY%gyp|8;I=uGu=v0+M4C{)kz|<|p`@bUOdCPp#$W&%#$9 zL_Dr+Xvuy&*qeuk8OG77{g6cPw*dA#&9@=|k>E|W(;a*U2~3Jl(lNpON&efrwdzzM z`Lo|?mFxKJEB_UV=AHL>=9wLH#__nfFhXI1x5;M(>%Zo-rqLUbno#z05R!;q$}&8W zE&uE;z-VEjSvW=pYLS`F5(u}Xnt3A5nI8R73phizk(CFZI;@Vya<5Py>JHEz0JW~PfXqisgw0;%26 zNy=esI{=HYHHYyJORtrVEMFv69I@Lxr8EF%P+uX|1>uN4MiQcqneY}VRAg3_vV>o{ zt6Hv{)KsfhJK85Tj@ZsFm@77#TB@p>bC@o(E0_yvT7W|-9f(XJ7z}LPoxqu?@ z+M4&hvn;S>DIs!(SUqiZBwo#P8YOqcyLja3hXjFjk^xtiom;LU3F2Hm@DJbymH+CQ z7n5$v&1uTi(j2RC!!YkdXrpG z$K_hL=Z|Z5>ZO?UW_|y#>kb6Hd-nBl-esdMe!pd2OKTBm0a}opU0w(M9mKLjtJK_X z345YT2-=uWY1iB7Cao;B6h)oz@V`+YphtZRTiolv2$(cWmdwH{o6pj!YyT&QW}8(v zB)>}3=x7fO5J|dyM!onyZrg*XQkG}2mRd7}NwAc5tFp^negv3tJ^#-wM)1gRo<(hP ze%N!1U2L#)}SQs$m|jHtvpCymcqi9W{2xgybqiBO!(c_H~ysb{TXwCNKM_00NE_ z*3yEe1#8;?`@duK;Q2L-v&n2MiEps3rVYpE6a9L~zFX&g%&8nz`fHln$=X&+*k%-E zBw^7D*!@+Uv^t_14=9v>RUX0!6s~FJ<}@OemJ>EoCe6t9&}}cl3RCz4t#*@Exk~ZT zI*!iU7K$XPD|0&|r=Dd&F+rxk&2ELH3M>F&s83Z?fYf2P3V}BQ77MSb`R2zyUwb=5 zlGfzGuOgP>FqW=Wp^lc?+XRjwQC}P0kspF$Xdk3Ief@54ntET*2NL71|JI zG=l=Z8pcP}yI>p=#~HIJ!{?+WNJtF#j&ielq80rck=9$Z%jeBtUL5dASx8Ma6!v*U zFK>4(U-k`hE(Qm05TBpFX=$wm(>Bk|kJs-ax&i~Cbu-6F=451KFJ`u#X%-blcNktD zHQx{^yg@}8FJ>Baw{NX!4CF(NxY_Dp^rU7#H}KeKN=O!O$P1E277_t{x}PU2sIOon zBQrXAs<)|k>#zL8+&(kD(vA={xnImOO{-oZmm`CL3~#(|oO^kaQG*Y_Eb&vkZ|4fzx1VJMT1i@Uoyl+zR!?H}YwNml+bpA#&<)RWY{{I8>B zJ)$`>=oyE{`}!~iWwlZtyYu(*Rd0g=15b_}@Nkfz8yXwlQqTHl!^Kt4TldF^6nB5m zyhod)eXDwLn$f;N{S-SQSu$LW{nR6z`I`n)y~-o7f80V34s?>%`yKCj#tr8clV=-r zm2$WNux<3{PpP}_iq@RFwJMZmJY0`+@yrhP57^>8Bi=?fJZ(T1h@*5qPafL?%!sfD zhUVkRv@?n=XBd}A#Xq@mf-}SseV=G#BdR{Qy6{5yb0;}tlb%=?Z5mX-3Boj ziWe~H^FjI~NG(RRyU3YPrQT%w#ql;c^DYhLe#TGbW(?6Lr^B5emvF)mlf6vCpn590 z>1n)Yqwry4lioJE6L+i%lNV{VD}rIOrsq`)5DwsxcOH1#64YaOjA$+^qva$_#vv|| zq>Sz#!ZF~_d}L9TWQ7kJXsT1)41Ww=m6wvoc+X(FqAEnoKh9t?8UWF z%reRReEiBgXeU+VAJ?mBQN}yc%-ryae5YUH_-UKi$6UPwJmi{^!pB6P?LI)&AKn?@ zcUmtgp)T#7Pmh0#Cplt9UBbJ>$h>hx^(kEmPkSwS{1B;G^hIFROsc=rYyFVjT^gR7C&!-$fYUwEf&}7B6>nUE z>w^PuS1(e)xC3y`AB{G385Fp91!hNB)X3P{P5y@XR~+c^ZHkBO)8+60+{blH;}z?5 zkEjN>mtVI(p&vOS@Tm5op2JHm*JI!FHFuk?oTcA1YaUP zd6ir8-r%(7@L7XbE10UPE|$@h;Hc)+FqWhw%uoDkpjcX?2(TmK!k$M55i5ek_Nl zb~)--`6v$o4i^6G>?@mJK~=KGuD&qBpSdJsn|d9D$5T^|=S|_tDrrYH&5+Yjs_X~e zR!hHIuAD3W(7d1`EDLAPI?e_5U9>&6S2Ej1J{q}RG&)wbWafaPyCiUSAiWWN@)>)R zi0fI+oO+nVY8{doC`1ZW=6UtFU-X6!9ZkKzdG4=Zv;V#~l_<7&yFYDx+;2&R2fKR}%!K=Df54D|p!w<{02vEPcPe|>b79L(Wa>I%Urx7xmSyY8MOqKDk>NlR+zDDQioOz=~s}DCP>Coak)v> zGiS}h)PLYh)AMrON8lhiilUf`tI$dnM9MsskXLy|&AA5*I#?U2sZN#~&g(Z5jBU`j zFzux+ka(UIkP{3HtrytBgtkXgESP5Yb?FKo4BvTB>Kv~L+RzW?2UzV%fRx@(HR@tt z?ui{?CqQzsx^pbBK|6p%w$RspVrXOGX#mHS3a5HNa~>mzqpg}XEbQa26Ol}vvbdl&p@z4OPKl}s5uCF0 z!zDy6aN7+mc9rhPG-?NWk}{(Bwd;GMLc{s3L$#+%PnSp9tL3Y@Wg7;NB64|gZ=e{} z=WjjgSX?{pa3vU)RgD z)MGK61KL5~WYMPH6=68PVOZPKsXd#40|ZT~?-mmZ!-$D^>+OPK;@)aHCML2^$Ns_9 zp~tsTPj;C0+CLSyb8V3Vd1C$NeYMxD5vqol+##{ZeW1H~> z{Y^AHHaB`hXfh38V{Pyi3Jjn_l=k#wzJ~)9BspB8S(>v_O43-npj@gBGHEvmTZ4-i zPf(^39cY5Y$!>l&vok9%f<@WhdKm0Cw!b?c>~@ZcI_%Cok+~-c`GS~Qn`NJ`_4!6q zZKQ5WKzQze%U4#Nr$fuGS((*w0oXfZO!~fX1k)Ud$E)on3T!1Mq{a$h@DbuvuDV zR$Vk!@^H#%RSC1+sX?nQmX`!x{<_4llH!VIU@H}kLa?YaZX}VNqtCw2Yk91=LcW4y zKQ~`QC`(2|8R$^_lHcJO6qU2CIIJd9yoiH z@Q}?S$sJSsEX-o~VXW4z33J(Ou0rjPU~*+oD?R1_+#NU#IzQ--gDJr0JyN zUIt&Ci?Jo!@WNa-;2ODgC)%tEqBxE#!X+0sl+AhtaLH|Ll z#R(?N#cQ+cu~D{CQ~(49E3I)JnYy_fo(PuCH&wYgdkF10Wu0L$q9)n#S;{n6#1*Yp zFt2A-lGn{sEge=L5C%2+M3NLOG?aVOFwjlLe9H0Oe z-h|=BwG^0~2F#yj@}EuhUv~Rp=_ei4wwn27S^S6{Nw{56VQoMRL$PJS1ye6h#`}0O z?9aIQ9-DOFP$f)_Vl1t!#s7s)Aij;euhT+@D+gDCe93l)89TCugy1gFh}Xe*xz$6` zyTu~84h=&1u$O;H$d0HjOI6x_^ES^S;uMUv(f-|Xe9+{ZTClY1ez|LotP^u+hSxbN z@Z)7#%Cx-H)0}$fe+G6c9KE3Pd;!B*USmC<&j=B#?PC`k8>(bd>ZPRC>uFY2OnAT#q?y{6D4Cz?Du&IF>2DTJm6VeUNYej+VesmCt8D53eDCRPL;P!I$cJrTuCTvagG^1?9)F>QdMW*(ax)VRyNESO5k zedSvc$G8u%wuquk$|wpBc8KQxSicZ9?~jG?i=DHUZ(^x5Kl0bM!qE4r5sAkBi{PI(j zP|*vL43yKrH|rxuxvh6$wAmTjj!&TTxh{DlCo{GzPMGUi$rVQd&6XU=4fkm?*?_5J zJO{P}^ukt(CQjqbQYjE+&hx>BYCw>O3_a9Gd#nS$$>s4bDXn5?KDhQJW<)1b_2x|V z1}1u?MC!qc6ijP7W7JWt^vyj=lg$mj=Yv>w&blS&@q+CxSqxYACYnfgPM+tb0ktJA zqRs{jf?KGeMLXoIl}4BNk_V@%^WiRB*!(hy7+Bm&!DgNu=nx>Y=%zDE4EKKX)a~EX zC>7@m$n#C&cQ%bW>5t`18(rq;=c#(|iXyQH-ViSf)32fI`%&Dl*%W|KfrYIj+(AdI zjUSMv`QV=|0BYcDH+%u^2?7(7J4HVAD{eCy=F0Zjb-WJ4hg{J&;ErEY)5XS8(RW>=P)$>ajrv6XAyKjdsVmd=#+%!4 zb@C}Kpk8Svel-VO9}WzRgR<(4Z*NJcDC=B258kfloz8EUQ)b*fhQ5>#Q%1o9E(5xZ=$1!~<=yC@+iqKTuUeVj z!$Kna`2#xVhZ_@p_2NL`%GzW8AUGa9xuZd1jv^NhPLX^!q} zIZZH1EHOd}{lEo*D%Cp+C#!wP#$vl#AMGZg?Is^;tqd#Y5QH-BNQMZ5`IAKsAKCT# zgeJ&7nr+%LHl-9NEyiFuemV>nBKkc$eC;~-r>5cz=b)-)TaXEW>8Ibf=QX6gVXdUk ziqq5Ris@KWz3_Y?baoW_$C-4B9AehCy;XR4aYdi4pnt0t=DoK{MnlW#$NGo!DeUjs zC@+s8z90O;9)&Wb)d?Z`(h10M-ocX@fu7U7iVwc#wbZbxy}o2M7pUNb`GCWA^82h0 zAohNwHm^w?LGW6EmJI-xnVr$}Il(><(;e&f-JZatzal`&3L+1FIX?g)BspJ7J}dSz zW?=n(dW#Ql$+s2O_&FS!FQhu(%-A%S2o-ffJ6gsY+NQal^sYY*(-Y`$`1_a|I*5N7 ze@XD8@B6%`sjx%h=|UL7o0mFVcz3Z^-9p3L7&TU!U8*ip->QD}fPR+SAk|UEa-l{R z`O)E6*oD2Te|Duq>jsx*5~8qlSHW=maVW{+n4A9L5}yQ5Qf=hmZcRPUc0?~`(Mnvg z8>SuOBYk=RxDb#%lzG<*84UlXBrYA19zgT+tH%j@-%juDRTi9{Bb}{-<7pxz#+d(? z5bzg^B``-CFfC6T4HXUe-x-!)$2U7>{+The{k}~YCtf@mU*4h)2+x;E0z^azgHlz= zo6>%2`LBx)Ef5%$(iMv6zSJRvuUoI~bejeVpx^p=?D(=KaPzX-Z=ecWHD-|AZXvV~ zDN{o$`xPu=Z8Y2pF zLd#=_wEpmcCsC;L#~4jK+@7$?YaqTi8LM<23w=`(2y9U^>Gn9V*hX4xl*08hh5p2Q zNEOioS90>(+V?o2GIC$-%YEfo(#Wxo;G)1!82Q1$-o1*+4oX`?RI-BW05iUo!w=?4 z(*d_ZA)LKmc0g7sG>>4;4(%(W(LH)!STcF6e$06`7m5=?f{8oUVkA<4fw8*T@B_f` z&!5XO5WPT*bd{Ot$k0USel&07;Z$}}G#jZ7bG{VZvDS+M|KfqtZ+ef<+*1J;PK_7iSm-?t43J!i-3pd`o-VnZW zq#CBmaycfEA-^bd*}!?BBY{9?_b_7>&+W2Ld5<5z=RJG!9l<#XcE(nfHF4TxD^F%r z|M7D(_K!S1ybUiv(l%c5$f?VFjnotEZrs!u7GATT*>Xy@RrxJ-9V5Mv4IcvNwWNQd zBV_p$KFmA~_+^p%P9RJ-4(3VC96?^=owmTPVzCi#{J7Yn=8?{yiifAA8=iMp^D6dV z&Nse4&?!J5rIG+0>Nc^Gbk4ve^Cb#O>AkG7OReXt(|tFbnT9bYtasmq_U}kfPUnj zAt&2UDbUwMQ37}=G_CVY)115{9wuf;w&|pMUw`zyat`M2gKCW&mZI3~FrjRkDKLM! zN~$v|n*lP^577jm0{0WO37wD{pYa`>U+H_j=YC#&vO|~(x2iH1*2wXOi)={^-uMBN z3^!$hL}Du^8nyXNUY8@e*Y%N8BVv$=q|5QRk~q(^Cv0g6ujngs8y$B0n8Nb6a?1DG zN*4|2^?clK(oN4}QI~nT=LnRdS}7If`f$gA_-27kZdv>(!a8n|zDMDY^W^CSIbQ;I zW6=%mn+4MhG&P?4&x2e(sl(a=J9Wam$`=qy=KUy{#`|S;WKz>7(=|+3;&0Jr(#T}- zeVnj&@bZMA1Dx!(vt;_VDu(r$aE3*JolnBP9V<786-jS8-`m6b48us{OND<>^%V*9Sv#LLlaOym|4+95Y7BQ9*6_R2xE* zA!yx>qF1Wy&bts;wMZt#UmDS>_sAX#6ITlEx zT7m_(s*&^jGDsTM@qHKRjwUcealXXh+sU4EAQlQM4!pK5iHR@Z_gt?k6Nv(XP?-;p z?MSe03~rW_U@-{`p9JlT*9>%%M(TM^0{4CfYU_4B(E;16c{0plc0!Q)U z+Z#>i4O^d`Sop{cBqy?W(Z=?B6`47dr*mn|C)ji2aM}$RG*Zyk57~%Q$2h7R1|MyP z>ZCvJalF9+)PgM6&adDJag1@&^t%Wa2Pf2gCFix>zzSSdsQRlP!EuQOu%_xUoz2eCWk}c6sL^}{w zO%%zouZh01Z5bpJiqOMQ&<%=>|I9GDq6y9MfZdXt>`dzxq6NlU?7B>C$fJ-ghsSpA z#!-w$?ffj7crvrXjQho?E&?X?SzdlfyQbM zMe&KoM1fG9ZOJZEJo4F=NIi1{5k+4r6#k&HnGuyGpGjyiAqcHuqM%@Xf{aHhA)d!5 zI1HD0q41#0ASGjkU<(};`PD9HwUbu2JLVu3u5cSBBoOK0Mb!VyE9gcwv~WSFG>*x`%=!c%fmrP(J&r5!E)?F6xWACZ zUR!W7CaJb@6F?A%Zh8F#TcPdIE+fV6NQ*H%^I%X?SSljFxVKIYz(l8xb@IJKe6k5? z_rNVKDcnAHl1)nv(pC~x5!Lp{Xp+Xo#C17cm?+8-nT&FKCSM%cn%YV}N>0^^e;olY z3bjI`8JMTq=|65ht`wkzR-&hFd*;id8r?6r(#%rR1dn(~hcbCiR;$fGUj7uJL zn#rl_2^qB@HNVkVqz{jypqU{HMdQ=`bu}NBfQALyJl!9*_0DPV7|*a}DYmFnb17Og zQMK=^U37#AfeUtG;AJL{z1Mo~Q;qYWS#S&~m-c`bN28>7m%jTISbD)owvZ<4-ZEED zv$AMA)5=MU0G~?P~Leb>mVRieU1ut%R9P%UBZSn1RoHX))p z1--oiFXwczfQ}oQGb#$+>PusbC^gH%@t}iaX;!sGlW}xs#^^Vx_vdfTEWRnl&mY3 zc}=E!?^7nf`h;aZE!BQ5L^ZZX(dcSS^;s5EAF6JWV%3O)tk(m>470{Cds6&K&?3Fa z&gsBGE(BlxgIk5>+sBwPoGBnqcr))07pw)*1?Qvkmm8v{s*At;G*vi6O;ih{ub@${ zQ2^%4o?b83AIUy2*KSU=8S}APd{&&PzQJHMFE*XQ5Z8b}WM5C^7h#)cLkrfQAJCTr z&!BzX9SqnDm?y6~Rd2j*E*Vs$4#&XZcXtlyDLFM)e|>QYl;bO@G zqw4udXRKEKl@P=|$YpLICMGCx-yduT0cFFZtb8PinA$TayuC^KdC$6KY`|meq>(%uxX*>#X#pg{O04Jr4e0dao#P@Jxe zO1>c!Ud{a1a&d=T^g)XCc-5gMFpE6I#i5R`^?|E;2h~3)qw-=84pC$BXX$p!1JXZZ zOe;?&9GhfSi}wEnAc-t^WE9`hf%|_}dT0eg=#X`P6@+|_g~JNg*R}<6X5_p_R-v^n z`rOuW@+ikLP$=v!V*vvlC@14oFlJH92m)617b_IuAims|#(ez*S5FB33E$_Vjc;6E zupq5GPz2kbW?d34-1vTI^e^m3Wn@=* zK4)%y)ktGh*loV0P{$OA+&a-WorZ75)k1TNr)M{3S9cM|8tV66JtjN2UPYcOc)T5D z*qiunTrRAYsgnu#QFqn(=?8ub*K^67FgDfu8T&n(@U29N9S>9T-d7QnAWtd_Q{ztS zC$*LOz-WunCnuQ4DrIqK<5Q0cW$`#SgQ@qOO5#FgafdTERB1S_29LH}nqS@tdnYtn zGX-xZ=Neeg*|L;6$a`a?Fmrhr!>RM}X`cT;WK`pO=QB1G62rThY2nz>BRD){HC{jr zs#)s}G_vY6y3vC>^1>XC>%Fp40F+V36Oz+rZvF&-m}OUH|Phm=d9^NE)vtRfA}Z-g6D|g@|~M_coRvptKnh z_9o2NStXGKPM5Oa6nNMo77N$-+Rur4^G4zu&h~vFPek9_l)QbM=;eu>Usfbc39I3e0#Sfphkq^zJ4ojBkfI*O^x^JYW`{c_K8t^b-LL7*=k-aW(#NS znmlXg&ZOZf*&$$7oR3LI82yYj7OR+8=&omNyhYOsx1s=+z^BW5iX4;8*ig@xyU|GL z$azge$DHx;p)6cn+@zOE^5^NRCRu0u+JimHHx2ncdaWDHjQe!?d>|4YgPl4Sr9^^@ zl8qKCjU8jcXNev*p=?%ZFxn@~$cyOK$!Se&xk||4f)7j(HxN~UEA8D5z3?c7srP<^ z2rv(LYt*kN6duM50{%3|KiObIHadd4ui}#QQO~;w4RVVGize1eG z;YpK{&X*%|4|8{Gos&b!dy;)~pV*#usjNVF`b)Wf~HTc`ht;&SR-_I)f>+jZS$w7t(4 z{IPv4v;}p;jC+U{0g8T}w9$1NI$-pJD9)-fv;Q&|2N@FJiv2n3;eC29U9t<%_uiKZ z&GZ5#df!KOP4v(z2L~D%00qTM_42$CnL$L9MYQ{3aWWi~guuUX5`HJys1xBz{+MLe z^1ao0aYw>){7ziCUSZo-z#5-eBE0#)2ntEn)C(+wdSgl*4+!m5`&`v@)kSw0%d*&6 zcW92@8f7DvM$^SoQ3Y@dm+=k6NV3y7xvEU9kk#(AzT|t>ch)$M`VTynNXqLueBSL} zkh;2Ur{-nbE484#KkyK6pW3C)>$S++7F9OcJawI4p{~V1X^0^1#MrT3(j|3k)Y+|j z*G=%%N#`$4YaZVhR_9Dx)cOnhl(^`}`1=dDI&@#5zL}#!7MIhS7QZ^ApEjS=dX&DH zP;ZzJ00ZdPoOWui@R>1TXx`RvR5U?Q6a0*IF!>EtW1j zEE+aGxSKz_6<7bFpd@4wq*O7J7O)5sqOp;O;sc9Jst1bfxOUJ{bbzH*H6 z?<6O%ke(*9wKAS!{O^6?|LHXTH*WQR8R{$z%8$d{(c;%q`b}y}TK_7vcl$TWvgv(0 zx%MrY#n76TMfa(d)*{?{MR7k5z;Cp0>7LG0cr099lZ;LOuV$_*s>yBZS}B4QIdr6o zh=7zs6_8`-y-9D1hLQlG2I*3y7wMP)ihzI+S}4*>AapQ5K)Uo6T99IB_q$L3xZ{7h zk9R+Q-^*TO?YY*RbL_RtUIvD4+5Syiv<=xRZqdY% zx3^z1zBb|t4y6eDxj#*&pS-@ox#ZdKVu%5^8ar@l6vCy%_3f84#7GK@*i`c_($CFh zlRDD0Lui&J9w$~)fyeTTjBj((Z7^>bw!fpRMx)X7^+m_=rhx2NvF`iv>w~05BQN+p z3WchwtZ6Rz{-!cSjQbI{Ab$+BN94(4&J8XN^W=AQjqug!!dUI?(TPRb+|-Z8cE%%X zm9N*a*z>26#8?ShhdRmnnmMN?Ti>8Dm<($XhAar{%X%brbR+L2zR?6E!viW_vhQyA zG+bh`C1zpX8GDNw^N2jUjBK9Rvi%qQ8?F5mnmD^on!})VE67*-_3?2?-RlT`syTv zqzKX|8VjmhM$60xW0LpG{ab6k7n>Iv-M)G(3q<#N0JrJwXW>^%v{V=9kvm-Pwfh&2`EAkx=ALyAB5SPQ5 z{L+#Wvjkg!4PW8*e^hpvrBq9Ici{5QL4L-sQ!NYKT%G3*rV`IE)sKDBzbG4iFmvBt z6A?|G{Bo)a2$!a3Gqr)Mo-q{#YPMbyS1a-}^Ho(Za^r5bwLoE1Z`W-Ob0q&??ghn48#*C0FF~rj~PWhv` zD?XQ^g&qj2RE!}xQf8Pxg^0s&&5oc?&nXz08HJwyC0HVuVJLN9Kfvw>oG_d?Ou$TO zy&oN#bM@=@tg6oOE5t3{PTjjCdU+|D9vM4$baNF_z&VA&ohHYSzEL+SdJ5ETTY@|o{$YlM%?+E0vVumzLbrcOs-A>C=c%MVmbn zlXYBCNY1eDQc+9p!<6XOg_8>a&2gpLP%k0ShX35reD3^l9X!Gy$fhMKll(~WWPE-i z*!`-bn=-CN#Wust_yJQwe7vMJj60Qx8bXc!vw17%p_r`u1i_*lGgk z`c>%Vb&0IY>z6g5L-L6ArLF4CdgP6wTb$3{W^q%X)B;{!UC%>`?HoxmAyqF&&sIea zTH(O^GA2ib5W5h&>0(6uaqH)upK?)N&HVGQi$#%`imvgGi!s-8Ssr#XV0LYq)USAH zq7FM2o)xE0>Lnnw^i(tXMb9AXX8tX$YY^S88VXNrs2r%bOuWECUi_&v;@rU2 za^AZ|^8pjyrc_%~my&{7EM?Qds{RX-_{s$PE8Zb$c6P4LWlq8}as^LZ!S~t6mGB4L+i;iDH+MAzD@)i@|Igz>-@8;Ya#s|S^jB?s_#_?OrKCu z(pJHxFnpcR)mor%07bCvni9Es6eWpzGI79n32iP+tIrqVBrg!&@tHq+?P^CXS{`)knG6P{?gt|SC@v9 zd$%cgphK0v$7aTmL9$IdYQSvSKNRov?{cBkk7<@u95Nhsy3X2e^myQH(zOaby?oh4 zly`S`X>XG0i;gr&XTejAauxVZScWpkXTSM?Vts6eKgpMxf9V0Fv8 zF}IwvR_o%jY0vnmxV~ueFV-AAUxoGW&6edxB|siBe?n_m5|NpHl6i8uw7stFuv3h=4#=va zyJW!h;&7#gmnWQ!gGG{`SB!dDo}G51ZA?jeB7Wn=<8;0SdW=}QKOq^=pt!bZ$B~)+ z>BuIGZ-sTMClGv5Z)&y^QiVH=q`}w9pagd#q!elwhk1N)B{PxJyWMcRuCC6i9=0lf zpqr$U;V_jIrH~Bm0i&nFZ-%eXDTs-QmHT_YkYb^>L}g$We@$2Y;*MYvv5*A%P6jpu zpa)!cg3Vh!<&c=*qXe_=lo;Z`tyfY`fsU=I=&`1~Hf_fE)Mm@zTGAFtcU#roaP!Zo zP-eM-)NfBXT-qi`0=T(Hc;L+}kriK^BH>&)-ZP?(%X5M_rH~~ym90nz%o9Q{L&MK# zTmRU>s;6A0O9cdo@01rr=CskFgTx zPv4hki8~HLkV@<|D7C(8LdW2F;ibu{NzP7=WkTJ)N}f5d1A1zd+u20bB*3c4v~)-z z?c>piaKwkw_F7aeO5HiT3h@;L2yBH6uXt$B-6V>2_d&-rxI$B+)qRHM7%n;%0~6cA zjTgX~>2%J(g4rGywRIAs!8z6V(3FIOfH-Zmi!G#Z`8(_ z7+OBZ$Mg z4!FX}cS!??qvOf1XRjT7n@)}a>Qy_ed0$qqCKR8rK@sN8_#Mdh61w|q8A2_eC&Uvt z5@%-JIw`9CD`qP|RzaO0P8O5tvrdV>{97(dbL{ZF&{@UV5JsZVmdjiFcLI@p2VF0} z_B!&V+w`~C?cyP|yj9WJV|~0}n;e@n_}-Y4B&RKBshwp4-5pBWl1Hf1^VE?k7x+I0 z*BVZR8YIBA$Csy$aP2S@{ zWaLAija375cXi4hF!xr&BLG@)X&2sW0>ssF^5c)~f}w7lZd?~9>Q;4bc{|w? zgA$d((n1b;IzX^2k*d$+>#|^bFRwbcn2G2^{gs>#r&`TH&4T17EBr)zub+TEcysKs z^lyk|+(!o5?e2$SSR%zg4g&4Qc=E>0fcVI}$C5}!#cGN$mJaow*&bu!VchN_ZW$I6 zkQyDPF_-HG`8Z&(i=CYm#WHYP`R`;+7AS0YOd2yv5oS<|U&;2qVIjT7qc3@3L=*LT zCu3sM+rMSrg{f?8liEMr!o`E5M=V|^&?;7kUsu7s*aTu#F0vyIsYPHG&6_xCMx7*2 z+9*jCy+nxgxYV1#%&MJ{nO)jW%n9rCu=9}c%~Ez8D@FKJKG}0RwgjwYWEu7DH2gSrlU zeA^wEJ>1@&8~^d*wKNOMPX;Mu%;S!BU|k+k|EIb5|5WgQSdagEe-c04@`ud3YrxV})l(@4y$t&oayU2% diff --git a/testdata/snapshots/darwin/line_chart-dark.png b/testdata/snapshots/darwin/line_chart-dark.png index 92043c4913ce1e5c54758a8b66958eef9d62a599..86d8b4f267e9d25123b2f6ba717ed83fcbf8952a 100644 GIT binary patch literal 23304 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 literal 23341 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 BC%OOt literal 22386 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 V!gA^~GeE#2{a!($R1D_({{YS}srvu` literal 13584 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 wh z#l;FfWYvj9HU4^PrzXJVCL!j0+=M9TqAkYatJ7J}6e3Z?)yYO3Lr0l|Pl&LkIG{K@ zJ7%;=4^lu=lIbU`qb!cb{zcjQZg}|MN!Ydi4{2AZbxc&-Q3e~K=DUCpD^p8zGgAsK zGbt}~>DgIUg15uzn}gpV5&`zMvsJ}*cW=*uom4@B~;F(#Oa!scR3sL9GJYVtJ@u+`==7AE&sB-JJyuKAcrmYSa;3>)h2f zd05f%NJ2}}#4nyf>>oaiBsI9xa~Vud$8WgnwVhR6vBTn-{-P;hq{l!9#30yQDqz*I z+0Z4v5P2YI4q+D~886-qx;PR8HKAiFNuM| z?OkaMQ=~?ORM(0#(M&B5y@R`QBQa#tnSmH4}YXI{Q$!Kjps^tlbcL&!Ut5?GIZgpmV?@m(9xPyQHX-E7U^(3BY7 zEo6S@{Si1Lem^=D>;VYXZjV;`Ia>#gyWO_qFwMg7u4P~~YKIzHTd!@ekB?7hjBV`f z?EKr44f)EnRPgz7^hv67WmPD-fZ=779P$L`Q!sHuTcF_Us?HZXuPrky1<&G&sFr46 z>rz=m)B<~@`6L@oyR%be^k3*AJd1(<%&Lm?#`nl`*4Kf|typ_c+Rtcq3t2rJ+22hy z^(tm77k^gZLRq(;a@?7)n^!)b-~Sg}mLFW!Gv&B$U;XaOpSS0ax<#adbu7J;fRHTF zmk5WVEeE5EVH2bjBdM^yiJ|lOoz<+W))!GzclnHuoq1v1%TF0)p0Gs!SmJ~00UcqC zkk@>36RF|e1+#V6`)XQcbCGc&>0B~e>5W%ykLaK1TtLuc&AH!Y0y~~8<5C#gx=QZf zFp`~~mAFlVXPR6wM^e>%fyuk2r=hr8t<}|heR0r>{(&W9R&7Un8|S?chio(r+<1xf zNI(0GDYNjKB= z<1NBd+1La)8~dD&1Jc_E)&c%wg_@yD)xi5+IJ9u?Q53r8-~jx#=~7vhFD_bM;wajNX$HnW(U<$mZ&IyUW9R8$HhuiwZ# z6B3>dRFujbI2O36V?`8&jSb1Q1g?4({4U1@UVE~E_#p;CegO=YJlkYN<&Q6jpMO+i z-BxAUB1>={i1;c&pojMskyx?QXzRW*xRy)!bYr5`wszmh7N|7vx-ne3^e3oPSMm9y zJt0N?`ASj$?^Q5&3HR>>l!lsL{(3EOB5m%fzqdA-3A=p%#m{Q?+LdOPsw-^SJpRrL zbTkp|Y4b5_5%#>SvF{En>I$o|R1Lfv@g7W0(L?LrvmlP;)@&*n2%*rSwH0XI%_v0huK4?gC4Ypl+; zLNWik{~*80X8o})-=l+P+-8fDuFXdnbf>1CZPZvJf3)i74u8uMs7tZul$!E;vUw~p zbT?<5 zh3mb0UGOA~QU=2V>2THEO;mSvImdzhlJ&Kq8^;_$>+$9CblWwiLFB}%(TL~2LY}kt zwL0?&#A_a$oC%h44z|;WspgG{QVO$fo+zFlMmOtW+5%f;;0R;3MMe>#^v5;%0?)OL z!@6tvN6*x^KStRhBs>|JM~bJrLeJmDV6r%?M9{B1f+@>YQ8&(2)MgA4_;ds>NKMy` zAx+<&CYpbGm&m>FH}kJt-)eLQ8E`ZsB8=Dh^{m$D$J=hwgfFw|M_s_#iAF1ls3Pgr z5|Nxf&~FZFEf(Gl7>;CdzGHV|dQ_x#&O&GQ?(g(GGwJ39}DTw3l)DpDNuQ!0*<50|Ouq&7A- zneT7^>CWF@ULH^MK>r`#=XXrl)c@!He_Vk&*uot;NDtMFXu diff --git a/testdata/snapshots/darwin/parallel_coordinates-light.png b/testdata/snapshots/darwin/parallel_coordinates-light.png index 59f768c9619580d3f471a2a4fd5f00a076df8ac9..ee101f4ea5336ec5db6bbc1a3e34db4bc1241766 100644 GIT binary patch literal 13191 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 literal 13165 zcmdVAbyQS;6fZgg64IbDFd#L;00JW*Al(fDf`oK85)uNE(kTN-$B1-?(%m54CEeY9 z5B%nNUFBE*|Ne<@33&wJZ%zvZ1s*e z7R|m;yP@lp;4(*(GQA!Drg$x6O2W^qy0)pf6ABdDU{vysW}*7~+G43Rjm z5QmFbN-KfmD@Ic{wEy|z$Bu$AC(eKYWESaY`)RqM3NjwHY}6u^^}D3`(qdhbXW9l1j@vEoxJxYK zB>6lyk97_ISpFRPN@H>B*0VP^LG+aT%;c~#{4dLC1t!1B#h&N!-$L?Px(es(XyO_t zJt3#l8ItMY()lSwB}ZU%Lag@3aqw?@k5B8tH`P})b90_;pT^x?u8mxlkG6DOMbAf# zcPQyDk9%EhW~$Tv{TV6WPEV&k#p#>~S&`u6g$C)^n3y=-9xW!vyHPsY zMax`O*=_mzFK_D~dxmdN`e$U6W@j5KMd`P-8N#&~i?}a!^zDcIXOi-W2IJUf!+O0L%;wq}z`O5`L)93=d3j+@=pQlc1nHKXAFOX=xFI5~#f8<(-1vAV9#L9F0;h+9H}&GOFt&Q<6;gueiPkF56d$4c(=M zBx)iFL)>cQB*-asrIb~&A?R|TAFDBS6PxFsM`NxYqueQtTpFJDR`(US57)YH# z!OMBKItrz!b}e)LwEs620cB?&E+3I!h+>_opWWHs?tFojey5_NV^>w3vJ)kfNkenD zb`9v+w19|;qCRfUb-ObNGHde5QY#9l&(OVOb#!+ASUZs#c!;;`>@;_}pCl{xQF$(j zcf7ByZDYHN)sYpAY1gA=V7TR`cLRSSn(Aj*PuRbhCpwxGx*Dpcwzj`NEuc7w@&2m) zBmctJ*ZJ5je8aU(QA=6C&|g(ycOgHYoQWxqW;R3k)vn!VyCDjCH4@Vu`V7w*i|8(N zUmwFbH2Y>+U8;<+O1x7z=8YN_RvwcdNxNYFE9Rii)>bGTj}}$_cbO~One&e-Mn85f zyPBGGu7Wz7n`fq`G;73-jE&#O7&?Cn4;Q4*p#RF*F*Bo;uGo8YFm*nyR_e6k=T{&% zUzO!4)SmL3)OG4l5@ytTf*1`mGqL?!LOMD+;<3_bR-5SItGB;Q!NI{jEh4_Pb^O5H z9EWivb3qo?K0JJ5G0auH1iidWI3Jzl&c~5(2jDd26#VNIg zyszybYiW5^S(AtK^}TD_Zv#xZSfisvm>RlLFVl$-ZB?<}cBy)fLmxp;@)X_T7s zR*;QNS(o*Tx%^_?o)qoze&1QLsWt!AjZZ{X5+*0t4&V(Tx}%EjLWx6napnJZ#=CH% zKs>kiv?q)&L3e#~b9-s2YqdS$aM8qT?T3IqjDg|o>@1PJL*M=21rd>Y^U~GjUnbau zt*!0&yx@M;HpSA`4bZV7?(A39WHY$3jB3vpgFC90L?s~fbhSnAhzMUa)BTDHI{o}8 zS{$2%n|lK2^XLJE>$|%iI~6C}+#*vM$XJFLXL?qWK(p?U>E-k@hhDL<>E=q@%!Da) zfd>1nSg5RQ4>7&K)xQa>M|ZV38$a~fCer}t18tm8^RRsFswdwT`>)t0TWLA@^2ta^ z_Zxm>F4) zN^S+K?e&_P&GzK?Gso|(8=pcgJ=<s|I;FYMKPi<*Xczla6j~b$a{ij#oYj z)Xi(rMmys~^)D`FC}f3%giP;;nFnV;>F6vl2#mCsH#9_~cKXAnyg!?}Tp5m!Z2SA_ zk3rByP1m=rtXlqoojE+_InG=ZR8>Pp?JtqT2UrJwk*Bez)4y%Nil$A={`OYkT6aOQGu@+)@@lD84Oo|_{Il94fgUi9I)Pv_QsnL6>OD(UP! zmb-~N3C=*fbB6$2)?hxHcRF9^=IY#{-+yN>W8=5Mr#3Qj`MG@Z{TOw_A1bOL9`7+x zm>iCo5)+CaHhZ~iAtQ0=zeK%szSGY<4nZdl(fFYYb1U2Kr8g}{RdMF5%=<~aLO=C! zYVAe;+qLAgy;(u$TXJe66O;BYt<{H|)TFE?f09^I`?JQkDnbZ^m(CbGwYHM0&-xdl zGc`D6*GT5A>>g1YQZSvN{X$;c*OEA-tE&&V4_LlbJcQ7fl6`mN>cPch<5H*dK9*tM zJJhntSc(lzAX1tm|Ak$(@~|?%O}O-h!}6{qgus4#J7*a+iUqyrqiuc#_41b%y>%QQ zeSNTzhE45|x`wKTmh$%56{LuxlA~fIspz$UEkgV7ZjF0|-|Z9}Cb2^!)_R}*&ZZ|d z>(z>Lxa{C{L8}+WBS;Fb(UYpVatA_aWqMWF>ub`M<<{lHL;D5GZ%kYQ-;J0m-@f3+ zq|PzVA;zcw@Qxbzs~pPkJ$wg3Yczdug@~$5bgsF?PkqII_*FxN5zQKNhUQvQJb9QXT>1OJ)s%n{Tcj0Am zFoA(bo2H8L$o^+v85M`{s@e>#8k7^lO=Q6qG7`&C=1A>sr|zQ1|HQv(fHZ*@(gG(C zdG#Tr&BCr`_DkK@oxLwAUllbDY`$f{q@|^&Uh{cC*M}vi7P7)N%x>*OhIlS}_nuL_ zDsSI)4k3X4IQKj6If>iY13Cx+*te;8_hhrRNW$$~R>c0X(x0q|jGI?H)YR1HI85lG z4nRNRYxJV>=9|8R)#5g#z6Rf-18eOUdVxwFXb?T$ADqC#yO9s)bwPw4sujTiIu;L1Ue#lkBF;MHla^6*5MM}lV?X{JcRo<{r`lU&b|--Z{q)b&bxn} zNWqm2*1aOU-y9IU#HnexC#7bD#6E2>blKkf>ehSr64*7I`+BF}%kh`8QkV6qIvyQN z!Igg3eIECUuq~Oog7afT<%*W?2?sptkk5Q2iStVLy%A;UM{g=tH+~$4e zKAgp}D0(2A8ccM72SA@51BGC*{+Eab2zLUZ4+7+k(YQ2`_nRMUaBDu0 zHwI^*=zZ*CJ%al(ZckB>-IFW&2=8CQ6aoKLD}v~If3rrfOPD$Ue6S*jzXuGkQ8$r& zfWV0rPOk?569DK(C5!c)ry7~C?n+FZ-PDAx zkwSrkM6Uq^Wfef007T{<=>?Eq-I5cL>9~>ba5O!TKes*=<+n}%sRxkwd&EVLic-7_ zKoW2x3H!0pMv%i72MlflyJCW3lO-Pfg~r z7WJ)ONcet5F4I~N{&3Xmw4k`P>UeslN3RkHH(TZeXf z>E~2c7q6$1@1FJdljUuFGcb1)5ul;m=#`uxXhxR`3_&A>yQHYWVl@+szRX4=>ym?Y z&+b0{T``deSf)LUY6iHPtiAkPqzO=4_TQgCj$)=Z?AG*5Yf7eASXK5SIwhBBJpeg6 z<&TKIQwf7{Qr7xbkNPUYnj+@97KBUq`eDh0MFH zd^l-l^oz_c$#|gFE=H(OsJxE~n6JNQ#RUA{i|}PyEASKuYa@~hj4rVuCTV^cWqHy0 z2RAa34r@_g520XyprfpckFdHoicUiVjKKFsJr|t_z~~v)7d<^hxPVM_gxE4IHm8tC zCDhEj6V^TQ}#fL4rXyIIcyNNTc6a(4oRWiMTf z=le}5!QF_N(%1$dpl{;FafZY0%Vu(<^Z{_eBl22c#krIKNDtf*0BKqfn%+4E`Wrw< zr;7mDD$>!)3(W%xYB2==j2K!*+Fh(~E*>t{3a+1`uXzg0-nO01t$!MFaQIxX{VSvg zU1|Vm;e7bM14>g5?xv5xj#uMxg8cnGB-q9c%9{DHH!>b&Z!VG2{T*kN76m3A4%X(# zm7=2cKUXwBC90)C{w450NM^wbG6w`3&oyq)%vD{LX&V&8ysULSJGI*D*;xC#n^ohc zh)c8psKW--VZ#H#nV;8?BOve@XXR8_!RfxKz4M(EG12=;5SEh^$X^KlhfgLCXfLSy zi@dyX;{jp>5UM6JtVV*T=vFNS~C7g@B`*V8i;GVt=QD5l1MGCreL#tI1j#qw`}OnE5QV2Mr& z$A1&So0?kVma>)-S5zlPqyI;8Q}Wisfn-JZ)8^ZEbqJXDm^&Is2~;bV@pVz%`R0&h z@2k3-OUc2dxxh=ba|Y_m)$OCyx-OWti2#aMKFGyO%#mBu^(3>v$#nkKO_AE@nO8ai zPJ2fA;RPnh5%iCoD2O@zXcj++nGEdp2+Y=)#w$Y-9|1~x1$re(6XmD$AAZ=F#vs$v zFA36P2YsN95)r8tHxw=A#C&{*pHc1)OXjA0_5`|OGxAU4}Z5jLLpH6=SxLnP6Zn5;v zrzIs*dGya$-$d@?1Z}BtvcBo}yy`Oboxa(?usCTyRPg+S9F|W_EPe#Z;KT$eVhhQj zW(RwCUY~BI%}*0&_RZ9`_gtwta(_83;M!!8^>iwVNWQmTytl>^>PCASG1P6V~`3`~6j5ob7I#R%$=R@3@MAl4yb;9M_=N6T_<(^s|;R zW^+WYU{-4@zv2a7h5hx)`)sc#8mf^{VP?QE5SOOq3`Ix+)IL}1beYUfj6o;k>dpm4 zlky>g7E_}^#L`pIy;MNZR1c%ugV{(BmUv_%`kplbC=CmAVM-bA4j2oGB>A~Zz2ZAC z+uCO2bTRkcxdVCJG-dsL6e&O%cDX|v&znj8h{!RTDx$S7ui>oH_Raj&dK5{D&XP7J?>NS`9QSDiPHc?qFNvzA`iXv?Rrfq zJ;xxAIAxRJm2ZYYB;H^}enP=&ayROC7enAN%UlVIRO24dJt8`#rT!6-pAZo^gco<^hkJ+pPqodnE;Ip zFJUGsy}p#s2Z)de7m?3JXTe1v%-R9r?+3#&u>xUHNPY5d*P`NGqs=I{Rw4rm2Dd_$ z$`?I1nFK z(p;)j#)qHN%Ma&1R>XZQIvG(B8=_Z$Pzh?F5bpPdxXj>yKBaFmfe6tA14<8V0i}6i zLy>8bX!L-nCimqPpb#I3GO2|zuxus?=lK~}=z$D@1_Bns5j8F(!2wd+yaZ3GrH+RHuT}UgQxDb*$PhRFubl!;} zV1Nkcl!@q-n~)TRn2G-86g!u0zQt`$W5dxoAVfNrA~~$naOtNB*oc0~fy@1yL;(*4 zBg8MbUBy&+M7cMo(V&0JaJb)1FgzQ}cg=ldl~z!4 zLzh<&G9L>G>2XV(K7BJK1Sz%gy`|lc>UUr6g4Nxv?S1jcEK#3VzZe|$v~jVwI^Uca z|AudOrwy1snL_uD_=iM^82Xsk*KXipy;1Y}7w1>k)j^6IO3ZZJ@+MaZn!sUF#FV>A zvC<`s6gO0dtiknWF-ED7_U9K0Z_cMVxG0oOk^%0BGo@-;(&U2EsXYgKCo|tXPE2<+ zN{SU^Qut7$l0sJ?=em_|qvZaev_N+c443qoSE!k9^MldnCE5xkhmi`LEdzIIifW(G z{b{4*l!SR_cD9iiM5RLbAMN?Nih#Xs%@1Sr3eXXf3Yy7g%T1W(=p1kw)#-xrZKo-&#C z8_wnq<~u!WXYD_ta=63-Vk#ePY>t$fp0q!M{NZGr{9*cG$9X->Utq;;2Z)|1j)4w0Un%0`%qqYMhOzs9U83&H?l(sz^d3#A{Lp%1m=qAQ===VF`s! zsU6rusR)3w+KWqs4uuYBgb$TdyF<``|J=-XLL>*$(FEvPn3L$REnM$m;`XvFJ zhiw9r%7u!WF6pG)7t8c*Iu-^VnIS?Crx?_gfxbW$)as)C!@$wkSYuX?)^5iL$7(#m zdS@&_d7h`n2^a#BtsBFz1c)a zW4^IvAbufObQo|ULlbF7NT?kmEwo#lR7vK&3`r5fA2(!@N>KuaJXDrI3?YWZ88h`o zgK<%e{n!{Kjl~$`8MH%{$vB~tjfBX}Kw;9DwEy@d7z!K!^ue|C!-H!=+)%M_TBxGL zN?|B0lOgjBYv$*_4aGX#bU-@{+18Eu zAm{$A2x;d1`v>m_7qc9;q5o32f0-W2#z;F``v1L#C9)0CKVsTcT9wT2Nzz|@j zMGPKxOW9h%+~BQC2YOWMHNQSwpHXUK1++X5X)|K$!UZ%*L4dT%^-!%~Nw|}Le;b&p z-kBy85$<)47UmtO^AQD=e=e_}w0d_tr*nDzeSVD#+hOZ=tn!re!s)(*RK`C|?!58TpB$Dl+`UVf5m0s{k` z_np%RH8tMZzZCMk=$9B;HY7k{5qWGfJs?Cw(m`0bC*BRN)75_3@3k_U`%2WYb^jXY#5b{%p)L71p z$Ec7kv2S%`&)SR!O4*D)k;V^+O|iAdhv%dDcWNy!UW9~wBs<%k&w~Z)bCQLLHQZ(Q z7{PfeYk=>eg9Mm=bgg4;>7o4-W0M(CW=1T^s@gIC#9&4rO{4LF^k7dQLw~s%)1Kgz zsBa&(^}LBqKuY38%&btuF`sB!KLk_aUghZR!+BaOh9cHgJHzo6$%B-)N#{F$h zL(kk+QgUa`FWX0!M@oK&_x=6r-?Cr^WlY@=I3tSmYk`- zEgmiTY`qg@D9Msk^Xal~m@YbJNl~(875##eP+1YoEWy+;*uCT+3Mbg!*-(ADvW;Py zY7N7f<1Q{TOm)WtKli5IF_@~^tF1f!DDfe$;>gGpPEf8{;KNFF@c8FUgBOAsNIT}t zY^580nrAv5zrQo}18;`%9Sd!+aB$N~NKiJ%32! zuCxga`~=jJT)6cBQW&y&f^7d{sC{e%bVf)Zb2^@x@14nZpRA4}TIFn?1+%mtNh^_Ko zt-9lknpMPWU&`gBpBgBO&qt~N#$AuW9QfpUo|pTok58lGGNJ=TN`x zZkl>Cy*7;jLiKvo2+{+=0Wmlr^#5BP^+n(_8#NBd74(X;;~TkKPB4zYrfY#h7V-&Q z+>}lE$?Puj^j7<%v%!GvSQN-=;lOJlV(;2+dU{&!qoD__>XDdZ)#hQ}SR#^AY3Zc> zeaAbcHxY%Brw*QmDIXv&V0AioOF5LI7H>o_I}Y|vJ+eOJ^o7Sm8Tpjdbw9q_;phBZ z=^Psu``+!HR+cBXw%U8i9r<7Z5c+8mIQnuQTa2L9f1J}Lm{0PIAg(9VA|;STP3tu7 z^6LCT@$tL&(Yde3D4#{bLE_X&~!xCTcCo_V)g&Kq+P|*D%larI{ z>i8>6%MY~gU>67ZM#IH47+!UPa z?Daj_ML8sxkAZy$Q8gB!$TJeAzc-Ew1`ckdWF%4`#FV~k-uS8D>Y zBmWq#kk!-Eofk9C!}IoUyrATB2KKj2cGr89cNEm+ZsWTXZ%c+v$uK$&hYm}zjlurR zfgks`Lrn=qf)&JtZJG)yKMK?f1a$=!qNsIy4>I;JhCB)J5Ac6k{~b}mfESLpLeiZ` zmN>%r*-~~Zyx(btGFCMw?^4`8oXxy{FZzBrYG#zR=#+G+cE4#g{95+p>vQegku? zXA*sZPq45{#!L%!>c7z3p%u0X-X3+BCl34VicI~Lw(&*v)xBNnF(1x~Nnw)z^4h$c z{rxM{JQY|Odl@e;56~)7-?tpR?ZEAh$FUfPuku&w@*CDPUtNg^5 zI3n49vegIErKIIcLUT7=;vBw^8k5rzEX=VCTj{mziOwYqyc#Kijg zN2t#Xil3r`p~LOq_1mMhd>L(3wfD}a#~NjX9i^n@Um1ItJ|<`?bN!;Ddl`GJH8e93 zNZ8eKkcC?9cEwZ0a9isz?zJLqm4XFuEinccL% zR^2|z9!^)MBRC+a_vIC2opNC7#ArR1j@iSy$Fgp=&X}Z|K;&`N;~ncAORoIn7yLI; z?Sz>k(icLno?Gr*R$!(tlSI>INruO!kFAbXY>oSi`>hzQnpI2@x-VaO%-3LQ4RK~o z+FRqhJ9zQ9S>;2Qs_c#=!Xz9n1BREsMXU9AT)XSI-aIQS{-?=zv*lP%EVy&R5hZqf zQ@+If5-eo5J_Rp#d=ga3NN8>9U5_Due37fr{LcPMrob@v=$|{+7br?6tY8!M0j28phxvZ*Jmsdj) zqekUtkF7iYzD-(UKKQzYZ!7Ko^4DLScR2g4aE27H)7}*SC5at(68`O}a6zq;#fXYM zWA!W7Nj2Vvp{7@gT8ZcEW4pS0Synv;D z|ELI_gkE7*{i*J~>vQ)T2-RR$NaYCE00@ktN{a*GegjDt4nR*`V@{BKD>Rm%zd_GK z$HPN6b|L zWrjaA^_z`|o10shgfBs`Y#^~)$SnUX>r>tJ4^CT-JQbQ0so;o7J=y5kug6&tyT`M3 zPIjCr5s|d>2QBXe#W2G{L;d^%5=z%-YzKY*JXWdM{gzo#rJ6TbD5cS)2X7^^o2{sZ zFmwGBR<=LLsY-t<_k3(*0{V&g_~i5gKx=hz(}20SsQ!X6h=4Ou z`_Q3lf1voaKW(*};G}^!wSlJC<(#8$6P$zlrwUAzR>YO>g|!Mjd`dBU)S^zfzha4w zj$Ro91y~hCqvC80jYT|){IaeSbHI+ARjT-MLk+Za0!AgG4VZOEKoS&waN z03C@}aCT#Pn}glSWP3(E*I&Y2z;oM|IMsdf*T>1(nF%db9r1cA!=Ac0m=LChrGIAX zT*};b%cM2e6b?G72+ZB$+>F1}863w^#$ic6clV4tJa0Ewg)t_vX4;I@-r3m`40rkB z`d6Eqi-|U*lS-sTbSbWl76%s}KWk4u3s0B@g=CYqE{b{K6So$NTGsH1<4Lya=GnYQ zYOZ7*f8DRnb;s(Zw;d~^_AxSTdhps-9b{W)(}K?C(rvLLQ;jwn%d%pK{*Olafr4$k z2uwkTL%F-;uRc^Jt-UbDSBFHvR3J|N5pP9LE^|#b%$NHFD(v>gII7h4?5m}F%ciDv zYk8pVh^ZNG)_}IuD1?hG52>7EhU%8HI5atI>Q?Qh{>qRggeq_@MQ8Zk{bZR4qw<5+ z6LAK3AXofLWl0I1HZC3Hi+@HL^fxdc8mi5&ZKypX(G}EXvy`O31J-JM*6{rccYA;F zgy^#2f57JnLT`QW{G^M}UGi;7iHTU2at`@LIM_dD#4w_lJ3Qi6oX>3zSdPq4)Vr-5 z#sJCli>EA$O+!%#MCNE#>HG z=UWca;$=zfdqEC{2K@8(_O=^EB6FMc1}rMb@i4~2A7fCLn{{OX^G*dvC9piWQ`~Pk zjOm#qKh3kPWsH?W=+a^42`}*;B_}1%dE9B|>Lo3Y9_EdzjoWIn5{1b0$LUl#e#=dd zD=RD8*o=;c(VNnz*F-iMAz~2HzL^4F1%mO!--||be3~(S`Frxn1pgSHe8zLX@6IK< z&tzCfKB&mAWnn}+&$4E+(&Q!~V1qsIN47)wXc!kuoF%FHQmLZEhwIYw?6nLIvOeAU zyS%}yVg6K1>h~xEMqvLg8smyXO<>-z7#YEkh&ioK!xbMuq!mp6W~@O7rd%F0)}u~4 zTXB6<@_mD@Zs=lRiDR%_iTbm=_C+^OlQ3Qg;@F^!|yVwYsv@9@dd%)*SuVKFwty0;}sYVNxJw%$}BSt)NsJGd}- z=t-`L91Dx#(R<$}MP)4mP1?z$c{gA&^A90pSRV+#JiyoO>v$j8#jd*&9R%BZ?=p~>ai}Sh7N}EjXM6MVS zVPRW8uqNcns8O-YsmYrjpN|W@{&qy-)uF zFQR4p{6az8ylpMj z{jW(Gst-zMo2kanSG4@d+H&%i;y`o4+aWvib)c<;-yW_1ZP>YY6Y@(N=d%w;CU5j8+E8;7@YYgAv z#X%QU7X!aN{?V!jH|a}>iHjMZp5=ABwaRrFf%{R1n)ZJ@I!pit2*b$^b*m3r?&SR` zk`&$|v?4$&bh4UnDp`?2&5V7=X|j0WVmSt>OYY=d=yZ11@55f^RT!e$Sn2Lr_L0&1 zq$m46q*YBMnM1(}&uyp2vf;dg_QLN7V#r`Ald*Q&O-vn2oa4?SxX zNn*?C=>c7tDX}Eb#frBlmapss@X6cZp8TV+lwsBzt3cPVnDD}odui_B-gC&=8#%R8Y@BIr&&O^_LI1? z^fkU~#zveyH@W5Sa)qqntrL?ny<`Q`0Z6Yw$P%}|zR}{evJs>CqPJ*)^0d9Rd4y8l zC^=ro)Jj^61hVQ*e!x>aR;?_(kb0>m)Y@~-$&=tkegA-yf~5(m`fT7|A#m@DH<&&H zW*lSHWe5@z6V;e+24}dS>N{Q!)VpE@^QEu|g3&pZ@{#tRG$g diff --git a/testdata/snapshots/darwin/pie_chart-dark.png b/testdata/snapshots/darwin/pie_chart-dark.png index 8629a99ff0eb049f8f070df57407b2378070a625..3e78c2d4ae3cdcec1307f72550b54e401cacd117 100644 GIT binary patch literal 45844 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

wPbTNx-v#KLQeQI^ZI47~H(NZv^r$T@n$O{vq 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 JU6?4Pg_vAvEA#jx|R8;ge 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 literal 41206 zcmeGCb#NP97Cnl}EXT|gGc(&UDrP%oW@bBPW{eYa?3kIEnHgecW@cu-nwf9rcVE@3 zdiCo5dsU~pB$c|=ea_x%ueJ6GRgjZF`h@=p001CKNs1}~0FeFw0K``yB>0=$N-bRg zz#kwbDx~6`cDm}NplrSlcR7d%>kU)>i$n`mUk#HU$cpo|4G=Glq*pa(r8yNtm~|YH zXj8Aduu`F`SlF5sxQ!J~h!vj-Ma$*iWkp7^wH+Cjl|up#8{iKs=_>4AB@LC6BmD64 zwikW#nz4g6$o`b}=LWi+*OFEU6

&cP&JS8^8j9?E>HepbP+r{t*A~hkxea(GPmF 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

EQ( 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 A2><{9 literal 30389 zcmdqIWo#T<&^9<`$e1A$LtZzxotHTuJ#8Hs(kO2Syill^y5&!^=2mnBV5uqXfjPWRw0{|{w zk|Kg&xAfyBPqjZ^UlGn>u8iSDji0}Ak^Y7WL_TDk$JEvWox*hamGPG~=KLh8*$FQ} zk}w}&4~r#A+93IX9g4XyL@p9;Av))zSqfl>Gw=BFks)_^w{9E|GD5iGEWB;Mc6K%X zka?E+pgjT5 zop8>)pc9e^sNrtUKRiz4@wmb;nG_oCkUe6lUM((e7n29%=-lgcg<46DKV9l^-P^9Ull3u{<~eu9E8R@5`%M4keqvI^ zf(MelqFk3TJpA_^2Y2;{!q1bE-Y+k{h!=M_o}n$XQ&DE**@=NFm>QDu3bf{7K|Ae5 zUl5U8?sN?FCCg9o-@Rj{9d7i>j5{$%LpW(3SD;Dc?aFO$pJkKO%_@`q+0%b|iQQ;q zv|Fl0Si#8MExi5wXsLfqp&|LN+$pR@DGf%aylKyBo&85!e5p2rIPl`)!psRNZU(of zj&j%jzR2?x=TWtq-F1zknd3ku=)1|D6XadwU^r}wVsJGy?L|>)Ww+t)!xOZ8mJ^Ix*+ywmN1CNbxgVd?oE1%0x7ROAE zKEGTm9~53#u!qS?Ff*m3$0cz|>I!uDo?LN6-qqbs>r z1vA8sl-%*P=n{N3pK#jXD0QsR{Sp7ed3*ojYx~WuMwy~ZACOc$TYFI4IR3bs-#}5# zY``?@gOi$l6CbG?=#n7sRyT#nvd*a|ai#(*t;qpUpFFTu7 z?bPsy)7bfelm6tzpBgJ62@i|sxwrdU1s@Dz5vHY{-i6FI?0+eRf(D2(wVUTyn?=qh zk#+#~^y>X+QOjenry>+8lzoojnV<^3avKNUB_I;d;ic{CjGDa)N+FtCO|{U6baQZG zp$mmaI2?Ghm_`qFc8iykzL#Q&hlhukPf!u-r=Z2YzP;b=Lm6$K?J?SQbxuB5Y^`*+ z(YKNz%Q6*_{vCIdl!PHSG74vs?GRv#6b>f z{eHH-F5#G8UM^n)qRs-?l+R+%r7wj2+Bg?9C@K zCP?g?qbYG;TwYVV;^A&7VyNtR(0?|)lQlKvP+eL1FcaE(?fV4<=O;AS4><-L#LQ*L z<(Vg^RJfC@s^q@eNjVvPME*`hE-}n6u1pe)V64Ptw3vNY~;~uUj1YDaCi=5V{KhOrrWT;yNQkt zYH}ZTiAy8xW}0LkWS-mzjNK3?01FEg9%fS|79Gvmiiq@{AbJjZHfs95eOYWqIK(fL zszN)HUVgD3B+gS(*HQGoG>W>7@lDz8GZVNxv9QfkK3TxZ=-H?cuCoHZLs2XQ&t&;D z^75G9ms=&$jJmp0e&*z-sA{09FDz`#yAjWGxVJ14yBHXK>Hss*diB$Or#O(#E5%T> zziz$o!~ba44P)chVGS*?&QWI=u!g5wNkwsb5*?V_Hz{JGlcDMG%*T)1jv>LH}s%$N9&nkPt#+9DayEIxj;XU-^F?K}>*1x{t zuD4ywe)lgN&)Z?UM^alLRBAfPjxdZIM8cu(E2xju8b*ZZ&vz-q1!CL#*wjSP=k@t> z>+YvtF&D9b{{nZn$TuiRP;%E$=Fg~glg#DmDoM*vsmMdULYi4Ao&|D6nw;zriUUssNbPubKZQ!mqGl^6- zDbU)^R|x-2UrMC(Q&d`0YJ4h*^-o2J=S26OXJ-1l5PsseD;@!PWackGbeJB%|L0DO zy+kG{?xJu&tlo?-AawXZDE%)WxA(ydZ>jEPYsr^Au&1yuzBY=zt1DZtM_H-N&cnmT z2Y4v1(2(o?xqMw4q#;W&7u)=$d`nItPRBL3c695)fwC{ZvG;!VHbz7CWElx)vKbw^ z)TwvR!M`RkdK2ugwUX+%7bZaxmXVs+*uKexL9bh7CV27o%N{fLK&5vQ3w2LV$)GFb zti9E7?mY~u>3)$6jdk;kqR;lcU$>;lFfOAOTf3W*jEuMP6aL+3nlTFWv{0v?^z962AyVKI_$>@bSqO;I65!Lqs< zBV%ph>5cD+gHpY_H^$kX($Xq;MV9jEJf(9c?KKu~cS!$ZMB)3;Z=o`T^(WphK^`me z?U}THEG-Z5Tf4iPju)ahHE87DghXPr%Fyasae1kOn***FkMq+?DSe+)Lq{^|B5OK| z0(5xy@+(gaW^hQ9hQ41qI!3ExZl3o6uME~P!UZ57&ZXoT(;p$U2xJKFymF=JA>7%EY!WTB*d>vKD})~-T?UO_kPjoRhM zL*z=6gF<3URE+8x;|0y=@B|teTjah+bKJPe_kSfc1I5mXbX3 zRh%M>Oobv*qlCj#x4pFZ>4~&oyc^vL<_<~CumcZf7F5ya#~ysHZb(FO)XESsQ)lLL zF|)|iz9uh1Z=L_FWu2|VNiM3bQI&J#Bj4WL`NFlr_T$otyEo{e@NoN1XRWHz%K1F$ z)=N9uWsFYU>v>jn_QcH;|8DDl_1q9f92iVZZP8u3xQ>zW)+&_;w$jiXVp7CCYW@6# ziXJC$uN7*%@GkjHfg0yXwH=)vckQU{P4+>Mb(pXl?@i|A4n5s6xN{R$deKb?PFS zpZIkO<6kHF&sY9mpI$SVLO+O+gzZE#fkwCjII}KxS#8(6GPyrH9tGEaEO&kC&w|(4 z#YW^P*HunPro~2HTI9VwenTxU+W5-8+Fk_zmqfZ#KuPpE4O=VLq(1EuRKPI(jh05o zcb9Dp0u7FHHbEqX$Gu;d$4UMg{jcq@h=7MiGpYzQ3|d8-athfxPo}ck5U>+g?~E*5 z!8ID{K7{=X5kIDL0pLzZ%*-sOgZMXD>f|+MSNPk|(-e9j7I{Rn!~6f;e_O~#AqFDs z6xZN-cSt9x1H9`;G~pz%?|GAY7atL$o{Dko+kqFRx`+G6s zT5XB`M1mVF1ohVkr(!)Dstexfb_FnQY+NLt{{vJeJb04BQ}PS~=!-Uk@6xn84Qk4ue9B@AUYd@%3>5y6K-8LWqZ)RJx-$AcK~ z%f<#q+zhATvzfa7*gq}Kc+_ecw=BI5y!0#qS8g*q#RI053Zx9TPF8C?YoAw>KX@8=rVlboSgHF^E8rw1A)6J>YY=50h7uts7QHGHLkZ&K z;Rs5wfxmubHz$@xk``3_k@STsA&^XlV$iCte<_mCv*q*B_;@pI%#~1DYT&$k=18Dp z*;|ThOx9leo%@>O*_{^GZv@oCZvh@{&p$tY^JByauVrzri$xRZc0O!;t36UB4dmxz z@lugu1*v36lAycizrd>hJPlUDOo;!P0GmffMXoKH_iI*s=skYIq8%R#I~JdK&_k|H zx%?<>_eJQm!5p>cZ*wYgL24u^Nd+l?r70Fh@|QckYBi34ph2UIA9#$3!|$JH*yG)J zK5XfN&^m7%F%L;IJ06glN2AS_D;m?(3lRFQFr4nq={p?;>#o zHI2VW23z?4UiB07h1t(Q%_bbGo9Vk)c|1+a^f$V=-2A0bv0RL3(Q~gcn;MF9Fc&UV zE)0mU%qI6A*{anB>-G(&Z8%;GwmrPFA8^J*lLn&P`tP+en{DA@y7Tg(fB<*^j2~1- zg;&SVcG%21gXsjljBo>!C!50FW?NJ z^`uV{|4JCj!1W}D&>NyV;(=ls)K5HjY*KMrTldyCuos8 z$OX%P(Js>>bu(3ql_w0fPIr!R{A!BarN6VT`OS`)y>4|}IQPcIL6{S79VkLohfgob zM+p7b1WApP->7lJf4378C8?itX(i7@>qlPvjG@CRJm3%-*?aT38ox%~QQslPE_Fp| zyIP>!xoy@>pxIfFDH1Q6D)gulDbpxc{P2IGD<>gdgCod|ha2N?Ilp3dLq)ocYaNUD zSCYgW&+?zIo|9}mfnFC*n31S@PHMAa2x?xzy?Z0azi=4-RBO5B;_+S_JC{{ZGk?YBW>LRc?SU_w~4nE@y>f$L#}HtI_MNDRFc1mhr|D_SxsN|c8`&R5 zB;(wOeGV&N23F&jLMp*a*RN3jnyp(E8YlxlZBju+Ry8;QrVt;;TKK8Z%5$w8(wQ)@ zsd;;RE=CGA(T6;3@QY5XkookXtw!VH#6F_jS{;c$-TFg`s3rP45jTE>7uKJ?eM(1J zP!PM((KChK3#pc8(BXX6_iYrCuU4ubY_i@*D%IME$#QqOi=G!+4SLY~f=GBHH_z6j z6J-*?d_+UIO@T_4_CI0+=&1pK9<_Z%tYZt3@Rc0mE5rTuVg9zZ{PGyG8D_F+`7KOLTJE3ljdmQiDT8d`_ZEG_VCs9mQX;* zmLiYaw0rAv@vY-zj-b@d-|LJc<2ZBe=q>8PJQIGw}4LEg!p zCan=@9!_*1`3@dV;Hjk$-{w6fNBxi3hcST`jZ-$qQ4|J_9B_-7l{}3OOA}ZOx!kG4 zHVds=Q=S@L)Sw@XH%1#yToq%D4jpC~S8#8cpgfiu(bh>bJVNxU52Z7BAi|D)JL5=H z2oAap0=^9zEk>y{s_|f48(*qh{0O%DFuD|+`G+>4b77vfxh`w)SNnD_N2edU)Slz& z{)k4%(_0Bg;KaqSO;^)8(SQ&|h-Qsgm_j6$o)aLq+W`L`{}P1@kRT$cSbRr5g>|WF zw$jqRTI+C>KdSW2j*RPOxV2ZiFd@AzYF2!xu6+CC144TO zY>Z4m&*M7Yk8iUXK;Y8VV8{~M>6uk;4n5>KoBjkkzfvVhN%EDdn*VVi&m5m@R>u90 zqsoAwZG*yT3+c^+U8sSYI&5QBbqMq)RxCOG9M-O#_};Y|h7`)obxv4x4IK+%%|7I+ zlvAFwh4j{apcnm1OxaKWKr%Z*PfssJ)btPao)t3J=(sF%R=e}oE(%QXfWyI@?a8Z? zL*x)0CJ0@qKnRL@Ch%r@a8e|CtoHhfL=|G-MAWM{$rcgvXq@*{zTBRT$1#Mj&qVY{7{`_^4N0vcindEjhS%g%j( zSjg#ze=J(&mu)(hkDeM8WQc)hja(Yjt+&W={Y$YBnR0Xdc=4kw<#-GgF43Q>7RzKN>j2oqns^&t$bfyY%Vd(Hb$k zHOr^wNEczLRDR_)O4A5)@W^w`gylo+;rsG=w6=3fiijwEwIe{VMs3y09-89dtq=`5 zzvr4*hL-&Z=fih_mMX6Pvw_|z{(uJ=2afpAZ{m-|2XU`xo@a!gzGj@pWI5*F$(+%r zf}x=fh!Ckn!~NzJ^x@_nvCcfsbmrDPTFY0QU00lMJZ9)|%it=Aa&m}5sffCuiIDBtp!5vtaa4^x0?D&(PGFvF@UIF@cs*V~i0&#^J%X_g9qJ_d_B?CUWWsg(3~U zz!a9t|2Z; zcUx&+YVAJ6H#Bb8v%HNwiXTi6KnDQ)w0nMVG(O%BPIDouRv*u1LJKpZlO;wfr&?vU zsC{KMz1(C!Gva~53;0u$gtJu1h5zFFdTfCYZpL&=t=qv%EhW4;UQ=3P-^6Cx| zEgn4IDWQp}J|cH49JenA-duiZ3PMHnH#0i4;=q^fp*ZB!*OpXM#hgtHbSA%XBHyrY zFer={A#;|Cl*y)48Be*o4)#3fS{|IuZ~wHM%pj8GgYmu5e9Ky?5(EIm^gqpP7#137 zR9>s}Zl`{%9@Bgx_al|OD*-u1>uh033Xv;O2u$|*$>CfvuoIx+_GVlQ+B=+W_aUzjLG`e#`L! z8YF4*D4IlA|DRwYmGECYX$u?9q*xccO);cz&P$(N8P)s&1Gl8Qr@Wq+E7YJAFnoKc z=^f7&QO)(9{N{OJaKI;b8Exo~_y9oid-`lr2{zo(E_G&kMCdQ$3y9yUC;jG(&E~QM zR@_em$1NnpNZm-{x{R0~49p)A!reK)(rZyGB*q_%IMKv~215bN>YdXnXej=%JAeos ziCk$=sS(-VE>7(l`NiNLx~ahGmVfQ}LWa)9!tPI`joaN5R%d2(nRV)|C#P=AlJUCs z;(64xIGND}vGyPwCIPCggWA->aglX92Ck}_##q+FwKf1yG#v4i1$y-VLKNyQ#FbY2 zr1fHK|00;f48dZi6IN+x1OrTE?AmH}ZLMxiE$52!%80SDsR&kBh^}v;^Kz2!gIK+B zJu+;kT*Sv|2}8UC4E8Ay^K)oec8&}dVlaW6>Kf<19C4>UZXvlt^PIIK??i1^z&MSE z`%!M5fjSfJ%QWRDCvK~KIsGpMQ#e9ljM#Sf%K-mBblL)jH+^ngZbna6pW}nFLy6xL z4H(+1IR&pAg-89e{pq4w z?0adSuJdwuSivx(%b2$-%<@G47^xsbA&XcgX;+iIWb0|8UFIeAtE{SRp~RRV)>B$daw}ok-adx4cZf1us~?xvf=N zvtW7_e~BTVvShfJk>tY6P_V7?nV)`-*%(Ul84D1Nd4y}?(CAnwnK3qHRY#5+*|`fO-GE{Q zAtU>^wnFZ4r53jh&6&8({RM(>HK_2?y`Y#%-Es?q97wFDx1EiBm2 z_;eW=3S%vcV3iV!s>HskS8vzR7aDcV&;GV7IDK3&YwF*$ZZNgr%SSkQiW{I-}z@YId3(o zU+Kg8Jf#VT;8{G?^?kx-5v7h7+njW%{&?UjO+F2Jcj^NR5InhHgpoT+u`L7u$dn}m zx=GgU5)B$huL36Y6A=3i%L!i%mWpm>SRPKo=HF$VaU*q;A%E4-B4*4Wn*-YiO-)f( zOBIYj1BgDN9Hrqm$z$Hw6j%CPr%F)NHgPmc@Te=NLiob7Vd8yA8~^zX1|q_wc@6%1 z9Y!3a@mY4R^fIvfp}|!Lk_5l+`U=`D0MN1LP?p7N`5Q^%Z|>!XAsh|Lsk|qBy8z3{ z_WcxSa=yydt4(N%tWYheH-BKyYUY&svSx}6*M&(=d|o|R=0*BW zi3XW6mq$L8dPBY*q z3RJM&=f$=yGrz45s@27Gosr}+3qNaXs+Oog;>qS@Y1%j^M^wIfh6GX45SR&?)1^+X zXTJ7zomrjH+Py}I2CXk=-1kvGWJSY|^CXdaeMblh)t^VUX}A|RuljwVg-OBpFh|`M z)sB!;JGOWUie4|MM44JoZTGx_bf`6a-7{aKUV2WjY*-(b?WfOyr+`YkikIhu+p7Y{ za6VM|vQ)BZ@F06)B#F)FbDG8O8Z5wX+;|v6Qn|IPk$g%FD z^RK=|Drbo8gf|8t+uE^fe7he}7GRS?8Aeyr3i^i8{Z$-@4okDcf(ZLn>S0Rs9SVgs zU+VD`{#<$6!pTisXb-|!^WJ`#G6Je^fX?JQnxM;P+pO2ar7dy!^r;UrJ3la;OtD$u zVup89&&ND!6`n6=-{ePj=U-L@PQBMYP^rD63y?~VAZybrmx0ngg$tlfZ`PN#8M{*T zGz>azmNlKC2#M<7{N2M6(w{h&PV#-};WjQnK)23g=UP3^$ZNcCYkv$4@qur#y1&-c zQIjBBq^vOBoMKRlh6@@=oG7)@4U#C?6blxVo>>%e)}+UXi)&(@eL9e7>Ybq8K%z`e zh|z(Ru1Hv6t3nAYJ6&7$7b1L#a*XOs@^p}KAVE<>KGbFz<>kC)ArAk)j&ZI`3W=$| zv4_sGd|2-0K@mrhef4WgD1eT&y7uam&eHMMM*%@}tA_dO6IbqXL@rar@M~|Zi2nA+ z+xw=(;WM>*3cQHcr;YyZPw$BkmBNkacydR7NAyrG)9HIiF6eRy4E$7BvfAAfSRst= z@4FX+frcg562u5FuhGm6c%l7**tD_Qk4P4tx6@L1K+vS6Kom;39!0T<`B8u%stI~^ zc+i}xW{I9RhVXS^)7W*SnHV$XlND&pY<#cgA-(P$WsD!uKr)plGA5>T>X&@nfj^E( zwgWfqc#F+H4xJV~l$UzJnZ0Of{U5@`*c@;o#@Kl1y0Ke5`Q84;Q70(3o6&lK1>f@x z`ZOJ{+jeWzg6We}ciHYvn#)70JPe6PNQ@svw$+a1=p zFMux=Hy!mO>fcljD)b{Z9U;O!l5-Z%yj>a$8tvf0nte`^~Vt za;l8rYMo|2k#xbdNwPInW$zBjo*;AjrTZU0J1%B%zy2-jkNs4Er~*ADQ$x+TbVBIs znhJ5UHHrw6wph*xlQf_0O%mk;+Q^XfXQ z1Gxx(#fQ_f51D^8u2j41t>^!8$E+pX5xRj#4$my#VfcR1EHE6CJZAKeNll{($n(9l zqVEMA_H*Ou7>Xk<5#r_PWVh~YmY{1N9AeiXED3U$m6O`jFg83uo~-m`Co4Q~YOK1S zk>CNSooQ#VpSB+>L7u^n#&-y_FmzCzJS!ug$J)NeTSlDU`i7Ex+kX4i&+}3DL5W;9 z=h%}O06@@vLWzlG_&Uh0yqOhQ(M zh?M^bO&(7TiRF$7@aqe5e7|iz>6`8AQ(n{Jdnp~xk?+eTLyj8TJkOKD%Qf?>@WW=R ztFQNQ-aKA-H>y$~-j|F=h)ef&MLP8MHzszwg%PKXUaB3tv82irC>_*{?wDJh@U2aK z>)(JBRmqGgOHnSI8uFu7U}663By+r^j%?N@e7|pWc~B2u5zN#b)(9a+{utd2i#` zt=+fu+^ND}bNZ8!zlB4#1Zpw!@uwrh~mge5mguMOcMpNE`UT z(36mICr6FS1=g$m$xK|3F8{)Unq%rDUdE8lcY6+&CGTJ!N^|MAMPm?U z@an;Hp#?yV&%r4k7u@a4hkc$DGNwj&XeDEg} zQwUb@hs+~poJik}tg@wCt@(FSZ5F=YMh>YO{HBM$8mEgKt34uT&n(7OM>WOrr$R`A z4GO2WYjEq<1Cf@QzTs2Y;Wu}jgcC#RgtiZ04Y&QUm_o3|Qudt7K9ZYPn2?fUjs}Zs z)9{h)0ZWZbs!-f=P$EljHGVzS12-wGJk>zXBqEoWwdoNp0>A9;bQL$30}C8+L?_cC zeeR#=#8LHB9PX`qwZ&UB1H>^pA!C`Hi?fBWpMhM9F;;D)nEh&!V4jtQ~DL#yUmiK^^6Vr09pXx zCp&)sII@*VTnZ(DPCgTWJMJpqCeG1OSf|9UmxOb&)0)v>n}Vm|WmSQU?f!@X@(Sjc z!pqYSl(%Nz@|5m(eL1h4+Za|9xldk1c}fx<5v{jE5i>g@l%tqZr_D{vu8oHEc+qwhzx+n@k`-b=a?sJlc$xeEHQA1hm8 zaIz{lSyjAV&2h6lr`chJ?qJvLR#k5)#=kjN@8t^IbOng8k+bk5#>pH6(X}?$+xe+$;o9xqb9^%7aGyX`C$+#6LpCzlT`_;f0J% zVplhklSulfsB=NaW69qI=c0@f792AEI3AO5YQX0~^e;a1^zX&_^GV?T<+T%GE41O+ zjfHu49LB|6}wju6ous=wVIP}M)07ZKMO{03_`!uCZMm0ctfPI62$A>2+9CtX6 zb1W^of5XWnZOq8g&8u5g%aK)+OUnmi?$7}?WVBN2qZ^6&WWF^z>YV*;!!VPWKo~7S zV;HIqTELH3WRX_|y_7K2&p|J*DP*b{6P9RMTt^ps%zU{fuS#J}bjNoD%MYqf){P96O?=++)FEdn}m>*DY(^D$KCWY@P7B z6=F^6rBjr^9Vy91({IY;k%!_LxZ@>)?Yf zq++&qS!|$lvB?RTBRpaF_=QViU}vDmt1uP~i^1L7#?Fbv{9>E6=M$`L(~A#uoYTg3 z+-%eLfcAV(t`J72pm=k&D5zp)J@(+@`o4+p&vEC0jcJz+P^9ODDkqnPtYB!2C=veh zGZ9xmBbpsMPfZ?_3<}yHks_L}=Nfd4B~tk^1tE@+7uXYi?(x8ztg4ye=Ol!nVtT&v@VXPP6b=6tsUKTBLGkN z79}aiwUr!Ssw5`bj~;aMLXwn*R1uP-_p~z({NDxPpqMbD_AFQH&91iiL?v}d z_KIUc=WZ?F0Y=(5ORxc6kb!g4(T_!*Ym;(;6gg8pP}zya7OOf5NB{2K%R}`F$|LIa zR9q+3X4&c`ENaZ!)1o8CODt9$HCa_`_js}Ehrdyt$>4qvQ#eMJE$jD0B8r7*%K4>8m{u zd459Em8aYi;4vUVM|23Yb5I|=K6JoLHFNaPXdZd}B4S$yw9EI`PZ7)p4<oVMx`QMte8kSvxtSBXYNZc~;hV-~BZ*d`X|($tiRQzw>Fljehf;OUurt9D?i8r-8IMjLi;M(8FL8!Qh-&hIDm9S5Ie(v{eIn z3WO}R{%xeaWsgsg58`ya37!;<`@%&0!9B?la9%EP(?|95+NKO_cZk`deEM8G4Z@N( zKA!+&SLuHQ%y)%E7q->7?jJN6vn>Mxy6ISWO7`Xdvo5Inf+#k$$B2gg*0m9v z@pws@CP_{O_s!rYSitLfRe{n^fsJhQ!qLzO@@h${{%G{XgY}!As+5RDkkP91_m#FU z$%7^p^AN^Nz@L-Tbv8ZAWeOaQinh}jUG%sfEwhLnBr8<-8H+ei7u>zYngXH1G?o`a zB*9p@JP+sq`Drqj@#Dz7D}UV3#bU0t0w1=57PFKEHaIKK{8472s=QUH4Bhpl=3`?Ssg4xTN)PYm}wAlfh zhMilw5FJ&L^sY?lCA>cpKU$aeWwx`E*`#f`k^+@cqZ$zwQh16}+VqM()50>p8xxu% zUTVBl0gEu3N?cPIF{5r5IeuL%)t@BCHO@>P|1uO*)bA%~aOJq;g8%W41ra;|(30&Z zL&QJ?sSegr;e2baM&~~I7|dLAYojjR(aY|Sks}6o)4>}~^v_sP6mu@!nD7P$7zuS= z<0wyL=xpajx5Wzn2SwS|i1%@brM$puUw1%zaj$`(wL2ye$Z^h{((Nk#G`f|`!aMS#E*N%KbzY zJ8pUZI^M5HjL1N?bOV4Bkkr7hx?*rwFU>j~Z%kS{t)?wxpWOO}p4(>_~}2o(+z z6ns~35Pqst@94Y) z`yseY)znTlRCRU`?eDvc=8^S24%cs%KAw0^Ft3y3ZbYuTvWa z1Pms2PJ9oet3H)~qU;E!he#?eDtnvN<{fFufzAWXBiAZnRgQND_-aBV+{snrVv42n8$@bARXTji7$^BEau5rj7u+?VFw!>@cSKmSgGD;Zl! zmFAO=9~{2Oe9V1MRtT2WX`8>x`|abep|N$@#3`WmpY~>9g_mUw(tDe_wET#DFi#G9 z+TZR%#tFTy&(6HfX4`7YG~u@#ixX>zKvIWk(|#L|4xTODAJ5L`6Ql$alW}X=XOzkG z)zyB~F2WWEs4%vrX0)|5OngF=(|q5?+!u zCM#m(1NOv^lA1wiJ;)f3UW0Mx`eoD6P_e>?ABk;}oMnc4Z8nQa59`qx;~)8+yCykX ziZz;=_)ZruhZ<`N$`yf(MI~EmvkV?4e*JsxEc$IM`uS8jIU;Mz3M(tC2DS8~BTFUt z>6D?IoTA2gqD|qL-i2)wCpV)S*4;fe@t{?-ZV??$3Om zij#KYvM% zZuea2K@1Y68_v%HDr!xK4k#2j^I#%NWf~r${m9RkRi1|ZW=lPZUqowbYniI+FrtQA z5;6Q%O%t(3T7QQ;h&|C*+gg?-73lx7@5hiRC99?OezOyK#ERe) zBTnJxS-_(Hj@?Uc{!rz<3 zR)jXRZo3wa!M$0kgJp8iEPbiQjF#@oH0MYqU4PYQ@9xo?8I4-0`$0PTA4*L@$X}-u z$n?1?&k*DVnVugiIp6Q)KU7qp!z$8(Q=^pO^!~czJ%c|nUW5lsTNMA#>fZ`vmoehH zj*l%T>^Cv1l?eVszC=XAMqI&H_1iR^kp3?)@#L5Z6&U0Bz%8WH?yKkKWg4Owyvx+< z;H~cf6pYnVaDyQeue@gp#-~YcyX)AZvCcNW9OC@c-rp}Gnft31N;f(@9x`7HSvG=9 zWX*PaowEK!1BXs6_qX`WN#4JnJnK2xdO1;a?xJjz7%+hu^ik5NeOBs@ejQeo4BRPW zNn-r5!qkQA%2ZQyd^7iT^f#lWE3V?CaaiIy@fr?A%9bY`;?Vp`G@t%*pT00emkd$y zVtQ^bK?M7o+w;C;n3DnvZ|6z=BowIdJab6FLsju48Tr0$k!U5qecehV3JU3HH((m$ z!!a4a+ScTya{R;0UTbKtxc(dEa&5Itq$o*L`$o4)h6RS)auk+anuLxVh(KC}p<)~_W0AfuZeHCV(tURm7oUX^>U z-Ru5ze%Y$9ZvE5kC#R>Dqvc;yk0r*L`mhTN`UDwFyeTNs_k@w2PF*e4-H3a1Fy&H^ zh@al!ZCUbbXWLOdD*Ghb)1Y!cOjS2pavW>lEUNni+mrL3J3%5E4O2r+4c=HpTEa8W z^RcElsJ*;;tfFABf#)V;1vX$(0Y6$qM%jcvRwJLcFrQNQ~;VGe@rK#vxI&PFd)$ZJavFm_(l_1aUV z8|H7=x}7chvCTAmOaZzMT3igDTJ6N(kCkf;Ag#s8d+a)<+)%_$9Nsbi;rnZhnXKej z#@)v$+(fz&8E@xH&Sz(&9GoJ^S41mNW&bkz8V(Z~CkmXq(|01oCMKVqM0vSRbgzo5 z+dlf41zDzb&}?h#&hxqi6}FBq{S0zY*B*j+Q+@q9C~5PO;#W?>ruVOzuae}6&L^&` z{e1@ZSk!nJH|L9AzgTv-Kv}(?vU>j)&9I&8BL!&*T4(96&u9Vfks6=-eck+W%>Q%kzs;Q|nRi{sP?_PWLKD}3)zzfI!&&0^Z*`V9=9I5j15`D=?H~CI-M0|a^ zt?BdTCWt&GvK81I%l#}=O<@VF8D!sfn#C)m$QR1S|0cAqoo5ga&EpGwg!Mn4penlB z|Iq~bK7z-*%NqTf-btazAcr3BzKT!bA^Boz`bZ$$mYGkG~kpZ7$I^Xj## zW^Pc^?mq4w5OP4=payCp92=1c>Lx{$aju_z;86Pf4j^i|=HtfcPq4`H^*AW?_$~CV z!JceiT&_>7@HDgl!9>E>LkUz4N0(0y0`Wy-2Y}H2!#Q$dAeR2G%Rju3hf-_nNZP!je*g1x zq~xs|kCl0~&wYkC%JSlhT)3Qy>5^b(okCd`E?gU{;tg0V5E*>{+wbq$g|c|bT*n=F zo4+bOl(q~AWr@tnl`^|xgB0AA`bvVjO@H(mZ@)I~h_%1>a`2?zGL3}h ze~vYJgA}Sq`;W!+26f?`QL>3)nvDm{FsKv!;85%M!k)l^BO054H+~asn9KH5(z%!; zj2UHoadOPu9-N(&D5IkuaC*HTlCG1F zEYJaOwcZxWN_aGID@`zuva*~99@+RiS$W&%mQ{G^3q>Wuy+?evluAb`Tf%7FVIzW5 zB_Ti|ucef6755JUN!b5`KvaR`YgVD@yEjxoU<~cjH$e=v=cjyh-!5fcH}I+*@l%wI znxVd^`Rs$(L5o>B2(hiBB?ui+ra;--H?I+e4d6lIsSr9m;N6)?OiYEv85xxEF8Kcj zpb?|9JHKK8wWDv3pmTyzwH`OSaLjiV3dg6MvN@}OodBg;B98z|P1E~_7fEX!E3VnA zEA$%np$b+I3s3*e6*@jDx3$i%6dV90j;vR39*xk#@uI%g=R?cP_K5yJ65YI)mOAkg z>wFC2)YnH)O`?Aa#yj{96pw5)E-GvQ&q#wK8-_>~AsXHN%z~e)>A<*O)bGIrpA&km zr0`Gm9bbrv@NdojJcyMF3BMY(sY{g^l>y$#hIV&psVz#Yd_mT^A^J+TpMh?GLW_kZ zkq7Z0n|YCWw|@7QuY>I5?(Y;84>cOh$VgOR)1pbqkmp=A=cT`Qd3s6{QB0*H3a~!) zgOcqN9(#w%V(9i>KK$E;v4)P=Qkyyr+O3l>xL=ZT70`?@G*%?Ub{4n$IA_HDMhx$< zHB|b;fFFZksDM<||Ck{tuxsnq#F^<()n=L&nB2AQG=sczJ%m9t(0(yg!XK8epm~xmmq(qzhrube{D`~IC6 z`Q>K%xHo}bO=o*#K$3_gx#}kVQbgl1)IGOA1Awy^H-$M2#)H6MBNO}!)h!i?m$^!Z^QK3>b!u=~3DR#B!VYrLm{5pk05Un5FP$u$*6{zu@ z?@SNu?&G9rI=KhAKT{NLWTH@IL`oQuC9?F*o=y4R^sIdw8j{hw{YOzJ#YpBQgfdQs zE00XW`~F%f>M}qNH^P{e#5=Dn7fE&`CX*>zP=rrUQ(Hr=dY3h~HfoFw zvIE|q1U0h&sV<8}DYiNV2j^f9k=sGj<2gOz z@y4%bK%+OuG*&2r+yHuakO(6w6gyjPlrYNTiG9dir(r z`fgrg%CMEw<2BI$gI=v#sYP_<$ly>^4ol?&X4ZDO1nNSp%HY9g({EuU3DFWe!HyKc ztWS}|eC@$quy*a@GR635!XnNN5;t{9FV_$G?yV#0 ziPZP^1!bo>0x9EbD9b$a45pstc|e<_F5~KoaYq4_>t-7@cvXIWA(7c{r*`N%dd%!0 zLLIAs=eVCDD)rBCP{JDu4(c+ia|D)~&Ax`nvaMUks}F8u*%u!N2-w$#`s}v&t(9%U&(NF<^qfU{1U5JxNOb ztw(3~ZMTdp``17*8W$i_0<&@c;YYc*^hhA8*!XT)*+BMZi&pjD8#apGzN`==_?3lS z28O{4FQiXJBD~_Y&7>CB<73e!iOlck+}=rEOCnfbL`vaY1U9GLF`0f2UH*n@ov<6e zmy|oU$VJn7F{%sqcH{i?b%Er@22{|?L~Se(4?ehkq+CJxFOM$bt$1}ViBha18?>Qt z8B#JF+Dr$}ENOzaF#C<>joSWT|JyQJ*c5cqk`dNYu%U8X!ZI)C5-%s@rtgfOoq1`| zRot$bN)@DHbKWi@HMdm8MdM?>yEOVyumkUoTfOz2tBiq~h3= z-t>A!i_;_^8V`05!n38>^3)rURo_ssUD$=Es7Om>mPKjq<>+s5Nb(j*yYwfCVp z%*s9^ml-9+>pSq{aDQ?vST%DK$YJCeV-cpKFS%&R`oQ}di7{k}AtNlEV@j4Vs7K>t z&>Z6MF&f4h5NrCCNc_SD0QVN=oKho9@%Kh(2a%>N6;RGyjtwKCcLuc~e+K37LH}7- zD|gO!#d|BCFh{Y1ZVB*^^w7WUwF#iPyxP2I)WBDRFFRO4hwcWQB&}QqkfUKQYy2L- zXiubCcdS6uH3>xhuWRGFzRuBTD~M&2Au-3}kYfY5clr=FNz?wExJR=VY9x!aoI?hh z9O&w8WUqS_S?QEJJKN~c*T~cw^>XX@4(=mLRv+&SxKvc?jW90Yy!Y!+{TfXnb*L&> zGO`hI@o%l;xx~dN;;@po0SQKfI0eb?x4|vTaf|TiO4}|yk(Wc)y}A2mZMBeY^HR|4 ziK~-p-{Y_iW=_*ye}EKDTs1_TN(K4b=IvwtXi2OL6-gwep>{tn)cpVI92lc_t&98e z6lG29(paO7enNsL;NF1_^}u@dmREr=`G)kAna}1R7p|;IGA(@%FCtIye4cKP;kU@2 z5#$G3Z*#^P_>YCD=nGwAk_5h~5n6wREBj@ZS9fo#4Ea-A8^ za%x$&D%9PEK7lIKPXI>~ne7N;Sio-Pl`U4>zVs9oKTrR>E;f1$VpMMMJ4Zjn4(8o$*e^4alN_{|}5Ixvq>mI5=v z7fmTwJHnUoE6ne|DUno20E3)`4d;tRz5F?%lMYX8fEY>Bi;?VM@JV}lO-*ywLhEuT zF-glqf6eZ9ap;soJ7zt~z<2Punca2W^sqz6iWq%we#S}FMe2mhPYuJVY-*j@YwAMG zQp9UD4rLGjR1^*fRph3JG4dqu`bZw9OJIW#N~@5ZGD$J}rOto)W{i00_cAIi6w9;d z%F0<8j)_PiM5IXDfwE@EN}2e-zmkb}zc-Jg*L@MoEmrR=RAo6(j|?Bsf1Q6^mUB2a zq=ZHhygy36CAPX1z=Bp7i@^q@-UMtiIPqSKK}}EEdKi`FFi|hip)F)G74Z6WeauRF z+rGT0rmsA!>~ZuFJml31RQ5!4OXfVO-WJIp>S`op2 zL>`eLie-5Cy)0eiP}i@_46#~vz^h$O4Z?OMtK9xFS$d;JU@iL z^ci9ns;KyT=E^b*>8ZR!ke5h~Z;MNq(8C?rarZHS;6UTy|D*%U!iY~o`gcy@0n1o` zzK#kMJ;Rl2oc^MDan#3(f#?;+P!yOS+-pkSrR~tbpI#F0_wHGOhp4Fd&C+hT=iCXf4-7%FZX5lcJMf!iRCW`=TkU;d-;C;AankHPY12$M2_Cn7jB(r7C(Sk<(q@JpCned*D_E{5)bN9reM}n zVLXrW!~$?x%Uw?W8Slbuoxz_I6lbnvQ_N)UQ+Y>7W#sI6_ujUd$o*R7>|=EcUzx6Y zUTenpqYH20!(SdgKOfr@m`}NQ=J1k;SeQ--0^G|wD#`aIgW^^z6s){>O^gjT~F_!%2-fwT)@CrDWI!iY)AdsGOohdN#NypnKfWx`F?BnQuBZyouQOKe)u$I zSO>v}2~9ejcRg2YN`|AC_MnW^Riyt`4Am471)eA2+Z|?+;CU42KWrxVXESP$wJ>E! zA!P*eU;~JP5(eH29r*+qA`xpfbnv-cDv%A27fhwyN!l(k_rHPFz_px>tfK+zaL8bA zxZ+-}HLN}z=ZA@WaQSPE=+>)z>Q4L7<*(7@A`0<81I#un>S*OqKna)f=l4LB=6_*X zqzV-Zm@*VV0IuqJ$CDP}H5?Y;L0wXD=w&U;+E0`s?i)lqV>*`3#t=EGgC5m5;Wnz} zy^t()2y7xut`t>L)P2QbH>F$2+vL zo=8`Jp>zK{x-cR;mN8Y^;J4x5$p^K89!6OBu#pHXW!zvZk5Fu-xAIJJ2A-#useIXS zQQVQZg)BC;KL}$aInpRb2UnTM6-P#Mh1OgLK{K`{Ms8N~7INO|Hbgd`Djx2OUJaN##c-{U9xBnv;;f~9QVRsI38 z?TbBiwp-HOmjV7;(!T>O06hAH5FueQjqgN9sF8m%rMWN{S!dnXwhReB9;@=Tz3zRc zTaReHDKZ_2Tp<0ha@Ff4wA#3uTL(qZhw-r>eVs*Y*o1MiIGHJ;DKfG=bdIn-v>H?x zOoz#0HGw4DDM-Kk`vorjUPEJfeqN`&nE(#RyjXfvC+SE`UIIfO-ZL1jsZ64ll~!@Z zw^~3mv7=nK$zEvX7>zbfp^||{E*dn^S`?5wLZ zNac8gxwUy;K%gi%SYUS7SthWD^Y3DWT2ihXhdeAwEO)YmYhnCeg=zVyCY?0ke6A;Z z?EZzta&-LH>D8Z;2*xUFrjlPG6gI?1{)@CI^~00+3iM_io3}n{9 z)l=!|$K&hO=JV(tT-^)L9p4X$3u&lqoO_9!o?f)A2V$T|LdlF-12nSx&vYq6gYP6A zQ+QuR=wVCcaqqg7KF-D`5aG~v0>vVMe(4q(sXkv(e<=;^=z0wuCX2Ii%?0BpH!?nSm{u|BjJT(T{e z-%6Q@yUg%gnUwHliCeB~A~F#?Prh{PKF6G)mLFPM=(LFCck`0n1BNVRgvBrJ)fI&u zfSAhpb5z^kWJHUQJjbN1bxz&x^G@uaTPnWNo|O3dl+EgW_WqQP7$AvpaVJ$~HSy=; z{{W%#ceSb=R+@tU%|mMZ`RS#q*V z$e}aRHa}?Oe-dF+_+BYQZFItm=jy8-1Ud!N;Lfz0;RButtuCz}*M-y6p{PeA${( zrOwnEE!;DQ6$j>SJcpGv2>4m6Y_?p@eh2%c<)5&A#x%w> z&NbxX0yo3{D?KO{M{i({&M))?Lp`qF@hO?=I~1Ha4qukQCRo4)mpt^kwg7E@9`owbi1X$uFa z7MEYlC7Z=az|*UrKWhl^`1`r3^;TPKA3q~xgWKo@Iim)4xVdu16>q2fmLtM;lBlEWq zjKGhv7)6u#0O=S%3=)F)qEYkls9!X>U82m##Fxj*uJGc0C++$l+CyUBh%C*{USZBT zk;L4t+*E|bzT1;w!ZHU@1!%n9KJ*v*?u2T2xh|VuYvQqdQcxf%{cPnHy1a`1?||B? zv){>5hhXFn_1gXn>oSWU0$n+T%<}r)r#z^J#46q^Wp~a#Y(yknd0elw-T#qi#S*Ku zauYQ4>#?pwZg10J@#r1O@(>=&H=Tp#`#a!AIJip@xR~_5gNndXkUAuIZCC(icbspw2tJPf7|u9AWBx?$=3_Q~>E25XAp3G|_D~>No&#%zMs7#!E_TKN6xsFTOzEzsYk`$cprT?Y(AeJr?F=dwh zD0?ME853qRnzR5_z~hXG9s+@*%oE&`zRisk-R$_3KS!GML`K1sxD=p!;t;LHw9EVV1c%_(Zlf9< z5fQMKR%}YuDC*g*y!?xWtkY)?!vM<#^<50hPrNy(D5x)x!>TsDrzekWe`|m3;9AuL z)fw`xGLngLv%mEO2+jdX2=t!XkI6;Ly2Zui4CuZ`0~YiMjc?YH`zEHgXX|G*nPQ^1 ztCvuY`c<%!-{~;i}YL`u?{c>4AvuDB`QDWeZiPEk>@z5O^QkamFFR84^NX_(izig`GobgC%hwy2w zL-Y@xgJs3fK6PRH=U1}_^YH#6xpRsj2PJ~Me?-a0pgR97+ zvvzlHEN!ejA8i(lhMovv4#)N;RI+RRPMEr+H)Ue)@X8w+A5MA4g7Q%N`vd%n>F*Dr zNggrA=ecylMqJF*u%fX^?|E3@^boJUeGLo@>;nA%;xvv81Gc9OeNGsgO`X@*G^P-$ zBb#mp`6V+HGW#!>4S8-bPOyh6O*%F<*WT?770*rXt#%Ht#}yTJ6)KXFv(^=JEvG@q z49FoNeql#nWynUTI%!8hGVm34?SG0+Z^tfwXL9b1rQK$xO=R9e-wyvrD*lP`{Tl-N zk1hTisQNda@_+E(09rQBU#*fM!jeQE{6&=fN%vj7-?D~wRg)uUGkyC8=OXkWJioKF zI~)1IPxG8=R2<6JHk97L1{>FzUhescL^#z*>`+eaWA-rdPGA^}y3}!mr>|A59Tz!R zl4z2W(CNZcJ};>u`1pjx=C?nW;^DRm2x2EGCD(FHhxT8F=Zh$c!n|z7OJhpM=(#|z z(e`3WEACBG5_ipnDC9)0M!_`V$NgJ$+vG2fA4?2}(j8nOBP>D~PEAT>fR_GS7m zaT|mgjds&Ld~gKz%JOJo`ZgXN4HaC{_1JZHT}>1A%8QJ=oX^w?nJnHAPY9*H&j>a^YD&3KP^7CtJ&Kx|OL?!h#8ICG9sNv#ZQe#T;YcloF zH^mnFviXahK0jfRNyAANa@*|Fpp)tNRi;(+Ags?sIEPzMfP!e?Ja1E%-%Dg&0DNd; zaI)WasiyqVMLq*};L)xB3com4f(9KG*{n|M{+py10{Rx;iIGF6nZJdEOt=DzgFUvk zP^vJ@i+@=%t3m6AeuV}!=+*hU+xhZ*pJHb+lsJ37l}*xT!v5~P`r7g6@j;7?&4?D4 z$EU0Hv*>X_+VM;gkLKT-y;EH;#{ti<YFs*1_U7l4%0*(eWW+dIz{el_EijAP0*W^HWnU z0_ug~OU%N2xt0aeNRgo*Ar=lFr=8r-P6t)_o^m91dJ+^E9^ zgAN@nWlz7K{0W&{zJEYS0Qjv=Qv0XVCS99DLRs1(NYD9|*6YErN+26Mi~B-H@HgJb z3Rps}!2r>DCQ=sZ)m5kUv#GKL2a1q9if+pS#hXoMx%;=FV;|B406oI~dt>6#F?)uL zVu)j@4@YDoYp=fdQEqAxxZzhFWLb;kU4baOqgR`r->IfE+eqP(l&%DkLGdpvB~%IQ zc6P^$OoBX-V>-!-T^wD~kwIYyw1ufB^V&rGFDqw>Lwpbai`8-hn_Y?5;wQ0NzbGT@9G@ zrSll9mqHJ9^$2 z9GZa|=%yDtBDp1P(Oqh>>K@CB>k-J!Qh`Ug$N1byS}BX)ZA0Z?k=>ZQ3o*CgvhMBk zv&Z%^BSVK>mRL>hjDA)YJ&w44j9ftrpWxINE)mjGZ7bF29R4P+!{|2woe`!3WFfdB zDfqZpZ7!#Q)6QL&E|y_%2w1|gJ3~JEDO>NpEkv2qQL!2At-`7|G^F8Mv5bFmx4k*Q zODR?>W#(_SQaeb0Kk|i(VdIUL3%`ryr%w0hUFZy@l@42)K|MFC(F*Pnr&d|oJtAt* znc-!+xpA-R_=U3o)ts$qZO`A@DTrLr*B2BJR7Cn{Fl)q%hc~k`ASKxtLEU@%R9YNf z{XP;eQ^+SbgteMvtTbJ~hewb_0GWLI^bmXfl(x9MVSkFf!$h5x ziJL$31^S$UFaFTUd-m-;C{Vw}sIpYEfnTr)di2J(ZxhhIkVXhglE-sr^l7wRlPsF? zYx@-<5)8S1C`?W^mT{}4Q4|z=v(B@UkofX2kzSUFFDaroy(-*2F8@-8f~PuRICo8)0i+!F;qon(cq^D z+-LIv3y7;gg@(`3>=G0UOSlR0;ODrxZmzE6%$<$ZqiWvJ`*?SZ49y*0qusb$O%zgu zV0ljY8uvBJ-xm(}nfThSA>4ihSKnM-o~uH&GYXaIp+mAbCA&(b)Z>MiB@i%ml^lg} zuz){f`7_j#btk9O_Z>NxuZ*vnXK{6{00V{Xa%G#mCNid&@Tx)fi9IeYY#QWb0RTDFL~fzAh`4{ED6) zhFCKKTGH7&b#6B(7_92CWPLKNTWY-_-d8WdIVOH}09!k-H072oO_Jnl#Ca~29dhYJ zwP%6t{JkW?y_6&w5&~NN@TRH^d$33e$4uBe7vn3AAkAK_t~1i7XlN)KC=BpnVJ1La zOx)?&X#qYakUEvSYxN!q10sUOyLWd=io^kDgRC?TpnR`75K}guU+%iKn60b4jjpQv zVd`f}_;k*T8}~S^JT&!`WE4y>XpGjrDV`5(1a&L(^So#{i%qZ3B~oSPHK_zqG=X?q z8@mT%I~>3ttc|v+3_kWLNdebGk0G>m$d&p5RzqUC@I5m*YMu&56PUvjGHskG5wcCb)Q-!l_i!#6}2z!@lrPDO>KbAl4;S{lb6bXN5AWnl%$cObJ)rbmmmBX`b1 zVAPayE5Rg z@;9WyI-dEde8f;f=ec5pAzzTZ7Y=FOIxu+wM?y%O^~jTk!20@8=7X!N<4aS}_n4AZ zGt0}%X}2;_R&-nW+7I&xIiA0oqlpB}9uj36u2D6A@OJiv(=s=2f4@oQnQF}P8NH1; zw-QsMn6}4Ax}~#`ddRA5&1f`>q?$(OX_Laa#S48N5B(nfsomgocT>+{1<%RD4dM}0 zvW({L&hag1%p_g&jR3e&-{*#i59b4)5GN%wBc%^R>yB=w2duIFs+5N zWUE|(zZLkas``w(Z;D| zb(h?IW9cp46}UMZ#zcl%+Bz(H9baBB49c&aVaQz}a=CR0J@WFn9rrKN#91CP(sd!M z(1|<{gMU1>lX_u_p2?Z)M3I%*D|=hq4$bhcu4EbKEL0SBy}C<_Od%#FTJBk^0oco3EmAGI;z?o72k6T~feUseq zLuIm249pFXWRFB#BuP_^rvDP^mGAF8EiDvmu;u><3f^}QlRMSO_F(z7w?mmr zRdpd&*oz`%i+^z9Hn_<^o;X9{j%}~iF>5?_!w9Ot*f&it3>-p08xrSVOG_(y*hcFq1zi4^(MltTnsZmqAeEMGn&b@+ ze*?>z`-x+-3e+mdyoIk(Yw=n}BO1_T@ynLWjg6*>-h#5K8R*uG$_m~Je-bXsM0=KT zC^eD_qe@8NJ12>QPnP0tTfe=!;jjhH6r~~*v{Yt``bpzi-r302Le>{0xVpAiMH< z(R-VF9QXhz{LD}AIEW%;*PyO^>{cEb?Uh0|4LNi<5_GTd3R|!;b{X-PdZ#>+pY+&nm@cM#9K|+WAStn zN**1lZ7`Ps)jBkuQl;kwwum0=t;d;;byQDpZ$q8?AXKf?@De%H z7^(t^5JMu3=-1%(I5L9U{`erm4q#+q7W83X+w86Pb3QS738@*f#XTI1nCVAL^)YE9 z%2KGjdw9&!#m!^{kDX5!HN2GCTz8{JPP^YcZj+1&Z1vC9lRt9`d~5fdp^2?k5}ud zAIBQX3Ki4Owx+hAF0o)=YPdM=o#gKE)#F6k=5%f7ZZhwD+r@@uh74^{A5*Zo5CxL0 zlEW#qXX|E){<6}P5d8GF@H zoxM1mosDhD3Q|mGW3-cNQfa04*+~mBBT-5inkoKhYdGj zsX{G&7Tm6Z9hsUL7R!zC$7lzuTO^o9APdUyqDj~%fBIhxZm3<3g^H; zyefu+#t5F?{a%NhRL)uN93M--Ai{Zv4;_&*q-fZi$?^WSYx|BnMAp@v;&0kCiQk33)><<%wMKtHmQpCl^9jDr3zkA_rj diff --git a/testdata/snapshots/darwin/radar_chart-light.png b/testdata/snapshots/darwin/radar_chart-light.png index 3ce2f9753d34937b03bd241f71b51a23efa3e85a..cc06ff92b8c9e14ee8ddd8cb7d2adbf7e2a13d46 100644 GIT binary patch literal 29482 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 F{{v`e(^dcg delta 27237 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�SXSNxrAf@tk4Zeb2xH{ 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 e5(4Z63&GW?8)XTn% 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 literal 13704 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 VZ`#$|VLPgDQeyI=6~YEz{{^}3mInX; literal 13140 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 aX6WkdyqL53StGE_XYh3Ob6Mw<&;$VL;IpFu literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/spark_bar-light.png b/testdata/snapshots/darwin/spark_bar-light.png new file mode 100644 index 0000000000000000000000000000000000000000..566ada61b8248e23e36be0cbbb0feeca30cc435c GIT binary patch literal 1566 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 delta 2561 zcmV+c3jX!37o``FB!6s4L_t(|ob26sSW{Qt2k?{Kf)FSMjA4^SKz1mCLJ&xyV12vz zjtjQxAlj#`V^^osc0>?qt=fgbQd^gzwRP%r?BY_T0`>tq!h`Gxl0ZU20u2$_N+1b| z^MrU9Yg<5;B!u7h{F8frmppBf^YNaWb8pB@+xZ9rfj~?>L<0N(ld%eTf14@Tu~PDBl6H{J zNTj<5IFQcZ(h&%Rry@C@Zred4k$0!;tGrgDR2o1!?SBdUy4d~xx|j#c;qCRw_BQj5 z=3hLPe^H~+=uX>#e{=?yPB)Dm3CYS#-8*oPbTEz8=QP&Zd~WL6P2ry2<;~pV1-bo- zK?;>ZwVqp2R)KdxaL&#c&)E?Ogtg&O+gCi<-T%w8hcherO(PRnybHvLqVAUChY$ng zA=gEF5|ij=<|lu=e5I~xxDTn6s>a%SybEAwl-SYD%y+HXe-OFYudu!*{a+`0=$&Vq);U5 zzhw=P-o8D-b3gb z*&bWERWc{xe{9*+8xoOPqru(d%6zK__pDC}aCR-KuRT?iuTZIQ#lVAQ7Gbw$S!8_R zlJ)EuS#M8yGq-}zE9Y~^gpWuhCUX+Da1z9wH#Z+Y&?sremHSTI!^<<$U#HV85klX7 zcQGYxpHex&&jB0;PSs%`bH44N?EPMz?g$|skN?8Ue>?dCAui6|_&K?(3S+MdWA`ft zs{~Eu&AbXeZ#?itdHbiV*+3zYKFK{-%DaKPjbgCOBJ5KBdHhJ;_rWfUf?V8#T^Gd% zh9HDShmS$G%1BHKa&f;XU)ytL(r0t*laK59b8&`~Fu*@Rt5JDnZhe+1(O=&Sg$dO??I(+QK zzPna$ppwa{U!M5Bq7*;J1hXV0kVGQw+Pz;Yf0c2$&Ft{d#~+Ia>0H1yD zX8-4E8A2#C>+lEfrn@Y3YUa1#U1o23)I&T~aipRvY19nO)e8A3j~XA!&W{i({=f$C&Dlrwzyl5JFaTx>Tw?Sxcu|+OwD@ ze>NqYaZRNfQmKZltt{_+2Q@rta&TBM%dyj8cX#U@6~2*uGS8i<6$)^N(G8Z_i{0q( z{q>18wL-!6qX(5kLwK)Agf|b{r$!~SO7aMc7Ful6sEVg z@0n*`edBL0rtR7x5=jcK6#IC48nbk>tvr4+N4`>kYCn^f5(DD zRk!fDZLMQ|fo*zi z&K%l%2huL*6=om$G%hxZ9TB$UwcWS~F<742vSGfR?W?b)G8pq-e&LzC{KD?;9$eIS z0-RlsJpU>}sFc@GC1|d0X}&IMf0@i002nNH50>e|jzS_o8XUSYI?lm{p}q5jTJ6Ph zvpETgDZMXsJqu@PJEDy`<>N)RyHBAoAWKQ64V)h%3NSknC$y7@b~1T1t* z<|Gh_M2$wnZI@`@OCi5n&?GbI_wvlw=g*$Yb#}5Bio~#-c+BO*`f0o-LEMUU_V&yH z`C#X*F5IoB5D0__FP~&ie}cDzb7x=gslxoi`WoGLVh>QMuJc*$OqLsywQ4ClksX5& zl62mzY#D}6(A*-En(%tS=@=|iiJcjh_Ww&GpNizzSXfr_n==0Wc?q`x7qv~++mlya zo>yIt5Hh39@pWA2@2rLIu_epaMMNWn+HQ5KZ)*;Gd-`glVJ;P(f9|MMDqfRd%AO7~ zMG=ejea9Life_;tv^gf;oyqFx={|8K_oo}z?_QoZpj6h01a%_qr-ei$Ix_4Q4a3Lw z@?9CM{Q-v_dH>H{x2|&QvoC&!{|E-lXoF>Hu(NpJfwke$>ms7*X67Z_hBv-AI&w#l zKWcKtU@5Pml&95@e?%lMTHv6AkK-H2_VP7V>>v;lkr*Esk`xo~#IS3-)p_Ldg;L%P z&8TOw)f$aJ+Aff`=T==q2-#U#yEEB zheCZKG<;)J9K({{^mAM0`7^aG{M#n}KW!@5{bj`yo1)@|)apx>Wyi1N3T0AUfj}U? ziodh#(cuLpMh#-oiGtjEu@GLGJ1@DlhF#plh6t)8@pML-G2uF XPQ$@t*L@q000000NkvXXu0mjfvpf=l diff --git a/testdata/snapshots/darwin/sparkline-light.png b/testdata/snapshots/darwin/sparkline-light.png index e17c6295e8e87aefccd0d809376b3432419f7edb..d30712d4843cc290fc5ee74136e299b9d0f607c5 100644 GIT binary patch literal 2922 zcmc&$`8N~{7amE5h_|7!jioZeXlU%BvI}F6F==ce>&PyX$dW9PkX?FfhQctGvNM=u zi@`|NS7XW8m#q2b`yamZz2`jV-uugao^$R!=Q&S;InsceQ-~7)0B{=_>RJK-EPpd+ zbKogv{cfN69RN71V5ED?Iy8?l8DUTCxuTkE(i z2m%QU3g)L}KTTl?UIPZpELkHo){(fzo-e%?3bdvu8Q!nOFPU5TN31pgjT%ZhJ9Z{N zCzQsjx{ic2F0+V8P7My8aTQN9zV89j#{F}=ARW1U#jwOAIz^g7{@5O~k;su0=QNfx zVYMjlYIiBCdl0G=l|9+&9^BskYbM3w;Ixhs$)ys;BQ`;HMir~aW@ky9|O>oZi0fjfq*Aqu`$WdXiu7Y!DoHZ@g-4Xdag$+HY`@{lys-9q4({ zfoJBX`mc9ZS2k1d&{)4$iIQkqnb7i%RyyaBJlESc40w4B1NJHne^uo)utiCpySQ*h zulLRDr(fz2LxazOrPQ(2>o$f-54J^z+8!{l1zo{FG@ODv5uYn4D>P^wGJjvLES;uk z-1%5+uQ;n!Nn@wc4R6kuce^D!^e*L#1O^}refI16L=d;?g{X9>+S(UP&icU{?)`p`!QXC1W-UoNJ- z>BIE(YibNae@-Ueh4x$zg&r=3u^LlT$LRXXo(jU>#2KNIBQ~}q+&mIdTcb@m$f5j} zv2+1x6x1P6O@Y0Qyh+OIUN@7IPvLNy5QtA8KpQtcu6tQpK|w*ET~X7=v=0@ZuIX-C zizQJwPC-_!?Dx&ARG`Xychr&F!VTCnI6jcg72gZo?WKn}U|>62>(QU*_F_2lf@(&ZwTF-t@#r z4WR8^?sQ%NXHh*ALsS;_9MCYiJ`0NgvTV8Z?PmK|5g8>P`gZ+E8(T!dxk2!rr|Wng_tEmyk}PzW z!O^2dMMU!048KDu0yVhENj_yvH0t1Gz<-8sEJ2#bf9z+~t!AYSE&0ppoAKylT%Jfv zm!$Ua&pMs;7YQNO<*K>Zdyc<&0-=x5fAV#7mW|M8WO>*%=Z#`XOm%g&kdRPO{k;AU z^XdL+YX3BdOzgj7;W9$LH}j~Uj`!ZXgKe48bd4U!d!U-XNc}A^&>!*_w=2a`XZ!mm$qw8wRL?tA$Ws@z+mD5pCUr1upKS z@SQFqF_xcygyuK#o;n*}aWrd{J8g2f-q7)M+}@t+jOOf*Ncn88Gy;TQq9v6!D{I^^ z(hf3tfmX0H=8Gesil)PNe|%WycE*ZKpWu$l_c}~-L)2BV?U`3U`OhH-zz>GiC3{bKF^ZuL_kdQ*p+|iu8n+rcbeI>Ed05%f0?+f_-Ea+9 zJWqOv+AbaAXhZOG_D)YrLBj=0xx7Rt<@&WArl8k1!{}vZr-MGf*(IllEMeYw8fTT=?DD+KlZ@bgCw&(KY}Gn^VLdd?1>7IVxob5EN^j)7QC8+xS^}D=fZzV(_b0(vAWjg4 zCgL*IQI8t3v33H<%Bm+^eIA)@9Vv`O*!4q~sg3I0`30uAGQBUawNUQOC;}0jFZ5Gg ziLl%W50zBnc397NKXFAhOpq+Elc|QBu^Nr}&c0uyl1$(|-8MT`r1`Agb?=7Kn^f7- z3U_yiniQdgs-nWN7g0+Nowm)wD^wexn%2B`ngeJq@cZotQl=w8(T71bbz8<(k(N^; z^1}$CVhztG$Gu8G6GzUwIyXTPMu*P|8-8fZ?B3(Sp)QW?oSnMGRjKHsamQaC0jC;O z9mKAr^|&&Lxb-r)V{Mp!_VNQKSu@0WKbzc1D@em_Pmt6LBzhv4PL>CN+gE@&{iEe8 z-E+rClaU&tWMXZX8$GE)p95nx@;2@HWYL08#0^7p(pHq?*0V86%a!LM zVMBm>5xW2+&XMb@z>LfHhR3E3M}gBAt};h9Xs4_^rrd!5Tb+vAIGFhq*0ho(usD-p zEk$8)P9E3PWc3u`ELwfXh)-Eq&m@I-&G1D={tx3;+_`@vy!}g=@xQXkl+{R9fSCf4 UAZUqUWoBrAkseaFT-!1FKk4Rz_W%F@ literal 2901 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 BXW9S& diff --git a/testdata/snapshots/darwin/trend_indicator-dark.png b/testdata/snapshots/darwin/trend_indicator-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..88f5b88876e2a9c9ce6af0ab94d83a21eb4c4d87 GIT binary patch literal 4635 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 XTpl&~u{3o5N5Ruj)m1?#*+l*yajt#O literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/violin_plot-dark.png b/testdata/snapshots/darwin/violin_plot-dark.png index e271f5212baf09441ce189c792f48cae2828f1ed..62bd8626e3e234b6223e7a57c706280f4a15d253 100644 GIT binary patch delta 17102 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 delta 17285 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 Jmvv4FO#mp3aP$BG diff --git a/testdata/snapshots/darwin/violin_plot-light.png b/testdata/snapshots/darwin/violin_plot-light.png index c68f1b2d09667eb73ec4fc0b57cae9423834c609..46e353b3e2f755de901dd4540d0e0ceb9cdb81bd 100644 GIT binary patch delta 16525 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 b0eFxUL*-%7FyB~mP;{p0@u5Yp6t delta 16714 zcmZv@WmFu^^EQk_aEBnl-Q68RaCe8`?tuVw;KAM9gFB16yqnzl|DG=| z=P+}2r>DBBy6UQ{x_iIJKo-VAexZast)@zW28sqBW4E$J#YfNvl3*tL=tb5f&HsqW3zUvD>i2_25Qe_ERM-dxGieE;59 z8CL92i9SE!LpK`P8?x>BTBPxI-{CMJ#l~B zyY+|Ca@nMs2ejF@!yI!dWtIRG1jh92){3SEo|nB>>KJe#)J=iJWd|?G*O-}CKgv^a z^WHFXt#LLZv;E7-?~{_(OAn0@)g0AQb(&i?1G$861LtbYN zEuLMN0E*_1rrD>$t(=@#-Bk{^zu__&ZhJI6`@I4}?;tQRP+ePW?PAFq-&3u(AP~9&e!9ULc7%WGMI1D~XIsN<|1e1X!Vh;_q?fOGKF>z05s#O> z%G{_~XpROi`q6H|tLF$wJ32J?NuC>;Em9xA?KrY5;J|Ayvu~dC$**jv`FbLX%+Wh> z6-QmJXgk1uW;!AGuGX#cvkSW?>tEZ181y^rqb`_<7m zVQQ;VlC;>gXea7*@0HC1oF0363uZmIUdQc-^m#y_le`$yUI-&;Lu!7r2q{(z6cO6R z>cQ6A8B^!0w8o@Tk$PpxI|U!f`{8LIJX8h47Ik@7at^q@Hyvly*VEle1gcGuJ?cYpchJ z&r#H{!D~BwkYo)zO-t+MydB5x{-N{3Q)lrsbT8|&DFmqv?{mw*vLfn?;W438way5e zdB^~9FmFZaCHo`&?mnRtaZwwuyD2!-p?lDyOur0oqP4chhTjl17#yBjnxRMOAD*te zF5uqBbqybF*L(_xH1)?fRR@rtIN(S+RKz7`3zsX`-*;q0srxo(h70@UNg^nb zi~SMFnr%v&+pBvW&%;AaLsuefFEsfnCPu8xDfe7=wy=CqCX&L@LB9-VLco?34lMf{ z4;y;CVqTfwthi)${k1xg4MIp4M}yc`OvDfdR4$*nIV_nzEhc^-rb-w<1`mZa^d1}f z)tbq2-K&CCPK0%{ocH67NCmtkTSaw5q{LhRhNDUH%dx;XRq?j?{n+15(8KY`cizzy zuh=aa+7NlfrD$b?TCY)-At&GOl{*fVj-$2oH>MCU@T6~U2H%yFDx1NA^N`Z|HgPbcnjIRmBU$BM3gvOx58xZy$RaO78I4yE9 z1aFz)*}s5_&M?+uR_WtZPzd}eBE8I;XB+}x*&Cq$05sUdNNi`fVGAlYKGs`Xl65Tw z)yu*o9{zXx4QQYWYs%adZsGR48Q$mi$-jDtBG=+TcQC&1?j-K*RQ|MHo!pS_2~Hak z;M)zc?VHdpcu#D-=+L*HUAsCK1a7}IjB%iL^z&dYcSfP~aS$Lo$*I9n0w~2@A0%Kk zv>WPFa@~vJGz2&`4om9P@DvVr;uMxjB5bT|nyZ=Yb*;Zg6tS`Alw)d$+2mR<1#nB& z#Y$kwn=$w|-9a(5XC9oLPogqS6~Jb@j)3l!KXy1#KKcfcjCqFOgXfB@v`17@%0q4* zY3gvFXYF}gdwt^25!&1pD0AG8@f0D;t-wRYUSw)~;`{5Eq@k~d$dcPtX^XL+yXUFL zPz{Wp?Z2yo@0QcC>-Vd1#F|N&cz-inP;T!pj}?JS7dc;d=W#E`usw1#=$)yJrUlnE zJtG63-5uPJ<0$w)HkQzg5aVA|rf6MoA;IuH%sxCN0X9s&OEy1B3tuZ?Ohz%?T5|}KNT8&xd^4EVM*aqlA6$nw%xe3B)qo+l81W>+G z0r|N9ywxQ#ApGU-62y{u7kVI5qoBk;$MaJaK=^OI;qH5tzcogLKVg}?gGddf%Ep2E z0}62AVt!yCnWpxo90gK;Lw@1YUeb9(8p?$yK}jS-srf3cM2U%ng!J?lLUeP0%zET< zr79a6&~WL-nc zh=)UH`aCRlNWq>9(v;b~g z@7-T3eZ!wYsuh=WWx#OvAl@?}6&b>muwwt3l6|{twBG8yV^cxZSY7PgKSnHxjTk~- zLZ6K1<2Q{FBe`|{v-68kZ7Ad&z-m8H>TtGb-N?oO10_Zd*jPK99P?MOZNt!Lc+3P_ zOW=CgGT5GZIe3f-Y}PN8jXzzaHa|3HVF|q)O)V&L5^<#}3@@XmN2^j|?%+XIt(ox5 z(RW!l=5IwYfU}+`>B7`XS}Y6y2{$F6kXYF+0GBsu#h!lis(k3m=!AVIe0ks6zL{V; zY$3-;VCD2QQu0T| zWk^usv_oTI?a?QboJ5_@lba%2f3Z8=i&|v!Rkm+DsU!}5ciZbqH_e}=R9ZXEUoMz- zB-H^G9hKVJ-F;A8BxUl~Bu;Lw3kC@7y$}0!fdod}>DfcO6iusHd6jNHjX4;D32Kq4&J@OlY(`g?TE|HZZi8$fhKNS>R0ygCF;I$gD0EB=2_!U8wf z(l#0b3HKHbe_@_m3m28+@1yUUY(957q68iud@xrOgOhP}tuH$04a`jeNznfggPZNg z)aGSnCRJ{KN0=Yw;zRrb9z!Si3x#~Cf5TnuIZN-zq{xK_Y(XI^cMFEPYNxGiIMzom{{2-ghxSVbI4CG5A`O%yjSg8VJW(p#32-Eo~`E^6771Db$eTfJS*>lX_1@)_q_f6Orz?e&lBe9sVCsgzu7 z>wqyig;y0wR;k6xNkZyAS`Pm9Un+|Jir>z!-wGTBFG zpNak^dgz|B@E+rRlDm&eSp|BIEEt9DLj8)tM%q#LA@x{q)Yh}iSTJmxud|PV!P>H$ z(x3Oy>El1|N2b%qJ?nfce^{Wa_cRB77<+~e2ih`>bgj)$%I`&#GP8I92dic+W)74Nza$k3Z>N~ zIZ3+8ac??y|NMab3svBw=+IGZIIX*uLq)US04+1shAQTt%aoFV>?ZFi4MpijT1i8l3u-_U7_dKNVk0va}%+pf9ru z{*Qj#i6JNP@C&b*=;m;oWbVt*(-e<}$9ty=VC_H!(#n zmyC)cBAwhaqQtx5jY~Ctir_@?W@@^~@ML>_%@+d(xxW<6xYU&O2F<66Dm{FTIqhWQ z_}3J-r11pj4Uhl>)mitO^kyvd%*jK$#flrlw~A_cAid#jU_}GLO&SOvM3y+H4F!Q@ zF&IkW&Xfsi!^hn}8FKmczDafdCa%oXF|Jxbi|HeuywhXH8wdCsVp=*z6Oh$GO@4c# zLaCjlxdjd$wky%z)?TgEIk|vPDL-L5df*_j{~O^)SRqnUnxeGRK?lz ztLOX4R3A+ryfBUxZcy9IjH|3c2{RqN%nPdyb;`*~GsmOVP2e4@9TEg%+!MRnct+2D zF(ag1CiwQ&vT`?tOHiacZpSGuVAX8G+MU^fnY~H=lr%+PK#Cj#Bgue1>Ko3+;VHf6 zm;SLhK*LD2HV)c2{@c7MQfis$8{?yIN^qAE0g)zFz2Bz~n6o;*wKEw|Cyqv^y}h(U z#;9*>M4Ll@M~`NoGH1;CffBR*m=o&!%LezHTWMLTG>A0m%y#@2?c{78i6EOYo8Wg- z^r+rJ;6v7H*V8nOVoK?7#D~(!A>!=<6Y|uRE1=i9rS7jLe4U1pb$cK0zX(?8jL-z# z_lWkg)|qNIxTFrLQDGylYMi3DqaF7{W1Y>@%8u#DXmeyb<8$p9>Zi!II#sr-n=4H~ zL*1)L@U$(D?Z%8VlYpFHkG-O}n(nK3L{V||pvnPl1C~e@3qk;X&Rt^Zc*`CyKTR&rOVuz_xXzmrs za}P|WqnNSl8|n_-nlse+$V|xos14wZJ4d$JZbs}62Zh|5qhy%BFrat8IbFN7HhRZM znG1g8WeO{-=u}!!vex)Hd(w(%p9H~+nsQ?n=2G&$46wv8pxq3=Jiqp`9n?cB!$(Jm zit6(?kzQ8fakq-t&*LHQZ=t=b2f{J_d~La&!SRZ>QR}&PaX4}5yvqUfJ2whAFc9HL zWC=_iUBAzp?Ciu%hlgMY-LkUPbhcRIB9HvWPv#JsT`O)gy&hiQZ*LDe4?K+0Qn2`FRdC$FdtU>O*G;a37(T=50yhvJw>CoVAjyJ1c;lQTk z=p*EjraIQ|{_wZv0DgzykBD41a?&j;9eJa)dFN?UW?&uH8}BBXmhD<>lr~+Xtq6JN z&}$j2i#TcV_l=3s-#@K38J-T2tU~;k988pvce780x6Zo`%fq4~J~%kyJ^a{tS?Vpw}3TZHV3-KujLf6J19LR0+cQ(?1*b2+? z!C^?G@4t1oMt;4C+A6s0ko3p5Q$+S8NaIqlH+|f=***Yq&d13CY;IhQnM+>`6OCjg zw}PJAx`KWTZ760R%vv2G4HM2L-Cm(z9GCRQ(lfG~ZAFcI!%h8L(FK4^_vZ;?^Bsx> z-Q&ZlL*W!Zv-KUkiF*`g6Fgn9y60vn%mKC$G44eO&wUO-J!X_~yK#TZ&Od8I@0#!< zJMNXn`c@@5JzDh^(veo7eHI2Nb~UB!&(|n2W6CA5YcJ+a99w_A|2vg`?BWNefzM-W zy|!GV_L7`OtCFB_V{Z1q83Xm~^(-+-*`%ZN10cDDw;JOg5d*?a)O(fvwvQv~$|X7Z zs0FWPdE>Xwg$Q|!S(BfR?yiZ{J`e28wUN}Zrp5f@hN8%Ml%W)*ubR#m9g>_Z<`L-~ z;{z||BADe#^)w>uGLn#&e$`ITp#LKekfxtTOn?6b+G{QpC2EVw=6AU;@2wiPIo)n8 z07^hsQV~l-4$Y1dDRtw`e@V+&$n^KA3lQhEJTXl}TpIp5OdsHM^;qWY33~Um6}qNa zE@{z0ZkZyA!1D{mDM+dr(twbu)|R5*K3bmr>Wc5P7qw4(7d*qaA*CGFjVNqO79|O# z^}Yeh%_`bd6lU2_{Ng*3&wEg-AA!`}bDl=S1kT$ZO}EK)RIvP_)?zD&0t|Thyd(U_ z-&sdu^Q4=~{98^*x854KFXTm49pz@Z8(ZM6@_pa3VwhjVXpBUt6GdvHu}|ZaN&g|^ zYJF-{vv-ujLcx2Ax**Ox{<`DTE(l7QDyZvd1w9JB!vBIWz7y&E^5M9{5(~hMIai<3 z5LuRgKP^@2*N|G6U^=<*@|hcw&>!VjsQgE0f3oRc;I@t{*eIckSsF+)q#NahXjuSf>j>Hd-gqa*Y0 z!bz+nBSa(exW70bj@j@KV>{pkx8Jp4k^5wSjkIi0-kOdKjSqng0SA`9q1lP<^cjs2 z!0r&=U(0^dR!#Nto4@hf0=?ej1+QNxPdl>RPizS<1KultUkY7@3H==mYU_Bsw;CrE zFZ!ZYXE7c-a?KVKLNVHM154wBKz2}e0snfEDsDJ=zm&G_)?H(Cl1n?(s- zbdXO|TlqG2e%EU8xpJF=6IdN;TEB15E~SS4s}AI^FU!UVkI)4T6}C*-`+Ca*_-Ty} zAs*I3d8FCMA9HeZ&VJG0F_Q>M!F?&HcJP>1bvIBDPM7KXXAUx+U#xt>CI`ojZddhf zml$um`vb3UQ@BT%fZtUEqKdTJnVeZ5yVp@RcK^8MFf9g~QfyZS9r1T>q5qAT5lUi# zhi^`Rb4h^Lr73K`I~qNAhpp;^dP(WGT8q>oajE>tfn`^9XJl7`5v}y`Xb-}0JWKlM z+Z4^QbgFV@mI~%!7So+gIq1JeV1I`k5!}C9bqk;gTy@93Y`hdR`aPkAbYWglXF9A7 zbtuoyBFwPU3(cFHxkvW1rVLs*932YZ)5-N@6J>wUu~la-#nVa-=b}m&!mN--ep&ks zLU~!6J_Vr|e}iL{Zx&Px@>((Wz#oCOWQGxH-;R>Y$HhTv9+&H!TLeDtkgC8C1jCY29X}nkE;R{0KWu(qNB50U%)Tf|La>ePr zT3#@}oa-wg5%gX)3s!vE)7v&rqX%#!ycx}y^RB^;EEXa7`zE+Gahp{%d6OXYX9UrN7B zT;Qkm!47%xXNjx+GD%E)Tkzx~2u)9fnix=rD-=h@sD?QF6|4yzMe&;`Utrs%vAtes zJN=md#hMbG(os4e#Z`)+UONv{t0-h=Xrvqq2J8YZ1jyNqerp#k$t?sR8{K729MRDZ zdk2Aa@aEwVr#T@|7vK4<*mE;pbYhK1aE^y}PGIIW>~d21!jnoUyE6&T^`mKp{11b< zUrBN`eM@8_BCo%WKCLb$1Eb3vAt*dW{@uwg3sX8f?r7zTIuW1BZUQ*=gt!aGPYIf) zu#jk!YTv@%C#^fsRxmSE(5I*;ZL=XwUzI}r^-en0pM3^}v6%@B+u?2(pr137e$~Fq zYRlgkcRP7dvmW+m4(kWAU#;JY#f>j5I=0UUoelOzfR{G$O)r2Z@|Y#Fx9J@Y`QOz$ zlM!eaKaHh=>)ridM~{tmYl>qZ8@~CVCXUC?QZkfcMFg*(y1ZpdiOt%kj|>wA?eov^ za|L}GGCi3JDY@srUl|g2z{p_x^%gpV?Z?*J?i?Pph#qp}?tM4!Y0q<%eVpq?{~+><2qgJbn}!S95kGu9oJsU`t5k z%hB=Vxgk`bqel-L*W-2+dAbox5?{L1Idb>3Y$?*$ea5oIj0oPiwJ&frfG1fwZ|iO; zJjn|Zh_qdHmwWk1 z({o^xMNeNYXIG!2C7easAm84q$ktv+u1{G)!oWRg&Yp8n)@AIL6C(~S^XN=(^;5cF zk{z|*+V5z{G5p`r8wKO|sBK;!)+-CA&ekWL8DsZIHNFZpTvs;&_uMJ{RP0|X>Wug% zT}**_*OmdA)!a?C<2zS)Z$&DACYdpVVyY;zbST{6D<3&^T)*mo=jo?3V+pgZ1g+aP zLF;NbYU%;K8Y729`!dIYVjeW3)--*&a&4D&SH17d&qs$-V0(uyBZfNfeflPk_I!8M z&&hwXrg0nDlUq@0AdO10*zC%XIO=osOAlx!SdE-z7@+Z`Fp1x9k^nvS>Gxd{`@z3x zR{MA3CesC*4+(1KG*?g`O{?ELZE97Xe)if!ZH?e`u0HA)p`@u*14q@&T!@w$T1+&W zPPpHU9a~3TPD7D))t&Tu{tg@a!4V`lOlt^{jpiPu*DWXBN@`+?7u`SaM(r_E1L*Cc z3s(cw{ASHOotSUbK7-M-(Q(H5h?^H>cLsw>iEgL(2drJecXhJ4SSIMq0n=8x4yh z<>q1YqJ9WvUX02cx#+$=DsZn7ba|cV{j71l4mK_CbChYy%-)q!n3qY8k7Fe<^e$mm zzaOP#EHZ4zmtFo|ha$V|Kx;oN$hsm%wds5`3prmkD{$yWFrpZ=$YrNs0n|=d5fz6s zq+rX0oZ}Z*mkpPx{*=Fxm5rd)n{I4SIpAF1|JiSI8_U0i&&?G9L*+90wf3DfJ?7Ve z9oIU(Z>A8?eN4#SxPA&8q=-q8w=u=#<6i`ukA=_aOtL!F za4CX6HX|-(3<+95-nZ6ag#h9*Ut;HaBre#Aaoz;mX+7Gn-gPeY41DY7PiAlaO&29a zpmBZC61*cz9ha9Tf)tDRyNI+u4iN&G11YpJGP$4Dz|DZ)j1#-T?dqPGx!->RP71Iyx!Yk*Izre+?7EjXDC*p9=+%?;+^2CL9S*{BnvVJ2^{3MX+!(Hn)4ZS0` zD^o|c%|wd6AN%Il7hK~HC>`CapC67>pTpFoS8Q*N2MP?n`Y$iH+LCNI$Dr#r_?lf` zP}#9%XGlW;f7tRLHvSV8nJ&hIP_g~2K*Et67k%Ap2gKofjgAr`au)`WB_o)|c<14QIO0eC7BGpo36E%_ipCUhFLRoO;-f_jmECtdPm-Hndpsz3rj? zN9gA|{qc0A&0f!cad&iwpg*j2ymDsB6?c?++8;hb}W? z@8%Ef`!3@A6a#w%l0ax{xt8jp;~&Mjcz8q4s12-R^{+$FLjXAbh;PMUwb?$7M3QkW z0j^J5T0l%Cq2Y37zpRn##K6b1Rr^nuGaV~U5x?IezzkulY%C|qtXC9!uFGYw_*W7( zv|&d{zV;AXvzo@!iiPAWIe^82rKU>3LP+ceK$6utNlbU4C?Moe#EFo^naq#o2Y}Ij zU~3$>zk~q-M1g{rl(t$lo5PWpyQVKN7jOya*kY{TukFKwCur>t(CRO`x&5t5Pql3u zHS8MQhsxZSBZ>Ll?JXODGW)Ow#d&x8YV7xJQsp?+jH)qI{zGyYT*l>JF31tzc(pZo z(&#%JmhjqZky7q`zT0ZrYr@0l-RSnp65J!jM@I%aFpx)pO%62@DF3cwLC;4>CDx$> z#*r~-|I}hMwp5fr$WDJ_QC3p?_t3}?U)rCOtlTrAP>wEX6Ru#ml__<8u1SShx$8gN zXle8OzqYW*5LM(rsUY22Z|HI3H*z^M+VnyFZ_l_81Bshj+m7a|wAeOJZ`P9l&at&5 zx5CU%j-CeR^AKNdc9B%QD39K07&x}vTsJ5|keWy><&Jh(t|Gv}K>zIkABh!0RIaJv zDux&WJwNSoAc{e{ww6snW!+ETt-j$61pC@(>bW+iK+xZDqa!1PRzpL(rX6=njiaHG zos8m17p8VzH{4V<`i=mc91EXJwT!=jxCz9;T7p}{#X&<~s@!j^9gfQyP|=D@sJik* z>&x-VWf$8$Dyog6Kq!kOo&$thwH*H&(-|czvd4I%Pp;RX1rdb*qFlljJFXMdr{is3 zbn9B4ubMtU-O#MDG^5Xkld#h7Cip50a7SQ;fX@ET-%#Dk0%5yzkM%TxK4 zHu~?4Y-?11Tn>3&bA3kR;L@4*xjFrz!*)#hKPw9oB1aqW`aMh}-!7Iu7F>B6rZ(N> zENA?0RQT}5_+1i<*1j6{3&>5&m&;|P`Apn8y%|5jdCQOyCg?T@fD94O@k@F-^W;4R z!v6Q>p9%kC3YZ|rfPjL7fPesj&fiYFBfD%B2*IJDp}W_+&a1de8d>~)SG+O_M5vZB z4+&mqrZ3x-PxCThnImU%mq z6^Em2E|IxqxC{_8+2z@88uI!fkE6_C-s?{hxv6F?#aLqV|K5a#Eo-ctO}bY~W);_i=6w4xw82!4yEj@On%hdFXh z9kp=fB_hYTiR*cZUl5rhe2^vw`%MQFvelnIGb_KWI|Z`;Jn8=l`RiCz}MB4@~~6PyNGYSIamNB;ZIKi zmhP6zSN1^?171utJJkTT2V6*V3bw4&(T=942~=43HROzO3ZNGD8bXUrrG7YHhRaC1*@kI60G?b|&I zcN$e4{kl&FVZ6^ubUz@9tG@n-r%4i(w5fIlDNQ zQoYZti&lVm-lRn>TTt3z+Lif%bz0q!BYi5?0emE?d_-EprLN-4Owm+=>J3t^kJfp~ zU8pMxYZ3TdrfZVx^V8E+%2hs9K3$ZmX1UJn%8b5q>n2dqX;!a0KAX99d4Kd$rAVHH zeau|7e1h7tb!m_-Cr))_sE;>*#&{sbq0nzdCDxpkAbL+;xM?<2E7UQ1=8 zB~d?pGPVR=8%C(-3goF3YdrHjrbd%J?%3^`_iddkYGkp$RUk|F;_nYptxZIaWDZ{c zOh`z?&jr+NOIaHAW5c7Xv>6qL2Jy}~vPV9G#P91iu{MX}lGCFL{D1i)Dd5d@)V+iF z7R<#gj0&NOn?K{DRmj>x}Rj{j2H=+AkRSXzVb+HI$+>hK<#DXV&-c$mhCbWm)vqoNFS@^ z=IPFHqGIiRmkAHyiL?CsO{Yf-F$8ez5z% z!72D5geVc^J2zvZSUVze{8lVvi0_K3csST^db^7DX+1%R>7xymPT3a4)Xs*vvo^jo zAmSU3@1SZP-zXv0%Yacm9?zEF^lkV?ORSikjS0a) zgs0+m@3;)del1R%DMR}JFEd@oseU+qE~4X{;NG%CQvbT(cSM+aN?$mAKN%aBMvz9W zn8s^6#yA&q;ZFB8lA&BHEj?{ZJ&)dw?$9qE_dzeD1*QkmX?g^$5J^3K`u!87(n_-^y)9iXfi(qe4*S;4~5u zLOlK~{;TxOlP{VW`Wv(t{Wd{oLsKyR2)xv6&8}$atOF7Eo+In)MyW-N^t9v%f!!Od za^1&FwChP97$Z~PaTpUJ0O|PLS2tnsSjfbonIy+`%O^QC6B^@X1k9gu3*H~pHADBp z_lRvKm1?mw5on3DJp67C3cDfMy!dII#+mcslWm{BGw+mhxYU(Tb@;mjQo6L}TI+`C zgR9$H%gRt3g=yRe|NQYjrQ{3;S(rMp2xGkrzTVNzH z8o^hlMT=jxppi+?5f=A~Wi>nNjfM=lKtG52)C#e-y4O1Y(!JIs%H^Jq^oitx90nmS zSWEm9Y}Ew#?s_5u|Ro*Bhzdmc;G(~2zxdAAMM&1Lm<^c3VQ zQVhCwDw2kg@84ah!-zwXvs@~U8EiP^QqouvxAA+vyo%VyAN$^9XTBb{b+o;<=>(|B zIME+OWXeLp!ovFU!Y0N`l>o2v#y?kqNAG3#i`B%&%d7cLE6zE&qib)W)H64k{_EHm zz31%~K*MX_@tm_x;?GXPr2hsQ=*i@0S#MO!)r=$cQhQrr> z7qSr0YUB_7K=t*^^=S)=EVE^BoOqdcTEkf>!MsM)gQS3`?4^X;H6` z&M2_5eh6wLRp)zWzRX0ZshJjNKcPN$#Cf=TXk=7=!xe~;hk%54ip@j*8$*aY7iLIuzanu=8{Wf);9OPrgu zs-t65!=+;CVr6tyqK+Fc?a&1s?b%vdTB^L=tkIZQ?r%}lEmSQwE$C(R@go!ekTLLzj<xd4cV`PXC2W3_vu$&zv-@9T6=)`edP#jWPY49;t}3P)K{Vv}}~aP}Bj zk<+tTUl$L?$%8+x*5p3rrW5l#KRqX?C9Zm%{(wx>)KX8uPKid23xATbww=nz$fO_F zYT#@v`dV_+aC4Gv-!ad`Fs(Jz{80*4ipO!~3geDZULU|m$FI7q%^cQb#JZ0<{NYZ6 zsMK0}O)MbLlKVssAKRS)>pC#r#K5G$bRTx9)z&&B{oCxEvxUC})$jA!$$H1AF*~~W z=k^sW4k2nr@)6DSCYOVu^R6x3n42vT-;8RyAkbi;T}BTVC-2qHdPfGoz0LjN#aBEv zYK5$iC)z-hd{%nq^6Ko#;o*bN#br*S1co@zk|Q<__O;t>uvGBdE4W&*&4T^_ba!R!~CHHWdO9178+YTja;D|KsUl8#$l5O&)C#o z#3r!jPFjVAg<^=~nBy2^8lNRP?h)d+HukW1K}aTSO&it+orZw(3GOPxx1d6-b3is_Sfy2>|xz> zJq$p+ySuv{&lU?4YnNuEv0`L_)h5pv+;HmRM{rMYww&MT;juUZ&O5rVw*&JI+5%>C z(MaZaAE3=lS@GfE;YNpRIs?RlIz@jv$P6XSb9c-Y?w9f!1)$Rpu^b-n>(}~?)-70v z)uIlYyG+4>-?5!57emNz|3)ChUGZ>NHZ5)049ZDCJG=*ENG~{Xl)L!wX+c z#v9gONBwH97PMvVT)PWUZ0a9o&W^i!4FIWZomHR_V7>eWwD5OJ2 zbmKReuBRraU0+*bM#WW{un3e0vK&i081po0bj~boVKCp~ECru4A;PE3c#Dty;b0+< z0@mTwfe@%=`=ol710Ci>G+)H^czd$<`HaJG+?e%k4^Nwxk5s!Bi;+~G>gVb?k%{c7 zQj7d!yssz%Amyyef!p%+4yp@0AeE4#4Bxo-OuY=><79>F0k2xS4DIDXtgX&Zb_Cm$ zzM0egKue&V9Us|U>kym(F*xRCSt^s=2M4B-O(R3M5O_8>63(1tcvJ0EwRp5}qjt8p zd$um+K^QKsp6RzoUI;k{9EI8ZCIq#I6*DrqR2V842sw+F7Ft^B;|9Dy3a7uFM)#7U zoxYu&ep&IdEhm&wK&vz}Dh5UHre!}?ABH$?64{Jq=fa)#rj)st`EWgMfbxV>JsFb_ z6D{w6WC0;DVrpQWiJJV_+Za@@Pu_NGHC~)3GPe1}rK%z1Im(n}EvoY~3)=@L)ywiz<(d>gFlGWKI9`+-$1n5ua9lzRE47N%BL*YB5jRkp4@v`1`yQ|M zV8ztDf-{=NNc0Vm`faUa%!dP^7r-aH9Q<_0$kq@tu;MW{TjF4DWGbARZoe7oxa9Umjo9> zlcgLD0ny3DBklWW74d>T9&=FV*#);)c#ZRv73YOVBC|pD%;@T9vYC$D%54#?Z~;^xwIjI&8iroM~CkaWFJcj<~$y} zA6?LPJoG`V1ThFXU?!J$KQL*nKQW?fkJEZfQKwrDT*Rstt9yU)jxHbr*ZuI2L5*>@ zV9a%?aXDiY6l524wkGeI7#R2f*69LwyU&%vNR>ea3pc9QqW0R`*HNibw%Gf1^>)x_ zW`5c7Cfcx4B-vA5mqCL*iIZSddY>aLIwRvWRQS|AO1#2ps|iDbDbz#|Ela#2JUUX) zcN4h!bplD$U)Zm}LdSfLafjdo%lH}B+E{*QJSiQ{*@a5%o|9@a!SU9|mfys^Uf9NF zhQ)^CYfK_&kmgbW4`UYmGt95CZQAbVBgGtTk%n;H*u!1Ut(A@APe~`o$BfkAU6J^X z@Ig~U#};N#JbVa@GcS>zVWudpK{chhj2NKUnZ5p43;2s*)KfUZgSTa}IPrh#GqZJ* z&-BikTR9C7h5urWKC)>x`F-|uUx{cV%$ z{nU<`SAQ$)T94#1BX8GW3U-(KM&EdZQR_#xR8~dWQZb9zL~vgF{P~e-xxvZc=Pp1M zU$3jR3yD-iydY2QYULD;9|#W*-)|llTk<|nC2ta3gq2&2@FC=cMB$AY@HUn=m9sXU zh2@eYmuvTZWHa*J(#WyOyvns3zYd73L3A!!VELsqM`demg8?7+xvYoF_Oz@spcDEL zwe_CFkv&y@sF3dB4={z6q7d`&YgXz#liI^=U~!FAx1JAK)Rq(5F5wOh$>^uyU+PEe zmcI-?0&I(JO}1EMA5kIFaJpG#>V6pNvVh{1B2rz9D#69DtX8l*;$n?G5Y;OEvNcF@ z3tH{4f8>rL=2|fG7Ye0m=r_&@*!-0?ly*Ai5TmQ+)2dC22_A`a_|Jlpg4#T_yvdIw zBV+f{sNw^edux+xlMFng+M{YYSkg*FqXI)7#?tSlYP6F%WZ`2a=0_{uC~m^T!q2MD z4K$m-&#V4f#QP}9ooc2E4B04`XqN8qx_}9bZklfRx1aUOn!93%n3?M$6R%f;)Aacz z(sODWhEluH5$VedPcv4W$w|qnw;w!SZyms7PLOT^o25&^11bnA0=gJXDc7IIdFr|9 zf1o5zy>)|2Wb3Tf&8bu_R!`1m;K4^OA1xOUS@p8qMoo>VBVYnD6+QQwz`mpAo0BHr zKnE2sS~{8ad{Aas*rDyNGMRUVc10ryysX@RnLy{yJU!aebI*|_l7)oB(@FueRH6;9 zMK3Ht1(~{S?H4xZs)f$ZjTigA&JE4=axg6E#U!>mXDEZGY(K!)oEr=60-IWKQ7VXPZu9Rf|{ zD$`H=n#j1A&vtdK((QZ0LIg4INwLvg`N7j$*kTE)XtSwb8t%89l`BOTH;FgV*wM%a zF8C4$krCgJb7zC&xNM{hO!JYu!HEnuvOgrp49JS&yNII@cxm2h1U=8?5~hn7%rPxL z8@1HyGCB7QP&6pU> zfqpiVORe@bqc&Ts+{4+yBOVo!g{fghzC=3P;&lqdG7LeR6W3MMkn%0`V>E4R_9<6 z5v$M1$G$?GfUOrt{pt|cjr^_L#0Fn8d5>~+jm_hc!;h@ad<>{_fbC2J~Ggrz0$wC zKeG8g`$X(7_85Zs#vDpIFN>$uE7{*O7cMq6P1XT{!s5N5-g-<4?{on$bFp@ppZj@$ z9}DKpbL2H;Dz^K`&Ao8nb;~W-Q$0LpqVSJUB#_7gSsN5j)ik?xor%C1x+lX8s=8tX z8kZAL!;La8{ZlapbsDoF&4G{122FN>*UxafS;^1rnIvhgHv=T{)fa0|=s+sP>WsL< zb6elB>verWG7|vszAW29O+szXQ%CQ$?%I$>@Kbuue+qkNu7wjaB@^(*f@>~4g;-VU z8+!AODvw?k8@oR{ZCG&7wEJdLX7~N{L-e>bEU__BRMVoOqVH1v94UK+GX6R18P#dL zz|RE%1$AK+@ g!B2SPR{@CYsR4;|k4|^+ub?4hq!cA9#Ek?0KS-@*W&i*H diff --git a/trend_indicator.go b/trend_indicator.go new file mode 100644 index 0000000..397143d --- /dev/null +++ b/trend_indicator.go @@ -0,0 +1,70 @@ +package mujica + +import ( + "math" + + "github.com/egoist/mygo/ui" + + "mujicaui/icons" + "mujicaui/theme" +) + +// TrendIndicatorOptions configure a TrendIndicator. +type TrendIndicatorOptions struct { + // Precision is the decimals shown, 0 or more. + Precision int + // Unit follows the number, as "%". + Unit string + // Note explains the change, as "vs last week". + Note string + // Invert marks falls as good, as for costs or errors. + Invert bool + // Format replaces the built-in signed number. + Format func(v float64) string +} + +// TrendIndicator shows signed change, direction, and semantic color. +func TrendIndicator(c *ui.Context, change float64, opts TrendIndicatorOptions) *ui.Element { + if opts.Precision < 0 || math.IsNaN(change) || math.IsInf(change, 0) { + panic("mujica: TrendIndicator needs a number and Precision ≥ 0") + } + k := Tokens(c) + u := Density(c).Unit() + word, text := trendWords(c, change, opts) + col, icon := k.TextMuted, "minus" + switch { + case change > 0: + col, icon = k.Success, "arrow-up" + case change < 0: + col, icon = k.Danger, "arrow-down" + } + if opts.Invert && change != 0 { + col = map[bool]ui.Color{true: k.Danger, false: k.Success}[change > 0] + } + e := ui.Row(c).Gap(u).AlignItems(ui.Center).Wrap().Role(ui.RoleText).Label(word + " " + text) + e.Children(func() { + ui.Row(c).Gap(u / 2).AlignItems(ui.Center).TextColor(col).Children(func() { + ui.Icon(c, icons.Must(icon)).Size(14, 14) + ui.Text(c, text).FontWeight(600).SingleLine() + }) + if opts.Note != "" { + ui.Text(c, opts.Note).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.TextMuted) + } + }) + return e +} + +// trendWords formats direction and signed change. +func trendWords(c *ui.Context, change float64, opts TrendIndicatorOptions) (word, text string) { + word = msg(c, "trend_indicator.flat") + switch { + case change > 0: + word = msg(c, "trend_indicator.up") + case change < 0: + word = msg(c, "trend_indicator.down") + } + if opts.Format != nil { + return word, opts.Format(change) + } + return word, statisticSigned(change, opts.Precision) + opts.Unit +} diff --git a/trend_indicator_test.go b/trend_indicator_test.go new file mode 100644 index 0000000..f2dce8a --- /dev/null +++ b/trend_indicator_test.go @@ -0,0 +1,90 @@ +package mujica + +import ( + "image/color" + "math" + "testing" + + "github.com/egoist/mygo/ui" + + "mujicaui/theme" +) + +func TestTrendIndicatorWordsAndColors(t *testing.T) { + for _, tc := range []struct { + change float64 + invert bool + label string + good bool + }{ + {12.5, false, "up +12.5%", true}, + {-3, false, "down −3.0%", false}, + {-3, true, "down −3.0%", true}, + {0, false, "unchanged 0.0%", false}, + } { + var r ui.Rect + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Mode: Light}) + ui.Column(c).Padding(10).AlignItems(ui.Start).Children(func() { + r = TrendIndicator(c, tc.change, TrendIndicatorOptions{Precision: 1, Unit: "%", Invert: tc.invert, Note: "vs Lent"}).Bounds() + }) + }, 300, 100) + tt.Frame() + if _, ok := tt.Find(tc.label); !ok || !tt.HasText("vs Lent") { + t.Fatalf("%v: no %q in %q", tc.change, tc.label, tt.Texts()) + } + k := theme.Light() + want := map[bool]color.RGBA{true: toRGBA(k.Success), false: toRGBA(k.Danger)}[tc.good] + if tc.change == 0 { + continue + } + found := false + img := tt.Image() + for x := int(r.X); x < int(r.X+16) && !found; x++ { + for y := int(r.Y); y < int(r.Y+r.H) && !found; y++ { + found = color.RGBAModel.Convert(img.At(x, y)).(color.RGBA) == want + } + } + if !found { + t.Fatalf("%v invert=%v: arrow not in %v", tc.change, tc.invert, want) + } + } +} + +func TestTrendIndicatorFormatAndBad(t *testing.T) { + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + TrendIndicator(c, 2, TrendIndicatorOptions{Format: func(v float64) string { return "two more" }}) + }, 200, 100) + if !tt.HasText("two more") { + t.Fatalf("format %q", tt.Texts()) + } + defer func() { + if recover() == nil { + t.Fatal("no panic for NaN") + } + }() + ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); TrendIndicator(c, math.NaN(), TrendIndicatorOptions{}) }, 100, 100) +} + +func TestTrendIndicatorSnapshot(t *testing.T) { + snapshot(t, "trend_indicator", 420, 80, func(c *ui.Context) { + ui.Row(c).Padding(16).Gap(24).Children(func() { + TrendIndicator(c, 12.5, TrendIndicatorOptions{Precision: 1, Unit: "%", Note: "vs Lent"}) + TrendIndicator(c, -3, TrendIndicatorOptions{Unit: " souls"}) + TrendIndicator(c, -4, TrendIndicatorOptions{Unit: "%", Invert: true}) + TrendIndicator(c, 0, TrendIndicatorOptions{}) + }) + }) +} + +func TestTrendIndicatorFiniteAndChinese(t *testing.T) { + charts2MustPanic(t, func(c *ui.Context) { TrendIndicator(c, math.Inf(1), TrendIndicatorOptions{}) }) + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Locale: ZhCN}) + TrendIndicator(c, -2, TrendIndicatorOptions{Unit: "%"}) + }, 200, 100) + if _, ok := tt.Find("下降 −2%"); !ok { + t.Fatalf("Chinese readout %q", tt.Texts()) + } +} diff --git a/violin_plot.go b/violin_plot.go index 00323fc..1f4884c 100644 --- a/violin_plot.go +++ b/violin_plot.go @@ -13,12 +13,12 @@ import ( // ViolinPlotOptions configure a ViolinPlot. type ViolinPlotOptions struct { Frame ChartFrame - // Bandwidth is the kernel width; 0 uses Silverman's rule per group. + // Bandwidth defaults to the per-group estimate. Bandwidth float64 Format func(v float64) string } -// violinShape is one group's density outline over its value range, and its quartiles. +// violinShape stores density samples and quartiles. type violinShape struct { ys, dens []float64 stats boxStats @@ -27,9 +27,9 @@ type violinShape struct { // violinPoints is how many values each outline is sampled at. const violinPoints = 64 -// ViolinPlot mirrors each group's density around its middle, with the median and quartiles marked. +// ViolinPlot compares density outlines, medians, and quartiles. func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartResult { - if opts.Bandwidth < 0 { + if opts.Bandwidth < 0 || math.IsNaN(opts.Bandwidth) || math.IsInf(opts.Bandwidth, 0) { panic("mujica: ViolinPlot Bandwidth must be ≥ 0") } ch := newChart(c, opts.Frame) @@ -37,10 +37,12 @@ func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartR pal := internal.Palette(k) size := FontSize(c, theme.CaptionSize) ids := "" + seen := map[string]bool{} for _, g := range groups { - if g.Name == "" { + if g.Name == "" || seen[g.Name] { panic("mujica: ViolinPlot groups need names") } + seen[g.Name] = true ids += chartID(g.Values) + ";" } shapes := chartMemo(ch, "violins", fmt.Sprint(ids, opts.Bandwidth), func() []violinShape { @@ -59,6 +61,9 @@ func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartR for _, o := range s.outliers { lo, hi = min(lo, o), max(hi, o) } + if lo == hi { + lo, hi = lo-3*h, hi+3*h + } ys := make([]float64, violinPoints) for j := range ys { ys[j] = lo + (hi-lo)*float64(j)/float64(violinPoints-1) @@ -86,6 +91,7 @@ func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartR return plot, internal.Band{N: len(groups), R0: plot.X, R1: plot.X + plot.W, Pad: 0.15}, internal.Linear{D0: lo, D1: hi, R0: float64(plot.Y + plot.H), R1: float64(plot.Y)} } + visible := ui.Local(ch.res.Element, "mujica.violin.visible", func() []int { return nil }) spec := ChartSpec{Marks: n} spec.Readout = func(i int) string { s := shapes[i].stats @@ -106,11 +112,13 @@ func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartR internal.AxisY(p, plot, ys, internal.Ticks(lo, hi, step), func(v float64) string { return internal.FormatTick(v, step) }, size, k) var xs []float32 var names []string - for i, g := range groups { - xs, names = append(xs, band.Center(i)), append(names, g.Name) + *visible = chartVisibleIndices(len(groups), max(1, int(plot.W)), active) + for _, i := range *visible { + xs, names = append(xs, band.Center(i)), append(names, groups[i].Name) } internal.AxisX(p, plot, xs, names, size, k) - for i, s := range shapes { + for _, i := range *visible { + s := shapes[i] if s.stats.n == 0 { continue } @@ -121,15 +129,16 @@ func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartR } var outline ui.Path for j, y := range s.ys { - x := cx + half*float32(s.dens[j]/top) + x := internal.Snap(p, cx+half*float32(s.dens[j]/top)) + py := internal.Snap(p, ys.Map(y)) if j == 0 { - outline.MoveTo(x, ys.Map(y)) + outline.MoveTo(x, py) } else { - outline.LineTo(x, ys.Map(y)) + outline.LineTo(x, py) } } for j := len(s.ys) - 1; j >= 0; j-- { - outline.LineTo(cx-half*float32(s.dens[j]/top), ys.Map(s.ys[j])) + outline.LineTo(internal.Snap(p, cx-half*float32(s.dens[j]/top)), internal.Snap(p, ys.Map(s.ys[j]))) } outline.Close() col := pal[i%len(pal)] @@ -139,7 +148,7 @@ func ViolinPlot(c *ui.Context, groups []BoxGroup, opts ViolinPlotOptions) ChartR w = 3 } p.StrokePath(&outline, w, col) - // The quartile bar and a diamond at the median read without color. + // Quartile bars and median diamonds distinguish values. p.Fill(ui.Rect{X: cx - 3, Y: ys.Map(s.stats.q3), W: 6, H: max(ys.Map(s.stats.q1)-ys.Map(s.stats.q3), 1)}, k.Text, 1) p.FillPath(internal.Diamond(internal.Snap(p, cx), internal.Snap(p, ys.Map(s.stats.median)), 10), k.Surface) p.FillPath(internal.Diamond(internal.Snap(p, cx), internal.Snap(p, ys.Map(s.stats.median)), 7), k.Text) diff --git a/violin_plot_test.go b/violin_plot_test.go index 3b8a573..a6c5d6c 100644 --- a/violin_plot_test.go +++ b/violin_plot_test.go @@ -1,6 +1,7 @@ package mujica import ( + "math" "testing" "github.com/egoist/mygo/ui" @@ -43,3 +44,35 @@ func TestViolinPlotSnapshot(t *testing.T) { }) }) } + +func TestViolinPlotFiniteBandwidthAndFlatShape(t *testing.T) { + charts2MustPanic(t, func(c *ui.Context) { + ViolinPlot(c, []BoxGroup{{Name: "Flat", Values: []float64{4, 4}}}, ViolinPlotOptions{Frame: ChartFrame{Label: "Flat"}, Bandwidth: math.NaN()}) + }) +} + +func TestViolinPlotLargeDataAndDisabled(t *testing.T) { + values := make([]float64, 100_000) + for i := range values { + values[i] = float64(i % 100) + } + groups := []BoxGroup{{Name: "Sample", Values: values}} + h := &chartHarness{build: func(c *ui.Context) ChartResult { + return ViolinPlot(c, groups, ViolinPlotOptions{Frame: ChartFrame{Label: "Large violin"}}) + }} + tt := ui.NewTester(h.view, 520, 420) + tabTo(t, tt, "Large violin") + tt.Key(0, ui.KeyRight) + if chartReadout(tt) != "Sample · median 49.5 · quartiles 24.75–74.25 · 100000 values" { + t.Fatalf("large readout %q", chartReadout(tt)) + } + shown := ui.Local(h.res.Element, "mujica.violin.visible", func() []int { return nil }) + if len(*shown) != 1 { + t.Fatalf("built %d violins", len(*shown)) + } + h.disabled = true + tt.Frame() + if h.res.Point != -1 { + t.Fatalf("disabled violin %d", h.res.Point) + } +}

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 diff --git a/testdata/snapshots/darwin/radar_chart-dark.png b/testdata/snapshots/darwin/radar_chart-dark.png index aa910f8b08b271df52eb607023263756ac7efb85..71da4b5abd404f17c683e29c994f0d0efcc28f4a 100644 GIT binary patch literal 30382 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