From 546d48adbb84b1354d6a3d4ae88dbeba0ad14d44 Mon Sep 17 00:00:00 2001 From: "Michael S. Molina" <70410625+michael-s-molina@users.noreply.github.com> Date: Thu, 28 Mar 2024 16:16:17 -0300 Subject: [PATCH] feat: Adds the ECharts Heatmap chart (#25353) --- .../src/operators/index.ts | 1 + .../src/operators/rankOperator.ts | 30 ++ .../src/operators/types.ts | 2 +- .../test/operators/rankOperator.test.ts | 47 +++ .../src/query/types/PostProcessing.ts | 12 +- .../legacy-plugin-chart-heatmap/src/index.js | 9 +- .../plugins/plugin-chart-echarts/package.json | 35 +- .../src/Heatmap/Heatmap.tsx | 33 ++ .../src/Heatmap/buildQuery.ts | 68 ++++ .../src/Heatmap/controlPanel.tsx | 304 ++++++++++++++++++ .../src/Heatmap/images/example1.png | Bin 0 -> 69070 bytes .../src/Heatmap/images/example2.png | Bin 0 -> 101622 bytes .../src/Heatmap/images/example3.png | Bin 0 -> 76688 bytes .../src/Heatmap/images/thumbnail.png | Bin 0 -> 66135 bytes .../plugin-chart-echarts/src/Heatmap/index.ts | 55 ++++ .../src/Heatmap/transformProps.ts | 243 ++++++++++++++ .../plugin-chart-echarts/src/Heatmap/types.ts | 53 +++ .../plugins/plugin-chart-echarts/src/index.ts | 2 + .../components/controls/BoundsControl.tsx | 14 +- .../VizTypeControl/VizTypeGallery.tsx | 1 + .../src/visualizations/presets/MainPreset.js | 2 + .../utils/pandas_postprocessing/__init__.py | 2 + superset/utils/pandas_postprocessing/rank.py | 40 +++ 23 files changed, 929 insertions(+), 24 deletions(-) create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/operators/rankOperator.ts create mode 100644 superset-frontend/packages/superset-ui-chart-controls/test/operators/rankOperator.test.ts create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/Heatmap.tsx create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/buildQuery.ts create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example1.png create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example2.png create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example3.png create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/thumbnail.png create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/types.ts create mode 100644 superset/utils/pandas_postprocessing/rank.py diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/operators/index.ts b/superset-frontend/packages/superset-ui-chart-controls/src/operators/index.ts index f39d649f88..c7151dafd4 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/operators/index.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/operators/index.ts @@ -28,4 +28,5 @@ export { contributionOperator } from './contributionOperator'; export { prophetOperator } from './prophetOperator'; export { boxplotOperator } from './boxplotOperator'; export { flattenOperator } from './flattenOperator'; +export { rankOperator } from './rankOperator'; export * from './utils'; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/operators/rankOperator.ts b/superset-frontend/packages/superset-ui-chart-controls/src/operators/rankOperator.ts new file mode 100644 index 0000000000..2f9da25d32 --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/operators/rankOperator.ts @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitationsxw + * under the License. + */ +import { PostProcessingRank } from '@superset-ui/core'; +import { PostProcessingFactory } from './types'; + +/* eslint-disable @typescript-eslint/no-unused-vars */ +export const rankOperator: PostProcessingFactory = ( + formData, + queryObject, + options, +) => ({ + operation: 'rank', + options, +}); diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/operators/types.ts b/superset-frontend/packages/superset-ui-chart-controls/src/operators/types.ts index 34f632ff8f..0c5285a2a1 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/operators/types.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/operators/types.ts @@ -19,5 +19,5 @@ import { QueryFormData, QueryObject } from '@superset-ui/core'; export interface PostProcessingFactory { - (formData: QueryFormData, queryObject: QueryObject): T; + (formData: QueryFormData, queryObject: QueryObject, options?: any): T; } diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/operators/rankOperator.test.ts b/superset-frontend/packages/superset-ui-chart-controls/test/operators/rankOperator.test.ts new file mode 100644 index 0000000000..91d67b59a2 --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/test/operators/rankOperator.test.ts @@ -0,0 +1,47 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { QueryObject, SqlaFormData } from '@superset-ui/core'; +import { rankOperator } from '@superset-ui/chart-controls'; + +const formData: SqlaFormData = { + x_axis: 'dttm', + metrics: ['sales'], + groupby: ['department'], + time_range: '2015 : 2016', + granularity: 'month', + datasource: 'foo', + viz_type: 'table', + truncate_metric: true, +}; +const queryObject: QueryObject = { + is_timeseries: true, + metrics: ['sales'], + columns: ['department'], + time_range: '2015 : 2016', + granularity: 'month', + post_processing: [], +}; + +test('should add rankOperator', () => { + const options = { metric: 'sales', group_by: 'department' }; + expect(rankOperator(formData, queryObject, options)).toEqual({ + operation: 'rank', + options, + }); +}); diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts b/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts index e32eda6a90..3b40941332 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/types/PostProcessing.ts @@ -224,6 +224,15 @@ export type PostProcessingFlatten = | _PostProcessingFlatten | DefaultPostProcessing; +interface _PostProcessingRank { + operation: 'rank'; + options?: { + metric: string; + group_by: string | null; + }; +} +export type PostProcessingRank = _PostProcessingRank | DefaultPostProcessing; + /** * Parameters for chart data postprocessing. * See superset/utils/pandas_processing.py. @@ -241,7 +250,8 @@ export type PostProcessingRule = | PostProcessingSort | PostProcessingResample | PostProcessingRename - | PostProcessingFlatten; + | PostProcessingFlatten + | PostProcessingRank; export function isPostProcessingAggregation( rule?: PostProcessingRule, diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js index 43d5b3eda0..3779c0d03e 100644 --- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js +++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core'; +import { t, ChartMetadata, ChartPlugin, ChartLabel } from '@superset-ui/core'; import transformProps from './transformProps'; import transportation from './images/transportation.jpg'; import channels from './images/channels.jpg'; @@ -35,7 +35,8 @@ const metadata = new ChartMetadata({ { url: channels, caption: t('Relationships between community channels') }, { url: employment, caption: t('Employment and education') }, ], - name: t('Heatmap'), + label: ChartLabel.DEPRECATED, + name: t('Heatmap (legacy)'), tags: [ t('Business'), t('Intensity'), @@ -43,11 +44,15 @@ const metadata = new ChartMetadata({ t('Density'), t('Predictive'), t('Single Metric'), + t('Deprecated'), ], thumbnail, useLegacyApi: true, }); +/** + * @deprecated in version 4.0. + */ export default class HeatmapChartPlugin extends ChartPlugin { constructor() { super({ diff --git a/superset-frontend/plugins/plugin-chart-echarts/package.json b/superset-frontend/plugins/plugin-chart-echarts/package.json index c91e52bdf3..6c0e5fa63f 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/package.json +++ b/superset-frontend/plugins/plugin-chart-echarts/package.json @@ -2,6 +2,20 @@ "name": "@superset-ui/plugin-chart-echarts", "version": "0.18.25", "description": "Superset Chart - Echarts", + "keywords": [ + "superset" + ], + "homepage": "https://github.com/apache/superset/tree/master/superset-frontend/plugins/plugin-chart-echarts#readme", + "bugs": { + "url": "https://github.com/apache/superset/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/apache/superset.git", + "directory": "superset-frontend/plugins/plugin-chart-echarts" + }, + "license": "Apache-2.0", + "author": "Superset", "sideEffects": false, "main": "lib/index.js", "module": "esm/index.js", @@ -9,23 +23,6 @@ "esm", "lib" ], - "repository": { - "type": "git", - "url": "https://github.com/apache/superset.git", - "directory": "superset-frontend/plugins/plugin-chart-echarts" - }, - "keywords": [ - "superset" - ], - "author": "Superset", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/apache/superset/issues" - }, - "homepage": "https://github.com/apache/superset/tree/master/superset-frontend/plugins/plugin-chart-echarts#readme", - "publishConfig": { - "access": "public" - }, "dependencies": { "d3-array": "^1.2.0", "echarts": "^5.4.1", @@ -35,6 +32,10 @@ "peerDependencies": { "@superset-ui/chart-controls": "*", "@superset-ui/core": "*", + "memoize-one": "*", "react": "^16.13.1" + }, + "publishConfig": { + "access": "public" } } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/Heatmap.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/Heatmap.tsx new file mode 100644 index 0000000000..555b9a63a3 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/Heatmap.tsx @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React from 'react'; +import { HeatmapTransformedProps } from './types'; +import Echart from '../components/Echart'; + +export default function Heatmap(props: HeatmapTransformedProps) { + const { height, width, echartOptions, refs } = props; + return ( + + ); +} diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/buildQuery.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/buildQuery.ts new file mode 100644 index 0000000000..2d1ee869eb --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/buildQuery.ts @@ -0,0 +1,68 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { + QueryFormColumn, + QueryFormOrderBy, + buildQueryContext, + ensureIsArray, + getColumnLabel, + getMetricLabel, + getXAxisColumn, +} from '@superset-ui/core'; +import { rankOperator } from '@superset-ui/chart-controls'; +import { HeatmapFormData } from './types'; + +export default function buildQuery(formData: HeatmapFormData) { + const { groupby, normalize_across, sort_x_axis, sort_y_axis, x_axis } = + formData; + const metric = getMetricLabel(formData.metric); + const columns = [ + ...ensureIsArray(getXAxisColumn(formData)), + ...ensureIsArray(groupby), + ]; + const orderby: QueryFormOrderBy[] = [ + [ + sort_x_axis.includes('value') ? metric : columns[0], + sort_x_axis.includes('asc'), + ], + [ + sort_y_axis.includes('value') ? metric : columns[1], + sort_y_axis.includes('asc'), + ], + ]; + const group_by = + normalize_across === 'x' + ? getColumnLabel(x_axis) + : normalize_across === 'y' + ? getColumnLabel(groupby as unknown as QueryFormColumn) + : undefined; + return buildQueryContext(formData, baseQueryObject => [ + { + ...baseQueryObject, + columns, + orderby, + post_processing: [ + rankOperator(formData, baseQueryObject, { + metric, + group_by, + }), + ], + }, + ]); +} diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx new file mode 100644 index 0000000000..28356e6441 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx @@ -0,0 +1,304 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React from 'react'; +import { t, validateNonEmpty } from '@superset-ui/core'; +import { + ControlPanelConfig, + formatSelectOptionsForRange, + getStandardizedControls, +} from '@superset-ui/chart-controls'; + +const sortAxisChoices = [ + ['alpha_asc', t('Axis ascending')], + ['alpha_desc', t('Axis descending')], + ['value_asc', t('Metric ascending')], + ['value_desc', t('Metric descending')], +]; + +const config: ControlPanelConfig = { + controlPanelSections: [ + { + label: t('Query'), + expanded: true, + controlSetRows: [ + ['x_axis'], + ['time_grain_sqla'], + ['groupby'], + ['metric'], + ['adhoc_filters'], + ['row_limit'], + [ + { + name: 'sort_x_axis', + config: { + type: 'SelectControl', + label: t('Sort X Axis'), + choices: sortAxisChoices, + renderTrigger: false, + clearable: false, + default: 'alpha_asc', + }, + }, + ], + [ + { + name: 'sort_y_axis', + config: { + type: 'SelectControl', + label: t('Sort Y Axis'), + choices: sortAxisChoices, + renderTrigger: false, + clearable: false, + default: 'alpha_asc', + }, + }, + ], + [ + { + name: 'normalize_across', + config: { + type: 'SelectControl', + label: t('Normalize Across'), + choices: [ + ['heatmap', t('heatmap')], + ['x', t('x')], + ['y', t('y')], + ], + default: 'heatmap', + renderTrigger: false, + description: ( + <> +
+ {t( + 'Color will be shaded based the normalized (0% to 100%) value of a given cell against the other cells in the selected range: ', + )} +
+
    +
  • {t('x: values are normalized within each column')}
  • +
  • {t('y: values are normalized within each row')}
  • +
  • + {t( + 'heatmap: values are normalized across the entire heatmap', + )} +
  • +
+ + ), + }, + }, + ], + ], + }, + { + label: t('Chart Options'), + expanded: true, + controlSetRows: [ + [ + { + name: 'legend_type', + config: { + type: 'SelectControl', + label: t('Legend Type'), + renderTrigger: true, + choices: [ + ['continuous', t('Continuous')], + ['piecewise', t('Piecewise')], + ], + default: 'continuous', + clearable: false, + }, + }, + ], + ['linear_color_scheme'], + [ + { + name: 'xscale_interval', + config: { + type: 'SelectControl', + label: t('XScale Interval'), + renderTrigger: true, + choices: [[-1, t('Auto')]].concat( + formatSelectOptionsForRange(1, 50), + ), + default: -1, + clearable: false, + description: t( + 'Number of steps to take between ticks when displaying the X scale', + ), + }, + }, + ], + [ + { + name: 'yscale_interval', + config: { + type: 'SelectControl', + label: t('YScale Interval'), + choices: [[-1, t('Auto')]].concat( + formatSelectOptionsForRange(1, 50), + ), + default: -1, + clearable: false, + renderTrigger: true, + description: t( + 'Number of steps to take between ticks when displaying the Y scale', + ), + }, + }, + ], + [ + { + name: 'left_margin', + config: { + type: 'SelectControl', + freeForm: true, + clearable: false, + label: t('Left Margin'), + choices: [ + ['auto', t('Auto')], + [50, '50'], + [75, '75'], + [100, '100'], + [125, '125'], + [150, '150'], + [200, '200'], + ], + default: 'auto', + renderTrigger: true, + description: t( + 'Left margin, in pixels, allowing for more room for axis labels', + ), + }, + }, + ], + [ + { + name: 'bottom_margin', + config: { + type: 'SelectControl', + clearable: false, + freeForm: true, + label: t('Bottom Margin'), + choices: [ + ['auto', t('Auto')], + [50, '50'], + [75, '75'], + [100, '100'], + [125, '125'], + [150, '150'], + [200, '200'], + ], + default: 'auto', + renderTrigger: true, + description: t( + 'Bottom margin, in pixels, allowing for more room for axis labels', + ), + }, + }, + ], + [ + { + name: 'value_bounds', + config: { + type: 'BoundsControl', + label: t('Value bounds'), + renderTrigger: true, + default: [null, null], + description: t('Hard value bounds applied for color coding.'), + }, + }, + ], + ['y_axis_format'], + ['x_axis_time_format'], + ['currency_format'], + [ + { + name: 'show_legend', + config: { + type: 'CheckboxControl', + label: t('Legend'), + renderTrigger: true, + default: true, + description: t('Whether to display the legend (toggles)'), + }, + }, + ], + [ + { + name: 'show_percentage', + config: { + type: 'CheckboxControl', + label: t('Show percentage'), + renderTrigger: true, + description: t( + 'Whether to include the percentage in the tooltip', + ), + default: true, + }, + }, + ], + [ + { + name: 'show_values', + config: { + type: 'CheckboxControl', + label: t('Show Values'), + renderTrigger: true, + default: false, + description: t( + 'Whether to display the numerical values within the cells', + ), + }, + }, + ], + [ + { + name: 'normalized', + config: { + type: 'CheckboxControl', + label: t('Normalized'), + renderTrigger: true, + description: t( + 'Whether to apply a normal distribution based on rank on the color scale', + ), + default: false, + }, + }, + ], + ], + }, + ], + controlOverrides: { + groupby: { + label: t('Y-Axis'), + description: t('Dimension to use on y-axis.'), + multi: false, + validators: [validateNonEmpty], + }, + y_axis_format: { + label: t('Value Format'), + }, + }, + formDataOverrides: formData => ({ + ...formData, + metric: getStandardizedControls().shiftMetric(), + }), +}; + +export default config; diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example1.png b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7339b316b5c356faa4a8a66ffc6f7c421eb8e6 GIT binary patch literal 69070 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 E%QheOgXxq z0GUURSizwavONQh@CQp=KP#XK0VLgg5<$w?S1dx{EA)W)mNG^N{IJI(`G@0y0!3rV zZi4{yZn3(ASVmw=uW8ijQNMw?-w!KpNz&1PPsj3B0SKjH*@*(7;A2s3SaRqHYrzg) zz{?edppt?Xm*wX$69Hd8AAqgk1G~m*58nlB_gk>=TfB5|Txh_8M}s*$>k7b27P=HL zF9<(^fkOYt&G*gnLqXQcPO;%*bf;<5S+B2A)0HpnZ7Teia zD?)%AhQ@yge-I$Kp>+mqw>H=`?cjCrm?$P#P}DWQSBMz+iru*eu8vn=%4g@wTf(0V znC+gZ07&=~CIW|)Zt0_*#jISv7c_>zc;uoOUJGc8`@paz0N1er7LmI3K#s8Aq9SC<$?G9Rn-AC3+R zbZw9Ow&%&grj0FtJh2riupoiKBbNvWV2)Y=ro4Fr+Vp*92c(;HgAwejAK)Rwq}`?(!TpogNCHenvNJzMALRJ)b8Xh|0fBsYH+0wXv={UGuMa+2kEX z2PV}KmZ3;qk*mDvcMH^6`{rz+#1ba}ST&C29?h1HeCh(_+vc$u6qv3kR*18gPEeR&zfC+gtO{>t+pC%gK&JF5e zNmirQG#}+(BRam=dHmkERmfrm(JQs6d%+;aNAv?`EN1;SNI9GUOf#Sd4j^4%sh32z z@DX<<354)~NfKDVjxho8CI%28A~PwOP6IK{VhJBmU<3}rM~M<#V<0+Ke+w7t1)PD% z;V~-+W(FA6>8Aj63HGMLSh66FN@%~$P93NZf`2O&_Ae*{t-y)FU?ui{fhQ2KlK+N_ z>XqmLr>-(kn1v54Yqf*pB7J*N0Sb6g0jNX+Ubz5Bnrev-d;(f{*;+xUDi|!KL z1Br z`_HWq5b#!rc*fgXAy9#EgF{hPRA3NfySA2_bhisM6>-JA9zj?8~StGR_BDwc2$RGyN|0{ghVg!`Yn3JAfw3betIr343!&%Nz96$=mz<^f?{ zvqxaZuyX~2CRu_e{kJWJrcS89LqB73u>WssPb0AfkyCsy*MBFfmy9z2oo-i&qNqb4 zzA8KJj3Y-k4jNGBKpQJhCk)O*EM3)qwec4I4FnDQZ@|0cH5Q=H^B9EI!@;tY4Zl-C z{1rsY7h+66xX=p3hzBRg23#2aJt6LaCZ&TW{kJWp5x=kj*ONdUaOvFE?y6e!&lL+; z|4ytk37$^mO&TLpO{`$;}qLwMs$o6{SAV5SfzRNZ}=>FwT`YFVJY+FQwq!N$Nn&! zZx%KRtc1P*w?(h^gQw0_zGCjFw>M5-y1vSKyt(~UnL_;PFUe6mM`@>&JT?N6nwGB4lZIxa&9%k|@VFvf$yy|GLj{fqBgkI15b61@{Mevy$rABYqrC~4 ze0|-g4YyspXI*XQqhnVWQIQBAIo)^PjIel-@`zU4DYlm{pv0{O`*lF{7L2jcNk=W| zbUdTWLbnAF)Z#etSe%4Z1MSh5EwK$DX-S> zy&eiZ>I$XpUeEA*q~4c6rTpaQS63Zt=1K2{huQu&moE3Nwo751t>^QC9Y;&(4~5-h z@ERQT8`-=NaLbG?d71eH6C>XzB(N*hcteW^)|UPqQ}4!SbF4>lN5>@UI?63(zYVW< z7n<+7jTN8q8vfxVbOjFP1?S?g_5%Ju&MHZ+mNW(Jhh_0ajU9DNLRP~ldM>c%73TeG zx*b`ba`+Y1>`hhdi#H4$_PoctcbR10Oe50lN}^+tl(SN68lfQGOMx8h-&|22h)d$N zM817_UHSXCjl$@KcbbpxqIofr3HZTp5Je?^y1{s~Z(FKrBeL6wYZe?Xn3UDOp5d=_ zY3NmV4PW0eatFm~jItxe;BO|Kr+0C~Y_46#j4D?WWf1hs9sZn6rS$^X_)1z#02|q& zn-sXOPe;_6QMnSXciFig%i2wO^^mo1+BJ3mdqC1N!w>jd9K5**fsShBl8W@A#@1#F zuf9dULkwC89!VDer+hkpo8%p>2g@!6E!t2dZ$5;ZXDvU8@jl%mBY3q77tCm6%nK$qeTk~ul zt)A{;w@f#%hm))+CvErcTk!jp=rnra3f-i-n1_Goa>D`&4iCR8&`kgf#WnM>fx$Ei zO0!n24i#IEIF!T4!+I_b=Q~N%#2M#RuIH%nN3{FJkFyIHQFbulbABaXjr`#n@p=vq zChbP{D$KSudAv`wj(RJ(x(8s_3@LVvfjiC9s?XmuAe-}HzKFI1v&P-($=|-m^Qz78 zGZC-VxN-B|@#SoT1_9^Zp-`n@i~w3}?l$UhCj@#zvJij5sMfZwedF)24|r7FntBep zo;us$nROc#ikS~a0jD{sC#8($m$U&)KSxOcUqn}j^V+A5FtGyjRuzF*&Rz-Wa0-Jr zb3Rv`b;uGC6@bOLTd2wA9{x^dKw|lR{jR3hN#NwB0E(njKsXQAM}W@dEt$y0h_AZD z)+(#njtCdaalQ&*41)(Oug&q?)EH%V#q=nqxCz9{aq9J`Ez9+2A^pZ4BX!~pY)v;C zN0EI$*RW}um@`0o z?YBjRI(Z98#EIUlkT|b0`^9i!oKN@|>DbP?N!AO+}DSbC*SmmP%e3SA%ihta}1p?+}V|5+j~mI5j(( zL!C~0au$DzfGtbSte@IwGynlKd_~!bumphGvh!6Q>tWJK-^y_FgtVGM&9hP%g2nGi z-IQ++GR3a)bgkmXU5{CU_UHun=x>x|P91!$$#TFn`xAUn-E(3DYbP2-z)j@%OZssA zC~;S$T=?bdl7>YK9j9ODs}lha<9#o<>`a5-_dJ0;!NxzEa?zS}3O>b=h*@lvSDdGE zREeL=Fo%N&?OzK@n5rR7>r;Juqj^kbv|SVeWLyfm2VScKPG^d&ogK9I;@s-(=`0N< z^vKyRKWwLqI3`G;ImEW3X~Vj=WQ#ysH7gOHQ=0A032Zt1G)@zwCvej{Tjt>2fOI>*!V zpwd3fBSyqK$s=>6c|FHiRSwq@O3#+!n$8vxjLxL>G_Dkfa`VxnIx!)u`KFbW!)5aU zzq8m@q}z+18UdGw@~wDnZC ziYmLw?>|;1)i7tTq8j0ABEvZ@tU{MRWMV?rjXaZHBpn6sG>)8Aw5`pqPpnOCJ1RwB zOt`0Tnm5?jDEK=>@|4L_6;-{p6gv7C3})!cOOMOT@RAZvw#B0M*dfx82)KcroxBe< zuQBjAaZV2yZQ&QC2Y#S1|9&nA%Ik?99t1mg4s~?n4%~|_l?zX01QIW1Yn(6qD+g?w zzR#-+=es1>ygr-0xpANSm0Hgu^Q3-@Qpfx!e}RAVdBk*gRla(mAw~L0-KDV04RjQT zs}PYo%?_LiQxeRIa0{V-JO0d(#7HDiJQcyZ2yQ;TpIuHU5gzqD$nYb5{VvCLFQD;p zv;OJG(dPiek>hbkQKQ@&zURUY^_5k-0$1~^OQ&;9+fyr6Ps-n*{v2BKT3XtM(eA+vxvxvlp&bl zf?FV}DhJ{?tLJjJI{f-2)C|25LYwCqh~e@P9E~0Wwf69b9HBcfwWDQ};648J8!nNK z0xbjY@_SxO?{s=nw*$(B*5}37$brVQ?w+H3A+lfofpz2lm~S5Pb9b~n#(E9Th!(?- zrSsuP#r_6Z?RlL`YNewHe8W_&>zJ#N!G8KNhnSiuOP!=Kmy1HPU#i#Tr{O8;OQTCR z-$X~#YN0MWQ(6jr*Q6Ke*TFk=9VHb*AGYHhUZ1MK#5^vC!v=UMAo|aA)}w!^b%${^ z*+>TmBp(>hArA+h9{4^6{X>ExNiDziKEajmm8yai*Lw2a2F`Vzo10W zqe!BNwcIkU?6yReF88J#SGIb%;+|93GgxK>EK=LDqWn6WW}-mf@q@=z^n1@1j0vqB z$e67hEb?4zuA4rhu-IwN6~Il-k;0^5u? zW77hRgHc7!z1J$c9;~sw4;P&6{b?JI`H0XA;I^Nl?ZUjgJf$c&oDT50kJK1Hi7oAe z!$HrkWT$f6;b>7lquc&wKjspblSxZod_ADE8YvU%&xE#jpQ$gIKMvPBjUI*+*XVz? z9kfy^H$Z{_UE3#u9Y!QRlr59%XR7fTersJ7e~2q1>+QBBG4zpm@!@?YwybGhs^QxcAq{psQK9_j`zCt= z+;Vcw2Op~pt?f7Kj{`&KVSr!a43tEb!bIWk`zEndY@q$j+}lI!Yyz?`KcD8iey{1i<@dXClo+S>SXtx&Z;LX%N^_4VQ5E83|CS3Zbal|g z*_PJ6Am_{Q=-+aa3iqHqcqL)FL5{@(BvQbm@-hV1FC`LuTg1P040XK%&LU9G=gyr* zL$8wCFWydI)g8{)Fo*W&TT2J+v#Nk^&&-Qfzr*UYM_XcQ>3(DbG##{YGfIPq>m}vV zXve+~RQm<)tPdh66Vq6TbdV=1VPT zNBM5fjaG}1`Zf*^o*9gZt-P_GC<>W4J{v&?I+R=6bUU~Ge7b`0$m91qjLiI#N{l9Q zz90`&;7j>Z!`^NDIonS#lk{-s7-Hr8rGb~sq;n)77U5+T<#tf z3rTxqY)&udW&g991lOnY-4rxuqBml_`R!+CP~P59L^4f^U2{mPZ@W%@0Oq6jcxNR{ z<1?P>qX;E5Xa|j#wnOcul1``Z*|YQS;uUk3RDY{{;-AwIY5>NiOUQ-b$Zkwp|Cp*V z!|MS<$e?(-55nAQ=a9bQuYB{t?AjGX>P@Bi{55nLDQ=S}IP>*Kh4Mbx;9O7j{r-jDgI(Kp z)V<#o=j=#P6G>tf*G-|xWrh(6SS4;9|~U$-n_2M=ry_ApL?fK z;TcQ96&FID?kD?d5$A?u*Ax19)Gcjg9bEnswq&FwTxH#Rp-P2hn#EJ6gFX&l*^T_@ z3wQhzb((QdB;#Jxs)3xmUHhqSP{8%`PLuL!!~5dqHQhB$f6Ff7VqGn~V|ZSMLS$Ct z3&ZK-(_OL~t&JHSe?E#MABRptua#d{vACFfRof2E`UA0r)rFf~1nMk3c;oty0bPXc}mU{ZC?;oir#>)aj=9=lc`o!7nnzTi@fUF(U&VYj!o)Qq#96 zC@BRUq=_F-cuni!Pw5fFAA=-8c`n#=1hx1JRk1yz;Q}|?x=R)xl`k-~M_Rz()ei6K zuApH;n)|#AzQ|fFWf<+VOxTRiI;dkzU5eP&1F9Nb-TH?-S5f1`eoP*y_g#bGO93d8*Ix@`L=t>& z_BeQ!>M+|3`vT$&2uh~R{L!H0`%RBpGyF2Ao{i)oZ19m19jWnynOmJe1n`3a{|p;N zvaDFeAo1q=e%OFStWjS=_;R~H=UKHM7#+sdJ-_(wJhZCS*=?Yu*iI>ClP!9DND?z! zm+7@7kk-0Uy(o9Iwq43Bv1Q!8ZK;a+Qy%x=qZZu-(2~9$us(a9>|)8nOgl5KYkRs< z4OL0u%O5-Sn7@+TYuq-pp7VVtw4Vxtv2z-B(FhF&w9KwaRLKpme|K5Q%jj+E_BKc@ za-OTpW3C~1Y&b7o6ADT5I(y!=G@>TZSR{r;o%+9&t6-yb%^TcxbeG4;_N2_W}H@6k9J}sd&sBlSUWOw zj|FW64Lrg{g)U4cTT=5ZB#IhntkIyq&%!w8^!@p;y1`d~;#|KPeZ9)dL(nPrTY>G{um6VFW9&@|VhfF3$se#1W;j%};Bt8>A`u z92mBf1~Z%MVgeSQ!cbahVK)q=v&IrT;|bxB`<%FAj&va-#JZ(+C3s~cJGN+q0O|YI zn^=HuW^SyShYBmz_qzNo>~P+pBW*>tWB*Og@-)}I^GW;ll@gH#O#l#DztsYG6GX$B z!634uf1|nB+Utc#Fm#nV%K6mPa&a|Z_maGzvYYw9mbpZVD` zCpS2!8YSO|DuoGf!H$d`TyMm775~{8MVxbMZ8=uX@bJ6)TpYX_K5y5Hl`(zNkgY{b z{7-}xVrb7rokm?EhEWSwA*0rxsU^9AO&B-Wj zrP&(oNX&Cw0d1xSj+6X?F{^@;PjxhF@r)1KaOSBzgRd`6v0O@!zt&Qb{3|z7eygER zTMK6&g2-3B^T$#wKze6u#x|L6)5qoM!F-O+h{dp7d7F(sJc(Ydi_Gsy3^}J>cV;NY zc&(}mE-vlN`5Y1uI_b0qK zu7=<5iD-LZr7%^>M3IIIp3C``PhEkS?`c)hwY5IE;80)UN2h8@`Bi$AKXBr0L-b$=A;Ex8J8@QMS z3Za^GG3zA_F8nb|dAIf%2}2y|IU@pk;$2wW-E%N$z4?UfO^W%oVgsma)hZ0^k)a?d z+8I8(*Wd_?8;Q*DE9_1#xY*32T~#|K=={E>kchFyplL7Ss^CCiRVwFWzKLGTb z9bSVXIt;;`Plhi3bs0#&6P&EdU5qscmtXb6_ypTNcAT^LV8_PG&-%mLsVlH)+&(`$ zEggHj^^0pdeemq1laHRdIk*ZD+%+V=#g1IOD@7~P{wlhC@SYt@HT)Pyac}i_ova4e zNecoO<>qs<_jRWk+fQ%CGh%4@t!6+ojFUzMqwuNhQyv$x18k6coLbr{nltWdE*HqU zicI)w{nfjsoH=C4ybQ1~jBg2Uu>B`q&G0{vA?VgzE4xzfPxUL`AGV+8t=Si8ooRM7 zaoIXtpdVn#konMzG(5T*$1%|Snyb=x^#U)F5g!ri%kTa5gnQg!%4B^qLlAK_RXDue zI}$sRh%a=lFzGUXvvyh6j<1IW?4TnBc;xM;Mq(m`u3tVdcc^TfqO|QcAJ^A1b<%D9 zs!f_GS%%Ugw0@@OP*~G}++~;*+=?%-A5S^Hl21Oq7MwL>oU|W*SYU5DBH$we%U93q zdL@rg*W9U)K05v_c-oW1h`S?rnzR0Q#?>VNzH_`-u}YrOtt#RWYj=D>GSFE$(8QLe zwZVoIz8tid&LZomKbrzt#jp5;-p|u? z8+pFq4S*5wERONH6o29E3xSXEu7{IJde@Bk7Y z;`xUaj8BaR&iDNeS>AViUzissip$;wK>S)}`o9P|%u0?98}N`RJlzrGxb zo-h!qTH{QJqUuGr!dYKJ9vyS7#RswWbeb4-vgp|{i#`105m-`<0u}RKtd+r!k?8$a z+pybIO6~jSRR}$tml#~O3Y0f6o)HMZ*f)wm@+^9Wof-6E!eInnX$M1kNAOs*K3L_c zSuvVgl!bE5&HRtbmE*j!GB`tG8*90Am#Juw-Ik{ zkBtuvGiL%)#EuSd`V?9TMqR0fxy5F~=On8cSNj|RiCiy~N}C-!E_!`CC3gSNbPYs4 zThpFwy%sm6twFA9)?J+;x~x$W64kk;t8Eh=*C0)~Haybd@yM)iGJW}p+nvl>hOyUn zMRf{C-!OMLcBed|QXFBGHaA{k`RqX1w7#PQ`o%;mLDKv_d7R!}V-Iz7#HB7jol)pIs3lO|Wi;2K}Itf@TS9&Or0b2YACAPC^c-pD`EntiL z)g~VKjt*4Eb9#=SZ!k;qg~oTMQXF|HwhQ4WaY6d_Xh6eF@cF&3A`W%z@co6OW@LN> zhwGDjJsJODHmrOn21k_3z%BV&$S)Zl@2BUYfN+1VHxQ#nOUpLze^f2R=PqSES5nEx zvwnr-wn)6boV{SWuWdiTSQvuwoJz|F40bXJr6+!E3EDAHJ@kn7+P}OyYk~lyiNU^7 z0HK-Qy3XH!z=FP?u{&8|brTgg)y*bZay;ID*}OWayR0O%Tn*eb>Xw9Eier!lZu2xI zUQ18qlUfht!DwRI-p|@mHKYn=)MW2JkZjcqv3{$HSG#oCJUr*SP!pL)6Y!#>c_(HC z-Y7m^)Y$#Vc@$5OWxE~~pyH#hK>BwPp;NieYkQxj`$-*}F(O!T0_o784H$D7z8}>_ zex2=3cVc(Y8vHB}lW3DyH$|sBq0`8&*>;Q6v9=x(qot{Odi5I1L04 zCvBxPbwGg@pM=u-M}_r%yEvOhEXn)0l((q&3vmgp6nlE94D?_F7X69rtkiCaUv9RP zt!sSc>k8)ky4rATrwDrfXPeoj@JA!iLY-rYm__V-3Ot%!-)A1cy{cG0^q6z!vL3ZQ z+pWRrF$fp~U$`Cwo~M_UX7O+jzkH2`E~V)KL~dyrEh;ofwl;tmct1VurEzw#Ait8^ zJkC0QLQ!fffwogV&|I+}h?&H3!1el?F-g>`V#a+W{OFojP3x-2L`&DN@8`2A40hbWW5n=X8A!zuf{KI4(e* zwZg>ejgMB?hyT34clI_gjBCs;UH(b08v`>)jbcMtG`B&ag7{u8hOSLfz`82H!1yx< z(yv}=OG=w45Dv0L64kgh)gTDI(0SxDhpHDhCNXvV#<(tglB_Nh$Qk792YeJ-Fm@Lw zJr?=Uw0b_ihKuX-qxohmAZax|R=|E*i0eq}$6x<#(_#&+B=S-@8F z;%NXwR1)~1v#9dMU;ze4a4mvBvJ}WtN~|HW1$kMZ))64qWXys^$9*e#^Ic7?#x)HZ4h#V-J~``t=vBL-*4 z^AVIXf95R8a?yMta&oR2sV zOYDQ8X#0>H4pyC*0g(@Kr-<+WpBu+4>h2+?57OM^V!HnlK5KJDto4GDXS2HKLxF(Q zXz*Zyaf&~O5XAaMgW^x%-2VNB29H|+=$)-;{`D>RyB#QB7GEJ;!1<3qUsTIe0;5Wm zIUV|MI~PtsF|R*8|GP#pxcBP~lJI~6WdHI3YP3Ot@nbQWe}4@?_`yf~hIN4&3r5x; zeaLQo?D_8LVG`nae`V;6D$;(Ww6MHQpW%XjGLkCkLV)6tOS!ef`W1zW!6ZF$ykH(5 zbBfEl-Es7IsLr0Y9{Kb!*{9pv^}Yicl8(ko)-$fxEb4aTq)WGf>RHX}s4J%2rkwS^!>g2iH_*c&K%#uC$sd5g=GKXn5+o^u> zN$ot98LywuPT}YRh}ZAtw=hZkNOeynxLu43JY>LPcG4A-1ZK#2_~!e>UudowYb~^M zEybZV!LUeiw$aZdc2e@k(~tIg(_+%XUft$!ta=}Id(a(s=MgQhPO@-VOtMB24=?w6 z!&+?Z3J-IsKsW%m&`O6vN}y4f(4S+NdsG>+xer!HkS-@*Ta_0pTer%NLC6U`u`Ub_ z2Qx$H+AxvV)}SC+kh5SYf_r;xUbh!HfJweFF|ij?Q22a)HGFmgJ$pt<(rf05Nh3T) zeYWT2c}Hv~nL81!1?VwLHYnz85>tTLdC#sKFOT7b^JMzg^4aXM{>EvcT-33uduf~n zrV;}9y%-!&IOo4CTw5)1=N;qD#rCBMI@VP6iGfR9L}Qbf0~TUp?inn-70?FeC@pKh zPB;!fTp2F;zOat;;|>40iJ8f%-IQ_s(PU{M2r>=@d~vVfzK~GBI!4ksC0|(~@!*Gr z7H-lzj)}B>OBuI)PRvlw`&z~;URQzHc%z!YbZ57^y2t>KyV45-Bk4a!dPsuq9Ugs9 z+2wHCEm@8_O+B|#yUG7r*4snpq~nA&A)%l{0+Uze{Iz5&r~D9%sh$f)DVi)Av;}2cC2cx!y8cC{!7Of2+vDT$l zkCNf{nq_eRL40Nc<5CN$Yuiq2G|OorVSi7!HoFATFKLqI<(yW=^okeU z&eZaFhtYQvuzt`rfV&4IK+=OmWC_Q3y%r z{=NUSpLBn2S9dRG=j?>FJA5f^eh9#x4H1UpmlwyEEwks_yGasS*W22i8dmNjqn&l1 zw=7SGe{!)RJbY2Y-S4L}xe$EPCIoqQX=u&0Ng7{`nj?OCjXFt=6{L1geLGBDs3dy& z+E;&M;PN}kvF7%tLgo%z4*G;@%sy+t`c)o+5Bz?Hb-~eZ7?i*CYD92hfiy=DDTM47 zO|dhWF*jNDo)1VAws2C#2|d8Im$-G&op5W$&BrEkr>6Ux(6s8zb#~!yX`i5^hT3Mv z)OJGSoyUC6gM-UXbr7R9tVgn5=9ZQ|JM=Y}_w=O6_5Ql`^SkgoeQ@2SBtB92Kt@+d zWPSP3la)d{XCxDRnO^40ke0CYfJhz;7z@Z=S9rkeQeEj(efFX!90wBVr195gEWh=h zIT7zUPyATA6{y-TNg|KmM_%CeBW+fsF*pXhlUKE;OU`lUlfO?zx$P`aoZ}d*{C0#- zsBKq%CnE=f@N4Sq2^VuRA15n@$F17XLdIOHL5B2}0}V*Sk(8$F=@{K_{^its8tb=U zyC>*t4{U!*8u%hU&|zJP7*h9|@#I~ZDl8y~I=A2(P$6SA&go4TbWXL~^j_PM%|%$j zr3nbGCa{@S5oF}(RE9oo{1XIQPrg1-O9ePNzY_d096~3{g^33_OPee{0q(K}C+|TD zkr;C3QH#e)@(t(heenU_Kn*h_6b=%C5bwG#5kcw5LD1TDkTS~C{Za~#4#1-PG?L0w1Q!i<7p5%I`HO`qEM#-8HLXrA3Ddvud z8bbw__B9Jb`SZt3aytv+JzK^&@A@GS)U#C*^$2UoadDu|+ri`&U2IWn;{iq%k7)5R z^z$)2@pA5)v))KlHrTk=qQweoj|w$n?rvFlT&^nlUevSlG&|R+b|JB1vCbg2%FA<0 zplZ{Rs{W?Q1}n2{nt`sY?vqSv{Bo}M3->0o9r+D=va0h#K~u;6kp))LO@jkYkdaN1 z!xk?PSPEcYesrF(ePQ8d@BT&Cb&nl$lrxUYDpNd^Pj6!w=S*?I58PZ5!4H%X12~WT z3-Yu=|4FyTy|@HKS_!HNbMNtN!X&rFUuZg}X}( zBhs=J2Cxm)Hv>4(a0JwW85nat-yp>W_Xq5S8bniwqh`zn7ICs9+!)sJ!CgZ9I6bgej`H?jgI1GTahEtio5pWES!XlEPLMGNIz; z84#Yc)3-n+I@%{9{_?4ynD>*-d&n)XEXSIh3Z$-1c6vLGwauiG_Cdm{MU0_Hisb4WSf7Fbb-KG zPr;}AyQ(h^u@~{|*0%BCel{1*H|oV~t_Ug`3o<&GO{x~ar2!22yhq10R?r`rii)6k- zdbF+nW<%{LKXh{D_ep%nfmdnC-P7$`nf%=C!#4)XQc_d0x(l+x zrt*T8;57-v-GTnkrY>2Acjp>cCdOnnI9NK_aRSyieCFd&*FC6;qqoZ|afKx%44Ty~ zl(utY&zIXsc%skiH74C>mZiw!v7y|vASG#l$^S-)bm?9mt$snAtoKIh@o`u+1pe$1 z-Er+anLahCINB}ruG`MurJsA2%9Swog+3XbvQ9;t}IwP-@>2-hf z+|#ZA&~mk=;_oCNkBNcSiKR`L4sf?{^M_gEhRC^2jvW16sC4zwPS9ONA~tj=GZ$g-W4hoVh}=O>~lYg_g`=UE}Nh^nw(nkuF(5Ol8S zNSSNLeMkZioQQ2GWIRCWDjH9(i9;0Qt!Cu!4fr|BdTmOD8Fm}IHn{t9Vc-!Fz+KvA zUX>*P=Ki2Y6Cn)AhX7w$ zqz}8>)$HMhyuObUyuB)fGN>+W81e5R$ZLLKpIJ-23rSsY#9JMZL*%@DAAAO znp*g{PfK;W;mMLbD5|Y9`uduos}g>(lkk}ju!LY+4zdyColz?hy{ z$b77?b+YLxQZc#8|6|jLKHyg3mIeJI4V?y9n-FUF6`aQOdU^!o-@Y{#GvkE7$U~O6 z0qiXG{eZclsJ2_CHs1w4O>f5S`rRr!KoFzduKre4$)Du8cIP*s+8VD8A=kmi0o$YP z0clTDZ>MMpX(aAY$B15L6Dp!UH0kN=%5g{qs-F(b*!8>*5E)VJER-3~^1lPY4y3Q< z2!P}A=wh|Ml2G7fCwnN)XddmDx9s^`YGK5p-NBv+Te%;ax>CDr`}%nX#5!_20s2Q4 z*l@Sw{eZ721OwLu=6X9;m+X`MO}=7R=d6n^ttKTVzO@Dc-w&qoNozL2S2e zVrcaX*)W^j$hhc~{e3Dg@4d0S!bbO}bea3_ilFF%M=uCE3+f|pM^psc!_7fqaYf~|Q&47S{>7Y#v6bwl7{x|PN4y*(c zv6ldRb;127j+);ZAq=bBz_9(Z^>RWpPv|X)Y?k@YUrdad#W7Sj^%1+Dgs&W|Keg%f zKacR+7dOio_#hggIZ@}ERku_aRNu3_jcf5nx-gGy7`4aGD%afZGk($K`%=(yV5U=PQ{`50p>!g|1 zDGq@YC`y z=z5b6ofW>1Al2-ys{_#bAx8;HYZLXa%wLad>tx>*Dz0*N_wzFs1fkud1U9N0cj0T} zPcm3VUjWzb!0XX-HMVSEJMCsGV*Ijj)>`xaP*rbv8=s=Uu_XlXYC!B&|5WaJCG;9o z0#OQXJFzS@wC_>yNte5eOLIqbU0Hw3#Iv%uq+pK=z6)$6^a?pv(ChKX+>N3shH+-n z0N=*<+itlcqp{9&kURC0*D-an}@uI9`6uOQxN zcqIPj5^~!@>37~_OC2rUl+%;4U?`CNK3BB9#BuS2>)Q~xc~D>#kx(&G%#RlUFls2r=k$LKTE}qi1YDN&H!@I|t-WX3C z9VtT$Xhp?w!K|R2nupCC6j%?*Iz{vvt2X|JN#k=FbxB?Jh_Jp~>oKnNNXji6 zpkhAR)HkdVDW<0Wc3x+46aZ1@6kFgYo>?^jxSF2VnLJPt0%hMP4X!d^-<2^nFlMJ; zlSqaMf-2XA{T_dwHM4iKf3eyMJe455qg1cvL$58n*)wR_f zP9vk!gluV~ape#{aF@DqPVJz4sWkrvRp-)}IvT2uiGfJPu%p>CTzaMatiAsW#*Y{VEn23}NJeYWe%5^S zsG6~~RT$iCuaWBk5x={JE~`MmHvL`P6v^^3$=%Pwr^QrAO2QK-jXU)DnWbDrjr8;= zLt~(S!~n!-pOeo%9e>yPv;I|1^o{d06T)~1!Ta3uj`q!N5qUl%2gt+ILB%8o=_mW@ z8XEQtHAw3&E*RfM<5g2n|EuvA9f4oD3f?6vTaoC7LNA8;--SaJywQ2vU28?dM)cn$ z;$lc1|LUDB`R9QA^%?$_4D2tRDNgGjef>|rMO8qnSNs{}=>OX$=p}-VhyqC9=tXJ# syD1kfV+*^mnlBvuPU-(Jo4~QHK&nQwUb!85698WtsyZr_O4dRD16M>?>i_@% literal 0 HcmV?d00001 diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example2.png b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4b1ec16339935a38be37d057eac387a31a3099 GIT binary patch literal 101622 zcmeFaXH-)`w=jHY0xF;=ARt9iP?4fE=_o29O{5bkQbh;on}?Sx0Ni?&ki>3o zw!j<72=CXuX22nG&8H6noIh378(w+zJ@Dz-5srgFu6}G*$B!Pp!)ljvu9jbiU-ZkRJ!vX(WnfD#qp3mFInKuxo@xP zy}S>6Yd->O=6mH2=n${&g&Fu?HyeE;Z}D33$PV$IMA*xF6&3MUYA|seY$CY(sSLz zm|M!GLm@nwzdlJE@}cJ^RXc75VQ{m~1@+?8=j`L<4p*G`-YKAy5(ULw?>qVaxOga} zf2}|5^jb`ctGBW=JTdfSDX@UwoNTf&=G`vK34JvDuCfbDj{WHB=T=)~`Tk>Dnrm!G zNy!_D;>WTjE*uCr@^WvTSv(4J(fy%Bk)dgZ_1m=fy6&e{UYocd`pUoY zN7+&t1sIMECAUw>KzBv2RdxC|Zm9vab4JF-K|MRnB`m(1XMk3Af32)jfQuZ9uOGYB z>7Mj8qlvSJ*CpSwm}efWiWHSUFxPb83Lr4aRR36;gXx_(_r(ME-ZEc)+mrN!&r#+a zYn$VtVeSi8xrPrdHlOlkt$J+i%YP5BY6|of)?lSMa@4arPilUQ6z5=ncj{pFK@Z&n zZv|agE{UuB5I*?q+ovn%m~Ov#_LkL_sW>Y7)7^aDFVBTC9Wsyg+Wg@iU>}P*ka_eE z*QVgj<})7;dVYIRcD5@r*%vs;Dfc9P>f#kK*+`WZK3|cDBi_%k->fDHzS?`dqIygp z4oAP}yPBMJ;vD}4R=&8~*It)%5Xx+9fZ;i;{ws$IV`zZ(nXd*`C%u z`u*_zap!VtAsolj%dM90_sz;X%TvqHWirDG!&=MYK_{bH3Z}b!OKOjtWKVi3-AZf~ zX-)q=*2FcXHSM~J4-u~C(GrzwEp17f5njt%RatG>=6s^j964#oacY$#^cn9rt!wO4 zLibH*Z>f*OxTBDPDOq_u5=p*NtSRWRo*D z-k*PU!}iwux61L{Z+qUZ#E-xK>7rY~u9}giJ8tMLj+D?oh4_&3!}dpoYiLEGYoQCo z)#pd!dx;-{KQ7Jkcg}Vubc!UPB~>n%yjA(&{?q@r)laLR$hR12?Ghc+GD{BAA9sec zd-Hwur@o#x{&nXU8`p2ny3GoAh?x&qXqazb zxN$+|LXCx1VV^~VMZbB?7gT|krEX#Jm*)jC7KGv;d#HK(mzB>w7IJsBKht$saPos3 zL)InbRx@9|*XAbXmge5_&zn>2HkC<9jI#VEVTT*eG+b_wZMX!3(!^?N<>nN5!#=~H!_-K3;~<2f zZS-t+&ac^>h^(Ex9qJrU-D2INd!BaGu|M9N-r=LWV}YZpD}gH}nwuISqEyWn$&y{> zb64l2O{7iA=l!re7u|8Uae{Iml1i=KS(Vm&4*n3FLpdg9hjc+oA}=|FPs}#D@5#fN z;1JqMh0@5qAeQj1iC>5uL@;n({B-8!NsmmA%qwLQ9Ngc|E!{XK_M){eq4WA-h z6O9sj?)IE6^n&XUSK+~Mes7V+)AdqMc+1axzBCQXc6ZVL-EwZ`oW8kL)xFJce_s6I zxnzGS=Mt?vv0U1@w6&m(a~eP6xAtp|I@2x?A~)RV_}~-m+qdVz{DLyJs6Ty9)olwg zCbI7!-)tT!GQ}T>@BO&?{MfgGnb%Sk#|n?N*Ir!VUNOjEFMX}@EqFF*Ju3cQ{O$M* zDYT@IfvCQp$$1k&zB1N?Cqo7B0;K}6zH5El*+#kT*)=Yc3cQz%IryG?d|NRr?s83r zomMdYl&{^X>KTsvctxjPTe!pi!&rvyjRRSQyv{#)-ao!qGx}vT&LAsE)GoKouy*-j zhR68#`l$%y9x^E_$v-K$xYwpUsIBStTnFBw_e-mVUE!9cK#{2J3_2Gs;|Im#CvY~! z(smSYSl4bWbN3S^wx`pHnkRW)0VL`p!tj*xvV$+85-4@yL5@EDvkjl^l-0`7^afxC7 zQd|wHx~HrpLN3T>W!#Y1*=?9R#bebn5fun^gj39 z(?dM=+P?$y8%FBCqMqaKMw~dAcoM#5@J%i_mi6Rr4S8rj?4xF$T%G-L{qKl{R@d*dC~0mh+fuxPCOwtr(;hAo1}Rmw z_r$COG-Ua}CkljDRC>lY>q4jaskj6}a}9On`q3KyEZgfK3x83XnH8#N4dcQ7CxCihAvs_U6Udy zjGIK9+s)rCryrX!!_I%iwj49SOg5TFDDB|aWF`q&KVSdUKdRT2EXsE0#zd4aucdsZ68IyS7;lpW>F7p=N3*%5`l<<4E+5L#-A(cv0(sYHS8IJY zBO~Af80P?3nS=l~FvbK1EhgcA#cwj516cm?o*4k5JpRG_{>@_yhQGhJVEFt0Kb|b_ zUjXdjKVC3|WHSFVH!G0I^6xm923$4M1xW<}Gv`OHuHOC+d;(ry5e)-haQfb|@dp6@ zvws7V{@pXHApBtubL#+WBSST3AE@ko7au2A*$}AjUpRn9h#DA$x(3`A4}p4l`>Ta$ zp8iJ;H8B47wcKg(e`E>p)I4o%bVpp*=aH+pvaGzU{AsO&;^N{Ok6hf;?q0w7pT)s{ znx`KG1o*1S$pr@o%LXgR`aE)%yQHeBDkpzg?($_BFo%qPsCU5q5E*ZOiT?odPdL|I z{hc3q_y&0Rc#Hpqd*8_?FhKM4>A#5n_4|){x`ufC8wjeivQZ%O|~`Cp1!|GyXgFG>Gx z5NUwczdP(d@&4Du|178>_m}qn(iZ>G(EoS~wzSqk4Y_~yn%2R}mWzM8@}$Rg6Lath z4zs_%e>~3p$MbKzv+P66kpckF0ran5H4kB0PG_s<8^lLBs2^c3-s%jrthw&$ ztLkG4Er%5h*9B-a%0&FA-qRX(jJXP=OU8eugxlp>x8iD6E>l#rC5VDs6x-4e>v$QS1t)Lv@={^{G)z) zH#$z?Y4p+sEi%!pVo%d8WO_TP`${LX*(7gkY>Q!H-a?JFpPcnv@D}k)SaHd)1kV1x1U^( z7?)$*vs3R+!;BazFgz+%ye-G(7Tm_Nt+yYW&zXMBT_>N{48f)b#`5J>6LE$)^^|8=g$8u#|v2Y95jLDyD9j(llz& zNcQ?Bvw8L0m``2|JJ^0~n;M5%F1>_!_pTzHt-bB~d5u9`C<*G2#}BJ6c1 z74xV9A;9d&n|}m|2Nb!KB><<)(?CEh2atZ>SO;+7wT%IKw?mbfb=+@VyU4^E*>j93 zQ(=>pRp+pt$yK1W{35ikkWzi0Rp$;#9B|V4|5=uoS-iya2yp4*Q9w-(1THTn4qWCe zz5zVgs}}+hojH{VFzd{}0(u3*n3=_2WaWti)7FW~oJ>cClsFleYT1kMJ&$ROD0Dm+E{K>WN+nf`w(;|~%M-)qYn z`5jyMH#4sjr#KLh0aEb^q}=IB*ghRWkvp=mjaibW)Rz=}3D;l|DygZ3);bWgxDTApDlJNZ`krDt@NSwT*{h z=C{wRnZe>xV2k|$DL)aL@dSA3Y=b|;s&j7$#BaUdef!kuVI@d2Wk;TXGvj|J@wM7#2W%$4`gumIPk1=>GzhUEt>oi*+!ch z)Z{Cyv>OcZZTt$Iu}CEdbzV$#F?!?LAEBGf+7wt*{{XZ?aV(Y_^?ct>o3&zDjtzIH zfuin>*m{-souMFc>I1pJpV6$Eh7DJ30wQM6tDH>;7xDm+CnFX?YuFN!zerOVg;Qa# zWh$C9Q0DPBQEgug@UInO5mOBlm6$D24a?EN6V~@zWS2@E6|joV&y{vtE^|gM`GlUQ zy`eSBq8+j4)ym#w!7C9+#>+P+mGF4G(9CX4t9l?kP0Bopc`_!0Wx2&t2Q zfx3~><=LGo>nKwL(R?+l`USR&+1pJG{4+cjwk7Dr!p?Ac(>KvR7t`&7UM|b+o_MhG z(DR|QtKGrKO`MlcJ)^o|kR~iFzbTdK89U-t{(S?V>nR77mQ%3rh1s783inTJ6{8^GhmR?->A&B<08G zY6&VE`hGlE3U&B|);F~VYR;Akg2f#P<%g8-TtnU6ki-Ri3YD@{ZboI$qK4m?)I*Jg zl*$w+1g9s^ciICeVB4*ihdfL`;%`bTR&phITF!jh+Zmc5H>)i8V>74blq$QfWXbgU z%0e{#?m54D?pd^?xy>Gq8KU4+XvMVI8f~w~p>q{mNj3wP21+y9=LfB|28BB$fx3EH z!q&3VgNnHMNSJb!ja!CC1qGR?j+17R$7*nSHHNk$n6{;1PAAk{KGM{}Hm`hNDyhsR zRu7dFJarSTk<~tN=~4EWKj|rX(5fNYqFcb{VRx#W_aPMzuPpeE5=?N(XH0uVb@uix!GmmVOeIsDoONWs$5Am=sLqiF`HZkr}kU>-pv6=@{ zK>kXq+!8{~&lOsZkT+A2c$i#-qceT4ume?{LZ7YFCdFikovn)oo%U`VZVX=p4z z>RKgRp{C+|NT)vuFO1wQ2%^5%XHKiyIDm2tbKY#Dz=$*BgDa4+4t0}}Zns15?!+6w z;fZP#Jc(6ACd<&6_uHJ+uz6PA#iT{&lM+Fne0 z5SazHk=i^cI;SjSiRw4OH@hY0kTDwIB2hbAP(y5^gyHQWC2rx+M%(I(5wnG37*r}U zg0OeUtF6uCh)8AU3)HMoJijC+SFR*)V)HeZA(H2wP?ct*Yg>MAd$kPUjhJN#SAyLf zkx7pjhBojOY9?y;2PZ6Lgtw0yNNIh6Btl%^>dr$(UZ~p+)=284bhtdsn6lf^DP$n) zCFO<5=(a7$U5A@d{YO}vX05cHMI1gxeAW9Xvx+UXVc!~?Hm>rjjQDunbS|h&5 zmi{AqLk@^ed*a^Ba_HCDM3i%!R#69BW$aNDZ0&|gY9P+Wi(&`C?=F?vxgsC4uoDJ{ zMjv2klKPn>9zNN|18tSVj3_T%^wc9(G}or!BkmkvTGid1oLKCWTF#22@@IhC)WmkJ{HU}N{^aOaGO&J*$KyZqGK)~1cp2rsMg)oXrxa1AUt$PwbgBD>Qd)mqBjZiO z=B_)AO8BH7+vB2Q?-!|5dNt?`ix!tCICUQQx5tq2Xa~Zme~+6Usj|E{qi2|*w#yTa z+GuYZfiv#kz?d%vGum@%wuPN96fX zy5toAKJ^an{?WPsNfh1Ntb)HmHyR%cxVrQ1dyGYxXs)+=4==3ocF&X)dUsu*-XN>RA5J!Op zlcYc+2~nT0Qw?ss{jWG9Q`H;X?X(!UxsQQv1m~v-(Z6Eh${4~Bjo4j9j|<@Su1rWF z9EH3|$TMCWt0Lmv(fm4)?4v@$vO|i4SSN=ZQ*>M)ZQ$nKE*ko^<9*PdM9<^Y>x@z_ z=E)HOtqKz@5$aA}t}`(qdpybGdR*Mx*QG=WuiVLBnM$;A{bD`9TzoTVD45tBB`SwI z8QygtHCi#l^%=Q^naU-%p;~w}do68p!m{Sn>-RdA$OHXYK59nDH&fKW`|ggpf6%Nx0MXJqy6yuf(Z0%a|w3iJ! zKKT3#cat(*nY}w!%uU$V(a;HDTn$N{y4*?X&wsZzSFOg>dx>Vc{^=QA&;3X5(U~6u zQAYtvF#SiPkwas6u1fYVj}r*{hrEDpe{xd1w{dA<)r=t8$Ei?GX{xNo1S8^=q%rXI zrK&rr8=BK5(D6OCg}b(C z_n21gb{~beat7y~VpOJLP_P0Y=E=+%Jb}W3sA>qZC&X$z*m!c4J`uN|6gsRQj5pC{ zJY-)kZxpE~4fD{noHB{sa{LbKVqa&hQ>9^3-JPWicMBTgYDeHZv%v)Sp}^%;7Uj;= zhsDK*n0gB*j;Js6>BZbnu*zukTsw=IW|Al z+`=K#zfF~HPj8hq$_kq^x=c#+dq3Sy(+Rt6e3Cm}OUFDio-!K^tGN0|Mw(ae*WnOl@H`i%V>0saCgGAJ`tD zN_dBLz)hrX%Z|DmKq}UrCH-z(*Y`os%<>#m^`M`*W=KUWc@igJ!1OO49Y%mYYV3WyXv4}v`#5CixsYEtYg>8#&lZ@ zjg;NjwvLfesV1VJrmi)lU4##`q`u^Yk?-2`dFvz<^jVMI@{fkA-wySZ_zmbJWd5`^ z6=2RZtC1rnN}=(WV`LnQ<3`FmDmUe*REKQ`DlJZ%xb7TWl_Ox+w9B*e)7X&NF*l%i zOLKlDwWrAv7LQ)-F(#YVS(2NGxC%Svh!Zom!hn+cE95>s~JkS zhae6JudQ|B2Z%a8Q%ny(o?7Cho_8uR-nJyXuCO6}uJOuQt{eBsCx@bI8+LEO7*Eqqs==EViF6Fvz6o@V)7+6l;UGNvPbxrWS#RwD=ZSScCMuJ zMdU0c;S{@z%OG{jUUvoE8 zVy0;+rdGIA>xbpNQ$Zgd%+A~F%zK;%WYHwoa7H0L0g*#&m|YySKdpA9fk!NSYxr1T zaUA~B_Of;PHs#D1Pu*to^l!65-J0@*{_5p~q^lkuIy_XgpjveSq=15EE|Yqtu|tuC z8DR>Xk&hF227^qHRzbycypg5s+%=Xw4G-T4_du;g>Y)jBNVp)heT?i?-Z*xjkcZXt z$5R&83lvrs%p-1MX8$BAhbtv1q2PO5)a(gILhy`*S9|rep0SY+bLL=<$nv0K^!(?I z;2I;9dnE_w>+U@U@~>l-)JX&u9xdCVhP?{QwxT_)G{);nTfQZ3tp^Se=QkG87DhX9 zaoTHD4T-YqtDG!6YQD&6V?f|uz>Q1glcsv2Y4oP{hC7SbfKhsvI&O_9SJY7Wje6Emgle>chDV!#r%Hd^jimZ1ZdIQ zvpw-3YBoM7<73YX^=>?{dWtSGP9MeH&N4S1gDxlIK4*So(EYInWTUW_(erkR6(lz$ zhonDeeR7A^xE8iBS5qS9pQYnU-||w+N?0Qij~RYXhMX9RYeU0B)4w?)Q+*I^qG3g; zB4NF`;HS}Z#5f!!(=;H(w0bp8E9g609Dls1mLFxUjU&IKG!{Y%?G}Zv+d<&Tl0mQ~ zmgw$a&EB?^@T$UM)Lk?5;N2H1_Z)%vN~PFE3ZZ4EtTt@xUH@66s{2{e;%>6f1U-;(f9^?>6kEeIy{Eqc*j5#Za&Ssb3R>VD zwO>#$Fk)_!qAz{0E_rL*N38cAj2F^6Ke@xxXq&dlxnlE%r3Vs~-I2G7m1<`FpI|%fE(D|dP?FD42RV~fO2 zYlr;6wsFXV?BM#egJ`VwQe%L76>`?dm zp>@i!Ox<>#<;PNWd}1%f8fhP$uK3N4deHo#ha$yp?m4k%_yzk}^VkQzq{SJUEH&5*(~JdzrzGh)%Ofu`VvyN_S|q>uZNpSd^X#`b)$I0fXs zwlWGg0eOoHj2?YXa2#9hjbIJ$ZMCN2B)Ez_Ka`yJ^8XX`Jo8JfNn3ld7jQ}Cng zF>5V5S$Qb7$=HXvNiXMQ(6We!Q{e=WEX*xk;=e@zaC%I4)|AY~X2Qkboh$G^#ZJ>d zmSo4Ui4eEF`r|$rN?@ITlR;Y&98>(TzfH&nqu5gGfLy3C)!1kyLZ1dKq3f(4LV!&} zhfNdxmaX{|XG`^&vf|<`XnL1Bxumx1og}+@MBE!M!kaG{vtMc_<|htUDU?Kf-lo6^ zZB$6h*DA_R^oZH|2~e+Cl^X{G=Z|F2@u%zzFR3(mDc5b{i-kU<0feYpK9=_r1?oys zarO6oaz}`;^*XOlkPAQn%^H{hPs83P&GkjS8^$dGx#U=c1n@A0B{R}| z3h^4q-{Fls_)#)sSe=W7OrUKU9V2wTzm5|O_fq@C354e?)nSc%;Pmf9;U~|&RTSQ)hkMC48*4qv zv`CdA7Cv0j)bL5soyyKap^R`2K~GZfyPr^OIutB*2Lh(F|q_Yz?x{*skW8~#T- zN93)P*&ivkOp_bT_mU)O0iku1%v{TfLF|yMow<^&rx)UZ+B0^sLz-hK@2E2)JY%00 zXL-5vbn7|?K<2q@ZXt%A(EggnyO_0S+%UD^R5iiZzU&esD{s<#lu4dEJFry<52E>x zeW$Nt7(VFTJ{0AqbR0UzVfTc+;re`qBT4LU(2p%S*$z zP)jA4YU|(|ONT(Eo_nSA4a3d$qY^jqp~bQWHF7(hd)!PhvX|*yu>#|d2zKOd6_{6Y zPEyrOoVwFzn|O4&ENi58jeCFKV6cV)nWy7mw?M_&e$5*QgP|M@V>Z|$f9`?jxQo_C zGOflS2{`#qmT5J|Dut6gp%Q%YMXhX|j_yX?NS|+(N#97aPrpD#PG75`EJrPCqyZ2u z(B-n{b6XGChI&QV1IUxT&mH4;gogdpOWX})`W}476hos_h+~S$znDDMKa1cp$PP`p zAY0aIMzTStI#kFg+co#7d+z0^b3~TQ6QcQ7i=TShWbO(WBi|&N91Fpwcq8|Af^~~Xy-2TD&->4Rha}h$HS9UPdX3%8Wibazpk!Ekjm-`@G4 zWQrwq$5DriJ*FGqEvPNlZ!6KImdncnX`7I6T8ocYDSsi~Q1~oSmJP4j*S4E`|5oUl zI!l#dC0)fsG1$+eIod!G6~jFt>r+ylXaG3fN!sF#9MWEJrqqv)?b+8>c3(D2+4N!a z{5rlqb1~RRPg|TTR9(jC;%`cD!`g77ht^{cpNKpGre3MBRQiu&Bt?uRjV#O~{i47f zw1hSo+Tp3{EFnIa$T@mO>vLY4q%_`?F}*Xe~QKyz0}^{cjK2&RR^GqL$Q`8H77kT``fxAj)x>pgnK@VRY?t19@c#wPaa1av$wueKt$k3LHoALBze1pL~E8=L|GB5T)0LxsNe>kLC1T zo`T@#^wV&&cO{v8`{R8Gog_+CcRyxpCU`90_9C&LHAKs1Gt8qgqrd;wUCiL5k;pi> zkpt=Kxn09mR4Wc#=sUpxS<0;C(EtO?y9IJ!yB9hZS`|_0Crk@M)MTqmZ3&b6YXj+m zFsf3LQ83>v(#8V$vFrhQWxLx9N>B3~^(+9x2)nV1zzt4)7Ne*OE9I+|njb%;#11m= zlUZ?^pcZoBA(wEEvp^aGSIcwAJstKK+}f%lqOqbVdRV+@3Q}s5;7AMfLN>HxA582< zdwMlRUcCV~lHh#7!}#_6wV<;)%~_rBCrL#Wd&zuj($o!;vKqH@$(2j=b)YM8p( z$*q+nf=n>R@^#4i2;D@(Ng5JVu*kOIv(Q&y$5Yo>8~6}yK&j?SO7)FBj@|qTP_(A! zPSfY4d8%^a&lPv)pxBx+1HLbo`L76v*9$B=$K+I+BqTL@NG?0eh2&eq=3UwGPd1FN zJPXsQd)j0=KjBbsGB)tg#}gkiEdjeQug7=|yp*)1gvLt%dp%6^*$Pn(xrCyg_b!81 z7uJytK@hn&SBf`PD!IAy44K7Erd7)Ifej5Nt-8(CO^|DHwp-p({ER)DX|NmJiS+n3 zKGAm_3h#r)GRn1FOO5)^JhfmnS{9}DwIgyd6NuL*sP-y3)n=89Y)Pigr5%PLvU}d7 zhT<hMCSj3)Z$_AbSBKS8a;#)t4eiw|9TSwiF|b5NG=J%PzzpnA=tGKB=zPG{O!|_VOO2F3iz#EnMk>f;nntS8rU z-Y-wJY zi_Sq}Ft6#(hUI>-LN}9k@|iHKlMXT}RZ2-8S9#|jB7Pn(xmXFTqJ^qQv!H&EPH8#9 z&|Y8qWjT(>gAE(25+cjpHRI*U{VoWt0mLUZffF^=3<^tM5=FR=y-@qmrO79mb#2%) zw>Iq!@yQ?|9re|qoUqqemRJ^w^rykv&hYWfmgUTmI z<;$|_B#AZ@6Lm|6LW=3mrCViG^}w2h{)@!|CzZ)U#bSLjY229QsWZ2_@W=+My0e65 z?hdrZlKIi~dzTFSsg-2I_@eH+5-lFpptlQMlp%9d6bYH~f`o3+@|lqF`l;yG`{AP2 zDbv(;wDnWPor&)D>a_fmY41n%iRuj;k*`FeCQiGjrW1~%H5OWC`_2RfmJd7!hL_4x zy+TqpNzYm!!#(<8h7Z?5nS=19c5749qh`Ss-O48sBAz8gq^!jDJg4)7dPXfZ#Pe;5 zN9o@cD^iTG02QslVgy~-s|>S39Cya4prGBfKgVuO_~Go8=g-V7@2)PRXK6QyH|1RU0og6A7G-LhzurV6;BNJ!3n@|W ztxDM<2}MUG^zf6-y2RNehf1s#qr&m)3^!p|8RBF5dCJ%gBEY}DoIRM44^n#KCY!6Xib zD(SAU(!&osq>;cRk&WDfhfCLh2;>X4^j`9-=^gv90W#`d<@4{F6uQUfBaG7|iWO$E z4Emn+gbyc=53P(QKW#-o5R{-bM(v0bRHZSsoej8%!xm5<+_H%$_|E$N6Kf}D}ic+`jZ^jBilk7K&0;!ob#f^^? z(Cbec)^lw=|I(5sIj(^wnms?!xcMOw)ipgc;dvmNlA=(u?5Le>Ghm{b{Ty1p@+{sz z_Er~JomS$+dR6cRBV6wk@Q^rb>xp>)j-+om6TEaO%uOJzvJi?|TdyY9OHu^DwP@SF zQI?Z3)VF8)W-hsZ&j1}KzSZWwi#a!Twn-{_{LGl-YPP2Gd7Q~IV#@-kPi<|l#s=1>C+**9v9;P#*ME_xxDeb|Gz#*5b@q4bZP zLL{7NlJ!{0*2FpZISuE9L6X^YK&hsxy>CyXzhxCciVQmo>_yVlkkK&)k+>!AHS3yDuk zv%?+GSFAN$?>)+%h=DDO?L}8tublvwp|6I_lP}!I%T@XVy^qmd^XXTD#~s-Sp7Co= z9Tc^hSb=5qCVtO7M#+m%omkN5D^zp?XuVnt1-Yvn(V#7(^k|m+%|!FrOiNq1DSB=i z7PF=M-da;_?ATr&5+NhGOK_ph_T>N@!+8$mnib7m{-jUaN-Z^ZFyB+0U!EDw@PS|L zy|=bCBp17Jl117U!S~JC;)QP;BX1R1w~JRAVmKcRS$`_93;CuU{mYf_XuwWpQgvf- zywXQcWi+PylLg9Zv<4;mUp{M^JhkI5veiQk7kwUU&q&LS4B>3ELW!C?o2lUGuDuv~ zXmG#<$>NZ&i{Egq6!T12~xoJIz8o9og zoS41)v$=4i%k*lnZ5S+2q)a* zbCaaecjWWcbnmZQB~H(p9~KsSMTyokSOW)XlN(&y^(>7iVFRa7-`0<1e9bS(%?%7Z z3q<7O#;^_Ua*c$_D=qJlNS^NXpEmTbG_^LD$WWL!jr^FWez@T+YiN3nrz|>Oq^A9* zg)CQoEw%~{a;c~8fuhWGH+HxeiAXMDA>_OVe2>AGxlH(~1w_gQ&-n0NvB9`p4!#B$ zO6LC@E(TfS*&$7LxgdJL<&5NhIj2@IEWMinwBn&LRFJBj8GrSpV6qq#OwI z?g%~FU_C>LkU*=u?V(hn#S0o&mEyJj2I=4(P4i3+VXBK>a(F%!8YzcZ_2hFu*aNzmE zAMMjg(OZk^0|yT8{N%TJVDFjnvCCpXZLr?Qh5+hfD=trm4$3|TF_?w9$TDkz%Kwi# zVZQE&%0kw`GLkxia{si zB>JoA3M12pdLSV4<-y3`a^(X|+pSVnIU@1dc6yk?5;h$X5whY=HR$}R=wH6Wa`l+r zBEysMb^L&<)1_)G8r)T>{eEUXx z`$l~GMtu85eEUXx`$l~GMtu85eEUXx|EC)9?Yqp~cbU8I@p#|k@xH_AeX)Jt-}t_} z_A!Z${{5yc@t@x+#XF%^-e8VYV^YA-I1MmVQ>@hIh z;S~qGuG~Jz8Y$BG!RQH4CM?7O2qzu^!eYVj;uR}LBrE5b1Z!k0a+!-M)BPnYgc(f8 z_?!41U~+6Ry(e>Hx!KAR2!#C>Wm60nXg|BYFx5*mLpW05o;a4D*8b zAZ`3j{J;ugiG9z^xWm35j&lI&iRV*UnH*IVj{wRSLAp-7DLlf7 z0`GX+)cBitmI=g?l??(YHyk;`0iZuU2FmVpGG)$#sN6r^iUe-G?bW;n{Mr6F{+GgA zWoN-lOXk50?&m0}8bqTC20=-%3wX~2#DRA&!7Efi z3QzHRae@~=h5k*v%?x7E(+8{RoLr#~LeOOa8=V)V3q-ZwwfkNBf7`6hKF^Yo_4)aF z&N4NoU-&6dCMW|=vG#Rhp&9)&+vZio#yF*ovsFPIk9PeDJ?3GM@^HCzQYRC;sLt~azL>FalN^=9 z-~uD`cjj(rc+3^4Zcbz9@iRl37$c7_<`)pLf#-f?=+M9IoJYL6W}a!@ynN_as?1|M zNKjvFxB3I>V)qE{lR`N2*~NrUPuK;1HgYtm^4^-!_EzcA?=0tLQ$2P?p7FTKc?Oks z$aL!L9rD{R=AX&UD!KBI_Z93Vm5%yp_O&Q@F%lO84<%_n}d2ghq zSfd9o8s#kFKJD7ca!&|`yPSSY%DkLxZ}41zdpoAaJVc^kSM-rIVC-rC{$Wzv)xx&_ z#ol{{HQ8<5!Z%1!5l|6O5KvK2stSU1l%`aX4pNlfm0nU%9z;QkAiV_XJxZ09fQocN z?+~Pi76_fRFYfp3{XXBj_s?^k^W)@Sm|U>#+-t2l<{WdZx$bk6o2KJ9f0&twcDcJs z4fg8DRo#KE5hIPo)xx?sh!zrG4!6z%92fi@*T<@&{M;uzI1i<@g{HIbCb(KGdLDMf z?|x*Zxbav^iC33IdE_Z-z7;A+*J8550-qzC1{ zT#@-ZLi{%fDEx83DuNWp-g0gt1UPwP2_6n?Ri47U22OrvN12}la$bc3w`n`>{2e9! z1q3T*f4rX!qpp5$C ziu))I{^iTRq^a2{vhpJU5b+r z<*%ZstTnr>S!re+*#=I~oP8*qSxx!k^9(dLbaA$SM~r`gLSN+{F!iAT$mPqQnNNm1 zc|i&~2`Ht-@}3MiYrb6?2HfV7J_+#0Uj933{5R%j{z2T&@c_;2>`8ZJ;IH#LqbiiH zD}U`$KKDg9iqeJje|rF2e7$h-??J)8aDVp?>YmAYH*W3Oc7*MDFAF%*+>Z!Y)y6dS9pX%_bSWm@zYMA$bA`_TwDyd85^QnA3wUqNO zjR&=qLoMY{3%Jw*F12<~t=&^)8&uiG{|?2@gbmFXkLe)u20zPP=N+C;F~!D3>GOi< z#z3aBXLT-mmV2v47yzYoakAF4KrJ$9U`|cz@YN|EpS}l%2#`#%>1X+2xOH0tI&+Jx zI9}l^Ec)zA@{+jeqpl=))?NF~t>7}%1Ywixfjq56SwY)!I5W*GKO0GwPWgUi>3#^% z9-%qrdKP%z2pT>MDBk@IR{{Q#==#P;r>uUhvt}79W50@a@c*M7eftmXsLhW%2?lTI zn^{8{22HG?oL~W&cUWJtrD3sQhnv!Tk~LT(6mq$-U}?O7@AC;(`ImZf+jfM*$Gap( zzQK{Q$@AheG1pjn<(ALHX`pM|C;fu(86?TTP9MrWcE}15VT+nGmcENOL{11fj3dRx zH^phTe%0nUjjuBMpjtJS4{K`O(P}6NfyoH|BtmR;>TcUHtgScyoB>B)YgRo@C9*g?7EDLBhqt1lfUiVdl9!m2hiq2kFn%lu@TwvK3r+H?+$nqE?&5b=f@DoVrWgYLtg8o(w$sC7ap@6jk z|Mt;f-#(|}C&f3X{k+0=EtgO`Pl0ZW%4i1dRFw@^!(0_tLmY(TsMhar>V~AP5tk_X zOW0{#$LomJh$rFZ35CX(QnKR31}A#aXSFS9w|Lq{N*<`4zWm9(2jP>S4UBzz#SK0j z$BskNgM5Yh&V>)7Y8;S0`N_ao^_m`+;tK|yl$uZZde#q*c6JVI!{Ua1_XQ1owwxxu zx!E9|%1LX})te#t93zxk>!(1Ta?cIL@jOb1;Q0KDUDKfQw0)DO=WxELq}|L5^ZMr! z>~pZSAbZWH#0o}(yg9WDFvqK>?qE-@iH_4|JqbH)SZrn>WL3bz zK4<&h-F2kTLD8%Zv~_mkE2L@Xm1eDrnwqPjzg1WH*Od}DMx3|cr+{_IivnH4Z%@^P zo>b7en|+Ow>P}JVg7RuZaUBD86k%OQZW`CP5X}|7-=z|IdAb@rnHvRxhaU@^hKuh7 zyWBk;qC_UdGl1^IGO%9a7;dKtYO1d;avAR2U4}vXBNBw2hYG(|*>{bsbQ76J$)Q|B zD1z2A2f;=hR@!+xE>B;VU2)#J$=s;e^y@=O*XP@DHzfUgK@%-XHuR?#3dA_mRmxbM zzb=EFGuK&ZzBmv$>VMavuJv#KKEb(sxF4>Ut^ro!(baJ=%wjCRFEtsYFKB5^h)XQB z(rXe^isl*>fw?!?I~Jb|k=Zfn7j06^%8(=H4o17{N?Xp{8f=?F*mCZzON9K=Gy7De zM>lT2d|8t-vtP=<+N$x35?!;@(st)Eav=7rcLm{{Wwfi>GS9TU0eUE~t4NRBQswt! zL>nA-2+Y=3vgGhv40R4At#dxr2TGsIc%g`V{Z*G5pr|~@E6{Kl*ukQHv3`C4*@%WM zR|5gW<*&Ot3w1um4eCBpFJ(6l$(;N?ac_=6XPwnPjE;-rQR0aExVrcmZjGJ6DJ4i=GLi?A z95h^{Rl<<64|ZsGO05TB(ex>&55wAYHy_zYviBBi?U@Um4tXEX*{@@X?%ns!2zVw@ zUpwhMKC+(Fd*M8Q!}`KC6!Sj+$aj379XRMRw7kt!^rVGgwvUbBj28u@a4j#;=wI=d za~-RzOUz%3xsS)PbiRDCSxc{lY1$riHhCNGjPnMc8s#$v!!KO^`tnlKJwF%YZ8LT)^4=MU6ME~?X=haG5C1ZYLB(pXXsq; zgp9%^NDuSwa?LdKgpvHx#bWR6FdrLI=-rJP`(dF}g0}TU#myabMoPrNHvP#EFdb*k z^u8Hz;pUSNyLw0z*YL{zq{l8~A&iOB0On}5aAI?M?`g6=aOU{cN$}Bdt^Ti%8a`PP zx=J#s$1p`hG5&x$v};w!P6WHK<}|i3Ota#gmfPB>XI24>XyTJ)UHIfd=B<|k)z0xp zA_sAKT`N7c#~MlW?T92R(1S$Z_fu1fOVxlW%8@CP~&-gFh#b3{kmKUdrRuEP0rI(0ESy^(+>odw{~dvOSoFBkiQgc#>m3#4)) z!D+eNQql|e@YrkY`b6tPxN8!Bk?oFo@DsNeR<#P!AtR+|?VdHmZ0~3f^&3Yqr2at; zwQJ95U{RvYj=Y)QFhlYg@2`2@W~XnSK7c+#5)~sIQ!ZireMbY)u9JvJ}hY>jU`4_p(|=r(;sgj`g+t94Bk5HYXJ^}Au z29BAz)P59*zS}>tJ_q0qNLWG}c@3!-ecwS4$Ryi~=qyM?E=F+Vd#8@(bl!;UpBi3U z@mIW(-00@}a}g&MRb=aKl0QWp7OzTl#QQE)5)c~;>eYoSXgh}HWURW||@eh84fjb*$xZz_Vb> zA`y^ZdhSmmb)BDhqb4(ZDxsN|6s1<>a=m0$n;G$HhjCLK!XtgnDLbZ{Jjy239@^oC zGhi<#mQmI;N^4${nZo!NFr$t+BK7n_m&O6_@LQpuP7KPwg^UV~;P|6iBv8hskeJ9y z46E7d=y)2%Z4k!KQZNU~hjOBnc?ahq6ZN3L-R&;l^+z|j?UZZ_O!r(28;x})x&_7B zrbgpQbFXe0H?UMUlC5Mz!n(6Pkp&6JD4Vn(Ai;eyv6Ij5CcFH%3+`4mAAaqFLc$(+ zInXKtc6&Soh~U|L`j+?P7m$ zzMf}i8xpXata6r6n8Fv`TrT8i&8bA;CO3|DI0q`h*3rEIFwnp&pYPjks+Vv`6eCDQ ziIsGtzDjvPIZu;Rls0*k)Mo(BTuz}cDRdhj@Ifp1+XX)Up1Ji*zJrM-_Ln0;>GIvz z9A(cmDmma0Ecxd>MJZQW`;tx{Ki}0(MS?^{pM90mUu6fdgxha9L@cxhIm>d(2r+gq z@N%a^5OA{U323IOJ&Txn$)J?OEx-X~{aAW$Mepcnc6Xey7v&R+o-d-2bomaFT}*cH z*-6k4e7Q7kYsC~|?<&<-hJy4m5}*S_^8IM@A>V@Ru3ge7f{@XPlf*!#d&etT+E}65 z1rS)&I~JUE(*a1xys(*99S08Bv*jD$K*-N_^QZOa3G!AHh>K_DrUItl0+=nmjF2li zN_&quT}CGqgo7t7vHfG)J4JV_gK#+Sq-FZ-XW%G1rjQncrT%Y$TFzp6t=2!{B)%>h z1M9O&^_%3Ew?(ZRUM~(msQQ>^=t0*E7vZ)dkyvHFIbGG9th%=^0leKFCv9t)49F*5 zbv^2ayx2JvV$Ut5k9v(%x3A@Wb@E=Bp}<$I-7&{4r_^4?Gt~hTTTL008<=?XIcdl- zn;wmrc9UKwgyDB)#u-@d+?fy)G}l8lSUCjL>I=60OgR2s+uaS;{Ngl``)%zr1B zvs8ld#;jp>vMb48-PK3*WPI&WB{Div4C8G4`OI`*dEF1qReR)l&~3uucDNjP96Sb% zNJnDd6!{^h+M2m6tcmVD}<_Deb;v({F@; zUB>4#SE^6xDXOdqY$%p{MVz4=0bw|6ApZhJuRO2LTo|zZLK1h-?{n-dsK0C*-Hppp zJlu+}a?s(j3_McX{bhmGxQB5B+K0$62(Kpn5#tJpcRHsMZ^l48XeE&kZbe;^$aEPg zRhOQA>APFp%@Q!%(w1}Sl*ZPXH{K{kg@$*9o^!dkc2`}oswnZgLy*g4zEL#Z&Lox+ zT=vG@^ErSrI0SLu{A=tJ-Ok4G=1VQ6QtZEDjam){vw!7=A*hu5sK%y(q z<6~5lpyAGed1*VvhHFVX&j_=@*Cn(w zzinSAw(vdh4TnSSykUq=*4^MXDcDT1*G0bl-@D*R0lZ2 zE0w^zLcD~62t9-yAQM{i2)o#61kX>$b9m6>JXSGH*ehtUTL%ZA2PFzer8S5Qwkb4# z`DIJodmXjWmt->$u-j>3t79K1E1y7LGSc4zI;Gs;CPriW6~Z=s&=LcBE31?-jkrS$ zA7v@*OakON=Cy$Hjyn=>O9TD9rFX5{*At1X$Sk8_)eoRg)dN$rv`N#-nUFUt5zS%WLP{Z+f z5_j)_JS(w(sa6tEwLilLiL}}r**;s`x(4yizvgT>G(o=6n{>5GR{qu$s&KotDddK$QLUmA;G<%78m;-{y zE6OeDgj#zq=$;9QJDnt~Az=lL9Ob>39x%Rpj<)%NqvqRi`RE`=;Lt{PTi*r zQY+`tyGyeyZmNpfsshz9P_ELb?_<;3k8&Ac3Mt5hyyn=BAcymfWcDgyyR|RX1wKE7 zBL~Czz#JL+poQP~LZ|-hy74I9;5jq%8aMiC*Wiwq!t zO@#E!fui-BxR_%Fzf*gBTXJC1^fwXu<^=yncG2U5g(gRX9d#qNWP_zUaLNo>M=z)m z^0!|=_f~#YvUbIVYVReD-{ge7JedJDtSrnYv)W?jVS-QM&DmEzyXyMv$G5h6tnb_^ zn>D*AojHBg{88VnM_&BHbj>TTc2@Qq(92rIEZJ}+ghG&Z%M^iB z=j$2-z5B^-8ySpReZ+nA!4?hI_-O@{E788%_%M8?Rpwp%wG)mFjE|R=f#)DZ7JD= zt4C0VL$|p)nt4S%>~vo59;S}#69o=_XmsaNuDcF3mx4b?vicP0&@tq!wNjske%EUX zJ+MFcWX5=fk_Mo@+_^q@gmO1ek{vBibiTiMuvBKv8fAsV^eqilfi7u2L-A$&R(g%1 z1dx$8KL$UWcJc9>uQxMX2Rpa^>KO`d=QB(fr{5f|Q&>cO8EKx;Bv#s;3Sp3*e#E%F z{@x7UbWW6zw4EV^$e@4FwIoUIf;+cp@Hwvc4vBR+9&&G|kQVtN1((E|)_0{Fu)IR8 zNi5yOU2pT!tQDBC!#ER&Jo~|x6NeQwFe3r;}l-i~g zQNE{y>0|KO!-T8fV>&#a;L$jntIdR%9ZU29H5?m86fkt90@p4m&STBYo@`eKqjKUv z8LzB7iUfd~uR{%U$I!vJJXcJ6boUlc*D%NYlGPPoM&{quoX7G9%p0?pI9T`O)1qY? zpIc>j?z`Tw0PF~JO-ekPgGW~+1S#=eW!vT&*;X=b=OdGxfisB|S9wgyrD8O6^Jzes z&Z4rlL3*Clft!khL?op-s26B;SzprDKGg(pbG$`t_D9B*UVuCr#`!St*%^xIf2zS9 z%#O8oVK(#)_&>h{hc6AuPV=xslJCG2FH7^AUw+bit#g_oaYtz0{_tr87YK~I<69zV zzeoPLtffZta==V)XK43L{|!J17sTtmR60xVCIK<{3X2`WmM`F)RBu|6r3|}>WhzVH?sKbIaiyqL2&=nA z(?k*c<&eH1xmehV)B1%1ad`BWJK=D}oP5owL_f+Km0uBFl^fLv%#H;I%i_%_#~4MN z^BqPMnEO?VSYOegt%%IZjwnlyQ5;+Z2zVvF&36A#Oty!iHA zXek1qQ#Ll-->4?~a)yvjkg{qONm05=nFV<3`r!IvJ)k?eGTkF^mVB59rC-@h)6Lef zI($3&b?i52_8N#|c_K0=9Kh39$2Yt_Zc0Q_qG=%zZR~2);Kr7zf!>@r|wwyM$zqjq=7!r{;WWd z@l4KRCX+rbjyb%9q?6I z=3P?R<*o)_iy94yy93JG)Bjr>VH;$290J`<6s3-pXD_nBJvVuCY!kI6kr8?)E2*_AE=we z{HTA~z;V!Dg7ZnJ7vrEi55>8HJAOjbjhA}(w%A1v7vj732s?(0p9~6@%nCH(lsP!3YNVnf zw%lp#C#wSP=wR^I+!w=u`05A1^+>nXg<|^V50@%2*5XJ_3UQy?P`}Z%BT#2Bx_>*nOEY$^!KIMdGlcd&05a zu)ZMWqu$mur^2zbwnMVvlCyoa`&_~bg^crbKUfG3b?$vJ`j^(LQ-~kms~!EaSae)e z@k@(j3c=W(QmTkz{g8j`X!q)@UJGJ3JK6_BAHMytWYcH;Lv`S|t{Tl&&)B6Q=;3wQ zidQ=IOUX^pWD1`mwaxe9V4v@2B;97#jAis^&AbSWi{xHfWe1u@i6BkMVWs&4L&Z$y z8;s3SXC4<*(yUWPNL}M0CreJ?QD!%7v{%f31@!s2vJ8OR;KtK`3%R0Cr!6s z$m{%Wm8)#9BIC`NRw{2*7P)lH`S8J4V8a4QobAW7X-BR;a@qHW=f)K}W^kH76@;KK z^u0~`z0T&z+r&laAcNI6@rE)}3MsVOf_KK(`|fJgHemD=yI{k{+0Rv6c2V3#%I~Mi zzjEQ@x1lsT&_$(h%r-$c19-KSMFG;n8a)=fcd=uf5R9$M5c-5}s#tb}L3KjI&*T{B z$-Iu1t1(EVRo-u^#1pF`p^u*h?=24Hb|7@j5?bjOSx$I4zTqy%Ym{FF9riCv5=K87 zRyz2u2CXsI&4`ygJQ-42xIXDh!C|SL@nY`7dZ^izLTo7Kla1A2lVS?7n2_$=0!%F$# z@@H>rHpU+3992YAgHlv=5WdsT6uG@$;2C^+E;WeLB!5rRk>B1#Refyx{Y0@{>FCQ_ z!}1Gg@bhVb<5xo>T=IU#lCHD$60D0|C%9C{1NV@WS+7u6JK*K(ORp0y^4P%n9No~^ zx}m-3JpZ;#axP|kh@6AY?xKlSEWWc>?}#2Te9SOO`6F+W@;pW*E^Yfr&fh1Fa*EFC zwQ9SKp9(>o(C8~1*IJ3tEi3dMG=FbNs*wN&4$r(mf3|hrK91^t9U^kUGy&>YyM=0; z;@X;Y-f`mAv-Rv6B*PcGfb)~e5U>p2f`73=f(tI&79(8;%Hp&(zQXjey7+0PhrImS zt#-`8DR8C>t&J2}?#^u59m5LMbM6FfV1FLkY~y`FaxwMLkfxj3&L5E2?=eLv^E=x`6PIvsL@PHD`|d?PmHGV{G!6)UrUT*%F@V{VB$(hj znd;Eg<e9j&XX{s*% z*A&@i;5y&{*j-K_H`SN}C*xw2E-53=a6b^t2oT8#c)08|QC`}Kq|{n9OPOPb&j8~G z{cV|_7ln-nWE#E59~<95btm6OaXat3)iK`E-&xYh#(cL16BUTJSC*ZaX^(>Hrma>F zxO8BO!u2OYrcNnWJ^-9n>hKgoJfIluzdOH$@#zWE=#vp_Ajcljg_LfgH$LiROV8|# z7_4kb`A)I6l*Jse)|=p2bKW%COfJJ`&Vu0%LYi|-cooVGFP9Ww@e+fZ->uAay^j%0 zIxz*Z(%`z|tjNqG9o~zbdLy>d7(6li!;_#q?|^%l)#KW~VR;v=vykE0*0-!8h|2?x zFxA0gV-j-wA2Yh!C~Fc6J`^V6_geaeM&U>w-~86^>K{^d{Pzx#Cp)xI6^8DHH&Oz; zGBPx2ZRE(meLTr9Cw9J&{rk%|i!DA^?Z|*=l|AkqPUzVd8kI%(;BSS?;0czF07$~u z!{?V(K2hoAGe$(%+-8cwsr%Px7J6wbrl;#fhku8LO}T|Sisl~t(x!yWM|!Zqn9d%t z2lps}vsciL*Z7c`<*|C)akPbAwuJ60az>{!IrpHT5NJQFOA@u#7@a!g>bSwFu&Kyz zE^^Pdhvc*z2Eabc4GKeC#g&*A;)zR*W&qBr<{oG@IN2h#pE$dubgHw7X0FdN|Cb!oKE?dv}L6h zXR#mdR8>mBV$9OoaplBmqvA*IflJL4Lf3mi)Y4gy4`nySGHa&KV-@rf$1e7>gn;ZQ zA+WyEWSQ0KO`QprPAImH8PQHwjmOJx>{{Hr0+c?=_lSNEBr7=bDv-Ym8-9KmSbwlt z-Wbp$zuL7?Y$R+jw+SfHT&bOlx4?C{A9{J8%^Yq)Ohs%FNqjp#YbT0EiT>N76<(PR zRj=mrS4LjT9mTW^>MDGU-YCWMpP+5tOp~W%>Up&YUExu;4=lG?A4%&NDfUZc){FUD z$5!IKu82=IfZ^GD+_im+mgo-?aK*q|MvD@Ymul%jsC`!~L^|jwW4S!n3#8T3IJKVy z#G-Bv8YPum@exfv`@AatKC0C<_s$Z}a>Z;{&*MO_mKbkAYejkqo#=Hu#n(i-?(#%o zXG36dfYwY-xu$>=$b}Mm$vT!DeVr&yN&L&E(Rr`fIQoW7E~_Q^$;fxM`}bJ|we^%F>QCPJ_pQh;{A9P0%v_Q9FAl>?mlp476`Pl6kY)pl|V*v`T22oL}e1 zEb@`EtP8}ac7lT5dYJ%6yos(eY$?(iV~OU5@MJ{y!cnx&q|<2rhJcw&*h1Awn{0Ba zgKv&A$!u}@py#%E3sM~AY6gpjTl1I1X~T7v!x-^fw0~7J`S>ks`*XHesmwCHVgqp7 z9vl0-Q9Md8vHGkNde4<)x7Y;h0PD!9uVXaG{%(U|GyF{6#Ngc|(vh?k-ZIrZxk%N1r#0_RDtn+vTq#E zrFT`H@|rkrU3*1bYF8PxS%>h=66d6C)({}A!+n>P~Uo%L%*z<0`1jfC#)7N+H)IJuh_cZouI@K zcI;4@lW|J7&%55tB|l3$}@;;?hbAg!4y>fNJx`HLQ59(n3RDO&9DDj0C|!^svqIN1jUJ<%6s#kzF`iQk7>RfmZdI*)Y84Ws5fr=ykNOFn3Yla)lg~`3gF8(ovn=C- z9jg@-0wi_j*WROMU5R?`&(e%{cupi%3<-B44P5P$Nw6_!cQ*Sj4n9wok^p{vfN{QG zdfRBMeF{~zD_oA(^TD7pYBN*|9FvO@XKT>B2CBfbS3OAQ-o^x#@Qo+A`@ zC??||+@L|Kx(H>)e)m`J<;GP6|YOpa1-mKyz7q^HrDv*nh|l4D2M>9vZBXa zD%n=fKO21%l(4rZt;#r(r-fCNSfvE+eWb&9)V9!w^H8z9ME&}JSbqwk^epN7)8F%Y z$alw!sl?UclFeKA<21e%JRfB4L}lm-3?vwmIxcea+sofC;xOd2BaSC+Ji(H1gO`NN zbTF8f<_mn`E;ebD_R5aj7`}6jkEMVWd0D4`ug#y~TX)6{FT4t0|ECl!49;7wFU+xO zx?vCs18@Hb2*PY!HOz6j6tws?QesaKA4b^?KLon-9F;C=4tFMHFMG)G54Pd|@>Dq@ z9oQB*Z$#|Q4hyOhuQ7{l?pgUTHOq;~MzFY=OAJD^jLQnrU`HZB#Ij7w!Z9f8m%Ho& zzr!eCU+V{raRj^hBsPDv`EtxT?ateJKOc8 z%(q>SxayB`_lL@LM;NQ$PyC$!i@pm}B>vW5c;Lp$*T`s{#`I5Z6e$&$AtoCmJdo{r zB<_(BSo{T~^#Q7xAb4k{2qZ6c+-o>mpw7$BIM z%QVLH{Pn6Y0n#)396G5L$>nu%j{DD&107J;tfUtQN=Q9xH;9knjW2K9b9r*>7TN-T zIrSRtEGb+muSKO`ph&Pbchgd@12;bf8O2LRc#d=TqG#^Kq} zoymsHjMOLhhu-eGC z*^x=v2gKLMIis-d!J`9G|CfMa*?KrydE!eTHy?oyb>0Tc_oc~-7%k9irp|t(z4l`? zT{$oCYUxjbN`_3^qT6q=ys=i7uOG(~lU->UvyX}sjgP@K!g q6YBMm}S#YUTEP$ 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 literal 0 HcmV?d00001 diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example3.png b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/example3.png new file mode 100644 index 0000000000000000000000000000000000000000..c161192fa04af437db81e77612630d6a3e92de17 GIT binary patch literal 76688 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

Q?*u1nb~BmI*2< z51|lCA}bf)5ZJRS^Lh$(yvq9DAdcsph?!+;fR2>J?_LsP+84uP{B>4Ss`NPyd|)i^ zK3CJ3=_YD*1g+SgBth38v4=X_-w16fP(QVQ2)!9~L)vHxE#F013-N4=lFn}|_?qx$ z?!e`fMY0;l>wH?bWuj?9~#pMt^uIHG!>4;#BTN@2A{NZZp?Q_ zk}gLgn537#6+(CR!QY{*2W9po=(q3h%zvAgg9eY1xl9L+{Z?vF9W@tYvA?u?W6u*4 zr+r4G2=aSlgJRzuf0K7!Z`r9bL)-CugTtWIfEu40Af0^f8WH4^D4@cE7U^rWYw5+a z1#mKzD~p!^1|>N5ok`0~Od>wZTYRBLDy&wbVaxHsleUXx?RA2 zw1pTi_FGZM->xsH)o?qV5<-<9x7VkDD;STlBM)=4B+9{tgEw`Bmv1iL0)Pztho@C% z9Xy@EDQt_)3GVG!$UR%1o)NZ8GynSi&Lo6sLw#ZEnow$e@$uz8b5>=2GseTPdC&A` zk`^vvltnuI+YxoD_v{r;OR>ky&tE?iYUMgeQrVp6JRWlvkc>>iSW4+di zFG95%1};{_n|ZuuE*~76qppBTsKzn&lUxJM7XcbCPVSaA6X)$U&c7|Kt9vz_;4qF| z^U{@PT&Q@C(|a1B1d(by!vH{>YlUT8kX#~5F#j7>F69S{m59YDOmL!LL8|CaQ7Z}k zOP{@W44LYaz}4i5xV75e6unUL)H>@-6#Y}e2ZMGzn3}u2Lmc)IQ5Yc`oGLIN#l4MV z>^!>l}P9D zwyA`%7c$SQ3)>tGem*+}2tvYdBs)L_Iy-dZU6rA<9V!c^Ak7o9M?RaCB9X?SXL7~V zb-V?h1S8S+e)vh=c(mp_aVHwE^u^0+s=J4-GCAEz-HLsQn+ElFPEq%4KaC8foeit) zZ+{yXYfgrYpUkJ4?KO_7fgA

D5uBPfTv&bz;mKt0U@*Qht6X4A;=mtWh4MB(3KC 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 literal 0 HcmV?d00001 diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/thumbnail.png b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/images/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..2993ef351f64923ac83484b66275e72422f1a968 GIT binary patch literal 66135 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 @>uF=v zuE*yD9mF0*LUK1|tsY3uqD$NQxbc&Vu~?U`q2*dwSm8)tc_0KX7g0t7QU% z$6^r|E$goE;wLZc1cgH|n6>H;Z0MmZu2o_x2nSSBHqC6MO4V>4!#iF=5KK#db@@f~ z(5094XSwim>e&JF(1`C)mcL^$1Cs9*KdLQ-kY0?%K{4F;Ikl{CG&Ew5I-H#Zy?>)& zZ51fbx^zQ{d73alzdOpvnze+5HOhyBoc+GA7}YKho{1||7EnZ8y_tH|al%TDP@>Zu zM5ihHd`qAxrxyh@KwgmPS&}a-jFsV-4e*5}q*+aP@lyXJ>`5X)#^uD(snHOEkuqrM zRKXqh_T8z4q8Jlx&m*x2mb}bYurR@kED$38(!gi0SJk#xkzVX2W@mZuwjEBz<`B$z z4Nj2b3)ddd9e|?PlM{)#{Z?iGw5aA}1wFccXtWpx9>j39u^`fmqA0!{XjsKLmpDQ& z7jDNzgR~fyf&_v|f5CH=n5uuTp~8dbh;=G8hG3X9Pdjhnj{EveJD@1xv_xXorx{)zQ^AL+*&Z$Mh!rZR1K#4vx1D{3jB^2Ezwl1He zPQW7QGnH-Y#+(N~LkeizNQhln#hwla+enpeJ=@aa9QI9$C z3C;j!V`HI#F(VJ&Aa&Ql8iGlAUS|3jYt`{<>@HA1^sx|TLf0pxqlw*$Zh|)KL5i=s zDM4;pWwoOfieeU<6uyA2?;9!pMn?qF3IO@9{JeKQ2)j__Z)5RTjjr$Usjx6k!)j|@ zq!-IOjdpG#kPQGxas4=A*JLbc27&n##Un(_&X<#`@ZvchIyR~jAATh9;rH|g0w6sA z503~mu?5offvN>Nk#D)*rH-2&>JE*Cq5_KMs2>r5+yy|c-e#dA0zCqNF8=xWBjEKI zHVx7yW92wgk4a%+N7~^mFd~pg0LZ-@aULSj*&stKQcUmRLF{X90}}H=3NN9*LDDwr zch6HOivO0HJ|B{k#5nFD(dp~J>3MG+5n^7x@@G3QKAD_BEd(0DV0?U$9=*?7eDyt% zw9)(QFVcY7+L)&^nn@&u1|q^BnDsE8lJlS)d?|Ab2-zu z@Lm}L7pP98BHo+W3?r{$;gtXc&YUqDP7BET?mVTS5j^#WZ9s$_)L^iPhDJEvXSqm3 zJ01AV@6e+O`Y`KWmpkHvqH4aWnq5S4vRjR7sN-z(u6{nGBdkn_ixc5yCc^zTEiadj zFykG#YeN@imj1X>1Oiw7luVn1mE+KVxX6u%wK?4<2KIT7k7uX8qH%>AFGIS%GR=ig zK1c6l0gcG;pXFdh2gwy)EhW-5`X>J34bt(A*_!17$~Zr@se%1lxY_>tm++)p% z#(JGyIp6Hmyf^#iWbjDF_*<6Nwfbwp?jd6NTGU}X*K)4g8$KSWe{W$MT3crLL%ctc zKiZeEPb>4YiCS;w6PFnOS|?J~7AN&8t5?sBJmpo-T1xl1N3q{X*c2^Ru9BT~f^+TNN#i@-mw zF~~|*FE@Dr~+|8l@0u8;{29S1DW@jQk6RlpM$?C1RVFaC|kzvJWIv*F*X!~gAC$eenL zXje=F-A0+jiWf8$_BKVvO3l(=deKlZ%j2TL-)N?HUa9y$c;!Y7=g}^R8PTNn?GMEut>_(wKlp-u2+|Zi=Vj7pfG|g^k_~ z)a){*oq9Q<^e#fsTcafwCV}pg=7aKec^@B`!YSel#dz2bAQ+3z%qTlh<*c+`zXWtn`_BWcx zxt6cY#`!0UHIlK#+fch%-|17QHMCuJy{>761^r-!an&nhs=ZO>2*P?(O_As96g0yA zdUCTZY^|Z?WGuB>2ycp!rwi*Mtu`NADJrfPcekX3bn@{4#!INhC93DEz7$QZzULL49*sZ@647=7+PytP!bWAq&v{?kVcN zW>h@zl$;|>@_EpXLGwbT3WBL&rh2gtM&RlBB<5qJ-`U>YlC@dfuL<@>#rj`<_w-}) z2$9sGqH8^D1tClJHgD9ti#kU`o;Z!B7%dcE^J@f)@vL$Ek3=)X1budFpIvy>?h0GcT%;ORss~V`Aua zHakDfsvZYdPe5mLEF>uH#lYGG31f;jK@- zPYT$r?zB*a9!$Gm6CCHkFX7foFW9Zv1q_o^o5imWLz_<~^|pQ&|7>$ju?~GM`M&XB zTWJc}giAg%$;{4zw3EzEEOCMn{Dx#~mIm|r9Z;NteoG6R!es`pKl`s&HxdpWI*gp) zW;of{D;;|bWnOfl)Hv9^F=tb{hu`!q=*4qfRtQ~7H^6+?{wjc%U>441MXGEMyxuR6 z>&e3;(H8RJx#K2|w^zPaEY$d4=wX~>CX?END7h8_Sj%? zt`OPiH7fFA4csZ?+RMnFEe9>*6?2GW;}UBznz)9QDGD=1c3lZXa1vze5qb0`l2`H& z{^!<&_Ni8K+H8<}!MBMIDJ`OKf|N@C?!^-YY+~YpPu>eP9Q*`xnPq2i+&)b0Sb-BB z9z8>t(U>P#4c=6htqa^Fo$#67^Btp|WY)R#&jYW9M%2DHF4#Pv52m(!eXPPckekg!CjSBjyfwefw4md&)Zc7O^&#eQ5US zZXK1a{U2O-r^$pFyX8sR&hDlTL8rpxX>#UKw{!zpvIWwO@(v7z zoJL1R3Kb^jaDB)d&yGJlX}JCfH+Zd?9vO+{SYP0DagI31uDU?q#D$w*!7O|O{Oej& z@VJGVt<_>OKRm-Lvf$E;&YLvCazRb=ieMg3E%chhFDyKWZf)$m8vF#Z<6NPEV-~d%F8y9c11YZ_74^2%_5FF>*X8n%{Gd#r zm(0o2+4LIxFBy{UqvqhrUffFeQqpfn|C+l!l)wD?`sR1a<-A1et%HL*#s5C&Cw(5r zaY^%xyPK?A7Qug-rF2$%@|SlF{oEFQe7gUvTmb=T$*>BsfV6~pZw^d*HQGKHn+dZ@ zu7aNk#T15fhmF?^$(wwJ#INR&BRTIqS}3eCTJAo(xy<=FV7ibt<9pKY-ksP!a8kVA zD7PZ98OiSuW5qW>qquN|lYH&F`XO7Di#JL6PJ3|r_5lkmsUsMm*3`W&y&V2}c`0qv z3L9pTy?&44JMEwIP8G91ifj}3DsO&L`yExRm;rw~K+D?j$15_eInZM<$mq>G+fr=a zlixJQ1hbsx`xXg?eVqY|@6$tX8+m4C-@DMo?^sv}T6Oe(XcR(X98Ndp=Z=tGRd>-m zzu?$8?=%_O)2J^8V12!HXRkoiqQUa;#HFarqTW__3gII2S?kE#8-n3*uv0&5$%bcg z@)coZUH7GQVgy$<^8-l~?G9fK4%2fXW|3Z=dAn2b@b0H6C)rc?`(GX`(S>vT;k#R2 z=^;{v|Kes>gqn~EYsp`HmA;=6^z-q?N6M2%yJNng$Q>2S&L!mM?EN`2*^llSQu)k( zc$D@ILU{0RX3G0`@ML6)2U4pse&~wNZ|(5a`+qdFhR*I&fn`Hec`qUtzP69re?yRW zKz;Q3u2e4PY*#|ZW@66)MJWuT5+z-}QCc*G)e6~G$=)>cic36ye(VOV-}w`IvmIwq zl<2Ljm%7#C*YN1VGY9fFrT0t5HHtm+TtvzP$1KRTiuZn*O^UQTcL*fYUq`I!>@9UC zExgwAUVi8hy1~TOS@`_IW}zinI5DfpJ3lb>x^ zQ+H$RN>i()?t=(QF7aZMqHC#sfM0}gbzNQ4P1Y=cissW=4XIn_5975 z9D^;M7y8p-g*oQ)y6hQi_5%sl###>%X3p;)B%g#fCNiO=nWrvE*gHQn+CMM+q$#($ z;Y^=v5bA=+NU0SQGlG8$l2nT-%0OCzrCj}dui$6*=Ztg}t{i_?1byi< z<2g7OzJoD!82+I08zb1C9=+~%G9}|A?GHIvGN?6FE8$>!J6o$GA>(iwY-eBrn)(tt z_dXjT?qmlJh}XqnS8QaCHn`{Q5%FZpKMH~zn_6ai&d`leINBLkhC(72bLAVh3Z$Jp zy}3=cKW**A6uC$b)`~tTef0AqqTsk94Axx`@{CtXSK%IQiFJuGo0YJM-X#czAPj#K zc`^%2p00RJ*v0CqRfpW|Uf$aE8hNAXZ9fn%s_?ek>DdZ1acrXhjO`T@fh1^-b56aY zBXD3bw^URI0lxN!8>vSg=-dQVQz}MF%zj9fouiZGmifc_!U-eG8$ySy81a_q*MbjV zgfX}AzR7)R3Zt806??wA75&ZIEqZob#|1}Mt(TCm_tRn;KL$wN=$*O*wloaF3dqv~ z+Vq9F<*idM>H1p|^(sGK#N z3k6}+H15o636)vr^G8PFKj5g2j{`k~vv=n-x;r!c~+21o5AOPpQkLBPRb z9^uHBpLX4@QA+fgl)7!?&vj!3P&lk+sz*mC!-Z6Bg;zvySZjNQnwL(>McyB;n?Ft+ zcxYEVm>nOVoTY{i0UM7Mr!Jo>$4^z|Pq>fTWPZa4{C2Fun@NW<^5chFBj<&vdDa7F zElr#nvEMD^f84seGtuL_kA>MwEcN9JWC}7)o4-k5EDA5h+v(Um!A9cNImLs6L9?HN z{6MHzWS+dQ!^V%yt%XLrK0TwQxapV%lQ~;+PZdFn>@d_03xRt-3J&XT+ge zLB!I*=#lArbA#_>W;3D$B^(v~wP`mMx$UC1$3;Ly$Ro|m)j z#TmZM7lU#|!d+A?;IuPO*nys032NpWSr!tZe$hQ157F4Su8S2VNw7|Rta~B&FsWi8 zU#~0ky_BDHY$WZ?*T#K^O;5r693O26{d&Z*-)vVO;V|{_Y@i!2GkK69_U~rZKkFYy zb@LRBHX^a9-iKluoFefYhC2n(i-M-zI>+Z8_8o&0jpMkDY*A9JefznCt}*G@5#5#W zM7H2oRLOx|;)%K~`Cmur0hh6j59! zD~if+WEd}Ww7U+z{kMd!%gQWHEmKO_{@7O8pVJgMUM0CA(yko|eMTjiYxOg8DH@v{ zmuA=ZtQ}X#qNt9-yWUZsUkdybsqm?W?UJ=uvGPG1InG6B5HbXP8t!}-8o`(DA=@!S z>9x1kFn@rjxip%+o-3V6$+%|AbqZ z#(T|?&>L@DV{*})hg)RKiy{5sp5prK$ilU(Lhx}_kwh4Qqgrad`svBwnp&UJ$uOhg z8^bra&F~tmX}3wKvCyZBLk_p2)}-STuwKqDmspS$e7_UbZ%{^@gYYRSv4a|Pn*~Yg z=%^@lG=DHuNeO~B`^3nFr&Q7Vn222+C>Xo}iWYAa>urXD&+4Hy#eTEkqigH|@4tWX zZ#@1TAOD^W|6U#bKeQIoqW)M;HtGn+=8uRYhosJsB!R^|sboX~{HKltx^h`RGCTZ@ zZDV-T0~8>w%$sz`2nAwa>-9XONWT--r8_3wJ-E1a$2uvsNsi z88)ec^qO21Wh^zxO1L4w*hnpLPn!#0YQf!I7_UhBa^b@?R~tWnz&7B@E16LJ*o(`GaCA3$QXOh2N%}rg85v^+!#^qKvx%>C6 zdf!+G=|TjI-(Rhry79Xr=e-StxXNdBR{Zy+4f5UYb z68ZYzUP}BO(%m3M>-S?`izb_E=ppfPl5Fe8SeKr!<72QeyYxPkCj^d&O9ZqCu&yh< zbuM=PZ&VLkK=n|_no9(Pi~ryOG_%m5_xS`UW21<9a+Bw_G;vr2WA@lRSXk-JW>#wS zzDV^N6_M4lvI>QwDteskq>+URD(X>DDFAIwqZ%U#q*wgwl-GaFRRD7wT3+hPxaP;b zp)dc7cEA{`+zP~gFao+2=Tvab34IT$i00;q=9n$^$N)b_VkZCs!Hh3dSFoao3V`xO zs|Ii>rDU>%1zq3%t;^uAIWu4`<&88iAm6AuHS0q#vW8ygRDrn!W$wF~XNb%kGr-IN zESFlqauLwoB$|67bcBQv)>sZ@Ns*gwzLVogSeK!vFfJ@FaH(r_Z8Q-(J-_nv>R)rE zz+BgG9-tZhCvQd?@Mh*z)n3w7-Z=vpA0wsc|EEMCTq?+hJ3I({ppIMj-tl4hYi;4fla}7id2Kb5|KiO+oCL`h?y9y<<(RO`m{2{@C#Z<{G=J zMFF>};AI6b7aqlz9X?CsPO*@XDgu}OlZvF6j3k zG{-LPMoY5FXBJnQDMGFM@gGup1vGsd_~UsoVQw8Ga<31`yD zA@#umC+$815+Tc)>z7PMJUp-83XS71^1QeIM&!hWTAndY<>^{eAxZ9mn_h z9#4N%2lxHDUiWoh*LC0b>%7kM%z)i-9CAe0S5y%|Rit&DS;Vr)!ECw=nNij}t#w~1 z8zUuCmUv~^EBfw-lHEk#$r`tkxsX+>Jr3o*)`tHR*`6p;E8Q!f_8T+NDv}@3ig*&Q zx#t$zCAS8kDi9h&fHIAuPr*;{pVv4#0A@xDJjR z=HJn{e;l!)E1eVfj9y{G)|+=Hp;t_J#~|mO~G|? z$&v(LN2TpeQjIz7chOHApY1sjOS> zV}99VBlUOPCKt2eX=fF+lR3I&t6WX0F-f94s*_LNy)Dqn$Mn!v1kx+)YM8?|QW=2h z#jxmC;&iKmqOxcJ(zaJnhKQ1~8fq`MnEVS}Clr~B`~$ll^d(`}O`-SMDG;jB#KcE} zt-gT@n)^b*BxHWQZ7fi|b*?zBX`F7MB71YR)C_9{*G|6jC`%6CKTzV-*6uWJ&&tJ@ zE?f3OAh1!JZzm|!a(DP0rpPQ+XmOw@j$QJJrLn=@LJB$Jy+~m!`^Yp=oOm$BYrNL7 z!}M}N)I=*p3qlVK@mX_3%1A;Ab+4Q_c(E$fs=w;Xp|%T3tr|_&e(D!HoK&FNM!<6j z;%*s9^gdCPJlnqxz6tIW)yt}x!zS~w*v^0;J|&hz3on6I*vWIn z$)6t2UyzxdVQqrH9E3W1_mnMO>`JRtIZ$|TQyS3|Df$*oQU9>lM{T{f0g&grofBfeA3YBgNOb|>FjyE>Z~vEC;^OxWFEX*Ks*<_qC=dBApI zq%KSlh2HO%&3TBWX#2XgIE@&9ma^UWWjuS-LuA_khh23j zc{ZGtJL)uiolTE!{}-#5*VLfXUbqxNpo&4i4$_#Tjm`9&knnmmh-0hf-(kD?P|AO) zm;dM49Uh`%>`Cw0#ZS9$4s`zj+NKBQV}Af`hcvni!9}3|!60Zaz#;W5!>HgfMh`Eq z)k5EC0E-kVpLs-^UI{+3OJc8P3pi1PpsjDFrx;A5k9D^u@wA)()8cN&g`FbgT1Aq` zwA9l6~ zM4!-=OGslL$xI<9{u}d-v0bO}%ZnFjNA6|3x~%AMy6nWk0;W+jKQMnzkS8#MsG_jH zK;MnhB@12CEzzYn497$fEZ)Fm;qR_E-qz}t{-|~BImQ45Il^5x_t>@&llD|Q014k$ zGp>MbjN^5YduGSwiMCZ-ygO`2y5i*j!pQgQeq-eN^Z$jBtLFa3$RGXV_UB**3QW|+ zYA~ax)F1bK@V|RA?N|mAVT#&%Uo71tai%LZ*sxn28)sRuVw24+Z-sxfL65xZGtUZF zR7)W2WcRK9Fj(+dU|Ok{;@9y$fTA{u_G1`su>uWjczBDcp2r~?K5_Oh8gB8aYRfmh zP#a4#yNQY8xAb%pQvl`QxKN_q@{k=P;aA1f7RS|K!#<>AtIb3+Zum-pkVnRVR=Y@* zS)L#Yl16OpLB!Ycbf8NC7WM9Q=D>`^*e@%Qrl$2&sl2%Fg8>2}IX$9~klxyry82O< zi3zrjFV18Ejxs-UFp1WKz*GIU`{UjVre&`&sZElJ^N_7?J1`8rKWghD0-nZIVz3*Z^3O@_f zjYliye{2V0dJ?s%S5E1B`dniD$-#be98|gQlmaWQf(CU}Caw&$0?#OJXKmEfotHdYu9g2Aqr&D_bYFZ*TN(mZd z9TzOCQ^UIbH(EVx?I4!t?X~LrR=ESyCr?2S1nvz#CEJueUiq-rR(X0Vbf6&`z+yog z^k_$$>ba?XiG+wn@ZIiGqJfeM8H73=3<*SzSLrqNneR<;6Esogc>Kz8W-&L|D3Npb z^f1&Vx$kK_;$UmfAm6fIou_@lSR&_sul0{jjPhHTbV8F?RTwE*GkN# zgT9mFI$KLsTQ%|GRw6u-mi?6h<@rEP~GC2Si8c!!BKC~ z#lE}NpK93~Ol!Ni?Bc7Kdj|=Zw*Q69h~pmvca3V0-sS(<(>j~cj3 zixS<>xGLgRtQ$7&eSN%DyDVCut00i3;L&FzzOgJNkr3KT4xX^mRrD)KCnTEYYCIkr zPZ=0=1tsd#Zp1q!n~x25REMx4*wr~Jj)K7u)#PrPzzrnuXaL%L)8U_JbGUu7z0GGD zo{p%v*_))dwoFzYgM_ZOd^ZNb=*Xw7c-fr7@9Mz5C+$FFyX-*yF3lGgjg9VV+I}oF%QYnWC|O!t3HSs^+xM9C(gg4zP*TLq z%pZzG&7qd%0lfonr}t;2Vkm=QVo>5$vy{Gq^Yl>fTQMD9Y|nz((PHZ(R+#t)l7^vd zxPNacI0U7g!}F6OF(#3qzfWEXpU87W-??V$ZYAB=o-AQWP+aXfQ-ERKmQhhW7FBr~ z?0SLNpe4?IBx37_J7ns`aot1(U;j;?m29VEn#gf2x|JXOBXBK!Y0zq-wQT65I2D{g zfqq&kCAZ;!E3N$I{VN~&ac0kQm=wm`rx)aQ@lB3F(1n#sJG<(SI0fg?(O&Nx;5y4_ z&jv$SM9l<#1y_1rE`C}2@dm?k;Ww<@e4x2U8nF&b)WDI#jp~3BeZUtOf?#!+ke6L% z7$=jgW_A20IK0tSu)e+U?d&#^mUJF20`>=NCh$M&l3&ROyxylBK%_5vyWrXA^t=6-&+L;Bn0WE*>Kg=l=lV!sA>*^ttu$yV38&uP?V^C*9FLx-wg@6m2@uDJPDJRo|&8GOm-%_pE<9Cg!7=KQ44L z=*dsGY{Vm|}cky5)^`)0{+G`E0He6yB66cS~*lTkYuk>)Gvpz(C#Twt3VR^jw zkm66Lq;31FBIR&BuD^B`wRM{rzGdwHSi44!{^Cg2gs|Q@v-|7)c{Y>4YJmkP{mR9V z;{&E(k23Zsfi1k{VSqJ?Xu0WGy%>XQ;)KGcobW$O_4pLQ5+5EQo7-t#W;z2g<1@HmKuzoc{(%X13+`O5ei4?L0uKHxa3xn2 ztEKeXo5csq{I$pc%dD3Ey+jSwk@SBO-Qt}qVDB6Nj?TB!qWs__b?lb4?raSSKn166 zSw{gNar{~2e=>Ba8pfCAO{D-p?FddCUt)yS52bc9{s;C9o?wUMp2aSnzpeMm1QcCD zfEMRM6G$hKTKofB*8`~LPwS4?K*}>w7?G3m-^Kr?`K&M%u!f|-sgB#E7PV(V$^_72 zme75*!!$Fx-2mdX1x{V;BDG#W&xtZj0#|xzQ>Ei?n!VKypa4G(PW{vR|8~;yaapfg~+}|6QN{e_q7Vi23OsUR!s5L(xSZ9AHuXANt(fvE|rX?@2oI z>%xGW>S^Fi7tXaar!Q{Nm~#qU+*HF{qCXyXD$&AP?!?_(LuGdNG4l)e3eNN#pU*QQ zQ^VSoeKc8uS$|1Xs&+X$eZk;`W8kxUXZ@#7vm{7oCa($HE;W!pZ&(b&@+iT4a!TKv zIDvZP%vV9RH0)3 z`x)Siqw(5wcm0mdd$nYVB$6TkN%jCxU;Cbn>t7gnI$;2%f+skSxiuSre^2_FaRJc- znT24bA@B^evS~>naf<x1Vj}|CtHROLuGC`$!e_YOlLKq#QVPyiGd*fm#= z1GGE*WdL8aBnV~q{3M`E|IR8HgwnpdO%1Xt-n0i;Y~_~^tYkyr!TVPu0`wJ>)K}-M zign1*XK(cYTLF2Rmo9t{`~i}E^sMsl8*qeNj?WL{bLv%>I3q0e%04>{3MT@|3-Y4{ zk7wGjmq!oV3k2<{>)gv%`EPhvn1$>fXyD!@agw$-IPNnIIOku=1aIz94T1(nCR&9L zuaAe+RXLW`Y9tYYs9f>2FfN2gipYcKH+|Y(!t%lkaQ;!f$jt}_KgnJ zAYiGFJZignnA89mWQ9UZ*L|tr#W0s$TU}(t8Ey z>(_rqU1o$Sy1db(8UzsbUs(sxWF-jYFne0VjU*~ie})N#J1ZFW{BR4zZ^H#r>M0=9 zzmx^us8J09fPQ4U?eSq&hpGsAKovpdfjm(8$MK%ieC}rjva))8k|fDM3Y7#x{YyyT z%?+wSK<6G2Z1+42zZxpBofmX$cP5X<(P==(w5&~jZ!gYA!$WalC&baLl$@$Nb{6B@8yZZ+~Yul)?zXDfVO|wz&wf(C`M#SQ>g%_ zjwo`Gz~3q_N66Da2mf0Y-~%n$cQBi?C)z(8ro{@<5_@;bS(^&}#g7Xp^Lt2hY6dE) zfV6(wPW>4TfB60?W~WFJ{2ndp*s-qQc3uY3oIey^AoW8ONXuL>#t`W0M-C22DPhwi zf*W}mNZS5~76_!HBEeCn=f1O&)b|H}dMIJdw1aDS8Nh~7V2ttdaQ!%xERgvCBnysO zs-wwJ9#_t^2Pi!!b=Smi!voUPxeU7Nk^j^i&fjVeFrfC(W%_}dOb@ILe}xrDV+#yz zhv}HOCk%wN2kz_IB+Z8`VJa1{b0mrh5=fFr0IOsgP=}FaR(A-yj&*GsYWBE}HMsL8KCrq)L};@rz+snlNtg={VSjQbkF-VVnvi*mUS z7r*3J2Sp$t(P4FIF>_XTJznLW<*>d&5Zs+pwH**;9ign}30i592R)Jrx85o{MEP z2di;2ZEvOO&xxk|jI&u$wA(n|SUPyxsL~-Y4Tj>q48_)OwtD?|4euJn-3r_#Z#7>{ zP})9Ab#Tvth$LRtyS87{!Z8TAv zLnni6iiNQAiO7!hV3W9)7L|dYct@JKsbDG^3he)48 z!gkkPe9vTz!Tb;mF_3hNPPm~CWa8ZShj*d9Hz423G9<3c%1NA;qGFuQKrs_1AFX*%mXtj$~u6h0an2w}SDtPhZl9XcSUO_Ly ztfJ+wAJY%F$1~ZM>Z9<ah3cW(=F(+TPFPIgh-RE@TZk zm`vnJOldhy1k45R;9+uNxkpQDxFd|2JHad(I8R5b$z}crpm+Q?pqHYwT^#0`pTdW~ zWlGwW|M2}qqffW@=&K-U2+tzrsTWQ3qV7YKJl>`(6ti8G=;DGj=RN3;1pGk=&u`9w z$2g&Eex?y--PvDY65QJofmb#6wST-LpyYxYF1OPd!N?H+3s6$VHXrdsMg^huKq2F@ z;dt^j<%PS2=LX!zRPzize0pn8ms#{b0C_{S{{-?>FWeK(EIxUfa87A^zS{OQLCAdP z*7%uiUw~jS14!VU`{@Qw2|b5;V)|J;aF73TDmB!SCsnwzhOwkaB^YBPe%?K7Xc7*H zWWgKxcXKZ$nt5OMG=~+7FkODM6s6dKv4ILd?4HrE9<7iqOMoEv?j3BjbEMjw%dqkh zQwV^FyG}o;CL)l}RUo5o>X%sud$Hfn?exGesR2Lg^Y~|@3RSPoXPVE)oiZwSQQb8} z$6fhS^iI7*H|jpv20$nFp~BnEoVxM#tYQoR){dcc8ADg&wiW~V`4b(-eTegh$PVy3 zS`IbrWNPjF%caS5M~$%OU0Ubj2T~h_83xNQht)I z5^@kWYBx|AzvxgUU$@s#-F{F#n;c~!1C1kV$!>dTJ~ej>?i(x&*v1~bPEhgOY>BGU$n$NJB1 zx_fB{KuvGXJZaDVsvU!BLej9x)lJO-9 zY=t2Csl$;!-!8tO-+MdB)bh4fAu>0iPzbC}T9t2^?zeO15%+P5?H-TdRJfVc0af`L z_aU=xxk;w;hGN7Y_W6cIF&c62$P=%K32}KiWTrUuo1Hf8+RqB1Z2O40=Q9)TKjKg= zCJCGoZ^UfH)$!(=G_Z--Nj-gaEJZ3|a^z{|R+0kkYhx^Nby{~i&uGsvHQpNWW1mayp{P|#SS2tlZxpouKJ^)qtC^x`fjz z&I@mzo?|Uw=HnnqbMOZ?bC?0J+4RVogym+Be$(>jv_Rq)=K7&<#|_r5;^H!!DBw^Y zxvx3%kyBv~h&s7Cs%&?w#+C-Oa-%96itPtKU2izEA5nMkbtJc#rw-xw3X+KkTA^3m zGa9Ead<`8nN0godePgrL7L4ggl5OA+(%R?`s%(}OsS?eo2(bpJ?A8kmcbhJ42QtDO ztxxx=Q1&Y151rCvn^fZOg-(lBG*j-2o()?jv*a0hTse3K6gf>sZ&Hh4GY!$NG6UsT zXE=8erfax>Qt=FWU%Mn2q3wgyo}{7K1=0Ig5_{BqlTQ)BBeK0)c9jW`{D79n1fdem zB?g7>0)M0Hz1`1OXCSeO@JvoRcX$ieTV;7J!*0k;-Ea(qZpB~D`o@793jn;%OXeGj zz2Jj2C`fBhmdQd-Wa1Y3&Aa7cQ7^5MFg!;~dOA-6lun|OnoED@brJvUo0@a@Hy`Gb z)V9IX+T^1-1MtYd zj6N(vM-1F7xG&k;kC^)Yek$rj9B>G|ux&24yFtEd-}VFhiC|K@EH-_5K%CK=@zV;4#9je}~ z>ZY-+s`veJ1bBxk82+J7=`#R5vHdGm9Z-!E$6I&|miCVEc-;}a)rmHN^$^F{Z~8J< z@1?*?9QM6!$79X^H1rEY__cMRGdw zKq|PWOHr2|ZvGWK@H#E_kFCtHavzOOF%A~;FmsMys7bp}W)&Tk#!USo2!xNe@|a{GmDW~5F!gr1&DG(2IND5mH=&sY-t^B44qW@$0Y-smJ`Ly65QA1Tni5X zT6F8gu23eN&ymhos{F~M8m-mtI&+D4SBlg9<>7M6p_1tdSBcd+1)CQ#iio>TD+hKI zV#AgCc=vT&_+HM}pBP3c` z(X~iv_#GN|%12_O5p&gx(yiYE)qLgBWuNQY^Zul53wtbCv&=l3Tb5>3`X!KCDm`{! zY3(R0Pu-Y<($f8un(biSx@6e7+JMV&`NA0TZh1_qvX5hZ*d%vjCvGtXLgkH9P;*BY zWXs86L$Pwc607SSVz0P{%c$QHzqe$@$hgh~=a&r@R-3wRy>0thx%XZT#Ut%dcgwuu zM#|ly3%<2WB|kfVl>`W)q>{VRkhhK>_gN6?F-~K&h^vu&tLrrG`@TY3V&*amL1u}R zQ3m?~zx5L1E%;kBO24`Rt%i(Jwv#;%bun?@C#MV5$LaB~wU~_@i~UVIo@Q>pU&q_b z9e2P`vnk(#m{u9hbf>a%K2(I>D>COYH$z?z-1|{upp^^WXNw=DHtoFENflcR7%5-= zq-<&La55-B}0&!9;UU|;rDBPthn!!pW&%ldE zORgP$z43!k>J~#6m{FCgKakE0Frs+&Ln=!kzV=r?6@1AOKnn8X7ASr?9lO%CdkUSQA_pV;QS)m1_L{D$o$dRKnKYm~$s{jpD z{P8L!6%c&EIe0eXB2eb~C*uQ@xlEMXln#@c1vQdxbxR~5Qz+;|)l{&)8e!M?9)NO( zCl0DzW`sltnAIj}evt%e9dq~eB*~=;1HW}pwB{%4 z_;ffLC_!3u!Kd6bNamDdTs$ZbDUJ()N_WBR`p_yacGwT{pdWmaRm>R!cw`>hpn+WH zRd(t?B};Hr>o@UBheyePqg-QDpbUS?EIy#CJ+B+WQ2+o=yMBpFaH7za5TbzArZ86&82@gMKR9wrt75~B->$-e^iZR0VEbYTrG72n;!l=fR{lABT}3Ul~I!`zOPF6 zmLNyxN(&z+lL3v)l1n%qqB2h4tW}kh)uLpm9#O}{aaxqedDWR+Uzo~)6 zt2X*Zq#a1@F%_00_O{#8hUPqC>)!%B>}~aCTB48awp{AF zQ>L==){kjYwN>%!M8X@%bqGby8L=BHmruHh+&@b!@MF$a_3h$9^|gL4R%0SzUO z0mArVCwgF%k#Mon5E|H1Vh=P#coFHTWYvqE@1Xg97_hpeV{24`+_&@dB;v8k@7gKg$IJ=cO9m?ZEQ z*F=%G0*YoyQSvC@pl(o2t-5*-4d@&Ix~Ma`%Wo!P98x|(Az}(#ZG)}}TlwMo`g_s% z^N0%rbBFaf->Uw^`LhlQfeET>t0(ej zQvBmLug`#4b@@TkA*%4Fg+H$cq&mL-{l3Eo#6Nx`49e}$lV=3Mx^$L9%Hb8Wh@s~4 z{qoOQFFy|hsgUA_6uGyv0!q4Vr8GVh4j?8KrtOIkNV(kxLMfI;k&i*0EcL2=Y`ln} z##_z!9L@N4=ch3lystr2AdpcaRRg}@sw-ASvzEqwtlrOsBF%>=A8F5?I8*F{PsdG1 zDGIiadTlg$cTp0&w-#C_>gnR^Yuwx#D5)=U__Imav{CZBeAO2Bz8w&G8n1U!)^mA0 z6=~u2t-50Sqw49g(u72EAU$Kh`?N37VwqmvGci&A_GZEfIb2bqDY1XnMHA0jQo*E>1OJ-=T2+qPjh6qetK?FD96FQPvF79H0I6~dheUcp&p zZzguvwhh_rmk;iCV&nXFvxyi*9vWn;NMRrtP^o2hmCDYg$=v*8$Oxh`H_sL6pTKJP z24k&|A+%SwlXX`>UaStoIaIBTk7cpQ2q72LNjXbT4|_A%Zuj%!c_~U+_X~!FcbCLF zvEfP+#F5IozO@zhQ$Mu2(LWw`dXOM(BVMui(ud8OY#aMVUXxuOcdYn8v8x!i{;es{ z^3Eq*zudK@vh1bW)$t!6ERH3MyQQ4;U6jARVBq>W2Rd3Jq zg%FzPNW5># zSdE<5;<5$!kwZkg|=g>l{)~gr&xv z3__d5%xZ2u`I%=tv;6)GDmhu7Y{p}kxN>0Q8TM|-2ch9KWv&5Ti1XE%JinF7xARu* ztqp3m0iP*H{3W7#)$|o6RgoMwivRR<@DrajbkQ?e!XpE=wdEl$zk_+e{WI@gJh%Kd zZNpK8vM!Lfto;T6E2w4;N`6_*B{4}wSJEI7R8~1777OjYj;Xw#a zA~G4cXB;bH(mlpCbmXUd?$mpi2Q;mXT95&fPf(rA<`_0`k5pr+MDH`)Gcm%pjZZLC zzPaN1Y8)B3;oPOlgh#t8=k}k&-?4CkXTd8++00c+rTwKwzE(LaQp(ysY1I(oX5HRs zo^zb))m2P<*Ofv(U?p>w09?Q`5ph55`k!xfB@*8gx6auPmxXTZ>p%ETKJL4!y!-e| z%S1V=!~B3$d0gaD_{{VIFh2NcSz%!YMDf-VD10!nQAG`VItn{jDZ0ai9KCQ}|pmy-g4g1@g$8PuKL1Ig?JDq=&bzKdAH zTpgD9tW>?53RzwCM30_S)`IqS+Dc1}K2tX;i^1*V7P%Fq5WQN%CU`I%LZDMAL0#uf z+IqJe<7o)`*l-M4oY#W1KTw|y8TfVCDq~>wCH6*mTWp(xMq^Ya$w-N}n@>?6SK8*r_fGdz%`A6%Z^|#6 z0&Pelq|+QHlzCuiR6De`KC*K{+bRt-*n~1SK^RTqZ)>Nwn>(&1Hs@^K7Qb8uDcxt zu|x|J4Im?(pHIa4-0)nxtWPz$htpHqPD7~9tPz2TrGjflgI5~ksCXN}0#ZeZz9r zOZrB2-VY-?VY~4IO(_wb0=l^uM^yk~J~eD7rWNXaz0Gc{#>(@qHOg(AN8v^=A{z1K zeRcWp(WP(aU$o56Dx=v2c@W|kK7O}sFx#-U-HP>Pr<(;hY`1#ZGR-JEO6sBGxgspT z*O}MJRON$flVupKEcsp>xnRr0 zY=yujhf&D-CT6zjY-a}E^6OhhSP8mf$O^wg;TYp_yNA1E#DVLr4%TXX6>;lUt!uk; z3-@_So<4p+ds{7i+ps(U@zl)7{YoIh`(o<9aMo8oKs93LxHg&_yp~u;wOdS~ZF1C_ z;|8c8ca!5#Iwlws;no9pvZVB*a-%{IR^B;}(N>0JZgiF#0vPDk%QtNb$3lBgll)Jd zv#Sb#nxphUD54vAMhmsjaZ1nWkN69~Em^ zD%QxzHpE5&lIA5Z;+M2QS&tRiWyKca99pL4|Gm= zQ}B?622E_}zy^3rqrWvKn&@v4%Deg_7z=Rr-VdR0k*OqhgNH4@zb4 zoH#Am_E|lX`aKklqjt!Oz1|veV#Wkt8-ULg>?tn-%Ft=>;kF-_tHzA=q5=YRw^bQk z5GgWS02b*YJViH{edSARql@KP=(_3*SYwTCZMH!@-?a<%o$zy9rk-)wkcO%}xi9HnxyN9Y49dS{S(c8^BlVUy2vZK@oVs z?Ob~*y_{C68`quguAS;=o)ivA3BQ!0zMi+E(I(=lqF$xsk65X9eBDVU_UWlZyp6)@ znp3J0s%K~BN}UcW$R*r6+E?%HXnHU(-HDKhXC_Ree;91mx-GJgA1ilS%MPGFQ6!*n zF3HtRgdoHgBytu=)4|9E-DdXCGG2eHjfWv(`s^MtF z*x66p^=>m?+JfhNpbanqSKHvU;yBg9=7jMxQwo~z^48Q%K64ck$6m#6U3T%iTJijt z(Xm%q}22I}+uB&VlqzvPa%X2Y!rPO)|0vx!z30|ziX z`NZDnD*PxyNsVs!Bdk0yGv$%-1sAE!lp~CsY)}`&Uz2LI9*MoQrPrP zX`?ohDPv#DLD|Ps$)(<^>qop!R^F4B$;R>p$}yj$&*8XS1Zo42)^}Wl10U>NW`TVc zKOJluHRPRubZdC()xA2`u|L2n=XjiU5AodBcBI5Db*Pf)H!3Nq#d0RuI!ZO_b0T!v z`B;I*7rT1{))YD`rP6m5qBCU0{qinu%*sDfi{#8G=Ms1O)u^gvRxC*5uzYXM;*!~% zvwnS0R2H4QjrAkS<|ovy27PLc^T$m+fL68keE>3#&f2clJ>ni?G8bSe_|OxreV!2H zu=nSN`eTGsSF3d|dT~8h_D3IO(B+T{^B$|vK!>M+rqn%fnL`eBEqD_bn^0wO<0IZQE4905Qq!tkIiE2lsNt`S9=%S@)NV)3< zechafqR)O+>NeXWWmDtX{vr?3iKyrrLSZFGR~7stcpM}tk;L5BM+jRU)f5eg%hkA3 z*Wl*GvXS@;Zj*ouT{-fHWKB&+iL(K62xzB{iv zP&F(gkF>&`8BZ0b4X)LTyN1gdtBaw}Lqw#ySjAeED=#ILB;Lfo=fuPulP_r@C}@!1$fWe-LKtAF|{viCa+4h7V;pJGjOWow9L%b0rI89>iyc7V-)Zh-@y6a z_enlWR`84SG&|StHEB7mt7@-owB-!x_-9(1-&JL1+4&izQ#xQ7VVkZvLO0%9Yv?HP z)JPzECcpjh1S%HaSWx!y{G-cPu3k-cMeN(}4NG{rnE6^w^Xlt;uj~@s;qo0~ggsfA z+`d1CxV7)7e#>=(LSM%76Wis7M)xef&9HuZea~++U)$`8Q#A|jOXzX_#Hr0<)!}Hq zz%d&rb;W4V=xo>=;-Y+cPWb*%>Fm>S%A_o1k&%tY{dvN?~uwLb3|+n;mqht-|ybukM#iyH`%8IrP4R~+hl z=JjBzp(8ZT_n1rO(Y}=sN{H1r4njlOQ@vom!&7FGvc_1G0M)k;1 zat5XU{)_j566ul{|MRCuj+&7%?bNKRmi;@93WYE>`{I?e|IsED?`thTGN@t03zmPy z@&9my0{$vU?LXQCtv@?)8?)HX`u*Q=7?@vwjw<=~;-6OpQt%V|eYelv|96}>AWc0M zcE*2P5$W2#2`Kp&i9l7t{}o5+t{<6V`wf64{AZ`tkPBnoro$iqJI)L0+Zc7@$14Bb lU%&sSlz8O-&CcJUM-5qClsBrBI0F7?sOqQ`-gpr3{{dYI_fP-; literal 0 HcmV?d00001 diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts new file mode 100644 index 0000000000..e9b2c75441 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts @@ -0,0 +1,55 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core'; +import transformProps from './transformProps'; +import buildQuery from './buildQuery'; +import example1 from './images/example1.png'; +import example2 from './images/example2.png'; +import example3 from './images/example3.png'; +import thumbnail from './images/thumbnail.png'; +import controlPanel from './controlPanel'; + +const metadata = new ChartMetadata({ + category: t('Correlation'), + description: t( + 'Visualize a related metric across pairs of groups. Heatmaps excel at showcasing the correlation or strength between two groups. Color is used to emphasize the strength of the link between each pair of groups.', + ), + exampleGallery: [{ url: example1 }, { url: example2 }, { url: example3 }], + name: t('Heatmap'), + tags: [ + t('Business'), + t('Intensity'), + t('Density'), + t('Single Metric'), + t('ECharts'), + ], + thumbnail, +}); + +export default class EchartsHeatmapChartPlugin extends ChartPlugin { + constructor() { + super({ + buildQuery, + loadChart: () => import('./Heatmap'), + metadata, + transformProps, + controlPanel, + }); + } +} diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts new file mode 100644 index 0000000000..832b868779 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts @@ -0,0 +1,243 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { + GenericDataType, + QueryFormColumn, + getColumnLabel, + getMetricLabel, + getSequentialSchemeRegistry, + getTimeFormatter, + getValueFormatter, +} from '@superset-ui/core'; +import memoizeOne from 'memoize-one'; +import { maxBy, minBy } from 'lodash'; +import { EChartsOption, HeatmapSeriesOption } from 'echarts'; +import { CallbackDataParams } from 'echarts/types/src/util/types'; +import { HeatmapChartProps, HeatmapTransformedProps } from './types'; +import { getDefaultTooltip } from '../utils/tooltip'; +import { Refs } from '../types'; +import { parseAxisBound } from '../utils/controls'; +import { NULL_STRING } from '../constants'; + +// Calculated totals per x and y categories plus total +const calculateTotals = memoizeOne( + ( + data: Record[], + xAxis: string, + groupby: string, + metric: string, + ) => + data.reduce( + (acc, row) => { + const value = row[metric]; + if (typeof value !== 'number') { + return acc; + } + const x = row[xAxis] as string; + const y = row[groupby] as string; + const xTotal = acc.x[x] || 0; + const yTotal = acc.y[y] || 0; + return { + x: { ...acc.x, [x]: xTotal + value }, + y: { ...acc.y, [y]: yTotal + value }, + total: acc.total + value, + }; + }, + { x: {}, y: {}, total: 0 }, + ), +); + +export default function transformProps( + chartProps: HeatmapChartProps, +): HeatmapTransformedProps { + const refs: Refs = {}; + const { width, height, formData, queriesData, datasource } = chartProps; + const { + bottomMargin, + xAxis, + groupby, + linearColorScheme, + leftMargin, + legendType = 'continuous', + metric, + normalizeAcross, + normalized, + showLegend, + showPercentage, + showValues, + xscaleInterval, + yscaleInterval, + valueBounds, + yAxisFormat, + xAxisTimeFormat, + currencyFormat, + } = formData; + const metricLabel = getMetricLabel(metric); + const xAxisLabel = getColumnLabel(xAxis); + // groupby is overridden to be a single value + const yAxisLabel = getColumnLabel(groupby as unknown as QueryFormColumn); + const { data, colnames, coltypes } = queriesData[0]; + const { columnFormats = {}, currencyFormats = {} } = datasource; + const colorColumn = normalized ? 'rank' : metricLabel; + const colors = getSequentialSchemeRegistry().get(linearColorScheme)?.colors; + const getAxisFormatter = + (colType: GenericDataType) => (value: number | string) => { + if (colType === GenericDataType.Temporal) { + if (typeof value === 'string') { + return getTimeFormatter(xAxisTimeFormat)(Number.parseInt(value, 10)); + } + return getTimeFormatter(xAxisTimeFormat)(value); + } + return String(value); + }; + + const xAxisFormatter = getAxisFormatter(coltypes[0]); + const yAxisFormatter = getAxisFormatter(coltypes[1]); + const valueFormatter = getValueFormatter( + metric, + currencyFormats, + columnFormats, + yAxisFormat, + currencyFormat, + ); + + let [min, max] = (valueBounds || []).map(parseAxisBound); + if (min === undefined) { + min = minBy(data, row => row[colorColumn])?.[colorColumn] as number; + } + if (max === undefined) { + max = maxBy(data, row => row[colorColumn])?.[colorColumn] as number; + } + + const series: HeatmapSeriesOption[] = [ + { + name: metricLabel, + type: 'heatmap', + data: data.map(row => + colnames.map(col => { + const value = row[col]; + if (!value) { + return NULL_STRING; + } + if (typeof value === 'boolean') { + return String(value); + } + return value; + }), + ), + label: { + show: showValues, + formatter: (params: CallbackDataParams) => + valueFormatter(params.value[2]), + }, + }, + ]; + + const echartOptions: EChartsOption = { + grid: { + containLabel: true, + bottom: bottomMargin, + left: leftMargin, + }, + series, + tooltip: { + ...getDefaultTooltip(refs), + formatter: (params: CallbackDataParams) => { + const totals = calculateTotals( + data, + xAxisLabel, + yAxisLabel, + metricLabel, + ); + const x = params.value[0]; + const y = params.value[1]; + const value = params.value[2]; + const formattedX = xAxisFormatter(x); + const formattedY = yAxisFormatter(y); + const formattedValue = valueFormatter(value); + let percentage = 0; + let suffix = 'heatmap'; + if (typeof value === 'number') { + if (normalizeAcross === 'x') { + percentage = (value / totals.x[x]) * 100; + suffix = formattedX; + } else if (normalizeAcross === 'y') { + percentage = (value / totals.y[y]) * 100; + suffix = formattedY; + } else { + percentage = (value / totals.total) * 100; + suffix = 'heatmap'; + } + } + return ` +

+
${colnames[0]}: ${formattedX}
+
${colnames[1]}: ${formattedY}
+
${colnames[2]}: ${formattedValue}
+ ${ + showPercentage + ? `
% (${suffix}): ${valueFormatter( + percentage, + )}%
` + : '' + } +
`; + }, + }, + visualMap: { + type: legendType, + min, + max, + calculable: true, + orient: 'horizontal', + right: 0, + top: 0, + itemHeight: legendType === 'continuous' ? 300 : 14, + itemWidth: 15, + formatter: min => valueFormatter(min as number), + inRange: { + color: colors, + }, + show: showLegend, + // By default, ECharts uses the last dimension which is rank + dimension: normalized ? 3 : 2, + }, + xAxis: { + type: 'category', + axisLabel: { + formatter: xAxisFormatter, + interval: xscaleInterval === -1 ? 'auto' : xscaleInterval - 1, + }, + }, + yAxis: { + type: 'category', + axisLabel: { + formatter: yAxisFormatter, + interval: yscaleInterval === -1 ? 'auto' : yscaleInterval - 1, + }, + }, + }; + return { + refs, + echartOptions, + width, + height, + formData, + }; +} diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/types.ts new file mode 100644 index 0000000000..8ec9847032 --- /dev/null +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/types.ts @@ -0,0 +1,53 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { + Currency, + QueryFormColumn, + QueryFormData, + QueryFormMetric, +} from '@superset-ui/core'; +import { BaseChartProps, BaseTransformedProps } from '../types'; + +export interface HeatmapFormData extends QueryFormData { + bottomMargin: string; + currencyFormat?: Currency; + leftMargin: string; + legendType: 'continuous' | 'piecewise'; + linearColorScheme?: string; + metric: QueryFormMetric; + normalizeAcross: 'heatmap' | 'x' | 'y'; + normalized?: boolean; + showLegend?: boolean; + showPercentage?: boolean; + showValues?: boolean; + sortXAxis: string; + sortYAxis: string; + timeFormat?: string; + xAxis: QueryFormColumn; + xscaleInterval: number; + valueBounds: [number | undefined | null, number | undefined | null]; + yAxisFormat?: string; + yscaleInterval: number; +} + +export interface HeatmapChartProps extends BaseChartProps { + formData: HeatmapFormData; +} + +export type HeatmapTransformedProps = BaseTransformedProps; diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/index.ts b/superset-frontend/plugins/plugin-chart-echarts/src/index.ts index 2e19203138..f3bee62095 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/index.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/index.ts @@ -31,6 +31,7 @@ export { default as EchartsGaugeChartPlugin } from './Gauge'; export { default as EchartsRadarChartPlugin } from './Radar'; export { default as EchartsFunnelChartPlugin } from './Funnel'; export { default as EchartsTreeChartPlugin } from './Tree'; +export { default as EchartsHeatmapChartPlugin } from './Heatmap'; export { default as EchartsTreemapChartPlugin } from './Treemap'; export { BigNumberChartPlugin, @@ -51,6 +52,7 @@ export { default as RadarTransformProps } from './Radar/transformProps'; export { default as TimeseriesTransformProps } from './Timeseries/transformProps'; export { default as TreeTransformProps } from './Tree/transformProps'; export { default as TreemapTransformProps } from './Treemap/transformProps'; +export { default as HeatmapTransformProps } from './Heatmap/transformProps'; export { default as SunburstTransformProps } from './Sunburst/transformProps'; export { default as BubbleTransformProps } from './Bubble/transformProps'; export { default as WaterfallTransformProps } from './Waterfall/transformProps'; diff --git a/superset-frontend/src/explore/components/controls/BoundsControl.tsx b/superset-frontend/src/explore/components/controls/BoundsControl.tsx index 97fd26e283..03ab603791 100644 --- a/superset-frontend/src/explore/components/controls/BoundsControl.tsx +++ b/superset-frontend/src/explore/components/controls/BoundsControl.tsx @@ -19,7 +19,7 @@ import React, { useEffect, useRef, useState } from 'react'; import { InputNumber } from 'src/components/Input'; import { t, styled } from '@superset-ui/core'; -import { debounce } from 'lodash'; +import { debounce, parseInt } from 'lodash'; import ControlHeader from 'src/explore/components/ControlHeader'; type ValueType = (number | null)[]; @@ -43,8 +43,16 @@ const MaxInput = styled(InputNumber)` margin-left: ${({ theme }) => theme.gridUnit}px; `; -const parseNumber = (value: undefined | number | string | null) => - value === null || Number.isNaN(Number(value)) ? null : Number(value); +const parseNumber = (value: undefined | number | string | null) => { + if ( + value === null || + value === undefined || + (typeof value === 'string' && Number.isNaN(parseInt(value))) + ) { + return null; + } + return Number(value); +}; export default function BoundsControl({ onChange = () => {}, diff --git a/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx b/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx index 4905e9a333..ac84bd260c 100644 --- a/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx +++ b/superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx @@ -88,6 +88,7 @@ const DEFAULT_ORDER = [ 'time_pivot', 'deck_arc', 'heatmap', + 'heatmap_v2', 'deck_grid', 'deck_screengrid', 'treemap_v2', diff --git a/superset-frontend/src/visualizations/presets/MainPreset.js b/superset-frontend/src/visualizations/presets/MainPreset.js index f77f8c037b..1d447228f9 100644 --- a/superset-frontend/src/visualizations/presets/MainPreset.js +++ b/superset-frontend/src/visualizations/presets/MainPreset.js @@ -67,6 +67,7 @@ import { EchartsBubbleChartPlugin, EchartsWaterfallChartPlugin, BigNumberPeriodOverPeriodChartPlugin, + EchartsHeatmapChartPlugin, } from '@superset-ui/plugin-chart-echarts'; import { SelectFilterPlugin, @@ -158,6 +159,7 @@ export default class MainPreset extends Preset { new EchartsWaterfallChartPlugin().configure({ key: 'waterfall', }), + new EchartsHeatmapChartPlugin().configure({ key: 'heatmap_v2' }), new SelectFilterPlugin().configure({ key: FilterPlugins.Select }), new RangeFilterPlugin().configure({ key: FilterPlugins.Range }), new TimeFilterPlugin().configure({ key: FilterPlugins.Time }), diff --git a/superset/utils/pandas_postprocessing/__init__.py b/superset/utils/pandas_postprocessing/__init__.py index e66a52f655..6d6c833e64 100644 --- a/superset/utils/pandas_postprocessing/__init__.py +++ b/superset/utils/pandas_postprocessing/__init__.py @@ -28,6 +28,7 @@ from superset.utils.pandas_postprocessing.geography import ( ) from superset.utils.pandas_postprocessing.pivot import pivot from superset.utils.pandas_postprocessing.prophet import prophet +from superset.utils.pandas_postprocessing.rank import rank from superset.utils.pandas_postprocessing.rename import rename from superset.utils.pandas_postprocessing.resample import resample from superset.utils.pandas_postprocessing.rolling import rolling @@ -50,6 +51,7 @@ __all__ = [ "geodetic_parse", "pivot", "prophet", + "rank", "rename", "resample", "rolling", diff --git a/superset/utils/pandas_postprocessing/rank.py b/superset/utils/pandas_postprocessing/rank.py new file mode 100644 index 0000000000..7b69e80089 --- /dev/null +++ b/superset/utils/pandas_postprocessing/rank.py @@ -0,0 +1,40 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +from __future__ import annotations + +import pandas as pd + + +def rank( + df: pd.DataFrame, + metric: str, + group_by: str | None = None, +) -> pd.DataFrame: + """ + Calculates the rank of a metric within a group. + + :param df: N-dimensional DataFrame. + :param metric: The metric to rank. + :param group_by: The column to group by. + :return: a flat DataFrame + """ + if group_by: + gb = df.groupby(group_by, group_keys=False) + df["rank"] = gb.apply(lambda x: x[metric].rank(pct=True)) + else: + df["rank"] = df[metric].rank(pct=True) + return df