# Copyright (C) 2014-21 BlissRoms Project
#
# Licensed 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.

# Accents
PRODUCT_PACKAGES += \
    AccentColorAmberOverlay \
    AccentColorBlueOverlay \
    AccentColorBlueGreyOverlay \
    AccentColorBrownOverlay \
    AccentColorCyanOverlay \
    AccentColorDeepOrangeOverlay \
    AccentColorDeepPurpleOverlay \
    AccentColorGreyOverlay \
    AccentColorIndigoOverlay \
    AccentColorLightBlueOverlay \
    AccentColorLightGreenOverlay \
    AccentColorLimeOverlay \
    AccentColorOrangeOverlay \
    AccentColorPinkOverlay \
    AccentColorRedOverlay \
    AccentColorTealOverlay \
    AccentColorYellowOverlay \
    AccentColorExtendedGreenOverlay \
    AccentColorElegantGreenOverlay \
    AccentBliss \
    AccentBlueMonday \
    AccentBubblegumPink \
    AccentBurningRed \
    AccentCandyRed \
    AccentColdEveningBleu \
    AccentColdSummerYellow \
    AccentDeadRed \
    AccentDeepOrange \
    AccentDeepPurple \
    AccentDiffDayGreen \
    AccentDreamyPurple \
    AccentDuskPurple \
    AccentExtendedGreen \
    AccentFlare \
    AccentFootprintPurple \
    AccentFrenchBleu \
    AccentFromHell \
    AccentGoldenShower \
    AccentHazedPink \
    AccentHeirloomBleu \
    AccentHolillusion \
    AccentIllusionsPurple \
    AccentJadeGreen \
    AccentManiaAmber \
    AccentMisticBrown \
    AccentMoveMint \
    AccentNewHouseOrange \
    AccentNotImpPurple \
    AccentObfusBleu \
    AccentOrangeCoral \
    AccentPaleBlue \
    AccentPaleRed \
    AccentPixel \
    AccentPureLust \
    AccentQuepal \
    AccentRottenOrange \
    AccentSeasideMint \
    AccentShadesOfGrey \
    AccentSincityRed \
    AccentSluttyPink \
    AccentSmokingGreen \
    AccentSpokedPurple \
    AccentSublime \
    AccentTeal \
    AccentTruFilPink \
    AccentWarmthOrange \
    AccentWhite \
    AccentColorMint \
    AndroidOneGreen \
    AospaGreen \
    CocaColaRed \
    DiscordPurple \
    FacebookBlue \
    InstagramCerise \
    JollibeeCrimson \
    MonsterEnergyGreen \
    NextbitMint \
    OneplusRed \
    PepsiBlue \
    PocophoneYellow \
    RazerGreen \
    SamsungBlue \
    SpotifyGreen \
    StarbucksGreen \
    TwitchPurple \
    TwitterBlue \
    XboxGreen \
    XiaomiOrange
