diff --git a/example/lib/main.dart b/example/lib/main.dart index 9a706f46..e77fc40f 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -168,12 +168,6 @@ class _ChatScreenState extends State { cameraIconColor: theme.cameraIconColor, galleryIconColor: theme.galleryIconColor, ), - replyMessageColor: theme.replyMessageColor, - defaultSendButtonColor: theme.sendButtonColor, - replyDialogColor: theme.replyDialogColor, - replyTitleColor: theme.replyTitleColor, - textFieldBackgroundColor: theme.textFieldBackgroundColor, - closeIconColor: theme.closeIconColor, textFieldConfig: TextFieldConfiguration( onMessageTyping: (status) { /// Do with status diff --git a/lib/src/controller/chat_controller.dart b/lib/src/controller/chat_controller.dart index 0046746c..a1ff7a20 100644 --- a/lib/src/controller/chat_controller.dart +++ b/lib/src/controller/chat_controller.dart @@ -80,12 +80,17 @@ class ChatController { StreamController> messageStreamController = StreamController(); /// Used to dispose stream. - void dispose() => messageStreamController.close(); + void dispose() { + _replySuggestion.dispose(); + messageStreamController.close(); + } /// Used to add message in message list. void addMessage(Message message) { initialMessageList.add(message); - messageStreamController.sink.add(initialMessageList); + if (!messageStreamController.isClosed) { + messageStreamController.sink.add(initialMessageList); + } } /// Used to add reply suggestions. @@ -136,11 +141,14 @@ class ChatController { /// Function to scroll to last messages in chat view void scrollToLastMessage() => Timer( const Duration(milliseconds: 300), - () => scrollController.animateTo( - scrollController.position.minScrollExtent, - curve: Curves.easeIn, - duration: const Duration(milliseconds: 300), - ), + () { + if (!scrollController.hasClients) return; + scrollController.animateTo( + scrollController.position.minScrollExtent, + curve: Curves.easeIn, + duration: const Duration(milliseconds: 300), + ); + }, ); /// Function for loading data while pagination. diff --git a/lib/src/extensions/extensions.dart b/lib/src/extensions/extensions.dart index 99c0a53f..0ab9a7b5 100644 --- a/lib/src/extensions/extensions.dart +++ b/lib/src/extensions/extensions.dart @@ -129,7 +129,8 @@ extension ChatViewStateTitleExtension on String? { /// Extension on State for accessing inherited widget. extension StatefulWidgetExtension on State { - ChatViewInheritedWidget? get provide => ChatViewInheritedWidget.of(context); + ChatViewInheritedWidget? get provide => + mounted ? ChatViewInheritedWidget.of(context) : null; ReplySuggestionsConfig? get suggestionsConfig => SuggestionsConfigIW.of(context)?.suggestionsConfig; diff --git a/lib/src/models/chat_bubble_configuration.dart b/lib/src/models/chat_bubble_configuration.dart index a78e023e..78e266c8 100644 --- a/lib/src/models/chat_bubble_configuration.dart +++ b/lib/src/models/chat_bubble_configuration.dart @@ -35,6 +35,12 @@ class ChatBubbleConfiguration { /// Used for giving maximum width of chat bubble. final double? maxWidth; + /// Used for insetting the messages from the bottom according to text field height. + final double? additionalBottomInsetIfMessageIsLast; + + /// Used for insetting the messages from the bottom more if the user is about to reply to another message. + final double? additionalBottomInsetIfReplyHeaderIsThere; + /// Provides callback when user long press on chat bubble. final Duration? longPressAnimationDuration; @@ -53,6 +59,8 @@ class ChatBubbleConfiguration { this.padding, this.margin, this.maxWidth, + this.additionalBottomInsetIfMessageIsLast, + this.additionalBottomInsetIfReplyHeaderIsThere, this.longPressAnimationDuration, this.inComingChatBubbleConfig, this.outgoingChatBubbleConfig, diff --git a/lib/src/models/message_configuration.dart b/lib/src/models/message_configuration.dart index 97bceab2..4b15fa44 100644 --- a/lib/src/models/message_configuration.dart +++ b/lib/src/models/message_configuration.dart @@ -21,30 +21,47 @@ */ import 'package:chatview/src/models/models.dart'; import 'package:chatview/src/models/voice_message_configuration.dart'; +import 'package:chatview/src/widgets/message_view.dart'; import 'package:flutter/material.dart'; import '../values/typedefs.dart'; class MessageConfiguration { - /// Provides configuration of image message appearance. - final ImageMessageConfiguration? imageMessageConfig; - - /// Provides configuration of image message appearance. + /// Provides configuration of message reaction. final MessageReactionConfiguration? messageReactionConfig; /// Provides configuration of emoji messages appearance. final EmojiMessageConfiguration? emojiMessageConfig; - /// Provides builder to create view for custom messages. - final Widget Function(Message)? customMessageBuilder; + /// Provides configuration of image message appearance. + final ImageMessageConfiguration? imageMessageConfig; /// Configurations for voice message bubble final VoiceMessageConfiguration? voiceMessageConfig; + /// Provides builder to create view for emoji messages. + final Widget Function(MessageView)? emojiMessageBuilder; + + /// Provides builder to create view for image messages. + final Widget Function(MessageView)? imageMessageBuilder; + + /// Provides builder to create view for text messages. + final Widget Function(MessageView)? textMessageBuilder; + + /// Provides builder to create view for voice messages. + final Widget Function(MessageView)? voiceMessageBuilder; + + /// Provides builder to create view for custom messages. + final Widget Function(MessageView)? customMessageBuilder; + /// To customize reply view for custom message type final CustomMessageReplyViewBuilder? customMessageReplyViewBuilder; const MessageConfiguration({ + this.imageMessageBuilder, + this.textMessageBuilder, + this.emojiMessageBuilder, + this.voiceMessageBuilder, this.imageMessageConfig, this.messageReactionConfig, this.emojiMessageConfig, diff --git a/lib/src/models/profile_circle.dart b/lib/src/models/profile_circle.dart index 88614a94..b4955971 100644 --- a/lib/src/models/profile_circle.dart +++ b/lib/src/models/profile_circle.dart @@ -37,7 +37,7 @@ class ProfileCircleConfiguration { final double? bottomPadding; /// Used for give circle radius to profile circle - final double? circleRadius; + final double circleRadius; /// Provides callback when user tap on profile circle. final void Function(ChatUser)? onAvatarTap; @@ -62,11 +62,11 @@ class ProfileCircleConfiguration { networkImageProgressIndicatorBuilder; const ProfileCircleConfiguration({ + this.circleRadius = 12, this.onAvatarTap, this.padding, this.profileImageUrl, this.bottomPadding, - this.circleRadius, this.onAvatarLongPress, this.imageType = ImageType.network, this.defaultAvatarImage = profileImage, diff --git a/lib/src/models/send_message_configuration.dart b/lib/src/models/send_message_configuration.dart index 40d97204..d1250c50 100644 --- a/lib/src/models/send_message_configuration.dart +++ b/lib/src/models/send_message_configuration.dart @@ -30,7 +30,7 @@ import '../values/typedefs.dart'; class SendMessageConfiguration { /// Used to give background color to text field. - final Color? textFieldBackgroundColor; + final Color textFieldBackgroundColor; /// Used to give color to send button. final Color? defaultSendButtonColor; @@ -39,16 +39,16 @@ class SendMessageConfiguration { final Widget? sendButtonIcon; /// Used to give reply dialog color. - final Color? replyDialogColor; + final Color replyDialogColor; /// Used to give color to title of reply pop-up. - final Color? replyTitleColor; + final Color replyTitleColor; /// Used to give color to reply message. - final Color? replyMessageColor; + final Color replyMessageColor; /// Used to give color to close icon in reply pop-up. - final Color? closeIconColor; + final Color closeIconColor; /// Provides configuration of image picker functionality. final ImagePickerIconsConfiguration? imagePickerIconsConfig; @@ -57,7 +57,7 @@ class SendMessageConfiguration { final ImagePickerConfiguration? imagePickerConfiguration; /// Provides configuration of text field. - final TextFieldConfiguration? textFieldConfig; + final TextFieldConfiguration textFieldConfig; /// Enable/disable voice recording. Enabled by default. final bool allowRecordingVoice; @@ -77,20 +77,23 @@ class SendMessageConfiguration { /// Configuration for cancel voice recording final CancelRecordConfiguration? cancelRecordConfiguration; + bool get allowImageSending => + enableCameraImagePicker || enableGalleryImagePicker; + const SendMessageConfiguration({ - this.textFieldConfig, - this.textFieldBackgroundColor, + this.textFieldConfig = const TextFieldConfiguration(), + this.textFieldBackgroundColor = Colors.white, this.imagePickerIconsConfig, this.imagePickerConfiguration, this.defaultSendButtonColor, this.sendButtonIcon, - this.replyDialogColor, - this.replyTitleColor, - this.replyMessageColor, - this.closeIconColor, + this.replyDialogColor = const Color.fromRGBO(238, 238, 238, 1), + this.replyTitleColor = Colors.deepPurple, + this.replyMessageColor = Colors.black, + this.closeIconColor = Colors.black, this.allowRecordingVoice = true, - this.enableCameraImagePicker = true, this.enableGalleryImagePicker = true, + this.enableCameraImagePicker = true, this.voiceRecordingConfiguration, this.micIconColor, this.cancelRecordConfiguration, @@ -118,6 +121,32 @@ class ImagePickerIconsConfiguration { }); } +class ImagePickerConfiguration { + /// Used to give max width of image. + final double? maxWidth; + + /// Used to give max height of image. + final double? maxHeight; + + /// Used to give image quality. + final int? imageQuality; + + /// Preferred camera device to pick image from. + final CameraDevice? preferredCameraDevice; + + /// Callback when image is picked from camera or gallery, + /// we can perform our task on image like adding crop options and return new image path + final Future Function(String? path)? onImagePicked; + + const ImagePickerConfiguration({ + this.maxWidth, + this.maxHeight, + this.imageQuality, + this.preferredCameraDevice, + this.onImagePicked, + }); +} + class TextFieldConfiguration { /// Used to give max lines in text field. final int? maxLines; @@ -140,6 +169,9 @@ class TextFieldConfiguration { /// Used to give text style of actual text in text field. final TextStyle? textStyle; + /// Used to give a border to the text field. + final BoxBorder? border; + /// Used to give border radius in text field. final BorderRadius? borderRadius; @@ -171,6 +203,7 @@ class TextFieldConfiguration { const TextFieldConfiguration({ this.contentPadding, this.maxLines, + this.border, this.borderRadius, this.hintText, this.hintStyle, @@ -187,32 +220,6 @@ class TextFieldConfiguration { }); } -class ImagePickerConfiguration { - /// Used to give max width of image. - final double? maxWidth; - - /// Used to give max height of image. - final double? maxHeight; - - /// Used to give image quality. - final int? imageQuality; - - /// Preferred camera device to pick image from. - final CameraDevice? preferredCameraDevice; - - /// Callback when image is picked from camera or gallery, - /// we can perform our task on image like adding crop options and return new image path - final Future Function(String? path)? onImagePicked; - - const ImagePickerConfiguration({ - this.maxWidth, - this.maxHeight, - this.imageQuality, - this.preferredCameraDevice, - this.onImagePicked, - }); -} - class VoiceRecordingConfiguration { /// Styling configuration for the recorder widget as well as /// configuring the audio recording quality. diff --git a/lib/src/models/swipe_to_reply_configuration.dart b/lib/src/models/swipe_to_reply_configuration.dart index 44f7e102..8663569a 100644 --- a/lib/src/models/swipe_to_reply_configuration.dart +++ b/lib/src/models/swipe_to_reply_configuration.dart @@ -19,25 +19,20 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +import 'package:chatview/chatview.dart'; import 'package:flutter/material.dart'; class SwipeToReplyConfiguration { /// Used to give color of reply icon while swipe to reply. final Color? replyIconColor; - /// Used to give animation duration while swipe to reply. - final Duration? animationDuration; - - /// Provides callback when user swipe chat bubble from left side. - final void Function(String message, String sendBy)? onLeftSwipe; - - /// Provides callback when user swipe chat bubble from right side. - final void Function(String message, String sendBy)? onRightSwipe; + /// Provides callback when user wants to reply to a message. + /// If this function returns false, the reply initialization is + /// prevented. + final bool? Function(Message message)? onInitReply; const SwipeToReplyConfiguration({ this.replyIconColor, - this.animationDuration, - this.onRightSwipe, - this.onLeftSwipe, + this.onInitReply, }); } diff --git a/lib/src/models/voice_message_configuration.dart b/lib/src/models/voice_message_configuration.dart index 8d9c5e28..ce81fb13 100644 --- a/lib/src/models/voice_message_configuration.dart +++ b/lib/src/models/voice_message_configuration.dart @@ -4,21 +4,23 @@ import 'package:flutter/material.dart'; /// A configuration model class for voice message bubble. class VoiceMessageConfiguration { const VoiceMessageConfiguration({ - this.playerWaveStyle, + this.playerWaveStyle = const PlayerWaveStyle(scaleFactor: 70), this.padding = const EdgeInsets.symmetric(horizontal: 8), this.margin, this.decoration, - this.animationCurve, - this.animationDuration, - this.pauseIcon, + this.animationCurve = Curves.easeIn, + this.animationDuration = const Duration(milliseconds: 500), this.playIcon, + this.playIconColor, + this.pauseIcon, + this.pauseIconColor, this.waveformMargin, - this.waveformPadding, + this.waveformPadding = const EdgeInsets.only(right: 10), this.enableSeekGesture = true, }); /// Applies style to waveform. - final PlayerWaveStyle? playerWaveStyle; + final PlayerWaveStyle playerWaveStyle; /// Applies padding to message bubble. final EdgeInsets padding; @@ -27,7 +29,7 @@ class VoiceMessageConfiguration { final EdgeInsets? margin; /// Applies padding to waveform. - final EdgeInsets? waveformPadding; + final EdgeInsets waveformPadding; /// Applies padding to waveform. final EdgeInsets? waveformMargin; @@ -36,17 +38,23 @@ class VoiceMessageConfiguration { final BoxDecoration? decoration; /// Duration for grow animation for waveform. Default to 500 ms. - final Duration? animationDuration; + final Duration animationDuration; /// Curve for for grow animation for waveform. Default to Curve.easeIn. - final Curve? animationCurve; + final Curve animationCurve; /// Icon for playing the audio. final Icon? playIcon; + /// Color for the playIcon if it is not overridden + final Color? playIconColor; + /// Icon for pausing audio final Icon? pauseIcon; + /// Color for the pauseIcon if it is not overridden + final Color? pauseIconColor; + /// Enable/disable seeking with gestures. Enabled by default. final bool enableSeekGesture; } diff --git a/lib/src/utils/constants/constants.dart b/lib/src/utils/constants/constants.dart index 31f8dde8..1946bac5 100644 --- a/lib/src/utils/constants/constants.dart +++ b/lib/src/utils/constants/constants.dart @@ -47,7 +47,6 @@ const double bottomPadding1 = 10; const double bottomPadding2 = 22; const double bottomPadding3 = 12; const double bottomPadding4 = 6; -const double leftPadding = 9; const double maxWidth = 350; const int opacity = 18; const double verticalPadding = 4.0; diff --git a/lib/src/utils/emoji.dart b/lib/src/utils/emoji.dart new file mode 100644 index 00000000..730bf07d --- /dev/null +++ b/lib/src/utils/emoji.dart @@ -0,0 +1,24178 @@ +// Generated according to https://github.com/alfalcon90/unicode-emoji-dart +final regex = RegExp( + r"[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)", + unicode: false, + multiLine: false, + caseSensitive: true, + dotAll: false, +); + +enum EmojiGroup { + smileysEmotion, + peopleBody, + animalsNature, + foodDrink, + travelPlaces, + activities, + objects, + symbols, + flags, +} + +class Emoji { + final String char; + final List keywords; + final String name; + final String slug; + final EmojiGroup group; + final double emojiVersion; + final double unicodeVersion; + final bool skinToneSupport; + final double? skinToneSupportUnicodeVersion; + + Emoji({ + required this.char, + required this.keywords, + required this.name, + required this.slug, + required this.group, + required this.emojiVersion, + required this.unicodeVersion, + required this.skinToneSupport, + this.skinToneSupportUnicodeVersion, + }); + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is Emoji && other.char == char; + } + + @override + int get hashCode => char.hashCode; +} + +final emojis = { + "๐Ÿ˜€": Emoji( + char: "๐Ÿ˜€", + keywords: ["grinning_face", "face", "smile", "happy", "joy", ":D", "grin"], + name: "grinning face", + slug: "grinning_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ƒ": Emoji( + char: "๐Ÿ˜ƒ", + keywords: [ + "grinning_face_with_big_eyes", + "face", + "happy", + "joy", + "haha", + ":D", + ":)", + "smile", + "funny" + ], + name: "grinning face with big eyes", + slug: "grinning_face_with_big_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜„": Emoji( + char: "๐Ÿ˜„", + keywords: [ + "grinning_face_with_smiling_eyes", + "face", + "happy", + "joy", + "funny", + "haha", + "laugh", + "like", + ":D", + ":)", + "smile" + ], + name: "grinning face with smiling eyes", + slug: "grinning_face_with_smiling_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: [ + "beaming_face_with_smiling_eyes", + "face", + "happy", + "smile", + "joy", + "kawaii" + ], + name: "beaming face with smiling eyes", + slug: "beaming_face_with_smiling_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜†": Emoji( + char: "๐Ÿ˜†", + keywords: [ + "grinning_squinting_face", + "happy", + "joy", + "lol", + "satisfied", + "haha", + "face", + "glad", + "XD", + "laugh" + ], + name: "grinning squinting face", + slug: "grinning_squinting_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜…": Emoji( + char: "๐Ÿ˜…", + keywords: [ + "grinning_face_with_sweat", + "face", + "hot", + "happy", + "laugh", + "sweat", + "smile", + "relief" + ], + name: "grinning face with sweat", + slug: "grinning_face_with_sweat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคฃ": Emoji( + char: "๐Ÿคฃ", + keywords: [ + "rolling_on_the_floor_laughing", + "face", + "rolling", + "floor", + "laughing", + "lol", + "haha", + "rofl" + ], + name: "rolling on the floor laughing", + slug: "rolling_on_the_floor_laughing", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ˜‚": Emoji( + char: "๐Ÿ˜‚", + keywords: [ + "face_with_tears_of_joy", + "face", + "cry", + "tears", + "weep", + "happy", + "happytears", + "haha" + ], + name: "face with tears of joy", + slug: "face_with_tears_of_joy", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™‚": Emoji( + char: "๐Ÿ™‚", + keywords: ["slightly_smiling_face", "face", "smile"], + name: "slightly smiling face", + slug: "slightly_smiling_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ™ƒ": Emoji( + char: "๐Ÿ™ƒ", + keywords: ["upside_down_face", "face", "flipped", "silly", "smile"], + name: "upside-down face", + slug: "upside_down_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซ ": Emoji( + char: "๐Ÿซ ", + keywords: ["melting face", "hot", "heat"], + name: "melting face", + slug: "melting_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ˜‰": Emoji( + char: "๐Ÿ˜‰", + keywords: [ + "winking_face", + "face", + "happy", + "mischievous", + "secret", + ";)", + "smile", + "eye" + ], + name: "winking face", + slug: "winking_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜Š": Emoji( + char: "๐Ÿ˜Š", + keywords: [ + "smiling_face_with_smiling_eyes", + "face", + "smile", + "happy", + "flushed", + "crush", + "embarrassed", + "shy", + "joy" + ], + name: "smiling face with smiling eyes", + slug: "smiling_face_with_smiling_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜‡": Emoji( + char: "๐Ÿ˜‡", + keywords: [ + "smiling_face_with_halo", + "face", + "angel", + "heaven", + "halo", + "innocent" + ], + name: "smiling face with halo", + slug: "smiling_face_with_halo", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅฐ": Emoji( + char: "๐Ÿฅฐ", + keywords: [ + "smiling_face_with_hearts", + "face", + "love", + "like", + "affection", + "valentines", + "infatuation", + "crush", + "hearts", + "adore" + ], + name: "smiling face with hearts", + slug: "smiling_face_with_hearts", + group: EmojiGroup.smileysEmotion, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: [ + "smiling_face_with_heart_eyes", + "face", + "love", + "like", + "affection", + "valentines", + "infatuation", + "crush", + "heart" + ], + name: "smiling face with heart-eyes", + slug: "smiling_face_with_heart_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคฉ": Emoji( + char: "๐Ÿคฉ", + keywords: ["star_struck", "face", "smile", "starry", "eyes", "grinning"], + name: "star-struck", + slug: "star_struck", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ˜˜": Emoji( + char: "๐Ÿ˜˜", + keywords: [ + "face_blowing_a_kiss", + "face", + "love", + "like", + "affection", + "valentines", + "infatuation", + "kiss" + ], + name: "face blowing a kiss", + slug: "face_blowing_a_kiss", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜—": Emoji( + char: "๐Ÿ˜—", + keywords: [ + "kissing_face", + "love", + "like", + "face", + "3", + "valentines", + "infatuation", + "kiss" + ], + name: "kissing face", + slug: "kissing_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ˜บ๏ธ": Emoji( + char: "โ˜บ๏ธ", + keywords: ["smiling_face", "face", "blush", "massage", "happiness"], + name: "smiling face", + slug: "smiling_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜š": Emoji( + char: "๐Ÿ˜š", + keywords: [ + "kissing_face_with_closed_eyes", + "face", + "love", + "like", + "affection", + "valentines", + "infatuation", + "kiss" + ], + name: "kissing face with closed eyes", + slug: "kissing_face_with_closed_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜™": Emoji( + char: "๐Ÿ˜™", + keywords: [ + "kissing_face_with_smiling_eyes", + "face", + "affection", + "valentines", + "infatuation", + "kiss" + ], + name: "kissing face with smiling eyes", + slug: "kissing_face_with_smiling_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅฒ": Emoji( + char: "๐Ÿฅฒ", + keywords: ["smiling face with tear", "sad", "cry", "pretend"], + name: "smiling face with tear", + slug: "smiling_face_with_tear", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ˜‹": Emoji( + char: "๐Ÿ˜‹", + keywords: [ + "face_savoring_food", + "happy", + "joy", + "tongue", + "smile", + "face", + "silly", + "yummy", + "nom", + "delicious", + "savouring" + ], + name: "face savoring food", + slug: "face_savoring_food", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜›": Emoji( + char: "๐Ÿ˜›", + keywords: [ + "face_with_tongue", + "face", + "prank", + "childish", + "playful", + "mischievous", + "smile", + "tongue" + ], + name: "face with tongue", + slug: "face_with_tongue", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜œ": Emoji( + char: "๐Ÿ˜œ", + keywords: [ + "winking_face_with_tongue", + "face", + "prank", + "childish", + "playful", + "mischievous", + "smile", + "wink", + "tongue" + ], + name: "winking face with tongue", + slug: "winking_face_with_tongue", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคช": Emoji( + char: "๐Ÿคช", + keywords: ["zany_face", "face", "goofy", "crazy"], + name: "zany face", + slug: "zany_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: [ + "squinting_face_with_tongue", + "face", + "prank", + "playful", + "mischievous", + "smile", + "tongue" + ], + name: "squinting face with tongue", + slug: "squinting_face_with_tongue", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿค‘": Emoji( + char: "๐Ÿค‘", + keywords: ["money_mouth_face", "face", "rich", "dollar", "money"], + name: "money-mouth face", + slug: "money_mouth_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿค—": Emoji( + char: "๐Ÿค—", + keywords: ["hugging_face", "face", "smile", "hug"], + name: "smiling face with open hands", + slug: "smiling_face_with_open_hands", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿคญ": Emoji( + char: "๐Ÿคญ", + keywords: [ + "face_with_hand_over_mouth", + "face", + "whoops", + "shock", + "surprise" + ], + name: "face with hand over mouth", + slug: "face_with_hand_over_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿซข": Emoji( + char: "๐Ÿซข", + keywords: [ + "face with open eyes and hand over mouth", + "silence", + "secret", + "shock", + "surprise" + ], + name: "face with open eyes and hand over mouth", + slug: "face_with_open_eyes_and_hand_over_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿซฃ": Emoji( + char: "๐Ÿซฃ", + keywords: [ + "face with peeking eye", + "scared", + "frightening", + "embarrassing", + "shy" + ], + name: "face with peeking eye", + slug: "face_with_peeking_eye", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿคซ": Emoji( + char: "๐Ÿคซ", + keywords: ["shushing_face", "face", "quiet", "shhh"], + name: "shushing face", + slug: "shushing_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿค”": Emoji( + char: "๐Ÿค”", + keywords: ["thinking_face", "face", "hmmm", "think", "consider"], + name: "thinking face", + slug: "thinking_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซก": Emoji( + char: "๐Ÿซก", + keywords: ["saluting face", "respect", "salute"], + name: "saluting face", + slug: "saluting_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["zipper_mouth_face", "face", "sealed", "zipper", "secret"], + name: "zipper-mouth face", + slug: "zipper_mouth_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿคจ": Emoji( + char: "๐Ÿคจ", + keywords: [ + "face_with_raised_eyebrow", + "face", + "distrust", + "scepticism", + "disapproval", + "disbelief", + "surprise" + ], + name: "face with raised eyebrow", + slug: "face_with_raised_eyebrow", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: ["neutral_face", "indifference", "meh", ":|", "neutral"], + name: "neutral face", + slug: "neutral_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ˜‘": Emoji( + char: "๐Ÿ˜‘", + keywords: [ + "expressionless_face", + "face", + "indifferent", + "-_-", + "meh", + "deadpan" + ], + name: "expressionless face", + slug: "expressionless_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ถ": Emoji( + char: "๐Ÿ˜ถ", + keywords: ["face_without_mouth", "face", "hellokitty"], + name: "face without mouth", + slug: "face_without_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซฅ": Emoji( + char: "๐Ÿซฅ", + keywords: [ + "dotted line face", + "invisible", + "lonely", + "isolation", + "depression" + ], + name: "dotted line face", + slug: "dotted_line_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ˜ถโ€๐ŸŒซ๏ธ": Emoji( + char: "๐Ÿ˜ถโ€๐ŸŒซ๏ธ", + keywords: ["face in clouds", "shower", "steam", "dream"], + name: "face in clouds", + slug: "face_in_clouds", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: [ + "smirking_face", + "face", + "smile", + "mean", + "prank", + "smug", + "sarcasm" + ], + name: "smirking face", + slug: "smirking_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜’": Emoji( + char: "๐Ÿ˜’", + keywords: [ + "unamused_face", + "indifference", + "bored", + "straight face", + "serious", + "sarcasm", + "unimpressed", + "skeptical", + "dubious", + "side_eye" + ], + name: "unamused face", + slug: "unamused_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™„": Emoji( + char: "๐Ÿ™„", + keywords: ["face_with_rolling_eyes", "face", "eyeroll", "frustrated"], + name: "face with rolling eyes", + slug: "face_with_rolling_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ฌ": Emoji( + char: "๐Ÿ˜ฌ", + keywords: ["grimacing_face", "face", "grimace", "teeth"], + name: "grimacing face", + slug: "grimacing_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ฎโ€๐Ÿ’จ": Emoji( + char: "๐Ÿ˜ฎโ€๐Ÿ’จ", + keywords: ["face exhaling", "relieve", "relief", "tired", "sigh"], + name: "face exhaling", + slug: "face_exhaling", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: false, + ), + "๐Ÿคฅ": Emoji( + char: "๐Ÿคฅ", + keywords: ["lying_face", "face", "lie", "pinocchio"], + name: "lying face", + slug: "lying_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿซจ": Emoji( + char: "๐Ÿซจ", + keywords: ["shaking face", "dizzy", "shock", "blurry", "earthquake"], + name: "shaking face", + slug: "shaking_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿ˜Œ": Emoji( + char: "๐Ÿ˜Œ", + keywords: [ + "relieved_face", + "face", + "relaxed", + "phew", + "massage", + "happiness" + ], + name: "relieved face", + slug: "relieved_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜”": Emoji( + char: "๐Ÿ˜”", + keywords: ["pensive_face", "face", "sad", "depressed", "upset"], + name: "pensive face", + slug: "pensive_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ช": Emoji( + char: "๐Ÿ˜ช", + keywords: ["sleepy_face", "face", "tired", "rest", "nap"], + name: "sleepy face", + slug: "sleepy_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคค": Emoji( + char: "๐Ÿคค", + keywords: ["drooling_face", "face"], + name: "drooling face", + slug: "drooling_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ˜ด": Emoji( + char: "๐Ÿ˜ด", + keywords: ["sleeping_face", "face", "tired", "sleepy", "night", "zzz"], + name: "sleeping face", + slug: "sleeping_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ท": Emoji( + char: "๐Ÿ˜ท", + keywords: [ + "face_with_medical_mask", + "face", + "sick", + "ill", + "disease", + "covid" + ], + name: "face with medical mask", + slug: "face_with_medical_mask", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿค’": Emoji( + char: "๐Ÿค’", + keywords: [ + "face_with_thermometer", + "sick", + "temperature", + "thermometer", + "cold", + "fever", + "covid" + ], + name: "face with thermometer", + slug: "face_with_thermometer", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿค•": Emoji( + char: "๐Ÿค•", + keywords: [ + "face_with_head_bandage", + "injured", + "clumsy", + "bandage", + "hurt" + ], + name: "face with head-bandage", + slug: "face_with_head_bandage", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿคข": Emoji( + char: "๐Ÿคข", + keywords: [ + "nauseated_face", + "face", + "vomit", + "gross", + "green", + "sick", + "throw up", + "ill" + ], + name: "nauseated face", + slug: "nauseated_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿคฎ": Emoji( + char: "๐Ÿคฎ", + keywords: ["face_vomiting", "face", "sick"], + name: "face vomiting", + slug: "face_vomiting", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿคง": Emoji( + char: "๐Ÿคง", + keywords: [ + "sneezing_face", + "face", + "gesundheit", + "sneeze", + "sick", + "allergy" + ], + name: "sneezing face", + slug: "sneezing_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅต": Emoji( + char: "๐Ÿฅต", + keywords: ["hot_face", "face", "feverish", "heat", "red", "sweating"], + name: "hot face", + slug: "hot_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅถ": Emoji( + char: "๐Ÿฅถ", + keywords: [ + "cold_face", + "face", + "blue", + "freezing", + "frozen", + "frostbite", + "icicles" + ], + name: "cold face", + slug: "cold_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅด": Emoji( + char: "๐Ÿฅด", + keywords: ["woozy_face", "face", "dizzy", "intoxicated", "tipsy", "wavy"], + name: "woozy face", + slug: "woozy_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ˜ต": Emoji( + char: "๐Ÿ˜ต", + keywords: ["dizzy_face", "spent", "unconscious", "xox", "dizzy"], + name: "face with crossed-out eyes", + slug: "face_with_crossed_out_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ตโ€๐Ÿ’ซ": Emoji( + char: "๐Ÿ˜ตโ€๐Ÿ’ซ", + keywords: [ + "face with spiral eyes", + "sick", + "ill", + "confused", + "nauseous", + "nausea" + ], + name: "face with spiral eyes", + slug: "face_with_spiral_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: false, + ), + "๐Ÿคฏ": Emoji( + char: "๐Ÿคฏ", + keywords: ["exploding_head", "face", "shocked", "mind", "blown"], + name: "exploding head", + slug: "exploding_head", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿค ": Emoji( + char: "๐Ÿค ", + keywords: ["cowboy_hat_face", "face", "cowgirl", "hat"], + name: "cowboy hat face", + slug: "cowboy_hat_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅณ": Emoji( + char: "๐Ÿฅณ", + keywords: ["partying_face", "face", "celebration", "woohoo"], + name: "partying face", + slug: "partying_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅธ": Emoji( + char: "๐Ÿฅธ", + keywords: ["disguised face", "pretent", "brows", "glasses", "moustache"], + name: "disguised face", + slug: "disguised_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ˜Ž": Emoji( + char: "๐Ÿ˜Ž", + keywords: [ + "smiling_face_with_sunglasses", + "face", + "cool", + "smile", + "summer", + "beach", + "sunglass" + ], + name: "smiling face with sunglasses", + slug: "smiling_face_with_sunglasses", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿค“": Emoji( + char: "๐Ÿค“", + keywords: ["nerd_face", "face", "nerdy", "geek", "dork"], + name: "nerd face", + slug: "nerd_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["face_with_monocle", "face", "stuffy", "wealthy"], + name: "face with monocle", + slug: "face_with_monocle", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ˜•": Emoji( + char: "๐Ÿ˜•", + keywords: [ + "confused_face", + "face", + "indifference", + "huh", + "weird", + "hmmm", + ":/" + ], + name: "confused face", + slug: "confused_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซค": Emoji( + char: "๐Ÿซค", + keywords: [ + "face with diagonal mouth", + "skeptic", + "confuse", + "frustrated", + "indifferent" + ], + name: "face with diagonal mouth", + slug: "face_with_diagonal_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ˜Ÿ": Emoji( + char: "๐Ÿ˜Ÿ", + keywords: ["worried_face", "face", "concern", "nervous", ":("], + name: "worried face", + slug: "worried_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ™": Emoji( + char: "๐Ÿ™", + keywords: [ + "slightly_frowning_face", + "face", + "frowning", + "disappointed", + "sad", + "upset" + ], + name: "slightly frowning face", + slug: "slightly_frowning_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ˜น๏ธ": Emoji( + char: "โ˜น๏ธ", + keywords: ["frowning_face", "face", "sad", "upset", "frown"], + name: "frowning face", + slug: "frowning_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ˜ฎ": Emoji( + char: "๐Ÿ˜ฎ", + keywords: [ + "face_with_open_mouth", + "face", + "surprise", + "impressed", + "wow", + "whoa", + ":O" + ], + name: "face with open mouth", + slug: "face_with_open_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ฏ": Emoji( + char: "๐Ÿ˜ฏ", + keywords: ["hushed_face", "face", "woo", "shh"], + name: "hushed face", + slug: "hushed_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ฒ": Emoji( + char: "๐Ÿ˜ฒ", + keywords: ["astonished_face", "face", "xox", "surprised", "poisoned"], + name: "astonished face", + slug: "astonished_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ณ": Emoji( + char: "๐Ÿ˜ณ", + keywords: ["flushed_face", "face", "blush", "shy", "flattered"], + name: "flushed face", + slug: "flushed_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅบ": Emoji( + char: "๐Ÿฅบ", + keywords: [ + "pleading_face", + "face", + "begging", + "mercy", + "cry", + "tears", + "sad", + "grievance" + ], + name: "pleading face", + slug: "pleading_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅน": Emoji( + char: "๐Ÿฅน", + keywords: ["face holding back tears", "touched", "gratitude", "cry"], + name: "face holding back tears", + slug: "face_holding_back_tears", + group: EmojiGroup.smileysEmotion, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ˜ฆ": Emoji( + char: "๐Ÿ˜ฆ", + keywords: ["frowning_face_with_open_mouth", "face", "aw", "what"], + name: "frowning face with open mouth", + slug: "frowning_face_with_open_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜ง": Emoji( + char: "๐Ÿ˜ง", + keywords: ["anguished_face", "face", "stunned", "nervous"], + name: "anguished face", + slug: "anguished_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜จ": Emoji( + char: "๐Ÿ˜จ", + keywords: ["fearful_face", "face", "scared", "terrified", "nervous"], + name: "fearful face", + slug: "fearful_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฐ": Emoji( + char: "๐Ÿ˜ฐ", + keywords: ["anxious_face_with_sweat", "face", "nervous", "sweat"], + name: "anxious face with sweat", + slug: "anxious_face_with_sweat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฅ": Emoji( + char: "๐Ÿ˜ฅ", + keywords: ["sad_but_relieved_face", "face", "phew", "sweat", "nervous"], + name: "sad but relieved face", + slug: "sad_but_relieved_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ข": Emoji( + char: "๐Ÿ˜ข", + keywords: [ + "crying_face", + "face", + "tears", + "sad", + "depressed", + "upset", + ":'(" + ], + name: "crying face", + slug: "crying_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ญ": Emoji( + char: "๐Ÿ˜ญ", + keywords: [ + "loudly_crying_face", + "face", + "cry", + "tears", + "sad", + "upset", + "depressed" + ], + name: "loudly crying face", + slug: "loudly_crying_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฑ": Emoji( + char: "๐Ÿ˜ฑ", + keywords: ["face_screaming_in_fear", "face", "munch", "scared", "omg"], + name: "face screaming in fear", + slug: "face_screaming_in_fear", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜–": Emoji( + char: "๐Ÿ˜–", + keywords: [ + "confounded_face", + "face", + "confused", + "sick", + "unwell", + "oops", + ":S" + ], + name: "confounded face", + slug: "confounded_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฃ": Emoji( + char: "๐Ÿ˜ฃ", + keywords: ["persevering_face", "face", "sick", "no", "upset", "oops"], + name: "persevering face", + slug: "persevering_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ž": Emoji( + char: "๐Ÿ˜ž", + keywords: ["disappointed_face", "face", "sad", "upset", "depressed", ":("], + name: "disappointed face", + slug: "disappointed_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜“": Emoji( + char: "๐Ÿ˜“", + keywords: [ + "downcast_face_with_sweat", + "face", + "hot", + "sad", + "tired", + "exercise" + ], + name: "downcast face with sweat", + slug: "downcast_face_with_sweat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฉ": Emoji( + char: "๐Ÿ˜ฉ", + keywords: [ + "weary_face", + "face", + "tired", + "sleepy", + "sad", + "frustrated", + "upset" + ], + name: "weary face", + slug: "weary_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ซ": Emoji( + char: "๐Ÿ˜ซ", + keywords: ["tired_face", "sick", "whine", "upset", "frustrated"], + name: "tired face", + slug: "tired_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅฑ": Emoji( + char: "๐Ÿฅฑ", + keywords: ["yawning_face", "tired", "sleepy"], + name: "yawning face", + slug: "yawning_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ˜ค": Emoji( + char: "๐Ÿ˜ค", + keywords: [ + "face_with_steam_from_nose", + "face", + "gas", + "phew", + "proud", + "pride" + ], + name: "face with steam from nose", + slug: "face_with_steam_from_nose", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ก": Emoji( + char: "๐Ÿ˜ก", + keywords: ["pouting_face", "angry", "mad", "hate", "despise"], + name: "enraged face", + slug: "enraged_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ ": Emoji( + char: "๐Ÿ˜ ", + keywords: ["angry_face", "mad", "face", "annoyed", "frustrated"], + name: "angry face", + slug: "angry_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคฌ": Emoji( + char: "๐Ÿคฌ", + keywords: [ + "face_with_symbols_on_mouth", + "face", + "swearing", + "cursing", + "cussing", + "profanity", + "expletive" + ], + name: "face with symbols on mouth", + slug: "face_with_symbols_on_mouth", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ˜ˆ": Emoji( + char: "๐Ÿ˜ˆ", + keywords: ["smiling_face_with_horns", "devil", "horns"], + name: "smiling face with horns", + slug: "smiling_face_with_horns", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฟ": Emoji( + char: "๐Ÿ‘ฟ", + keywords: ["angry_face_with_horns", "devil", "angry", "horns"], + name: "angry face with horns", + slug: "angry_face_with_horns", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’€": Emoji( + char: "๐Ÿ’€", + keywords: ["skull", "dead", "skeleton", "creepy", "death"], + name: "skull", + slug: "skull", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜ ๏ธ": Emoji( + char: "โ˜ ๏ธ", + keywords: [ + "skull_and_crossbones", + "poison", + "danger", + "deadly", + "scary", + "death", + "pirate", + "evil" + ], + name: "skull and crossbones", + slug: "skull_and_crossbones", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’ฉ": Emoji( + char: "๐Ÿ’ฉ", + keywords: ["pile_of_poo", "hankey", "shitface", "fail", "turd", "shit"], + name: "pile of poo", + slug: "pile_of_poo", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคก": Emoji( + char: "๐Ÿคก", + keywords: ["clown_face", "face"], + name: "clown face", + slug: "clown_face", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ‘น": Emoji( + char: "๐Ÿ‘น", + keywords: [ + "ogre", + "monster", + "red", + "mask", + "halloween", + "scary", + "creepy", + "devil", + "demon", + "japanese", + "ogre" + ], + name: "ogre", + slug: "ogre", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘บ": Emoji( + char: "๐Ÿ‘บ", + keywords: [ + "goblin", + "red", + "evil", + "mask", + "monster", + "scary", + "creepy", + "japanese", + "goblin" + ], + name: "goblin", + slug: "goblin", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘ป": Emoji( + char: "๐Ÿ‘ป", + keywords: ["ghost", "halloween", "spooky", "scary"], + name: "ghost", + slug: "ghost", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘ฝ": Emoji( + char: "๐Ÿ‘ฝ", + keywords: ["alien", "UFO", "paul", "weird", "outer_space"], + name: "alien", + slug: "alien", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘พ": Emoji( + char: "๐Ÿ‘พ", + keywords: ["alien_monster", "game", "arcade", "play"], + name: "alien monster", + slug: "alien_monster", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿค–": Emoji( + char: "๐Ÿค–", + keywords: ["robot", "computer", "machine", "bot"], + name: "robot", + slug: "robot", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ˜บ": Emoji( + char: "๐Ÿ˜บ", + keywords: ["grinning_cat", "animal", "cats", "happy", "smile"], + name: "grinning cat", + slug: "grinning_cat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ธ": Emoji( + char: "๐Ÿ˜ธ", + keywords: ["grinning_cat_with_smiling_eyes", "animal", "cats", "smile"], + name: "grinning cat with smiling eyes", + slug: "grinning_cat_with_smiling_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜น": Emoji( + char: "๐Ÿ˜น", + keywords: [ + "cat_with_tears_of_joy", + "animal", + "cats", + "haha", + "happy", + "tears" + ], + name: "cat with tears of joy", + slug: "cat_with_tears_of_joy", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ป": Emoji( + char: "๐Ÿ˜ป", + keywords: [ + "smiling_cat_with_heart_eyes", + "animal", + "love", + "like", + "affection", + "cats", + "valentines", + "heart" + ], + name: "smiling cat with heart-eyes", + slug: "smiling_cat_with_heart_eyes", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ผ": Emoji( + char: "๐Ÿ˜ผ", + keywords: ["cat_with_wry_smile", "animal", "cats", "smirk"], + name: "cat with wry smile", + slug: "cat_with_wry_smile", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฝ": Emoji( + char: "๐Ÿ˜ฝ", + keywords: ["kissing_cat", "animal", "cats", "kiss"], + name: "kissing cat", + slug: "kissing_cat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™€": Emoji( + char: "๐Ÿ™€", + keywords: ["weary_cat", "animal", "cats", "munch", "scared", "scream"], + name: "weary cat", + slug: "weary_cat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜ฟ": Emoji( + char: "๐Ÿ˜ฟ", + keywords: [ + "crying_cat", + "animal", + "tears", + "weep", + "sad", + "cats", + "upset", + "cry" + ], + name: "crying cat", + slug: "crying_cat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜พ": Emoji( + char: "๐Ÿ˜พ", + keywords: ["pouting_cat", "animal", "cats"], + name: "pouting cat", + slug: "pouting_cat", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™ˆ": Emoji( + char: "๐Ÿ™ˆ", + keywords: ["see_no_evil_monkey", "monkey", "animal", "nature", "haha"], + name: "see-no-evil monkey", + slug: "see_no_evil_monkey", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™‰": Emoji( + char: "๐Ÿ™‰", + keywords: ["hear_no_evil_monkey", "animal", "monkey", "nature"], + name: "hear-no-evil monkey", + slug: "hear_no_evil_monkey", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™Š": Emoji( + char: "๐Ÿ™Š", + keywords: ["speak_no_evil_monkey", "monkey", "animal", "nature", "omg"], + name: "speak-no-evil monkey", + slug: "speak_no_evil_monkey", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’Œ": Emoji( + char: "๐Ÿ’Œ", + keywords: [ + "love_letter", + "email", + "like", + "affection", + "envelope", + "valentines" + ], + name: "love letter", + slug: "love_letter", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’˜": Emoji( + char: "๐Ÿ’˜", + keywords: [ + "heart_with_arrow", + "love", + "like", + "heart", + "affection", + "valentines" + ], + name: "heart with arrow", + slug: "heart_with_arrow", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: ["heart_with_ribbon", "love", "valentines"], + name: "heart with ribbon", + slug: "heart_with_ribbon", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’–": Emoji( + char: "๐Ÿ’–", + keywords: ["sparkling_heart", "love", "like", "affection", "valentines"], + name: "sparkling heart", + slug: "sparkling_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’—": Emoji( + char: "๐Ÿ’—", + keywords: [ + "growing_heart", + "like", + "love", + "affection", + "valentines", + "pink" + ], + name: "growing heart", + slug: "growing_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’“": Emoji( + char: "๐Ÿ’“", + keywords: [ + "beating_heart", + "love", + "like", + "affection", + "valentines", + "pink", + "heart" + ], + name: "beating heart", + slug: "beating_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ž": Emoji( + char: "๐Ÿ’ž", + keywords: ["revolving_hearts", "love", "like", "affection", "valentines"], + name: "revolving hearts", + slug: "revolving_hearts", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’•": Emoji( + char: "๐Ÿ’•", + keywords: [ + "two_hearts", + "love", + "like", + "affection", + "valentines", + "heart" + ], + name: "two hearts", + slug: "two_hearts", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’Ÿ": Emoji( + char: "๐Ÿ’Ÿ", + keywords: ["heart_decoration", "purple-square", "love", "like"], + name: "heart decoration", + slug: "heart_decoration", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฃ๏ธ": Emoji( + char: "โฃ๏ธ", + keywords: ["heart_exclamation", "decoration", "love"], + name: "heart exclamation", + slug: "heart_exclamation", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’”": Emoji( + char: "๐Ÿ’”", + keywords: ["broken_heart", "sad", "sorry", "break", "heart", "heartbreak"], + name: "broken heart", + slug: "broken_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โค๏ธโ€๐Ÿ”ฅ": Emoji( + char: "โค๏ธโ€๐Ÿ”ฅ", + keywords: ["heart on fire", "passionate", "enthusiastic"], + name: "heart on fire", + slug: "heart_on_fire", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: false, + ), + "โค๏ธโ€๐Ÿฉน": Emoji( + char: "โค๏ธโ€๐Ÿฉน", + keywords: ["mending heart", "broken heart", "bandage", "wounded"], + name: "mending heart", + slug: "mending_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: false, + ), + "โค๏ธ": Emoji( + char: "โค๏ธ", + keywords: ["red_heart", "love", "like", "valentines"], + name: "red heart", + slug: "red_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉท": Emoji( + char: "๐Ÿฉท", + keywords: ["pink heart", "valentines"], + name: "pink heart", + slug: "pink_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿงก": Emoji( + char: "๐Ÿงก", + keywords: ["orange_heart", "love", "like", "affection", "valentines"], + name: "orange heart", + slug: "orange_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ’›": Emoji( + char: "๐Ÿ’›", + keywords: ["yellow_heart", "love", "like", "affection", "valentines"], + name: "yellow heart", + slug: "yellow_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’š": Emoji( + char: "๐Ÿ’š", + keywords: ["green_heart", "love", "like", "affection", "valentines"], + name: "green heart", + slug: "green_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’™": Emoji( + char: "๐Ÿ’™", + keywords: ["blue_heart", "love", "like", "affection", "valentines"], + name: "blue heart", + slug: "blue_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉต": Emoji( + char: "๐Ÿฉต", + keywords: ["light blue heart", "ice", "baby blue"], + name: "light blue heart", + slug: "light_blue_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿ’œ": Emoji( + char: "๐Ÿ’œ", + keywords: ["purple_heart", "love", "like", "affection", "valentines"], + name: "purple heart", + slug: "purple_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸคŽ": Emoji( + char: "๐ŸคŽ", + keywords: ["brown_heart", "coffee"], + name: "brown heart", + slug: "brown_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ–ค": Emoji( + char: "๐Ÿ–ค", + keywords: ["black_heart", "evil"], + name: "black heart", + slug: "black_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฉถ": Emoji( + char: "๐Ÿฉถ", + keywords: ["grey heart", "silver", "monochrome"], + name: "grey heart", + slug: "grey_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["white_heart", "pure"], + name: "white heart", + slug: "white_heart", + group: EmojiGroup.smileysEmotion, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ’‹": Emoji( + char: "๐Ÿ’‹", + keywords: [ + "kiss_mark", + "face", + "lips", + "love", + "like", + "affection", + "valentines" + ], + name: "kiss mark", + slug: "kiss_mark", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฏ": Emoji( + char: "๐Ÿ’ฏ", + keywords: [ + "hundred_points", + "score", + "perfect", + "numbers", + "century", + "exam", + "quiz", + "test", + "pass", + "hundred" + ], + name: "hundred points", + slug: "hundred_points", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ข": Emoji( + char: "๐Ÿ’ข", + keywords: ["anger_symbol", "angry", "mad"], + name: "anger symbol", + slug: "anger_symbol", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฅ": Emoji( + char: "๐Ÿ’ฅ", + keywords: [ + "collision", + "bomb", + "explode", + "explosion", + "collision", + "blown" + ], + name: "collision", + slug: "collision", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ซ": Emoji( + char: "๐Ÿ’ซ", + keywords: ["dizzy", "star", "sparkle", "shoot", "magic"], + name: "dizzy", + slug: "dizzy", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฆ": Emoji( + char: "๐Ÿ’ฆ", + keywords: ["sweat_droplets", "water", "drip", "oops"], + name: "sweat droplets", + slug: "sweat_droplets", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’จ": Emoji( + char: "๐Ÿ’จ", + keywords: [ + "dashing_away", + "wind", + "air", + "fast", + "shoo", + "fart", + "smoke", + "puff" + ], + name: "dashing away", + slug: "dashing_away", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ณ๏ธ": Emoji( + char: "๐Ÿ•ณ๏ธ", + keywords: ["hole", "embarrassing"], + name: "hole", + slug: "hole", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ’ฌ": Emoji( + char: "๐Ÿ’ฌ", + keywords: [ + "speech_balloon", + "bubble", + "words", + "message", + "talk", + "chatting" + ], + name: "speech balloon", + slug: "speech_balloon", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ": Emoji( + char: "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ", + keywords: ["eye_in_speech_bubble", "info"], + name: "eye in speech bubble", + slug: "eye_in_speech_bubble", + group: EmojiGroup.smileysEmotion, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ—จ๏ธ": Emoji( + char: "๐Ÿ—จ๏ธ", + keywords: ["left_speech_bubble", "words", "message", "talk", "chatting"], + name: "left speech bubble", + slug: "left_speech_bubble", + group: EmojiGroup.smileysEmotion, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ—ฏ๏ธ": Emoji( + char: "๐Ÿ—ฏ๏ธ", + keywords: ["right_anger_bubble", "caption", "speech", "thinking", "mad"], + name: "right anger bubble", + slug: "right_anger_bubble", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ’ญ": Emoji( + char: "๐Ÿ’ญ", + keywords: [ + "thought_balloon", + "bubble", + "cloud", + "speech", + "thinking", + "dream" + ], + name: "thought balloon", + slug: "thought_balloon", + group: EmojiGroup.smileysEmotion, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’ค": Emoji( + char: "๐Ÿ’ค", + keywords: ["zzz", "sleepy", "tired", "dream"], + name: "ZZZ", + slug: "zzz", + group: EmojiGroup.smileysEmotion, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘‹": Emoji( + char: "๐Ÿ‘‹", + keywords: [ + "waving_hand", + "hands", + "gesture", + "goodbye", + "solong", + "farewell", + "hello", + "hi", + "palm" + ], + name: "waving hand", + slug: "waving_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿคš": Emoji( + char: "๐Ÿคš", + keywords: ["raised_back_of_hand", "fingers", "raised", "backhand"], + name: "raised back of hand", + slug: "raised_back_of_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿ–๏ธ": Emoji( + char: "๐Ÿ–๏ธ", + keywords: ["hand_with_fingers_splayed", "hand", "fingers", "palm"], + name: "hand with fingers splayed", + slug: "hand_with_fingers_splayed", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "โœ‹": Emoji( + char: "โœ‹", + keywords: ["raised_hand", "fingers", "stop", "highfive", "palm", "ban"], + name: "raised hand", + slug: "raised_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ––": Emoji( + char: "๐Ÿ––", + keywords: ["vulcan_salute", "hand", "fingers", "spock", "star trek"], + name: "vulcan salute", + slug: "vulcan_salute", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿซฑ": Emoji( + char: "๐Ÿซฑ", + keywords: ["rightwards hand", "palm", "offer"], + name: "rightwards hand", + slug: "rightwards_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿซฒ": Emoji( + char: "๐Ÿซฒ", + keywords: ["leftwards hand", "palm", "offer"], + name: "leftwards hand", + slug: "leftwards_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿซณ": Emoji( + char: "๐Ÿซณ", + keywords: ["palm down hand", "palm", "drop"], + name: "palm down hand", + slug: "palm_down_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿซด": Emoji( + char: "๐Ÿซด", + keywords: ["palm up hand", "lift", "offer", "demand"], + name: "palm up hand", + slug: "palm_up_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿซท": Emoji( + char: "๐Ÿซท", + keywords: ["leftwards pushing hand", "highfive", "pressing", "stop"], + name: "leftwards pushing hand", + slug: "leftwards_pushing_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 15.0, + ), + "๐Ÿซธ": Emoji( + char: "๐Ÿซธ", + keywords: ["rightwards pushing hand", "highfive", "pressing", "stop"], + name: "rightwards pushing hand", + slug: "rightwards_pushing_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 15.0, + ), + "๐Ÿ‘Œ": Emoji( + char: "๐Ÿ‘Œ", + keywords: ["ok_hand", "fingers", "limbs", "perfect", "ok", "okay"], + name: "OK hand", + slug: "ok_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐ŸคŒ": Emoji( + char: "๐ŸคŒ", + keywords: ["pinched fingers", "size", "tiny", "small"], + name: "pinched fingers", + slug: "pinched_fingers", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["pinching_hand", "tiny", "small", "size"], + name: "pinching hand", + slug: "pinching_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "โœŒ๏ธ": Emoji( + char: "โœŒ๏ธ", + keywords: [ + "victory_hand", + "fingers", + "ohyeah", + "hand", + "peace", + "victory", + "two" + ], + name: "victory hand", + slug: "victory_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿคž": Emoji( + char: "๐Ÿคž", + keywords: ["crossed_fingers", "good", "lucky"], + name: "crossed fingers", + slug: "crossed_fingers", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿซฐ": Emoji( + char: "๐Ÿซฐ", + keywords: [ + "hand with index finger and thumb crossed", + "heart", + "love", + "money", + "expensive" + ], + name: "hand with index finger and thumb crossed", + slug: "hand_with_index_finger_and_thumb_crossed", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐ŸคŸ": Emoji( + char: "๐ŸคŸ", + keywords: ["love_you_gesture", "hand", "fingers", "gesture"], + name: "love-you gesture", + slug: "love_you_gesture", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿค˜": Emoji( + char: "๐Ÿค˜", + keywords: [ + "sign_of_the_horns", + "hand", + "fingers", + "evil_eye", + "sign_of_horns", + "rock_on" + ], + name: "sign of the horns", + slug: "sign_of_the_horns", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿค™": Emoji( + char: "๐Ÿค™", + keywords: ["call_me_hand", "hands", "gesture", "shaka"], + name: "call me hand", + slug: "call_me_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿ‘ˆ": Emoji( + char: "๐Ÿ‘ˆ", + keywords: [ + "backhand_index_pointing_left", + "direction", + "fingers", + "hand", + "left" + ], + name: "backhand index pointing left", + slug: "backhand_index_pointing_left", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘‰": Emoji( + char: "๐Ÿ‘‰", + keywords: [ + "backhand_index_pointing_right", + "fingers", + "hand", + "direction", + "right" + ], + name: "backhand index pointing right", + slug: "backhand_index_pointing_right", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘†": Emoji( + char: "๐Ÿ‘†", + keywords: [ + "backhand_index_pointing_up", + "fingers", + "hand", + "direction", + "up" + ], + name: "backhand index pointing up", + slug: "backhand_index_pointing_up", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ–•": Emoji( + char: "๐Ÿ–•", + keywords: [ + "middle_finger", + "hand", + "fingers", + "rude", + "middle", + "flipping" + ], + name: "middle finger", + slug: "middle_finger", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘‡": Emoji( + char: "๐Ÿ‘‡", + keywords: [ + "backhand_index_pointing_down", + "fingers", + "hand", + "direction", + "down" + ], + name: "backhand index pointing down", + slug: "backhand_index_pointing_down", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "โ˜๏ธ": Emoji( + char: "โ˜๏ธ", + keywords: ["index_pointing_up", "hand", "fingers", "direction", "up"], + name: "index pointing up", + slug: "index_pointing_up", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿซต": Emoji( + char: "๐Ÿซต", + keywords: ["index pointing at the viewer", "you", "recruit"], + name: "index pointing at the viewer", + slug: "index_pointing_at_the_viewer", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: [ + "thumbs_up", + "thumbsup", + "yes", + "awesome", + "good", + "agree", + "accept", + "cool", + "hand", + "like", + "+1" + ], + name: "thumbs up", + slug: "thumbs_up", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘Ž": Emoji( + char: "๐Ÿ‘Ž", + keywords: ["thumbs_down", "thumbsdown", "no", "dislike", "hand", "-1"], + name: "thumbs down", + slug: "thumbs_down", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "โœŠ": Emoji( + char: "โœŠ", + keywords: ["raised_fist", "fingers", "hand", "grasp"], + name: "raised fist", + slug: "raised_fist", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘Š": Emoji( + char: "๐Ÿ‘Š", + keywords: [ + "oncoming_fist", + "angry", + "violence", + "fist", + "hit", + "attack", + "hand" + ], + name: "oncoming fist", + slug: "oncoming_fist", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿค›": Emoji( + char: "๐Ÿค›", + keywords: ["left_facing_fist", "hand", "fistbump"], + name: "left-facing fist", + slug: "left_facing_fist", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคœ": Emoji( + char: "๐Ÿคœ", + keywords: ["right_facing_fist", "hand", "fistbump"], + name: "right-facing fist", + slug: "right_facing_fist", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: [ + "clapping_hands", + "hands", + "praise", + "applause", + "congrats", + "yay" + ], + name: "clapping hands", + slug: "clapping_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™Œ": Emoji( + char: "๐Ÿ™Œ", + keywords: [ + "raising_hands", + "gesture", + "hooray", + "yea", + "celebration", + "hands" + ], + name: "raising hands", + slug: "raising_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿซถ": Emoji( + char: "๐Ÿซถ", + keywords: ["heart hands", "love", "appreciation", "support"], + name: "heart hands", + slug: "heart_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: ["open_hands", "fingers", "butterfly", "hands", "open"], + name: "open hands", + slug: "open_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿคฒ": Emoji( + char: "๐Ÿคฒ", + keywords: ["palms_up_together", "hands", "gesture", "cupped", "prayer"], + name: "palms up together", + slug: "palms_up_together", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["handshake", "agreement", "shake"], + name: "handshake", + slug: "handshake", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿ™": Emoji( + char: "๐Ÿ™", + keywords: [ + "folded_hands", + "please", + "hope", + "wish", + "namaste", + "highfive", + "pray", + "thank you", + "thanks", + "appreciate" + ], + name: "folded hands", + slug: "folded_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "โœ๏ธ": Emoji( + char: "โœ๏ธ", + keywords: [ + "writing_hand", + "lower_left_ballpoint_pen", + "stationery", + "write", + "compose" + ], + name: "writing hand", + slug: "writing_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ’…": Emoji( + char: "๐Ÿ’…", + keywords: [ + "nail_polish", + "beauty", + "manicure", + "finger", + "fashion", + "nail" + ], + name: "nail polish", + slug: "nail_polish", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿคณ": Emoji( + char: "๐Ÿคณ", + keywords: ["selfie", "camera", "phone"], + name: "selfie", + slug: "selfie", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿ’ช": Emoji( + char: "๐Ÿ’ช", + keywords: [ + "flexed_biceps", + "arm", + "flex", + "hand", + "summer", + "strong", + "biceps" + ], + name: "flexed biceps", + slug: "flexed_biceps", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿฆพ": Emoji( + char: "๐Ÿฆพ", + keywords: ["mechanical_arm", "accessibility"], + name: "mechanical arm", + slug: "mechanical_arm", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆฟ": Emoji( + char: "๐Ÿฆฟ", + keywords: ["mechanical_leg", "accessibility"], + name: "mechanical leg", + slug: "mechanical_leg", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆต": Emoji( + char: "๐Ÿฆต", + keywords: ["leg", "kick", "limb"], + name: "leg", + slug: "leg", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿฆถ": Emoji( + char: "๐Ÿฆถ", + keywords: ["foot", "kick", "stomp"], + name: "foot", + slug: "foot", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿ‘‚": Emoji( + char: "๐Ÿ‘‚", + keywords: ["ear", "face", "hear", "sound", "listen"], + name: "ear", + slug: "ear", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿฆป": Emoji( + char: "๐Ÿฆป", + keywords: ["ear_with_hearing_aid", "accessibility"], + name: "ear with hearing aid", + slug: "ear_with_hearing_aid", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ƒ": Emoji( + char: "๐Ÿ‘ƒ", + keywords: ["nose", "smell", "sniff"], + name: "nose", + slug: "nose", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿง ": Emoji( + char: "๐Ÿง ", + keywords: ["brain", "smart", "intelligent"], + name: "brain", + slug: "brain", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿซ€": Emoji( + char: "๐Ÿซ€", + keywords: ["anatomical heart", "health", "heartbeat"], + name: "anatomical heart", + slug: "anatomical_heart", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿซ": Emoji( + char: "๐Ÿซ", + keywords: ["lungs", "breathe"], + name: "lungs", + slug: "lungs", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฆท": Emoji( + char: "๐Ÿฆท", + keywords: ["tooth", "teeth", "dentist"], + name: "tooth", + slug: "tooth", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆด": Emoji( + char: "๐Ÿฆด", + keywords: ["bone", "skeleton"], + name: "bone", + slug: "bone", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ‘€": Emoji( + char: "๐Ÿ‘€", + keywords: ["eyes", "look", "watch", "stalk", "peek", "see"], + name: "eyes", + slug: "eyes", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘๏ธ": Emoji( + char: "๐Ÿ‘๏ธ", + keywords: ["eye", "face", "look", "see", "watch", "stare"], + name: "eye", + slug: "eye", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ‘…": Emoji( + char: "๐Ÿ‘…", + keywords: ["tongue", "mouth", "playful"], + name: "tongue", + slug: "tongue", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘„": Emoji( + char: "๐Ÿ‘„", + keywords: ["mouth", "mouth", "kiss"], + name: "mouth", + slug: "mouth", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซฆ": Emoji( + char: "๐Ÿซฆ", + keywords: ["biting lip", "flirt", "sexy", "pain", "worry"], + name: "biting lip", + slug: "biting_lip", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ‘ถ": Emoji( + char: "๐Ÿ‘ถ", + keywords: ["baby", "child", "boy", "girl", "toddler"], + name: "baby", + slug: "baby", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿง’": Emoji( + char: "๐Ÿง’", + keywords: ["child", "gender-neutral", "young"], + name: "child", + slug: "child", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฆ", + keywords: ["boy", "man", "male", "guy", "teenager"], + name: "boy", + slug: "boy", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘ง", + keywords: ["girl", "female", "woman", "teenager"], + name: "girl", + slug: "girl", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿง‘": Emoji( + char: "๐Ÿง‘", + keywords: ["person", "gender-neutral", "person"], + name: "person", + slug: "person", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿ‘ฑ": Emoji( + char: "๐Ÿ‘ฑ", + keywords: ["person_blond_hair", "hairstyle"], + name: "person blond hair", + slug: "person_blond_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘จ": Emoji( + char: "๐Ÿ‘จ", + keywords: [ + "man", + "mustache", + "father", + "dad", + "guy", + "classy", + "sir", + "moustache" + ], + name: "man", + slug: "man", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿง”": Emoji( + char: "๐Ÿง”", + keywords: ["man_beard", "person", "bewhiskered"], + name: "person beard", + slug: "person_beard", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง”โ€โ™‚๏ธ": Emoji( + char: "๐Ÿง”โ€โ™‚๏ธ", + keywords: ["man beard", "facial hair"], + name: "man beard", + slug: "man_beard", + group: EmojiGroup.peopleBody, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿง”โ€โ™€๏ธ": Emoji( + char: "๐Ÿง”โ€โ™€๏ธ", + keywords: ["woman beard", "facial hair"], + name: "woman beard", + slug: "woman_beard", + group: EmojiGroup.peopleBody, + emojiVersion: 13.1, + unicodeVersion: 13.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘จโ€๐Ÿฆฐ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆฐ", + keywords: ["man_red_hair", "hairstyle"], + name: "man red hair", + slug: "man_red_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿ‘จโ€๐Ÿฆฑ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆฑ", + keywords: ["man_curly_hair", "hairstyle"], + name: "man curly hair", + slug: "man_curly_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿ‘จโ€๐Ÿฆณ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆณ", + keywords: ["man_white_hair", "old", "elder"], + name: "man white hair", + slug: "man_white_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿ‘จโ€๐Ÿฆฒ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆฒ", + keywords: ["man_bald", "hairless"], + name: "man bald", + slug: "man_bald", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿ‘ฉ": Emoji( + char: "๐Ÿ‘ฉ", + keywords: ["woman", "female", "girls", "lady"], + name: "woman", + slug: "woman", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ฉโ€๐Ÿฆฐ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆฐ", + keywords: ["woman_red_hair", "hairstyle"], + name: "woman red hair", + slug: "woman_red_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿง‘โ€๐Ÿฆฐ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆฐ", + keywords: ["person_red_hair", "hairstyle"], + name: "person red hair", + slug: "person_red_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘ฉโ€๐Ÿฆฑ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆฑ", + keywords: ["woman_curly_hair", "hairstyle"], + name: "woman curly hair", + slug: "woman_curly_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿง‘โ€๐Ÿฆฑ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆฑ", + keywords: ["person_curly_hair", "hairstyle"], + name: "person curly hair", + slug: "person_curly_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘ฉโ€๐Ÿฆณ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆณ", + keywords: ["woman_white_hair", "old", "elder"], + name: "woman white hair", + slug: "woman_white_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿง‘โ€๐Ÿฆณ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆณ", + keywords: ["person_white_hair", "elder", "old"], + name: "person white hair", + slug: "person_white_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘ฉโ€๐Ÿฆฒ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆฒ", + keywords: ["woman_bald", "hairless"], + name: "woman bald", + slug: "woman_bald", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿง‘โ€๐Ÿฆฒ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆฒ", + keywords: ["person_bald", "hairless"], + name: "person bald", + slug: "person_bald", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘ฑโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‘ฑโ€โ™€๏ธ", + keywords: [ + "woman_blond_hair", + "woman", + "female", + "girl", + "blonde", + "person" + ], + name: "woman blond hair", + slug: "woman_blond_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฑโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‘ฑโ€โ™‚๏ธ", + keywords: [ + "man_blond_hair", + "man", + "male", + "boy", + "blonde", + "guy", + "person" + ], + name: "man blond hair", + slug: "man_blond_hair", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง“": Emoji( + char: "๐Ÿง“", + keywords: ["older_person", "human", "elder", "senior", "gender-neutral"], + name: "older person", + slug: "older_person", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿ‘ด": Emoji( + char: "๐Ÿ‘ด", + keywords: ["old_man", "human", "male", "men", "old", "elder", "senior"], + name: "old man", + slug: "old_man", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ต": Emoji( + char: "๐Ÿ‘ต", + keywords: [ + "old_woman", + "human", + "female", + "women", + "lady", + "old", + "elder", + "senior" + ], + name: "old woman", + slug: "old_woman", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™": Emoji( + char: "๐Ÿ™", + keywords: ["person_frowning", "worried"], + name: "person frowning", + slug: "person_frowning", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ™โ€โ™‚๏ธ", + keywords: [ + "man_frowning", + "male", + "boy", + "man", + "sad", + "depressed", + "discouraged", + "unhappy" + ], + name: "man frowning", + slug: "man_frowning", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™โ€โ™€๏ธ": Emoji( + char: "๐Ÿ™โ€โ™€๏ธ", + keywords: [ + "woman_frowning", + "female", + "girl", + "woman", + "sad", + "depressed", + "discouraged", + "unhappy" + ], + name: "woman frowning", + slug: "woman_frowning", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™Ž": Emoji( + char: "๐Ÿ™Ž", + keywords: ["person_pouting", "upset"], + name: "person pouting", + slug: "person_pouting", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™Žโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ™Žโ€โ™‚๏ธ", + keywords: ["man_pouting", "male", "boy", "man"], + name: "man pouting", + slug: "man_pouting", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™Žโ€โ™€๏ธ": Emoji( + char: "๐Ÿ™Žโ€โ™€๏ธ", + keywords: ["woman_pouting", "female", "girl", "woman"], + name: "woman pouting", + slug: "woman_pouting", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™…": Emoji( + char: "๐Ÿ™…", + keywords: ["person_gesturing_no", "decline"], + name: "person gesturing NO", + slug: "person_gesturing_no", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™…โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ™…โ€โ™‚๏ธ", + keywords: ["man_gesturing_no", "male", "boy", "man", "nope"], + name: "man gesturing NO", + slug: "man_gesturing_no", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™…โ€โ™€๏ธ": Emoji( + char: "๐Ÿ™…โ€โ™€๏ธ", + keywords: ["woman_gesturing_no", "female", "girl", "woman", "nope"], + name: "woman gesturing NO", + slug: "woman_gesturing_no", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™†": Emoji( + char: "๐Ÿ™†", + keywords: ["person_gesturing_ok", "agree"], + name: "person gesturing OK", + slug: "person_gesturing_ok", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™†โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ™†โ€โ™‚๏ธ", + keywords: [ + "man_gesturing_ok", + "men", + "boy", + "male", + "blue", + "human", + "man" + ], + name: "man gesturing OK", + slug: "man_gesturing_ok", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™†โ€โ™€๏ธ": Emoji( + char: "๐Ÿ™†โ€โ™€๏ธ", + keywords: [ + "woman_gesturing_ok", + "women", + "girl", + "female", + "pink", + "human", + "woman" + ], + name: "woman gesturing OK", + slug: "woman_gesturing_ok", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: ["person_tipping_hand", "information"], + name: "person tipping hand", + slug: "person_tipping_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ’โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ’โ€โ™‚๏ธ", + keywords: [ + "man_tipping_hand", + "male", + "boy", + "man", + "human", + "information" + ], + name: "man tipping hand", + slug: "man_tipping_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’โ€โ™€๏ธ": Emoji( + char: "๐Ÿ’โ€โ™€๏ธ", + keywords: [ + "woman_tipping_hand", + "female", + "girl", + "woman", + "human", + "information" + ], + name: "woman tipping hand", + slug: "woman_tipping_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™‹": Emoji( + char: "๐Ÿ™‹", + keywords: ["person_raising_hand", "question"], + name: "person raising hand", + slug: "person_raising_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™‹โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ™‹โ€โ™‚๏ธ", + keywords: ["man_raising_hand", "male", "boy", "man"], + name: "man raising hand", + slug: "man_raising_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™‹โ€โ™€๏ธ": Emoji( + char: "๐Ÿ™‹โ€โ™€๏ธ", + keywords: ["woman_raising_hand", "female", "girl", "woman"], + name: "woman raising hand", + slug: "woman_raising_hand", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["deaf_person", "accessibility"], + name: "deaf person", + slug: "deaf_person", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿงโ€โ™‚๏ธ": Emoji( + char: "๐Ÿงโ€โ™‚๏ธ", + keywords: ["deaf_man", "accessibility"], + name: "deaf man", + slug: "deaf_man", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿงโ€โ™€๏ธ": Emoji( + char: "๐Ÿงโ€โ™€๏ธ", + keywords: ["deaf_woman", "accessibility"], + name: "deaf woman", + slug: "deaf_woman", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ™‡": Emoji( + char: "๐Ÿ™‡", + keywords: ["person_bowing", "respectiful"], + name: "person bowing", + slug: "person_bowing", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ™‡โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ™‡โ€โ™‚๏ธ", + keywords: ["man_bowing", "man", "male", "boy"], + name: "man bowing", + slug: "man_bowing", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ™‡โ€โ™€๏ธ": Emoji( + char: "๐Ÿ™‡โ€โ™€๏ธ", + keywords: ["woman_bowing", "woman", "female", "girl"], + name: "woman bowing", + slug: "woman_bowing", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคฆ": Emoji( + char: "๐Ÿคฆ", + keywords: ["person_facepalming", "disappointed"], + name: "person facepalming", + slug: "person_facepalming", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคฆโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคฆโ€โ™‚๏ธ", + keywords: ["man_facepalming", "man", "male", "boy", "disbelief"], + name: "man facepalming", + slug: "man_facepalming", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคฆโ€โ™€๏ธ": Emoji( + char: "๐Ÿคฆโ€โ™€๏ธ", + keywords: ["woman_facepalming", "woman", "female", "girl", "disbelief"], + name: "woman facepalming", + slug: "woman_facepalming", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคท": Emoji( + char: "๐Ÿคท", + keywords: ["person_shrugging", "regardless"], + name: "person shrugging", + slug: "person_shrugging", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคทโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคทโ€โ™‚๏ธ", + keywords: [ + "man_shrugging", + "man", + "male", + "boy", + "confused", + "indifferent", + "doubt" + ], + name: "man shrugging", + slug: "man_shrugging", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคทโ€โ™€๏ธ": Emoji( + char: "๐Ÿคทโ€โ™€๏ธ", + keywords: [ + "woman_shrugging", + "woman", + "female", + "girl", + "confused", + "indifferent", + "doubt" + ], + name: "woman shrugging", + slug: "woman_shrugging", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€โš•๏ธ": Emoji( + char: "๐Ÿง‘โ€โš•๏ธ", + keywords: ["health_worker", "hospital"], + name: "health worker", + slug: "health_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€โš•๏ธ": Emoji( + char: "๐Ÿ‘จโ€โš•๏ธ", + keywords: [ + "man_health_worker", + "doctor", + "nurse", + "therapist", + "healthcare", + "man", + "human" + ], + name: "man health worker", + slug: "man_health_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€โš•๏ธ": Emoji( + char: "๐Ÿ‘ฉโ€โš•๏ธ", + keywords: [ + "woman_health_worker", + "doctor", + "nurse", + "therapist", + "healthcare", + "woman", + "human" + ], + name: "woman health worker", + slug: "woman_health_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐ŸŽ“": Emoji( + char: "๐Ÿง‘โ€๐ŸŽ“", + keywords: ["student", "learn"], + name: "student", + slug: "student", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐ŸŽ“": Emoji( + char: "๐Ÿ‘จโ€๐ŸŽ“", + keywords: ["man_student", "graduate", "man", "human"], + name: "man student", + slug: "man_student", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐ŸŽ“": Emoji( + char: "๐Ÿ‘ฉโ€๐ŸŽ“", + keywords: ["woman_student", "graduate", "woman", "human"], + name: "woman student", + slug: "woman_student", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿซ": Emoji( + char: "๐Ÿง‘โ€๐Ÿซ", + keywords: ["teacher", "professor"], + name: "teacher", + slug: "teacher", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿซ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿซ", + keywords: ["man_teacher", "instructor", "professor", "man", "human"], + name: "man teacher", + slug: "man_teacher", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿซ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿซ", + keywords: ["woman_teacher", "instructor", "professor", "woman", "human"], + name: "woman teacher", + slug: "woman_teacher", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€โš–๏ธ": Emoji( + char: "๐Ÿง‘โ€โš–๏ธ", + keywords: ["judge", "law"], + name: "judge", + slug: "judge", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€โš–๏ธ": Emoji( + char: "๐Ÿ‘จโ€โš–๏ธ", + keywords: ["man_judge", "justice", "court", "man", "human"], + name: "man judge", + slug: "man_judge", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€โš–๏ธ": Emoji( + char: "๐Ÿ‘ฉโ€โš–๏ธ", + keywords: ["woman_judge", "justice", "court", "woman", "human"], + name: "woman judge", + slug: "woman_judge", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐ŸŒพ": Emoji( + char: "๐Ÿง‘โ€๐ŸŒพ", + keywords: ["farmer", "crops"], + name: "farmer", + slug: "farmer", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐ŸŒพ": Emoji( + char: "๐Ÿ‘จโ€๐ŸŒพ", + keywords: ["man_farmer", "rancher", "gardener", "man", "human"], + name: "man farmer", + slug: "man_farmer", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐ŸŒพ": Emoji( + char: "๐Ÿ‘ฉโ€๐ŸŒพ", + keywords: ["woman_farmer", "rancher", "gardener", "woman", "human"], + name: "woman farmer", + slug: "woman_farmer", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿณ": Emoji( + char: "๐Ÿง‘โ€๐Ÿณ", + keywords: ["cook", "food", "kitchen", "culinary"], + name: "cook", + slug: "cook", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿณ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿณ", + keywords: ["man_cook", "chef", "man", "human"], + name: "man cook", + slug: "man_cook", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿณ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿณ", + keywords: ["woman_cook", "chef", "woman", "human"], + name: "woman cook", + slug: "woman_cook", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿ”ง": Emoji( + char: "๐Ÿง‘โ€๐Ÿ”ง", + keywords: ["mechanic", "worker", "technician"], + name: "mechanic", + slug: "mechanic", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿ”ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ”ง", + keywords: ["man_mechanic", "plumber", "man", "human", "wrench"], + name: "man mechanic", + slug: "man_mechanic", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿ”ง": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ”ง", + keywords: ["woman_mechanic", "plumber", "woman", "human", "wrench"], + name: "woman mechanic", + slug: "woman_mechanic", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿญ": Emoji( + char: "๐Ÿง‘โ€๐Ÿญ", + keywords: ["factory_worker", "labor"], + name: "factory worker", + slug: "factory_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿญ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿญ", + keywords: ["man_factory_worker", "assembly", "industrial", "man", "human"], + name: "man factory worker", + slug: "man_factory_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿญ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿญ", + keywords: [ + "woman_factory_worker", + "assembly", + "industrial", + "woman", + "human" + ], + name: "woman factory worker", + slug: "woman_factory_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿ’ผ": Emoji( + char: "๐Ÿง‘โ€๐Ÿ’ผ", + keywords: ["office_worker", "business"], + name: "office worker", + slug: "office_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿ’ผ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ’ผ", + keywords: ["man_office_worker", "business", "manager", "man", "human"], + name: "man office worker", + slug: "man_office_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿ’ผ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ’ผ", + keywords: ["woman_office_worker", "business", "manager", "woman", "human"], + name: "woman office worker", + slug: "woman_office_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿ”ฌ": Emoji( + char: "๐Ÿง‘โ€๐Ÿ”ฌ", + keywords: ["scientist", "chemistry"], + name: "scientist", + slug: "scientist", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿ”ฌ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ”ฌ", + keywords: [ + "man_scientist", + "biologist", + "chemist", + "engineer", + "physicist", + "man", + "human" + ], + name: "man scientist", + slug: "man_scientist", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿ”ฌ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ”ฌ", + keywords: [ + "woman_scientist", + "biologist", + "chemist", + "engineer", + "physicist", + "woman", + "human" + ], + name: "woman scientist", + slug: "woman_scientist", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿ’ป": Emoji( + char: "๐Ÿง‘โ€๐Ÿ’ป", + keywords: ["technologist", "computer"], + name: "technologist", + slug: "technologist", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿ’ป": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ’ป", + keywords: [ + "man_technologist", + "coder", + "developer", + "engineer", + "programmer", + "software", + "man", + "human", + "laptop", + "computer" + ], + name: "man technologist", + slug: "man_technologist", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿ’ป": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ’ป", + keywords: [ + "woman_technologist", + "coder", + "developer", + "engineer", + "programmer", + "software", + "woman", + "human", + "laptop", + "computer" + ], + name: "woman technologist", + slug: "woman_technologist", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐ŸŽค": Emoji( + char: "๐Ÿง‘โ€๐ŸŽค", + keywords: ["singer", "song", "artist", "performer"], + name: "singer", + slug: "singer", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐ŸŽค": Emoji( + char: "๐Ÿ‘จโ€๐ŸŽค", + keywords: ["man_singer", "rockstar", "entertainer", "man", "human"], + name: "man singer", + slug: "man_singer", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐ŸŽค": Emoji( + char: "๐Ÿ‘ฉโ€๐ŸŽค", + keywords: ["woman_singer", "rockstar", "entertainer", "woman", "human"], + name: "woman singer", + slug: "woman_singer", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐ŸŽจ": Emoji( + char: "๐Ÿง‘โ€๐ŸŽจ", + keywords: ["artist", "painting", "draw", "creativity"], + name: "artist", + slug: "artist", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐ŸŽจ": Emoji( + char: "๐Ÿ‘จโ€๐ŸŽจ", + keywords: ["man_artist", "painter", "man", "human"], + name: "man artist", + slug: "man_artist", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐ŸŽจ": Emoji( + char: "๐Ÿ‘ฉโ€๐ŸŽจ", + keywords: ["woman_artist", "painter", "woman", "human"], + name: "woman artist", + slug: "woman_artist", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€โœˆ๏ธ": Emoji( + char: "๐Ÿง‘โ€โœˆ๏ธ", + keywords: ["pilot", "fly", "plane", "airplane"], + name: "pilot", + slug: "pilot", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€โœˆ๏ธ": Emoji( + char: "๐Ÿ‘จโ€โœˆ๏ธ", + keywords: ["man_pilot", "aviator", "plane", "man", "human"], + name: "man pilot", + slug: "man_pilot", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€โœˆ๏ธ": Emoji( + char: "๐Ÿ‘ฉโ€โœˆ๏ธ", + keywords: ["woman_pilot", "aviator", "plane", "woman", "human"], + name: "woman pilot", + slug: "woman_pilot", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿš€": Emoji( + char: "๐Ÿง‘โ€๐Ÿš€", + keywords: ["astronaut", "outerspace"], + name: "astronaut", + slug: "astronaut", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿš€": Emoji( + char: "๐Ÿ‘จโ€๐Ÿš€", + keywords: ["man_astronaut", "space", "rocket", "man", "human"], + name: "man astronaut", + slug: "man_astronaut", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿš€": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿš€", + keywords: ["woman_astronaut", "space", "rocket", "woman", "human"], + name: "woman astronaut", + slug: "woman_astronaut", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿš’": Emoji( + char: "๐Ÿง‘โ€๐Ÿš’", + keywords: ["firefighter", "fire"], + name: "firefighter", + slug: "firefighter", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿš’": Emoji( + char: "๐Ÿ‘จโ€๐Ÿš’", + keywords: ["man_firefighter", "fireman", "man", "human"], + name: "man firefighter", + slug: "man_firefighter", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฉโ€๐Ÿš’": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿš’", + keywords: ["woman_firefighter", "fireman", "woman", "human"], + name: "woman firefighter", + slug: "woman_firefighter", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฎ": Emoji( + char: "๐Ÿ‘ฎ", + keywords: ["police_officer", "cop"], + name: "police officer", + slug: "police_officer", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ฎโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‘ฎโ€โ™‚๏ธ", + keywords: [ + "man_police_officer", + "man", + "police", + "law", + "legal", + "enforcement", + "arrest", + "911" + ], + name: "man police officer", + slug: "man_police_officer", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฎโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‘ฎโ€โ™€๏ธ", + keywords: [ + "woman_police_officer", + "woman", + "police", + "law", + "legal", + "enforcement", + "arrest", + "911", + "female" + ], + name: "woman police officer", + slug: "woman_police_officer", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ•ต๏ธ": Emoji( + char: "๐Ÿ•ต๏ธ", + keywords: ["detective", "human", "spy", "detective"], + name: "detective", + slug: "detective", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 2.0, + ), + "๐Ÿ•ต๏ธโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ•ต๏ธโ€โ™‚๏ธ", + keywords: ["man_detective", "crime"], + name: "man detective", + slug: "man_detective", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ•ต๏ธโ€โ™€๏ธ": Emoji( + char: "๐Ÿ•ต๏ธโ€โ™€๏ธ", + keywords: [ + "woman_detective", + "human", + "spy", + "detective", + "female", + "woman" + ], + name: "woman detective", + slug: "woman_detective", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’‚": Emoji( + char: "๐Ÿ’‚", + keywords: ["guard", "protect"], + name: "guard", + slug: "guard", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ’‚โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ’‚โ€โ™‚๏ธ", + keywords: ["man_guard", "uk", "gb", "british", "male", "guy", "royal"], + name: "man guard", + slug: "man_guard", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’‚โ€โ™€๏ธ": Emoji( + char: "๐Ÿ’‚โ€โ™€๏ธ", + keywords: [ + "woman_guard", + "uk", + "gb", + "british", + "female", + "royal", + "woman" + ], + name: "woman guard", + slug: "woman_guard", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿฅท": Emoji( + char: "๐Ÿฅท", + keywords: ["ninja", "ninjutsu", "skills", "japanese"], + name: "ninja", + slug: "ninja", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿ‘ท": Emoji( + char: "๐Ÿ‘ท", + keywords: ["construction_worker", "labor", "build"], + name: "construction worker", + slug: "construction_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ทโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‘ทโ€โ™‚๏ธ", + keywords: [ + "man_construction_worker", + "male", + "human", + "wip", + "guy", + "build", + "construction", + "worker", + "labor" + ], + name: "man construction worker", + slug: "man_construction_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ทโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‘ทโ€โ™€๏ธ", + keywords: [ + "woman_construction_worker", + "female", + "human", + "wip", + "build", + "construction", + "worker", + "labor", + "woman" + ], + name: "woman construction worker", + slug: "woman_construction_worker", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿซ…": Emoji( + char: "๐Ÿซ…", + keywords: ["person with crown", "royalty", "power"], + name: "person with crown", + slug: "person_with_crown", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿคด": Emoji( + char: "๐Ÿคด", + keywords: ["prince", "boy", "man", "male", "crown", "royal", "king"], + name: "prince", + slug: "prince", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿ‘ธ": Emoji( + char: "๐Ÿ‘ธ", + keywords: [ + "princess", + "girl", + "woman", + "female", + "blond", + "crown", + "royal", + "queen" + ], + name: "princess", + slug: "princess", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ณ": Emoji( + char: "๐Ÿ‘ณ", + keywords: ["person_wearing_turban", "headdress"], + name: "person wearing turban", + slug: "person_wearing_turban", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ณโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‘ณโ€โ™‚๏ธ", + keywords: ["man_wearing_turban", "male", "indian", "hinduism", "arabs"], + name: "man wearing turban", + slug: "man_wearing_turban", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ณโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‘ณโ€โ™€๏ธ", + keywords: [ + "woman_wearing_turban", + "female", + "indian", + "hinduism", + "arabs", + "woman" + ], + name: "woman wearing turban", + slug: "woman_wearing_turban", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฒ": Emoji( + char: "๐Ÿ‘ฒ", + keywords: ["man_with_skullcap", "male", "boy", "chinese"], + name: "person with skullcap", + slug: "person_with_skullcap", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿง•": Emoji( + char: "๐Ÿง•", + keywords: ["woman_with_headscarf", "female", "hijab", "mantilla", "tichel"], + name: "woman with headscarf", + slug: "woman_with_headscarf", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿคต": Emoji( + char: "๐Ÿคต", + keywords: ["man_in_tuxedo", "couple", "marriage", "wedding", "groom"], + name: "person in tuxedo", + slug: "person_in_tuxedo", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคตโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคตโ€โ™‚๏ธ", + keywords: ["man in tuxedo", "formal", "fashion"], + name: "man in tuxedo", + slug: "man_in_tuxedo", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿคตโ€โ™€๏ธ": Emoji( + char: "๐Ÿคตโ€โ™€๏ธ", + keywords: ["woman in tuxedo", "formal", "fashion"], + name: "woman in tuxedo", + slug: "woman_in_tuxedo", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿ‘ฐ": Emoji( + char: "๐Ÿ‘ฐ", + keywords: [ + "bride_with_veil", + "couple", + "marriage", + "wedding", + "woman", + "bride" + ], + name: "person with veil", + slug: "person_with_veil", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ‘ฐโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‘ฐโ€โ™‚๏ธ", + keywords: ["man with veil", "wedding", "marriage"], + name: "man with veil", + slug: "man_with_veil", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿ‘ฐโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‘ฐโ€โ™€๏ธ", + keywords: ["woman with veil", "wedding", "marriage"], + name: "woman with veil", + slug: "woman_with_veil", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿคฐ": Emoji( + char: "๐Ÿคฐ", + keywords: ["pregnant_woman", "baby"], + name: "pregnant woman", + slug: "pregnant_woman", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿซƒ": Emoji( + char: "๐Ÿซƒ", + keywords: ["pregnant man", "baby", "belly"], + name: "pregnant man", + slug: "pregnant_man", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿซ„": Emoji( + char: "๐Ÿซ„", + keywords: ["pregnant person", "baby", "belly"], + name: "pregnant person", + slug: "pregnant_person", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 14.0, + ), + "๐Ÿคฑ": Emoji( + char: "๐Ÿคฑ", + keywords: ["breast_feeding", "nursing", "baby"], + name: "breast-feeding", + slug: "breast_feeding", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿ‘ฉโ€๐Ÿผ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿผ", + keywords: ["woman feeding baby", "birth", "food"], + name: "woman feeding baby", + slug: "woman_feeding_baby", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿ‘จโ€๐Ÿผ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿผ", + keywords: ["man feeding baby", "birth", "food"], + name: "man feeding baby", + slug: "man_feeding_baby", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿง‘โ€๐Ÿผ": Emoji( + char: "๐Ÿง‘โ€๐Ÿผ", + keywords: ["person feeding baby", "birth", "food"], + name: "person feeding baby", + slug: "person_feeding_baby", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿ‘ผ": Emoji( + char: "๐Ÿ‘ผ", + keywords: ["baby_angel", "heaven", "wings", "halo"], + name: "baby angel", + slug: "baby_angel", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐ŸŽ…": Emoji( + char: "๐ŸŽ…", + keywords: [ + "santa_claus", + "festival", + "man", + "male", + "xmas", + "father christmas" + ], + name: "Santa Claus", + slug: "santa_claus", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿคถ": Emoji( + char: "๐Ÿคถ", + keywords: ["mrs_claus", "woman", "female", "xmas", "mother christmas"], + name: "Mrs. Claus", + slug: "mrs_claus", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿง‘โ€๐ŸŽ„": Emoji( + char: "๐Ÿง‘โ€๐ŸŽ„", + keywords: ["mx claus", "christmas"], + name: "mx claus", + slug: "mx_claus", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.0, + ), + "๐Ÿฆธ": Emoji( + char: "๐Ÿฆธ", + keywords: ["superhero", "marvel"], + name: "superhero", + slug: "superhero", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿฆธโ€โ™‚๏ธ": Emoji( + char: "๐Ÿฆธโ€โ™‚๏ธ", + keywords: ["man_superhero", "man", "male", "good", "hero", "superpowers"], + name: "man superhero", + slug: "man_superhero", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿฆธโ€โ™€๏ธ": Emoji( + char: "๐Ÿฆธโ€โ™€๏ธ", + keywords: [ + "woman_superhero", + "woman", + "female", + "good", + "heroine", + "superpowers" + ], + name: "woman superhero", + slug: "woman_superhero", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿฆน": Emoji( + char: "๐Ÿฆน", + keywords: ["supervillain", "marvel"], + name: "supervillain", + slug: "supervillain", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿฆนโ€โ™‚๏ธ": Emoji( + char: "๐Ÿฆนโ€โ™‚๏ธ", + keywords: [ + "man_supervillain", + "man", + "male", + "evil", + "bad", + "criminal", + "hero", + "superpowers" + ], + name: "man supervillain", + slug: "man_supervillain", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿฆนโ€โ™€๏ธ": Emoji( + char: "๐Ÿฆนโ€โ™€๏ธ", + keywords: [ + "woman_supervillain", + "woman", + "female", + "evil", + "bad", + "criminal", + "heroine", + "superpowers" + ], + name: "woman supervillain", + slug: "woman_supervillain", + group: EmojiGroup.peopleBody, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 11.0, + ), + "๐Ÿง™": Emoji( + char: "๐Ÿง™", + keywords: ["mage", "magic"], + name: "mage", + slug: "mage", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง™โ€โ™‚๏ธ": Emoji( + char: "๐Ÿง™โ€โ™‚๏ธ", + keywords: ["man_mage", "man", "male", "mage", "sorcerer"], + name: "man mage", + slug: "man_mage", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง™โ€โ™€๏ธ": Emoji( + char: "๐Ÿง™โ€โ™€๏ธ", + keywords: ["woman_mage", "woman", "female", "mage", "witch"], + name: "woman mage", + slug: "woman_mage", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงš": Emoji( + char: "๐Ÿงš", + keywords: ["fairy", "wings", "magical"], + name: "fairy", + slug: "fairy", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงšโ€โ™‚๏ธ": Emoji( + char: "๐Ÿงšโ€โ™‚๏ธ", + keywords: ["man_fairy", "man", "male"], + name: "man fairy", + slug: "man_fairy", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงšโ€โ™€๏ธ": Emoji( + char: "๐Ÿงšโ€โ™€๏ธ", + keywords: ["woman_fairy", "woman", "female"], + name: "woman fairy", + slug: "woman_fairy", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง›": Emoji( + char: "๐Ÿง›", + keywords: ["vampire", "blood", "twilight"], + name: "vampire", + slug: "vampire", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง›โ€โ™‚๏ธ": Emoji( + char: "๐Ÿง›โ€โ™‚๏ธ", + keywords: ["man_vampire", "man", "male", "dracula"], + name: "man vampire", + slug: "man_vampire", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง›โ€โ™€๏ธ": Emoji( + char: "๐Ÿง›โ€โ™€๏ธ", + keywords: ["woman_vampire", "woman", "female"], + name: "woman vampire", + slug: "woman_vampire", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงœ": Emoji( + char: "๐Ÿงœ", + keywords: ["merperson", "sea"], + name: "merperson", + slug: "merperson", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงœโ€โ™‚๏ธ": Emoji( + char: "๐Ÿงœโ€โ™‚๏ธ", + keywords: ["merman", "man", "male", "triton"], + name: "merman", + slug: "merman", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงœโ€โ™€๏ธ": Emoji( + char: "๐Ÿงœโ€โ™€๏ธ", + keywords: ["mermaid", "woman", "female", "merwoman", "ariel"], + name: "mermaid", + slug: "mermaid", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["elf", "magical"], + name: "elf", + slug: "elf", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงโ€โ™‚๏ธ": Emoji( + char: "๐Ÿงโ€โ™‚๏ธ", + keywords: ["man_elf", "man", "male"], + name: "man elf", + slug: "man_elf", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงโ€โ™€๏ธ": Emoji( + char: "๐Ÿงโ€โ™€๏ธ", + keywords: ["woman_elf", "woman", "female"], + name: "woman elf", + slug: "woman_elf", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿงž": Emoji( + char: "๐Ÿงž", + keywords: ["genie", "magical", "wishes"], + name: "genie", + slug: "genie", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿงžโ€โ™‚๏ธ": Emoji( + char: "๐Ÿงžโ€โ™‚๏ธ", + keywords: ["man_genie", "man", "male"], + name: "man genie", + slug: "man_genie", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿงžโ€โ™€๏ธ": Emoji( + char: "๐Ÿงžโ€โ™€๏ธ", + keywords: ["woman_genie", "woman", "female"], + name: "woman genie", + slug: "woman_genie", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸงŸ": Emoji( + char: "๐ŸงŸ", + keywords: ["zombie", "dead"], + name: "zombie", + slug: "zombie", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸงŸโ€โ™‚๏ธ": Emoji( + char: "๐ŸงŸโ€โ™‚๏ธ", + keywords: [ + "man_zombie", + "man", + "male", + "dracula", + "undead", + "walking dead" + ], + name: "man zombie", + slug: "man_zombie", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸงŸโ€โ™€๏ธ": Emoji( + char: "๐ŸงŸโ€โ™€๏ธ", + keywords: ["woman_zombie", "woman", "female", "undead", "walking dead"], + name: "woman zombie", + slug: "woman_zombie", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸงŒ": Emoji( + char: "๐ŸงŒ", + keywords: ["troll", "mystical", "monster"], + name: "troll", + slug: "troll", + group: EmojiGroup.peopleBody, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ’†": Emoji( + char: "๐Ÿ’†", + keywords: ["person_getting_massage", "relax"], + name: "person getting massage", + slug: "person_getting_massage", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ’†โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ’†โ€โ™‚๏ธ", + keywords: ["man_getting_massage", "male", "boy", "man", "head"], + name: "man getting massage", + slug: "man_getting_massage", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’†โ€โ™€๏ธ": Emoji( + char: "๐Ÿ’†โ€โ™€๏ธ", + keywords: ["woman_getting_massage", "female", "girl", "woman", "head"], + name: "woman getting massage", + slug: "woman_getting_massage", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’‡": Emoji( + char: "๐Ÿ’‡", + keywords: ["person_getting_haircut", "hairstyle"], + name: "person getting haircut", + slug: "person_getting_haircut", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ’‡โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ’‡โ€โ™‚๏ธ", + keywords: ["man_getting_haircut", "male", "boy", "man"], + name: "man getting haircut", + slug: "man_getting_haircut", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’‡โ€โ™€๏ธ": Emoji( + char: "๐Ÿ’‡โ€โ™€๏ธ", + keywords: ["woman_getting_haircut", "female", "girl", "woman"], + name: "woman getting haircut", + slug: "woman_getting_haircut", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšถ": Emoji( + char: "๐Ÿšถ", + keywords: ["person_walking", "move"], + name: "person walking", + slug: "person_walking", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿšถโ€โ™‚๏ธ": Emoji( + char: "๐Ÿšถโ€โ™‚๏ธ", + keywords: ["man_walking", "human", "feet", "steps"], + name: "man walking", + slug: "man_walking", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšถโ€โ™€๏ธ": Emoji( + char: "๐Ÿšถโ€โ™€๏ธ", + keywords: ["woman_walking", "human", "feet", "steps", "woman", "female"], + name: "woman walking", + slug: "woman_walking", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["person_standing", "still"], + name: "person standing", + slug: "person_standing", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿงโ€โ™‚๏ธ": Emoji( + char: "๐Ÿงโ€โ™‚๏ธ", + keywords: ["man_standing", "still"], + name: "man standing", + slug: "man_standing", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿงโ€โ™€๏ธ": Emoji( + char: "๐Ÿงโ€โ™€๏ธ", + keywords: ["woman_standing", "still"], + name: "woman standing", + slug: "woman_standing", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐ŸงŽ": Emoji( + char: "๐ŸงŽ", + keywords: ["person_kneeling", "pray", "respectful"], + name: "person kneeling", + slug: "person_kneeling", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐ŸงŽโ€โ™‚๏ธ": Emoji( + char: "๐ŸงŽโ€โ™‚๏ธ", + keywords: ["man_kneeling", "pray", "respectful"], + name: "man kneeling", + slug: "man_kneeling", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐ŸงŽโ€โ™€๏ธ": Emoji( + char: "๐ŸงŽโ€โ™€๏ธ", + keywords: ["woman_kneeling", "respectful", "pray"], + name: "woman kneeling", + slug: "woman_kneeling", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿง‘โ€๐Ÿฆฏ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆฏ", + keywords: ["person_with_probing_cane", "blind"], + name: "person with white cane", + slug: "person_with_white_cane", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿฆฏ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆฏ", + keywords: ["man_with_probing_cane", "blind"], + name: "man with white cane", + slug: "man_with_white_cane", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ฉโ€๐Ÿฆฏ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆฏ", + keywords: ["woman_with_probing_cane", "blind"], + name: "woman with white cane", + slug: "woman_with_white_cane", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿง‘โ€๐Ÿฆผ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆผ", + keywords: ["person_in_motorized_wheelchair", "disability", "accessibility"], + name: "person in motorized wheelchair", + slug: "person_in_motorized_wheelchair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿฆผ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆผ", + keywords: ["man_in_motorized_wheelchair", "disability", "accessibility"], + name: "man in motorized wheelchair", + slug: "man_in_motorized_wheelchair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ฉโ€๐Ÿฆผ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆผ", + keywords: ["woman_in_motorized_wheelchair", "disability", "accessibility"], + name: "woman in motorized wheelchair", + slug: "woman_in_motorized_wheelchair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿง‘โ€๐Ÿฆฝ": Emoji( + char: "๐Ÿง‘โ€๐Ÿฆฝ", + keywords: ["person_in_manual_wheelchair", "disability", "accessibility"], + name: "person in manual wheelchair", + slug: "person_in_manual_wheelchair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.1, + unicodeVersion: 12.1, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.1, + ), + "๐Ÿ‘จโ€๐Ÿฆฝ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿฆฝ", + keywords: ["man_in_manual_wheelchair", "disability", "accessibility"], + name: "man in manual wheelchair", + slug: "man_in_manual_wheelchair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ฉโ€๐Ÿฆฝ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿฆฝ", + keywords: ["woman_in_manual_wheelchair", "disability", "accessibility"], + name: "woman in manual wheelchair", + slug: "woman_in_manual_wheelchair", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿƒ": Emoji( + char: "๐Ÿƒ", + keywords: ["person_running", "move"], + name: "person running", + slug: "person_running", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿƒโ€โ™‚๏ธ": Emoji( + char: "๐Ÿƒโ€โ™‚๏ธ", + keywords: ["man_running", "man", "walking", "exercise", "race", "running"], + name: "man running", + slug: "man_running", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿƒโ€โ™€๏ธ": Emoji( + char: "๐Ÿƒโ€โ™€๏ธ", + keywords: [ + "woman_running", + "woman", + "walking", + "exercise", + "race", + "running", + "female" + ], + name: "woman running", + slug: "woman_running", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ’ƒ": Emoji( + char: "๐Ÿ’ƒ", + keywords: ["woman_dancing", "female", "girl", "woman", "fun"], + name: "woman dancing", + slug: "woman_dancing", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ•บ": Emoji( + char: "๐Ÿ•บ", + keywords: ["man_dancing", "male", "boy", "fun", "dancer"], + name: "man dancing", + slug: "man_dancing", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿ•ด๏ธ": Emoji( + char: "๐Ÿ•ด๏ธ", + keywords: [ + "man_in_suit_levitating", + "suit", + "business", + "levitate", + "hover", + "jump" + ], + name: "person in suit levitating", + slug: "person_in_suit_levitating", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‘ฏ": Emoji( + char: "๐Ÿ‘ฏ", + keywords: ["people_with_bunny_ears", "perform", "costume"], + name: "people with bunny ears", + slug: "people_with_bunny_ears", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘ฏโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‘ฏโ€โ™‚๏ธ", + keywords: ["men_with_bunny_ears", "male", "bunny", "men", "boys"], + name: "men with bunny ears", + slug: "men_with_bunny_ears", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฏโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‘ฏโ€โ™€๏ธ", + keywords: ["women_with_bunny_ears", "female", "bunny", "women", "girls"], + name: "women with bunny ears", + slug: "women_with_bunny_ears", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿง–": Emoji( + char: "๐Ÿง–", + keywords: ["person_in_steamy_room", "relax", "spa"], + name: "person in steamy room", + slug: "person_in_steamy_room", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง–โ€โ™‚๏ธ": Emoji( + char: "๐Ÿง–โ€โ™‚๏ธ", + keywords: [ + "man_in_steamy_room", + "male", + "man", + "spa", + "steamroom", + "sauna" + ], + name: "man in steamy room", + slug: "man_in_steamy_room", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง–โ€โ™€๏ธ": Emoji( + char: "๐Ÿง–โ€โ™€๏ธ", + keywords: [ + "woman_in_steamy_room", + "female", + "woman", + "spa", + "steamroom", + "sauna" + ], + name: "woman in steamy room", + slug: "woman_in_steamy_room", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง—": Emoji( + char: "๐Ÿง—", + keywords: ["person_climbing", "sport"], + name: "person climbing", + slug: "person_climbing", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง—โ€โ™‚๏ธ": Emoji( + char: "๐Ÿง—โ€โ™‚๏ธ", + keywords: ["man_climbing", "sports", "hobby", "man", "male", "rock"], + name: "man climbing", + slug: "man_climbing", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง—โ€โ™€๏ธ": Emoji( + char: "๐Ÿง—โ€โ™€๏ธ", + keywords: ["woman_climbing", "sports", "hobby", "woman", "female", "rock"], + name: "woman climbing", + slug: "woman_climbing", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿคบ": Emoji( + char: "๐Ÿคบ", + keywords: ["person_fencing", "sports", "fencing", "sword"], + name: "person fencing", + slug: "person_fencing", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ‡": Emoji( + char: "๐Ÿ‡", + keywords: [ + "horse_racing", + "animal", + "betting", + "competition", + "gambling", + "luck" + ], + name: "horse racing", + slug: "horse_racing", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "โ›ท๏ธ": Emoji( + char: "โ›ท๏ธ", + keywords: ["skier", "sports", "winter", "snow"], + name: "skier", + slug: "skier", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ‚": Emoji( + char: "๐Ÿ‚", + keywords: ["snowboarder", "sports", "winter"], + name: "snowboarder", + slug: "snowboarder", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐ŸŒ๏ธ": Emoji( + char: "๐ŸŒ๏ธ", + keywords: ["person_golfing", "sports", "business"], + name: "person golfing", + slug: "person_golfing", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐ŸŒ๏ธโ€โ™‚๏ธ": Emoji( + char: "๐ŸŒ๏ธโ€โ™‚๏ธ", + keywords: ["man_golfing", "sport"], + name: "man golfing", + slug: "man_golfing", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐ŸŒ๏ธโ€โ™€๏ธ": Emoji( + char: "๐ŸŒ๏ธโ€โ™€๏ธ", + keywords: ["woman_golfing", "sports", "business", "woman", "female"], + name: "woman golfing", + slug: "woman_golfing", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ„": Emoji( + char: "๐Ÿ„", + keywords: ["person_surfing", "sport", "sea"], + name: "person surfing", + slug: "person_surfing", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ„โ€โ™‚๏ธ": Emoji( + char: "๐Ÿ„โ€โ™‚๏ธ", + keywords: ["man_surfing", "sports", "ocean", "sea", "summer", "beach"], + name: "man surfing", + slug: "man_surfing", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ„โ€โ™€๏ธ": Emoji( + char: "๐Ÿ„โ€โ™€๏ธ", + keywords: [ + "woman_surfing", + "sports", + "ocean", + "sea", + "summer", + "beach", + "woman", + "female" + ], + name: "woman surfing", + slug: "woman_surfing", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšฃ": Emoji( + char: "๐Ÿšฃ", + keywords: ["person_rowing_boat", "sport", "move"], + name: "person rowing boat", + slug: "person_rowing_boat", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿšฃโ€โ™‚๏ธ": Emoji( + char: "๐Ÿšฃโ€โ™‚๏ธ", + keywords: ["man_rowing_boat", "sports", "hobby", "water", "ship"], + name: "man rowing boat", + slug: "man_rowing_boat", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšฃโ€โ™€๏ธ": Emoji( + char: "๐Ÿšฃโ€โ™€๏ธ", + keywords: [ + "woman_rowing_boat", + "sports", + "hobby", + "water", + "ship", + "woman", + "female" + ], + name: "woman rowing boat", + slug: "woman_rowing_boat", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐ŸŠ": Emoji( + char: "๐ŸŠ", + keywords: ["person_swimming", "sport", "pool"], + name: "person swimming", + slug: "person_swimming", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐ŸŠโ€โ™‚๏ธ": Emoji( + char: "๐ŸŠโ€โ™‚๏ธ", + keywords: [ + "man_swimming", + "sports", + "exercise", + "human", + "athlete", + "water", + "summer" + ], + name: "man swimming", + slug: "man_swimming", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐ŸŠโ€โ™€๏ธ": Emoji( + char: "๐ŸŠโ€โ™€๏ธ", + keywords: [ + "woman_swimming", + "sports", + "exercise", + "human", + "athlete", + "water", + "summer", + "woman", + "female" + ], + name: "woman swimming", + slug: "woman_swimming", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "โ›น๏ธ": Emoji( + char: "โ›น๏ธ", + keywords: ["person_bouncing_ball", "sports", "human"], + name: "person bouncing ball", + slug: "person_bouncing_ball", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 2.0, + ), + "โ›น๏ธโ€โ™‚๏ธ": Emoji( + char: "โ›น๏ธโ€โ™‚๏ธ", + keywords: ["man_bouncing_ball", "sport"], + name: "man bouncing ball", + slug: "man_bouncing_ball", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "โ›น๏ธโ€โ™€๏ธ": Emoji( + char: "โ›น๏ธโ€โ™€๏ธ", + keywords: ["woman_bouncing_ball", "sports", "human", "woman", "female"], + name: "woman bouncing ball", + slug: "woman_bouncing_ball", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‹๏ธ": Emoji( + char: "๐Ÿ‹๏ธ", + keywords: ["person_lifting_weights", "sports", "training", "exercise"], + name: "person lifting weights", + slug: "person_lifting_weights", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 2.0, + ), + "๐Ÿ‹๏ธโ€โ™‚๏ธ": Emoji( + char: "๐Ÿ‹๏ธโ€โ™‚๏ธ", + keywords: ["man_lifting_weights", "sport"], + name: "man lifting weights", + slug: "man_lifting_weights", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿ‹๏ธโ€โ™€๏ธ": Emoji( + char: "๐Ÿ‹๏ธโ€โ™€๏ธ", + keywords: [ + "woman_lifting_weights", + "sports", + "training", + "exercise", + "woman", + "female" + ], + name: "woman lifting weights", + slug: "woman_lifting_weights", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšด": Emoji( + char: "๐Ÿšด", + keywords: ["person_biking", "sport", "move"], + name: "person biking", + slug: "person_biking", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿšดโ€โ™‚๏ธ": Emoji( + char: "๐Ÿšดโ€โ™‚๏ธ", + keywords: ["man_biking", "sports", "bike", "exercise", "hipster"], + name: "man biking", + slug: "man_biking", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšดโ€โ™€๏ธ": Emoji( + char: "๐Ÿšดโ€โ™€๏ธ", + keywords: [ + "woman_biking", + "sports", + "bike", + "exercise", + "hipster", + "woman", + "female" + ], + name: "woman biking", + slug: "woman_biking", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšต": Emoji( + char: "๐Ÿšต", + keywords: ["person_mountain_biking", "sport", "move"], + name: "person mountain biking", + slug: "person_mountain_biking", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿšตโ€โ™‚๏ธ": Emoji( + char: "๐Ÿšตโ€โ™‚๏ธ", + keywords: [ + "man_mountain_biking", + "transportation", + "sports", + "human", + "race", + "bike" + ], + name: "man mountain biking", + slug: "man_mountain_biking", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿšตโ€โ™€๏ธ": Emoji( + char: "๐Ÿšตโ€โ™€๏ธ", + keywords: [ + "woman_mountain_biking", + "transportation", + "sports", + "human", + "race", + "bike", + "woman", + "female" + ], + name: "woman mountain biking", + slug: "woman_mountain_biking", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคธ": Emoji( + char: "๐Ÿคธ", + keywords: ["person_cartwheeling", "sport", "gymnastic"], + name: "person cartwheeling", + slug: "person_cartwheeling", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคธโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคธโ€โ™‚๏ธ", + keywords: ["man_cartwheeling", "gymnastics"], + name: "man cartwheeling", + slug: "man_cartwheeling", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคธโ€โ™€๏ธ": Emoji( + char: "๐Ÿคธโ€โ™€๏ธ", + keywords: ["woman_cartwheeling", "gymnastics"], + name: "woman cartwheeling", + slug: "woman_cartwheeling", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคผ": Emoji( + char: "๐Ÿคผ", + keywords: ["people_wrestling", "sport"], + name: "people wrestling", + slug: "people_wrestling", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿคผโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคผโ€โ™‚๏ธ", + keywords: ["men_wrestling", "sports", "wrestlers"], + name: "men wrestling", + slug: "men_wrestling", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿคผโ€โ™€๏ธ": Emoji( + char: "๐Ÿคผโ€โ™€๏ธ", + keywords: ["women_wrestling", "sports", "wrestlers"], + name: "women wrestling", + slug: "women_wrestling", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿคฝ": Emoji( + char: "๐Ÿคฝ", + keywords: ["person_playing_water_polo", "sport"], + name: "person playing water polo", + slug: "person_playing_water_polo", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคฝโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคฝโ€โ™‚๏ธ", + keywords: ["man_playing_water_polo", "sports", "pool"], + name: "man playing water polo", + slug: "man_playing_water_polo", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคฝโ€โ™€๏ธ": Emoji( + char: "๐Ÿคฝโ€โ™€๏ธ", + keywords: ["woman_playing_water_polo", "sports", "pool"], + name: "woman playing water polo", + slug: "woman_playing_water_polo", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคพ": Emoji( + char: "๐Ÿคพ", + keywords: ["person_playing_handball", "sport"], + name: "person playing handball", + slug: "person_playing_handball", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคพโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคพโ€โ™‚๏ธ", + keywords: ["man_playing_handball", "sports"], + name: "man playing handball", + slug: "man_playing_handball", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคพโ€โ™€๏ธ": Emoji( + char: "๐Ÿคพโ€โ™€๏ธ", + keywords: ["woman_playing_handball", "sports"], + name: "woman playing handball", + slug: "woman_playing_handball", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคน": Emoji( + char: "๐Ÿคน", + keywords: ["person_juggling", "performance", "balance"], + name: "person juggling", + slug: "person_juggling", + group: EmojiGroup.peopleBody, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 3.0, + ), + "๐Ÿคนโ€โ™‚๏ธ": Emoji( + char: "๐Ÿคนโ€โ™‚๏ธ", + keywords: ["man_juggling", "juggle", "balance", "skill", "multitask"], + name: "man juggling", + slug: "man_juggling", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿคนโ€โ™€๏ธ": Emoji( + char: "๐Ÿคนโ€โ™€๏ธ", + keywords: ["woman_juggling", "juggle", "balance", "skill", "multitask"], + name: "woman juggling", + slug: "woman_juggling", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง˜": Emoji( + char: "๐Ÿง˜", + keywords: ["person_in_lotus_position", "meditate"], + name: "person in lotus position", + slug: "person_in_lotus_position", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง˜โ€โ™‚๏ธ": Emoji( + char: "๐Ÿง˜โ€โ™‚๏ธ", + keywords: [ + "man_in_lotus_position", + "man", + "male", + "meditation", + "yoga", + "serenity", + "zen", + "mindfulness" + ], + name: "man in lotus position", + slug: "man_in_lotus_position", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿง˜โ€โ™€๏ธ": Emoji( + char: "๐Ÿง˜โ€โ™€๏ธ", + keywords: [ + "woman_in_lotus_position", + "woman", + "female", + "meditation", + "yoga", + "serenity", + "zen", + "mindfulness" + ], + name: "woman in lotus position", + slug: "woman_in_lotus_position", + group: EmojiGroup.peopleBody, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 5.0, + ), + "๐Ÿ›€": Emoji( + char: "๐Ÿ›€", + keywords: ["person_taking_bath", "clean", "shower", "bathroom"], + name: "person taking bath", + slug: "person_taking_bath", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 1.0, + ), + "๐Ÿ›Œ": Emoji( + char: "๐Ÿ›Œ", + keywords: ["person_in_bed", "bed", "rest"], + name: "person in bed", + slug: "person_in_bed", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 4.0, + ), + "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘": Emoji( + char: "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘", + keywords: ["people_holding_hands", "friendship"], + name: "people holding hands", + slug: "people_holding_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ญ": Emoji( + char: "๐Ÿ‘ญ", + keywords: [ + "women_holding_hands", + "pair", + "friendship", + "couple", + "love", + "like", + "female", + "people", + "human" + ], + name: "women holding hands", + slug: "women_holding_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ซ": Emoji( + char: "๐Ÿ‘ซ", + keywords: [ + "woman_and_man_holding_hands", + "pair", + "people", + "human", + "love", + "date", + "dating", + "like", + "affection", + "valentines", + "marriage" + ], + name: "woman and man holding hands", + slug: "woman_and_man_holding_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ‘ฌ": Emoji( + char: "๐Ÿ‘ฌ", + keywords: [ + "men_holding_hands", + "pair", + "couple", + "love", + "like", + "bromance", + "friendship", + "people", + "human" + ], + name: "men holding hands", + slug: "men_holding_hands", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 12.0, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: [ + "kiss", + "pair", + "valentines", + "love", + "like", + "dating", + "marriage" + ], + name: "kiss", + slug: "kiss", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": Emoji( + char: "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ", + keywords: ["kiss_woman_man", "love"], + name: "kiss woman, man", + slug: "kiss_woman_man", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": Emoji( + char: "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ", + keywords: [ + "kiss_man_man", + "pair", + "valentines", + "love", + "like", + "dating", + "marriage" + ], + name: "kiss man, man", + slug: "kiss_man_man", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ": Emoji( + char: "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ", + keywords: [ + "kiss_woman_woman", + "pair", + "valentines", + "love", + "like", + "dating", + "marriage" + ], + name: "kiss woman, woman", + slug: "kiss_woman_woman", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ’‘": Emoji( + char: "๐Ÿ’‘", + keywords: [ + "couple_with_heart", + "pair", + "love", + "like", + "affection", + "human", + "dating", + "valentines", + "marriage" + ], + name: "couple with heart", + slug: "couple_with_heart", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ": Emoji( + char: "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ", + keywords: ["couple_with_heart_woman_man", "love"], + name: "couple with heart woman, man", + slug: "couple_with_heart_woman_man", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ": Emoji( + char: "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ", + keywords: [ + "couple_with_heart_man_man", + "pair", + "love", + "like", + "affection", + "human", + "dating", + "valentines", + "marriage" + ], + name: "couple with heart man, man", + slug: "couple_with_heart_man_man", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ": Emoji( + char: "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ", + keywords: [ + "couple_with_heart_woman_woman", + "pair", + "love", + "like", + "affection", + "human", + "dating", + "valentines", + "marriage" + ], + name: "couple with heart woman, woman", + slug: "couple_with_heart_woman_woman", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: true, + skinToneSupportUnicodeVersion: 13.1, + ), + "๐Ÿ‘ช": Emoji( + char: "๐Ÿ‘ช", + keywords: [ + "family", + "home", + "parents", + "child", + "mom", + "dad", + "father", + "mother", + "people", + "human" + ], + name: "family", + slug: "family", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ", + keywords: ["family_man_woman_boy", "love"], + name: "family man, woman, boy", + slug: "family_man_woman_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง", + keywords: [ + "family_man_woman_girl", + "home", + "parents", + "people", + "human", + "child" + ], + name: "family man, woman, girl", + slug: "family_man_woman_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_woman_girl_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, woman, girl, boy", + slug: "family_man_woman_girl_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_woman_boy_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, woman, boy, boy", + slug: "family_man_woman_boy_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง", + keywords: [ + "family_man_woman_girl_girl", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, woman, girl, girl", + slug: "family_man_woman_girl_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_man_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, man, boy", + slug: "family_man_man_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง", + keywords: [ + "family_man_man_girl", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, man, girl", + slug: "family_man_man_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_man_girl_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, man, girl, boy", + slug: "family_man_man_girl_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_man_boy_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, man, boy, boy", + slug: "family_man_man_boy_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง", + keywords: [ + "family_man_man_girl_girl", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family man, man, girl, girl", + slug: "family_man_man_girl_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ", + keywords: [ + "family_woman_woman_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family woman, woman, boy", + slug: "family_woman_woman_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง", + keywords: [ + "family_woman_woman_girl", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family woman, woman, girl", + slug: "family_woman_woman_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", + keywords: [ + "family_woman_woman_girl_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family woman, woman, girl, boy", + slug: "family_woman_woman_girl_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", + keywords: [ + "family_woman_woman_boy_boy", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family woman, woman, boy, boy", + slug: "family_woman_woman_boy_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง", + keywords: [ + "family_woman_woman_girl_girl", + "home", + "parents", + "people", + "human", + "children" + ], + name: "family woman, woman, girl, girl", + slug: "family_woman_woman_girl_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฆ", + keywords: ["family_man_boy", "home", "parent", "people", "human", "child"], + name: "family man, boy", + slug: "family_man_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_boy_boy", + "home", + "parent", + "people", + "human", + "children" + ], + name: "family man, boy, boy", + slug: "family_man_boy_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘ง", + keywords: ["family_man_girl", "home", "parent", "people", "human", "child"], + name: "family man, girl", + slug: "family_man_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", + keywords: [ + "family_man_girl_boy", + "home", + "parent", + "people", + "human", + "children" + ], + name: "family man, girl, boy", + slug: "family_man_girl_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง", + keywords: [ + "family_man_girl_girl", + "home", + "parent", + "people", + "human", + "children" + ], + name: "family man, girl, girl", + slug: "family_man_girl_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฆ", + keywords: [ + "family_woman_boy", + "home", + "parent", + "people", + "human", + "child" + ], + name: "family woman, boy", + slug: "family_woman_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", + keywords: [ + "family_woman_boy_boy", + "home", + "parent", + "people", + "human", + "children" + ], + name: "family woman, boy, boy", + slug: "family_woman_boy_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘ง", + keywords: [ + "family_woman_girl", + "home", + "parent", + "people", + "human", + "child" + ], + name: "family woman, girl", + slug: "family_woman_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", + keywords: [ + "family_woman_girl_boy", + "home", + "parent", + "people", + "human", + "children" + ], + name: "family woman, girl, boy", + slug: "family_woman_girl_boy", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": Emoji( + char: "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง", + keywords: [ + "family_woman_girl_girl", + "home", + "parent", + "people", + "human", + "children" + ], + name: "family woman, girl, girl", + slug: "family_woman_girl_girl", + group: EmojiGroup.peopleBody, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ—ฃ๏ธ": Emoji( + char: "๐Ÿ—ฃ๏ธ", + keywords: [ + "speaking_head", + "user", + "person", + "human", + "sing", + "say", + "talk" + ], + name: "speaking head", + slug: "speaking_head", + group: EmojiGroup.peopleBody, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ‘ค": Emoji( + char: "๐Ÿ‘ค", + keywords: ["bust_in_silhouette", "user", "person", "human"], + name: "bust in silhouette", + slug: "bust_in_silhouette", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘ฅ": Emoji( + char: "๐Ÿ‘ฅ", + keywords: [ + "busts_in_silhouette", + "user", + "person", + "human", + "group", + "team" + ], + name: "busts in silhouette", + slug: "busts_in_silhouette", + group: EmojiGroup.peopleBody, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซ‚": Emoji( + char: "๐Ÿซ‚", + keywords: ["people hugging", "care"], + name: "people hugging", + slug: "people_hugging", + group: EmojiGroup.peopleBody, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ‘ฃ": Emoji( + char: "๐Ÿ‘ฃ", + keywords: ["footprints", "feet", "tracking", "walking", "beach"], + name: "footprints", + slug: "footprints", + group: EmojiGroup.peopleBody, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿต": Emoji( + char: "๐Ÿต", + keywords: ["monkey_face", "animal", "nature", "circus"], + name: "monkey face", + slug: "monkey_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: ["monkey", "animal", "nature", "banana", "circus"], + name: "monkey", + slug: "monkey", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["gorilla", "animal", "nature", "circus"], + name: "gorilla", + slug: "gorilla", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆง": Emoji( + char: "๐Ÿฆง", + keywords: ["orangutan", "animal"], + name: "orangutan", + slug: "orangutan", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿถ": Emoji( + char: "๐Ÿถ", + keywords: [ + "dog_face", + "animal", + "friend", + "nature", + "woof", + "puppy", + "pet", + "faithful" + ], + name: "dog face", + slug: "dog_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•": Emoji( + char: "๐Ÿ•", + keywords: ["dog", "animal", "nature", "friend", "doge", "pet", "faithful"], + name: "dog", + slug: "dog", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿฆฎ": Emoji( + char: "๐Ÿฆฎ", + keywords: ["guide_dog", "animal", "blind"], + name: "guide dog", + slug: "guide_dog", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ•โ€๐Ÿฆบ": Emoji( + char: "๐Ÿ•โ€๐Ÿฆบ", + keywords: ["service_dog", "blind", "animal"], + name: "service dog", + slug: "service_dog", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฉ": Emoji( + char: "๐Ÿฉ", + keywords: ["poodle", "dog", "animal", "101", "nature", "pet"], + name: "poodle", + slug: "poodle", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿบ": Emoji( + char: "๐Ÿบ", + keywords: ["wolf", "animal", "nature", "wild"], + name: "wolf", + slug: "wolf", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸฆŠ": Emoji( + char: "๐ŸฆŠ", + keywords: ["fox", "animal", "nature", "face"], + name: "fox", + slug: "fox", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["raccoon", "animal", "nature"], + name: "raccoon", + slug: "raccoon", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฑ": Emoji( + char: "๐Ÿฑ", + keywords: ["cat_face", "animal", "meow", "nature", "pet", "kitten"], + name: "cat face", + slug: "cat_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆ": Emoji( + char: "๐Ÿˆ", + keywords: ["cat", "animal", "meow", "pet", "cats"], + name: "cat", + slug: "cat", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿˆโ€โฌ›": Emoji( + char: "๐Ÿˆโ€โฌ›", + keywords: ["black cat", "superstition", "luck"], + name: "black cat", + slug: "black_cat", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["lion", "animal", "nature"], + name: "lion", + slug: "lion", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฏ": Emoji( + char: "๐Ÿฏ", + keywords: [ + "tiger_face", + "animal", + "cat", + "danger", + "wild", + "nature", + "roar" + ], + name: "tiger face", + slug: "tiger_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ…": Emoji( + char: "๐Ÿ…", + keywords: ["tiger", "animal", "nature", "roar"], + name: "tiger", + slug: "tiger", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ†": Emoji( + char: "๐Ÿ†", + keywords: ["leopard", "animal", "nature"], + name: "leopard", + slug: "leopard", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿด": Emoji( + char: "๐Ÿด", + keywords: ["horse_face", "animal", "brown", "nature"], + name: "horse face", + slug: "horse_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸซŽ": Emoji( + char: "๐ŸซŽ", + keywords: ["moose", "shrek", "canada", "sweden", "sven", "cool"], + name: "moose", + slug: "moose", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿซ": Emoji( + char: "๐Ÿซ", + keywords: ["donkey", "eeyore", "mule"], + name: "donkey", + slug: "donkey", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐ŸŽ": Emoji( + char: "๐ŸŽ", + keywords: ["horse", "animal", "gamble", "luck"], + name: "horse", + slug: "horse", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ„": Emoji( + char: "๐Ÿฆ„", + keywords: ["unicorn", "animal", "nature", "mystical"], + name: "unicorn", + slug: "unicorn", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฆ“": Emoji( + char: "๐Ÿฆ“", + keywords: ["zebra", "animal", "nature", "stripes", "safari"], + name: "zebra", + slug: "zebra", + group: EmojiGroup.animalsNature, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸฆŒ": Emoji( + char: "๐ŸฆŒ", + keywords: ["deer", "animal", "nature", "horns", "venison"], + name: "deer", + slug: "deer", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆฌ": Emoji( + char: "๐Ÿฆฌ", + keywords: ["bison", "ox"], + name: "bison", + slug: "bison", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฎ": Emoji( + char: "๐Ÿฎ", + keywords: ["cow_face", "beef", "ox", "animal", "nature", "moo", "milk"], + name: "cow face", + slug: "cow_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‚": Emoji( + char: "๐Ÿ‚", + keywords: ["ox", "animal", "cow", "beef"], + name: "ox", + slug: "ox", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿƒ": Emoji( + char: "๐Ÿƒ", + keywords: ["water_buffalo", "animal", "nature", "ox", "cow"], + name: "water buffalo", + slug: "water_buffalo", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ„": Emoji( + char: "๐Ÿ„", + keywords: ["cow", "beef", "ox", "animal", "nature", "moo", "milk"], + name: "cow", + slug: "cow", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿท": Emoji( + char: "๐Ÿท", + keywords: ["pig_face", "animal", "oink", "nature"], + name: "pig face", + slug: "pig_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ–": Emoji( + char: "๐Ÿ–", + keywords: ["pig", "animal", "nature"], + name: "pig", + slug: "pig", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ—": Emoji( + char: "๐Ÿ—", + keywords: ["boar", "animal", "nature"], + name: "boar", + slug: "boar", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฝ": Emoji( + char: "๐Ÿฝ", + keywords: ["pig_nose", "animal", "oink"], + name: "pig nose", + slug: "pig_nose", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["ram", "animal", "sheep", "nature"], + name: "ram", + slug: "ram", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: ["ewe", "animal", "nature", "wool", "shipit"], + name: "ewe", + slug: "ewe", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["goat", "animal", "nature"], + name: "goat", + slug: "goat", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿช": Emoji( + char: "๐Ÿช", + keywords: ["camel", "animal", "hot", "desert", "hump"], + name: "camel", + slug: "camel", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซ": Emoji( + char: "๐Ÿซ", + keywords: ["two_hump_camel", "animal", "nature", "hot", "desert", "hump"], + name: "two-hump camel", + slug: "two_hump_camel", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ™": Emoji( + char: "๐Ÿฆ™", + keywords: ["llama", "animal", "nature", "alpaca"], + name: "llama", + slug: "llama", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆ’": Emoji( + char: "๐Ÿฆ’", + keywords: ["giraffe", "animal", "nature", "spots", "safari"], + name: "giraffe", + slug: "giraffe", + group: EmojiGroup.animalsNature, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: ["elephant", "animal", "nature", "nose", "th", "circus"], + name: "elephant", + slug: "elephant", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆฃ": Emoji( + char: "๐Ÿฆฃ", + keywords: ["mammoth", "elephant", "tusks"], + name: "mammoth", + slug: "mammoth", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["rhinoceros", "animal", "nature", "horn"], + name: "rhinoceros", + slug: "rhinoceros", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆ›": Emoji( + char: "๐Ÿฆ›", + keywords: ["hippopotamus", "animal", "nature"], + name: "hippopotamus", + slug: "hippopotamus", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿญ": Emoji( + char: "๐Ÿญ", + keywords: ["mouse_face", "animal", "nature", "cheese_wedge", "rodent"], + name: "mouse face", + slug: "mouse_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["mouse", "animal", "nature", "rodent"], + name: "mouse", + slug: "mouse", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ€": Emoji( + char: "๐Ÿ€", + keywords: ["rat", "animal", "mouse", "rodent"], + name: "rat", + slug: "rat", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿน": Emoji( + char: "๐Ÿน", + keywords: ["hamster", "animal", "nature"], + name: "hamster", + slug: "hamster", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฐ": Emoji( + char: "๐Ÿฐ", + keywords: [ + "rabbit_face", + "animal", + "nature", + "pet", + "spring", + "magic", + "bunny" + ], + name: "rabbit face", + slug: "rabbit_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡": Emoji( + char: "๐Ÿ‡", + keywords: ["rabbit", "animal", "nature", "pet", "magic", "spring"], + name: "rabbit", + slug: "rabbit", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฟ๏ธ": Emoji( + char: "๐Ÿฟ๏ธ", + keywords: ["chipmunk", "animal", "nature", "rodent", "squirrel"], + name: "chipmunk", + slug: "chipmunk", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿฆซ": Emoji( + char: "๐Ÿฆซ", + keywords: ["beaver", "animal", "rodent"], + name: "beaver", + slug: "beaver", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฆ”": Emoji( + char: "๐Ÿฆ”", + keywords: ["hedgehog", "animal", "nature", "spiny"], + name: "hedgehog", + slug: "hedgehog", + group: EmojiGroup.animalsNature, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฆ‡": Emoji( + char: "๐Ÿฆ‡", + keywords: ["bat", "animal", "nature", "blind", "vampire"], + name: "bat", + slug: "bat", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿป": Emoji( + char: "๐Ÿป", + keywords: ["bear", "animal", "nature", "wild"], + name: "bear", + slug: "bear", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿปโ€โ„๏ธ": Emoji( + char: "๐Ÿปโ€โ„๏ธ", + keywords: ["polar bear", "animal", "arctic"], + name: "polar bear", + slug: "polar_bear", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿจ": Emoji( + char: "๐Ÿจ", + keywords: ["koala", "animal", "nature"], + name: "koala", + slug: "koala", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿผ": Emoji( + char: "๐Ÿผ", + keywords: ["panda", "animal", "nature", "panda"], + name: "panda", + slug: "panda", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆฅ": Emoji( + char: "๐Ÿฆฅ", + keywords: ["sloth", "animal"], + name: "sloth", + slug: "sloth", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆฆ": Emoji( + char: "๐Ÿฆฆ", + keywords: ["otter", "animal"], + name: "otter", + slug: "otter", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆจ": Emoji( + char: "๐Ÿฆจ", + keywords: ["skunk", "animal"], + name: "skunk", + slug: "skunk", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆ˜": Emoji( + char: "๐Ÿฆ˜", + keywords: [ + "kangaroo", + "animal", + "nature", + "australia", + "joey", + "hop", + "marsupial" + ], + name: "kangaroo", + slug: "kangaroo", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆก": Emoji( + char: "๐Ÿฆก", + keywords: ["badger", "animal", "nature", "honey"], + name: "badger", + slug: "badger", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿพ": Emoji( + char: "๐Ÿพ", + keywords: [ + "paw_prints", + "animal", + "tracking", + "footprints", + "dog", + "cat", + "pet", + "feet" + ], + name: "paw prints", + slug: "paw_prints", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆƒ": Emoji( + char: "๐Ÿฆƒ", + keywords: ["turkey", "animal", "bird"], + name: "turkey", + slug: "turkey", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: ["chicken", "animal", "cluck", "nature", "bird"], + name: "chicken", + slug: "chicken", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: ["rooster", "animal", "nature", "chicken"], + name: "rooster", + slug: "rooster", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฃ": Emoji( + char: "๐Ÿฃ", + keywords: [ + "hatching_chick", + "animal", + "chicken", + "egg", + "born", + "baby", + "bird" + ], + name: "hatching chick", + slug: "hatching_chick", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["baby_chick", "animal", "chicken", "bird"], + name: "baby chick", + slug: "baby_chick", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["front_facing_baby_chick", "animal", "chicken", "baby", "bird"], + name: "front-facing baby chick", + slug: "front_facing_baby_chick", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["bird", "animal", "nature", "fly", "tweet", "spring"], + name: "bird", + slug: "bird", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["penguin", "animal", "nature"], + name: "penguin", + slug: "penguin", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•Š๏ธ": Emoji( + char: "๐Ÿ•Š๏ธ", + keywords: ["dove", "animal", "bird"], + name: "dove", + slug: "dove", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿฆ…": Emoji( + char: "๐Ÿฆ…", + keywords: ["eagle", "animal", "nature", "bird"], + name: "eagle", + slug: "eagle", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆ†": Emoji( + char: "๐Ÿฆ†", + keywords: ["duck", "animal", "nature", "bird", "mallard"], + name: "duck", + slug: "duck", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆข": Emoji( + char: "๐Ÿฆข", + keywords: ["swan", "animal", "nature", "bird"], + name: "swan", + slug: "swan", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆ‰": Emoji( + char: "๐Ÿฆ‰", + keywords: ["owl", "animal", "nature", "bird", "hoot"], + name: "owl", + slug: "owl", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆค": Emoji( + char: "๐Ÿฆค", + keywords: ["dodo", "animal", "bird"], + name: "dodo", + slug: "dodo", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿชถ": Emoji( + char: "๐Ÿชถ", + keywords: ["feather", "bird", "fly"], + name: "feather", + slug: "feather", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฆฉ": Emoji( + char: "๐Ÿฆฉ", + keywords: ["flamingo", "animal"], + name: "flamingo", + slug: "flamingo", + group: EmojiGroup.animalsNature, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆš": Emoji( + char: "๐Ÿฆš", + keywords: ["peacock", "animal", "nature", "peahen", "bird"], + name: "peacock", + slug: "peacock", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆœ": Emoji( + char: "๐Ÿฆœ", + keywords: ["parrot", "animal", "nature", "bird", "pirate", "talk"], + name: "parrot", + slug: "parrot", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชฝ": Emoji( + char: "๐Ÿชฝ", + keywords: ["wing", "angel", "birds", "flying"], + name: "wing", + slug: "wing", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿฆโ€โฌ›": Emoji( + char: "๐Ÿฆโ€โฌ›", + keywords: ["black bird", "crow"], + name: "black bird", + slug: "black_bird", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿชฟ": Emoji( + char: "๐Ÿชฟ", + keywords: ["goose", "silly", "jemima", "goosebumps"], + name: "goose", + slug: "goose", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿธ": Emoji( + char: "๐Ÿธ", + keywords: ["frog", "animal", "nature", "croak", "toad"], + name: "frog", + slug: "frog", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŠ": Emoji( + char: "๐ŸŠ", + keywords: [ + "crocodile", + "animal", + "nature", + "reptile", + "lizard", + "alligator" + ], + name: "crocodile", + slug: "crocodile", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿข": Emoji( + char: "๐Ÿข", + keywords: ["turtle", "animal", "slow", "nature", "tortoise"], + name: "turtle", + slug: "turtle", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸฆŽ": Emoji( + char: "๐ŸฆŽ", + keywords: ["lizard", "animal", "nature", "reptile"], + name: "lizard", + slug: "lizard", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["snake", "animal", "evil", "nature", "hiss", "python"], + name: "snake", + slug: "snake", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฒ": Emoji( + char: "๐Ÿฒ", + keywords: ["dragon_face", "animal", "myth", "nature", "chinese", "green"], + name: "dragon face", + slug: "dragon_face", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‰": Emoji( + char: "๐Ÿ‰", + keywords: ["dragon", "animal", "myth", "nature", "chinese", "green"], + name: "dragon", + slug: "dragon", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฆ•": Emoji( + char: "๐Ÿฆ•", + keywords: [ + "sauropod", + "animal", + "nature", + "dinosaur", + "brachiosaurus", + "brontosaurus", + "diplodocus", + "extinct" + ], + name: "sauropod", + slug: "sauropod", + group: EmojiGroup.animalsNature, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฆ–": Emoji( + char: "๐Ÿฆ–", + keywords: [ + "t_rex", + "animal", + "nature", + "dinosaur", + "tyrannosaurus", + "extinct" + ], + name: "T-Rex", + slug: "t_rex", + group: EmojiGroup.animalsNature, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿณ": Emoji( + char: "๐Ÿณ", + keywords: ["spouting_whale", "animal", "nature", "sea", "ocean"], + name: "spouting whale", + slug: "spouting_whale", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‹": Emoji( + char: "๐Ÿ‹", + keywords: ["whale", "animal", "nature", "sea", "ocean"], + name: "whale", + slug: "whale", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฌ": Emoji( + char: "๐Ÿฌ", + keywords: [ + "dolphin", + "animal", + "nature", + "fish", + "sea", + "ocean", + "flipper", + "fins", + "beach" + ], + name: "dolphin", + slug: "dolphin", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆญ": Emoji( + char: "๐Ÿฆญ", + keywords: ["seal", "animal", "creature", "sea"], + name: "seal", + slug: "seal", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐ŸŸ": Emoji( + char: "๐ŸŸ", + keywords: ["fish", "animal", "food", "nature"], + name: "fish", + slug: "fish", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ ": Emoji( + char: "๐Ÿ ", + keywords: ["tropical_fish", "animal", "swim", "ocean", "beach", "nemo"], + name: "tropical fish", + slug: "tropical_fish", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿก": Emoji( + char: "๐Ÿก", + keywords: ["blowfish", "animal", "nature", "food", "sea", "ocean"], + name: "blowfish", + slug: "blowfish", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆˆ": Emoji( + char: "๐Ÿฆˆ", + keywords: [ + "shark", + "animal", + "nature", + "fish", + "sea", + "ocean", + "jaws", + "fins", + "beach" + ], + name: "shark", + slug: "shark", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ™": Emoji( + char: "๐Ÿ™", + keywords: [ + "octopus", + "animal", + "creature", + "ocean", + "sea", + "nature", + "beach" + ], + name: "octopus", + slug: "octopus", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["spiral_shell", "nature", "sea", "beach"], + name: "spiral shell", + slug: "spiral_shell", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชธ": Emoji( + char: "๐Ÿชธ", + keywords: ["coral", "ocean", "sea", "reef"], + name: "coral", + slug: "coral", + group: EmojiGroup.animalsNature, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿชผ": Emoji( + char: "๐Ÿชผ", + keywords: ["jellyfish", "sting", "tentacles"], + name: "jellyfish", + slug: "jellyfish", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: ["snail", "slow", "animal", "shell"], + name: "snail", + slug: "snail", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ‹": Emoji( + char: "๐Ÿฆ‹", + keywords: ["butterfly", "animal", "insect", "nature", "caterpillar"], + name: "butterfly", + slug: "butterfly", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ›": Emoji( + char: "๐Ÿ›", + keywords: ["bug", "animal", "insect", "nature", "worm"], + name: "bug", + slug: "bug", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿœ": Emoji( + char: "๐Ÿœ", + keywords: ["ant", "animal", "insect", "nature", "bug"], + name: "ant", + slug: "ant", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: [ + "honeybee", + "animal", + "insect", + "nature", + "bug", + "spring", + "honey" + ], + name: "honeybee", + slug: "honeybee", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชฒ": Emoji( + char: "๐Ÿชฒ", + keywords: ["beetle", "insect"], + name: "beetle", + slug: "beetle", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿž": Emoji( + char: "๐Ÿž", + keywords: ["lady_beetle", "animal", "insect", "nature", "ladybug"], + name: "lady beetle", + slug: "lady_beetle", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ—": Emoji( + char: "๐Ÿฆ—", + keywords: ["cricket", "animal", "cricket", "chirp"], + name: "cricket", + slug: "cricket", + group: EmojiGroup.animalsNature, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿชณ": Emoji( + char: "๐Ÿชณ", + keywords: ["cockroach", "insect", "pests"], + name: "cockroach", + slug: "cockroach", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ•ท๏ธ": Emoji( + char: "๐Ÿ•ท๏ธ", + keywords: ["spider", "animal", "arachnid"], + name: "spider", + slug: "spider", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•ธ๏ธ": Emoji( + char: "๐Ÿ•ธ๏ธ", + keywords: ["spider_web", "animal", "insect", "arachnid", "silk"], + name: "spider web", + slug: "spider_web", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿฆ‚": Emoji( + char: "๐Ÿฆ‚", + keywords: ["scorpion", "animal", "arachnid"], + name: "scorpion", + slug: "scorpion", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸฆŸ": Emoji( + char: "๐ŸฆŸ", + keywords: ["mosquito", "animal", "nature", "insect", "malaria"], + name: "mosquito", + slug: "mosquito", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชฐ": Emoji( + char: "๐Ÿชฐ", + keywords: ["fly", "insect"], + name: "fly", + slug: "fly", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿชฑ": Emoji( + char: "๐Ÿชฑ", + keywords: ["worm", "animal"], + name: "worm", + slug: "worm", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฆ ": Emoji( + char: "๐Ÿฆ ", + keywords: ["microbe", "amoeba", "bacteria", "germs", "virus", "covid"], + name: "microbe", + slug: "microbe", + group: EmojiGroup.animalsNature, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: ["bouquet", "flowers", "nature", "spring"], + name: "bouquet", + slug: "bouquet", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒธ": Emoji( + char: "๐ŸŒธ", + keywords: ["cherry_blossom", "nature", "plant", "spring", "flower"], + name: "cherry blossom", + slug: "cherry_blossom", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฎ": Emoji( + char: "๐Ÿ’ฎ", + keywords: ["white_flower", "japanese", "spring"], + name: "white flower", + slug: "white_flower", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชท": Emoji( + char: "๐Ÿชท", + keywords: ["lotus", "flower", "calm", "meditation"], + name: "lotus", + slug: "lotus", + group: EmojiGroup.animalsNature, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿต๏ธ": Emoji( + char: "๐Ÿต๏ธ", + keywords: ["rosette", "flower", "decoration", "military"], + name: "rosette", + slug: "rosette", + group: EmojiGroup.animalsNature, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒน": Emoji( + char: "๐ŸŒน", + keywords: ["rose", "flowers", "valentines", "love", "spring"], + name: "rose", + slug: "rose", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ€": Emoji( + char: "๐Ÿฅ€", + keywords: ["wilted_flower", "plant", "nature", "flower", "rose"], + name: "wilted flower", + slug: "wilted_flower", + group: EmojiGroup.animalsNature, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐ŸŒบ": Emoji( + char: "๐ŸŒบ", + keywords: ["hibiscus", "plant", "vegetable", "flowers", "beach"], + name: "hibiscus", + slug: "hibiscus", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒป": Emoji( + char: "๐ŸŒป", + keywords: ["sunflower", "nature", "plant", "fall"], + name: "sunflower", + slug: "sunflower", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒผ": Emoji( + char: "๐ŸŒผ", + keywords: ["blossom", "nature", "flowers", "yellow"], + name: "blossom", + slug: "blossom", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒท": Emoji( + char: "๐ŸŒท", + keywords: ["tulip", "flowers", "plant", "nature", "summer", "spring"], + name: "tulip", + slug: "tulip", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชป": Emoji( + char: "๐Ÿชป", + keywords: ["hyacinth", "flower", "lavender"], + name: "hyacinth", + slug: "hyacinth", + group: EmojiGroup.animalsNature, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐ŸŒฑ": Emoji( + char: "๐ŸŒฑ", + keywords: ["seedling", "plant", "nature", "grass", "lawn", "spring"], + name: "seedling", + slug: "seedling", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชด": Emoji( + char: "๐Ÿชด", + keywords: ["potted plant", "greenery", "house"], + name: "potted plant", + slug: "potted_plant", + group: EmojiGroup.animalsNature, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐ŸŒฒ": Emoji( + char: "๐ŸŒฒ", + keywords: ["evergreen_tree", "plant", "nature"], + name: "evergreen tree", + slug: "evergreen_tree", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒณ": Emoji( + char: "๐ŸŒณ", + keywords: ["deciduous_tree", "plant", "nature"], + name: "deciduous tree", + slug: "deciduous_tree", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒด": Emoji( + char: "๐ŸŒด", + keywords: [ + "palm_tree", + "plant", + "vegetable", + "nature", + "summer", + "beach", + "mojito", + "tropical" + ], + name: "palm tree", + slug: "palm_tree", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒต": Emoji( + char: "๐ŸŒต", + keywords: ["cactus", "vegetable", "plant", "nature"], + name: "cactus", + slug: "cactus", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒพ": Emoji( + char: "๐ŸŒพ", + keywords: ["sheaf_of_rice", "nature", "plant"], + name: "sheaf of rice", + slug: "sheaf_of_rice", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒฟ": Emoji( + char: "๐ŸŒฟ", + keywords: [ + "herb", + "vegetable", + "plant", + "medicine", + "weed", + "grass", + "lawn" + ], + name: "herb", + slug: "herb", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜˜๏ธ": Emoji( + char: "โ˜˜๏ธ", + keywords: ["shamrock", "vegetable", "plant", "nature", "irish", "clover"], + name: "shamrock", + slug: "shamrock", + group: EmojiGroup.animalsNature, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ€": Emoji( + char: "๐Ÿ€", + keywords: [ + "four_leaf_clover", + "vegetable", + "plant", + "nature", + "lucky", + "irish" + ], + name: "four leaf clover", + slug: "four_leaf_clover", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["maple_leaf", "nature", "plant", "vegetable", "ca", "fall"], + name: "maple leaf", + slug: "maple_leaf", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‚": Emoji( + char: "๐Ÿ‚", + keywords: ["fallen_leaf", "nature", "plant", "vegetable", "leaves"], + name: "fallen leaf", + slug: "fallen_leaf", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿƒ": Emoji( + char: "๐Ÿƒ", + keywords: [ + "leaf_fluttering_in_wind", + "nature", + "plant", + "tree", + "vegetable", + "grass", + "lawn", + "spring" + ], + name: "leaf fluttering in wind", + slug: "leaf_fluttering_in_wind", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชน": Emoji( + char: "๐Ÿชน", + keywords: ["empty nest", "bird"], + name: "empty nest", + slug: "empty_nest", + group: EmojiGroup.animalsNature, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿชบ": Emoji( + char: "๐Ÿชบ", + keywords: ["nest with eggs", "bird"], + name: "nest with eggs", + slug: "nest_with_eggs", + group: EmojiGroup.animalsNature, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ„": Emoji( + char: "๐Ÿ„", + keywords: ["mushroom", "plant", "vegetable"], + name: "mushroom", + slug: "mushroom", + group: EmojiGroup.animalsNature, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡": Emoji( + char: "๐Ÿ‡", + keywords: ["grapes", "fruit", "food", "wine"], + name: "grapes", + slug: "grapes", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆ": Emoji( + char: "๐Ÿˆ", + keywords: ["melon", "fruit", "nature", "food"], + name: "melon", + slug: "melon", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‰": Emoji( + char: "๐Ÿ‰", + keywords: ["watermelon", "fruit", "food", "picnic", "summer"], + name: "watermelon", + slug: "watermelon", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŠ": Emoji( + char: "๐ŸŠ", + keywords: ["tangerine", "food", "fruit", "nature", "orange"], + name: "tangerine", + slug: "tangerine", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‹": Emoji( + char: "๐Ÿ‹", + keywords: ["lemon", "fruit", "nature"], + name: "lemon", + slug: "lemon", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: ["banana", "fruit", "food", "monkey"], + name: "banana", + slug: "banana", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["pineapple", "fruit", "nature", "food"], + name: "pineapple", + slug: "pineapple", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅญ": Emoji( + char: "๐Ÿฅญ", + keywords: ["mango", "fruit", "food", "tropical"], + name: "mango", + slug: "mango", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐ŸŽ": Emoji( + char: "๐ŸŽ", + keywords: ["red_apple", "fruit", "mac", "school"], + name: "red apple", + slug: "red_apple", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["green_apple", "fruit", "nature"], + name: "green apple", + slug: "green_apple", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["pear", "fruit", "nature", "food"], + name: "pear", + slug: "pear", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: ["peach", "fruit", "nature", "food"], + name: "peach", + slug: "peach", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: ["cherries", "food", "fruit"], + name: "cherries", + slug: "cherries", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: ["strawberry", "fruit", "food", "nature"], + name: "strawberry", + slug: "strawberry", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซ": Emoji( + char: "๐Ÿซ", + keywords: ["blueberries", "fruit"], + name: "blueberries", + slug: "blueberries", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["kiwi_fruit", "fruit", "food"], + name: "kiwi fruit", + slug: "kiwi_fruit", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ…": Emoji( + char: "๐Ÿ…", + keywords: ["tomato", "fruit", "vegetable", "nature", "food"], + name: "tomato", + slug: "tomato", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซ’": Emoji( + char: "๐Ÿซ’", + keywords: ["olive", "fruit"], + name: "olive", + slug: "olive", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฅฅ": Emoji( + char: "๐Ÿฅฅ", + keywords: ["coconut", "fruit", "nature", "food", "palm"], + name: "coconut", + slug: "coconut", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฅ‘": Emoji( + char: "๐Ÿฅ‘", + keywords: ["avocado", "fruit", "food"], + name: "avocado", + slug: "avocado", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ†": Emoji( + char: "๐Ÿ†", + keywords: ["eggplant", "vegetable", "nature", "food", "aubergine"], + name: "eggplant", + slug: "eggplant", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ”": Emoji( + char: "๐Ÿฅ”", + keywords: ["potato", "food", "tuber", "vegatable", "starch"], + name: "potato", + slug: "potato", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅ•": Emoji( + char: "๐Ÿฅ•", + keywords: ["carrot", "vegetable", "food", "orange"], + name: "carrot", + slug: "carrot", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐ŸŒฝ": Emoji( + char: "๐ŸŒฝ", + keywords: ["ear_of_corn", "food", "vegetable", "plant"], + name: "ear of corn", + slug: "ear_of_corn", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒถ๏ธ": Emoji( + char: "๐ŸŒถ๏ธ", + keywords: ["hot_pepper", "food", "spicy", "chilli", "chili"], + name: "hot pepper", + slug: "hot_pepper", + group: EmojiGroup.foodDrink, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿซ‘": Emoji( + char: "๐Ÿซ‘", + keywords: ["bell pepper", "fruit", "plant"], + name: "bell pepper", + slug: "bell_pepper", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฅ’": Emoji( + char: "๐Ÿฅ’", + keywords: ["cucumber", "fruit", "food", "pickle"], + name: "cucumber", + slug: "cucumber", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅฌ": Emoji( + char: "๐Ÿฅฌ", + keywords: [ + "leafy_green", + "food", + "vegetable", + "plant", + "bok choy", + "cabbage", + "kale", + "lettuce" + ], + name: "leafy green", + slug: "leafy_green", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅฆ": Emoji( + char: "๐Ÿฅฆ", + keywords: ["broccoli", "fruit", "food", "vegetable"], + name: "broccoli", + slug: "broccoli", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿง„": Emoji( + char: "๐Ÿง„", + keywords: ["garlic", "food", "spice", "cook"], + name: "garlic", + slug: "garlic", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿง…": Emoji( + char: "๐Ÿง…", + keywords: ["onion", "cook", "food", "spice"], + name: "onion", + slug: "onion", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฅœ": Emoji( + char: "๐Ÿฅœ", + keywords: ["peanuts", "food", "nut"], + name: "peanuts", + slug: "peanuts", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿซ˜": Emoji( + char: "๐Ÿซ˜", + keywords: ["beans", "food"], + name: "beans", + slug: "beans", + group: EmojiGroup.foodDrink, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐ŸŒฐ": Emoji( + char: "๐ŸŒฐ", + keywords: ["chestnut", "food", "squirrel"], + name: "chestnut", + slug: "chestnut", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซš": Emoji( + char: "๐Ÿซš", + keywords: ["ginger root", "spice", "yellow", "cooking", "gingerbread"], + name: "ginger root", + slug: "ginger_root", + group: EmojiGroup.foodDrink, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿซ›": Emoji( + char: "๐Ÿซ›", + keywords: ["pea pod", "cozy", "green"], + name: "pea pod", + slug: "pea_pod", + group: EmojiGroup.foodDrink, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿž": Emoji( + char: "๐Ÿž", + keywords: ["bread", "food", "wheat", "breakfast", "toast"], + name: "bread", + slug: "bread", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["croissant", "food", "bread", "french"], + name: "croissant", + slug: "croissant", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅ–": Emoji( + char: "๐Ÿฅ–", + keywords: ["baguette_bread", "food", "bread", "french", "france", "bakery"], + name: "baguette bread", + slug: "baguette_bread", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿซ“": Emoji( + char: "๐Ÿซ“", + keywords: ["flatbread", "flour", "food", "bakery"], + name: "flatbread", + slug: "flatbread", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฅจ": Emoji( + char: "๐Ÿฅจ", + keywords: ["pretzel", "food", "bread", "twisted", "germany", "bakery"], + name: "pretzel", + slug: "pretzel", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฅฏ": Emoji( + char: "๐Ÿฅฏ", + keywords: [ + "bagel", + "food", + "bread", + "bakery", + "schmear", + "jewish", + "bakery" + ], + name: "bagel", + slug: "bagel", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅž": Emoji( + char: "๐Ÿฅž", + keywords: [ + "pancakes", + "food", + "breakfast", + "flapjacks", + "hotcakes", + "brunch" + ], + name: "pancakes", + slug: "pancakes", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿง‡": Emoji( + char: "๐Ÿง‡", + keywords: ["waffle", "food", "breakfast", "brunch"], + name: "waffle", + slug: "waffle", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿง€": Emoji( + char: "๐Ÿง€", + keywords: ["cheese_wedge", "food", "chadder", "swiss"], + name: "cheese wedge", + slug: "cheese_wedge", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ–": Emoji( + char: "๐Ÿ–", + keywords: ["meat_on_bone", "good", "food", "drumstick"], + name: "meat on bone", + slug: "meat_on_bone", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—": Emoji( + char: "๐Ÿ—", + keywords: [ + "poultry_leg", + "food", + "meat", + "drumstick", + "bird", + "chicken", + "turkey" + ], + name: "poultry leg", + slug: "poultry_leg", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅฉ": Emoji( + char: "๐Ÿฅฉ", + keywords: [ + "cut_of_meat", + "food", + "cow", + "meat", + "cut", + "chop", + "lambchop", + "porkchop" + ], + name: "cut of meat", + slug: "cut_of_meat", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฅ“": Emoji( + char: "๐Ÿฅ“", + keywords: ["bacon", "food", "breakfast", "pork", "pig", "meat", "brunch"], + name: "bacon", + slug: "bacon", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: [ + "hamburger", + "meat", + "fast food", + "beef", + "cheeseburger", + "mcdonalds", + "burger king" + ], + name: "hamburger", + slug: "hamburger", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŸ": Emoji( + char: "๐ŸŸ", + keywords: ["french_fries", "chips", "snack", "fast food", "potato"], + name: "french fries", + slug: "french_fries", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•": Emoji( + char: "๐Ÿ•", + keywords: ["pizza", "food", "party", "italy"], + name: "pizza", + slug: "pizza", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒญ": Emoji( + char: "๐ŸŒญ", + keywords: ["hot_dog", "food", "frankfurter", "america"], + name: "hot dog", + slug: "hot_dog", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅช": Emoji( + char: "๐Ÿฅช", + keywords: ["sandwich", "food", "lunch", "bread", "toast", "bakery"], + name: "sandwich", + slug: "sandwich", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸŒฎ": Emoji( + char: "๐ŸŒฎ", + keywords: ["taco", "food", "mexican"], + name: "taco", + slug: "taco", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒฏ": Emoji( + char: "๐ŸŒฏ", + keywords: ["burrito", "food", "mexican"], + name: "burrito", + slug: "burrito", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿซ”": Emoji( + char: "๐Ÿซ”", + keywords: ["tamale", "food", "masa"], + name: "tamale", + slug: "tamale", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฅ™": Emoji( + char: "๐Ÿฅ™", + keywords: [ + "stuffed_flatbread", + "food", + "flatbread", + "stuffed", + "gyro", + "mediterranean" + ], + name: "stuffed flatbread", + slug: "stuffed_flatbread", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿง†": Emoji( + char: "๐Ÿง†", + keywords: ["falafel", "food", "mediterranean"], + name: "falafel", + slug: "falafel", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฅš": Emoji( + char: "๐Ÿฅš", + keywords: ["egg", "food", "chicken", "breakfast"], + name: "egg", + slug: "egg", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿณ": Emoji( + char: "๐Ÿณ", + keywords: ["cooking", "food", "breakfast", "kitchen", "egg", "skillet"], + name: "cooking", + slug: "cooking", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ˜": Emoji( + char: "๐Ÿฅ˜", + keywords: [ + "shallow_pan_of_food", + "food", + "cooking", + "casserole", + "paella", + "skillet" + ], + name: "shallow pan of food", + slug: "shallow_pan_of_food", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฒ": Emoji( + char: "๐Ÿฒ", + keywords: ["pot_of_food", "food", "meat", "soup", "hot pot"], + name: "pot of food", + slug: "pot_of_food", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซ•": Emoji( + char: "๐Ÿซ•", + keywords: ["fondue", "cheese", "pot", "food"], + name: "fondue", + slug: "fondue", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿฅฃ": Emoji( + char: "๐Ÿฅฃ", + keywords: [ + "bowl_with_spoon", + "food", + "breakfast", + "cereal", + "oatmeal", + "porridge" + ], + name: "bowl with spoon", + slug: "bowl_with_spoon", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฅ—": Emoji( + char: "๐Ÿฅ—", + keywords: ["green_salad", "food", "healthy", "lettuce", "vegetable"], + name: "green salad", + slug: "green_salad", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฟ": Emoji( + char: "๐Ÿฟ", + keywords: ["popcorn", "food", "movie theater", "films", "snack", "drama"], + name: "popcorn", + slug: "popcorn", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿงˆ": Emoji( + char: "๐Ÿงˆ", + keywords: ["butter", "food", "cook"], + name: "butter", + slug: "butter", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿง‚": Emoji( + char: "๐Ÿง‚", + keywords: ["salt", "condiment", "shaker"], + name: "salt", + slug: "salt", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅซ": Emoji( + char: "๐Ÿฅซ", + keywords: ["canned_food", "food", "soup", "tomatoes"], + name: "canned food", + slug: "canned_food", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฑ": Emoji( + char: "๐Ÿฑ", + keywords: ["bento_box", "food", "japanese", "box", "lunch"], + name: "bento box", + slug: "bento_box", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ˜": Emoji( + char: "๐Ÿ˜", + keywords: ["rice_cracker", "food", "japanese", "snack"], + name: "rice cracker", + slug: "rice_cracker", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™": Emoji( + char: "๐Ÿ™", + keywords: ["rice_ball", "food", "japanese"], + name: "rice ball", + slug: "rice_ball", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["cooked_rice", "food", "asian"], + name: "cooked rice", + slug: "cooked_rice", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›": Emoji( + char: "๐Ÿ›", + keywords: ["curry_rice", "food", "spicy", "hot", "indian"], + name: "curry rice", + slug: "curry_rice", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿœ": Emoji( + char: "๐Ÿœ", + keywords: [ + "steaming_bowl", + "food", + "japanese", + "noodle", + "chopsticks", + "ramen" + ], + name: "steaming bowl", + slug: "steaming_bowl", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["spaghetti", "food", "italian", "pasta", "noodle"], + name: "spaghetti", + slug: "spaghetti", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ ": Emoji( + char: "๐Ÿ ", + keywords: ["roasted_sweet_potato", "food", "nature", "plant"], + name: "roasted sweet potato", + slug: "roasted_sweet_potato", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿข": Emoji( + char: "๐Ÿข", + keywords: ["oden", "food", "japanese"], + name: "oden", + slug: "oden", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฃ": Emoji( + char: "๐Ÿฃ", + keywords: ["sushi", "food", "fish", "japanese", "rice"], + name: "sushi", + slug: "sushi", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["fried_shrimp", "food", "animal", "appetizer", "summer"], + name: "fried shrimp", + slug: "fried_shrimp", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: [ + "fish_cake_with_swirl", + "food", + "japan", + "sea", + "beach", + "narutomaki", + "pink", + "swirl", + "kamaboko", + "surimi", + "ramen" + ], + name: "fish cake with swirl", + slug: "fish_cake_with_swirl", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅฎ": Emoji( + char: "๐Ÿฅฎ", + keywords: ["moon_cake", "food", "autumn", "dessert"], + name: "moon cake", + slug: "moon_cake", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿก": Emoji( + char: "๐Ÿก", + keywords: [ + "dango", + "food", + "dessert", + "sweet", + "japanese", + "barbecue", + "meat" + ], + name: "dango", + slug: "dango", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸฅŸ": Emoji( + char: "๐ŸฅŸ", + keywords: [ + "dumpling", + "food", + "empanada", + "pierogi", + "potsticker", + "gyoza" + ], + name: "dumpling", + slug: "dumpling", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฅ ": Emoji( + char: "๐Ÿฅ ", + keywords: ["fortune_cookie", "food", "prophecy", "dessert"], + name: "fortune cookie", + slug: "fortune_cookie", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฅก": Emoji( + char: "๐Ÿฅก", + keywords: ["takeout_box", "food", "leftovers"], + name: "takeout box", + slug: "takeout_box", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฆ€": Emoji( + char: "๐Ÿฆ€", + keywords: ["crab", "animal", "crustacean"], + name: "crab", + slug: "crab", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฆž": Emoji( + char: "๐Ÿฆž", + keywords: ["lobster", "animal", "nature", "bisque", "claws", "seafood"], + name: "lobster", + slug: "lobster", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["shrimp", "animal", "ocean", "nature", "seafood"], + name: "shrimp", + slug: "shrimp", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆ‘": Emoji( + char: "๐Ÿฆ‘", + keywords: ["squid", "animal", "nature", "ocean", "sea"], + name: "squid", + slug: "squid", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆช": Emoji( + char: "๐Ÿฆช", + keywords: ["oyster", "food"], + name: "oyster", + slug: "oyster", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: ["soft_ice_cream", "food", "hot", "dessert", "summer"], + name: "soft ice cream", + slug: "soft_ice_cream", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["shaved_ice", "hot", "dessert", "summer"], + name: "shaved ice", + slug: "shaved_ice", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿจ": Emoji( + char: "๐Ÿจ", + keywords: ["ice_cream", "food", "hot", "dessert"], + name: "ice cream", + slug: "ice_cream", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉ": Emoji( + char: "๐Ÿฉ", + keywords: ["doughnut", "food", "dessert", "snack", "sweet", "donut"], + name: "doughnut", + slug: "doughnut", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช": Emoji( + char: "๐Ÿช", + keywords: [ + "cookie", + "food", + "snack", + "oreo", + "chocolate", + "sweet", + "dessert" + ], + name: "cookie", + slug: "cookie", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ‚": Emoji( + char: "๐ŸŽ‚", + keywords: ["birthday_cake", "food", "dessert", "cake"], + name: "birthday cake", + slug: "birthday_cake", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฐ": Emoji( + char: "๐Ÿฐ", + keywords: ["shortcake", "food", "dessert"], + name: "shortcake", + slug: "shortcake", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: ["cupcake", "food", "dessert", "bakery", "sweet"], + name: "cupcake", + slug: "cupcake", + group: EmojiGroup.foodDrink, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅง": Emoji( + char: "๐Ÿฅง", + keywords: ["pie", "food", "dessert", "pastry"], + name: "pie", + slug: "pie", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿซ": Emoji( + char: "๐Ÿซ", + keywords: ["chocolate_bar", "food", "snack", "dessert", "sweet"], + name: "chocolate bar", + slug: "chocolate_bar", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฌ": Emoji( + char: "๐Ÿฌ", + keywords: ["candy", "snack", "dessert", "sweet", "lolly"], + name: "candy", + slug: "candy", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿญ": Emoji( + char: "๐Ÿญ", + keywords: ["lollipop", "food", "snack", "candy", "sweet"], + name: "lollipop", + slug: "lollipop", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฎ": Emoji( + char: "๐Ÿฎ", + keywords: ["custard", "dessert", "food"], + name: "custard", + slug: "custard", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฏ": Emoji( + char: "๐Ÿฏ", + keywords: ["honey_pot", "bees", "sweet", "kitchen"], + name: "honey pot", + slug: "honey_pot", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿผ": Emoji( + char: "๐Ÿผ", + keywords: ["baby_bottle", "food", "container", "milk"], + name: "baby bottle", + slug: "baby_bottle", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅ›": Emoji( + char: "๐Ÿฅ›", + keywords: ["glass_of_milk", "beverage", "drink", "cow"], + name: "glass of milk", + slug: "glass_of_milk", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "โ˜•": Emoji( + char: "โ˜•", + keywords: [ + "hot_beverage", + "beverage", + "caffeine", + "latte", + "espresso", + "coffee", + "mug" + ], + name: "hot beverage", + slug: "hot_beverage", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซ–": Emoji( + char: "๐Ÿซ–", + keywords: ["teapot", "drink", "hot"], + name: "teapot", + slug: "teapot", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿต": Emoji( + char: "๐Ÿต", + keywords: [ + "teacup_without_handle", + "drink", + "bowl", + "breakfast", + "green", + "british" + ], + name: "teacup without handle", + slug: "teacup_without_handle", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿถ": Emoji( + char: "๐Ÿถ", + keywords: [ + "sake", + "wine", + "drink", + "drunk", + "beverage", + "japanese", + "alcohol", + "booze" + ], + name: "sake", + slug: "sake", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿพ": Emoji( + char: "๐Ÿพ", + keywords: [ + "bottle_with_popping_cork", + "drink", + "wine", + "bottle", + "celebration" + ], + name: "bottle with popping cork", + slug: "bottle_with_popping_cork", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿท": Emoji( + char: "๐Ÿท", + keywords: ["wine_glass", "drink", "beverage", "drunk", "alcohol", "booze"], + name: "wine glass", + slug: "wine_glass", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿธ": Emoji( + char: "๐Ÿธ", + keywords: [ + "cocktail_glass", + "drink", + "drunk", + "alcohol", + "beverage", + "booze", + "mojito" + ], + name: "cocktail glass", + slug: "cocktail_glass", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿน": Emoji( + char: "๐Ÿน", + keywords: [ + "tropical_drink", + "beverage", + "cocktail", + "summer", + "beach", + "alcohol", + "booze", + "mojito" + ], + name: "tropical drink", + slug: "tropical_drink", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿบ": Emoji( + char: "๐Ÿบ", + keywords: [ + "beer_mug", + "relax", + "beverage", + "drink", + "drunk", + "party", + "pub", + "summer", + "alcohol", + "booze" + ], + name: "beer mug", + slug: "beer_mug", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿป": Emoji( + char: "๐Ÿป", + keywords: [ + "clinking_beer_mugs", + "relax", + "beverage", + "drink", + "drunk", + "party", + "pub", + "summer", + "alcohol", + "booze" + ], + name: "clinking beer mugs", + slug: "clinking_beer_mugs", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ‚": Emoji( + char: "๐Ÿฅ‚", + keywords: [ + "clinking_glasses", + "beverage", + "drink", + "party", + "alcohol", + "celebrate", + "cheers", + "wine", + "champagne", + "toast" + ], + name: "clinking glasses", + slug: "clinking_glasses", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅƒ": Emoji( + char: "๐Ÿฅƒ", + keywords: [ + "tumbler_glass", + "drink", + "beverage", + "drunk", + "alcohol", + "liquor", + "booze", + "bourbon", + "scotch", + "whisky", + "glass", + "shot" + ], + name: "tumbler glass", + slug: "tumbler_glass", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿซ—": Emoji( + char: "๐Ÿซ—", + keywords: ["pouring liquid", "cup", "water"], + name: "pouring liquid", + slug: "pouring_liquid", + group: EmojiGroup.foodDrink, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿฅค": Emoji( + char: "๐Ÿฅค", + keywords: ["cup_with_straw", "drink", "soda"], + name: "cup with straw", + slug: "cup_with_straw", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿง‹": Emoji( + char: "๐Ÿง‹", + keywords: ["bubble tea", "taiwan", "boba", "milk tea", "straw"], + name: "bubble tea", + slug: "bubble_tea", + group: EmojiGroup.foodDrink, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿงƒ": Emoji( + char: "๐Ÿงƒ", + keywords: ["beverage_box", "drink"], + name: "beverage box", + slug: "beverage_box", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿง‰": Emoji( + char: "๐Ÿง‰", + keywords: ["mate", "drink", "tea", "beverage"], + name: "mate", + slug: "mate", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸงŠ": Emoji( + char: "๐ŸงŠ", + keywords: ["ice", "water", "cold"], + name: "ice", + slug: "ice", + group: EmojiGroup.foodDrink, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฅข": Emoji( + char: "๐Ÿฅข", + keywords: ["chopsticks", "food"], + name: "chopsticks", + slug: "chopsticks", + group: EmojiGroup.foodDrink, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿฝ๏ธ": Emoji( + char: "๐Ÿฝ๏ธ", + keywords: [ + "fork_and_knife_with_plate", + "food", + "eat", + "meal", + "lunch", + "dinner", + "restaurant" + ], + name: "fork and knife with plate", + slug: "fork_and_knife_with_plate", + group: EmojiGroup.foodDrink, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿด": Emoji( + char: "๐Ÿด", + keywords: ["fork_and_knife", "cutlery", "kitchen"], + name: "fork and knife", + slug: "fork_and_knife", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ„": Emoji( + char: "๐Ÿฅ„", + keywords: ["spoon", "cutlery", "kitchen", "tableware"], + name: "spoon", + slug: "spoon", + group: EmojiGroup.foodDrink, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ”ช": Emoji( + char: "๐Ÿ”ช", + keywords: [ + "kitchen_knife", + "knife", + "blade", + "cutlery", + "kitchen", + "weapon" + ], + name: "kitchen knife", + slug: "kitchen_knife", + group: EmojiGroup.foodDrink, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซ™": Emoji( + char: "๐Ÿซ™", + keywords: ["jar", "container", "sauce"], + name: "jar", + slug: "jar", + group: EmojiGroup.foodDrink, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿบ": Emoji( + char: "๐Ÿบ", + keywords: ["amphora", "vase", "jar"], + name: "amphora", + slug: "amphora", + group: EmojiGroup.foodDrink, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: [ + "globe_showing_europe_africa", + "globe", + "world", + "international" + ], + name: "globe showing Europe-Africa", + slug: "globe_showing_europe_africa", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒŽ": Emoji( + char: "๐ŸŒŽ", + keywords: [ + "globe_showing_americas", + "globe", + "world", + "USA", + "international" + ], + name: "globe showing Americas", + slug: "globe_showing_americas", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: [ + "globe_showing_asia_australia", + "globe", + "world", + "east", + "international" + ], + name: "globe showing Asia-Australia", + slug: "globe_showing_asia_australia", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: [ + "globe_with_meridians", + "earth", + "international", + "world", + "internet", + "interweb", + "i18n" + ], + name: "globe with meridians", + slug: "globe_with_meridians", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ—บ๏ธ": Emoji( + char: "๐Ÿ—บ๏ธ", + keywords: ["world_map", "location", "direction"], + name: "world map", + slug: "world_map", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ—พ": Emoji( + char: "๐Ÿ—พ", + keywords: ["map_of_japan", "nation", "country", "japanese", "asia"], + name: "map of Japan", + slug: "map_of_japan", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงญ": Emoji( + char: "๐Ÿงญ", + keywords: ["compass", "magnetic", "navigation", "orienteering"], + name: "compass", + slug: "compass", + group: EmojiGroup.travelPlaces, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ”๏ธ": Emoji( + char: "๐Ÿ”๏ธ", + keywords: [ + "snow_capped_mountain", + "photo", + "nature", + "environment", + "winter", + "cold" + ], + name: "snow-capped mountain", + slug: "snow_capped_mountain", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ›ฐ๏ธ": Emoji( + char: "โ›ฐ๏ธ", + keywords: ["mountain", "photo", "nature", "environment"], + name: "mountain", + slug: "mountain", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒ‹": Emoji( + char: "๐ŸŒ‹", + keywords: ["volcano", "photo", "nature", "disaster"], + name: "volcano", + slug: "volcano", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—ป": Emoji( + char: "๐Ÿ—ป", + keywords: ["mount_fuji", "photo", "mountain", "nature", "japanese"], + name: "mount fuji", + slug: "mount_fuji", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•๏ธ": Emoji( + char: "๐Ÿ•๏ธ", + keywords: ["camping", "photo", "outdoors", "tent"], + name: "camping", + slug: "camping", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ–๏ธ": Emoji( + char: "๐Ÿ–๏ธ", + keywords: [ + "beach_with_umbrella", + "weather", + "summer", + "sunny", + "sand", + "mojito" + ], + name: "beach with umbrella", + slug: "beach_with_umbrella", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿœ๏ธ": Emoji( + char: "๐Ÿœ๏ธ", + keywords: ["desert", "photo", "warm", "saharah"], + name: "desert", + slug: "desert", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ๏ธ": Emoji( + char: "๐Ÿ๏ธ", + keywords: ["desert_island", "photo", "tropical", "mojito"], + name: "desert island", + slug: "desert_island", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿž๏ธ": Emoji( + char: "๐Ÿž๏ธ", + keywords: ["national_park", "photo", "environment", "nature"], + name: "national park", + slug: "national_park", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŸ๏ธ": Emoji( + char: "๐ŸŸ๏ธ", + keywords: ["stadium", "photo", "place", "sports", "concert", "venue"], + name: "stadium", + slug: "stadium", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›๏ธ": Emoji( + char: "๐Ÿ›๏ธ", + keywords: ["classical_building", "art", "culture", "history"], + name: "classical building", + slug: "classical_building", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ—๏ธ": Emoji( + char: "๐Ÿ—๏ธ", + keywords: ["building_construction", "wip", "working", "progress"], + name: "building construction", + slug: "building_construction", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿงฑ": Emoji( + char: "๐Ÿงฑ", + keywords: ["brick", "bricks"], + name: "brick", + slug: "brick", + group: EmojiGroup.travelPlaces, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชจ": Emoji( + char: "๐Ÿชจ", + keywords: ["rock", "stone"], + name: "rock", + slug: "rock", + group: EmojiGroup.travelPlaces, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿชต": Emoji( + char: "๐Ÿชต", + keywords: ["wood", "nature", "timber", "trunk"], + name: "wood", + slug: "wood", + group: EmojiGroup.travelPlaces, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ›–": Emoji( + char: "๐Ÿ›–", + keywords: ["hut", "house", "structure"], + name: "hut", + slug: "hut", + group: EmojiGroup.travelPlaces, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ˜๏ธ": Emoji( + char: "๐Ÿ˜๏ธ", + keywords: ["houses", "buildings", "photo"], + name: "houses", + slug: "houses", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿš๏ธ": Emoji( + char: "๐Ÿš๏ธ", + keywords: ["derelict_house", "abandon", "evict", "broken", "building"], + name: "derelict house", + slug: "derelict_house", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ ": Emoji( + char: "๐Ÿ ", + keywords: ["house", "building", "home"], + name: "house", + slug: "house", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿก": Emoji( + char: "๐Ÿก", + keywords: ["house_with_garden", "home", "plant", "nature"], + name: "house with garden", + slug: "house_with_garden", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿข": Emoji( + char: "๐Ÿข", + keywords: ["office_building", "building", "bureau", "work"], + name: "office building", + slug: "office_building", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฃ": Emoji( + char: "๐Ÿฃ", + keywords: ["japanese_post_office", "building", "envelope", "communication"], + name: "Japanese post office", + slug: "japanese_post_office", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿค": Emoji( + char: "๐Ÿค", + keywords: ["post_office", "building", "email"], + name: "post office", + slug: "post_office", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["hospital", "building", "health", "surgery", "doctor"], + name: "hospital", + slug: "hospital", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฆ": Emoji( + char: "๐Ÿฆ", + keywords: [ + "bank", + "building", + "money", + "sales", + "cash", + "business", + "enterprise" + ], + name: "bank", + slug: "bank", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿจ": Emoji( + char: "๐Ÿจ", + keywords: ["hotel", "building", "accomodation", "checkin"], + name: "hotel", + slug: "hotel", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉ": Emoji( + char: "๐Ÿฉ", + keywords: ["love_hotel", "like", "affection", "dating"], + name: "love hotel", + slug: "love_hotel", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช": Emoji( + char: "๐Ÿช", + keywords: ["convenience_store", "building", "shopping", "groceries"], + name: "convenience store", + slug: "convenience_store", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿซ": Emoji( + char: "๐Ÿซ", + keywords: ["school", "building", "student", "education", "learn", "teach"], + name: "school", + slug: "school", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฌ": Emoji( + char: "๐Ÿฌ", + keywords: ["department_store", "building", "shopping", "mall"], + name: "department store", + slug: "department_store", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿญ": Emoji( + char: "๐Ÿญ", + keywords: ["factory", "building", "industry", "pollution", "smoke"], + name: "factory", + slug: "factory", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฏ": Emoji( + char: "๐Ÿฏ", + keywords: ["japanese_castle", "photo", "building"], + name: "Japanese castle", + slug: "japanese_castle", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฐ": Emoji( + char: "๐Ÿฐ", + keywords: ["castle", "building", "royalty", "history"], + name: "castle", + slug: "castle", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’’": Emoji( + char: "๐Ÿ’’", + keywords: [ + "wedding", + "love", + "like", + "affection", + "couple", + "marriage", + "bride", + "groom" + ], + name: "wedding", + slug: "wedding", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—ผ": Emoji( + char: "๐Ÿ—ผ", + keywords: ["tokyo_tower", "photo", "japanese"], + name: "Tokyo tower", + slug: "tokyo_tower", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—ฝ": Emoji( + char: "๐Ÿ—ฝ", + keywords: ["statue_of_liberty", "american", "newyork"], + name: "Statue of Liberty", + slug: "statue_of_liberty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›ช": Emoji( + char: "โ›ช", + keywords: ["church", "building", "religion", "christ"], + name: "church", + slug: "church", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•Œ": Emoji( + char: "๐Ÿ•Œ", + keywords: ["mosque", "islam", "worship", "minaret"], + name: "mosque", + slug: "mosque", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›•": Emoji( + char: "๐Ÿ›•", + keywords: ["hindu_temple", "religion"], + name: "hindu temple", + slug: "hindu_temple", + group: EmojiGroup.travelPlaces, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ•": Emoji( + char: "๐Ÿ•", + keywords: ["synagogue", "judaism", "worship", "temple", "jewish"], + name: "synagogue", + slug: "synagogue", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ›ฉ๏ธ": Emoji( + char: "โ›ฉ๏ธ", + keywords: ["shinto_shrine", "temple", "japan", "kyoto"], + name: "shinto shrine", + slug: "shinto_shrine", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•‹": Emoji( + char: "๐Ÿ•‹", + keywords: ["kaaba", "mecca", "mosque", "islam"], + name: "kaaba", + slug: "kaaba", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ›ฒ": Emoji( + char: "โ›ฒ", + keywords: ["fountain", "photo", "summer", "water", "fresh"], + name: "fountain", + slug: "fountain", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›บ": Emoji( + char: "โ›บ", + keywords: ["tent", "photo", "camping", "outdoors"], + name: "tent", + slug: "tent", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: ["foggy", "photo", "mountain"], + name: "foggy", + slug: "foggy", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒƒ": Emoji( + char: "๐ŸŒƒ", + keywords: ["night_with_stars", "evening", "city", "downtown"], + name: "night with stars", + slug: "night_with_stars", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ™๏ธ": Emoji( + char: "๐Ÿ™๏ธ", + keywords: ["cityscape", "photo", "night life", "urban"], + name: "cityscape", + slug: "cityscape", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒ„": Emoji( + char: "๐ŸŒ„", + keywords: ["sunrise_over_mountains", "view", "vacation", "photo"], + name: "sunrise over mountains", + slug: "sunrise_over_mountains", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ…": Emoji( + char: "๐ŸŒ…", + keywords: ["sunrise", "morning", "view", "vacation", "photo"], + name: "sunrise", + slug: "sunrise", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ†": Emoji( + char: "๐ŸŒ†", + keywords: ["cityscape_at_dusk", "photo", "evening", "sky", "buildings"], + name: "cityscape at dusk", + slug: "cityscape_at_dusk", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ‡": Emoji( + char: "๐ŸŒ‡", + keywords: ["sunset", "photo", "good morning", "dawn"], + name: "sunset", + slug: "sunset", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ‰": Emoji( + char: "๐ŸŒ‰", + keywords: ["bridge_at_night", "photo", "sanfrancisco"], + name: "bridge at night", + slug: "bridge_at_night", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™จ๏ธ": Emoji( + char: "โ™จ๏ธ", + keywords: ["hot_springs", "bath", "warm", "relax"], + name: "hot springs", + slug: "hot_springs", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ ": Emoji( + char: "๐ŸŽ ", + keywords: ["carousel_horse", "photo", "carnival"], + name: "carousel horse", + slug: "carousel_horse", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›": Emoji( + char: "๐Ÿ›", + keywords: ["playground slide", "fun", "park"], + name: "playground slide", + slug: "playground_slide", + group: EmojiGroup.travelPlaces, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐ŸŽก": Emoji( + char: "๐ŸŽก", + keywords: ["ferris_wheel", "photo", "carnival", "londoneye"], + name: "ferris wheel", + slug: "ferris_wheel", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽข": Emoji( + char: "๐ŸŽข", + keywords: ["roller_coaster", "carnival", "playground", "photo", "fun"], + name: "roller coaster", + slug: "roller_coaster", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ˆ": Emoji( + char: "๐Ÿ’ˆ", + keywords: ["barber_pole", "hair", "salon", "style"], + name: "barber pole", + slug: "barber_pole", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽช": Emoji( + char: "๐ŸŽช", + keywords: ["circus_tent", "festival", "carnival", "party"], + name: "circus tent", + slug: "circus_tent", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš‚": Emoji( + char: "๐Ÿš‚", + keywords: ["locomotive", "transportation", "vehicle", "train"], + name: "locomotive", + slug: "locomotive", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšƒ": Emoji( + char: "๐Ÿšƒ", + keywords: ["railway_car", "transportation", "vehicle"], + name: "railway car", + slug: "railway_car", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš„": Emoji( + char: "๐Ÿš„", + keywords: ["high_speed_train", "transportation", "vehicle"], + name: "high-speed train", + slug: "high_speed_train", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš…": Emoji( + char: "๐Ÿš…", + keywords: [ + "bullet_train", + "transportation", + "vehicle", + "speed", + "fast", + "public", + "travel" + ], + name: "bullet train", + slug: "bullet_train", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš†": Emoji( + char: "๐Ÿš†", + keywords: ["train", "transportation", "vehicle"], + name: "train", + slug: "train", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš‡": Emoji( + char: "๐Ÿš‡", + keywords: [ + "metro", + "transportation", + "blue-square", + "mrt", + "underground", + "tube" + ], + name: "metro", + slug: "metro", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšˆ": Emoji( + char: "๐Ÿšˆ", + keywords: ["light_rail", "transportation", "vehicle"], + name: "light rail", + slug: "light_rail", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš‰": Emoji( + char: "๐Ÿš‰", + keywords: ["station", "transportation", "vehicle", "public"], + name: "station", + slug: "station", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸšŠ": Emoji( + char: "๐ŸšŠ", + keywords: ["tram", "transportation", "vehicle"], + name: "tram", + slug: "tram", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["monorail", "transportation", "vehicle"], + name: "monorail", + slug: "monorail", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšž": Emoji( + char: "๐Ÿšž", + keywords: ["mountain_railway", "transportation", "vehicle"], + name: "mountain railway", + slug: "mountain_railway", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš‹": Emoji( + char: "๐Ÿš‹", + keywords: [ + "tram_car", + "transportation", + "vehicle", + "carriage", + "public", + "travel" + ], + name: "tram car", + slug: "tram_car", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸšŒ": Emoji( + char: "๐ŸšŒ", + keywords: ["bus", "car", "vehicle", "transportation"], + name: "bus", + slug: "bus", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["oncoming_bus", "vehicle", "transportation"], + name: "oncoming bus", + slug: "oncoming_bus", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸšŽ": Emoji( + char: "๐ŸšŽ", + keywords: ["trolleybus", "bart", "transportation", "vehicle"], + name: "trolleybus", + slug: "trolleybus", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["minibus", "vehicle", "car", "transportation"], + name: "minibus", + slug: "minibus", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš‘": Emoji( + char: "๐Ÿš‘", + keywords: ["ambulance", "health", "911", "hospital"], + name: "ambulance", + slug: "ambulance", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš’": Emoji( + char: "๐Ÿš’", + keywords: ["fire_engine", "transportation", "cars", "vehicle"], + name: "fire engine", + slug: "fire_engine", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš“": Emoji( + char: "๐Ÿš“", + keywords: [ + "police_car", + "vehicle", + "cars", + "transportation", + "law", + "legal", + "enforcement" + ], + name: "police car", + slug: "police_car", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš”": Emoji( + char: "๐Ÿš”", + keywords: [ + "oncoming_police_car", + "vehicle", + "law", + "legal", + "enforcement", + "911" + ], + name: "oncoming police car", + slug: "oncoming_police_car", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿš•": Emoji( + char: "๐Ÿš•", + keywords: ["taxi", "uber", "vehicle", "cars", "transportation"], + name: "taxi", + slug: "taxi", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš–": Emoji( + char: "๐Ÿš–", + keywords: ["oncoming_taxi", "vehicle", "cars", "uber"], + name: "oncoming taxi", + slug: "oncoming_taxi", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš—": Emoji( + char: "๐Ÿš—", + keywords: ["automobile", "red", "transportation", "vehicle"], + name: "automobile", + slug: "automobile", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš˜": Emoji( + char: "๐Ÿš˜", + keywords: ["oncoming_automobile", "car", "vehicle", "transportation"], + name: "oncoming automobile", + slug: "oncoming_automobile", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿš™": Emoji( + char: "๐Ÿš™", + keywords: ["sport_utility_vehicle", "transportation", "vehicle"], + name: "sport utility vehicle", + slug: "sport_utility_vehicle", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ป": Emoji( + char: "๐Ÿ›ป", + keywords: ["pickup truck", "car", "transportation"], + name: "pickup truck", + slug: "pickup_truck", + group: EmojiGroup.travelPlaces, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿšš": Emoji( + char: "๐Ÿšš", + keywords: ["delivery_truck", "cars", "transportation"], + name: "delivery truck", + slug: "delivery_truck", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš›": Emoji( + char: "๐Ÿš›", + keywords: [ + "articulated_lorry", + "vehicle", + "cars", + "transportation", + "express" + ], + name: "articulated lorry", + slug: "articulated_lorry", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšœ": Emoji( + char: "๐Ÿšœ", + keywords: ["tractor", "vehicle", "car", "farming", "agriculture"], + name: "tractor", + slug: "tractor", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŽ๏ธ": Emoji( + char: "๐ŸŽ๏ธ", + keywords: ["racing_car", "sports", "race", "fast", "formula", "f1"], + name: "racing car", + slug: "racing_car", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ๏ธ": Emoji( + char: "๐Ÿ๏ธ", + keywords: ["motorcycle", "race", "sports", "fast"], + name: "motorcycle", + slug: "motorcycle", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›ต": Emoji( + char: "๐Ÿ›ต", + keywords: ["motor_scooter", "vehicle", "vespa", "sasha"], + name: "motor scooter", + slug: "motor_scooter", + group: EmojiGroup.travelPlaces, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฆฝ": Emoji( + char: "๐Ÿฆฝ", + keywords: ["manual_wheelchair", "accessibility"], + name: "manual wheelchair", + slug: "manual_wheelchair", + group: EmojiGroup.travelPlaces, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฆผ": Emoji( + char: "๐Ÿฆผ", + keywords: ["motorized_wheelchair", "accessibility"], + name: "motorized wheelchair", + slug: "motorized_wheelchair", + group: EmojiGroup.travelPlaces, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ›บ": Emoji( + char: "๐Ÿ›บ", + keywords: ["auto_rickshaw", "move", "transportation"], + name: "auto rickshaw", + slug: "auto_rickshaw", + group: EmojiGroup.travelPlaces, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿšฒ": Emoji( + char: "๐Ÿšฒ", + keywords: ["bicycle", "sports", "bicycle", "exercise", "hipster"], + name: "bicycle", + slug: "bicycle", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ด": Emoji( + char: "๐Ÿ›ด", + keywords: ["kick_scooter", "vehicle", "kick", "razor"], + name: "kick scooter", + slug: "kick_scooter", + group: EmojiGroup.travelPlaces, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿ›น": Emoji( + char: "๐Ÿ›น", + keywords: ["skateboard", "board"], + name: "skateboard", + slug: "skateboard", + group: EmojiGroup.travelPlaces, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ›ผ": Emoji( + char: "๐Ÿ›ผ", + keywords: ["roller skate", "footwear", "sports"], + name: "roller skate", + slug: "roller_skate", + group: EmojiGroup.travelPlaces, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["bus_stop", "transportation", "wait"], + name: "bus stop", + slug: "bus_stop", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ฃ๏ธ": Emoji( + char: "๐Ÿ›ฃ๏ธ", + keywords: ["motorway", "road", "cupertino", "interstate", "highway"], + name: "motorway", + slug: "motorway", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›ค๏ธ": Emoji( + char: "๐Ÿ›ค๏ธ", + keywords: ["railway_track", "train", "transportation"], + name: "railway track", + slug: "railway_track", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›ข๏ธ": Emoji( + char: "๐Ÿ›ข๏ธ", + keywords: ["oil_drum", "barrell"], + name: "oil drum", + slug: "oil_drum", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ›ฝ": Emoji( + char: "โ›ฝ", + keywords: ["fuel_pump", "gas station", "petroleum"], + name: "fuel pump", + slug: "fuel_pump", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ž": Emoji( + char: "๐Ÿ›ž", + keywords: ["wheel", "car", "transport"], + name: "wheel", + slug: "wheel", + group: EmojiGroup.travelPlaces, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿšจ": Emoji( + char: "๐Ÿšจ", + keywords: [ + "police_car_light", + "police", + "ambulance", + "911", + "emergency", + "alert", + "error", + "pinged", + "law", + "legal" + ], + name: "police car light", + slug: "police_car_light", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšฅ": Emoji( + char: "๐Ÿšฅ", + keywords: ["horizontal_traffic_light", "transportation", "signal"], + name: "horizontal traffic light", + slug: "horizontal_traffic_light", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšฆ": Emoji( + char: "๐Ÿšฆ", + keywords: ["vertical_traffic_light", "transportation", "driving"], + name: "vertical traffic light", + slug: "vertical_traffic_light", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›‘": Emoji( + char: "๐Ÿ›‘", + keywords: ["stop_sign", "stop"], + name: "stop sign", + slug: "stop_sign", + group: EmojiGroup.travelPlaces, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿšง": Emoji( + char: "๐Ÿšง", + keywords: ["construction", "wip", "progress", "caution", "warning"], + name: "construction", + slug: "construction", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โš“": Emoji( + char: "โš“", + keywords: ["anchor", "ship", "ferry", "sea", "boat"], + name: "anchor", + slug: "anchor", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›Ÿ": Emoji( + char: "๐Ÿ›Ÿ", + keywords: ["ring buoy", "life saver", "life preserver"], + name: "ring buoy", + slug: "ring_buoy", + group: EmojiGroup.travelPlaces, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "โ›ต": Emoji( + char: "โ›ต", + keywords: [ + "sailboat", + "ship", + "summer", + "transportation", + "water", + "sailing" + ], + name: "sailboat", + slug: "sailboat", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ถ": Emoji( + char: "๐Ÿ›ถ", + keywords: ["canoe", "boat", "paddle", "water", "ship"], + name: "canoe", + slug: "canoe", + group: EmojiGroup.travelPlaces, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿšค": Emoji( + char: "๐Ÿšค", + keywords: ["speedboat", "ship", "transportation", "vehicle", "summer"], + name: "speedboat", + slug: "speedboat", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ณ๏ธ": Emoji( + char: "๐Ÿ›ณ๏ธ", + keywords: ["passenger_ship", "yacht", "cruise", "ferry"], + name: "passenger ship", + slug: "passenger_ship", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ›ด๏ธ": Emoji( + char: "โ›ด๏ธ", + keywords: ["ferry", "boat", "ship", "yacht"], + name: "ferry", + slug: "ferry", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›ฅ๏ธ": Emoji( + char: "๐Ÿ›ฅ๏ธ", + keywords: ["motor_boat", "ship"], + name: "motor boat", + slug: "motor_boat", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿšข": Emoji( + char: "๐Ÿšข", + keywords: ["ship", "transportation", "titanic", "deploy"], + name: "ship", + slug: "ship", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœˆ๏ธ": Emoji( + char: "โœˆ๏ธ", + keywords: ["airplane", "vehicle", "transportation", "flight", "fly"], + name: "airplane", + slug: "airplane", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ฉ๏ธ": Emoji( + char: "๐Ÿ›ฉ๏ธ", + keywords: ["small_airplane", "flight", "transportation", "fly", "vehicle"], + name: "small airplane", + slug: "small_airplane", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›ซ": Emoji( + char: "๐Ÿ›ซ", + keywords: ["airplane_departure", "airport", "flight", "landing"], + name: "airplane departure", + slug: "airplane_departure", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›ฌ": Emoji( + char: "๐Ÿ›ฌ", + keywords: ["airplane_arrival", "airport", "flight", "boarding"], + name: "airplane arrival", + slug: "airplane_arrival", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿช‚": Emoji( + char: "๐Ÿช‚", + keywords: ["parachute", "fly", "glide"], + name: "parachute", + slug: "parachute", + group: EmojiGroup.travelPlaces, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ’บ": Emoji( + char: "๐Ÿ’บ", + keywords: ["seat", "sit", "airplane", "transport", "bus", "flight", "fly"], + name: "seat", + slug: "seat", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿš": Emoji( + char: "๐Ÿš", + keywords: ["helicopter", "transportation", "vehicle", "fly"], + name: "helicopter", + slug: "helicopter", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸšŸ": Emoji( + char: "๐ŸšŸ", + keywords: ["suspension_railway", "vehicle", "transportation"], + name: "suspension railway", + slug: "suspension_railway", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿš ": Emoji( + char: "๐Ÿš ", + keywords: ["mountain_cableway", "transportation", "vehicle", "ski"], + name: "mountain cableway", + slug: "mountain_cableway", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšก": Emoji( + char: "๐Ÿšก", + keywords: ["aerial_tramway", "transportation", "vehicle", "ski"], + name: "aerial tramway", + slug: "aerial_tramway", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›ฐ๏ธ": Emoji( + char: "๐Ÿ›ฐ๏ธ", + keywords: [ + "satellite", + "communication", + "gps", + "orbit", + "spaceflight", + "NASA", + "ISS" + ], + name: "satellite", + slug: "satellite", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿš€": Emoji( + char: "๐Ÿš€", + keywords: [ + "rocket", + "launch", + "ship", + "staffmode", + "NASA", + "outer space", + "outer_space", + "fly" + ], + name: "rocket", + slug: "rocket", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ธ": Emoji( + char: "๐Ÿ›ธ", + keywords: ["flying_saucer", "transportation", "vehicle", "ufo"], + name: "flying saucer", + slug: "flying_saucer", + group: EmojiGroup.travelPlaces, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ›Ž๏ธ": Emoji( + char: "๐Ÿ›Ž๏ธ", + keywords: ["bellhop_bell", "service"], + name: "bellhop bell", + slug: "bellhop_bell", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿงณ": Emoji( + char: "๐Ÿงณ", + keywords: ["luggage", "packing", "travel"], + name: "luggage", + slug: "luggage", + group: EmojiGroup.travelPlaces, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "โŒ›": Emoji( + char: "โŒ›", + keywords: [ + "hourglass_done", + "time", + "clock", + "oldschool", + "limit", + "exam", + "quiz", + "test" + ], + name: "hourglass done", + slug: "hourglass_done", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โณ": Emoji( + char: "โณ", + keywords: ["hourglass_not_done", "oldschool", "time", "countdown"], + name: "hourglass not done", + slug: "hourglass_not_done", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โŒš": Emoji( + char: "โŒš", + keywords: ["watch", "time", "accessories"], + name: "watch", + slug: "watch", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฐ": Emoji( + char: "โฐ", + keywords: ["alarm_clock", "time", "wake"], + name: "alarm clock", + slug: "alarm_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฑ๏ธ": Emoji( + char: "โฑ๏ธ", + keywords: ["stopwatch", "time", "deadline"], + name: "stopwatch", + slug: "stopwatch", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โฒ๏ธ": Emoji( + char: "โฒ๏ธ", + keywords: ["timer_clock", "alarm"], + name: "timer clock", + slug: "timer_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ•ฐ๏ธ": Emoji( + char: "๐Ÿ•ฐ๏ธ", + keywords: ["mantelpiece_clock", "time"], + name: "mantelpiece clock", + slug: "mantelpiece_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•›": Emoji( + char: "๐Ÿ•›", + keywords: [ + "twelve_o_clock", + "12", + "00:00", + "0000", + "12:00", + "1200", + "time", + "noon", + "midnight", + "midday", + "late", + "early", + "schedule" + ], + name: "twelve oโ€™clock", + slug: "twelve_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ง": Emoji( + char: "๐Ÿ•ง", + keywords: [ + "twelve_thirty", + "00:30", + "0030", + "12:30", + "1230", + "time", + "late", + "early", + "schedule" + ], + name: "twelve-thirty", + slug: "twelve_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•": Emoji( + char: "๐Ÿ•", + keywords: [ + "one_o_clock", + "1", + "1:00", + "100", + "13:00", + "1300", + "time", + "late", + "early", + "schedule" + ], + name: "one oโ€™clock", + slug: "one_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•œ": Emoji( + char: "๐Ÿ•œ", + keywords: [ + "one_thirty", + "1:30", + "130", + "13:30", + "1330", + "time", + "late", + "early", + "schedule" + ], + name: "one-thirty", + slug: "one_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•‘": Emoji( + char: "๐Ÿ•‘", + keywords: [ + "two_o_clock", + "2", + "2:00", + "200", + "14:00", + "1400", + "time", + "late", + "early", + "schedule" + ], + name: "two oโ€™clock", + slug: "two_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•": Emoji( + char: "๐Ÿ•", + keywords: [ + "two_thirty", + "2:30", + "230", + "14:30", + "1430", + "time", + "late", + "early", + "schedule" + ], + name: "two-thirty", + slug: "two_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•’": Emoji( + char: "๐Ÿ•’", + keywords: [ + "three_o_clock", + "3", + "3:00", + "300", + "15:00", + "1500", + "time", + "late", + "early", + "schedule" + ], + name: "three oโ€™clock", + slug: "three_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ž": Emoji( + char: "๐Ÿ•ž", + keywords: [ + "three_thirty", + "3:30", + "330", + "15:30", + "1530", + "time", + "late", + "early", + "schedule" + ], + name: "three-thirty", + slug: "three_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•“": Emoji( + char: "๐Ÿ•“", + keywords: [ + "four_o_clock", + "4", + "4:00", + "400", + "16:00", + "1600", + "time", + "late", + "early", + "schedule" + ], + name: "four oโ€™clock", + slug: "four_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•Ÿ": Emoji( + char: "๐Ÿ•Ÿ", + keywords: [ + "four_thirty", + "4:30", + "430", + "16:30", + "1630", + "time", + "late", + "early", + "schedule" + ], + name: "four-thirty", + slug: "four_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•”": Emoji( + char: "๐Ÿ•”", + keywords: [ + "five_o_clock", + "5", + "5:00", + "500", + "17:00", + "1700", + "time", + "late", + "early", + "schedule" + ], + name: "five oโ€™clock", + slug: "five_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ• ": Emoji( + char: "๐Ÿ• ", + keywords: [ + "five_thirty", + "5:30", + "530", + "17:30", + "1730", + "time", + "late", + "early", + "schedule" + ], + name: "five-thirty", + slug: "five_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ••": Emoji( + char: "๐Ÿ••", + keywords: [ + "six_o_clock", + "6", + "6:00", + "600", + "18:00", + "1800", + "time", + "late", + "early", + "schedule", + "dawn", + "dusk" + ], + name: "six oโ€™clock", + slug: "six_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ก": Emoji( + char: "๐Ÿ•ก", + keywords: [ + "six_thirty", + "6:30", + "630", + "18:30", + "1830", + "time", + "late", + "early", + "schedule" + ], + name: "six-thirty", + slug: "six_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•–": Emoji( + char: "๐Ÿ•–", + keywords: [ + "seven_o_clock", + "7", + "7:00", + "700", + "19:00", + "1900", + "time", + "late", + "early", + "schedule" + ], + name: "seven oโ€™clock", + slug: "seven_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ข": Emoji( + char: "๐Ÿ•ข", + keywords: [ + "seven_thirty", + "7:30", + "730", + "19:30", + "1930", + "time", + "late", + "early", + "schedule" + ], + name: "seven-thirty", + slug: "seven_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•—": Emoji( + char: "๐Ÿ•—", + keywords: [ + "eight_o_clock", + "8", + "8:00", + "800", + "20:00", + "2000", + "time", + "late", + "early", + "schedule" + ], + name: "eight oโ€™clock", + slug: "eight_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ฃ": Emoji( + char: "๐Ÿ•ฃ", + keywords: [ + "eight_thirty", + "8:30", + "830", + "20:30", + "2030", + "time", + "late", + "early", + "schedule" + ], + name: "eight-thirty", + slug: "eight_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•˜": Emoji( + char: "๐Ÿ•˜", + keywords: [ + "nine_o_clock", + "9", + "9:00", + "900", + "21:00", + "2100", + "time", + "late", + "early", + "schedule" + ], + name: "nine oโ€™clock", + slug: "nine_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ค": Emoji( + char: "๐Ÿ•ค", + keywords: [ + "nine_thirty", + "9:30", + "930", + "21:30", + "2130", + "time", + "late", + "early", + "schedule" + ], + name: "nine-thirty", + slug: "nine_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•™": Emoji( + char: "๐Ÿ•™", + keywords: [ + "ten_o_clock", + "10", + "10:00", + "1000", + "22:00", + "2200", + "time", + "late", + "early", + "schedule" + ], + name: "ten oโ€™clock", + slug: "ten_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ฅ": Emoji( + char: "๐Ÿ•ฅ", + keywords: [ + "ten_thirty", + "10:30", + "1030", + "22:30", + "2230", + "time", + "late", + "early", + "schedule" + ], + name: "ten-thirty", + slug: "ten_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ•š": Emoji( + char: "๐Ÿ•š", + keywords: [ + "eleven_o_clock", + "11", + "11:00", + "1100", + "23:00", + "2300", + "time", + "late", + "early", + "schedule" + ], + name: "eleven oโ€™clock", + slug: "eleven_o_clock", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ฆ": Emoji( + char: "๐Ÿ•ฆ", + keywords: [ + "eleven_thirty", + "11:30", + "1130", + "23:30", + "2330", + "time", + "late", + "early", + "schedule" + ], + name: "eleven-thirty", + slug: "eleven_thirty", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒ‘": Emoji( + char: "๐ŸŒ‘", + keywords: [ + "new_moon", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "new moon", + slug: "new_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ’": Emoji( + char: "๐ŸŒ’", + keywords: [ + "waxing_crescent_moon", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "waxing crescent moon", + slug: "waxing_crescent_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ“": Emoji( + char: "๐ŸŒ“", + keywords: [ + "first_quarter_moon", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "first quarter moon", + slug: "first_quarter_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ”": Emoji( + char: "๐ŸŒ”", + keywords: [ + "waxing_gibbous_moon", + "nature", + "night", + "sky", + "gray", + "twilight", + "planet", + "space", + "evening", + "sleep" + ], + name: "waxing gibbous moon", + slug: "waxing_gibbous_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ•": Emoji( + char: "๐ŸŒ•", + keywords: [ + "full_moon", + "nature", + "yellow", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "full moon", + slug: "full_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ–": Emoji( + char: "๐ŸŒ–", + keywords: [ + "waning_gibbous_moon", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep", + "waxing_gibbous_moon" + ], + name: "waning gibbous moon", + slug: "waning_gibbous_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ—": Emoji( + char: "๐ŸŒ—", + keywords: [ + "last_quarter_moon", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "last quarter moon", + slug: "last_quarter_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ˜": Emoji( + char: "๐ŸŒ˜", + keywords: [ + "waning_crescent_moon", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "waning crescent moon", + slug: "waning_crescent_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ™": Emoji( + char: "๐ŸŒ™", + keywords: ["crescent_moon", "night", "sleep", "sky", "evening", "magic"], + name: "crescent moon", + slug: "crescent_moon", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒš": Emoji( + char: "๐ŸŒš", + keywords: [ + "new_moon_face", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "new moon face", + slug: "new_moon_face", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒ›": Emoji( + char: "๐ŸŒ›", + keywords: [ + "first_quarter_moon_face", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "first quarter moon face", + slug: "first_quarter_moon_face", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒœ": Emoji( + char: "๐ŸŒœ", + keywords: [ + "last_quarter_moon_face", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "last quarter moon face", + slug: "last_quarter_moon_face", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒก๏ธ": Emoji( + char: "๐ŸŒก๏ธ", + keywords: ["thermometer", "weather", "temperature", "hot", "cold"], + name: "thermometer", + slug: "thermometer", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ˜€๏ธ": Emoji( + char: "โ˜€๏ธ", + keywords: [ + "sun", + "weather", + "nature", + "brightness", + "summer", + "beach", + "spring" + ], + name: "sun", + slug: "sun", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ": Emoji( + char: "๐ŸŒ", + keywords: [ + "full_moon_face", + "nature", + "twilight", + "planet", + "space", + "night", + "evening", + "sleep" + ], + name: "full moon face", + slug: "full_moon_face", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŒž": Emoji( + char: "๐ŸŒž", + keywords: ["sun_with_face", "nature", "morning", "sky"], + name: "sun with face", + slug: "sun_with_face", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿช": Emoji( + char: "๐Ÿช", + keywords: ["ringed_planet", "outerspace"], + name: "ringed planet", + slug: "ringed_planet", + group: EmojiGroup.travelPlaces, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "โญ": Emoji( + char: "โญ", + keywords: ["star", "night", "yellow"], + name: "star", + slug: "star", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒŸ": Emoji( + char: "๐ŸŒŸ", + keywords: ["glowing_star", "night", "sparkle", "awesome", "good", "magic"], + name: "glowing star", + slug: "glowing_star", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ ": Emoji( + char: "๐ŸŒ ", + keywords: ["shooting_star", "night", "photo"], + name: "shooting star", + slug: "shooting_star", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒŒ": Emoji( + char: "๐ŸŒŒ", + keywords: ["milky_way", "photo", "space", "stars"], + name: "milky way", + slug: "milky_way", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜๏ธ": Emoji( + char: "โ˜๏ธ", + keywords: ["cloud", "weather", "sky"], + name: "cloud", + slug: "cloud", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›…": Emoji( + char: "โ›…", + keywords: [ + "sun_behind_cloud", + "weather", + "nature", + "cloudy", + "morning", + "fall", + "spring" + ], + name: "sun behind cloud", + slug: "sun_behind_cloud", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›ˆ๏ธ": Emoji( + char: "โ›ˆ๏ธ", + keywords: ["cloud_with_lightning_and_rain", "weather", "lightning"], + name: "cloud with lightning and rain", + slug: "cloud_with_lightning_and_rain", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒค๏ธ": Emoji( + char: "๐ŸŒค๏ธ", + keywords: ["sun_behind_small_cloud", "weather"], + name: "sun behind small cloud", + slug: "sun_behind_small_cloud", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒฅ๏ธ": Emoji( + char: "๐ŸŒฅ๏ธ", + keywords: ["sun_behind_large_cloud", "weather"], + name: "sun behind large cloud", + slug: "sun_behind_large_cloud", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒฆ๏ธ": Emoji( + char: "๐ŸŒฆ๏ธ", + keywords: ["sun_behind_rain_cloud", "weather"], + name: "sun behind rain cloud", + slug: "sun_behind_rain_cloud", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒง๏ธ": Emoji( + char: "๐ŸŒง๏ธ", + keywords: ["cloud_with_rain", "weather"], + name: "cloud with rain", + slug: "cloud_with_rain", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒจ๏ธ": Emoji( + char: "๐ŸŒจ๏ธ", + keywords: ["cloud_with_snow", "weather"], + name: "cloud with snow", + slug: "cloud_with_snow", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒฉ๏ธ": Emoji( + char: "๐ŸŒฉ๏ธ", + keywords: ["cloud_with_lightning", "weather", "thunder"], + name: "cloud with lightning", + slug: "cloud_with_lightning", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒช๏ธ": Emoji( + char: "๐ŸŒช๏ธ", + keywords: ["tornado", "weather", "cyclone", "twister"], + name: "tornado", + slug: "tornado", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒซ๏ธ": Emoji( + char: "๐ŸŒซ๏ธ", + keywords: ["fog", "weather"], + name: "fog", + slug: "fog", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒฌ๏ธ": Emoji( + char: "๐ŸŒฌ๏ธ", + keywords: ["wind_face", "gust", "air"], + name: "wind face", + slug: "wind_face", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŒ€": Emoji( + char: "๐ŸŒ€", + keywords: [ + "cyclone", + "weather", + "swirl", + "blue", + "cloud", + "vortex", + "spiral", + "whirlpool", + "spin", + "tornado", + "hurricane", + "typhoon" + ], + name: "cyclone", + slug: "cyclone", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒˆ": Emoji( + char: "๐ŸŒˆ", + keywords: [ + "rainbow", + "nature", + "happy", + "unicorn_face", + "photo", + "sky", + "spring" + ], + name: "rainbow", + slug: "rainbow", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒ‚": Emoji( + char: "๐ŸŒ‚", + keywords: ["closed_umbrella", "weather", "rain", "drizzle"], + name: "closed umbrella", + slug: "closed_umbrella", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜‚๏ธ": Emoji( + char: "โ˜‚๏ธ", + keywords: ["umbrella", "weather", "spring"], + name: "umbrella", + slug: "umbrella", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ˜”": Emoji( + char: "โ˜”", + keywords: ["umbrella_with_rain_drops", "rainy", "weather", "spring"], + name: "umbrella with rain drops", + slug: "umbrella_with_rain_drops", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›ฑ๏ธ": Emoji( + char: "โ›ฑ๏ธ", + keywords: ["umbrella_on_ground", "weather", "summer"], + name: "umbrella on ground", + slug: "umbrella_on_ground", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โšก": Emoji( + char: "โšก", + keywords: ["high_voltage", "thunder", "weather", "lightning bolt", "fast"], + name: "high voltage", + slug: "high_voltage", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ„๏ธ": Emoji( + char: "โ„๏ธ", + keywords: [ + "snowflake", + "winter", + "season", + "cold", + "weather", + "christmas", + "xmas" + ], + name: "snowflake", + slug: "snowflake", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜ƒ๏ธ": Emoji( + char: "โ˜ƒ๏ธ", + keywords: [ + "snowman", + "winter", + "season", + "cold", + "weather", + "christmas", + "xmas", + "frozen" + ], + name: "snowman", + slug: "snowman", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ›„": Emoji( + char: "โ›„", + keywords: [ + "snowman_without_snow", + "winter", + "season", + "cold", + "weather", + "christmas", + "xmas", + "frozen", + "without_snow" + ], + name: "snowman without snow", + slug: "snowman_without_snow", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜„๏ธ": Emoji( + char: "โ˜„๏ธ", + keywords: ["comet", "space"], + name: "comet", + slug: "comet", + group: EmojiGroup.travelPlaces, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”ฅ": Emoji( + char: "๐Ÿ”ฅ", + keywords: ["fire", "hot", "cook", "flame"], + name: "fire", + slug: "fire", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ง": Emoji( + char: "๐Ÿ’ง", + keywords: ["droplet", "water", "drip", "faucet", "spring"], + name: "droplet", + slug: "droplet", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŒŠ": Emoji( + char: "๐ŸŒŠ", + keywords: [ + "water_wave", + "sea", + "water", + "wave", + "nature", + "tsunami", + "disaster" + ], + name: "water wave", + slug: "water_wave", + group: EmojiGroup.travelPlaces, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽƒ": Emoji( + char: "๐ŸŽƒ", + keywords: [ + "jack_o_lantern", + "halloween", + "light", + "pumpkin", + "creepy", + "fall" + ], + name: "jack-o-lantern", + slug: "jack_o_lantern", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ„": Emoji( + char: "๐ŸŽ„", + keywords: [ + "christmas_tree", + "festival", + "vacation", + "december", + "xmas", + "celebration" + ], + name: "Christmas tree", + slug: "christmas_tree", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ†": Emoji( + char: "๐ŸŽ†", + keywords: ["fireworks", "photo", "festival", "carnival", "congratulations"], + name: "fireworks", + slug: "fireworks", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ‡": Emoji( + char: "๐ŸŽ‡", + keywords: ["sparkler", "stars", "night", "shine"], + name: "sparkler", + slug: "sparkler", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงจ": Emoji( + char: "๐Ÿงจ", + keywords: [ + "firecracker", + "dynamite", + "boom", + "explode", + "explosion", + "explosive" + ], + name: "firecracker", + slug: "firecracker", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "โœจ": Emoji( + char: "โœจ", + keywords: [ + "sparkles", + "stars", + "shine", + "shiny", + "cool", + "awesome", + "good", + "magic" + ], + name: "sparkles", + slug: "sparkles", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽˆ": Emoji( + char: "๐ŸŽˆ", + keywords: ["balloon", "party", "celebration", "birthday", "circus"], + name: "balloon", + slug: "balloon", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ‰": Emoji( + char: "๐ŸŽ‰", + keywords: [ + "party_popper", + "party", + "congratulations", + "birthday", + "magic", + "circus", + "celebration", + "tada" + ], + name: "party popper", + slug: "party_popper", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽŠ": Emoji( + char: "๐ŸŽŠ", + keywords: ["confetti_ball", "festival", "party", "birthday", "circus"], + name: "confetti ball", + slug: "confetti_ball", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ‹": Emoji( + char: "๐ŸŽ‹", + keywords: [ + "tanabata_tree", + "plant", + "nature", + "branch", + "summer", + "bamboo", + "wish", + "star_festival", + "tanzaku" + ], + name: "tanabata tree", + slug: "tanabata_tree", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ": Emoji( + char: "๐ŸŽ", + keywords: [ + "pine_decoration", + "japanese", + "plant", + "nature", + "vegetable", + "panda", + "new_years", + "bamboo" + ], + name: "pine decoration", + slug: "pine_decoration", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽŽ": Emoji( + char: "๐ŸŽŽ", + keywords: ["japanese_dolls", "japanese", "toy", "kimono"], + name: "Japanese dolls", + slug: "japanese_dolls", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ": Emoji( + char: "๐ŸŽ", + keywords: [ + "carp_streamer", + "fish", + "japanese", + "koinobori", + "carp", + "banner" + ], + name: "carp streamer", + slug: "carp_streamer", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ": Emoji( + char: "๐ŸŽ", + keywords: ["wind_chime", "nature", "ding", "spring", "bell"], + name: "wind chime", + slug: "wind_chime", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ‘": Emoji( + char: "๐ŸŽ‘", + keywords: ["moon_viewing_ceremony", "photo", "japan", "asia", "tsukimi"], + name: "moon viewing ceremony", + slug: "moon_viewing_ceremony", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงง": Emoji( + char: "๐Ÿงง", + keywords: ["red_envelope", "gift"], + name: "red envelope", + slug: "red_envelope", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐ŸŽ€": Emoji( + char: "๐ŸŽ€", + keywords: ["ribbon", "decoration", "pink", "girl", "bowtie"], + name: "ribbon", + slug: "ribbon", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ": Emoji( + char: "๐ŸŽ", + keywords: ["wrapped_gift", "present", "birthday", "christmas", "xmas"], + name: "wrapped gift", + slug: "wrapped_gift", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ—๏ธ": Emoji( + char: "๐ŸŽ—๏ธ", + keywords: ["reminder_ribbon", "sports", "cause", "support", "awareness"], + name: "reminder ribbon", + slug: "reminder_ribbon", + group: EmojiGroup.activities, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽŸ๏ธ": Emoji( + char: "๐ŸŽŸ๏ธ", + keywords: ["admission_tickets", "sports", "concert", "entrance"], + name: "admission tickets", + slug: "admission_tickets", + group: EmojiGroup.activities, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽซ": Emoji( + char: "๐ŸŽซ", + keywords: ["ticket", "event", "concert", "pass"], + name: "ticket", + slug: "ticket", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ–๏ธ": Emoji( + char: "๐ŸŽ–๏ธ", + keywords: ["military_medal", "award", "winning", "army"], + name: "military medal", + slug: "military_medal", + group: EmojiGroup.activities, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ†": Emoji( + char: "๐Ÿ†", + keywords: ["trophy", "win", "award", "contest", "place", "ftw", "ceremony"], + name: "trophy", + slug: "trophy", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ…": Emoji( + char: "๐Ÿ…", + keywords: ["sports_medal", "award", "winning"], + name: "sports medal", + slug: "sports_medal", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅ‡": Emoji( + char: "๐Ÿฅ‡", + keywords: ["1st_place_medal", "award", "winning", "first"], + name: "1st place medal", + slug: "1st_place_medal", + group: EmojiGroup.activities, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅˆ": Emoji( + char: "๐Ÿฅˆ", + keywords: ["2nd_place_medal", "award", "second"], + name: "2nd place medal", + slug: "2nd_place_medal", + group: EmojiGroup.activities, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅ‰": Emoji( + char: "๐Ÿฅ‰", + keywords: ["3rd_place_medal", "award", "third"], + name: "3rd place medal", + slug: "3rd_place_medal", + group: EmojiGroup.activities, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "โšฝ": Emoji( + char: "โšฝ", + keywords: ["soccer_ball", "sports", "football"], + name: "soccer ball", + slug: "soccer_ball", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โšพ": Emoji( + char: "โšพ", + keywords: ["baseball", "sports", "balls"], + name: "baseball", + slug: "baseball", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸฅŽ": Emoji( + char: "๐ŸฅŽ", + keywords: ["softball", "sports", "balls"], + name: "softball", + slug: "softball", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ€": Emoji( + char: "๐Ÿ€", + keywords: ["basketball", "sports", "balls", "NBA"], + name: "basketball", + slug: "basketball", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["volleyball", "sports", "balls"], + name: "volleyball", + slug: "volleyball", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿˆ": Emoji( + char: "๐Ÿˆ", + keywords: ["american_football", "sports", "balls", "NFL"], + name: "american football", + slug: "american_football", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‰": Emoji( + char: "๐Ÿ‰", + keywords: ["rugby_football", "sports", "team"], + name: "rugby football", + slug: "rugby_football", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŽพ": Emoji( + char: "๐ŸŽพ", + keywords: ["tennis", "sports", "balls", "green"], + name: "tennis", + slug: "tennis", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["flying_disc", "sports", "frisbee", "ultimate"], + name: "flying disc", + slug: "flying_disc", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐ŸŽณ": Emoji( + char: "๐ŸŽณ", + keywords: ["bowling", "sports", "fun", "play"], + name: "bowling", + slug: "bowling", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["cricket_game", "sports"], + name: "cricket game", + slug: "cricket_game", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: ["field_hockey", "sports"], + name: "field hockey", + slug: "field_hockey", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: ["ice_hockey", "sports"], + name: "ice hockey", + slug: "ice_hockey", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["lacrosse", "sports", "ball", "stick"], + name: "lacrosse", + slug: "lacrosse", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: ["ping_pong", "sports", "pingpong"], + name: "ping pong", + slug: "ping_pong", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿธ": Emoji( + char: "๐Ÿธ", + keywords: ["badminton", "sports"], + name: "badminton", + slug: "badminton", + group: EmojiGroup.activities, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸฅŠ": Emoji( + char: "๐ŸฅŠ", + keywords: ["boxing_glove", "sports", "fighting"], + name: "boxing glove", + slug: "boxing_glove", + group: EmojiGroup.activities, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅ‹": Emoji( + char: "๐Ÿฅ‹", + keywords: ["martial_arts_uniform", "judo", "karate", "taekwondo"], + name: "martial arts uniform", + slug: "martial_arts_uniform", + group: EmojiGroup.activities, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿฅ…": Emoji( + char: "๐Ÿฅ…", + keywords: ["goal_net", "sports"], + name: "goal net", + slug: "goal_net", + group: EmojiGroup.activities, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "โ›ณ": Emoji( + char: "โ›ณ", + keywords: ["flag_in_hole", "sports", "business", "flag", "hole", "summer"], + name: "flag in hole", + slug: "flag_in_hole", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›ธ๏ธ": Emoji( + char: "โ›ธ๏ธ", + keywords: ["ice_skate", "sports"], + name: "ice skate", + slug: "ice_skate", + group: EmojiGroup.activities, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽฃ": Emoji( + char: "๐ŸŽฃ", + keywords: ["fishing_pole", "food", "hobby", "summer"], + name: "fishing pole", + slug: "fishing_pole", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿคฟ": Emoji( + char: "๐Ÿคฟ", + keywords: ["diving_mask", "sport", "ocean"], + name: "diving mask", + slug: "diving_mask", + group: EmojiGroup.activities, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŽฝ": Emoji( + char: "๐ŸŽฝ", + keywords: ["running_shirt", "play", "pageant"], + name: "running shirt", + slug: "running_shirt", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽฟ": Emoji( + char: "๐ŸŽฟ", + keywords: ["skis", "sports", "winter", "cold", "snow"], + name: "skis", + slug: "skis", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›ท": Emoji( + char: "๐Ÿ›ท", + keywords: ["sled", "sleigh", "luge", "toboggan"], + name: "sled", + slug: "sled", + group: EmojiGroup.activities, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸฅŒ": Emoji( + char: "๐ŸฅŒ", + keywords: ["curling_stone", "sports"], + name: "curling stone", + slug: "curling_stone", + group: EmojiGroup.activities, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐ŸŽฏ": Emoji( + char: "๐ŸŽฏ", + keywords: ["direct_hit", "game", "play", "bar", "target", "bullseye"], + name: "bullseye", + slug: "bullseye", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช€": Emoji( + char: "๐Ÿช€", + keywords: ["yo_yo", "toy"], + name: "yo-yo", + slug: "yo_yo", + group: EmojiGroup.activities, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿช": Emoji( + char: "๐Ÿช", + keywords: ["kite", "wind", "fly"], + name: "kite", + slug: "kite", + group: EmojiGroup.activities, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ”ซ": Emoji( + char: "๐Ÿ”ซ", + keywords: ["pistol", "violence", "weapon", "pistol", "revolver"], + name: "water pistol", + slug: "water_pistol", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽฑ": Emoji( + char: "๐ŸŽฑ", + keywords: ["pool_8_ball", "pool", "hobby", "game", "luck", "magic"], + name: "pool 8 ball", + slug: "pool_8_ball", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ฎ": Emoji( + char: "๐Ÿ”ฎ", + keywords: [ + "crystal_ball", + "disco", + "party", + "magic", + "circus", + "fortune_teller" + ], + name: "crystal ball", + slug: "crystal_ball", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช„": Emoji( + char: "๐Ÿช„", + keywords: ["magic wand", "supernature", "power"], + name: "magic wand", + slug: "magic_wand", + group: EmojiGroup.activities, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐ŸŽฎ": Emoji( + char: "๐ŸŽฎ", + keywords: ["video_game", "play", "console", "PS4", "controller"], + name: "video game", + slug: "video_game", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•น๏ธ": Emoji( + char: "๐Ÿ•น๏ธ", + keywords: ["joystick", "game", "play"], + name: "joystick", + slug: "joystick", + group: EmojiGroup.activities, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽฐ": Emoji( + char: "๐ŸŽฐ", + keywords: [ + "slot_machine", + "bet", + "gamble", + "vegas", + "fruit machine", + "luck", + "casino" + ], + name: "slot machine", + slug: "slot_machine", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽฒ": Emoji( + char: "๐ŸŽฒ", + keywords: ["game_die", "dice", "random", "tabletop", "play", "luck"], + name: "game die", + slug: "game_die", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงฉ": Emoji( + char: "๐Ÿงฉ", + keywords: ["puzzle_piece", "interlocking", "puzzle", "piece"], + name: "puzzle piece", + slug: "puzzle_piece", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงธ": Emoji( + char: "๐Ÿงธ", + keywords: ["teddy_bear", "plush", "stuffed"], + name: "teddy bear", + slug: "teddy_bear", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿช…": Emoji( + char: "๐Ÿช…", + keywords: ["pinata", "mexico", "candy", "celebration"], + name: "piรฑata", + slug: "pinata", + group: EmojiGroup.activities, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿชฉ": Emoji( + char: "๐Ÿชฉ", + keywords: ["mirror ball", "disco", "dance", "party"], + name: "mirror ball", + slug: "mirror_ball", + group: EmojiGroup.activities, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿช†": Emoji( + char: "๐Ÿช†", + keywords: ["nesting dolls", "matryoshka", "toy"], + name: "nesting dolls", + slug: "nesting_dolls", + group: EmojiGroup.activities, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "โ™ ๏ธ": Emoji( + char: "โ™ ๏ธ", + keywords: ["spade_suit", "poker", "cards", "suits", "magic"], + name: "spade suit", + slug: "spade_suit", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™ฅ๏ธ": Emoji( + char: "โ™ฅ๏ธ", + keywords: ["heart_suit", "poker", "cards", "magic", "suits"], + name: "heart suit", + slug: "heart_suit", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™ฆ๏ธ": Emoji( + char: "โ™ฆ๏ธ", + keywords: ["diamond_suit", "poker", "cards", "magic", "suits"], + name: "diamond suit", + slug: "diamond_suit", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™ฃ๏ธ": Emoji( + char: "โ™ฃ๏ธ", + keywords: ["club_suit", "poker", "cards", "magic", "suits"], + name: "club suit", + slug: "club_suit", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™Ÿ๏ธ": Emoji( + char: "โ™Ÿ๏ธ", + keywords: ["chess_pawn", "expendable"], + name: "chess pawn", + slug: "chess_pawn", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿƒ": Emoji( + char: "๐Ÿƒ", + keywords: ["joker", "poker", "cards", "game", "play", "magic"], + name: "joker", + slug: "joker", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ€„": Emoji( + char: "๐Ÿ€„", + keywords: ["mahjong_red_dragon", "game", "play", "chinese", "kanji"], + name: "mahjong red dragon", + slug: "mahjong_red_dragon", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽด": Emoji( + char: "๐ŸŽด", + keywords: ["flower_playing_cards", "game", "sunset", "red"], + name: "flower playing cards", + slug: "flower_playing_cards", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽญ": Emoji( + char: "๐ŸŽญ", + keywords: ["performing_arts", "acting", "theater", "drama"], + name: "performing arts", + slug: "performing_arts", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ–ผ๏ธ": Emoji( + char: "๐Ÿ–ผ๏ธ", + keywords: ["framed_picture", "photography"], + name: "framed picture", + slug: "framed_picture", + group: EmojiGroup.activities, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽจ": Emoji( + char: "๐ŸŽจ", + keywords: ["artist_palette", "design", "paint", "draw", "colors"], + name: "artist palette", + slug: "artist_palette", + group: EmojiGroup.activities, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงต": Emoji( + char: "๐Ÿงต", + keywords: ["thread", "needle", "sewing", "spool", "string"], + name: "thread", + slug: "thread", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชก": Emoji( + char: "๐Ÿชก", + keywords: ["sewing needle", "stitches"], + name: "sewing needle", + slug: "sewing_needle", + group: EmojiGroup.activities, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿงถ": Emoji( + char: "๐Ÿงถ", + keywords: ["yarn", "ball", "crochet", "knit"], + name: "yarn", + slug: "yarn", + group: EmojiGroup.activities, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชข": Emoji( + char: "๐Ÿชข", + keywords: ["knot", "rope", "scout"], + name: "knot", + slug: "knot", + group: EmojiGroup.activities, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ‘“": Emoji( + char: "๐Ÿ‘“", + keywords: [ + "glasses", + "fashion", + "accessories", + "eyesight", + "nerdy", + "dork", + "geek" + ], + name: "glasses", + slug: "glasses", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ถ๏ธ": Emoji( + char: "๐Ÿ•ถ๏ธ", + keywords: ["sunglasses", "face", "cool", "accessories"], + name: "sunglasses", + slug: "sunglasses", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿฅฝ": Emoji( + char: "๐Ÿฅฝ", + keywords: ["goggles", "eyes", "protection", "safety"], + name: "goggles", + slug: "goggles", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅผ": Emoji( + char: "๐Ÿฅผ", + keywords: ["lab_coat", "doctor", "experiment", "scientist", "chemist"], + name: "lab coat", + slug: "lab_coat", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฆบ": Emoji( + char: "๐Ÿฆบ", + keywords: ["safety_vest", "protection"], + name: "safety vest", + slug: "safety_vest", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ‘”": Emoji( + char: "๐Ÿ‘”", + keywords: [ + "necktie", + "shirt", + "suitup", + "formal", + "fashion", + "cloth", + "business" + ], + name: "necktie", + slug: "necktie", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘•": Emoji( + char: "๐Ÿ‘•", + keywords: ["t_shirt", "fashion", "cloth", "casual", "shirt", "tee"], + name: "t-shirt", + slug: "t_shirt", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘–": Emoji( + char: "๐Ÿ‘–", + keywords: ["jeans", "fashion", "shopping"], + name: "jeans", + slug: "jeans", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงฃ": Emoji( + char: "๐Ÿงฃ", + keywords: ["scarf", "neck", "winter", "clothes"], + name: "scarf", + slug: "scarf", + group: EmojiGroup.objects, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿงค": Emoji( + char: "๐Ÿงค", + keywords: ["gloves", "hands", "winter", "clothes"], + name: "gloves", + slug: "gloves", + group: EmojiGroup.objects, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿงฅ": Emoji( + char: "๐Ÿงฅ", + keywords: ["coat", "jacket"], + name: "coat", + slug: "coat", + group: EmojiGroup.objects, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿงฆ": Emoji( + char: "๐Ÿงฆ", + keywords: ["socks", "stockings", "clothes"], + name: "socks", + slug: "socks", + group: EmojiGroup.objects, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿ‘—": Emoji( + char: "๐Ÿ‘—", + keywords: ["dress", "clothes", "fashion", "shopping"], + name: "dress", + slug: "dress", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘˜": Emoji( + char: "๐Ÿ‘˜", + keywords: ["kimono", "dress", "fashion", "women", "female", "japanese"], + name: "kimono", + slug: "kimono", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅป": Emoji( + char: "๐Ÿฅป", + keywords: ["sari", "dress"], + name: "sari", + slug: "sari", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฉฑ": Emoji( + char: "๐Ÿฉฑ", + keywords: ["one_piece_swimsuit", "fashion"], + name: "one-piece swimsuit", + slug: "one_piece_swimsuit", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฉฒ": Emoji( + char: "๐Ÿฉฒ", + keywords: ["briefs", "clothing"], + name: "briefs", + slug: "briefs", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฉณ": Emoji( + char: "๐Ÿฉณ", + keywords: ["shorts", "clothing"], + name: "shorts", + slug: "shorts", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ‘™": Emoji( + char: "๐Ÿ‘™", + keywords: [ + "bikini", + "swimming", + "female", + "woman", + "girl", + "fashion", + "beach", + "summer" + ], + name: "bikini", + slug: "bikini", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘š": Emoji( + char: "๐Ÿ‘š", + keywords: ["woman_s_clothes", "fashion", "shopping_bags", "female"], + name: "womanโ€™s clothes", + slug: "woman_s_clothes", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชญ": Emoji( + char: "๐Ÿชญ", + keywords: ["folding hand fan", "flamenco", "hot"], + name: "folding hand fan", + slug: "folding_hand_fan", + group: EmojiGroup.objects, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿ‘›": Emoji( + char: "๐Ÿ‘›", + keywords: ["purse", "fashion", "accessories", "money", "sales", "shopping"], + name: "purse", + slug: "purse", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘œ": Emoji( + char: "๐Ÿ‘œ", + keywords: ["handbag", "fashion", "accessory", "accessories", "shopping"], + name: "handbag", + slug: "handbag", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘": Emoji( + char: "๐Ÿ‘", + keywords: ["clutch_bag", "bag", "accessories", "shopping"], + name: "clutch bag", + slug: "clutch_bag", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›๏ธ": Emoji( + char: "๐Ÿ›๏ธ", + keywords: ["shopping_bags", "mall", "buy", "purchase"], + name: "shopping bags", + slug: "shopping_bags", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽ’": Emoji( + char: "๐ŸŽ’", + keywords: ["backpack", "student", "education", "bag", "backpack"], + name: "backpack", + slug: "backpack", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉด": Emoji( + char: "๐Ÿฉด", + keywords: ["thong sandal", "footwear", "summer"], + name: "thong sandal", + slug: "thong_sandal", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ‘ž": Emoji( + char: "๐Ÿ‘ž", + keywords: ["man_s_shoe", "fashion", "male"], + name: "manโ€™s shoe", + slug: "man_s_shoe", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘Ÿ": Emoji( + char: "๐Ÿ‘Ÿ", + keywords: ["running_shoe", "shoes", "sports", "sneakers"], + name: "running shoe", + slug: "running_shoe", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฅพ": Emoji( + char: "๐Ÿฅพ", + keywords: ["hiking_boot", "backpacking", "camping", "hiking"], + name: "hiking boot", + slug: "hiking_boot", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿฅฟ": Emoji( + char: "๐Ÿฅฟ", + keywords: ["flat_shoe", "ballet", "slip-on", "slipper"], + name: "flat shoe", + slug: "flat_shoe", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ‘ ": Emoji( + char: "๐Ÿ‘ ", + keywords: [ + "high_heeled_shoe", + "fashion", + "shoes", + "female", + "pumps", + "stiletto" + ], + name: "high-heeled shoe", + slug: "high_heeled_shoe", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘ก": Emoji( + char: "๐Ÿ‘ก", + keywords: ["woman_s_sandal", "shoes", "fashion", "flip flops"], + name: "womanโ€™s sandal", + slug: "woman_s_sandal", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉฐ": Emoji( + char: "๐Ÿฉฐ", + keywords: ["ballet_shoes", "dance"], + name: "ballet shoes", + slug: "ballet_shoes", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ‘ข": Emoji( + char: "๐Ÿ‘ข", + keywords: ["woman_s_boot", "shoes", "fashion"], + name: "womanโ€™s boot", + slug: "woman_s_boot", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชฎ": Emoji( + char: "๐Ÿชฎ", + keywords: ["hair pick", "afro", "comb"], + name: "hair pick", + slug: "hair_pick", + group: EmojiGroup.objects, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿ‘‘": Emoji( + char: "๐Ÿ‘‘", + keywords: ["crown", "king", "kod", "leader", "royalty", "lord"], + name: "crown", + slug: "crown", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‘’": Emoji( + char: "๐Ÿ‘’", + keywords: [ + "woman_s_hat", + "fashion", + "accessories", + "female", + "lady", + "spring" + ], + name: "womanโ€™s hat", + slug: "woman_s_hat", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽฉ": Emoji( + char: "๐ŸŽฉ", + keywords: ["top_hat", "magic", "gentleman", "classy", "circus"], + name: "top hat", + slug: "top_hat", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ“": Emoji( + char: "๐ŸŽ“", + keywords: [ + "graduation_cap", + "school", + "college", + "degree", + "university", + "graduation", + "cap", + "hat", + "legal", + "learn", + "education" + ], + name: "graduation cap", + slug: "graduation_cap", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงข": Emoji( + char: "๐Ÿงข", + keywords: ["billed_cap", "cap", "baseball"], + name: "billed cap", + slug: "billed_cap", + group: EmojiGroup.objects, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿช–": Emoji( + char: "๐Ÿช–", + keywords: ["military helmet", "army", "protection"], + name: "military helmet", + slug: "military_helmet", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "โ›‘๏ธ": Emoji( + char: "โ›‘๏ธ", + keywords: ["rescue_worker_s_helmet", "construction", "build"], + name: "rescue workerโ€™s helmet", + slug: "rescue_worker_s_helmet", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“ฟ": Emoji( + char: "๐Ÿ“ฟ", + keywords: ["prayer_beads", "dhikr", "religious"], + name: "prayer beads", + slug: "prayer_beads", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’„": Emoji( + char: "๐Ÿ’„", + keywords: ["lipstick", "female", "girl", "fashion", "woman"], + name: "lipstick", + slug: "lipstick", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’": Emoji( + char: "๐Ÿ’", + keywords: [ + "ring", + "wedding", + "propose", + "marriage", + "valentines", + "diamond", + "fashion", + "jewelry", + "gem", + "engagement" + ], + name: "ring", + slug: "ring", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’Ž": Emoji( + char: "๐Ÿ’Ž", + keywords: ["gem_stone", "blue", "ruby", "diamond", "jewelry"], + name: "gem stone", + slug: "gem_stone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”‡": Emoji( + char: "๐Ÿ”‡", + keywords: ["muted_speaker", "sound", "volume", "silence", "quiet"], + name: "muted speaker", + slug: "muted_speaker", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”ˆ": Emoji( + char: "๐Ÿ”ˆ", + keywords: ["speaker_low_volume", "sound", "volume", "silence", "broadcast"], + name: "speaker low volume", + slug: "speaker_low_volume", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ”‰": Emoji( + char: "๐Ÿ”‰", + keywords: ["speaker_medium_volume", "volume", "speaker", "broadcast"], + name: "speaker medium volume", + slug: "speaker_medium_volume", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”Š": Emoji( + char: "๐Ÿ”Š", + keywords: [ + "speaker_high_volume", + "volume", + "noise", + "noisy", + "speaker", + "broadcast" + ], + name: "speaker high volume", + slug: "speaker_high_volume", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ข": Emoji( + char: "๐Ÿ“ข", + keywords: ["loudspeaker", "volume", "sound"], + name: "loudspeaker", + slug: "loudspeaker", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฃ": Emoji( + char: "๐Ÿ“ฃ", + keywords: ["megaphone", "sound", "speaker", "volume"], + name: "megaphone", + slug: "megaphone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฏ": Emoji( + char: "๐Ÿ“ฏ", + keywords: ["postal_horn", "instrument", "music"], + name: "postal horn", + slug: "postal_horn", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ””": Emoji( + char: "๐Ÿ””", + keywords: ["bell", "sound", "notification", "christmas", "xmas", "chime"], + name: "bell", + slug: "bell", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”•": Emoji( + char: "๐Ÿ”•", + keywords: ["bell_with_slash", "sound", "volume", "mute", "quiet", "silent"], + name: "bell with slash", + slug: "bell_with_slash", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŽผ": Emoji( + char: "๐ŸŽผ", + keywords: ["musical_score", "treble", "clef", "compose"], + name: "musical score", + slug: "musical_score", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽต": Emoji( + char: "๐ŸŽต", + keywords: ["musical_note", "score", "tone", "sound"], + name: "musical note", + slug: "musical_note", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽถ": Emoji( + char: "๐ŸŽถ", + keywords: ["musical_notes", "music", "score"], + name: "musical notes", + slug: "musical_notes", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽ™๏ธ": Emoji( + char: "๐ŸŽ™๏ธ", + keywords: ["studio_microphone", "sing", "recording", "artist", "talkshow"], + name: "studio microphone", + slug: "studio_microphone", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽš๏ธ": Emoji( + char: "๐ŸŽš๏ธ", + keywords: ["level_slider", "scale"], + name: "level slider", + slug: "level_slider", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽ›๏ธ": Emoji( + char: "๐ŸŽ›๏ธ", + keywords: ["control_knobs", "dial"], + name: "control knobs", + slug: "control_knobs", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽค": Emoji( + char: "๐ŸŽค", + keywords: ["microphone", "sound", "music", "PA", "sing", "talkshow"], + name: "microphone", + slug: "microphone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽง": Emoji( + char: "๐ŸŽง", + keywords: ["headphone", "music", "score", "gadgets"], + name: "headphone", + slug: "headphone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ป": Emoji( + char: "๐Ÿ“ป", + keywords: ["radio", "communication", "music", "podcast", "program"], + name: "radio", + slug: "radio", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽท": Emoji( + char: "๐ŸŽท", + keywords: ["saxophone", "music", "instrument", "jazz", "blues"], + name: "saxophone", + slug: "saxophone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช—": Emoji( + char: "๐Ÿช—", + keywords: ["accordion", "music"], + name: "accordion", + slug: "accordion", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐ŸŽธ": Emoji( + char: "๐ŸŽธ", + keywords: ["guitar", "music", "instrument"], + name: "guitar", + slug: "guitar", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽน": Emoji( + char: "๐ŸŽน", + keywords: ["musical_keyboard", "piano", "instrument", "compose"], + name: "musical keyboard", + slug: "musical_keyboard", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽบ": Emoji( + char: "๐ŸŽบ", + keywords: ["trumpet", "music", "brass"], + name: "trumpet", + slug: "trumpet", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽป": Emoji( + char: "๐ŸŽป", + keywords: ["violin", "music", "instrument", "orchestra", "symphony"], + name: "violin", + slug: "violin", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช•": Emoji( + char: "๐Ÿช•", + keywords: ["banjo", "music", "instructment"], + name: "banjo", + slug: "banjo", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฅ": Emoji( + char: "๐Ÿฅ", + keywords: ["drum", "music", "instrument", "drumsticks", "snare"], + name: "drum", + slug: "drum", + group: EmojiGroup.objects, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿช˜": Emoji( + char: "๐Ÿช˜", + keywords: ["long drum", "music"], + name: "long drum", + slug: "long_drum", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿช‡": Emoji( + char: "๐Ÿช‡", + keywords: ["maracas", "music", "instrument", "percussion"], + name: "maracas", + slug: "maracas", + group: EmojiGroup.objects, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿชˆ": Emoji( + char: "๐Ÿชˆ", + keywords: ["flute", "bamboo", "music", "instrument", "pied piper"], + name: "flute", + slug: "flute", + group: EmojiGroup.objects, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿ“ฑ": Emoji( + char: "๐Ÿ“ฑ", + keywords: ["mobile_phone", "technology", "apple", "gadgets", "dial"], + name: "mobile phone", + slug: "mobile_phone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฒ": Emoji( + char: "๐Ÿ“ฒ", + keywords: ["mobile_phone_with_arrow", "iphone", "incoming"], + name: "mobile phone with arrow", + slug: "mobile_phone_with_arrow", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜Ž๏ธ": Emoji( + char: "โ˜Ž๏ธ", + keywords: ["telephone", "technology", "communication", "dial", "telephone"], + name: "telephone", + slug: "telephone", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ž": Emoji( + char: "๐Ÿ“ž", + keywords: ["telephone_receiver", "technology", "communication", "dial"], + name: "telephone receiver", + slug: "telephone_receiver", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“Ÿ": Emoji( + char: "๐Ÿ“Ÿ", + keywords: ["pager", "bbcall", "oldschool", "90s"], + name: "pager", + slug: "pager", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ ": Emoji( + char: "๐Ÿ“ ", + keywords: ["fax_machine", "communication", "technology"], + name: "fax machine", + slug: "fax_machine", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”‹": Emoji( + char: "๐Ÿ”‹", + keywords: ["battery", "power", "energy", "sustain"], + name: "battery", + slug: "battery", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชซ": Emoji( + char: "๐Ÿชซ", + keywords: ["low battery", "drained", "dead"], + name: "low battery", + slug: "low_battery", + group: EmojiGroup.objects, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ”Œ": Emoji( + char: "๐Ÿ”Œ", + keywords: ["electric_plug", "charger", "power"], + name: "electric plug", + slug: "electric_plug", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ป": Emoji( + char: "๐Ÿ’ป", + keywords: [ + "laptop", + "technology", + "laptop", + "screen", + "display", + "monitor" + ], + name: "laptop", + slug: "laptop", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ–ฅ๏ธ": Emoji( + char: "๐Ÿ–ฅ๏ธ", + keywords: ["desktop_computer", "technology", "computing", "screen"], + name: "desktop computer", + slug: "desktop_computer", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ–จ๏ธ": Emoji( + char: "๐Ÿ–จ๏ธ", + keywords: ["printer", "paper", "ink"], + name: "printer", + slug: "printer", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โŒจ๏ธ": Emoji( + char: "โŒจ๏ธ", + keywords: ["keyboard", "technology", "computer", "type", "input", "text"], + name: "keyboard", + slug: "keyboard", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ–ฑ๏ธ": Emoji( + char: "๐Ÿ–ฑ๏ธ", + keywords: ["computer_mouse", "click"], + name: "computer mouse", + slug: "computer_mouse", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ–ฒ๏ธ": Emoji( + char: "๐Ÿ–ฒ๏ธ", + keywords: ["trackball", "technology", "trackpad"], + name: "trackball", + slug: "trackball", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ’ฝ": Emoji( + char: "๐Ÿ’ฝ", + keywords: ["computer_disk", "technology", "record", "data", "disk", "90s"], + name: "computer disk", + slug: "computer_disk", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’พ": Emoji( + char: "๐Ÿ’พ", + keywords: ["floppy_disk", "oldschool", "technology", "save", "90s", "80s"], + name: "floppy disk", + slug: "floppy_disk", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฟ": Emoji( + char: "๐Ÿ’ฟ", + keywords: ["optical_disk", "technology", "dvd", "disk", "disc", "90s"], + name: "optical disk", + slug: "optical_disk", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“€": Emoji( + char: "๐Ÿ“€", + keywords: ["dvd", "cd", "disk", "disc"], + name: "dvd", + slug: "dvd", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงฎ": Emoji( + char: "๐Ÿงฎ", + keywords: ["abacus", "calculation"], + name: "abacus", + slug: "abacus", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐ŸŽฅ": Emoji( + char: "๐ŸŽฅ", + keywords: ["movie_camera", "film", "record"], + name: "movie camera", + slug: "movie_camera", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽž๏ธ": Emoji( + char: "๐ŸŽž๏ธ", + keywords: ["film_frames", "movie"], + name: "film frames", + slug: "film_frames", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“ฝ๏ธ": Emoji( + char: "๐Ÿ“ฝ๏ธ", + keywords: ["film_projector", "video", "tape", "record", "movie"], + name: "film projector", + slug: "film_projector", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐ŸŽฌ": Emoji( + char: "๐ŸŽฌ", + keywords: ["clapper_board", "movie", "film", "record"], + name: "clapper board", + slug: "clapper_board", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“บ": Emoji( + char: "๐Ÿ“บ", + keywords: [ + "television", + "technology", + "program", + "oldschool", + "show", + "television" + ], + name: "television", + slug: "television", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ท": Emoji( + char: "๐Ÿ“ท", + keywords: ["camera", "gadgets", "photography"], + name: "camera", + slug: "camera", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ธ": Emoji( + char: "๐Ÿ“ธ", + keywords: ["camera_with_flash", "photography", "gadgets"], + name: "camera with flash", + slug: "camera_with_flash", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ“น": Emoji( + char: "๐Ÿ“น", + keywords: ["video_camera", "film", "record"], + name: "video camera", + slug: "video_camera", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ผ": Emoji( + char: "๐Ÿ“ผ", + keywords: ["videocassette", "record", "video", "oldschool", "90s", "80s"], + name: "videocassette", + slug: "videocassette", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: [ + "magnifying_glass_tilted_left", + "search", + "zoom", + "find", + "detective" + ], + name: "magnifying glass tilted left", + slug: "magnifying_glass_tilted_left", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”Ž": Emoji( + char: "๐Ÿ”Ž", + keywords: [ + "magnifying_glass_tilted_right", + "search", + "zoom", + "find", + "detective" + ], + name: "magnifying glass tilted right", + slug: "magnifying_glass_tilted_right", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ•ฏ๏ธ": Emoji( + char: "๐Ÿ•ฏ๏ธ", + keywords: ["candle", "fire", "wax"], + name: "candle", + slug: "candle", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ’ก": Emoji( + char: "๐Ÿ’ก", + keywords: ["light_bulb", "light", "electricity", "idea"], + name: "light bulb", + slug: "light_bulb", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ฆ": Emoji( + char: "๐Ÿ”ฆ", + keywords: ["flashlight", "dark", "camping", "sight", "night"], + name: "flashlight", + slug: "flashlight", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฎ": Emoji( + char: "๐Ÿฎ", + keywords: ["red_paper_lantern", "light", "paper", "halloween", "spooky"], + name: "red paper lantern", + slug: "red_paper_lantern", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช”": Emoji( + char: "๐Ÿช”", + keywords: ["diya_lamp", "lighting"], + name: "diya lamp", + slug: "diya_lamp", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ“”": Emoji( + char: "๐Ÿ“”", + keywords: [ + "notebook_with_decorative_cover", + "classroom", + "notes", + "record", + "paper", + "study" + ], + name: "notebook with decorative cover", + slug: "notebook_with_decorative_cover", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“•": Emoji( + char: "๐Ÿ“•", + keywords: [ + "closed_book", + "read", + "library", + "knowledge", + "textbook", + "learn" + ], + name: "closed book", + slug: "closed_book", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“–": Emoji( + char: "๐Ÿ“–", + keywords: [ + "open_book", + "book", + "read", + "library", + "knowledge", + "literature", + "learn", + "study" + ], + name: "open book", + slug: "open_book", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“—": Emoji( + char: "๐Ÿ“—", + keywords: ["green_book", "read", "library", "knowledge", "study"], + name: "green book", + slug: "green_book", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“˜": Emoji( + char: "๐Ÿ“˜", + keywords: ["blue_book", "read", "library", "knowledge", "learn", "study"], + name: "blue book", + slug: "blue_book", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“™": Emoji( + char: "๐Ÿ“™", + keywords: [ + "orange_book", + "read", + "library", + "knowledge", + "textbook", + "study" + ], + name: "orange book", + slug: "orange_book", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“š": Emoji( + char: "๐Ÿ“š", + keywords: ["books", "literature", "library", "study"], + name: "books", + slug: "books", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ““": Emoji( + char: "๐Ÿ““", + keywords: ["notebook", "stationery", "record", "notes", "paper", "study"], + name: "notebook", + slug: "notebook", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“’": Emoji( + char: "๐Ÿ“’", + keywords: ["ledger", "notes", "paper"], + name: "ledger", + slug: "ledger", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ƒ": Emoji( + char: "๐Ÿ“ƒ", + keywords: ["page_with_curl", "documents", "office", "paper"], + name: "page with curl", + slug: "page_with_curl", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“œ": Emoji( + char: "๐Ÿ“œ", + keywords: ["scroll", "documents", "ancient", "history", "paper"], + name: "scroll", + slug: "scroll", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“„": Emoji( + char: "๐Ÿ“„", + keywords: ["page_facing_up", "documents", "office", "paper", "information"], + name: "page facing up", + slug: "page_facing_up", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฐ": Emoji( + char: "๐Ÿ“ฐ", + keywords: ["newspaper", "press", "headline"], + name: "newspaper", + slug: "newspaper", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—ž๏ธ": Emoji( + char: "๐Ÿ—ž๏ธ", + keywords: ["rolled_up_newspaper", "press", "headline"], + name: "rolled-up newspaper", + slug: "rolled_up_newspaper", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“‘": Emoji( + char: "๐Ÿ“‘", + keywords: ["bookmark_tabs", "favorite", "save", "order", "tidy"], + name: "bookmark tabs", + slug: "bookmark_tabs", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”–": Emoji( + char: "๐Ÿ”–", + keywords: ["bookmark", "favorite", "label", "save"], + name: "bookmark", + slug: "bookmark", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿท๏ธ": Emoji( + char: "๐Ÿท๏ธ", + keywords: ["label", "sale", "tag"], + name: "label", + slug: "label", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ’ฐ": Emoji( + char: "๐Ÿ’ฐ", + keywords: ["money_bag", "dollar", "payment", "coins", "sale"], + name: "money bag", + slug: "money_bag", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช™": Emoji( + char: "๐Ÿช™", + keywords: ["coin", "money", "currency"], + name: "coin", + slug: "coin", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ’ด": Emoji( + char: "๐Ÿ’ด", + keywords: [ + "yen_banknote", + "money", + "sales", + "japanese", + "dollar", + "currency" + ], + name: "yen banknote", + slug: "yen_banknote", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ต": Emoji( + char: "๐Ÿ’ต", + keywords: ["dollar_banknote", "money", "sales", "bill", "currency"], + name: "dollar banknote", + slug: "dollar_banknote", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ถ": Emoji( + char: "๐Ÿ’ถ", + keywords: ["euro_banknote", "money", "sales", "dollar", "currency"], + name: "euro banknote", + slug: "euro_banknote", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’ท": Emoji( + char: "๐Ÿ’ท", + keywords: [ + "pound_banknote", + "british", + "sterling", + "money", + "sales", + "bills", + "uk", + "england", + "currency" + ], + name: "pound banknote", + slug: "pound_banknote", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’ธ": Emoji( + char: "๐Ÿ’ธ", + keywords: ["money_with_wings", "dollar", "bills", "payment", "sale"], + name: "money with wings", + slug: "money_with_wings", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ณ": Emoji( + char: "๐Ÿ’ณ", + keywords: [ + "credit_card", + "money", + "sales", + "dollar", + "bill", + "payment", + "shopping" + ], + name: "credit card", + slug: "credit_card", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿงพ": Emoji( + char: "๐Ÿงพ", + keywords: ["receipt", "accounting", "expenses"], + name: "receipt", + slug: "receipt", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ’น": Emoji( + char: "๐Ÿ’น", + keywords: [ + "chart_increasing_with_yen", + "green-square", + "graph", + "presentation", + "stats" + ], + name: "chart increasing with yen", + slug: "chart_increasing_with_yen", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœ‰๏ธ": Emoji( + char: "โœ‰๏ธ", + keywords: ["envelope", "letter", "postal", "inbox", "communication"], + name: "envelope", + slug: "envelope", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ง": Emoji( + char: "๐Ÿ“ง", + keywords: ["e_mail", "communication", "inbox"], + name: "e-mail", + slug: "e_mail", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“จ": Emoji( + char: "๐Ÿ“จ", + keywords: ["incoming_envelope", "email", "inbox"], + name: "incoming envelope", + slug: "incoming_envelope", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฉ": Emoji( + char: "๐Ÿ“ฉ", + keywords: ["envelope_with_arrow", "email", "communication"], + name: "envelope with arrow", + slug: "envelope_with_arrow", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ค": Emoji( + char: "๐Ÿ“ค", + keywords: ["outbox_tray", "inbox", "email"], + name: "outbox tray", + slug: "outbox_tray", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฅ": Emoji( + char: "๐Ÿ“ฅ", + keywords: ["inbox_tray", "email", "documents"], + name: "inbox tray", + slug: "inbox_tray", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฆ": Emoji( + char: "๐Ÿ“ฆ", + keywords: ["package", "mail", "gift", "cardboard", "box", "moving"], + name: "package", + slug: "package", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ซ": Emoji( + char: "๐Ÿ“ซ", + keywords: [ + "closed_mailbox_with_raised_flag", + "email", + "inbox", + "communication" + ], + name: "closed mailbox with raised flag", + slug: "closed_mailbox_with_raised_flag", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ช": Emoji( + char: "๐Ÿ“ช", + keywords: [ + "closed_mailbox_with_lowered_flag", + "email", + "communication", + "inbox" + ], + name: "closed mailbox with lowered flag", + slug: "closed_mailbox_with_lowered_flag", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ฌ": Emoji( + char: "๐Ÿ“ฌ", + keywords: [ + "open_mailbox_with_raised_flag", + "email", + "inbox", + "communication" + ], + name: "open mailbox with raised flag", + slug: "open_mailbox_with_raised_flag", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“ญ": Emoji( + char: "๐Ÿ“ญ", + keywords: ["open_mailbox_with_lowered_flag", "email", "inbox"], + name: "open mailbox with lowered flag", + slug: "open_mailbox_with_lowered_flag", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“ฎ": Emoji( + char: "๐Ÿ“ฎ", + keywords: ["postbox", "email", "letter", "envelope"], + name: "postbox", + slug: "postbox", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—ณ๏ธ": Emoji( + char: "๐Ÿ—ณ๏ธ", + keywords: ["ballot_box_with_ballot", "election", "vote"], + name: "ballot box with ballot", + slug: "ballot_box_with_ballot", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โœ๏ธ": Emoji( + char: "โœ๏ธ", + keywords: [ + "pencil", + "stationery", + "write", + "paper", + "writing", + "school", + "study" + ], + name: "pencil", + slug: "pencil", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœ’๏ธ": Emoji( + char: "โœ’๏ธ", + keywords: ["black_nib", "pen", "stationery", "writing", "write"], + name: "black nib", + slug: "black_nib", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ–‹๏ธ": Emoji( + char: "๐Ÿ–‹๏ธ", + keywords: ["fountain_pen", "stationery", "writing", "write"], + name: "fountain pen", + slug: "fountain_pen", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ–Š๏ธ": Emoji( + char: "๐Ÿ–Š๏ธ", + keywords: ["pen", "stationery", "writing", "write"], + name: "pen", + slug: "pen", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ–Œ๏ธ": Emoji( + char: "๐Ÿ–Œ๏ธ", + keywords: ["paintbrush", "drawing", "creativity", "art"], + name: "paintbrush", + slug: "paintbrush", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ–๏ธ": Emoji( + char: "๐Ÿ–๏ธ", + keywords: ["crayon", "drawing", "creativity"], + name: "crayon", + slug: "crayon", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: [ + "memo", + "write", + "documents", + "stationery", + "pencil", + "paper", + "writing", + "legal", + "exam", + "quiz", + "test", + "study", + "compose" + ], + name: "memo", + slug: "memo", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ผ": Emoji( + char: "๐Ÿ’ผ", + keywords: [ + "briefcase", + "business", + "documents", + "work", + "law", + "legal", + "job", + "career" + ], + name: "briefcase", + slug: "briefcase", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: ["file_folder", "documents", "business", "office"], + name: "file folder", + slug: "file_folder", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“‚": Emoji( + char: "๐Ÿ“‚", + keywords: ["open_file_folder", "documents", "load"], + name: "open file folder", + slug: "open_file_folder", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—‚๏ธ": Emoji( + char: "๐Ÿ—‚๏ธ", + keywords: ["card_index_dividers", "organizing", "business", "stationery"], + name: "card index dividers", + slug: "card_index_dividers", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“…": Emoji( + char: "๐Ÿ“…", + keywords: ["calendar", "calendar", "schedule"], + name: "calendar", + slug: "calendar", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“†": Emoji( + char: "๐Ÿ“†", + keywords: ["tear_off_calendar", "schedule", "date", "planning"], + name: "tear-off calendar", + slug: "tear_off_calendar", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—’๏ธ": Emoji( + char: "๐Ÿ—’๏ธ", + keywords: ["spiral_notepad", "memo", "stationery"], + name: "spiral notepad", + slug: "spiral_notepad", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ—“๏ธ": Emoji( + char: "๐Ÿ—“๏ธ", + keywords: ["spiral_calendar", "date", "schedule", "planning"], + name: "spiral calendar", + slug: "spiral_calendar", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“‡": Emoji( + char: "๐Ÿ“‡", + keywords: ["card_index", "business", "stationery"], + name: "card index", + slug: "card_index", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ˆ": Emoji( + char: "๐Ÿ“ˆ", + keywords: [ + "chart_increasing", + "graph", + "presentation", + "stats", + "recovery", + "business", + "economics", + "money", + "sales", + "good", + "success" + ], + name: "chart increasing", + slug: "chart_increasing", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“‰": Emoji( + char: "๐Ÿ“‰", + keywords: [ + "chart_decreasing", + "graph", + "presentation", + "stats", + "recession", + "business", + "economics", + "money", + "sales", + "bad", + "failure" + ], + name: "chart decreasing", + slug: "chart_decreasing", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“Š": Emoji( + char: "๐Ÿ“Š", + keywords: ["bar_chart", "graph", "presentation", "stats"], + name: "bar chart", + slug: "bar_chart", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“‹": Emoji( + char: "๐Ÿ“‹", + keywords: ["clipboard", "stationery", "documents"], + name: "clipboard", + slug: "clipboard", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“Œ": Emoji( + char: "๐Ÿ“Œ", + keywords: ["pushpin", "stationery", "mark", "here"], + name: "pushpin", + slug: "pushpin", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: ["round_pushpin", "stationery", "location", "map", "here"], + name: "round pushpin", + slug: "round_pushpin", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“Ž": Emoji( + char: "๐Ÿ“Ž", + keywords: ["paperclip", "documents", "stationery"], + name: "paperclip", + slug: "paperclip", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ–‡๏ธ": Emoji( + char: "๐Ÿ–‡๏ธ", + keywords: ["linked_paperclips", "documents", "stationery"], + name: "linked paperclips", + slug: "linked_paperclips", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: [ + "straight_ruler", + "stationery", + "calculate", + "length", + "math", + "school", + "drawing", + "architect", + "sketch" + ], + name: "straight ruler", + slug: "straight_ruler", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“": Emoji( + char: "๐Ÿ“", + keywords: ["triangular_ruler", "stationery", "math", "architect", "sketch"], + name: "triangular ruler", + slug: "triangular_ruler", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœ‚๏ธ": Emoji( + char: "โœ‚๏ธ", + keywords: ["scissors", "stationery", "cut"], + name: "scissors", + slug: "scissors", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—ƒ๏ธ": Emoji( + char: "๐Ÿ—ƒ๏ธ", + keywords: ["card_file_box", "business", "stationery"], + name: "card file box", + slug: "card_file_box", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ—„๏ธ": Emoji( + char: "๐Ÿ—„๏ธ", + keywords: ["file_cabinet", "filing", "organizing"], + name: "file cabinet", + slug: "file_cabinet", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ—‘๏ธ": Emoji( + char: "๐Ÿ—‘๏ธ", + keywords: ["wastebasket", "bin", "trash", "rubbish", "garbage", "toss"], + name: "wastebasket", + slug: "wastebasket", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ”’": Emoji( + char: "๐Ÿ”’", + keywords: ["locked", "security", "password", "padlock"], + name: "locked", + slug: "locked", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”“": Emoji( + char: "๐Ÿ”“", + keywords: ["unlocked", "privacy", "security"], + name: "unlocked", + slug: "unlocked", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: ["locked_with_pen", "security", "secret"], + name: "locked with pen", + slug: "locked_with_pen", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: ["locked_with_key", "security", "privacy"], + name: "locked with key", + slug: "locked_with_key", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”‘": Emoji( + char: "๐Ÿ”‘", + keywords: ["key", "lock", "door", "password"], + name: "key", + slug: "key", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ—๏ธ": Emoji( + char: "๐Ÿ—๏ธ", + keywords: ["old_key", "lock", "door", "password"], + name: "old key", + slug: "old_key", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ”จ": Emoji( + char: "๐Ÿ”จ", + keywords: ["hammer", "tools", "build", "create"], + name: "hammer", + slug: "hammer", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช“": Emoji( + char: "๐Ÿช“", + keywords: ["axe", "tool", "chop", "cut"], + name: "axe", + slug: "axe", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "โ›๏ธ": Emoji( + char: "โ›๏ธ", + keywords: ["pick", "tools", "dig"], + name: "pick", + slug: "pick", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โš’๏ธ": Emoji( + char: "โš’๏ธ", + keywords: ["hammer_and_pick", "tools", "build", "create"], + name: "hammer and pick", + slug: "hammer_and_pick", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ› ๏ธ": Emoji( + char: "๐Ÿ› ๏ธ", + keywords: ["hammer_and_wrench", "tools", "build", "create"], + name: "hammer and wrench", + slug: "hammer_and_wrench", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ—ก๏ธ": Emoji( + char: "๐Ÿ—ก๏ธ", + keywords: ["dagger", "weapon"], + name: "dagger", + slug: "dagger", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โš”๏ธ": Emoji( + char: "โš”๏ธ", + keywords: ["crossed_swords", "weapon"], + name: "crossed swords", + slug: "crossed_swords", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ’ฃ": Emoji( + char: "๐Ÿ’ฃ", + keywords: ["bomb", "boom", "explode", "explosion", "terrorism"], + name: "bomb", + slug: "bomb", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชƒ": Emoji( + char: "๐Ÿชƒ", + keywords: ["boomerang", "weapon"], + name: "boomerang", + slug: "boomerang", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿน": Emoji( + char: "๐Ÿน", + keywords: ["bow_and_arrow", "sports"], + name: "bow and arrow", + slug: "bow_and_arrow", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›ก๏ธ": Emoji( + char: "๐Ÿ›ก๏ธ", + keywords: ["shield", "protection", "security"], + name: "shield", + slug: "shield", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿชš": Emoji( + char: "๐Ÿชš", + keywords: ["carpentry saw", "cut", "chop"], + name: "carpentry saw", + slug: "carpentry_saw", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ”ง": Emoji( + char: "๐Ÿ”ง", + keywords: ["wrench", "tools", "diy", "ikea", "fix", "maintainer"], + name: "wrench", + slug: "wrench", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช›": Emoji( + char: "๐Ÿช›", + keywords: ["screwdriver", "tools"], + name: "screwdriver", + slug: "screwdriver", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ”ฉ": Emoji( + char: "๐Ÿ”ฉ", + keywords: ["nut_and_bolt", "handy", "tools", "fix"], + name: "nut and bolt", + slug: "nut_and_bolt", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โš™๏ธ": Emoji( + char: "โš™๏ธ", + keywords: ["gear", "cog"], + name: "gear", + slug: "gear", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ—œ๏ธ": Emoji( + char: "๐Ÿ—œ๏ธ", + keywords: ["clamp", "tool"], + name: "clamp", + slug: "clamp", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โš–๏ธ": Emoji( + char: "โš–๏ธ", + keywords: ["balance_scale", "law", "fairness", "weight"], + name: "balance scale", + slug: "balance_scale", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿฆฏ": Emoji( + char: "๐Ÿฆฏ", + keywords: ["probing_cane", "accessibility"], + name: "white cane", + slug: "white_cane", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ”—": Emoji( + char: "๐Ÿ”—", + keywords: ["link", "rings", "url"], + name: "link", + slug: "link", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›“๏ธ": Emoji( + char: "โ›“๏ธ", + keywords: ["chains", "lock", "arrest"], + name: "chains", + slug: "chains", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿช": Emoji( + char: "๐Ÿช", + keywords: ["hook", "tools"], + name: "hook", + slug: "hook", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿงฐ": Emoji( + char: "๐Ÿงฐ", + keywords: ["toolbox", "tools", "diy", "fix", "maintainer", "mechanic"], + name: "toolbox", + slug: "toolbox", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงฒ": Emoji( + char: "๐Ÿงฒ", + keywords: ["magnet", "attraction", "magnetic"], + name: "magnet", + slug: "magnet", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชœ": Emoji( + char: "๐Ÿชœ", + keywords: ["ladder", "tools"], + name: "ladder", + slug: "ladder", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "โš—๏ธ": Emoji( + char: "โš—๏ธ", + keywords: ["alembic", "distilling", "science", "experiment", "chemistry"], + name: "alembic", + slug: "alembic", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿงช": Emoji( + char: "๐Ÿงช", + keywords: ["test_tube", "chemistry", "experiment", "lab", "science"], + name: "test tube", + slug: "test_tube", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงซ": Emoji( + char: "๐Ÿงซ", + keywords: ["petri_dish", "bacteria", "biology", "culture", "lab"], + name: "petri dish", + slug: "petri_dish", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงฌ": Emoji( + char: "๐Ÿงฌ", + keywords: ["dna", "biologist", "genetics", "life"], + name: "dna", + slug: "dna", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ”ฌ": Emoji( + char: "๐Ÿ”ฌ", + keywords: [ + "microscope", + "laboratory", + "experiment", + "zoomin", + "science", + "study" + ], + name: "microscope", + slug: "microscope", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”ญ": Emoji( + char: "๐Ÿ”ญ", + keywords: ["telescope", "stars", "space", "zoom", "science", "astronomy"], + name: "telescope", + slug: "telescope", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ“ก": Emoji( + char: "๐Ÿ“ก", + keywords: [ + "satellite_antenna", + "communication", + "future", + "radio", + "space" + ], + name: "satellite antenna", + slug: "satellite_antenna", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’‰": Emoji( + char: "๐Ÿ’‰", + keywords: [ + "syringe", + "health", + "hospital", + "drugs", + "blood", + "medicine", + "needle", + "doctor", + "nurse" + ], + name: "syringe", + slug: "syringe", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉธ": Emoji( + char: "๐Ÿฉธ", + keywords: ["drop_of_blood", "period", "hurt", "harm", "wound"], + name: "drop of blood", + slug: "drop_of_blood", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ’Š": Emoji( + char: "๐Ÿ’Š", + keywords: ["pill", "health", "medicine", "doctor", "pharmacy", "drug"], + name: "pill", + slug: "pill", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿฉน": Emoji( + char: "๐Ÿฉน", + keywords: ["adhesive_bandage", "heal"], + name: "adhesive bandage", + slug: "adhesive_bandage", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฉผ": Emoji( + char: "๐Ÿฉผ", + keywords: ["crutch", "accessibility", "assist"], + name: "crutch", + slug: "crutch", + group: EmojiGroup.objects, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿฉบ": Emoji( + char: "๐Ÿฉบ", + keywords: ["stethoscope", "health"], + name: "stethoscope", + slug: "stethoscope", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿฉป": Emoji( + char: "๐Ÿฉป", + keywords: ["x-ray", "skeleton", "medicine"], + name: "x-ray", + slug: "x_ray", + group: EmojiGroup.objects, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿšช": Emoji( + char: "๐Ÿšช", + keywords: ["door", "house", "entry", "exit"], + name: "door", + slug: "door", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›—": Emoji( + char: "๐Ÿ›—", + keywords: ["elevator", "lift"], + name: "elevator", + slug: "elevator", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿชž": Emoji( + char: "๐Ÿชž", + keywords: ["mirror", "reflection"], + name: "mirror", + slug: "mirror", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐ŸชŸ": Emoji( + char: "๐ŸชŸ", + keywords: ["window", "scenery"], + name: "window", + slug: "window", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿ›๏ธ": Emoji( + char: "๐Ÿ›๏ธ", + keywords: ["bed", "sleep", "rest"], + name: "bed", + slug: "bed", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ›‹๏ธ": Emoji( + char: "๐Ÿ›‹๏ธ", + keywords: ["couch_and_lamp", "read", "chill"], + name: "couch and lamp", + slug: "couch_and_lamp", + group: EmojiGroup.objects, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿช‘": Emoji( + char: "๐Ÿช‘", + keywords: ["chair", "sit", "furniture"], + name: "chair", + slug: "chair", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿšฝ": Emoji( + char: "๐Ÿšฝ", + keywords: ["toilet", "restroom", "wc", "washroom", "bathroom", "potty"], + name: "toilet", + slug: "toilet", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿช ": Emoji( + char: "๐Ÿช ", + keywords: ["plunger", "toilet"], + name: "plunger", + slug: "plunger", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿšฟ": Emoji( + char: "๐Ÿšฟ", + keywords: ["shower", "clean", "water", "bathroom"], + name: "shower", + slug: "shower", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›": Emoji( + char: "๐Ÿ›", + keywords: ["bathtub", "clean", "shower", "bathroom"], + name: "bathtub", + slug: "bathtub", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿชค": Emoji( + char: "๐Ÿชค", + keywords: ["mouse trap", "cheese"], + name: "mouse trap", + slug: "mouse_trap", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿช’": Emoji( + char: "๐Ÿช’", + keywords: ["razor", "cut"], + name: "razor", + slug: "razor", + group: EmojiGroup.objects, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿงด": Emoji( + char: "๐Ÿงด", + keywords: ["lotion_bottle", "moisturizer", "sunscreen"], + name: "lotion bottle", + slug: "lotion_bottle", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงท": Emoji( + char: "๐Ÿงท", + keywords: ["safety_pin", "diaper"], + name: "safety pin", + slug: "safety_pin", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงน": Emoji( + char: "๐Ÿงน", + keywords: ["broom", "cleaning", "sweeping", "witch"], + name: "broom", + slug: "broom", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงบ": Emoji( + char: "๐Ÿงบ", + keywords: ["basket", "laundry"], + name: "basket", + slug: "basket", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงป": Emoji( + char: "๐Ÿงป", + keywords: ["roll_of_paper", "roll"], + name: "roll of paper", + slug: "roll_of_paper", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชฃ": Emoji( + char: "๐Ÿชฃ", + keywords: ["bucket", "water", "container"], + name: "bucket", + slug: "bucket", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿงผ": Emoji( + char: "๐Ÿงผ", + keywords: ["soap", "bar", "bathing", "cleaning", "lather"], + name: "soap", + slug: "soap", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿซง": Emoji( + char: "๐Ÿซง", + keywords: ["bubbles", "soap", "fun", "carbonation", "sparkling"], + name: "bubbles", + slug: "bubbles", + group: EmojiGroup.objects, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿชฅ": Emoji( + char: "๐Ÿชฅ", + keywords: ["toothbrush", "hygiene", "dental"], + name: "toothbrush", + slug: "toothbrush", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿงฝ": Emoji( + char: "๐Ÿงฝ", + keywords: ["sponge", "absorbing", "cleaning", "porous"], + name: "sponge", + slug: "sponge", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿงฏ": Emoji( + char: "๐Ÿงฏ", + keywords: ["fire_extinguisher", "quench"], + name: "fire extinguisher", + slug: "fire_extinguisher", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ›’": Emoji( + char: "๐Ÿ›’", + keywords: ["shopping_cart", "trolley"], + name: "shopping cart", + slug: "shopping_cart", + group: EmojiGroup.objects, + emojiVersion: 3.0, + unicodeVersion: 3.0, + skinToneSupport: false, + ), + "๐Ÿšฌ": Emoji( + char: "๐Ÿšฌ", + keywords: ["cigarette", "kills", "tobacco", "cigarette", "joint", "smoke"], + name: "cigarette", + slug: "cigarette", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โšฐ๏ธ": Emoji( + char: "โšฐ๏ธ", + keywords: [ + "coffin", + "vampire", + "dead", + "die", + "death", + "rip", + "graveyard", + "cemetery", + "casket", + "funeral", + "box" + ], + name: "coffin", + slug: "coffin", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿชฆ": Emoji( + char: "๐Ÿชฆ", + keywords: ["headstone", "death", "rip", "grave"], + name: "headstone", + slug: "headstone", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "โšฑ๏ธ": Emoji( + char: "โšฑ๏ธ", + keywords: ["funeral_urn", "dead", "die", "death", "rip", "ashes"], + name: "funeral urn", + slug: "funeral_urn", + group: EmojiGroup.objects, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿงฟ": Emoji( + char: "๐Ÿงฟ", + keywords: ["nazar_amulet", "bead", "charm"], + name: "nazar amulet", + slug: "nazar_amulet", + group: EmojiGroup.objects, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿชฌ": Emoji( + char: "๐Ÿชฌ", + keywords: ["hamsa", "religion", "protection"], + name: "hamsa", + slug: "hamsa", + group: EmojiGroup.objects, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿ—ฟ": Emoji( + char: "๐Ÿ—ฟ", + keywords: ["moai", "rock", "easter island", "moai"], + name: "moai", + slug: "moai", + group: EmojiGroup.objects, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชง": Emoji( + char: "๐Ÿชง", + keywords: ["placard", "announcement"], + name: "placard", + slug: "placard", + group: EmojiGroup.objects, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿชช": Emoji( + char: "๐Ÿชช", + keywords: ["identification card", "document"], + name: "identification card", + slug: "identification_card", + group: EmojiGroup.objects, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "๐Ÿง": Emoji( + char: "๐Ÿง", + keywords: [ + "atm_sign", + "money", + "sales", + "cash", + "blue-square", + "payment", + "bank" + ], + name: "ATM sign", + slug: "atm_sign", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšฎ": Emoji( + char: "๐Ÿšฎ", + keywords: ["litter_in_bin_sign", "blue-square", "sign", "human", "info"], + name: "litter in bin sign", + slug: "litter_in_bin_sign", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšฐ": Emoji( + char: "๐Ÿšฐ", + keywords: [ + "potable_water", + "blue-square", + "liquid", + "restroom", + "cleaning", + "faucet" + ], + name: "potable water", + slug: "potable_water", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ™ฟ": Emoji( + char: "โ™ฟ", + keywords: ["wheelchair_symbol", "blue-square", "disabled", "accessibility"], + name: "wheelchair symbol", + slug: "wheelchair_symbol", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšน": Emoji( + char: "๐Ÿšน", + keywords: [ + "men_s_room", + "toilet", + "restroom", + "wc", + "blue-square", + "gender", + "male" + ], + name: "menโ€™s room", + slug: "men_s_room", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšบ": Emoji( + char: "๐Ÿšบ", + keywords: [ + "women_s_room", + "purple-square", + "woman", + "female", + "toilet", + "loo", + "restroom", + "gender" + ], + name: "womenโ€™s room", + slug: "women_s_room", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšป": Emoji( + char: "๐Ÿšป", + keywords: ["restroom", "blue-square", "toilet", "refresh", "wc", "gender"], + name: "restroom", + slug: "restroom", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšผ": Emoji( + char: "๐Ÿšผ", + keywords: ["baby_symbol", "orange-square", "child"], + name: "baby symbol", + slug: "baby_symbol", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšพ": Emoji( + char: "๐Ÿšพ", + keywords: ["water_closet", "toilet", "restroom", "blue-square"], + name: "water closet", + slug: "water_closet", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›‚": Emoji( + char: "๐Ÿ›‚", + keywords: ["passport_control", "custom", "blue-square"], + name: "passport control", + slug: "passport_control", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›ƒ": Emoji( + char: "๐Ÿ›ƒ", + keywords: ["customs", "passport", "border", "blue-square"], + name: "customs", + slug: "customs", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›„": Emoji( + char: "๐Ÿ›„", + keywords: ["baggage_claim", "blue-square", "airport", "transport"], + name: "baggage claim", + slug: "baggage_claim", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ›…": Emoji( + char: "๐Ÿ›…", + keywords: ["left_luggage", "blue-square", "travel"], + name: "left luggage", + slug: "left_luggage", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โš ๏ธ": Emoji( + char: "โš ๏ธ", + keywords: [ + "warning", + "exclamation", + "wip", + "alert", + "error", + "problem", + "issue" + ], + name: "warning", + slug: "warning", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšธ": Emoji( + char: "๐Ÿšธ", + keywords: [ + "children_crossing", + "school", + "warning", + "danger", + "sign", + "driving", + "yellow-diamond" + ], + name: "children crossing", + slug: "children_crossing", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ›”": Emoji( + char: "โ›”", + keywords: [ + "no_entry", + "limit", + "security", + "privacy", + "bad", + "denied", + "stop", + "circle" + ], + name: "no entry", + slug: "no_entry", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšซ": Emoji( + char: "๐Ÿšซ", + keywords: [ + "prohibited", + "forbid", + "stop", + "limit", + "denied", + "disallow", + "circle" + ], + name: "prohibited", + slug: "prohibited", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšณ": Emoji( + char: "๐Ÿšณ", + keywords: ["no_bicycles", "cyclist", "prohibited", "circle"], + name: "no bicycles", + slug: "no_bicycles", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšญ": Emoji( + char: "๐Ÿšญ", + keywords: ["no_smoking", "cigarette", "blue-square", "smell", "smoke"], + name: "no smoking", + slug: "no_smoking", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšฏ": Emoji( + char: "๐Ÿšฏ", + keywords: ["no_littering", "trash", "bin", "garbage", "circle"], + name: "no littering", + slug: "no_littering", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšฑ": Emoji( + char: "๐Ÿšฑ", + keywords: ["non_potable_water", "drink", "faucet", "tap", "circle"], + name: "non-potable water", + slug: "non_potable_water", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿšท": Emoji( + char: "๐Ÿšท", + keywords: ["no_pedestrians", "rules", "crossing", "walking", "circle"], + name: "no pedestrians", + slug: "no_pedestrians", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ“ต": Emoji( + char: "๐Ÿ“ต", + keywords: ["no_mobile_phones", "iphone", "mute", "circle"], + name: "no mobile phones", + slug: "no_mobile_phones", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”ž": Emoji( + char: "๐Ÿ”ž", + keywords: [ + "no_one_under_eighteen", + "18", + "drink", + "pub", + "night", + "minor", + "circle" + ], + name: "no one under eighteen", + slug: "no_one_under_eighteen", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜ข๏ธ": Emoji( + char: "โ˜ข๏ธ", + keywords: ["radioactive", "nuclear", "danger"], + name: "radioactive", + slug: "radioactive", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ˜ฃ๏ธ": Emoji( + char: "โ˜ฃ๏ธ", + keywords: ["biohazard", "danger"], + name: "biohazard", + slug: "biohazard", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โฌ†๏ธ": Emoji( + char: "โฌ†๏ธ", + keywords: ["up_arrow", "blue-square", "continue", "top", "direction"], + name: "up arrow", + slug: "up_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†—๏ธ": Emoji( + char: "โ†—๏ธ", + keywords: [ + "up_right_arrow", + "blue-square", + "point", + "direction", + "diagonal", + "northeast" + ], + name: "up-right arrow", + slug: "up_right_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โžก๏ธ": Emoji( + char: "โžก๏ธ", + keywords: ["right_arrow", "blue-square", "next"], + name: "right arrow", + slug: "right_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†˜๏ธ": Emoji( + char: "โ†˜๏ธ", + keywords: [ + "down_right_arrow", + "blue-square", + "direction", + "diagonal", + "southeast" + ], + name: "down-right arrow", + slug: "down_right_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฌ‡๏ธ": Emoji( + char: "โฌ‡๏ธ", + keywords: ["down_arrow", "blue-square", "direction", "bottom"], + name: "down arrow", + slug: "down_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†™๏ธ": Emoji( + char: "โ†™๏ธ", + keywords: [ + "down_left_arrow", + "blue-square", + "direction", + "diagonal", + "southwest" + ], + name: "down-left arrow", + slug: "down_left_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฌ…๏ธ": Emoji( + char: "โฌ…๏ธ", + keywords: ["left_arrow", "blue-square", "previous", "back"], + name: "left arrow", + slug: "left_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†–๏ธ": Emoji( + char: "โ†–๏ธ", + keywords: [ + "up_left_arrow", + "blue-square", + "point", + "direction", + "diagonal", + "northwest" + ], + name: "up-left arrow", + slug: "up_left_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†•๏ธ": Emoji( + char: "โ†•๏ธ", + keywords: ["up_down_arrow", "blue-square", "direction", "way", "vertical"], + name: "up-down arrow", + slug: "up_down_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†”๏ธ": Emoji( + char: "โ†”๏ธ", + keywords: [ + "left_right_arrow", + "shape", + "direction", + "horizontal", + "sideways" + ], + name: "left-right arrow", + slug: "left_right_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†ฉ๏ธ": Emoji( + char: "โ†ฉ๏ธ", + keywords: [ + "right_arrow_curving_left", + "back", + "return", + "blue-square", + "undo", + "enter" + ], + name: "right arrow curving left", + slug: "right_arrow_curving_left", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ†ช๏ธ": Emoji( + char: "โ†ช๏ธ", + keywords: [ + "left_arrow_curving_right", + "blue-square", + "return", + "rotate", + "direction" + ], + name: "left arrow curving right", + slug: "left_arrow_curving_right", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โคด๏ธ": Emoji( + char: "โคด๏ธ", + keywords: ["right_arrow_curving_up", "blue-square", "direction", "top"], + name: "right arrow curving up", + slug: "right_arrow_curving_up", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โคต๏ธ": Emoji( + char: "โคต๏ธ", + keywords: [ + "right_arrow_curving_down", + "blue-square", + "direction", + "bottom" + ], + name: "right arrow curving down", + slug: "right_arrow_curving_down", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ƒ": Emoji( + char: "๐Ÿ”ƒ", + keywords: ["clockwise_vertical_arrows", "sync", "cycle", "round", "repeat"], + name: "clockwise vertical arrows", + slug: "clockwise_vertical_arrows", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”„": Emoji( + char: "๐Ÿ”„", + keywords: [ + "counterclockwise_arrows_button", + "blue-square", + "sync", + "cycle" + ], + name: "counterclockwise arrows button", + slug: "counterclockwise_arrows_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”™": Emoji( + char: "๐Ÿ”™", + keywords: ["back_arrow", "arrow", "words", "return"], + name: "BACK arrow", + slug: "back_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”š": Emoji( + char: "๐Ÿ”š", + keywords: ["end_arrow", "words", "arrow"], + name: "END arrow", + slug: "end_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”›": Emoji( + char: "๐Ÿ”›", + keywords: ["on_arrow", "arrow", "words"], + name: "ON! arrow", + slug: "on_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”œ": Emoji( + char: "๐Ÿ”œ", + keywords: ["soon_arrow", "arrow", "words"], + name: "SOON arrow", + slug: "soon_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: ["top_arrow", "words", "blue-square"], + name: "TOP arrow", + slug: "top_arrow", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›": Emoji( + char: "๐Ÿ›", + keywords: ["place_of_worship", "religion", "church", "temple", "prayer"], + name: "place of worship", + slug: "place_of_worship", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โš›๏ธ": Emoji( + char: "โš›๏ธ", + keywords: ["atom_symbol", "science", "physics", "chemistry"], + name: "atom symbol", + slug: "atom_symbol", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ•‰๏ธ": Emoji( + char: "๐Ÿ•‰๏ธ", + keywords: ["om", "hinduism", "buddhism", "sikhism", "jainism"], + name: "om", + slug: "om", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โœก๏ธ": Emoji( + char: "โœก๏ธ", + keywords: ["star_of_david", "judaism"], + name: "star of David", + slug: "star_of_david", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ˜ธ๏ธ": Emoji( + char: "โ˜ธ๏ธ", + keywords: ["wheel_of_dharma", "hinduism", "buddhism", "sikhism", "jainism"], + name: "wheel of dharma", + slug: "wheel_of_dharma", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ˜ฏ๏ธ": Emoji( + char: "โ˜ฏ๏ธ", + keywords: ["yin_yang", "balance"], + name: "yin yang", + slug: "yin_yang", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โœ๏ธ": Emoji( + char: "โœ๏ธ", + keywords: ["latin_cross", "christianity"], + name: "latin cross", + slug: "latin_cross", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ˜ฆ๏ธ": Emoji( + char: "โ˜ฆ๏ธ", + keywords: ["orthodox_cross", "suppedaneum", "religion"], + name: "orthodox cross", + slug: "orthodox_cross", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ˜ช๏ธ": Emoji( + char: "โ˜ช๏ธ", + keywords: ["star_and_crescent", "islam"], + name: "star and crescent", + slug: "star_and_crescent", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ˜ฎ๏ธ": Emoji( + char: "โ˜ฎ๏ธ", + keywords: ["peace_symbol", "hippie"], + name: "peace symbol", + slug: "peace_symbol", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ•Ž": Emoji( + char: "๐Ÿ•Ž", + keywords: ["menorah", "hanukkah", "candles", "jewish"], + name: "menorah", + slug: "menorah", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”ฏ": Emoji( + char: "๐Ÿ”ฏ", + keywords: [ + "dotted_six_pointed_star", + "purple-square", + "religion", + "jewish", + "hexagram" + ], + name: "dotted six-pointed star", + slug: "dotted_six_pointed_star", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿชฏ": Emoji( + char: "๐Ÿชฏ", + keywords: ["khanda", "Sikhism", "religion"], + name: "khanda", + slug: "khanda", + group: EmojiGroup.symbols, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "โ™ˆ": Emoji( + char: "โ™ˆ", + keywords: ["aries", "sign", "purple-square", "zodiac", "astrology"], + name: "Aries", + slug: "aries", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™‰": Emoji( + char: "โ™‰", + keywords: ["taurus", "purple-square", "sign", "zodiac", "astrology"], + name: "Taurus", + slug: "taurus", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™Š": Emoji( + char: "โ™Š", + keywords: ["gemini", "sign", "zodiac", "purple-square", "astrology"], + name: "Gemini", + slug: "gemini", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™‹": Emoji( + char: "โ™‹", + keywords: ["cancer", "sign", "zodiac", "purple-square", "astrology"], + name: "Cancer", + slug: "cancer", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™Œ": Emoji( + char: "โ™Œ", + keywords: ["leo", "sign", "purple-square", "zodiac", "astrology"], + name: "Leo", + slug: "leo", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™": Emoji( + char: "โ™", + keywords: ["virgo", "sign", "zodiac", "purple-square", "astrology"], + name: "Virgo", + slug: "virgo", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™Ž": Emoji( + char: "โ™Ž", + keywords: ["libra", "sign", "purple-square", "zodiac", "astrology"], + name: "Libra", + slug: "libra", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™": Emoji( + char: "โ™", + keywords: [ + "scorpio", + "sign", + "zodiac", + "purple-square", + "astrology", + "scorpio" + ], + name: "Scorpio", + slug: "scorpio", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™": Emoji( + char: "โ™", + keywords: ["sagittarius", "sign", "zodiac", "purple-square", "astrology"], + name: "Sagittarius", + slug: "sagittarius", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™‘": Emoji( + char: "โ™‘", + keywords: ["capricorn", "sign", "zodiac", "purple-square", "astrology"], + name: "Capricorn", + slug: "capricorn", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™’": Emoji( + char: "โ™’", + keywords: ["aquarius", "sign", "purple-square", "zodiac", "astrology"], + name: "Aquarius", + slug: "aquarius", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™“": Emoji( + char: "โ™“", + keywords: ["pisces", "purple-square", "sign", "zodiac", "astrology"], + name: "Pisces", + slug: "pisces", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ›Ž": Emoji( + char: "โ›Ž", + keywords: [ + "ophiuchus", + "sign", + "purple-square", + "constellation", + "astrology" + ], + name: "Ophiuchus", + slug: "ophiuchus", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”€": Emoji( + char: "๐Ÿ”€", + keywords: [ + "shuffle_tracks_button", + "blue-square", + "shuffle", + "music", + "random" + ], + name: "shuffle tracks button", + slug: "shuffle_tracks_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”": Emoji( + char: "๐Ÿ”", + keywords: ["repeat_button", "loop", "record"], + name: "repeat button", + slug: "repeat_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”‚": Emoji( + char: "๐Ÿ”‚", + keywords: ["repeat_single_button", "blue-square", "loop"], + name: "repeat single button", + slug: "repeat_single_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ–ถ๏ธ": Emoji( + char: "โ–ถ๏ธ", + keywords: ["play_button", "blue-square", "right", "direction", "play"], + name: "play button", + slug: "play_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฉ": Emoji( + char: "โฉ", + keywords: [ + "fast_forward_button", + "blue-square", + "play", + "speed", + "continue" + ], + name: "fast-forward button", + slug: "fast_forward_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โญ๏ธ": Emoji( + char: "โญ๏ธ", + keywords: ["next_track_button", "forward", "next", "blue-square"], + name: "next track button", + slug: "next_track_button", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โฏ๏ธ": Emoji( + char: "โฏ๏ธ", + keywords: ["play_or_pause_button", "blue-square", "play", "pause"], + name: "play or pause button", + slug: "play_or_pause_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "โ—€๏ธ": Emoji( + char: "โ—€๏ธ", + keywords: ["reverse_button", "blue-square", "left", "direction"], + name: "reverse button", + slug: "reverse_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โช": Emoji( + char: "โช", + keywords: ["fast_reverse_button", "play", "blue-square"], + name: "fast reverse button", + slug: "fast_reverse_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฎ๏ธ": Emoji( + char: "โฎ๏ธ", + keywords: ["last_track_button", "backward"], + name: "last track button", + slug: "last_track_button", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿ”ผ": Emoji( + char: "๐Ÿ”ผ", + keywords: [ + "upwards_button", + "blue-square", + "triangle", + "direction", + "point", + "forward", + "top" + ], + name: "upwards button", + slug: "upwards_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โซ": Emoji( + char: "โซ", + keywords: ["fast_up_button", "blue-square", "direction", "top"], + name: "fast up button", + slug: "fast_up_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ฝ": Emoji( + char: "๐Ÿ”ฝ", + keywords: ["downwards_button", "blue-square", "direction", "bottom"], + name: "downwards button", + slug: "downwards_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฌ": Emoji( + char: "โฌ", + keywords: ["fast_down_button", "blue-square", "direction", "bottom"], + name: "fast down button", + slug: "fast_down_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โธ๏ธ": Emoji( + char: "โธ๏ธ", + keywords: ["pause_button", "pause", "blue-square"], + name: "pause button", + slug: "pause_button", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โน๏ธ": Emoji( + char: "โน๏ธ", + keywords: ["stop_button", "blue-square"], + name: "stop button", + slug: "stop_button", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โบ๏ธ": Emoji( + char: "โบ๏ธ", + keywords: ["record_button", "blue-square"], + name: "record button", + slug: "record_button", + group: EmojiGroup.symbols, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "โ๏ธ": Emoji( + char: "โ๏ธ", + keywords: ["eject_button", "blue-square"], + name: "eject button", + slug: "eject_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐ŸŽฆ": Emoji( + char: "๐ŸŽฆ", + keywords: [ + "cinema", + "blue-square", + "record", + "film", + "movie", + "curtain", + "stage", + "theater" + ], + name: "cinema", + slug: "cinema", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”…": Emoji( + char: "๐Ÿ”…", + keywords: ["dim_button", "sun", "afternoon", "warm", "summer"], + name: "dim button", + slug: "dim_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”†": Emoji( + char: "๐Ÿ”†", + keywords: ["bright_button", "sun", "light"], + name: "bright button", + slug: "bright_button", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ“ถ": Emoji( + char: "๐Ÿ“ถ", + keywords: [ + "antenna_bars", + "blue-square", + "reception", + "phone", + "internet", + "connection", + "wifi", + "bluetooth", + "bars" + ], + name: "antenna bars", + slug: "antenna_bars", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ›œ": Emoji( + char: "๐Ÿ›œ", + keywords: ["wireless", "wifi", "internet", "contactless", "signal"], + name: "wireless", + slug: "wireless", + group: EmojiGroup.symbols, + emojiVersion: 15.0, + unicodeVersion: 15.0, + skinToneSupport: false, + ), + "๐Ÿ“ณ": Emoji( + char: "๐Ÿ“ณ", + keywords: ["vibration_mode", "orange-square", "phone"], + name: "vibration mode", + slug: "vibration_mode", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“ด": Emoji( + char: "๐Ÿ“ด", + keywords: ["mobile_phone_off", "mute", "orange-square", "silence", "quiet"], + name: "mobile phone off", + slug: "mobile_phone_off", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ™€๏ธ": Emoji( + char: "โ™€๏ธ", + keywords: ["female_sign", "woman", "women", "lady", "girl"], + name: "female sign", + slug: "female_sign", + group: EmojiGroup.symbols, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "โ™‚๏ธ": Emoji( + char: "โ™‚๏ธ", + keywords: ["male_sign", "man", "boy", "men"], + name: "male sign", + slug: "male_sign", + group: EmojiGroup.symbols, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "โšง๏ธ": Emoji( + char: "โšง๏ธ", + keywords: ["transgender symbol", "lgbtq"], + name: "transgender symbol", + slug: "transgender_symbol", + group: EmojiGroup.symbols, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "โœ–๏ธ": Emoji( + char: "โœ–๏ธ", + keywords: ["multiplication_sign", "math", "calculation"], + name: "multiply", + slug: "multiply", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โž•": Emoji( + char: "โž•", + keywords: [ + "plus_sign", + "math", + "calculation", + "addition", + "more", + "increase" + ], + name: "plus", + slug: "plus", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โž–": Emoji( + char: "โž–", + keywords: ["minus_sign", "math", "calculation", "subtract", "less"], + name: "minus", + slug: "minus", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โž—": Emoji( + char: "โž—", + keywords: ["division_sign", "divide", "math", "calculation"], + name: "divide", + slug: "divide", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŸฐ": Emoji( + char: "๐ŸŸฐ", + keywords: ["heavy equals sign", "math"], + name: "heavy equals sign", + slug: "heavy_equals_sign", + group: EmojiGroup.symbols, + emojiVersion: 14.0, + unicodeVersion: 14.0, + skinToneSupport: false, + ), + "โ™พ๏ธ": Emoji( + char: "โ™พ๏ธ", + keywords: ["infinity", "forever"], + name: "infinity", + slug: "infinity", + group: EmojiGroup.symbols, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "โ€ผ๏ธ": Emoji( + char: "โ€ผ๏ธ", + keywords: ["double_exclamation_mark", "exclamation", "surprise"], + name: "double exclamation mark", + slug: "double_exclamation_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ‰๏ธ": Emoji( + char: "โ‰๏ธ", + keywords: ["exclamation_question_mark", "wat", "punctuation", "surprise"], + name: "exclamation question mark", + slug: "exclamation_question_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ“": Emoji( + char: "โ“", + keywords: ["question_mark", "doubt", "confused"], + name: "red question mark", + slug: "red_question_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ”": Emoji( + char: "โ”", + keywords: ["white_question_mark", "doubts", "gray", "huh", "confused"], + name: "white question mark", + slug: "white_question_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ•": Emoji( + char: "โ•", + keywords: [ + "white_exclamation_mark", + "surprise", + "punctuation", + "gray", + "wow", + "warning" + ], + name: "white exclamation mark", + slug: "white_exclamation_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ—": Emoji( + char: "โ—", + keywords: [ + "exclamation_mark", + "heavy_exclamation_mark", + "danger", + "surprise", + "punctuation", + "wow", + "warning" + ], + name: "red exclamation mark", + slug: "red_exclamation_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "ใ€ฐ๏ธ": Emoji( + char: "ใ€ฐ๏ธ", + keywords: [ + "wavy_dash", + "draw", + "line", + "moustache", + "mustache", + "squiggle", + "scribble" + ], + name: "wavy dash", + slug: "wavy_dash", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฑ": Emoji( + char: "๐Ÿ’ฑ", + keywords: ["currency_exchange", "money", "sales", "dollar", "travel"], + name: "currency exchange", + slug: "currency_exchange", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ฒ": Emoji( + char: "๐Ÿ’ฒ", + keywords: [ + "heavy_dollar_sign", + "money", + "sales", + "payment", + "currency", + "buck" + ], + name: "heavy dollar sign", + slug: "heavy_dollar_sign", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โš•๏ธ": Emoji( + char: "โš•๏ธ", + keywords: ["medical_symbol", "health", "hospital"], + name: "medical symbol", + slug: "medical_symbol", + group: EmojiGroup.symbols, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "โ™ป๏ธ": Emoji( + char: "โ™ป๏ธ", + keywords: ["recycling_symbol", "arrow", "environment", "garbage", "trash"], + name: "recycling symbol", + slug: "recycling_symbol", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โšœ๏ธ": Emoji( + char: "โšœ๏ธ", + keywords: ["fleur_de_lis", "decorative", "scout"], + name: "fleur-de-lis", + slug: "fleur_de_lis", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿ”ฑ": Emoji( + char: "๐Ÿ”ฑ", + keywords: ["trident_emblem", "weapon", "spear"], + name: "trident emblem", + slug: "trident_emblem", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ“›": Emoji( + char: "๐Ÿ“›", + keywords: ["name_badge", "fire", "forbid"], + name: "name badge", + slug: "name_badge", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ฐ": Emoji( + char: "๐Ÿ”ฐ", + keywords: ["japanese_symbol_for_beginner", "badge", "shield"], + name: "Japanese symbol for beginner", + slug: "japanese_symbol_for_beginner", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โญ•": Emoji( + char: "โญ•", + keywords: ["hollow_red_circle", "circle", "round"], + name: "hollow red circle", + slug: "hollow_red_circle", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœ…": Emoji( + char: "โœ…", + keywords: [ + "check_mark_button", + "green-square", + "ok", + "agree", + "vote", + "election", + "answer", + "tick" + ], + name: "check mark button", + slug: "check_mark_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ˜‘๏ธ": Emoji( + char: "โ˜‘๏ธ", + keywords: [ + "check_box_with_check", + "ok", + "agree", + "confirm", + "black-square", + "vote", + "election", + "yes", + "tick" + ], + name: "check box with check", + slug: "check_box_with_check", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœ”๏ธ": Emoji( + char: "โœ”๏ธ", + keywords: ["check_mark", "ok", "nike", "answer", "yes", "tick"], + name: "check mark", + slug: "check_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โŒ": Emoji( + char: "โŒ", + keywords: ["cross_mark", "no", "delete", "remove", "cancel", "red"], + name: "cross mark", + slug: "cross_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โŽ": Emoji( + char: "โŽ", + keywords: ["cross_mark_button", "x", "green-square", "no", "deny"], + name: "cross mark button", + slug: "cross_mark_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โžฐ": Emoji( + char: "โžฐ", + keywords: ["curly_loop", "scribble", "draw", "shape", "squiggle"], + name: "curly loop", + slug: "curly_loop", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โžฟ": Emoji( + char: "โžฟ", + keywords: ["double_curly_loop", "tape", "cassette"], + name: "double curly loop", + slug: "double_curly_loop", + group: EmojiGroup.symbols, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "ใ€ฝ๏ธ": Emoji( + char: "ใ€ฝ๏ธ", + keywords: [ + "part_alternation_mark", + "graph", + "presentation", + "stats", + "business", + "economics", + "bad" + ], + name: "part alternation mark", + slug: "part_alternation_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœณ๏ธ": Emoji( + char: "โœณ๏ธ", + keywords: ["eight_spoked_asterisk", "star", "sparkle", "green-square"], + name: "eight-spoked asterisk", + slug: "eight_spoked_asterisk", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โœด๏ธ": Emoji( + char: "โœด๏ธ", + keywords: ["eight_pointed_star", "orange-square", "shape", "polygon"], + name: "eight-pointed star", + slug: "eight_pointed_star", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ‡๏ธ": Emoji( + char: "โ‡๏ธ", + keywords: [ + "sparkle", + "stars", + "green-square", + "awesome", + "good", + "fireworks" + ], + name: "sparkle", + slug: "sparkle", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "ยฉ๏ธ": Emoji( + char: "ยฉ๏ธ", + keywords: ["copyright", "ip", "license", "circle", "law", "legal"], + name: "copyright", + slug: "copyright", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "ยฎ๏ธ": Emoji( + char: "ยฎ๏ธ", + keywords: ["registered", "alphabet", "circle"], + name: "registered", + slug: "registered", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ„ข๏ธ": Emoji( + char: "โ„ข๏ธ", + keywords: ["trade_mark", "trademark", "brand", "law", "legal"], + name: "trade mark", + slug: "trade_mark", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "#๏ธโƒฃ": Emoji( + char: "#๏ธโƒฃ", + keywords: ["keycap_", "symbol", "blue-square", "twitter"], + name: "keycap #", + slug: "keycap_number_sign", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "*๏ธโƒฃ": Emoji( + char: "*๏ธโƒฃ", + keywords: ["keycap_", "star", "keycap"], + name: "keycap *", + slug: "keycap_asterisk", + group: EmojiGroup.symbols, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "0๏ธโƒฃ": Emoji( + char: "0๏ธโƒฃ", + keywords: ["keycap_0", "0", "numbers", "blue-square", "null"], + name: "keycap 0", + slug: "keycap_0", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "1๏ธโƒฃ": Emoji( + char: "1๏ธโƒฃ", + keywords: ["keycap_1", "blue-square", "numbers", "1"], + name: "keycap 1", + slug: "keycap_1", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "2๏ธโƒฃ": Emoji( + char: "2๏ธโƒฃ", + keywords: ["keycap_2", "numbers", "2", "prime", "blue-square"], + name: "keycap 2", + slug: "keycap_2", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "3๏ธโƒฃ": Emoji( + char: "3๏ธโƒฃ", + keywords: ["keycap_3", "3", "numbers", "prime", "blue-square"], + name: "keycap 3", + slug: "keycap_3", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "4๏ธโƒฃ": Emoji( + char: "4๏ธโƒฃ", + keywords: ["keycap_4", "4", "numbers", "blue-square"], + name: "keycap 4", + slug: "keycap_4", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "5๏ธโƒฃ": Emoji( + char: "5๏ธโƒฃ", + keywords: ["keycap_5", "5", "numbers", "blue-square", "prime"], + name: "keycap 5", + slug: "keycap_5", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "6๏ธโƒฃ": Emoji( + char: "6๏ธโƒฃ", + keywords: ["keycap_6", "6", "numbers", "blue-square"], + name: "keycap 6", + slug: "keycap_6", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "7๏ธโƒฃ": Emoji( + char: "7๏ธโƒฃ", + keywords: ["keycap_7", "7", "numbers", "blue-square", "prime"], + name: "keycap 7", + slug: "keycap_7", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "8๏ธโƒฃ": Emoji( + char: "8๏ธโƒฃ", + keywords: ["keycap_8", "8", "blue-square", "numbers"], + name: "keycap 8", + slug: "keycap_8", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "9๏ธโƒฃ": Emoji( + char: "9๏ธโƒฃ", + keywords: ["keycap_9", "blue-square", "numbers", "9"], + name: "keycap 9", + slug: "keycap_9", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”Ÿ": Emoji( + char: "๐Ÿ”Ÿ", + keywords: ["keycap_10", "numbers", "10", "blue-square"], + name: "keycap 10", + slug: "keycap_10", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ” ": Emoji( + char: "๐Ÿ” ", + keywords: ["input_latin_uppercase", "alphabet", "words", "blue-square"], + name: "input latin uppercase", + slug: "input_latin_uppercase", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ก": Emoji( + char: "๐Ÿ”ก", + keywords: ["input_latin_lowercase", "blue-square", "alphabet"], + name: "input latin lowercase", + slug: "input_latin_lowercase", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ข": Emoji( + char: "๐Ÿ”ข", + keywords: [ + "input_numbers", + "numbers", + "blue-square", + "1234", + "1", + "2", + "3", + "4" + ], + name: "input numbers", + slug: "input_numbers", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ฃ": Emoji( + char: "๐Ÿ”ฃ", + keywords: [ + "input_symbols", + "blue-square", + "music", + "note", + "ampersand", + "percent", + "glyphs", + "characters" + ], + name: "input symbols", + slug: "input_symbols", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ค": Emoji( + char: "๐Ÿ”ค", + keywords: ["input_latin_letters", "blue-square", "alphabet"], + name: "input latin letters", + slug: "input_latin_letters", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ…ฐ๏ธ": Emoji( + char: "๐Ÿ…ฐ๏ธ", + keywords: ["a_button", "red-square", "alphabet", "letter"], + name: "A button (blood type)", + slug: "a_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†Ž": Emoji( + char: "๐Ÿ†Ž", + keywords: ["ab_button", "red-square", "alphabet"], + name: "AB button (blood type)", + slug: "ab_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ…ฑ๏ธ": Emoji( + char: "๐Ÿ…ฑ๏ธ", + keywords: ["b_button", "red-square", "alphabet", "letter"], + name: "B button (blood type)", + slug: "b_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†‘": Emoji( + char: "๐Ÿ†‘", + keywords: ["cl_button", "alphabet", "words", "red-square"], + name: "CL button", + slug: "cl_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†’": Emoji( + char: "๐Ÿ†’", + keywords: ["cool_button", "words", "blue-square"], + name: "COOL button", + slug: "cool_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†“": Emoji( + char: "๐Ÿ†“", + keywords: ["free_button", "blue-square", "words"], + name: "FREE button", + slug: "free_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ„น๏ธ": Emoji( + char: "โ„น๏ธ", + keywords: ["information", "blue-square", "alphabet", "letter"], + name: "information", + slug: "information", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†”": Emoji( + char: "๐Ÿ†”", + keywords: ["id_button", "purple-square", "words"], + name: "ID button", + slug: "id_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ“‚๏ธ": Emoji( + char: "โ“‚๏ธ", + keywords: ["circled_m", "alphabet", "blue-circle", "letter"], + name: "circled M", + slug: "circled_m", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†•": Emoji( + char: "๐Ÿ†•", + keywords: ["new_button", "blue-square", "words", "start"], + name: "NEW button", + slug: "new_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†–": Emoji( + char: "๐Ÿ†–", + keywords: ["ng_button", "blue-square", "words", "shape", "icon"], + name: "NG button", + slug: "ng_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ…พ๏ธ": Emoji( + char: "๐Ÿ…พ๏ธ", + keywords: ["o_button", "alphabet", "red-square", "letter"], + name: "O button (blood type)", + slug: "o_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†—": Emoji( + char: "๐Ÿ†—", + keywords: ["ok_button", "good", "agree", "yes", "blue-square"], + name: "OK button", + slug: "ok_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ…ฟ๏ธ": Emoji( + char: "๐Ÿ…ฟ๏ธ", + keywords: ["p_button", "cars", "blue-square", "alphabet", "letter"], + name: "P button", + slug: "p_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†˜": Emoji( + char: "๐Ÿ†˜", + keywords: ["sos_button", "help", "red-square", "words", "emergency", "911"], + name: "SOS button", + slug: "sos_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†™": Emoji( + char: "๐Ÿ†™", + keywords: ["up_button", "blue-square", "above", "high"], + name: "UP! button", + slug: "up_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ†š": Emoji( + char: "๐Ÿ†š", + keywords: ["vs_button", "words", "orange-square"], + name: "VS button", + slug: "vs_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆ": Emoji( + char: "๐Ÿˆ", + keywords: [ + "japanese_here_button", + "blue-square", + "here", + "katakana", + "japanese", + "destination" + ], + name: "Japanese โ€œhereโ€ button", + slug: "japanese_here_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆ‚๏ธ": Emoji( + char: "๐Ÿˆ‚๏ธ", + keywords: [ + "japanese_service_charge_button", + "japanese", + "blue-square", + "katakana" + ], + name: "Japanese โ€œservice chargeโ€ button", + slug: "japanese_service_charge_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆท๏ธ": Emoji( + char: "๐Ÿˆท๏ธ", + keywords: [ + "japanese_monthly_amount_button", + "chinese", + "month", + "moon", + "japanese", + "orange-square", + "kanji" + ], + name: "Japanese โ€œmonthly amountโ€ button", + slug: "japanese_monthly_amount_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆถ": Emoji( + char: "๐Ÿˆถ", + keywords: [ + "japanese_not_free_of_charge_button", + "orange-square", + "chinese", + "have", + "kanji" + ], + name: "Japanese โ€œnot free of chargeโ€ button", + slug: "japanese_not_free_of_charge_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆฏ": Emoji( + char: "๐Ÿˆฏ", + keywords: [ + "japanese_reserved_button", + "chinese", + "point", + "green-square", + "kanji" + ], + name: "Japanese โ€œreservedโ€ button", + slug: "japanese_reserved_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‰": Emoji( + char: "๐Ÿ‰", + keywords: [ + "japanese_bargain_button", + "chinese", + "kanji", + "obtain", + "get", + "circle" + ], + name: "Japanese โ€œbargainโ€ button", + slug: "japanese_bargain_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆน": Emoji( + char: "๐Ÿˆน", + keywords: [ + "japanese_discount_button", + "cut", + "divide", + "chinese", + "kanji", + "pink-square" + ], + name: "Japanese โ€œdiscountโ€ button", + slug: "japanese_discount_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆš": Emoji( + char: "๐Ÿˆš", + keywords: [ + "japanese_free_of_charge_button", + "nothing", + "chinese", + "kanji", + "japanese", + "orange-square" + ], + name: "Japanese โ€œfree of chargeโ€ button", + slug: "japanese_free_of_charge_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆฒ": Emoji( + char: "๐Ÿˆฒ", + keywords: [ + "japanese_prohibited_button", + "kanji", + "japanese", + "chinese", + "forbidden", + "limit", + "restricted", + "red-square" + ], + name: "Japanese โ€œprohibitedโ€ button", + slug: "japanese_prohibited_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‰‘": Emoji( + char: "๐Ÿ‰‘", + keywords: [ + "japanese_acceptable_button", + "ok", + "good", + "chinese", + "kanji", + "agree", + "yes", + "orange-circle" + ], + name: "Japanese โ€œacceptableโ€ button", + slug: "japanese_acceptable_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆธ": Emoji( + char: "๐Ÿˆธ", + keywords: [ + "japanese_application_button", + "chinese", + "japanese", + "kanji", + "orange-square" + ], + name: "Japanese โ€œapplicationโ€ button", + slug: "japanese_application_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆด": Emoji( + char: "๐Ÿˆด", + keywords: [ + "japanese_passing_grade_button", + "japanese", + "chinese", + "join", + "kanji", + "red-square" + ], + name: "Japanese โ€œpassing gradeโ€ button", + slug: "japanese_passing_grade_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆณ": Emoji( + char: "๐Ÿˆณ", + keywords: [ + "japanese_vacancy_button", + "kanji", + "japanese", + "chinese", + "empty", + "sky", + "blue-square" + ], + name: "Japanese โ€œvacancyโ€ button", + slug: "japanese_vacancy_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "ใŠ—๏ธ": Emoji( + char: "ใŠ—๏ธ", + keywords: [ + "japanese_congratulations_button", + "chinese", + "kanji", + "japanese", + "red-circle" + ], + name: "Japanese โ€œcongratulationsโ€ button", + slug: "japanese_congratulations_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "ใŠ™๏ธ": Emoji( + char: "ใŠ™๏ธ", + keywords: [ + "japanese_secret_button", + "privacy", + "chinese", + "sshh", + "kanji", + "red-circle" + ], + name: "Japanese โ€œsecretโ€ button", + slug: "japanese_secret_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆบ": Emoji( + char: "๐Ÿˆบ", + keywords: [ + "japanese_open_for_business_button", + "japanese", + "opening hours", + "orange-square" + ], + name: "Japanese โ€œopen for businessโ€ button", + slug: "japanese_open_for_business_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿˆต": Emoji( + char: "๐Ÿˆต", + keywords: [ + "japanese_no_vacancy_button", + "full", + "chinese", + "japanese", + "red-square", + "kanji" + ], + name: "Japanese โ€œno vacancyโ€ button", + slug: "japanese_no_vacancy_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ด": Emoji( + char: "๐Ÿ”ด", + keywords: ["red_circle", "shape", "error", "danger"], + name: "red circle", + slug: "red_circle", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŸ ": Emoji( + char: "๐ŸŸ ", + keywords: ["orange_circle", "round"], + name: "orange circle", + slug: "orange_circle", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸก": Emoji( + char: "๐ŸŸก", + keywords: ["yellow_circle", "round"], + name: "yellow circle", + slug: "yellow_circle", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸข": Emoji( + char: "๐ŸŸข", + keywords: ["green_circle", "round"], + name: "green circle", + slug: "green_circle", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐Ÿ”ต": Emoji( + char: "๐Ÿ”ต", + keywords: ["blue_circle", "shape", "icon", "button"], + name: "blue circle", + slug: "blue_circle", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŸฃ": Emoji( + char: "๐ŸŸฃ", + keywords: ["purple_circle", "round"], + name: "purple circle", + slug: "purple_circle", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸค": Emoji( + char: "๐ŸŸค", + keywords: ["brown_circle", "round"], + name: "brown circle", + slug: "brown_circle", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "โšซ": Emoji( + char: "โšซ", + keywords: ["black_circle", "shape", "button", "round"], + name: "black circle", + slug: "black_circle", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โšช": Emoji( + char: "โšช", + keywords: ["white_circle", "shape", "round"], + name: "white circle", + slug: "white_circle", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŸฅ": Emoji( + char: "๐ŸŸฅ", + keywords: ["red_square"], + name: "red square", + slug: "red_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸง": Emoji( + char: "๐ŸŸง", + keywords: ["orange_square"], + name: "orange square", + slug: "orange_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸจ": Emoji( + char: "๐ŸŸจ", + keywords: ["yellow_square"], + name: "yellow square", + slug: "yellow_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸฉ": Emoji( + char: "๐ŸŸฉ", + keywords: ["green_square"], + name: "green square", + slug: "green_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸฆ": Emoji( + char: "๐ŸŸฆ", + keywords: ["blue_square"], + name: "blue square", + slug: "blue_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸช": Emoji( + char: "๐ŸŸช", + keywords: ["purple_square"], + name: "purple square", + slug: "purple_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "๐ŸŸซ": Emoji( + char: "๐ŸŸซ", + keywords: ["brown_square"], + name: "brown square", + slug: "brown_square", + group: EmojiGroup.symbols, + emojiVersion: 12.0, + unicodeVersion: 12.0, + skinToneSupport: false, + ), + "โฌ›": Emoji( + char: "โฌ›", + keywords: ["black_large_square", "shape", "icon", "button"], + name: "black large square", + slug: "black_large_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โฌœ": Emoji( + char: "โฌœ", + keywords: ["white_large_square", "shape", "icon", "stone", "button"], + name: "white large square", + slug: "white_large_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ—ผ๏ธ": Emoji( + char: "โ—ผ๏ธ", + keywords: ["black_medium_square", "shape", "button", "icon"], + name: "black medium square", + slug: "black_medium_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ—ป๏ธ": Emoji( + char: "โ—ป๏ธ", + keywords: ["white_medium_square", "shape", "stone", "icon"], + name: "white medium square", + slug: "white_medium_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ—พ": Emoji( + char: "โ—พ", + keywords: ["black_medium_small_square", "icon", "shape", "button"], + name: "black medium-small square", + slug: "black_medium_small_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ—ฝ": Emoji( + char: "โ—ฝ", + keywords: ["white_medium_small_square", "shape", "stone", "icon", "button"], + name: "white medium-small square", + slug: "white_medium_small_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ–ช๏ธ": Emoji( + char: "โ–ช๏ธ", + keywords: ["black_small_square", "shape", "icon"], + name: "black small square", + slug: "black_small_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "โ–ซ๏ธ": Emoji( + char: "โ–ซ๏ธ", + keywords: ["white_small_square", "shape", "icon"], + name: "white small square", + slug: "white_small_square", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ถ": Emoji( + char: "๐Ÿ”ถ", + keywords: ["large_orange_diamond", "shape", "jewel", "gem"], + name: "large orange diamond", + slug: "large_orange_diamond", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ท": Emoji( + char: "๐Ÿ”ท", + keywords: ["large_blue_diamond", "shape", "jewel", "gem"], + name: "large blue diamond", + slug: "large_blue_diamond", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ธ": Emoji( + char: "๐Ÿ”ธ", + keywords: ["small_orange_diamond", "shape", "jewel", "gem"], + name: "small orange diamond", + slug: "small_orange_diamond", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”น": Emoji( + char: "๐Ÿ”น", + keywords: ["small_blue_diamond", "shape", "jewel", "gem"], + name: "small blue diamond", + slug: "small_blue_diamond", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”บ": Emoji( + char: "๐Ÿ”บ", + keywords: ["red_triangle_pointed_up", "shape", "direction", "up", "top"], + name: "red triangle pointed up", + slug: "red_triangle_pointed_up", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ป": Emoji( + char: "๐Ÿ”ป", + keywords: ["red_triangle_pointed_down", "shape", "direction", "bottom"], + name: "red triangle pointed down", + slug: "red_triangle_pointed_down", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ’ ": Emoji( + char: "๐Ÿ’ ", + keywords: [ + "diamond_with_a_dot", + "jewel", + "blue", + "gem", + "crystal", + "fancy" + ], + name: "diamond with a dot", + slug: "diamond_with_a_dot", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”˜": Emoji( + char: "๐Ÿ”˜", + keywords: ["radio_button", "input", "old", "music", "circle"], + name: "radio button", + slug: "radio_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ณ": Emoji( + char: "๐Ÿ”ณ", + keywords: ["white_square_button", "shape", "input"], + name: "white square button", + slug: "white_square_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ”ฒ": Emoji( + char: "๐Ÿ”ฒ", + keywords: ["black_square_button", "shape", "input", "frame"], + name: "black square button", + slug: "black_square_button", + group: EmojiGroup.symbols, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ": Emoji( + char: "๐Ÿ", + keywords: ["chequered_flag", "contest", "finishline", "race", "gokart"], + name: "chequered flag", + slug: "chequered_flag", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿšฉ": Emoji( + char: "๐Ÿšฉ", + keywords: ["triangular_flag", "mark", "milestone", "place"], + name: "triangular flag", + slug: "triangular_flag", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐ŸŽŒ": Emoji( + char: "๐ŸŽŒ", + keywords: ["crossed_flags", "japanese", "nation", "country", "border"], + name: "crossed flags", + slug: "crossed_flags", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿด": Emoji( + char: "๐Ÿด", + keywords: ["black_flag", "pirate"], + name: "black flag", + slug: "black_flag", + group: EmojiGroup.flags, + emojiVersion: 1.0, + unicodeVersion: 1.0, + skinToneSupport: false, + ), + "๐Ÿณ๏ธ": Emoji( + char: "๐Ÿณ๏ธ", + keywords: [ + "white_flag", + "losing", + "loser", + "lost", + "surrender", + "give up", + "fail" + ], + name: "white flag", + slug: "white_flag", + group: EmojiGroup.flags, + emojiVersion: 0.7, + unicodeVersion: 0.7, + skinToneSupport: false, + ), + "๐Ÿณ๏ธโ€๐ŸŒˆ": Emoji( + char: "๐Ÿณ๏ธโ€๐ŸŒˆ", + keywords: [ + "rainbow_flag", + "flag", + "rainbow", + "pride", + "gay", + "lgbt", + "glbt", + "queer", + "homosexual", + "lesbian", + "bisexual", + "transgender" + ], + name: "rainbow flag", + slug: "rainbow_flag", + group: EmojiGroup.flags, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿณ๏ธโ€โšง๏ธ": Emoji( + char: "๐Ÿณ๏ธโ€โšง๏ธ", + keywords: ["transgender flag", "lgbtq"], + name: "transgender flag", + slug: "transgender_flag", + group: EmojiGroup.flags, + emojiVersion: 13.0, + unicodeVersion: 13.0, + skinToneSupport: false, + ), + "๐Ÿดโ€โ˜ ๏ธ": Emoji( + char: "๐Ÿดโ€โ˜ ๏ธ", + keywords: ["pirate_flag", "skull", "crossbones", "flag", "banner"], + name: "pirate flag", + slug: "pirate_flag", + group: EmojiGroup.flags, + emojiVersion: 11.0, + unicodeVersion: 11.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡จ", + keywords: ["flag_ascension_island"], + name: "flag Ascension Island", + slug: "flag_ascension_island", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฉ", + keywords: [ + "flag_andorra", + "ad", + "flag", + "nation", + "country", + "banner", + "andorra" + ], + name: "flag Andorra", + slug: "flag_andorra", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ช", + keywords: [ + "flag_united_arab_emirates", + "united", + "arab", + "emirates", + "flag", + "nation", + "country", + "banner", + "united_arab_emirates" + ], + name: "flag United Arab Emirates", + slug: "flag_united_arab_emirates", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ซ", + keywords: [ + "flag_afghanistan", + "af", + "flag", + "nation", + "country", + "banner", + "afghanistan" + ], + name: "flag Afghanistan", + slug: "flag_afghanistan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฌ", + keywords: [ + "flag_antigua_barbuda", + "antigua", + "barbuda", + "flag", + "nation", + "country", + "banner", + "antigua_barbuda" + ], + name: "flag Antigua & Barbuda", + slug: "flag_antigua_barbuda", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฎ", + keywords: [ + "flag_anguilla", + "ai", + "flag", + "nation", + "country", + "banner", + "anguilla" + ], + name: "flag Anguilla", + slug: "flag_anguilla", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฑ", + keywords: [ + "flag_albania", + "al", + "flag", + "nation", + "country", + "banner", + "albania" + ], + name: "flag Albania", + slug: "flag_albania", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฒ", + keywords: [ + "flag_armenia", + "am", + "flag", + "nation", + "country", + "banner", + "armenia" + ], + name: "flag Armenia", + slug: "flag_armenia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ด", + keywords: [ + "flag_angola", + "ao", + "flag", + "nation", + "country", + "banner", + "angola" + ], + name: "flag Angola", + slug: "flag_angola", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ถ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ถ", + keywords: [ + "flag_antarctica", + "aq", + "flag", + "nation", + "country", + "banner", + "antarctica" + ], + name: "flag Antarctica", + slug: "flag_antarctica", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ท", + keywords: [ + "flag_argentina", + "ar", + "flag", + "nation", + "country", + "banner", + "argentina" + ], + name: "flag Argentina", + slug: "flag_argentina", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ธ", + keywords: [ + "flag_american_samoa", + "american", + "ws", + "flag", + "nation", + "country", + "banner", + "american_samoa" + ], + name: "flag American Samoa", + slug: "flag_american_samoa", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡น", + keywords: [ + "flag_austria", + "at", + "flag", + "nation", + "country", + "banner", + "austria" + ], + name: "flag Austria", + slug: "flag_austria", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡บ", + keywords: [ + "flag_australia", + "au", + "flag", + "nation", + "country", + "banner", + "australia" + ], + name: "flag Australia", + slug: "flag_australia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ผ", + keywords: [ + "flag_aruba", + "aw", + "flag", + "nation", + "country", + "banner", + "aruba" + ], + name: "flag Aruba", + slug: "flag_aruba", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฝ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฝ", + keywords: [ + "flag_aland_islands", + "ร…land", + "islands", + "flag", + "nation", + "country", + "banner", + "aland_islands" + ], + name: "flag ร…land Islands", + slug: "flag_aland_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฆ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ฆ๐Ÿ‡ฟ", + keywords: [ + "flag_azerbaijan", + "az", + "flag", + "nation", + "country", + "banner", + "azerbaijan" + ], + name: "flag Azerbaijan", + slug: "flag_azerbaijan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฆ", + keywords: [ + "flag_bosnia_herzegovina", + "bosnia", + "herzegovina", + "flag", + "nation", + "country", + "banner", + "bosnia_herzegovina" + ], + name: "flag Bosnia & Herzegovina", + slug: "flag_bosnia_herzegovina", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ง": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ง", + keywords: [ + "flag_barbados", + "bb", + "flag", + "nation", + "country", + "banner", + "barbados" + ], + name: "flag Barbados", + slug: "flag_barbados", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฉ", + keywords: [ + "flag_bangladesh", + "bd", + "flag", + "nation", + "country", + "banner", + "bangladesh" + ], + name: "flag Bangladesh", + slug: "flag_bangladesh", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ช", + keywords: [ + "flag_belgium", + "be", + "flag", + "nation", + "country", + "banner", + "belgium" + ], + name: "flag Belgium", + slug: "flag_belgium", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ซ", + keywords: [ + "flag_burkina_faso", + "burkina", + "faso", + "flag", + "nation", + "country", + "banner", + "burkina_faso" + ], + name: "flag Burkina Faso", + slug: "flag_burkina_faso", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฌ", + keywords: [ + "flag_bulgaria", + "bg", + "flag", + "nation", + "country", + "banner", + "bulgaria" + ], + name: "flag Bulgaria", + slug: "flag_bulgaria", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ญ", + keywords: [ + "flag_bahrain", + "bh", + "flag", + "nation", + "country", + "banner", + "bahrain" + ], + name: "flag Bahrain", + slug: "flag_bahrain", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฎ", + keywords: [ + "flag_burundi", + "bi", + "flag", + "nation", + "country", + "banner", + "burundi" + ], + name: "flag Burundi", + slug: "flag_burundi", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฏ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฏ", + keywords: [ + "flag_benin", + "bj", + "flag", + "nation", + "country", + "banner", + "benin" + ], + name: "flag Benin", + slug: "flag_benin", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฑ", + keywords: [ + "flag_st_barthelemy", + "saint", + "barthรฉlemy", + "flag", + "nation", + "country", + "banner", + "st_barthelemy" + ], + name: "flag St. Barthรฉlemy", + slug: "flag_st_barthelemy", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฒ", + keywords: [ + "flag_bermuda", + "bm", + "flag", + "nation", + "country", + "banner", + "bermuda" + ], + name: "flag Bermuda", + slug: "flag_bermuda", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ณ", + keywords: [ + "flag_brunei", + "bn", + "darussalam", + "flag", + "nation", + "country", + "banner", + "brunei" + ], + name: "flag Brunei", + slug: "flag_brunei", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ด", + keywords: [ + "flag_bolivia", + "bo", + "flag", + "nation", + "country", + "banner", + "bolivia" + ], + name: "flag Bolivia", + slug: "flag_bolivia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ถ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ถ", + keywords: [ + "flag_caribbean_netherlands", + "bonaire", + "flag", + "nation", + "country", + "banner", + "caribbean_netherlands" + ], + name: "flag Caribbean Netherlands", + slug: "flag_caribbean_netherlands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ท", + keywords: [ + "flag_brazil", + "br", + "flag", + "nation", + "country", + "banner", + "brazil" + ], + name: "flag Brazil", + slug: "flag_brazil", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ธ", + keywords: [ + "flag_bahamas", + "bs", + "flag", + "nation", + "country", + "banner", + "bahamas" + ], + name: "flag Bahamas", + slug: "flag_bahamas", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡น", + keywords: [ + "flag_bhutan", + "bt", + "flag", + "nation", + "country", + "banner", + "bhutan" + ], + name: "flag Bhutan", + slug: "flag_bhutan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ป": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ป", + keywords: ["flag_bouvet_island", "norway"], + name: "flag Bouvet Island", + slug: "flag_bouvet_island", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ผ", + keywords: [ + "flag_botswana", + "bw", + "flag", + "nation", + "country", + "banner", + "botswana" + ], + name: "flag Botswana", + slug: "flag_botswana", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡พ", + keywords: [ + "flag_belarus", + "by", + "flag", + "nation", + "country", + "banner", + "belarus" + ], + name: "flag Belarus", + slug: "flag_belarus", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ง๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ง๐Ÿ‡ฟ", + keywords: [ + "flag_belize", + "bz", + "flag", + "nation", + "country", + "banner", + "belize" + ], + name: "flag Belize", + slug: "flag_belize", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฆ", + keywords: [ + "flag_canada", + "ca", + "flag", + "nation", + "country", + "banner", + "canada" + ], + name: "flag Canada", + slug: "flag_canada", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡จ", + keywords: [ + "flag_cocos_islands", + "cocos", + "keeling", + "islands", + "flag", + "nation", + "country", + "banner", + "cocos_islands" + ], + name: "flag Cocos (Keeling) Islands", + slug: "flag_cocos_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฉ", + keywords: [ + "flag_congo_kinshasa", + "congo", + "democratic", + "republic", + "flag", + "nation", + "country", + "banner", + "congo_kinshasa" + ], + name: "flag Congo - Kinshasa", + slug: "flag_congo_kinshasa", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ซ", + keywords: [ + "flag_central_african_republic", + "central", + "african", + "republic", + "flag", + "nation", + "country", + "banner", + "central_african_republic" + ], + name: "flag Central African Republic", + slug: "flag_central_african_republic", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฌ", + keywords: [ + "flag_congo_brazzaville", + "congo", + "flag", + "nation", + "country", + "banner", + "congo_brazzaville" + ], + name: "flag Congo - Brazzaville", + slug: "flag_congo_brazzaville", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ญ", + keywords: [ + "flag_switzerland", + "ch", + "flag", + "nation", + "country", + "banner", + "switzerland" + ], + name: "flag Switzerland", + slug: "flag_switzerland", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฎ", + keywords: [ + "flag_cote_d_ivoire", + "ivory", + "coast", + "flag", + "nation", + "country", + "banner", + "cote_d_ivoire" + ], + name: "flag Cรดte dโ€™Ivoire", + slug: "flag_cote_d_ivoire", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฐ", + keywords: [ + "flag_cook_islands", + "cook", + "islands", + "flag", + "nation", + "country", + "banner", + "cook_islands" + ], + name: "flag Cook Islands", + slug: "flag_cook_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฑ", + keywords: ["flag_chile", "flag", "nation", "country", "banner", "chile"], + name: "flag Chile", + slug: "flag_chile", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฒ", + keywords: [ + "flag_cameroon", + "cm", + "flag", + "nation", + "country", + "banner", + "cameroon" + ], + name: "flag Cameroon", + slug: "flag_cameroon", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ณ", + keywords: [ + "flag_china", + "china", + "chinese", + "prc", + "flag", + "country", + "nation", + "banner", + "china" + ], + name: "flag China", + slug: "flag_china", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ด", + keywords: [ + "flag_colombia", + "co", + "flag", + "nation", + "country", + "banner", + "colombia" + ], + name: "flag Colombia", + slug: "flag_colombia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ต": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ต", + keywords: ["flag_clipperton_island"], + name: "flag Clipperton Island", + slug: "flag_clipperton_island", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ท", + keywords: [ + "flag_costa_rica", + "costa", + "rica", + "flag", + "nation", + "country", + "banner", + "costa_rica" + ], + name: "flag Costa Rica", + slug: "flag_costa_rica", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡บ", + keywords: [ + "flag_cuba", + "cu", + "flag", + "nation", + "country", + "banner", + "cuba" + ], + name: "flag Cuba", + slug: "flag_cuba", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ป": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ป", + keywords: [ + "flag_cape_verde", + "cabo", + "verde", + "flag", + "nation", + "country", + "banner", + "cape_verde" + ], + name: "flag Cape Verde", + slug: "flag_cape_verde", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ผ", + keywords: [ + "flag_curacao", + "curaรงao", + "flag", + "nation", + "country", + "banner", + "curacao" + ], + name: "flag Curaรงao", + slug: "flag_curacao", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฝ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฝ", + keywords: [ + "flag_christmas_island", + "christmas", + "island", + "flag", + "nation", + "country", + "banner", + "christmas_island" + ], + name: "flag Christmas Island", + slug: "flag_christmas_island", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡พ", + keywords: [ + "flag_cyprus", + "cy", + "flag", + "nation", + "country", + "banner", + "cyprus" + ], + name: "flag Cyprus", + slug: "flag_cyprus", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡จ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡จ๐Ÿ‡ฟ", + keywords: [ + "flag_czechia", + "cz", + "flag", + "nation", + "country", + "banner", + "czechia" + ], + name: "flag Czechia", + slug: "flag_czechia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ช", + keywords: [ + "flag_germany", + "german", + "nation", + "flag", + "country", + "banner", + "germany" + ], + name: "flag Germany", + slug: "flag_germany", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ฌ", + keywords: ["flag_diego_garcia"], + name: "flag Diego Garcia", + slug: "flag_diego_garcia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ฏ": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ฏ", + keywords: [ + "flag_djibouti", + "dj", + "flag", + "nation", + "country", + "banner", + "djibouti" + ], + name: "flag Djibouti", + slug: "flag_djibouti", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ฐ", + keywords: [ + "flag_denmark", + "dk", + "flag", + "nation", + "country", + "banner", + "denmark" + ], + name: "flag Denmark", + slug: "flag_denmark", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ฒ", + keywords: [ + "flag_dominica", + "dm", + "flag", + "nation", + "country", + "banner", + "dominica" + ], + name: "flag Dominica", + slug: "flag_dominica", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ด", + keywords: [ + "flag_dominican_republic", + "dominican", + "republic", + "flag", + "nation", + "country", + "banner", + "dominican_republic" + ], + name: "flag Dominican Republic", + slug: "flag_dominican_republic", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฉ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ฉ๐Ÿ‡ฟ", + keywords: [ + "flag_algeria", + "dz", + "flag", + "nation", + "country", + "banner", + "algeria" + ], + name: "flag Algeria", + slug: "flag_algeria", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡ฆ", + keywords: ["flag_ceuta_melilla"], + name: "flag Ceuta & Melilla", + slug: "flag_ceuta_melilla", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡จ", + keywords: [ + "flag_ecuador", + "ec", + "flag", + "nation", + "country", + "banner", + "ecuador" + ], + name: "flag Ecuador", + slug: "flag_ecuador", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡ช", + keywords: [ + "flag_estonia", + "ee", + "flag", + "nation", + "country", + "banner", + "estonia" + ], + name: "flag Estonia", + slug: "flag_estonia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡ฌ", + keywords: [ + "flag_egypt", + "eg", + "flag", + "nation", + "country", + "banner", + "egypt" + ], + name: "flag Egypt", + slug: "flag_egypt", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡ญ", + keywords: [ + "flag_western_sahara", + "western", + "sahara", + "flag", + "nation", + "country", + "banner", + "western_sahara" + ], + name: "flag Western Sahara", + slug: "flag_western_sahara", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡ท", + keywords: [ + "flag_eritrea", + "er", + "flag", + "nation", + "country", + "banner", + "eritrea" + ], + name: "flag Eritrea", + slug: "flag_eritrea", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡ธ", + keywords: [ + "flag_spain", + "spain", + "flag", + "nation", + "country", + "banner", + "spain" + ], + name: "flag Spain", + slug: "flag_spain", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡น", + keywords: [ + "flag_ethiopia", + "et", + "flag", + "nation", + "country", + "banner", + "ethiopia" + ], + name: "flag Ethiopia", + slug: "flag_ethiopia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ช๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ช๐Ÿ‡บ", + keywords: ["flag_european_union", "european", "union", "flag", "banner"], + name: "flag European Union", + slug: "flag_european_union", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ซ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ซ๐Ÿ‡ฎ", + keywords: [ + "flag_finland", + "fi", + "flag", + "nation", + "country", + "banner", + "finland" + ], + name: "flag Finland", + slug: "flag_finland", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ซ๐Ÿ‡ฏ": Emoji( + char: "๐Ÿ‡ซ๐Ÿ‡ฏ", + keywords: [ + "flag_fiji", + "fj", + "flag", + "nation", + "country", + "banner", + "fiji" + ], + name: "flag Fiji", + slug: "flag_fiji", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ซ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ซ๐Ÿ‡ฐ", + keywords: [ + "flag_falkland_islands", + "falkland", + "islands", + "malvinas", + "flag", + "nation", + "country", + "banner", + "falkland_islands" + ], + name: "flag Falkland Islands", + slug: "flag_falkland_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ซ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ซ๐Ÿ‡ฒ", + keywords: [ + "flag_micronesia", + "micronesia", + "federated", + "states", + "flag", + "nation", + "country", + "banner", + "micronesia" + ], + name: "flag Micronesia", + slug: "flag_micronesia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ซ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ซ๐Ÿ‡ด", + keywords: [ + "flag_faroe_islands", + "faroe", + "islands", + "flag", + "nation", + "country", + "banner", + "faroe_islands" + ], + name: "flag Faroe Islands", + slug: "flag_faroe_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ซ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ซ๐Ÿ‡ท", + keywords: [ + "flag_france", + "banner", + "flag", + "nation", + "france", + "french", + "country", + "france" + ], + name: "flag France", + slug: "flag_france", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ฆ", + keywords: [ + "flag_gabon", + "ga", + "flag", + "nation", + "country", + "banner", + "gabon" + ], + name: "flag Gabon", + slug: "flag_gabon", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ง": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ง", + keywords: [ + "flag_united_kingdom", + "united", + "kingdom", + "great", + "britain", + "northern", + "ireland", + "flag", + "nation", + "country", + "banner", + "british", + "UK", + "english", + "england", + "union jack", + "united_kingdom" + ], + name: "flag United Kingdom", + slug: "flag_united_kingdom", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ฉ", + keywords: [ + "flag_grenada", + "gd", + "flag", + "nation", + "country", + "banner", + "grenada" + ], + name: "flag Grenada", + slug: "flag_grenada", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ช", + keywords: [ + "flag_georgia", + "ge", + "flag", + "nation", + "country", + "banner", + "georgia" + ], + name: "flag Georgia", + slug: "flag_georgia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ซ", + keywords: [ + "flag_french_guiana", + "french", + "guiana", + "flag", + "nation", + "country", + "banner", + "french_guiana" + ], + name: "flag French Guiana", + slug: "flag_french_guiana", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ฌ", + keywords: [ + "flag_guernsey", + "gg", + "flag", + "nation", + "country", + "banner", + "guernsey" + ], + name: "flag Guernsey", + slug: "flag_guernsey", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ญ", + keywords: [ + "flag_ghana", + "gh", + "flag", + "nation", + "country", + "banner", + "ghana" + ], + name: "flag Ghana", + slug: "flag_ghana", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ฎ", + keywords: [ + "flag_gibraltar", + "gi", + "flag", + "nation", + "country", + "banner", + "gibraltar" + ], + name: "flag Gibraltar", + slug: "flag_gibraltar", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ฑ", + keywords: [ + "flag_greenland", + "gl", + "flag", + "nation", + "country", + "banner", + "greenland" + ], + name: "flag Greenland", + slug: "flag_greenland", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ฒ", + keywords: [ + "flag_gambia", + "gm", + "flag", + "nation", + "country", + "banner", + "gambia" + ], + name: "flag Gambia", + slug: "flag_gambia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ณ", + keywords: [ + "flag_guinea", + "gn", + "flag", + "nation", + "country", + "banner", + "guinea" + ], + name: "flag Guinea", + slug: "flag_guinea", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ต": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ต", + keywords: [ + "flag_guadeloupe", + "gp", + "flag", + "nation", + "country", + "banner", + "guadeloupe" + ], + name: "flag Guadeloupe", + slug: "flag_guadeloupe", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ถ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ถ", + keywords: [ + "flag_equatorial_guinea", + "equatorial", + "gn", + "flag", + "nation", + "country", + "banner", + "equatorial_guinea" + ], + name: "flag Equatorial Guinea", + slug: "flag_equatorial_guinea", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ท", + keywords: [ + "flag_greece", + "gr", + "flag", + "nation", + "country", + "banner", + "greece" + ], + name: "flag Greece", + slug: "flag_greece", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ธ", + keywords: [ + "flag_south_georgia_south_sandwich_islands", + "south", + "georgia", + "sandwich", + "islands", + "flag", + "nation", + "country", + "banner", + "south_georgia_south_sandwich_islands" + ], + name: "flag South Georgia & South Sandwich Islands", + slug: "flag_south_georgia_south_sandwich_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡น", + keywords: [ + "flag_guatemala", + "gt", + "flag", + "nation", + "country", + "banner", + "guatemala" + ], + name: "flag Guatemala", + slug: "flag_guatemala", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡บ", + keywords: [ + "flag_guam", + "gu", + "flag", + "nation", + "country", + "banner", + "guam" + ], + name: "flag Guam", + slug: "flag_guam", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡ผ", + keywords: [ + "flag_guinea_bissau", + "gw", + "bissau", + "flag", + "nation", + "country", + "banner", + "guinea_bissau" + ], + name: "flag Guinea-Bissau", + slug: "flag_guinea_bissau", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฌ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ฌ๐Ÿ‡พ", + keywords: [ + "flag_guyana", + "gy", + "flag", + "nation", + "country", + "banner", + "guyana" + ], + name: "flag Guyana", + slug: "flag_guyana", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ญ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ญ๐Ÿ‡ฐ", + keywords: [ + "flag_hong_kong_sar_china", + "hong", + "kong", + "flag", + "nation", + "country", + "banner", + "hong_kong_sar_china" + ], + name: "flag Hong Kong SAR China", + slug: "flag_hong_kong_sar_china", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ญ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ญ๐Ÿ‡ฒ", + keywords: ["flag_heard_mcdonald_islands"], + name: "flag Heard & McDonald Islands", + slug: "flag_heard_mcdonald_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ญ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ญ๐Ÿ‡ณ", + keywords: [ + "flag_honduras", + "hn", + "flag", + "nation", + "country", + "banner", + "honduras" + ], + name: "flag Honduras", + slug: "flag_honduras", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ญ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ญ๐Ÿ‡ท", + keywords: [ + "flag_croatia", + "hr", + "flag", + "nation", + "country", + "banner", + "croatia" + ], + name: "flag Croatia", + slug: "flag_croatia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ญ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ญ๐Ÿ‡น", + keywords: [ + "flag_haiti", + "ht", + "flag", + "nation", + "country", + "banner", + "haiti" + ], + name: "flag Haiti", + slug: "flag_haiti", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ญ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ญ๐Ÿ‡บ", + keywords: [ + "flag_hungary", + "hu", + "flag", + "nation", + "country", + "banner", + "hungary" + ], + name: "flag Hungary", + slug: "flag_hungary", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡จ", + keywords: [ + "flag_canary_islands", + "canary", + "islands", + "flag", + "nation", + "country", + "banner", + "canary_islands" + ], + name: "flag Canary Islands", + slug: "flag_canary_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ฉ", + keywords: [ + "flag_indonesia", + "flag", + "nation", + "country", + "banner", + "indonesia" + ], + name: "flag Indonesia", + slug: "flag_indonesia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ช", + keywords: [ + "flag_ireland", + "ie", + "flag", + "nation", + "country", + "banner", + "ireland" + ], + name: "flag Ireland", + slug: "flag_ireland", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ฑ", + keywords: [ + "flag_israel", + "il", + "flag", + "nation", + "country", + "banner", + "israel" + ], + name: "flag Israel", + slug: "flag_israel", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ฒ", + keywords: [ + "flag_isle_of_man", + "isle", + "man", + "flag", + "nation", + "country", + "banner", + "isle_of_man" + ], + name: "flag Isle of Man", + slug: "flag_isle_of_man", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ณ", + keywords: [ + "flag_india", + "in", + "flag", + "nation", + "country", + "banner", + "india" + ], + name: "flag India", + slug: "flag_india", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ด", + keywords: [ + "flag_british_indian_ocean_territory", + "british", + "indian", + "ocean", + "territory", + "flag", + "nation", + "country", + "banner", + "british_indian_ocean_territory" + ], + name: "flag British Indian Ocean Territory", + slug: "flag_british_indian_ocean_territory", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ถ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ถ", + keywords: [ + "flag_iraq", + "iq", + "flag", + "nation", + "country", + "banner", + "iraq" + ], + name: "flag Iraq", + slug: "flag_iraq", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ท", + keywords: [ + "flag_iran", + "iran", + "islamic", + "republic", + "flag", + "nation", + "country", + "banner", + "iran" + ], + name: "flag Iran", + slug: "flag_iran", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡ธ", + keywords: [ + "flag_iceland", + "is", + "flag", + "nation", + "country", + "banner", + "iceland" + ], + name: "flag Iceland", + slug: "flag_iceland", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฎ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ฎ๐Ÿ‡น", + keywords: [ + "flag_italy", + "italy", + "flag", + "nation", + "country", + "banner", + "italy" + ], + name: "flag Italy", + slug: "flag_italy", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ฏ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฏ๐Ÿ‡ช", + keywords: [ + "flag_jersey", + "je", + "flag", + "nation", + "country", + "banner", + "jersey" + ], + name: "flag Jersey", + slug: "flag_jersey", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฏ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฏ๐Ÿ‡ฒ", + keywords: [ + "flag_jamaica", + "jm", + "flag", + "nation", + "country", + "banner", + "jamaica" + ], + name: "flag Jamaica", + slug: "flag_jamaica", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฏ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ฏ๐Ÿ‡ด", + keywords: [ + "flag_jordan", + "jo", + "flag", + "nation", + "country", + "banner", + "jordan" + ], + name: "flag Jordan", + slug: "flag_jordan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฏ๐Ÿ‡ต": Emoji( + char: "๐Ÿ‡ฏ๐Ÿ‡ต", + keywords: [ + "flag_japan", + "japanese", + "nation", + "flag", + "country", + "banner", + "japan", + "jp", + "ja" + ], + name: "flag Japan", + slug: "flag_japan", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ช", + keywords: [ + "flag_kenya", + "ke", + "flag", + "nation", + "country", + "banner", + "kenya" + ], + name: "flag Kenya", + slug: "flag_kenya", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ฌ", + keywords: [ + "flag_kyrgyzstan", + "kg", + "flag", + "nation", + "country", + "banner", + "kyrgyzstan" + ], + name: "flag Kyrgyzstan", + slug: "flag_kyrgyzstan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ญ", + keywords: [ + "flag_cambodia", + "kh", + "flag", + "nation", + "country", + "banner", + "cambodia" + ], + name: "flag Cambodia", + slug: "flag_cambodia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ฎ", + keywords: [ + "flag_kiribati", + "ki", + "flag", + "nation", + "country", + "banner", + "kiribati" + ], + name: "flag Kiribati", + slug: "flag_kiribati", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ฒ", + keywords: [ + "flag_comoros", + "km", + "flag", + "nation", + "country", + "banner", + "comoros" + ], + name: "flag Comoros", + slug: "flag_comoros", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ณ", + keywords: [ + "flag_st_kitts_nevis", + "saint", + "kitts", + "nevis", + "flag", + "nation", + "country", + "banner", + "st_kitts_nevis" + ], + name: "flag St. Kitts & Nevis", + slug: "flag_st_kitts_nevis", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ต": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ต", + keywords: [ + "flag_north_korea", + "north", + "korea", + "nation", + "flag", + "country", + "banner", + "north_korea" + ], + name: "flag North Korea", + slug: "flag_north_korea", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ท", + keywords: [ + "flag_south_korea", + "south", + "korea", + "nation", + "flag", + "country", + "banner", + "south_korea" + ], + name: "flag South Korea", + slug: "flag_south_korea", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ผ", + keywords: [ + "flag_kuwait", + "kw", + "flag", + "nation", + "country", + "banner", + "kuwait" + ], + name: "flag Kuwait", + slug: "flag_kuwait", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡พ", + keywords: [ + "flag_cayman_islands", + "cayman", + "islands", + "flag", + "nation", + "country", + "banner", + "cayman_islands" + ], + name: "flag Cayman Islands", + slug: "flag_cayman_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฐ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ฐ๐Ÿ‡ฟ", + keywords: [ + "flag_kazakhstan", + "kz", + "flag", + "nation", + "country", + "banner", + "kazakhstan" + ], + name: "flag Kazakhstan", + slug: "flag_kazakhstan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ฆ", + keywords: [ + "flag_laos", + "lao", + "democratic", + "republic", + "flag", + "nation", + "country", + "banner", + "laos" + ], + name: "flag Laos", + slug: "flag_laos", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ง": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ง", + keywords: [ + "flag_lebanon", + "lb", + "flag", + "nation", + "country", + "banner", + "lebanon" + ], + name: "flag Lebanon", + slug: "flag_lebanon", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡จ", + keywords: [ + "flag_st_lucia", + "saint", + "lucia", + "flag", + "nation", + "country", + "banner", + "st_lucia" + ], + name: "flag St. Lucia", + slug: "flag_st_lucia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ฎ", + keywords: [ + "flag_liechtenstein", + "li", + "flag", + "nation", + "country", + "banner", + "liechtenstein" + ], + name: "flag Liechtenstein", + slug: "flag_liechtenstein", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ฐ", + keywords: [ + "flag_sri_lanka", + "sri", + "lanka", + "flag", + "nation", + "country", + "banner", + "sri_lanka" + ], + name: "flag Sri Lanka", + slug: "flag_sri_lanka", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ท", + keywords: [ + "flag_liberia", + "lr", + "flag", + "nation", + "country", + "banner", + "liberia" + ], + name: "flag Liberia", + slug: "flag_liberia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ธ", + keywords: [ + "flag_lesotho", + "ls", + "flag", + "nation", + "country", + "banner", + "lesotho" + ], + name: "flag Lesotho", + slug: "flag_lesotho", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡น", + keywords: [ + "flag_lithuania", + "lt", + "flag", + "nation", + "country", + "banner", + "lithuania" + ], + name: "flag Lithuania", + slug: "flag_lithuania", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡บ", + keywords: [ + "flag_luxembourg", + "lu", + "flag", + "nation", + "country", + "banner", + "luxembourg" + ], + name: "flag Luxembourg", + slug: "flag_luxembourg", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡ป": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡ป", + keywords: [ + "flag_latvia", + "lv", + "flag", + "nation", + "country", + "banner", + "latvia" + ], + name: "flag Latvia", + slug: "flag_latvia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฑ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ฑ๐Ÿ‡พ", + keywords: [ + "flag_libya", + "ly", + "flag", + "nation", + "country", + "banner", + "libya" + ], + name: "flag Libya", + slug: "flag_libya", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฆ", + keywords: [ + "flag_morocco", + "ma", + "flag", + "nation", + "country", + "banner", + "morocco" + ], + name: "flag Morocco", + slug: "flag_morocco", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡จ", + keywords: [ + "flag_monaco", + "mc", + "flag", + "nation", + "country", + "banner", + "monaco" + ], + name: "flag Monaco", + slug: "flag_monaco", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฉ", + keywords: [ + "flag_moldova", + "moldova", + "republic", + "flag", + "nation", + "country", + "banner", + "moldova" + ], + name: "flag Moldova", + slug: "flag_moldova", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ช", + keywords: [ + "flag_montenegro", + "me", + "flag", + "nation", + "country", + "banner", + "montenegro" + ], + name: "flag Montenegro", + slug: "flag_montenegro", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ซ", + keywords: ["flag_st_martin"], + name: "flag St. Martin", + slug: "flag_st_martin", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฌ", + keywords: [ + "flag_madagascar", + "mg", + "flag", + "nation", + "country", + "banner", + "madagascar" + ], + name: "flag Madagascar", + slug: "flag_madagascar", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ญ", + keywords: [ + "flag_marshall_islands", + "marshall", + "islands", + "flag", + "nation", + "country", + "banner", + "marshall_islands" + ], + name: "flag Marshall Islands", + slug: "flag_marshall_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฐ", + keywords: [ + "flag_north_macedonia", + "macedonia", + "flag", + "nation", + "country", + "banner", + "north_macedonia" + ], + name: "flag North Macedonia", + slug: "flag_north_macedonia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฑ", + keywords: [ + "flag_mali", + "ml", + "flag", + "nation", + "country", + "banner", + "mali" + ], + name: "flag Mali", + slug: "flag_mali", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฒ", + keywords: [ + "flag_myanmar", + "mm", + "flag", + "nation", + "country", + "banner", + "myanmar" + ], + name: "flag Myanmar (Burma)", + slug: "flag_myanmar", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ณ", + keywords: [ + "flag_mongolia", + "mn", + "flag", + "nation", + "country", + "banner", + "mongolia" + ], + name: "flag Mongolia", + slug: "flag_mongolia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ด", + keywords: [ + "flag_macao_sar_china", + "macao", + "flag", + "nation", + "country", + "banner", + "macao_sar_china" + ], + name: "flag Macao SAR China", + slug: "flag_macao_sar_china", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ต": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ต", + keywords: [ + "flag_northern_mariana_islands", + "northern", + "mariana", + "islands", + "flag", + "nation", + "country", + "banner", + "northern_mariana_islands" + ], + name: "flag Northern Mariana Islands", + slug: "flag_northern_mariana_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ถ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ถ", + keywords: [ + "flag_martinique", + "mq", + "flag", + "nation", + "country", + "banner", + "martinique" + ], + name: "flag Martinique", + slug: "flag_martinique", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ท", + keywords: [ + "flag_mauritania", + "mr", + "flag", + "nation", + "country", + "banner", + "mauritania" + ], + name: "flag Mauritania", + slug: "flag_mauritania", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ธ", + keywords: [ + "flag_montserrat", + "ms", + "flag", + "nation", + "country", + "banner", + "montserrat" + ], + name: "flag Montserrat", + slug: "flag_montserrat", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡น", + keywords: [ + "flag_malta", + "mt", + "flag", + "nation", + "country", + "banner", + "malta" + ], + name: "flag Malta", + slug: "flag_malta", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡บ", + keywords: [ + "flag_mauritius", + "mu", + "flag", + "nation", + "country", + "banner", + "mauritius" + ], + name: "flag Mauritius", + slug: "flag_mauritius", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ป": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ป", + keywords: [ + "flag_maldives", + "mv", + "flag", + "nation", + "country", + "banner", + "maldives" + ], + name: "flag Maldives", + slug: "flag_maldives", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ผ", + keywords: [ + "flag_malawi", + "mw", + "flag", + "nation", + "country", + "banner", + "malawi" + ], + name: "flag Malawi", + slug: "flag_malawi", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฝ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฝ", + keywords: [ + "flag_mexico", + "mx", + "flag", + "nation", + "country", + "banner", + "mexico" + ], + name: "flag Mexico", + slug: "flag_mexico", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡พ", + keywords: [ + "flag_malaysia", + "my", + "flag", + "nation", + "country", + "banner", + "malaysia" + ], + name: "flag Malaysia", + slug: "flag_malaysia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฒ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ฒ๐Ÿ‡ฟ", + keywords: [ + "flag_mozambique", + "mz", + "flag", + "nation", + "country", + "banner", + "mozambique" + ], + name: "flag Mozambique", + slug: "flag_mozambique", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ฆ", + keywords: [ + "flag_namibia", + "na", + "flag", + "nation", + "country", + "banner", + "namibia" + ], + name: "flag Namibia", + slug: "flag_namibia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡จ", + keywords: [ + "flag_new_caledonia", + "new", + "caledonia", + "flag", + "nation", + "country", + "banner", + "new_caledonia" + ], + name: "flag New Caledonia", + slug: "flag_new_caledonia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ช", + keywords: [ + "flag_niger", + "ne", + "flag", + "nation", + "country", + "banner", + "niger" + ], + name: "flag Niger", + slug: "flag_niger", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ซ", + keywords: [ + "flag_norfolk_island", + "norfolk", + "island", + "flag", + "nation", + "country", + "banner", + "norfolk_island" + ], + name: "flag Norfolk Island", + slug: "flag_norfolk_island", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ฌ", + keywords: [ + "flag_nigeria", + "flag", + "nation", + "country", + "banner", + "nigeria" + ], + name: "flag Nigeria", + slug: "flag_nigeria", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ฎ", + keywords: [ + "flag_nicaragua", + "ni", + "flag", + "nation", + "country", + "banner", + "nicaragua" + ], + name: "flag Nicaragua", + slug: "flag_nicaragua", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ฑ", + keywords: [ + "flag_netherlands", + "nl", + "flag", + "nation", + "country", + "banner", + "netherlands" + ], + name: "flag Netherlands", + slug: "flag_netherlands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ด", + keywords: [ + "flag_norway", + "no", + "flag", + "nation", + "country", + "banner", + "norway" + ], + name: "flag Norway", + slug: "flag_norway", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ต": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ต", + keywords: [ + "flag_nepal", + "np", + "flag", + "nation", + "country", + "banner", + "nepal" + ], + name: "flag Nepal", + slug: "flag_nepal", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ท", + keywords: [ + "flag_nauru", + "nr", + "flag", + "nation", + "country", + "banner", + "nauru" + ], + name: "flag Nauru", + slug: "flag_nauru", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡บ", + keywords: [ + "flag_niue", + "nu", + "flag", + "nation", + "country", + "banner", + "niue" + ], + name: "flag Niue", + slug: "flag_niue", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ณ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ณ๐Ÿ‡ฟ", + keywords: [ + "flag_new_zealand", + "new", + "zealand", + "flag", + "nation", + "country", + "banner", + "new_zealand" + ], + name: "flag New Zealand", + slug: "flag_new_zealand", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ด๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ด๐Ÿ‡ฒ", + keywords: [ + "flag_oman", + "om_symbol", + "flag", + "nation", + "country", + "banner", + "oman" + ], + name: "flag Oman", + slug: "flag_oman", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ฆ", + keywords: [ + "flag_panama", + "pa", + "flag", + "nation", + "country", + "banner", + "panama" + ], + name: "flag Panama", + slug: "flag_panama", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ช", + keywords: [ + "flag_peru", + "pe", + "flag", + "nation", + "country", + "banner", + "peru" + ], + name: "flag Peru", + slug: "flag_peru", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ซ", + keywords: [ + "flag_french_polynesia", + "french", + "polynesia", + "flag", + "nation", + "country", + "banner", + "french_polynesia" + ], + name: "flag French Polynesia", + slug: "flag_french_polynesia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ฌ", + keywords: [ + "flag_papua_new_guinea", + "papua", + "new", + "guinea", + "flag", + "nation", + "country", + "banner", + "papua_new_guinea" + ], + name: "flag Papua New Guinea", + slug: "flag_papua_new_guinea", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ญ", + keywords: [ + "flag_philippines", + "ph", + "flag", + "nation", + "country", + "banner", + "philippines" + ], + name: "flag Philippines", + slug: "flag_philippines", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ฐ", + keywords: [ + "flag_pakistan", + "pk", + "flag", + "nation", + "country", + "banner", + "pakistan" + ], + name: "flag Pakistan", + slug: "flag_pakistan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ฑ", + keywords: [ + "flag_poland", + "pl", + "flag", + "nation", + "country", + "banner", + "poland" + ], + name: "flag Poland", + slug: "flag_poland", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ฒ", + keywords: [ + "flag_st_pierre_miquelon", + "saint", + "pierre", + "miquelon", + "flag", + "nation", + "country", + "banner", + "st_pierre_miquelon" + ], + name: "flag St. Pierre & Miquelon", + slug: "flag_st_pierre_miquelon", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ณ", + keywords: [ + "flag_pitcairn_islands", + "pitcairn", + "flag", + "nation", + "country", + "banner", + "pitcairn_islands" + ], + name: "flag Pitcairn Islands", + slug: "flag_pitcairn_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ท", + keywords: [ + "flag_puerto_rico", + "puerto", + "rico", + "flag", + "nation", + "country", + "banner", + "puerto_rico" + ], + name: "flag Puerto Rico", + slug: "flag_puerto_rico", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ธ", + keywords: [ + "flag_palestinian_territories", + "palestine", + "palestinian", + "territories", + "flag", + "nation", + "country", + "banner", + "palestinian_territories" + ], + name: "flag Palestinian Territories", + slug: "flag_palestinian_territories", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡น", + keywords: [ + "flag_portugal", + "pt", + "flag", + "nation", + "country", + "banner", + "portugal" + ], + name: "flag Portugal", + slug: "flag_portugal", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡ผ", + keywords: [ + "flag_palau", + "pw", + "flag", + "nation", + "country", + "banner", + "palau" + ], + name: "flag Palau", + slug: "flag_palau", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ต๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ต๐Ÿ‡พ", + keywords: [ + "flag_paraguay", + "py", + "flag", + "nation", + "country", + "banner", + "paraguay" + ], + name: "flag Paraguay", + slug: "flag_paraguay", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ถ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ถ๐Ÿ‡ฆ", + keywords: [ + "flag_qatar", + "qa", + "flag", + "nation", + "country", + "banner", + "qatar" + ], + name: "flag Qatar", + slug: "flag_qatar", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ท๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ท๐Ÿ‡ช", + keywords: [ + "flag_reunion", + "rรฉunion", + "flag", + "nation", + "country", + "banner", + "reunion" + ], + name: "flag Rรฉunion", + slug: "flag_reunion", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ท๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ท๐Ÿ‡ด", + keywords: [ + "flag_romania", + "ro", + "flag", + "nation", + "country", + "banner", + "romania" + ], + name: "flag Romania", + slug: "flag_romania", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ท๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ท๐Ÿ‡ธ", + keywords: [ + "flag_serbia", + "rs", + "flag", + "nation", + "country", + "banner", + "serbia" + ], + name: "flag Serbia", + slug: "flag_serbia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ท๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ท๐Ÿ‡บ", + keywords: [ + "flag_russia", + "russian", + "federation", + "flag", + "nation", + "country", + "banner", + "russia" + ], + name: "flag Russia", + slug: "flag_russia", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡ท๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ท๐Ÿ‡ผ", + keywords: [ + "flag_rwanda", + "rw", + "flag", + "nation", + "country", + "banner", + "rwanda" + ], + name: "flag Rwanda", + slug: "flag_rwanda", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฆ", + keywords: [ + "flag_saudi_arabia", + "flag", + "nation", + "country", + "banner", + "saudi_arabia" + ], + name: "flag Saudi Arabia", + slug: "flag_saudi_arabia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ง": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ง", + keywords: [ + "flag_solomon_islands", + "solomon", + "islands", + "flag", + "nation", + "country", + "banner", + "solomon_islands" + ], + name: "flag Solomon Islands", + slug: "flag_solomon_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡จ", + keywords: [ + "flag_seychelles", + "sc", + "flag", + "nation", + "country", + "banner", + "seychelles" + ], + name: "flag Seychelles", + slug: "flag_seychelles", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฉ", + keywords: [ + "flag_sudan", + "sd", + "flag", + "nation", + "country", + "banner", + "sudan" + ], + name: "flag Sudan", + slug: "flag_sudan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ช", + keywords: [ + "flag_sweden", + "se", + "flag", + "nation", + "country", + "banner", + "sweden" + ], + name: "flag Sweden", + slug: "flag_sweden", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฌ", + keywords: [ + "flag_singapore", + "sg", + "flag", + "nation", + "country", + "banner", + "singapore" + ], + name: "flag Singapore", + slug: "flag_singapore", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ญ", + keywords: [ + "flag_st_helena", + "saint", + "helena", + "ascension", + "tristan", + "cunha", + "flag", + "nation", + "country", + "banner", + "st_helena" + ], + name: "flag St. Helena", + slug: "flag_st_helena", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฎ", + keywords: [ + "flag_slovenia", + "si", + "flag", + "nation", + "country", + "banner", + "slovenia" + ], + name: "flag Slovenia", + slug: "flag_slovenia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฏ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฏ", + keywords: ["flag_svalbard_jan_mayen"], + name: "flag Svalbard & Jan Mayen", + slug: "flag_svalbard_jan_mayen", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฐ", + keywords: [ + "flag_slovakia", + "sk", + "flag", + "nation", + "country", + "banner", + "slovakia" + ], + name: "flag Slovakia", + slug: "flag_slovakia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฑ", + keywords: [ + "flag_sierra_leone", + "sierra", + "leone", + "flag", + "nation", + "country", + "banner", + "sierra_leone" + ], + name: "flag Sierra Leone", + slug: "flag_sierra_leone", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฒ", + keywords: [ + "flag_san_marino", + "san", + "marino", + "flag", + "nation", + "country", + "banner", + "san_marino" + ], + name: "flag San Marino", + slug: "flag_san_marino", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ณ", + keywords: [ + "flag_senegal", + "sn", + "flag", + "nation", + "country", + "banner", + "senegal" + ], + name: "flag Senegal", + slug: "flag_senegal", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ด", + keywords: [ + "flag_somalia", + "so", + "flag", + "nation", + "country", + "banner", + "somalia" + ], + name: "flag Somalia", + slug: "flag_somalia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ท", + keywords: [ + "flag_suriname", + "sr", + "flag", + "nation", + "country", + "banner", + "suriname" + ], + name: "flag Suriname", + slug: "flag_suriname", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ธ", + keywords: [ + "flag_south_sudan", + "south", + "sd", + "flag", + "nation", + "country", + "banner", + "south_sudan" + ], + name: "flag South Sudan", + slug: "flag_south_sudan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡น", + keywords: [ + "flag_sao_tome_principe", + "sao", + "tome", + "principe", + "flag", + "nation", + "country", + "banner", + "sao_tome_principe" + ], + name: "flag Sรฃo Tomรฉ & Prรญncipe", + slug: "flag_sao_tome_principe", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ป": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ป", + keywords: [ + "flag_el_salvador", + "el", + "salvador", + "flag", + "nation", + "country", + "banner", + "el_salvador" + ], + name: "flag El Salvador", + slug: "flag_el_salvador", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฝ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฝ", + keywords: [ + "flag_sint_maarten", + "sint", + "maarten", + "dutch", + "flag", + "nation", + "country", + "banner", + "sint_maarten" + ], + name: "flag Sint Maarten", + slug: "flag_sint_maarten", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡พ", + keywords: [ + "flag_syria", + "syrian", + "arab", + "republic", + "flag", + "nation", + "country", + "banner", + "syria" + ], + name: "flag Syria", + slug: "flag_syria", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ธ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡ธ๐Ÿ‡ฟ", + keywords: [ + "flag_eswatini", + "sz", + "flag", + "nation", + "country", + "banner", + "eswatini" + ], + name: "flag Eswatini", + slug: "flag_eswatini", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฆ", + keywords: ["flag_tristan_da_cunha"], + name: "flag Tristan da Cunha", + slug: "flag_tristan_da_cunha", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡จ", + keywords: [ + "flag_turks_caicos_islands", + "turks", + "caicos", + "islands", + "flag", + "nation", + "country", + "banner", + "turks_caicos_islands" + ], + name: "flag Turks & Caicos Islands", + slug: "flag_turks_caicos_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฉ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฉ", + keywords: [ + "flag_chad", + "td", + "flag", + "nation", + "country", + "banner", + "chad" + ], + name: "flag Chad", + slug: "flag_chad", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ซ", + keywords: [ + "flag_french_southern_territories", + "french", + "southern", + "territories", + "flag", + "nation", + "country", + "banner", + "french_southern_territories" + ], + name: "flag French Southern Territories", + slug: "flag_french_southern_territories", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฌ", + keywords: [ + "flag_togo", + "tg", + "flag", + "nation", + "country", + "banner", + "togo" + ], + name: "flag Togo", + slug: "flag_togo", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ญ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ญ", + keywords: [ + "flag_thailand", + "th", + "flag", + "nation", + "country", + "banner", + "thailand" + ], + name: "flag Thailand", + slug: "flag_thailand", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฏ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฏ", + keywords: [ + "flag_tajikistan", + "tj", + "flag", + "nation", + "country", + "banner", + "tajikistan" + ], + name: "flag Tajikistan", + slug: "flag_tajikistan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฐ", + keywords: [ + "flag_tokelau", + "tk", + "flag", + "nation", + "country", + "banner", + "tokelau" + ], + name: "flag Tokelau", + slug: "flag_tokelau", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฑ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฑ", + keywords: [ + "flag_timor_leste", + "timor", + "leste", + "flag", + "nation", + "country", + "banner", + "timor_leste" + ], + name: "flag Timor-Leste", + slug: "flag_timor_leste", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฒ", + keywords: [ + "flag_turkmenistan", + "flag", + "nation", + "country", + "banner", + "turkmenistan" + ], + name: "flag Turkmenistan", + slug: "flag_turkmenistan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ณ", + keywords: [ + "flag_tunisia", + "tn", + "flag", + "nation", + "country", + "banner", + "tunisia" + ], + name: "flag Tunisia", + slug: "flag_tunisia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ด": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ด", + keywords: [ + "flag_tonga", + "to", + "flag", + "nation", + "country", + "banner", + "tonga" + ], + name: "flag Tonga", + slug: "flag_tonga", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ท": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ท", + keywords: [ + "flag_turkey", + "turkey", + "flag", + "nation", + "country", + "banner", + "turkey" + ], + name: "flag Turkey", + slug: "flag_turkey", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡น": Emoji( + char: "๐Ÿ‡น๐Ÿ‡น", + keywords: [ + "flag_trinidad_tobago", + "trinidad", + "tobago", + "flag", + "nation", + "country", + "banner", + "trinidad_tobago" + ], + name: "flag Trinidad & Tobago", + slug: "flag_trinidad_tobago", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ป": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ป", + keywords: ["flag_tuvalu", "flag", "nation", "country", "banner", "tuvalu"], + name: "flag Tuvalu", + slug: "flag_tuvalu", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ผ", + keywords: [ + "flag_taiwan", + "tw", + "flag", + "nation", + "country", + "banner", + "taiwan" + ], + name: "flag Taiwan", + slug: "flag_taiwan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡น๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡น๐Ÿ‡ฟ", + keywords: [ + "flag_tanzania", + "tanzania", + "united", + "republic", + "flag", + "nation", + "country", + "banner", + "tanzania" + ], + name: "flag Tanzania", + slug: "flag_tanzania", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡ฆ", + keywords: [ + "flag_ukraine", + "ua", + "flag", + "nation", + "country", + "banner", + "ukraine" + ], + name: "flag Ukraine", + slug: "flag_ukraine", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡ฌ", + keywords: [ + "flag_uganda", + "ug", + "flag", + "nation", + "country", + "banner", + "uganda" + ], + name: "flag Uganda", + slug: "flag_uganda", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡ฒ", + keywords: ["flag_u_s_outlying_islands"], + name: "flag U.S. Outlying Islands", + slug: "flag_u_s_outlying_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡ณ", + keywords: ["flag_united_nations", "un", "flag", "banner"], + name: "flag United Nations", + slug: "flag_united_nations", + group: EmojiGroup.flags, + emojiVersion: 4.0, + unicodeVersion: 4.0, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡ธ", + keywords: [ + "flag_united_states", + "united", + "states", + "america", + "flag", + "nation", + "country", + "banner", + "united_states" + ], + name: "flag United States", + slug: "flag_united_states", + group: EmojiGroup.flags, + emojiVersion: 0.6, + unicodeVersion: 0.6, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡พ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡พ", + keywords: [ + "flag_uruguay", + "uy", + "flag", + "nation", + "country", + "banner", + "uruguay" + ], + name: "flag Uruguay", + slug: "flag_uruguay", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡บ๐Ÿ‡ฟ": Emoji( + char: "๐Ÿ‡บ๐Ÿ‡ฟ", + keywords: [ + "flag_uzbekistan", + "uz", + "flag", + "nation", + "country", + "banner", + "uzbekistan" + ], + name: "flag Uzbekistan", + slug: "flag_uzbekistan", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡ฆ", + keywords: [ + "flag_vatican_city", + "vatican", + "city", + "flag", + "nation", + "country", + "banner", + "vatican_city" + ], + name: "flag Vatican City", + slug: "flag_vatican_city", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡จ": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡จ", + keywords: [ + "flag_st_vincent_grenadines", + "saint", + "vincent", + "grenadines", + "flag", + "nation", + "country", + "banner", + "st_vincent_grenadines" + ], + name: "flag St. Vincent & Grenadines", + slug: "flag_st_vincent_grenadines", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡ช", + keywords: [ + "flag_venezuela", + "ve", + "bolivarian", + "republic", + "flag", + "nation", + "country", + "banner", + "venezuela" + ], + name: "flag Venezuela", + slug: "flag_venezuela", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡ฌ": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡ฌ", + keywords: [ + "flag_british_virgin_islands", + "british", + "virgin", + "islands", + "bvi", + "flag", + "nation", + "country", + "banner", + "british_virgin_islands" + ], + name: "flag British Virgin Islands", + slug: "flag_british_virgin_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡ฎ": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡ฎ", + keywords: [ + "flag_u_s_virgin_islands", + "virgin", + "islands", + "us", + "flag", + "nation", + "country", + "banner", + "u_s_virgin_islands" + ], + name: "flag U.S. Virgin Islands", + slug: "flag_u_s_virgin_islands", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡ณ": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡ณ", + keywords: [ + "flag_vietnam", + "viet", + "nam", + "flag", + "nation", + "country", + "banner", + "vietnam" + ], + name: "flag Vietnam", + slug: "flag_vietnam", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ป๐Ÿ‡บ": Emoji( + char: "๐Ÿ‡ป๐Ÿ‡บ", + keywords: [ + "flag_vanuatu", + "vu", + "flag", + "nation", + "country", + "banner", + "vanuatu" + ], + name: "flag Vanuatu", + slug: "flag_vanuatu", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ผ๐Ÿ‡ซ": Emoji( + char: "๐Ÿ‡ผ๐Ÿ‡ซ", + keywords: [ + "flag_wallis_futuna", + "wallis", + "futuna", + "flag", + "nation", + "country", + "banner", + "wallis_futuna" + ], + name: "flag Wallis & Futuna", + slug: "flag_wallis_futuna", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ผ๐Ÿ‡ธ": Emoji( + char: "๐Ÿ‡ผ๐Ÿ‡ธ", + keywords: [ + "flag_samoa", + "ws", + "flag", + "nation", + "country", + "banner", + "samoa" + ], + name: "flag Samoa", + slug: "flag_samoa", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฝ๐Ÿ‡ฐ": Emoji( + char: "๐Ÿ‡ฝ๐Ÿ‡ฐ", + keywords: [ + "flag_kosovo", + "xk", + "flag", + "nation", + "country", + "banner", + "kosovo" + ], + name: "flag Kosovo", + slug: "flag_kosovo", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡พ๐Ÿ‡ช": Emoji( + char: "๐Ÿ‡พ๐Ÿ‡ช", + keywords: [ + "flag_yemen", + "ye", + "flag", + "nation", + "country", + "banner", + "yemen" + ], + name: "flag Yemen", + slug: "flag_yemen", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡พ๐Ÿ‡น": Emoji( + char: "๐Ÿ‡พ๐Ÿ‡น", + keywords: [ + "flag_mayotte", + "yt", + "flag", + "nation", + "country", + "banner", + "mayotte" + ], + name: "flag Mayotte", + slug: "flag_mayotte", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฟ๐Ÿ‡ฆ": Emoji( + char: "๐Ÿ‡ฟ๐Ÿ‡ฆ", + keywords: [ + "flag_south_africa", + "south", + "africa", + "flag", + "nation", + "country", + "banner", + "south_africa" + ], + name: "flag South Africa", + slug: "flag_south_africa", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฟ๐Ÿ‡ฒ": Emoji( + char: "๐Ÿ‡ฟ๐Ÿ‡ฒ", + keywords: [ + "flag_zambia", + "zm", + "flag", + "nation", + "country", + "banner", + "zambia" + ], + name: "flag Zambia", + slug: "flag_zambia", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿ‡ฟ๐Ÿ‡ผ": Emoji( + char: "๐Ÿ‡ฟ๐Ÿ‡ผ", + keywords: [ + "flag_zimbabwe", + "zw", + "flag", + "nation", + "country", + "banner", + "zimbabwe" + ], + name: "flag Zimbabwe", + slug: "flag_zimbabwe", + group: EmojiGroup.flags, + emojiVersion: 2.0, + unicodeVersion: 2.0, + skinToneSupport: false, + ), + "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": Emoji( + char: "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ", + keywords: ["flag_england", "flag", "english"], + name: "flag England", + slug: "flag_england", + group: EmojiGroup.flags, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": Emoji( + char: "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ", + keywords: ["flag_scotland", "flag", "scottish"], + name: "flag Scotland", + slug: "flag_scotland", + group: EmojiGroup.flags, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), + "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": Emoji( + char: "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ", + keywords: ["flag_wales", "flag", "welsh"], + name: "flag Wales", + slug: "flag_wales", + group: EmojiGroup.flags, + emojiVersion: 5.0, + unicodeVersion: 5.0, + skinToneSupport: false, + ), +}; + diff --git a/lib/src/utils/emoji_parser.dart b/lib/src/utils/emoji_parser.dart index 220ef3a2..f6bee31e 100644 --- a/lib/src/utils/emoji_parser.dart +++ b/lib/src/utils/emoji_parser.dart @@ -1,5 +1,4 @@ -import 'dart:convert'; - +import 'package:chatview/src/utils/emoji.dart'; import 'package:flutter/widgets.dart'; /// This is code is take from the https://github.com/petehouston/flutter-emoji/blob/master/lib/flutter_emoji.dart @@ -11,6 +10,7 @@ class EmojiConst { static final String charNonSpacingMark = String.fromCharCode(0xfe0f); static const String charColon = ':'; static const String charEmpty = ''; + static const String skinToneChars = '\uD83C[\uDFFB-\uDFFF]'; } /// List of pre-defined message used in this library @@ -46,6 +46,9 @@ class EmojiUtil { /// So, 'heart' will become ':heart:'. /// static String ensureColons(String name) { + if (name.isEmpty) { + return ""; + } var res = name; if (name[0] != EmojiConst.charColon) { res = EmojiConst.charColon + name; @@ -64,6 +67,16 @@ class EmojiUtil { /// static String? stripNSM(String? name) => name?.replaceAll( RegExp(EmojiConst.charNonSpacingMark), EmojiConst.charEmpty); + + /// + /// When processing emojis, we don't need to store the skin tone. + /// + static String? stripSkinTone(String? name) { + return name?.replaceAll( + RegExp(EmojiConst.skinToneChars), + EmojiConst.charEmpty, + ); + } } /// @@ -113,39 +126,22 @@ class Emoji { class EmojiParser { static final RegExp regexName = RegExp(r':([\w-+]+):'); - /// - /// Data source for Emoji. - /// - /// Reference: https://raw.githubusercontent.com/omnidan/node-emoji/master/lib/emoji.json - /// - static const emojiSource = - 'https://raw.githubusercontent.com/omnidan/node-emoji/master/lib/emoji.json'; - static const String jsonEmoji = - '{"100":"๐Ÿ’ฏ","1234":"๐Ÿ”ข","umbrella_with_rain_drops":"โ˜”","coffee":"โ˜•","aries":"โ™ˆ","taurus":"โ™‰","sagittarius":"โ™","capricorn":"โ™‘","aquarius":"โ™’","pisces":"โ™“","anchor":"โš“","white_check_mark":"โœ…","sparkles":"โœจ","question":"โ“","grey_question":"โ”","grey_exclamation":"โ•","exclamation":"โ—","heavy_exclamation_mark":"โ—","heavy_plus_sign":"โž•","heavy_minus_sign":"โž–","heavy_division_sign":"โž—","hash":"#๏ธโƒฃ","keycap_star":"*๏ธโƒฃ","zero":"0๏ธโƒฃ","one":"1๏ธโƒฃ","two":"2๏ธโƒฃ","three":"3๏ธโƒฃ","four":"4๏ธโƒฃ","five":"5๏ธโƒฃ","six":"6๏ธโƒฃ","seven":"7๏ธโƒฃ","eight":"8๏ธโƒฃ","nine":"9๏ธโƒฃ","copyright":"ยฉ๏ธ","registered":"ยฎ๏ธ","mahjong":"๐Ÿ€„","black_joker":"๐Ÿƒ","a":"๐Ÿ…ฐ๏ธ","b":"๐Ÿ…ฑ๏ธ","o2":"๐Ÿ…พ๏ธ","parking":"๐Ÿ…ฟ๏ธ","ab":"๐Ÿ†Ž","cl":"๐Ÿ†‘","cool":"๐Ÿ†’","free":"๐Ÿ†“","id":"๐Ÿ†”","new":"๐Ÿ†•","ng":"๐Ÿ†–","ok":"๐Ÿ†—","sos":"๐Ÿ†˜","up":"๐Ÿ†™","vs":"๐Ÿ†š","flag-ac":"๐Ÿ‡ฆ๐Ÿ‡จ","flag-ad":"๐Ÿ‡ฆ๐Ÿ‡ฉ","flag-ae":"๐Ÿ‡ฆ๐Ÿ‡ช","flag-af":"๐Ÿ‡ฆ๐Ÿ‡ซ","flag-ag":"๐Ÿ‡ฆ๐Ÿ‡ฌ","flag-ai":"๐Ÿ‡ฆ๐Ÿ‡ฎ","flag-al":"๐Ÿ‡ฆ๐Ÿ‡ฑ","flag-am":"๐Ÿ‡ฆ๐Ÿ‡ฒ","flag-ao":"๐Ÿ‡ฆ๐Ÿ‡ด","flag-aq":"๐Ÿ‡ฆ๐Ÿ‡ถ","flag-ar":"๐Ÿ‡ฆ๐Ÿ‡ท","flag-as":"๐Ÿ‡ฆ๐Ÿ‡ธ","flag-at":"๐Ÿ‡ฆ๐Ÿ‡น","flag-au":"๐Ÿ‡ฆ๐Ÿ‡บ","flag-aw":"๐Ÿ‡ฆ๐Ÿ‡ผ","flag-ax":"๐Ÿ‡ฆ๐Ÿ‡ฝ","flag-az":"๐Ÿ‡ฆ๐Ÿ‡ฟ","flag-ba":"๐Ÿ‡ง๐Ÿ‡ฆ","flag-bb":"๐Ÿ‡ง๐Ÿ‡ง","flag-bd":"๐Ÿ‡ง๐Ÿ‡ฉ","flag-be":"๐Ÿ‡ง๐Ÿ‡ช","flag-bf":"๐Ÿ‡ง๐Ÿ‡ซ","flag-bg":"๐Ÿ‡ง๐Ÿ‡ฌ","flag-bh":"๐Ÿ‡ง๐Ÿ‡ญ","flag-bi":"๐Ÿ‡ง๐Ÿ‡ฎ","flag-bj":"๐Ÿ‡ง๐Ÿ‡ฏ","flag-bl":"๐Ÿ‡ง๐Ÿ‡ฑ","flag-bm":"๐Ÿ‡ง๐Ÿ‡ฒ","flag-bn":"๐Ÿ‡ง๐Ÿ‡ณ","flag-bo":"๐Ÿ‡ง๐Ÿ‡ด","flag-bq":"๐Ÿ‡ง๐Ÿ‡ถ","flag-br":"๐Ÿ‡ง๐Ÿ‡ท","flag-bs":"๐Ÿ‡ง๐Ÿ‡ธ","flag-bt":"๐Ÿ‡ง๐Ÿ‡น","flag-bv":"๐Ÿ‡ง๐Ÿ‡ป","flag-bw":"๐Ÿ‡ง๐Ÿ‡ผ","flag-by":"๐Ÿ‡ง๐Ÿ‡พ","flag-bz":"๐Ÿ‡ง๐Ÿ‡ฟ","flag-ca":"๐Ÿ‡จ๐Ÿ‡ฆ","flag-cc":"๐Ÿ‡จ๐Ÿ‡จ","flag-cd":"๐Ÿ‡จ๐Ÿ‡ฉ","flag-cf":"๐Ÿ‡จ๐Ÿ‡ซ","flag-cg":"๐Ÿ‡จ๐Ÿ‡ฌ","flag-ch":"๐Ÿ‡จ๐Ÿ‡ญ","flag-ci":"๐Ÿ‡จ๐Ÿ‡ฎ","flag-ck":"๐Ÿ‡จ๐Ÿ‡ฐ","flag-cl":"๐Ÿ‡จ๐Ÿ‡ฑ","flag-cm":"๐Ÿ‡จ๐Ÿ‡ฒ","cn":"๐Ÿ‡จ๐Ÿ‡ณ","flag-cn":"๐Ÿ‡จ๐Ÿ‡ณ","flag-co":"๐Ÿ‡จ๐Ÿ‡ด","flag-cp":"๐Ÿ‡จ๐Ÿ‡ต","flag-cr":"๐Ÿ‡จ๐Ÿ‡ท","flag-cu":"๐Ÿ‡จ๐Ÿ‡บ","flag-cv":"๐Ÿ‡จ๐Ÿ‡ป","flag-cw":"๐Ÿ‡จ๐Ÿ‡ผ","flag-cx":"๐Ÿ‡จ๐Ÿ‡ฝ","flag-cy":"๐Ÿ‡จ๐Ÿ‡พ","flag-cz":"๐Ÿ‡จ๐Ÿ‡ฟ","de":"๐Ÿ‡ฉ๐Ÿ‡ช","flag-de":"๐Ÿ‡ฉ๐Ÿ‡ช","flag-dg":"๐Ÿ‡ฉ๐Ÿ‡ฌ","flag-dj":"๐Ÿ‡ฉ๐Ÿ‡ฏ","flag-dk":"๐Ÿ‡ฉ๐Ÿ‡ฐ","flag-dm":"๐Ÿ‡ฉ๐Ÿ‡ฒ","flag-do":"๐Ÿ‡ฉ๐Ÿ‡ด","flag-dz":"๐Ÿ‡ฉ๐Ÿ‡ฟ","flag-ea":"๐Ÿ‡ช๐Ÿ‡ฆ","flag-ec":"๐Ÿ‡ช๐Ÿ‡จ","flag-ee":"๐Ÿ‡ช๐Ÿ‡ช","flag-eg":"๐Ÿ‡ช๐Ÿ‡ฌ","flag-eh":"๐Ÿ‡ช๐Ÿ‡ญ","flag-er":"๐Ÿ‡ช๐Ÿ‡ท","es":"๐Ÿ‡ช๐Ÿ‡ธ","flag-es":"๐Ÿ‡ช๐Ÿ‡ธ","flag-et":"๐Ÿ‡ช๐Ÿ‡น","flag-eu":"๐Ÿ‡ช๐Ÿ‡บ","flag-fi":"๐Ÿ‡ซ๐Ÿ‡ฎ","flag-fj":"๐Ÿ‡ซ๐Ÿ‡ฏ","flag-fk":"๐Ÿ‡ซ๐Ÿ‡ฐ","flag-fm":"๐Ÿ‡ซ๐Ÿ‡ฒ","flag-fo":"๐Ÿ‡ซ๐Ÿ‡ด","fr":"๐Ÿ‡ซ๐Ÿ‡ท","flag-fr":"๐Ÿ‡ซ๐Ÿ‡ท","flag-ga":"๐Ÿ‡ฌ๐Ÿ‡ฆ","gb":"๐Ÿ‡ฌ๐Ÿ‡ง","uk":"๐Ÿ‡ฌ๐Ÿ‡ง","flag-gb":"๐Ÿ‡ฌ๐Ÿ‡ง","flag-gd":"๐Ÿ‡ฌ๐Ÿ‡ฉ","flag-ge":"๐Ÿ‡ฌ๐Ÿ‡ช","flag-gf":"๐Ÿ‡ฌ๐Ÿ‡ซ","flag-gg":"๐Ÿ‡ฌ๐Ÿ‡ฌ","flag-gh":"๐Ÿ‡ฌ๐Ÿ‡ญ","flag-gi":"๐Ÿ‡ฌ๐Ÿ‡ฎ","flag-gl":"๐Ÿ‡ฌ๐Ÿ‡ฑ","flag-gm":"๐Ÿ‡ฌ๐Ÿ‡ฒ","flag-gn":"๐Ÿ‡ฌ๐Ÿ‡ณ","flag-gp":"๐Ÿ‡ฌ๐Ÿ‡ต","flag-gq":"๐Ÿ‡ฌ๐Ÿ‡ถ","flag-gr":"๐Ÿ‡ฌ๐Ÿ‡ท","flag-gs":"๐Ÿ‡ฌ๐Ÿ‡ธ","flag-gt":"๐Ÿ‡ฌ๐Ÿ‡น","flag-gu":"๐Ÿ‡ฌ๐Ÿ‡บ","flag-gw":"๐Ÿ‡ฌ๐Ÿ‡ผ","flag-gy":"๐Ÿ‡ฌ๐Ÿ‡พ","flag-hk":"๐Ÿ‡ญ๐Ÿ‡ฐ","flag-hm":"๐Ÿ‡ญ๐Ÿ‡ฒ","flag-hn":"๐Ÿ‡ญ๐Ÿ‡ณ","flag-hr":"๐Ÿ‡ญ๐Ÿ‡ท","flag-ht":"๐Ÿ‡ญ๐Ÿ‡น","flag-hu":"๐Ÿ‡ญ๐Ÿ‡บ","flag-ic":"๐Ÿ‡ฎ๐Ÿ‡จ","flag-id":"๐Ÿ‡ฎ๐Ÿ‡ฉ","flag-ie":"๐Ÿ‡ฎ๐Ÿ‡ช","flag-il":"๐Ÿ‡ฎ๐Ÿ‡ฑ","flag-im":"๐Ÿ‡ฎ๐Ÿ‡ฒ","flag-in":"๐Ÿ‡ฎ๐Ÿ‡ณ","flag-io":"๐Ÿ‡ฎ๐Ÿ‡ด","flag-iq":"๐Ÿ‡ฎ๐Ÿ‡ถ","flag-ir":"๐Ÿ‡ฎ๐Ÿ‡ท","flag-is":"๐Ÿ‡ฎ๐Ÿ‡ธ","it":"๐Ÿ‡ฎ๐Ÿ‡น","flag-it":"๐Ÿ‡ฎ๐Ÿ‡น","flag-je":"๐Ÿ‡ฏ๐Ÿ‡ช","flag-jm":"๐Ÿ‡ฏ๐Ÿ‡ฒ","flag-jo":"๐Ÿ‡ฏ๐Ÿ‡ด","jp":"๐Ÿ‡ฏ๐Ÿ‡ต","flag-jp":"๐Ÿ‡ฏ๐Ÿ‡ต","flag-ke":"๐Ÿ‡ฐ๐Ÿ‡ช","flag-kg":"๐Ÿ‡ฐ๐Ÿ‡ฌ","flag-kh":"๐Ÿ‡ฐ๐Ÿ‡ญ","flag-ki":"๐Ÿ‡ฐ๐Ÿ‡ฎ","flag-km":"๐Ÿ‡ฐ๐Ÿ‡ฒ","flag-kn":"๐Ÿ‡ฐ๐Ÿ‡ณ","flag-kp":"๐Ÿ‡ฐ๐Ÿ‡ต","kr":"๐Ÿ‡ฐ๐Ÿ‡ท","flag-kr":"๐Ÿ‡ฐ๐Ÿ‡ท","flag-kw":"๐Ÿ‡ฐ๐Ÿ‡ผ","flag-ky":"๐Ÿ‡ฐ๐Ÿ‡พ","flag-kz":"๐Ÿ‡ฐ๐Ÿ‡ฟ","flag-la":"๐Ÿ‡ฑ๐Ÿ‡ฆ","flag-lb":"๐Ÿ‡ฑ๐Ÿ‡ง","flag-lc":"๐Ÿ‡ฑ๐Ÿ‡จ","flag-li":"๐Ÿ‡ฑ๐Ÿ‡ฎ","flag-lk":"๐Ÿ‡ฑ๐Ÿ‡ฐ","flag-lr":"๐Ÿ‡ฑ๐Ÿ‡ท","flag-ls":"๐Ÿ‡ฑ๐Ÿ‡ธ","flag-lt":"๐Ÿ‡ฑ๐Ÿ‡น","flag-lu":"๐Ÿ‡ฑ๐Ÿ‡บ","flag-lv":"๐Ÿ‡ฑ๐Ÿ‡ป","flag-ly":"๐Ÿ‡ฑ๐Ÿ‡พ","flag-ma":"๐Ÿ‡ฒ๐Ÿ‡ฆ","flag-mc":"๐Ÿ‡ฒ๐Ÿ‡จ","flag-md":"๐Ÿ‡ฒ๐Ÿ‡ฉ","flag-me":"๐Ÿ‡ฒ๐Ÿ‡ช","flag-mf":"๐Ÿ‡ฒ๐Ÿ‡ซ","flag-mg":"๐Ÿ‡ฒ๐Ÿ‡ฌ","flag-mh":"๐Ÿ‡ฒ๐Ÿ‡ญ","flag-mk":"๐Ÿ‡ฒ๐Ÿ‡ฐ","flag-ml":"๐Ÿ‡ฒ๐Ÿ‡ฑ","flag-mm":"๐Ÿ‡ฒ๐Ÿ‡ฒ","flag-mn":"๐Ÿ‡ฒ๐Ÿ‡ณ","flag-mo":"๐Ÿ‡ฒ๐Ÿ‡ด","flag-mp":"๐Ÿ‡ฒ๐Ÿ‡ต","flag-mq":"๐Ÿ‡ฒ๐Ÿ‡ถ","flag-mr":"๐Ÿ‡ฒ๐Ÿ‡ท","flag-ms":"๐Ÿ‡ฒ๐Ÿ‡ธ","flag-mt":"๐Ÿ‡ฒ๐Ÿ‡น","flag-mu":"๐Ÿ‡ฒ๐Ÿ‡บ","flag-mv":"๐Ÿ‡ฒ๐Ÿ‡ป","flag-mw":"๐Ÿ‡ฒ๐Ÿ‡ผ","flag-mx":"๐Ÿ‡ฒ๐Ÿ‡ฝ","flag-my":"๐Ÿ‡ฒ๐Ÿ‡พ","flag-mz":"๐Ÿ‡ฒ๐Ÿ‡ฟ","flag-na":"๐Ÿ‡ณ๐Ÿ‡ฆ","flag-nc":"๐Ÿ‡ณ๐Ÿ‡จ","flag-ne":"๐Ÿ‡ณ๐Ÿ‡ช","flag-nf":"๐Ÿ‡ณ๐Ÿ‡ซ","flag-ng":"๐Ÿ‡ณ๐Ÿ‡ฌ","flag-ni":"๐Ÿ‡ณ๐Ÿ‡ฎ","flag-nl":"๐Ÿ‡ณ๐Ÿ‡ฑ","flag-no":"๐Ÿ‡ณ๐Ÿ‡ด","flag-np":"๐Ÿ‡ณ๐Ÿ‡ต","flag-nr":"๐Ÿ‡ณ๐Ÿ‡ท","flag-nu":"๐Ÿ‡ณ๐Ÿ‡บ","flag-nz":"๐Ÿ‡ณ๐Ÿ‡ฟ","flag-om":"๐Ÿ‡ด๐Ÿ‡ฒ","flag-pa":"๐Ÿ‡ต๐Ÿ‡ฆ","flag-pe":"๐Ÿ‡ต๐Ÿ‡ช","flag-pf":"๐Ÿ‡ต๐Ÿ‡ซ","flag-pg":"๐Ÿ‡ต๐Ÿ‡ฌ","flag-ph":"๐Ÿ‡ต๐Ÿ‡ญ","flag-pk":"๐Ÿ‡ต๐Ÿ‡ฐ","flag-pl":"๐Ÿ‡ต๐Ÿ‡ฑ","flag-pm":"๐Ÿ‡ต๐Ÿ‡ฒ","flag-pn":"๐Ÿ‡ต๐Ÿ‡ณ","flag-pr":"๐Ÿ‡ต๐Ÿ‡ท","flag-ps":"๐Ÿ‡ต๐Ÿ‡ธ","flag-pt":"๐Ÿ‡ต๐Ÿ‡น","flag-pw":"๐Ÿ‡ต๐Ÿ‡ผ","flag-py":"๐Ÿ‡ต๐Ÿ‡พ","flag-qa":"๐Ÿ‡ถ๐Ÿ‡ฆ","flag-re":"๐Ÿ‡ท๐Ÿ‡ช","flag-ro":"๐Ÿ‡ท๐Ÿ‡ด","flag-rs":"๐Ÿ‡ท๐Ÿ‡ธ","ru":"๐Ÿ‡ท๐Ÿ‡บ","flag-ru":"๐Ÿ‡ท๐Ÿ‡บ","flag-rw":"๐Ÿ‡ท๐Ÿ‡ผ","flag-sa":"๐Ÿ‡ธ๐Ÿ‡ฆ","flag-sb":"๐Ÿ‡ธ๐Ÿ‡ง","flag-sc":"๐Ÿ‡ธ๐Ÿ‡จ","flag-sd":"๐Ÿ‡ธ๐Ÿ‡ฉ","flag-se":"๐Ÿ‡ธ๐Ÿ‡ช","flag-sg":"๐Ÿ‡ธ๐Ÿ‡ฌ","flag-sh":"๐Ÿ‡ธ๐Ÿ‡ญ","flag-si":"๐Ÿ‡ธ๐Ÿ‡ฎ","flag-sj":"๐Ÿ‡ธ๐Ÿ‡ฏ","flag-sk":"๐Ÿ‡ธ๐Ÿ‡ฐ","flag-sl":"๐Ÿ‡ธ๐Ÿ‡ฑ","flag-sm":"๐Ÿ‡ธ๐Ÿ‡ฒ","flag-sn":"๐Ÿ‡ธ๐Ÿ‡ณ","flag-so":"๐Ÿ‡ธ๐Ÿ‡ด","flag-sr":"๐Ÿ‡ธ๐Ÿ‡ท","flag-ss":"๐Ÿ‡ธ๐Ÿ‡ธ","flag-st":"๐Ÿ‡ธ๐Ÿ‡น","flag-sv":"๐Ÿ‡ธ๐Ÿ‡ป","flag-sx":"๐Ÿ‡ธ๐Ÿ‡ฝ","flag-sy":"๐Ÿ‡ธ๐Ÿ‡พ","flag-sz":"๐Ÿ‡ธ๐Ÿ‡ฟ","flag-ta":"๐Ÿ‡น๐Ÿ‡ฆ","flag-tc":"๐Ÿ‡น๐Ÿ‡จ","flag-td":"๐Ÿ‡น๐Ÿ‡ฉ","flag-tf":"๐Ÿ‡น๐Ÿ‡ซ","flag-tg":"๐Ÿ‡น๐Ÿ‡ฌ","flag-th":"๐Ÿ‡น๐Ÿ‡ญ","flag-tj":"๐Ÿ‡น๐Ÿ‡ฏ","flag-tk":"๐Ÿ‡น๐Ÿ‡ฐ","flag-tl":"๐Ÿ‡น๐Ÿ‡ฑ","flag-tm":"๐Ÿ‡น๐Ÿ‡ฒ","flag-tn":"๐Ÿ‡น๐Ÿ‡ณ","flag-to":"๐Ÿ‡น๐Ÿ‡ด","flag-tr":"๐Ÿ‡น๐Ÿ‡ท","flag-tt":"๐Ÿ‡น๐Ÿ‡น","flag-tv":"๐Ÿ‡น๐Ÿ‡ป","flag-tw":"๐Ÿ‡น๐Ÿ‡ผ","flag-tz":"๐Ÿ‡น๐Ÿ‡ฟ","flag-ua":"๐Ÿ‡บ๐Ÿ‡ฆ","flag-ug":"๐Ÿ‡บ๐Ÿ‡ฌ","flag-um":"๐Ÿ‡บ๐Ÿ‡ฒ","flag-un":"๐Ÿ‡บ๐Ÿ‡ณ","us":"๐Ÿ‡บ๐Ÿ‡ธ","flag-us":"๐Ÿ‡บ๐Ÿ‡ธ","flag-uy":"๐Ÿ‡บ๐Ÿ‡พ","flag-uz":"๐Ÿ‡บ๐Ÿ‡ฟ","flag-va":"๐Ÿ‡ป๐Ÿ‡ฆ","flag-vc":"๐Ÿ‡ป๐Ÿ‡จ","flag-ve":"๐Ÿ‡ป๐Ÿ‡ช","flag-vg":"๐Ÿ‡ป๐Ÿ‡ฌ","flag-vi":"๐Ÿ‡ป๐Ÿ‡ฎ","flag-vn":"๐Ÿ‡ป๐Ÿ‡ณ","flag-vu":"๐Ÿ‡ป๐Ÿ‡บ","flag-wf":"๐Ÿ‡ผ๐Ÿ‡ซ","flag-ws":"๐Ÿ‡ผ๐Ÿ‡ธ","flag-xk":"๐Ÿ‡ฝ๐Ÿ‡ฐ","flag-ye":"๐Ÿ‡พ๐Ÿ‡ช","flag-yt":"๐Ÿ‡พ๐Ÿ‡น","flag-za":"๐Ÿ‡ฟ๐Ÿ‡ฆ","flag-zm":"๐Ÿ‡ฟ๐Ÿ‡ฒ","flag-zw":"๐Ÿ‡ฟ๐Ÿ‡ผ","koko":"๐Ÿˆ","sa":"๐Ÿˆ‚๏ธ","u7121":"๐Ÿˆš","u6307":"๐Ÿˆฏ","u7981":"๐Ÿˆฒ","u7a7a":"๐Ÿˆณ","u5408":"๐Ÿˆด","u6e80":"๐Ÿˆต","u6709":"๐Ÿˆถ","u6708":"๐Ÿˆท๏ธ","u7533":"๐Ÿˆธ","u5272":"๐Ÿˆน","u55b6":"๐Ÿˆบ","ideograph_advantage":"๐Ÿ‰","accept":"๐Ÿ‰‘","cyclone":"๐ŸŒ€","foggy":"๐ŸŒ","closed_umbrella":"๐ŸŒ‚","night_with_stars":"๐ŸŒƒ","sunrise_over_mountains":"๐ŸŒ„","sunrise":"๐ŸŒ…","city_sunset":"๐ŸŒ†","city_sunrise":"๐ŸŒ‡","rainbow":"๐ŸŒˆ","bridge_at_night":"๐ŸŒ‰","ocean":"๐ŸŒŠ","volcano":"๐ŸŒ‹","milky_way":"๐ŸŒŒ","earth_africa":"๐ŸŒ","earth_americas":"๐ŸŒŽ","earth_asia":"๐ŸŒ","globe_with_meridians":"๐ŸŒ","new_moon":"๐ŸŒ‘","waxing_crescent_moon":"๐ŸŒ’","first_quarter_moon":"๐ŸŒ“","moon":"๐ŸŒ”","waxing_gibbous_moon":"๐ŸŒ”","full_moon":"๐ŸŒ•","waning_gibbous_moon":"๐ŸŒ–","last_quarter_moon":"๐ŸŒ—","waning_crescent_moon":"๐ŸŒ˜","crescent_moon":"๐ŸŒ™","new_moon_with_face":"๐ŸŒš","first_quarter_moon_with_face":"๐ŸŒ›","last_quarter_moon_with_face":"๐ŸŒœ","full_moon_with_face":"๐ŸŒ","sun_with_face":"๐ŸŒž","star2":"๐ŸŒŸ","stars":"๐ŸŒ ","thermometer":"๐ŸŒก๏ธ","mostly_sunny":"๐ŸŒค๏ธ","sun_small_cloud":"๐ŸŒค๏ธ","barely_sunny":"๐ŸŒฅ๏ธ","sun_behind_cloud":"๐ŸŒฅ๏ธ","partly_sunny_rain":"๐ŸŒฆ๏ธ","sun_behind_rain_cloud":"๐ŸŒฆ๏ธ","rain_cloud":"๐ŸŒง๏ธ","snow_cloud":"๐ŸŒจ๏ธ","lightning":"๐ŸŒฉ๏ธ","lightning_cloud":"๐ŸŒฉ๏ธ","tornado":"๐ŸŒช๏ธ","tornado_cloud":"๐ŸŒช๏ธ","fog":"๐ŸŒซ๏ธ","wind_blowing_face":"๐ŸŒฌ๏ธ","hotdog":"๐ŸŒญ","taco":"๐ŸŒฎ","burrito":"๐ŸŒฏ","chestnut":"๐ŸŒฐ","seedling":"๐ŸŒฑ","evergreen_tree":"๐ŸŒฒ","deciduous_tree":"๐ŸŒณ","palm_tree":"๐ŸŒด","cactus":"๐ŸŒต","hot_pepper":"๐ŸŒถ๏ธ","tulip":"๐ŸŒท","cherry_blossom":"๐ŸŒธ","rose":"๐ŸŒน","hibiscus":"๐ŸŒบ","sunflower":"๐ŸŒป","blossom":"๐ŸŒผ","corn":"๐ŸŒฝ","ear_of_rice":"๐ŸŒพ","herb":"๐ŸŒฟ","four_leaf_clover":"๐Ÿ€","maple_leaf":"๐Ÿ","fallen_leaf":"๐Ÿ‚","leaves":"๐Ÿƒ","mushroom":"๐Ÿ„","tomato":"๐Ÿ…","eggplant":"๐Ÿ†","grapes":"๐Ÿ‡","melon":"๐Ÿˆ","watermelon":"๐Ÿ‰","tangerine":"๐ŸŠ","lemon":"๐Ÿ‹","banana":"๐ŸŒ","pineapple":"๐Ÿ","apple":"๐ŸŽ","green_apple":"๐Ÿ","pear":"๐Ÿ","peach":"๐Ÿ‘","cherries":"๐Ÿ’","strawberry":"๐Ÿ“","hamburger":"๐Ÿ”","pizza":"๐Ÿ•","meat_on_bone":"๐Ÿ–","poultry_leg":"๐Ÿ—","rice_cracker":"๐Ÿ˜","rice_ball":"๐Ÿ™","rice":"๐Ÿš","curry":"๐Ÿ›","ramen":"๐Ÿœ","spaghetti":"๐Ÿ","bread":"๐Ÿž","fries":"๐ŸŸ","sweet_potato":"๐Ÿ ","dango":"๐Ÿก","oden":"๐Ÿข","sushi":"๐Ÿฃ","fried_shrimp":"๐Ÿค","fish_cake":"๐Ÿฅ","icecream":"๐Ÿฆ","shaved_ice":"๐Ÿง","ice_cream":"๐Ÿจ","doughnut":"๐Ÿฉ","cookie":"๐Ÿช","chocolate_bar":"๐Ÿซ","candy":"๐Ÿฌ","lollipop":"๐Ÿญ","custard":"๐Ÿฎ","honey_pot":"๐Ÿฏ","cake":"๐Ÿฐ","bento":"๐Ÿฑ","stew":"๐Ÿฒ","fried_egg":"๐Ÿณ","cooking":"๐Ÿณ","fork_and_knife":"๐Ÿด","tea":"๐Ÿต","sake":"๐Ÿถ","wine_glass":"๐Ÿท","cocktail":"๐Ÿธ","tropical_drink":"๐Ÿน","beer":"๐Ÿบ","beers":"๐Ÿป","baby_bottle":"๐Ÿผ","knife_fork_plate":"๐Ÿฝ๏ธ","champagne":"๐Ÿพ","popcorn":"๐Ÿฟ","ribbon":"๐ŸŽ€","gift":"๐ŸŽ","birthday":"๐ŸŽ‚","jack_o_lantern":"๐ŸŽƒ","christmas_tree":"๐ŸŽ„","santa":"๐ŸŽ…","fireworks":"๐ŸŽ†","sparkler":"๐ŸŽ‡","balloon":"๐ŸŽˆ","tada":"๐ŸŽ‰","confetti_ball":"๐ŸŽŠ","tanabata_tree":"๐ŸŽ‹","crossed_flags":"๐ŸŽŒ","bamboo":"๐ŸŽ","dolls":"๐ŸŽŽ","flags":"๐ŸŽ","wind_chime":"๐ŸŽ","rice_scene":"๐ŸŽ‘","school_satchel":"๐ŸŽ’","mortar_board":"๐ŸŽ“","medal":"๐ŸŽ–๏ธ","reminder_ribbon":"๐ŸŽ—๏ธ","studio_microphone":"๐ŸŽ™๏ธ","level_slider":"๐ŸŽš๏ธ","control_knobs":"๐ŸŽ›๏ธ","film_frames":"๐ŸŽž๏ธ","admission_tickets":"๐ŸŽŸ๏ธ","carousel_horse":"๐ŸŽ ","ferris_wheel":"๐ŸŽก","roller_coaster":"๐ŸŽข","fishing_pole_and_fish":"๐ŸŽฃ","microphone":"๐ŸŽค","movie_camera":"๐ŸŽฅ","cinema":"๐ŸŽฆ","headphones":"๐ŸŽง","art":"๐ŸŽจ","tophat":"๐ŸŽฉ","circus_tent":"๐ŸŽช","ticket":"๐ŸŽซ","clapper":"๐ŸŽฌ","performing_arts":"๐ŸŽญ","video_game":"๐ŸŽฎ","dart":"๐ŸŽฏ","slot_machine":"๐ŸŽฐ","8ball":"๐ŸŽฑ","game_die":"๐ŸŽฒ","bowling":"๐ŸŽณ","flower_playing_cards":"๐ŸŽด","musical_note":"๐ŸŽต","notes":"๐ŸŽถ","saxophone":"๐ŸŽท","guitar":"๐ŸŽธ","musical_keyboard":"๐ŸŽน","trumpet":"๐ŸŽบ","violin":"๐ŸŽป","musical_score":"๐ŸŽผ","running_shirt_with_sash":"๐ŸŽฝ","tennis":"๐ŸŽพ","ski":"๐ŸŽฟ","basketball":"๐Ÿ€","checkered_flag":"๐Ÿ","snowboarder":"๐Ÿ‚","woman-running":"๐Ÿƒโ€โ™€๏ธ","man-running":"๐Ÿƒโ€โ™‚๏ธ","runner":"๐Ÿƒโ€โ™‚๏ธ","running":"๐Ÿƒโ€โ™‚๏ธ","woman-surfing":"๐Ÿ„โ€โ™€๏ธ","man-surfing":"๐Ÿ„โ€โ™‚๏ธ","surfer":"๐Ÿ„โ€โ™‚๏ธ","sports_medal":"๐Ÿ…","trophy":"๐Ÿ†","horse_racing":"๐Ÿ‡","football":"๐Ÿˆ","rugby_football":"๐Ÿ‰","woman-swimming":"๐ŸŠโ€โ™€๏ธ","man-swimming":"๐ŸŠโ€โ™‚๏ธ","swimmer":"๐ŸŠโ€โ™‚๏ธ","woman-lifting-weights":"๐Ÿ‹๏ธโ€โ™€๏ธ","man-lifting-weights":"๐Ÿ‹๏ธโ€โ™‚๏ธ","weight_lifter":"๐Ÿ‹๏ธโ€โ™‚๏ธ","woman-golfing":"๐ŸŒ๏ธโ€โ™€๏ธ","man-golfing":"๐ŸŒ๏ธโ€โ™‚๏ธ","golfer":"๐ŸŒ๏ธโ€โ™‚๏ธ","racing_motorcycle":"๐Ÿ๏ธ","racing_car":"๐ŸŽ๏ธ","cricket_bat_and_ball":"๐Ÿ","volleyball":"๐Ÿ","field_hockey_stick_and_ball":"๐Ÿ‘","ice_hockey_stick_and_puck":"๐Ÿ’","table_tennis_paddle_and_ball":"๐Ÿ“","snow_capped_mountain":"๐Ÿ”๏ธ","camping":"๐Ÿ•๏ธ","beach_with_umbrella":"๐Ÿ–๏ธ","building_construction":"๐Ÿ—๏ธ","house_buildings":"๐Ÿ˜๏ธ","cityscape":"๐Ÿ™๏ธ","derelict_house_building":"๐Ÿš๏ธ","classical_building":"๐Ÿ›๏ธ","desert":"๐Ÿœ๏ธ","desert_island":"๐Ÿ๏ธ","national_park":"๐Ÿž๏ธ","stadium":"๐ŸŸ๏ธ","house":"๐Ÿ ","house_with_garden":"๐Ÿก","office":"๐Ÿข","post_office":"๐Ÿฃ","european_post_office":"๐Ÿค","hospital":"๐Ÿฅ","bank":"๐Ÿฆ","atm":"๐Ÿง","hotel":"๐Ÿจ","love_hotel":"๐Ÿฉ","convenience_store":"๐Ÿช","school":"๐Ÿซ","department_store":"๐Ÿฌ","factory":"๐Ÿญ","izakaya_lantern":"๐Ÿฎ","lantern":"๐Ÿฎ","japanese_castle":"๐Ÿฏ","european_castle":"๐Ÿฐ","rainbow-flag":"๐Ÿณ๏ธโ€๐ŸŒˆ","transgender_flag":"๐Ÿณ๏ธโ€โšง๏ธ","waving_white_flag":"๐Ÿณ๏ธ","pirate_flag":"๐Ÿดโ€โ˜ ๏ธ","flag-england":"๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ","flag-scotland":"๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ","flag-wales":"๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ","waving_black_flag":"๐Ÿด","rosette":"๐Ÿต๏ธ","label":"๐Ÿท๏ธ","badminton_racquet_and_shuttlecock":"๐Ÿธ","bow_and_arrow":"๐Ÿน","amphora":"๐Ÿบ","skin-tone-2":"๐Ÿป","skin-tone-3":"๐Ÿผ","skin-tone-4":"๐Ÿฝ","skin-tone-5":"๐Ÿพ","skin-tone-6":"๐Ÿฟ","rat":"๐Ÿ€","mouse2":"๐Ÿ","ox":"๐Ÿ‚","water_buffalo":"๐Ÿƒ","cow2":"๐Ÿ„","tiger2":"๐Ÿ…","leopard":"๐Ÿ†","rabbit2":"๐Ÿ‡","black_cat":"๐Ÿˆโ€โฌ›","cat2":"๐Ÿˆ","dragon":"๐Ÿ‰","crocodile":"๐ŸŠ","whale2":"๐Ÿ‹","snail":"๐ŸŒ","snake":"๐Ÿ","racehorse":"๐ŸŽ","ram":"๐Ÿ","goat":"๐Ÿ","sheep":"๐Ÿ‘","monkey":"๐Ÿ’","rooster":"๐Ÿ“","chicken":"๐Ÿ”","service_dog":"๐Ÿ•โ€๐Ÿฆบ","dog2":"๐Ÿ•","pig2":"๐Ÿ–","boar":"๐Ÿ—","elephant":"๐Ÿ˜","octopus":"๐Ÿ™","shell":"๐Ÿš","bug":"๐Ÿ›","ant":"๐Ÿœ","bee":"๐Ÿ","honeybee":"๐Ÿ","ladybug":"๐Ÿž","lady_beetle":"๐Ÿž","fish":"๐ŸŸ","tropical_fish":"๐Ÿ ","blowfish":"๐Ÿก","turtle":"๐Ÿข","hatching_chick":"๐Ÿฃ","baby_chick":"๐Ÿค","hatched_chick":"๐Ÿฅ","bird":"๐Ÿฆ","penguin":"๐Ÿง","koala":"๐Ÿจ","poodle":"๐Ÿฉ","dromedary_camel":"๐Ÿช","camel":"๐Ÿซ","dolphin":"๐Ÿฌ","flipper":"๐Ÿฌ","mouse":"๐Ÿญ","cow":"๐Ÿฎ","tiger":"๐Ÿฏ","rabbit":"๐Ÿฐ","cat":"๐Ÿฑ","dragon_face":"๐Ÿฒ","whale":"๐Ÿณ","horse":"๐Ÿด","monkey_face":"๐Ÿต","dog":"๐Ÿถ","pig":"๐Ÿท","frog":"๐Ÿธ","hamster":"๐Ÿน","wolf":"๐Ÿบ","polar_bear":"๐Ÿปโ€โ„๏ธ","bear":"๐Ÿป","panda_face":"๐Ÿผ","pig_nose":"๐Ÿฝ","feet":"๐Ÿพ","paw_prints":"๐Ÿพ","chipmunk":"๐Ÿฟ๏ธ","eyes":"๐Ÿ‘€","eye-in-speech-bubble":"๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ","eye":"๐Ÿ‘๏ธ","ear":"๐Ÿ‘‚","nose":"๐Ÿ‘ƒ","lips":"๐Ÿ‘„","tongue":"๐Ÿ‘…","point_up_2":"๐Ÿ‘†","point_down":"๐Ÿ‘‡","point_left":"๐Ÿ‘ˆ","point_right":"๐Ÿ‘‰","facepunch":"๐Ÿ‘Š","punch":"๐Ÿ‘Š","wave":"๐Ÿ‘‹","ok_hand":"๐Ÿ‘Œ","+1":"๐Ÿ‘","thumbsup":"๐Ÿ‘","-1":"๐Ÿ‘Ž","thumbsdown":"๐Ÿ‘Ž","clap":"๐Ÿ‘","open_hands":"๐Ÿ‘","crown":"๐Ÿ‘‘","womans_hat":"๐Ÿ‘’","eyeglasses":"๐Ÿ‘“","necktie":"๐Ÿ‘”","shirt":"๐Ÿ‘•","tshirt":"๐Ÿ‘•","jeans":"๐Ÿ‘–","dress":"๐Ÿ‘—","kimono":"๐Ÿ‘˜","bikini":"๐Ÿ‘™","womans_clothes":"๐Ÿ‘š","purse":"๐Ÿ‘›","handbag":"๐Ÿ‘œ","pouch":"๐Ÿ‘","mans_shoe":"๐Ÿ‘ž","shoe":"๐Ÿ‘ž","athletic_shoe":"๐Ÿ‘Ÿ","high_heel":"๐Ÿ‘ ","sandal":"๐Ÿ‘ก","boot":"๐Ÿ‘ข","footprints":"๐Ÿ‘ฃ","bust_in_silhouette":"๐Ÿ‘ค","busts_in_silhouette":"๐Ÿ‘ฅ","boy":"๐Ÿ‘ฆ","girl":"๐Ÿ‘ง","male-farmer":"๐Ÿ‘จโ€๐ŸŒพ","male-cook":"๐Ÿ‘จโ€๐Ÿณ","man_feeding_baby":"๐Ÿ‘จโ€๐Ÿผ","male-student":"๐Ÿ‘จโ€๐ŸŽ“","male-singer":"๐Ÿ‘จโ€๐ŸŽค","male-artist":"๐Ÿ‘จโ€๐ŸŽจ","male-teacher":"๐Ÿ‘จโ€๐Ÿซ","male-factory-worker":"๐Ÿ‘จโ€๐Ÿญ","man-boy-boy":"๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ","man-boy":"๐Ÿ‘จโ€๐Ÿ‘ฆ","man-girl-boy":"๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ","man-girl-girl":"๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง","man-girl":"๐Ÿ‘จโ€๐Ÿ‘ง","man-man-boy":"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ","man-man-boy-boy":"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ","man-man-girl":"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง","man-man-girl-boy":"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ","man-man-girl-girl":"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง","man-woman-boy":"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ","family":"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ","man-woman-boy-boy":"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ","man-woman-girl":"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง","man-woman-girl-boy":"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ","man-woman-girl-girl":"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง","male-technologist":"๐Ÿ‘จโ€๐Ÿ’ป","male-office-worker":"๐Ÿ‘จโ€๐Ÿ’ผ","male-mechanic":"๐Ÿ‘จโ€๐Ÿ”ง","male-scientist":"๐Ÿ‘จโ€๐Ÿ”ฌ","male-astronaut":"๐Ÿ‘จโ€๐Ÿš€","male-firefighter":"๐Ÿ‘จโ€๐Ÿš’","man_with_probing_cane":"๐Ÿ‘จโ€๐Ÿฆฏ","red_haired_man":"๐Ÿ‘จโ€๐Ÿฆฐ","curly_haired_man":"๐Ÿ‘จโ€๐Ÿฆฑ","bald_man":"๐Ÿ‘จโ€๐Ÿฆฒ","white_haired_man":"๐Ÿ‘จโ€๐Ÿฆณ","man_in_motorized_wheelchair":"๐Ÿ‘จโ€๐Ÿฆผ","man_in_manual_wheelchair":"๐Ÿ‘จโ€๐Ÿฆฝ","male-doctor":"๐Ÿ‘จโ€โš•๏ธ","male-judge":"๐Ÿ‘จโ€โš–๏ธ","male-pilot":"๐Ÿ‘จโ€โœˆ๏ธ","man-heart-man":"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ","man-kiss-man":"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ","man":"๐Ÿ‘จ","female-farmer":"๐Ÿ‘ฉโ€๐ŸŒพ","female-cook":"๐Ÿ‘ฉโ€๐Ÿณ","woman_feeding_baby":"๐Ÿ‘ฉโ€๐Ÿผ","female-student":"๐Ÿ‘ฉโ€๐ŸŽ“","female-singer":"๐Ÿ‘ฉโ€๐ŸŽค","female-artist":"๐Ÿ‘ฉโ€๐ŸŽจ","female-teacher":"๐Ÿ‘ฉโ€๐Ÿซ","female-factory-worker":"๐Ÿ‘ฉโ€๐Ÿญ","woman-boy-boy":"๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ","woman-boy":"๐Ÿ‘ฉโ€๐Ÿ‘ฆ","woman-girl-boy":"๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ","woman-girl-girl":"๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง","woman-girl":"๐Ÿ‘ฉโ€๐Ÿ‘ง","woman-woman-boy":"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ","woman-woman-boy-boy":"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ","woman-woman-girl":"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง","woman-woman-girl-boy":"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ","woman-woman-girl-girl":"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง","female-technologist":"๐Ÿ‘ฉโ€๐Ÿ’ป","female-office-worker":"๐Ÿ‘ฉโ€๐Ÿ’ผ","female-mechanic":"๐Ÿ‘ฉโ€๐Ÿ”ง","female-scientist":"๐Ÿ‘ฉโ€๐Ÿ”ฌ","female-astronaut":"๐Ÿ‘ฉโ€๐Ÿš€","female-firefighter":"๐Ÿ‘ฉโ€๐Ÿš’","woman_with_probing_cane":"๐Ÿ‘ฉโ€๐Ÿฆฏ","red_haired_woman":"๐Ÿ‘ฉโ€๐Ÿฆฐ","curly_haired_woman":"๐Ÿ‘ฉโ€๐Ÿฆฑ","bald_woman":"๐Ÿ‘ฉโ€๐Ÿฆฒ","white_haired_woman":"๐Ÿ‘ฉโ€๐Ÿฆณ","woman_in_motorized_wheelchair":"๐Ÿ‘ฉโ€๐Ÿฆผ","woman_in_manual_wheelchair":"๐Ÿ‘ฉโ€๐Ÿฆฝ","female-doctor":"๐Ÿ‘ฉโ€โš•๏ธ","female-judge":"๐Ÿ‘ฉโ€โš–๏ธ","female-pilot":"๐Ÿ‘ฉโ€โœˆ๏ธ","woman-heart-man":"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ","woman-heart-woman":"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ","woman-kiss-man":"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ","woman-kiss-woman":"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ","woman":"๐Ÿ‘ฉ","man_and_woman_holding_hands":"๐Ÿ‘ซ","woman_and_man_holding_hands":"๐Ÿ‘ซ","couple":"๐Ÿ‘ซ","two_men_holding_hands":"๐Ÿ‘ฌ","men_holding_hands":"๐Ÿ‘ฌ","two_women_holding_hands":"๐Ÿ‘ญ","women_holding_hands":"๐Ÿ‘ญ","female-police-officer":"๐Ÿ‘ฎโ€โ™€๏ธ","male-police-officer":"๐Ÿ‘ฎโ€โ™‚๏ธ","cop":"๐Ÿ‘ฎโ€โ™‚๏ธ","women-with-bunny-ears-partying":"๐Ÿ‘ฏโ€โ™€๏ธ","woman-with-bunny-ears-partying":"๐Ÿ‘ฏโ€โ™€๏ธ","dancers":"๐Ÿ‘ฏโ€โ™€๏ธ","men-with-bunny-ears-partying":"๐Ÿ‘ฏโ€โ™‚๏ธ","man-with-bunny-ears-partying":"๐Ÿ‘ฏโ€โ™‚๏ธ","woman_with_veil":"๐Ÿ‘ฐโ€โ™€๏ธ","man_with_veil":"๐Ÿ‘ฐโ€โ™‚๏ธ","bride_with_veil":"๐Ÿ‘ฐ","blond-haired-woman":"๐Ÿ‘ฑโ€โ™€๏ธ","blond-haired-man":"๐Ÿ‘ฑโ€โ™‚๏ธ","person_with_blond_hair":"๐Ÿ‘ฑโ€โ™‚๏ธ","man_with_gua_pi_mao":"๐Ÿ‘ฒ","woman-wearing-turban":"๐Ÿ‘ณโ€โ™€๏ธ","man-wearing-turban":"๐Ÿ‘ณโ€โ™‚๏ธ","man_with_turban":"๐Ÿ‘ณโ€โ™‚๏ธ","older_man":"๐Ÿ‘ด","older_woman":"๐Ÿ‘ต","baby":"๐Ÿ‘ถ","female-construction-worker":"๐Ÿ‘ทโ€โ™€๏ธ","male-construction-worker":"๐Ÿ‘ทโ€โ™‚๏ธ","construction_worker":"๐Ÿ‘ทโ€โ™‚๏ธ","princess":"๐Ÿ‘ธ","japanese_ogre":"๐Ÿ‘น","japanese_goblin":"๐Ÿ‘บ","ghost":"๐Ÿ‘ป","angel":"๐Ÿ‘ผ","alien":"๐Ÿ‘ฝ","space_invader":"๐Ÿ‘พ","imp":"๐Ÿ‘ฟ","skull":"๐Ÿ’€","woman-tipping-hand":"๐Ÿ’โ€โ™€๏ธ","information_desk_person":"๐Ÿ’โ€โ™€๏ธ","man-tipping-hand":"๐Ÿ’โ€โ™‚๏ธ","female-guard":"๐Ÿ’‚โ€โ™€๏ธ","male-guard":"๐Ÿ’‚โ€โ™‚๏ธ","guardsman":"๐Ÿ’‚โ€โ™‚๏ธ","dancer":"๐Ÿ’ƒ","lipstick":"๐Ÿ’„","nail_care":"๐Ÿ’…","woman-getting-massage":"๐Ÿ’†โ€โ™€๏ธ","massage":"๐Ÿ’†โ€โ™€๏ธ","man-getting-massage":"๐Ÿ’†โ€โ™‚๏ธ","woman-getting-haircut":"๐Ÿ’‡โ€โ™€๏ธ","haircut":"๐Ÿ’‡โ€โ™€๏ธ","man-getting-haircut":"๐Ÿ’‡โ€โ™‚๏ธ","barber":"๐Ÿ’ˆ","syringe":"๐Ÿ’‰","pill":"๐Ÿ’Š","kiss":"๐Ÿ’‹","love_letter":"๐Ÿ’Œ","ring":"๐Ÿ’","gem":"๐Ÿ’Ž","couplekiss":"๐Ÿ’","bouquet":"๐Ÿ’","couple_with_heart":"๐Ÿ’‘","wedding":"๐Ÿ’’","heartbeat":"๐Ÿ’“","broken_heart":"๐Ÿ’”","two_hearts":"๐Ÿ’•","sparkling_heart":"๐Ÿ’–","heartpulse":"๐Ÿ’—","cupid":"๐Ÿ’˜","blue_heart":"๐Ÿ’™","green_heart":"๐Ÿ’š","yellow_heart":"๐Ÿ’›","purple_heart":"๐Ÿ’œ","gift_heart":"๐Ÿ’","revolving_hearts":"๐Ÿ’ž","heart_decoration":"๐Ÿ’Ÿ","diamond_shape_with_a_dot_inside":"๐Ÿ’ ","bulb":"๐Ÿ’ก","anger":"๐Ÿ’ข","bomb":"๐Ÿ’ฃ","zzz":"๐Ÿ’ค","boom":"๐Ÿ’ฅ","collision":"๐Ÿ’ฅ","sweat_drops":"๐Ÿ’ฆ","droplet":"๐Ÿ’ง","dash":"๐Ÿ’จ","hankey":"๐Ÿ’ฉ","poop":"๐Ÿ’ฉ","shit":"๐Ÿ’ฉ","muscle":"๐Ÿ’ช","dizzy":"๐Ÿ’ซ","speech_balloon":"๐Ÿ’ฌ","thought_balloon":"๐Ÿ’ญ","white_flower":"๐Ÿ’ฎ","moneybag":"๐Ÿ’ฐ","currency_exchange":"๐Ÿ’ฑ","heavy_dollar_sign":"๐Ÿ’ฒ","credit_card":"๐Ÿ’ณ","yen":"๐Ÿ’ด","dollar":"๐Ÿ’ต","euro":"๐Ÿ’ถ","pound":"๐Ÿ’ท","money_with_wings":"๐Ÿ’ธ","chart":"๐Ÿ’น","seat":"๐Ÿ’บ","computer":"๐Ÿ’ป","briefcase":"๐Ÿ’ผ","minidisc":"๐Ÿ’ฝ","floppy_disk":"๐Ÿ’พ","cd":"๐Ÿ’ฟ","dvd":"๐Ÿ“€","file_folder":"๐Ÿ“","open_file_folder":"๐Ÿ“‚","page_with_curl":"๐Ÿ“ƒ","page_facing_up":"๐Ÿ“„","date":"๐Ÿ“…","calendar":"๐Ÿ“†","card_index":"๐Ÿ“‡","chart_with_upwards_trend":"๐Ÿ“ˆ","chart_with_downwards_trend":"๐Ÿ“‰","bar_chart":"๐Ÿ“Š","clipboard":"๐Ÿ“‹","pushpin":"๐Ÿ“Œ","round_pushpin":"๐Ÿ“","paperclip":"๐Ÿ“Ž","straight_ruler":"๐Ÿ“","triangular_ruler":"๐Ÿ“","bookmark_tabs":"๐Ÿ“‘","ledger":"๐Ÿ“’","notebook":"๐Ÿ““","notebook_with_decorative_cover":"๐Ÿ“”","closed_book":"๐Ÿ“•","book":"๐Ÿ“–","open_book":"๐Ÿ“–","green_book":"๐Ÿ“—","blue_book":"๐Ÿ“˜","orange_book":"๐Ÿ“™","books":"๐Ÿ“š","name_badge":"๐Ÿ“›","scroll":"๐Ÿ“œ","memo":"๐Ÿ“","pencil":"๐Ÿ“","telephone_receiver":"๐Ÿ“ž","pager":"๐Ÿ“Ÿ","fax":"๐Ÿ“ ","satellite_antenna":"๐Ÿ“ก","loudspeaker":"๐Ÿ“ข","mega":"๐Ÿ“ฃ","outbox_tray":"๐Ÿ“ค","inbox_tray":"๐Ÿ“ฅ","package":"๐Ÿ“ฆ","e-mail":"๐Ÿ“ง","incoming_envelope":"๐Ÿ“จ","envelope_with_arrow":"๐Ÿ“ฉ","mailbox_closed":"๐Ÿ“ช","mailbox":"๐Ÿ“ซ","mailbox_with_mail":"๐Ÿ“ฌ","mailbox_with_no_mail":"๐Ÿ“ญ","postbox":"๐Ÿ“ฎ","postal_horn":"๐Ÿ“ฏ","newspaper":"๐Ÿ“ฐ","iphone":"๐Ÿ“ฑ","calling":"๐Ÿ“ฒ","vibration_mode":"๐Ÿ“ณ","mobile_phone_off":"๐Ÿ“ด","no_mobile_phones":"๐Ÿ“ต","signal_strength":"๐Ÿ“ถ","camera":"๐Ÿ“ท","camera_with_flash":"๐Ÿ“ธ","video_camera":"๐Ÿ“น","tv":"๐Ÿ“บ","radio":"๐Ÿ“ป","vhs":"๐Ÿ“ผ","film_projector":"๐Ÿ“ฝ๏ธ","prayer_beads":"๐Ÿ“ฟ","twisted_rightwards_arrows":"๐Ÿ”€","repeat":"๐Ÿ”","repeat_one":"๐Ÿ”‚","arrows_clockwise":"๐Ÿ”ƒ","arrows_counterclockwise":"๐Ÿ”„","low_brightness":"๐Ÿ”…","high_brightness":"๐Ÿ”†","mute":"๐Ÿ”‡","speaker":"๐Ÿ”ˆ","sound":"๐Ÿ”‰","loud_sound":"๐Ÿ”Š","battery":"๐Ÿ”‹","electric_plug":"๐Ÿ”Œ","mag":"๐Ÿ”","mag_right":"๐Ÿ”Ž","lock_with_ink_pen":"๐Ÿ”","closed_lock_with_key":"๐Ÿ”","key":"๐Ÿ”‘","lock":"๐Ÿ”’","unlock":"๐Ÿ”“","bell":"๐Ÿ””","no_bell":"๐Ÿ”•","bookmark":"๐Ÿ”–","link":"๐Ÿ”—","radio_button":"๐Ÿ”˜","back":"๐Ÿ”™","end":"๐Ÿ”š","on":"๐Ÿ”›","soon":"๐Ÿ”œ","top":"๐Ÿ”","underage":"๐Ÿ”ž","keycap_ten":"๐Ÿ”Ÿ","capital_abcd":"๐Ÿ” ","abcd":"๐Ÿ”ก","symbols":"๐Ÿ”ฃ","abc":"๐Ÿ”ค","fire":"๐Ÿ”ฅ","flashlight":"๐Ÿ”ฆ","wrench":"๐Ÿ”ง","hammer":"๐Ÿ”จ","nut_and_bolt":"๐Ÿ”ฉ","hocho":"๐Ÿ”ช","knife":"๐Ÿ”ช","gun":"๐Ÿ”ซ","microscope":"๐Ÿ”ฌ","telescope":"๐Ÿ”ญ","crystal_ball":"๐Ÿ”ฎ","six_pointed_star":"๐Ÿ”ฏ","beginner":"๐Ÿ”ฐ","trident":"๐Ÿ”ฑ","black_square_button":"๐Ÿ”ฒ","white_square_button":"๐Ÿ”ณ","red_circle":"๐Ÿ”ด","large_blue_circle":"๐Ÿ”ต","large_orange_diamond":"๐Ÿ”ถ","large_blue_diamond":"๐Ÿ”ท","small_orange_diamond":"๐Ÿ”ธ","small_blue_diamond":"๐Ÿ”น","small_red_triangle":"๐Ÿ”บ","small_red_triangle_down":"๐Ÿ”ป","arrow_up_small":"๐Ÿ”ผ","arrow_down_small":"๐Ÿ”ฝ","om_symbol":"๐Ÿ•‰๏ธ","dove_of_peace":"๐Ÿ•Š๏ธ","kaaba":"๐Ÿ•‹","mosque":"๐Ÿ•Œ","synagogue":"๐Ÿ•","menorah_with_nine_branches":"๐Ÿ•Ž","clock1":"๐Ÿ•","clock2":"๐Ÿ•‘","clock3":"๐Ÿ•’","clock4":"๐Ÿ•“","clock5":"๐Ÿ•”","clock6":"๐Ÿ••","clock7":"๐Ÿ•–","clock8":"๐Ÿ•—","clock9":"๐Ÿ•˜","clock10":"๐Ÿ•™","clock11":"๐Ÿ•š","clock12":"๐Ÿ•›","clock130":"๐Ÿ•œ","clock230":"๐Ÿ•","clock330":"๐Ÿ•ž","clock430":"๐Ÿ•Ÿ","clock530":"๐Ÿ• ","clock630":"๐Ÿ•ก","clock730":"๐Ÿ•ข","clock830":"๐Ÿ•ฃ","clock930":"๐Ÿ•ค","clock1030":"๐Ÿ•ฅ","clock1130":"๐Ÿ•ฆ","clock1230":"๐Ÿ•ง","candle":"๐Ÿ•ฏ๏ธ","mantelpiece_clock":"๐Ÿ•ฐ๏ธ","hole":"๐Ÿ•ณ๏ธ","man_in_business_suit_levitating":"๐Ÿ•ด๏ธ","female-detective":"๐Ÿ•ต๏ธโ€โ™€๏ธ","male-detective":"๐Ÿ•ต๏ธโ€โ™‚๏ธ","sleuth_or_spy":"๐Ÿ•ต๏ธโ€โ™‚๏ธ","dark_sunglasses":"๐Ÿ•ถ๏ธ","spider":"๐Ÿ•ท๏ธ","spider_web":"๐Ÿ•ธ๏ธ","joystick":"๐Ÿ•น๏ธ","man_dancing":"๐Ÿ•บ","linked_paperclips":"๐Ÿ–‡๏ธ","lower_left_ballpoint_pen":"๐Ÿ–Š๏ธ","lower_left_fountain_pen":"๐Ÿ–‹๏ธ","lower_left_paintbrush":"๐Ÿ–Œ๏ธ","lower_left_crayon":"๐Ÿ–๏ธ","raised_hand_with_fingers_splayed":"๐Ÿ–๏ธ","middle_finger":"๐Ÿ–•","reversed_hand_with_middle_finger_extended":"๐Ÿ–•","spock-hand":"๐Ÿ––","black_heart":"๐Ÿ–ค","desktop_computer":"๐Ÿ–ฅ๏ธ","printer":"๐Ÿ–จ๏ธ","three_button_mouse":"๐Ÿ–ฑ๏ธ","trackball":"๐Ÿ–ฒ๏ธ","frame_with_picture":"๐Ÿ–ผ๏ธ","card_index_dividers":"๐Ÿ—‚๏ธ","card_file_box":"๐Ÿ—ƒ๏ธ","file_cabinet":"๐Ÿ—„๏ธ","wastebasket":"๐Ÿ—‘๏ธ","spiral_note_pad":"๐Ÿ—’๏ธ","spiral_calendar_pad":"๐Ÿ—“๏ธ","compression":"๐Ÿ—œ๏ธ","old_key":"๐Ÿ—๏ธ","rolled_up_newspaper":"๐Ÿ—ž๏ธ","dagger_knife":"๐Ÿ—ก๏ธ","speaking_head_in_silhouette":"๐Ÿ—ฃ๏ธ","left_speech_bubble":"๐Ÿ—จ๏ธ","right_anger_bubble":"๐Ÿ—ฏ๏ธ","ballot_box_with_ballot":"๐Ÿ—ณ๏ธ","world_map":"๐Ÿ—บ๏ธ","mount_fuji":"๐Ÿ—ป","tokyo_tower":"๐Ÿ—ผ","statue_of_liberty":"๐Ÿ—ฝ","japan":"๐Ÿ—พ","moyai":"๐Ÿ—ฟ","grinning":"๐Ÿ˜€","grin":"๐Ÿ˜","joy":"๐Ÿ˜‚","smiley":"๐Ÿ˜ƒ","smile":"๐Ÿ˜„","sweat_smile":"๐Ÿ˜…","laughing":"๐Ÿ˜†","satisfied":"๐Ÿ˜†","innocent":"๐Ÿ˜‡","smiling_imp":"๐Ÿ˜ˆ","wink":"๐Ÿ˜‰","blush":"๐Ÿ˜Š","yum":"๐Ÿ˜‹","relieved":"๐Ÿ˜Œ","heart_eyes":"๐Ÿ˜","sunglasses":"๐Ÿ˜Ž","smirk":"๐Ÿ˜","neutral_face":"๐Ÿ˜","expressionless":"๐Ÿ˜‘","unamused":"๐Ÿ˜’","sweat":"๐Ÿ˜“","pensive":"๐Ÿ˜”","confused":"๐Ÿ˜•","confounded":"๐Ÿ˜–","kissing":"๐Ÿ˜—","kissing_heart":"๐Ÿ˜˜","kissing_smiling_eyes":"๐Ÿ˜™","kissing_closed_eyes":"๐Ÿ˜š","stuck_out_tongue":"๐Ÿ˜›","stuck_out_tongue_winking_eye":"๐Ÿ˜œ","stuck_out_tongue_closed_eyes":"๐Ÿ˜","disappointed":"๐Ÿ˜ž","worried":"๐Ÿ˜Ÿ","angry":"๐Ÿ˜ ","rage":"๐Ÿ˜ก","cry":"๐Ÿ˜ข","persevere":"๐Ÿ˜ฃ","triumph":"๐Ÿ˜ค","disappointed_relieved":"๐Ÿ˜ฅ","frowning":"๐Ÿ˜ฆ","anguished":"๐Ÿ˜ง","fearful":"๐Ÿ˜จ","weary":"๐Ÿ˜ฉ","sleepy":"๐Ÿ˜ช","tired_face":"๐Ÿ˜ซ","grimacing":"๐Ÿ˜ฌ","sob":"๐Ÿ˜ญ","face_exhaling":"๐Ÿ˜ฎโ€๐Ÿ’จ","open_mouth":"๐Ÿ˜ฎ","hushed":"๐Ÿ˜ฏ","cold_sweat":"๐Ÿ˜ฐ","scream":"๐Ÿ˜ฑ","astonished":"๐Ÿ˜ฒ","flushed":"๐Ÿ˜ณ","sleeping":"๐Ÿ˜ด","face_with_spiral_eyes":"๐Ÿ˜ตโ€๐Ÿ’ซ","dizzy_face":"๐Ÿ˜ต","face_in_clouds":"๐Ÿ˜ถโ€๐ŸŒซ๏ธ","no_mouth":"๐Ÿ˜ถ","mask":"๐Ÿ˜ท","smile_cat":"๐Ÿ˜ธ","joy_cat":"๐Ÿ˜น","smiley_cat":"๐Ÿ˜บ","heart_eyes_cat":"๐Ÿ˜ป","smirk_cat":"๐Ÿ˜ผ","kissing_cat":"๐Ÿ˜ฝ","pouting_cat":"๐Ÿ˜พ","crying_cat_face":"๐Ÿ˜ฟ","scream_cat":"๐Ÿ™€","slightly_frowning_face":"๐Ÿ™","slightly_smiling_face":"๐Ÿ™‚","upside_down_face":"๐Ÿ™ƒ","face_with_rolling_eyes":"๐Ÿ™„","woman-gesturing-no":"๐Ÿ™…โ€โ™€๏ธ","no_good":"๐Ÿ™…โ€โ™€๏ธ","man-gesturing-no":"๐Ÿ™…โ€โ™‚๏ธ","woman-gesturing-ok":"๐Ÿ™†โ€โ™€๏ธ","ok_woman":"๐Ÿ™†โ€โ™€๏ธ","man-gesturing-ok":"๐Ÿ™†โ€โ™‚๏ธ","woman-bowing":"๐Ÿ™‡โ€โ™€๏ธ","man-bowing":"๐Ÿ™‡โ€โ™‚๏ธ","bow":"๐Ÿ™‡โ€โ™‚๏ธ","see_no_evil":"๐Ÿ™ˆ","hear_no_evil":"๐Ÿ™‰","speak_no_evil":"๐Ÿ™Š","woman-raising-hand":"๐Ÿ™‹โ€โ™€๏ธ","raising_hand":"๐Ÿ™‹โ€โ™€๏ธ","man-raising-hand":"๐Ÿ™‹โ€โ™‚๏ธ","raised_hands":"๐Ÿ™Œ","woman-frowning":"๐Ÿ™โ€โ™€๏ธ","person_frowning":"๐Ÿ™โ€โ™€๏ธ","man-frowning":"๐Ÿ™โ€โ™‚๏ธ","woman-pouting":"๐Ÿ™Žโ€โ™€๏ธ","person_with_pouting_face":"๐Ÿ™Žโ€โ™€๏ธ","man-pouting":"๐Ÿ™Žโ€โ™‚๏ธ","pray":"๐Ÿ™","rocket":"๐Ÿš€","helicopter":"๐Ÿš","steam_locomotive":"๐Ÿš‚","railway_car":"๐Ÿšƒ","bullettrain_side":"๐Ÿš„","bullettrain_front":"๐Ÿš…","train2":"๐Ÿš†","metro":"๐Ÿš‡","light_rail":"๐Ÿšˆ","station":"๐Ÿš‰","tram":"๐ŸšŠ","train":"๐Ÿš‹","bus":"๐ŸšŒ","oncoming_bus":"๐Ÿš","trolleybus":"๐ŸšŽ","busstop":"๐Ÿš","minibus":"๐Ÿš","ambulance":"๐Ÿš‘","fire_engine":"๐Ÿš’","police_car":"๐Ÿš“","oncoming_police_car":"๐Ÿš”","taxi":"๐Ÿš•","oncoming_taxi":"๐Ÿš–","car":"๐Ÿš—","red_car":"๐Ÿš—","oncoming_automobile":"๐Ÿš˜","blue_car":"๐Ÿš™","truck":"๐Ÿšš","articulated_lorry":"๐Ÿš›","tractor":"๐Ÿšœ","monorail":"๐Ÿš","mountain_railway":"๐Ÿšž","suspension_railway":"๐ŸšŸ","mountain_cableway":"๐Ÿš ","aerial_tramway":"๐Ÿšก","ship":"๐Ÿšข","woman-rowing-boat":"๐Ÿšฃโ€โ™€๏ธ","man-rowing-boat":"๐Ÿšฃโ€โ™‚๏ธ","rowboat":"๐Ÿšฃโ€โ™‚๏ธ","speedboat":"๐Ÿšค","traffic_light":"๐Ÿšฅ","vertical_traffic_light":"๐Ÿšฆ","construction":"๐Ÿšง","rotating_light":"๐Ÿšจ","triangular_flag_on_post":"๐Ÿšฉ","door":"๐Ÿšช","no_entry_sign":"๐Ÿšซ","smoking":"๐Ÿšฌ","no_smoking":"๐Ÿšญ","put_litter_in_its_place":"๐Ÿšฎ","do_not_litter":"๐Ÿšฏ","potable_water":"๐Ÿšฐ","non-potable_water":"๐Ÿšฑ","bike":"๐Ÿšฒ","no_bicycles":"๐Ÿšณ","woman-biking":"๐Ÿšดโ€โ™€๏ธ","man-biking":"๐Ÿšดโ€โ™‚๏ธ","bicyclist":"๐Ÿšดโ€โ™‚๏ธ","woman-mountain-biking":"๐Ÿšตโ€โ™€๏ธ","man-mountain-biking":"๐Ÿšตโ€โ™‚๏ธ","mountain_bicyclist":"๐Ÿšตโ€โ™‚๏ธ","woman-walking":"๐Ÿšถโ€โ™€๏ธ","man-walking":"๐Ÿšถโ€โ™‚๏ธ","walking":"๐Ÿšถโ€โ™‚๏ธ","no_pedestrians":"๐Ÿšท","children_crossing":"๐Ÿšธ","mens":"๐Ÿšน","womens":"๐Ÿšบ","restroom":"๐Ÿšป","baby_symbol":"๐Ÿšผ","toilet":"๐Ÿšฝ","wc":"๐Ÿšพ","shower":"๐Ÿšฟ","bath":"๐Ÿ›€","bathtub":"๐Ÿ›","passport_control":"๐Ÿ›‚","customs":"๐Ÿ›ƒ","baggage_claim":"๐Ÿ›„","left_luggage":"๐Ÿ›…","couch_and_lamp":"๐Ÿ›‹๏ธ","sleeping_accommodation":"๐Ÿ›Œ","shopping_bags":"๐Ÿ›๏ธ","bellhop_bell":"๐Ÿ›Ž๏ธ","bed":"๐Ÿ›๏ธ","place_of_worship":"๐Ÿ›","octagonal_sign":"๐Ÿ›‘","shopping_trolley":"๐Ÿ›’","hindu_temple":"๐Ÿ›•","hut":"๐Ÿ›–","elevator":"๐Ÿ›—","hammer_and_wrench":"๐Ÿ› ๏ธ","shield":"๐Ÿ›ก๏ธ","oil_drum":"๐Ÿ›ข๏ธ","motorway":"๐Ÿ›ฃ๏ธ","railway_track":"๐Ÿ›ค๏ธ","motor_boat":"๐Ÿ›ฅ๏ธ","small_airplane":"๐Ÿ›ฉ๏ธ","airplane_departure":"๐Ÿ›ซ","airplane_arriving":"๐Ÿ›ฌ","satellite":"๐Ÿ›ฐ๏ธ","passenger_ship":"๐Ÿ›ณ๏ธ","scooter":"๐Ÿ›ด","motor_scooter":"๐Ÿ›ต","canoe":"๐Ÿ›ถ","sled":"๐Ÿ›ท","flying_saucer":"๐Ÿ›ธ","skateboard":"๐Ÿ›น","auto_rickshaw":"๐Ÿ›บ","pickup_truck":"๐Ÿ›ป","roller_skate":"๐Ÿ›ผ","large_orange_circle":"๐ŸŸ ","large_yellow_circle":"๐ŸŸก","large_green_circle":"๐ŸŸข","large_purple_circle":"๐ŸŸฃ","large_brown_circle":"๐ŸŸค","large_red_square":"๐ŸŸฅ","large_blue_square":"๐ŸŸฆ","large_orange_square":"๐ŸŸง","large_yellow_square":"๐ŸŸจ","large_green_square":"๐ŸŸฉ","large_purple_square":"๐ŸŸช","large_brown_square":"๐ŸŸซ","pinched_fingers":"๐ŸคŒ","white_heart":"๐Ÿค","brown_heart":"๐ŸคŽ","pinching_hand":"๐Ÿค","zipper_mouth_face":"๐Ÿค","money_mouth_face":"๐Ÿค‘","face_with_thermometer":"๐Ÿค’","nerd_face":"๐Ÿค“","thinking_face":"๐Ÿค”","face_with_head_bandage":"๐Ÿค•","robot_face":"๐Ÿค–","hugging_face":"๐Ÿค—","the_horns":"๐Ÿค˜","sign_of_the_horns":"๐Ÿค˜","call_me_hand":"๐Ÿค™","raised_back_of_hand":"๐Ÿคš","left-facing_fist":"๐Ÿค›","right-facing_fist":"๐Ÿคœ","handshake":"๐Ÿค","crossed_fingers":"๐Ÿคž","hand_with_index_and_middle_fingers_crossed":"๐Ÿคž","i_love_you_hand_sign":"๐ŸคŸ","face_with_cowboy_hat":"๐Ÿค ","clown_face":"๐Ÿคก","nauseated_face":"๐Ÿคข","rolling_on_the_floor_laughing":"๐Ÿคฃ","drooling_face":"๐Ÿคค","lying_face":"๐Ÿคฅ","woman-facepalming":"๐Ÿคฆโ€โ™€๏ธ","man-facepalming":"๐Ÿคฆโ€โ™‚๏ธ","face_palm":"๐Ÿคฆ","sneezing_face":"๐Ÿคง","face_with_raised_eyebrow":"๐Ÿคจ","face_with_one_eyebrow_raised":"๐Ÿคจ","star-struck":"๐Ÿคฉ","grinning_face_with_star_eyes":"๐Ÿคฉ","zany_face":"๐Ÿคช","grinning_face_with_one_large_and_one_small_eye":"๐Ÿคช","shushing_face":"๐Ÿคซ","face_with_finger_covering_closed_lips":"๐Ÿคซ","face_with_symbols_on_mouth":"๐Ÿคฌ","serious_face_with_symbols_covering_mouth":"๐Ÿคฌ","face_with_hand_over_mouth":"๐Ÿคญ","smiling_face_with_smiling_eyes_and_hand_covering_mouth":"๐Ÿคญ","face_vomiting":"๐Ÿคฎ","face_with_open_mouth_vomiting":"๐Ÿคฎ","exploding_head":"๐Ÿคฏ","shocked_face_with_exploding_head":"๐Ÿคฏ","pregnant_woman":"๐Ÿคฐ","breast-feeding":"๐Ÿคฑ","palms_up_together":"๐Ÿคฒ","selfie":"๐Ÿคณ","prince":"๐Ÿคด","woman_in_tuxedo":"๐Ÿคตโ€โ™€๏ธ","man_in_tuxedo":"๐Ÿคตโ€โ™‚๏ธ","person_in_tuxedo":"๐Ÿคต","mrs_claus":"๐Ÿคถ","mother_christmas":"๐Ÿคถ","woman-shrugging":"๐Ÿคทโ€โ™€๏ธ","man-shrugging":"๐Ÿคทโ€โ™‚๏ธ","shrug":"๐Ÿคท","woman-cartwheeling":"๐Ÿคธโ€โ™€๏ธ","man-cartwheeling":"๐Ÿคธโ€โ™‚๏ธ","person_doing_cartwheel":"๐Ÿคธ","woman-juggling":"๐Ÿคนโ€โ™€๏ธ","man-juggling":"๐Ÿคนโ€โ™‚๏ธ","juggling":"๐Ÿคน","fencer":"๐Ÿคบ","woman-wrestling":"๐Ÿคผโ€โ™€๏ธ","man-wrestling":"๐Ÿคผโ€โ™‚๏ธ","wrestlers":"๐Ÿคผ","woman-playing-water-polo":"๐Ÿคฝโ€โ™€๏ธ","man-playing-water-polo":"๐Ÿคฝโ€โ™‚๏ธ","water_polo":"๐Ÿคฝ","woman-playing-handball":"๐Ÿคพโ€โ™€๏ธ","man-playing-handball":"๐Ÿคพโ€โ™‚๏ธ","handball":"๐Ÿคพ","diving_mask":"๐Ÿคฟ","wilted_flower":"๐Ÿฅ€","drum_with_drumsticks":"๐Ÿฅ","clinking_glasses":"๐Ÿฅ‚","tumbler_glass":"๐Ÿฅƒ","spoon":"๐Ÿฅ„","goal_net":"๐Ÿฅ…","first_place_medal":"๐Ÿฅ‡","second_place_medal":"๐Ÿฅˆ","third_place_medal":"๐Ÿฅ‰","boxing_glove":"๐ŸฅŠ","martial_arts_uniform":"๐Ÿฅ‹","curling_stone":"๐ŸฅŒ","lacrosse":"๐Ÿฅ","softball":"๐ŸฅŽ","flying_disc":"๐Ÿฅ","croissant":"๐Ÿฅ","avocado":"๐Ÿฅ‘","cucumber":"๐Ÿฅ’","bacon":"๐Ÿฅ“","potato":"๐Ÿฅ”","carrot":"๐Ÿฅ•","baguette_bread":"๐Ÿฅ–","green_salad":"๐Ÿฅ—","shallow_pan_of_food":"๐Ÿฅ˜","stuffed_flatbread":"๐Ÿฅ™","egg":"๐Ÿฅš","glass_of_milk":"๐Ÿฅ›","peanuts":"๐Ÿฅœ","kiwifruit":"๐Ÿฅ","pancakes":"๐Ÿฅž","dumpling":"๐ŸฅŸ","fortune_cookie":"๐Ÿฅ ","takeout_box":"๐Ÿฅก","chopsticks":"๐Ÿฅข","bowl_with_spoon":"๐Ÿฅฃ","cup_with_straw":"๐Ÿฅค","coconut":"๐Ÿฅฅ","broccoli":"๐Ÿฅฆ","pie":"๐Ÿฅง","pretzel":"๐Ÿฅจ","cut_of_meat":"๐Ÿฅฉ","sandwich":"๐Ÿฅช","canned_food":"๐Ÿฅซ","leafy_green":"๐Ÿฅฌ","mango":"๐Ÿฅญ","moon_cake":"๐Ÿฅฎ","bagel":"๐Ÿฅฏ","smiling_face_with_3_hearts":"๐Ÿฅฐ","yawning_face":"๐Ÿฅฑ","smiling_face_with_tear":"๐Ÿฅฒ","partying_face":"๐Ÿฅณ","woozy_face":"๐Ÿฅด","hot_face":"๐Ÿฅต","cold_face":"๐Ÿฅถ","ninja":"๐Ÿฅท","disguised_face":"๐Ÿฅธ","pleading_face":"๐Ÿฅบ","sari":"๐Ÿฅป","lab_coat":"๐Ÿฅผ","goggles":"๐Ÿฅฝ","hiking_boot":"๐Ÿฅพ","womans_flat_shoe":"๐Ÿฅฟ","crab":"๐Ÿฆ€","lion_face":"๐Ÿฆ","scorpion":"๐Ÿฆ‚","turkey":"๐Ÿฆƒ","unicorn_face":"๐Ÿฆ„","eagle":"๐Ÿฆ…","duck":"๐Ÿฆ†","bat":"๐Ÿฆ‡","shark":"๐Ÿฆˆ","owl":"๐Ÿฆ‰","fox_face":"๐ŸฆŠ","butterfly":"๐Ÿฆ‹","deer":"๐ŸฆŒ","gorilla":"๐Ÿฆ","lizard":"๐ŸฆŽ","rhinoceros":"๐Ÿฆ","shrimp":"๐Ÿฆ","squid":"๐Ÿฆ‘","giraffe_face":"๐Ÿฆ’","zebra_face":"๐Ÿฆ“","hedgehog":"๐Ÿฆ”","sauropod":"๐Ÿฆ•","t-rex":"๐Ÿฆ–","cricket":"๐Ÿฆ—","kangaroo":"๐Ÿฆ˜","llama":"๐Ÿฆ™","peacock":"๐Ÿฆš","hippopotamus":"๐Ÿฆ›","parrot":"๐Ÿฆœ","raccoon":"๐Ÿฆ","lobster":"๐Ÿฆž","mosquito":"๐ŸฆŸ","microbe":"๐Ÿฆ ","badger":"๐Ÿฆก","swan":"๐Ÿฆข","mammoth":"๐Ÿฆฃ","dodo":"๐Ÿฆค","sloth":"๐Ÿฆฅ","otter":"๐Ÿฆฆ","orangutan":"๐Ÿฆง","skunk":"๐Ÿฆจ","flamingo":"๐Ÿฆฉ","oyster":"๐Ÿฆช","beaver":"๐Ÿฆซ","bison":"๐Ÿฆฌ","seal":"๐Ÿฆญ","guide_dog":"๐Ÿฆฎ","probing_cane":"๐Ÿฆฏ","bone":"๐Ÿฆด","leg":"๐Ÿฆต","foot":"๐Ÿฆถ","tooth":"๐Ÿฆท","female_superhero":"๐Ÿฆธโ€โ™€๏ธ","male_superhero":"๐Ÿฆธโ€โ™‚๏ธ","superhero":"๐Ÿฆธ","female_supervillain":"๐Ÿฆนโ€โ™€๏ธ","male_supervillain":"๐Ÿฆนโ€โ™‚๏ธ","supervillain":"๐Ÿฆน","safety_vest":"๐Ÿฆบ","ear_with_hearing_aid":"๐Ÿฆป","motorized_wheelchair":"๐Ÿฆผ","manual_wheelchair":"๐Ÿฆฝ","mechanical_arm":"๐Ÿฆพ","mechanical_leg":"๐Ÿฆฟ","cheese_wedge":"๐Ÿง€","cupcake":"๐Ÿง","salt":"๐Ÿง‚","beverage_box":"๐Ÿงƒ","garlic":"๐Ÿง„","onion":"๐Ÿง…","falafel":"๐Ÿง†","waffle":"๐Ÿง‡","butter":"๐Ÿงˆ","mate_drink":"๐Ÿง‰","ice_cube":"๐ŸงŠ","bubble_tea":"๐Ÿง‹","woman_standing":"๐Ÿงโ€โ™€๏ธ","man_standing":"๐Ÿงโ€โ™‚๏ธ","standing_person":"๐Ÿง","woman_kneeling":"๐ŸงŽโ€โ™€๏ธ","man_kneeling":"๐ŸงŽโ€โ™‚๏ธ","kneeling_person":"๐ŸงŽ","deaf_woman":"๐Ÿงโ€โ™€๏ธ","deaf_man":"๐Ÿงโ€โ™‚๏ธ","deaf_person":"๐Ÿง","face_with_monocle":"๐Ÿง","farmer":"๐Ÿง‘โ€๐ŸŒพ","cook":"๐Ÿง‘โ€๐Ÿณ","person_feeding_baby":"๐Ÿง‘โ€๐Ÿผ","mx_claus":"๐Ÿง‘โ€๐ŸŽ„","student":"๐Ÿง‘โ€๐ŸŽ“","singer":"๐Ÿง‘โ€๐ŸŽค","artist":"๐Ÿง‘โ€๐ŸŽจ","teacher":"๐Ÿง‘โ€๐Ÿซ","factory_worker":"๐Ÿง‘โ€๐Ÿญ","technologist":"๐Ÿง‘โ€๐Ÿ’ป","office_worker":"๐Ÿง‘โ€๐Ÿ’ผ","mechanic":"๐Ÿง‘โ€๐Ÿ”ง","scientist":"๐Ÿง‘โ€๐Ÿ”ฌ","astronaut":"๐Ÿง‘โ€๐Ÿš€","firefighter":"๐Ÿง‘โ€๐Ÿš’","people_holding_hands":"๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘","person_with_probing_cane":"๐Ÿง‘โ€๐Ÿฆฏ","red_haired_person":"๐Ÿง‘โ€๐Ÿฆฐ","curly_haired_person":"๐Ÿง‘โ€๐Ÿฆฑ","bald_person":"๐Ÿง‘โ€๐Ÿฆฒ","white_haired_person":"๐Ÿง‘โ€๐Ÿฆณ","person_in_motorized_wheelchair":"๐Ÿง‘โ€๐Ÿฆผ","person_in_manual_wheelchair":"๐Ÿง‘โ€๐Ÿฆฝ","health_worker":"๐Ÿง‘โ€โš•๏ธ","judge":"๐Ÿง‘โ€โš–๏ธ","pilot":"๐Ÿง‘โ€โœˆ๏ธ","adult":"๐Ÿง‘","child":"๐Ÿง’","older_adult":"๐Ÿง“","woman_with_beard":"๐Ÿง”โ€โ™€๏ธ","man_with_beard":"๐Ÿง”โ€โ™‚๏ธ","bearded_person":"๐Ÿง”","person_with_headscarf":"๐Ÿง•","woman_in_steamy_room":"๐Ÿง–โ€โ™€๏ธ","man_in_steamy_room":"๐Ÿง–โ€โ™‚๏ธ","person_in_steamy_room":"๐Ÿง–โ€โ™‚๏ธ","woman_climbing":"๐Ÿง—โ€โ™€๏ธ","person_climbing":"๐Ÿง—โ€โ™€๏ธ","man_climbing":"๐Ÿง—โ€โ™‚๏ธ","woman_in_lotus_position":"๐Ÿง˜โ€โ™€๏ธ","person_in_lotus_position":"๐Ÿง˜โ€โ™€๏ธ","man_in_lotus_position":"๐Ÿง˜โ€โ™‚๏ธ","female_mage":"๐Ÿง™โ€โ™€๏ธ","mage":"๐Ÿง™โ€โ™€๏ธ","male_mage":"๐Ÿง™โ€โ™‚๏ธ","female_fairy":"๐Ÿงšโ€โ™€๏ธ","fairy":"๐Ÿงšโ€โ™€๏ธ","male_fairy":"๐Ÿงšโ€โ™‚๏ธ","female_vampire":"๐Ÿง›โ€โ™€๏ธ","vampire":"๐Ÿง›โ€โ™€๏ธ","male_vampire":"๐Ÿง›โ€โ™‚๏ธ","mermaid":"๐Ÿงœโ€โ™€๏ธ","merman":"๐Ÿงœโ€โ™‚๏ธ","merperson":"๐Ÿงœโ€โ™‚๏ธ","female_elf":"๐Ÿงโ€โ™€๏ธ","male_elf":"๐Ÿงโ€โ™‚๏ธ","elf":"๐Ÿงโ€โ™‚๏ธ","female_genie":"๐Ÿงžโ€โ™€๏ธ","male_genie":"๐Ÿงžโ€โ™‚๏ธ","genie":"๐Ÿงžโ€โ™‚๏ธ","female_zombie":"๐ŸงŸโ€โ™€๏ธ","male_zombie":"๐ŸงŸโ€โ™‚๏ธ","zombie":"๐ŸงŸโ€โ™‚๏ธ","brain":"๐Ÿง ","orange_heart":"๐Ÿงก","billed_cap":"๐Ÿงข","scarf":"๐Ÿงฃ","gloves":"๐Ÿงค","coat":"๐Ÿงฅ","socks":"๐Ÿงฆ","red_envelope":"๐Ÿงง","firecracker":"๐Ÿงจ","jigsaw":"๐Ÿงฉ","test_tube":"๐Ÿงช","petri_dish":"๐Ÿงซ","dna":"๐Ÿงฌ","compass":"๐Ÿงญ","abacus":"๐Ÿงฎ","fire_extinguisher":"๐Ÿงฏ","toolbox":"๐Ÿงฐ","bricks":"๐Ÿงฑ","magnet":"๐Ÿงฒ","luggage":"๐Ÿงณ","lotion_bottle":"๐Ÿงด","thread":"๐Ÿงต","yarn":"๐Ÿงถ","safety_pin":"๐Ÿงท","teddy_bear":"๐Ÿงธ","broom":"๐Ÿงน","basket":"๐Ÿงบ","roll_of_paper":"๐Ÿงป","soap":"๐Ÿงผ","sponge":"๐Ÿงฝ","receipt":"๐Ÿงพ","nazar_amulet":"๐Ÿงฟ","ballet_shoes":"๐Ÿฉฐ","one-piece_swimsuit":"๐Ÿฉฑ","briefs":"๐Ÿฉฒ","shorts":"๐Ÿฉณ","thong_sandal":"๐Ÿฉด","drop_of_blood":"๐Ÿฉธ","adhesive_bandage":"๐Ÿฉน","stethoscope":"๐Ÿฉบ","yo-yo":"๐Ÿช€","kite":"๐Ÿช","parachute":"๐Ÿช‚","boomerang":"๐Ÿชƒ","magic_wand":"๐Ÿช„","pinata":"๐Ÿช…","nesting_dolls":"๐Ÿช†","ringed_planet":"๐Ÿช","chair":"๐Ÿช‘","razor":"๐Ÿช’","axe":"๐Ÿช“","diya_lamp":"๐Ÿช”","banjo":"๐Ÿช•","military_helmet":"๐Ÿช–","accordion":"๐Ÿช—","long_drum":"๐Ÿช˜","coin":"๐Ÿช™","carpentry_saw":"๐Ÿชš","screwdriver":"๐Ÿช›","ladder":"๐Ÿชœ","hook":"๐Ÿช","mirror":"๐Ÿชž","window":"๐ŸชŸ","plunger":"๐Ÿช ","sewing_needle":"๐Ÿชก","knot":"๐Ÿชข","bucket":"๐Ÿชฃ","mouse_trap":"๐Ÿชค","toothbrush":"๐Ÿชฅ","headstone":"๐Ÿชฆ","placard":"๐Ÿชง","rock":"๐Ÿชจ","fly":"๐Ÿชฐ","worm":"๐Ÿชฑ","beetle":"๐Ÿชฒ","cockroach":"๐Ÿชณ","potted_plant":"๐Ÿชด","wood":"๐Ÿชต","feather":"๐Ÿชถ","anatomical_heart":"๐Ÿซ€","lungs":"๐Ÿซ","people_hugging":"๐Ÿซ‚","blueberries":"๐Ÿซ","bell_pepper":"๐Ÿซ‘","olive":"๐Ÿซ’","flatbread":"๐Ÿซ“","tamale":"๐Ÿซ”","fondue":"๐Ÿซ•","teapot":"๐Ÿซ–","bangbang":"โ€ผ๏ธ","interrobang":"โ‰๏ธ","tm":"โ„ข๏ธ","information_source":"โ„น๏ธ","left_right_arrow":"โ†”๏ธ","arrow_up_down":"โ†•๏ธ","arrow_upper_left":"โ†–๏ธ","arrow_upper_right":"โ†—๏ธ","arrow_lower_right":"โ†˜๏ธ","arrow_lower_left":"โ†™๏ธ","leftwards_arrow_with_hook":"โ†ฉ๏ธ","arrow_right_hook":"โ†ช๏ธ","watch":"โŒš","hourglass":"โŒ›","keyboard":"โŒจ๏ธ","eject":"โ๏ธ","fast_forward":"โฉ","rewind":"โช","arrow_double_up":"โซ","arrow_double_down":"โฌ","black_right_pointing_double_triangle_with_vertical_bar":"โญ๏ธ","black_left_pointing_double_triangle_with_vertical_bar":"โฎ๏ธ","black_right_pointing_triangle_with_double_vertical_bar":"โฏ๏ธ","alarm_clock":"โฐ","stopwatch":"โฑ๏ธ","timer_clock":"โฒ๏ธ","hourglass_flowing_sand":"โณ","double_vertical_bar":"โธ๏ธ","black_square_for_stop":"โน๏ธ","black_circle_for_record":"โบ๏ธ","m":"โ“‚๏ธ","black_small_square":"โ–ช๏ธ","white_small_square":"โ–ซ๏ธ","arrow_forward":"โ–ถ๏ธ","arrow_backward":"โ—€๏ธ","white_medium_square":"โ—ป๏ธ","black_medium_square":"โ—ผ๏ธ","white_medium_small_square":"โ—ฝ","black_medium_small_square":"โ—พ","sunny":"โ˜€๏ธ","cloud":"โ˜๏ธ","umbrella":"โ˜‚๏ธ","snowman":"โ˜ƒ๏ธ","comet":"โ˜„๏ธ","phone":"โ˜Ž๏ธ","telephone":"โ˜Ž๏ธ","ballot_box_with_check":"โ˜‘๏ธ","shamrock":"โ˜˜๏ธ","point_up":"โ˜๏ธ","skull_and_crossbones":"โ˜ ๏ธ","radioactive_sign":"โ˜ข๏ธ","biohazard_sign":"โ˜ฃ๏ธ","orthodox_cross":"โ˜ฆ๏ธ","star_and_crescent":"โ˜ช๏ธ","peace_symbol":"โ˜ฎ๏ธ","yin_yang":"โ˜ฏ๏ธ","wheel_of_dharma":"โ˜ธ๏ธ","white_frowning_face":"โ˜น๏ธ","relaxed":"โ˜บ๏ธ","female_sign":"โ™€๏ธ","male_sign":"โ™‚๏ธ","gemini":"โ™Š","cancer":"โ™‹","leo":"โ™Œ","virgo":"โ™","libra":"โ™Ž","scorpius":"โ™","chess_pawn":"โ™Ÿ๏ธ","spades":"โ™ ๏ธ","clubs":"โ™ฃ๏ธ","hearts":"โ™ฅ๏ธ","diamonds":"โ™ฆ๏ธ","hotsprings":"โ™จ๏ธ","recycle":"โ™ป๏ธ","infinity":"โ™พ๏ธ","wheelchair":"โ™ฟ","hammer_and_pick":"โš’๏ธ","crossed_swords":"โš”๏ธ","medical_symbol":"โš•๏ธ","staff_of_aesculapius":"โš•๏ธ","scales":"โš–๏ธ","alembic":"โš—๏ธ","gear":"โš™๏ธ","atom_symbol":"โš›๏ธ","fleur_de_lis":"โšœ๏ธ","warning":"โš ๏ธ","zap":"โšก","transgender_symbol":"โšง๏ธ","white_circle":"โšช","black_circle":"โšซ","coffin":"โšฐ๏ธ","funeral_urn":"โšฑ๏ธ","soccer":"โšฝ","baseball":"โšพ","snowman_without_snow":"โ›„","partly_sunny":"โ›…","thunder_cloud_and_rain":"โ›ˆ๏ธ","ophiuchus":"โ›Ž","pick":"โ›๏ธ","helmet_with_white_cross":"โ›‘๏ธ","chains":"โ›“๏ธ","no_entry":"โ›”","shinto_shrine":"โ›ฉ๏ธ","church":"โ›ช","mountain":"โ›ฐ๏ธ","umbrella_on_ground":"โ›ฑ๏ธ","fountain":"โ›ฒ","golf":"โ›ณ","ferry":"โ›ด๏ธ","boat":"โ›ต","sailboat":"โ›ต","skier":"โ›ท๏ธ","ice_skate":"โ›ธ๏ธ","woman-bouncing-ball":"โ›น๏ธโ€โ™€๏ธ","man-bouncing-ball":"โ›น๏ธโ€โ™‚๏ธ","person_with_ball":"โ›น๏ธโ€โ™‚๏ธ","tent":"โ›บ","fuelpump":"โ›ฝ","scissors":"โœ‚๏ธ","airplane":"โœˆ๏ธ","email":"โœ‰๏ธ","envelope":"โœ‰๏ธ","fist":"โœŠ","hand":"โœ‹","raised_hand":"โœ‹","v":"โœŒ๏ธ","writing_hand":"โœ๏ธ","pencil2":"โœ๏ธ","black_nib":"โœ’๏ธ","heavy_check_mark":"โœ”๏ธ","heavy_multiplication_x":"โœ–๏ธ","latin_cross":"โœ๏ธ","star_of_david":"โœก๏ธ","eight_spoked_asterisk":"โœณ๏ธ","eight_pointed_black_star":"โœด๏ธ","snowflake":"โ„๏ธ","sparkle":"โ‡๏ธ","x":"โŒ","negative_squared_cross_mark":"โŽ","heavy_heart_exclamation_mark_ornament":"โฃ๏ธ","heart_on_fire":"โค๏ธโ€๐Ÿ”ฅ","mending_heart":"โค๏ธโ€๐Ÿฉน","heart":"โค๏ธ","arrow_right":"โžก๏ธ","curly_loop":"โžฐ","loop":"โžฟ","arrow_heading_up":"โคด๏ธ","arrow_heading_down":"โคต๏ธ","arrow_left":"โฌ…๏ธ","arrow_up":"โฌ†๏ธ","arrow_down":"โฌ‡๏ธ","black_large_square":"โฌ›","white_large_square":"โฌœ","star":"โญ","o":"โญ•","wavy_dash":"ใ€ฐ๏ธ","part_alternation_mark":"ใ€ฝ๏ธ","congratulations":"ใŠ—๏ธ","secret":"ใŠ™๏ธ"}'; - final Map _emojisByName = {}; final Map _emojisByCode = {}; - EmojiParser({bool init = true}) { - if (init == true) { - initLocalData(); - } - } - - void initLocalData() { - _init(jsonEmoji); - } + static final EmojiParser _emojiParser = EmojiParser._(); - void _init(String dataset) { - Map mapEmojis = jsonDecode(dataset); - mapEmojis.forEach((k, v) { - _emojisByName[k] = Emoji(k, v); - _emojisByCode[EmojiUtil.stripNSM(v)] = Emoji(k, v); - }); + factory EmojiParser() { + return _emojiParser; } - bool hasEmoji(String? emoji) { - return _emojisByCode.containsKey(EmojiUtil.stripNSM(emoji)); + EmojiParser._({bool init = true}) { + if (init == true) { + emojis.forEach((k, v) { + _emojisByName[v.slug] = Emoji(v.slug, v.char); + _emojisByCode[EmojiUtil.stripNSM(v.char)] = Emoji(v.slug, v.char); + }); + } } /// @@ -157,10 +153,10 @@ class EmojiParser { /// var emojiHeart = parser.getEmoji('โค'); /// print(emojiHeart); '{name: heart, full: :heart:, emoji: โค๏ธ}' /// - /// Returns Emoji.None if not found. + /// Returns null if not found. /// - Emoji getEmoji(String? emoji) { - return _emojisByCode[EmojiUtil.stripNSM(emoji)] ?? Emoji.none; + Emoji? getEmoji(String? emoji) { + return _emojisByCode[EmojiUtil.stripNSM(EmojiUtil.stripSkinTone(emoji))]; } /// @@ -175,11 +171,12 @@ class EmojiParser { final characters = Characters(text); final buffer = StringBuffer(); for (final character in characters) { - if (hasEmoji(character)) { + final maybeEmoji = getEmoji(character); + if (maybeEmoji != null) { var result = character; result = result.replaceAll( character, - getEmoji(character).full, + maybeEmoji.full, ); buffer.write(result); @@ -200,7 +197,7 @@ class EmojiParser { List result = []; for (final character in text.characters) { - if (hasEmoji(character)) { + if (getEmoji(character) != null) { result.add(character); } } diff --git a/lib/src/widgets/chat_bubble_widget.dart b/lib/src/widgets/chat_bubble_widget.dart index e54bc4b0..28e11c78 100644 --- a/lib/src/widgets/chat_bubble_widget.dart +++ b/lib/src/widgets/chat_bubble_widget.dart @@ -22,6 +22,7 @@ import 'package:chatview/src/extensions/extensions.dart'; import 'package:chatview/src/utils/constants/constants.dart'; import 'package:chatview/src/widgets/chat_view_inherited_widget.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../chatview.dart'; @@ -36,8 +37,10 @@ class ChatBubbleWidget extends StatefulWidget { required GlobalKey key, required this.message, required this.onLongPress, - required this.slideAnimation, - required this.onSwipe, + required this.slideValueListener, + required this.onInitReplyToMessage, + this.previousMessage, + this.nextMessage, this.profileCircleConfig, this.chatBubbleConfig, this.repliedMessageConfig, @@ -52,6 +55,12 @@ class ChatBubbleWidget extends StatefulWidget { /// Represent current instance of message. final Message message; + /// Represent message sent before that one. + final Message? previousMessage; + + /// Represent message sent after that one. + final Message? nextMessage; + /// Give callback once user long press on chat bubble. final DoubleCallBack onLongPress; @@ -77,14 +86,14 @@ class ChatBubbleWidget extends StatefulWidget { /// whole chat. final Color? messageTimeIconColor; - /// Provides slide animation when user swipe whole chat. - final Animation? slideAnimation; + /// Provides slide value when user swipe whole chat. + final ValueListenable? slideValueListener; /// Provides configuration of all types of messages. final MessageConfiguration? messageConfig; /// Provides callback of when user swipe chat bubble for reply. - final MessageCallBack onSwipe; + final MessageCallBack onInitReplyToMessage; /// Provides callback when user tap on replied message upon chat bubble. final Function(String)? onReplyTap; @@ -101,55 +110,62 @@ class _ChatBubbleWidgetState extends State { bool get isMessageBySender => widget.message.sendBy == currentUser?.id; + bool get isMessageBySameSenderAsPrevious => + widget.previousMessage?.sendBy == widget.message.sendBy; + + bool get isMessageLastFromSender => + widget.nextMessage?.sendBy == widget.message.sendBy; + bool get isLastMessage => chatController?.initialMessageList.last.id == widget.message.id; + bool get swipeLeftShouldShowTime => featureActiveConfig.enableSwipeToSeeTime; + + bool get enableSwipeToReply => featureActiveConfig.enableSwipeToReply; + ProfileCircleConfiguration? get profileCircleConfig => widget.profileCircleConfig; - FeatureActiveConfig? featureActiveConfig; - ChatController? chatController; - ChatUser? currentUser; - int? maxDuration; - @override - void didChangeDependencies() { - super.didChangeDependencies(); - if (provide != null) { - featureActiveConfig = provide!.featureActiveConfig; - chatController = provide!.chatController; - currentUser = provide!.currentUser; - } - } + FeatureActiveConfig get featureActiveConfig => + provide?.featureActiveConfig ?? const FeatureActiveConfig(); + ChatController? get chatController => provide?.chatController; + ChatUser? get currentUser => provide?.currentUser; + int? maxDuration; @override Widget build(BuildContext context) { // Get user from id. final messagedUser = chatController?.getUserFromId(widget.message.sendBy); - return Stack( - children: [ - if (featureActiveConfig?.enableSwipeToSeeTime ?? true) ...[ - Visibility( - visible: widget.slideAnimation?.value.dx == 0.0 ? false : true, - child: Positioned.fill( - child: Align( - alignment: Alignment.centerRight, - child: MessageTimeWidget( - messageTime: widget.message.createdAt, - isCurrentUser: isMessageBySender, - messageTimeIconColor: widget.messageTimeIconColor, - messageTimeTextStyle: widget.messageTimeTextStyle, + if (swipeLeftShouldShowTime && widget.slideValueListener != null) { + return ValueListenableBuilder( + valueListenable: widget.slideValueListener!, + builder: (context, slideValue, child) => Stack( + children: [ + Visibility( + visible: widget.slideValueListener!.value == 0.0 ? false : true, + child: Positioned.fill( + child: Align( + alignment: Alignment.centerRight, + child: MessageTimeWidget( + messageTime: widget.message.createdAt, + isCurrentUser: isMessageBySender, + messageTimeIconColor: widget.messageTimeIconColor, + messageTimeTextStyle: widget.messageTimeTextStyle, + ), ), ), ), - ), - SlideTransition( - position: widget.slideAnimation!, - child: _chatBubbleWidget(messagedUser), - ), - ] else - _chatBubbleWidget(messagedUser), - ], - ); + Transform.translate( + offset: Offset(widget.slideValueListener!.value * 50, 0), + child: child!, + ), + ], + ), + child: _chatBubbleWidget(messagedUser), + ); + } + + return _chatBubbleWidget(messagedUser); } Widget _chatBubbleWidget(ChatUser? messagedUser) { @@ -157,15 +173,23 @@ class _ChatBubbleWidgetState extends State { padding: widget.chatBubbleConfig?.padding ?? const EdgeInsets.only(left: 5.0), margin: - widget.chatBubbleConfig?.margin ?? const EdgeInsets.only(bottom: 10), + (widget.chatBubbleConfig?.margin ?? const EdgeInsets.only(bottom: 10)) + .add( + isLastMessage + ? EdgeInsets.only( + bottom: widget.chatBubbleConfig + ?.additionalBottomInsetIfMessageIsLast ?? + 16) + : const EdgeInsets.all(0), + ), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: isMessageBySender ? MainAxisAlignment.end : MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end, children: [ - if (!isMessageBySender && - (featureActiveConfig?.enableOtherUserProfileAvatar ?? true)) + if (!(isMessageBySender || isMessageLastFromSender) && + (featureActiveConfig.enableOtherUserProfileAvatar)) ProfileCircle( bottomPadding: widget.message.reaction.reactions.isNotEmpty ? profileCircleConfig?.bottomPadding ?? 15 @@ -182,56 +206,31 @@ class _ChatBubbleWidgetState extends State { circleRadius: profileCircleConfig?.circleRadius, onTap: () => _onAvatarTap(messagedUser), onLongPress: () => _onAvatarLongPress(messagedUser), + ) + else + SizedBox( + width: profileCircleConfig == null + ? 10 + : (profileCircleConfig!.circleRadius * 2 + + (profileCircleConfig?.padding?.collapsedSize.width ?? + 12)), ), Expanded( - child: isMessageBySender - ? SwipeToReply( - onLeftSwipe: featureActiveConfig?.enableSwipeToReply ?? true - ? () { - if (maxDuration != null) { - widget.message.voiceMessageDuration = - Duration(milliseconds: maxDuration!); - } - if (widget.swipeToReplyConfig?.onLeftSwipe != - null) { - widget.swipeToReplyConfig?.onLeftSwipe!( - widget.message.message, - widget.message.sendBy); - } - widget.onSwipe(widget.message); - } - : null, - replyIconColor: widget.swipeToReplyConfig?.replyIconColor, - swipeToReplyAnimationDuration: - widget.swipeToReplyConfig?.animationDuration, - child: _messagesWidgetColumn(messagedUser), - ) - : SwipeToReply( - onRightSwipe: - featureActiveConfig?.enableSwipeToReply ?? true - ? () { - if (maxDuration != null) { - widget.message.voiceMessageDuration = - Duration(milliseconds: maxDuration!); - } - if (widget.swipeToReplyConfig?.onRightSwipe != - null) { - widget.swipeToReplyConfig?.onRightSwipe!( - widget.message.message, - widget.message.sendBy); - } - widget.onSwipe(widget.message); - } - : null, - replyIconColor: widget.swipeToReplyConfig?.replyIconColor, - swipeToReplyAnimationDuration: - widget.swipeToReplyConfig?.animationDuration, - child: _messagesWidgetColumn(messagedUser), - ), + child: SwipeToReply( + isMessageBySender: isMessageBySender, + onSwipeInwards: (enableSwipeToReply && !swipeLeftShouldShowTime) + ? _initReplyToMessage + : null, + onSwipeRight: (enableSwipeToReply && swipeLeftShouldShowTime) + ? _initReplyToMessage + : null, + replyIconColor: widget.swipeToReplyConfig?.replyIconColor, + child: _messagesWidgetColumn(messagedUser), + ), ), if (isMessageBySender) ...[getReciept()], if (isMessageBySender && - (featureActiveConfig?.enableCurrentUserProfileAvatar ?? true)) + (featureActiveConfig.enableCurrentUserProfileAvatar)) ProfileCircle( bottomPadding: widget.message.reaction.reactions.isNotEmpty ? profileCircleConfig?.bottomPadding ?? 15 @@ -260,6 +259,23 @@ class _ChatBubbleWidgetState extends State { } } + void _onAvatarLongPress(ChatUser? user) { + if (profileCircleConfig?.onAvatarLongPress != null && user != null) { + profileCircleConfig?.onAvatarLongPress!(user); + } + } + + void _initReplyToMessage() { + if (maxDuration != null) { + widget.message.voiceMessageDuration = + Duration(milliseconds: maxDuration!); + } + if (widget.swipeToReplyConfig?.onInitReply == null || + (widget.swipeToReplyConfig?.onInitReply!(widget.message) ?? true)) { + widget.onInitReplyToMessage(widget.message); + } + } + Widget getReciept() { final showReceipts = widget.chatBubbleConfig?.outgoingChatBubbleConfig ?.receiptsWidgetConfig?.showReceiptsIn ?? @@ -300,20 +316,15 @@ class _ChatBubbleWidgetState extends State { return const SizedBox(); } - void _onAvatarLongPress(ChatUser? user) { - if (profileCircleConfig?.onAvatarLongPress != null && user != null) { - profileCircleConfig?.onAvatarLongPress!(user); - } - } - Widget _messagesWidgetColumn(ChatUser? messagedUser) { return Column( crossAxisAlignment: isMessageBySender ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [ - if ((chatController?.chatUsers.length ?? 0) > 1 && + if (!isMessageBySameSenderAsPrevious && + (chatController?.chatUsers.length ?? 0) > 1 && !isMessageBySender && - (featureActiveConfig?.enableOtherUserName ?? true)) + (featureActiveConfig.enableOtherUserName)) Padding( padding: widget.chatBubbleConfig?.inComingChatBubbleConfig?.padding ?? @@ -337,9 +348,8 @@ class _ChatBubbleWidgetState extends State { MessageView( outgoingChatBubbleConfig: widget.chatBubbleConfig?.outgoingChatBubbleConfig, - isLongPressEnable: - (featureActiveConfig?.enableReactionPopup ?? true) || - (featureActiveConfig?.enableReplySnackBar ?? true), + isLongPressEnable: (featureActiveConfig.enableReactionPopup) || + (featureActiveConfig.enableReplySnackBar), inComingChatBubbleConfig: widget.chatBubbleConfig?.inComingChatBubbleConfig, message: widget.message, @@ -349,7 +359,7 @@ class _ChatBubbleWidgetState extends State { chatBubbleMaxWidth: widget.chatBubbleConfig?.maxWidth, longPressAnimationDuration: widget.chatBubbleConfig?.longPressAnimationDuration, - onDoubleTap: featureActiveConfig?.enableDoubleTapToLike ?? false + onDoubleTap: featureActiveConfig.enableDoubleTapToLike ? widget.chatBubbleConfig?.onDoubleTap ?? (message) => currentUser != null ? chatController?.setReaction( diff --git a/lib/src/widgets/chat_groupedlist_widget.dart b/lib/src/widgets/chat_groupedlist_widget.dart index afc9b785..0432bb45 100644 --- a/lib/src/widgets/chat_groupedlist_widget.dart +++ b/lib/src/widgets/chat_groupedlist_widget.dart @@ -33,7 +33,6 @@ class ChatGroupedListWidget extends StatefulWidget { const ChatGroupedListWidget({ Key? key, required this.showPopUp, - required this.showTypingIndicator, required this.scrollController, required this.chatBackgroundConfig, required this.replyMessage, @@ -41,9 +40,9 @@ class ChatGroupedListWidget extends StatefulWidget { required this.onChatListTap, required this.onChatBubbleLongPress, required this.isEnableSwipeToSeeTime, + required this.profileCircleConfig, this.messageConfig, this.chatBubbleConfig, - this.profileCircleConfig, this.swipeToReplyConfig, this.repliedMessageConfig, this.typeIndicatorConfig, @@ -52,8 +51,7 @@ class ChatGroupedListWidget extends StatefulWidget { /// Allow user to swipe to see time while reaction pop is not open. final bool showPopUp; - /// Allow user to show typing indicator. - final bool showTypingIndicator; + /// Pass scroll controller final ScrollController scrollController; /// Allow user to give customisation to background of chat @@ -67,7 +65,7 @@ class ChatGroupedListWidget extends StatefulWidget { final ChatBubbleConfiguration? chatBubbleConfig; /// Allow user to giving customisation to profile circle - final ProfileCircleConfiguration? profileCircleConfig; + final ProfileCircleConfiguration profileCircleConfig; /// Allow user to giving customisation to swipe to reply final SwipeToReplyConfiguration? swipeToReplyConfig; @@ -103,17 +101,15 @@ class _ChatGroupedListWidgetState extends State bool get showPopUp => widget.showPopUp; - bool get showTypingIndicator => widget.showTypingIndicator; - bool highlightMessage = false; final ValueNotifier _replyId = ValueNotifier(null); ChatBubbleConfiguration? get chatBubbleConfig => widget.chatBubbleConfig; - ProfileCircleConfiguration? get profileCircleConfig => + ProfileCircleConfiguration get profileCircleConfig => widget.profileCircleConfig; - AnimationController? _animationController; - Animation? _slideAnimation; + + ValueNotifier? valueListener; FeatureActiveConfig? featureActiveConfig; @@ -121,48 +117,16 @@ class _ChatGroupedListWidgetState extends State bool get isEnableSwipeToSeeTime => widget.isEnableSwipeToSeeTime; - double height = 0; - @override void initState() { super.initState(); _initializeAnimation(); - updateChatTextFieldHeight(); - } - - @override - void didUpdateWidget(covariant ChatGroupedListWidget oldWidget) { - super.didUpdateWidget(oldWidget); - updateChatTextFieldHeight(); - } - - void updateChatTextFieldHeight() { - WidgetsBinding.instance.addPostFrameCallback((_) { - if (!mounted) return; - setState(() { - height = - provide?.chatTextFieldViewKey.currentContext?.size?.height ?? 10; - }); - }); } void _initializeAnimation() { - // When this flag is on at that time only animation controllers will be - // initialized. + // When this flag is on, prepare swiping the whole chat if (isEnableSwipeToSeeTime) { - _animationController = AnimationController( - vsync: this, - duration: const Duration(milliseconds: 250), - ); - _slideAnimation = Tween( - begin: const Offset(0.0, 0.0), - end: const Offset(0.0, 0.0), - ).animate( - CurvedAnimation( - curve: Curves.decelerate, - parent: _animationController!, - ), - ); + valueListener = ValueNotifier(0); } } @@ -184,12 +148,12 @@ class _ChatGroupedListWidgetState extends State reverse: true, // When reaction popup is being appeared at that user should not scroll. physics: showPopUp ? const NeverScrollableScrollPhysics() : null, - padding: EdgeInsets.only(bottom: showTypingIndicator ? 50 : 0), controller: widget.scrollController, child: Column( mainAxisSize: MainAxisSize.min, children: [ GestureDetector( + behavior: HitTestBehavior.translucent, onHorizontalDragUpdate: (details) => isEnableSwipeToSeeTime ? showPopUp ? null @@ -198,35 +162,24 @@ class _ChatGroupedListWidgetState extends State onHorizontalDragEnd: (details) => isEnableSwipeToSeeTime ? showPopUp ? null - : _animationController?.reverse() + : valueListener?.value = 0 : null, onTap: widget.onChatListTap, - child: _animationController != null - ? AnimatedBuilder( - animation: _animationController!, - builder: (context, child) { - return _chatStreamBuilder; - }, - ) - : _chatStreamBuilder, + child: _chatStreamBuilder, ), - widget.showTypingIndicator - ? TypingIndicator( - typeIndicatorConfig: widget.typeIndicatorConfig, - chatBubbleConfig: chatBubbleConfig?.inComingChatBubbleConfig, - showIndicator: widget.showTypingIndicator, - ) - : ValueListenableBuilder( - valueListenable: ChatViewInheritedWidget.of(context)! - .chatController - .typingIndicatorNotifier, - builder: (context, value, child) => TypingIndicator( + ValueListenableBuilder( + valueListenable: ChatViewInheritedWidget.of(context)! + .chatController + .typingIndicatorNotifier, + builder: (context, value, child) => value + ? TypingIndicator( typeIndicatorConfig: widget.typeIndicatorConfig, chatBubbleConfig: chatBubbleConfig?.inComingChatBubbleConfig, showIndicator: value, - ), - ), + ) + : Container(), + ), Flexible( child: Align( alignment: suggestionsListConfig.axisAlignment.alignment, @@ -234,18 +187,12 @@ class _ChatGroupedListWidgetState extends State valueListenable: ChatViewInheritedWidget.of(context)! .chatController .newSuggestions, - builder: (context, value, child) { - return SuggestionList( - suggestions: value, - ); - }, + builder: (context, value, child) => SuggestionList( + suggestions: value, + ), ), ), ), - - // Adds bottom space to the message list, ensuring it is displayed - // above the message text field. - const SizedBox(height: 100), ], ), ); @@ -287,24 +234,14 @@ class _ChatGroupedListWidgetState extends State /// When user swipe at that time only animation is assigned with value. void _onHorizontalDrag(DragUpdateDetails details) { - _slideAnimation = Tween( - begin: const Offset(0.0, 0.0), - end: const Offset(-0.2, 0.0), - ).animate( - CurvedAnimation( - curve: chatBackgroundConfig.messageTimeAnimationCurve, - parent: _animationController!, - ), - ); - - details.delta.dx > 1 - ? _animationController?.reverse() - : _animationController?.forward(); + if (valueListener == null) return; + valueListener!.value = + (valueListener!.value + (details.delta.dx / context.size!.width) * 5) + .clamp(-1.0, 0.0); } @override void dispose() { - _animationController?.dispose(); _replyId.dispose(); super.dispose(); } @@ -369,6 +306,12 @@ class _ChatGroupedListWidgetState extends State final message = messages[newIndex]; return ChatBubbleWidget( key: message.key, + previousMessage: (index > 0) + ? snapshot.data!.elementAtOrNull(index - 1) + : null, + nextMessage: (index < snapshot.data!.length - 1) + ? snapshot.data!.elementAtOrNull(index + 1) + : null, messageTimeTextStyle: chatBackgroundConfig.messageTimeTextStyle, messageTimeIconColor: @@ -379,14 +322,14 @@ class _ChatGroupedListWidgetState extends State profileCircleConfig: profileCircleConfig, swipeToReplyConfig: widget.swipeToReplyConfig, repliedMessageConfig: widget.repliedMessageConfig, - slideAnimation: _slideAnimation, + slideValueListener: valueListener, onLongPress: (yCoordinate, xCoordinate) => widget.onChatBubbleLongPress( yCoordinate, xCoordinate, message, ), - onSwipe: widget.assignReplyMessage, + onInitReplyToMessage: widget.assignReplyMessage, shouldHighlight: state == message.id, onReplyTap: widget .repliedMessageConfig diff --git a/lib/src/widgets/chat_list_widget.dart b/lib/src/widgets/chat_list_widget.dart index b708665f..2c577414 100644 --- a/lib/src/widgets/chat_list_widget.dart +++ b/lib/src/widgets/chat_list_widget.dart @@ -36,14 +36,13 @@ class ChatListWidget extends StatefulWidget { Key? key, required this.chatController, required this.chatBackgroundConfig, - required this.showTypingIndicator, required this.assignReplyMessage, required this.replyMessage, + required this.profileCircleConfig, this.loadingWidget, this.reactionPopupConfig, this.messageConfig, this.chatBubbleConfig, - this.profileCircleConfig, this.swipeToReplyConfig, this.repliedMessageConfig, this.typeIndicatorConfig, @@ -63,9 +62,6 @@ class ChatListWidget extends StatefulWidget { /// Provides widget for loading view while pagination is enabled. final Widget? loadingWidget; - /// Provides flag for turn on/off typing indicator. - final bool showTypingIndicator; - /// Provides configuration for reaction pop up appearance. final ReactionPopupConfiguration? reactionPopupConfig; @@ -77,7 +73,7 @@ class ChatListWidget extends StatefulWidget { final ChatBubbleConfiguration? chatBubbleConfig; /// Provides configuration for profile circle avatar of user. - final ProfileCircleConfiguration? profileCircleConfig; + final ProfileCircleConfiguration profileCircleConfig; /// Provides configuration for when user swipe to chat bubble. final SwipeToReplyConfiguration? swipeToReplyConfig; @@ -128,8 +124,6 @@ class _ChatListWidgetState extends State ScrollController get scrollController => chatController.scrollController; - bool get showTypingIndicator => widget.showTypingIndicator; - ChatBackgroundConfiguration get chatBackgroundConfig => widget.chatBackgroundConfig; @@ -193,7 +187,6 @@ class _ChatListWidgetState extends State children: [ ChatGroupedListWidget( showPopUp: showPopupValue, - showTypingIndicator: showTypingIndicator, scrollController: scrollController, isEnableSwipeToSeeTime: featureActiveConfig?.enableSwipeToSeeTime ?? true, diff --git a/lib/src/widgets/chat_view.dart b/lib/src/widgets/chat_view.dart index c9c67eac..cd5ae677 100644 --- a/lib/src/widgets/chat_view.dart +++ b/lib/src/widgets/chat_view.dart @@ -36,7 +36,7 @@ class ChatView extends StatefulWidget { required this.chatController, required this.currentUser, this.onSendTap, - this.profileCircleConfig, + this.profileCircleConfig = const ProfileCircleConfiguration(), this.chatBubbleConfig, this.repliedMessageConfig, this.swipeToReplyConfig, @@ -50,7 +50,7 @@ class ChatView extends StatefulWidget { ChatBackgroundConfiguration? chatBackgroundConfig, this.typeIndicatorConfig, this.sendMessageBuilder, - this.sendMessageConfig, + this.sendMessageConfig = const SendMessageConfiguration(), this.onChatListTap, required this.chatViewState, ChatViewStateConfiguration? chatViewStateConfig, @@ -65,7 +65,7 @@ class ChatView extends StatefulWidget { super(key: key); /// Provides configuration related to user profile circle avatar. - final ProfileCircleConfiguration? profileCircleConfig; + final ProfileCircleConfiguration profileCircleConfig; /// Provides configurations related to chat bubble such as padding, margin, max /// width etc. @@ -116,7 +116,7 @@ class ChatView extends StatefulWidget { final ChatController chatController; /// Provides configuration of default text field in chat. - final SendMessageConfiguration? sendMessageConfig; + final SendMessageConfiguration sendMessageConfig; /// Provides current state of chat. final ChatViewState chatViewState; @@ -220,85 +220,84 @@ class _ChatViewState extends State children: [ if (widget.appBar != null) widget.appBar!, Expanded( - child: Stack( - children: [ - if (chatViewState.isLoading) - ChatViewStateWidget( - chatViewStateWidgetConfig: - chatViewStateConfig?.loadingWidgetConfig, - chatViewState: chatViewState, - ) - else if (chatViewState.noMessages) - ChatViewStateWidget( - chatViewStateWidgetConfig: - chatViewStateConfig?.noMessageWidgetConfig, - chatViewState: chatViewState, - onReloadButtonTap: - chatViewStateConfig?.onReloadButtonTap, - ) - else if (chatViewState.isError) - ChatViewStateWidget( - chatViewStateWidgetConfig: - chatViewStateConfig?.errorWidgetConfig, - chatViewState: chatViewState, - onReloadButtonTap: - chatViewStateConfig?.onReloadButtonTap, - ) - else if (chatViewState.hasMessages) - ValueListenableBuilder( - valueListenable: replyMessage, - builder: (_, state, child) { - return ChatListWidget( - showTypingIndicator: - chatController.showTypingIndicator, - replyMessage: state, - chatController: widget.chatController, - chatBackgroundConfig: widget.chatBackgroundConfig, - reactionPopupConfig: widget.reactionPopupConfig, - typeIndicatorConfig: widget.typeIndicatorConfig, - chatBubbleConfig: widget.chatBubbleConfig, - loadMoreData: widget.loadMoreData, - isLastPage: widget.isLastPage, - replyPopupConfig: widget.replyPopupConfig, - loadingWidget: widget.loadingWidget, - messageConfig: widget.messageConfig, - profileCircleConfig: widget.profileCircleConfig, - repliedMessageConfig: widget.repliedMessageConfig, - swipeToReplyConfig: widget.swipeToReplyConfig, - onChatListTap: widget.onChatListTap, - assignReplyMessage: (message) => _sendMessageKey - .currentState - ?.assignReplyMessage(message), - emojiPickerSheetConfig: - widget.emojiPickerSheetConfig, - ); - }, - ), - if (featureActiveConfig.enableTextField) - SendMessageWidget( - key: _sendMessageKey, - chatController: chatController, - sendMessageBuilder: widget.sendMessageBuilder, - sendMessageConfig: widget.sendMessageConfig, - backgroundColor: chatBackgroundConfig.backgroundColor, - onSendTap: (message, replyMessage, messageType) { - if (context.suggestionsConfig - ?.autoDismissOnSelection ?? - true) { - chatController.removeReplySuggestions(); - } - _onSendTap(message, replyMessage, messageType); - }, - onReplyCallback: (reply) => - replyMessage.value = reply, - onReplyCloseCallback: () => - replyMessage.value = const ReplyMessage(), - messageConfig: widget.messageConfig, - replyMessageBuilder: widget.replyMessageBuilder, - ), - ], - ), + child: [ + if (chatViewState.isLoading) + ChatViewStateWidget( + chatViewStateWidgetConfig: + chatViewStateConfig?.loadingWidgetConfig, + chatViewState: chatViewState, + ) + else if (chatViewState.noMessages) + ChatViewStateWidget( + chatViewStateWidgetConfig: + chatViewStateConfig?.noMessageWidgetConfig, + chatViewState: chatViewState, + onReloadButtonTap: + chatViewStateConfig?.onReloadButtonTap, + ) + else if (chatViewState.isError) + ChatViewStateWidget( + chatViewStateWidgetConfig: + chatViewStateConfig?.errorWidgetConfig, + chatViewState: chatViewState, + onReloadButtonTap: + chatViewStateConfig?.onReloadButtonTap, + ) + else if (chatViewState.hasMessages) + ValueListenableBuilder( + valueListenable: replyMessage, + builder: (_, state, child) { + return ChatListWidget( + replyMessage: state, + chatController: widget.chatController, + chatBackgroundConfig: widget.chatBackgroundConfig, + reactionPopupConfig: widget.reactionPopupConfig, + typeIndicatorConfig: widget.typeIndicatorConfig, + chatBubbleConfig: widget.chatBubbleConfig, + loadMoreData: widget.loadMoreData, + isLastPage: widget.isLastPage, + replyPopupConfig: widget.replyPopupConfig, + loadingWidget: widget.loadingWidget, + messageConfig: widget.messageConfig, + profileCircleConfig: widget.profileCircleConfig, + repliedMessageConfig: widget.repliedMessageConfig, + swipeToReplyConfig: widget.swipeToReplyConfig, + onChatListTap: widget.onChatListTap, + assignReplyMessage: (message) => _sendMessageKey + .currentState + ?.assignReplyMessage(message), + emojiPickerSheetConfig: + widget.emojiPickerSheetConfig, + ); + }, + ), + ][0], ), + if (featureActiveConfig.enableTextField) + Padding( + padding: const EdgeInsets.only(top: 8), + child: SendMessageWidget( + key: _sendMessageKey, + enabled: + chatViewState.hasMessages || chatViewState.noMessages, + chatController: chatController, + sendMessageBuilder: widget.sendMessageBuilder, + sendMessageConfig: widget.sendMessageConfig, + backgroundColor: chatBackgroundConfig.backgroundColor, + onSendTap: (message, replyMessage, messageType) { + if (context.suggestionsConfig?.autoDismissOnSelection ?? + true) { + chatController.removeReplySuggestions(); + } + _onSendTap(message, replyMessage, messageType); + }, + onReplyCallback: (reply) => replyMessage.value = reply, + onReplyCloseCallback: () => + replyMessage.value = const ReplyMessage(), + messageConfig: widget.messageConfig, + replyMessageBuilder: widget.replyMessageBuilder, + ), + ), ], ), ); diff --git a/lib/src/widgets/chatui_textfield.dart b/lib/src/widgets/chatui_textfield.dart index 0f20ca91..ce5de249 100644 --- a/lib/src/widgets/chatui_textfield.dart +++ b/lib/src/widgets/chatui_textfield.dart @@ -35,7 +35,8 @@ import '../utils/package_strings.dart'; class ChatUITextField extends StatefulWidget { const ChatUITextField({ Key? key, - this.sendMessageConfig, + required this.sendMessageConfig, + required this.enabled, required this.focusNode, required this.textEditingController, required this.onPressed, @@ -43,8 +44,11 @@ class ChatUITextField extends StatefulWidget { required this.onImageSelected, }) : super(key: key); + /// To enable or disable sending action. + final bool enabled; + /// Provides configuration of default text field in chat. - final SendMessageConfiguration? sendMessageConfig; + final SendMessageConfiguration sendMessageConfig; /// Provides focusNode for focusing text field. final FocusNode focusNode; @@ -74,23 +78,23 @@ class _ChatUITextFieldState extends State { ValueNotifier isRecording = ValueNotifier(false); - SendMessageConfiguration? get sendMessageConfig => widget.sendMessageConfig; + SendMessageConfiguration get sendMessageConfig => widget.sendMessageConfig; VoiceRecordingConfiguration? get voiceRecordingConfig => - widget.sendMessageConfig?.voiceRecordingConfiguration; + widget.sendMessageConfig.voiceRecordingConfiguration; ImagePickerIconsConfiguration? get imagePickerIconsConfig => - sendMessageConfig?.imagePickerIconsConfig; + sendMessageConfig.imagePickerIconsConfig; - TextFieldConfiguration? get textFieldConfig => - sendMessageConfig?.textFieldConfig; + TextFieldConfiguration get textFieldConfig => + sendMessageConfig.textFieldConfig; CancelRecordConfiguration? get cancelRecordConfiguration => - sendMessageConfig?.cancelRecordConfiguration; + sendMessageConfig.cancelRecordConfiguration; - OutlineInputBorder get _outLineBorder => OutlineInputBorder( + OutlineInputBorder get _outlineBorder => OutlineInputBorder( borderSide: const BorderSide(color: Colors.transparent), - borderRadius: widget.sendMessageConfig?.textFieldConfig?.borderRadius ?? + borderRadius: widget.sendMessageConfig.textFieldConfig.borderRadius ?? BorderRadius.circular(textFieldBorderRadius), ); @@ -102,9 +106,8 @@ class _ChatUITextFieldState extends State { @override void initState() { attachListeners(); - debouncer = Debouncer( - sendMessageConfig?.textFieldConfig?.compositionThresholdTime ?? - const Duration(seconds: 1)); + debouncer = + Debouncer(sendMessageConfig.textFieldConfig.compositionThresholdTime); super.initState(); if (defaultTargetPlatform == TargetPlatform.iOS || @@ -124,185 +127,194 @@ class _ChatUITextFieldState extends State { void attachListeners() { composingStatus.addListener(() { - widget.sendMessageConfig?.textFieldConfig?.onMessageTyping + widget.sendMessageConfig.textFieldConfig.onMessageTyping ?.call(composingStatus.value); }); } @override Widget build(BuildContext context) { - final outlineBorder = _outLineBorder; - return Container( - padding: - textFieldConfig?.padding ?? const EdgeInsets.symmetric(horizontal: 6), - margin: textFieldConfig?.margin, - decoration: BoxDecoration( - borderRadius: textFieldConfig?.borderRadius ?? - BorderRadius.circular(textFieldBorderRadius), - color: sendMessageConfig?.textFieldBackgroundColor ?? Colors.white, - ), - child: ValueListenableBuilder( - valueListenable: isRecording, - builder: (_, isRecordingValue, child) { - return Row( - children: [ - if (isRecordingValue && controller != null && !kIsWeb) - AudioWaveforms( - size: Size( - MediaQuery.of(context).size.width * - (cancelRecordConfiguration == null ? 0.75 : 0.65), - 50), - recorderController: controller!, - margin: voiceRecordingConfig?.margin, - padding: voiceRecordingConfig?.padding ?? - EdgeInsets.symmetric( - horizontal: cancelRecordConfiguration == null ? 8 : 5, - ), - decoration: voiceRecordingConfig?.decoration ?? - BoxDecoration( - color: voiceRecordingConfig?.backgroundColor, - borderRadius: BorderRadius.circular(12.0), - ), - waveStyle: voiceRecordingConfig?.waveStyle ?? - WaveStyle( - extendWaveform: true, - showMiddleLine: false, - waveColor: voiceRecordingConfig?.waveStyle?.waveColor ?? - Colors.black, + final outlineBorder = _outlineBorder; + return ClipRRect( + borderRadius: textFieldConfig.borderRadius ?? + BorderRadius.circular(textFieldBorderRadius), + child: Container( + padding: textFieldConfig.padding ?? + const EdgeInsets.symmetric(horizontal: 6), + margin: textFieldConfig.margin, + decoration: BoxDecoration( + border: textFieldConfig.border, + borderRadius: textFieldConfig.borderRadius ?? + BorderRadius.circular(textFieldBorderRadius), + color: sendMessageConfig.textFieldBackgroundColor, + ), + child: ValueListenableBuilder( + valueListenable: isRecording, + builder: (_, isRecordingValue, child) { + return Row( + children: [ + if (isRecordingValue && controller != null && !kIsWeb) + AudioWaveforms( + size: Size( + MediaQuery.of(context).size.width * + (cancelRecordConfiguration == null ? 0.75 : 0.65), + 50), + recorderController: controller!, + margin: voiceRecordingConfig?.margin, + padding: voiceRecordingConfig?.padding ?? + EdgeInsets.symmetric( + horizontal: cancelRecordConfiguration == null ? 8 : 5, + ), + decoration: voiceRecordingConfig?.decoration ?? + BoxDecoration( + color: voiceRecordingConfig?.backgroundColor, + borderRadius: BorderRadius.circular(12.0), + ), + waveStyle: voiceRecordingConfig?.waveStyle ?? + WaveStyle( + extendWaveform: true, + showMiddleLine: false, + waveColor: + voiceRecordingConfig?.waveStyle?.waveColor ?? + Colors.black, + ), + ) + else + Expanded( + child: TextField( + focusNode: widget.focusNode, + controller: widget.textEditingController, + style: textFieldConfig.textStyle ?? + const TextStyle(color: Colors.white), + maxLines: textFieldConfig.maxLines ?? 5, + minLines: textFieldConfig.minLines ?? 1, + keyboardType: textFieldConfig.textInputType, + inputFormatters: textFieldConfig.inputFormatters, + onChanged: _onChanged, + enabled: textFieldConfig.enabled, + textCapitalization: textFieldConfig.textCapitalization ?? + TextCapitalization.sentences, + decoration: InputDecoration( + hintText: + textFieldConfig.hintText ?? PackageStrings.message, + fillColor: sendMessageConfig.textFieldBackgroundColor, + filled: true, + hintStyle: textFieldConfig.hintStyle ?? + TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + color: Colors.grey.shade600, + letterSpacing: 0.25, + ), + contentPadding: textFieldConfig.contentPadding ?? + const EdgeInsets.symmetric(horizontal: 6), + border: outlineBorder, + focusedBorder: outlineBorder, + enabledBorder: OutlineInputBorder( + borderSide: + const BorderSide(color: Colors.transparent), + borderRadius: textFieldConfig.borderRadius ?? + BorderRadius.circular(textFieldBorderRadius), + ), + disabledBorder: outlineBorder, ), - ) - else - Expanded( - child: TextField( - focusNode: widget.focusNode, - controller: widget.textEditingController, - style: textFieldConfig?.textStyle ?? - const TextStyle(color: Colors.white), - maxLines: textFieldConfig?.maxLines ?? 5, - minLines: textFieldConfig?.minLines ?? 1, - keyboardType: textFieldConfig?.textInputType, - inputFormatters: textFieldConfig?.inputFormatters, - onChanged: _onChanged, - enabled: textFieldConfig?.enabled, - textCapitalization: textFieldConfig?.textCapitalization ?? - TextCapitalization.sentences, - decoration: InputDecoration( - hintText: - textFieldConfig?.hintText ?? PackageStrings.message, - fillColor: sendMessageConfig?.textFieldBackgroundColor ?? - Colors.white, - filled: true, - hintStyle: textFieldConfig?.hintStyle ?? - TextStyle( - fontSize: 16, - fontWeight: FontWeight.w400, - color: Colors.grey.shade600, - letterSpacing: 0.25, - ), - contentPadding: textFieldConfig?.contentPadding ?? - const EdgeInsets.symmetric(horizontal: 6), - border: outlineBorder, - focusedBorder: outlineBorder, - enabledBorder: outlineBorder, - disabledBorder: outlineBorder, ), ), - ), - ValueListenableBuilder( - valueListenable: _inputText, - builder: (_, inputTextValue, child) { - if (inputTextValue.isNotEmpty) { - return IconButton( - color: sendMessageConfig?.defaultSendButtonColor ?? - Colors.green, - onPressed: (textFieldConfig?.enabled ?? true) - ? () { - widget.onPressed(); - _inputText.value = ''; - } - : null, - icon: sendMessageConfig?.sendButtonIcon ?? - const Icon(Icons.send), - ); - } else { - return Row( - children: [ - if (!isRecordingValue) ...[ - if (sendMessageConfig?.enableCameraImagePicker ?? - true) + ValueListenableBuilder( + valueListenable: _inputText, + builder: (_, inputTextValue, child) { + if (inputTextValue.isNotEmpty && widget.enabled) { + return IconButton( + color: sendMessageConfig.defaultSendButtonColor ?? + Colors.green, + onPressed: (textFieldConfig.enabled) + ? () { + widget.onPressed(); + _inputText.value = ''; + } + : null, + icon: sendMessageConfig.sendButtonIcon ?? + const Icon(Icons.send), + ); + } else { + return Row( + children: [ + if (!isRecordingValue && + widget.sendMessageConfig.allowImageSending) ...[ + if (sendMessageConfig.enableCameraImagePicker) + IconButton( + constraints: const BoxConstraints(), + onPressed: (textFieldConfig.enabled) + ? () => _onIconPressed( + ImageSource.camera, + config: sendMessageConfig + .imagePickerConfiguration, + ) + : null, + icon: imagePickerIconsConfig + ?.cameraImagePickerIcon ?? + Icon( + Icons.camera_alt_outlined, + color: imagePickerIconsConfig + ?.cameraIconColor, + ), + ), + if (sendMessageConfig.enableGalleryImagePicker) + IconButton( + constraints: const BoxConstraints(), + onPressed: (textFieldConfig.enabled) + ? () => _onIconPressed( + ImageSource.gallery, + config: sendMessageConfig + .imagePickerConfiguration, + ) + : null, + icon: imagePickerIconsConfig + ?.galleryImagePickerIcon ?? + Icon( + Icons.image, + color: imagePickerIconsConfig + ?.galleryIconColor, + ), + ), + ], + if (widget.sendMessageConfig.allowRecordingVoice && + !kIsWeb && + (Platform.isIOS || Platform.isAndroid)) IconButton( - constraints: const BoxConstraints(), - onPressed: (textFieldConfig?.enabled ?? true) - ? () => _onIconPressed( - ImageSource.camera, - config: sendMessageConfig - ?.imagePickerConfiguration, - ) + onPressed: (textFieldConfig.enabled) + ? _recordOrStop : null, - icon: imagePickerIconsConfig - ?.cameraImagePickerIcon ?? + icon: (isRecordingValue + ? voiceRecordingConfig?.micIcon + : voiceRecordingConfig?.stopIcon) ?? Icon( - Icons.camera_alt_outlined, + isRecordingValue ? Icons.stop : Icons.mic, color: - imagePickerIconsConfig?.cameraIconColor, + voiceRecordingConfig?.recorderIconColor, ), ), - if (sendMessageConfig?.enableGalleryImagePicker ?? - true) + if (isRecordingValue && + cancelRecordConfiguration != null) IconButton( - constraints: const BoxConstraints(), - onPressed: (textFieldConfig?.enabled ?? true) - ? () => _onIconPressed( - ImageSource.gallery, - config: sendMessageConfig - ?.imagePickerConfiguration, - ) - : null, - icon: imagePickerIconsConfig - ?.galleryImagePickerIcon ?? - Icon( - Icons.image, - color: imagePickerIconsConfig - ?.galleryIconColor, - ), + onPressed: () { + cancelRecordConfiguration?.onCancel?.call(); + _cancelRecording(); + }, + icon: cancelRecordConfiguration?.icon ?? + const Icon(Icons.cancel_outlined), + color: cancelRecordConfiguration?.iconColor ?? + voiceRecordingConfig?.recorderIconColor, ), ], - if ((sendMessageConfig?.allowRecordingVoice ?? false) && - !kIsWeb && - (Platform.isIOS || Platform.isAndroid)) - IconButton( - onPressed: (textFieldConfig?.enabled ?? true) - ? _recordOrStop - : null, - icon: (isRecordingValue - ? voiceRecordingConfig?.micIcon - : voiceRecordingConfig?.stopIcon) ?? - Icon( - isRecordingValue ? Icons.stop : Icons.mic, - color: - voiceRecordingConfig?.recorderIconColor, - ), - ), - if (isRecordingValue && - cancelRecordConfiguration != null) - IconButton( - onPressed: () { - cancelRecordConfiguration?.onCancel?.call(); - _cancelRecording(); - }, - icon: cancelRecordConfiguration?.icon ?? - const Icon(Icons.cancel_outlined), - color: cancelRecordConfiguration?.iconColor ?? - voiceRecordingConfig?.recorderIconColor, - ), - ], - ); - } - }, - ), - ], - ); - }, + ); + } + }, + ), + ], + ); + }, + ), ), ); } diff --git a/lib/src/widgets/emoji_picker_widget.dart b/lib/src/widgets/emoji_picker_widget.dart index 97ebf4ab..2385272c 100644 --- a/lib/src/widgets/emoji_picker_widget.dart +++ b/lib/src/widgets/emoji_picker_widget.dart @@ -30,10 +30,10 @@ import '../values/typedefs.dart'; class EmojiPickerWidget extends StatelessWidget { const EmojiPickerWidget({ - Key? key, + super.key, required this.onSelected, this.emojiPickerSheetConfig, - }) : super(key: key); + }); /// Provides callback when user selects emoji. final StringCallback onSelected; diff --git a/lib/src/widgets/message_view.dart b/lib/src/widgets/message_view.dart index 2b834bd9..c7c5203d 100644 --- a/lib/src/widgets/message_view.dart +++ b/lib/src/widgets/message_view.dart @@ -20,6 +20,7 @@ * SOFTWARE. */ import 'package:chatview/chatview.dart'; +import 'package:chatview/src/models/voice_message_configuration.dart'; import 'package:chatview/src/widgets/chat_view_inherited_widget.dart'; import 'package:flutter/material.dart'; @@ -166,6 +167,9 @@ class _MessageViewState extends State children: [ (() { if (message.isAllEmoji) { + if (messageConfig?.emojiMessageBuilder != null) { + return messageConfig!.emojiMessageBuilder!(widget); + } return Stack( clipBehavior: Clip.none, children: [ @@ -200,6 +204,9 @@ class _MessageViewState extends State ], ); } else if (widget.message.messageType.isImage) { + if (messageConfig?.imageMessageBuilder != null) { + return messageConfig!.imageMessageBuilder!(widget); + } return ImageMessageView( message: widget.message, isMessageBySender: widget.isMessageBySender, @@ -209,6 +216,9 @@ class _MessageViewState extends State highlightScale: widget.highlightScale, ); } else if (widget.message.messageType.isText) { + if (messageConfig?.textMessageBuilder != null) { + return messageConfig!.textMessageBuilder!(widget); + } return TextMessageView( inComingChatBubbleConfig: widget.inComingChatBubbleConfig, outgoingChatBubbleConfig: widget.outgoingChatBubbleConfig, @@ -220,10 +230,14 @@ class _MessageViewState extends State highlightMessage: widget.shouldHighlight, ); } else if (widget.message.messageType.isVoice) { + if (messageConfig?.voiceMessageBuilder != null) { + return messageConfig!.voiceMessageBuilder!(widget); + } return VoiceMessageView( screenWidth: MediaQuery.of(context).size.width, message: widget.message, - config: messageConfig?.voiceMessageConfig, + config: messageConfig?.voiceMessageConfig ?? + const VoiceMessageConfiguration(), onMaxDuration: widget.onMaxDuration, isMessageBySender: widget.isMessageBySender, messageReactionConfig: messageConfig?.messageReactionConfig, @@ -232,7 +246,7 @@ class _MessageViewState extends State ); } else if (widget.message.messageType.isCustom && messageConfig?.customMessageBuilder != null) { - return messageConfig?.customMessageBuilder!(widget.message); + return messageConfig?.customMessageBuilder!(widget); } }()) ?? const SizedBox(), @@ -240,7 +254,7 @@ class _MessageViewState extends State valueListenable: widget.message.statusNotifier, builder: (context, value, child) { if (widget.isMessageBySender && - widget.controller?.initialMessageList.last.id == + widget.controller?.initialMessageList.lastOrNull?.id == widget.message.id && widget.message.status == MessageStatus.read) { if (ChatViewInheritedWidget.of(context) diff --git a/lib/src/widgets/reply_icon.dart b/lib/src/widgets/reply_icon.dart index 61c5055f..b7df49b1 100644 --- a/lib/src/widgets/reply_icon.dart +++ b/lib/src/widgets/reply_icon.dart @@ -24,16 +24,12 @@ import 'package:flutter/material.dart'; class ReplyIcon extends StatelessWidget { const ReplyIcon({ Key? key, - required this.scaleAnimation, - required this.slideAnimation, + required this.scaleValue, this.replyIconColor, }) : super(key: key); - /// Represents scale animation value of icon when user swipes for reply. - final Animation scaleAnimation; - - /// Represents slide animation value of chat bubble when user swipes for reply. - final Animation slideAnimation; + /// Represents scale value of icon when user swipes for reply. + final double scaleValue; /// Allow user to set color of icon which is appeared when user swipes for reply. final Color? replyIconColor; @@ -44,11 +40,11 @@ class ReplyIcon extends StatelessWidget { alignment: Alignment.center, children: [ Transform.scale( - scale: scaleAnimation.value, + scale: scaleValue, child: CircleAvatar( radius: 14, backgroundColor: - scaleAnimation.value == 1.0 ? Colors.grey : Colors.transparent, + scaleValue == 1.0 ? Colors.grey : Colors.transparent, child: Icon( Icons.reply_rounded, color: replyIconColor ?? Colors.black, @@ -59,7 +55,7 @@ class ReplyIcon extends StatelessWidget { height: 25, width: 25, child: CircularProgressIndicator( - value: scaleAnimation.value, + value: scaleValue, backgroundColor: Colors.transparent, strokeWidth: 1.5, color: replyIconColor ?? Colors.black, diff --git a/lib/src/widgets/reply_message_view.dart b/lib/src/widgets/reply_message_view.dart index 2c867f1f..aab1c3c8 100644 --- a/lib/src/widgets/reply_message_view.dart +++ b/lib/src/widgets/reply_message_view.dart @@ -83,8 +83,11 @@ class ReplyMessageView extends StatelessWidget { message.message, maxLines: 1, overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 12, + style: (Theme.of(context).textTheme.bodySmall ?? + const TextStyle( + fontSize: 12, + )) + .copyWith( color: sendMessageConfig?.replyMessageColor ?? Colors.black, ), ), diff --git a/lib/src/widgets/send_message_widget.dart b/lib/src/widgets/send_message_widget.dart index 3e41619f..e71d8a04 100644 --- a/lib/src/widgets/send_message_widget.dart +++ b/lib/src/widgets/send_message_widget.dart @@ -19,14 +19,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -import 'dart:io' if (kIsWeb) 'dart:html'; - import 'package:chatview/chatview.dart'; import 'package:chatview/src/extensions/extensions.dart'; import 'package:chatview/src/utils/package_strings.dart'; import 'package:chatview/src/widgets/chatui_textfield.dart'; import 'package:chatview/src/widgets/reply_message_view.dart'; -import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/material.dart'; import '../utils/constants/constants.dart'; @@ -35,8 +32,9 @@ class SendMessageWidget extends StatefulWidget { const SendMessageWidget({ Key? key, required this.onSendTap, + required this.enabled, required this.chatController, - this.sendMessageConfig, + required this.sendMessageConfig, this.backgroundColor, this.sendMessageBuilder, this.onReplyCallback, @@ -45,11 +43,14 @@ class SendMessageWidget extends StatefulWidget { this.replyMessageBuilder, }) : super(key: key); + /// To determine if the user can press send or not. + final bool enabled; + /// Provides call back when user tap on send button on text field. final StringMessageCallBack onSendTap; /// Provides configuration for text field appearance. - final SendMessageConfiguration? sendMessageConfig; + final SendMessageConfiguration sendMessageConfig; /// Allow user to set background colour. final Color? backgroundColor; @@ -88,167 +89,133 @@ class SendMessageWidgetState extends State { ? widget.chatController.getUserFromId(replyMessage.replyTo) : null; + SendMessageConfiguration get sendMessageConfig => widget.sendMessageConfig; + + TextFieldConfiguration get textFieldConfig => + sendMessageConfig.textFieldConfig; + String get _replyTo => replyMessage.replyTo == currentUser?.id ? PackageStrings.you : repliedUser?.name ?? ''; - ChatUser? currentUser; - - @override - void didChangeDependencies() { - super.didChangeDependencies(); - if (provide != null) { - currentUser = provide!.currentUser; - } - } + ChatUser? get currentUser => provide?.currentUser; @override Widget build(BuildContext context) { - return Align( - alignment: Alignment.bottomCenter, - child: widget.sendMessageBuilder != null - ? widget.sendMessageBuilder!(replyMessage) - : SizedBox( + return widget.sendMessageBuilder != null + ? Positioned( + right: 0, + left: 0, + bottom: 0, + child: widget.sendMessageBuilder!(replyMessage), + ) + : Align( + alignment: Alignment.bottomCenter, + child: SizedBox( width: MediaQuery.of(context).size.width, - child: Stack( - children: [ - // This has been added to prevent messages from being - // displayed below the text field - // when the user scrolls the message list. - Positioned( - right: 0, - left: 0, - bottom: 0, - child: Container( - height: MediaQuery.of(context).size.height / - ((!kIsWeb && Platform.isIOS) ? 24 : 28), - color: widget.backgroundColor ?? Colors.white, - ), - ), - Padding( - key: provide?.chatTextFieldViewKey, - padding: EdgeInsets.fromLTRB( - bottomPadding4, - bottomPadding4, - bottomPadding4, - _bottomPadding, - ), - child: Stack( - alignment: Alignment.bottomCenter, - children: [ - ValueListenableBuilder( - builder: (_, state, child) { - final replyTitle = - "${PackageStrings.replyTo} $_replyTo"; - if (state.message.isNotEmpty) { - return widget.replyMessageBuilder - ?.call(context, state) ?? - Container( - decoration: BoxDecoration( - color: widget.sendMessageConfig - ?.textFieldBackgroundColor ?? - Colors.white, - borderRadius: const BorderRadius.vertical( - top: Radius.circular(14), - ), - ), - margin: const EdgeInsets.only( - bottom: 17, - right: 0.4, - left: 0.4, - ), - padding: const EdgeInsets.fromLTRB( - leftPadding, - leftPadding, - leftPadding, - 30, - ), - child: Container( - margin: const EdgeInsets.only(bottom: 2), - padding: const EdgeInsets.symmetric( - vertical: 4, - horizontal: 6, - ), - decoration: BoxDecoration( - color: widget.sendMessageConfig - ?.replyDialogColor ?? - Colors.grey.shade200, - borderRadius: BorderRadius.circular(12), - ), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Text( - replyTitle, - maxLines: 1, - overflow: - TextOverflow.ellipsis, - style: TextStyle( - color: widget - .sendMessageConfig - ?.replyTitleColor ?? - Colors.deepPurple, - fontWeight: FontWeight.bold, - letterSpacing: 0.25, - ), - ), - ), - IconButton( - constraints: - const BoxConstraints(), - padding: EdgeInsets.zero, - icon: Icon( - Icons.close, - color: widget - .sendMessageConfig - ?.closeIconColor ?? - Colors.black, - size: 16, - ), - onPressed: onCloseTap, - ), - ], - ), - ReplyMessageView( - message: state, - customMessageReplyViewBuilder: widget - .messageConfig - ?.customMessageReplyViewBuilder, - sendMessageConfig: - widget.sendMessageConfig, + child: Container( + padding: textFieldConfig.padding ?? + const EdgeInsets.symmetric(horizontal: 6), + margin: textFieldConfig.margin, + decoration: BoxDecoration( + border: textFieldConfig.border, + borderRadius: textFieldConfig.borderRadius ?? + BorderRadius.circular(textFieldBorderRadius), + color: sendMessageConfig.textFieldBackgroundColor, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + ValueListenableBuilder( + valueListenable: _replyMessage, + builder: (_, state, child) { + if (state.message.isNotEmpty) { + if (widget.replyMessageBuilder != null) { + return widget.replyMessageBuilder! + .call(context, state); + } + + return Container( + height: 60, + margin: const EdgeInsets.symmetric( + horizontal: 2, + vertical: 4, + ), + padding: const EdgeInsets.symmetric( + horizontal: textFieldBorderRadius / 2, + vertical: 6, + ), + decoration: BoxDecoration( + color: widget.sendMessageConfig.replyDialogColor, + borderRadius: + BorderRadius.circular(textFieldBorderRadius), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Flexible( + child: Text( + _replyTo, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: widget.sendMessageConfig + .replyTitleColor, + fontWeight: FontWeight.bold, + letterSpacing: 0.25, ), - ], + ), + ), + ReplyMessageView( + message: state, + customMessageReplyViewBuilder: widget + .messageConfig + ?.customMessageReplyViewBuilder, + sendMessageConfig: + widget.sendMessageConfig, ), - ), - ); - } else { - return const SizedBox.shrink(); - } - }, - valueListenable: _replyMessage, - ), - ChatUITextField( - focusNode: _focusNode, - textEditingController: _textEditingController, - onPressed: _onPressed, - sendMessageConfig: widget.sendMessageConfig, - onRecordingComplete: _onRecordingComplete, - onImageSelected: _onImageSelected, - ) - ], + ], + ), + ), + IconButton( + constraints: const BoxConstraints(), + padding: EdgeInsets.zero, + icon: Icon( + Icons.close, + color: + widget.sendMessageConfig.closeIconColor, + size: 16, + ), + onPressed: onCloseTap, + ), + ], + ), + ); + } else { + return const SizedBox.shrink(); + } + }, ), - ), - ], + ChatUITextField( + enabled: widget.enabled, + focusNode: _focusNode, + textEditingController: _textEditingController, + onPressed: _onPressed, + sendMessageConfig: widget.sendMessageConfig, + onRecordingComplete: _onRecordingComplete, + onImageSelected: _onImageSelected, + ) + ], + ), ), ), - ); + ); } void _onRecordingComplete(String? path) { @@ -305,14 +272,6 @@ class SendMessageWidgetState extends State { if (widget.onReplyCloseCallback != null) widget.onReplyCloseCallback!(); } - double get _bottomPadding => (!kIsWeb && Platform.isIOS) - ? (_focusNode.hasFocus - ? bottomPadding1 - : View.of(context).viewPadding.bottom > 0 - ? bottomPadding2 - : bottomPadding3) - : bottomPadding3; - @override void dispose() { _textEditingController.dispose(); diff --git a/lib/src/widgets/suggestions/suggestion_list.dart b/lib/src/widgets/suggestions/suggestion_list.dart index 1fb0c36b..d9326f6b 100644 --- a/lib/src/widgets/suggestions/suggestion_list.dart +++ b/lib/src/widgets/suggestions/suggestion_list.dart @@ -22,6 +22,7 @@ class _SuggestionListState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; + ValueNotifier>? newSuggestions; @override void initState() { super.initState(); @@ -32,15 +33,15 @@ class _SuggestionListState extends State ); WidgetsBinding.instance.addPostFrameCallback((_) { if (!mounted) return; - final newSuggestions = provide?.chatController.newSuggestions; + newSuggestions = provide?.chatController.newSuggestions; newSuggestions?.addListener(animateSuggestionList); }); } void animateSuggestionList() { - final newSuggestions = provide?.chatController.newSuggestions; + newSuggestions = provide?.chatController.newSuggestions; if (newSuggestions != null) { - newSuggestions.value.isEmpty + newSuggestions!.value.isEmpty ? _controller.reverse() : _controller.forward(); } @@ -93,7 +94,6 @@ class _SuggestionListState extends State @override void dispose() { _controller.dispose(); - final newSuggestions = provide?.chatController.newSuggestions; newSuggestions?.removeListener(animateSuggestionList); super.dispose(); } diff --git a/lib/src/widgets/swipe_to_reply.dart b/lib/src/widgets/swipe_to_reply.dart index 07157f4b..cd5b3f25 100644 --- a/lib/src/widgets/swipe_to_reply.dart +++ b/lib/src/widgets/swipe_to_reply.dart @@ -19,25 +19,57 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'reply_icon.dart'; +enum SwipeToReplyType { + leftRight, + inwardsOutwards, +} + class SwipeToReply extends StatefulWidget { const SwipeToReply({ Key? key, - this.onLeftSwipe, required this.child, + required this.isMessageBySender, this.replyIconColor, - this.onRightSwipe, - this.swipeToReplyAnimationDuration, - }) : super(key: key); + this.onSwipeOutwards, + this.onSwipeInwards, + this.onSwipeLeft, + this.onSwipeRight, + }) : assert( + (onSwipeInwards == null && + onSwipeOutwards == null && + onSwipeLeft == null && + onSwipeRight == null) || + ((onSwipeInwards != null || onSwipeOutwards != null) && + onSwipeLeft == null && + onSwipeRight == null) || + ((onSwipeLeft != null || onSwipeRight != null) && + onSwipeInwards == null && + onSwipeOutwards == null), + 'You can either set onSwipeLeft and/or onSwipeRight,' + 'but onSwipeInwards and onSwipeOutwards have to be null or' + 'the other way around; or all swipe actions have to be null', + ), + super(key: key); + + /// Provides callback when user swipes chat bubble into the middle. + final VoidCallback? onSwipeInwards; - /// Provides callback when user swipes chat bubble from right side. - final VoidCallback? onRightSwipe; + /// Provides callback when user swipes chat bubble to the edge of the view. + final VoidCallback? onSwipeOutwards; - /// Provides callback when user swipes chat bubble from left side. - final VoidCallback? onLeftSwipe; + /// Provides callback when user swipes chat bubble to the left. + final VoidCallback? onSwipeLeft; + + /// Provides callback when user swipes chat bubble to the right. + final VoidCallback? onSwipeRight; + + /// Handles message mirrored if true compared to if false + final bool isMessageBySender; /// Allow user to set widget which is showed while user swipes chat bubble. final Widget child; @@ -45,8 +77,10 @@ class SwipeToReply extends StatefulWidget { /// Allow user to change colour of reply icon which is showed while user swipes. final Color? replyIconColor; - /// Allow user to set duration of animation of icon. - final Duration? swipeToReplyAnimationDuration; + SwipeToReplyType get swipeToReplyType => + (onSwipeLeft != null || onSwipeRight != null) + ? SwipeToReplyType.leftRight + : SwipeToReplyType.inwardsOutwards; @override State createState() => _SwipeToReplyState(); @@ -54,70 +88,124 @@ class SwipeToReply extends StatefulWidget { class _SwipeToReplyState extends State with SingleTickerProviderStateMixin { - late final AnimationController _controller; - late Animation _leftScaleAnimation; - late Animation _rightScaleAnimation; - late Animation _slideAnimation; + ValueNotifier valueListener = ValueNotifier(0); + + double clampLower = -0.25; + double clampUpper = 1.0; + + double get clampOuter => widget.onSwipeOutwards != null ? clampLower : 0; + double get clampInner => widget.onSwipeInwards != null ? clampUpper : 0; + + double innerBoundThreshold = 0.7; + double outerBoundThreshold = 0.8; + + double get innerBound => + (widget.isMessageBySender ? -clampLower : clampUpper) * + innerBoundThreshold; + double get outerBound => + (widget.isMessageBySender ? -clampUpper : clampLower) * + outerBoundThreshold; + + bool get isInwardsOutwardsSwiper => + widget.swipeToReplyType == SwipeToReplyType.inwardsOutwards; @override void initState() { super.initState(); - _initializeAnimationControllers(); - } - - void _initializeAnimationControllers() { - _controller = AnimationController( - vsync: this, - duration: widget.swipeToReplyAnimationDuration ?? - const Duration(milliseconds: 250), - ); - _slideAnimation = Tween( - begin: const Offset(0.0, 0.0), - end: const Offset(0.0, 0.0), - ).animate(CurvedAnimation(curve: Curves.decelerate, parent: _controller)); - _leftScaleAnimation = _controller.drive( - Tween(begin: 0.0, end: 0.0), - ); - _rightScaleAnimation = _controller.drive( - Tween(begin: 0.0, end: 0.0), - ); + if (widget.isMessageBySender && isInwardsOutwardsSwiper) { + var tmp = clampLower; + clampLower = -clampUpper; + clampUpper = -tmp; + } } @override Widget build(BuildContext context) { return GestureDetector( - onHorizontalDragUpdate: _onHorizontalDragUpdate, + onHorizontalDragEnd: (details) { + if (kDebugMode) { + print('valueListener.value on release: ${valueListener.value}'); + } + + if (isInwardsOutwardsSwiper) { + // Handle inwards and outwards + final valueOnRelease = + valueListener.value * (widget.isMessageBySender ? -1 : 1); + + if (valueOnRelease < 0 && valueOnRelease < outerBound) { + widget.onSwipeOutwards?.call(); + } else if (valueOnRelease > 0 && valueOnRelease > innerBound) { + widget.onSwipeInwards?.call(); + } + } else { + // Handle left and right + if (valueListener.value < 0 && valueListener.value < clampLower / 2) { + widget.onSwipeLeft?.call(); + } else if (valueListener.value > 0 && + valueListener.value > clampUpper / 2) { + widget.onSwipeRight?.call(); + } + } + valueListener.value = 0; + }, + onHorizontalDragUpdate: (details) { + valueListener.value = (valueListener.value + + (details.delta.dx / context.size!.width) * 4.5) + .clamp(clampLower, clampUpper); + }, child: AnimatedBuilder( - animation: _controller, + animation: valueListener, builder: (context, child) { + var dragValue = valueListener.value * + ((widget.isMessageBySender && isInwardsOutwardsSwiper) ? -1 : 1); + + // This widget is handling right and inwards swiping + final inwardsWidget = Visibility( + visible: + ((isInwardsOutwardsSwiper && widget.onSwipeInwards != null) || + widget.onSwipeRight != null) && + dragValue > 0, + child: ReplyIcon( + scaleValue: dragValue, + replyIconColor: widget.replyIconColor, + ), + ); + + // This widget is handling left and outwards swiping + final outwardsWidget = Visibility( + visible: + ((isInwardsOutwardsSwiper && widget.onSwipeOutwards != null) || + widget.onSwipeLeft != null) && + dragValue < 0, + child: ReplyIcon( + scaleValue: dragValue, + replyIconColor: widget.replyIconColor, + ), + ); + + final actionIndicators = [inwardsWidget, outwardsWidget]; return Stack( alignment: Alignment.center, fit: StackFit.passthrough, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Visibility( - visible: widget.onRightSwipe != null, - child: ReplyIcon( - scaleAnimation: _leftScaleAnimation, - slideAnimation: _slideAnimation, - replyIconColor: widget.replyIconColor, - ), - ), - Visibility( - visible: widget.onLeftSwipe != null, - child: ReplyIcon( - scaleAnimation: _rightScaleAnimation, - slideAnimation: _slideAnimation, - replyIconColor: widget.replyIconColor, - ), - ), - ], + children: widget.isMessageBySender && isInwardsOutwardsSwiper + ? actionIndicators.reversed.toList() + : actionIndicators, ), - SlideTransition( - position: _slideAnimation, - child: widget.child, + Align( + alignment: widget.isMessageBySender + ? Alignment.centerRight + : Alignment.centerLeft, + child: Transform.translate( + offset: Offset(valueListener.value * 35, 0), + child: Container( + color: Colors.transparent, + constraints: const BoxConstraints(minWidth: 150), + child: widget.child, + ), + ), ), ], ); @@ -125,44 +213,4 @@ class _SwipeToReplyState extends State ), ); } - - void _onHorizontalDragUpdate(DragUpdateDetails details) { - if (widget.onRightSwipe != null && details.delta.dx > 1) { - _runAnimation(onRight: true); - } - if (widget.onLeftSwipe != null && details.delta.dx < -1) { - _runAnimation(onRight: false); - } - } - - void _runAnimation({required bool onRight}) { - _slideAnimation = Tween( - begin: const Offset(0.0, 0.0), - end: Offset(onRight ? 0.1 : -0.1, 0.0), - ).animate(CurvedAnimation(curve: Curves.decelerate, parent: _controller)); - if (onRight) { - _leftScaleAnimation = Tween(begin: 0.0, end: 1.0).animate( - CurvedAnimation(curve: Curves.decelerate, parent: _controller)); - } else { - _rightScaleAnimation = Tween(begin: 0.0, end: 1.0).animate( - CurvedAnimation(curve: Curves.decelerate, parent: _controller)); - } - _controller.forward().whenComplete(() { - _controller.reverse().whenComplete(() { - if (onRight) { - _leftScaleAnimation = _controller.drive(Tween(begin: 0.0, end: 0.0)); - if (widget.onRightSwipe != null) widget.onRightSwipe!(); - } else { - _rightScaleAnimation = _controller.drive(Tween(begin: 0.0, end: 0.0)); - if (widget.onLeftSwipe != null) widget.onLeftSwipe!(); - } - }); - }); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } } diff --git a/lib/src/widgets/voice_message_view.dart b/lib/src/widgets/voice_message_view.dart index 51dd06ac..47efefd3 100644 --- a/lib/src/widgets/voice_message_view.dart +++ b/lib/src/widgets/voice_message_view.dart @@ -13,15 +13,15 @@ class VoiceMessageView extends StatefulWidget { required this.screenWidth, required this.message, required this.isMessageBySender, + required this.config, this.inComingChatBubbleConfig, this.outgoingChatBubbleConfig, this.onMaxDuration, this.messageReactionConfig, - this.config, }) : super(key: key); /// Provides configuration related to voice message. - final VoiceMessageConfiguration? config; + final VoiceMessageConfiguration config; /// Allow user to set width of chat bubble. final double screenWidth; @@ -55,17 +55,14 @@ class _VoiceMessageViewState extends State { PlayerState get playerState => _playerState.value; - PlayerWaveStyle playerWaveStyle = const PlayerWaveStyle(scaleFactor: 70); - @override void initState() { super.initState(); controller = PlayerController() ..preparePlayer( path: widget.message.message, - noOfSamples: widget.config?.playerWaveStyle - ?.getSamplesForWidth(widget.screenWidth * 0.5) ?? - playerWaveStyle.getSamplesForWidth(widget.screenWidth * 0.5), + noOfSamples: widget.config.playerWaveStyle + .getSamplesForWidth(widget.screenWidth * 0.5), ).whenComplete(() => widget.onMaxDuration?.call(controller.maxDuration)); playerStateSubscription = controller.onPlayerStateChanged .listen((state) => _playerState.value = state); @@ -85,16 +82,15 @@ class _VoiceMessageViewState extends State { clipBehavior: Clip.none, children: [ Container( - decoration: widget.config?.decoration ?? + decoration: widget.config.decoration ?? BoxDecoration( borderRadius: BorderRadius.circular(12), color: widget.isMessageBySender ? widget.outgoingChatBubbleConfig?.color : widget.inComingChatBubbleConfig?.color, ), - padding: widget.config?.padding ?? - const EdgeInsets.symmetric(horizontal: 8), - margin: widget.config?.margin ?? + padding: widget.config.padding, + margin: widget.config.margin ?? EdgeInsets.symmetric( horizontal: 8, vertical: widget.message.reaction.reactions.isNotEmpty ? 15 : 0, @@ -108,15 +104,17 @@ class _VoiceMessageViewState extends State { onPressed: _playOrPause, icon: state.isStopped || state.isPaused || state.isInitialised - ? widget.config?.playIcon ?? - const Icon( + ? widget.config.playIcon ?? + Icon( Icons.play_arrow, - color: Colors.white, + color: widget.config.playIconColor ?? + const Color(0xffffffff), ) - : widget.config?.pauseIcon ?? - const Icon( + : widget.config.pauseIcon ?? + Icon( Icons.stop, - color: Colors.white, + color: widget.config.pauseIconColor ?? + const Color(0xffffffff), ), ); }, @@ -126,15 +124,12 @@ class _VoiceMessageViewState extends State { size: Size(widget.screenWidth * 0.50, 60), playerController: controller, waveformType: WaveformType.fitWidth, - playerWaveStyle: - widget.config?.playerWaveStyle ?? playerWaveStyle, - padding: widget.config?.waveformPadding ?? - const EdgeInsets.only(right: 10), - margin: widget.config?.waveformMargin, - animationCurve: widget.config?.animationCurve ?? Curves.easeIn, - animationDuration: widget.config?.animationDuration ?? - const Duration(milliseconds: 500), - enableSeekGesture: widget.config?.enableSeekGesture ?? true, + playerWaveStyle: widget.config.playerWaveStyle, + padding: widget.config.waveformPadding, + margin: widget.config.waveformMargin, + animationCurve: widget.config.animationCurve, + animationDuration: widget.config.animationDuration, + enableSeekGesture: widget.config.enableSeekGesture, ), ], ), diff --git a/pubspec.yaml b/pubspec.yaml index 45dc3665..20485fb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ dependencies: sdk: flutter intl: ^0.19.0 url_launcher: ^6.1.14 - emoji_picker_flutter: ^2.1.1 + emoji_picker_flutter: ^2.2.0 any_link_preview: ^3.0.1 image_picker: '>=0.8.9 <2.0.0' audio_waveforms: ^1.0.5