Merge branch 'dev/13/fp3/lineage-20.0' into int/13/fp3

* dev/13/fp3/lineage-20.0: (29 commits)
  LatinIME: Theme swipe elements with Material You styling
  LatinIME: Add tabletNumSpaceKeyStyle style for Material You theme
  LatinIME: update follow system theme label
  LatinIME: Initial You
  LatinIME: add attr for vertical hint padding
  LatinIME: show emoji key when language switch key is not showing
  LatinIME: fit more emoji in a page
  LatinIME: remove unused drawables
  LatinIME: Properly refresh summary
  LatinIME: Remove unused resources
  LatinIME: Fix invisible icon
  LatinIME: Remove hardcoded emoji row logic
  LatinIME: Enable full flag emoji support
  LatinIME: Fix NPE in getKeyboardThemeName
  LatinIME: Move keyboard height setting from debug to advanced
  LatinIME: Fix back-arrow finishing activity
  LatinIME: Remove dividers everywhere
  LatinIME: Do we really still want Holo?
  LatinIME: Add setting for theme to follow system setting
  LatinIME: Update key_styles_currency euro lists.
  ...

Change-Id: Iec087a0f0e9545607a6b7c2857a6c5b6a698ca98
diff --git a/java/res/anim/key_preview_dismiss_holo.xml b/java/res/anim/key_preview_dismiss_holo.xml
deleted file mode 100644
index 0bf7254..0000000
--- a/java/res/anim/key_preview_dismiss_holo.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, The Android Open Source 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.
-*/
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <objectAnimator
-        android:propertyName="scaleX"
-        android:duration="53"
-        android:valueFrom="1.00"
-        android:valueTo="0.94" />
-    <objectAnimator
-        android:propertyName="scaleY"
-        android:duration="53"
-        android:valueFrom="1.00"
-        android:valueTo="0.94" />
-</set>
diff --git a/java/res/anim/key_preview_show_up_holo.xml b/java/res/anim/key_preview_show_up_holo.xml
deleted file mode 100644
index ad2e413..0000000
--- a/java/res/anim/key_preview_show_up_holo.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, The Android Open Source 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.
-*/
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <objectAnimator
-        android:propertyName="scaleX"
-        android:duration="17"
-        android:valueFrom="0.98"
-        android:valueTo="1.00" />
-    <objectAnimator
-        android:propertyName="scaleY"
-        android:duration="17"
-        android:valueFrom="0.98"
-        android:valueTo="1.00" />
-</set>
diff --git a/java/res/color/gesture_floating_preview_color_you.xml b/java/res/color/gesture_floating_preview_color_you.xml
new file mode 100644
index 0000000..5406500
--- /dev/null
+++ b/java/res/color/gesture_floating_preview_color_you.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- This is necessary to add alpha to dynamic colors to a single theme -->
+    <item
+        android:alpha=".9"
+        android:color="@color/keyboard_background_you" />
+</selector>
diff --git a/java/res/color/sliding_key_input_preview_color_you.xml b/java/res/color/sliding_key_input_preview_color_you.xml
new file mode 100644
index 0000000..ac8e712
--- /dev/null
+++ b/java/res/color/sliding_key_input_preview_color_you.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- This is necessary to add alpha to dynamic colors to a single theme -->
+    <item
+        android:alpha=".7"
+        android:color="@color/gesture_trail_color_you" />
+</selector>
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index 9aa8db6..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index fa2cb85..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index fa2cb85..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 6da273b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index b1af23b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index 9f4587b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index 814e402..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index c2e8b37..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index 10f8e97..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 7ec33dd..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index 5612c51..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index 90abe39..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index 6768241..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 655bc01..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index 48eeb3f..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index 138e915..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index 71e0683..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index 9138cef..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index 345d05e..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index bbcfb2c..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_add_circle_white_24dp.png b/java/res/drawable-hdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index 314c521..0000000
--- a/java/res/drawable-hdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index a79fb06..0000000
--- a/java/res/drawable-hdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 91b31d6..0000000
--- a/java/res/drawable-hdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index 1c937c9..0000000
--- a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index 3508d24..0000000
--- a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index a79fcef..0000000
--- a/java/res/drawable-hdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index 3200e39..0000000
--- a/java/res/drawable-hdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index ea97f38..0000000
--- a/java/res/drawable-hdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index 6c214d7..0000000
--- a/java/res/drawable-hdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index 5525df2..0000000
--- a/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index 34e16b9..0000000
--- a/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index c3c7ec1..0000000
--- a/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index f012d77..0000000
--- a/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index cfacbc2..0000000
--- a/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index c54dbc1..0000000
--- a/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index 959dfdf..0000000
--- a/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index fc0d971..0000000
--- a/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index de570a1..0000000
--- a/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index b256208..0000000
--- a/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index af1fd27..0000000
--- a/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 02b84d5..0000000
--- a/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_holo.9.png
deleted file mode 100644
index 7386875..0000000
--- a/java/res/drawable-hdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index 28b406a..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index be39415..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index e42cd88..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 9fa6d00..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index 1603440..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index c73269b..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index a40d427..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index fffd402..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 1f68073..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index 61c23c1..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index ec53593..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index 827d743..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 53d7b6f..0000000
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index f9dd3b8..0000000
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index 32f4264..0000000
--- a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/suggestions_strip_divider_holo.png b/java/res/drawable-hdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index 5d44d9c..0000000
--- a/java/res/drawable-hdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index d2d3560..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index 78d3a1f..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index 60d893c..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index fa0d1bd..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index 2ea4a74..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 544b7e1..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index 9b1d6a0..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index cfacbc2..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index 12e27ad..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index 2e5f811..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index 8a6336a..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index edf1379..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 9f9bc17..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index f0f832e..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index e810c77..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index 8e9a349..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index 8e9a349..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 2915588..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index 58a316f..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index f3fc641..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index b7b2dca..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index 93a6e79..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index ee0aae2..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 8f340d3..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index c39dd4a..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index 4a92b80..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index 0493859..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 53ea5f8..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index 72125a0..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index 69c84e7..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index 82413d4..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index 1731b46..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index 6354b99..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index bb45ab9..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_add_circle_white_24dp.png b/java/res/drawable-mdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index 11363b1..0000000
--- a/java/res/drawable-mdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index 06fe3f5..0000000
--- a/java/res/drawable-mdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 57d5713..0000000
--- a/java/res/drawable-mdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index c7394e1..0000000
--- a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index eb4dab4..0000000
--- a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index 859da81..0000000
--- a/java/res/drawable-mdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index e1852e6..0000000
--- a/java/res/drawable-mdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index 0d759e8..0000000
--- a/java/res/drawable-mdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index 3c817be..0000000
--- a/java/res/drawable-mdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index d4c8d8d..0000000
--- a/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index 1555aa7..0000000
--- a/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index 081dc66..0000000
--- a/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index 58e6f6e..0000000
--- a/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index 067ad54..0000000
--- a/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index d835d4e..0000000
--- a/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index 1aecec5..0000000
--- a/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index c70e484..0000000
--- a/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index 8009e93..0000000
--- a/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index c2e598d..0000000
--- a/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index caea871..0000000
--- a/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 0edada6..0000000
--- a/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png
deleted file mode 100644
index fbe97f7..0000000
--- a/java/res/drawable-mdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index 7a9f640..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index 625490b..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index 5b06f09..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 427c870..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index fd992d6..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index ea75729..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index 128dcd6..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index 1911c42..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 0b08d17..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index cdef116..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index cf0b33c..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index dea5d07..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 61988a8..0000000
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index 8965055..0000000
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index b1c18b4..0000000
--- a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/suggestions_strip_divider_holo.png b/java/res/drawable-mdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index 21e9049..0000000
--- a/java/res/drawable-mdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index edd9d16..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-mdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index 828929b..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index e10103c..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index 290cde4..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index 613f4dc..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 37375d9..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index 3654868..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index 067ad54..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index a38f994..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index f883807..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index 0795fcc..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index f76da57..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 8957e28..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index 5f49e64..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index d990c02..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index a2f6ac0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index a2f6ac0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 0ef4a4b..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index 2f00fc6..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index ab8fb2e..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index 20251a0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index 0c7bfda..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index 891d000..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 3871689..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index c23a4b2..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index 84d1739..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index f770962..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 9125063..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index ee4490e..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index 35ce67f..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index e812477..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index 11bc966..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index 5e8549b..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index 8cede8d..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_add_circle_white_24dp.png b/java/res/drawable-xhdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index 32a5b05..0000000
--- a/java/res/drawable-xhdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index 5bfa54f..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 2221716..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index 997c9b7..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index 23a519c..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index dbb3f60..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index 9d852fe..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index 67d27a8..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index fc299e3..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index 3e67443..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index 5344a9e..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index 75695d4..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index 2adb186..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index e6baa2e..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index c26aa4e..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index eaa3b86..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index d6e1eaa..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index 06003b8..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index da2effe..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index 438fde2..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 7578632..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_background_holo.9.png
deleted file mode 100644
index f5c9df3..0000000
--- a/java/res/drawable-xhdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index d999127..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index c211d89..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index c4d6941..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 543bc76..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index 5429c17..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index ec42aad..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index 5135a08..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index 319e9d7..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 19a77a2..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index 052032b..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index ae2ffff..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index c7e9d1c..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 1dee699..0000000
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index 36df715..0000000
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index 4c27072..0000000
--- a/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png b/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index 4101ebc..0000000
--- a/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index e3e37d5..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index b8687f5..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index 7b7ad17..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index 36b1646..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index 15a9739..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 5ab5491..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index b820eaa..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index e6baa2e..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index 7114b74..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index 73ebfe5..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index b2bb9b8..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index 23e75bf..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 2f9607a..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index ab07f75..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index 680421e..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index 17f0a7a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index 17f0a7a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 4ddfdcb..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index b0e815e..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index 40f5011..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index 97f9625..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index 6d2af59..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index 0cbb2ec..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 6ff6319..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index 3c17c5e..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index dfb16a7..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index 17144b6..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 818ea70..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index bf1d346..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index a476d2a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index 9622771..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index b13ee2b..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index c81e651..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index 3891886..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_add_circle_white_24dp.png b/java/res/drawable-xxhdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index a22c463..0000000
--- a/java/res/drawable-xxhdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index c9f4aab..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 3ab3f7d..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index a217269..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index dfa43cd..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index 99229a2..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index a28fdd0..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index 02bd4f0..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index bd3bd42..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index 470fd69..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index a7fde0e..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index c582b70..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index acc95d7..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index 5973ac3..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index 22e06f8..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index 690e95f..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index ced4b08..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index 25e847e..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index c86368d..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index 29dfc71..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 0570567..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_background_holo.9.png b/java/res/drawable-xxhdpi/keyboard_background_holo.9.png
deleted file mode 100644
index bcef0f8..0000000
--- a/java/res/drawable-xxhdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index bd1ef3c..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index fd2f9e5..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index 65af4b5..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 3ab7900..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index ac6750d..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index 99543a1..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index cea7c05..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index 121411a..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 520fa7c..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index e9e3792..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index eee2217..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index 6c1143a..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 721c244..0000000
--- a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index 91d5d7f..0000000
--- a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-xxhdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index 08176fe..0000000
--- a/java/res/drawable-xxhdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index d13ca42..0000000
--- a/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index 92be792..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index 88b55bb..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index 46ee50e..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index f518748..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index bf643e1..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 523286e..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index 87926d9..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index 5973ac3..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index 1dab1f4..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index 6eb3eb0..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index f04cadf..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index e74d523..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 5e225b8..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index cdfc029..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxxhdpi/ic_add_circle_white_24dp.png b/java/res/drawable-xxxhdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index a0116fa..0000000
--- a/java/res/drawable-xxxhdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key_functional_ics.xml b/java/res/drawable/btn_keyboard_key_functional_ics.xml
deleted file mode 100644
index 846bccc..0000000
--- a/java/res/drawable/btn_keyboard_key_functional_ics.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_klp.xml b/java/res/drawable/btn_keyboard_key_functional_klp.xml
deleted file mode 100644
index 7b444f7..0000000
--- a/java/res/drawable/btn_keyboard_key_functional_klp.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_normal_you.xml b/java/res/drawable/btn_keyboard_key_functional_normal_you.xml
new file mode 100644
index 0000000..80ff431
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_normal_you.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/functional_normal_color_you" />
+
+    <padding android:left="1dp"
+             android:top="1dp"
+             android:right="1dp"
+             android:bottom="1dp" />
+
+    <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_functional_pressed_you.xml b/java/res/drawable/btn_keyboard_key_functional_pressed_you.xml
new file mode 100644
index 0000000..44a7fb7
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_pressed_you.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/functional_pressed_color_you"/>
+             
+    <padding android:left="1dp"
+             android:top="1dp"
+             android:right="1dp"
+             android:bottom="1dp" />
+
+    <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/drawable/btn_keyboard_key_functional_you.xml
similarity index 76%
rename from java/res/drawable/btn_keyboard_spacebar_ics.xml
rename to java/res/drawable/btn_keyboard_key_functional_you.xml
index 229f7a9..ecb1721 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_you.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2014 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -16,6 +16,6 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
+          android:drawable="@drawable/btn_keyboard_key_functional_pressed_you" />
+    <item android:drawable="@drawable/btn_keyboard_key_functional_normal_you" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_ics.xml b/java/res/drawable/btn_keyboard_key_ics.xml
deleted file mode 100644
index bacd5d7..0000000
--- a/java/res/drawable/btn_keyboard_key_ics.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Action keys. -->
-    <item android:state_active="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
-    <item android:state_active="true"
-          android:drawable="@drawable/btn_keyboard_key_active_ics_dark" />
-
-    <!-- Toggle keys. Use checkable/checked state. -->
-    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_on_ics_dark" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_off_ics_dark" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_on_ics_dark" />
-    <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
-    <item android:state_empty="true"
-          android:drawable="@android:color/transparent" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_klp.xml b/java/res/drawable/btn_keyboard_key_klp.xml
deleted file mode 100644
index e2f2085..0000000
--- a/java/res/drawable/btn_keyboard_key_klp.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Action keys. -->
-    <item android:state_active="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
-    <item android:state_active="true"
-          android:drawable="@drawable/btn_keyboard_key_active_klp_dark" />
-
-    <!-- Toggle keys. Use checkable/checked state. -->
-    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_on_klp_dark" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_off_klp_dark" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_on_klp_dark" />
-    <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
-    <item android:state_empty="true"
-          android:drawable="@android:color/transparent" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_normal_you.xml b/java/res/drawable/btn_keyboard_key_normal_you.xml
new file mode 100644
index 0000000..6a5eb99
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_normal_you.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/keyboard_key_normal_color_you"/>
+    <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_popup_ics.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml
deleted file mode 100644
index 17d646b..0000000
--- a/java/res/drawable/btn_keyboard_key_popup_ics.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
-    <item android:drawable="@android:color/transparent" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_pressed_you.xml b/java/res/drawable/btn_keyboard_key_pressed_you.xml
new file mode 100644
index 0000000..c5958b2
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_pressed_you.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/keyboard_key_pressed_color_you" />
+    <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/drawable/btn_keyboard_key_you.xml
similarity index 60%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/drawable/btn_keyboard_key_you.xml
index 229f7a9..0792ade 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_you.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2014 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -15,7 +15,13 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Action keys. -->
+    <item android:state_active="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_active_pressed_lxx_dark" />
+    <item android:state_active="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_you" />
+
     <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_you" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_you" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_klp.xml b/java/res/drawable/btn_keyboard_spacebar_klp.xml
deleted file mode 100644
index 9882f9a..0000000
--- a/java/res/drawable/btn_keyboard_spacebar_klp.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
diff --git a/java/res/drawable/btn_suggestion_ics.xml b/java/res/drawable/btn_suggestion_ics.xml
deleted file mode 100644
index 8f528ee..0000000
--- a/java/res/drawable/btn_suggestion_ics.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
->
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
-</selector>
diff --git a/java/res/drawable/ic_add_circle.xml b/java/res/drawable/ic_add_circle.xml
new file mode 100644
index 0000000..4a8e14b
--- /dev/null
+++ b/java/res/drawable/ic_add_circle.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="?android:attr/colorControlNormal"
+        android:pathData="M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" />
+</vector>
diff --git a/java/res/drawable/ic_emoji_activity_holo_dark.xml b/java/res/drawable/ic_emoji_activity_holo_dark.xml
deleted file mode 100644
index 8eeb640..0000000
--- a/java/res/drawable/ic_emoji_activity_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_activity_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_activity_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_activity_activated_holo_dark" />
-    <item
-        android:drawable="@drawable/ic_emoji_activity_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_emoticons_holo_dark.xml b/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
deleted file mode 100644
index 59e2349..0000000
--- a/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_emoticons_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_flag_holo_dark.xml b/java/res/drawable/ic_emoji_flag_holo_dark.xml
deleted file mode 100644
index c9857fe..0000000
--- a/java/res/drawable/ic_emoji_flag_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_flag_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_flag_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_flag_activated_holo_dark" />
-    <item
-        android:drawable="@drawable/ic_emoji_flag_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_food_holo_dark.xml b/java/res/drawable/ic_emoji_food_holo_dark.xml
deleted file mode 100644
index 2c6c0f2..0000000
--- a/java/res/drawable/ic_emoji_food_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_food_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_food_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_food_activated_holo_dark" />
-    <item
-        android:drawable="@drawable/ic_emoji_food_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_nature_holo_dark.xml b/java/res/drawable/ic_emoji_nature_holo_dark.xml
deleted file mode 100644
index b946295..0000000
--- a/java/res/drawable/ic_emoji_nature_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
-    <item
-        android:drawable="@drawable/ic_emoji_nature_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_objects_holo_dark.xml b/java/res/drawable/ic_emoji_objects_holo_dark.xml
deleted file mode 100644
index 266e81e..0000000
--- a/java/res/drawable/ic_emoji_objects_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_objects_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_people_holo_dark.xml b/java/res/drawable/ic_emoji_people_holo_dark.xml
deleted file mode 100644
index 15955d2..0000000
--- a/java/res/drawable/ic_emoji_people_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_people_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_places_holo_dark.xml b/java/res/drawable/ic_emoji_places_holo_dark.xml
deleted file mode 100644
index 260bbd8..0000000
--- a/java/res/drawable/ic_emoji_places_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_places_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_recents_holo_dark.xml b/java/res/drawable/ic_emoji_recents_holo_dark.xml
deleted file mode 100644
index f14349f..0000000
--- a/java/res/drawable/ic_emoji_recents_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_recents_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_holo_dark.xml b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
deleted file mode 100644
index 831d659..0000000
--- a/java/res/drawable/ic_emoji_symbols_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_symbols_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_background_you.xml b/java/res/drawable/keyboard_key_feedback_background_you.xml
new file mode 100644
index 0000000..b6d874c
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_background_you.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/keyboard_key_normal_color_you"/>
+    <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+    <size
+        android:width="40dp"
+        android:height="1dp" />
+</shape>
diff --git a/java/res/drawable/keyboard_key_feedback_ics.xml b/java/res/drawable/keyboard_key_feedback_ics.xml
deleted file mode 100644
index b52a61f..0000000
--- a/java/res/drawable/keyboard_key_feedback_ics.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- Left edge -->
-    <item latin:state_left_edge="true" latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_left_more_background_ics" />
-    <item latin:state_left_edge="true"
-          android:drawable="@drawable/keyboard_key_feedback_left_background_ics" />
-
-    <!-- Right edge -->
-    <item latin:state_right_edge="true" latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_right_more_background_ics" />
-    <item latin:state_right_edge="true"
-          android:drawable="@drawable/keyboard_key_feedback_right_background_ics" />
-
-    <item latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_more_background_ics" />
-    <item android:drawable="@drawable/keyboard_key_feedback_background_ics" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_klp.xml b/java/res/drawable/keyboard_key_feedback_klp.xml
deleted file mode 100644
index a386556..0000000
--- a/java/res/drawable/keyboard_key_feedback_klp.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source 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.
--->
-
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- Left edge -->
-    <item latin:state_left_edge="true" latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_left_more_background_klp" />
-    <item latin:state_left_edge="true"
-          android:drawable="@drawable/keyboard_key_feedback_left_background_klp" />
-
-    <!-- Right edge -->
-    <item latin:state_right_edge="true" latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_right_more_background_klp" />
-    <item latin:state_right_edge="true"
-          android:drawable="@drawable/keyboard_key_feedback_right_background_klp" />
-
-    <item latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_more_background_klp" />
-    <item android:drawable="@drawable/keyboard_key_feedback_background_klp" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/drawable/keyboard_key_feedback_you.xml
similarity index 67%
rename from java/res/drawable/btn_keyboard_key_popup_klp.xml
rename to java/res/drawable/keyboard_key_feedback_you.xml
index 9dfc93a..76d327c 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/drawable/keyboard_key_feedback_you.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2014 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,8 +14,9 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-    <item android:drawable="@android:color/transparent" />
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <item android:drawable="@drawable/keyboard_key_feedback_background_you" />
 </selector>
diff --git a/java/res/drawable/sym_keyboard_delete_you.xml b/java/res/drawable/sym_keyboard_delete_you.xml
new file mode 100644
index 0000000..0cd1886
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_delete_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_done_you.xml b/java/res/drawable/sym_keyboard_done_you.xml
new file mode 100644
index 0000000..e295a4c
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_done_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_language_switch_you.xml b/java/res/drawable/sym_keyboard_language_switch_you.xml
new file mode 100644
index 0000000..a110e2a
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_language_switch_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_next_you.xml b/java/res/drawable/sym_keyboard_next_you.xml
new file mode 100644
index 0000000..7821bfe
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_next_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_previous_you.xml b/java/res/drawable/sym_keyboard_previous_you.xml
new file mode 100644
index 0000000..1f89790
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_previous_you.xml
@@ -0,0 +1,17 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <group
+        android:translateY="24"
+        android:translateX="24"
+        android:rotation="180">
+
+        <path
+            android:fillColor="@color/icon_color_you"
+            android:pathData="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" />
+    </group>
+</vector>
+
diff --git a/java/res/drawable/sym_keyboard_return_you.xml b/java/res/drawable/sym_keyboard_return_you.xml
new file mode 100644
index 0000000..292128d
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_return_you.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M19,7v4H5.83l3.58,-3.59L8,6l-6,6 6,6 1.41,-1.41L5.83,13H21V7z"/>
+</vector>
+
diff --git a/java/res/drawable/sym_keyboard_search_you.xml b/java/res/drawable/sym_keyboard_search_you.xml
new file mode 100644
index 0000000..48ce580
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_search_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_send_you.xml b/java/res/drawable/sym_keyboard_send_you.xml
new file mode 100644
index 0000000..674c9c1
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_send_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M2,21L23,12L2,3V10L17,12L2,14V21Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_settings_you.xml b/java/res/drawable/sym_keyboard_settings_you.xml
new file mode 100644
index 0000000..1f47957
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_settings_you.xml
@@ -0,0 +1,11 @@
+<!-- drawable/cog.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_shift_locked_you.xml b/java/res/drawable/sym_keyboard_shift_locked_you.xml
new file mode 100644
index 0000000..8e76a9b
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_shift_locked_you.xml
@@ -0,0 +1,15 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <group
+        android:translateY="24"
+        android:translateX="24"
+        android:rotation="180">
+
+        <path
+            android:fillColor="@color/shift_locked_color_you"
+            android:pathData="M9,4H15V12H19.84L12,19.84L4.16,12H9V4Z" />
+    </group>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_shift_you.xml b/java/res/drawable/sym_keyboard_shift_you.xml
new file mode 100644
index 0000000..dbe359e
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_shift_you.xml
@@ -0,0 +1,15 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <group
+        android:translateY="24"
+        android:translateX="24"
+        android:rotation="180">
+
+        <path
+            android:fillColor="@color/shift_normal_color_you"
+            android:pathData="M9,4H15V12H19.84L12,19.84L4.16,12H9V4Z" />
+    </group>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_smiley_you.xml b/java/res/drawable/sym_keyboard_smiley_you.xml
new file mode 100644
index 0000000..c86ede3
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_smiley_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8M8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8M12,17.5C9.67,17.5 7.69,16.04 6.89,14H17.11C16.3,16.04 14.33,17.5 12,17.5Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_tab_you.xml b/java/res/drawable/sym_keyboard_tab_you.xml
new file mode 100644
index 0000000..726268a
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_tab_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_voice_off_you.xml b/java/res/drawable/sym_keyboard_voice_off_you.xml
new file mode 100644
index 0000000..da922cd
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_voice_off_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_voice_you.xml b/java/res/drawable/sym_keyboard_voice_you.xml
new file mode 100644
index 0000000..ca2d0c2
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_voice_you.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:fillColor="@color/icon_color_you"
+        android:pathData="M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z" />
+</vector>
diff --git a/java/res/menu/add_style.xml b/java/res/menu/add_style.xml
index befa3f2..62aa9c0 100644
--- a/java/res/menu/add_style.xml
+++ b/java/res/menu/add_style.xml
@@ -20,7 +20,7 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/action_add_style"
-        android:icon="@drawable/ic_add_circle_white_24dp"
+        android:icon="@drawable/ic_add_circle"
         android:title="@string/add_style"
         android:showAsAction="always" />
 </menu>
diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml
index d36f6a0..fdaba14 100644
--- a/java/res/values-land/config.xml
+++ b/java/res/values-land/config.xml
@@ -78,7 +78,7 @@
 
     <!-- Emoji keyboard -->
     <fraction name="config_emoji_keyboard_key_width">10%p</fraction>
-    <fraction name="config_emoji_keyboard_row_height">50%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
     <fraction name="config_emoji_keyboard_key_letter_size">54%p</fraction>
-    <integer name="config_emoji_keyboard_max_page_key_count">20</integer>
+    <integer name="config_emoji_keyboard_max_page_key_count">30</integer>
 </resources>
diff --git a/java/res/values-night/themes-you-colors.xml b/java/res/values-night/themes-you-colors.xml
new file mode 100644
index 0000000..91e0975
--- /dev/null
+++ b/java/res/values-night/themes-you-colors.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <color name="keyboard_background_you">@android:color/system_neutral1_1000</color>
+    <color name="keyboard_key_normal_color_you">@android:color/system_neutral1_800</color>
+    <color name="keyboard_key_pressed_color_you">@android:color/system_neutral1_900</color>
+    <color name="keyboard_key_text_color_you">@android:color/system_accent1_10</color>
+    <color name="functional_text_color_you">@color/keyboard_key_text_color_you</color>
+    <color name="category_page_indicator_color">@android:color/system_accent3_200</color>
+    <color name="icon_color_you">@android:color/system_accent3_100</color>
+    <color name="functional_normal_color_you">@android:color/system_neutral2_800</color>
+    <color name="functional_pressed_color_you">@android:color/system_neutral2_900</color>
+    <color name="shift_normal_color_you">@android:color/system_neutral1_400</color>
+    <color name="shift_locked_color_you">@android:color/system_accent1_10</color>
+    <color name="key_hint_letter_color_you">@color/key_hint_letter_color_lxx_dark</color>
+    <color name="typed_word_color_you">@color/typed_word_color_lxx_dark</color>
+    <color name="auto_correct_color_you">@color/auto_correct_color_lxx_dark</color>
+    <color name="suggested_word_color_you">@color/suggested_word_color_lxx_dark</color>
+    <color name="highlight_color_you">@color/highlight_color_lxx_dark</color>
+    <color name="gesture_trail_color_you">@android:color/system_accent3_100</color>
+    <color name="gesture_floating_preview_text_color_you">@android:color/system_neutral1_0</color>
+</resources>
diff --git a/java/res/values-sw600dp/config-per-form-factor.xml b/java/res/values-sw600dp/config-per-form-factor.xml
index aa9a054..bb2eaa8 100644
--- a/java/res/values-sw600dp/config-per-form-factor.xml
+++ b/java/res/values-sw600dp/config-per-form-factor.xml
@@ -23,7 +23,7 @@
     <bool name="config_enable_show_key_preview_popup_option">false</bool>
     <!-- Whether or not Popup on key press is enabled by default -->
     <bool name="config_default_key_preview_popup">false</bool>
-    <bool name="config_default_sound_enabled">true</bool>
+    <bool name="config_default_sound_enabled">false</bool>
     <bool name="config_enable_show_voice_key_option">false</bool>
     <bool name="config_key_selection_by_dragging_finger">false</bool>
     <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
diff --git a/java/res/values-sw768dp/config-per-form-factor.xml b/java/res/values-sw768dp/config-per-form-factor.xml
index b90fbae..45ff0b1 100644
--- a/java/res/values-sw768dp/config-per-form-factor.xml
+++ b/java/res/values-sw768dp/config-per-form-factor.xml
@@ -23,7 +23,7 @@
     <bool name="config_enable_show_key_preview_popup_option">false</bool>
     <!-- Whether or not Popup on key press is enabled by default -->
     <bool name="config_default_key_preview_popup">false</bool>
-    <bool name="config_default_sound_enabled">true</bool>
+    <bool name="config_default_sound_enabled">false</bool>
     <bool name="config_enable_show_voice_key_option">false</bool>
     <bool name="config_key_selection_by_dragging_finger">false</bool>
     <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
diff --git a/java/res/values-v19/emoji-categories.xml b/java/res/values-v19/emoji-categories.xml
index d9b1738..d45e028 100644
--- a/java/res/values-v19/emoji-categories.xml
+++ b/java/res/values-v19/emoji-categories.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2015 The Android Open Source Project
+     Copyright (C) 2018 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -244,10 +245,10 @@
         <item>1f6af</item>
         <item>1f6b0</item>
         <item>1f6b1</item>
-        <item>1f170</item>
-        <item>1f171</item>
+        <item>1f170,FE0F</item>
+        <item>1f171,FE0F</item>
         <item>1f18e</item>
-        <item>1f17e</item>
+        <item>1f17e,FE0F</item>
         <item>1f4ae</item>
         <item>1f4af</item>
         <item>1f520</item>
@@ -264,10 +265,10 @@
         <item>1f6ba</item>
         <item>1f6bc</item>
         <item>267f</item>
-        <item>267b</item>
+        <item>267b,FE0F</item>
         <item>1f6ad</item>
         <item>1f6a9</item>
-        <item>26a0</item>
+        <item>26a0,FE0F</item>
         <item>1f201</item>
         <item>1f51e</item>
         <item>26d4</item>
@@ -284,33 +285,33 @@
         <item>1f234</item>
         <item>1f235</item>
         <item>1f236</item>
-        <item>1f237</item>
+        <item>1f237,FE0F</item>
         <item>1f238</item>
         <item>1f239</item>
-        <item>1f202</item>
+        <item>1f202,FE0F</item>
         <item>1f23a</item>
         <item>1f250</item>
         <item>1f251</item>
-        <item>3299</item>
-        <item>00ae</item>
-        <item>00a9</item>
-        <item>2122</item>
+        <item>3299,FE0F</item>
+        <!-- Removed for lack of color glyph support.  <item>00ae</item>  -->
+        <!-- Removed for lack of color glyph support.  <item>00a9</item>  -->
+        <item>2122,FE0F</item>
         <item>1f21a</item>
         <item>1f22f</item>
-        <item>3297</item>
+        <item>3297,FE0F</item>
         <item>2b55</item>
         <item>274c</item>
         <item>274e</item>
-        <item>2139</item>
+        <item>2139,FE0F</item>
         <item>1f6ab</item>
         <item>2705</item>
-        <item>2714</item>
+        <item>2714,FE0F</item>
         <item>1f517</item>
-        <item>2734</item>
-        <item>2733</item>
+        <item>2734,FE0F</item>
+        <item>2733,FE0F</item>
         <item>2795</item>
         <item>2796</item>
-        <item>2716</item>
+        <item>2716,FE0F</item>
         <item>2797</item>
         <item>1f4a0</item>
         <item>1f4a1</item>
@@ -345,27 +346,27 @@
         <item>1f565</item>
         <item>1f55a</item>
         <item>1f566</item>
-        <item>2195</item>
-        <item>2b06</item>
-        <item>2197</item>
-        <item>27a1</item>
-        <item>2198</item>
-        <item>2b07</item>
-        <item>2199</item>
-        <item>2b05</item>
-        <item>2196</item>
-        <item>2194</item>
-        <item>2934</item>
-        <item>2935</item>
+        <item>2195,FE0F</item>
+        <item>2b06,FE0F</item>
+        <item>2197,FE0F</item>
+        <item>27a1,FE0F</item>
+        <item>2198,FE0F</item>
+        <item>2b07,FE0F</item>
+        <item>2199,FE0F</item>
+        <item>2b05,FE0F</item>
+        <item>2196,FE0F</item>
+        <item>2194,FE0F</item>
+        <item>2934,FE0F</item>
+        <item>2935,FE0F</item>
         <item>23ea</item>
         <item>23eb</item>
         <item>23ec</item>
         <item>23e9</item>
-        <item>25c0</item>
-        <item>25b6</item>
+        <item>25c0,FE0F</item>
+        <item>25b6,FE0F</item>
         <item>1f53d</item>
         <item>1f53c</item>
-        <item>2747</item>
+        <item>2747,FE0F</item>
         <item>2728</item>
         <item>1f534</item>
         <item>1f535</item>
@@ -376,12 +377,12 @@
         <item>2b50</item>
         <item>1f31f</item>
         <item>1f320</item>
-        <item>25ab</item>
-        <item>25aa</item>
+        <!-- Removed for lack of color glyph support.  <item>25ab</item>  -->
+        <!-- Removed for lack of color glyph support.  <item>25aa</item>  -->
         <item>25fd</item>
         <item>25fe</item>
-        <item>25fb</item>
-        <item>25fc</item>
+        <!-- Removed for lack of color glyph support.  <item>25fb</item>  -->
+        <!-- Removed for lack of color glyph support.  <item>25fc</item>  -->
         <item>2b1c</item>
         <item>2b1b</item>
         <item>1f538</item>
@@ -394,9 +395,9 @@
         <item>2753</item>
         <item>2755</item>
         <item>2757</item>
-        <item>203c</item>
-        <item>2049</item>
-        <item>3030</item>
+        <item>203c,FE0F</item>
+        <item>2049,FE0F</item>
+        <item>3030,FE0F</item>
         <item>27b0</item>
         <item>2660</item>
         <item>2665</item>
@@ -404,14 +405,14 @@
         <item>2666</item>
         <item>1f194</item>
         <item>1f511</item>
-        <item>21a9</item>
+        <item>21a9,FE0F</item>
         <item>1f191</item>
         <item>1f50d</item>
         <item>1f512</item>
         <item>1f513</item>
-        <item>21aa</item>
+        <item>21aa,FE0F</item>
         <item>1f510</item>
-        <item>2611</item>
+        <item>2611,FE0F</item>
         <item>1f518</item>
         <item>1f50e</item>
         <item>1f516</item>
@@ -428,6 +429,8 @@
         <item>1f508</item>
         <item>1f509</item>
         <item>1f50a</item>
+        <item>1f5a4</item>
+        <item>1f6d1</item>
     </array>
     <array
         name="emoji_faces"
@@ -563,6 +566,20 @@
         <item>1f49b</item>
         <item>1f49c</item>
         <item>1f493</item>
+        <!--item>1f920</item-->
+        <!--item>1f921</item-->
+        <!--item>1f922</item-->
+        <item>1f923</item>
+        <item>1f924</item>
+        <!--item>1f925</item-->
+        <item>1f926</item>
+        <!--item>1f927</item-->
+        <item>1f930</item>
+        <item>1f933</item>
+        <item>1f934</item>
+        <item>1f935</item>
+        <item>1f936</item>
+        <item>1f937</item>
         <item>1f494</item>
         <item>1f495</item>
         <item>1f496</item>
@@ -586,6 +603,12 @@
         <item>1f44b</item>
         <item>1f44f</item>
         <item>1f450</item>
+        <item>1f919</item>
+        <item>1f91a</item>
+        <item>1f91b</item>
+        <item>1f91c</item>
+        <item>1f91d</item>
+        <item>1f91e</item>
     </array>
     <array
         name="emoji_objects"
@@ -677,7 +700,7 @@
         <item>1f4de</item>
         <item>1f4e0</item>
         <item>1f4e6</item>
-        <item>2709</item>
+        <item>2709,FE0F</item>
         <item>1f4e8</item>
         <item>1f4e9</item>
         <item>1f4ea</item>
@@ -693,15 +716,15 @@
         <item>1f4e1</item>
         <item>1f4ac</item>
         <item>1f4ad</item>
-        <item>2712</item>
-        <item>270f</item>
+        <item>2712,FE0F</item>
+        <item>270f,FE0F</item>
         <item>1f4dd</item>
         <item>1f4cf</item>
         <item>1f4d0</item>
         <item>1f4cd</item>
         <item>1f4cc</item>
         <item>1f4ce</item>
-        <item>2702</item>
+        <item>2702,FE0F</item>
         <item>1f4ba</item>
         <item>1f4bb</item>
         <item>1f4bd</item>
@@ -752,7 +775,19 @@
         <item>1f3b7</item>
         <item>1f3ba</item>
         <item>1f3b8</item>
-        <item>303d</item>
+        <item>303d,FE0F</item>
+        <item>1f940</item>
+        <item>1f941</item>
+        <item>1f942</item>
+        <item>1f943</item>
+        <item>1f944</item>
+        <item>1f945</item>
+        <item>1f946</item>
+        <item>1f947</item>
+        <item>1f948</item>
+        <item>1f949</item>
+        <item>1f94a</item>
+        <item>1f94b</item>
     </array>
     <array
         name="emoji_places"
@@ -818,7 +853,7 @@
         <item>1f685</item>
         <item>1f686</item>
         <item>1f687</item>
-        <item>24c2</item>
+        <item>24c2,FE0F</item>
         <item>1f688</item>
         <item>1f68a</item>
         <item>1f68b</item>
@@ -847,7 +882,7 @@
         <item>1f6a2</item>
         <item>1f6a3</item>
         <item>1f681</item>
-        <item>2708</item>
+        <item>2708,FE0F</item>
         <item>1f6c2</item>
         <item>1f6c3</item>
         <item>1f6c4</item>
@@ -864,12 +899,12 @@
         <item>1f6a4</item>
         <item>1f6b6</item>
         <item>26fd</item>
-        <item>1f17f</item>
+        <item>1f17f,FE0F</item>
         <item>1f6a5</item>
         <item>1f6a6</item>
         <item>1f6a7</item>
         <item>1f6a8</item>
-        <item>2668</item>
+        <item>2668,FE0F</item>
         <item>1f48c</item>
         <item>1f48d</item>
         <item>1f48e</item>
@@ -1120,1596 +1155,2553 @@
         <item>1f1ff,1f1f2</item>
         <item>1f1ff,1f1fc</item>
     </array>
+
+    <!-- Reference: https://unicode.org/emoji/charts/full-emoji-list.html -->
+
     <array
         name="emoji_emoticons"
         format="string"
     >
-        <item>=-O</item>
-        <item>:-P</item>
-        <item>;-)</item>
-        <item>:-(</item>
-        <item>:-)</item>
-        <item>:-!</item>
-        <item>:-$</item>
-        <item>B-)</item>
-        <item>:O</item>
-        <item>:-*</item>
-        <item>:-D</item>
-        <item>:\'(</item>
-        <item>:-\\</item>
-        <item>O:-)</item>
-        <item>:-[</item>
+        <item>(╯°</item>
+        <item>□°)</item>
+        <item>╯︵ </item>
+        <item>┻━┻</item>
+        <item> ¯\\_</item>
+        <item>(ツ)</item>
+        <item>_/¯</item>
+        <item>┬─┬</item>
+        <item>︵ /(</item>
+        <item>.□.\\</item>
     </array>
     <array
         name="emoji_eight_symbols"
         format="string"
     >
-        <item>1f3c1</item>
-        <item>1f3f3</item>
-        <item>1f3f4</item>
-        <item>1f6a9</item>
-        <item>1f3e7</item>
-        <item>1f6ae</item>
-        <item>1f6b0</item>
-        <item>267f</item>
-        <item>1f6b9</item>
-        <item>1f6ba</item>
-        <item>1f6bb</item>
-        <item>1f6bc</item>
-        <item>1f6be</item>
-        <item>1f6c2</item>
-        <item>1f6c3</item>
-        <item>1f6c4</item>
-        <item>1f6c5</item>
-        <item>26a0</item>
-        <item>1f6b8</item>
-        <item>26d4</item>
-        <item>1f6ab</item>
-        <item>1f6b3</item>
-        <item>1f6ad</item>
-        <item>1f6af</item>
-        <item>1f6b1</item>
-        <item>1f6b7</item>
-        <item>2622</item>
-        <item>2623</item>
-        <item>2b06</item>
-        <item>2197</item>
-        <item>27a1</item>
-        <item>2198</item>
-        <item>2b07</item>
-        <item>2199</item>
-        <item>2b05</item>
-        <item>2196</item>
-        <item>2195</item>
-        <item>2194</item>
-        <item>21a9</item>
-        <item>21aa</item>
-        <item>2934</item>
-        <item>2935</item>
-        <item>1f503</item>
-        <item>1f504</item>
-        <item>1f519</item>
-        <item>1f51a</item>
-        <item>1f51b</item>
-        <item>1f51c</item>
-        <item>1f51d</item>
-        <item>1f6d0</item>
-        <item>269b</item>
-        <!-- Removed for lack of color glyph support.  <item>1f549</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>2721</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>2638</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>262f</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>271d</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>2626</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>262a</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>262e</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f54e</item>  -->
-        <item>1f52f</item>
-        <item>267b</item>
-        <item>1f4db</item>
-        <!-- Removed for lack of color glyph support.  <item>269c</item>  -->
-        <item>1f530</item>
-        <item>1f531</item>
-        <item>2b55</item>
-        <item>2705</item>
-        <item>2611</item>
-        <item>2714</item>
-        <item>2716</item>
-        <item>274c</item>
-        <item>274e</item>
-        <item>2795</item>
-        <item>2796</item>
-        <item>2797</item>
-        <item>27b0</item>
-        <item>27bf</item>
-        <item>303d</item>
-        <item>2733</item>
-        <item>2734</item>
-        <item>2747</item>
-        <item>1f4b1</item>
-        <item>1f4b2</item>
-        <item>203c</item>
-        <item>2049</item>
-        <item>2753</item>
-        <item>2754</item>
-        <item>2755</item>
-        <item>2757</item>
-        <item>3030</item>
-        <item>a9</item>
-        <item>ae</item>
-        <item>2122</item>
+        <!-- transport-sign -->
+        <item>1F3E7</item>
+        <item>1F6AE</item>
+        <item>1F6B0</item>
+        <item>267F</item>
+        <item>1F6B9</item>
+        <item>1F6BA</item>
+        <item>1F6BB</item>
+        <item>1F6BC</item>
+        <item>1F6BE</item>
+        <item>1F6C2</item>
+        <item>1F6C3</item>
+        <item>1F6C4</item>
+        <item>1F6C5</item>
+        <!-- warning -->
+        <item>26A0,FE0F</item>
+        <item>1F6B8</item>
+        <item>26D4</item>
+        <item>1F6AB</item>
+        <item>1F6B3</item>
+        <item>1F6AD</item>
+        <item>1F6AF</item>
+        <item>1F6B1</item>
+        <item>1F6B7</item>
+        <item>1F4F5</item>
+        <item>1F51E</item>
+        <item>2622,FE0F</item>
+        <item>2623,FE0F</item>
+        <!-- arrow -->
+        <item>2B06,FE0F</item>
+        <item>2197,FE0F</item>
+        <item>27A1,FE0F</item>
+        <item>2198,FE0F</item>
+        <item>2B07,FE0F</item>
+        <item>2199,FE0F</item>
+        <item>2B05,FE0F</item>
+        <item>2196,FE0F</item>
+        <item>2195,FE0F</item>
+        <item>2194,FE0F</item>
+        <item>21A9,FE0F</item>
+        <item>21AA,FE0F</item>
+        <item>2934,FE0F</item>
+        <item>2935,FE0F</item>
+        <item>1F503</item>
+        <item>1F504</item>
+        <item>1F519</item>
+        <item>1F51A</item>
+        <item>1F51B</item>
+        <item>1F51C</item>
+        <item>1F51D</item>
+        <!-- religion -->
+        <item>1F6D0</item>
+        <item>269B,FE0F</item>
+        <item>1F549</item>
+        <item>2721,FE0F</item>
+        <item>2638,FE0F</item>
+        <item>262F,FE0F</item>
+        <item>271D,FE0F</item>
+        <item>2626,FE0F</item>
+        <item>262A,FE0F</item>
+        <item>262E,FE0F</item>
+        <item>1F54E</item>
+        <item>1F52F</item>
+        <!-- zodiac -->
         <item>2648</item>
         <item>2649</item>
-        <item>264a</item>
-        <item>264b</item>
-        <item>264c</item>
-        <item>264d</item>
-        <item>264e</item>
-        <item>264f</item>
+        <item>264A</item>
+        <item>264B</item>
+        <item>264C</item>
+        <item>264D</item>
+        <item>264E</item>
+        <item>264F</item>
         <item>2650</item>
         <item>2651</item>
         <item>2652</item>
         <item>2653</item>
-        <item>26ce</item>
-        <item>1f500</item>
-        <item>1f501</item>
-        <item>1f502</item>
-        <item>25b6</item>
-        <item>23e9</item>
-        <item>23ed</item>
-        <item>23ef</item>
-        <item>25c0</item>
-        <item>23ea</item>
-        <item>23ee</item>
-        <item>1f53c</item>
-        <item>23eb</item>
-        <item>1f53d</item>
-        <item>23ec</item>
-        <item>23f8</item>
-        <item>23f9</item>
-        <item>23fa</item>
-        <item>23cf</item>
-        <item>1f3a6</item>
-        <item>1f505</item>
-        <item>1f506</item>
-        <item>1f4f6</item>
-        <item>1f4f5</item>
-        <item>1f4f3</item>
-        <item>1f4f4</item>
-        <item>23,20e3</item>
-        <item>2a,20e3</item>
-        <item>30,20e3</item>
-        <item>31,20e3</item>
-        <item>32,20e3</item>
-        <item>33,20e3</item>
-        <item>34,20e3</item>
-        <item>35,20e3</item>
-        <item>36,20e3</item>
-        <item>37,20e3</item>
-        <item>38,20e3</item>
-        <item>39,20e3</item>
-        <item>1f51f</item>
-        <item>1f4af</item>
-        <item>1f51e</item>
-        <item>1f520</item>
-        <item>1f521</item>
-        <item>1f522</item>
-        <item>1f523</item>
-        <item>1f524</item>
-        <item>1f170</item>
-        <item>1f18e</item>
-        <item>1f171</item>
-        <item>1f191</item>
-        <item>1f192</item>
-        <item>1f193</item>
-        <item>2139</item>
-        <item>1f194</item>
-        <item>24c2</item>
-        <item>1f195</item>
-        <item>1f196</item>
-        <item>1f17e</item>
-        <item>1f197</item>
-        <item>1f17f</item>
-        <item>1f198</item>
-        <item>1f199</item>
-        <item>1f19a</item>
-        <item>1f201</item>
-        <item>1f202</item>
-        <item>1f237</item>
-        <item>1f236</item>
-        <item>1f22f</item>
-        <item>1f250</item>
-        <item>1f239</item>
-        <item>1f21a</item>
-        <item>1f232</item>
-        <item>1f251</item>
-        <item>1f238</item>
-        <item>1f234</item>
-        <item>1f233</item>
-        <item>3297</item>
-        <item>3299</item>
-        <item>1f23a</item>
-        <item>1f235</item>
-        <item>25aa</item>
-        <item>25ab</item>
-        <item>25fb</item>
-        <item>25fc</item>
-        <item>25fd</item>
-        <item>25fe</item>
-        <item>2b1b</item>
-        <item>2b1c</item>
-        <item>1f536</item>
-        <item>1f537</item>
-        <item>1f538</item>
-        <item>1f539</item>
-        <item>1f53a</item>
-        <item>1f53b</item>
-        <item>1f4a0</item>
-        <item>1f518</item>
-        <item>1f532</item>
-        <item>1f533</item>
-        <item>26aa</item>
-        <item>26ab</item>
-        <item>1f534</item>
-        <item>1f535</item>
+        <item>26CE</item>
+        <!-- av-symbol -->
+        <item>1F500</item>
+        <item>1F501</item>
+        <item>1F502</item>
+        <item>25B6,FE0F</item>
+        <item>23E9</item>
+        <item>23ED,FE0F</item>
+        <item>23EF,FE0F</item>
+        <item>25C0,FE0F</item>
+        <item>23EA</item>
+        <item>23EE,FE0F</item>
+        <item>1F53C</item>
+        <item>23EB</item>
+        <item>1F53D</item>
+        <item>23EC</item>
+        <item>23F8</item>
+        <item>23F9</item>
+        <item>23FA</item>
+        <item>23CF,FE0F</item>
+        <item>1F3A6</item>
+        <item>1F505</item>
+        <item>1F506</item>
+        <item>1F4F6</item>
+        <item>1F4F3</item>
+        <item>1F4F4</item>
+        <!-- gender -->
+        <item>2640,FE0F</item>
+        <item>2642,FE0F</item>
+        <item>26A7</item>
+        <!-- math -->
+        <item>2716,FE0F</item>
+        <item>2795</item>
+        <item>2796</item>
+        <item>2797</item>
+        <item>267E,FE0F</item>
+        <!-- punctuation -->
+        <item>203C,FE0F</item>
+        <item>2049,FE0F</item>
+        <item>2753</item>
+        <item>2754</item>
+        <item>2755</item>
+        <item>2757</item>
+        <item>3030,FE0F</item>
+        <!-- currency -->
+        <item>1F4B1</item>
+        <item>1F4B2</item>
+        <!-- other-symbol -->
+        <item>2695,FE0F</item>
+        <item>267B,FE0F</item>
+        <item>269C,FE0F</item>
+        <item>1F531</item>
+        <item>1F4DB</item>
+        <item>1F530</item>
+        <item>2B55</item>
+        <item>2705</item>
+        <item>2611,FE0F</item>
+        <item>2714,FE0F</item>
+        <item>274C</item>
+        <item>274E</item>
+        <item>27B0</item>
+        <item>27BF</item>
+        <item>303D,FE0F</item>
+        <item>2733,FE0F</item>
+        <item>2734,FE0F</item>
+        <item>2747,FE0F</item>
+        <item>00A9,FE0F</item>
+        <item>00AE,FE0F</item>
+        <item>2122,FE0F</item>
+        <!-- keycap -->
+        <item>0023,FE0F,20E3</item>
+        <item>002A,FE0F,20E3</item>
+        <item>0030,FE0F,20E3</item>
+        <item>0031,FE0F,20E3</item>
+        <item>0032,FE0F,20E3</item>
+        <item>0033,FE0F,20E3</item>
+        <item>0034,FE0F,20E3</item>
+        <item>0035,FE0F,20E3</item>
+        <item>0036,FE0F,20E3</item>
+        <item>0037,FE0F,20E3</item>
+        <item>0038,FE0F,20E3</item>
+        <item>0039,FE0F,20E3</item>
+        <item>1F51F</item>
+        <!-- alphanum -->
+        <item>1F520</item>
+        <item>1F521</item>
+        <item>1F522</item>
+        <item>1F523</item>
+        <item>1F524</item>
+        <item>1F170,FE0F</item>
+        <item>1F18E</item>
+        <item>1F171,FE0F</item>
+        <item>1F191</item>
+        <item>1F192</item>
+        <item>1F193</item>
+        <item>2139,FE0F</item>
+        <item>1F194</item>
+        <item>24C2,FE0F</item>
+        <item>1F195</item>
+        <item>1F196</item>
+        <item>1F17E,FE0F</item>
+        <item>1F197</item>
+        <item>1F17F,FE0F</item>
+        <item>1F198</item>
+        <item>1F199</item>
+        <item>1F19A</item>
+        <item>1F201</item>
+        <item>1F202,FE0F</item>
+        <item>1F237,FE0F</item>
+        <item>1F236</item>
+        <item>1F22F</item>
+        <item>1F250</item>
+        <item>1F239</item>
+        <item>1F21A</item>
+        <item>1F232</item>
+        <item>1F251</item>
+        <item>1F238</item>
+        <item>1F234</item>
+        <item>1F233</item>
+        <item>3297,FE0F</item>
+        <item>3299,FE0F</item>
+        <item>1F23A</item>
+        <item>1F235</item>
+        <!-- geometric -->
+        <item>1F534</item>
+        <item>1F7E0</item>
+        <item>1F7E1</item>
+        <item>1F7E2</item>
+        <item>1F535</item>
+        <item>1F7E3</item>
+        <item>1F7E4</item>
+        <item>26AB</item>
+        <item>26AA</item>
+        <item>1F7E5</item>
+        <item>1F7E7</item>
+        <item>1F7E8</item>
+        <item>1F7E9</item>
+        <item>1F7E6</item>
+        <item>1F7EA</item>
+        <item>1F7EB</item>
+        <item>2B1B</item>
+        <item>2B1C</item>
+        <item>25FC,FE0F</item>
+        <item>25FB,FE0F</item>
+        <item>25FE</item>
+        <item>25FD</item>
+        <item>25AA,FE0F</item>
+        <item>25AB,FE0F</item>
+        <item>1F536</item>
+        <item>1F537</item>
+        <item>1F538</item>
+        <item>1F539</item>
+        <item>1F53A</item>
+        <item>1F53B</item>
+        <item>1F4A0</item>
+        <item>1F518</item>
+        <item>1F533</item>
+        <item>1F532</item>
     </array>
     <array
         name="emoji_eight_animals_nature"
         format="string"
     >
-        <item>1f435</item>
-        <item>1f412</item>
-        <item>1f436</item>
-        <item>1f415</item>
-        <item>1f429</item>
-        <item>1f43a</item>
-        <item>1f431</item>
-        <item>1f408</item>
-        <item>1f981</item>
-        <item>1f42f</item>
-        <item>1f405</item>
-        <item>1f406</item>
-        <item>1f434</item>
-        <item>1f40e</item>
-        <item>1f984</item>
-        <item>1f42e</item>
-        <item>1f402</item>
-        <item>1f403</item>
-        <item>1f404</item>
-        <item>1f437</item>
-        <item>1f416</item>
-        <item>1f417</item>
-        <item>1f43d</item>
-        <item>1f40f</item>
-        <item>1f411</item>
-        <item>1f410</item>
-        <item>1f42a</item>
-        <item>1f42b</item>
-        <item>1f418</item>
-        <item>1f42d</item>
-        <item>1f401</item>
-        <item>1f400</item>
-        <item>1f439</item>
-        <item>1f430</item>
-        <item>1f407</item>
-        <item>1f43f</item>
-        <item>1f43b</item>
-        <item>1f428</item>
-        <item>1f43c</item>
-        <item>1f43e</item>
-        <item>1f983</item>
-        <item>1f414</item>
-        <item>1f413</item>
-        <item>1f423</item>
-        <item>1f424</item>
-        <item>1f425</item>
-        <item>1f426</item>
-        <item>1f427</item>
-        <item>1f54a</item>
-        <item>1f438</item>
-        <item>1f40a</item>
-        <item>1f422</item>
-        <item>1f40d</item>
-        <item>1f432</item>
-        <item>1f409</item>
-        <item>1f433</item>
-        <item>1f40b</item>
-        <item>1f42c</item>
-        <item>1f41f</item>
-        <item>1f420</item>
-        <item>1f421</item>
-        <item>1f419</item>
-        <item>1f41a</item>
-        <item>1f980</item>
-        <item>1f40c</item>
-        <item>1f41b</item>
-        <item>1f41c</item>
-        <item>1f41d</item>
-        <item>1f41e</item>
-        <item>1f577</item>
-        <item>1f578</item>
-        <item>1f982</item>
-        <item>1f490</item>
-        <item>1f338</item>
-        <item>1f4ae</item>
-        <item>1f3f5</item>
-        <item>1f339</item>
-        <item>1f33a</item>
-        <item>1f33b</item>
-        <item>1f33c</item>
-        <item>1f337</item>
-        <!-- Removed for lack of color glyph support.  <item>2618</item>  -->
-        <item>1f331</item>
-        <item>1f332</item>
-        <item>1f333</item>
-        <item>1f334</item>
-        <item>1f335</item>
-        <item>1f33e</item>
-        <item>1f33f</item>
-        <item>1f340</item>
-        <item>1f341</item>
-        <item>1f342</item>
-        <item>1f343</item>
+        <!-- animal-mammal -->
+        <item>1F435</item>
+        <item>1F412</item>
+        <item>1F98D</item>
+        <item>1F9A7</item>
+        <item>1F436</item>
+        <item>1F415</item>
+        <item>1F9AE</item>
+        <item>1F415,200D,1F9BA</item>
+        <item>1F429</item>
+        <item>1F43A</item>
+        <item>1F98A</item>
+        <item>1F99D</item>
+        <item>1F431</item>
+        <item>1F408</item>
+        <item>1F408,200D,2B1B</item>
+        <item>1F981</item>
+        <item>1F42F</item>
+        <item>1F405</item>
+        <item>1F406</item>
+        <item>1F434</item>
+        <item>1F40E</item>
+        <item>1F984</item>
+        <item>1F993</item>
+        <item>1F98C</item>
+        <item>1F9AC</item>
+        <item>1F42E</item>
+        <item>1F402</item>
+        <item>1F403</item>
+        <item>1F404</item>
+        <item>1F437</item>
+        <item>1F416</item>
+        <item>1F417</item>
+        <item>1F43D</item>
+        <item>1F40F</item>
+        <item>1F411</item>
+        <item>1F410</item>
+        <item>1F42A</item>
+        <item>1F42B</item>
+        <item>1F999</item>
+        <item>1F992</item>
+        <item>1F418</item>
+        <item>1F9A3</item>
+        <item>1F98F</item>
+        <item>1F99B</item>
+        <item>1F42D</item>
+        <item>1F401</item>
+        <item>1F400</item>
+        <item>1F439</item>
+        <item>1F430</item>
+        <item>1F407</item>
+        <item>1F43F</item>
+        <item>1F9AB</item>
+        <item>1F994</item>
+        <item>1F987</item>
+        <item>1F43B</item>
+        <item>1F43B,200D,2744,FE0F</item>
+        <item>1F428</item>
+        <item>1F43C</item>
+        <item>1F9A5</item>
+        <item>1F9A6</item>
+        <item>1F9A8</item>
+        <item>1F998</item>
+        <item>1F9A1</item>
+        <item>1F43E</item>
+        <!-- animal-bird -->
+        <item>1F983</item>
+        <item>1F414</item>
+        <item>1F413</item>
+        <item>1F423</item>
+        <item>1F424</item>
+        <item>1F425</item>
+        <item>1F426</item>
+        <item>1F427</item>
+        <item>1F54A</item>
+        <item>1F985</item>
+        <item>1F986</item>
+        <item>1F9A2</item>
+        <item>1F989</item>
+        <item>1F9A4</item>
+        <item>1FAB6</item>
+        <item>1F9A9</item>
+        <item>1F99A</item>
+        <item>1F99C</item>
+        <!-- animal-amphibian -->
+        <item>1F438</item>
+        <!-- animal-reptile -->
+        <item>1F40A</item>
+        <item>1F422</item>
+        <item>1F98E</item>
+        <item>1F40D</item>
+        <item>1F432</item>
+        <item>1F409</item>
+        <item>1F995</item>
+        <item>1F996</item>
+        <!-- animal-marine -->
+        <item>1F433</item>
+        <item>1F40B</item>
+        <item>1F42C</item>
+        <item>1F9AD</item>
+        <item>1F41F</item>
+        <item>1F420</item>
+        <item>1F421</item>
+        <item>1F988</item>
+        <item>1F419</item>
+        <item>1F41A</item>
+        <item>1FAB8</item>
+        <!-- animal-bug -->
+        <item>1F40C</item>
+        <item>1F98B</item>
+        <item>1F41B</item>
+        <item>1F41C</item>
+        <item>1F41D</item>
+        <item>1FAB2</item>
+        <item>1F41E</item>
+        <item>1F997</item>
+        <item>1FAB3</item>
+        <item>1F577</item>
+        <item>1F578</item>
+        <item>1F982</item>
+        <item>1F99F</item>
+        <item>1FAB0</item>
+        <item>1FAB1</item>
+        <item>1F9A0</item>
+        <!-- plant-flower -->
+        <item>1F490</item>
+        <item>1F338</item>
+        <item>1F4AE</item>
+        <item>1FAB7</item>
+        <item>1F3F5</item>
+        <item>1F339</item>
+        <item>1F940</item>
+        <item>1F33A</item>
+        <item>1F33B</item>
+        <item>1F33C</item>
+        <item>1F337</item>
+        <!-- plant-other -->
+        <item>1F331</item>
+        <item>1FAB4</item>
+        <item>1F332</item>
+        <item>1F333</item>
+        <item>1F334</item>
+        <item>1F335</item>
+        <item>1F33E</item>
+        <item>1F33F</item>
+        <item>2618,FE0F</item>
+        <item>1F340</item>
+        <item>1F341</item>
+        <item>1F342</item>
+        <item>1F343</item>
+        <item>1FAB9</item>
+        <item>1FABA</item>
     </array>
     <array
         name="emoji_eight_smiley_people"
         format="string"
     >
-        <item>1f600</item>
-        <item>1f601</item>
-        <item>1f602</item>
-        <item>1f603</item>
-        <item>1f604</item>
-        <item>1f605</item>
-        <item>1f606</item>
-        <item>1f609</item>
-        <item>1f60a</item>
-        <item>1f60b</item>
-        <item>1f60e</item>
-        <item>1f60d</item>
-        <item>1f618</item>
-        <item>1f617</item>
-        <item>1f619</item>
-        <item>1f61a</item>
-        <item>263a</item>
-        <item>1f642</item>
-        <item>1f917</item>
-        <item>1f607</item>
-        <item>1f914</item>
-        <item>1f610</item>
-        <item>1f611</item>
-        <item>1f636</item>
-        <item>1f644</item>
-        <item>1f60f</item>
-        <item>1f623</item>
-        <item>1f625</item>
-        <item>1f62e</item>
-        <item>1f910</item>
-        <item>1f62f</item>
-        <item>1f62a</item>
-        <item>1f62b</item>
-        <item>1f634</item>
-        <item>1f60c</item>
-        <item>1f913</item>
-        <item>1f61b</item>
-        <item>1f61c</item>
-        <item>1f61d</item>
-        <!-- Removed for lack of color glyph support.  <item>2639</item>  -->
-        <item>1f641</item>
-        <item>1f612</item>
-        <item>1f613</item>
-        <item>1f614</item>
-        <item>1f615</item>
-        <item>1f616</item>
-        <item>1f643</item>
-        <item>1f637</item>
-        <item>1f912</item>
-        <item>1f915</item>
-        <item>1f911</item>
-        <item>1f632</item>
-        <item>1f61e</item>
-        <item>1f61f</item>
-        <item>1f624</item>
-        <item>1f622</item>
-        <item>1f62d</item>
-        <item>1f626</item>
-        <item>1f627</item>
-        <item>1f628</item>
-        <item>1f629</item>
-        <item>1f62c</item>
-        <item>1f630</item>
-        <item>1f631</item>
-        <item>1f633</item>
-        <item>1f635</item>
-        <item>1f621</item>
-        <item>1f620</item>
-        <item>1f608</item>
-        <item>1f47f</item>
-        <item>1f479</item>
-        <item>1f47a</item>
-        <item>1f480</item>
-        <!-- Removed for lack of color glyph support.  <item>2620</item>  -->
-        <item>1f47b</item>
-        <item>1f47d</item>
-        <item>1f47e</item>
-        <item>1f916</item>
-        <item>1f4a9</item>
-        <item>1f63a</item>
-        <item>1f638</item>
-        <item>1f639</item>
-        <item>1f63b</item>
-        <item>1f63c</item>
-        <item>1f63d</item>
-        <item>1f640</item>
-        <item>1f63f</item>
-        <item>1f63e</item>
-        <item>1f648</item>
-        <item>1f649</item>
-        <item>1f64a</item>
-        <item>1f466</item>
-        <item>1f467</item>
-        <item>1f468</item>
-        <item>1f469</item>
-        <item>1f474</item>
-        <item>1f475</item>
-        <item>1f476</item>
-        <item>1f471</item>
-        <item>1f46e</item>
-        <item>1f472</item>
-        <item>1f473</item>
-        <item>1f477</item>
-        <!-- Removed for lack of color glyph support.  <item>26d1</item>  -->
-        <item>1f478</item>
-        <item>1f482</item>
-        <item>1f575</item>
-        <item>1f385</item>
-        <item>1f47c</item>
-        <item>1f46f</item>
-        <item>1f486</item>
-        <item>1f487</item>
-        <item>1f470</item>
-        <item>1f64d</item>
-        <item>1f64e</item>
-        <item>1f645</item>
-        <item>1f646</item>
-        <item>1f481</item>
-        <item>1f64b</item>
-        <item>1f647</item>
-        <item>1f64c</item>
-        <item>1f64f</item>
-        <item>1f5e3</item>
-        <item>1f464</item>
-        <item>1f465</item>
-        <item>1f6b6</item>
-        <item>1f3c3</item>
-        <item>1f483</item>
-        <item>1f574</item>
-        <item>1f46b</item>
-        <item>1f46c</item>
-        <item>1f46d</item>
-        <item>1f48f</item>
-        <item>1f468,200d,2764,fe0f,200d,1f48b,200d,1f468</item>
-        <item>1f469,200d,2764,fe0f,200d,1f48b,200d,1f469</item>
-        <item>1f491</item>
-        <item>1f468,200d,2764,fe0f,200d,1f468</item>
-        <item>1f469,200d,2764,fe0f,200d,1f469</item>
-        <item>1f46a</item>
-        <item>1f468,200d,1f468,200d,1f466</item>
-        <item>1f468,200d,1f468,200d,1f466,200d,1f466</item>
-        <item>1f468,200d,1f468,200d,1f467</item>
-        <item>1f468,200d,1f468,200d,1f467,200d,1f466</item>
-        <item>1f468,200d,1f468,200d,1f467,200d,1f467</item>
-        <item>1f468,200d,1f469,200d,1f466</item>
-        <item>1f468,200d,1f469,200d,1f466,200d,1f466</item>
-        <item>1f468,200d,1f469,200d,1f467</item>
-        <item>1f468,200d,1f469,200d,1f467,200d,1f466</item>
-        <item>1f468,200d,1f469,200d,1f467,200d,1f467</item>
-        <item>1f469,200d,1f469,200d,1f466</item>
-        <item>1f469,200d,1f469,200d,1f466,200d,1f466</item>
-        <item>1f469,200d,1f469,200d,1f467</item>
-        <item>1f469,200d,1f469,200d,1f467,200d,1f466</item>
-        <item>1f469,200d,1f469,200d,1f467,200d,1f467</item>
-        <!-- Removed for lack of color glyph support.  <item>1f3fb</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3fc</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3fd</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3fe</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3ff</item>  -->
-        <item>1f4aa</item>
-        <item>1f448</item>
-        <item>1f449</item>
-        <item>261d</item>
-        <item>1f446</item>
-        <item>1f595</item>
-        <item>1f447</item>
-        <item>270c</item>
-        <item>1f596</item>
-        <item>1f918</item>
-        <item>1f590</item>
-        <item>270a</item>
-        <item>270b</item>
-        <item>1f44a</item>
-        <item>1f44c</item>
-        <item>1f44d</item>
-        <item>1f44e</item>
-        <item>1f44b</item>
-        <item>1f44f</item>
-        <item>1f450</item>
-        <!-- Removed for lack of color glyph support.  <item>270d</item>  -->
-        <item>1f485</item>
-        <item>1f442</item>
-        <item>1f443</item>
-        <item>1f463</item>
-        <item>1f440</item>
-        <item>1f441</item>
-        <item>1f445</item>
-        <item>1f444</item>
-        <item>1f48b</item>
-        <item>1f498</item>
+        <!-- face-smiling -->
+        <item>1F600</item>
+        <item>1F603</item>
+        <item>1F604</item>
+        <item>1F601</item>
+        <item>1F606</item>
+        <item>1F605</item>
+        <item>1F923</item>
+        <item>1F602</item>
+        <item>1F642</item>
+        <item>1F643</item>
+        <item>1FAE0</item>
+        <item>1F609</item>
+        <item>1F60A</item>
+        <item>1F607</item>
+        <!-- face-affection -->
+        <item>1F970</item>
+        <item>1F60D</item>
+        <item>1F929</item>
+        <item>1F618</item>
+        <item>1F617</item>
+        <item>263A</item>
+        <item>1F61A</item>
+        <item>1F619</item>
+        <item>1F972</item>
+        <!-- face-tongue -->
+        <item>1F60B</item>
+        <item>1F61B</item>
+        <item>1F61C</item>
+        <item>1F92A</item>
+        <item>1F61D</item>
+        <item>1F911</item>
+        <!-- face-hand -->
+        <item>1F917</item>
+        <item>1F92D</item>
+        <item>1FAE2</item>
+        <item>1FAE3</item>
+        <item>1F92B</item>
+        <item>1F914</item>
+        <item>1FAE1</item>
+        <!-- face-neutral-skeptical -->
+        <item>1F910</item>
+        <item>1F928</item>
+        <item>1F610</item>
+        <item>1F611</item>
+        <item>1F636</item>
+        <item>1FAE5</item>
+        <item>1F636,200D,1F32B,FE0F</item>
+        <item>1F60F</item>
+        <item>1F612</item>
+        <item>1F644</item>
+        <item>1F62C</item>
+        <item>1F62E,200D,1F4A8</item>
+        <item>1F925</item>
+        <!-- face-sleepy -->
+        <item>1F60C</item>
+        <item>1F614</item>
+        <item>1F62A</item>
+        <item>1F924</item>
+        <item>1F634</item>
+        <!-- face-unwell -->
+        <item>1F637</item>
+        <item>1F912</item>
+        <item>1F915</item>
+        <item>1F922</item>
+        <item>1F92E</item>
+        <item>1F927</item>
+        <item>1F975</item>
+        <item>1F976</item>
+        <item>1F974</item>
+        <item>1F635</item>
+        <item>1F635,200D,1F4AB</item>
+        <item>1F92F</item>
+        <!-- face-hat -->
+        <item>1F920</item>
+        <item>1F973</item>
+        <item>1F978</item>
+        <!-- face-glasses -->
+        <item>1F60E</item>
+        <item>1F913</item>
+        <item>1F9D0</item>
+        <!-- face-concerned -->
+        <item>1F615</item>
+        <item>1FAE4</item>
+        <item>1F61F</item>
+        <item>1F641</item>
+        <item>2639,FE0F</item>
+        <item>1F62E</item>
+        <item>1F62F</item>
+        <item>1F632</item>
+        <item>1F633</item>
+        <item>1F97A</item>
+        <item>1F979</item>
+        <item>1F626</item>
+        <item>1F627</item>
+        <item>1F628</item>
+        <item>1F630</item>
+        <item>1F625</item>
+        <item>1F622</item>
+        <item>1F62D</item>
+        <item>1F631</item>
+        <item>1F616</item>
+        <item>1F623</item>
+        <item>1F61E</item>
+        <item>1F613</item>
+        <item>1F629</item>
+        <item>1F62B</item>
+        <item>1F971</item>
+        <!-- face-negative -->
+        <item>1F624</item>
+        <item>1F621</item>
+        <item>1F620</item>
+        <item>1F92C</item>
+        <item>1F608</item>
+        <item>1F47F</item>
+        <item>1F480</item>
+        <item>2620,FE0F</item>
+        <!-- face-costume -->
+        <item>1F4A9</item>
+        <item>1F921</item>
+        <item>1F479</item>
+        <item>1F47A</item>
+        <item>1F47B</item>
+        <item>1F47D</item>
+        <item>1F47E</item>
+        <item>1F916</item>
+        <!-- cat-face -->
+        <item>1F63A</item>
+        <item>1F638</item>
+        <item>1F639</item>
+        <item>1F63B</item>
+        <item>1F63C</item>
+        <item>1F63D</item>
+        <item>1F640</item>
+        <item>1F63F</item>
+        <item>1F63E</item>
+        <!-- monkey-face -->
+        <item>1F648</item>
+        <item>1F649</item>
+        <item>1F64A</item>
+        <!-- emotion -->
+        <item>1F48B</item>
+        <item>1F48C</item>
+        <item>1F498</item>
+        <item>1F49D</item>
+        <item>1F496</item>
+        <item>1F497</item>
+        <item>1F493</item>
+        <item>1F49E</item>
+        <item>1F495</item>
+        <item>1F49F</item>
+        <item>2763,FE0F</item>
+        <item>1F494</item>
+        <item>2764,FE0F,200D,1F525</item>
+        <item>2764,FE0F,200D,1FA79</item>
         <item>2764</item>
-        <item>1f493</item>
-        <item>1f494</item>
-        <item>1f495</item>
-        <item>1f496</item>
-        <item>1f497</item>
-        <item>1f499</item>
-        <item>1f49a</item>
-        <item>1f49b</item>
-        <item>1f49c</item>
-        <item>1f49d</item>
-        <item>1f49e</item>
-        <item>1f49f</item>
-        <!-- Removed for lack of color glyph support.  <item>2763</item>  -->
-        <item>1f48c</item>
-        <item>1f4a4</item>
-        <item>1f4a2</item>
-        <item>1f4a3</item>
-        <item>1f4a5</item>
-        <item>1f4a6</item>
-        <item>1f4a8</item>
-        <item>1f4ab</item>
-        <item>1f4ac</item>
-        <item>1f5e8</item>
-        <item>1f5ef</item>
-        <item>1f4ad</item>
-        <item>1f441,200d,1f5e8</item>
-        <item>1f573</item>
-        <item>1f453</item>
-        <item>1f576</item>
-        <item>1f454</item>
-        <item>1f455</item>
-        <item>1f456</item>
-        <item>1f457</item>
-        <item>1f458</item>
-        <item>1f459</item>
-        <item>1f45a</item>
-        <item>1f45b</item>
-        <item>1f45c</item>
-        <item>1f45d</item>
-        <item>1f6cd</item>
-        <item>1f392</item>
-        <item>1f45e</item>
-        <item>1f45f</item>
-        <item>1f460</item>
-        <item>1f461</item>
-        <item>1f462</item>
-        <item>1f451</item>
-        <item>1f452</item>
-        <item>1f3a9</item>
-        <item>1f393</item>
-        <item>1f4ff</item>
-        <item>1f484</item>
-        <item>1f48d</item>
-        <item>1f48e</item>
+        <item>1F9E1</item>
+        <item>1F49B</item>
+        <item>1F49A</item>
+        <item>1F499</item>
+        <item>1F49C</item>
+        <item>1F90E</item>
+        <item>1F5A4</item>
+        <item>1F90D</item>
+        <item>1F4AF</item>
+        <item>1F4A2</item>
+        <item>1F4A5</item>
+        <item>1F4AB</item>
+        <item>1F4A6</item>
+        <item>1F4A8</item>
+        <item>1F573</item>
+        <item>1F4A3</item>
+        <item>1F4AC</item>
+        <item>1F441,FE0F,200D,1F5E8,FE0F</item>
+        <item>1F5E8</item>
+        <item>1F5EF</item>
+        <item>1F4AD</item>
+        <item>1F4A4</item>
+        <!-- hand-fingers-open -->
+        <item>1F44B</item>
+        <item>1F91A</item>
+        <item>1F590</item>
+        <item>270B</item>
+        <item>1F596</item>
+        <item>1FAF1</item>
+        <item>1FAF2</item>
+        <item>1FAF3</item>
+        <item>1FAF4</item>
+        <!-- hand-fingers-partial -->
+        <item>1F44C</item>
+        <item>1F90C</item>
+        <item>1F90F</item>
+        <item>270C</item>
+        <item>1F91E</item>
+        <item>1FAF0</item>
+        <item>1F91F</item>
+        <item>1F918</item>
+        <item>1F919</item>
+        <!-- hand-single-finger -->
+        <item>1F448</item>
+        <item>1F449</item>
+        <item>1F446</item>
+        <item>1F595</item>
+        <item>1F447</item>
+        <item>261D</item>
+        <item>1FAF5</item>
+        <!-- hand-fingers-closed -->
+        <item>1F44D</item>
+        <item>1F44E</item>
+        <item>270A</item>
+        <item>1F44A</item>
+        <item>1F91B</item>
+        <item>1F91C</item>
+        <!-- hands -->
+        <item>1F44F</item>
+        <item>1F64C</item>
+        <item>1FAF6</item>
+        <item>1F450</item>
+        <item>1F932</item>
+        <item>1F91D</item>
+        <item>1F64F</item>
+        <!-- hand-prop -->
+        <item>270D,FE0F</item>
+        <item>1F485</item>
+        <item>1F933</item>
+        <!-- body-parts -->
+        <item>1F4AA</item>
+        <item>1F9BE</item>
+        <item>1F9BF</item>
+        <item>1F9B5</item>
+        <item>1F9B6</item>
+        <item>1F442</item>
+        <item>1F9BB</item>
+        <item>1F443</item>
+        <item>1F9E0</item>
+        <item>1FAC0</item>
+        <item>1FAC1</item>
+        <item>1F9B7</item>
+        <item>1F9B4</item>
+        <item>1F440</item>
+        <item>1F441</item>
+        <item>1F445</item>
+        <item>1F444</item>
+        <item>1FAE6</item>
+        <!-- person -->
+        <item>1F476</item>
+        <item>1F9D2</item>
+        <item>1F466</item>
+        <item>1F467</item>
+        <item>1F9D1</item>
+        <item>1F471</item>
+        <item>1F468</item>
+        <item>1F9D4</item>
+        <item>1F9D4,200D,2642,FE0F</item>
+        <item>1F9D4,200D,2640,FE0F</item>
+        <item>1F468,200D,1F9B0</item>
+        <item>1F468,200D,1F9B1</item>
+        <item>1F468,200D,1F9B3</item>
+        <item>1F468,200D,1F9B2</item>
+        <item>1F469</item>
+        <item>1F469,200D,1F9B0</item>
+        <item>1F9D1,200D,1F9B0</item>
+        <item>1F469,200D,1F9B1</item>
+        <item>1F9D1,200D,1F9B1</item>
+        <item>1F469,200D,1F9B3</item>
+        <item>1F9D1,200D,1F9B3</item>
+        <item>1F469,200D,1F9B2</item>
+        <item>1F9D1,200D,1F9B2</item>
+        <item>1F471,200D,2640,FE0F</item>
+        <item>1F471,200D,2642,FE0F</item>
+        <item>1F9D3</item>
+        <item>1F474</item>
+        <item>1F475</item>
+        <!-- person-gesture -->
+        <item>1F64D</item>
+        <item>1F64D,200D,2642,FE0F</item>
+        <item>1F64D,200D,2640,FE0F</item>
+        <item>1F64E</item>
+        <item>1F64E,200D,2642,FE0F</item>
+        <item>1F64E,200D,2640,FE0F</item>
+        <item>1F645</item>
+        <item>1F645,200D,2642,FE0F</item>
+        <item>1F645,200D,2640,FE0F</item>
+        <item>1F646</item>
+        <item>1F646,200D,2642,FE0F</item>
+        <item>1F646,200D,2640,FE0F</item>
+        <item>1F481</item>
+        <item>1F481,200D,2642,FE0F</item>
+        <item>1F481,200D,2640,FE0F</item>
+        <item>1F64B</item>
+        <item>1F64B,200D,2642,FE0F</item>
+        <item>1F64B,200D,2640,FE0F</item>
+        <item>1F9CF</item>
+        <item>1F9CF,200D,2642,FE0F</item>
+        <item>1F9CF,200D,2640,FE0F</item>
+        <item>1F647</item>
+        <item>1F647,200D,2642,FE0F</item>
+        <item>1F647,200D,2640,FE0F</item>
+        <item>1F926</item>
+        <item>1F926,200D,2642,FE0F</item>
+        <item>1F926,200D,2640,FE0F</item>
+        <item>1F937</item>
+        <item>1F937,200D,2642,FE0F</item>
+        <item>1F937,200D,2640,FE0F</item>
+        <!-- person-role -->
+        <item>1F9D1,200D,2695,FE0F</item>
+        <item>1F468,200D,2695,FE0F</item>
+        <item>1F469,200D,2695,FE0F</item>
+        <item>1F9D1,200D,1F393</item>
+        <item>1F468,200D,1F393</item>
+        <item>1F469,200D,1F393</item>
+        <item>1F9D1,200D,1F3EB</item>
+        <item>1F468,200D,1F3EB</item>
+        <item>1F469,200D,1F3EB</item>
+        <item>1F9D1,200D,2696,FE0F</item>
+        <item>1F468,200D,2696,FE0F</item>
+        <item>1F469,200D,2696,FE0F</item>
+        <item>1F9D1,200D,1F33E</item>
+        <item>1F468,200D,1F33E</item>
+        <item>1F469,200D,1F33E</item>
+        <item>1F9D1,200D,1F373</item>
+        <item>1F468,200D,1F373</item>
+        <item>1F469,200D,1F373</item>
+        <item>1F9D1,200D,1F527</item>
+        <item>1F468,200D,1F527</item>
+        <item>1F469,200D,1F527</item>
+        <item>1F9D1,200D,1F3ED</item>
+        <item>1F468,200D,1F3ED</item>
+        <item>1F469,200D,1F3ED</item>
+        <item>1F9D1,200D,1F4BC</item>
+        <item>1F468,200D,1F4BC</item>
+        <item>1F469,200D,1F4BC</item>
+        <item>1F9D1,200D,1F52C</item>
+        <item>1F468,200D,1F52C</item>
+        <item>1F469,200D,1F52C</item>
+        <item>1F9D1,200D,1F4BB</item>
+        <item>1F468,200D,1F4BB</item>
+        <item>1F469,200D,1F4BB</item>
+        <item>1F9D1,200D,1F3A4</item>
+        <item>1F468,200D,1F3A4</item>
+        <item>1F469,200D,1F3A4</item>
+        <item>1F9D1,200D,1F3A8</item>
+        <item>1F468,200D,1F3A8</item>
+        <item>1F469,200D,1F3A8</item>
+        <item>1F9D1,200D,2708,FE0F</item>
+        <item>1F468,200D,2708,FE0F</item>
+        <item>1F469,200D,2708,FE0F</item>
+        <item>1F9D1,200D,1F680</item>
+        <item>1F468,200D,1F680</item>
+        <item>1F469,200D,1F680</item>
+        <item>1F9D1,200D,1F692</item>
+        <item>1F468,200D,1F692</item>
+        <item>1F469,200D,1F692</item>
+        <item>1F46E</item>
+        <item>1F46E,200D,2642,FE0F</item>
+        <item>1F46E,200D,2640,FE0F</item>
+        <item>1F575</item>
+        <item>1F575,FE0F,200D,2642,FE0F</item>
+        <item>1F575,FE0F,200D,2640,FE0F</item>
+        <item>1F482</item>
+        <item>1F482,200D,2642,FE0F</item>
+        <item>1F482,200D,2640,FE0F</item>
+        <item>1F977</item>
+        <item>1F477</item>
+        <item>1F477,200D,2642,FE0F</item>
+        <item>1F477,200D,2640,FE0F</item>
+        <item>1FAC5</item>
+        <item>1F934</item>
+        <item>1F478</item>
+        <item>1F473</item>
+        <item>1F473,200D,2642,FE0F</item>
+        <item>1F473,200D,2640,FE0F</item>
+        <item>1F472</item>
+        <item>1F9D5</item>
+        <item>1F935</item>
+        <item>1F935,200D,2642,FE0F</item>
+        <item>1F935,200D,2640,FE0F</item>
+        <item>1F470</item>
+        <item>1F470,200D,2642,FE0F</item>
+        <item>1F470,200D,2640,FE0F</item>
+        <item>1F930</item>
+        <item>1FAC3</item>
+        <item>1FAC4</item>
+        <item>1F931</item>
+        <item>1F469,200D,1F37C</item>
+        <item>1F468,200D,1F37C</item>
+        <item>1F9D1,200D,1F37C</item>
+        <!-- person-fantasy -->
+        <item>1F47C</item>
+        <item>1F385</item>
+        <item>1F936</item>
+        <item>1F9D1,200D,1F384</item>
+        <item>1F9B8</item>
+        <item>1F9B8,200D,2642,FE0F</item>
+        <item>1F9B8,200D,2640,FE0F</item>
+        <item>1F9B9</item>
+        <item>1F9B9,200D,2642,FE0F</item>
+        <item>1F9B9,200D,2640,FE0F</item>
+        <item>1F9D9</item>
+        <item>1F9D9,200D,2642,FE0F</item>
+        <item>1F9D9,200D,2640,FE0F</item>
+        <item>1F9DA</item>
+        <item>1F9DA,200D,2642,FE0F</item>
+        <item>1F9DA,200D,2640,FE0F</item>
+        <item>1F9DB</item>
+        <item>1F9DB,200D,2642,FE0F</item>
+        <item>1F9DB,200D,2640,FE0F</item>
+        <item>1F9DC</item>
+        <item>1F9DC,200D,2642,FE0F</item>
+        <item>1F9DC,200D,2640,FE0F</item>
+        <item>1F9DD</item>
+        <item>1F9DD,200D,2642,FE0F</item>
+        <item>1F9DD,200D,2640,FE0F</item>
+        <item>1F9DE</item>
+        <item>1F9DE,200D,2642,FE0F</item>
+        <item>1F9DE,200D,2640,FE0F</item>
+        <item>1F9DF</item>
+        <item>1F9DF,200D,2642,FE0F</item>
+        <item>1F9DF,200D,2640,FE0F</item>
+        <item>1F9CC</item>
+        <!-- person-activity -->
+        <item>1F486</item>
+        <item>1F486,200D,2642,FE0F</item>
+        <item>1F486,200D,2640,FE0F</item>
+        <item>1F487</item>
+        <item>1F487,200D,2642,FE0F</item>
+        <item>1F487,200D,2640,FE0F</item>
+        <item>1F6B6</item>
+        <item>1F6B6,200D,2642,FE0F</item>
+        <item>1F6B6,200D,2640,FE0F</item>
+        <item>1F9CD</item>
+        <item>1F9CD,200D,2642,FE0F</item>
+        <item>1F9CD,200D,2640,FE0F</item>
+        <item>1F9CE</item>
+        <item>1F9CE,200D,2642,FE0F</item>
+        <item>1F9CE,200D,2640,FE0F</item>
+        <item>1F9D1,200D,1F9AF</item>
+        <item>1F468,200D,1F9AF</item>
+        <item>1F469,200D,1F9AF</item>
+        <item>1F9D1,200D,1F9BC</item>
+        <item>1F468,200D,1F9BC</item>
+        <item>1F469,200D,1F9BC</item>
+        <item>1F9D1,200D,1F9BD</item>
+        <item>1F468,200D,1F9BD</item>
+        <item>1F469,200D,1F9BD</item>
+        <item>1F3C3</item>
+        <item>1F3C3,200D,2642,FE0F</item>
+        <item>1F3C3,200D,2640,FE0F</item>
+        <item>1F483</item>
+        <item>1F57A</item>
+        <item>1F574</item>
+        <item>1F46F</item>
+        <item>1F46F,200D,2642,FE0F</item>
+        <item>1F46F,200D,2640,FE0F</item>
+        <item>1F9D6</item>
+        <item>1F9D6,200D,2642,FE0F</item>
+        <item>1F9D6,200D,2640,FE0F</item>
+        <item>1F9D7</item>
+        <item>1F9D7,200D,2642,FE0F</item>
+        <item>1F9D7,200D,2640,FE0F</item>
+        <!-- person-sport -->
+        <item>1F93A</item>
+        <item>1F3C7</item>
+        <item>26F7,FE0F</item>
+        <item>1F3C2</item>
+        <item>1F3CC</item>
+        <item>1F3CC,FE0F,200D,2642,FE0F</item>
+        <item>1F3CC,FE0F,200D,2640,FE0F</item>
+        <item>1F3C4</item>
+        <item>1F3C4,200D,2642,FE0F</item>
+        <item>1F3C4,200D,2640,FE0F</item>
+        <item>1F6A3</item>
+        <item>1F6A3,200D,2642,FE0F</item>
+        <item>1F6A3,200D,2640,FE0F</item>
+        <item>1F3CA</item>
+        <item>1F3CA,200D,2642,FE0F</item>
+        <item>1F3CA,200D,2640,FE0F</item>
+        <item>26F9,FE0F</item>
+        <item>26F9,FE0F,200D,2642,FE0F</item>
+        <item>26F9,FE0F,200D,2640,FE0F</item>
+        <item>1F3CB</item>
+        <item>1F3CB,FE0F,200D,2642,FE0F</item>
+        <item>1F3CB,FE0F,200D,2640,FE0F</item>
+        <item>1F6B4</item>
+        <item>1F6B4,200D,2642,FE0F</item>
+        <item>1F6B4,200D,2640,FE0F</item>
+        <item>1F6B5</item>
+        <item>1F6B5,200D,2642,FE0F</item>
+        <item>1F6B5,200D,2640,FE0F</item>
+        <item>1F938</item>
+        <item>1F938,200D,2642,FE0F</item>
+        <item>1F938,200D,2640,FE0F</item>
+        <item>1F93C</item>
+        <item>1F93C,200D,2642,FE0F</item>
+        <item>1F93C,200D,2640,FE0F</item>
+        <item>1F93D</item>
+        <item>1F93D,200D,2642,FE0F</item>
+        <item>1F93D,200D,2640,FE0F</item>
+        <item>1F93E</item>
+        <item>1F93E,200D,2642,FE0F</item>
+        <item>1F93E,200D,2640,FE0F</item>
+        <item>1F939</item>
+        <item>1F939,200D,2642,FE0F</item>
+        <item>1F939,200D,2640,FE0F</item>
+        <!-- person-resting -->
+        <item>1F9D8</item>
+        <item>1F9D8,200D,2642,FE0F</item>
+        <item>1F9D8,200D,2640,FE0F</item>
+        <item>1F6C0</item>
+        <item>1F6CC</item>
+        <!-- family -->
+        <item>1F9D1,200D,1F91D,200D,1F9D1</item>
+        <item>1F46D</item>
+        <item>1F46B</item>
+        <item>1F46C</item>
+        <item>1F48F</item>
+        <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+        <item>1F468,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+        <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F469</item>
+        <item>1F491</item>
+        <item>1F469,200D,2764,FE0F,200D,1F468</item>
+        <item>1F468,200D,2764,FE0F,200D,1F468</item>
+        <item>1F469,200D,2764,FE0F,200D,1F469</item>
+        <item>1F46A</item>
+        <item>1F468,200D,1F469,200D,1F466</item>
+        <item>1F468,200D,1F469,200D,1F467</item>
+        <item>1F468,200D,1F469,200D,1F467,200D,1F466</item>
+        <item>1F468,200D,1F469,200D,1F466,200D,1F466</item>
+        <item>1F468,200D,1F469,200D,1F467,200D,1F467</item>
+        <item>1F468,200D,1F468,200D,1F466</item>
+        <item>1F468,200D,1F468,200D,1F467</item>
+        <item>1F468,200D,1F468,200D,1F467,200D,1F466</item>
+        <item>1F468,200D,1F468,200D,1F466,200D,1F466</item>
+        <item>1F468,200D,1F468,200D,1F467,200D,1F467</item>
+        <item>1F469,200D,1F469,200D,1F466</item>
+        <item>1F469,200D,1F469,200D,1F467</item>
+        <item>1F469,200D,1F469,200D,1F467,200D,1F466</item>
+        <item>1F469,200D,1F469,200D,1F466,200D,1F466</item>
+        <item>1F469,200D,1F469,200D,1F467,200D,1F467</item>
+        <item>1F468,200D,1F466</item>
+        <item>1F468,200D,1F466,200D,1F466</item>
+        <item>1F468,200D,1F467</item>
+        <item>1F468,200D,1F467,200D,1F466</item>
+        <item>1F468,200D,1F467,200D,1F467</item>
+        <item>1F469,200D,1F466</item>
+        <item>1F469,200D,1F466,200D,1F466</item>
+        <item>1F469,200D,1F467</item>
+        <item>1F469,200D,1F467,200D,1F466</item>
+        <item>1F469,200D,1F467,200D,1F467</item>
+        <!-- person-symbol -->
+        <item>1F5E3</item>
+        <item>1F464</item>
+        <item>1F465</item>
+        <item>1FAC2</item>
+        <item>1F463</item>
+        <!-- hair-style -->
+        <item>1F9B0</item>
+        <item>1F9B1</item>
+        <item>1F9B3</item>
+        <item>1F9B2</item>
     </array>
     <array
         name="emoji_eight_smiley_people_boring"
         format="string"
     >
-        <item>1f600</item>
-        <item>1f601</item>
-        <item>1f602</item>
-        <item>1f603</item>
-        <item>1f604</item>
-        <item>1f605</item>
-        <item>1f606</item>
-        <item>1f609</item>
-        <item>1f60a</item>
-        <item>1f60b</item>
-        <item>1f60e</item>
-        <item>1f60d</item>
-        <item>1f618</item>
-        <item>1f617</item>
-        <item>1f619</item>
-        <item>1f61a</item>
-        <item>263a</item>
-        <item>1f642</item>
-        <item>1f917</item>
-        <item>1f607</item>
-        <item>1f914</item>
-        <item>1f610</item>
-        <item>1f611</item>
-        <item>1f636</item>
-        <item>1f644</item>
-        <item>1f60f</item>
-        <item>1f623</item>
-        <item>1f625</item>
-        <item>1f62e</item>
-        <item>1f910</item>
-        <item>1f62f</item>
-        <item>1f62a</item>
-        <item>1f62b</item>
-        <item>1f634</item>
-        <item>1f60c</item>
-        <item>1f913</item>
-        <item>1f61b</item>
-        <item>1f61c</item>
-        <item>1f61d</item>
-        <!-- Removed for lack of color glyph support.  <item>2639</item>  -->
-        <item>1f641</item>
-        <item>1f612</item>
-        <item>1f613</item>
-        <item>1f614</item>
-        <item>1f615</item>
-        <item>1f616</item>
-        <item>1f643</item>
-        <item>1f637</item>
-        <item>1f912</item>
-        <item>1f915</item>
-        <item>1f911</item>
-        <item>1f632</item>
-        <item>1f61e</item>
-        <item>1f61f</item>
-        <item>1f624</item>
-        <item>1f622</item>
-        <item>1f62d</item>
-        <item>1f626</item>
-        <item>1f627</item>
-        <item>1f628</item>
-        <item>1f629</item>
-        <item>1f62c</item>
-        <item>1f630</item>
-        <item>1f631</item>
-        <item>1f633</item>
-        <item>1f635</item>
-        <item>1f621</item>
-        <item>1f620</item>
-        <item>1f608</item>
-        <item>1f47f</item>
-        <item>1f479</item>
-        <item>1f47a</item>
-        <item>1f480</item>
-        <!-- Removed for lack of color glyph support.  <item>2620</item>  -->
-        <item>1f47b</item>
-        <item>1f47d</item>
-        <item>1f47e</item>
-        <item>1f916</item>
-        <item>1f4a9</item>
-        <item>1f63a</item>
-        <item>1f638</item>
-        <item>1f639</item>
-        <item>1f63b</item>
-        <item>1f63c</item>
-        <item>1f63d</item>
-        <item>1f640</item>
-        <item>1f63f</item>
-        <item>1f63e</item>
-        <item>1f648</item>
-        <item>1f649</item>
-        <item>1f64a</item>
-        <item>1f466</item>
-        <item>1f467</item>
-        <item>1f468</item>
-        <item>1f469</item>
-        <item>1f474</item>
-        <item>1f475</item>
-        <item>1f476</item>
-        <item>1f471</item>
-        <item>1f46e</item>
-        <item>1f472</item>
-        <item>1f473</item>
-        <item>1f477</item>
-        <!-- Removed for lack of color glyph support.  <item>26d1</item>  -->
-        <item>1f478</item>
-        <item>1f482</item>
-        <item>1f575</item>
-        <item>1f385</item>
-        <item>1f47c</item>
-        <item>1f46f</item>
-        <item>1f486</item>
-        <item>1f487</item>
-        <item>1f470</item>
-        <item>1f64d</item>
-        <item>1f64e</item>
-        <item>1f645</item>
-        <item>1f646</item>
-        <item>1f481</item>
-        <item>1f64b</item>
-        <item>1f647</item>
-        <item>1f64c</item>
-        <item>1f64f</item>
-        <item>1f5e3</item>
-        <item>1f464</item>
-        <item>1f465</item>
-        <item>1f6b6</item>
-        <item>1f3c3</item>
-        <item>1f483</item>
-        <item>1f574</item>
-        <item>1f46b</item>
-        <item>1f46c</item>
-        <item>1f46d</item>
-        <item>1f48f</item>
-        <item>1f491</item>
-        <item>1f46a</item>
-        <!-- Removed for lack of color glyph support.  <item>1f3fb</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3fc</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3fd</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3fe</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>1f3ff</item>  -->
-        <item>1f4aa</item>
-        <item>1f448</item>
-        <item>1f449</item>
-        <item>261d</item>
-        <item>1f446</item>
-        <item>1f595</item>
-        <item>1f447</item>
-        <item>270c</item>
-        <item>1f596</item>
-        <item>1f918</item>
-        <item>1f590</item>
-        <item>270a</item>
-        <item>270b</item>
-        <item>1f44a</item>
-        <item>1f44c</item>
-        <item>1f44d</item>
-        <item>1f44e</item>
-        <item>1f44b</item>
-        <item>1f44f</item>
-        <item>1f450</item>
-        <!-- Removed for lack of color glyph support.  <item>270d</item>  -->
-        <item>1f485</item>
-        <item>1f442</item>
-        <item>1f443</item>
-        <item>1f463</item>
-        <item>1f440</item>
-        <item>1f441</item>
-        <item>1f445</item>
-        <item>1f444</item>
-        <item>1f48b</item>
-        <item>1f498</item>
+        <!-- face-smiling -->
+        <item>1F600</item>
+        <item>1F603</item>
+        <item>1F604</item>
+        <item>1F601</item>
+        <item>1F606</item>
+        <item>1F605</item>
+        <item>1F923</item>
+        <item>1F602</item>
+        <item>1F642</item>
+        <item>1F643</item>
+        <item>1F609</item>
+        <item>1F60A</item>
+        <item>1F607</item>
+        <!-- face-affection -->
+        <item>1F970</item>
+        <item>1F60D</item>
+        <item>1F929</item>
+        <item>1F618</item>
+        <item>1F617</item>
+        <item>263A</item>
+        <item>1F61A</item>
+        <item>1F619</item>
+        <item>1F972</item>
+        <!-- face-tongue -->
+        <item>1F60B</item>
+        <item>1F61B</item>
+        <item>1F61C</item>
+        <item>1F92A</item>
+        <item>1F61D</item>
+        <item>1F911</item>
+        <!-- face-hand -->
+        <item>1F917</item>
+        <item>1F92D</item>
+        <item>1F92B</item>
+        <item>1F914</item>
+        <!-- face-neutral-skeptical -->
+        <item>1F910</item>
+        <item>1F928</item>
+        <item>1F610</item>
+        <item>1F611</item>
+        <item>1F636</item>
+        <item>1F60F</item>
+        <item>1F612</item>
+        <item>1F644</item>
+        <item>1F62C</item>
+        <item>1F925</item>
+        <!-- face-sleepy -->
+        <item>1F60C</item>
+        <item>1F614</item>
+        <item>1F62A</item>
+        <item>1F924</item>
+        <item>1F634</item>
+        <!-- face-unwell -->
+        <item>1F637</item>
+        <item>1F912</item>
+        <item>1F915</item>
+        <item>1F922</item>
+        <item>1F92E</item>
+        <item>1F927</item>
+        <item>1F975</item>
+        <item>1F976</item>
+        <item>1F974</item>
+        <item>1F635</item>
+        <item>1F92F</item>
+        <!-- face-hat -->
+        <item>1F920</item>
+        <item>1F973</item>
+        <item>1F978</item>
+        <!-- face-glasses -->
+        <item>1F60E</item>
+        <item>1F913</item>
+        <item>1F9D0</item>
+        <!-- face-concerned -->
+        <item>1F615</item>
+        <item>1F61F</item>
+        <item>1F641</item>
+        <item>2639,FE0F</item>
+        <item>1F62E</item>
+        <item>1F62F</item>
+        <item>1F632</item>
+        <item>1F633</item>
+        <item>1F97A</item>
+        <item>1F626</item>
+        <item>1F627</item>
+        <item>1F628</item>
+        <item>1F630</item>
+        <item>1F625</item>
+        <item>1F622</item>
+        <item>1F62D</item>
+        <item>1F631</item>
+        <item>1F616</item>
+        <item>1F623</item>
+        <item>1F61E</item>
+        <item>1F613</item>
+        <item>1F629</item>
+        <item>1F62B</item>
+        <item>1F971</item>
+        <!-- face-negative -->
+        <item>1F624</item>
+        <item>1F621</item>
+        <item>1F620</item>
+        <item>1F92C</item>
+        <item>1F608</item>
+        <item>1F47F</item>
+        <item>1F480</item>
+        <item>2620,FE0F</item>
+        <!-- face-costume -->
+        <item>1F4A9</item>
+        <item>1F921</item>
+        <item>1F479</item>
+        <item>1F47A</item>
+        <item>1F47B</item>
+        <item>1F47D</item>
+        <item>1F47E</item>
+        <item>1F916</item>
+        <!-- cat-face -->
+        <item>1F63A</item>
+        <item>1F638</item>
+        <item>1F639</item>
+        <item>1F63B</item>
+        <item>1F63C</item>
+        <item>1F63D</item>
+        <item>1F640</item>
+        <item>1F63F</item>
+        <item>1F63E</item>
+        <!-- monkey-face -->
+        <item>1F648</item>
+        <item>1F649</item>
+        <item>1F64A</item>
+        <!-- emotion -->
+        <item>1F48B</item>
+        <item>1F48C</item>
+        <item>1F498</item>
+        <item>1F49D</item>
+        <item>1F496</item>
+        <item>1F497</item>
+        <item>1F493</item>
+        <item>1F49E</item>
+        <item>1F495</item>
+        <item>1F49F</item>
+        <item>2763,FE0F</item>
+        <item>1F494</item>
         <item>2764</item>
-        <item>1f493</item>
-        <item>1f494</item>
-        <item>1f495</item>
-        <item>1f496</item>
-        <item>1f497</item>
-        <item>1f499</item>
-        <item>1f49a</item>
-        <item>1f49b</item>
-        <item>1f49c</item>
-        <item>1f49d</item>
-        <item>1f49e</item>
-        <item>1f49f</item>
-        <!-- Removed for lack of color glyph support.  <item>2763</item>  -->
-        <item>1f48c</item>
-        <item>1f4a4</item>
-        <item>1f4a2</item>
-        <item>1f4a3</item>
-        <item>1f4a5</item>
-        <item>1f4a6</item>
-        <item>1f4a8</item>
-        <item>1f4ab</item>
-        <item>1f4ac</item>
-        <item>1f5e8</item>
-        <item>1f5ef</item>
-        <item>1f4ad</item>
-        <item>1f573</item>
-        <item>1f453</item>
-        <item>1f576</item>
-        <item>1f454</item>
-        <item>1f455</item>
-        <item>1f456</item>
-        <item>1f457</item>
-        <item>1f458</item>
-        <item>1f459</item>
-        <item>1f45a</item>
-        <item>1f45b</item>
-        <item>1f45c</item>
-        <item>1f45d</item>
-        <item>1f6cd</item>
-        <item>1f392</item>
-        <item>1f45e</item>
-        <item>1f45f</item>
-        <item>1f460</item>
-        <item>1f461</item>
-        <item>1f462</item>
-        <item>1f451</item>
-        <item>1f452</item>
-        <item>1f3a9</item>
-        <item>1f393</item>
-        <item>1f4ff</item>
-        <item>1f484</item>
-        <item>1f48d</item>
-        <item>1f48e</item>
+        <item>1F9E1</item>
+        <item>1F49B</item>
+        <item>1F49A</item>
+        <item>1F499</item>
+        <item>1F49C</item>
+        <item>1F90E</item>
+        <item>1F5A4</item>
+        <item>1F90D</item>
+        <item>1F4AF</item>
+        <item>1F4A2</item>
+        <item>1F4A5</item>
+        <item>1F4AB</item>
+        <item>1F4A6</item>
+        <item>1F4A8</item>
+        <item>1F573</item>
+        <item>1F4A3</item>
+        <item>1F4AC</item>
+        <item>1F441,FE0F,200D,1F5E8,FE0F</item>
+        <item>1F5E8</item>
+        <item>1F5EF</item>
+        <item>1F4AD</item>
+        <item>1F4A4</item>
+        <!-- hand-fingers-open -->
+        <item>1F44B</item>
+        <item>1F91A</item>
+        <item>1F590</item>
+        <item>270B</item>
+        <item>1F596</item>
+        <!-- hand-fingers-partial -->
+        <item>1F44C</item>
+        <item>1F90C</item>
+        <item>1F90F</item>
+        <item>270C</item>
+        <item>1F91E</item>
+        <item>1F91F</item>
+        <item>1F918</item>
+        <item>1F919</item>
+        <!-- hand-single-finger -->
+        <item>1F448</item>
+        <item>1F449</item>
+        <item>1F446</item>
+        <item>1F595</item>
+        <item>1F447</item>
+        <item>261D</item>
+        <!-- hand-fingers-closed -->
+        <item>1F44D</item>
+        <item>1F44E</item>
+        <item>270A</item>
+        <item>1F44A</item>
+        <item>1F91B</item>
+        <item>1F91C</item>
+        <!-- hands -->
+        <item>1F44F</item>
+        <item>1F64C</item>
+        <item>1F450</item>
+        <item>1F932</item>
+        <item>1F91D</item>
+        <item>1F64F</item>
+        <!-- hand-prop -->
+        <item>270D,FE0F</item>
+        <item>1F485</item>
+        <item>1F933</item>
+        <!-- body-parts -->
+        <item>1F4AA</item>
+        <item>1F9BE</item>
+        <item>1F9BF</item>
+        <item>1F9B5</item>
+        <item>1F9B6</item>
+        <item>1F442</item>
+        <item>1F9BB</item>
+        <item>1F443</item>
+        <item>1F9E0</item>
+        <item>1FAC0</item>
+        <item>1FAC1</item>
+        <item>1F9B7</item>
+        <item>1F9B4</item>
+        <item>1F440</item>
+        <item>1F441</item>
+        <item>1F445</item>
+        <item>1F444</item>
+        <!-- person -->
+        <item>1F476</item>
+        <item>1F9D2</item>
+        <item>1F466</item>
+        <item>1F467</item>
+        <item>1F9D1</item>
+        <item>1F471</item>
+        <item>1F468</item>
+        <item>1F9D4</item>
+        <item>1F468,200D,1F9B0</item>
+        <item>1F468,200D,1F9B1</item>
+        <item>1F468,200D,1F9B3</item>
+        <item>1F468,200D,1F9B2</item>
+        <item>1F469</item>
+        <item>1F469,200D,1F9B0</item>
+        <item>1F9D1,200D,1F9B0</item>
+        <item>1F469,200D,1F9B1</item>
+        <item>1F9D1,200D,1F9B1</item>
+        <item>1F469,200D,1F9B3</item>
+        <item>1F9D1,200D,1F9B3</item>
+        <item>1F469,200D,1F9B2</item>
+        <item>1F9D1,200D,1F9B2</item>
+        <item>1F471,200D,2640,FE0F</item>
+        <item>1F471,200D,2642,FE0F</item>
+        <item>1F9D3</item>
+        <item>1F474</item>
+        <item>1F475</item>
+        <!-- person-gesture -->
+        <item>1F64D</item>
+        <item>1F64D,200D,2642,FE0F</item>
+        <item>1F64D,200D,2640,FE0F</item>
+        <item>1F64E</item>
+        <item>1F64E,200D,2642,FE0F</item>
+        <item>1F64E,200D,2640,FE0F</item>
+        <item>1F645</item>
+        <item>1F645,200D,2642,FE0F</item>
+        <item>1F645,200D,2640,FE0F</item>
+        <item>1F646</item>
+        <item>1F646,200D,2642,FE0F</item>
+        <item>1F646,200D,2640,FE0F</item>
+        <item>1F481</item>
+        <item>1F481,200D,2642,FE0F</item>
+        <item>1F481,200D,2640,FE0F</item>
+        <item>1F64B</item>
+        <item>1F64B,200D,2642,FE0F</item>
+        <item>1F64B,200D,2640,FE0F</item>
+        <item>1F9CF</item>
+        <item>1F9CF,200D,2642,FE0F</item>
+        <item>1F9CF,200D,2640,FE0F</item>
+        <item>1F647</item>
+        <item>1F647,200D,2642,FE0F</item>
+        <item>1F647,200D,2640,FE0F</item>
+        <item>1F926</item>
+        <item>1F926,200D,2642,FE0F</item>
+        <item>1F926,200D,2640,FE0F</item>
+        <item>1F937</item>
+        <item>1F937,200D,2642,FE0F</item>
+        <item>1F937,200D,2640,FE0F</item>
+        <!-- person-role -->
+        <item>1F9D1,200D,2695,FE0F</item>
+        <item>1F468,200D,2695,FE0F</item>
+        <item>1F469,200D,2695,FE0F</item>
+        <item>1F9D1,200D,1F393</item>
+        <item>1F468,200D,1F393</item>
+        <item>1F469,200D,1F393</item>
+        <item>1F9D1,200D,1F3EB</item>
+        <item>1F468,200D,1F3EB</item>
+        <item>1F469,200D,1F3EB</item>
+        <item>1F9D1,200D,2696,FE0F</item>
+        <item>1F468,200D,2696,FE0F</item>
+        <item>1F469,200D,2696,FE0F</item>
+        <item>1F9D1,200D,1F33E</item>
+        <item>1F468,200D,1F33E</item>
+        <item>1F469,200D,1F33E</item>
+        <item>1F9D1,200D,1F373</item>
+        <item>1F468,200D,1F373</item>
+        <item>1F469,200D,1F373</item>
+        <item>1F9D1,200D,1F527</item>
+        <item>1F468,200D,1F527</item>
+        <item>1F469,200D,1F527</item>
+        <item>1F9D1,200D,1F3ED</item>
+        <item>1F468,200D,1F3ED</item>
+        <item>1F469,200D,1F3ED</item>
+        <item>1F9D1,200D,1F4BC</item>
+        <item>1F468,200D,1F4BC</item>
+        <item>1F469,200D,1F4BC</item>
+        <item>1F9D1,200D,1F52C</item>
+        <item>1F468,200D,1F52C</item>
+        <item>1F469,200D,1F52C</item>
+        <item>1F9D1,200D,1F4BB</item>
+        <item>1F468,200D,1F4BB</item>
+        <item>1F469,200D,1F4BB</item>
+        <item>1F9D1,200D,1F3A4</item>
+        <item>1F468,200D,1F3A4</item>
+        <item>1F469,200D,1F3A4</item>
+        <item>1F9D1,200D,1F3A8</item>
+        <item>1F468,200D,1F3A8</item>
+        <item>1F469,200D,1F3A8</item>
+        <item>1F9D1,200D,2708,FE0F</item>
+        <item>1F468,200D,2708,FE0F</item>
+        <item>1F469,200D,2708,FE0F</item>
+        <item>1F9D1,200D,1F680</item>
+        <item>1F468,200D,1F680</item>
+        <item>1F469,200D,1F680</item>
+        <item>1F9D1,200D,1F692</item>
+        <item>1F468,200D,1F692</item>
+        <item>1F469,200D,1F692</item>
+        <item>1F46E</item>
+        <item>1F46E,200D,2642,FE0F</item>
+        <item>1F46E,200D,2640,FE0F</item>
+        <item>1F575</item>
+        <item>1F575,FE0F,200D,2642,FE0F</item>
+        <item>1F575,FE0F,200D,2640,FE0F</item>
+        <item>1F482</item>
+        <item>1F482,200D,2642,FE0F</item>
+        <item>1F482,200D,2640,FE0F</item>
+        <item>1F977</item>
+        <item>1F477</item>
+        <item>1F477,200D,2642,FE0F</item>
+        <item>1F477,200D,2640,FE0F</item>
+        <item>1F934</item>
+        <item>1F478</item>
+        <item>1F473</item>
+        <item>1F473,200D,2642,FE0F</item>
+        <item>1F473,200D,2640,FE0F</item>
+        <item>1F472</item>
+        <item>1F9D5</item>
+        <item>1F935</item>
+        <item>1F935,200D,2642,FE0F</item>
+        <item>1F935,200D,2640,FE0F</item>
+        <item>1F470</item>
+        <item>1F470,200D,2642,FE0F</item>
+        <item>1F470,200D,2640,FE0F</item>
+        <item>1F930</item>
+        <item>1F931</item>
+        <item>1F469,200D,1F37C</item>
+        <item>1F468,200D,1F37C</item>
+        <item>1F9D1,200D,1F37C</item>
+        <!-- person-fantasy -->
+        <item>1F47C</item>
+        <item>1F385</item>
+        <item>1F936</item>
+        <item>1F9D1,200D,1F384</item>
+        <item>1F9B8</item>
+        <item>1F9B8,200D,2642,FE0F</item>
+        <item>1F9B8,200D,2640,FE0F</item>
+        <item>1F9B9</item>
+        <item>1F9B9,200D,2642,FE0F</item>
+        <item>1F9B9,200D,2640,FE0F</item>
+        <item>1F9D9</item>
+        <item>1F9D9,200D,2642,FE0F</item>
+        <item>1F9D9,200D,2640,FE0F</item>
+        <item>1F9DA</item>
+        <item>1F9DA,200D,2642,FE0F</item>
+        <item>1F9DA,200D,2640,FE0F</item>
+        <item>1F9DB</item>
+        <item>1F9DB,200D,2642,FE0F</item>
+        <item>1F9DB,200D,2640,FE0F</item>
+        <item>1F9DC</item>
+        <item>1F9DC,200D,2642,FE0F</item>
+        <item>1F9DC,200D,2640,FE0F</item>
+        <item>1F9DD</item>
+        <item>1F9DD,200D,2642,FE0F</item>
+        <item>1F9DD,200D,2640,FE0F</item>
+        <item>1F9DE</item>
+        <item>1F9DE,200D,2642,FE0F</item>
+        <item>1F9DE,200D,2640,FE0F</item>
+        <item>1F9DF</item>
+        <item>1F9DF,200D,2642,FE0F</item>
+        <item>1F9DF,200D,2640,FE0F</item>
+        <!-- person-activity -->
+        <item>1F486</item>
+        <item>1F486,200D,2642,FE0F</item>
+        <item>1F486,200D,2640,FE0F</item>
+        <item>1F487</item>
+        <item>1F487,200D,2642,FE0F</item>
+        <item>1F487,200D,2640,FE0F</item>
+        <item>1F6B6</item>
+        <item>1F6B6,200D,2642,FE0F</item>
+        <item>1F6B6,200D,2640,FE0F</item>
+        <item>1F9CD</item>
+        <item>1F9CD,200D,2642,FE0F</item>
+        <item>1F9CD,200D,2640,FE0F</item>
+        <item>1F9CE</item>
+        <item>1F9CE,200D,2642,FE0F</item>
+        <item>1F9CE,200D,2640,FE0F</item>
+        <item>1F9D1,200D,1F9AF</item>
+        <item>1F468,200D,1F9AF</item>
+        <item>1F469,200D,1F9AF</item>
+        <item>1F9D1,200D,1F9BC</item>
+        <item>1F468,200D,1F9BC</item>
+        <item>1F469,200D,1F9BC</item>
+        <item>1F9D1,200D,1F9BD</item>
+        <item>1F468,200D,1F9BD</item>
+        <item>1F469,200D,1F9BD</item>
+        <item>1F3C3</item>
+        <item>1F3C3,200D,2642,FE0F</item>
+        <item>1F3C3,200D,2640,FE0F</item>
+        <item>1F483</item>
+        <item>1F57A</item>
+        <item>1F574</item>
+        <item>1F46F</item>
+        <item>1F46F,200D,2642,FE0F</item>
+        <item>1F46F,200D,2640,FE0F</item>
+        <item>1F9D6</item>
+        <item>1F9D6,200D,2642,FE0F</item>
+        <item>1F9D6,200D,2640,FE0F</item>
+        <item>1F9D7</item>
+        <item>1F9D7,200D,2642,FE0F</item>
+        <item>1F9D7,200D,2640,FE0F</item>
+        <!-- person-sport -->
+        <item>1F93A</item>
+        <item>1F3C7</item>
+        <item>26F7,FE0F</item>
+        <item>1F3C2</item>
+        <item>1F3CC</item>
+        <item>1F3CC,FE0F,200D,2642,FE0F</item>
+        <item>1F3CC,FE0F,200D,2640,FE0F</item>
+        <item>1F3C4</item>
+        <item>1F3C4,200D,2642,FE0F</item>
+        <item>1F3C4,200D,2640,FE0F</item>
+        <item>1F6A3</item>
+        <item>1F6A3,200D,2642,FE0F</item>
+        <item>1F6A3,200D,2640,FE0F</item>
+        <item>1F3CA</item>
+        <item>1F3CA,200D,2642,FE0F</item>
+        <item>1F3CA,200D,2640,FE0F</item>
+        <item>26F9,FE0F</item>
+        <item>26F9,FE0F,200D,2642,FE0F</item>
+        <item>26F9,FE0F,200D,2640,FE0F</item>
+        <item>1F3CB</item>
+        <item>1F3CB,FE0F,200D,2642,FE0F</item>
+        <item>1F3CB,FE0F,200D,2640,FE0F</item>
+        <item>1F6B4</item>
+        <item>1F6B4,200D,2642,FE0F</item>
+        <item>1F6B4,200D,2640,FE0F</item>
+        <item>1F6B5</item>
+        <item>1F6B5,200D,2642,FE0F</item>
+        <item>1F6B5,200D,2640,FE0F</item>
+        <item>1F938</item>
+        <item>1F938,200D,2642,FE0F</item>
+        <item>1F938,200D,2640,FE0F</item>
+        <item>1F93C</item>
+        <item>1F93C,200D,2642,FE0F</item>
+        <item>1F93C,200D,2640,FE0F</item>
+        <item>1F93D</item>
+        <item>1F93D,200D,2642,FE0F</item>
+        <item>1F93D,200D,2640,FE0F</item>
+        <item>1F93E</item>
+        <item>1F93E,200D,2642,FE0F</item>
+        <item>1F93E,200D,2640,FE0F</item>
+        <item>1F939</item>
+        <item>1F939,200D,2642,FE0F</item>
+        <item>1F939,200D,2640,FE0F</item>
+        <!-- person-resting -->
+        <item>1F9D8</item>
+        <item>1F9D8,200D,2642,FE0F</item>
+        <item>1F9D8,200D,2640,FE0F</item>
+        <item>1F6C0</item>
+        <item>1F6CC</item>
+        <!-- family -->
+        <item>1F9D1,200D,1F91D,200D,1F9D1</item>
+        <item>1F46D</item>
+        <item>1F46B</item>
+        <item>1F46C</item>
+        <item>1F48F</item>
+        <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+        <item>1F468,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+        <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F469</item>
+        <item>1F491</item>
+        <item>1F469,200D,2764,FE0F,200D,1F468</item>
+        <item>1F468,200D,2764,FE0F,200D,1F468</item>
+        <item>1F469,200D,2764,FE0F,200D,1F469</item>
+        <item>1F46A</item>
+        <item>1F468,200D,1F469,200D,1F466</item>
+        <item>1F468,200D,1F469,200D,1F467</item>
+        <item>1F468,200D,1F469,200D,1F467,200D,1F466</item>
+        <item>1F468,200D,1F469,200D,1F466,200D,1F466</item>
+        <item>1F468,200D,1F469,200D,1F467,200D,1F467</item>
+        <item>1F468,200D,1F468,200D,1F466</item>
+        <item>1F468,200D,1F468,200D,1F467</item>
+        <item>1F468,200D,1F468,200D,1F467,200D,1F466</item>
+        <item>1F468,200D,1F468,200D,1F466,200D,1F466</item>
+        <item>1F468,200D,1F468,200D,1F467,200D,1F467</item>
+        <item>1F469,200D,1F469,200D,1F466</item>
+        <item>1F469,200D,1F469,200D,1F467</item>
+        <item>1F469,200D,1F469,200D,1F467,200D,1F466</item>
+        <item>1F469,200D,1F469,200D,1F466,200D,1F466</item>
+        <item>1F469,200D,1F469,200D,1F467,200D,1F467</item>
+        <item>1F468,200D,1F466</item>
+        <item>1F468,200D,1F466,200D,1F466</item>
+        <item>1F468,200D,1F467</item>
+        <item>1F468,200D,1F467,200D,1F466</item>
+        <item>1F468,200D,1F467,200D,1F467</item>
+        <item>1F469,200D,1F466</item>
+        <item>1F469,200D,1F466,200D,1F466</item>
+        <item>1F469,200D,1F467</item>
+        <item>1F469,200D,1F467,200D,1F466</item>
+        <item>1F469,200D,1F467,200D,1F467</item>
+        <!-- person-symbol -->
+        <item>1F5E3</item>
+        <item>1F464</item>
+        <item>1F465</item>
+        <item>1FAC2</item>
+        <item>1F463</item>
+        <!-- hair-style -->
+        <item>1F9B0</item>
+        <item>1F9B1</item>
+        <item>1F9B3</item>
+        <item>1F9B2</item>
     </array>
+
     <array
         name="emoji_eight_food_drink"
         format="string"
     >
-        <item>1f347</item>
-        <item>1f348</item>
-        <item>1f349</item>
-        <item>1f34a</item>
-        <item>1f34b</item>
-        <item>1f34c</item>
-        <item>1f34d</item>
-        <item>1f34e</item>
-        <item>1f34f</item>
-        <item>1f350</item>
-        <item>1f351</item>
-        <item>1f352</item>
-        <item>1f353</item>
-        <item>1f345</item>
-        <item>1f346</item>
-        <item>1f33d</item>
-        <item>1f336</item>
-        <item>1f344</item>
-        <item>1f330</item>
-        <item>1f35e</item>
-        <item>1f9c0</item>
-        <item>1f356</item>
-        <item>1f357</item>
-        <item>1f354</item>
-        <item>1f35f</item>
-        <item>1f355</item>
-        <item>1f32d</item>
-        <item>1f32e</item>
-        <item>1f32f</item>
-        <item>1f37f</item>
-        <item>1f372</item>
-        <item>1f371</item>
-        <item>1f358</item>
-        <item>1f359</item>
-        <item>1f35a</item>
-        <item>1f35b</item>
-        <item>1f35c</item>
-        <item>1f35d</item>
-        <item>1f360</item>
-        <item>1f362</item>
-        <item>1f363</item>
-        <item>1f364</item>
-        <item>1f365</item>
-        <item>1f361</item>
-        <item>1f366</item>
-        <item>1f367</item>
-        <item>1f368</item>
-        <item>1f369</item>
-        <item>1f36a</item>
-        <item>1f382</item>
-        <item>1f370</item>
-        <item>1f36b</item>
-        <item>1f36c</item>
-        <item>1f36d</item>
-        <item>1f36e</item>
-        <item>1f36f</item>
-        <item>1f37c</item>
+        <!-- food-fruit -->
+        <item>1F347</item>
+        <item>1F348</item>
+        <item>1F349</item>
+        <item>1F34A</item>
+        <item>1F34B</item>
+        <item>1F34C</item>
+        <item>1F34D</item>
+        <item>1F96D</item>
+        <item>1F34E</item>
+        <item>1F34F</item>
+        <item>1F350</item>
+        <item>1F351</item>
+        <item>1F352</item>
+        <item>1F353</item>
+        <item>1FAD0</item>
+        <item>1F95D</item>
+        <item>1F345</item>
+        <item>1FAD2</item>
+        <item>1F965</item>
+        <!-- food-vegetable -->
+        <item>1F951</item>
+        <item>1F346</item>
+        <item>1F954</item>
+        <item>1F955</item>
+        <item>1F33D</item>
+        <item>1F336</item>
+        <item>1FAD1</item>
+        <item>1F952</item>
+        <item>1F96C</item>
+        <item>1F966</item>
+        <item>1F9C4</item>
+        <item>1F9C5</item>
+        <item>1F344</item>
+        <item>1F95C</item>
+        <item>1FAD8</item>
+        <item>1F330</item>
+        <!-- food-prepared -->
+        <item>1F35E</item>
+        <item>1F950</item>
+        <item>1F956</item>
+        <item>1FAD3</item>
+        <item>1F968</item>
+        <item>1F96F</item>
+        <item>1F95E</item>
+        <item>1F9C7</item>
+        <item>1F9C0</item>
+        <item>1F356</item>
+        <item>1F357</item>
+        <item>1F969</item>
+        <item>1F953</item>
+        <item>1F354</item>
+        <item>1F35F</item>
+        <item>1F355</item>
+        <item>1F32D</item>
+        <item>1F96A</item>
+        <item>1F32E</item>
+        <item>1F32F</item>
+        <item>1FAD4</item>
+        <item>1F959</item>
+        <item>1F9C6</item>
+        <item>1F95A</item>
+        <item>1F373</item>
+        <item>1F958</item>
+        <item>1F372</item>
+        <item>1FAD5</item>
+        <item>1F963</item>
+        <item>1F957</item>
+        <item>1F37F</item>
+        <item>1F9C8</item>
+        <item>1F9C2</item>
+        <item>1F96B</item>
+        <!-- food-asian -->
+        <item>1F371</item>
+        <item>1F358</item>
+        <item>1F359</item>
+        <item>1F35A</item>
+        <item>1F35B</item>
+        <item>1F35C</item>
+        <item>1F35D</item>
+        <item>1F360</item>
+        <item>1F362</item>
+        <item>1F363</item>
+        <item>1F364</item>
+        <item>1F365</item>
+        <item>1F96E</item>
+        <item>1F361</item>
+        <item>1F95F</item>
+        <item>1F960</item>
+        <item>1F961</item>
+        <!-- food-marine -->
+        <item>1F980</item>
+        <item>1F99E</item>
+        <item>1F990</item>
+        <item>1F991</item>
+        <item>1F9AA</item>
+        <!-- food-sweet -->
+        <item>1F366</item>
+        <item>1F367</item>
+        <item>1F368</item>
+        <item>1F369</item>
+        <item>1F36A</item>
+        <item>1F382</item>
+        <item>1F370</item>
+        <item>1F9C1</item>
+        <item>1F967</item>
+        <item>1F36B</item>
+        <item>1F36C</item>
+        <item>1F36D</item>
+        <item>1F36E</item>
+        <item>1F36F</item>
+        <!-- drink -->
+        <item>1F37C</item>
+        <item>1F95B</item>
         <item>2615</item>
-        <item>1f375</item>
-        <item>1f376</item>
-        <item>1f37e</item>
-        <item>1f377</item>
-        <item>1f378</item>
-        <item>1f379</item>
-        <item>1f37a</item>
-        <item>1f37b</item>
-        <item>1f37d</item>
-        <item>1f374</item>
-        <item>1f373</item>
-        <item>1f3fa</item>
+        <item>1FAD6</item>
+        <item>1F375</item>
+        <item>1F376</item>
+        <item>1F37E</item>
+        <item>1F377</item>
+        <item>1F378</item>
+        <item>1F379</item>
+        <item>1F37A</item>
+        <item>1F37B</item>
+        <item>1F942</item>
+        <item>1F943</item>
+        <item>1FAD7</item>
+        <item>1F964</item>
+        <item>1F9CB</item>
+        <item>1F9C3</item>
+        <item>1F9C9</item>
+        <item>1F9CA</item>
+        <!-- dishware -->
+        <item>1F962</item>
+        <item>1F37D</item>
+        <item>1F374</item>
+        <item>1F944</item>
+        <item>1F52A</item>
+        <item>1FAD9</item>
+        <item>1F3FA</item>
     </array>
     <array
         name="emoji_eight_objects"
         format="string"
     >
-        <item>1f507</item>
-        <item>1f508</item>
-        <item>1f509</item>
-        <item>1f50a</item>
-        <item>1f4e2</item>
-        <item>1f4e3</item>
-        <item>1f4ef</item>
-        <item>1f514</item>
-        <item>1f515</item>
-        <item>1f3bc</item>
-        <item>1f3b5</item>
-        <item>1f3b6</item>
-        <item>1f399</item>
-        <item>1f39a</item>
-        <item>1f39b</item>
-        <item>1f3a4</item>
-        <item>1f3a7</item>
-        <item>1f3b7</item>
-        <item>1f3b8</item>
-        <item>1f3b9</item>
-        <item>1f3ba</item>
-        <item>1f3bb</item>
-        <item>1f4fb</item>
-        <item>1f4f1</item>
-        <item>1f4f2</item>
-        <item>260e</item>
-        <item>1f4de</item>
-        <item>1f4df</item>
-        <item>1f4e0</item>
-        <item>1f50b</item>
-        <item>1f50c</item>
-        <item>1f4bb</item>
-        <item>1f5a5</item>
-        <item>1f5a8</item>
-        <item>2328</item>
-        <item>1f5b1</item>
-        <item>1f5b2</item>
-        <item>1f4bd</item>
-        <item>1f4be</item>
-        <item>1f4bf</item>
-        <item>1f4c0</item>
-        <item>1f3a5</item>
-        <item>1f3ac</item>
-        <item>1f4fd</item>
-        <item>1f4fa</item>
-        <item>1f4f7</item>
-        <item>1f4f8</item>
-        <item>1f4f9</item>
-        <item>1f4fc</item>
-        <item>1f50d</item>
-        <item>1f50e</item>
-        <item>1f52c</item>
-        <item>1f52d</item>
-        <item>1f4e1</item>
-        <item>1f56f</item>
-        <item>1f4a1</item>
-        <item>1f526</item>
-        <item>1f3ee</item>
-        <item>1f4d4</item>
-        <item>1f4d5</item>
-        <item>1f4d6</item>
-        <item>1f4d7</item>
-        <item>1f4d8</item>
-        <item>1f4d9</item>
-        <item>1f4da</item>
-        <item>1f4d3</item>
-        <item>1f4d2</item>
-        <item>1f4c3</item>
-        <item>1f4dc</item>
-        <item>1f4c4</item>
-        <item>1f4f0</item>
-        <item>1f5de</item>
-        <item>1f4d1</item>
-        <item>1f516</item>
-        <item>1f4b0</item>
-        <item>1f4b4</item>
-        <item>1f4b5</item>
-        <item>1f4b6</item>
-        <item>1f4b7</item>
-        <item>1f4b8</item>
-        <item>1f4b3</item>
-        <item>1f4b9</item>
-        <item>2709</item>
-        <item>1f4e7</item>
-        <item>1f4e8</item>
-        <item>1f4e9</item>
-        <item>1f4e4</item>
-        <item>1f4e5</item>
-        <item>1f4e6</item>
-        <item>1f4eb</item>
-        <item>1f4ea</item>
-        <item>1f4ec</item>
-        <item>1f4ed</item>
-        <item>1f4ee</item>
-        <item>1f5f3</item>
-        <item>270f</item>
-        <item>2712</item>
-        <item>1f58b</item>
-        <item>1f58a</item>
-        <item>1f58c</item>
-        <item>1f58d</item>
-        <item>1f4dd</item>
-        <item>1f4bc</item>
-        <item>1f4c1</item>
-        <item>1f4c2</item>
-        <item>1f5c2</item>
-        <item>1f4c5</item>
-        <item>1f4c6</item>
-        <item>1f5d2</item>
-        <item>1f5d3</item>
-        <item>1f4c7</item>
-        <item>1f4c8</item>
-        <item>1f4c9</item>
-        <item>1f4ca</item>
-        <item>1f4cb</item>
-        <item>1f4cc</item>
-        <item>1f4cd</item>
-        <item>1f4ce</item>
-        <item>1f587</item>
-        <item>1f4cf</item>
-        <item>1f4d0</item>
-        <item>2702</item>
-        <item>1f5c3</item>
-        <item>1f5c4</item>
-        <item>1f5d1</item>
-        <item>1f512</item>
-        <item>1f513</item>
-        <item>1f50f</item>
-        <item>1f510</item>
-        <item>1f511</item>
-        <item>1f5dd</item>
-        <item>1f528</item>
-        <!-- Removed for lack of color glyph support.  <item>26cf</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>2692</item>  -->
-        <item>1f6e0</item>
-        <item>1f527</item>
-        <item>1f529</item>
-        <!-- Removed for lack of color glyph support.  <item>2699</item>  -->
-        <item>1f5dc</item>
-        <!-- Removed for lack of color glyph support.  <item>2697</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>2696</item>  -->
-        <item>1f517</item>
-        <!-- Removed for lack of color glyph support.  <item>26d3</item>  -->
-        <item>1f489</item>
-        <item>1f48a</item>
-        <item>1f5e1</item>
-        <item>1f52a</item>
-        <!-- Removed for lack of color glyph support.  <item>2694</item>  -->
-        <item>1f52b</item>
-        <item>1f6e1</item>
-        <item>1f3f9</item>
-        <item>1f6ac</item>
-        <!-- Removed for lack of color glyph support.  <item>26b0</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>26b1</item>  -->
-        <item>1f5ff</item>
-        <item>1f6e2</item>
-        <item>1f52e</item>
+        <!-- clothing -->
+        <item>1F453</item>
+        <item>1F576</item>
+        <item>1F97D</item>
+        <item>1F97C</item>
+        <item>1F9BA</item>
+        <item>1F454</item>
+        <item>1F455</item>
+        <item>1F456</item>
+        <item>1F9E3</item>
+        <item>1F9E4</item>
+        <item>1F9E5</item>
+        <item>1F9E6</item>
+        <item>1F457</item>
+        <item>1F458</item>
+        <item>1F97B</item>
+        <item>1FA71</item>
+        <item>1FA72</item>
+        <item>1FA73</item>
+        <item>1F459</item>
+        <item>1F45A</item>
+        <item>1F45B</item>
+        <item>1F45C</item>
+        <item>1F45D</item>
+        <item>1F6CD</item>
+        <item>1F392</item>
+        <item>1FA74</item>
+        <item>1F45E</item>
+        <item>1F45F</item>
+        <item>1F97E</item>
+        <item>1F97F</item>
+        <item>1F460</item>
+        <item>1F461</item>
+        <item>1FA70</item>
+        <item>1F462</item>
+        <item>1F451</item>
+        <item>1F452</item>
+        <item>1F3A9</item>
+        <item>1F393</item>
+        <item>1F9E2</item>
+        <item>1FA96</item>
+        <item>26D1,FE0F</item>
+        <item>1F4FF</item>
+        <item>1F484</item>
+        <item>1F48D</item>
+        <item>1F48E</item>
+        <!-- sound -->
+        <item>1F507</item>
+        <item>1F508</item>
+        <item>1F509</item>
+        <item>1F50A</item>
+        <item>1F4E2</item>
+        <item>1F4E3</item>
+        <item>1F4EF</item>
+        <item>1F514</item>
+        <item>1F515</item>
+        <!-- music -->
+        <item>1F3BC</item>
+        <item>1F3B5</item>
+        <item>1F3B6</item>
+        <item>1F399</item>
+        <item>1F39A</item>
+        <item>1F39B</item>
+        <item>1F3A4</item>
+        <item>1F3A7</item>
+        <item>1F4FB</item>
+        <!-- musical-instrument -->
+        <item>1F3B7</item>
+        <item>1FA97</item>
+        <item>1F3B8</item>
+        <item>1F3B9</item>
+        <item>1F3BA</item>
+        <item>1F3BB</item>
+        <item>1FA95</item>
+        <item>1F941</item>
+        <item>1FA98</item>
+        <!-- phone -->
+        <item>1F4F1</item>
+        <item>1F4F2</item>
+        <item>260E</item>
+        <item>1F4DE</item>
+        <item>1F4DF</item>
+        <item>1F4E0</item>
+        <!-- computer -->
+        <item>1F50B</item>
+        <item>1FAAB</item>
+        <item>1F50C</item>
+        <item>1F4BB</item>
+        <item>1F5A5</item>
+        <item>1F5A8</item>
+        <item>2328,FE0F</item>
+        <item>1F5B1</item>
+        <item>1F5B2</item>
+        <item>1F4BD</item>
+        <item>1F4BE</item>
+        <item>1F4BF</item>
+        <item>1F4C0</item>
+        <item>1F9EE</item>
+        <!-- light & video -->
+        <item>1F3A5</item>
+        <item>1F39E</item>
+        <item>1F4FD</item>
+        <item>1F3AC</item>
+        <item>1F4FA</item>
+        <item>1F4F7</item>
+        <item>1F4F8</item>
+        <item>1F4F9</item>
+        <item>1F4FC</item>
+        <item>1F50D</item>
+        <item>1F50E</item>
+        <item>1F56F</item>
+        <item>1F4A1</item>
+        <item>1F526</item>
+        <item>1F3EE</item>
+        <item>1FA94</item>
+        <!-- book-paper -->
+        <item>1F4D4</item>
+        <item>1F4D5</item>
+        <item>1F4D6</item>
+        <item>1F4D7</item>
+        <item>1F4D8</item>
+        <item>1F4D9</item>
+        <item>1F4DA</item>
+        <item>1F4D3</item>
+        <item>1F4D2</item>
+        <item>1F4C3</item>
+        <item>1F4DC</item>
+        <item>1F4C4</item>
+        <item>1F4F0</item>
+        <item>1F5DE</item>
+        <item>1F4D1</item>
+        <item>1F516</item>
+        <item>1F3F7</item>
+        <!-- money -->
+        <item>1F4B0</item>
+        <item>1FA99</item>
+        <item>1F4B4</item>
+        <item>1F4B5</item>
+        <item>1F4B6</item>
+        <item>1F4B7</item>
+        <item>1F4B8</item>
+        <item>1F4B3</item>
+        <item>1F9FE</item>
+        <item>1F4B9</item>
+        <!-- mail -->
+        <item>2709,FE0F</item>
+        <item>1F4E7</item>
+        <item>1F4E8</item>
+        <item>1F4E9</item>
+        <item>1F4E4</item>
+        <item>1F4E5</item>
+        <item>1F4E6</item>
+        <item>1F4EB</item>
+        <item>1F4EA</item>
+        <item>1F4EC</item>
+        <item>1F4ED</item>
+        <item>1F4EE</item>
+        <item>1F5F3</item>
+        <!-- writing -->
+        <item>270F,FE0F</item>
+        <item>2712,FE0F</item>
+        <item>1F58B</item>
+        <item>1F58A</item>
+        <item>1F58C</item>
+        <item>1F58D</item>
+        <item>1F4DD</item>
+        <!-- office -->
+        <item>1F4BC</item>
+        <item>1F4C1</item>
+        <item>1F4C2</item>
+        <item>1F5C2</item>
+        <item>1F4C5</item>
+        <item>1F4C6</item>
+        <item>1F5D2</item>
+        <item>1F5D3</item>
+        <item>1F4C7</item>
+        <item>1F4C8</item>
+        <item>1F4C9</item>
+        <item>1F4CA</item>
+        <item>1F4CB</item>
+        <item>1F4CC</item>
+        <item>1F4CD</item>
+        <item>1F4CE</item>
+        <item>1F587</item>
+        <item>1F4CF</item>
+        <item>1F4D0</item>
+        <item>2702,FE0F</item>
+        <item>1F5C3</item>
+        <item>1F5C4</item>
+        <item>1F5D1</item>
+        <!-- lock -->
+        <item>1F512</item>
+        <item>1F513</item>
+        <item>1F50F</item>
+        <item>1F510</item>
+        <item>1F511</item>
+        <item>1F5DD</item>
+        <!-- tool -->
+        <item>1F528</item>
+        <item>1FA93</item>
+        <item>26CF,FE0F</item>
+        <item>2692,FE0F</item>
+        <item>1F6E0</item>
+        <item>1F5E1</item>
+        <item>2694,FE0F</item>
+        <item>1F52B</item>
+        <item>1FA83</item>
+        <item>1F3F9</item>
+        <item>1F6E1</item>
+        <item>1FA9A</item>
+        <item>1F527</item>
+        <item>1FA9B</item>
+        <item>1F529</item>
+        <item>2699,FE0F</item>
+        <item>1F5DC</item>
+        <item>2696,FE0F</item>
+        <item>1F9AF</item>
+        <item>1F517</item>
+        <item>26D3,FE0F</item>
+        <item>1FA9D</item>
+        <item>1F9F0</item>
+        <item>1F9F2</item>
+        <item>1FA9C</item>
+        <!-- science -->
+        <item>2697,FE0F</item>
+        <item>1F9EA</item>
+        <item>1F9EB</item>
+        <item>1F9EC</item>
+        <item>1F52C</item>
+        <item>1F52D</item>
+        <item>1F4E1</item>
+        <!-- medical -->
+        <item>1F489</item>
+        <item>1FA78</item>
+        <item>1F48A</item>
+        <item>1FA79</item>
+        <item>1FA7C</item>
+        <item>1FA7A</item>
+        <item>1FA7B</item>
+        <!-- household -->
+        <item>1F6AA</item>
+        <item>1F6D7</item>
+        <item>1FA9E</item>
+        <item>1FA9F</item>
+        <item>1F6CF</item>
+        <item>1F6CB</item>
+        <item>1FA91</item>
+        <item>1F6BD</item>
+        <item>1FAA0</item>
+        <item>1F6BF</item>
+        <item>1F6C1</item>
+        <item>1FAA4</item>
+        <item>1FA92</item>
+        <item>1F9F4</item>
+        <item>1F9F7</item>
+        <item>1F9F9</item>
+        <item>1F9FA</item>
+        <item>1F9FB</item>
+        <item>1FAA3</item>
+        <item>1F9FC</item>
+        <item>1FAE7</item>
+        <item>1FAA5</item>
+        <item>1F9FD</item>
+        <item>1F9EF</item>
+        <item>1F6D2</item>
+        <!-- other-object -->
+        <item>1F6AC</item>
+        <item>26B0,FE0F</item>
+        <item>1FAA6</item>
+        <item>26B1,FE0F</item>
+        <item>1F5FF</item>
+        <item>1FAA7</item>
+        <item>1FAAA</item>
     </array>
     <array
         name="emoji_eight_activity"
         format="string"
     >
-        <item>1f383</item>
-        <item>1f384</item>
-        <item>1f386</item>
-        <item>1f387</item>
+        <!-- event -->
+        <item>1F383</item>
+        <item>1F384</item>
+        <item>1F386</item>
+        <item>1F387</item>
+        <item>1F9E8</item>
         <item>2728</item>
-        <item>1f388</item>
-        <item>1f389</item>
-        <item>1f38a</item>
-        <item>1f38b</item>
-        <item>1f38c</item>
-        <item>1f38d</item>
-        <item>1f38e</item>
-        <item>1f38f</item>
-        <item>1f390</item>
-        <item>1f391</item>
-        <item>1f380</item>
-        <item>1f381</item>
-        <item>1f396</item>
-        <item>1f397</item>
-        <item>1f39e</item>
-        <item>1f39f</item>
-        <item>1f3ab</item>
-        <item>1f3f7</item>
-        <item>26bd</item>
-        <item>26be</item>
-        <item>1f3c0</item>
-        <item>1f3c8</item>
-        <item>1f3c9</item>
-        <item>1f3be</item>
-        <item>1f3b1</item>
-        <item>1f3b3</item>
-        <item>26f3</item>
-        <item>1f3cc</item>
-        <!-- Removed for lack of color glyph support.  <item>26f8</item>  -->
-        <item>1f3a3</item>
-        <item>1f3bd</item>
-        <item>1f3bf</item>
-        <!-- Removed for lack of color glyph support.  <item>26f7</item>  -->
-        <item>1f3c2</item>
-        <item>1f3c4</item>
-        <item>1f3c7</item>
-        <item>1f3ca</item>
-        <!-- Removed for lack of color glyph support.  <item>26f9</item>  -->
-        <item>1f3cb</item>
-        <item>1f6b4</item>
-        <item>1f6b5</item>
-        <item>1f3ce</item>
-        <item>1f3cd</item>
-        <item>1f3c5</item>
-        <item>1f3c6</item>
-        <item>1f3cf</item>
-        <item>1f3d0</item>
-        <item>1f3d1</item>
-        <item>1f3d2</item>
-        <item>1f3d3</item>
-        <item>1f3f8</item>
-        <item>1f3af</item>
-        <item>1f3ae</item>
-        <item>1f579</item>
-        <item>1f3b2</item>
+        <item>1F388</item>
+        <item>1F389</item>
+        <item>1F38A</item>
+        <item>1F38B</item>
+        <item>1F38D</item>
+        <item>1F38E</item>
+        <item>1F38F</item>
+        <item>1F390</item>
+        <item>1F391</item>
+        <item>1F9E7</item>
+        <item>1F380</item>
+        <item>1F381</item>
+        <item>1F397</item>
+        <item>1F39F</item>
+        <item>1F3AB</item>
+        <!-- award-medal -->
+        <item>1F396</item>
+        <item>1F3C6</item>
+        <item>1F3C5</item>
+        <item>1F947</item>
+        <item>1F948</item>
+        <item>1F949</item>
+        <!-- sport -->
+        <item>26BD</item>
+        <item>26BE</item>
+        <item>1F94E</item>
+        <item>1F3C0</item>
+        <item>1F3D0</item>
+        <item>1F3C8</item>
+        <item>1F3C9</item>
+        <item>1F3BE</item>
+        <item>1F94F</item>
+        <item>1F3B3</item>
+        <item>1F3CF</item>
+        <item>1F3D1</item>
+        <item>1F3D2</item>
+        <item>1F94D</item>
+        <item>1F3D3</item>
+        <item>1F3F8</item>
+        <item>1F94A</item>
+        <item>1F94B</item>
+        <item>1F945</item>
+        <item>26F3</item>
+        <item>26F8,FE0F</item>
+        <item>1F3A3</item>
+        <item>1F93F</item>
+        <item>1F3BD</item>
+        <item>1F3BF</item>
+        <item>1F6F7</item>
+        <item>1F94C</item>
+        <!-- game -->
+        <item>1F3AF</item>
+        <item>1FA80</item>
+        <item>1FA81</item>
+        <item>1F3B1</item>
+        <item>1F52E</item>
+        <item>1FA84</item>
+        <item>1F9FF</item>
+        <item>1FAAC</item>
+        <item>1F3AE</item>
+        <item>1F579</item>
+        <item>1F3B0</item>
+        <item>1F3B2</item>
+        <item>1F9E9</item>
+        <item>1F9F8</item>
+        <item>1FA85</item>
+        <item>1FAA9</item>
+        <item>1FA86</item>
         <item>2660</item>
         <item>2665</item>
         <item>2666</item>
         <item>2663</item>
-        <item>1f0cf</item>
-        <item>1f004</item>
-        <item>1f3b4</item>
+        <item>265F,FE0F</item>
+        <item>1F0CF</item>
+        <item>1F004</item>
+        <item>1F3B4</item>
+        <!-- arts & crafts -->
+        <item>1F3AD</item>
+        <item>1F5BC</item>
+        <item>1F3A8</item>
+        <item>1F9F5</item>
+        <item>1FAA1</item>
+        <item>1F9F6</item>
+        <item>1FAA2</item>
     </array>
     <array
         name="emoji_eight_travel_places"
         format="string"
     >
-        <item>1f30d</item>
-        <item>1f30e</item>
-        <item>1f30f</item>
-        <item>1f310</item>
-        <item>1f5fa</item>
-        <item>1f3d4</item>
-        <!-- Removed for lack of color glyph support.  <item>26f0</item>  -->
-        <item>1f30b</item>
-        <item>1f5fb</item>
-        <item>1f3d5</item>
-        <item>1f3d6</item>
-        <item>1f3dc</item>
-        <item>1f3dd</item>
-        <item>1f3de</item>
-        <item>1f3df</item>
-        <item>1f3db</item>
-        <item>1f3d7</item>
-        <item>1f3d8</item>
-        <item>1f3d9</item>
-        <item>1f3da</item>
-        <item>1f3e0</item>
-        <item>1f3e1</item>
-        <item>26ea</item>
-        <item>1f54b</item>
-        <item>1f54c</item>
-        <item>1f54d</item>
-        <!-- Removed for lack of color glyph support.  <item>26e9</item>  -->
-        <item>1f3e2</item>
-        <item>1f3e3</item>
-        <item>1f3e4</item>
-        <item>1f3e5</item>
-        <item>1f3e6</item>
-        <item>1f3e8</item>
-        <item>1f3e9</item>
-        <item>1f3ea</item>
-        <item>1f3eb</item>
-        <item>1f3ec</item>
-        <item>1f3ed</item>
-        <item>1f3ef</item>
-        <item>1f3f0</item>
-        <item>1f492</item>
-        <item>1f5fc</item>
-        <item>1f5fd</item>
-        <item>1f5fe</item>
-        <item>26f2</item>
-        <item>26fa</item>
-        <item>1f301</item>
-        <item>1f303</item>
-        <item>1f304</item>
-        <item>1f305</item>
-        <item>1f306</item>
-        <item>1f307</item>
-        <item>1f309</item>
-        <item>2668</item>
-        <item>1f30c</item>
-        <item>1f3a0</item>
-        <item>1f3a1</item>
-        <item>1f3a2</item>
-        <item>1f488</item>
-        <item>1f3aa</item>
-        <item>1f3ad</item>
-        <item>1f5bc</item>
-        <item>1f3a8</item>
-        <item>1f3b0</item>
-        <item>1f682</item>
-        <item>1f683</item>
-        <item>1f684</item>
-        <item>1f685</item>
-        <item>1f686</item>
-        <item>1f687</item>
-        <item>1f688</item>
-        <item>1f689</item>
-        <item>1f68a</item>
-        <item>1f69d</item>
-        <item>1f69e</item>
-        <item>1f68b</item>
-        <item>1f68c</item>
-        <item>1f68d</item>
-        <item>1f68e</item>
-        <item>1f68f</item>
-        <item>1f690</item>
-        <item>1f691</item>
-        <item>1f692</item>
-        <item>1f693</item>
-        <item>1f694</item>
-        <item>1f695</item>
-        <item>1f696</item>
-        <item>1f697</item>
-        <item>1f698</item>
-        <item>1f699</item>
-        <item>1f69a</item>
-        <item>1f69b</item>
-        <item>1f69c</item>
-        <item>1f6b2</item>
-        <item>26fd</item>
-        <item>1f6e3</item>
-        <item>1f6e4</item>
-        <item>1f6a8</item>
-        <item>1f6a5</item>
-        <item>1f6a6</item>
-        <item>1f6a7</item>
+        <!-- place-map -->
+        <item>1F30D</item>
+        <item>1F30E</item>
+        <item>1F30F</item>
+        <item>1F310</item>
+        <item>1F5FA</item>
+        <item>1F5FE</item>
+        <item>1F9ED</item>
+        <!-- place-geographic -->
+        <item>1F3D4</item>
+        <item>26F0,FE0F</item>
+        <item>1F30B</item>
+        <item>1F5FB</item>
+        <item>1F3D5</item>
+        <item>1F3D6</item>
+        <item>1F3DC</item>
+        <item>1F3DD</item>
+        <item>1F3DE</item>
+        <!-- place-building -->
+        <item>1F3DF</item>
+        <item>1F3DB</item>
+        <item>1F3D7</item>
+        <item>1F9F1</item>
+        <item>1FAA8</item>
+        <item>1FAB5</item>
+        <item>1F6D6</item>
+        <item>1F3D8</item>
+        <item>1F3DA</item>
+        <item>1F3E0</item>
+        <item>1F3E1</item>
+        <item>1F3E2</item>
+        <item>1F3E3</item>
+        <item>1F3E4</item>
+        <item>1F3E5</item>
+        <item>1F3E6</item>
+        <item>1F3E8</item>
+        <item>1F3E9</item>
+        <item>1F3EA</item>
+        <item>1F3EB</item>
+        <item>1F3EC</item>
+        <item>1F3ED</item>
+        <item>1F3EF</item>
+        <item>1F3F0</item>
+        <item>1F492</item>
+        <item>1F5FC</item>
+        <item>1F5FD</item>
+        <!-- place-religious -->
+        <item>26EA</item>
+        <item>1F54C</item>
+        <item>1F6D5</item>
+        <item>1F54D</item>
+        <item>26E9,FE0F</item>
+        <item>1F54B</item>
+        <!-- place-other -->
+        <item>26F2</item>
+        <item>26FA</item>
+        <item>1F301</item>
+        <item>1F303</item>
+        <item>1F3D9</item>
+        <item>1F304</item>
+        <item>1F305</item>
+        <item>1F306</item>
+        <item>1F307</item>
+        <item>1F309</item>
+        <item>2668,FE0F</item>
+        <item>1F3A0</item>
+        <item>1F6DD</item>
+        <item>1F3A1</item>
+        <item>1F3A2</item>
+        <item>1F488</item>
+        <item>1F3AA</item>
+        <!-- transport-ground -->
+        <item>1F682</item>
+        <item>1F683</item>
+        <item>1F684</item>
+        <item>1F685</item>
+        <item>1F686</item>
+        <item>1F687</item>
+        <item>1F688</item>
+        <item>1F689</item>
+        <item>1F68A</item>
+        <item>1F69D</item>
+        <item>1F69E</item>
+        <item>1F68B</item>
+        <item>1F68C</item>
+        <item>1F68D</item>
+        <item>1F68E</item>
+        <item>1F690</item>
+        <item>1F691</item>
+        <item>1F692</item>
+        <item>1F693</item>
+        <item>1F694</item>
+        <item>1F695</item>
+        <item>1F696</item>
+        <item>1F697</item>
+        <item>1F698</item>
+        <item>1F699</item>
+        <item>1F6FB</item>
+        <item>1F69A</item>
+        <item>1F69B</item>
+        <item>1F69C</item>
+        <item>1F3CE</item>
+        <item>1F3CD</item>
+        <item>1F6F5</item>
+        <item>1F9BD</item>
+        <item>1F9BC</item>
+        <item>1F6FA</item>
+        <item>1F6B2</item>
+        <item>1F6F4</item>
+        <item>1F6F9</item>
+        <item>1F6FC</item>
+        <item>1F68F</item>
+        <item>1F6E3</item>
+        <item>1F6E4</item>
+        <item>1F6E2</item>
+        <item>26FD</item>
+        <item>1F6DE</item>
+        <item>1F6A8</item>
+        <item>1F6A5</item>
+        <item>1F6A6</item>
+        <item>1F6D1</item>
+        <item>1F6A7</item>
+        <!-- transport-water -->
         <item>2693</item>
-        <item>26f5</item>
-        <item>1f6a3</item>
-        <item>1f6a4</item>
-        <item>1f6f3</item>
-        <!-- Removed for lack of color glyph support.  <item>26f4</item>  -->
-        <item>1f6e5</item>
-        <item>1f6a2</item>
-        <item>2708</item>
-        <item>1f6e9</item>
-        <item>1f6eb</item>
-        <item>1f6ec</item>
-        <item>1f4ba</item>
-        <item>1f681</item>
-        <item>1f69f</item>
-        <item>1f6a0</item>
-        <item>1f6a1</item>
-        <item>1f680</item>
-        <item>1f6f0</item>
-        <item>1f6ce</item>
-        <item>1f6aa</item>
-        <item>1f6cc</item>
-        <item>1f6cf</item>
-        <item>1f6cb</item>
-        <item>1f6bd</item>
-        <item>1f6bf</item>
-        <item>1f6c0</item>
-        <item>1f6c1</item>
-        <item>231b</item>
-        <item>23f3</item>
-        <item>231a</item>
-        <item>23f0</item>
-        <!-- Removed for lack of color glyph support.  <item>23f1</item>  -->
-        <!-- Removed for lack of color glyph support.  <item>23f2</item>  -->
-        <item>1f570</item>
-        <item>1f55b</item>
-        <item>1f567</item>
-        <item>1f550</item>
-        <item>1f55c</item>
-        <item>1f551</item>
-        <item>1f55d</item>
-        <item>1f552</item>
-        <item>1f55e</item>
-        <item>1f553</item>
-        <item>1f55f</item>
-        <item>1f554</item>
-        <item>1f560</item>
-        <item>1f555</item>
-        <item>1f561</item>
-        <item>1f556</item>
-        <item>1f562</item>
-        <item>1f557</item>
-        <item>1f563</item>
-        <item>1f558</item>
-        <item>1f564</item>
-        <item>1f559</item>
-        <item>1f565</item>
-        <item>1f55a</item>
-        <item>1f566</item>
-        <item>1f311</item>
-        <item>1f312</item>
-        <item>1f313</item>
-        <item>1f314</item>
-        <item>1f315</item>
-        <item>1f316</item>
-        <item>1f317</item>
-        <item>1f318</item>
-        <item>1f319</item>
-        <item>1f31a</item>
-        <item>1f31b</item>
-        <item>1f31c</item>
-        <item>1f321</item>
+        <item>1F6DF</item>
+        <item>26F5</item>
+        <item>1F6F6</item>
+        <item>1F6A4</item>
+        <item>1F6F3</item>
+        <item>26F4,FE0F</item>
+        <item>1F6E5</item>
+        <item>1F6A2</item>
+        <!-- transport-air -->
+        <item>2708,FE0F</item>
+        <item>1F6E9</item>
+        <item>1F6EB</item>
+        <item>1F6EC</item>
+        <item>1FA82</item>
+        <item>1F4BA</item>
+        <item>1F681</item>
+        <item>1F69F</item>
+        <item>1F6A0</item>
+        <item>1F6A1</item>
+        <item>1F6F0</item>
+        <item>1F680</item>
+        <item>1F6F8</item>
+        <!-- hotel -->
+        <item>1F6CE</item>
+        <item>1F9F3</item>
+        <!-- time -->
+        <item>231B</item>
+        <item>23F3</item>
+        <item>231A</item>
+        <item>23F0</item>
+        <item>23F1,FE0F</item>
+        <item>23F2,FE0F</item>
+        <item>1F570</item>
+        <item>1F55B</item>
+        <item>1F567</item>
+        <item>1F550</item>
+        <item>1F55C</item>
+        <item>1F551</item>
+        <item>1F55D</item>
+        <item>1F552</item>
+        <item>1F55E</item>
+        <item>1F553</item>
+        <item>1F55F</item>
+        <item>1F554</item>
+        <item>1F560</item>
+        <item>1F555</item>
+        <item>1F561</item>
+        <item>1F556</item>
+        <item>1F562</item>
+        <item>1F557</item>
+        <item>1F563</item>
+        <item>1F558</item>
+        <item>1F564</item>
+        <item>1F559</item>
+        <item>1F565</item>
+        <item>1F55A</item>
+        <item>1F566</item>
+        <!-- sky & weather -->
+        <item>1F311</item>
+        <item>1F312</item>
+        <item>1F313</item>
+        <item>1F314</item>
+        <item>1F315</item>
+        <item>1F316</item>
+        <item>1F317</item>
+        <item>1F318</item>
+        <item>1F319</item>
+        <item>1F31A</item>
+        <item>1F31B</item>
+        <item>1F31C</item>
+        <item>1F321</item>
         <item>2600</item>
-        <item>1f31d</item>
-        <item>1f31e</item>
-        <item>2b50</item>
-        <item>1f31f</item>
-        <item>1f320</item>
+        <item>1F31D</item>
+        <item>1F31E</item>
+        <item>1FA90</item>
+        <item>2B50</item>
+        <item>1F31F</item>
+        <item>1F320</item>
+        <item>1F30C</item>
         <item>2601</item>
-        <item>26c5</item>
-        <!-- Removed for lack of color glyph support.  <item>26c8</item>  -->
-        <item>1f324</item>
-        <item>1f325</item>
-        <item>1f326</item>
-        <item>1f327</item>
-        <item>1f328</item>
-        <item>1f329</item>
-        <item>1f32a</item>
-        <item>1f32b</item>
-        <item>1f32c</item>
-        <item>1f300</item>
-        <item>1f308</item>
-        <item>1f302</item>
-        <!-- Removed for lack of color glyph support.  <item>2602</item>  -->
+        <item>26C5</item>
+        <item>26C8,FE0F</item>
+        <item>1F324</item>
+        <item>1F325</item>
+        <item>1F326</item>
+        <item>1F327</item>
+        <item>1F328</item>
+        <item>1F329</item>
+        <item>1F32A</item>
+        <item>1F32B</item>
+        <item>1F32C</item>
+        <item>1F300</item>
+        <item>1F308</item>
+        <item>1F302</item>
+        <item>2602,FE0F</item>
         <item>2614</item>
-        <!-- Removed for lack of color glyph support.  <item>26f1</item>  -->
-        <item>26a1</item>
+        <item>26F1,FE0F</item>
+        <item>26A1</item>
         <item>2744</item>
-        <!-- Removed for lack of color glyph support.  <item>2603</item>  -->
-        <item>26c4</item>
-        <!-- Removed for lack of color glyph support.  <item>2604</item>  -->
-        <item>1f525</item>
-        <item>1f4a7</item>
-        <item>1f30a</item>
+        <item>2603,FE0F</item>
+        <item>26C4</item>
+        <item>2604,FE0F</item>
+        <item>1F525</item>
+        <item>1F4A7</item>
+        <item>1F30A</item>
     </array>
     <array
         name="emoji_eight_flags"
         format="string"
     >
-        <item>1f1e6,1f1e8</item>
-        <item>1f1e6,1f1e9</item>
-        <item>1f1e6,1f1ea</item>
-        <item>1f1e6,1f1eb</item>
-        <item>1f1e6,1f1ec</item>
-        <item>1f1e6,1f1ee</item>
-        <item>1f1e6,1f1f1</item>
-        <item>1f1e6,1f1f2</item>
-        <item>1f1e6,1f1f4</item>
-        <item>1f1e6,1f1f6</item>
-        <item>1f1e6,1f1f7</item>
-        <item>1f1e6,1f1f8</item>
-        <item>1f1e6,1f1f9</item>
-        <item>1f1e6,1f1fa</item>
-        <item>1f1e6,1f1fc</item>
-        <item>1f1e6,1f1fd</item>
-        <item>1f1e6,1f1ff</item>
-        <item>1f1e7,1f1e6</item>
-        <item>1f1e7,1f1e7</item>
-        <item>1f1e7,1f1e9</item>
-        <item>1f1e7,1f1ea</item>
-        <item>1f1e7,1f1eb</item>
-        <item>1f1e7,1f1ec</item>
-        <item>1f1e7,1f1ed</item>
-        <item>1f1e7,1f1ee</item>
-        <item>1f1e7,1f1ef</item>
-        <item>1f1e7,1f1f1</item>
-        <item>1f1e7,1f1f2</item>
-        <item>1f1e7,1f1f3</item>
-        <item>1f1e7,1f1f4</item>
-        <item>1f1e7,1f1f6</item>
-        <item>1f1e7,1f1f7</item>
-        <item>1f1e7,1f1f8</item>
-        <item>1f1e7,1f1f9</item>
-        <item>1f1e7,1f1fb</item>
-        <item>1f1e7,1f1fc</item>
-        <item>1f1e7,1f1fe</item>
-        <item>1f1e7,1f1ff</item>
-        <item>1f1e8,1f1e6</item>
-        <item>1f1e8,1f1e8</item>
-        <item>1f1e8,1f1e9</item>
-        <item>1f1e8,1f1eb</item>
-        <item>1f1e8,1f1ec</item>
-        <item>1f1e8,1f1ed</item>
-        <item>1f1e8,1f1ee</item>
-        <item>1f1e8,1f1f0</item>
-        <item>1f1e8,1f1f1</item>
-        <item>1f1e8,1f1f2</item>
-        <item>1f1e8,1f1f3</item>
-        <item>1f1e8,1f1f4</item>
-        <item>1f1e8,1f1f5</item>
-        <item>1f1e8,1f1f7</item>
-        <item>1f1e8,1f1fa</item>
-        <item>1f1e8,1f1fb</item>
-        <item>1f1e8,1f1fc</item>
-        <item>1f1e8,1f1fd</item>
-        <item>1f1e8,1f1fe</item>
-        <item>1f1e8,1f1ff</item>
-        <item>1f1e9,1f1ea</item>
-        <item>1f1e9,1f1ec</item>
-        <item>1f1e9,1f1ef</item>
-        <item>1f1e9,1f1f0</item>
-        <item>1f1e9,1f1f2</item>
-        <item>1f1e9,1f1f4</item>
-        <item>1f1e9,1f1ff</item>
-        <item>1f1ea,1f1e6</item>
-        <item>1f1ea,1f1e8</item>
-        <item>1f1ea,1f1ea</item>
-        <item>1f1ea,1f1ec</item>
-        <item>1f1ea,1f1ed</item>
-        <item>1f1ea,1f1f7</item>
-        <item>1f1ea,1f1f8</item>
-        <item>1f1ea,1f1f9</item>
-        <item>1f1ea,1f1fa</item>
-        <item>1f1eb,1f1ee</item>
-        <item>1f1eb,1f1ef</item>
-        <item>1f1eb,1f1f0</item>
-        <item>1f1eb,1f1f2</item>
-        <item>1f1eb,1f1f4</item>
-        <item>1f1eb,1f1f7</item>
-        <item>1f1ec,1f1e6</item>
-        <item>1f1ec,1f1e7</item>
-        <item>1f1ec,1f1e9</item>
-        <item>1f1ec,1f1ea</item>
-        <item>1f1ec,1f1eb</item>
-        <item>1f1ec,1f1ec</item>
-        <item>1f1ec,1f1ed</item>
-        <item>1f1ec,1f1ee</item>
-        <item>1f1ec,1f1f1</item>
-        <item>1f1ec,1f1f2</item>
-        <item>1f1ec,1f1f3</item>
-        <item>1f1ec,1f1f5</item>
-        <item>1f1ec,1f1f6</item>
-        <item>1f1ec,1f1f7</item>
-        <item>1f1ec,1f1f8</item>
-        <item>1f1ec,1f1f9</item>
-        <item>1f1ec,1f1fa</item>
-        <item>1f1ec,1f1fc</item>
-        <item>1f1ec,1f1fe</item>
-        <item>1f1ed,1f1f0</item>
-        <item>1f1ed,1f1f2</item>
-        <item>1f1ed,1f1f3</item>
-        <item>1f1ed,1f1f7</item>
-        <item>1f1ed,1f1f9</item>
-        <item>1f1ed,1f1fa</item>
-        <item>1f1ee,1f1e8</item>
-        <item>1f1ee,1f1e9</item>
-        <item>1f1ee,1f1ea</item>
-        <item>1f1ee,1f1f1</item>
-        <item>1f1ee,1f1f2</item>
-        <item>1f1ee,1f1f3</item>
-        <item>1f1ee,1f1f4</item>
-        <item>1f1ee,1f1f6</item>
-        <item>1f1ee,1f1f7</item>
-        <item>1f1ee,1f1f8</item>
-        <item>1f1ee,1f1f9</item>
-        <item>1f1ef,1f1ea</item>
-        <item>1f1ef,1f1f2</item>
-        <item>1f1ef,1f1f4</item>
-        <item>1f1ef,1f1f5</item>
-        <item>1f1f0,1f1ea</item>
-        <item>1f1f0,1f1ec</item>
-        <item>1f1f0,1f1ed</item>
-        <item>1f1f0,1f1ee</item>
-        <item>1f1f0,1f1f2</item>
-        <item>1f1f0,1f1f3</item>
-        <item>1f1f0,1f1f5</item>
-        <item>1f1f0,1f1f7</item>
-        <item>1f1f0,1f1fc</item>
-        <item>1f1f0,1f1fe</item>
-        <item>1f1f0,1f1ff</item>
-        <item>1f1f1,1f1e6</item>
-        <item>1f1f1,1f1e7</item>
-        <item>1f1f1,1f1e8</item>
-        <item>1f1f1,1f1ee</item>
-        <item>1f1f1,1f1f0</item>
-        <item>1f1f1,1f1f7</item>
-        <item>1f1f1,1f1f8</item>
-        <item>1f1f1,1f1f9</item>
-        <item>1f1f1,1f1fa</item>
-        <item>1f1f1,1f1fb</item>
-        <item>1f1f1,1f1fe</item>
-        <item>1f1f2,1f1e6</item>
-        <item>1f1f2,1f1e8</item>
-        <item>1f1f2,1f1e9</item>
-        <item>1f1f2,1f1ea</item>
-        <item>1f1f2,1f1eb</item>
-        <item>1f1f2,1f1ec</item>
-        <item>1f1f2,1f1ed</item>
-        <item>1f1f2,1f1f0</item>
-        <item>1f1f2,1f1f1</item>
-        <item>1f1f2,1f1f2</item>
-        <item>1f1f2,1f1f3</item>
-        <item>1f1f2,1f1f4</item>
-        <item>1f1f2,1f1f5</item>
-        <item>1f1f2,1f1f6</item>
-        <item>1f1f2,1f1f7</item>
-        <item>1f1f2,1f1f8</item>
-        <item>1f1f2,1f1f9</item>
-        <item>1f1f2,1f1fa</item>
-        <item>1f1f2,1f1fb</item>
-        <item>1f1f2,1f1fc</item>
-        <item>1f1f2,1f1fd</item>
-        <item>1f1f2,1f1fe</item>
-        <item>1f1f2,1f1ff</item>
-        <item>1f1f3,1f1e6</item>
-        <item>1f1f3,1f1e8</item>
-        <item>1f1f3,1f1ea</item>
-        <item>1f1f3,1f1eb</item>
-        <item>1f1f3,1f1ec</item>
-        <item>1f1f3,1f1ee</item>
-        <item>1f1f3,1f1f1</item>
-        <item>1f1f3,1f1f4</item>
-        <item>1f1f3,1f1f5</item>
-        <item>1f1f3,1f1f7</item>
-        <item>1f1f3,1f1fa</item>
-        <item>1f1f3,1f1ff</item>
-        <item>1f1f4,1f1f2</item>
-        <item>1f1f5,1f1e6</item>
-        <item>1f1f5,1f1ea</item>
-        <item>1f1f5,1f1eb</item>
-        <item>1f1f5,1f1ec</item>
-        <item>1f1f5,1f1ed</item>
-        <item>1f1f5,1f1f0</item>
-        <item>1f1f5,1f1f1</item>
-        <item>1f1f5,1f1f2</item>
-        <item>1f1f5,1f1f3</item>
-        <item>1f1f5,1f1f7</item>
-        <item>1f1f5,1f1f8</item>
-        <item>1f1f5,1f1f9</item>
-        <item>1f1f5,1f1fc</item>
-        <item>1f1f5,1f1fe</item>
-        <item>1f1f6,1f1e6</item>
-        <item>1f1f7,1f1ea</item>
-        <item>1f1f7,1f1f4</item>
-        <item>1f1f7,1f1f8</item>
-        <item>1f1f7,1f1fa</item>
-        <item>1f1f7,1f1fc</item>
-        <item>1f1f8,1f1e6</item>
-        <item>1f1f8,1f1e7</item>
-        <item>1f1f8,1f1e8</item>
-        <item>1f1f8,1f1e9</item>
-        <item>1f1f8,1f1ea</item>
-        <item>1f1f8,1f1ec</item>
-        <item>1f1f8,1f1ed</item>
-        <item>1f1f8,1f1ee</item>
-        <item>1f1f8,1f1ef</item>
-        <item>1f1f8,1f1f0</item>
-        <item>1f1f8,1f1f1</item>
-        <item>1f1f8,1f1f2</item>
-        <item>1f1f8,1f1f3</item>
-        <item>1f1f8,1f1f4</item>
-        <item>1f1f8,1f1f7</item>
-        <item>1f1f8,1f1f8</item>
-        <item>1f1f8,1f1f9</item>
-        <item>1f1f8,1f1fb</item>
-        <item>1f1f8,1f1fd</item>
-        <item>1f1f8,1f1fe</item>
-        <item>1f1f8,1f1ff</item>
-        <item>1f1f9,1f1e6</item>
-        <item>1f1f9,1f1e8</item>
-        <item>1f1f9,1f1e9</item>
-        <item>1f1f9,1f1eb</item>
-        <item>1f1f9,1f1ec</item>
-        <item>1f1f9,1f1ed</item>
-        <item>1f1f9,1f1ef</item>
-        <item>1f1f9,1f1f0</item>
-        <item>1f1f9,1f1f1</item>
-        <item>1f1f9,1f1f2</item>
-        <item>1f1f9,1f1f3</item>
-        <item>1f1f9,1f1f4</item>
-        <item>1f1f9,1f1f7</item>
-        <item>1f1f9,1f1f9</item>
-        <item>1f1f9,1f1fb</item>
-        <item>1f1f9,1f1fc</item>
-        <item>1f1f9,1f1ff</item>
-        <item>1f1fa,1f1e6</item>
-        <item>1f1fa,1f1ec</item>
-        <item>1f1fa,1f1f2</item>
-        <item>1f1fa,1f1f8</item>
-        <item>1f1fa,1f1fe</item>
-        <item>1f1fa,1f1ff</item>
-        <item>1f1fb,1f1e6</item>
-        <item>1f1fb,1f1e8</item>
-        <item>1f1fb,1f1ea</item>
-        <item>1f1fb,1f1ec</item>
-        <item>1f1fb,1f1ee</item>
-        <item>1f1fb,1f1f3</item>
-        <item>1f1fb,1f1fa</item>
-        <item>1f1fc,1f1eb</item>
-        <item>1f1fc,1f1f8</item>
-        <item>1f1fd,1f1f0</item>
-        <item>1f1fe,1f1ea</item>
-        <item>1f1fe,1f1f9</item>
-        <item>1f1ff,1f1e6</item>
-        <item>1f1ff,1f1f2</item>
-        <item>1f1ff,1f1fc</item>
+        <!-- flag -->
+        <item>1F3C1</item>
+        <item>1F6A9</item>
+        <item>1F38C</item>
+        <item>1F3F4</item>
+        <item>1F3F3</item>
+        <item>1F3F3,FE0F,200D,1F308</item>
+        <item>1F3F3,FE0F,200D,26A7,FE0F</item>
+        <item>1F3F4,200D,2620,FE0F</item>
+        <!-- country-flag -->
+        <item>1F1E6,1F1E8</item>
+        <item>1F1E6,1F1E9</item>
+        <item>1F1E6,1F1EA</item>
+        <item>1F1E6,1F1EB</item>
+        <item>1F1E6,1F1EC</item>
+        <item>1F1E6,1F1EE</item>
+        <item>1F1E6,1F1F1</item>
+        <item>1F1E6,1F1F2</item>
+        <item>1F1E6,1F1F4</item>
+        <item>1F1E6,1F1F6</item>
+        <item>1F1E6,1F1F7</item>
+        <item>1F1E6,1F1F8</item>
+        <item>1F1E6,1F1F9</item>
+        <item>1F1E6,1F1FA</item>
+        <item>1F1E6,1F1FC</item>
+        <item>1F1E6,1F1FD</item>
+        <item>1F1E6,1F1FF</item>
+        <item>1F1E7,1F1E6</item>
+        <item>1F1E7,1F1E7</item>
+        <item>1F1E7,1F1E9</item>
+        <item>1F1E7,1F1EA</item>
+        <item>1F1E7,1F1EB</item>
+        <item>1F1E7,1F1EC</item>
+        <item>1F1E7,1F1ED</item>
+        <item>1F1E7,1F1EE</item>
+        <item>1F1E7,1F1EF</item>
+        <item>1F1E7,1F1F1</item>
+        <item>1F1E7,1F1F2</item>
+        <item>1F1E7,1F1F3</item>
+        <item>1F1E7,1F1F4</item>
+        <item>1F1E7,1F1F6</item>
+        <item>1F1E7,1F1F7</item>
+        <item>1F1E7,1F1F8</item>
+        <item>1F1E7,1F1F9</item>
+        <item>1F1E7,1F1FB</item>
+        <item>1F1E7,1F1FC</item>
+        <item>1F1E7,1F1FE</item>
+        <item>1F1E7,1F1FF</item>
+        <item>1F1E8,1F1E6</item>
+        <item>1F1E8,1F1E8</item>
+        <item>1F1E8,1F1E9</item>
+        <item>1F1E8,1F1EB</item>
+        <item>1F1E8,1F1EC</item>
+        <item>1F1E8,1F1ED</item>
+        <item>1F1E8,1F1EE</item>
+        <item>1F1E8,1F1F0</item>
+        <item>1F1E8,1F1F1</item>
+        <item>1F1E8,1F1F2</item>
+        <item>1F1E8,1F1F3</item>
+        <item>1F1E8,1F1F4</item>
+        <item>1F1E8,1F1F5</item>
+        <item>1F1E8,1F1F7</item>
+        <item>1F1E8,1F1FA</item>
+        <item>1F1E8,1F1FB</item>
+        <item>1F1E8,1F1FC</item>
+        <item>1F1E8,1F1FD</item>
+        <item>1F1E8,1F1FE</item>
+        <item>1F1E8,1F1FF</item>
+        <item>1F1E9,1F1EA</item>
+        <item>1F1E9,1F1EC</item>
+        <item>1F1E9,1F1EF</item>
+        <item>1F1E9,1F1F0</item>
+        <item>1F1E9,1F1F2</item>
+        <item>1F1E9,1F1F4</item>
+        <item>1F1E9,1F1FF</item>
+        <item>1F1EA,1F1E6</item>
+        <item>1F1EA,1F1E8</item>
+        <item>1F1EA,1F1EA</item>
+        <item>1F1EA,1F1EC</item>
+        <item>1F1EA,1F1ED</item>
+        <item>1F1EA,1F1F7</item>
+        <item>1F1EA,1F1F8</item>
+        <item>1F1EA,1F1F9</item>
+        <item>1F1EA,1F1FA</item>
+        <item>1F1EB,1F1EE</item>
+        <item>1F1EB,1F1EF</item>
+        <item>1F1EB,1F1F0</item>
+        <item>1F1EB,1F1F2</item>
+        <item>1F1EB,1F1F4</item>
+        <item>1F1EB,1F1F7</item>
+        <item>1F1EC,1F1E6</item>
+        <item>1F1EC,1F1E7</item>
+        <item>1F1EC,1F1E9</item>
+        <item>1F1EC,1F1EA</item>
+        <item>1F1EC,1F1EB</item>
+        <item>1F1EC,1F1EC</item>
+        <item>1F1EC,1F1ED</item>
+        <item>1F1EC,1F1EE</item>
+        <item>1F1EC,1F1F1</item>
+        <item>1F1EC,1F1F2</item>
+        <item>1F1EC,1F1F3</item>
+        <item>1F1EC,1F1F5</item>
+        <item>1F1EC,1F1F6</item>
+        <item>1F1EC,1F1F7</item>
+        <item>1F1EC,1F1F8</item>
+        <item>1F1EC,1F1F9</item>
+        <item>1F1EC,1F1FA</item>
+        <item>1F1EC,1F1FC</item>
+        <item>1F1EC,1F1FE</item>
+        <item>1F1ED,1F1F0</item>
+        <item>1F1ED,1F1F2</item>
+        <item>1F1ED,1F1F3</item>
+        <item>1F1ED,1F1F7</item>
+        <item>1F1ED,1F1F9</item>
+        <item>1F1ED,1F1FA</item>
+        <item>1F1EE,1F1E8</item>
+        <item>1F1EE,1F1E9</item>
+        <item>1F1EE,1F1EA</item>
+        <item>1F1EE,1F1F1</item>
+        <item>1F1EE,1F1F2</item>
+        <item>1F1EE,1F1F3</item>
+        <item>1F1EE,1F1F4</item>
+        <item>1F1EE,1F1F6</item>
+        <item>1F1EE,1F1F7</item>
+        <item>1F1EE,1F1F8</item>
+        <item>1F1EE,1F1F9</item>
+        <item>1F1EF,1F1EA</item>
+        <item>1F1EF,1F1F2</item>
+        <item>1F1EF,1F1F4</item>
+        <item>1F1EF,1F1F5</item>
+        <item>1F1F0,1F1EA</item>
+        <item>1F1F0,1F1EC</item>
+        <item>1F1F0,1F1ED</item>
+        <item>1F1F0,1F1EE</item>
+        <item>1F1F0,1F1F2</item>
+        <item>1F1F0,1F1F3</item>
+        <item>1F1F0,1F1F5</item>
+        <item>1F1F0,1F1F7</item>
+        <item>1F1F0,1F1FC</item>
+        <item>1F1F0,1F1FE</item>
+        <item>1F1F0,1F1FF</item>
+        <item>1F1F1,1F1E6</item>
+        <item>1F1F1,1F1E7</item>
+        <item>1F1F1,1F1E8</item>
+        <item>1F1F1,1F1EE</item>
+        <item>1F1F1,1F1F0</item>
+        <item>1F1F1,1F1F7</item>
+        <item>1F1F1,1F1F8</item>
+        <item>1F1F1,1F1F9</item>
+        <item>1F1F1,1F1FA</item>
+        <item>1F1F1,1F1FB</item>
+        <item>1F1F1,1F1FE</item>
+        <item>1F1F2,1F1E6</item>
+        <item>1F1F2,1F1E8</item>
+        <item>1F1F2,1F1E9</item>
+        <item>1F1F2,1F1EA</item>
+        <item>1F1F2,1F1EB</item>
+        <item>1F1F2,1F1EC</item>
+        <item>1F1F2,1F1ED</item>
+        <item>1F1F2,1F1F0</item>
+        <item>1F1F2,1F1F1</item>
+        <item>1F1F2,1F1F2</item>
+        <item>1F1F2,1F1F3</item>
+        <item>1F1F2,1F1F4</item>
+        <item>1F1F2,1F1F5</item>
+        <item>1F1F2,1F1F6</item>
+        <item>1F1F2,1F1F7</item>
+        <item>1F1F2,1F1F8</item>
+        <item>1F1F2,1F1F9</item>
+        <item>1F1F2,1F1FA</item>
+        <item>1F1F2,1F1FB</item>
+        <item>1F1F2,1F1FC</item>
+        <item>1F1F2,1F1FD</item>
+        <item>1F1F2,1F1FE</item>
+        <item>1F1F2,1F1FF</item>
+        <item>1F1F3,1F1E6</item>
+        <item>1F1F3,1F1E8</item>
+        <item>1F1F3,1F1EA</item>
+        <item>1F1F3,1F1EB</item>
+        <item>1F1F3,1F1EC</item>
+        <item>1F1F3,1F1EE</item>
+        <item>1F1F3,1F1F1</item>
+        <item>1F1F3,1F1F4</item>
+        <item>1F1F3,1F1F5</item>
+        <item>1F1F3,1F1F7</item>
+        <item>1F1F3,1F1FA</item>
+        <item>1F1F3,1F1FF</item>
+        <item>1F1F4,1F1F2</item>
+        <item>1F1F5,1F1E6</item>
+        <item>1F1F5,1F1EA</item>
+        <item>1F1F5,1F1EB</item>
+        <item>1F1F5,1F1EC</item>
+        <item>1F1F5,1F1ED</item>
+        <item>1F1F5,1F1F0</item>
+        <item>1F1F5,1F1F1</item>
+        <item>1F1F5,1F1F2</item>
+        <item>1F1F5,1F1F3</item>
+        <item>1F1F5,1F1F7</item>
+        <item>1F1F5,1F1F8</item>
+        <item>1F1F5,1F1F9</item>
+        <item>1F1F5,1F1FC</item>
+        <item>1F1F5,1F1FE</item>
+        <item>1F1F6,1F1E6</item>
+        <item>1F1F7,1F1EA</item>
+        <item>1F1F7,1F1F4</item>
+        <item>1F1F7,1F1F8</item>
+        <item>1F1F7,1F1FA</item>
+        <item>1F1F7,1F1FC</item>
+        <item>1F1F8,1F1E6</item>
+        <item>1F1F8,1F1E7</item>
+        <item>1F1F8,1F1E8</item>
+        <item>1F1F8,1F1E9</item>
+        <item>1F1F8,1F1EA</item>
+        <item>1F1F8,1F1EC</item>
+        <item>1F1F8,1F1ED</item>
+        <item>1F1F8,1F1EE</item>
+        <item>1F1F8,1F1EF</item>
+        <item>1F1F8,1F1F0</item>
+        <item>1F1F8,1F1F1</item>
+        <item>1F1F8,1F1F2</item>
+        <item>1F1F8,1F1F3</item>
+        <item>1F1F8,1F1F4</item>
+        <item>1F1F8,1F1F7</item>
+        <item>1F1F8,1F1F8</item>
+        <item>1F1F8,1F1F9</item>
+        <item>1F1F8,1F1FB</item>
+        <item>1F1F8,1F1FD</item>
+        <item>1F1F8,1F1FE</item>
+        <item>1F1F8,1F1FF</item>
+        <item>1F1F9,1F1E6</item>
+        <item>1F1F9,1F1E8</item>
+        <item>1F1F9,1F1E9</item>
+        <item>1F1F9,1F1EB</item>
+        <item>1F1F9,1F1EC</item>
+        <item>1F1F9,1F1ED</item>
+        <item>1F1F9,1F1EF</item>
+        <item>1F1F9,1F1F0</item>
+        <item>1F1F9,1F1F1</item>
+        <item>1F1F9,1F1F2</item>
+        <item>1F1F9,1F1F3</item>
+        <item>1F1F9,1F1F4</item>
+        <item>1F1F9,1F1F7</item>
+        <item>1F1F9,1F1F9</item>
+        <item>1F1F9,1F1FB</item>
+        <item>1F1F9,1F1FC</item>
+        <item>1F1F9,1F1FF</item>
+        <item>1F1FA,1F1E6</item>
+        <item>1F1FA,1F1EC</item>
+        <item>1F1FA,1F1F2</item>
+        <item>1F1FA,1F1F3</item>
+        <item>1F1FA,1F1F8</item>
+        <item>1F1FA,1F1FE</item>
+        <item>1F1FA,1F1FF</item>
+        <item>1F1FB,1F1E6</item>
+        <item>1F1FB,1F1E8</item>
+        <item>1F1FB,1F1EA</item>
+        <item>1F1FB,1F1EC</item>
+        <item>1F1FB,1F1EE</item>
+        <item>1F1FB,1F1F3</item>
+        <item>1F1FB,1F1FA</item>
+        <item>1F1FC,1F1EB</item>
+        <item>1F1FC,1F1F8</item>
+        <item>1F1FD,1F1F0</item>
+        <item>1F1FE,1F1EA</item>
+        <item>1F1FE,1F1F9</item>
+        <item>1F1FF,1F1E6</item>
+        <item>1F1FF,1F1F2</item>
+        <item>1F1FF,1F1FC</item>
+        <!-- subdivision-flag -->
+        <item>1F3F4,E0067,E0062,E0065,E006E,E0067,E007F</item>
+        <item>1F3F4,E0067,E0062,E0073,E0063,E0074,E007F</item>
+        <item>1F3F4,E0067,E0062,E0077,E006C,E0073,E007F</item>
     </array>
 </resources>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 8ff5a87..69a5d59 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -59,6 +59,8 @@
         <attr name="spacebarIconWidthRatio" format="float" />
         <!-- Right padding of hint letter to the edge of the key.-->
         <attr name="keyHintLetterPadding" format="dimension" />
+        <!-- Top padding of hint letter to the edge of the key.-->
+        <attr name="keyHintLetterPaddingVertical" format="dimension" />
         <!-- Popup hint letter string-->
         <attr name="keyPopupHintLetter" format="string" />
         <!-- Bottom padding of popup hint letter to the edge of the key.-->
@@ -238,6 +240,7 @@
             <enum name="KLP" value="2" />
             <enum name="LXXLight" value="3" />
             <enum name="LXXDark" value="4" />
+            <enum name="You" value="6" />
         </attr>
         <!-- Touch position correction -->
         <attr name="touchPositionCorrectionData" format="reference" />
@@ -482,6 +485,7 @@
             <enum name="KLP" value="2" />
             <enum name="LXXLight" value="3" />
             <enum name="LXXDark" value="4" />
+            <enum name="You" value="6" />
         </attr>
         <!-- This should be aligned with
              {@link com.android.inputmethod.keyboard.KeyboardId#MODE_TEXT} etc. -->
diff --git a/java/res/values/cm_strings.xml b/java/res/values/cm_strings.xml
new file mode 100644
index 0000000..dc8b02f
--- /dev/null
+++ b/java/res/values/cm_strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- This string is displayed in the description for a keyboard type. It refers specifically to
+the Latin alphabet, as opposed to Cyrillic, Arabic, Hebrew or other scripts.
+When the device is configured to use a language using a script other than the Latin alphabet, the
+user still needs a keyboard that can input Latin characters for passwords or login names for
+example, and a way to switch to this Latin alphabet keyboard. This string is the description for
+this keyboard, so users of other scripts should understand when they read this that it represents a
+keyboard that is meant for them to be able to enter Latin characters as opposed to the script they
+are used to. This keyboard does not provide a dictionary, and it is not tied to any specific
+language among those that use the Latin alphabet. This keyboard is laid out in the Bépo
+disposition rather than other common dispositions for Latin languages. [CHAR LIMIT=25] -->
+    <string name="keyboard_theme_material_follow_system">Material - follow system settings</string>
+
+    <!-- Title of the settings for setting keyboard height -->
+    <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
+</resources>
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 5453d51..03619d2 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -19,27 +19,6 @@
 -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Color resources for IceCreamSandwich theme. Base color = 33B5E5 -->
-    <!-- android:color/holo_blue_light value is #FF33B5E5 -->
-    <color name="highlight_color_ics">#FF33B5E5</color>
-    <color name="typed_word_color_ics">#D833B5E5</color>
-    <color name="suggested_word_color_ics">#B233B5E5</color>
-    <color name="highlight_translucent_color_ics">#9933B5E5</color>
-    <color name="key_text_color_holo">@android:color/white</color>
-    <color name="key_text_inactivated_color_holo">#66E0E4E5</color>
-    <color name="key_hint_letter_color_holo">#80000000</color>
-    <color name="key_hint_label_color_holo">#A0FFFFFF</color>
-    <color name="key_shifted_letter_hint_inactivated_color_holo">#66E0E4E5</color>
-    <color name="key_shifted_letter_hint_activated_color_holo">@android:color/white</color>
-    <color name="spacebar_text_color_holo">#FFC0C0C0</color>
-    <color name="spacebar_text_shadow_color_holo">#80000000</color>
-    <color name="gesture_floating_preview_color_holo">#C0000000</color>
-    <color name="emoji_tab_page_indicator_background_holo">#111111</color>
-    <!-- Color resources for KLP theme. Base color = F0F0F0 -->
-    <color name="highlight_color_klp">#FFF0F0F0</color>
-    <color name="typed_word_color_klp">#D8F0F0F0</color>
-    <color name="suggested_word_color_klp">#B2F0F0F0</color>
-    <color name="highlight_translucent_color_klp">#99E0E0E0</color>
     <!-- Color resources for LXX_Light theme.
          15%:0x26 70%:0xB3 75%:0xC0 80%:0xCC 85%:0xD9 90%:0xE6 -->
     <color name="key_text_color_lxx_light">#37474F</color>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 33bcb06..5184a75 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -38,6 +38,7 @@
 
     <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
     <fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction>
+    <fraction name="config_key_vertical_gap_you">3.5%p</fraction>
     <fraction name="config_key_vertical_gap_holo">6.127%p</fraction>
     <fraction name="config_key_horizontal_gap_holo">1.739%p</fraction>
     <!-- config_more_keys_keyboard_key_height x -0.5 -->
@@ -46,9 +47,13 @@
     <dimen name="config_key_preview_height_holo">80dp</dimen>
     <dimen name="config_key_preview_offset_lxx">50.0dp</dimen>
     <dimen name="config_key_preview_height_lxx">122dp</dimen>
+    <dimen name="config_key_preview_offset_you">10.0dp</dimen>
+    <dimen name="config_key_preview_height_you">60dp</dimen>
     <fraction name="config_key_preview_text_ratio">82%</fraction>
+    <fraction name="config_key_preview_text_ratio_you">70%</fraction>
     <fraction name="config_key_letter_ratio_holo">55%</fraction>
     <fraction name="config_key_letter_ratio_lxx">55%</fraction>
+    <fraction name="config_key_letter_ratio_you">52%</fraction>
     <fraction name="config_key_large_letter_ratio_holo">65%</fraction>
     <fraction name="config_key_large_letter_ratio_lxx">90%</fraction>
     <fraction name="config_key_label_ratio_holo">34%</fraction>
@@ -61,6 +66,9 @@
     <fraction name="config_key_shifted_letter_hint_ratio_lxx">35%</fraction>
     <fraction name="config_language_on_spacebar_text_ratio">33.735%</fraction>
     <dimen name="config_key_hint_letter_padding">1dp</dimen>
+    <dimen name="config_key_hint_letter_padding_vertical">0dp</dimen>
+    <dimen name="config_key_hint_letter_padding_you">3dp</dimen>
+    <dimen name="config_key_hint_letter_padding_vertical_you">1.5dp</dimen>
     <dimen name="config_key_shifted_letter_hint_padding">2dp</dimen>
 
     <!-- For 5-row keyboard -->
@@ -87,10 +95,10 @@
     <dimen name="config_gesture_floating_preview_round_radius">2dp</dimen>
 
     <!-- Emoji keyboard -->
-    <fraction name="config_emoji_keyboard_key_width">14.2857%p</fraction>
-    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_width">16.666%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">25%p</fraction>
     <fraction name="config_emoji_keyboard_key_letter_size">68%p</fraction>
-    <integer name="config_emoji_keyboard_max_page_key_count">21</integer>
+    <integer name="config_emoji_keyboard_max_page_key_count">24</integer>
 
     <!-- Key codes of hardware keys that can be used to toggle the Emoji layout.
          Each array defines a comma-separated tuple containing:
diff --git a/java/res/values/donottranslate-debug-settings.xml b/java/res/values/donottranslate-debug-settings.xml
index 9df73ae..a875c03 100644
--- a/java/res/values/donottranslate-debug-settings.xml
+++ b/java/res/values/donottranslate-debug-settings.xml
@@ -43,8 +43,6 @@
     <string name="prefs_key_popup_dismiss_end_y_scale_settings">Key popup dismiss end Y scale</string>
     <!-- Title of the settings to enable keyboard resizing -->
     <string name="prefs_resize_keyboard">Enable keyboard resizing</string>
-    <!-- Title of the settings for setting keyboard height -->
-    <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
     <!-- Title of the settings group for dumpping dictionary files that have been created on the device [CHAR LIMIT=35] -->
     <string name="prefs_dump_dynamic_dicts">Dump dictionary</string>
 </resources>
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-you-dark.xml
similarity index 60%
rename from java/res/values/keyboard-icons-holo.xml
rename to java/res/values/keyboard-icons-you-dark.xml
index f5484bf..7eee05f 100644
--- a/java/res/values/keyboard-icons-holo.xml
+++ b/java/res/values/keyboard-icons-you-dark.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** Copyright 2014, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -19,23 +19,28 @@
 -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <style name="KeyboardIcons.Holo">
+    <style name="KeyboardIcons.You">
         <!-- Keyboard icons -->
-        <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
-        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
-        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift_you</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_you</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_you</item>
         <item name="iconSpaceKey">@null</item>
-        <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
-        <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
-        <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
-        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo_dark</item>
-        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
-        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
-        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
-        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item>
-        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item>
-        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item>
-        <item name="iconEmojiActionKey">@drawable/sym_keyboard_smiley_holo_dark</item>
-        <item name="iconEmojiNormalKey">@drawable/sym_keyboard_smiley_holo_dark</item>
+        <item name="iconEnterKey">@drawable/sym_keyboard_return_you</item>
+        <item name="iconGoKey">@drawable/sym_keyboard_next_you</item>
+        <item name="iconSearchKey">@drawable/sym_keyboard_search_you</item>
+        <item name="iconSendKey">@drawable/sym_keyboard_send_you</item>
+        <item name="iconNextKey">@drawable/sym_keyboard_next_you</item>
+        <item name="iconDoneKey">@drawable/sym_keyboard_done_you</item>
+        <item name="iconPreviousKey">@drawable/sym_keyboard_previous_you</item>
+        <item name="iconTabKey">@drawable/sym_keyboard_tab_you</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_you</item>
+        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_lxx_dark</item>
+        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_you</item>
+        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_you</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_you</item>
+        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_lxx_dark</item>
+        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_lxx_dark</item>
+        <item name="iconEmojiActionKey">@drawable/sym_keyboard_smiley_you</item>
+        <item name="iconEmojiNormalKey">@drawable/sym_keyboard_smiley_you</item>
     </style>
 </resources>
diff --git a/java/res/values/keyboard-themes.xml b/java/res/values/keyboard-themes.xml
index 26b2582..2932200 100644
--- a/java/res/values/keyboard-themes.xml
+++ b/java/res/values/keyboard-themes.xml
@@ -22,15 +22,15 @@
     <string-array name="keyboard_theme_names" translatable="false">
         <item>@string/keyboard_theme_material_light</item>
         <item>@string/keyboard_theme_material_dark</item>
-        <item>@string/keyboard_theme_holo_white</item>
-        <item>@string/keyboard_theme_holo_blue</item>
+        <item>@string/keyboard_theme_material_follow_system</item>
+        <item>@string/keyboard_theme_material_you</item>
     </string-array>
     <!-- An element must be a keyboard theme id of
          {@link com.android.inputmethod.keyboard.KeyboardTheme#THEME_ID_ICS} etc. -->
     <integer-array name="keyboard_theme_ids" translatable="false">
         <item>3</item>
         <item>4</item>
-        <item>2</item>
-        <item>0</item>
+        <item>5</item>
+        <item>6</item>
     </integer-array>
 </resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 6b985ce..d32ee3c 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -355,6 +355,8 @@
     <string name="keyboard_theme_material_dark" translatable="false">Material Dark</string>
     <!-- The keyboard theme name, Material Light. This is marked as translatable="false" because this is a proper name of system-wide UI Theme.  -->
     <string name="keyboard_theme_material_light" translatable="false">Material Light</string>
+    <!-- The keyboard theme name, Material You. This is marked as translatable="false" because this is a proper name of system-wide UI Theme. -->
+    <string name="keyboard_theme_material_you" translatable="false">Material You</string>
 
     <!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]-->
     <string name="custom_input_styles_title">Custom input styles</string>
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index 2f768de..c4f6940 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -37,11 +37,12 @@
     <style name="KeyboardView">
         <!-- This keyBackground is needed to run unit tests based on {@link InputTestBase}. -->
         <!-- TODO: Apply default {@link KeyboardTheme} to {@link InputTestBase} and remove this. -->
-        <item name="keyBackground">@drawable/btn_keyboard_key_klp</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_lxx_light</item>
         <item name="keyTypeface">normal</item>
         <!-- A negative value to disable key text shadow layer. -->
         <item name="keyTextShadowRadius">-1.0</item>
         <item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding</item>
+        <item name="keyHintLetterPaddingVertical">@dimen/config_key_hint_letter_padding_vertical</item>
         <item name="keyPopupHintLetterPadding">@dimen/config_key_popup_hint_letter_padding</item>
         <item name="keyShiftedLetterHintPadding">@dimen/config_key_shifted_letter_hint_padding</item>
         <item name="keyPreviewTextRatio">@fraction/config_key_preview_text_ratio</item>
diff --git a/java/res/values/themes-holo.xml b/java/res/values/themes-holo.xml
deleted file mode 100644
index efac656..0000000
--- a/java/res/values/themes-holo.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, The Android Open Source 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <style
-        name="InputView.Holo"
-        parent="InputView"
-    />
-    <!-- Holo KeyboardView theme (ICS and KLP) -->
-    <style
-        name="KeyboardView.Holo"
-        parent="KeyboardView"
-    >
-        <item name="keyTypeface">bold</item>
-        <item name="keyLetterSize">@fraction/config_key_letter_ratio_holo</item>
-        <item name="keyLabelSize">@fraction/config_key_label_ratio_holo</item>
-        <item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio_holo</item>
-        <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio_holo</item>
-        <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio_holo</item>
-        <item name="keyLabelOffCenterRatio">-175%</item>
-        <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio_holo</item>
-        <item name="keyHintLabelOffCenterRatio">200%</item>
-        <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
-        <item name="keyPopupHintLetter">&#x2026;</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
deleted file mode 100644
index 1a15b0e..0000000
--- a/java/res/values/themes-ics.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <style name="KeyboardTheme.ICS" parent="KeyboardIcons.Holo">
-        <item name="inputViewStyle">@style/InputView.Holo</item>
-        <item name="keyboardStyle">@style/Keyboard.ICS</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.ICS</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.ICS</item>
-        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.ICS</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item>
-        <!-- Note: ICS theme uses the same style for both general more keys and action more keys. -->
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item>
-        <item name="moreKeysKeyboardViewForActionStyle">@style/MoreKeysKeyboardView.ICS</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item>
-        <item name="suggestionWordStyle">@style/SuggestionWord.ICS</item>
-    </style>
-    <style
-        name="Keyboard.ICS"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardTheme.THEME_ID_* -->
-        <item name="themeId">ICS</item>
-    </style>
-    <style
-        name="KeyboardView.ICS"
-        parent="KeyboardView.Holo"
-    >
-        <item name="android:background">@drawable/keyboard_background_holo</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_ics</item>
-        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_ics</item>
-        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item>
-        <item name="keyTextColor">@color/key_text_color_holo</item>
-        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
-        <item name="functionalTextColor">@color/key_text_color_holo</item>
-        <item name="keyHintLetterColor">@color/key_hint_letter_color_holo</item>
-        <item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
-        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
-        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
-        <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
-    </style>
-    <style
-        name="MainKeyboardView.ICS"
-        parent="KeyboardView.ICS"
-    >
-        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
-        <item name="keyPreviewHeight">@dimen/config_key_preview_height_holo</item>
-        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
-        <item name="keyPreviewShowUpAnimator">@anim/key_preview_show_up_holo</item>
-        <item name="keyPreviewDismissAnimator">@anim/key_preview_dismiss_holo</item>
-        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
-        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
-        <item name="gestureTrailColor">@color/highlight_color_ics</item>
-        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_ics</item>
-        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
-        <item name="languageOnSpacebarTextShadowRadius">1.0</item>
-        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
-    </style>
-    <!-- Though {@link com.android.inputmethod.keyboard.emoji.EmojiPalettesView} doesn't extend
-         {@link com.android.inputmethod.keyboard.KeyboardView}, some views inside it, for instance
-         delete button, need themed {@link com.android.inputmethod.keyboard.KeyboardView}
-         attributes. -->
-    <style
-        name="EmojiPalettesView.ICS"
-        parent="MainKeyboardView.ICS"
-    >
-        <item name="categoryIndicatorEnabled">true</item>
-        <item name="categoryIndicatorDrawable">@drawable/emoji_category_tab_selected_ics</item>
-        <item name="categoryIndicatorBackground">@drawable/emoji_category_tab_unselected_holo_dark</item>
-        <item name="categoryPageIndicatorColor">@color/highlight_color_ics</item>
-        <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_holo</item>
-        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
-        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
-        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
-        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
-        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
-        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
-        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
-        <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_holo_dark</item>
-        <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_holo_dark</item>
-        <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_holo_dark</item>
-        <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_holo_dark</item>
-        <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_holo_dark</item>
-        <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_holo_dark</item>
-        <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_holo_dark</item>
-        <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_holo_dark</item>
-        <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_holo_dark</item>
-        <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_holo_dark</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard.ICS"
-        parent="Keyboard.ICS"
-    >
-        <item name="keyboardTopPadding">0%p</item>
-        <item name="keyboardBottomPadding">0%p</item>
-        <item name="horizontalGap">0%p</item>
-        <item name="touchPositionCorrectionData">@null</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardView.ICS"
-        parent="KeyboardView.ICS"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
-        <item name="divider">@drawable/more_keys_divider</item>
-        <item name="keyTypeface">normal</item>
-        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
-    </style>
-    <style
-        name="SuggestionStripView.ICS"
-        parent="KeyboardView.ICS"
-    >
-        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
-        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
-        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
-        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
-        <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
-        <item name="android:src">@drawable/suggestions_strip_divider_holo</item>
-        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
-        <item name="colorValidTypedWord">@color/typed_word_color_ics</item>
-        <item name="colorTypedWord">@color/typed_word_color_ics</item>
-        <item name="colorAutoCorrect">@color/highlight_color_ics</item>
-        <item name="colorSuggested">@color/suggested_word_color_ics</item>
-        <item name="alphaObsoleted">70%</item>
-    </style>
-    <style
-        name="SuggestionWord.ICS"
-        parent="SuggestionWord"
-    >
-        <item name="android:background">@drawable/btn_suggestion_ics</item>
-        <item name="android:textColor">@color/highlight_color_ics</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml
deleted file mode 100644
index 32884db..0000000
--- a/java/res/values/themes-klp.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, The Android Open Source 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <style name="KeyboardTheme.KLP" parent="KeyboardIcons.Holo">
-        <item name="inputViewStyle">@style/InputView.Holo</item>
-        <item name="keyboardStyle">@style/Keyboard.KLP</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.KLP</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.KLP</item>
-        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.KLP</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.KLP</item>
-        <!-- Note: KLP theme uses the same style for both general more keys and action more keys. -->
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.KLP</item>
-        <item name="moreKeysKeyboardViewForActionStyle">@style/MoreKeysKeyboardView.KLP</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripView.KLP</item>
-        <item name="suggestionWordStyle">@style/SuggestionWord.KLP</item>
-    </style>
-    <style
-        name="Keyboard.KLP"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardTheme.THEME_ID_* -->
-        <item name="themeId">KLP</item>
-    </style>
-    <style
-        name="KeyboardView.KLP"
-        parent="KeyboardView.Holo"
-    >
-        <item name="android:background">@drawable/keyboard_background_holo</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_klp</item>
-        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_klp</item>
-        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item>
-        <item name="keyTextColor">@color/key_text_color_holo</item>
-        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
-        <item name="functionalTextColor">@color/key_text_color_holo</item>
-        <item name="keyHintLetterColor">@color/key_hint_letter_color_holo</item>
-        <item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
-        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
-        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
-        <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
-    </style>
-    <style
-        name="MainKeyboardView.KLP"
-        parent="KeyboardView.KLP"
-    >
-        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_klp</item>
-        <item name="keyPreviewHeight">@dimen/config_key_preview_height_holo</item>
-        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
-        <item name="keyPreviewShowUpAnimator">@anim/key_preview_show_up_holo</item>
-        <item name="keyPreviewDismissAnimator">@anim/key_preview_dismiss_holo</item>
-        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_klp</item>
-        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
-        <item name="gestureTrailColor">@color/highlight_color_klp</item>
-        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_klp</item>
-        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
-        <item name="languageOnSpacebarTextShadowRadius">1.0</item>
-        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
-    </style>
-    <!-- Though {@link com.android.inputmethod.keyboard.emoji.EmojiPalettesView} doesn't extend
-         {@link com.android.inputmethod.keyboard.KeyboardView}, some views inside it, for instance
-         delete button, need themed {@link com.android.inputmethod.keyboard.KeyboardView}
-         attributes. -->
-    <style
-        name="EmojiPalettesView.KLP"
-        parent="MainKeyboardView.KLP"
-    >
-        <item name="categoryIndicatorEnabled">true</item>
-        <item name="categoryIndicatorDrawable">@drawable/emoji_category_tab_selected_klp</item>
-        <item name="categoryIndicatorBackground">@drawable/emoji_category_tab_unselected_holo_dark</item>
-        <item name="categoryPageIndicatorColor">@color/highlight_color_klp</item>
-        <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_holo</item>
-        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
-        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
-        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
-        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
-        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
-        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
-        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
-        <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_holo_dark</item>
-        <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_holo_dark</item>
-        <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_holo_dark</item>
-        <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_holo_dark</item>
-        <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_holo_dark</item>
-        <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_holo_dark</item>
-        <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_holo_dark</item>
-        <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_holo_dark</item>
-        <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_holo_dark</item>
-        <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_holo_dark</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard.KLP"
-        parent="Keyboard.KLP"
-    >
-        <item name="keyboardTopPadding">0%p</item>
-        <item name="keyboardBottomPadding">0%p</item>
-        <item name="horizontalGap">0%p</item>
-        <item name="touchPositionCorrectionData">@null</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardView.KLP"
-        parent="KeyboardView.KLP"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item>
-        <item name="divider">@drawable/more_keys_divider</item>
-        <item name="keyTypeface">normal</item>
-        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
-    </style>
-    <style
-        name="SuggestionStripView.KLP"
-        parent="KeyboardView.KLP"
-    >
-        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
-        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
-        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
-        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
-        <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
-        <item name="android:src">@drawable/suggestions_strip_divider_holo</item>
-        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
-        <item name="colorValidTypedWord">@color/typed_word_color_klp</item>
-        <item name="colorTypedWord">@color/typed_word_color_klp</item>
-        <item name="colorAutoCorrect">@color/highlight_color_klp</item>
-        <item name="colorSuggested">@color/suggested_word_color_klp</item>
-        <item name="alphaObsoleted">70%</item>
-    </style>
-    <style
-        name="SuggestionWord.KLP"
-        parent="SuggestionWord"
-    >
-        <item name="android:background">@drawable/btn_suggestion_klp</item>
-        <item name="android:textColor">@color/highlight_color_klp</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-you-colors.xml b/java/res/values/themes-you-colors.xml
new file mode 100644
index 0000000..5a9fa40
--- /dev/null
+++ b/java/res/values/themes-you-colors.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <color name="keyboard_background_you">@android:color/system_accent3_10</color>
+    <color name="keyboard_key_normal_color_you">@android:color/system_neutral1_100</color>
+    <color name="keyboard_key_pressed_color_you">@android:color/system_neutral1_200</color>
+    <color name="keyboard_key_text_color_you">@android:color/system_accent1_900</color>
+    <color name="functional_text_color_you">@color/keyboard_key_text_color_you</color>
+    <color name="category_page_indicator_color">@android:color/system_accent3_200</color>
+    <color name="icon_color_you">@android:color/system_accent3_800</color>
+    <color name="functional_normal_color_you">@android:color/system_neutral2_100</color>
+    <color name="functional_pressed_color_you">@android:color/system_neutral2_200</color>
+    <color name="shift_normal_color_you">@android:color/system_neutral1_800</color>
+    <color name="shift_locked_color_you">@android:color/system_accent1_1000</color>
+    <color name="key_hint_letter_color_you">@color/key_hint_letter_color_lxx_light</color>
+    <color name="typed_word_color_you">@color/typed_word_color_lxx_light</color>
+    <color name="auto_correct_color_you">@color/auto_correct_color_lxx_light</color>
+    <color name="suggested_word_color_you">@color/suggested_word_color_lxx_light</color>
+    <color name="highlight_color_you">@color/highlight_color_lxx_light</color>
+    <color name="gesture_trail_color_you">@android:color/system_accent3_800</color>
+    <color name="gesture_floating_preview_text_color_you">@android:color/system_neutral1_1000</color>
+</resources>
diff --git a/java/res/values/themes-you-dimens.xml b/java/res/values/themes-you-dimens.xml
new file mode 100644
index 0000000..f43466f
--- /dev/null
+++ b/java/res/values/themes-you-dimens.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <dimen name="keyboard_key_corner_radius_you">8dp</dimen>
+    <dimen name="config_gesture_floating_preview_round_radius_you">8dp</dimen>
+</resources>
diff --git a/java/res/values/themes-you.xml b/java/res/values/themes-you.xml
new file mode 100644
index 0000000..a17e4bb
--- /dev/null
+++ b/java/res/values/themes-you.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2015, The Android Open Source 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.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style
+        name="InputView.You"
+        parent="InputView"
+    />
+    <!-- LXX KeyboardView theme (LXX_Light and LXX_Dark) -->
+    <style
+        name="KeyboardView.You_Common"
+        parent="KeyboardView"
+    >
+        <item name="keyTypeface">normal</item>
+        <item name="keyLetterSize">@fraction/config_key_letter_ratio_you</item>
+        <item name="keyLabelSize">@fraction/config_key_label_ratio_lxx</item>
+        <item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio_lxx</item>
+        <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio_lxx</item>
+        <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio_lxx</item>
+        <item name="keyLabelOffCenterRatio">-80%</item>
+        <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio_lxx</item>
+        <item name="keyHintLabelOffCenterRatio">300%</item>
+        <item name="keyLabelFlags">alignHintLabelToBottom</item>
+        <item name="spacebarIconWidthRatio">0.9</item>
+        <!-- No popup hint letter -->
+        <item name="keyPopupHintLetter"></item>
+        <item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding_you</item>
+        <item name="keyHintLetterPaddingVertical">@dimen/config_key_hint_letter_padding_vertical_you</item>
+        <item name="keyPreviewTextRatio">@fraction/config_key_preview_text_ratio_you</item>
+    </style>
+
+    <style name="KeyboardTheme.You" parent="KeyboardIcons.You">
+        <item name="inputViewStyle">@style/InputView.You</item>
+        <item name="keyboardStyle">@style/Keyboard.You</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.You</item>
+        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.You</item>
+        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.You</item>
+        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.You</item>
+        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.You</item>
+        <item name="moreKeysKeyboardViewForActionStyle">@style/MoreKeysKeyboardView.You.Action</item>
+        <item name="suggestionStripViewStyle">@style/SuggestionStripView.You</item>
+        <item name="suggestionWordStyle">@style/SuggestionWord.You</item>
+    </style>
+    <style
+        name="Keyboard.You"
+        parent="Keyboard"
+    >
+        <!-- This should be aligned with KeyboardTheme.THEME_ID_* -->
+        <item name="themeId">You</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_you</item>
+    </style>
+    <style
+        name="KeyboardView.You"
+        parent="KeyboardView.You_Common"
+    >
+        <item name="android:background">@color/keyboard_background_you</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_you</item>
+        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_you</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_key_you</item>
+        <item name="keyTextColor">@color/keyboard_key_text_color_you</item>
+        <item name="keyTextInactivatedColor">@color/functional_text_color_you</item>
+        <item name="functionalTextColor">@color/functional_text_color_you</item>
+        <item name="keyHintLetterColor">@color/key_hint_letter_color_you</item>
+        <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx_dark</item>
+        <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+        <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_dark</item>
+        <item name="keyPreviewTextColor">@color/keyboard_key_text_color_you</item>
+        <item name="gestureFloatingPreviewRoundRadius">@dimen/config_gesture_floating_preview_round_radius_you</item>
+    </style>
+    <style
+        name="MainKeyboardView.You"
+        parent="KeyboardView.You"
+    >
+        <item name="moreKeysKeyboardForActionLayout">@layout/more_keys_keyboard_for_action_lxx</item>
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_you</item>
+        <item name="keyPreviewHeight">@dimen/config_key_preview_height_you</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_you</item>
+        <item name="keyPreviewShowUpAnimator">@anim/key_preview_show_up_lxx</item>
+        <item name="keyPreviewDismissAnimator">@anim/key_preview_dismiss_lxx</item>
+        <item name="gestureFloatingPreviewTextColor">@color/gesture_floating_preview_text_color_you</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_you</item>
+        <item name="gestureTrailColor">@color/gesture_trail_color_you</item>
+        <item name="slidingKeyInputPreviewColor">@color/sliding_key_input_preview_color_you</item>
+        <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx_dark</item>
+        <!-- A negative value to disable text shadow layer. -->
+        <item name="languageOnSpacebarTextShadowRadius">-1.0</item>
+    </style>
+    <!-- Though {@link com.android.inputmethod.keyboard.emoji.EmojiPalettesView} doesn't extend
+         {@link com.android.inputmethod.keyboard.KeyboardView}, some views inside it, for instance
+         delete button, need themed {@link com.android.inputmethod.keyboard.KeyboardView}
+         attributes. -->
+    <style
+        name="EmojiPalettesView.You"
+        parent="MainKeyboardView.You"
+    >
+        <item name="categoryIndicatorEnabled">false</item>
+        <item name="categoryPageIndicatorColor">@color/category_page_indicator_color</item>
+        <item name="categoryPageIndicatorBackground">@null</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_lxx_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_lxx_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_lxx_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_lxx_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_lxx_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_lxx_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_lxx_dark</item>
+        <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_lxx_dark</item>
+        <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_lxx_dark</item>
+        <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_lxx_dark</item>
+        <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_lxx_dark</item>
+        <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_lxx_dark</item>
+        <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_lxx_dark</item>
+        <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_lxx_dark</item>
+        <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_lxx_dark</item>
+        <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_lxx_dark</item>
+        <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_lxx_dark</item>
+    </style>
+    <style
+        name="MoreKeysKeyboard.You"
+        parent="Keyboard.You"
+    >
+        <item name="keyboardTopPadding">0%p</item>
+        <item name="keyboardBottomPadding">0%p</item>
+        <item name="horizontalGap">0%p</item>
+        <item name="touchPositionCorrectionData">@null</item>
+    </style>
+    <style
+        name="MoreKeysKeyboardView.You"
+        parent="KeyboardView.You"
+    >
+        <item name="android:background">@drawable/btn_keyboard_key_you</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_you</item>
+        <item name="divider">@drawable/more_keys_divider</item>
+        <item name="keyTypeface">normal</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
+    </style>
+    <style
+        name="MoreKeysKeyboardView.You.Action"
+        parent="MoreKeysKeyboardView.You"
+    >
+        <item name="android:background">@android:color/transparent</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_popup_action_lxx_dark</item>
+        <item name="divider">@null</item>
+        <item name="keyLabelFlags">keepBackgroundAspectRatio</item>
+    </style>
+    <style
+        name="SuggestionStripView.You"
+        parent="KeyboardView.You"
+    >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
+        <item name="android:background">@color/keyboard_background_you</item>
+        <item name="android:src">@drawable/suggestions_strip_divider_lxx_dark</item>
+        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
+        <item name="colorValidTypedWord">@color/typed_word_color_you</item>
+        <item name="colorTypedWord">@color/typed_word_color_you</item>
+        <item name="colorAutoCorrect">@color/auto_correct_color_you</item>
+        <item name="colorSuggested">@color/suggested_word_color_you</item>
+        <item name="alphaObsoleted">70%</item>
+    </style>
+    <style
+        name="SuggestionWord.You"
+        parent="SuggestionWord"
+    >
+        <item name="android:background">@drawable/btn_suggestion_lxx_dark</item>
+        <item name="android:textColor">@color/highlight_color_you</item>
+    </style>
+</resources>
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index 3d25f42..257476b 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -109,6 +109,11 @@
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional" />
     <key-style
+        latin:styleName="emojiKeyStylePopup"
+        latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
+        latin:keyActionFlags="noKeyPreview"
+        latin:backgroundType="functional" />
+    <key-style
         latin:styleName="settingsKeyStyle"
         latin:keySpec="!icon/settings_key|!code/key_settings"
         latin:keyActionFlags="noKeyPreview"
diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml
index 63ef2f8..2628341 100644
--- a/java/res/xml-sw600dp/key_styles_enter.xml
+++ b/java/res/xml-sw600dp/key_styles_enter.xml
@@ -90,6 +90,16 @@
                 latin:backgroundType="action"
                 latin:parentStyle="navigateMoreKeysStyle" />
         </case>
+        <!-- keyboardTheme="You" -->
+        <case latin:keyboardTheme="You">
+            <key-style
+                latin:styleName="defaultEnterKeyStyle"
+                latin:keySpec="!icon/enter_key|!code/key_enter"
+                latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio|followFunctionalTextColor"
+                latin:keyActionFlags="noKeyPreview"
+                latin:backgroundType="functional"
+                latin:parentStyle="navigateMoreKeysStyle" />
+        </case>
         <!-- keyboardTheme="LXXLight|LXXDark" -->
         <default>
             <key-style
diff --git a/java/res/xml-sw600dp/rows_qwertz.xml b/java/res/xml-sw600dp/rows_qwertz.xml
index 3b59dec..747dafd 100644
--- a/java/res/xml-sw600dp/rows_qwertz.xml
+++ b/java/res/xml-sw600dp/rows_qwertz.xml
@@ -36,7 +36,7 @@
         latin:keyWidth="9.0%p"
     >
         <include
-            latin:keyboardLayout="@xml/rowkeys_qwerty2"
+            latin:keyboardLayout="@xml/rowkeys_qwertz2"
             latin:keyXPos="4.5%p" />
         <Key
             latin:keyStyle="enterKeyStyle"
diff --git a/java/res/xml/key_emoji.xml b/java/res/xml/key_emoji.xml
index 473dd21..602b8d8 100644
--- a/java/res/xml/key_emoji.xml
+++ b/java/res/xml/key_emoji.xml
@@ -26,13 +26,18 @@
             latin:mode="email|url"
         >
             <Key
-                latin:keyStyle="comKeyStyle"
+                latin:keyStyle="comKeyStyle" />
+        </case>
+        <case
+            latin:languageSwitchKeyEnabled="true"
+        >
+            <Key
+                latin:keyStyle="emojiKeyStylePopup"
                 latin:keyWidth="fillRight" />
         </case>
         <default>
             <Key
-                latin:keyStyle="emojiKeyStyle"
-                latin:keyWidth="fillRight" />
+                latin:keyStyle="emojiKeyStyle" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_space_5kw.xml b/java/res/xml/key_space_5kw.xml
index 692c245..810a42c 100644
--- a/java/res/xml/key_space_5kw.xml
+++ b/java/res/xml/key_space_5kw.xml
@@ -57,7 +57,7 @@
         <default>
             <Key
                 latin:keyStyle="spaceKeyStyle"
-                latin:keyWidth="50%p" />
+                latin:keyWidth="40%p" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index fbc44da..2ee5fdd 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -77,24 +77,17 @@
         latin:keyActionFlags="isRepeatable|noKeyPreview"
         latin:backgroundType="functional" />
     <!-- emojiKeyStyle must be defined before including @xml/key_syles_enter. -->
-    <switch>
-        <case latin:keyboardTheme="ICS|KLP">
-            <key-style
-                latin:styleName="emojiKeyStyle"
-                latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
-                latin:keyActionFlags="noKeyPreview"
-                latin:backgroundType="action" />
-        </case>
-        <!-- keyboardTheme="LXXLight|LXXDark" -->
-        <default>
-            <key-style
-                latin:styleName="emojiKeyStyle"
-                latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
-                latin:keyLabelFlags="keepBackgroundAspectRatio"
-                latin:keyActionFlags="noKeyPreview"
-                latin:backgroundType="action" />
-        </default>
-    </switch>
+    <key-style
+        latin:styleName="emojiKeyStyle"
+        latin:keySpec="!icon/emoji_normal_key|!code/key_emoji"
+        latin:keyActionFlags="noKeyPreview"
+        latin:backgroundType="functional" />
+    <key-style
+        latin:styleName="emojiKeyStylePopup"
+        latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
+        latin:keyLabelFlags="keepBackgroundAspectRatio"
+        latin:keyActionFlags="noKeyPreview"
+        latin:backgroundType="action" />
     <include
         latin:keyboardLayout="@xml/key_styles_enter" />
     <!-- TODO: Currently there is no way to specify icon alignment per theme. -->
diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index de5e6f2..67b6d6b 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -23,59 +23,84 @@
         <case latin:passwordInput="true">
             <include latin:keyboardLayout="@xml/key_styles_currency_dollar" />
         </case>
-        <!-- Countries using Euro currency, 23 countries as of November 2012.
-              1. Andorra (ca_AD, ca_ES)
-              2. Austria (de_AT)
-              3. Belgium (nl_BE, fr_BE, de_BE)
-              4. Cyprus (el_CY, tr_CY)
-              5. Estonia (et_EE)
-              6. Finland (fi_FI, sv_FI)
-              7. France (fr_FR)
-              8. Germany (de_DE)
-              9. Greece (el_GR)
-             10. Ireland (ga_IE, en_IE)
-             11. Italy (it_IT)
-             12. Kosovo (sq_XK, sr_XK)
-             13. Luxembourg (lb_LU, fr_LU, de_LU)
-             14. Malta (mt_MT, en_MT)
-             15. Monaco (fr_MO)
-             16. Montenegro (??_ME)
-             17. Netherlands (nl_NL)
-             18. Portugal (pt_PT)
-             19. San Marino (it_SM)
-             20. Slovakia (sk_SK)
-             21. Slovenia (sl_SI)
-             22. Spain (es_ES, ca_ES, eu_ES, gl_ES)
-             23. Vatican City (it_VA) -->
-        <case latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA">
+        <!-- List of countries that should have the euro symbol, due to proximity or membership in
+             the European Union and/or Eurozone as of September 2019.
+             1. Andorra (ca_AD, ca_ES)
+             2. Austria (de_AT)
+             3. Belgium (nl_BE, fr_BE, de_BE)
+             4. Bulgaria (bg_BG)
+             5. Croatia (hr_HR)
+             6. Cyprus (el_CY, tr_CY)
+             7. Czech Republic (cs_CZ)
+             8. Denmark (da_DK)
+             9. Estonia (et_EE)
+             10. Finland (fi_FI, sv_FI)
+             11. France (fr_FR)
+             12. Germany (de_DE)
+             13. Greece (el_GR)
+             14. Hungary (hu_HU)
+             15. Ireland (ga_IE, en_IE)
+             16. Italy (it_IT)
+             17. Kosovo (sq_XK, sr_XK)
+             18. Latvia (lv_LV)
+             19. Lithuania (lt_LT)
+             20. Luxembourg (lb_LU, fr_LU, de_LU)
+             21. Malta (mt_MT, en_MT)
+             22. Monaco (fr_MO)
+             23. Montenegro (sr_ME)
+             24. Netherlands (nl_NL)
+             25. Poland (pl_PL)
+             26. Portugal (pt_PT)
+             27. Romania (ro_RO)
+             28. San Marino (it_SM)
+             29. Slovakia (sk_SK)
+             30. Slovenia (sl_SI)
+             31. Spain (es_ES, ca_ES, eu_ES, gl_ES)
+             32. Vatican City (it_VA) -->
+        <case latin:countryCode="AD|AT|BE|BG|HR|CY|CZ|DA|EE|FI|FR|DE|GR|HU|IE|IT|XK|LV|LT|LU|MT|MO|ME|NL|PL|PT|RO|SM|SK|SI|ES|VA">
             <include latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
-        <!-- Note: Some subtype locale may not have country code, and it it supposed to indicate the
-             country where the language originally/mainly spoken. -->
-        <!-- Though Denmark, Sweden and Turkey don't use Euro as their currency, having the Euro
-             sign on the symbol keyboard might be useful.  Especially Danish krone (kr), Swedish
-             krona (kr) and Turkish lira (TL) can be represented by usual alphabet letters. -->
-        <!-- TODO: The currency sign of Turkish Lira was created in 2012 and assigned U+20BA for
-             its unicode, although there is no font glyph for it as of November 2012. -->
-        <!-- da: Denmark (da_DK)
+        <!-- Note: Some subtype locales may not have a country code, and it is supposed to indicate
+             the country where the language is originally and/or mainly spoken. -->
+        <!-- bg: Bulgaria (bg_BG)
+             ca: Spain (ca_ES), Andorra (ca_AD, ca_ES)
+             cs: Czech Republic (cs_CZ)
+             da: Denmark (da_DK)
              de: Germany (de_DE)
+             el: Greece (el_GR)
+             en: Ireland (en_IE), Malta (en_MT)
              es: Spain (es_ES)
+             et: Estonia (et_EE)
+             eu: Spain (eu_ES)
              fi: Finland (fi_FI)
-             fr: France(fr_FR)
+             fr: France (fr_FR)
+             ga: Ireland (ga_IE)
+             gl: Spain (gl_ES)
+             hr: Croatia (hr_HR)
+             hu: Hungary (hu_HU)
              it: Italy (it_IT)
+             lb: Luxembourg (lb_LU, fr_LU, de_LU)
+             lt: Lithuania (lt_LT)
+             lv: Latvia (lv_LV)
+             mt: Malta (mt_MT, en_MT)
              nl: Netherlands (nl_NL)
+             pl: Poland (pl_PL)
+             pt: Portugal (pt_PT)
+             ro: Romania (ro_RO)
              sk: Slovakia (sk_SK)
              sl: Slovenia (sl_SL)
+             sq: Kosovo (sq_XK)
+             sr: Kosovo (sq_SR), Montenegro (sr_ME)
              sv: Sweden (sv_SV)
-             tr: Trukey (tr_TR) -->
-        <case latin:localeCode="da|de|es|el|fi|fr|it|nl|sk|sl|sv|tr">
+             tr: Cyprus (tr_CY) -->
+        <case latin:localeCode="bg|ca|cs|da|de|el|en|es|et|eu|fi|fr|ga|gl|hr|hu|it|lb|lt|lv|mt|nl|pl|pt|ro|sk|sl|sq|sr|sv|tr">
             <include latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- ca: Catalan (Andorra, Spain)
-             et: Estonian (Estonia)
-             lb: Luxembougish (Luxembourg)
+             eu: Basque (France, Spain)
+             lb: Luxembourgish (Luxembourg)
              mt: Maltese (Malta) -->
-        <case latin:languageCode="ca|et|lb|mt">
+        <case latin:languageCode="ca|eu|lb|mt">
             <include latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- fa: Persian (Rial and Afgahni)
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 564f465..562278e 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -222,6 +222,16 @@
                 latin:backgroundType="action"
                 latin:parentStyle="navigateMoreKeysStyle" />
         </case>
+        <!-- keyboardTheme="You" -->
+        <case latin:keyboardTheme="You">
+            <key-style
+                latin:styleName="defaultEnterKeyStyle"
+                latin:keySpec="!icon/enter_key|!code/key_enter"
+                latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio|followFunctionalTextColor"
+                latin:keyActionFlags="noKeyPreview"
+                latin:backgroundType="functional"
+                latin:parentStyle="navigateMoreKeysStyle" />
+        </case>
         <!-- keyboardTheme="LXXLight|LXXDark" -->
         <default>
             <key-style
@@ -249,6 +259,7 @@
              This <case> should be after Shift + Enter <case> and before any of action <case>. -->
         <case
             latin:mode="im"
+            latin:languageSwitchKeyEnabled="true"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
diff --git a/java/res/xml/key_styles_navigate_more_keys.xml b/java/res/xml/key_styles_navigate_more_keys.xml
index f97114d..8dabc98 100644
--- a/java/res/xml/key_styles_navigate_more_keys.xml
+++ b/java/res/xml/key_styles_navigate_more_keys.xml
@@ -52,7 +52,9 @@
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
                 latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/keyspec_emoji_action_key,!text/keyspec_action_previous,!text/keyspec_action_next" />
         </case>
-        <default>
+        <case
+            latin:languageSwitchKeyEnabled="true"
+        >
             <key-style
                 latin:styleName="navigateNextMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
@@ -81,6 +83,36 @@
                 latin:styleName="navigateEmojiPreviousNextMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
                 latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/keyspec_emoji_action_key,!icon/previous_key|!code/key_action_previous,!icon/next_key|!code/key_action_next" />
+	    </case>
+        <default>
+            <key-style
+                latin:styleName="navigateNextMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!icon/next_key|!code/key_action_next" />
+            <key-style
+                latin:styleName="navigatePreviousMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!icon/previous_key|!code/key_action_previous" />
+            <key-style
+                latin:styleName="navigatePreviousNextMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!icon/previous_key|!code/key_action_previous,!icon/next_key|!code/key_action_next" />
+            <key-style
+                latin:styleName="navigateEmojiMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="" />
+            <key-style
+                latin:styleName="navigateEmojiNextMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_action_key,!icon/next_key|!code/key_action_next" />
+            <key-style
+                latin:styleName="navigateEmojiPreviousMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!icon/previous_key|!code/key_action_previous" />
+            <key-style
+                latin:styleName="navigateEmojiPreviousNextMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!icon/previous_key|!code/key_action_previous,!icon/next_key|!code/key_action_next" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index 911c276..dbb11fd 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -109,7 +109,7 @@
     <!-- TODO: Consolidate these space key styles with numSpaceKeyStyle above by introducing <case>
          predicator that checks device form-factor. -->
     <switch>
-        <case latin:keyboardTheme="ICS|KLP">
+        <case latin:keyboardTheme="ICS|KLP|You">
             <key-style
                 latin:styleName="tabletNumSpaceKeyStyle"
                 latin:keySpec="!icon/space_key|!code/key_space"
diff --git a/java/res/xml/prefs_screen_advanced.xml b/java/res/xml/prefs_screen_advanced.xml
index b27104a..1aae14e 100644
--- a/java/res/xml/prefs_screen_advanced.xml
+++ b/java/res/xml/prefs_screen_advanced.xml
@@ -48,6 +48,11 @@
         android:title="@string/show_setup_wizard_icon"
         android:summary="@string/show_setup_wizard_icon_summary"
         android:persistent="true" />
+    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+        android:key="pref_keyboard_height_scale"
+        android:title="@string/prefs_keyboard_height_scale"
+        latin:minValue="50"
+        latin:maxValue="120" /> <!-- percentage -->
     <PreferenceScreen
         android:fragment="com.android.inputmethod.latin.settings.DebugSettingsFragment"
         android:key="screen_debug"
diff --git a/java/res/xml/prefs_screen_debug.xml b/java/res/xml/prefs_screen_debug.xml
index 1ae2d0e..325df57 100644
--- a/java/res/xml/prefs_screen_debug.xml
+++ b/java/res/xml/prefs_screen_debug.xml
@@ -76,17 +76,6 @@
         android:key="pref_key_preview_dismiss_duration"
         android:title="@string/prefs_key_popup_dismiss_duration_settings"
         latin:maxValue="100" /> <!-- milliseconds -->
-    <CheckBoxPreference
-        android:key="pref_resize_keyboard"
-        android:title="@string/prefs_resize_keyboard"
-        android:defaultValue="false"
-        android:persistent="true" />
-    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
-        android:dependency="pref_resize_keyboard"
-        android:key="pref_keyboard_height_scale"
-        android:title="@string/prefs_keyboard_height_scale"
-        latin:minValue="50"
-        latin:maxValue="120" /> <!-- percentage -->
     <PreferenceCategory
         android:key="pref_key_dump_dictionaries"
         android:title="@string/prefs_dump_dynamic_dicts">
diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml
index 5bc104f..7653282 100644
--- a/java/res/xml/row_qwerty4.xml
+++ b/java/res/xml/row_qwerty4.xml
@@ -21,21 +21,47 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Row
-        latin:keyWidth="10%p"
-    >
-        <Key
-            latin:keyStyle="toSymbolKeyStyle"
-            latin:keyWidth="15%p" />
-        <include
-            latin:keyboardLayout="@xml/key_comma" />
-        <include
-            latin:keyXPos="25%p"
-            latin:keyboardLayout="@xml/key_space_5kw" />
-        <include
-            latin:keyboardLayout="@xml/key_period" />
-        <Key
-            latin:keyStyle="enterKeyStyle"
-            latin:keyWidth="fillRight" />
-    </Row>
+    <switch>
+        <case
+            latin:languageSwitchKeyEnabled="true"
+        >
+            <Row
+                latin:keyWidth="10%p"
+            >
+                <Key
+                    latin:keyStyle="toSymbolKeyStyle"
+                    latin:keyWidth="15%p" />
+                <include
+                    latin:keyboardLayout="@xml/key_comma" />
+                <include
+                    latin:keyXPos="25%p"
+                    latin:keyboardLayout="@xml/key_space_5kw" />
+                <include
+                    latin:keyboardLayout="@xml/key_period" />
+                <Key
+                    latin:keyStyle="enterKeyStyle"
+                    latin:keyWidth="fillRight" />
+            </Row>
+        </case>
+        <default>
+            <Row
+                latin:keyWidth="10%p"
+            >
+                <Key
+                    latin:keyStyle="toSymbolKeyStyle"
+                    latin:keyWidth="15%p" />
+                <include
+                    latin:keyboardLayout="@xml/key_comma" />
+                <include
+                    latin:keyboardLayout="@xml/key_emoji" />
+                <include
+                    latin:keyboardLayout="@xml/key_space_5kw" />
+                <include
+                    latin:keyboardLayout="@xml/key_period" />
+                <Key
+                    latin:keyStyle="enterKeyStyle"
+                    latin:keyWidth="fillRight" />
+            </Row>
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml
index 21463fb..4047ab7 100644
--- a/java/res/xml/rowkeys_east_slavic2.xml
+++ b/java/res/xml/rowkeys_east_slavic2.xml
@@ -23,37 +23,59 @@
 >
     <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
     <Key
-        latin:keySpec="&#x0444;" />
+        latin:keySpec="&#x0444;"
+        latin:keyHintLabel="\@"
+        latin:additionalMoreKeys="\\@" />
     <Key
         latin:keySpec="!text/keyspec_east_slavic_row2_2"
+        latin:keyHintLabel="#"
+        latin:additionalMoreKeys="#"
         latin:moreKeys="!text/morekeys_east_slavic_row2_2" />
     <!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
     <Key
-        latin:keySpec="&#x0432;" />
+        latin:keySpec="&#x0432;"
+        latin:keyHintLabel="$"
+        latin:additionalMoreKeys="$" />
     <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
     <Key
         latin:keySpec="&#x0430;"
-        latin:moreKeys="!text/morekeys_cyrillic_a" />
+        latin:moreKeys="!text/morekeys_cyrillic_a"
+        latin:keyHintLabel="%"
+        latin:additionalMoreKeys="%" />
     <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
     <Key
-        latin:keySpec="&#x043F;" />
+        latin:keySpec="&#x043F;"
+        latin:keyHintLabel="&amp;"
+        latin:additionalMoreKeys="&amp;" />
     <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
     <Key
-        latin:keySpec="&#x0440;" />
+        latin:keySpec="&#x0440;"
+        latin:keyHintLabel="_"
+        latin:additionalMoreKeys="_" />
     <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
     <Key
         latin:keySpec="&#x043E;"
+        latin:keyHintLabel="/"
+        latin:additionalMoreKeys="/"
         latin:moreKeys="!text/morekeys_cyrillic_o" />
     <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
     <Key
-        latin:keySpec="&#x043B;" />
+        latin:keySpec="&#x043B;"
+        latin:keyHintLabel="-"
+        latin:additionalMoreKeys="-" />
     <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
     <Key
-        latin:keySpec="&#x0434;" />
+        latin:keySpec="&#x0434;"
+        latin:keyHintLabel="+"
+        latin:additionalMoreKeys="+" />
     <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
     <Key
-        latin:keySpec="&#x0436;" />
+        latin:keySpec="&#x0436;"
+        latin:keyHintLabel="("
+        latin:additionalMoreKeys="(" />
     <Key
         latin:keySpec="!text/keyspec_east_slavic_row2_11"
-        latin:moreKeys="!text/morekeys_east_slavic_row2_11" />
+        latin:moreKeys="!text/morekeys_east_slavic_row2_11"
+        latin:keyHintLabel=")"
+        latin:additionalMoreKeys=")" />
 </merge>
diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml
index 54802e8..e1b9b60 100644
--- a/java/res/xml/rowkeys_east_slavic3.xml
+++ b/java/res/xml/rowkeys_east_slavic3.xml
@@ -23,29 +23,47 @@
 >
     <!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
     <Key
-        latin:keySpec="&#x044F;" />
+        latin:keySpec="&#x044F;"
+        latin:keyHintLabel="*"
+        latin:additionalMoreKeys="*" />
     <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
     <Key
-        latin:keySpec="&#x0447;" />
+        latin:keySpec="&#x0447;"
+        latin:keyHintLabel="&quot;"
+        latin:additionalMoreKeys="&quot;" />
     <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
     <Key
-        latin:keySpec="&#x0441;" />
+        latin:keySpec="&#x0441;"
+        latin:keyHintLabel="&apos;"
+        latin:additionalMoreKeys="&apos;" />
     <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
     <Key
-        latin:keySpec="&#x043C;" />
+        latin:keySpec="&#x043C;"
+        latin:keyHintLabel=":"
+        latin:additionalMoreKeys=":" />
     <Key
-        latin:keySpec="!text/keyspec_east_slavic_row3_5" />
+        latin:keySpec="!text/keyspec_east_slavic_row3_5"
+        latin:keyHintLabel=";"
+        latin:additionalMoreKeys=";" />
     <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
     <Key
-        latin:keySpec="&#x0442;" />
+        latin:keySpec="&#x0442;"
+        latin:keyHintLabel="!"
+        latin:additionalMoreKeys="!" />
     <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
     <Key
         latin:keySpec="&#x044C;"
-        latin:moreKeys="!text/morekeys_cyrillic_soft_sign" />
+        latin:moreKeys="!text/morekeys_cyrillic_soft_sign"
+        latin:keyHintLabel="\?"
+        latin:additionalMoreKeys="\\?" />
     <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
     <Key
-        latin:keySpec="&#x0431;" />
+        latin:keySpec="&#x0431;"
+        latin:keyHintLabel="&lt;"
+        latin:additionalMoreKeys="&lt;" />
     <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU -->
     <Key
-        latin:keySpec="&#x044E;" />
+        latin:keySpec="&#x044E;"
+        latin:keyHintLabel="&gt;"
+        latin:additionalMoreKeys="&gt;" />
 </merge>
diff --git a/java/res/xml/rowkeys_greek2.xml b/java/res/xml/rowkeys_greek2.xml
index 97dde5b..59e3b01 100644
--- a/java/res/xml/rowkeys_greek2.xml
+++ b/java/res/xml/rowkeys_greek2.xml
@@ -38,7 +38,9 @@
                  U+1F0F: "Ἇ" GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -->
             <Key
                 latin:keySpec="&#x0391;"
-                latin:moreKeys="&#x0386;,&#x1FBA;,&#x1F08;,&#x1F09;,&#x1F04;,&#x1F05;,&#x1F0A;,&#x1F0B;,&#x1F0E;,&#x1F0F;" />
+                latin:moreKeys="&#x0386;,&#x1FBA;,&#x1F08;,&#x1F09;,&#x1F04;,&#x1F05;,&#x1F0A;,&#x1F0B;,&#x1F0E;,&#x1F0F;"
+                latin:keyHintLabel="\@"
+                latin:additionalMoreKeys="\\@" />
         </case>
         <default>
             <!-- U+03B1: "α" GREEK SMALL LETTER ALPHA
@@ -67,21 +69,31 @@
                  U+1F87: "ᾇ" GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
             <Key
                 latin:keySpec="&#x03B1;"
-                latin:moreKeys="&#x03AC;,&#x1F70;,&#x1FB6;,&#x1F00;,&#x1F01;,&#x1F04;,&#x1F05;,&#x1F02;,&#x1F03;,&#x1F06;,&#x1F07;,&#x1FB3;,&#x1FB4;,&#x1FB2;,&#x1FB7;,&#x1F80;,&#x1F81;,&#x1F84;,&#x1F85;,&#x1F82;,&#x1F83;,&#x1F86;,&#x1F87;" />
+                latin:moreKeys="&#x03AC;,&#x1F70;,&#x1FB6;,&#x1F00;,&#x1F01;,&#x1F04;,&#x1F05;,&#x1F02;,&#x1F03;,&#x1F06;,&#x1F07;,&#x1FB3;,&#x1FB4;,&#x1FB2;,&#x1FB7;,&#x1F80;,&#x1F81;,&#x1F84;,&#x1F85;,&#x1F82;,&#x1F83;,&#x1F86;,&#x1F87;"
+                latin:keyHintLabel="\@"
+                latin:additionalMoreKeys="\\@" />
         </default>
     </switch>
     <!-- U+03C3: "σ" GREEK SMALL LETTER SIGMA -->
     <Key
-        latin:keySpec="&#x03C3;" />
+        latin:keySpec="&#x03C3;"
+        latin:keyHintLabel="#"
+        latin:additionalMoreKeys="#" />
     <!-- U+03B4: "δ" GREEK SMALL LETTER DELTA -->
     <Key
-        latin:keySpec="&#x03B4;" />
+        latin:keySpec="&#x03B4;"
+        latin:keyHintLabel="€"
+        latin:additionalMoreKeys="€" />
     <!-- U+03C6: "φ" GREEK SMALL LETTER PHI -->
     <Key
-        latin:keySpec="&#x03C6;" />
+        latin:keySpec="&#x03C6;"
+        latin:keyHintLabel="%"
+        latin:additionalMoreKeys="%" />
     <!-- U+03B3: "γ" GREEK SMALL LETTER GAMMA -->
     <Key
-        latin:keySpec="&#x03B3;" />
+        latin:keySpec="&#x03B3;"
+        latin:keyHintLabel="&amp;"
+        latin:additionalMoreKeys="&amp;" />
     <switch>
         <case
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
@@ -99,7 +111,9 @@
                  U+1F2F: "Ἧ" GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -->
             <Key
                 latin:keySpec="&#x0397;"
-                latin:moreKeys="&#x0389;,&#x1FCA;,&#x1F28;,&#x1F29;,&#x1F2C;,&#x1F2D;,&#x1F2A;,&#x1F2B;,&#x1F2E;,&#x1F2F;" />
+                latin:moreKeys="&#x0389;,&#x1FCA;,&#x1F28;,&#x1F29;,&#x1F2C;,&#x1F2D;,&#x1F2A;,&#x1F2B;,&#x1F2E;,&#x1F2F;"
+                latin:keyHintLabel="-"
+                latin:additionalMoreKeys="-" />
         </case>
         <default>
             <!-- U+03B7: "η" GREEK SMALL LETTER ETA
@@ -128,16 +142,24 @@
                  U+1F97: "ᾗ" GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
             <Key
                 latin:keySpec="&#x03B7;"
-                latin:moreKeys="&#x03AE;,&#x1F74;,&#x1FC6;,&#x1F20;,&#x1F21;,&#x1F24;,&#x1F25;,&#x1F22;,&#x1F23;,&#x1F26;,&#x1F27;,&#x1FC3;,&#x1FC4;,&#x1FC2;,&#x1FC7;,&#x1F90;,&#x1F91;,&#x1F94;,&#x1F95;,&#x1F92;,&#x1F93;,&#x1F96;,&#x1F97;" />
+                latin:moreKeys="&#x03AE;,&#x1F74;,&#x1FC6;,&#x1F20;,&#x1F21;,&#x1F24;,&#x1F25;,&#x1F22;,&#x1F23;,&#x1F26;,&#x1F27;,&#x1FC3;,&#x1FC4;,&#x1FC2;,&#x1FC7;,&#x1F90;,&#x1F91;,&#x1F94;,&#x1F95;,&#x1F92;,&#x1F93;,&#x1F96;,&#x1F97;"
+                latin:keyHintLabel="-"
+                latin:additionalMoreKeys="-" />
         </default>
     </switch>
     <!-- U+03BE: "ξ" GREEK SMALL LETTER XI -->
     <Key
-        latin:keySpec="&#x03BE;" />
+        latin:keySpec="&#x03BE;"
+        latin:keyHintLabel="+"
+        latin:additionalMoreKeys="+" />
     <!-- U+03BA: "κ" GREEK SMALL LETTER KAPPA -->
     <Key
-        latin:keySpec="&#x03BA;" />
+        latin:keySpec="&#x03BA;"
+        latin:keyHintLabel="("
+        latin:additionalMoreKeys="(" />
     <!-- U+03BB: "λ" GREEK SMALL LETTER LAMDA -->
     <Key
-        latin:keySpec="&#x03BB;" />
+        latin:keySpec="&#x03BB;"
+        latin:keyHintLabel=")"
+        latin:additionalMoreKeys=")" />
 </merge>
diff --git a/java/res/xml/rowkeys_greek3.xml b/java/res/xml/rowkeys_greek3.xml
index 0c2667b..8249992 100644
--- a/java/res/xml/rowkeys_greek3.xml
+++ b/java/res/xml/rowkeys_greek3.xml
@@ -23,13 +23,19 @@
 >
     <!-- U+03B6: "ζ" GREEK SMALL LETTER ZETA -->
     <Key
-        latin:keySpec="&#x03B6;" />
+        latin:keySpec="&#x03B6;"
+        latin:keyHintLabel="*"
+        latin:additionalMoreKeys="*" />
     <!-- U+03C7: "χ" GREEK SMALL LETTER CHI -->
     <Key
-        latin:keySpec="&#x03C7;" />
+        latin:keySpec="&#x03C7;"
+        latin:keyHintLabel="&quot;"
+        latin:additionalMoreKeys="&quot;" />
     <!-- U+03C8: "ψ" GREEK SMALL LETTER PSI -->
     <Key
-        latin:keySpec="&#x03C8;" />
+        latin:keySpec="&#x03C8;"
+        latin:keyHintLabel="&apos;"
+        latin:additionalMoreKeys="&apos;" />
     <switch>
         <case
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
@@ -47,7 +53,9 @@
                  U+1F6F: "Ὧ" GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -->
             <Key
                 latin:keySpec="&#x03C9;"
-                latin:moreKeys="&#x038F;,&#x1FFA;,&#x1F68;,&#x1F69;,&#x1F6C;,&#x1F6D;,&#x1F6A;,&#x1F6B;,&#x1F6E;,&#x1F6F;" />
+                latin:moreKeys="&#x038F;,&#x1FFA;,&#x1F68;,&#x1F69;,&#x1F6C;,&#x1F6D;,&#x1F6A;,&#x1F6B;,&#x1F6E;,&#x1F6F;"
+                latin:keyHintLabel=":"
+                latin:additionalMoreKeys=":" />
         </case>
         <default>
             <!-- U+03C9: "ω" GREEK SMALL LETTER OMEGA
@@ -76,16 +84,24 @@
                  U+1FA7: "ᾧ" GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
             <Key
                 latin:keySpec="&#x03C9;"
-                latin:moreKeys="&#x03CE;,&#x1F7C;,&#x1FF6;,&#x1F60;,&#x1F61;,&#x1F64;,&#x1F65;,&#x1F62;,&#x1F63;,&#x1F66;,&#x1F67;,&#x1FF3;,&#x1FF4;,&#x1FF2;,&#x1FF7;,&#x1FA0;,&#x1FA1;,&#x1FA4;,&#x1FA5;,&#x1FA2;,&#x1FA3;,&#x1FA6;,&#x1FA7;" />
+                latin:moreKeys="&#x03CE;,&#x1F7C;,&#x1FF6;,&#x1F60;,&#x1F61;,&#x1F64;,&#x1F65;,&#x1F62;,&#x1F63;,&#x1F66;,&#x1F67;,&#x1FF3;,&#x1FF4;,&#x1FF2;,&#x1FF7;,&#x1FA0;,&#x1FA1;,&#x1FA4;,&#x1FA5;,&#x1FA2;,&#x1FA3;,&#x1FA6;,&#x1FA7;"
+                latin:keyHintLabel=":"
+                latin:additionalMoreKeys=":" />
         </default>
     </switch>
     <!-- U+03B2: "β" GREEK SMALL LETTER BETA -->
     <Key
-        latin:keySpec="&#x03B2;" />
+        latin:keySpec="&#x03B2;"
+        latin:keyHintLabel=";"
+        latin:additionalMoreKeys=";" />
     <!-- U+03BD: "ν" GREEK SMALL LETTER NU -->
     <Key
-        latin:keySpec="&#x03BD;" />
+        latin:keySpec="&#x03BD;"
+        latin:keyHintLabel="!"
+        latin:additionalMoreKeys="!" />
     <!-- U+03BC: "μ" GREEK SMALL LETTER MU -->
     <Key
-        latin:keySpec="&#x03BC;" />
+        latin:keySpec="&#x03BC;"
+        latin:keyHintLabel="\?"
+        latin:additionalMoreKeys="\\?" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty2_left5.xml b/java/res/xml/rowkeys_qwerty2_left5.xml
index 1803bf2..3f8517c 100644
--- a/java/res/xml/rowkeys_qwerty2_left5.xml
+++ b/java/res/xml/rowkeys_qwerty2_left5.xml
@@ -23,16 +23,26 @@
 >
     <Key
         latin:keySpec="a"
+        latin:keyHintLabel="\@"
+        latin:additionalMoreKeys="\\@"
         latin:moreKeys="!text/morekeys_a" />
     <Key
         latin:keySpec="s"
+        latin:keyHintLabel="#"
+        latin:additionalMoreKeys="#"
         latin:moreKeys="!text/morekeys_s" />
     <Key
         latin:keySpec="d"
+        latin:keyHintLabel="$"
+        latin:additionalMoreKeys="$"
         latin:moreKeys="!text/morekeys_d" />
     <Key
-        latin:keySpec="f" />
+        latin:keySpec="f"
+        latin:keyHintLabel="%"
+        latin:additionalMoreKeys="%" />
     <Key
         latin:keySpec="g"
+        latin:keyHintLabel="&amp;"
+        latin:additionalMoreKeys="&amp;"
         latin:moreKeys="!text/morekeys_g" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty2_right4.xml b/java/res/xml/rowkeys_qwerty2_right4.xml
index 99936b7..c936280 100644
--- a/java/res/xml/rowkeys_qwerty2_right4.xml
+++ b/java/res/xml/rowkeys_qwerty2_right4.xml
@@ -23,14 +23,22 @@
 >
     <Key
         latin:keySpec="h"
+        latin:keyHintLabel="-"
+        latin:additionalMoreKeys="-"
         latin:moreKeys="!text/morekeys_h" />
     <Key
         latin:keySpec="j"
+        latin:keyHintLabel="+"
+        latin:additionalMoreKeys="+"
         latin:moreKeys="!text/morekeys_j" />
     <Key
         latin:keySpec="k"
+        latin:keyHintLabel="("
+        latin:additionalMoreKeys="("
         latin:moreKeys="!text/morekeys_k" />
     <Key
         latin:keySpec="l"
+        latin:keyHintLabel=")"
+        latin:additionalMoreKeys=")"
         latin:moreKeys="!text/morekeys_l" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty3_left4.xml b/java/res/xml/rowkeys_qwerty3_left4.xml
index 6043c3b..8dc9d41 100644
--- a/java/res/xml/rowkeys_qwerty3_left4.xml
+++ b/java/res/xml/rowkeys_qwerty3_left4.xml
@@ -23,14 +23,22 @@
 >
     <Key
         latin:keySpec="z"
+        latin:keyHintLabel="*"
+        latin:additionalMoreKeys="*"
         latin:moreKeys="!text/morekeys_z" />
     <Key
         latin:keySpec="!text/keyspec_x"
+        latin:keyHintLabel="&quot;"
+        latin:additionalMoreKeys="&quot;"
         latin:moreKeys="!text/morekeys_x" />
     <Key
         latin:keySpec="c"
+        latin:keyHintLabel="&apos;"
+        latin:additionalMoreKeys="&apos;"
         latin:moreKeys="!text/morekeys_c" />
     <Key
         latin:keySpec="v"
+        latin:keyHintLabel=":"
+        latin:additionalMoreKeys=":"
         latin:moreKeys="!text/morekeys_v" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty3_right3.xml b/java/res/xml/rowkeys_qwerty3_right3.xml
index f699103..4646029 100644
--- a/java/res/xml/rowkeys_qwerty3_right3.xml
+++ b/java/res/xml/rowkeys_qwerty3_right3.xml
@@ -22,10 +22,16 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keySpec="b" />
+        latin:keySpec="b"
+        latin:keyHintLabel=";"
+        latin:additionalMoreKeys=";" />
     <Key
         latin:keySpec="n"
+        latin:keyHintLabel="!"
+        latin:additionalMoreKeys="!"
         latin:moreKeys="!text/morekeys_n" />
     <Key
-        latin:keySpec="m" />
+        latin:keySpec="m"
+        latin:keyHintLabel="\?"
+        latin:additionalMoreKeys="\\?" />
 </merge>
diff --git a/java/res/drawable/btn_suggestion_klp.xml b/java/res/xml/rowkeys_qwertz2.xml
similarity index 63%
rename from java/res/drawable/btn_suggestion_klp.xml
rename to java/res/xml/rowkeys_qwertz2.xml
index 471165b..10878a0 100644
--- a/java/res/drawable/btn_suggestion_klp.xml
+++ b/java/res/xml/rowkeys_qwertz2.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** Copyright 2012, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -18,10 +18,13 @@
 */
 -->
 
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-</selector>
+    <!-- a,s,d,f,g -->
+    <include
+        latin:keyboardLayout="@xml/rowkeys_qwertz2_left5" />
+    <!-- h,j,k,l -->
+    <include
+        latin:keyboardLayout="@xml/rowkeys_qwertz2_right4" />
+</merge>
diff --git a/java/res/xml/rowkeys_qwertz2_left5.xml b/java/res/xml/rowkeys_qwertz2_left5.xml
new file mode 100644
index 0000000..f0ccaa5
--- /dev/null
+++ b/java/res/xml/rowkeys_qwertz2_left5.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source 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.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keySpec="a"
+        latin:moreKeys="!text/morekeys_a" />
+    <Key
+        latin:keySpec="s"
+        latin:moreKeys="!text/morekeys_s" />
+    <Key
+        latin:keySpec="d"
+        latin:keyHintLabel="€"
+        latin:additionalMoreKeys="€"
+        latin:moreKeys="!text/morekeys_d" />
+    <Key
+        latin:keySpec="f"
+        latin:keyHintLabel="%"
+        latin:additionalMoreKeys="%" />
+    <Key
+        latin:keySpec="g"
+        latin:keyHintLabel="&amp;"
+        latin:additionalMoreKeys="&amp;"
+        latin:moreKeys="!text/morekeys_g" />
+</merge>
diff --git a/java/res/xml/rowkeys_qwertz2_right4.xml b/java/res/xml/rowkeys_qwertz2_right4.xml
new file mode 100644
index 0000000..c936280
--- /dev/null
+++ b/java/res/xml/rowkeys_qwertz2_right4.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source 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.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keySpec="h"
+        latin:keyHintLabel="-"
+        latin:additionalMoreKeys="-"
+        latin:moreKeys="!text/morekeys_h" />
+    <Key
+        latin:keySpec="j"
+        latin:keyHintLabel="+"
+        latin:additionalMoreKeys="+"
+        latin:moreKeys="!text/morekeys_j" />
+    <Key
+        latin:keySpec="k"
+        latin:keyHintLabel="("
+        latin:additionalMoreKeys="("
+        latin:moreKeys="!text/morekeys_k" />
+    <Key
+        latin:keySpec="l"
+        latin:keyHintLabel=")"
+        latin:additionalMoreKeys=")"
+        latin:moreKeys="!text/morekeys_l" />
+</merge>
diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml
index a66c348..18c60b3 100644
--- a/java/res/xml/rowkeys_qwertz3.xml
+++ b/java/res/xml/rowkeys_qwertz3.xml
@@ -23,20 +23,34 @@
 >
     <Key
         latin:keySpec="y"
+        latin:keyHintLabel="*"
+        latin:additionalMoreKeys="*"
         latin:moreKeys="!text/morekeys_y" />
     <Key
-        latin:keySpec="x" />
+        latin:keySpec="x"
+        latin:keyHintLabel="&quot;"
+        latin:additionalMoreKeys="&quot;" />
     <Key
         latin:keySpec="c"
+        latin:keyHintLabel="&apos;"
+        latin:additionalMoreKeys="&apos;"
         latin:moreKeys="!text/morekeys_c" />
     <Key
         latin:keySpec="v"
+        latin:keyHintLabel=":"
+        latin:additionalMoreKeys=":"
         latin:moreKeys="!text/morekeys_v" />
     <Key
-        latin:keySpec="b" />
+        latin:keySpec="b"
+        latin:keyHintLabel=";"
+        latin:additionalMoreKeys=";" />
     <Key
         latin:keySpec="n"
+        latin:keyHintLabel="!"
+        latin:additionalMoreKeys="!"
         latin:moreKeys="!text/morekeys_n" />
     <Key
-        latin:keySpec="m" />
+        latin:keySpec="m"
+        latin:keyHintLabel="\?"
+        latin:additionalMoreKeys="\\?" />
 </merge>
diff --git a/java/res/xml/rows_qwertz.xml b/java/res/xml/rows_qwertz.xml
index 31a147c..e4ba99f 100644
--- a/java/res/xml/rows_qwertz.xml
+++ b/java/res/xml/rows_qwertz.xml
@@ -33,7 +33,7 @@
         latin:keyWidth="10%p"
     >
         <include
-            latin:keyboardLayout="@xml/rowkeys_qwerty2"
+            latin:keyboardLayout="@xml/rowkeys_qwertz2"
             latin:keyXPos="5%p" />
     </Row>
     <Row
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
index 35b46a9..df03fd3 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
@@ -31,7 +31,6 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.preference.Preference;
-import android.preference.PreferenceFragment;
 import android.preference.PreferenceGroup;
 import android.text.TextUtils;
 import android.util.Log;
@@ -44,6 +43,7 @@
 import android.view.animation.AnimationUtils;
 
 import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.settings.CustomPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -53,7 +53,7 @@
 /**
  * Preference screen.
  */
-public final class DictionarySettingsFragment extends PreferenceFragment
+public final class DictionarySettingsFragment extends CustomPreferenceFragment
         implements UpdateHandler.UpdateEventListener {
     private static final String TAG = DictionarySettingsFragment.class.getSimpleName();
 
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
index 006d086..fbfb108 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -17,6 +17,7 @@
 package com.android.inputmethod.keyboard;
 
 import android.content.Context;
+import android.content.res.Configuration;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
@@ -32,33 +33,30 @@
 public final class KeyboardTheme implements Comparable<KeyboardTheme> {
     private static final String TAG = KeyboardTheme.class.getSimpleName();
 
-    static final String KLP_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916";
     static final String LXX_KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509";
 
     // These should be aligned with Keyboard.themeId and Keyboard.Case.keyboardTheme
     // attributes' values in attrs.xml.
-    public static final int THEME_ID_ICS = 0;
-    public static final int THEME_ID_KLP = 2;
     public static final int THEME_ID_LXX_LIGHT = 3;
     public static final int THEME_ID_LXX_DARK = 4;
-    public static final int DEFAULT_THEME_ID = THEME_ID_KLP;
+    public static final int THEME_ID_AUTO_DARK = 5;
+    public static final int THEME_ID_YOU = 6;
+    public static final int DEFAULT_THEME_ID = THEME_ID_AUTO_DARK;
 
     private static KeyboardTheme[] AVAILABLE_KEYBOARD_THEMES;
 
     /* package private for testing */
     static final KeyboardTheme[] KEYBOARD_THEMES = {
-        new KeyboardTheme(THEME_ID_ICS, "ICS", R.style.KeyboardTheme_ICS,
-                // This has never been selected because we support ICS or later.
-                VERSION_CODES.BASE),
-        new KeyboardTheme(THEME_ID_KLP, "KLP", R.style.KeyboardTheme_KLP,
-                // Default theme for ICS, JB, and KLP.
-                VERSION_CODES.ICE_CREAM_SANDWICH),
         new KeyboardTheme(THEME_ID_LXX_LIGHT, "LXXLight", R.style.KeyboardTheme_LXX_Light,
                 // Default theme for LXX.
                 Build.VERSION_CODES.LOLLIPOP),
         new KeyboardTheme(THEME_ID_LXX_DARK, "LXXDark", R.style.KeyboardTheme_LXX_Dark,
                 // This has never been selected as default theme.
                 VERSION_CODES.BASE),
+        new KeyboardTheme(THEME_ID_AUTO_DARK, "AutoDark", 0,
+                Build.VERSION_CODES.Q),
+        new KeyboardTheme(THEME_ID_YOU, "You", R.style.KeyboardTheme_You,
+                Build.VERSION_CODES.S_V2),
     };
 
     static {
@@ -114,25 +112,6 @@
     /* package private for testing */
     static KeyboardTheme getDefaultKeyboardTheme(final SharedPreferences prefs,
             final int sdkVersion, final KeyboardTheme[] availableThemeArray) {
-        final String klpThemeIdString = prefs.getString(KLP_KEYBOARD_THEME_KEY, null);
-        if (klpThemeIdString != null) {
-            if (sdkVersion <= VERSION_CODES.KITKAT) {
-                try {
-                    final int themeId = Integer.parseInt(klpThemeIdString);
-                    final KeyboardTheme theme = searchKeyboardThemeById(themeId,
-                            availableThemeArray);
-                    if (theme != null) {
-                        return theme;
-                    }
-                    Log.w(TAG, "Unknown keyboard theme in KLP preference: " + klpThemeIdString);
-                } catch (final NumberFormatException e) {
-                    Log.w(TAG, "Illegal keyboard theme in KLP preference: " + klpThemeIdString, e);
-                }
-            }
-            // Remove old preference.
-            Log.i(TAG, "Remove KLP keyboard theme preference: " + klpThemeIdString);
-            prefs.edit().remove(KLP_KEYBOARD_THEME_KEY).apply();
-        }
         // TODO: This search algorithm isn't optimal if there are many themes.
         for (final KeyboardTheme theme : availableThemeArray) {
             if (sdkVersion >= theme.mMinApiVersion) {
@@ -143,33 +122,19 @@
     }
 
     public static String getKeyboardThemeName(final int themeId) {
-        final KeyboardTheme theme = searchKeyboardThemeById(themeId, KEYBOARD_THEMES);
+        KeyboardTheme theme = searchKeyboardThemeById(themeId, KEYBOARD_THEMES);
+        if (theme == null) {
+            theme = searchKeyboardThemeById(DEFAULT_THEME_ID, KEYBOARD_THEMES);
+        }
         return theme.mThemeName;
     }
 
     public static void saveKeyboardThemeId(final int themeId, final SharedPreferences prefs) {
-        saveKeyboardThemeId(themeId, prefs, BuildCompatUtils.EFFECTIVE_SDK_INT);
-    }
-
-    /* package private for testing */
-    static String getPreferenceKey(final int sdkVersion) {
-        if (sdkVersion <= VERSION_CODES.KITKAT) {
-            return KLP_KEYBOARD_THEME_KEY;
-        }
-        return LXX_KEYBOARD_THEME_KEY;
-    }
-
-    /* package private for testing */
-    static void saveKeyboardThemeId(final int themeId, final SharedPreferences prefs,
-            final int sdkVersion) {
-        final String prefKey = getPreferenceKey(sdkVersion);
-        prefs.edit().putString(prefKey, Integer.toString(themeId)).apply();
+        prefs.edit().putString(LXX_KEYBOARD_THEME_KEY, Integer.toString(themeId)).apply();
     }
 
     public static KeyboardTheme getKeyboardTheme(final Context context) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        final KeyboardTheme[] availableThemeArray = getAvailableThemeArray(context);
-        return getKeyboardTheme(prefs, BuildCompatUtils.EFFECTIVE_SDK_INT, availableThemeArray);
+        return getKeyboardTheme(context, BuildCompatUtils.EFFECTIVE_SDK_INT);
     }
 
     /* package private for testing */
@@ -192,24 +157,43 @@
     }
 
     /* package private for testing */
-    static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs, final int sdkVersion,
-            final KeyboardTheme[] availableThemeArray) {
-        final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null);
-        if (lxxThemeIdString == null) {
-            return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray);
-        }
-        try {
-            final int themeId = Integer.parseInt(lxxThemeIdString);
-            final KeyboardTheme theme = searchKeyboardThemeById(themeId, availableThemeArray);
-            if (theme != null) {
-                return theme;
+    static KeyboardTheme getKeyboardTheme(final Context context, final int sdkVersion) {
+        int themeId = getSelectedKeyboardThemeId(context);
+        if (THEME_ID_AUTO_DARK == themeId) {
+            Configuration cfg = context.getResources().getConfiguration();
+            int nightMode = cfg.uiMode & Configuration.UI_MODE_NIGHT_MASK;
+            if (nightMode == Configuration.UI_MODE_NIGHT_YES) {
+                themeId = THEME_ID_LXX_DARK;
+            } else {
+                themeId = THEME_ID_LXX_LIGHT;
             }
-            Log.w(TAG, "Unknown keyboard theme in LXX preference: " + lxxThemeIdString);
-        } catch (final NumberFormatException e) {
-            Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e);
+        }
+        final KeyboardTheme[] availableThemeArray = getAvailableThemeArray(context);
+        final KeyboardTheme theme = searchKeyboardThemeById(themeId, availableThemeArray);
+        if (theme != null) {
+            return theme;
+        }
+        Log.w(TAG, "Unknown keyboard theme in LXX preference: " + themeId);
+        // Remove preference that contains unknown or illegal theme id.
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+        prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply();
+        return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray);
+    }
+
+    public static int getSelectedKeyboardThemeId(final Context context) {
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+        final KeyboardTheme[] availableThemeArray = getAvailableThemeArray(context);
+        final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null);
+        if (lxxThemeIdString != null) {
+            try {
+                return Integer.parseInt(lxxThemeIdString);
+            } catch (final NumberFormatException e) {
+                Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e);
+            }
         }
         // Remove preference that contains unknown or illegal theme id.
         prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply();
-        return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray);
+        return getDefaultKeyboardTheme(prefs, BuildCompatUtils.EFFECTIVE_SDK_INT,
+                availableThemeArray).mThemeId;
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index faa2107..cd5073d 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -52,6 +52,7 @@
  * @attr ref R.styleable#KeyboardView_spacebarIconWidthRatio
  * @attr ref R.styleable#Keyboard_Key_keyLabelFlags
  * @attr ref R.styleable#KeyboardView_keyHintLetterPadding
+ * @attr ref R.styleable#KeyboardView_keyHintLetterPaddingVertical
  * @attr ref R.styleable#KeyboardView_keyPopupHintLetter
  * @attr ref R.styleable#KeyboardView_keyPopupHintLetterPadding
  * @attr ref R.styleable#KeyboardView_keyShiftedLetterHintPadding
@@ -83,7 +84,8 @@
     // Default keyLabelFlags from {@link KeyboardTheme}.
     // Currently only "alignHintLabelToBottom" is supported.
     private final int mDefaultKeyLabelFlags;
-    private final float mKeyHintLetterPadding;
+    private final float mKeyHintLetterPaddingX;
+    private final float mKeyHintLetterPaddingY;
     private final String mKeyPopupHintLetter;
     private final float mKeyPopupHintLetterPadding;
     private final float mKeyShiftedLetterHintPadding;
@@ -142,8 +144,10 @@
         mSpacebarBackground = (spacebarBackground != null) ? spacebarBackground : mKeyBackground;
         mSpacebarIconWidthRatio = keyboardViewAttr.getFloat(
                 R.styleable.KeyboardView_spacebarIconWidthRatio, 1.0f);
-        mKeyHintLetterPadding = keyboardViewAttr.getDimension(
+        mKeyHintLetterPaddingX = keyboardViewAttr.getDimension(
                 R.styleable.KeyboardView_keyHintLetterPadding, 0.0f);
+        mKeyHintLetterPaddingY = keyboardViewAttr.getDimension(
+                R.styleable.KeyboardView_keyHintLetterPaddingVertical, 0.0f);
         mKeyPopupHintLetter = keyboardViewAttr.getString(
                 R.styleable.KeyboardView_keyPopupHintLetter);
         mKeyPopupHintLetterPadding = keyboardViewAttr.getDimension(
@@ -355,12 +359,8 @@
         if (key.needsToKeepBackgroundAspectRatio(mDefaultKeyLabelFlags)
                 // HACK: To disable expanding normal/functional key background.
                 && !key.hasCustomActionLabel()) {
-            final int intrinsicWidth = background.getIntrinsicWidth();
-            final int intrinsicHeight = background.getIntrinsicHeight();
-            final float minScale = Math.min(
-                    keyWidth / (float)intrinsicWidth, keyHeight / (float)intrinsicHeight);
-            bgWidth = (int)(intrinsicWidth * minScale);
-            bgHeight = (int)(intrinsicHeight * minScale);
+            bgWidth = background.getIntrinsicWidth();
+            bgHeight = background.getIntrinsicHeight();
             bgX = (keyWidth - bgWidth) / 2;
             bgY = (keyHeight - bgHeight) / 2;
         } else {
@@ -370,10 +370,7 @@
             bgX = -padding.left;
             bgY = -padding.top;
         }
-        final Rect bounds = background.getBounds();
-        if (bgWidth != bounds.right || bgHeight != bounds.bottom) {
-            background.setBounds(0, 0, bgWidth, bgHeight);
-        }
+        background.setBounds(0, 0, bgWidth, bgHeight);
         canvas.translate(bgX, bgY);
         background.draw(canvas);
         canvas.translate(-bgX, -bgY);
@@ -474,9 +471,9 @@
                 // The hint letter is placed at top-right corner of the key. Used mainly on phone.
                 final float hintDigitWidth = TypefaceUtils.getReferenceDigitWidth(paint);
                 final float hintLabelWidth = TypefaceUtils.getStringWidth(hintLabel, paint);
-                hintX = keyWidth - mKeyHintLetterPadding
+                hintX = keyWidth - mKeyHintLetterPaddingX
                         - Math.max(hintDigitWidth, hintLabelWidth) / 2.0f;
-                hintBaseline = -paint.ascent();
+                hintBaseline = -paint.ascent() + mKeyHintLetterPaddingY;
                 paint.setTextAlign(Align.CENTER);
             }
             final float adjustmentY = params.mHintLabelVerticalAdjustment * labelCharHeight;
@@ -521,7 +518,7 @@
         paint.setTextSize(params.mHintLetterSize);
         paint.setColor(params.mHintLabelColor);
         paint.setTextAlign(Align.CENTER);
-        final float hintX = keyWidth - mKeyHintLetterPadding
+        final float hintX = keyWidth - mKeyHintLetterPaddingX
                 - TypefaceUtils.getReferenceCharWidth(paint) / 2.0f;
         final float hintY = keyHeight - mKeyPopupHintLetterPadding;
         canvas.drawText(mKeyPopupHintLetter, hintX, hintY, paint);
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 9764cb3..05680c5 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -636,9 +636,14 @@
         final Key key = getKeyOn(x, y);
         mBogusMoveEventDetector.onActualDownEvent(x, y);
         if (key != null && key.isModifier()) {
-            // Before processing a down event of modifier key, all pointers already being
-            // tracked should be released.
-            sPointerTrackerQueue.releaseAllPointers(eventTime);
+            if (sInGesture) {
+                // Make sure not to interrupt an active gesture
+                return;
+            } else {
+                // Before processing a down event of modifier key, all pointers
+                // already being tracked should be released.
+                sPointerTrackerQueue.releaseAllPointers(eventTime);
+            }
         }
         sPointerTrackerQueue.add(this);
         onDownEventInternal(x, y, eventTime);
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index b57e483..41e87f4 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -184,7 +184,7 @@
                 addShownCategoryId(EmojiCategory.ID_EIGHT_ACTIVITY);
                 addShownCategoryId(EmojiCategory.ID_EIGHT_OBJECTS);
                 addShownCategoryId(EmojiCategory.ID_EIGHT_SYMBOLS);
-                addShownCategoryId(EmojiCategory.ID_FLAGS); // Exclude combinations without glyphs.
+                addShownCategoryId(EmojiCategory.ID_EIGHT_FLAGS);
             } else {
                 defaultCategoryId = EmojiCategory.ID_PEOPLE;
                 addShownCategoryId(EmojiCategory.ID_PEOPLE);
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
index 797541a..d3d050e 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
@@ -25,8 +25,6 @@
 import com.android.inputmethod.latin.utils.ResourceUtils;
 
 final class EmojiLayoutParams {
-    private static final int DEFAULT_KEYBOARD_ROWS = 4;
-
     public final int mEmojiPagerHeight;
     private final int mEmojiPagerBottomMargin;
     public final int mEmojiKeyboardHeight;
@@ -52,7 +50,9 @@
                 (int) (res.getDimension(R.dimen.config_emoji_category_page_id_height));
         final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding
                 + mKeyVerticalGap;
-        mEmojiActionBarHeight = baseheight / DEFAULT_KEYBOARD_ROWS
+        final int mNumberOfRows = (int) (1.0f / res.getFraction(
+                R.fraction.config_emoji_keyboard_row_height, 1, 1)) + 1;
+        mEmojiActionBarHeight = baseheight / mNumberOfRows
                 - (mKeyVerticalGap - mBottomPadding) / 2;
         mEmojiPagerHeight = defaultKeyboardHeight - mEmojiActionBarHeight
                 - mEmojiCategoryPageIdViewHeight;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 7dfb532..ec1307e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -2781,6 +2781,41 @@
         /* additional_morekeys_symbols_0 */ "0",
     };
 
+    /* Locale my_MM: Burmese (Myanmar) */
+    private static final String[] TEXTS_my_MM = {
+        /* morekeys_a ~ */
+        null, null, null, null,
+        /* ~ morekeys_u */
+        // Label for "switch to alphabetic" key.
+        // U+1000: "က" MYANMAR LETTER KA
+        // U+1001: "ခ" MYANMAR LETTER KHA
+        // U+1002: "ဂ" MYANMAR LETTER GA
+        /* keylabel_to_alpha */ "\u1000\u1001\u1002",
+        /* morekeys_i ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null,
+        /* ~ morekeys_nordic_row2_11 */
+        /* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
+        // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+        // U+104B: "။" MYANMAR SIGN SECTION
+        /* keyspec_tablet_comma */ "\u104A",
+        /* keyspec_period */ "\u104B",
+        /* morekeys_period */ null,
+        /* keyspec_tablet_period */ "\u104B",
+        /* keyspec_swiss_row1_11 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
+        /* ~ keyspec_comma */
+        /* morekeys_tablet_comma */ "\\,",
+        /* keyhintlabel_period */ "\u104A",
+        /* morekeys_question ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_south_slavic_row3_8 */
+        /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&",
+    };
+
     /* Locale nb: Norwegian Bokmål */
     private static final String[] TEXTS_nb = {
         // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
@@ -4154,6 +4189,7 @@
         "ml_IN"  , TEXTS_ml_IN, /*   2/ 12 Malayalam (India) */
         "mn_MN"  , TEXTS_mn_MN, /*   2/ 12 Mongolian (Mongolia) */
         "mr_IN"  , TEXTS_mr_IN, /*  23/ 53 Marathi (India) */
+        "my_MM"  , TEXTS_my_MM, /*   8/ 98 Burmese (Myanmar) */
         "nb"     , TEXTS_nb,    /*  11/ 55 Norwegian Bokmål */
         "ne_NP"  , TEXTS_ne_NP, /*  27/ 60 Nepali (Nepal) */
         "nl"     , TEXTS_nl,    /*   9/ 13 Dutch */
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 9a3ac67..3c329bb 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -76,7 +76,7 @@
     private static final int FORMAT_WORD_PROPERTY_IS_NOT_A_WORD_INDEX = 0;
     private static final int FORMAT_WORD_PROPERTY_IS_POSSIBLY_OFFENSIVE_INDEX = 1;
     private static final int FORMAT_WORD_PROPERTY_HAS_NGRAMS_INDEX = 2;
-    private static final int FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX = 3; // DEPRECATED
+    private static final int FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX = 3;
     private static final int FORMAT_WORD_PROPERTY_IS_BEGINNING_OF_SENTENCE_INDEX = 4;
 
     // Format to get probability and historical info from native side via getWordPropertyNative().
@@ -412,9 +412,11 @@
                 outFlags[FORMAT_WORD_PROPERTY_IS_NOT_A_WORD_INDEX],
                 outFlags[FORMAT_WORD_PROPERTY_IS_POSSIBLY_OFFENSIVE_INDEX],
                 outFlags[FORMAT_WORD_PROPERTY_HAS_NGRAMS_INDEX],
+                outFlags[FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX],
                 outFlags[FORMAT_WORD_PROPERTY_IS_BEGINNING_OF_SENTENCE_INDEX], outProbabilityInfo,
                 outNgramPrevWordsArray, outNgramPrevWordIsBeginningOfSentenceArray,
-                outNgramTargets, outNgramProbabilityInfo);
+                outNgramTargets, outNgramProbabilityInfo, outShortcutTargets,
+                outShortcutProbabilities);
     }
 
     public static class GetNextWordPropertyResult {
@@ -442,16 +444,19 @@
     }
 
     // Add a unigram entry to binary dictionary with unigram attributes in native code.
-    public boolean addUnigramEntry(
-            final String word, final int probability, final boolean isBeginningOfSentence,
-            final boolean isNotAWord, final boolean isPossiblyOffensive, final int timestamp) {
+    public boolean addUnigramEntry(final String word, final int probability,
+            final String shortcutTarget, final int shortcutProbability,
+            final boolean isBeginningOfSentence, final boolean isNotAWord,
+            final boolean isPossiblyOffensive, final int timestamp) {
         if (word == null || (word.isEmpty() && !isBeginningOfSentence)) {
             return false;
         }
         final int[] codePoints = StringUtils.toCodePointArray(word);
-        if (!addUnigramEntryNative(mNativeDict, codePoints, probability,
-                null /* shortcutTargetCodePoints */, 0 /* shortcutProbability */,
-                isBeginningOfSentence, isNotAWord, isPossiblyOffensive, timestamp)) {
+        final int[] shortcutTargetCodePoints = (shortcutTarget != null) ?
+                StringUtils.toCodePointArray(shortcutTarget) : null;
+        if (!addUnigramEntryNative(mNativeDict, codePoints, probability, shortcutTargetCodePoints,
+                shortcutProbability, isBeginningOfSentence, isNotAWord, isPossiblyOffensive,
+                timestamp)) {
             return false;
         }
         mHasUpdated = true;
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index dbd639f..732484c 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -101,6 +101,8 @@
             }
             runGCIfRequiredLocked(true /* mindsBlockByGC */);
             addUnigramLocked(word, ContactsDictionaryConstants.FREQUENCY_FOR_CONTACTS,
+                    null /* shortcut */,
+                    0 /* shortcutFreq */,
                     false /* isNotAWord */, false /* isPossiblyOffensive */,
                     BinaryDictionary.NOT_A_VALID_TIMESTAMP);
         }
@@ -151,8 +153,8 @@
                         Log.d(TAG, "addName " + name + ", " + word + ", "  + ngramContext);
                     }
                     runGCIfRequiredLocked(true /* mindsBlockByGC */);
-                    addUnigramLocked(word,
-                            ContactsDictionaryConstants.FREQUENCY_FOR_CONTACTS, false /* isNotAWord */,
+                    addUnigramLocked(word, ContactsDictionaryConstants.FREQUENCY_FOR_CONTACTS,
+                            null /* shortcut */, 0 /* shortcutFreq */, false /* isNotAWord */,
                             false /* isPossiblyOffensive */,
                             BinaryDictionary.NOT_A_VALID_TIMESTAMP);
                     if (ngramContext.isValid() && mUseFirstLastBigrams) {
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 9070957..f9cc1c4 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -295,18 +295,21 @@
      * Adds unigram information of a word to the dictionary. May overwrite an existing entry.
      */
     public void addUnigramEntry(final String word, final int frequency,
-            final boolean isNotAWord, final boolean isPossiblyOffensive, final int timestamp) {
+            final String shortcutTarget, final int shortcutFreq, final boolean isNotAWord,
+            final boolean isPossiblyOffensive, final int timestamp) {
         updateDictionaryWithWriteLock(new Runnable() {
             @Override
             public void run() {
-                addUnigramLocked(word, frequency, isNotAWord, isPossiblyOffensive, timestamp);
+                addUnigramLocked(word, frequency, shortcutTarget, shortcutFreq,
+                        isNotAWord, isPossiblyOffensive, timestamp);
             }
         });
     }
 
     protected void addUnigramLocked(final String word, final int frequency,
-            final boolean isNotAWord, final boolean isPossiblyOffensive, final int timestamp) {
-        if (!mBinaryDictionary.addUnigramEntry(word, frequency,
+            final String shortcutTarget, final int shortcutFreq, final boolean isNotAWord,
+            final boolean isPossiblyOffensive, final int timestamp) {
+        if (!mBinaryDictionary.addUnigramEntry(word, frequency, shortcutTarget, shortcutFreq,
                 false /* isBeginningOfSentence */, isNotAWord, isPossiblyOffensive, timestamp)) {
             Log.e(TAG, "Cannot add unigram entry. word: " + word);
         }
diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java
index 86c7810..5214c74 100644
--- a/java/src/com/android/inputmethod/latin/InputAttributes.java
+++ b/java/src/com/android/inputmethod/latin/InputAttributes.java
@@ -43,6 +43,7 @@
     final public boolean mApplicationSpecifiedCompletionOn;
     final public boolean mShouldInsertSpacesAutomatically;
     final public boolean mShouldShowVoiceInputKey;
+    final public boolean mNoLearning;
     /**
      * Whether the floating gesture preview should be disabled. If true, this should override the
      * corresponding keyboard settings preference, always suppressing the floating preview text.
@@ -86,6 +87,7 @@
             mShouldShowVoiceInputKey = false;
             mDisableGestureFloatingPreviewText = false;
             mIsGeneralTextInput = false;
+            mNoLearning = false;
             return;
         }
         // inputClass == InputType.TYPE_CLASS_TEXT
@@ -139,6 +141,8 @@
                 && InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD != variation
                 && InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS != variation
                 && InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD != variation;
+
+        mNoLearning = (editorInfo.imeOptions & EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING) != 0;
     }
 
     public boolean isTypeNull() {
diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
index fe24ccf..1ed2103 100644
--- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
@@ -22,6 +22,7 @@
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
 import android.net.Uri;
+import android.os.Build;
 import android.provider.UserDictionary.Words;
 import android.text.TextUtils;
 import android.util.Log;
@@ -46,8 +47,19 @@
     private static final String USER_DICTIONARY_ALL_LANGUAGES = "";
     private static final int HISTORICAL_DEFAULT_USER_DICTIONARY_FREQUENCY = 250;
     private static final int LATINIME_DEFAULT_USER_DICTIONARY_FREQUENCY = 160;
+    // Shortcut frequency is 0~15, with 15 = whitelist. We don't want user dictionary entries
+    // to auto-correct, so we set this to the highest frequency that won't, i.e. 14.
+    private static final int USER_DICT_SHORTCUT_FREQUENCY = 14;
 
-    private static final String[] PROJECTION_QUERY = new String[] {Words.WORD, Words.FREQUENCY};
+    private static final String[] PROJECTION_QUERY_WITH_SHORTCUT = new String[] {
+            Words.WORD,
+            Words.SHORTCUT,
+            Words.FREQUENCY,
+    };
+    private static final String[] PROJECTION_QUERY_WITHOUT_SHORTCUT = new String[] {
+            Words.WORD,
+            Words.FREQUENCY,
+    };
 
     private static final String NAME = "userunigram";
 
@@ -159,7 +171,20 @@
             requestArguments = localeElements;
         }
         final String requestString = request.toString();
-        addWordsFromProjectionLocked(PROJECTION_QUERY, requestString, requestArguments);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            try {
+                addWordsFromProjectionLocked(PROJECTION_QUERY_WITH_SHORTCUT, requestString,
+                        requestArguments);
+            } catch (IllegalArgumentException e) {
+                // This may happen on some non-compliant devices where the declared API is JB+ but
+                // the SHORTCUT column is not present for some reason.
+                addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+                        requestArguments);
+            }
+        } else {
+            addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+                    requestArguments);
+        }
     }
 
     private void addWordsFromProjectionLocked(final String[] query, String request,
@@ -194,20 +219,31 @@
     }
 
     private void addWordsLocked(final Cursor cursor) {
+        final boolean hasShortcutColumn = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
         if (cursor == null) return;
         if (cursor.moveToFirst()) {
             final int indexWord = cursor.getColumnIndex(Words.WORD);
+            final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(Words.SHORTCUT) : 0;
             final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY);
             while (!cursor.isAfterLast()) {
                 final String word = cursor.getString(indexWord);
+                final String shortcut = hasShortcutColumn ? cursor.getString(indexShortcut) : null;
                 final int frequency = cursor.getInt(indexFrequency);
                 final int adjustedFrequency = scaleFrequencyFromDefaultToLatinIme(frequency);
                 // Safeguard against adding really long words.
                 if (word.length() <= MAX_WORD_LENGTH) {
                     runGCIfRequiredLocked(true /* mindsBlockByGC */);
-                    addUnigramLocked(word, adjustedFrequency, false /* isNotAWord */,
+                    addUnigramLocked(word, adjustedFrequency, null /* shortcutTarget */,
+                            0 /* shortcutFreq */, false /* isNotAWord */,
                             false /* isPossiblyOffensive */,
                             BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+                    if (null != shortcut && shortcut.length() <= MAX_WORD_LENGTH) {
+                        runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                        addUnigramLocked(shortcut, adjustedFrequency, word,
+                                USER_DICT_SHORTCUT_FREQUENCY, true /* isNotAWord */,
+                                false /* isPossiblyOffensive */,
+                                BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+                    }
                 }
                 cursor.moveToNext();
             }
diff --git a/java/src/com/android/inputmethod/latin/define/JniLibName.java b/java/src/com/android/inputmethod/latin/define/JniLibName.java
index abfc36d..83ed5eb 100644
--- a/java/src/com/android/inputmethod/latin/define/JniLibName.java
+++ b/java/src/com/android/inputmethod/latin/define/JniLibName.java
@@ -22,4 +22,5 @@
     }
 
     public static final String JNI_LIB_NAME = "jni_latinime";
+    public static final String JNI_LIB_NAME2 = "jni_latinimegoogle";
 }
diff --git a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
index 264e757..388d578 100644
--- a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
+++ b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
@@ -37,11 +37,13 @@
 public final class WordProperty implements Comparable<WordProperty> {
     public final String mWord;
     public final ProbabilityInfo mProbabilityInfo;
+    public final ArrayList<WeightedString> mShortcutTargets;
     public final ArrayList<NgramProperty> mNgrams;
     // TODO: Support mIsBeginningOfSentence.
     public final boolean mIsBeginningOfSentence;
     public final boolean mIsNotAWord;
     public final boolean mIsPossiblyOffensive;
+    public final boolean mHasShortcuts;
     public final boolean mHasNgrams;
 
     private int mHashCode = 0;
@@ -49,10 +51,12 @@
     // TODO: Support n-gram.
     @UsedForTesting
     public WordProperty(final String word, final ProbabilityInfo probabilityInfo,
+            final ArrayList<WeightedString> shortcutTargets,
             @Nullable final ArrayList<WeightedString> bigrams,
             final boolean isNotAWord, final boolean isPossiblyOffensive) {
         mWord = word;
         mProbabilityInfo = probabilityInfo;
+        mShortcutTargets = shortcutTargets;
         if (null == bigrams) {
             mNgrams = null;
         } else {
@@ -66,6 +70,7 @@
         mIsNotAWord = isNotAWord;
         mIsPossiblyOffensive = isPossiblyOffensive;
         mHasNgrams = bigrams != null && !bigrams.isEmpty();
+        mHasShortcuts = shortcutTargets != null && !shortcutTargets.isEmpty();
     }
 
     private static ProbabilityInfo createProbabilityInfoFromArray(final int[] probabilityInfo) {
@@ -79,17 +84,21 @@
     // Construct word property using information from native code.
     // This represents invalid word when the probability is BinaryDictionary.NOT_A_PROBABILITY.
     public WordProperty(final int[] codePoints, final boolean isNotAWord,
-            final boolean isPossiblyOffensive, final boolean hasBigram,
+            final boolean isPossiblyOffensive, final boolean hasBigram, final boolean hasShortcuts,
             final boolean isBeginningOfSentence, final int[] probabilityInfo,
             final ArrayList<int[][]> ngramPrevWordsArray,
             final ArrayList<boolean[]> ngramPrevWordIsBeginningOfSentenceArray,
-            final ArrayList<int[]> ngramTargets, final ArrayList<int[]> ngramProbabilityInfo) {
+            final ArrayList<int[]> ngramTargets, final ArrayList<int[]> ngramProbabilityInfo,
+            final ArrayList<int[]> shortcutTargets,
+            final ArrayList<Integer> shortcutProbabilities) {
         mWord = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints);
         mProbabilityInfo = createProbabilityInfoFromArray(probabilityInfo);
+        mShortcutTargets = new ArrayList<>();
         final ArrayList<NgramProperty> ngrams = new ArrayList<>();
         mIsBeginningOfSentence = isBeginningOfSentence;
         mIsNotAWord = isNotAWord;
         mIsPossiblyOffensive = isPossiblyOffensive;
+        mHasShortcuts = hasShortcuts;
         mHasNgrams = hasBigram;
 
         final int relatedNgramCount = ngramTargets.size();
@@ -112,6 +121,14 @@
             ngrams.add(new NgramProperty(ngramTarget, ngramContext));
         }
         mNgrams = ngrams.isEmpty() ? null : ngrams;
+
+        final int shortcutTargetCount = shortcutTargets.size();
+        for (int i = 0; i < shortcutTargetCount; i++) {
+            final String shortcutTargetString =
+                    StringUtils.getStringFromNullTerminatedCodePointArray(shortcutTargets.get(i));
+            mShortcutTargets.add(
+                    new WeightedString(shortcutTargetString, shortcutProbabilities.get(i)));
+        }
     }
 
     // TODO: Remove
@@ -137,6 +154,7 @@
         return Arrays.hashCode(new Object[] {
                 word.mWord,
                 word.mProbabilityInfo,
+                word.mShortcutTargets,
                 word.mNgrams,
                 word.mIsNotAWord,
                 word.mIsPossiblyOffensive
@@ -167,10 +185,10 @@
         if (o == this) return true;
         if (!(o instanceof WordProperty)) return false;
         WordProperty w = (WordProperty)o;
-        return mProbabilityInfo.equals(w.mProbabilityInfo)
-                && mWord.equals(w.mWord) && equals(mNgrams, w.mNgrams)
+        return mProbabilityInfo.equals(w.mProbabilityInfo) && mWord.equals(w.mWord)
+                && mShortcutTargets.equals(w.mShortcutTargets) && equals(mNgrams, w.mNgrams)
                 && mIsNotAWord == w.mIsNotAWord && mIsPossiblyOffensive == w.mIsPossiblyOffensive
-                && mHasNgrams == w.mHasNgrams;
+                && mHasNgrams == w.mHasNgrams && mHasShortcuts && w.mHasNgrams;
     }
 
     // TDOO: Have a utility method like java.util.Objects.equals.
diff --git a/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java
index a6fb7f1..bddb864 100644
--- a/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java
@@ -29,6 +29,8 @@
 import com.android.inputmethod.latin.SystemBroadcastReceiver;
 import com.android.inputmethod.latin.define.ProductionFlags;
 
+import java.util.Locale;
+
 /**
  * "Advanced" settings sub screen.
  *
@@ -41,6 +43,7 @@
  * - Debug settings
  */
 public final class AdvancedSettingsFragment extends SubScreenFragment {
+    public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
     @Override
     public void onCreate(final Bundle icicle) {
         super.onCreate(icicle);
@@ -91,6 +94,8 @@
         setupKeypressVibrationDurationSettings();
         setupKeypressSoundVolumeSettings();
         setupKeyLongpressTimeoutSettings();
+        setupKeyboardHeight(
+                Settings.PREF_KEYBOARD_HEIGHT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE);
         refreshEnablingsOfKeypressSoundAndVibrationSettings();
     }
 
@@ -261,4 +266,49 @@
             public void feedbackValue(final int value) {}
         });
     }
+    private void setupKeyboardHeight(final String prefKey, final float defaultValue) {
+        final SharedPreferences prefs = getSharedPreferences();
+        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
+        if (pref == null) {
+            return;
+        }
+        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
+            private static final float PERCENTAGE_FLOAT = 100.0f;
+            private float getValueFromPercentage(final int percentage) {
+                return percentage / PERCENTAGE_FLOAT;
+            }
+
+            private int getPercentageFromValue(final float floatValue) {
+                return (int)(floatValue * PERCENTAGE_FLOAT);
+            }
+
+            @Override
+            public void writeValue(final int value, final String key) {
+                prefs.edit().putFloat(key, getValueFromPercentage(value)).apply();
+            }
+
+            @Override
+            public void writeDefaultValue(final String key) {
+                prefs.edit().remove(key).apply();
+            }
+
+            @Override
+            public int readValue(final String key) {
+                return getPercentageFromValue(Settings.readKeyboardHeight(prefs, defaultValue));
+            }
+
+            @Override
+            public int readDefaultValue(final String key) {
+                return getPercentageFromValue(defaultValue);
+            }
+
+            @Override
+            public String getValueText(final int value) {
+                return String.format(Locale.ROOT, "%d%%", value);
+            }
+
+            @Override
+            public void feedbackValue(final int value) {}
+        });
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java
index 56e8f16..6be766c 100644
--- a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java
@@ -24,7 +24,6 @@
 import android.content.res.Resources;
 import android.os.Bundle;
 import android.preference.Preference;
-import android.preference.PreferenceFragment;
 import android.preference.PreferenceGroup;
 import androidx.core.view.ViewCompat;
 import android.text.TextUtils;
@@ -47,7 +46,7 @@
 
 import java.util.ArrayList;
 
-public final class CustomInputStyleSettingsFragment extends PreferenceFragment
+public final class CustomInputStyleSettingsFragment extends CustomPreferenceFragment
         implements CustomInputStylePreference.Listener {
     private static final String TAG = CustomInputStyleSettingsFragment.class.getSimpleName();
     // Note: We would like to turn this debug flag true in order to see what input styles are
@@ -173,7 +172,8 @@
             return;
         }
         if (findDuplicatedSubtype(subtype) == null) {
-            mRichImm.setAdditionalInputMethodSubtypes(getSubtypes());
+            final InputMethodSubtype[] subTypes = saveAndGetSubTypes();
+            mRichImm.setAdditionalInputMethodSubtypes(subTypes);
             return;
         }
 
@@ -190,7 +190,8 @@
         mIsAddingNewSubtype = false;
         final InputMethodSubtype subtype = stylePref.getSubtype();
         if (findDuplicatedSubtype(subtype) == null) {
-            mRichImm.setAdditionalInputMethodSubtypes(getSubtypes());
+            final InputMethodSubtype[] subTypes = saveAndGetSubTypes();
+            mRichImm.setAdditionalInputMethodSubtypes(subTypes);
             mSubtypePreferenceKeyForSubtypeEnabler = stylePref.getKey();
             mSubtypeEnablerNotificationDialog = createDialog();
             mSubtypeEnablerNotificationDialog.show();
@@ -284,16 +285,7 @@
     @Override
     public void onPause() {
         super.onPause();
-        final String oldSubtypes = Settings.readPrefAdditionalSubtypes(mPrefs, getResources());
-        final InputMethodSubtype[] subtypes = getSubtypes();
-        final String prefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(subtypes);
-        if (DEBUG_CUSTOM_INPUT_STYLES) {
-            Log.i(TAG, "Save custom input styles: " + prefSubtypes);
-        }
-        if (prefSubtypes.equals(oldSubtypes)) {
-            return;
-        }
-        Settings.writePrefAdditionalSubtypes(mPrefs, prefSubtypes);
+        final InputMethodSubtype[] subtypes = saveAndGetSubTypes();
         mRichImm.setAdditionalInputMethodSubtypes(subtypes);
     }
 
@@ -315,4 +307,18 @@
         }
         return super.onOptionsItemSelected(item);
     }
+
+    private InputMethodSubtype[] saveAndGetSubTypes() {
+        final String oldSubtypes = Settings.readPrefAdditionalSubtypes(mPrefs, getResources());
+        final InputMethodSubtype[] subtypes = getSubtypes();
+        final String prefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(subtypes);
+        if (DEBUG_CUSTOM_INPUT_STYLES) {
+            Log.i(TAG, "Save custom input styles: " + prefSubtypes);
+        }
+        if (prefSubtypes.equals(oldSubtypes)) {
+            return null;
+        }
+        Settings.writePrefAdditionalSubtypes(mPrefs, prefSubtypes);
+        return subtypes;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/CustomPreferenceFragment.java b/java/src/com/android/inputmethod/latin/settings/CustomPreferenceFragment.java
new file mode 100644
index 0000000..d791b53
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/settings/CustomPreferenceFragment.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 The LineageOS 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.
+ */
+
+package com.android.inputmethod.latin.settings;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+import android.view.View;
+import android.widget.ListView;
+
+/**
+ * A base abstract class for a {@link PreferenceFragment} that removes divider lines
+ */
+public abstract class CustomPreferenceFragment extends PreferenceFragment {
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // remove dividers
+        View rootView = getView();
+        ListView list = (ListView) rootView.findViewById(android.R.id.list);
+        list.setDivider(null);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
index 6fffb8e..4985c2f 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
@@ -29,8 +29,6 @@
     public static final String PREF_FORCE_NON_DISTINCT_MULTITOUCH = "force_non_distinct_multitouch";
     public static final String PREF_HAS_CUSTOM_KEY_PREVIEW_ANIMATION_PARAMS =
             "pref_has_custom_key_preview_animation_params";
-    public static final String PREF_RESIZE_KEYBOARD = "pref_resize_keyboard";
-    public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
     public static final String PREF_KEY_PREVIEW_DISMISS_DURATION =
             "pref_key_preview_dismiss_duration";
     public static final String PREF_KEY_PREVIEW_DISMISS_END_X_SCALE =
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java
index 3785537..e754f32 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java
@@ -81,8 +81,6 @@
                 defaultKeyPreviewDismissEndScale);
         setupKeyPreviewAnimationScale(DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_Y_SCALE,
                 defaultKeyPreviewDismissEndScale);
-        setupKeyboardHeight(
-                DebugSettings.PREF_KEYBOARD_HEIGHT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE);
 
         mServiceNeedsRestart = false;
         mDebugMode = (TwoStatePreference) findPreference(DebugSettings.PREF_DEBUG_MODE);
@@ -240,49 +238,4 @@
         });
     }
 
-    private void setupKeyboardHeight(final String prefKey, final float defaultValue) {
-        final SharedPreferences prefs = getSharedPreferences();
-        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
-        if (pref == null) {
-            return;
-        }
-        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
-            private static final float PERCENTAGE_FLOAT = 100.0f;
-            private float getValueFromPercentage(final int percentage) {
-                return percentage / PERCENTAGE_FLOAT;
-            }
-
-            private int getPercentageFromValue(final float floatValue) {
-                return (int)(floatValue * PERCENTAGE_FLOAT);
-            }
-
-            @Override
-            public void writeValue(final int value, final String key) {
-                prefs.edit().putFloat(key, getValueFromPercentage(value)).apply();
-            }
-
-            @Override
-            public void writeDefaultValue(final String key) {
-                prefs.edit().remove(key).apply();
-            }
-
-            @Override
-            public int readValue(final String key) {
-                return getPercentageFromValue(Settings.readKeyboardHeight(prefs, defaultValue));
-            }
-
-            @Override
-            public int readDefaultValue(final String key) {
-                return getPercentageFromValue(defaultValue);
-            }
-
-            @Override
-            public String getValueText(final int value) {
-                return String.format(Locale.ROOT, "%d%%", value);
-            }
-
-            @Override
-            public void feedbackValue(final int value) {}
-        });
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java b/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java
index 5c416ab..0fd94b0 100644
--- a/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java
+++ b/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java
@@ -47,14 +47,12 @@
         DebugSettings.PREF_DEBUG_MODE,
         DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH,
         DebugSettings.PREF_HAS_CUSTOM_KEY_PREVIEW_ANIMATION_PARAMS,
-        DebugSettings.PREF_KEYBOARD_HEIGHT_SCALE,
         DebugSettings.PREF_KEY_PREVIEW_DISMISS_DURATION,
         DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_X_SCALE,
         DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_Y_SCALE,
         DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_DURATION,
         DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_START_X_SCALE,
         DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_START_Y_SCALE,
-        DebugSettings.PREF_RESIZE_KEYBOARD,
         DebugSettings.PREF_SHOULD_SHOW_LXX_SUGGESTION_UI,
         DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW
     };
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index 940f1bd..8a1a8a3 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -31,6 +31,7 @@
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.common.StringUtils;
 import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
+import com.android.inputmethod.latin.utils.JniUtils;
 import com.android.inputmethod.latin.utils.ResourceUtils;
 import com.android.inputmethod.latin.utils.RunInLocale;
 import com.android.inputmethod.latin.utils.StatsUtils;
@@ -48,6 +49,7 @@
     public static final String SCREEN_ACCOUNTS = "screen_accounts";
     public static final String SCREEN_THEME = "screen_theme";
     public static final String SCREEN_DEBUG = "screen_debug";
+    public static final String SCREEN_GESTURE = "screen_gesture";
     // In the same order as xml/prefs.xml
     public static final String PREF_AUTO_CAP = "auto_cap";
     public static final String PREF_VIBRATE_ON = "vibrate_on";
@@ -112,6 +114,9 @@
     private static final String PREF_CORPUS_HANDLES_FOR_PERSONALIZATION =
             "pref_corpus_handles_for_personalization";
 
+    // Keyboard height (moved from debug settings)
+    public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
+
     // Emoji
     public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys";
     public static final String PREF_EMOJI_CATEGORY_LAST_TYPED_ID = "emoji_category_last_typed_id";
@@ -230,6 +235,9 @@
     }
 
     public static boolean readFromBuildConfigIfGestureInputEnabled(final Resources res) {
+        if (!JniUtils.sHaveGestureLib) {
+            return false;
+        }
         return res.getBoolean(R.bool.config_gesture_input_enabled_by_build_config);
     }
 
@@ -345,7 +353,7 @@
     public static float readKeyboardHeight(final SharedPreferences prefs,
             final float defaultValue) {
         final float percentage = prefs.getFloat(
-                DebugSettings.PREF_KEYBOARD_HEIGHT_SCALE, UNDEFINED_PREFERENCE_VALUE_FLOAT);
+                PREF_KEYBOARD_HEIGHT_SCALE, UNDEFINED_PREFERENCE_VALUE_FLOAT);
         return (percentage != UNDEFINED_PREFERENCE_VALUE_FLOAT) ? percentage : defaultValue;
     }
 
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
index ac16577..43467a0 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
@@ -59,7 +59,7 @@
     @Override
     public boolean onOptionsItemSelected(final MenuItem item) {
         if (mShowHomeAsUp && item.getItemId() == android.R.id.home) {
-            finish();
+            onBackPressed();
             return true;
         }
         return super.onOptionsItemSelected(item);
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
index 874f221..1671ac6 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -26,11 +26,14 @@
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
 
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.define.ProductionFlags;
 import com.android.inputmethod.latin.utils.ApplicationUtils;
 import com.android.inputmethod.latin.utils.FeedbackUtils;
+import com.android.inputmethod.latin.utils.JniUtils;
 import com.android.inputmethodcommon.InputMethodSettingsFragment;
 
 public final class SettingsFragment extends InputMethodSettingsFragment {
@@ -55,6 +58,20 @@
             final Preference accountsPreference = findPreference(Settings.SCREEN_ACCOUNTS);
             preferenceScreen.removePreference(accountsPreference);
         }
+        if (!JniUtils.sHaveGestureLib) {
+            final Preference gesturePreference = findPreference(Settings.SCREEN_GESTURE);
+            preferenceScreen.removePreference(gesturePreference);
+        }
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // remove dividers
+        View rootView = getView();
+        ListView list = (ListView) rootView.findViewById(android.R.id.list);
+        list.setDivider(null);
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 5701824..7a276a6 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -108,7 +108,6 @@
     // Debug settings
     public final boolean mIsInternal;
     public final boolean mHasCustomKeyPreviewAnimationParams;
-    public final boolean mHasKeyboardResize;
     public final float mKeyboardHeightScale;
     public final int mKeyPreviewShowUpDuration;
     public final int mKeyPreviewDismissDuration;
@@ -184,11 +183,11 @@
                 && prefs.getBoolean(Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, true);
         mAutoCorrectionEnabledPerUserSettings = mAutoCorrectEnabled
                 && !mInputAttributes.mInputTypeNoAutoCorrect;
-        mSuggestionsEnabledPerUserSettings = readSuggestionsEnabled(prefs);
+        mSuggestionsEnabledPerUserSettings = !mInputAttributes.mNoLearning &&
+                readSuggestionsEnabled(prefs);
         mIsInternal = Settings.isInternal(prefs);
         mHasCustomKeyPreviewAnimationParams = prefs.getBoolean(
                 DebugSettings.PREF_HAS_CUSTOM_KEY_PREVIEW_ANIMATION_PARAMS, false);
-        mHasKeyboardResize = prefs.getBoolean(DebugSettings.PREF_RESIZE_KEYBOARD, false);
         mKeyboardHeightScale = Settings.readKeyboardHeight(prefs, DEFAULT_SIZE_SCALE);
         mKeyPreviewShowUpDuration = Settings.readKeyPreviewAnimationDuration(
                 prefs, DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_DURATION,
diff --git a/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java b/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java
index 5994a76..3194ba0 100644
--- a/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java
@@ -24,7 +24,6 @@
 import android.os.Bundle;
 import android.preference.ListPreference;
 import android.preference.Preference;
-import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.util.Log;
 
@@ -32,7 +31,7 @@
  * A base abstract class for a {@link PreferenceFragment} that implements a nested
  * {@link PreferenceScreen} of the main preference screen.
  */
-public abstract class SubScreenFragment extends PreferenceFragment
+public abstract class SubScreenFragment extends CustomPreferenceFragment
         implements OnSharedPreferenceChangeListener {
     private OnSharedPreferenceChangeListener mSharedPreferenceChangeListener;
 
@@ -98,6 +97,11 @@
     }
 
     @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+    }
+
+    @Override
     public void onCreate(final Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mSharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
diff --git a/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java
index 29289ae..437209b 100644
--- a/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java
@@ -46,11 +46,11 @@
     static void updateKeyboardThemeSummary(final Preference pref) {
         final Context context = pref.getContext();
         final Resources res = context.getResources();
-        final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(context);
+        final int keyboardThemeId = KeyboardTheme.getSelectedKeyboardThemeId(context);
         final String[] keyboardThemeNames = res.getStringArray(R.array.keyboard_theme_names);
         final int[] keyboardThemeIds = res.getIntArray(R.array.keyboard_theme_ids);
         for (int index = 0; index < keyboardThemeNames.length; index++) {
-            if (keyboardTheme.mThemeId == keyboardThemeIds[index]) {
+            if (keyboardThemeId == keyboardThemeIds[index]) {
                 pref.setSummary(keyboardThemeNames[index]);
                 return;
             }
@@ -72,8 +72,7 @@
             screen.addPreference(pref);
             pref.setOnRadioButtonClickedListener(this);
         }
-        final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(context);
-        mSelectedThemeId = keyboardTheme.mThemeId;
+        mSelectedThemeId = KeyboardTheme.getSelectedKeyboardThemeId(context);
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
index f7940e3..8efa85f 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
@@ -22,7 +22,6 @@
 import android.database.Cursor;
 import android.os.Bundle;
 import android.preference.Preference;
-import android.preference.PreferenceFragment;
 import android.preference.PreferenceGroup;
 import android.provider.UserDictionary;
 import android.text.TextUtils;
@@ -32,6 +31,7 @@
 
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.common.LocaleUtils;
+import com.android.inputmethod.latin.settings.CustomPreferenceFragment;
 
 import java.util.List;
 import java.util.Locale;
@@ -43,7 +43,7 @@
 // packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryList.java
 // in order to deal with some devices that have issues with the user dictionary handling
 
-public class UserDictionaryList extends PreferenceFragment {
+public class UserDictionaryList extends CustomPreferenceFragment {
 
     public static final String USER_DICTIONARY_SETTINGS_INTENT_ACTION =
             "android.settings.USER_DICTIONARY_SETTINGS";
diff --git a/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java b/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
index 5c0c432..476c134 100644
--- a/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
@@ -19,6 +19,7 @@
 import com.android.inputmethod.latin.makedict.DictionaryHeader;
 import com.android.inputmethod.latin.makedict.NgramProperty;
 import com.android.inputmethod.latin.makedict.ProbabilityInfo;
+import com.android.inputmethod.latin.makedict.WeightedString;
 import com.android.inputmethod.latin.makedict.WordProperty;
 
 import java.util.HashMap;
@@ -28,6 +29,7 @@
     public static final String BIGRAM_TAG = "bigram";
     public static final String NGRAM_TAG = "ngram";
     public static final String NGRAM_PREV_WORD_TAG = "prev_word";
+    public static final String SHORTCUT_TAG = "shortcut";
     public static final String PROBABILITY_TAG = "f";
     public static final String HISTORICAL_INFO_TAG = "historicalInfo";
     public static final String HISTORICAL_INFO_SEPARATOR = ":";
@@ -69,6 +71,14 @@
             builder.append("," + POSSIBLY_OFFENSIVE_TAG + "=" + TRUE_VALUE);
         }
         builder.append("\n");
+        if (wordProperty.mHasShortcuts) {
+            for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                builder.append("  " + SHORTCUT_TAG + "=" + shortcutTarget.mWord);
+                builder.append(",");
+                builder.append(formatProbabilityInfo(shortcutTarget.mProbabilityInfo));
+                builder.append("\n");
+            }
+        }
         if (wordProperty.mHasNgrams) {
             for (final NgramProperty ngramProperty : wordProperty.mNgrams) {
                 builder.append(" " + NGRAM_TAG + "=" + ngramProperty.mTargetWord.mWord);
diff --git a/java/src/com/android/inputmethod/latin/utils/JniUtils.java b/java/src/com/android/inputmethod/latin/utils/JniUtils.java
index e7fdafa..458c169 100644
--- a/java/src/com/android/inputmethod/latin/utils/JniUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/JniUtils.java
@@ -23,11 +23,18 @@
 public final class JniUtils {
     private static final String TAG = JniUtils.class.getSimpleName();
 
+    public static boolean sHaveGestureLib = false;
     static {
         try {
-            System.loadLibrary(JniLibName.JNI_LIB_NAME);
-        } catch (UnsatisfiedLinkError ule) {
-            Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
+            System.loadLibrary(JniLibName.JNI_LIB_NAME2);
+            sHaveGestureLib = true;
+        } catch (UnsatisfiedLinkError ue) {
+            Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME2, ue);
+            try {
+                System.loadLibrary(JniLibName.JNI_LIB_NAME);
+            } catch (UnsatisfiedLinkError ule) {
+                Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
+            }
         }
     }
 
diff --git a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
index cc0d470..0bb19af 100644
--- a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
@@ -189,11 +189,8 @@
 
     public static int getKeyboardHeight(final Resources res, final SettingsValues settingsValues) {
         final int defaultKeyboardHeight = getDefaultKeyboardHeight(res);
-        if (settingsValues.mHasKeyboardResize) {
-            // mKeyboardHeightScale Ranges from [.5,1.2], from xml/prefs_screen_debug.xml
-            return (int)(defaultKeyboardHeight * settingsValues.mKeyboardHeightScale);
-        }
-        return defaultKeyboardHeight;
+        // mKeyboardHeightScale Ranges from [.5,1.2], from xml/prefs_screen_debug.xml
+        return (int)(defaultKeyboardHeight * settingsValues.mKeyboardHeightScale);
     }
 
     public static int getDefaultKeyboardHeight(final Resources res) {
diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java
index 49f0b87..8d05f83 100644
--- a/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java
+++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java
@@ -19,13 +19,14 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.preference.PreferenceFragment;
+
+import com.android.inputmethod.latin.settings.CustomPreferenceFragment;
 
 /**
  * This is a helper class for an IME's settings preference fragment. It's recommended for every
  * IME to have its own settings preference fragment which inherits this class.
  */
-public abstract class InputMethodSettingsFragment extends PreferenceFragment
+public abstract class InputMethodSettingsFragment extends CustomPreferenceFragment
         implements InputMethodSettingsInterface {
     private final InputMethodSettingsImpl mSettings = new InputMethodSettingsImpl();
     @Override
@@ -33,6 +34,7 @@
         super.onCreate(savedInstanceState);
         final Context context = getActivity();
         setPreferenceScreen(getPreferenceManager().createPreferenceScreen(context));
+        mSettings.setSpawnAsNewActivity(false);
         mSettings.init(context, getPreferenceScreen());
     }
 
diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java
index cfa1a65..e56c975 100644
--- a/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java
+++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java
@@ -40,6 +40,7 @@
     private Drawable mSubtypeEnablerIcon;
     private InputMethodManager mImm;
     private InputMethodInfo mImi;
+    private boolean mSpawnAsNewActivity = true;
 
     /**
      * Initialize internal states of this object.
@@ -55,9 +56,11 @@
         }
         final Intent intent = new Intent(Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS);
         intent.putExtra(Settings.EXTRA_INPUT_METHOD_ID, mImi.getId());
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
-                | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        if (mSpawnAsNewActivity) {
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
+                    | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        }
         mSubtypeEnablerPreference = new Preference(context);
         mSubtypeEnablerPreference.setIntent(intent);
         prefScreen.addPreference(mSubtypeEnablerPreference);
@@ -176,4 +179,8 @@
             pref.setIcon(mSubtypeEnablerIcon);
         }
     }
+
+    public void setSpawnAsNewActivity(boolean spawnAsNew) {
+        mSpawnAsNewActivity = spawnAsNew;
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index db8b809..ed14831 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -170,7 +170,8 @@
         addUnigramWord(binaryDictionary, validLongWord, probability);
         addUnigramWord(binaryDictionary, invalidLongWord, probability);
         // Too long short cut.
-        binaryDictionary.addUnigramEntry("a", probability, false /* isBeginningOfSentence */,
+        binaryDictionary.addUnigramEntry("a", probability, invalidLongWord,
+                10 /* shortcutProbability */, false /* isBeginningOfSentence */,
                 false /* isNotAWord */, false /* isPossiblyOffensive */,
                 BinaryDictionary.NOT_A_VALID_TIMESTAMP);
         addUnigramWord(binaryDictionary, "abc", probability);
@@ -188,7 +189,8 @@
 
     private static void addUnigramWord(final BinaryDictionary binaryDictionary, final String word,
             final int probability) {
-        binaryDictionary.addUnigramEntry(word, probability,
+        binaryDictionary.addUnigramEntry(word, probability, "" /* shortcutTarget */,
+                Dictionary.NOT_A_PROBABILITY /* shortcutProbability */,
                 false /* isBeginningOfSentence */, false /* isNotAWord */,
                 false /* isPossiblyOffensive */,
                 BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
@@ -736,6 +738,7 @@
             final boolean isPossiblyOffensive = random.nextBoolean();
             // TODO: Add tests for historical info.
             binaryDictionary.addUnigramEntry(word, unigramProbability,
+                    null /* shortcutTarget */, Dictionary.NOT_A_PROBABILITY,
                     false /* isBeginningOfSentence */, isNotAWord, isPossiblyOffensive,
                     BinaryDictionary.NOT_A_VALID_TIMESTAMP);
             if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
@@ -750,7 +753,9 @@
             assertEquals(isNotAWord, wordProperty.mIsNotAWord);
             assertEquals(isPossiblyOffensive, wordProperty.mIsPossiblyOffensive);
             assertEquals(false, wordProperty.mHasNgrams);
+            assertEquals(false, wordProperty.mHasShortcuts);
             assertEquals(unigramProbability, wordProperty.mProbabilityInfo.mProbability);
+            assertTrue(wordProperty.mShortcutTargets.isEmpty());
         }
 
         for (int i = 0; i < BIGRAM_COUNT; i++) {
@@ -880,10 +885,127 @@
     }
 
     @Test
+    public void testAddShortcuts() {
+        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
+
+        final int unigramProbability = 100;
+        final int shortcutProbability = 10;
+        binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+                shortcutProbability, false /* isBeginningOfSentence */,
+                false /* isNotAWord */, false /* isPossiblyOffensive */, 0 /* timestamp */);
+        WordProperty wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(1, wordProperty.mShortcutTargets.size());
+        assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
+        assertEquals(shortcutProbability, wordProperty.mShortcutTargets.get(0).getProbability());
+        final int updatedShortcutProbability = 2;
+        binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+                updatedShortcutProbability, false /* isBeginningOfSentence */,
+                false /* isNotAWord */, false /* isPossiblyOffensive */, 0 /* timestamp */);
+        wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(1, wordProperty.mShortcutTargets.size());
+        assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
+        assertEquals(updatedShortcutProbability,
+                wordProperty.mShortcutTargets.get(0).getProbability());
+        binaryDictionary.addUnigramEntry("aaa", unigramProbability, "yyy",
+                shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+                false /* isPossiblyOffensive */, 0 /* timestamp */);
+        final HashMap<String, Integer> shortcutTargets = new HashMap<>();
+        shortcutTargets.put("zzz", updatedShortcutProbability);
+        shortcutTargets.put("yyy", shortcutProbability);
+        wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(2, wordProperty.mShortcutTargets.size());
+        for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+            assertTrue(shortcutTargets.containsKey(shortcutTarget.mWord));
+            assertEquals((int)shortcutTargets.get(shortcutTarget.mWord),
+                    shortcutTarget.getProbability());
+            shortcutTargets.remove(shortcutTarget.mWord);
+        }
+        shortcutTargets.put("zzz", updatedShortcutProbability);
+        shortcutTargets.put("yyy", shortcutProbability);
+        binaryDictionary.flushWithGC();
+        wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(2, wordProperty.mShortcutTargets.size());
+        for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+            assertTrue(shortcutTargets.containsKey(shortcutTarget.mWord));
+            assertEquals((int)shortcutTargets.get(shortcutTarget.mWord),
+                    shortcutTarget.getProbability());
+            shortcutTargets.remove(shortcutTarget.mWord);
+        }
+    }
+
+    @Test
+    public void testAddManyShortcuts() {
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+        final int UNIGRAM_COUNT = 1000;
+        final int SHORTCUT_COUNT = 10000;
+        final int codePointSetSize = 20;
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+        final ArrayList<String> words = new ArrayList<>();
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<String, HashMap<String, Integer>> shortcutTargets = new HashMap<>();
+        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
+
+        for (int i = 0; i < UNIGRAM_COUNT; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int unigramProbability = random.nextInt(0xFF);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
+            words.add(word);
+            unigramProbabilities.put(word, unigramProbability);
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+        }
+        for (int i = 0; i < SHORTCUT_COUNT; i++) {
+            final String shortcutTarget = CodePointUtils.generateWord(random, codePointSet);
+            final int shortcutProbability = random.nextInt(0xF);
+            final String word = words.get(random.nextInt(words.size()));
+            final int unigramProbability = unigramProbabilities.get(word);
+            binaryDictionary.addUnigramEntry(word, unigramProbability, shortcutTarget,
+                    shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+                    false /* isPossiblyOffensive */, 0 /* timestamp */);
+            if (shortcutTargets.containsKey(word)) {
+                final HashMap<String, Integer> shortcutTargetsOfWord = shortcutTargets.get(word);
+                shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
+            } else {
+                final HashMap<String, Integer> shortcutTargetsOfWord = new HashMap<>();
+                shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
+                shortcutTargets.put(word, shortcutTargetsOfWord);
+            }
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+        }
+
+        for (final String word : words) {
+            final WordProperty wordProperty = binaryDictionary.getWordProperty(word,
+                    false /* isBeginningOfSentence */);
+            assertEquals((int)unigramProbabilities.get(word),
+                    wordProperty.mProbabilityInfo.mProbability);
+            if (!shortcutTargets.containsKey(word)) {
+                // The word does not have shortcut targets.
+                continue;
+            }
+            assertEquals(shortcutTargets.get(word).size(), wordProperty.mShortcutTargets.size());
+            for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                final String targetCodePonts = shortcutTarget.mWord;
+                assertEquals((int)shortcutTargets.get(word).get(targetCodePonts),
+                        shortcutTarget.getProbability());
+            }
+        }
+    }
+
+    @Test
     public void testPossiblyOffensiveAttributeMaintained() {
         final BinaryDictionary binaryDictionary =
                 getEmptyBinaryDictionary(FormatSpec.VERSION403);
-        binaryDictionary.addUnigramEntry("ddd", 100, false, true, true, 0);
+        binaryDictionary.addUnigramEntry("ddd", 100, null, Dictionary.NOT_A_PROBABILITY,
+                false, true, true, 0);
         WordProperty wordProperty = binaryDictionary.getWordProperty("ddd", false);
         assertEquals(true, wordProperty.mIsPossiblyOffensive);
     }
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
index 2ae5bf5..f423769 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
@@ -16,7 +16,9 @@
 
 package com.android.inputmethod.latin.makedict;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
 import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
@@ -90,6 +92,38 @@
     }
 
     /**
+     * Compute the size of a shortcut in bytes.
+     */
+    private static int getShortcutSize(final WeightedString shortcut,
+            final HashMap<Integer, Integer> codePointToOneByteCodeMap) {
+        int size = FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE;
+        final String word = shortcut.mWord;
+        final int length = word.length();
+        for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
+            final int codePoint = word.codePointAt(i);
+            size += CharEncoding.getCharSize(codePoint, codePointToOneByteCodeMap);
+        }
+        size += FormatSpec.PTNODE_TERMINATOR_SIZE;
+        return size;
+    }
+
+    /**
+     * Compute the size of a shortcut list in bytes.
+     *
+     * This is known in advance and does not change according to position in the file
+     * like address lists do.
+     */
+    static int getShortcutListSize(final ArrayList<WeightedString> shortcutList,
+            final HashMap<Integer, Integer> codePointToOneByteCodeMap) {
+        if (null == shortcutList || shortcutList.isEmpty()) return 0;
+        int size = FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE;
+        for (final WeightedString shortcut : shortcutList) {
+            size += getShortcutSize(shortcut, codePointToOneByteCodeMap);
+        }
+        return size;
+    }
+
+    /**
      * Compute the maximum size of a PtNode, assuming 3-byte addresses for everything.
      *
      * @param ptNode the PtNode to compute the size of.
@@ -103,6 +137,8 @@
             size += FormatSpec.PTNODE_FREQUENCY_SIZE;
         }
         size += FormatSpec.PTNODE_MAX_ADDRESS_SIZE; // For children address
+        // TODO: Use codePointToOneByteCodeMap for shortcuts.
+        size += getShortcutListSize(ptNode.mShortcutTargets, null /* codePointToOneByteCodeMap */);
         if (null != ptNode.mBigrams) {
             size += (FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE
                     + FormatSpec.PTNODE_ATTRIBUTE_MAX_ADDRESS_SIZE)
@@ -205,6 +241,27 @@
         }
     }
 
+    @UsedForTesting
+    static void writeUIntToDictBuffer(final DictBuffer dictBuffer, final int value,
+            final int size) {
+        switch(size) {
+            case 4:
+                dictBuffer.put((byte) ((value >> 24) & 0xFF));
+                /* fall through */
+            case 3:
+                dictBuffer.put((byte) ((value >> 16) & 0xFF));
+                /* fall through */
+            case 2:
+                dictBuffer.put((byte) ((value >> 8) & 0xFF));
+                /* fall through */
+            case 1:
+                dictBuffer.put((byte) (value & 0xFF));
+                break;
+            default:
+                /* nop */
+        }
+    }
+
     // End utility methods
 
     // This method is responsible for finding a nice ordering of the nodes that favors run-time
@@ -334,6 +391,9 @@
                 nodeSize += getByteSize(getOffsetToTargetNodeArrayDuringUpdate(ptNodeArray,
                         nodeSize + size, ptNode.mChildren));
             }
+            // TODO: Use codePointToOneByteCodeMap for shortcuts.
+            nodeSize += getShortcutListSize(ptNode.mShortcutTargets,
+                    null /* codePointToOneByteCodeMap */);
             if (null != ptNode.mBigrams) {
                 for (WeightedString bigram : ptNode.mBigrams) {
                     final int offset = getOffsetToTargetPtNodeDuringUpdate(ptNodeArray,
@@ -508,13 +568,14 @@
      * @param hasMultipleChars whether the PtNode has multiple chars.
      * @param isTerminal whether the PtNode is terminal.
      * @param childrenAddressSize the size of a children address.
+     * @param hasShortcuts whether the PtNode has shortcuts.
      * @param hasBigrams whether the PtNode has bigrams.
      * @param isNotAWord whether the PtNode is not a word.
      * @param isPossiblyOffensive whether the PtNode is a possibly offensive entry.
      * @return the flags
      */
     static int makePtNodeFlags(final boolean hasMultipleChars, final boolean isTerminal,
-            final int childrenAddressSize, final boolean hasBigrams,
+            final int childrenAddressSize, final boolean hasShortcuts, final boolean hasBigrams,
             final boolean isNotAWord, final boolean isPossiblyOffensive) {
         byte flags = 0;
         if (hasMultipleChars) flags |= FormatSpec.FLAG_HAS_MULTIPLE_CHARS;
@@ -535,6 +596,7 @@
             default:
                 throw new RuntimeException("Node with a strange address");
         }
+        if (hasShortcuts) flags |= FormatSpec.FLAG_HAS_SHORTCUT_TARGETS;
         if (hasBigrams) flags |= FormatSpec.FLAG_HAS_BIGRAMS;
         if (isNotAWord) flags |= FormatSpec.FLAG_IS_NOT_A_WORD;
         if (isPossiblyOffensive) flags |= FormatSpec.FLAG_IS_POSSIBLY_OFFENSIVE;
@@ -544,6 +606,7 @@
     /* package */ static byte makePtNodeFlags(final PtNode node, final int childrenOffset) {
         return (byte) makePtNodeFlags(node.mChars.length > 1, node.isTerminal(),
                 getByteSize(childrenOffset),
+                node.mShortcutTargets != null && !node.mShortcutTargets.isEmpty(),
                 node.mBigrams != null && !node.mBigrams.isEmpty(),
                 node.mIsNotAWord, node.mIsPossiblyOffensive);
     }
@@ -558,7 +621,7 @@
      * @param word the second bigram, for debugging purposes
      * @return the flags
      */
-    /* package */ static int makeBigramFlags(final boolean more, final int offset,
+    /* package */ static final int makeBigramFlags(final boolean more, final int offset,
             final int bigramFrequency, final int unigramFrequency, final String word) {
         int bigramFlags = (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
                 + (offset < 0 ? FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE : 0);
@@ -627,7 +690,19 @@
         return discretizedFrequency > 0 ? discretizedFrequency : 0;
     }
 
-    /* package */ static int getChildrenPosition(final PtNode ptNode,
+    /**
+     * Makes the flag value for a shortcut.
+     *
+     * @param more whether there are more attributes after this one.
+     * @param frequency the frequency of the attribute, 0..15
+     * @return the flags
+     */
+    static final int makeShortcutFlags(final boolean more, final int frequency) {
+        return (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
+                + (frequency & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY);
+    }
+
+    /* package */ static final int getChildrenPosition(final PtNode ptNode,
             final HashMap<Integer, Integer> codePointToOneByteCodeMap) {
         int positionOfChildrenPosField = ptNode.mCachedAddressAfterUpdate
                 + getNodeHeaderSize(ptNode, codePointToOneByteCodeMap);
diff --git a/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
index 2bed44d..c97e886 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
@@ -82,6 +82,7 @@
     public static final class PtNode {
         private static final int NOT_A_TERMINAL = -1;
         final int mChars[];
+        ArrayList<WeightedString> mShortcutTargets;
         ArrayList<WeightedString> mBigrams;
         // null == mProbabilityInfo indicates this is not a terminal.
         ProbabilityInfo mProbabilityInfo;
@@ -99,23 +100,26 @@
         int mCachedAddressBeforeUpdate; // The address of this PtNode (before update)
         int mCachedAddressAfterUpdate; // The address of this PtNode (after update)
 
-        public PtNode(final int[] chars, final ArrayList<WeightedString> bigrams,
-                final ProbabilityInfo probabilityInfo, final boolean isNotAWord,
-                final boolean isPossiblyOffensive) {
+        public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
+                final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo,
+                final boolean isNotAWord, final boolean isPossiblyOffensive) {
             mChars = chars;
             mProbabilityInfo = probabilityInfo;
             mTerminalId = probabilityInfo == null ? NOT_A_TERMINAL : probabilityInfo.mProbability;
+            mShortcutTargets = shortcutTargets;
             mBigrams = bigrams;
             mChildren = null;
             mIsNotAWord = isNotAWord;
             mIsPossiblyOffensive = isPossiblyOffensive;
         }
 
-        public PtNode(final int[] chars, final ArrayList<WeightedString> bigrams,
-                final ProbabilityInfo probabilityInfo, final boolean isNotAWord,
-                final boolean isPossiblyOffensive, final PtNodeArray children) {
+        public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
+                final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo,
+                final boolean isNotAWord, final boolean isPossiblyOffensive,
+                final PtNodeArray children) {
             mChars = chars;
             mProbabilityInfo = probabilityInfo;
+            mShortcutTargets = shortcutTargets;
             mBigrams = bigrams;
             mChildren = children;
             mIsNotAWord = isNotAWord;
@@ -149,6 +153,14 @@
             return mIsPossiblyOffensive;
         }
 
+        public ArrayList<WeightedString> getShortcutTargets() {
+            // We don't want write permission to escape outside the package, so we return a copy
+            if (null == mShortcutTargets) return null;
+            final ArrayList<WeightedString> copyOfShortcutTargets =
+                    new ArrayList<>(mShortcutTargets);
+            return copyOfShortcutTargets;
+        }
+
         public ArrayList<WeightedString> getBigrams() {
             // We don't want write permission to escape outside the package, so we return a copy
             if (null == mBigrams) return null;
@@ -179,6 +191,24 @@
         }
 
         /**
+         * Gets the shortcut target for the given word. Returns null if the word is not in the
+         * shortcut list.
+         */
+        public WeightedString getShortcut(final String word) {
+            // TODO: Don't do a linear search
+            if (mShortcutTargets != null) {
+                final int size = mShortcutTargets.size();
+                for (int i = 0; i < size; ++i) {
+                    WeightedString shortcut = mShortcutTargets.get(i);
+                    if (shortcut.mWord.equals(word)) {
+                        return shortcut;
+                    }
+                }
+            }
+            return null;
+        }
+
+        /**
          * Gets the bigram for the given word.
          * Returns null if the word is not in the bigrams list.
          */
@@ -202,9 +232,27 @@
          * updated if they are higher than the existing ones.
          */
         void update(final ProbabilityInfo probabilityInfo,
+                final ArrayList<WeightedString> shortcutTargets,
                 final ArrayList<WeightedString> bigrams,
                 final boolean isNotAWord, final boolean isPossiblyOffensive) {
             mProbabilityInfo = ProbabilityInfo.max(mProbabilityInfo, probabilityInfo);
+            if (shortcutTargets != null) {
+                if (mShortcutTargets == null) {
+                    mShortcutTargets = shortcutTargets;
+                } else {
+                    final int size = shortcutTargets.size();
+                    for (int i = 0; i < size; ++i) {
+                        final WeightedString shortcut = shortcutTargets.get(i);
+                        final WeightedString existingShortcut = getShortcut(shortcut.mWord);
+                        if (existingShortcut == null) {
+                            mShortcutTargets.add(shortcut);
+                        } else {
+                            existingShortcut.mProbabilityInfo = ProbabilityInfo.max(
+                                    existingShortcut.mProbabilityInfo, shortcut.mProbabilityInfo);
+                        }
+                    }
+                }
+            }
             if (bigrams != null) {
                 if (mBigrams == null) {
                     mBigrams = bigrams;
@@ -264,16 +312,19 @@
      * Helper method to add a word as a string.
      *
      * This method adds a word to the dictionary with the given frequency. Optional
-     * lists of bigrams can be passed here. For each word inside,
+     * lists of bigrams and shortcuts can be passed here. For each word inside,
      * they will be added to the dictionary as necessary.
-     *  @param word the word to add.
+     *
+     * @param word the word to add.
      * @param probabilityInfo probability information of the word.
+     * @param shortcutTargets a list of shortcut targets for this word, or null.
      * @param isNotAWord true if this should not be considered a word (e.g. shortcut only)
      * @param isPossiblyOffensive true if this word is possibly offensive
      */
     public void add(final String word, final ProbabilityInfo probabilityInfo,
-            final boolean isNotAWord, final boolean isPossiblyOffensive) {
-        add(getCodePoints(word), probabilityInfo, isNotAWord, isPossiblyOffensive);
+            final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord,
+            final boolean isPossiblyOffensive) {
+        add(getCodePoints(word), probabilityInfo, shortcutTargets, isNotAWord, isPossiblyOffensive);
     }
 
     /**
@@ -307,7 +358,7 @@
         if (ptNode0 != null) {
             final PtNode ptNode1 = findWordInTree(mRootNodeArray, word1);
             if (ptNode1 == null) {
-                add(getCodePoints(word1), new ProbabilityInfo(0), false /* isNotAWord */,
+                add(getCodePoints(word1), new ProbabilityInfo(0), null, false /* isNotAWord */,
                         false /* isPossiblyOffensive */);
                 // The PtNode for the first word may have moved by the above insertion,
                 // if word1 and word2 share a common stem that happens not to have been
@@ -325,12 +376,15 @@
      *
      * The shortcuts, if any, have to be in the dictionary already. If they aren't,
      * an exception is thrown.
-     *  @param word the word, as an int array.
+     *
+     * @param word the word, as an int array.
      * @param probabilityInfo the probability information of the word.
-     * @param isNotAWord true if this is not a word for spellchecking purposes (shortcut only or so)
+     * @param shortcutTargets an optional list of shortcut targets for this word (null if none).
+     * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so)
      * @param isPossiblyOffensive true if this word is possibly offensive
      */
     private void add(final int[] word, final ProbabilityInfo probabilityInfo,
+            final ArrayList<WeightedString> shortcutTargets,
             final boolean isNotAWord, final boolean isPossiblyOffensive) {
         assert(probabilityInfo.mProbability <= FormatSpec.MAX_TERMINAL_FREQUENCY);
         if (word.length >= DecoderSpecificConstants.DICTIONARY_MAX_WORD_LENGTH) {
@@ -360,7 +414,7 @@
             // No node at this point to accept the word. Create one.
             final int insertionIndex = findInsertionIndex(currentNodeArray, word[charIndex]);
             final PtNode newPtNode = new PtNode(Arrays.copyOfRange(word, charIndex, word.length),
-                    null /* bigrams */, probabilityInfo, isNotAWord,
+                    shortcutTargets, null /* bigrams */, probabilityInfo, isNotAWord,
                     isPossiblyOffensive);
             currentNodeArray.mData.add(insertionIndex, newPtNode);
             if (DBG) checkStack(currentNodeArray);
@@ -371,14 +425,14 @@
                     // The new word is a prefix of an existing word, but the node on which it
                     // should end already exists as is. Since the old PtNode was not a terminal,
                     // make it one by filling in its frequency and other attributes
-                    currentPtNode.update(probabilityInfo, null, isNotAWord,
+                    currentPtNode.update(probabilityInfo, shortcutTargets, null, isNotAWord,
                             isPossiblyOffensive);
                 } else {
                     // The new word matches the full old word and extends past it.
                     // We only have to create a new node and add it to the end of this.
                     final PtNode newNode = new PtNode(
                             Arrays.copyOfRange(word, charIndex + differentCharIndex, word.length),
-                                    null /* bigrams */, probabilityInfo,
+                                    shortcutTargets, null /* bigrams */, probabilityInfo,
                                     isNotAWord, isPossiblyOffensive);
                     currentPtNode.mChildren = new PtNodeArray();
                     currentPtNode.mChildren.mData.add(newNode);
@@ -387,7 +441,7 @@
                 if (0 == differentCharIndex) {
                     // Exact same word. Update the frequency if higher. This will also add the
                     // new shortcuts to the existing shortcut list if it already exists.
-                    currentPtNode.update(probabilityInfo, null,
+                    currentPtNode.update(probabilityInfo, shortcutTargets, null,
                             currentPtNode.mIsNotAWord && isNotAWord,
                             currentPtNode.mIsPossiblyOffensive || isPossiblyOffensive);
                 } else {
@@ -396,7 +450,7 @@
                     PtNodeArray newChildren = new PtNodeArray();
                     final PtNode newOldWord = new PtNode(
                             Arrays.copyOfRange(currentPtNode.mChars, differentCharIndex,
-                                    currentPtNode.mChars.length),
+                                    currentPtNode.mChars.length), currentPtNode.mShortcutTargets,
                             currentPtNode.mBigrams, currentPtNode.mProbabilityInfo,
                             currentPtNode.mIsNotAWord, currentPtNode.mIsPossiblyOffensive,
                             currentPtNode.mChildren);
@@ -406,17 +460,17 @@
                     if (charIndex + differentCharIndex >= word.length) {
                         newParent = new PtNode(
                                 Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
-                                null /* bigrams */, probabilityInfo,
+                                shortcutTargets, null /* bigrams */, probabilityInfo,
                                 isNotAWord, isPossiblyOffensive, newChildren);
                     } else {
                         newParent = new PtNode(
                                 Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
-                                null /* bigrams */, null /* probabilityInfo */,
-                                false /* isNotAWord */, false /* isPossiblyOffensive */,
-                                newChildren);
+                                null /* shortcutTargets */, null /* bigrams */,
+                                null /* probabilityInfo */, false /* isNotAWord */,
+                                false /* isPossiblyOffensive */, newChildren);
                         final PtNode newWord = new PtNode(Arrays.copyOfRange(word,
                                 charIndex + differentCharIndex, word.length),
-                                null /* bigrams */, probabilityInfo,
+                                shortcutTargets, null /* bigrams */, probabilityInfo,
                                 isNotAWord, isPossiblyOffensive);
                         final int addIndex = word[charIndex + differentCharIndex]
                                 > currentPtNode.mChars[differentCharIndex] ? 1 : 0;
@@ -478,7 +532,7 @@
     private static int findInsertionIndex(final PtNodeArray nodeArray, int character) {
         final ArrayList<PtNode> data = nodeArray.mData;
         final PtNode reference = new PtNode(new int[] { character },
-                null /* bigrams */, null /* probabilityInfo */,
+                null /* shortcutTargets */, null /* bigrams */, null /* probabilityInfo */,
                 false /* isNotAWord */, false /* isPossiblyOffensive */);
         int result = Collections.binarySearch(data, reference, PTNODE_COMPARATOR);
         return result >= 0 ? result : -result - 1;
@@ -615,7 +669,8 @@
                     }
                     if (currentPtNode.isTerminal()) {
                         return new WordProperty(mCurrentString.toString(),
-                                currentPtNode.mProbabilityInfo, currentPtNode.mBigrams,
+                                currentPtNode.mProbabilityInfo,
+                                currentPtNode.mShortcutTargets, currentPtNode.mBigrams,
                                 currentPtNode.mIsNotAWord, currentPtNode.mIsPossiblyOffensive);
                     }
                 } else {
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
index 746431d..63ea89c 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
@@ -84,7 +84,7 @@
         // Insert unigrams into the fusion dictionary.
         for (final WordProperty wordProperty : wordProperties) {
             fusionDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo,
-                    wordProperty.mIsNotAWord,
+                    wordProperty.mShortcutTargets, wordProperty.mIsNotAWord,
                     wordProperty.mIsPossiblyOffensive);
         }
         // Insert bigrams into the fusion dictionary.