////////////////////////////////////////////////////////////////////////////////
//
//  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.
//
////////////////////////////////////////////////////////////////////////////////

package
{

internal class MobileThemeClassesAIR2
{

/**
 *  @private
 *  This class is used to link additional classes into mobile.swc
 *  beyond those that are found by dependecy analysis starting
 *  from the classes specified in manifest.xml.
 */
import spark.skins.mobile.ActionBarSkin; ActionBarSkin;
import spark.skins.mobile.BeveledActionButtonSkin; BeveledActionButtonSkin;
import spark.skins.mobile.BeveledBackButtonSkin; BeveledBackButtonSkin;
import spark.skins.mobile.ButtonBarSkin; spark.skins.mobile.ButtonBarSkin;
import spark.skins.mobile.ButtonSkin; spark.skins.mobile.ButtonSkin;
import spark.skins.mobile.CalloutSkin; spark.skins.mobile.CalloutSkin;
import spark.skins.mobile.CalloutActionBarSkin; spark.skins.mobile.CalloutActionBarSkin;
import spark.skins.mobile.CalloutViewNavigatorSkin; spark.skins.mobile.CalloutViewNavigatorSkin;
import spark.skins.mobile.CheckBoxSkin; spark.skins.mobile.CheckBoxSkin;
import spark.skins.mobile.DefaultBeveledActionButtonSkin; spark.skins.mobile.DefaultBeveledActionButtonSkin;
import spark.skins.mobile.DefaultBeveledBackButtonSkin; spark.skins.mobile.DefaultBeveledBackButtonSkin;
import spark.skins.mobile.DefaultButtonSkin; spark.skins.mobile.DefaultButtonSkin;
import spark.skins.mobile.DefaultTransparentActionButtonSkin; spark.skins.mobile.DefaultTransparentActionButtonSkin;
import spark.skins.mobile.DefaultTransparentNavigationButtonSkin; spark.skins.mobile.DefaultTransparentNavigationButtonSkin;
import spark.skins.mobile.DateSpinnerSkin; spark.skins.mobile.DateSpinnerSkin;
import spark.skins.mobile.HScrollBarSkin; spark.skins.mobile.HScrollBarSkin;
import spark.skins.mobile.HSliderSkin; spark.skins.mobile.HSliderSkin;
import spark.skins.mobile.ImageSkin; spark.skins.mobile.ImageSkin;
import spark.skins.mobile.ListSkin; spark.skins.mobile.ListSkin;
import spark.skins.mobile.RadioButtonSkin; spark.skins.mobile.RadioButtonSkin;
import spark.skins.mobile.SpinnerListContainerSkin; SpinnerListContainerSkin;
import spark.skins.mobile.SpinnerListScrollerSkin; SpinnerListScrollerSkin;
import spark.skins.mobile.SpinnerListSkin; SpinnerListSkin;
import spark.skins.mobile.SkinnableContainerSkin; SkinnableContainerSkin;
import spark.skins.mobile.SplitViewNavigatorSkin; SplitViewNavigatorSkin;
import spark.skins.mobile.TabbedViewNavigatorApplicationSkin; TabbedViewNavigatorApplicationSkin;
import spark.skins.mobile.TabbedViewNavigatorSkin; TabbedViewNavigatorSkin;
import spark.skins.mobile.TabbedViewNavigatorTabBarSkin; TabbedViewNavigatorTabBarSkin;
import spark.skins.mobile.TextAreaSkin; TextAreaSkin;
import spark.skins.mobile.TextAreaHScrollBarSkin; TextAreaHScrollBarSkin;
import spark.skins.mobile.TextAreaVScrollBarSkin; TextAreaVScrollBarSkin;
import spark.skins.mobile.TextInputSkin; TextInputSkin;
import spark.skins.mobile.ToggleSwitchSkin; ToggleSwitchSkin;
import spark.skins.mobile.TransparentActionButtonSkin; TransparentActionButtonSkin;
import spark.skins.mobile.TransparentNavigationButtonSkin; TransparentNavigationButtonSkin;
import spark.skins.mobile.ViewMenuItemSkin; ViewMenuItemSkin;
import spark.skins.mobile.ViewMenuSkin; ViewMenuSkin;
import spark.skins.mobile.ViewNavigatorApplicationSkin; ViewNavigatorApplicationSkin;
import spark.skins.mobile.ViewNavigatorSkin; ViewNavigatorSkin;
import spark.skins.mobile.VScrollBarSkin; spark.skins.mobile.VScrollBarSkin;
}
}
