<?xml version="1.0"?>
<!--

  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.

-->
<componentPackage>
 <!-- charts -->
    <component id="AxisRenderer" class="mx.charts.AxisRenderer"/>
    <component id="BarChart" class="mx.charts.BarChart"/>
    <component id="BubbleChart" class="mx.charts.BubbleChart"/>
    <component id="CategoryAxis" class="mx.charts.CategoryAxis"/>
    <component id="ColumnChart" class="mx.charts.ColumnChart"/>
    <component id="CandlestickChart" class="mx.charts.CandlestickChart"/>
    <component id="DataTip" class="mx.charts.chartClasses.DataTip"/>
    <component id="HLOCChart" class="mx.charts.HLOCChart"/>
    <component id="AreaChart" class="mx.charts.AreaChart"/>
    <component id="GridLines" class="mx.charts.GridLines"/>
    <component id="Legend" class="mx.charts.Legend"/>
    <component id="LegendItem" class="mx.charts.LegendItem"/>
    <component id="LineChart" class="mx.charts.LineChart"/>
    <component id="LinearAxis" class="mx.charts.LinearAxis"/>
    <component id="LogAxis" class="mx.charts.LogAxis"/>
    <component id="DateTimeAxis" class="mx.charts.DateTimeAxis"/>
    <component id="PieChart" class="mx.charts.PieChart"/>
    <component id="PlotChart" class="mx.charts.PlotChart"/>
    <component id="PolarChart" class="mx.charts.chartClasses.PolarChart"/>
    <component id="CartesianChart" class="mx.charts.chartClasses.CartesianChart"/>
    <component id="ChartBase" class="mx.charts.chartClasses.ChartBase"/>
    <component id="AreaSeries" class="mx.charts.series.AreaSeries"/>
    <component id="AreaSet" class="mx.charts.series.AreaSet"/>
    <component id="BarSeries" class="mx.charts.series.BarSeries"/>
    <component id="BarSet" class="mx.charts.series.BarSet"/>
    <component id="BubbleSeries" class="mx.charts.series.BubbleSeries"/>
    <component id="ColumnSeries" class="mx.charts.series.ColumnSeries"/>
    <component id="ColumnSet" class="mx.charts.series.ColumnSet"/>
    <component id="CandlestickSeries" class="mx.charts.series.CandlestickSeries"/>
    <component id="HLOCSeries" class="mx.charts.series.HLOCSeries"/>
    <component id="LineSeries" class="mx.charts.series.LineSeries"/>
    <component id="PieSeries" class="mx.charts.series.PieSeries"/>
    <component id="PlotSeries" class="mx.charts.series.PlotSeries"/>
    <component id="SeriesEffect" class="mx.charts.effects.SeriesEffect"/>
    <component id="SeriesInterpolate" class="mx.charts.effects.SeriesInterpolate"/>
    <component id="SeriesSlide" class="mx.charts.effects.SeriesSlide"/>
    <component id="SeriesZoom" class="mx.charts.effects.SeriesZoom"/>

    <component id="AreaRenderer" class="mx.charts.renderers.AreaRenderer"/>
    <component id="BoxItemRenderer" class="mx.charts.renderers.BoxItemRenderer"/>
    <component id="CandlestickItemRenderer" class="mx.charts.renderers.CandlestickItemRenderer"/>
    <component id="CircleItemRenderer" class="mx.charts.renderers.CircleItemRenderer"/>
    <component id="CrossItemRenderer" class="mx.charts.renderers.CrossItemRenderer"/>
    <component id="DiamondItemRenderer" class="mx.charts.renderers.DiamondItemRenderer"/>
    <component id="HLOCItemRenderer" class="mx.charts.renderers.HLOCItemRenderer"/>
    <component id="LineRenderer" class="mx.charts.renderers.LineRenderer"/>
    <component id="ShadowBoxItemRenderer" class="mx.charts.renderers.ShadowBoxItemRenderer"/>
    <component id="ShadowLineRenderer" class="mx.charts.renderers.ShadowLineRenderer"/>
    <component id="TriangleItemRenderer" class="mx.charts.renderers.TriangleItemRenderer"/>
    <component id="WedgeItemRenderer" class="mx.charts.renderers.WedgeItemRenderer"/>

    <component id="CartesianDataCanvas" class="mx.charts.chartClasses.CartesianDataCanvas"/>
    <component id="PolarDataCanvas" class="mx.charts.chartClasses.PolarDataCanvas"/>

</componentPackage>
