From 402b6473d809b6ae71bb78d3ea34825f17be0a1a Mon Sep 17 00:00:00 2001 From: epriestley Date: Sat, 21 Jan 2017 08:11:19 -0800 Subject: [PATCH 01/21] Move Favorites and User menus to MenuBarExtensions Summary: Ref T12140. The major effect of this change is that uninstalling "Home" (as we do on admin.phacility.com) no longer uninstalls the user menu (which is required to access settings or log out). This also simplifies the code a bit, by consolidating how menus are built into MenuBarExtensions instead of some in Applications and some in Extensions. Test Plan: - While logged in and logged out, saw main menus in the correct order. - Uninstalled Favorites, saw the menu vanish. - Uninstalled Home, still had a user menu. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12140 Differential Revision: https://secure.phabricator.com/D17239 --- src/__phutil_library_map__.php | 4 + .../PhabricatorAuthMainMenuBarExtension.php | 4 + .../base/PhabricatorApplication.php | 17 --- .../PhabricatorFavoritesApplication.php | 78 ------------ ...abricatorFavoritesMainMenuBarExtension.php | 96 +++++++++++++++ .../PhabricatorHomeApplication.php | 110 ----------------- .../PeopleMainMenuBarExtension.php | 116 ++++++++++++++++++ .../menu/PhabricatorMainMenuBarExtension.php | 5 + .../page/menu/PhabricatorMainMenuView.php | 21 +--- 9 files changed, 231 insertions(+), 220 deletions(-) create mode 100644 src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php create mode 100644 src/applications/people/engineextension/PeopleMainMenuBarExtension.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index c828c6b04e..7ce9b1c72d 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1785,6 +1785,7 @@ phutil_register_library_map(array( 'PeopleBrowseUserDirectoryCapability' => 'applications/people/capability/PeopleBrowseUserDirectoryCapability.php', 'PeopleCreateUsersCapability' => 'applications/people/capability/PeopleCreateUsersCapability.php', 'PeopleHovercardEngineExtension' => 'applications/people/engineextension/PeopleHovercardEngineExtension.php', + 'PeopleMainMenuBarExtension' => 'applications/people/engineextension/PeopleMainMenuBarExtension.php', 'PeopleUserLogGarbageCollector' => 'applications/people/garbagecollector/PeopleUserLogGarbageCollector.php', 'Phabricator404Controller' => 'applications/base/controller/Phabricator404Controller.php', 'PhabricatorAWSConfigOptions' => 'applications/config/option/PhabricatorAWSConfigOptions.php', @@ -2671,6 +2672,7 @@ phutil_register_library_map(array( 'PhabricatorFavoritesApplication' => 'applications/favorites/application/PhabricatorFavoritesApplication.php', 'PhabricatorFavoritesController' => 'applications/favorites/controller/PhabricatorFavoritesController.php', 'PhabricatorFavoritesMainController' => 'applications/favorites/controller/PhabricatorFavoritesMainController.php', + 'PhabricatorFavoritesMainMenuBarExtension' => 'applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php', 'PhabricatorFavoritesMenuItemController' => 'applications/favorites/controller/PhabricatorFavoritesMenuItemController.php', 'PhabricatorFavoritesProfileMenuEngine' => 'applications/favorites/engine/PhabricatorFavoritesProfileMenuEngine.php', 'PhabricatorFaxContentSource' => 'infrastructure/contentsource/PhabricatorFaxContentSource.php', @@ -6662,6 +6664,7 @@ phutil_register_library_map(array( 'PeopleBrowseUserDirectoryCapability' => 'PhabricatorPolicyCapability', 'PeopleCreateUsersCapability' => 'PhabricatorPolicyCapability', 'PeopleHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension', + 'PeopleMainMenuBarExtension' => 'PhabricatorMainMenuBarExtension', 'PeopleUserLogGarbageCollector' => 'PhabricatorGarbageCollector', 'Phabricator404Controller' => 'PhabricatorController', 'PhabricatorAWSConfigOptions' => 'PhabricatorApplicationConfigOptions', @@ -7685,6 +7688,7 @@ phutil_register_library_map(array( 'PhabricatorFavoritesApplication' => 'PhabricatorApplication', 'PhabricatorFavoritesController' => 'PhabricatorController', 'PhabricatorFavoritesMainController' => 'PhabricatorFavoritesController', + 'PhabricatorFavoritesMainMenuBarExtension' => 'PhabricatorMainMenuBarExtension', 'PhabricatorFavoritesMenuItemController' => 'PhabricatorFavoritesController', 'PhabricatorFavoritesProfileMenuEngine' => 'PhabricatorProfileMenuEngine', 'PhabricatorFaxContentSource' => 'PhabricatorContentSource', diff --git a/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php b/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php index 2757bec91c..d9d251ab07 100644 --- a/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php +++ b/src/applications/auth/extension/PhabricatorAuthMainMenuBarExtension.php @@ -9,6 +9,10 @@ final class PhabricatorAuthMainMenuBarExtension return true; } + public function getExtensionOrder() { + return 900; + } + public function buildMainMenus() { $viewer = $this->getViewer(); diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index e50045b0e9..63ab9d2315 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -315,23 +315,6 @@ abstract class PhabricatorApplication } - /** - * Build extra items for the main menu. Generally, this is used to render - * static dropdowns. - * - * @param PhabricatorUser The viewing user. - * @param AphrontController The current controller. May be null for special - * pages like 404, exception handlers, etc. - * @return view List of menu items. - * @task ui - */ - public function buildMainMenuExtraNodes( - PhabricatorUser $viewer, - PhabricatorController $controller = null) { - return array(); - } - - /* -( Application Management )--------------------------------------------- */ diff --git a/src/applications/favorites/application/PhabricatorFavoritesApplication.php b/src/applications/favorites/application/PhabricatorFavoritesApplication.php index 958355a2b5..1d5d3ae2aa 100644 --- a/src/applications/favorites/application/PhabricatorFavoritesApplication.php +++ b/src/applications/favorites/application/PhabricatorFavoritesApplication.php @@ -32,82 +32,4 @@ final class PhabricatorFavoritesApplication extends PhabricatorApplication { return false; } - public function buildMainMenuExtraNodes( - PhabricatorUser $viewer, - PhabricatorController $controller = null) { - - $dropdown = $this->renderFavoritesDropdown($viewer); - if (!$dropdown) { - return null; - } - - return id(new PHUIButtonView()) - ->setTag('a') - ->setHref('#') - ->setIcon('fa-star') - ->addClass('phabricator-core-user-menu') - ->setNoCSS(true) - ->setDropdown(true) - ->setDropdownMenu($dropdown); - } - - private function renderFavoritesDropdown(PhabricatorUser $viewer) { - $application = __CLASS__; - - $applications = id(new PhabricatorApplicationQuery()) - ->setViewer($viewer) - ->withClasses(array($application)) - ->withInstalled(true) - ->execute(); - $favorites = head($applications); - if (!$favorites) { - return null; - } - - $menu_engine = id(new PhabricatorFavoritesProfileMenuEngine()) - ->setViewer($viewer) - ->setProfileObject($favorites); - - if ($viewer->getPHID()) { - $menu_engine - ->setCustomPHID($viewer->getPHID()) - ->setMenuType(PhabricatorProfileMenuEngine::MENU_COMBINED); - } else { - $menu_engine - ->setMenuType(PhabricatorProfileMenuEngine::MENU_GLOBAL); - } - - $filter_view = $menu_engine->buildNavigation(); - - $menu_view = $filter_view->getMenu(); - $item_views = $menu_view->getItems(); - - $view = id(new PhabricatorActionListView()) - ->setViewer($viewer); - foreach ($item_views as $item) { - $type = null; - if (!strlen($item->getName())) { - $type = PhabricatorActionView::TYPE_DIVIDER; - } - $action = id(new PhabricatorActionView()) - ->setName($item->getName()) - ->setHref($item->getHref()) - ->setType($type); - $view->addAction($action); - } - - // Build out edit interface - if ($viewer->isLoggedIn()) { - $view->addAction( - id(new PhabricatorActionView()) - ->setType(PhabricatorActionView::TYPE_DIVIDER)); - $view->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Edit Favorites')) - ->setHref('/favorites/')); - } - - return $view; - } - } diff --git a/src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php b/src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php new file mode 100644 index 0000000000..990ecad993 --- /dev/null +++ b/src/applications/favorites/engineextension/PhabricatorFavoritesMainMenuBarExtension.php @@ -0,0 +1,96 @@ +getViewer(); + + $dropdown = $this->newDropdown($viewer); + if (!$dropdown) { + return null; + } + + $favorites_menu = id(new PHUIButtonView()) + ->setTag('a') + ->setHref('#') + ->setIcon('fa-star') + ->addClass('phabricator-core-user-menu') + ->setNoCSS(true) + ->setDropdown(true) + ->setDropdownMenu($dropdown); + + return array( + $favorites_menu, + ); + } + + private function newDropdown(PhabricatorUser $viewer) { + $applications = id(new PhabricatorApplicationQuery()) + ->setViewer($viewer) + ->withClasses(array('PhabricatorFavoritesApplication')) + ->withInstalled(true) + ->execute(); + $favorites = head($applications); + if (!$favorites) { + return null; + } + + $menu_engine = id(new PhabricatorFavoritesProfileMenuEngine()) + ->setViewer($viewer) + ->setProfileObject($favorites); + + if ($viewer->getPHID()) { + $menu_engine + ->setCustomPHID($viewer->getPHID()) + ->setMenuType(PhabricatorProfileMenuEngine::MENU_COMBINED); + } else { + $menu_engine + ->setMenuType(PhabricatorProfileMenuEngine::MENU_GLOBAL); + } + + $filter_view = $menu_engine->buildNavigation(); + + $menu_view = $filter_view->getMenu(); + $item_views = $menu_view->getItems(); + + $view = id(new PhabricatorActionListView()) + ->setViewer($viewer); + foreach ($item_views as $item) { + $type = null; + if (!strlen($item->getName())) { + $type = PhabricatorActionView::TYPE_DIVIDER; + } + $action = id(new PhabricatorActionView()) + ->setName($item->getName()) + ->setHref($item->getHref()) + ->setType($type); + $view->addAction($action); + } + + if ($viewer->isLoggedIn()) { + $view->addAction( + id(new PhabricatorActionView()) + ->setType(PhabricatorActionView::TYPE_DIVIDER)); + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Edit Favorites')) + ->setHref('/favorites/')); + } + + return $view; + } + +} diff --git a/src/applications/home/application/PhabricatorHomeApplication.php b/src/applications/home/application/PhabricatorHomeApplication.php index 20858e4931..a860bc8fb3 100644 --- a/src/applications/home/application/PhabricatorHomeApplication.php +++ b/src/applications/home/application/PhabricatorHomeApplication.php @@ -42,114 +42,4 @@ final class PhabricatorHomeApplication extends PhabricatorApplication { return 9; } - public function buildMainMenuExtraNodes( - PhabricatorUser $viewer, - PhabricatorController $controller = null) { - - if (!$viewer->isLoggedIn()) { - return; - } - - $image = $viewer->getProfileImageURI(); - - $profile_image = id(new PHUIIconView()) - ->setImage($image) - ->setHeadSize(PHUIIconView::HEAD_SMALL); - - if ($controller) { - $application = $controller->getCurrentApplication(); - } else { - $application = null; - } - $dropdown_menu = $this->renderUserDropdown($viewer, $application); - - $menu_id = celerity_generate_unique_node_id(); - - Javelin::initBehavior( - 'user-menu', - array( - 'menuID' => $menu_id, - 'menu' => $dropdown_menu->getDropdownMenuMetadata(), - )); - - return id(new PHUIButtonView()) - ->setID($menu_id) - ->setTag('a') - ->setHref('/p/'.$viewer->getUsername().'/') - ->setIcon($profile_image) - ->addClass('phabricator-core-user-menu') - ->setHasCaret(true) - ->setNoCSS(true); - } - - private function renderUserDropdown( - PhabricatorUser $viewer, - $application) { - - $person_to_show = id(new PHUIObjectItemView()) - ->setObjectName($viewer->getRealName()) - ->setSubHead($viewer->getUsername()) - ->setImageURI($viewer->getProfileImageURI()); - - $user_view = id(new PHUIObjectItemListView()) - ->setViewer($viewer) - ->setFlush(true) - ->setSimple(true) - ->addItem($person_to_show) - ->addClass('phabricator-core-user-profile-object'); - - $view = id(new PhabricatorActionListView()) - ->setViewer($viewer); - - // User Menu - $view->addAction( - id(new PhabricatorActionView()) - ->appendChild($user_view)); - - $view->addAction( - id(new PhabricatorActionView()) - ->setType(PhabricatorActionView::TYPE_DIVIDER)); - - $view->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Profile')) - ->setHref('/p/'.$viewer->getUsername().'/')); - - $view->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Settings')) - ->setHref('/settings/user/'.$viewer->getUsername().'/')); - - $view->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Manage')) - ->setHref('/people/manage/'.$viewer->getID().'/')); - - // Help Menus - if ($application) { - $help_links = $application->getHelpMenuItems($viewer); - if ($help_links) { - foreach ($help_links as $link) { - $view->addAction($link); - } - } - } - - // Logout Menu - $view->addAction( - id(new PhabricatorActionView()) - ->addSigil('logout-item') - ->setType(PhabricatorActionView::TYPE_DIVIDER)); - - $view->addAction( - id(new PhabricatorActionView()) - ->setName(pht('Log Out %s', $viewer->getUsername())) - ->addSigil('logout-item') - ->setHref('/logout/') - ->setColor(PhabricatorActionView::RED) - ->setWorkflow(true)); - - return $view; - } - } diff --git a/src/applications/people/engineextension/PeopleMainMenuBarExtension.php b/src/applications/people/engineextension/PeopleMainMenuBarExtension.php new file mode 100644 index 0000000000..cd1cffa7a2 --- /dev/null +++ b/src/applications/people/engineextension/PeopleMainMenuBarExtension.php @@ -0,0 +1,116 @@ +isLoggedIn(); + } + + public function getExtensionOrder() { + return 1200; + } + + public function buildMainMenus() { + $viewer = $this->getViewer(); + $application = $this->getApplication(); + $dropdown_menu = $this->newDropdown($viewer, $application); + + $menu_id = celerity_generate_unique_node_id(); + + Javelin::initBehavior( + 'user-menu', + array( + 'menuID' => $menu_id, + 'menu' => $dropdown_menu->getDropdownMenuMetadata(), + )); + + $image = $viewer->getProfileImageURI(); + $profile_image = id(new PHUIIconView()) + ->setImage($image) + ->setHeadSize(PHUIIconView::HEAD_SMALL); + + $user_menu = id(new PHUIButtonView()) + ->setID($menu_id) + ->setTag('a') + ->setHref('/p/'.$viewer->getUsername().'/') + ->setIcon($profile_image) + ->addClass('phabricator-core-user-menu') + ->setHasCaret(true) + ->setNoCSS(true); + + return array( + $user_menu, + ); + } + + private function newDropdown( + PhabricatorUser $viewer, + $application) { + + $person_to_show = id(new PHUIObjectItemView()) + ->setObjectName($viewer->getRealName()) + ->setSubHead($viewer->getUsername()) + ->setImageURI($viewer->getProfileImageURI()); + + $user_view = id(new PHUIObjectItemListView()) + ->setViewer($viewer) + ->setFlush(true) + ->setSimple(true) + ->addItem($person_to_show) + ->addClass('phabricator-core-user-profile-object'); + + $view = id(new PhabricatorActionListView()) + ->setViewer($viewer); + + $view->addAction( + id(new PhabricatorActionView()) + ->appendChild($user_view)); + + $view->addAction( + id(new PhabricatorActionView()) + ->setType(PhabricatorActionView::TYPE_DIVIDER)); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Profile')) + ->setHref('/p/'.$viewer->getUsername().'/')); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Settings')) + ->setHref('/settings/user/'.$viewer->getUsername().'/')); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Manage')) + ->setHref('/people/manage/'.$viewer->getID().'/')); + + if ($application) { + $help_links = $application->getHelpMenuItems($viewer); + if ($help_links) { + foreach ($help_links as $link) { + $view->addAction($link); + } + } + } + + $view->addAction( + id(new PhabricatorActionView()) + ->addSigil('logout-item') + ->setType(PhabricatorActionView::TYPE_DIVIDER)); + + $view->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Log Out %s', $viewer->getUsername())) + ->addSigil('logout-item') + ->setHref('/logout/') + ->setColor(PhabricatorActionView::RED) + ->setWorkflow(true)); + + return $view; + } + +} diff --git a/src/view/page/menu/PhabricatorMainMenuBarExtension.php b/src/view/page/menu/PhabricatorMainMenuBarExtension.php index 8b863c835c..fede2fdb85 100644 --- a/src/view/page/menu/PhabricatorMainMenuBarExtension.php +++ b/src/view/page/menu/PhabricatorMainMenuBarExtension.php @@ -64,12 +64,17 @@ abstract class PhabricatorMainMenuBarExtension extends Phobject { return true; } + public function getExtensionOrder() { + return 1000; + } + abstract public function buildMainMenus(); final public static function getAllExtensions() { return id(new PhutilClassMapQuery()) ->setAncestorClass(__CLASS__) ->setUniqueMethod('getExtensionKey') + ->setSortMethod('getExtensionOrder') ->execute(); } diff --git a/src/view/page/menu/PhabricatorMainMenuView.php b/src/view/page/menu/PhabricatorMainMenuView.php index 75071a9ee5..e923a5e348 100644 --- a/src/view/page/menu/PhabricatorMainMenuView.php +++ b/src/view/page/menu/PhabricatorMainMenuView.php @@ -82,20 +82,6 @@ final class PhabricatorMainMenuView extends AphrontView { phutil_implode_html(' ', $aural)); } - // Build out Header Menus - $applications = PhabricatorApplication::getAllInstalledApplications(); - - $menus = array(); - $controller = $this->getController(); - foreach ($applications as $application) { - $app_extra = $application->buildMainMenuExtraNodes( - $viewer, - $controller); - if ($app_extra !== null) { - $menus[] = $app_extra; - } - } - $extensions = PhabricatorMainMenuBarExtension::getAllEnabledExtensions(); foreach ($extensions as $extension) { $extension->setViewer($viewer); @@ -116,13 +102,18 @@ final class PhabricatorMainMenuView extends AphrontView { } } - // Builds out "login" button + $menus = array(); foreach ($extensions as $extension) { foreach ($extension->buildMainMenus() as $menu) { $menus[] = $menu; } } + // Because we display these with "float: right", reverse their order before + // rendering them into the document so that the extension order and display + // order are the same. + $menus = array_reverse($menus); + foreach ($menus as $menu) { $menu_bar[] = $menu; } From 20d1bb8fdf3d640665905b798d30133ba5688e03 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Fri, 20 Jan 2017 16:02:37 -0800 Subject: [PATCH 02/21] Remove counts from home navigation Summary: Ref T12136. This just yanks the band-aid off. Fundamentally these were useful well before Dashboards and advanced bucketing, but not so much any more. They also have some performance hit. Test Plan: Add some tasks and diffs onto a new instance, see there is no count on the home menu bar. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T12136 Differential Revision: https://secure.phabricator.com/D17238 --- src/__phutil_library_map__.php | 2 - .../base/PhabricatorApplication.php | 16 ---- .../PhabricatorDifferentialApplication.php | 76 ------------------- .../PhabricatorFlagsApplication.php | 26 ------- .../controller/PhabricatorHomeController.php | 2 - .../PhabricatorManiphestApplication.php | 31 -------- .../view/PhabricatorApplicationLaunchView.php | 73 +----------------- .../view/PhabricatorApplicationStatusView.php | 61 --------------- .../PhabricatorPeopleApplication.php | 38 ---------- .../PhabricatorPhrequentApplication.php | 23 ------ 10 files changed, 1 insertion(+), 347 deletions(-) delete mode 100644 src/applications/meta/view/PhabricatorApplicationStatusView.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 7ce9b1c72d..e432e1f981 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1830,7 +1830,6 @@ phutil_register_library_map(array( 'PhabricatorApplicationSearchEngine' => 'applications/search/engine/PhabricatorApplicationSearchEngine.php', 'PhabricatorApplicationSearchEngineTestCase' => 'applications/search/engine/__tests__/PhabricatorApplicationSearchEngineTestCase.php', 'PhabricatorApplicationSearchResultView' => 'applications/search/view/PhabricatorApplicationSearchResultView.php', - 'PhabricatorApplicationStatusView' => 'applications/meta/view/PhabricatorApplicationStatusView.php', 'PhabricatorApplicationTestCase' => 'applications/base/__tests__/PhabricatorApplicationTestCase.php', 'PhabricatorApplicationTransaction' => 'applications/transactions/storage/PhabricatorApplicationTransaction.php', 'PhabricatorApplicationTransactionComment' => 'applications/transactions/storage/PhabricatorApplicationTransactionComment.php', @@ -6712,7 +6711,6 @@ phutil_register_library_map(array( 'PhabricatorApplicationSearchEngine' => 'Phobject', 'PhabricatorApplicationSearchEngineTestCase' => 'PhabricatorTestCase', 'PhabricatorApplicationSearchResultView' => 'Phobject', - 'PhabricatorApplicationStatusView' => 'AphrontView', 'PhabricatorApplicationTestCase' => 'PhabricatorTestCase', 'PhabricatorApplicationTransaction' => array( 'PhabricatorLiskDAO', diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index 63ab9d2315..caf2dd4612 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -12,8 +12,6 @@ abstract class PhabricatorApplication extends Phobject implements PhabricatorPolicyInterface { - const MAX_STATUS_ITEMS = 100; - const GROUP_CORE = 'core'; const GROUP_UTILITIES = 'util'; const GROUP_ADMIN = 'admin'; @@ -272,20 +270,6 @@ abstract class PhabricatorApplication /* -( UI Integration )----------------------------------------------------- */ - /** - * Render status elements (like "3 Waiting Reviews") for application list - * views. These provide a way to alert users to new or pending action items - * in applications. - * - * @param PhabricatorUser Viewing user. - * @return list Application status elements. - * @task ui - */ - public function loadStatus(PhabricatorUser $user) { - return array(); - } - - /** * You can provide an optional piece of flavor text for the application. This * is currently rendered in application launch views if the application has no diff --git a/src/applications/differential/application/PhabricatorDifferentialApplication.php b/src/applications/differential/application/PhabricatorDifferentialApplication.php index b5a3ea95dc..1b6443a9e0 100644 --- a/src/applications/differential/application/PhabricatorDifferentialApplication.php +++ b/src/applications/differential/application/PhabricatorDifferentialApplication.php @@ -103,82 +103,6 @@ final class PhabricatorDifferentialApplication extends PhabricatorApplication { ); } - public static function loadNeedAttentionRevisions(PhabricatorUser $viewer) { - if (!$viewer->isLoggedIn()) { - return array(); - } - - $viewer_phid = $viewer->getPHID(); - - $responsible_phids = id(new DifferentialResponsibleDatasource()) - ->setViewer($viewer) - ->evaluateTokens(array($viewer_phid)); - - $revision_query = id(new DifferentialRevisionQuery()) - ->setViewer($viewer) - ->withStatus(DifferentialRevisionQuery::STATUS_OPEN) - ->withResponsibleUsers($responsible_phids) - ->needReviewerStatus(true) - ->needRelationships(true) - ->needFlags(true) - ->needDrafts(true) - ->setLimit(self::MAX_STATUS_ITEMS); - - $revisions = $revision_query->execute(); - - $query = id(new PhabricatorSavedQuery()) - ->attachParameterMap( - array( - 'responsiblePHIDs' => $responsible_phids, - )); - - $groups = id(new DifferentialRevisionRequiredActionResultBucket()) - ->setViewer($viewer) - ->newResultGroups($query, $revisions); - - $include = array(); - foreach ($groups as $group) { - switch ($group->getKey()) { - case DifferentialRevisionRequiredActionResultBucket::KEY_MUSTREVIEW: - case DifferentialRevisionRequiredActionResultBucket::KEY_SHOULDREVIEW: - foreach ($group->getObjects() as $object) { - $include[] = $object; - } - break; - default: - break; - } - } - - return $include; - } - - public function loadStatus(PhabricatorUser $user) { - $revisions = self::loadNeedAttentionRevisions($user); - $limit = self::MAX_STATUS_ITEMS; - - if (count($revisions) >= $limit) { - $display_count = ($limit - 1); - $display_label = pht( - '%s+ Active Review(s)', - new PhutilNumber($display_count)); - } else { - $display_count = count($revisions); - $display_label = pht( - '%s Review(s) Need Attention', - new PhutilNumber($display_count)); - } - - $status = array(); - - $status[] = id(new PhabricatorApplicationStatusView()) - ->setType(PhabricatorApplicationStatusView::TYPE_WARNING) - ->setText($display_label) - ->setCount($display_count); - - return $status; - } - public function supportsEmailIntegration() { return true; } diff --git a/src/applications/flag/application/PhabricatorFlagsApplication.php b/src/applications/flag/application/PhabricatorFlagsApplication.php index c7e2cb3b67..975f0948cc 100644 --- a/src/applications/flag/application/PhabricatorFlagsApplication.php +++ b/src/applications/flag/application/PhabricatorFlagsApplication.php @@ -32,32 +32,6 @@ final class PhabricatorFlagsApplication extends PhabricatorApplication { return self::GROUP_UTILITIES; } - public function loadStatus(PhabricatorUser $user) { - $status = array(); - $limit = self::MAX_STATUS_ITEMS; - - $flags = id(new PhabricatorFlagQuery()) - ->setViewer($user) - ->withOwnerPHIDs(array($user->getPHID())) - ->setLimit(self::MAX_STATUS_ITEMS) - ->execute(); - - $count = count($flags); - if ($count >= $limit) { - $count_str = pht('%s+ Flagged Object(s)', new PhutilNumber($limit - 1)); - } else { - $count_str = pht('%s Flagged Object(s)', new PhutilNumber($count)); - } - - $type = PhabricatorApplicationStatusView::TYPE_WARNING; - $status[] = id(new PhabricatorApplicationStatusView()) - ->setType($type) - ->setText($count_str) - ->setCount($count); - - return $status; - } - public function getRoutes() { return array( '/flag/' => array( diff --git a/src/applications/home/controller/PhabricatorHomeController.php b/src/applications/home/controller/PhabricatorHomeController.php index 3df8140420..65a412faad 100644 --- a/src/applications/home/controller/PhabricatorHomeController.php +++ b/src/applications/home/controller/PhabricatorHomeController.php @@ -31,7 +31,6 @@ abstract class PhabricatorHomeController extends PhabricatorController { $tiles[] = id(new PhabricatorApplicationLaunchView()) ->setApplication($home_app) - ->setApplicationStatus($home_app->loadStatus($user)) ->addClass('phabricator-application-launch-phone-only') ->setUser($user); @@ -44,7 +43,6 @@ abstract class PhabricatorHomeController extends PhabricatorController { $tile = id(new PhabricatorApplicationLaunchView()) ->setApplication($application) - ->setApplicationStatus($application->loadStatus($user)) ->setUser($user); $tiles[] = $tile; diff --git a/src/applications/maniphest/application/PhabricatorManiphestApplication.php b/src/applications/maniphest/application/PhabricatorManiphestApplication.php index 366353661f..6cb9626d5a 100644 --- a/src/applications/maniphest/application/PhabricatorManiphestApplication.php +++ b/src/applications/maniphest/application/PhabricatorManiphestApplication.php @@ -59,37 +59,6 @@ final class PhabricatorManiphestApplication extends PhabricatorApplication { ); } - public function loadStatus(PhabricatorUser $user) { - $status = array(); - - if (!$user->isLoggedIn()) { - return $status; - } - - $limit = self::MAX_STATUS_ITEMS; - - $query = id(new ManiphestTaskQuery()) - ->setViewer($user) - ->withStatuses(ManiphestTaskStatus::getOpenStatusConstants()) - ->withOwners(array($user->getPHID())) - ->setLimit($limit); - - $count = count($query->execute()); - if ($count >= $limit) { - $count_str = pht('%s+ Assigned Task(s)', new PhutilNumber($limit - 1)); - } else { - $count_str = pht('%s Assigned Task(s)', new PhutilNumber($count)); - } - - $type = PhabricatorApplicationStatusView::TYPE_WARNING; - $status[] = id(new PhabricatorApplicationStatusView()) - ->setType($type) - ->setText($count_str) - ->setCount($count); - - return $status; - } - public function supportsEmailIntegration() { return true; } diff --git a/src/applications/meta/view/PhabricatorApplicationLaunchView.php b/src/applications/meta/view/PhabricatorApplicationLaunchView.php index 4f337f013c..7d98b6d7fa 100644 --- a/src/applications/meta/view/PhabricatorApplicationLaunchView.php +++ b/src/applications/meta/view/PhabricatorApplicationLaunchView.php @@ -3,18 +3,12 @@ final class PhabricatorApplicationLaunchView extends AphrontTagView { private $application; - private $status; public function setApplication(PhabricatorApplication $application) { $this->application = $application; return $this; } - public function setApplicationStatus(array $status) { - $this->status = $status; - return $this; - } - protected function getTagName() { return $this->application ? 'a' : 'div'; } @@ -49,65 +43,9 @@ final class PhabricatorApplicationLaunchView extends AphrontTagView { ), $application->getShortDescription()); - $counts = array(); - $text = array(); - if ($this->status) { - foreach ($this->status as $status) { - $type = $status->getType(); - $counts[$type] = idx($counts, $type, 0) + $status->getCount(); - if ($status->getCount()) { - $text[] = $status->getText(); - } - } - } - - $attention = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION; - $warning = PhabricatorApplicationStatusView::TYPE_WARNING; - if (!empty($counts[$attention]) || !empty($counts[$warning])) { - $count = idx($counts, $attention, 0); - $count1 = $count2 = ''; - if ($count > 0) { - $count1 = phutil_tag( - 'span', - array( - 'class' => 'phabricator-application-attention-count', - ), - $this->formatStatusItemCount($count)); - } - - - if (!empty($counts[$warning])) { - $count2 = phutil_tag( - 'span', - array( - 'class' => 'phabricator-application-warning-count', - ), - $this->formatStatusItemCount($counts[$warning])); - } - - if (nonempty($count1) && nonempty($count2)) { - $numbers = array($count1, ' / ', $count2); - } else { - $numbers = array($count1, $count2); - } - - Javelin::initBehavior('phabricator-tooltips'); - $content[] = javelin_tag( - 'span', - array( - 'sigil' => 'has-tooltip', - 'meta' => array( - 'tip' => implode("\n", $text), - 'size' => 300, - 'align' => 'E', - ), - 'class' => 'phabricator-application-launch-attention', - ), - $numbers); - } - $classes = array(); $classes[] = 'phabricator-application-launch-icon'; + $styles = array(); $classes[] = $application->getIcon(); $classes[] = 'phui-icon-view'; @@ -128,13 +66,4 @@ final class PhabricatorApplicationLaunchView extends AphrontTagView { ); } - private function formatStatusItemCount($count) { - $limit = PhabricatorApplication::MAX_STATUS_ITEMS; - if ($count >= $limit) { - return pht('%s+', new PhutilNumber($limit - 1)); - } else { - return pht('%s', new PhutilNumber($count)); - } - } - } diff --git a/src/applications/meta/view/PhabricatorApplicationStatusView.php b/src/applications/meta/view/PhabricatorApplicationStatusView.php deleted file mode 100644 index 047bcecc8c..0000000000 --- a/src/applications/meta/view/PhabricatorApplicationStatusView.php +++ /dev/null @@ -1,61 +0,0 @@ -type = $type; - return $this; - } - - public function getType() { - return $this->type; - } - - public function setText($text) { - $this->text = $text; - return $this; - } - - public function getText() { - return $this->text; - } - - public function setCount($count) { - $this->count = $count; - return $this; - } - - public function getCount() { - return $this->count; - } - - public function render() { - $type = $this->type; - if (!$this->count) { - $type = self::TYPE_EMPTY; - } - - $classes = array( - 'phabricator-application-status', - 'phabricator-application-status-type-'.$type, - ); - - return phutil_tag( - 'span', - array( - 'class' => implode(' ', $classes), - ), - $this->text); - } - -} diff --git a/src/applications/people/application/PhabricatorPeopleApplication.php b/src/applications/people/application/PhabricatorPeopleApplication.php index a4666c5a21..5278c2e801 100644 --- a/src/applications/people/application/PhabricatorPeopleApplication.php +++ b/src/applications/people/application/PhabricatorPeopleApplication.php @@ -92,44 +92,6 @@ final class PhabricatorPeopleApplication extends PhabricatorApplication { ); } - public function loadStatus(PhabricatorUser $user) { - if (!$user->getIsAdmin()) { - return array(); - } - $limit = self::MAX_STATUS_ITEMS; - - $need_approval = id(new PhabricatorPeopleQuery()) - ->setViewer($user) - ->withIsApproved(false) - ->withIsDisabled(false) - ->setLimit($limit) - ->execute(); - if (!$need_approval) { - return array(); - } - - $status = array(); - - $count = count($need_approval); - if ($count >= $limit) { - $count_str = pht( - '%s+ User(s) Need Approval', - new PhutilNumber($limit - 1)); - } else { - $count_str = pht( - '%s User(s) Need Approval', - new PhutilNumber($count)); - } - - $type = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION; - $status[] = id(new PhabricatorApplicationStatusView()) - ->setType($type) - ->setText($count_str) - ->setCount($count); - - return $status; - } - public function getApplicationSearchDocumentTypes() { return array( PhabricatorPeopleUserPHIDType::TYPECONST, diff --git a/src/applications/phrequent/application/PhabricatorPhrequentApplication.php b/src/applications/phrequent/application/PhabricatorPhrequentApplication.php index 023827c644..1a4270a188 100644 --- a/src/applications/phrequent/application/PhabricatorPhrequentApplication.php +++ b/src/applications/phrequent/application/PhabricatorPhrequentApplication.php @@ -46,27 +46,4 @@ final class PhabricatorPhrequentApplication extends PhabricatorApplication { ); } - public function loadStatus(PhabricatorUser $user) { - $status = array(); - $limit = self::MAX_STATUS_ITEMS; - - // Show number of objects that are currently - // being tracked for a user. - - $count = PhrequentUserTimeQuery::getUserTotalObjectsTracked($user, $limit); - if ($count >= $limit) { - $count_str = pht('%s+ Object(s) Tracked', new PhutilNumber($limit - 1)); - } else { - $count_str = pht('%s Object(s) Tracked', new PhutilNumber($count)); - } - - $type = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION; - $status[] = id(new PhabricatorApplicationStatusView()) - ->setType($type) - ->setText($count_str) - ->setCount($count); - - return $status; - } - } From 3749ecaa662b97f6579afc13e9e78c7d3bb3568e Mon Sep 17 00:00:00 2001 From: Chad Little Date: Sun, 22 Jan 2017 08:36:16 -0800 Subject: [PATCH 03/21] Fix fatal saving menu items without custom validation Summary: Fixes T12142. Correct spelling of method. Test Plan: Edit the name of a Details menu item in projects, or add a divider. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T12142 Differential Revision: https://secure.phabricator.com/D17240 --- src/applications/search/menuitem/PhabricatorProfileMenuItem.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/applications/search/menuitem/PhabricatorProfileMenuItem.php b/src/applications/search/menuitem/PhabricatorProfileMenuItem.php index 05fa6543d3..6f1342d4c0 100644 --- a/src/applications/search/menuitem/PhabricatorProfileMenuItem.php +++ b/src/applications/search/menuitem/PhabricatorProfileMenuItem.php @@ -70,7 +70,7 @@ abstract class PhabricatorProfileMenuItem extends Phobject { return new PHUIListItemView(); } - public function valdateTransactions( + public function validateTransactions( PhabricatorProfileMenuItemConfiguration $config, $field_key, $value, From e9e4c6f6a0e8750aaf5354ea56855148e9273c8b Mon Sep 17 00:00:00 2001 From: Chad Little Date: Tue, 24 Jan 2017 01:39:59 +0000 Subject: [PATCH 04/21] Enable color emoji on Windows Summary: Ref T12139, installs 'Segoe UI Emoji' as a standard font call for color emoji on Windows devices. Test Plan: Review Emoji on Win 10 Chrome / Edge, Mac Chrome / Safari. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T12139 Differential Revision: https://secure.phabricator.com/D17241 --- resources/celerity/map.php | 64 +++++++++---------- .../CelerityDefaultPostprocessor.php | 12 ++-- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 8649bdf11b..96faeb64ad 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -7,12 +7,12 @@ */ return array( 'names' => array( - 'conpherence.pkg.css' => '0b64e988', + 'conpherence.pkg.css' => 'ef5f5859', 'conpherence.pkg.js' => '6249a1cf', - 'core.pkg.css' => 'e75e4f9d', + 'core.pkg.css' => '90f03a3e', 'core.pkg.js' => '2291d3b2', 'darkconsole.pkg.js' => 'e7393ebb', - 'differential.pkg.css' => '9535a7e6', + 'differential.pkg.css' => '4212ed64', 'differential.pkg.js' => 'ddfeb49b', 'diffusion.pkg.css' => '91c5d3a6', 'diffusion.pkg.js' => '84c8f8fd', @@ -47,7 +47,7 @@ return array( 'rsrc/css/application/config/setup-issue.css' => 'f794cfc3', 'rsrc/css/application/config/unhandled-exception.css' => '4c96257a', 'rsrc/css/application/conpherence/durable-column.css' => 'd82e130c', - 'rsrc/css/application/conpherence/header-pane.css' => '1c81cda6', + 'rsrc/css/application/conpherence/header-pane.css' => '54e08eaa', 'rsrc/css/application/conpherence/menu.css' => '4f51db5a', 'rsrc/css/application/conpherence/message-pane.css' => 'b085d40d', 'rsrc/css/application/conpherence/notification.css' => '965db05b', @@ -59,9 +59,9 @@ return array( 'rsrc/css/application/dashboard/dashboard.css' => 'bc6f2127', 'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a', 'rsrc/css/application/differential/add-comment.css' => 'c47f8c40', - 'rsrc/css/application/differential/changeset-view.css' => 'e1621fd5', + 'rsrc/css/application/differential/changeset-view.css' => '1f3bd0e9', 'rsrc/css/application/differential/core.css' => '5b7b8ff4', - 'rsrc/css/application/differential/phui-inline-comment.css' => '5953c28e', + 'rsrc/css/application/differential/phui-inline-comment.css' => '229447ef', 'rsrc/css/application/differential/revision-comment.css' => '14b8565a', 'rsrc/css/application/differential/revision-history.css' => '0e8eb855', 'rsrc/css/application/differential/revision-list.css' => 'f3c47d33', @@ -83,7 +83,7 @@ return array( 'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b', 'rsrc/css/application/paste/paste.css' => '1898e534', 'rsrc/css/application/people/people-profile.css' => '2473d929', - 'rsrc/css/application/phame/phame.css' => 'aeb61182', + 'rsrc/css/application/phame/phame.css' => '89ed1cdd', 'rsrc/css/application/pholio/pholio-edit.css' => '07676f51', 'rsrc/css/application/pholio/pholio-inline-comments.css' => '8e545e49', 'rsrc/css/application/pholio/pholio.css' => 'ca89d380', @@ -96,8 +96,8 @@ return array( 'rsrc/css/application/policy/policy-transaction-detail.css' => '82100a43', 'rsrc/css/application/policy/policy.css' => '957ea14c', 'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96', - 'rsrc/css/application/project/project-card-view.css' => 'd27c67ae', - 'rsrc/css/application/project/project-view.css' => '1e6f7072', + 'rsrc/css/application/project/project-card-view.css' => 'c64e7f86', + 'rsrc/css/application/project/project-view.css' => '8fd93549', 'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733', 'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5', 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd', @@ -107,7 +107,7 @@ return array( 'rsrc/css/application/slowvote/slowvote.css' => 'a94b7230', 'rsrc/css/application/tokens/tokens.css' => '3d0f239e', 'rsrc/css/application/uiexample/example.css' => '528b19de', - 'rsrc/css/core/core.css' => 'd0801452', + 'rsrc/css/core/core.css' => '78617e98', 'rsrc/css/core/remarkup.css' => '4a2de2bb', 'rsrc/css/core/syntax.css' => '769d3498', 'rsrc/css/core/z-index.css' => '5e72c4e0', @@ -134,7 +134,7 @@ return array( 'rsrc/css/phui/phui-basic-nav-view.css' => '7093573b', 'rsrc/css/phui/phui-big-info-view.css' => 'bd903741', 'rsrc/css/phui/phui-box.css' => '33b629f8', - 'rsrc/css/phui/phui-button.css' => '9718cb0c', + 'rsrc/css/phui/phui-button.css' => 'c315ddd2', 'rsrc/css/phui/phui-chart.css' => '6bf6f78e', 'rsrc/css/phui/phui-cms.css' => 'be43c8a8', 'rsrc/css/phui/phui-comment-form.css' => '48fbd65d', @@ -145,11 +145,11 @@ return array( 'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf', 'rsrc/css/phui/phui-document.css' => 'c32e8dec', 'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9', - 'rsrc/css/phui/phui-fontkit.css' => '9cda225e', + 'rsrc/css/phui/phui-fontkit.css' => 'b80a7d35', 'rsrc/css/phui/phui-form-view.css' => 'adca31ce', - 'rsrc/css/phui/phui-form.css' => '2342b0e5', + 'rsrc/css/phui/phui-form.css' => '23f3ac6a', 'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f', - 'rsrc/css/phui/phui-header-view.css' => '6ec8f155', + 'rsrc/css/phui/phui-header-view.css' => '627a9de0', 'rsrc/css/phui/phui-hovercard.css' => 'e904f5dc', 'rsrc/css/phui/phui-icon-set-selector.css' => '1ab67aad', 'rsrc/css/phui/phui-icon.css' => '09f46dd9', @@ -159,7 +159,7 @@ return array( 'rsrc/css/phui/phui-invisible-character-view.css' => '6993d9f0', 'rsrc/css/phui/phui-lightbox.css' => '0a035e40', 'rsrc/css/phui/phui-list.css' => '9da2aa00', - 'rsrc/css/phui/phui-object-box.css' => '6b487c57', + 'rsrc/css/phui/phui-object-box.css' => '71f0d214', 'rsrc/css/phui/phui-pager.css' => 'bea33d23', 'rsrc/css/phui/phui-pinboard-view.css' => '2495140e', 'rsrc/css/phui/phui-profile-menu.css' => 'c71ecdcd', @@ -170,7 +170,7 @@ return array( 'rsrc/css/phui/phui-status.css' => 'd5263e49', 'rsrc/css/phui/phui-tag-view.css' => '84d65f26', 'rsrc/css/phui/phui-timeline-view.css' => 'bc523970', - 'rsrc/css/phui/phui-two-column-view.css' => 'a0d3858a', + 'rsrc/css/phui/phui-two-column-view.css' => '424975d6', 'rsrc/css/phui/workboards/phui-workboard-color.css' => 'b60ef38a', 'rsrc/css/phui/workboards/phui-workboard.css' => 'c88912ee', 'rsrc/css/phui/workboards/phui-workcard.css' => 'cca5fa92', @@ -565,7 +565,7 @@ return array( 'config-options-css' => '0ede4c9b', 'config-page-css' => 'c1d5121b', 'conpherence-durable-column-view' => 'd82e130c', - 'conpherence-header-pane-css' => '1c81cda6', + 'conpherence-header-pane-css' => '54e08eaa', 'conpherence-menu-css' => '4f51db5a', 'conpherence-message-pane-css' => 'b085d40d', 'conpherence-notification-css' => '965db05b', @@ -573,7 +573,7 @@ return array( 'conpherence-thread-manager' => 'c8b5ee6f', 'conpherence-transaction-css' => '85129c68', 'd3' => 'a11a5ff2', - 'differential-changeset-view-css' => 'e1621fd5', + 'differential-changeset-view-css' => '1f3bd0e9', 'differential-core-view-css' => '5b7b8ff4', 'differential-inline-comment-editor' => '2e3f9738', 'differential-revision-add-comment-css' => 'c47f8c40', @@ -785,7 +785,7 @@ return array( 'phabricator-busy' => '59a7976a', 'phabricator-chatlog-css' => 'd295b020', 'phabricator-content-source-view-css' => '4b8b05d4', - 'phabricator-core-css' => 'd0801452', + 'phabricator-core-css' => '78617e98', 'phabricator-countdown-css' => '16c52f5c', 'phabricator-dashboard-css' => 'bc6f2127', 'phabricator-drag-and-drop-file-upload' => '58dea2fa', @@ -827,7 +827,7 @@ return array( 'phabricator-uiexample-reactor-sendclass' => '1def2711', 'phabricator-uiexample-reactor-sendproperties' => 'b1f0ccee', 'phabricator-zindex-css' => '5e72c4e0', - 'phame-css' => 'aeb61182', + 'phame-css' => '89ed1cdd', 'pholio-css' => 'ca89d380', 'pholio-edit-css' => '07676f51', 'pholio-inline-comments-css' => '8e545e49', @@ -842,7 +842,7 @@ return array( 'phui-basic-nav-view-css' => '7093573b', 'phui-big-info-view-css' => 'bd903741', 'phui-box-css' => '33b629f8', - 'phui-button-css' => '9718cb0c', + 'phui-button-css' => 'c315ddd2', 'phui-calendar-css' => '477acfaa', 'phui-calendar-day-css' => '572b1893', 'phui-calendar-list-css' => 'fcc9fb41', @@ -858,11 +858,11 @@ return array( 'phui-document-view-pro-css' => 'f56738ed', 'phui-feed-story-css' => '44a9c8e9', 'phui-font-icon-base-css' => '870a7360', - 'phui-fontkit-css' => '9cda225e', - 'phui-form-css' => '2342b0e5', + 'phui-fontkit-css' => 'b80a7d35', + 'phui-form-css' => '23f3ac6a', 'phui-form-view-css' => 'adca31ce', 'phui-head-thing-view-css' => 'fd311e5f', - 'phui-header-view-css' => '6ec8f155', + 'phui-header-view-css' => '627a9de0', 'phui-hovercard' => '1bd28176', 'phui-hovercard-view-css' => 'e904f5dc', 'phui-icon-set-selector-css' => '1ab67aad', @@ -870,11 +870,11 @@ return array( 'phui-image-mask-css' => 'a8498f9c', 'phui-info-panel-css' => '27ea50a1', 'phui-info-view-css' => 'ec92802a', - 'phui-inline-comment-view-css' => '5953c28e', + 'phui-inline-comment-view-css' => '229447ef', 'phui-invisible-character-view-css' => '6993d9f0', 'phui-lightbox-css' => '0a035e40', 'phui-list-view-css' => '9da2aa00', - 'phui-object-box-css' => '6b487c57', + 'phui-object-box-css' => '71f0d214', 'phui-oi-big-ui-css' => '19f9369b', 'phui-oi-color-css' => 'cd2b9b77', 'phui-oi-drag-ui-css' => 'f12cbc9f', @@ -892,7 +892,7 @@ return array( 'phui-tag-view-css' => '84d65f26', 'phui-theme-css' => '798c69b8', 'phui-timeline-view-css' => 'bc523970', - 'phui-two-column-view-css' => 'a0d3858a', + 'phui-two-column-view-css' => '424975d6', 'phui-workboard-color-css' => 'b60ef38a', 'phui-workboard-view-css' => 'c88912ee', 'phui-workcard-view-css' => 'cca5fa92', @@ -907,8 +907,8 @@ return array( 'policy-edit-css' => '815c66f7', 'policy-transaction-detail-css' => '82100a43', 'ponder-view-css' => 'fbd45f96', - 'project-card-view-css' => 'd27c67ae', - 'project-view-css' => '1e6f7072', + 'project-card-view-css' => 'c64e7f86', + 'project-view-css' => '8fd93549', 'releeph-core' => '9b3c5733', 'releeph-preview-branch' => 'b7a6f4a5', 'releeph-request-differential-create-dialog' => '8d8b92cd', @@ -1084,6 +1084,9 @@ return array( 'javelin-uri', 'javelin-routable', ), + '1f3bd0e9' => array( + 'phui-inline-comment-view-css', + ), '1fe2510c' => array( 'javelin-install', 'javelin-dom', @@ -2085,9 +2088,6 @@ return array( 'javelin-request', 'javelin-util', ), - 'e1621fd5' => array( - 'phui-inline-comment-view-css', - ), 'e1d25dfb' => array( 'javelin-behavior', 'javelin-stratcom', diff --git a/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php b/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php index b68c23d69b..096b4b4757 100644 --- a/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php +++ b/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php @@ -20,13 +20,13 @@ final class CelerityDefaultPostprocessor public function buildVariables() { return array( // Fonts - 'basefont' => "13px 'Segoe UI', 'Segoe UI Web Regular', ". - "'Segoe UI Symbol', 'Lato', 'Helvetica Neue', Helvetica, ". - "Arial, sans-serif", + 'basefont' => "13px 'Segoe UI Emoji', 'Segoe UI Web Regular', ". + "'Segoe UI Symbol', 'Segoe UI', 'Lato', 'Helvetica Neue', ". + "Helvetica, Arial, sans-serif", - 'fontfamily' => "'Segoe UI', 'Segoe UI Web Regular', ". - "'Segoe UI Symbol', 'Lato', 'Helvetica Neue', Helvetica, ". - "Arial, sans-serif", + 'fontfamily' => "'Segoe UI Emoji', 'Segoe UI Web Regular', ". + "'Segoe UI Symbol', 'Segoe UI', 'Lato', 'Helvetica Neue', ". + "Helvetica, Arial, sans-serif", // Drop Shadow 'dropshadow' => '0 2px 12px rgba(0, 0, 0, .20)', From 61216dc641a50d76d3e4b16154e48617caf790bd Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 24 Jan 2017 07:25:57 -0800 Subject: [PATCH 05/21] Fix a JS error when adding a project card directly to a subproject from a workboard Summary: Fixes T12152. When creating a subproject task directly from a parent project, we can get column information back about the subproject column, which isn't visible. Just ignore this rather than trying to draw a card into a column which does not exist. This flow (see test plan) is a little unintuitive since the card never appears on the workboard, but this class of things is probably roughly somewhere in T4900. Test Plan: - Create a parent project A. - Create subproject B. - On the workboard for A, select "Create Task..." from the dropdown. - Add tag "B" in the dialog that pops up. - Save the task. Note that this flow creates a task tagged only with "B", since "A" and "B" are mutually exclusive tags. Before patch: UI freezes (JX.Mask is never removed), JS error in console. After patch: workflow completes. Note that card is (correctly) not visible: it's in an invisible subproject column. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12152 Differential Revision: https://secure.phabricator.com/D17242 --- resources/celerity/map.php | 22 +++++++++---------- .../js/application/projects/WorkboardBoard.js | 9 +++++++- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 96faeb64ad..ca35a252f8 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -439,7 +439,7 @@ return array( 'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef', 'rsrc/js/application/policy/behavior-policy-control.js' => 'd0c516d5', 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c', - 'rsrc/js/application/projects/WorkboardBoard.js' => 'fe7cb52a', + 'rsrc/js/application/projects/WorkboardBoard.js' => '8935deef', 'rsrc/js/application/projects/WorkboardCard.js' => 'c587b80f', 'rsrc/js/application/projects/WorkboardColumn.js' => '21df4ff5', 'rsrc/js/application/projects/WorkboardController.js' => '55baf5ed', @@ -765,7 +765,7 @@ return array( 'javelin-view-renderer' => '6c2b09a2', 'javelin-view-visitor' => 'efe49472', 'javelin-websocket' => 'e292eaf4', - 'javelin-workboard-board' => 'fe7cb52a', + 'javelin-workboard-board' => '8935deef', 'javelin-workboard-card' => 'c587b80f', 'javelin-workboard-column' => '21df4ff5', 'javelin-workboard-controller' => '55baf5ed', @@ -1573,6 +1573,15 @@ return array( 'javelin-stratcom', 'javelin-dom', ), + '8935deef' => array( + 'javelin-install', + 'javelin-dom', + 'javelin-util', + 'javelin-stratcom', + 'javelin-workflow', + 'phabricator-draggable-list', + 'javelin-workboard-column', + ), '8a41885b' => array( 'javelin-install', 'javelin-dom', @@ -2249,15 +2258,6 @@ return array( 'javelin-view-visitor', 'javelin-util', ), - 'fe7cb52a' => array( - 'javelin-install', - 'javelin-dom', - 'javelin-util', - 'javelin-stratcom', - 'javelin-workflow', - 'phabricator-draggable-list', - 'javelin-workboard-column', - ), 'fea0eb47' => array( 'javelin-install', ), diff --git a/webroot/rsrc/js/application/projects/WorkboardBoard.js b/webroot/rsrc/js/application/projects/WorkboardBoard.js index 82187d9f78..cac35c2d9a 100644 --- a/webroot/rsrc/js/application/projects/WorkboardBoard.js +++ b/webroot/rsrc/js/application/projects/WorkboardBoard.js @@ -204,7 +204,14 @@ JX.install('WorkboardBoard', { if (!this._templates[phid]) { for (var add_phid in response.columnMaps) { - this.getColumn(add_phid).newCard(phid); + var target_column = this.getColumn(add_phid); + + if (!target_column) { + // If the column isn't visible, don't try to add a card to it. + continue; + } + + target_column.newCard(phid); } } From f930fd2e005ee57b283dd5631d06d412a336c699 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Tue, 24 Jan 2017 13:00:35 -0800 Subject: [PATCH 06/21] Add an Emoji Typeahead Summary: This adds a more complete emoji datasource, with a typeahead and autocomplete. It works by pulling in a raw datasource from EmojiOne (I chose Unicode 8, but they have a Unicode 9 datasource as well) and transforming it for speed/need. If we build more robustness or an actual picker into the Remarkup bar, having the additional keywords, etc, might be important. When Unicode 9 support is more prevalent, we should only need to update the single file. Tossing up as a proof of concept on engineering direction. Also I can't quite get the autocomplete to complete. Test Plan: Test UIExamples, Autocomplete, and TypeaheadSource Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T12139 Differential Revision: https://secure.phabricator.com/D17244 --- resources/celerity/map.php | 16 +- resources/emoji/manifest.json | 1626 +++++++++++++++++ scripts/celerity/generate_emoji.php | 48 + src/__phutil_library_map__.php | 4 + .../markup/PhabricatorEmojiRemarkupRule.php | 7 + .../typeahead/PhabricatorEmojiDatasource.php | 45 + .../uiexample/examples/MacroEmojiExample.php | 47 + .../control/PhabricatorRemarkupControl.php | 7 + webroot/rsrc/js/phuix/PHUIXAutocomplete.js | 1 - 9 files changed, 1792 insertions(+), 9 deletions(-) create mode 100644 resources/emoji/manifest.json create mode 100755 scripts/celerity/generate_emoji.php create mode 100644 src/applications/macro/typeahead/PhabricatorEmojiDatasource.php create mode 100644 src/applications/uiexample/examples/MacroEmojiExample.php diff --git a/resources/celerity/map.php b/resources/celerity/map.php index ca35a252f8..8dba2f10e8 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -540,7 +540,7 @@ return array( 'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9', 'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8', 'rsrc/js/phuix/PHUIXActionView.js' => 'b3465b9b', - 'rsrc/js/phuix/PHUIXAutocomplete.js' => '6d86ce8b', + 'rsrc/js/phuix/PHUIXAutocomplete.js' => '7c492cd2', 'rsrc/js/phuix/PHUIXDropdownMenu.js' => '8018ee50', 'rsrc/js/phuix/PHUIXFormControl.js' => 'bbece68d', 'rsrc/js/phuix/PHUIXIconView.js' => 'bff6884b', @@ -899,7 +899,7 @@ return array( 'phui-workpanel-view-css' => 'a3a63478', 'phuix-action-list-view' => 'b5c256b8', 'phuix-action-view' => 'b3465b9b', - 'phuix-autocomplete' => '6d86ce8b', + 'phuix-autocomplete' => '7c492cd2', 'phuix-dropdown-menu' => '8018ee50', 'phuix-form-control-view' => 'bbece68d', 'phuix-icon-view' => 'bff6884b', @@ -1423,12 +1423,6 @@ return array( 'javelin-typeahead', 'javelin-uri', ), - '6d86ce8b' => array( - 'javelin-install', - 'javelin-dom', - 'phuix-icon-view', - 'phabricator-prefab', - ), '70baed2f' => array( 'javelin-install', 'javelin-dom', @@ -1496,6 +1490,12 @@ return array( 'owners-path-editor', 'javelin-behavior', ), + '7c492cd2' => array( + 'javelin-install', + 'javelin-dom', + 'phuix-icon-view', + 'phabricator-prefab', + ), '7cbe244b' => array( 'javelin-install', 'javelin-util', diff --git a/resources/emoji/manifest.json b/resources/emoji/manifest.json new file mode 100644 index 0000000000..3c12148e34 --- /dev/null +++ b/resources/emoji/manifest.json @@ -0,0 +1,1626 @@ +{ + "grinning": "\ud83d\ude00", + "grimacing": "\ud83d\ude2c", + "grin": "\ud83d\ude01", + "joy": "\ud83d\ude02", + "smiley": "\ud83d\ude03", + "smile": "\ud83d\ude04", + "sweat_smile": "\ud83d\ude05", + "laughing": "\ud83d\ude06", + "innocent": "\ud83d\ude07", + "wink": "\ud83d\ude09", + "blush": "\ud83d\ude0a", + "slight_smile": "\ud83d\ude42", + "upside_down": "\ud83d\ude43", + "relaxed": "\u263a", + "yum": "\ud83d\ude0b", + "relieved": "\ud83d\ude0c", + "heart_eyes": "\ud83d\ude0d", + "kissing_heart": "\ud83d\ude18", + "kissing": "\ud83d\ude17", + "kissing_smiling_eyes": "\ud83d\ude19", + "kissing_closed_eyes": "\ud83d\ude1a", + "stuck_out_tongue_winking_eye": "\ud83d\ude1c", + "stuck_out_tongue_closed_eyes": "\ud83d\ude1d", + "stuck_out_tongue": "\ud83d\ude1b", + "money_mouth": "\ud83e\udd11", + "nerd": "\ud83e\udd13", + "sunglasses": "\ud83d\ude0e", + "hugging": "\ud83e\udd17", + "smirk": "\ud83d\ude0f", + "no_mouth": "\ud83d\ude36", + "neutral_face": "\ud83d\ude10", + "expressionless": "\ud83d\ude11", + "unamused": "\ud83d\ude12", + "rolling_eyes": "\ud83d\ude44", + "thinking": "\ud83e\udd14", + "flushed": "\ud83d\ude33", + "disappointed": "\ud83d\ude1e", + "worried": "\ud83d\ude1f", + "angry": "\ud83d\ude20", + "rage": "\ud83d\ude21", + "pensive": "\ud83d\ude14", + "confused": "\ud83d\ude15", + "slight_frown": "\ud83d\ude41", + "frowning2": "\u2639", + "persevere": "\ud83d\ude23", + "confounded": "\ud83d\ude16", + "tired_face": "\ud83d\ude2b", + "weary": "\ud83d\ude29", + "triumph": "\ud83d\ude24", + "open_mouth": "\ud83d\ude2e", + "scream": "\ud83d\ude31", + "fearful": "\ud83d\ude28", + "cold_sweat": "\ud83d\ude30", + "hushed": "\ud83d\ude2f", + "frowning": "\ud83d\ude26", + "anguished": "\ud83d\ude27", + "cry": "\ud83d\ude22", + "disappointed_relieved": "\ud83d\ude25", + "sleepy": "\ud83d\ude2a", + "sweat": "\ud83d\ude13", + "sob": "\ud83d\ude2d", + "dizzy_face": "\ud83d\ude35", + "astonished": "\ud83d\ude32", + "zipper_mouth": "\ud83e\udd10", + "mask": "\ud83d\ude37", + "thermometer_face": "\ud83e\udd12", + "head_bandage": "\ud83e\udd15", + "sleeping": "\ud83d\ude34", + "zzz": "\ud83d\udca4", + "poop": "\ud83d\udca9", + "smiling_imp": "\ud83d\ude08", + "imp": "\ud83d\udc7f", + "japanese_ogre": "\ud83d\udc79", + "japanese_goblin": "\ud83d\udc7a", + "skull": "\ud83d\udc80", + "ghost": "\ud83d\udc7b", + "alien": "\ud83d\udc7d", + "robot": "\ud83e\udd16", + "smiley_cat": "\ud83d\ude3a", + "smile_cat": "\ud83d\ude38", + "joy_cat": "\ud83d\ude39", + "heart_eyes_cat": "\ud83d\ude3b", + "smirk_cat": "\ud83d\ude3c", + "kissing_cat": "\ud83d\ude3d", + "scream_cat": "\ud83d\ude40", + "crying_cat_face": "\ud83d\ude3f", + "pouting_cat": "\ud83d\ude3e", + "raised_hands": "\ud83d\ude4c", + "clap": "\ud83d\udc4f", + "wave": "\ud83d\udc4b", + "thumbsup": "\ud83d\udc4d", + "thumbsdown": "\ud83d\udc4e", + "punch": "\ud83d\udc4a", + "fist": "\u270a", + "v": "\u270c", + "ok_hand": "\ud83d\udc4c", + "raised_hand": "\u270b", + "open_hands": "\ud83d\udc50", + "muscle": "\ud83d\udcaa", + "pray": "\ud83d\ude4f", + "point_up": "\u261d", + "point_up_2": "\ud83d\udc46", + "point_down": "\ud83d\udc47", + "point_left": "\ud83d\udc48", + "point_right": "\ud83d\udc49", + "middle_finger": "\ud83d\udd95", + "hand_splayed": "\ud83d\udd90", + "metal": "\ud83e\udd18", + "vulcan": "\ud83d\udd96", + "writing_hand": "\u270d", + "nail_care": "\ud83d\udc85", + "lips": "\ud83d\udc44", + "tongue": "\ud83d\udc45", + "ear": "\ud83d\udc42", + "nose": "\ud83d\udc43", + "eye": "\ud83d\udc41", + "eyes": "\ud83d\udc40", + "bust_in_silhouette": "\ud83d\udc64", + "busts_in_silhouette": "\ud83d\udc65", + "speaking_head": "\ud83d\udde3", + "baby": "\ud83d\udc76", + "boy": "\ud83d\udc66", + "girl": "\ud83d\udc67", + "man": "\ud83d\udc68", + "woman": "\ud83d\udc69", + "person_with_blond_hair": "\ud83d\udc71", + "older_man": "\ud83d\udc74", + "older_woman": "\ud83d\udc75", + "man_with_gua_pi_mao": "\ud83d\udc72", + "man_with_turban": "\ud83d\udc73", + "cop": "\ud83d\udc6e", + "construction_worker": "\ud83d\udc77", + "guardsman": "\ud83d\udc82", + "spy": "\ud83d\udd75", + "santa": "\ud83c\udf85", + "angel": "\ud83d\udc7c", + "princess": "\ud83d\udc78", + "bride_with_veil": "\ud83d\udc70", + "walking": "\ud83d\udeb6", + "runner": "\ud83c\udfc3", + "dancer": "\ud83d\udc83", + "dancers": "\ud83d\udc6f", + "couple": "\ud83d\udc6b", + "two_men_holding_hands": "\ud83d\udc6c", + "two_women_holding_hands": "\ud83d\udc6d", + "bow": "\ud83d\ude47", + "information_desk_person": "\ud83d\udc81", + "no_good": "\ud83d\ude45", + "ok_woman": "\ud83d\ude46", + "raising_hand": "\ud83d\ude4b", + "person_with_pouting_face": "\ud83d\ude4e", + "person_frowning": "\ud83d\ude4d", + "haircut": "\ud83d\udc87", + "massage": "\ud83d\udc86", + "couple_with_heart": "\ud83d\udc91", + "couple_ww": "\ud83d\udc69\u2764\ud83d\udc69", + "couple_mm": "\ud83d\udc68\u2764\ud83d\udc68", + "couplekiss": "\ud83d\udc8f", + "kiss_ww": "\ud83d\udc69\u2764\ud83d\udc8b\ud83d\udc69", + "kiss_mm": "\ud83d\udc68\u2764\ud83d\udc8b\ud83d\udc68", + "family": "\ud83d\udc6a", + "family_mwg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67", + "family_mwgb": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc66", + "family_mwbb": "\ud83d\udc68\ud83d\udc69\ud83d\udc66\ud83d\udc66", + "family_mwgg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc67", + "family_wwb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66", + "family_wwg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67", + "family_wwgb": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc66", + "family_wwbb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66\ud83d\udc66", + "family_wwgg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc67", + "family_mmb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66", + "family_mmg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67", + "family_mmgb": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc66", + "family_mmbb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66\ud83d\udc66", + "family_mmgg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc67", + "womans_clothes": "\ud83d\udc5a", + "shirt": "\ud83d\udc55", + "jeans": "\ud83d\udc56", + "necktie": "\ud83d\udc54", + "dress": "\ud83d\udc57", + "bikini": "\ud83d\udc59", + "kimono": "\ud83d\udc58", + "lipstick": "\ud83d\udc84", + "kiss": "\ud83d\udc8b", + "footprints": "\ud83d\udc63", + "high_heel": "\ud83d\udc60", + "sandal": "\ud83d\udc61", + "boot": "\ud83d\udc62", + "mans_shoe": "\ud83d\udc5e", + "athletic_shoe": "\ud83d\udc5f", + "womans_hat": "\ud83d\udc52", + "tophat": "\ud83c\udfa9", + "helmet_with_cross": "\u26d1", + "mortar_board": "\ud83c\udf93", + "crown": "\ud83d\udc51", + "school_satchel": "\ud83c\udf92", + "pouch": "\ud83d\udc5d", + "purse": "\ud83d\udc5b", + "handbag": "\ud83d\udc5c", + "briefcase": "\ud83d\udcbc", + "eyeglasses": "\ud83d\udc53", + "dark_sunglasses": "\ud83d\udd76", + "ring": "\ud83d\udc8d", + "closed_umbrella": "\ud83c\udf02", + "dog": "\ud83d\udc36", + "cat": "\ud83d\udc31", + "mouse": "\ud83d\udc2d", + "hamster": "\ud83d\udc39", + "rabbit": "\ud83d\udc30", + "bear": "\ud83d\udc3b", + "panda_face": "\ud83d\udc3c", + "koala": "\ud83d\udc28", + "tiger": "\ud83d\udc2f", + "lion_face": "\ud83e\udd81", + "cow": "\ud83d\udc2e", + "pig": "\ud83d\udc37", + "pig_nose": "\ud83d\udc3d", + "frog": "\ud83d\udc38", + "octopus": "\ud83d\udc19", + "monkey_face": "\ud83d\udc35", + "see_no_evil": "\ud83d\ude48", + "hear_no_evil": "\ud83d\ude49", + "speak_no_evil": "\ud83d\ude4a", + "monkey": "\ud83d\udc12", + "chicken": "\ud83d\udc14", + "penguin": "\ud83d\udc27", + "bird": "\ud83d\udc26", + "baby_chick": "\ud83d\udc24", + "hatching_chick": "\ud83d\udc23", + "hatched_chick": "\ud83d\udc25", + "wolf": "\ud83d\udc3a", + "boar": "\ud83d\udc17", + "horse": "\ud83d\udc34", + "unicorn": "\ud83e\udd84", + "bee": "\ud83d\udc1d", + "bug": "\ud83d\udc1b", + "snail": "\ud83d\udc0c", + "beetle": "\ud83d\udc1e", + "ant": "\ud83d\udc1c", + "spider": "\ud83d\udd77", + "scorpion": "\ud83e\udd82", + "crab": "\ud83e\udd80", + "snake": "\ud83d\udc0d", + "turtle": "\ud83d\udc22", + "tropical_fish": "\ud83d\udc20", + "fish": "\ud83d\udc1f", + "blowfish": "\ud83d\udc21", + "dolphin": "\ud83d\udc2c", + "whale": "\ud83d\udc33", + "whale2": "\ud83d\udc0b", + "crocodile": "\ud83d\udc0a", + "leopard": "\ud83d\udc06", + "tiger2": "\ud83d\udc05", + "water_buffalo": "\ud83d\udc03", + "ox": "\ud83d\udc02", + "cow2": "\ud83d\udc04", + "dromedary_camel": "\ud83d\udc2a", + "camel": "\ud83d\udc2b", + "elephant": "\ud83d\udc18", + "goat": "\ud83d\udc10", + "ram": "\ud83d\udc0f", + "sheep": "\ud83d\udc11", + "racehorse": "\ud83d\udc0e", + "pig2": "\ud83d\udc16", + "rat": "\ud83d\udc00", + "mouse2": "\ud83d\udc01", + "rooster": "\ud83d\udc13", + "turkey": "\ud83e\udd83", + "dove": "\ud83d\udd4a", + "dog2": "\ud83d\udc15", + "poodle": "\ud83d\udc29", + "cat2": "\ud83d\udc08", + "rabbit2": "\ud83d\udc07", + "chipmunk": "\ud83d\udc3f", + "feet": "\ud83d\udc3e", + "dragon": "\ud83d\udc09", + "dragon_face": "\ud83d\udc32", + "cactus": "\ud83c\udf35", + "christmas_tree": "\ud83c\udf84", + "evergreen_tree": "\ud83c\udf32", + "deciduous_tree": "\ud83c\udf33", + "palm_tree": "\ud83c\udf34", + "seedling": "\ud83c\udf31", + "herb": "\ud83c\udf3f", + "shamrock": "\u2618", + "four_leaf_clover": "\ud83c\udf40", + "bamboo": "\ud83c\udf8d", + "tanabata_tree": "\ud83c\udf8b", + "leaves": "\ud83c\udf43", + "fallen_leaf": "\ud83c\udf42", + "maple_leaf": "\ud83c\udf41", + "ear_of_rice": "\ud83c\udf3e", + "hibiscus": "\ud83c\udf3a", + "sunflower": "\ud83c\udf3b", + "rose": "\ud83c\udf39", + "tulip": "\ud83c\udf37", + "blossom": "\ud83c\udf3c", + "cherry_blossom": "\ud83c\udf38", + "bouquet": "\ud83d\udc90", + "mushroom": "\ud83c\udf44", + "chestnut": "\ud83c\udf30", + "jack_o_lantern": "\ud83c\udf83", + "shell": "\ud83d\udc1a", + "spider_web": "\ud83d\udd78", + "earth_americas": "\ud83c\udf0e", + "earth_africa": "\ud83c\udf0d", + "earth_asia": "\ud83c\udf0f", + "full_moon": "\ud83c\udf15", + "waning_gibbous_moon": "\ud83c\udf16", + "last_quarter_moon": "\ud83c\udf17", + "waning_crescent_moon": "\ud83c\udf18", + "new_moon": "\ud83c\udf11", + "waxing_crescent_moon": "\ud83c\udf12", + "first_quarter_moon": "\ud83c\udf13", + "waxing_gibbous_moon": "\ud83c\udf14", + "new_moon_with_face": "\ud83c\udf1a", + "full_moon_with_face": "\ud83c\udf1d", + "first_quarter_moon_with_face": "\ud83c\udf1b", + "last_quarter_moon_with_face": "\ud83c\udf1c", + "sun_with_face": "\ud83c\udf1e", + "crescent_moon": "\ud83c\udf19", + "star": "\u2b50", + "star2": "\ud83c\udf1f", + "dizzy": "\ud83d\udcab", + "sparkles": "\u2728", + "comet": "\u2604", + "sunny": "\u2600", + "white_sun_small_cloud": "\ud83c\udf24", + "partly_sunny": "\u26c5", + "white_sun_cloud": "\ud83c\udf25", + "white_sun_rain_cloud": "\ud83c\udf26", + "cloud": "\u2601", + "cloud_rain": "\ud83c\udf27", + "thunder_cloud_rain": "\u26c8", + "cloud_lightning": "\ud83c\udf29", + "zap": "\u26a1", + "fire": "\ud83d\udd25", + "boom": "\ud83d\udca5", + "snowflake": "\u2744", + "cloud_snow": "\ud83c\udf28", + "snowman2": "\u2603", + "snowman": "\u26c4", + "wind_blowing_face": "\ud83c\udf2c", + "dash": "\ud83d\udca8", + "cloud_tornado": "\ud83c\udf2a", + "fog": "\ud83c\udf2b", + "umbrella2": "\u2602", + "umbrella": "\u2614", + "droplet": "\ud83d\udca7", + "sweat_drops": "\ud83d\udca6", + "ocean": "\ud83c\udf0a", + "green_apple": "\ud83c\udf4f", + "apple": "\ud83c\udf4e", + "pear": "\ud83c\udf50", + "tangerine": "\ud83c\udf4a", + "lemon": "\ud83c\udf4b", + "banana": "\ud83c\udf4c", + "watermelon": "\ud83c\udf49", + "grapes": "\ud83c\udf47", + "strawberry": "\ud83c\udf53", + "melon": "\ud83c\udf48", + "cherries": "\ud83c\udf52", + "peach": "\ud83c\udf51", + "pineapple": "\ud83c\udf4d", + "tomato": "\ud83c\udf45", + "eggplant": "\ud83c\udf46", + "hot_pepper": "\ud83c\udf36", + "corn": "\ud83c\udf3d", + "sweet_potato": "\ud83c\udf60", + "honey_pot": "\ud83c\udf6f", + "bread": "\ud83c\udf5e", + "cheese": "\ud83e\uddc0", + "poultry_leg": "\ud83c\udf57", + "meat_on_bone": "\ud83c\udf56", + "fried_shrimp": "\ud83c\udf64", + "egg": "\ud83c\udf73", + "hamburger": "\ud83c\udf54", + "fries": "\ud83c\udf5f", + "hotdog": "\ud83c\udf2d", + "pizza": "\ud83c\udf55", + "spaghetti": "\ud83c\udf5d", + "taco": "\ud83c\udf2e", + "burrito": "\ud83c\udf2f", + "ramen": "\ud83c\udf5c", + "stew": "\ud83c\udf72", + "fish_cake": "\ud83c\udf65", + "sushi": "\ud83c\udf63", + "bento": "\ud83c\udf71", + "curry": "\ud83c\udf5b", + "rice_ball": "\ud83c\udf59", + "rice": "\ud83c\udf5a", + "rice_cracker": "\ud83c\udf58", + "oden": "\ud83c\udf62", + "dango": "\ud83c\udf61", + "shaved_ice": "\ud83c\udf67", + "ice_cream": "\ud83c\udf68", + "icecream": "\ud83c\udf66", + "cake": "\ud83c\udf70", + "birthday": "\ud83c\udf82", + "custard": "\ud83c\udf6e", + "candy": "\ud83c\udf6c", + "lollipop": "\ud83c\udf6d", + "chocolate_bar": "\ud83c\udf6b", + "popcorn": "\ud83c\udf7f", + "doughnut": "\ud83c\udf69", + "cookie": "\ud83c\udf6a", + "beer": "\ud83c\udf7a", + "beers": "\ud83c\udf7b", + "wine_glass": "\ud83c\udf77", + "cocktail": "\ud83c\udf78", + "tropical_drink": "\ud83c\udf79", + "champagne": "\ud83c\udf7e", + "sake": "\ud83c\udf76", + "tea": "\ud83c\udf75", + "coffee": "\u2615", + "baby_bottle": "\ud83c\udf7c", + "fork_and_knife": "\ud83c\udf74", + "fork_knife_plate": "\ud83c\udf7d", + "soccer": "\u26bd", + "basketball": "\ud83c\udfc0", + "football": "\ud83c\udfc8", + "baseball": "\u26be", + "tennis": "\ud83c\udfbe", + "volleyball": "\ud83c\udfd0", + "rugby_football": "\ud83c\udfc9", + "8ball": "\ud83c\udfb1", + "golf": "\u26f3", + "golfer": "\ud83c\udfcc", + "ping_pong": "\ud83c\udfd3", + "badminton": "\ud83c\udff8", + "hockey": "\ud83c\udfd2", + "field_hockey": "\ud83c\udfd1", + "cricket": "\ud83c\udfcf", + "ski": "\ud83c\udfbf", + "skier": "\u26f7", + "snowboarder": "\ud83c\udfc2", + "ice_skate": "\u26f8", + "bow_and_arrow": "\ud83c\udff9", + "fishing_pole_and_fish": "\ud83c\udfa3", + "rowboat": "\ud83d\udea3", + "swimmer": "\ud83c\udfca", + "surfer": "\ud83c\udfc4", + "bath": "\ud83d\udec0", + "basketball_player": "\u26f9", + "lifter": "\ud83c\udfcb", + "bicyclist": "\ud83d\udeb4", + "mountain_bicyclist": "\ud83d\udeb5", + "horse_racing": "\ud83c\udfc7", + "levitate": "\ud83d\udd74", + "trophy": "\ud83c\udfc6", + "running_shirt_with_sash": "\ud83c\udfbd", + "medal": "\ud83c\udfc5", + "military_medal": "\ud83c\udf96", + "reminder_ribbon": "\ud83c\udf97", + "rosette": "\ud83c\udff5", + "ticket": "\ud83c\udfab", + "tickets": "\ud83c\udf9f", + "performing_arts": "\ud83c\udfad", + "art": "\ud83c\udfa8", + "circus_tent": "\ud83c\udfaa", + "microphone": "\ud83c\udfa4", + "headphones": "\ud83c\udfa7", + "musical_score": "\ud83c\udfbc", + "musical_keyboard": "\ud83c\udfb9", + "saxophone": "\ud83c\udfb7", + "trumpet": "\ud83c\udfba", + "guitar": "\ud83c\udfb8", + "violin": "\ud83c\udfbb", + "clapper": "\ud83c\udfac", + "video_game": "\ud83c\udfae", + "space_invader": "\ud83d\udc7e", + "dart": "\ud83c\udfaf", + "game_die": "\ud83c\udfb2", + "slot_machine": "\ud83c\udfb0", + "bowling": "\ud83c\udfb3", + "red_car": "\ud83d\ude97", + "taxi": "\ud83d\ude95", + "blue_car": "\ud83d\ude99", + "bus": "\ud83d\ude8c", + "trolleybus": "\ud83d\ude8e", + "race_car": "\ud83c\udfce", + "police_car": "\ud83d\ude93", + "ambulance": "\ud83d\ude91", + "fire_engine": "\ud83d\ude92", + "minibus": "\ud83d\ude90", + "truck": "\ud83d\ude9a", + "articulated_lorry": "\ud83d\ude9b", + "tractor": "\ud83d\ude9c", + "motorcycle": "\ud83c\udfcd", + "bike": "\ud83d\udeb2", + "rotating_light": "\ud83d\udea8", + "oncoming_police_car": "\ud83d\ude94", + "oncoming_bus": "\ud83d\ude8d", + "oncoming_automobile": "\ud83d\ude98", + "oncoming_taxi": "\ud83d\ude96", + "aerial_tramway": "\ud83d\udea1", + "mountain_cableway": "\ud83d\udea0", + "suspension_railway": "\ud83d\ude9f", + "railway_car": "\ud83d\ude83", + "train": "\ud83d\ude8b", + "monorail": "\ud83d\ude9d", + "bullettrain_side": "\ud83d\ude84", + "bullettrain_front": "\ud83d\ude85", + "light_rail": "\ud83d\ude88", + "mountain_railway": "\ud83d\ude9e", + "steam_locomotive": "\ud83d\ude82", + "train2": "\ud83d\ude86", + "metro": "\ud83d\ude87", + "tram": "\ud83d\ude8a", + "station": "\ud83d\ude89", + "helicopter": "\ud83d\ude81", + "airplane_small": "\ud83d\udee9", + "airplane": "\u2708", + "airplane_departure": "\ud83d\udeeb", + "airplane_arriving": "\ud83d\udeec", + "sailboat": "\u26f5", + "motorboat": "\ud83d\udee5", + "speedboat": "\ud83d\udea4", + "ferry": "\u26f4", + "cruise_ship": "\ud83d\udef3", + "rocket": "\ud83d\ude80", + "satellite_orbital": "\ud83d\udef0", + "seat": "\ud83d\udcba", + "anchor": "\u2693", + "construction": "\ud83d\udea7", + "fuelpump": "\u26fd", + "busstop": "\ud83d\ude8f", + "vertical_traffic_light": "\ud83d\udea6", + "traffic_light": "\ud83d\udea5", + "checkered_flag": "\ud83c\udfc1", + "ship": "\ud83d\udea2", + "ferris_wheel": "\ud83c\udfa1", + "roller_coaster": "\ud83c\udfa2", + "carousel_horse": "\ud83c\udfa0", + "construction_site": "\ud83c\udfd7", + "foggy": "\ud83c\udf01", + "tokyo_tower": "\ud83d\uddfc", + "factory": "\ud83c\udfed", + "fountain": "\u26f2", + "rice_scene": "\ud83c\udf91", + "mountain": "\u26f0", + "mountain_snow": "\ud83c\udfd4", + "mount_fuji": "\ud83d\uddfb", + "volcano": "\ud83c\udf0b", + "japan": "\ud83d\uddfe", + "camping": "\ud83c\udfd5", + "tent": "\u26fa", + "park": "\ud83c\udfde", + "motorway": "\ud83d\udee3", + "railway_track": "\ud83d\udee4", + "sunrise": "\ud83c\udf05", + "sunrise_over_mountains": "\ud83c\udf04", + "desert": "\ud83c\udfdc", + "beach": "\ud83c\udfd6", + "island": "\ud83c\udfdd", + "city_sunset": "\ud83c\udf07", + "city_dusk": "\ud83c\udf06", + "cityscape": "\ud83c\udfd9", + "night_with_stars": "\ud83c\udf03", + "bridge_at_night": "\ud83c\udf09", + "milky_way": "\ud83c\udf0c", + "stars": "\ud83c\udf20", + "sparkler": "\ud83c\udf87", + "fireworks": "\ud83c\udf86", + "rainbow": "\ud83c\udf08", + "homes": "\ud83c\udfd8", + "european_castle": "\ud83c\udff0", + "japanese_castle": "\ud83c\udfef", + "stadium": "\ud83c\udfdf", + "statue_of_liberty": "\ud83d\uddfd", + "house": "\ud83c\udfe0", + "house_with_garden": "\ud83c\udfe1", + "house_abandoned": "\ud83c\udfda", + "office": "\ud83c\udfe2", + "department_store": "\ud83c\udfec", + "post_office": "\ud83c\udfe3", + "european_post_office": "\ud83c\udfe4", + "hospital": "\ud83c\udfe5", + "bank": "\ud83c\udfe6", + "hotel": "\ud83c\udfe8", + "convenience_store": "\ud83c\udfea", + "school": "\ud83c\udfeb", + "love_hotel": "\ud83c\udfe9", + "wedding": "\ud83d\udc92", + "classical_building": "\ud83c\udfdb", + "church": "\u26ea", + "mosque": "\ud83d\udd4c", + "synagogue": "\ud83d\udd4d", + "kaaba": "\ud83d\udd4b", + "shinto_shrine": "\u26e9", + "watch": "\u231a", + "iphone": "\ud83d\udcf1", + "calling": "\ud83d\udcf2", + "computer": "\ud83d\udcbb", + "keyboard": "\u2328", + "desktop": "\ud83d\udda5", + "printer": "\ud83d\udda8", + "mouse_three_button": "\ud83d\uddb1", + "trackball": "\ud83d\uddb2", + "joystick": "\ud83d\udd79", + "compression": "\ud83d\udddc", + "minidisc": "\ud83d\udcbd", + "floppy_disk": "\ud83d\udcbe", + "cd": "\ud83d\udcbf", + "dvd": "\ud83d\udcc0", + "vhs": "\ud83d\udcfc", + "camera": "\ud83d\udcf7", + "camera_with_flash": "\ud83d\udcf8", + "video_camera": "\ud83d\udcf9", + "movie_camera": "\ud83c\udfa5", + "projector": "\ud83d\udcfd", + "film_frames": "\ud83c\udf9e", + "telephone_receiver": "\ud83d\udcde", + "telephone": "\u260e", + "pager": "\ud83d\udcdf", + "fax": "\ud83d\udce0", + "tv": "\ud83d\udcfa", + "radio": "\ud83d\udcfb", + "microphone2": "\ud83c\udf99", + "level_slider": "\ud83c\udf9a", + "control_knobs": "\ud83c\udf9b", + "stopwatch": "\u23f1", + "timer": "\u23f2", + "alarm_clock": "\u23f0", + "clock": "\ud83d\udd70", + "hourglass_flowing_sand": "\u23f3", + "hourglass": "\u231b", + "satellite": "\ud83d\udce1", + "battery": "\ud83d\udd0b", + "electric_plug": "\ud83d\udd0c", + "bulb": "\ud83d\udca1", + "flashlight": "\ud83d\udd26", + "candle": "\ud83d\udd6f", + "wastebasket": "\ud83d\uddd1", + "oil": "\ud83d\udee2", + "money_with_wings": "\ud83d\udcb8", + "dollar": "\ud83d\udcb5", + "yen": "\ud83d\udcb4", + "euro": "\ud83d\udcb6", + "pound": "\ud83d\udcb7", + "moneybag": "\ud83d\udcb0", + "credit_card": "\ud83d\udcb3", + "gem": "\ud83d\udc8e", + "scales": "\u2696", + "wrench": "\ud83d\udd27", + "hammer": "\ud83d\udd28", + "hammer_pick": "\u2692", + "tools": "\ud83d\udee0", + "pick": "\u26cf", + "nut_and_bolt": "\ud83d\udd29", + "gear": "\u2699", + "chains": "\u26d3", + "gun": "\ud83d\udd2b", + "bomb": "\ud83d\udca3", + "knife": "\ud83d\udd2a", + "dagger": "\ud83d\udde1", + "crossed_swords": "\u2694", + "shield": "\ud83d\udee1", + "smoking": "\ud83d\udeac", + "skull_crossbones": "\u2620", + "coffin": "\u26b0", + "urn": "\u26b1", + "amphora": "\ud83c\udffa", + "crystal_ball": "\ud83d\udd2e", + "prayer_beads": "\ud83d\udcff", + "barber": "\ud83d\udc88", + "alembic": "\u2697", + "telescope": "\ud83d\udd2d", + "microscope": "\ud83d\udd2c", + "hole": "\ud83d\udd73", + "pill": "\ud83d\udc8a", + "syringe": "\ud83d\udc89", + "thermometer": "\ud83c\udf21", + "label": "\ud83c\udff7", + "bookmark": "\ud83d\udd16", + "toilet": "\ud83d\udebd", + "shower": "\ud83d\udebf", + "bathtub": "\ud83d\udec1", + "key": "\ud83d\udd11", + "key2": "\ud83d\udddd", + "couch": "\ud83d\udecb", + "sleeping_accommodation": "\ud83d\udecc", + "bed": "\ud83d\udecf", + "door": "\ud83d\udeaa", + "bellhop": "\ud83d\udece", + "frame_photo": "\ud83d\uddbc", + "map": "\ud83d\uddfa", + "beach_umbrella": "\u26f1", + "moyai": "\ud83d\uddff", + "shopping_bags": "\ud83d\udecd", + "balloon": "\ud83c\udf88", + "flags": "\ud83c\udf8f", + "ribbon": "\ud83c\udf80", + "gift": "\ud83c\udf81", + "confetti_ball": "\ud83c\udf8a", + "tada": "\ud83c\udf89", + "dolls": "\ud83c\udf8e", + "wind_chime": "\ud83c\udf90", + "crossed_flags": "\ud83c\udf8c", + "izakaya_lantern": "\ud83c\udfee", + "envelope": "\u2709", + "envelope_with_arrow": "\ud83d\udce9", + "incoming_envelope": "\ud83d\udce8", + "e-mail": "\ud83d\udce7", + "love_letter": "\ud83d\udc8c", + "postbox": "\ud83d\udcee", + "mailbox_closed": "\ud83d\udcea", + "mailbox": "\ud83d\udceb", + "mailbox_with_mail": "\ud83d\udcec", + "mailbox_with_no_mail": "\ud83d\udced", + "package": "\ud83d\udce6", + "postal_horn": "\ud83d\udcef", + "inbox_tray": "\ud83d\udce5", + "outbox_tray": "\ud83d\udce4", + "scroll": "\ud83d\udcdc", + "page_with_curl": "\ud83d\udcc3", + "bookmark_tabs": "\ud83d\udcd1", + "bar_chart": "\ud83d\udcca", + "chart_with_upwards_trend": "\ud83d\udcc8", + "chart_with_downwards_trend": "\ud83d\udcc9", + "page_facing_up": "\ud83d\udcc4", + "date": "\ud83d\udcc5", + "calendar": "\ud83d\udcc6", + "calendar_spiral": "\ud83d\uddd3", + "card_index": "\ud83d\udcc7", + "card_box": "\ud83d\uddc3", + "ballot_box": "\ud83d\uddf3", + "file_cabinet": "\ud83d\uddc4", + "clipboard": "\ud83d\udccb", + "notepad_spiral": "\ud83d\uddd2", + "file_folder": "\ud83d\udcc1", + "open_file_folder": "\ud83d\udcc2", + "dividers": "\ud83d\uddc2", + "newspaper2": "\ud83d\uddde", + "newspaper": "\ud83d\udcf0", + "notebook": "\ud83d\udcd3", + "closed_book": "\ud83d\udcd5", + "green_book": "\ud83d\udcd7", + "blue_book": "\ud83d\udcd8", + "orange_book": "\ud83d\udcd9", + "notebook_with_decorative_cover": "\ud83d\udcd4", + "ledger": "\ud83d\udcd2", + "books": "\ud83d\udcda", + "book": "\ud83d\udcd6", + "link": "\ud83d\udd17", + "paperclip": "\ud83d\udcce", + "paperclips": "\ud83d\udd87", + "scissors": "\u2702", + "triangular_ruler": "\ud83d\udcd0", + "straight_ruler": "\ud83d\udccf", + "pushpin": "\ud83d\udccc", + "round_pushpin": "\ud83d\udccd", + "triangular_flag_on_post": "\ud83d\udea9", + "flag_white": "\ud83c\udff3", + "flag_black": "\ud83c\udff4", + "closed_lock_with_key": "\ud83d\udd10", + "lock": "\ud83d\udd12", + "unlock": "\ud83d\udd13", + "lock_with_ink_pen": "\ud83d\udd0f", + "pen_ballpoint": "\ud83d\udd8a", + "pen_fountain": "\ud83d\udd8b", + "black_nib": "\u2712", + "pencil": "\ud83d\udcdd", + "pencil2": "\u270f", + "crayon": "\ud83d\udd8d", + "paintbrush": "\ud83d\udd8c", + "mag": "\ud83d\udd0d", + "mag_right": "\ud83d\udd0e", + "heart": "\u2764", + "yellow_heart": "\ud83d\udc9b", + "green_heart": "\ud83d\udc9a", + "blue_heart": "\ud83d\udc99", + "purple_heart": "\ud83d\udc9c", + "broken_heart": "\ud83d\udc94", + "heart_exclamation": "\u2763", + "two_hearts": "\ud83d\udc95", + "revolving_hearts": "\ud83d\udc9e", + "heartbeat": "\ud83d\udc93", + "heartpulse": "\ud83d\udc97", + "sparkling_heart": "\ud83d\udc96", + "cupid": "\ud83d\udc98", + "gift_heart": "\ud83d\udc9d", + "heart_decoration": "\ud83d\udc9f", + "peace": "\u262e", + "cross": "\u271d", + "star_and_crescent": "\u262a", + "om_symbol": "\ud83d\udd49", + "wheel_of_dharma": "\u2638", + "star_of_david": "\u2721", + "six_pointed_star": "\ud83d\udd2f", + "menorah": "\ud83d\udd4e", + "yin_yang": "\u262f", + "orthodox_cross": "\u2626", + "place_of_worship": "\ud83d\uded0", + "ophiuchus": "\u26ce", + "aries": "\u2648", + "taurus": "\u2649", + "gemini": "\u264a", + "cancer": "\u264b", + "leo": "\u264c", + "virgo": "\u264d", + "libra": "\u264e", + "scorpius": "\u264f", + "sagittarius": "\u2650", + "capricorn": "\u2651", + "aquarius": "\u2652", + "pisces": "\u2653", + "id": "\ud83c\udd94", + "atom": "\u269b", + "u7a7a": "\ud83c\ude33", + "u5272": "\ud83c\ude39", + "radioactive": "\u2622", + "biohazard": "\u2623", + "mobile_phone_off": "\ud83d\udcf4", + "vibration_mode": "\ud83d\udcf3", + "u6709": "\ud83c\ude36", + "u7121": "\ud83c\ude1a", + "u7533": "\ud83c\ude38", + "u55b6": "\ud83c\ude3a", + "u6708": "\ud83c\ude37", + "eight_pointed_black_star": "\u2734", + "vs": "\ud83c\udd9a", + "accept": "\ud83c\ude51", + "white_flower": "\ud83d\udcae", + "ideograph_advantage": "\ud83c\ude50", + "secret": "\u3299", + "congratulations": "\u3297", + "u5408": "\ud83c\ude34", + "u6e80": "\ud83c\ude35", + "u7981": "\ud83c\ude32", + "a": "\ud83c\udd70", + "b": "\ud83c\udd71", + "ab": "\ud83c\udd8e", + "cl": "\ud83c\udd91", + "o2": "\ud83c\udd7e", + "sos": "\ud83c\udd98", + "no_entry": "\u26d4", + "name_badge": "\ud83d\udcdb", + "no_entry_sign": "\ud83d\udeab", + "x": "\u274c", + "o": "\u2b55", + "anger": "\ud83d\udca2", + "hotsprings": "\u2668", + "no_pedestrians": "\ud83d\udeb7", + "do_not_litter": "\ud83d\udeaf", + "no_bicycles": "\ud83d\udeb3", + "non-potable_water": "\ud83d\udeb1", + "underage": "\ud83d\udd1e", + "no_mobile_phones": "\ud83d\udcf5", + "exclamation": "\u2757", + "grey_exclamation": "\u2755", + "question": "\u2753", + "grey_question": "\u2754", + "bangbang": "\u203c", + "interrobang": "\u2049", + "100": "\ud83d\udcaf", + "low_brightness": "\ud83d\udd05", + "high_brightness": "\ud83d\udd06", + "trident": "\ud83d\udd31", + "fleur-de-lis": "\u269c", + "part_alternation_mark": "\u303d", + "warning": "\u26a0", + "children_crossing": "\ud83d\udeb8", + "beginner": "\ud83d\udd30", + "recycle": "\u267b", + "u6307": "\ud83c\ude2f", + "chart": "\ud83d\udcb9", + "sparkle": "\u2747", + "eight_spoked_asterisk": "\u2733", + "negative_squared_cross_mark": "\u274e", + "white_check_mark": "\u2705", + "diamond_shape_with_a_dot_inside": "\ud83d\udca0", + "cyclone": "\ud83c\udf00", + "loop": "\u27bf", + "globe_with_meridians": "\ud83c\udf10", + "m": "\u24c2", + "atm": "\ud83c\udfe7", + "sa": "\ud83c\ude02", + "passport_control": "\ud83d\udec2", + "customs": "\ud83d\udec3", + "baggage_claim": "\ud83d\udec4", + "left_luggage": "\ud83d\udec5", + "wheelchair": "\u267f", + "no_smoking": "\ud83d\udead", + "wc": "\ud83d\udebe", + "parking": "\ud83c\udd7f", + "potable_water": "\ud83d\udeb0", + "mens": "\ud83d\udeb9", + "womens": "\ud83d\udeba", + "baby_symbol": "\ud83d\udebc", + "restroom": "\ud83d\udebb", + "put_litter_in_its_place": "\ud83d\udeae", + "cinema": "\ud83c\udfa6", + "signal_strength": "\ud83d\udcf6", + "koko": "\ud83c\ude01", + "ng": "\ud83c\udd96", + "ok": "\ud83c\udd97", + "up": "\ud83c\udd99", + "cool": "\ud83c\udd92", + "new": "\ud83c\udd95", + "free": "\ud83c\udd93", + "zero": "0\u20e3", + "one": "1\u20e3", + "two": "2\u20e3", + "three": "3\u20e3", + "four": "4\u20e3", + "five": "5\u20e3", + "six": "6\u20e3", + "seven": "7\u20e3", + "eight": "8\u20e3", + "nine": "9\u20e3", + "ten": "\ud83d\udd1f", + "1234": "\ud83d\udd22", + "arrow_forward": "\u25b6", + "pause_button": "\u23f8", + "play_pause": "\u23ef", + "stop_button": "\u23f9", + "record_button": "\u23fa", + "track_next": "\u23ed", + "track_previous": "\u23ee", + "fast_forward": "\u23e9", + "rewind": "\u23ea", + "twisted_rightwards_arrows": "\ud83d\udd00", + "repeat": "\ud83d\udd01", + "repeat_one": "\ud83d\udd02", + "arrow_backward": "\u25c0", + "arrow_up_small": "\ud83d\udd3c", + "arrow_down_small": "\ud83d\udd3d", + "arrow_double_up": "\u23eb", + "arrow_double_down": "\u23ec", + "arrow_right": "\u27a1", + "arrow_left": "\u2b05", + "arrow_up": "\u2b06", + "arrow_down": "\u2b07", + "arrow_upper_right": "\u2197", + "arrow_lower_right": "\u2198", + "arrow_lower_left": "\u2199", + "arrow_upper_left": "\u2196", + "arrow_up_down": "\u2195", + "left_right_arrow": "\u2194", + "arrows_counterclockwise": "\ud83d\udd04", + "arrow_right_hook": "\u21aa", + "leftwards_arrow_with_hook": "\u21a9", + "arrow_heading_up": "\u2934", + "arrow_heading_down": "\u2935", + "hash": "#\u20e3", + "asterisk": "*\u20e3", + "information_source": "\u2139", + "abc": "\ud83d\udd24", + "abcd": "\ud83d\udd21", + "capital_abcd": "\ud83d\udd20", + "symbols": "\ud83d\udd23", + "musical_note": "\ud83c\udfb5", + "notes": "\ud83c\udfb6", + "wavy_dash": "\u3030", + "curly_loop": "\u27b0", + "heavy_check_mark": "\u2714", + "arrows_clockwise": "\ud83d\udd03", + "heavy_plus_sign": "\u2795", + "heavy_minus_sign": "\u2796", + "heavy_division_sign": "\u2797", + "heavy_multiplication_x": "\u2716", + "heavy_dollar_sign": "\ud83d\udcb2", + "currency_exchange": "\ud83d\udcb1", + "copyright": "\u00a9", + "registered": "\u00ae", + "tm": "\u2122", + "end": "\ud83d\udd1a", + "back": "\ud83d\udd19", + "on": "\ud83d\udd1b", + "top": "\ud83d\udd1d", + "soon": "\ud83d\udd1c", + "ballot_box_with_check": "\u2611", + "radio_button": "\ud83d\udd18", + "white_circle": "\u26aa", + "black_circle": "\u26ab", + "red_circle": "\ud83d\udd34", + "large_blue_circle": "\ud83d\udd35", + "small_orange_diamond": "\ud83d\udd38", + "small_blue_diamond": "\ud83d\udd39", + "large_orange_diamond": "\ud83d\udd36", + "large_blue_diamond": "\ud83d\udd37", + "small_red_triangle": "\ud83d\udd3a", + "black_small_square": "\u25aa", + "white_small_square": "\u25ab", + "black_large_square": "\u2b1b", + "white_large_square": "\u2b1c", + "small_red_triangle_down": "\ud83d\udd3b", + "black_medium_square": "\u25fc", + "white_medium_square": "\u25fb", + "black_medium_small_square": "\u25fe", + "white_medium_small_square": "\u25fd", + "black_square_button": "\ud83d\udd32", + "white_square_button": "\ud83d\udd33", + "speaker": "\ud83d\udd08", + "sound": "\ud83d\udd09", + "loud_sound": "\ud83d\udd0a", + "mute": "\ud83d\udd07", + "mega": "\ud83d\udce3", + "loudspeaker": "\ud83d\udce2", + "bell": "\ud83d\udd14", + "no_bell": "\ud83d\udd15", + "black_joker": "\ud83c\udccf", + "mahjong": "\ud83c\udc04", + "spades": "\u2660", + "clubs": "\u2663", + "hearts": "\u2665", + "diamonds": "\u2666", + "flower_playing_cards": "\ud83c\udfb4", + "thought_balloon": "\ud83d\udcad", + "anger_right": "\ud83d\uddef", + "speech_balloon": "\ud83d\udcac", + "clock1": "\ud83d\udd50", + "clock2": "\ud83d\udd51", + "clock3": "\ud83d\udd52", + "clock4": "\ud83d\udd53", + "clock5": "\ud83d\udd54", + "clock6": "\ud83d\udd55", + "clock7": "\ud83d\udd56", + "clock8": "\ud83d\udd57", + "clock9": "\ud83d\udd58", + "clock10": "\ud83d\udd59", + "clock11": "\ud83d\udd5a", + "clock12": "\ud83d\udd5b", + "clock130": "\ud83d\udd5c", + "clock230": "\ud83d\udd5d", + "clock330": "\ud83d\udd5e", + "clock430": "\ud83d\udd5f", + "clock530": "\ud83d\udd60", + "clock630": "\ud83d\udd61", + "clock730": "\ud83d\udd62", + "clock830": "\ud83d\udd63", + "clock930": "\ud83d\udd64", + "clock1030": "\ud83d\udd65", + "clock1130": "\ud83d\udd66", + "clock1230": "\ud83d\udd67", + "eye_in_speech_bubble": "\ud83d\udc41\ud83d\udde8", + "flag_ac": "\ud83c\udde6\ud83c\udde8", + "flag_af": "\ud83c\udde6\ud83c\uddeb", + "flag_al": "\ud83c\udde6\ud83c\uddf1", + "flag_dz": "\ud83c\udde9\ud83c\uddff", + "flag_ad": "\ud83c\udde6\ud83c\udde9", + "flag_ao": "\ud83c\udde6\ud83c\uddf4", + "flag_ai": "\ud83c\udde6\ud83c\uddee", + "flag_ag": "\ud83c\udde6\ud83c\uddec", + "flag_ar": "\ud83c\udde6\ud83c\uddf7", + "flag_am": "\ud83c\udde6\ud83c\uddf2", + "flag_aw": "\ud83c\udde6\ud83c\uddfc", + "flag_au": "\ud83c\udde6\ud83c\uddfa", + "flag_at": "\ud83c\udde6\ud83c\uddf9", + "flag_az": "\ud83c\udde6\ud83c\uddff", + "flag_bs": "\ud83c\udde7\ud83c\uddf8", + "flag_bh": "\ud83c\udde7\ud83c\udded", + "flag_bd": "\ud83c\udde7\ud83c\udde9", + "flag_bb": "\ud83c\udde7\ud83c\udde7", + "flag_by": "\ud83c\udde7\ud83c\uddfe", + "flag_be": "\ud83c\udde7\ud83c\uddea", + "flag_bz": "\ud83c\udde7\ud83c\uddff", + "flag_bj": "\ud83c\udde7\ud83c\uddef", + "flag_bm": "\ud83c\udde7\ud83c\uddf2", + "flag_bt": "\ud83c\udde7\ud83c\uddf9", + "flag_bo": "\ud83c\udde7\ud83c\uddf4", + "flag_ba": "\ud83c\udde7\ud83c\udde6", + "flag_bw": "\ud83c\udde7\ud83c\uddfc", + "flag_br": "\ud83c\udde7\ud83c\uddf7", + "flag_bn": "\ud83c\udde7\ud83c\uddf3", + "flag_bg": "\ud83c\udde7\ud83c\uddec", + "flag_bf": "\ud83c\udde7\ud83c\uddeb", + "flag_bi": "\ud83c\udde7\ud83c\uddee", + "flag_cv": "\ud83c\udde8\ud83c\uddfb", + "flag_kh": "\ud83c\uddf0\ud83c\udded", + "flag_cm": "\ud83c\udde8\ud83c\uddf2", + "flag_ca": "\ud83c\udde8\ud83c\udde6", + "flag_ky": "\ud83c\uddf0\ud83c\uddfe", + "flag_cf": "\ud83c\udde8\ud83c\uddeb", + "flag_td": "\ud83c\uddf9\ud83c\udde9", + "flag_cl": "\ud83c\udde8\ud83c\uddf1", + "flag_cn": "\ud83c\udde8\ud83c\uddf3", + "flag_co": "\ud83c\udde8\ud83c\uddf4", + "flag_km": "\ud83c\uddf0\ud83c\uddf2", + "flag_cg": "\ud83c\udde8\ud83c\uddec", + "flag_cd": "\ud83c\udde8\ud83c\udde9", + "flag_cr": "\ud83c\udde8\ud83c\uddf7", + "flag_hr": "\ud83c\udded\ud83c\uddf7", + "flag_cu": "\ud83c\udde8\ud83c\uddfa", + "flag_cy": "\ud83c\udde8\ud83c\uddfe", + "flag_cz": "\ud83c\udde8\ud83c\uddff", + "flag_dk": "\ud83c\udde9\ud83c\uddf0", + "flag_dj": "\ud83c\udde9\ud83c\uddef", + "flag_dm": "\ud83c\udde9\ud83c\uddf2", + "flag_do": "\ud83c\udde9\ud83c\uddf4", + "flag_ec": "\ud83c\uddea\ud83c\udde8", + "flag_eg": "\ud83c\uddea\ud83c\uddec", + "flag_sv": "\ud83c\uddf8\ud83c\uddfb", + "flag_gq": "\ud83c\uddec\ud83c\uddf6", + "flag_er": "\ud83c\uddea\ud83c\uddf7", + "flag_ee": "\ud83c\uddea\ud83c\uddea", + "flag_et": "\ud83c\uddea\ud83c\uddf9", + "flag_fk": "\ud83c\uddeb\ud83c\uddf0", + "flag_fo": "\ud83c\uddeb\ud83c\uddf4", + "flag_fj": "\ud83c\uddeb\ud83c\uddef", + "flag_fi": "\ud83c\uddeb\ud83c\uddee", + "flag_fr": "\ud83c\uddeb\ud83c\uddf7", + "flag_pf": "\ud83c\uddf5\ud83c\uddeb", + "flag_ga": "\ud83c\uddec\ud83c\udde6", + "flag_gm": "\ud83c\uddec\ud83c\uddf2", + "flag_ge": "\ud83c\uddec\ud83c\uddea", + "flag_de": "\ud83c\udde9\ud83c\uddea", + "flag_gh": "\ud83c\uddec\ud83c\udded", + "flag_gi": "\ud83c\uddec\ud83c\uddee", + "flag_gr": "\ud83c\uddec\ud83c\uddf7", + "flag_gl": "\ud83c\uddec\ud83c\uddf1", + "flag_gd": "\ud83c\uddec\ud83c\udde9", + "flag_gu": "\ud83c\uddec\ud83c\uddfa", + "flag_gt": "\ud83c\uddec\ud83c\uddf9", + "flag_gn": "\ud83c\uddec\ud83c\uddf3", + "flag_gw": "\ud83c\uddec\ud83c\uddfc", + "flag_gy": "\ud83c\uddec\ud83c\uddfe", + "flag_ht": "\ud83c\udded\ud83c\uddf9", + "flag_hn": "\ud83c\udded\ud83c\uddf3", + "flag_hk": "\ud83c\udded\ud83c\uddf0", + "flag_hu": "\ud83c\udded\ud83c\uddfa", + "flag_is": "\ud83c\uddee\ud83c\uddf8", + "flag_in": "\ud83c\uddee\ud83c\uddf3", + "flag_id": "\ud83c\uddee\ud83c\udde9", + "flag_ir": "\ud83c\uddee\ud83c\uddf7", + "flag_iq": "\ud83c\uddee\ud83c\uddf6", + "flag_ie": "\ud83c\uddee\ud83c\uddea", + "flag_il": "\ud83c\uddee\ud83c\uddf1", + "flag_it": "\ud83c\uddee\ud83c\uddf9", + "flag_ci": "\ud83c\udde8\ud83c\uddee", + "flag_jm": "\ud83c\uddef\ud83c\uddf2", + "flag_jp": "\ud83c\uddef\ud83c\uddf5", + "flag_je": "\ud83c\uddef\ud83c\uddea", + "flag_jo": "\ud83c\uddef\ud83c\uddf4", + "flag_kz": "\ud83c\uddf0\ud83c\uddff", + "flag_ke": "\ud83c\uddf0\ud83c\uddea", + "flag_ki": "\ud83c\uddf0\ud83c\uddee", + "flag_xk": "\ud83c\uddfd\ud83c\uddf0", + "flag_kw": "\ud83c\uddf0\ud83c\uddfc", + "flag_kg": "\ud83c\uddf0\ud83c\uddec", + "flag_la": "\ud83c\uddf1\ud83c\udde6", + "flag_lv": "\ud83c\uddf1\ud83c\uddfb", + "flag_lb": "\ud83c\uddf1\ud83c\udde7", + "flag_ls": "\ud83c\uddf1\ud83c\uddf8", + "flag_lr": "\ud83c\uddf1\ud83c\uddf7", + "flag_ly": "\ud83c\uddf1\ud83c\uddfe", + "flag_li": "\ud83c\uddf1\ud83c\uddee", + "flag_lt": "\ud83c\uddf1\ud83c\uddf9", + "flag_lu": "\ud83c\uddf1\ud83c\uddfa", + "flag_mo": "\ud83c\uddf2\ud83c\uddf4", + "flag_mk": "\ud83c\uddf2\ud83c\uddf0", + "flag_mg": "\ud83c\uddf2\ud83c\uddec", + "flag_mw": "\ud83c\uddf2\ud83c\uddfc", + "flag_my": "\ud83c\uddf2\ud83c\uddfe", + "flag_mv": "\ud83c\uddf2\ud83c\uddfb", + "flag_ml": "\ud83c\uddf2\ud83c\uddf1", + "flag_mt": "\ud83c\uddf2\ud83c\uddf9", + "flag_mh": "\ud83c\uddf2\ud83c\udded", + "flag_mr": "\ud83c\uddf2\ud83c\uddf7", + "flag_mu": "\ud83c\uddf2\ud83c\uddfa", + "flag_mx": "\ud83c\uddf2\ud83c\uddfd", + "flag_fm": "\ud83c\uddeb\ud83c\uddf2", + "flag_md": "\ud83c\uddf2\ud83c\udde9", + "flag_mc": "\ud83c\uddf2\ud83c\udde8", + "flag_mn": "\ud83c\uddf2\ud83c\uddf3", + "flag_me": "\ud83c\uddf2\ud83c\uddea", + "flag_ms": "\ud83c\uddf2\ud83c\uddf8", + "flag_ma": "\ud83c\uddf2\ud83c\udde6", + "flag_mz": "\ud83c\uddf2\ud83c\uddff", + "flag_mm": "\ud83c\uddf2\ud83c\uddf2", + "flag_na": "\ud83c\uddf3\ud83c\udde6", + "flag_nr": "\ud83c\uddf3\ud83c\uddf7", + "flag_np": "\ud83c\uddf3\ud83c\uddf5", + "flag_nl": "\ud83c\uddf3\ud83c\uddf1", + "flag_nc": "\ud83c\uddf3\ud83c\udde8", + "flag_nz": "\ud83c\uddf3\ud83c\uddff", + "flag_ni": "\ud83c\uddf3\ud83c\uddee", + "flag_ne": "\ud83c\uddf3\ud83c\uddea", + "flag_ng": "\ud83c\uddf3\ud83c\uddec", + "flag_nu": "\ud83c\uddf3\ud83c\uddfa", + "flag_kp": "\ud83c\uddf0\ud83c\uddf5", + "flag_no": "\ud83c\uddf3\ud83c\uddf4", + "flag_om": "\ud83c\uddf4\ud83c\uddf2", + "flag_pk": "\ud83c\uddf5\ud83c\uddf0", + "flag_pw": "\ud83c\uddf5\ud83c\uddfc", + "flag_ps": "\ud83c\uddf5\ud83c\uddf8", + "flag_pa": "\ud83c\uddf5\ud83c\udde6", + "flag_pg": "\ud83c\uddf5\ud83c\uddec", + "flag_py": "\ud83c\uddf5\ud83c\uddfe", + "flag_pe": "\ud83c\uddf5\ud83c\uddea", + "flag_ph": "\ud83c\uddf5\ud83c\udded", + "flag_pl": "\ud83c\uddf5\ud83c\uddf1", + "flag_pt": "\ud83c\uddf5\ud83c\uddf9", + "flag_pr": "\ud83c\uddf5\ud83c\uddf7", + "flag_qa": "\ud83c\uddf6\ud83c\udde6", + "flag_ro": "\ud83c\uddf7\ud83c\uddf4", + "flag_ru": "\ud83c\uddf7\ud83c\uddfa", + "flag_rw": "\ud83c\uddf7\ud83c\uddfc", + "flag_sh": "\ud83c\uddf8\ud83c\udded", + "flag_kn": "\ud83c\uddf0\ud83c\uddf3", + "flag_lc": "\ud83c\uddf1\ud83c\udde8", + "flag_vc": "\ud83c\uddfb\ud83c\udde8", + "flag_ws": "\ud83c\uddfc\ud83c\uddf8", + "flag_sm": "\ud83c\uddf8\ud83c\uddf2", + "flag_st": "\ud83c\uddf8\ud83c\uddf9", + "flag_sa": "\ud83c\uddf8\ud83c\udde6", + "flag_sn": "\ud83c\uddf8\ud83c\uddf3", + "flag_rs": "\ud83c\uddf7\ud83c\uddf8", + "flag_sc": "\ud83c\uddf8\ud83c\udde8", + "flag_sl": "\ud83c\uddf8\ud83c\uddf1", + "flag_sg": "\ud83c\uddf8\ud83c\uddec", + "flag_sk": "\ud83c\uddf8\ud83c\uddf0", + "flag_si": "\ud83c\uddf8\ud83c\uddee", + "flag_sb": "\ud83c\uddf8\ud83c\udde7", + "flag_so": "\ud83c\uddf8\ud83c\uddf4", + "flag_za": "\ud83c\uddff\ud83c\udde6", + "flag_kr": "\ud83c\uddf0\ud83c\uddf7", + "flag_es": "\ud83c\uddea\ud83c\uddf8", + "flag_lk": "\ud83c\uddf1\ud83c\uddf0", + "flag_sd": "\ud83c\uddf8\ud83c\udde9", + "flag_sr": "\ud83c\uddf8\ud83c\uddf7", + "flag_sz": "\ud83c\uddf8\ud83c\uddff", + "flag_se": "\ud83c\uddf8\ud83c\uddea", + "flag_ch": "\ud83c\udde8\ud83c\udded", + "flag_sy": "\ud83c\uddf8\ud83c\uddfe", + "flag_tw": "\ud83c\uddf9\ud83c\uddfc", + "flag_tj": "\ud83c\uddf9\ud83c\uddef", + "flag_tz": "\ud83c\uddf9\ud83c\uddff", + "flag_th": "\ud83c\uddf9\ud83c\udded", + "flag_tl": "\ud83c\uddf9\ud83c\uddf1", + "flag_tg": "\ud83c\uddf9\ud83c\uddec", + "flag_to": "\ud83c\uddf9\ud83c\uddf4", + "flag_tt": "\ud83c\uddf9\ud83c\uddf9", + "flag_tn": "\ud83c\uddf9\ud83c\uddf3", + "flag_tr": "\ud83c\uddf9\ud83c\uddf7", + "flag_tm": "\ud83c\uddf9\ud83c\uddf2", + "flag_tv": "\ud83c\uddf9\ud83c\uddfb", + "flag_ug": "\ud83c\uddfa\ud83c\uddec", + "flag_ua": "\ud83c\uddfa\ud83c\udde6", + "flag_ae": "\ud83c\udde6\ud83c\uddea", + "flag_gb": "\ud83c\uddec\ud83c\udde7", + "flag_us": "\ud83c\uddfa\ud83c\uddf8", + "flag_vi": "\ud83c\uddfb\ud83c\uddee", + "flag_uy": "\ud83c\uddfa\ud83c\uddfe", + "flag_uz": "\ud83c\uddfa\ud83c\uddff", + "flag_vu": "\ud83c\uddfb\ud83c\uddfa", + "flag_va": "\ud83c\uddfb\ud83c\udde6", + "flag_ve": "\ud83c\uddfb\ud83c\uddea", + "flag_vn": "\ud83c\uddfb\ud83c\uddf3", + "flag_wf": "\ud83c\uddfc\ud83c\uddeb", + "flag_eh": "\ud83c\uddea\ud83c\udded", + "flag_ye": "\ud83c\uddfe\ud83c\uddea", + "flag_zm": "\ud83c\uddff\ud83c\uddf2", + "flag_zw": "\ud83c\uddff\ud83c\uddfc", + "flag_re": "\ud83c\uddf7\ud83c\uddea", + "flag_ax": "\ud83c\udde6\ud83c\uddfd", + "flag_ta": "\ud83c\uddf9\ud83c\udde6", + "flag_io": "\ud83c\uddee\ud83c\uddf4", + "flag_bq": "\ud83c\udde7\ud83c\uddf6", + "flag_cx": "\ud83c\udde8\ud83c\uddfd", + "flag_cc": "\ud83c\udde8\ud83c\udde8", + "flag_gg": "\ud83c\uddec\ud83c\uddec", + "flag_im": "\ud83c\uddee\ud83c\uddf2", + "flag_yt": "\ud83c\uddfe\ud83c\uddf9", + "flag_nf": "\ud83c\uddf3\ud83c\uddeb", + "flag_pn": "\ud83c\uddf5\ud83c\uddf3", + "flag_bl": "\ud83c\udde7\ud83c\uddf1", + "flag_pm": "\ud83c\uddf5\ud83c\uddf2", + "flag_gs": "\ud83c\uddec\ud83c\uddf8", + "flag_tk": "\ud83c\uddf9\ud83c\uddf0", + "flag_bv": "\ud83c\udde7\ud83c\uddfb", + "flag_hm": "\ud83c\udded\ud83c\uddf2", + "flag_sj": "\ud83c\uddf8\ud83c\uddef", + "flag_um": "\ud83c\uddfa\ud83c\uddf2", + "flag_ic": "\ud83c\uddee\ud83c\udde8", + "flag_ea": "\ud83c\uddea\ud83c\udde6", + "flag_cp": "\ud83c\udde8\ud83c\uddf5", + "flag_dg": "\ud83c\udde9\ud83c\uddec", + "flag_as": "\ud83c\udde6\ud83c\uddf8", + "flag_aq": "\ud83c\udde6\ud83c\uddf6", + "flag_vg": "\ud83c\uddfb\ud83c\uddec", + "flag_ck": "\ud83c\udde8\ud83c\uddf0", + "flag_cw": "\ud83c\udde8\ud83c\uddfc", + "flag_eu": "\ud83c\uddea\ud83c\uddfa", + "flag_gf": "\ud83c\uddec\ud83c\uddeb", + "flag_tf": "\ud83c\uddf9\ud83c\uddeb", + "flag_gp": "\ud83c\uddec\ud83c\uddf5", + "flag_mq": "\ud83c\uddf2\ud83c\uddf6", + "flag_mp": "\ud83c\uddf2\ud83c\uddf5", + "flag_sx": "\ud83c\uddf8\ud83c\uddfd", + "flag_ss": "\ud83c\uddf8\ud83c\uddf8", + "flag_tc": "\ud83c\uddf9\ud83c\udde8", + "flag_mf": "\ud83c\uddf2\ud83c\uddeb", + "raised_hands_tone1": "\ud83d\ude4c\ud83c\udffb", + "raised_hands_tone2": "\ud83d\ude4c\ud83c\udffc", + "raised_hands_tone3": "\ud83d\ude4c\ud83c\udffd", + "raised_hands_tone4": "\ud83d\ude4c\ud83c\udffe", + "raised_hands_tone5": "\ud83d\ude4c\ud83c\udfff", + "clap_tone1": "\ud83d\udc4f\ud83c\udffb", + "clap_tone2": "\ud83d\udc4f\ud83c\udffc", + "clap_tone3": "\ud83d\udc4f\ud83c\udffd", + "clap_tone4": "\ud83d\udc4f\ud83c\udffe", + "clap_tone5": "\ud83d\udc4f\ud83c\udfff", + "wave_tone1": "\ud83d\udc4b\ud83c\udffb", + "wave_tone2": "\ud83d\udc4b\ud83c\udffc", + "wave_tone3": "\ud83d\udc4b\ud83c\udffd", + "wave_tone4": "\ud83d\udc4b\ud83c\udffe", + "wave_tone5": "\ud83d\udc4b\ud83c\udfff", + "thumbsup_tone1": "\ud83d\udc4d\ud83c\udffb", + "thumbsup_tone2": "\ud83d\udc4d\ud83c\udffc", + "thumbsup_tone3": "\ud83d\udc4d\ud83c\udffd", + "thumbsup_tone4": "\ud83d\udc4d\ud83c\udffe", + "thumbsup_tone5": "\ud83d\udc4d\ud83c\udfff", + "thumbsdown_tone1": "\ud83d\udc4e\ud83c\udffb", + "thumbsdown_tone2": "\ud83d\udc4e\ud83c\udffc", + "thumbsdown_tone3": "\ud83d\udc4e\ud83c\udffd", + "thumbsdown_tone4": "\ud83d\udc4e\ud83c\udffe", + "thumbsdown_tone5": "\ud83d\udc4e\ud83c\udfff", + "punch_tone1": "\ud83d\udc4a\ud83c\udffb", + "punch_tone2": "\ud83d\udc4a\ud83c\udffc", + "punch_tone3": "\ud83d\udc4a\ud83c\udffd", + "punch_tone4": "\ud83d\udc4a\ud83c\udffe", + "punch_tone5": "\ud83d\udc4a\ud83c\udfff", + "fist_tone1": "\u270a\ud83c\udffb", + "fist_tone2": "\u270a\ud83c\udffc", + "fist_tone3": "\u270a\ud83c\udffd", + "fist_tone4": "\u270a\ud83c\udffe", + "fist_tone5": "\u270a\ud83c\udfff", + "v_tone1": "\u270c\ud83c\udffb", + "v_tone2": "\u270c\ud83c\udffc", + "v_tone3": "\u270c\ud83c\udffd", + "v_tone4": "\u270c\ud83c\udffe", + "v_tone5": "\u270c\ud83c\udfff", + "ok_hand_tone1": "\ud83d\udc4c\ud83c\udffb", + "ok_hand_tone2": "\ud83d\udc4c\ud83c\udffc", + "ok_hand_tone3": "\ud83d\udc4c\ud83c\udffd", + "ok_hand_tone4": "\ud83d\udc4c\ud83c\udffe", + "ok_hand_tone5": "\ud83d\udc4c\ud83c\udfff", + "raised_hand_tone1": "\u270b\ud83c\udffb", + "raised_hand_tone2": "\u270b\ud83c\udffc", + "raised_hand_tone3": "\u270b\ud83c\udffd", + "raised_hand_tone4": "\u270b\ud83c\udffe", + "raised_hand_tone5": "\u270b\ud83c\udfff", + "open_hands_tone1": "\ud83d\udc50\ud83c\udffb", + "open_hands_tone2": "\ud83d\udc50\ud83c\udffc", + "open_hands_tone3": "\ud83d\udc50\ud83c\udffd", + "open_hands_tone4": "\ud83d\udc50\ud83c\udffe", + "open_hands_tone5": "\ud83d\udc50\ud83c\udfff", + "muscle_tone1": "\ud83d\udcaa\ud83c\udffb", + "muscle_tone2": "\ud83d\udcaa\ud83c\udffc", + "muscle_tone3": "\ud83d\udcaa\ud83c\udffd", + "muscle_tone4": "\ud83d\udcaa\ud83c\udffe", + "muscle_tone5": "\ud83d\udcaa\ud83c\udfff", + "pray_tone1": "\ud83d\ude4f\ud83c\udffb", + "pray_tone2": "\ud83d\ude4f\ud83c\udffc", + "pray_tone3": "\ud83d\ude4f\ud83c\udffd", + "pray_tone4": "\ud83d\ude4f\ud83c\udffe", + "pray_tone5": "\ud83d\ude4f\ud83c\udfff", + "point_up_tone1": "\u261d\ud83c\udffb", + "point_up_tone2": "\u261d\ud83c\udffc", + "point_up_tone3": "\u261d\ud83c\udffd", + "point_up_tone4": "\u261d\ud83c\udffe", + "point_up_tone5": "\u261d\ud83c\udfff", + "point_up_2_tone1": "\ud83d\udc46\ud83c\udffb", + "point_up_2_tone2": "\ud83d\udc46\ud83c\udffc", + "point_up_2_tone3": "\ud83d\udc46\ud83c\udffd", + "point_up_2_tone4": "\ud83d\udc46\ud83c\udffe", + "point_up_2_tone5": "\ud83d\udc46\ud83c\udfff", + "point_down_tone1": "\ud83d\udc47\ud83c\udffb", + "point_down_tone2": "\ud83d\udc47\ud83c\udffc", + "point_down_tone3": "\ud83d\udc47\ud83c\udffd", + "point_down_tone4": "\ud83d\udc47\ud83c\udffe", + "point_down_tone5": "\ud83d\udc47\ud83c\udfff", + "point_left_tone1": "\ud83d\udc48\ud83c\udffb", + "point_left_tone2": "\ud83d\udc48\ud83c\udffc", + "point_left_tone3": "\ud83d\udc48\ud83c\udffd", + "point_left_tone4": "\ud83d\udc48\ud83c\udffe", + "point_left_tone5": "\ud83d\udc48\ud83c\udfff", + "point_right_tone1": "\ud83d\udc49\ud83c\udffb", + "point_right_tone2": "\ud83d\udc49\ud83c\udffc", + "point_right_tone3": "\ud83d\udc49\ud83c\udffd", + "point_right_tone4": "\ud83d\udc49\ud83c\udffe", + "point_right_tone5": "\ud83d\udc49\ud83c\udfff", + "middle_finger_tone1": "\ud83d\udd95\ud83c\udffb", + "middle_finger_tone2": "\ud83d\udd95\ud83c\udffc", + "middle_finger_tone3": "\ud83d\udd95\ud83c\udffd", + "middle_finger_tone4": "\ud83d\udd95\ud83c\udffe", + "middle_finger_tone5": "\ud83d\udd95\ud83c\udfff", + "hand_splayed_tone1": "\ud83d\udd90\ud83c\udffb", + "hand_splayed_tone2": "\ud83d\udd90\ud83c\udffc", + "hand_splayed_tone3": "\ud83d\udd90\ud83c\udffd", + "hand_splayed_tone4": "\ud83d\udd90\ud83c\udffe", + "hand_splayed_tone5": "\ud83d\udd90\ud83c\udfff", + "metal_tone1": "\ud83e\udd18\ud83c\udffb", + "metal_tone2": "\ud83e\udd18\ud83c\udffc", + "metal_tone3": "\ud83e\udd18\ud83c\udffd", + "metal_tone4": "\ud83e\udd18\ud83c\udffe", + "metal_tone5": "\ud83e\udd18\ud83c\udfff", + "vulcan_tone1": "\ud83d\udd96\ud83c\udffb", + "vulcan_tone2": "\ud83d\udd96\ud83c\udffc", + "vulcan_tone3": "\ud83d\udd96\ud83c\udffd", + "vulcan_tone4": "\ud83d\udd96\ud83c\udffe", + "vulcan_tone5": "\ud83d\udd96\ud83c\udfff", + "writing_hand_tone1": "\u270d\ud83c\udffb", + "writing_hand_tone2": "\u270d\ud83c\udffc", + "writing_hand_tone3": "\u270d\ud83c\udffd", + "writing_hand_tone4": "\u270d\ud83c\udffe", + "writing_hand_tone5": "\u270d\ud83c\udfff", + "nail_care_tone1": "\ud83d\udc85\ud83c\udffb", + "nail_care_tone2": "\ud83d\udc85\ud83c\udffc", + "nail_care_tone3": "\ud83d\udc85\ud83c\udffd", + "nail_care_tone4": "\ud83d\udc85\ud83c\udffe", + "nail_care_tone5": "\ud83d\udc85\ud83c\udfff", + "ear_tone1": "\ud83d\udc42\ud83c\udffb", + "ear_tone2": "\ud83d\udc42\ud83c\udffc", + "ear_tone3": "\ud83d\udc42\ud83c\udffd", + "ear_tone4": "\ud83d\udc42\ud83c\udffe", + "ear_tone5": "\ud83d\udc42\ud83c\udfff", + "nose_tone1": "\ud83d\udc43\ud83c\udffb", + "nose_tone2": "\ud83d\udc43\ud83c\udffc", + "nose_tone3": "\ud83d\udc43\ud83c\udffd", + "nose_tone4": "\ud83d\udc43\ud83c\udffe", + "nose_tone5": "\ud83d\udc43\ud83c\udfff", + "baby_tone1": "\ud83d\udc76\ud83c\udffb", + "baby_tone2": "\ud83d\udc76\ud83c\udffc", + "baby_tone3": "\ud83d\udc76\ud83c\udffd", + "baby_tone4": "\ud83d\udc76\ud83c\udffe", + "baby_tone5": "\ud83d\udc76\ud83c\udfff", + "boy_tone1": "\ud83d\udc66\ud83c\udffb", + "boy_tone2": "\ud83d\udc66\ud83c\udffc", + "boy_tone3": "\ud83d\udc66\ud83c\udffd", + "boy_tone4": "\ud83d\udc66\ud83c\udffe", + "boy_tone5": "\ud83d\udc66\ud83c\udfff", + "girl_tone1": "\ud83d\udc67\ud83c\udffb", + "girl_tone2": "\ud83d\udc67\ud83c\udffc", + "girl_tone3": "\ud83d\udc67\ud83c\udffd", + "girl_tone4": "\ud83d\udc67\ud83c\udffe", + "girl_tone5": "\ud83d\udc67\ud83c\udfff", + "man_tone1": "\ud83d\udc68\ud83c\udffb", + "man_tone2": "\ud83d\udc68\ud83c\udffc", + "man_tone3": "\ud83d\udc68\ud83c\udffd", + "man_tone4": "\ud83d\udc68\ud83c\udffe", + "man_tone5": "\ud83d\udc68\ud83c\udfff", + "woman_tone1": "\ud83d\udc69\ud83c\udffb", + "woman_tone2": "\ud83d\udc69\ud83c\udffc", + "woman_tone3": "\ud83d\udc69\ud83c\udffd", + "woman_tone4": "\ud83d\udc69\ud83c\udffe", + "woman_tone5": "\ud83d\udc69\ud83c\udfff", + "person_with_blond_hair_tone1": "\ud83d\udc71\ud83c\udffb", + "person_with_blond_hair_tone2": "\ud83d\udc71\ud83c\udffc", + "person_with_blond_hair_tone3": "\ud83d\udc71\ud83c\udffd", + "person_with_blond_hair_tone4": "\ud83d\udc71\ud83c\udffe", + "person_with_blond_hair_tone5": "\ud83d\udc71\ud83c\udfff", + "older_man_tone1": "\ud83d\udc74\ud83c\udffb", + "older_man_tone2": "\ud83d\udc74\ud83c\udffc", + "older_man_tone3": "\ud83d\udc74\ud83c\udffd", + "older_man_tone4": "\ud83d\udc74\ud83c\udffe", + "older_man_tone5": "\ud83d\udc74\ud83c\udfff", + "older_woman_tone1": "\ud83d\udc75\ud83c\udffb", + "older_woman_tone2": "\ud83d\udc75\ud83c\udffc", + "older_woman_tone3": "\ud83d\udc75\ud83c\udffd", + "older_woman_tone4": "\ud83d\udc75\ud83c\udffe", + "older_woman_tone5": "\ud83d\udc75\ud83c\udfff", + "man_with_gua_pi_mao_tone1": "\ud83d\udc72\ud83c\udffb", + "man_with_gua_pi_mao_tone2": "\ud83d\udc72\ud83c\udffc", + "man_with_gua_pi_mao_tone3": "\ud83d\udc72\ud83c\udffd", + "man_with_gua_pi_mao_tone4": "\ud83d\udc72\ud83c\udffe", + "man_with_gua_pi_mao_tone5": "\ud83d\udc72\ud83c\udfff", + "man_with_turban_tone1": "\ud83d\udc73\ud83c\udffb", + "man_with_turban_tone2": "\ud83d\udc73\ud83c\udffc", + "man_with_turban_tone3": "\ud83d\udc73\ud83c\udffd", + "man_with_turban_tone4": "\ud83d\udc73\ud83c\udffe", + "man_with_turban_tone5": "\ud83d\udc73\ud83c\udfff", + "cop_tone1": "\ud83d\udc6e\ud83c\udffb", + "cop_tone2": "\ud83d\udc6e\ud83c\udffc", + "cop_tone3": "\ud83d\udc6e\ud83c\udffd", + "cop_tone4": "\ud83d\udc6e\ud83c\udffe", + "cop_tone5": "\ud83d\udc6e\ud83c\udfff", + "construction_worker_tone1": "\ud83d\udc77\ud83c\udffb", + "construction_worker_tone2": "\ud83d\udc77\ud83c\udffc", + "construction_worker_tone3": "\ud83d\udc77\ud83c\udffd", + "construction_worker_tone4": "\ud83d\udc77\ud83c\udffe", + "construction_worker_tone5": "\ud83d\udc77\ud83c\udfff", + "guardsman_tone1": "\ud83d\udc82\ud83c\udffb", + "guardsman_tone2": "\ud83d\udc82\ud83c\udffc", + "guardsman_tone3": "\ud83d\udc82\ud83c\udffd", + "guardsman_tone4": "\ud83d\udc82\ud83c\udffe", + "guardsman_tone5": "\ud83d\udc82\ud83c\udfff", + "santa_tone1": "\ud83c\udf85\ud83c\udffb", + "santa_tone2": "\ud83c\udf85\ud83c\udffc", + "santa_tone3": "\ud83c\udf85\ud83c\udffd", + "santa_tone4": "\ud83c\udf85\ud83c\udffe", + "santa_tone5": "\ud83c\udf85\ud83c\udfff", + "angel_tone1": "\ud83d\udc7c\ud83c\udffb", + "angel_tone2": "\ud83d\udc7c\ud83c\udffc", + "angel_tone3": "\ud83d\udc7c\ud83c\udffd", + "angel_tone4": "\ud83d\udc7c\ud83c\udffe", + "angel_tone5": "\ud83d\udc7c\ud83c\udfff", + "princess_tone1": "\ud83d\udc78\ud83c\udffb", + "princess_tone2": "\ud83d\udc78\ud83c\udffc", + "princess_tone3": "\ud83d\udc78\ud83c\udffd", + "princess_tone4": "\ud83d\udc78\ud83c\udffe", + "princess_tone5": "\ud83d\udc78\ud83c\udfff", + "bride_with_veil_tone1": "\ud83d\udc70\ud83c\udffb", + "bride_with_veil_tone2": "\ud83d\udc70\ud83c\udffc", + "bride_with_veil_tone3": "\ud83d\udc70\ud83c\udffd", + "bride_with_veil_tone4": "\ud83d\udc70\ud83c\udffe", + "bride_with_veil_tone5": "\ud83d\udc70\ud83c\udfff", + "walking_tone1": "\ud83d\udeb6\ud83c\udffb", + "walking_tone2": "\ud83d\udeb6\ud83c\udffc", + "walking_tone3": "\ud83d\udeb6\ud83c\udffd", + "walking_tone4": "\ud83d\udeb6\ud83c\udffe", + "walking_tone5": "\ud83d\udeb6\ud83c\udfff", + "runner_tone1": "\ud83c\udfc3\ud83c\udffb", + "runner_tone2": "\ud83c\udfc3\ud83c\udffc", + "runner_tone3": "\ud83c\udfc3\ud83c\udffd", + "runner_tone4": "\ud83c\udfc3\ud83c\udffe", + "runner_tone5": "\ud83c\udfc3\ud83c\udfff", + "dancer_tone1": "\ud83d\udc83\ud83c\udffb", + "dancer_tone2": "\ud83d\udc83\ud83c\udffc", + "dancer_tone3": "\ud83d\udc83\ud83c\udffd", + "dancer_tone4": "\ud83d\udc83\ud83c\udffe", + "dancer_tone5": "\ud83d\udc83\ud83c\udfff", + "bow_tone1": "\ud83d\ude47\ud83c\udffb", + "bow_tone2": "\ud83d\ude47\ud83c\udffc", + "bow_tone3": "\ud83d\ude47\ud83c\udffd", + "bow_tone4": "\ud83d\ude47\ud83c\udffe", + "bow_tone5": "\ud83d\ude47\ud83c\udfff", + "information_desk_person_tone1": "\ud83d\udc81\ud83c\udffb", + "information_desk_person_tone2": "\ud83d\udc81\ud83c\udffc", + "information_desk_person_tone3": "\ud83d\udc81\ud83c\udffd", + "information_desk_person_tone4": "\ud83d\udc81\ud83c\udffe", + "information_desk_person_tone5": "\ud83d\udc81\ud83c\udfff", + "no_good_tone1": "\ud83d\ude45\ud83c\udffb", + "no_good_tone2": "\ud83d\ude45\ud83c\udffc", + "no_good_tone3": "\ud83d\ude45\ud83c\udffd", + "no_good_tone4": "\ud83d\ude45\ud83c\udffe", + "no_good_tone5": "\ud83d\ude45\ud83c\udfff", + "ok_woman_tone1": "\ud83d\ude46\ud83c\udffb", + "ok_woman_tone2": "\ud83d\ude46\ud83c\udffc", + "ok_woman_tone3": "\ud83d\ude46\ud83c\udffd", + "ok_woman_tone4": "\ud83d\ude46\ud83c\udffe", + "ok_woman_tone5": "\ud83d\ude46\ud83c\udfff", + "raising_hand_tone1": "\ud83d\ude4b\ud83c\udffb", + "raising_hand_tone2": "\ud83d\ude4b\ud83c\udffc", + "raising_hand_tone3": "\ud83d\ude4b\ud83c\udffd", + "raising_hand_tone4": "\ud83d\ude4b\ud83c\udffe", + "raising_hand_tone5": "\ud83d\ude4b\ud83c\udfff", + "person_with_pouting_face_tone1": "\ud83d\ude4e\ud83c\udffb", + "person_with_pouting_face_tone2": "\ud83d\ude4e\ud83c\udffc", + "person_with_pouting_face_tone3": "\ud83d\ude4e\ud83c\udffd", + "person_with_pouting_face_tone4": "\ud83d\ude4e\ud83c\udffe", + "person_with_pouting_face_tone5": "\ud83d\ude4e\ud83c\udfff", + "person_frowning_tone1": "\ud83d\ude4d\ud83c\udffb", + "person_frowning_tone2": "\ud83d\ude4d\ud83c\udffc", + "person_frowning_tone3": "\ud83d\ude4d\ud83c\udffd", + "person_frowning_tone4": "\ud83d\ude4d\ud83c\udffe", + "person_frowning_tone5": "\ud83d\ude4d\ud83c\udfff", + "haircut_tone1": "\ud83d\udc87\ud83c\udffb", + "haircut_tone2": "\ud83d\udc87\ud83c\udffc", + "haircut_tone3": "\ud83d\udc87\ud83c\udffd", + "haircut_tone4": "\ud83d\udc87\ud83c\udffe", + "haircut_tone5": "\ud83d\udc87\ud83c\udfff", + "massage_tone1": "\ud83d\udc86\ud83c\udffb", + "massage_tone2": "\ud83d\udc86\ud83c\udffc", + "massage_tone3": "\ud83d\udc86\ud83c\udffd", + "massage_tone4": "\ud83d\udc86\ud83c\udffe", + "massage_tone5": "\ud83d\udc86\ud83c\udfff", + "rowboat_tone1": "\ud83d\udea3\ud83c\udffb", + "rowboat_tone2": "\ud83d\udea3\ud83c\udffc", + "rowboat_tone3": "\ud83d\udea3\ud83c\udffd", + "rowboat_tone4": "\ud83d\udea3\ud83c\udffe", + "rowboat_tone5": "\ud83d\udea3\ud83c\udfff", + "swimmer_tone1": "\ud83c\udfca\ud83c\udffb", + "swimmer_tone2": "\ud83c\udfca\ud83c\udffc", + "swimmer_tone3": "\ud83c\udfca\ud83c\udffd", + "swimmer_tone4": "\ud83c\udfca\ud83c\udffe", + "swimmer_tone5": "\ud83c\udfca\ud83c\udfff", + "surfer_tone1": "\ud83c\udfc4\ud83c\udffb", + "surfer_tone2": "\ud83c\udfc4\ud83c\udffc", + "surfer_tone3": "\ud83c\udfc4\ud83c\udffd", + "surfer_tone4": "\ud83c\udfc4\ud83c\udffe", + "surfer_tone5": "\ud83c\udfc4\ud83c\udfff", + "bath_tone1": "\ud83d\udec0\ud83c\udffb", + "bath_tone2": "\ud83d\udec0\ud83c\udffc", + "bath_tone3": "\ud83d\udec0\ud83c\udffd", + "bath_tone4": "\ud83d\udec0\ud83c\udffe", + "bath_tone5": "\ud83d\udec0\ud83c\udfff", + "basketball_player_tone1": "\u26f9\ud83c\udffb", + "basketball_player_tone2": "\u26f9\ud83c\udffc", + "basketball_player_tone3": "\u26f9\ud83c\udffd", + "basketball_player_tone4": "\u26f9\ud83c\udffe", + "basketball_player_tone5": "\u26f9\ud83c\udfff", + "lifter_tone1": "\ud83c\udfcb\ud83c\udffb", + "lifter_tone2": "\ud83c\udfcb\ud83c\udffc", + "lifter_tone3": "\ud83c\udfcb\ud83c\udffd", + "lifter_tone4": "\ud83c\udfcb\ud83c\udffe", + "lifter_tone5": "\ud83c\udfcb\ud83c\udfff", + "bicyclist_tone1": "\ud83d\udeb4\ud83c\udffb", + "bicyclist_tone2": "\ud83d\udeb4\ud83c\udffc", + "bicyclist_tone3": "\ud83d\udeb4\ud83c\udffd", + "bicyclist_tone4": "\ud83d\udeb4\ud83c\udffe", + "bicyclist_tone5": "\ud83d\udeb4\ud83c\udfff", + "mountain_bicyclist_tone1": "\ud83d\udeb5\ud83c\udffb", + "mountain_bicyclist_tone2": "\ud83d\udeb5\ud83c\udffc", + "mountain_bicyclist_tone3": "\ud83d\udeb5\ud83c\udffd", + "mountain_bicyclist_tone4": "\ud83d\udeb5\ud83c\udffe", + "mountain_bicyclist_tone5": "\ud83d\udeb5\ud83c\udfff", + "horse_racing_tone1": "\ud83c\udfc7\ud83c\udffb", + "horse_racing_tone2": "\ud83c\udfc7\ud83c\udffc", + "horse_racing_tone3": "\ud83c\udfc7\ud83c\udffd", + "horse_racing_tone4": "\ud83c\udfc7\ud83c\udffe", + "horse_racing_tone5": "\ud83c\udfc7\ud83c\udfff", + "spy_tone1": "\ud83d\udd75\ud83c\udffb", + "spy_tone2": "\ud83d\udd75\ud83c\udffc", + "spy_tone3": "\ud83d\udd75\ud83c\udffd", + "spy_tone4": "\ud83d\udd75\ud83c\udffe", + "spy_tone5": "\ud83d\udd75\ud83c\udfff", + "tone1": "\ud83c\udffb", + "tone2": "\ud83c\udffc", + "tone3": "\ud83c\udffd", + "tone4": "\ud83c\udffe", + "tone5": "\ud83c\udfff" +} diff --git a/scripts/celerity/generate_emoji.php b/scripts/celerity/generate_emoji.php new file mode 100755 index 0000000000..821fafa0ef --- /dev/null +++ b/scripts/celerity/generate_emoji.php @@ -0,0 +1,48 @@ +#!/usr/bin/env php +setTagline(pht('regenerate Emoji data sheets')); +$args->setSynopsis(<<parseStandardArguments(); +$args->parse( + array( + array( + 'name' => 'force', + 'help' => pht('Force regeneration even if sources have not changed.'), + ), + )); + +$root = dirname(phutil_get_library_root('phabricator')); +$path = $root.'/webroot/rsrc/externals/emojione/emoji_strategy.json'; +$export_path = $root.'/webroot/rsrc/emoji/manifest.json'; + +if (Filesystem::pathExists($path)) { + $json = Filesystem::readFile($path); + + $emojis = phutil_json_decode($json); + $data = array(); + foreach ($emojis as $shortname => $emoji) { + $unicode = $emoji['unicode']; + $codes = explode('-', $unicode); + $hex = ''; + foreach ($codes as $code) { + $hex .= phutil_utf8_encode_codepoint(hexdec($code)); + } + $data[$shortname] = $hex; + } + + $json = new PhutilJSON(); + $data = $json->encodeFormatted($data); + Filesystem::writeFile($export_path, $data); + echo pht('Done.')."\n"; +} else { + echo pht('Path %s not exist.', $path)."\n"; +} diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index e432e1f981..8dae3d81ef 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1412,6 +1412,7 @@ phutil_register_library_map(array( 'LiskRawMigrationIterator' => 'infrastructure/storage/lisk/LiskRawMigrationIterator.php', 'MacroConduitAPIMethod' => 'applications/macro/conduit/MacroConduitAPIMethod.php', 'MacroCreateMemeConduitAPIMethod' => 'applications/macro/conduit/MacroCreateMemeConduitAPIMethod.php', + 'MacroEmojiExample' => 'applications/uiexample/examples/MacroEmojiExample.php', 'MacroQueryConduitAPIMethod' => 'applications/macro/conduit/MacroQueryConduitAPIMethod.php', 'ManiphestAssignEmailCommand' => 'applications/maniphest/command/ManiphestAssignEmailCommand.php', 'ManiphestAssigneeDatasource' => 'applications/maniphest/typeahead/ManiphestAssigneeDatasource.php', @@ -2626,6 +2627,7 @@ phutil_register_library_map(array( 'PhabricatorEmailVarySubjectsSetting' => 'applications/settings/setting/PhabricatorEmailVarySubjectsSetting.php', 'PhabricatorEmailVerificationController' => 'applications/auth/controller/PhabricatorEmailVerificationController.php', 'PhabricatorEmbedFileRemarkupRule' => 'applications/files/markup/PhabricatorEmbedFileRemarkupRule.php', + 'PhabricatorEmojiDatasource' => 'applications/macro/typeahead/PhabricatorEmojiDatasource.php', 'PhabricatorEmojiRemarkupRule' => 'applications/macro/markup/PhabricatorEmojiRemarkupRule.php', 'PhabricatorEmojiTranslation' => 'infrastructure/internationalization/translation/PhabricatorEmojiTranslation.php', 'PhabricatorEmptyQueryException' => 'infrastructure/query/PhabricatorEmptyQueryException.php', @@ -6242,6 +6244,7 @@ phutil_register_library_map(array( 'LiskRawMigrationIterator' => 'PhutilBufferedIterator', 'MacroConduitAPIMethod' => 'ConduitAPIMethod', 'MacroCreateMemeConduitAPIMethod' => 'MacroConduitAPIMethod', + 'MacroEmojiExample' => 'PhabricatorUIExample', 'MacroQueryConduitAPIMethod' => 'MacroConduitAPIMethod', 'ManiphestAssignEmailCommand' => 'ManiphestEmailCommand', 'ManiphestAssigneeDatasource' => 'PhabricatorTypeaheadCompositeDatasource', @@ -7639,6 +7642,7 @@ phutil_register_library_map(array( 'PhabricatorEmailVarySubjectsSetting' => 'PhabricatorSelectSetting', 'PhabricatorEmailVerificationController' => 'PhabricatorAuthController', 'PhabricatorEmbedFileRemarkupRule' => 'PhabricatorObjectRemarkupRule', + 'PhabricatorEmojiDatasource' => 'PhabricatorTypeaheadDatasource', 'PhabricatorEmojiRemarkupRule' => 'PhutilRemarkupRule', 'PhabricatorEmojiTranslation' => 'PhutilTranslation', 'PhabricatorEmptyQueryException' => 'Exception', diff --git a/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php b/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php index 9bb8d7f9f4..1ed0b442f2 100644 --- a/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php +++ b/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php @@ -13,6 +13,13 @@ final class PhabricatorEmojiRemarkupRule extends PhutilRemarkupRule { $text); } + public function markupEmojiJSON() { + $root = dirname(phutil_get_library_root('phabricator')); + $json = Filesystem::readFile( + $root.'/resources/emoji/manifest.json'); + return $json; + } + public function markupEmoji(array $matches) { if (!$this->isFlatText($matches[0])) { return $matches[0]; diff --git a/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php new file mode 100644 index 0000000000..e740af11cb --- /dev/null +++ b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php @@ -0,0 +1,45 @@ +buildResults(); + return $this->filterResultsAgainstTokens($results); + } + + protected function renderSpecialTokens(array $values) { + return $this->renderTokensFromResults($this->buildResults(), $values); + } + + private function buildResults() { + $raw_query = $this->getRawQuery(); + + $data = id(new PhabricatorEmojiRemarkupRule())->markupEmojiJSON(); + $emojis = phutil_json_decode($data); + + $results = array(); + foreach ($emojis as $shortname => $emoji) { + $display_name = $emoji.' '.$shortname; + $result = id(new PhabricatorTypeaheadResult()) + ->setPHID($shortname) + ->setName($display_name) + ->setAutocomplete($emoji); + + $results[$shortname] = $result; + } + return $results; + } + +} diff --git a/src/applications/uiexample/examples/MacroEmojiExample.php b/src/applications/uiexample/examples/MacroEmojiExample.php new file mode 100644 index 0000000000..fddf20bc32 --- /dev/null +++ b/src/applications/uiexample/examples/MacroEmojiExample.php @@ -0,0 +1,47 @@ +markupEmojiJSON(); + + $json = phutil_json_decode($raw); + + $content = array(); + foreach ($json as $shortname => $hex) { + + $display_name = ' '.$hex.' '.$shortname; + + $content[] = phutil_tag( + 'div', + array( + 'class' => 'ms grouped', + 'style' => 'width: 240px; height: 24px; float: left;', + ), + $display_name); + + } + + $wrap = id(new PHUIObjectBoxView()) + ->setHeaderText(pht('Emojis')) + ->addClass('grouped') + ->appendChild($content); + + return phutil_tag( + 'div', + array(), + array( + $wrap, + )); + } +} diff --git a/src/view/form/control/PhabricatorRemarkupControl.php b/src/view/form/control/PhabricatorRemarkupControl.php index 7303f97401..35a1bcc8df 100644 --- a/src/view/form/control/PhabricatorRemarkupControl.php +++ b/src/view/form/control/PhabricatorRemarkupControl.php @@ -55,6 +55,7 @@ final class PhabricatorRemarkupControl extends AphrontFormTextAreaControl { $root_id = celerity_generate_unique_node_id(); $user_datasource = new PhabricatorPeopleDatasource(); + $emoji_datasource = new PhabricatorEmojiDatasource(); $proj_datasource = id(new PhabricatorProjectDatasource()) ->setParameters( array( @@ -91,6 +92,12 @@ final class PhabricatorRemarkupControl extends AphrontFormTextAreaControl { 'headerText' => pht('Find Project:'), 'hintText' => $proj_datasource->getPlaceholderText(), ), + 58 => array( // ":" + 'datasourceURI' => $emoji_datasource->getDatasourceURI(), + 'headerIcon' => 'fa-smile-o', + 'headerText' => pht('Find Emoji:'), + 'hintText' => $emoji_datasource->getPlaceholderText(), + ), ), )); Javelin::initBehavior('phabricator-tooltips', array()); diff --git a/webroot/rsrc/js/phuix/PHUIXAutocomplete.js b/webroot/rsrc/js/phuix/PHUIXAutocomplete.js index 94f37dc413..b7116c557b 100644 --- a/webroot/rsrc/js/phuix/PHUIXAutocomplete.js +++ b/webroot/rsrc/js/phuix/PHUIXAutocomplete.js @@ -118,7 +118,6 @@ JX.install('PHUIXAutocomplete', { case '|': // Might be a table cell. case '>': // Might be a blockquote. case '!': // Might be a blockquote attribution line. - case ':': // Might be a "NOTE:". // We'll let these autocomplete. break; default: From 1fed61cf9d7309f4ad21978748593fc70cc0fd4f Mon Sep 17 00:00:00 2001 From: Chad Little Date: Tue, 24 Jan 2017 15:51:23 -0800 Subject: [PATCH 07/21] Jiggle Fonts for Windows Summary: Moves the fonts around for better Windows fallback Test Plan: Windows 10 Edge / Chrome Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D17245 --- resources/celerity/map.php | 64 +++++++++---------- .../CelerityDefaultPostprocessor.php | 8 +-- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 8dba2f10e8..4344b23a8d 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -7,12 +7,12 @@ */ return array( 'names' => array( - 'conpherence.pkg.css' => 'ef5f5859', + 'conpherence.pkg.css' => 'e25569a9', 'conpherence.pkg.js' => '6249a1cf', - 'core.pkg.css' => '90f03a3e', + 'core.pkg.css' => 'ea0e9c0c', 'core.pkg.js' => '2291d3b2', 'darkconsole.pkg.js' => 'e7393ebb', - 'differential.pkg.css' => '4212ed64', + 'differential.pkg.css' => '4815647b', 'differential.pkg.js' => 'ddfeb49b', 'diffusion.pkg.css' => '91c5d3a6', 'diffusion.pkg.js' => '84c8f8fd', @@ -47,7 +47,7 @@ return array( 'rsrc/css/application/config/setup-issue.css' => 'f794cfc3', 'rsrc/css/application/config/unhandled-exception.css' => '4c96257a', 'rsrc/css/application/conpherence/durable-column.css' => 'd82e130c', - 'rsrc/css/application/conpherence/header-pane.css' => '54e08eaa', + 'rsrc/css/application/conpherence/header-pane.css' => 'db93ebc6', 'rsrc/css/application/conpherence/menu.css' => '4f51db5a', 'rsrc/css/application/conpherence/message-pane.css' => 'b085d40d', 'rsrc/css/application/conpherence/notification.css' => '965db05b', @@ -59,9 +59,9 @@ return array( 'rsrc/css/application/dashboard/dashboard.css' => 'bc6f2127', 'rsrc/css/application/diff/inline-comment-summary.css' => '51efda3a', 'rsrc/css/application/differential/add-comment.css' => 'c47f8c40', - 'rsrc/css/application/differential/changeset-view.css' => '1f3bd0e9', + 'rsrc/css/application/differential/changeset-view.css' => '6a9bdf9c', 'rsrc/css/application/differential/core.css' => '5b7b8ff4', - 'rsrc/css/application/differential/phui-inline-comment.css' => '229447ef', + 'rsrc/css/application/differential/phui-inline-comment.css' => 'be663c95', 'rsrc/css/application/differential/revision-comment.css' => '14b8565a', 'rsrc/css/application/differential/revision-history.css' => '0e8eb855', 'rsrc/css/application/differential/revision-list.css' => 'f3c47d33', @@ -83,7 +83,7 @@ return array( 'rsrc/css/application/owners/owners-path-editor.css' => '2f00933b', 'rsrc/css/application/paste/paste.css' => '1898e534', 'rsrc/css/application/people/people-profile.css' => '2473d929', - 'rsrc/css/application/phame/phame.css' => '89ed1cdd', + 'rsrc/css/application/phame/phame.css' => '53fa6236', 'rsrc/css/application/pholio/pholio-edit.css' => '07676f51', 'rsrc/css/application/pholio/pholio-inline-comments.css' => '8e545e49', 'rsrc/css/application/pholio/pholio.css' => 'ca89d380', @@ -96,8 +96,8 @@ return array( 'rsrc/css/application/policy/policy-transaction-detail.css' => '82100a43', 'rsrc/css/application/policy/policy.css' => '957ea14c', 'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96', - 'rsrc/css/application/project/project-card-view.css' => 'c64e7f86', - 'rsrc/css/application/project/project-view.css' => '8fd93549', + 'rsrc/css/application/project/project-card-view.css' => 'f25746f5', + 'rsrc/css/application/project/project-view.css' => '6936dc6e', 'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733', 'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5', 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd', @@ -107,7 +107,7 @@ return array( 'rsrc/css/application/slowvote/slowvote.css' => 'a94b7230', 'rsrc/css/application/tokens/tokens.css' => '3d0f239e', 'rsrc/css/application/uiexample/example.css' => '528b19de', - 'rsrc/css/core/core.css' => '78617e98', + 'rsrc/css/core/core.css' => '50dd5fa6', 'rsrc/css/core/remarkup.css' => '4a2de2bb', 'rsrc/css/core/syntax.css' => '769d3498', 'rsrc/css/core/z-index.css' => '5e72c4e0', @@ -134,7 +134,7 @@ return array( 'rsrc/css/phui/phui-basic-nav-view.css' => '7093573b', 'rsrc/css/phui/phui-big-info-view.css' => 'bd903741', 'rsrc/css/phui/phui-box.css' => '33b629f8', - 'rsrc/css/phui/phui-button.css' => 'c315ddd2', + 'rsrc/css/phui/phui-button.css' => '00ddac15', 'rsrc/css/phui/phui-chart.css' => '6bf6f78e', 'rsrc/css/phui/phui-cms.css' => 'be43c8a8', 'rsrc/css/phui/phui-comment-form.css' => '48fbd65d', @@ -145,11 +145,11 @@ return array( 'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf', 'rsrc/css/phui/phui-document.css' => 'c32e8dec', 'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9', - 'rsrc/css/phui/phui-fontkit.css' => 'b80a7d35', + 'rsrc/css/phui/phui-fontkit.css' => '0b2da2d5', 'rsrc/css/phui/phui-form-view.css' => 'adca31ce', - 'rsrc/css/phui/phui-form.css' => '23f3ac6a', + 'rsrc/css/phui/phui-form.css' => '5815af7b', 'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f', - 'rsrc/css/phui/phui-header-view.css' => '627a9de0', + 'rsrc/css/phui/phui-header-view.css' => '92935c02', 'rsrc/css/phui/phui-hovercard.css' => 'e904f5dc', 'rsrc/css/phui/phui-icon-set-selector.css' => '1ab67aad', 'rsrc/css/phui/phui-icon.css' => '09f46dd9', @@ -159,7 +159,7 @@ return array( 'rsrc/css/phui/phui-invisible-character-view.css' => '6993d9f0', 'rsrc/css/phui/phui-lightbox.css' => '0a035e40', 'rsrc/css/phui/phui-list.css' => '9da2aa00', - 'rsrc/css/phui/phui-object-box.css' => '71f0d214', + 'rsrc/css/phui/phui-object-box.css' => '8b289e3d', 'rsrc/css/phui/phui-pager.css' => 'bea33d23', 'rsrc/css/phui/phui-pinboard-view.css' => '2495140e', 'rsrc/css/phui/phui-profile-menu.css' => 'c71ecdcd', @@ -170,7 +170,7 @@ return array( 'rsrc/css/phui/phui-status.css' => 'd5263e49', 'rsrc/css/phui/phui-tag-view.css' => '84d65f26', 'rsrc/css/phui/phui-timeline-view.css' => 'bc523970', - 'rsrc/css/phui/phui-two-column-view.css' => '424975d6', + 'rsrc/css/phui/phui-two-column-view.css' => 'f63cad3c', 'rsrc/css/phui/workboards/phui-workboard-color.css' => 'b60ef38a', 'rsrc/css/phui/workboards/phui-workboard.css' => 'c88912ee', 'rsrc/css/phui/workboards/phui-workcard.css' => 'cca5fa92', @@ -565,7 +565,7 @@ return array( 'config-options-css' => '0ede4c9b', 'config-page-css' => 'c1d5121b', 'conpherence-durable-column-view' => 'd82e130c', - 'conpherence-header-pane-css' => '54e08eaa', + 'conpherence-header-pane-css' => 'db93ebc6', 'conpherence-menu-css' => '4f51db5a', 'conpherence-message-pane-css' => 'b085d40d', 'conpherence-notification-css' => '965db05b', @@ -573,7 +573,7 @@ return array( 'conpherence-thread-manager' => 'c8b5ee6f', 'conpherence-transaction-css' => '85129c68', 'd3' => 'a11a5ff2', - 'differential-changeset-view-css' => '1f3bd0e9', + 'differential-changeset-view-css' => '6a9bdf9c', 'differential-core-view-css' => '5b7b8ff4', 'differential-inline-comment-editor' => '2e3f9738', 'differential-revision-add-comment-css' => 'c47f8c40', @@ -785,7 +785,7 @@ return array( 'phabricator-busy' => '59a7976a', 'phabricator-chatlog-css' => 'd295b020', 'phabricator-content-source-view-css' => '4b8b05d4', - 'phabricator-core-css' => '78617e98', + 'phabricator-core-css' => '50dd5fa6', 'phabricator-countdown-css' => '16c52f5c', 'phabricator-dashboard-css' => 'bc6f2127', 'phabricator-drag-and-drop-file-upload' => '58dea2fa', @@ -827,7 +827,7 @@ return array( 'phabricator-uiexample-reactor-sendclass' => '1def2711', 'phabricator-uiexample-reactor-sendproperties' => 'b1f0ccee', 'phabricator-zindex-css' => '5e72c4e0', - 'phame-css' => '89ed1cdd', + 'phame-css' => '53fa6236', 'pholio-css' => 'ca89d380', 'pholio-edit-css' => '07676f51', 'pholio-inline-comments-css' => '8e545e49', @@ -842,7 +842,7 @@ return array( 'phui-basic-nav-view-css' => '7093573b', 'phui-big-info-view-css' => 'bd903741', 'phui-box-css' => '33b629f8', - 'phui-button-css' => 'c315ddd2', + 'phui-button-css' => '00ddac15', 'phui-calendar-css' => '477acfaa', 'phui-calendar-day-css' => '572b1893', 'phui-calendar-list-css' => 'fcc9fb41', @@ -858,11 +858,11 @@ return array( 'phui-document-view-pro-css' => 'f56738ed', 'phui-feed-story-css' => '44a9c8e9', 'phui-font-icon-base-css' => '870a7360', - 'phui-fontkit-css' => 'b80a7d35', - 'phui-form-css' => '23f3ac6a', + 'phui-fontkit-css' => '0b2da2d5', + 'phui-form-css' => '5815af7b', 'phui-form-view-css' => 'adca31ce', 'phui-head-thing-view-css' => 'fd311e5f', - 'phui-header-view-css' => '627a9de0', + 'phui-header-view-css' => '92935c02', 'phui-hovercard' => '1bd28176', 'phui-hovercard-view-css' => 'e904f5dc', 'phui-icon-set-selector-css' => '1ab67aad', @@ -870,11 +870,11 @@ return array( 'phui-image-mask-css' => 'a8498f9c', 'phui-info-panel-css' => '27ea50a1', 'phui-info-view-css' => 'ec92802a', - 'phui-inline-comment-view-css' => '229447ef', + 'phui-inline-comment-view-css' => 'be663c95', 'phui-invisible-character-view-css' => '6993d9f0', 'phui-lightbox-css' => '0a035e40', 'phui-list-view-css' => '9da2aa00', - 'phui-object-box-css' => '71f0d214', + 'phui-object-box-css' => '8b289e3d', 'phui-oi-big-ui-css' => '19f9369b', 'phui-oi-color-css' => 'cd2b9b77', 'phui-oi-drag-ui-css' => 'f12cbc9f', @@ -892,7 +892,7 @@ return array( 'phui-tag-view-css' => '84d65f26', 'phui-theme-css' => '798c69b8', 'phui-timeline-view-css' => 'bc523970', - 'phui-two-column-view-css' => '424975d6', + 'phui-two-column-view-css' => 'f63cad3c', 'phui-workboard-color-css' => 'b60ef38a', 'phui-workboard-view-css' => 'c88912ee', 'phui-workcard-view-css' => 'cca5fa92', @@ -907,8 +907,8 @@ return array( 'policy-edit-css' => '815c66f7', 'policy-transaction-detail-css' => '82100a43', 'ponder-view-css' => 'fbd45f96', - 'project-card-view-css' => 'c64e7f86', - 'project-view-css' => '8fd93549', + 'project-card-view-css' => 'f25746f5', + 'project-view-css' => '6936dc6e', 'releeph-core' => '9b3c5733', 'releeph-preview-branch' => 'b7a6f4a5', 'releeph-request-differential-create-dialog' => '8d8b92cd', @@ -1084,9 +1084,6 @@ return array( 'javelin-uri', 'javelin-routable', ), - '1f3bd0e9' => array( - 'phui-inline-comment-view-css', - ), '1fe2510c' => array( 'javelin-install', 'javelin-dom', @@ -1399,6 +1396,9 @@ return array( '69adf288' => array( 'javelin-install', ), + '6a9bdf9c' => array( + 'phui-inline-comment-view-css', + ), '6ad39b6f' => array( 'javelin-install', 'javelin-event', diff --git a/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php b/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php index 096b4b4757..2395ad9365 100644 --- a/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php +++ b/src/applications/celerity/postprocessor/CelerityDefaultPostprocessor.php @@ -20,12 +20,12 @@ final class CelerityDefaultPostprocessor public function buildVariables() { return array( // Fonts - 'basefont' => "13px 'Segoe UI Emoji', 'Segoe UI Web Regular', ". - "'Segoe UI Symbol', 'Segoe UI', 'Lato', 'Helvetica Neue', ". + 'basefont' => "13px 'Segoe UI', 'Segoe UI Emoji', ". + "'Segoe UI Symbol', 'Lato', 'Helvetica Neue', ". "Helvetica, Arial, sans-serif", - 'fontfamily' => "'Segoe UI Emoji', 'Segoe UI Web Regular', ". - "'Segoe UI Symbol', 'Segoe UI', 'Lato', 'Helvetica Neue', ". + 'fontfamily' => "'Segoe UI', 'Segoe UI Emoji', ". + "'Segoe UI Symbol', 'Lato', 'Helvetica Neue', ". "Helvetica, Arial, sans-serif", // Drop Shadow From 01b35cdc120b1b0cb7ba57fe8390b17ac4637308 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Tue, 24 Jan 2017 20:20:37 -0800 Subject: [PATCH 08/21] Add some sort of sort to Emoji Autocomplete Summary: Ref T12139. Adds sorting by shortname. Also I sorted everything else. No reason. It didn't help Test Plan: `:star` Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T12139 Differential Revision: https://secure.phabricator.com/D17246 --- resources/emoji/manifest.json | 3180 ++++++++--------- scripts/celerity/generate_emoji.php | 6 +- .../typeahead/PhabricatorEmojiDatasource.php | 4 +- 3 files changed, 1597 insertions(+), 1593 deletions(-) diff --git a/resources/emoji/manifest.json b/resources/emoji/manifest.json index 3c12148e34..2d8388d277 100644 --- a/resources/emoji/manifest.json +++ b/resources/emoji/manifest.json @@ -1,1626 +1,1626 @@ { - "grinning": "\ud83d\ude00", - "grimacing": "\ud83d\ude2c", - "grin": "\ud83d\ude01", - "joy": "\ud83d\ude02", - "smiley": "\ud83d\ude03", - "smile": "\ud83d\ude04", - "sweat_smile": "\ud83d\ude05", - "laughing": "\ud83d\ude06", - "innocent": "\ud83d\ude07", - "wink": "\ud83d\ude09", - "blush": "\ud83d\ude0a", - "slight_smile": "\ud83d\ude42", - "upside_down": "\ud83d\ude43", - "relaxed": "\u263a", - "yum": "\ud83d\ude0b", - "relieved": "\ud83d\ude0c", - "heart_eyes": "\ud83d\ude0d", - "kissing_heart": "\ud83d\ude18", - "kissing": "\ud83d\ude17", - "kissing_smiling_eyes": "\ud83d\ude19", - "kissing_closed_eyes": "\ud83d\ude1a", - "stuck_out_tongue_winking_eye": "\ud83d\ude1c", - "stuck_out_tongue_closed_eyes": "\ud83d\ude1d", - "stuck_out_tongue": "\ud83d\ude1b", - "money_mouth": "\ud83e\udd11", - "nerd": "\ud83e\udd13", - "sunglasses": "\ud83d\ude0e", - "hugging": "\ud83e\udd17", - "smirk": "\ud83d\ude0f", - "no_mouth": "\ud83d\ude36", - "neutral_face": "\ud83d\ude10", - "expressionless": "\ud83d\ude11", - "unamused": "\ud83d\ude12", - "rolling_eyes": "\ud83d\ude44", - "thinking": "\ud83e\udd14", - "flushed": "\ud83d\ude33", - "disappointed": "\ud83d\ude1e", - "worried": "\ud83d\ude1f", - "angry": "\ud83d\ude20", - "rage": "\ud83d\ude21", - "pensive": "\ud83d\ude14", - "confused": "\ud83d\ude15", - "slight_frown": "\ud83d\ude41", - "frowning2": "\u2639", - "persevere": "\ud83d\ude23", - "confounded": "\ud83d\ude16", - "tired_face": "\ud83d\ude2b", - "weary": "\ud83d\ude29", - "triumph": "\ud83d\ude24", - "open_mouth": "\ud83d\ude2e", - "scream": "\ud83d\ude31", - "fearful": "\ud83d\ude28", - "cold_sweat": "\ud83d\ude30", - "hushed": "\ud83d\ude2f", - "frowning": "\ud83d\ude26", - "anguished": "\ud83d\ude27", - "cry": "\ud83d\ude22", - "disappointed_relieved": "\ud83d\ude25", - "sleepy": "\ud83d\ude2a", - "sweat": "\ud83d\ude13", - "sob": "\ud83d\ude2d", - "dizzy_face": "\ud83d\ude35", - "astonished": "\ud83d\ude32", - "zipper_mouth": "\ud83e\udd10", - "mask": "\ud83d\ude37", - "thermometer_face": "\ud83e\udd12", - "head_bandage": "\ud83e\udd15", - "sleeping": "\ud83d\ude34", - "zzz": "\ud83d\udca4", - "poop": "\ud83d\udca9", - "smiling_imp": "\ud83d\ude08", - "imp": "\ud83d\udc7f", - "japanese_ogre": "\ud83d\udc79", - "japanese_goblin": "\ud83d\udc7a", - "skull": "\ud83d\udc80", - "ghost": "\ud83d\udc7b", - "alien": "\ud83d\udc7d", - "robot": "\ud83e\udd16", - "smiley_cat": "\ud83d\ude3a", - "smile_cat": "\ud83d\ude38", - "joy_cat": "\ud83d\ude39", - "heart_eyes_cat": "\ud83d\ude3b", - "smirk_cat": "\ud83d\ude3c", - "kissing_cat": "\ud83d\ude3d", - "scream_cat": "\ud83d\ude40", - "crying_cat_face": "\ud83d\ude3f", - "pouting_cat": "\ud83d\ude3e", - "raised_hands": "\ud83d\ude4c", - "clap": "\ud83d\udc4f", - "wave": "\ud83d\udc4b", - "thumbsup": "\ud83d\udc4d", - "thumbsdown": "\ud83d\udc4e", - "punch": "\ud83d\udc4a", - "fist": "\u270a", - "v": "\u270c", - "ok_hand": "\ud83d\udc4c", - "raised_hand": "\u270b", - "open_hands": "\ud83d\udc50", - "muscle": "\ud83d\udcaa", - "pray": "\ud83d\ude4f", - "point_up": "\u261d", - "point_up_2": "\ud83d\udc46", - "point_down": "\ud83d\udc47", - "point_left": "\ud83d\udc48", - "point_right": "\ud83d\udc49", - "middle_finger": "\ud83d\udd95", - "hand_splayed": "\ud83d\udd90", - "metal": "\ud83e\udd18", - "vulcan": "\ud83d\udd96", - "writing_hand": "\u270d", - "nail_care": "\ud83d\udc85", - "lips": "\ud83d\udc44", - "tongue": "\ud83d\udc45", - "ear": "\ud83d\udc42", - "nose": "\ud83d\udc43", - "eye": "\ud83d\udc41", - "eyes": "\ud83d\udc40", - "bust_in_silhouette": "\ud83d\udc64", - "busts_in_silhouette": "\ud83d\udc65", - "speaking_head": "\ud83d\udde3", - "baby": "\ud83d\udc76", - "boy": "\ud83d\udc66", - "girl": "\ud83d\udc67", - "man": "\ud83d\udc68", - "woman": "\ud83d\udc69", - "person_with_blond_hair": "\ud83d\udc71", - "older_man": "\ud83d\udc74", - "older_woman": "\ud83d\udc75", - "man_with_gua_pi_mao": "\ud83d\udc72", - "man_with_turban": "\ud83d\udc73", - "cop": "\ud83d\udc6e", - "construction_worker": "\ud83d\udc77", - "guardsman": "\ud83d\udc82", - "spy": "\ud83d\udd75", - "santa": "\ud83c\udf85", - "angel": "\ud83d\udc7c", - "princess": "\ud83d\udc78", - "bride_with_veil": "\ud83d\udc70", - "walking": "\ud83d\udeb6", - "runner": "\ud83c\udfc3", - "dancer": "\ud83d\udc83", - "dancers": "\ud83d\udc6f", - "couple": "\ud83d\udc6b", - "two_men_holding_hands": "\ud83d\udc6c", - "two_women_holding_hands": "\ud83d\udc6d", - "bow": "\ud83d\ude47", - "information_desk_person": "\ud83d\udc81", - "no_good": "\ud83d\ude45", - "ok_woman": "\ud83d\ude46", - "raising_hand": "\ud83d\ude4b", - "person_with_pouting_face": "\ud83d\ude4e", - "person_frowning": "\ud83d\ude4d", - "haircut": "\ud83d\udc87", - "massage": "\ud83d\udc86", - "couple_with_heart": "\ud83d\udc91", - "couple_ww": "\ud83d\udc69\u2764\ud83d\udc69", - "couple_mm": "\ud83d\udc68\u2764\ud83d\udc68", - "couplekiss": "\ud83d\udc8f", - "kiss_ww": "\ud83d\udc69\u2764\ud83d\udc8b\ud83d\udc69", - "kiss_mm": "\ud83d\udc68\u2764\ud83d\udc8b\ud83d\udc68", - "family": "\ud83d\udc6a", - "family_mwg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67", - "family_mwgb": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc66", - "family_mwbb": "\ud83d\udc68\ud83d\udc69\ud83d\udc66\ud83d\udc66", - "family_mwgg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc67", - "family_wwb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66", - "family_wwg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67", - "family_wwgb": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc66", - "family_wwbb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66\ud83d\udc66", - "family_wwgg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc67", - "family_mmb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66", - "family_mmg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67", - "family_mmgb": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc66", - "family_mmbb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66\ud83d\udc66", - "family_mmgg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc67", - "womans_clothes": "\ud83d\udc5a", - "shirt": "\ud83d\udc55", - "jeans": "\ud83d\udc56", - "necktie": "\ud83d\udc54", - "dress": "\ud83d\udc57", - "bikini": "\ud83d\udc59", - "kimono": "\ud83d\udc58", - "lipstick": "\ud83d\udc84", - "kiss": "\ud83d\udc8b", - "footprints": "\ud83d\udc63", - "high_heel": "\ud83d\udc60", - "sandal": "\ud83d\udc61", - "boot": "\ud83d\udc62", - "mans_shoe": "\ud83d\udc5e", - "athletic_shoe": "\ud83d\udc5f", - "womans_hat": "\ud83d\udc52", - "tophat": "\ud83c\udfa9", - "helmet_with_cross": "\u26d1", - "mortar_board": "\ud83c\udf93", - "crown": "\ud83d\udc51", - "school_satchel": "\ud83c\udf92", - "pouch": "\ud83d\udc5d", - "purse": "\ud83d\udc5b", - "handbag": "\ud83d\udc5c", - "briefcase": "\ud83d\udcbc", - "eyeglasses": "\ud83d\udc53", - "dark_sunglasses": "\ud83d\udd76", - "ring": "\ud83d\udc8d", - "closed_umbrella": "\ud83c\udf02", - "dog": "\ud83d\udc36", - "cat": "\ud83d\udc31", - "mouse": "\ud83d\udc2d", - "hamster": "\ud83d\udc39", - "rabbit": "\ud83d\udc30", - "bear": "\ud83d\udc3b", - "panda_face": "\ud83d\udc3c", - "koala": "\ud83d\udc28", - "tiger": "\ud83d\udc2f", - "lion_face": "\ud83e\udd81", - "cow": "\ud83d\udc2e", - "pig": "\ud83d\udc37", - "pig_nose": "\ud83d\udc3d", - "frog": "\ud83d\udc38", - "octopus": "\ud83d\udc19", - "monkey_face": "\ud83d\udc35", - "see_no_evil": "\ud83d\ude48", - "hear_no_evil": "\ud83d\ude49", - "speak_no_evil": "\ud83d\ude4a", - "monkey": "\ud83d\udc12", - "chicken": "\ud83d\udc14", - "penguin": "\ud83d\udc27", - "bird": "\ud83d\udc26", - "baby_chick": "\ud83d\udc24", - "hatching_chick": "\ud83d\udc23", - "hatched_chick": "\ud83d\udc25", - "wolf": "\ud83d\udc3a", - "boar": "\ud83d\udc17", - "horse": "\ud83d\udc34", - "unicorn": "\ud83e\udd84", - "bee": "\ud83d\udc1d", - "bug": "\ud83d\udc1b", - "snail": "\ud83d\udc0c", - "beetle": "\ud83d\udc1e", - "ant": "\ud83d\udc1c", - "spider": "\ud83d\udd77", - "scorpion": "\ud83e\udd82", - "crab": "\ud83e\udd80", - "snake": "\ud83d\udc0d", - "turtle": "\ud83d\udc22", - "tropical_fish": "\ud83d\udc20", - "fish": "\ud83d\udc1f", - "blowfish": "\ud83d\udc21", - "dolphin": "\ud83d\udc2c", - "whale": "\ud83d\udc33", - "whale2": "\ud83d\udc0b", - "crocodile": "\ud83d\udc0a", - "leopard": "\ud83d\udc06", - "tiger2": "\ud83d\udc05", - "water_buffalo": "\ud83d\udc03", - "ox": "\ud83d\udc02", - "cow2": "\ud83d\udc04", - "dromedary_camel": "\ud83d\udc2a", - "camel": "\ud83d\udc2b", - "elephant": "\ud83d\udc18", - "goat": "\ud83d\udc10", - "ram": "\ud83d\udc0f", - "sheep": "\ud83d\udc11", - "racehorse": "\ud83d\udc0e", - "pig2": "\ud83d\udc16", - "rat": "\ud83d\udc00", - "mouse2": "\ud83d\udc01", - "rooster": "\ud83d\udc13", - "turkey": "\ud83e\udd83", - "dove": "\ud83d\udd4a", - "dog2": "\ud83d\udc15", - "poodle": "\ud83d\udc29", - "cat2": "\ud83d\udc08", - "rabbit2": "\ud83d\udc07", - "chipmunk": "\ud83d\udc3f", - "feet": "\ud83d\udc3e", - "dragon": "\ud83d\udc09", - "dragon_face": "\ud83d\udc32", - "cactus": "\ud83c\udf35", - "christmas_tree": "\ud83c\udf84", - "evergreen_tree": "\ud83c\udf32", - "deciduous_tree": "\ud83c\udf33", - "palm_tree": "\ud83c\udf34", - "seedling": "\ud83c\udf31", - "herb": "\ud83c\udf3f", - "shamrock": "\u2618", - "four_leaf_clover": "\ud83c\udf40", - "bamboo": "\ud83c\udf8d", - "tanabata_tree": "\ud83c\udf8b", - "leaves": "\ud83c\udf43", - "fallen_leaf": "\ud83c\udf42", - "maple_leaf": "\ud83c\udf41", - "ear_of_rice": "\ud83c\udf3e", - "hibiscus": "\ud83c\udf3a", - "sunflower": "\ud83c\udf3b", - "rose": "\ud83c\udf39", - "tulip": "\ud83c\udf37", - "blossom": "\ud83c\udf3c", - "cherry_blossom": "\ud83c\udf38", - "bouquet": "\ud83d\udc90", - "mushroom": "\ud83c\udf44", - "chestnut": "\ud83c\udf30", - "jack_o_lantern": "\ud83c\udf83", - "shell": "\ud83d\udc1a", - "spider_web": "\ud83d\udd78", - "earth_americas": "\ud83c\udf0e", - "earth_africa": "\ud83c\udf0d", - "earth_asia": "\ud83c\udf0f", - "full_moon": "\ud83c\udf15", - "waning_gibbous_moon": "\ud83c\udf16", - "last_quarter_moon": "\ud83c\udf17", - "waning_crescent_moon": "\ud83c\udf18", - "new_moon": "\ud83c\udf11", - "waxing_crescent_moon": "\ud83c\udf12", - "first_quarter_moon": "\ud83c\udf13", - "waxing_gibbous_moon": "\ud83c\udf14", - "new_moon_with_face": "\ud83c\udf1a", - "full_moon_with_face": "\ud83c\udf1d", - "first_quarter_moon_with_face": "\ud83c\udf1b", - "last_quarter_moon_with_face": "\ud83c\udf1c", - "sun_with_face": "\ud83c\udf1e", - "crescent_moon": "\ud83c\udf19", - "star": "\u2b50", - "star2": "\ud83c\udf1f", - "dizzy": "\ud83d\udcab", - "sparkles": "\u2728", - "comet": "\u2604", - "sunny": "\u2600", - "white_sun_small_cloud": "\ud83c\udf24", - "partly_sunny": "\u26c5", - "white_sun_cloud": "\ud83c\udf25", - "white_sun_rain_cloud": "\ud83c\udf26", - "cloud": "\u2601", - "cloud_rain": "\ud83c\udf27", - "thunder_cloud_rain": "\u26c8", - "cloud_lightning": "\ud83c\udf29", - "zap": "\u26a1", - "fire": "\ud83d\udd25", - "boom": "\ud83d\udca5", - "snowflake": "\u2744", - "cloud_snow": "\ud83c\udf28", - "snowman2": "\u2603", - "snowman": "\u26c4", - "wind_blowing_face": "\ud83c\udf2c", - "dash": "\ud83d\udca8", - "cloud_tornado": "\ud83c\udf2a", - "fog": "\ud83c\udf2b", - "umbrella2": "\u2602", - "umbrella": "\u2614", - "droplet": "\ud83d\udca7", - "sweat_drops": "\ud83d\udca6", - "ocean": "\ud83c\udf0a", - "green_apple": "\ud83c\udf4f", - "apple": "\ud83c\udf4e", - "pear": "\ud83c\udf50", - "tangerine": "\ud83c\udf4a", - "lemon": "\ud83c\udf4b", - "banana": "\ud83c\udf4c", - "watermelon": "\ud83c\udf49", - "grapes": "\ud83c\udf47", - "strawberry": "\ud83c\udf53", - "melon": "\ud83c\udf48", - "cherries": "\ud83c\udf52", - "peach": "\ud83c\udf51", - "pineapple": "\ud83c\udf4d", - "tomato": "\ud83c\udf45", - "eggplant": "\ud83c\udf46", - "hot_pepper": "\ud83c\udf36", - "corn": "\ud83c\udf3d", - "sweet_potato": "\ud83c\udf60", - "honey_pot": "\ud83c\udf6f", - "bread": "\ud83c\udf5e", - "cheese": "\ud83e\uddc0", - "poultry_leg": "\ud83c\udf57", - "meat_on_bone": "\ud83c\udf56", - "fried_shrimp": "\ud83c\udf64", - "egg": "\ud83c\udf73", - "hamburger": "\ud83c\udf54", - "fries": "\ud83c\udf5f", - "hotdog": "\ud83c\udf2d", - "pizza": "\ud83c\udf55", - "spaghetti": "\ud83c\udf5d", - "taco": "\ud83c\udf2e", - "burrito": "\ud83c\udf2f", - "ramen": "\ud83c\udf5c", - "stew": "\ud83c\udf72", - "fish_cake": "\ud83c\udf65", - "sushi": "\ud83c\udf63", - "bento": "\ud83c\udf71", - "curry": "\ud83c\udf5b", - "rice_ball": "\ud83c\udf59", - "rice": "\ud83c\udf5a", - "rice_cracker": "\ud83c\udf58", - "oden": "\ud83c\udf62", - "dango": "\ud83c\udf61", - "shaved_ice": "\ud83c\udf67", - "ice_cream": "\ud83c\udf68", - "icecream": "\ud83c\udf66", - "cake": "\ud83c\udf70", - "birthday": "\ud83c\udf82", - "custard": "\ud83c\udf6e", - "candy": "\ud83c\udf6c", - "lollipop": "\ud83c\udf6d", - "chocolate_bar": "\ud83c\udf6b", - "popcorn": "\ud83c\udf7f", - "doughnut": "\ud83c\udf69", - "cookie": "\ud83c\udf6a", - "beer": "\ud83c\udf7a", - "beers": "\ud83c\udf7b", - "wine_glass": "\ud83c\udf77", - "cocktail": "\ud83c\udf78", - "tropical_drink": "\ud83c\udf79", - "champagne": "\ud83c\udf7e", - "sake": "\ud83c\udf76", - "tea": "\ud83c\udf75", - "coffee": "\u2615", - "baby_bottle": "\ud83c\udf7c", - "fork_and_knife": "\ud83c\udf74", - "fork_knife_plate": "\ud83c\udf7d", - "soccer": "\u26bd", - "basketball": "\ud83c\udfc0", - "football": "\ud83c\udfc8", - "baseball": "\u26be", - "tennis": "\ud83c\udfbe", - "volleyball": "\ud83c\udfd0", - "rugby_football": "\ud83c\udfc9", "8ball": "\ud83c\udfb1", - "golf": "\u26f3", - "golfer": "\ud83c\udfcc", - "ping_pong": "\ud83c\udfd3", - "badminton": "\ud83c\udff8", - "hockey": "\ud83c\udfd2", - "field_hockey": "\ud83c\udfd1", - "cricket": "\ud83c\udfcf", - "ski": "\ud83c\udfbf", - "skier": "\u26f7", - "snowboarder": "\ud83c\udfc2", - "ice_skate": "\u26f8", - "bow_and_arrow": "\ud83c\udff9", - "fishing_pole_and_fish": "\ud83c\udfa3", - "rowboat": "\ud83d\udea3", - "swimmer": "\ud83c\udfca", - "surfer": "\ud83c\udfc4", - "bath": "\ud83d\udec0", - "basketball_player": "\u26f9", - "lifter": "\ud83c\udfcb", - "bicyclist": "\ud83d\udeb4", - "mountain_bicyclist": "\ud83d\udeb5", - "horse_racing": "\ud83c\udfc7", - "levitate": "\ud83d\udd74", - "trophy": "\ud83c\udfc6", - "running_shirt_with_sash": "\ud83c\udfbd", - "medal": "\ud83c\udfc5", - "military_medal": "\ud83c\udf96", - "reminder_ribbon": "\ud83c\udf97", - "rosette": "\ud83c\udff5", - "ticket": "\ud83c\udfab", - "tickets": "\ud83c\udf9f", - "performing_arts": "\ud83c\udfad", - "art": "\ud83c\udfa8", - "circus_tent": "\ud83c\udfaa", - "microphone": "\ud83c\udfa4", - "headphones": "\ud83c\udfa7", - "musical_score": "\ud83c\udfbc", - "musical_keyboard": "\ud83c\udfb9", - "saxophone": "\ud83c\udfb7", - "trumpet": "\ud83c\udfba", - "guitar": "\ud83c\udfb8", - "violin": "\ud83c\udfbb", - "clapper": "\ud83c\udfac", - "video_game": "\ud83c\udfae", - "space_invader": "\ud83d\udc7e", - "dart": "\ud83c\udfaf", - "game_die": "\ud83c\udfb2", - "slot_machine": "\ud83c\udfb0", - "bowling": "\ud83c\udfb3", - "red_car": "\ud83d\ude97", - "taxi": "\ud83d\ude95", - "blue_car": "\ud83d\ude99", - "bus": "\ud83d\ude8c", - "trolleybus": "\ud83d\ude8e", - "race_car": "\ud83c\udfce", - "police_car": "\ud83d\ude93", - "ambulance": "\ud83d\ude91", - "fire_engine": "\ud83d\ude92", - "minibus": "\ud83d\ude90", - "truck": "\ud83d\ude9a", - "articulated_lorry": "\ud83d\ude9b", - "tractor": "\ud83d\ude9c", - "motorcycle": "\ud83c\udfcd", - "bike": "\ud83d\udeb2", - "rotating_light": "\ud83d\udea8", - "oncoming_police_car": "\ud83d\ude94", - "oncoming_bus": "\ud83d\ude8d", - "oncoming_automobile": "\ud83d\ude98", - "oncoming_taxi": "\ud83d\ude96", - "aerial_tramway": "\ud83d\udea1", - "mountain_cableway": "\ud83d\udea0", - "suspension_railway": "\ud83d\ude9f", - "railway_car": "\ud83d\ude83", - "train": "\ud83d\ude8b", - "monorail": "\ud83d\ude9d", - "bullettrain_side": "\ud83d\ude84", - "bullettrain_front": "\ud83d\ude85", - "light_rail": "\ud83d\ude88", - "mountain_railway": "\ud83d\ude9e", - "steam_locomotive": "\ud83d\ude82", - "train2": "\ud83d\ude86", - "metro": "\ud83d\ude87", - "tram": "\ud83d\ude8a", - "station": "\ud83d\ude89", - "helicopter": "\ud83d\ude81", - "airplane_small": "\ud83d\udee9", - "airplane": "\u2708", - "airplane_departure": "\ud83d\udeeb", - "airplane_arriving": "\ud83d\udeec", - "sailboat": "\u26f5", - "motorboat": "\ud83d\udee5", - "speedboat": "\ud83d\udea4", - "ferry": "\u26f4", - "cruise_ship": "\ud83d\udef3", - "rocket": "\ud83d\ude80", - "satellite_orbital": "\ud83d\udef0", - "seat": "\ud83d\udcba", - "anchor": "\u2693", - "construction": "\ud83d\udea7", - "fuelpump": "\u26fd", - "busstop": "\ud83d\ude8f", - "vertical_traffic_light": "\ud83d\udea6", - "traffic_light": "\ud83d\udea5", - "checkered_flag": "\ud83c\udfc1", - "ship": "\ud83d\udea2", - "ferris_wheel": "\ud83c\udfa1", - "roller_coaster": "\ud83c\udfa2", - "carousel_horse": "\ud83c\udfa0", - "construction_site": "\ud83c\udfd7", - "foggy": "\ud83c\udf01", - "tokyo_tower": "\ud83d\uddfc", - "factory": "\ud83c\udfed", - "fountain": "\u26f2", - "rice_scene": "\ud83c\udf91", - "mountain": "\u26f0", - "mountain_snow": "\ud83c\udfd4", - "mount_fuji": "\ud83d\uddfb", - "volcano": "\ud83c\udf0b", - "japan": "\ud83d\uddfe", - "camping": "\ud83c\udfd5", - "tent": "\u26fa", - "park": "\ud83c\udfde", - "motorway": "\ud83d\udee3", - "railway_track": "\ud83d\udee4", - "sunrise": "\ud83c\udf05", - "sunrise_over_mountains": "\ud83c\udf04", - "desert": "\ud83c\udfdc", - "beach": "\ud83c\udfd6", - "island": "\ud83c\udfdd", - "city_sunset": "\ud83c\udf07", - "city_dusk": "\ud83c\udf06", - "cityscape": "\ud83c\udfd9", - "night_with_stars": "\ud83c\udf03", - "bridge_at_night": "\ud83c\udf09", - "milky_way": "\ud83c\udf0c", - "stars": "\ud83c\udf20", - "sparkler": "\ud83c\udf87", - "fireworks": "\ud83c\udf86", - "rainbow": "\ud83c\udf08", - "homes": "\ud83c\udfd8", - "european_castle": "\ud83c\udff0", - "japanese_castle": "\ud83c\udfef", - "stadium": "\ud83c\udfdf", - "statue_of_liberty": "\ud83d\uddfd", - "house": "\ud83c\udfe0", - "house_with_garden": "\ud83c\udfe1", - "house_abandoned": "\ud83c\udfda", - "office": "\ud83c\udfe2", - "department_store": "\ud83c\udfec", - "post_office": "\ud83c\udfe3", - "european_post_office": "\ud83c\udfe4", - "hospital": "\ud83c\udfe5", - "bank": "\ud83c\udfe6", - "hotel": "\ud83c\udfe8", - "convenience_store": "\ud83c\udfea", - "school": "\ud83c\udfeb", - "love_hotel": "\ud83c\udfe9", - "wedding": "\ud83d\udc92", - "classical_building": "\ud83c\udfdb", - "church": "\u26ea", - "mosque": "\ud83d\udd4c", - "synagogue": "\ud83d\udd4d", - "kaaba": "\ud83d\udd4b", - "shinto_shrine": "\u26e9", - "watch": "\u231a", - "iphone": "\ud83d\udcf1", - "calling": "\ud83d\udcf2", - "computer": "\ud83d\udcbb", - "keyboard": "\u2328", - "desktop": "\ud83d\udda5", - "printer": "\ud83d\udda8", - "mouse_three_button": "\ud83d\uddb1", - "trackball": "\ud83d\uddb2", - "joystick": "\ud83d\udd79", - "compression": "\ud83d\udddc", - "minidisc": "\ud83d\udcbd", - "floppy_disk": "\ud83d\udcbe", - "cd": "\ud83d\udcbf", - "dvd": "\ud83d\udcc0", - "vhs": "\ud83d\udcfc", - "camera": "\ud83d\udcf7", - "camera_with_flash": "\ud83d\udcf8", - "video_camera": "\ud83d\udcf9", - "movie_camera": "\ud83c\udfa5", - "projector": "\ud83d\udcfd", - "film_frames": "\ud83c\udf9e", - "telephone_receiver": "\ud83d\udcde", - "telephone": "\u260e", - "pager": "\ud83d\udcdf", - "fax": "\ud83d\udce0", - "tv": "\ud83d\udcfa", - "radio": "\ud83d\udcfb", - "microphone2": "\ud83c\udf99", - "level_slider": "\ud83c\udf9a", - "control_knobs": "\ud83c\udf9b", - "stopwatch": "\u23f1", - "timer": "\u23f2", - "alarm_clock": "\u23f0", - "clock": "\ud83d\udd70", - "hourglass_flowing_sand": "\u23f3", - "hourglass": "\u231b", - "satellite": "\ud83d\udce1", - "battery": "\ud83d\udd0b", - "electric_plug": "\ud83d\udd0c", - "bulb": "\ud83d\udca1", - "flashlight": "\ud83d\udd26", - "candle": "\ud83d\udd6f", - "wastebasket": "\ud83d\uddd1", - "oil": "\ud83d\udee2", - "money_with_wings": "\ud83d\udcb8", - "dollar": "\ud83d\udcb5", - "yen": "\ud83d\udcb4", - "euro": "\ud83d\udcb6", - "pound": "\ud83d\udcb7", - "moneybag": "\ud83d\udcb0", - "credit_card": "\ud83d\udcb3", - "gem": "\ud83d\udc8e", - "scales": "\u2696", - "wrench": "\ud83d\udd27", - "hammer": "\ud83d\udd28", - "hammer_pick": "\u2692", - "tools": "\ud83d\udee0", - "pick": "\u26cf", - "nut_and_bolt": "\ud83d\udd29", - "gear": "\u2699", - "chains": "\u26d3", - "gun": "\ud83d\udd2b", - "bomb": "\ud83d\udca3", - "knife": "\ud83d\udd2a", - "dagger": "\ud83d\udde1", - "crossed_swords": "\u2694", - "shield": "\ud83d\udee1", - "smoking": "\ud83d\udeac", - "skull_crossbones": "\u2620", - "coffin": "\u26b0", - "urn": "\u26b1", - "amphora": "\ud83c\udffa", - "crystal_ball": "\ud83d\udd2e", - "prayer_beads": "\ud83d\udcff", - "barber": "\ud83d\udc88", - "alembic": "\u2697", - "telescope": "\ud83d\udd2d", - "microscope": "\ud83d\udd2c", - "hole": "\ud83d\udd73", - "pill": "\ud83d\udc8a", - "syringe": "\ud83d\udc89", - "thermometer": "\ud83c\udf21", - "label": "\ud83c\udff7", - "bookmark": "\ud83d\udd16", - "toilet": "\ud83d\udebd", - "shower": "\ud83d\udebf", - "bathtub": "\ud83d\udec1", - "key": "\ud83d\udd11", - "key2": "\ud83d\udddd", - "couch": "\ud83d\udecb", - "sleeping_accommodation": "\ud83d\udecc", - "bed": "\ud83d\udecf", - "door": "\ud83d\udeaa", - "bellhop": "\ud83d\udece", - "frame_photo": "\ud83d\uddbc", - "map": "\ud83d\uddfa", - "beach_umbrella": "\u26f1", - "moyai": "\ud83d\uddff", - "shopping_bags": "\ud83d\udecd", - "balloon": "\ud83c\udf88", - "flags": "\ud83c\udf8f", - "ribbon": "\ud83c\udf80", - "gift": "\ud83c\udf81", - "confetti_ball": "\ud83c\udf8a", - "tada": "\ud83c\udf89", - "dolls": "\ud83c\udf8e", - "wind_chime": "\ud83c\udf90", - "crossed_flags": "\ud83c\udf8c", - "izakaya_lantern": "\ud83c\udfee", - "envelope": "\u2709", - "envelope_with_arrow": "\ud83d\udce9", - "incoming_envelope": "\ud83d\udce8", - "e-mail": "\ud83d\udce7", - "love_letter": "\ud83d\udc8c", - "postbox": "\ud83d\udcee", - "mailbox_closed": "\ud83d\udcea", - "mailbox": "\ud83d\udceb", - "mailbox_with_mail": "\ud83d\udcec", - "mailbox_with_no_mail": "\ud83d\udced", - "package": "\ud83d\udce6", - "postal_horn": "\ud83d\udcef", - "inbox_tray": "\ud83d\udce5", - "outbox_tray": "\ud83d\udce4", - "scroll": "\ud83d\udcdc", - "page_with_curl": "\ud83d\udcc3", - "bookmark_tabs": "\ud83d\udcd1", - "bar_chart": "\ud83d\udcca", - "chart_with_upwards_trend": "\ud83d\udcc8", - "chart_with_downwards_trend": "\ud83d\udcc9", - "page_facing_up": "\ud83d\udcc4", - "date": "\ud83d\udcc5", - "calendar": "\ud83d\udcc6", - "calendar_spiral": "\ud83d\uddd3", - "card_index": "\ud83d\udcc7", - "card_box": "\ud83d\uddc3", - "ballot_box": "\ud83d\uddf3", - "file_cabinet": "\ud83d\uddc4", - "clipboard": "\ud83d\udccb", - "notepad_spiral": "\ud83d\uddd2", - "file_folder": "\ud83d\udcc1", - "open_file_folder": "\ud83d\udcc2", - "dividers": "\ud83d\uddc2", - "newspaper2": "\ud83d\uddde", - "newspaper": "\ud83d\udcf0", - "notebook": "\ud83d\udcd3", - "closed_book": "\ud83d\udcd5", - "green_book": "\ud83d\udcd7", - "blue_book": "\ud83d\udcd8", - "orange_book": "\ud83d\udcd9", - "notebook_with_decorative_cover": "\ud83d\udcd4", - "ledger": "\ud83d\udcd2", - "books": "\ud83d\udcda", - "book": "\ud83d\udcd6", - "link": "\ud83d\udd17", - "paperclip": "\ud83d\udcce", - "paperclips": "\ud83d\udd87", - "scissors": "\u2702", - "triangular_ruler": "\ud83d\udcd0", - "straight_ruler": "\ud83d\udccf", - "pushpin": "\ud83d\udccc", - "round_pushpin": "\ud83d\udccd", - "triangular_flag_on_post": "\ud83d\udea9", - "flag_white": "\ud83c\udff3", - "flag_black": "\ud83c\udff4", - "closed_lock_with_key": "\ud83d\udd10", - "lock": "\ud83d\udd12", - "unlock": "\ud83d\udd13", - "lock_with_ink_pen": "\ud83d\udd0f", - "pen_ballpoint": "\ud83d\udd8a", - "pen_fountain": "\ud83d\udd8b", - "black_nib": "\u2712", - "pencil": "\ud83d\udcdd", - "pencil2": "\u270f", - "crayon": "\ud83d\udd8d", - "paintbrush": "\ud83d\udd8c", - "mag": "\ud83d\udd0d", - "mag_right": "\ud83d\udd0e", - "heart": "\u2764", - "yellow_heart": "\ud83d\udc9b", - "green_heart": "\ud83d\udc9a", - "blue_heart": "\ud83d\udc99", - "purple_heart": "\ud83d\udc9c", - "broken_heart": "\ud83d\udc94", - "heart_exclamation": "\u2763", - "two_hearts": "\ud83d\udc95", - "revolving_hearts": "\ud83d\udc9e", - "heartbeat": "\ud83d\udc93", - "heartpulse": "\ud83d\udc97", - "sparkling_heart": "\ud83d\udc96", - "cupid": "\ud83d\udc98", - "gift_heart": "\ud83d\udc9d", - "heart_decoration": "\ud83d\udc9f", - "peace": "\u262e", - "cross": "\u271d", - "star_and_crescent": "\u262a", - "om_symbol": "\ud83d\udd49", - "wheel_of_dharma": "\u2638", - "star_of_david": "\u2721", - "six_pointed_star": "\ud83d\udd2f", - "menorah": "\ud83d\udd4e", - "yin_yang": "\u262f", - "orthodox_cross": "\u2626", - "place_of_worship": "\ud83d\uded0", - "ophiuchus": "\u26ce", - "aries": "\u2648", - "taurus": "\u2649", - "gemini": "\u264a", - "cancer": "\u264b", - "leo": "\u264c", - "virgo": "\u264d", - "libra": "\u264e", - "scorpius": "\u264f", - "sagittarius": "\u2650", - "capricorn": "\u2651", - "aquarius": "\u2652", - "pisces": "\u2653", - "id": "\ud83c\udd94", - "atom": "\u269b", - "u7a7a": "\ud83c\ude33", - "u5272": "\ud83c\ude39", - "radioactive": "\u2622", - "biohazard": "\u2623", - "mobile_phone_off": "\ud83d\udcf4", - "vibration_mode": "\ud83d\udcf3", - "u6709": "\ud83c\ude36", - "u7121": "\ud83c\ude1a", - "u7533": "\ud83c\ude38", - "u55b6": "\ud83c\ude3a", - "u6708": "\ud83c\ude37", - "eight_pointed_black_star": "\u2734", - "vs": "\ud83c\udd9a", - "accept": "\ud83c\ude51", - "white_flower": "\ud83d\udcae", - "ideograph_advantage": "\ud83c\ude50", - "secret": "\u3299", - "congratulations": "\u3297", - "u5408": "\ud83c\ude34", - "u6e80": "\ud83c\ude35", - "u7981": "\ud83c\ude32", "a": "\ud83c\udd70", - "b": "\ud83c\udd71", "ab": "\ud83c\udd8e", - "cl": "\ud83c\udd91", - "o2": "\ud83c\udd7e", - "sos": "\ud83c\udd98", - "no_entry": "\u26d4", - "name_badge": "\ud83d\udcdb", - "no_entry_sign": "\ud83d\udeab", - "x": "\u274c", - "o": "\u2b55", - "anger": "\ud83d\udca2", - "hotsprings": "\u2668", - "no_pedestrians": "\ud83d\udeb7", - "do_not_litter": "\ud83d\udeaf", - "no_bicycles": "\ud83d\udeb3", - "non-potable_water": "\ud83d\udeb1", - "underage": "\ud83d\udd1e", - "no_mobile_phones": "\ud83d\udcf5", - "exclamation": "\u2757", - "grey_exclamation": "\u2755", - "question": "\u2753", - "grey_question": "\u2754", - "bangbang": "\u203c", - "interrobang": "\u2049", - "100": "\ud83d\udcaf", - "low_brightness": "\ud83d\udd05", - "high_brightness": "\ud83d\udd06", - "trident": "\ud83d\udd31", - "fleur-de-lis": "\u269c", - "part_alternation_mark": "\u303d", - "warning": "\u26a0", - "children_crossing": "\ud83d\udeb8", - "beginner": "\ud83d\udd30", - "recycle": "\u267b", - "u6307": "\ud83c\ude2f", - "chart": "\ud83d\udcb9", - "sparkle": "\u2747", - "eight_spoked_asterisk": "\u2733", - "negative_squared_cross_mark": "\u274e", - "white_check_mark": "\u2705", - "diamond_shape_with_a_dot_inside": "\ud83d\udca0", - "cyclone": "\ud83c\udf00", - "loop": "\u27bf", - "globe_with_meridians": "\ud83c\udf10", - "m": "\u24c2", - "atm": "\ud83c\udfe7", - "sa": "\ud83c\ude02", - "passport_control": "\ud83d\udec2", - "customs": "\ud83d\udec3", - "baggage_claim": "\ud83d\udec4", - "left_luggage": "\ud83d\udec5", - "wheelchair": "\u267f", - "no_smoking": "\ud83d\udead", - "wc": "\ud83d\udebe", - "parking": "\ud83c\udd7f", - "potable_water": "\ud83d\udeb0", - "mens": "\ud83d\udeb9", - "womens": "\ud83d\udeba", - "baby_symbol": "\ud83d\udebc", - "restroom": "\ud83d\udebb", - "put_litter_in_its_place": "\ud83d\udeae", - "cinema": "\ud83c\udfa6", - "signal_strength": "\ud83d\udcf6", - "koko": "\ud83c\ude01", - "ng": "\ud83c\udd96", - "ok": "\ud83c\udd97", - "up": "\ud83c\udd99", - "cool": "\ud83c\udd92", - "new": "\ud83c\udd95", - "free": "\ud83c\udd93", - "zero": "0\u20e3", - "one": "1\u20e3", - "two": "2\u20e3", - "three": "3\u20e3", - "four": "4\u20e3", - "five": "5\u20e3", - "six": "6\u20e3", - "seven": "7\u20e3", - "eight": "8\u20e3", - "nine": "9\u20e3", - "ten": "\ud83d\udd1f", - "1234": "\ud83d\udd22", - "arrow_forward": "\u25b6", - "pause_button": "\u23f8", - "play_pause": "\u23ef", - "stop_button": "\u23f9", - "record_button": "\u23fa", - "track_next": "\u23ed", - "track_previous": "\u23ee", - "fast_forward": "\u23e9", - "rewind": "\u23ea", - "twisted_rightwards_arrows": "\ud83d\udd00", - "repeat": "\ud83d\udd01", - "repeat_one": "\ud83d\udd02", - "arrow_backward": "\u25c0", - "arrow_up_small": "\ud83d\udd3c", - "arrow_down_small": "\ud83d\udd3d", - "arrow_double_up": "\u23eb", - "arrow_double_down": "\u23ec", - "arrow_right": "\u27a1", - "arrow_left": "\u2b05", - "arrow_up": "\u2b06", - "arrow_down": "\u2b07", - "arrow_upper_right": "\u2197", - "arrow_lower_right": "\u2198", - "arrow_lower_left": "\u2199", - "arrow_upper_left": "\u2196", - "arrow_up_down": "\u2195", - "left_right_arrow": "\u2194", - "arrows_counterclockwise": "\ud83d\udd04", - "arrow_right_hook": "\u21aa", - "leftwards_arrow_with_hook": "\u21a9", - "arrow_heading_up": "\u2934", - "arrow_heading_down": "\u2935", - "hash": "#\u20e3", - "asterisk": "*\u20e3", - "information_source": "\u2139", "abc": "\ud83d\udd24", "abcd": "\ud83d\udd21", - "capital_abcd": "\ud83d\udd20", - "symbols": "\ud83d\udd23", - "musical_note": "\ud83c\udfb5", - "notes": "\ud83c\udfb6", - "wavy_dash": "\u3030", - "curly_loop": "\u27b0", - "heavy_check_mark": "\u2714", - "arrows_clockwise": "\ud83d\udd03", - "heavy_plus_sign": "\u2795", - "heavy_minus_sign": "\u2796", - "heavy_division_sign": "\u2797", - "heavy_multiplication_x": "\u2716", - "heavy_dollar_sign": "\ud83d\udcb2", - "currency_exchange": "\ud83d\udcb1", - "copyright": "\u00a9", - "registered": "\u00ae", - "tm": "\u2122", - "end": "\ud83d\udd1a", - "back": "\ud83d\udd19", - "on": "\ud83d\udd1b", - "top": "\ud83d\udd1d", - "soon": "\ud83d\udd1c", - "ballot_box_with_check": "\u2611", - "radio_button": "\ud83d\udd18", - "white_circle": "\u26aa", - "black_circle": "\u26ab", - "red_circle": "\ud83d\udd34", - "large_blue_circle": "\ud83d\udd35", - "small_orange_diamond": "\ud83d\udd38", - "small_blue_diamond": "\ud83d\udd39", - "large_orange_diamond": "\ud83d\udd36", - "large_blue_diamond": "\ud83d\udd37", - "small_red_triangle": "\ud83d\udd3a", - "black_small_square": "\u25aa", - "white_small_square": "\u25ab", - "black_large_square": "\u2b1b", - "white_large_square": "\u2b1c", - "small_red_triangle_down": "\ud83d\udd3b", - "black_medium_square": "\u25fc", - "white_medium_square": "\u25fb", - "black_medium_small_square": "\u25fe", - "white_medium_small_square": "\u25fd", - "black_square_button": "\ud83d\udd32", - "white_square_button": "\ud83d\udd33", - "speaker": "\ud83d\udd08", - "sound": "\ud83d\udd09", - "loud_sound": "\ud83d\udd0a", - "mute": "\ud83d\udd07", - "mega": "\ud83d\udce3", - "loudspeaker": "\ud83d\udce2", - "bell": "\ud83d\udd14", - "no_bell": "\ud83d\udd15", - "black_joker": "\ud83c\udccf", - "mahjong": "\ud83c\udc04", - "spades": "\u2660", - "clubs": "\u2663", - "hearts": "\u2665", - "diamonds": "\u2666", - "flower_playing_cards": "\ud83c\udfb4", - "thought_balloon": "\ud83d\udcad", - "anger_right": "\ud83d\uddef", - "speech_balloon": "\ud83d\udcac", - "clock1": "\ud83d\udd50", - "clock2": "\ud83d\udd51", - "clock3": "\ud83d\udd52", - "clock4": "\ud83d\udd53", - "clock5": "\ud83d\udd54", - "clock6": "\ud83d\udd55", - "clock7": "\ud83d\udd56", - "clock8": "\ud83d\udd57", - "clock9": "\ud83d\udd58", - "clock10": "\ud83d\udd59", - "clock11": "\ud83d\udd5a", - "clock12": "\ud83d\udd5b", - "clock130": "\ud83d\udd5c", - "clock230": "\ud83d\udd5d", - "clock330": "\ud83d\udd5e", - "clock430": "\ud83d\udd5f", - "clock530": "\ud83d\udd60", - "clock630": "\ud83d\udd61", - "clock730": "\ud83d\udd62", - "clock830": "\ud83d\udd63", - "clock930": "\ud83d\udd64", - "clock1030": "\ud83d\udd65", - "clock1130": "\ud83d\udd66", - "clock1230": "\ud83d\udd67", - "eye_in_speech_bubble": "\ud83d\udc41\ud83d\udde8", - "flag_ac": "\ud83c\udde6\ud83c\udde8", - "flag_af": "\ud83c\udde6\ud83c\uddeb", - "flag_al": "\ud83c\udde6\ud83c\uddf1", - "flag_dz": "\ud83c\udde9\ud83c\uddff", - "flag_ad": "\ud83c\udde6\ud83c\udde9", - "flag_ao": "\ud83c\udde6\ud83c\uddf4", - "flag_ai": "\ud83c\udde6\ud83c\uddee", - "flag_ag": "\ud83c\udde6\ud83c\uddec", - "flag_ar": "\ud83c\udde6\ud83c\uddf7", - "flag_am": "\ud83c\udde6\ud83c\uddf2", - "flag_aw": "\ud83c\udde6\ud83c\uddfc", - "flag_au": "\ud83c\udde6\ud83c\uddfa", - "flag_at": "\ud83c\udde6\ud83c\uddf9", - "flag_az": "\ud83c\udde6\ud83c\uddff", - "flag_bs": "\ud83c\udde7\ud83c\uddf8", - "flag_bh": "\ud83c\udde7\ud83c\udded", - "flag_bd": "\ud83c\udde7\ud83c\udde9", - "flag_bb": "\ud83c\udde7\ud83c\udde7", - "flag_by": "\ud83c\udde7\ud83c\uddfe", - "flag_be": "\ud83c\udde7\ud83c\uddea", - "flag_bz": "\ud83c\udde7\ud83c\uddff", - "flag_bj": "\ud83c\udde7\ud83c\uddef", - "flag_bm": "\ud83c\udde7\ud83c\uddf2", - "flag_bt": "\ud83c\udde7\ud83c\uddf9", - "flag_bo": "\ud83c\udde7\ud83c\uddf4", - "flag_ba": "\ud83c\udde7\ud83c\udde6", - "flag_bw": "\ud83c\udde7\ud83c\uddfc", - "flag_br": "\ud83c\udde7\ud83c\uddf7", - "flag_bn": "\ud83c\udde7\ud83c\uddf3", - "flag_bg": "\ud83c\udde7\ud83c\uddec", - "flag_bf": "\ud83c\udde7\ud83c\uddeb", - "flag_bi": "\ud83c\udde7\ud83c\uddee", - "flag_cv": "\ud83c\udde8\ud83c\uddfb", - "flag_kh": "\ud83c\uddf0\ud83c\udded", - "flag_cm": "\ud83c\udde8\ud83c\uddf2", - "flag_ca": "\ud83c\udde8\ud83c\udde6", - "flag_ky": "\ud83c\uddf0\ud83c\uddfe", - "flag_cf": "\ud83c\udde8\ud83c\uddeb", - "flag_td": "\ud83c\uddf9\ud83c\udde9", - "flag_cl": "\ud83c\udde8\ud83c\uddf1", - "flag_cn": "\ud83c\udde8\ud83c\uddf3", - "flag_co": "\ud83c\udde8\ud83c\uddf4", - "flag_km": "\ud83c\uddf0\ud83c\uddf2", - "flag_cg": "\ud83c\udde8\ud83c\uddec", - "flag_cd": "\ud83c\udde8\ud83c\udde9", - "flag_cr": "\ud83c\udde8\ud83c\uddf7", - "flag_hr": "\ud83c\udded\ud83c\uddf7", - "flag_cu": "\ud83c\udde8\ud83c\uddfa", - "flag_cy": "\ud83c\udde8\ud83c\uddfe", - "flag_cz": "\ud83c\udde8\ud83c\uddff", - "flag_dk": "\ud83c\udde9\ud83c\uddf0", - "flag_dj": "\ud83c\udde9\ud83c\uddef", - "flag_dm": "\ud83c\udde9\ud83c\uddf2", - "flag_do": "\ud83c\udde9\ud83c\uddf4", - "flag_ec": "\ud83c\uddea\ud83c\udde8", - "flag_eg": "\ud83c\uddea\ud83c\uddec", - "flag_sv": "\ud83c\uddf8\ud83c\uddfb", - "flag_gq": "\ud83c\uddec\ud83c\uddf6", - "flag_er": "\ud83c\uddea\ud83c\uddf7", - "flag_ee": "\ud83c\uddea\ud83c\uddea", - "flag_et": "\ud83c\uddea\ud83c\uddf9", - "flag_fk": "\ud83c\uddeb\ud83c\uddf0", - "flag_fo": "\ud83c\uddeb\ud83c\uddf4", - "flag_fj": "\ud83c\uddeb\ud83c\uddef", - "flag_fi": "\ud83c\uddeb\ud83c\uddee", - "flag_fr": "\ud83c\uddeb\ud83c\uddf7", - "flag_pf": "\ud83c\uddf5\ud83c\uddeb", - "flag_ga": "\ud83c\uddec\ud83c\udde6", - "flag_gm": "\ud83c\uddec\ud83c\uddf2", - "flag_ge": "\ud83c\uddec\ud83c\uddea", - "flag_de": "\ud83c\udde9\ud83c\uddea", - "flag_gh": "\ud83c\uddec\ud83c\udded", - "flag_gi": "\ud83c\uddec\ud83c\uddee", - "flag_gr": "\ud83c\uddec\ud83c\uddf7", - "flag_gl": "\ud83c\uddec\ud83c\uddf1", - "flag_gd": "\ud83c\uddec\ud83c\udde9", - "flag_gu": "\ud83c\uddec\ud83c\uddfa", - "flag_gt": "\ud83c\uddec\ud83c\uddf9", - "flag_gn": "\ud83c\uddec\ud83c\uddf3", - "flag_gw": "\ud83c\uddec\ud83c\uddfc", - "flag_gy": "\ud83c\uddec\ud83c\uddfe", - "flag_ht": "\ud83c\udded\ud83c\uddf9", - "flag_hn": "\ud83c\udded\ud83c\uddf3", - "flag_hk": "\ud83c\udded\ud83c\uddf0", - "flag_hu": "\ud83c\udded\ud83c\uddfa", - "flag_is": "\ud83c\uddee\ud83c\uddf8", - "flag_in": "\ud83c\uddee\ud83c\uddf3", - "flag_id": "\ud83c\uddee\ud83c\udde9", - "flag_ir": "\ud83c\uddee\ud83c\uddf7", - "flag_iq": "\ud83c\uddee\ud83c\uddf6", - "flag_ie": "\ud83c\uddee\ud83c\uddea", - "flag_il": "\ud83c\uddee\ud83c\uddf1", - "flag_it": "\ud83c\uddee\ud83c\uddf9", - "flag_ci": "\ud83c\udde8\ud83c\uddee", - "flag_jm": "\ud83c\uddef\ud83c\uddf2", - "flag_jp": "\ud83c\uddef\ud83c\uddf5", - "flag_je": "\ud83c\uddef\ud83c\uddea", - "flag_jo": "\ud83c\uddef\ud83c\uddf4", - "flag_kz": "\ud83c\uddf0\ud83c\uddff", - "flag_ke": "\ud83c\uddf0\ud83c\uddea", - "flag_ki": "\ud83c\uddf0\ud83c\uddee", - "flag_xk": "\ud83c\uddfd\ud83c\uddf0", - "flag_kw": "\ud83c\uddf0\ud83c\uddfc", - "flag_kg": "\ud83c\uddf0\ud83c\uddec", - "flag_la": "\ud83c\uddf1\ud83c\udde6", - "flag_lv": "\ud83c\uddf1\ud83c\uddfb", - "flag_lb": "\ud83c\uddf1\ud83c\udde7", - "flag_ls": "\ud83c\uddf1\ud83c\uddf8", - "flag_lr": "\ud83c\uddf1\ud83c\uddf7", - "flag_ly": "\ud83c\uddf1\ud83c\uddfe", - "flag_li": "\ud83c\uddf1\ud83c\uddee", - "flag_lt": "\ud83c\uddf1\ud83c\uddf9", - "flag_lu": "\ud83c\uddf1\ud83c\uddfa", - "flag_mo": "\ud83c\uddf2\ud83c\uddf4", - "flag_mk": "\ud83c\uddf2\ud83c\uddf0", - "flag_mg": "\ud83c\uddf2\ud83c\uddec", - "flag_mw": "\ud83c\uddf2\ud83c\uddfc", - "flag_my": "\ud83c\uddf2\ud83c\uddfe", - "flag_mv": "\ud83c\uddf2\ud83c\uddfb", - "flag_ml": "\ud83c\uddf2\ud83c\uddf1", - "flag_mt": "\ud83c\uddf2\ud83c\uddf9", - "flag_mh": "\ud83c\uddf2\ud83c\udded", - "flag_mr": "\ud83c\uddf2\ud83c\uddf7", - "flag_mu": "\ud83c\uddf2\ud83c\uddfa", - "flag_mx": "\ud83c\uddf2\ud83c\uddfd", - "flag_fm": "\ud83c\uddeb\ud83c\uddf2", - "flag_md": "\ud83c\uddf2\ud83c\udde9", - "flag_mc": "\ud83c\uddf2\ud83c\udde8", - "flag_mn": "\ud83c\uddf2\ud83c\uddf3", - "flag_me": "\ud83c\uddf2\ud83c\uddea", - "flag_ms": "\ud83c\uddf2\ud83c\uddf8", - "flag_ma": "\ud83c\uddf2\ud83c\udde6", - "flag_mz": "\ud83c\uddf2\ud83c\uddff", - "flag_mm": "\ud83c\uddf2\ud83c\uddf2", - "flag_na": "\ud83c\uddf3\ud83c\udde6", - "flag_nr": "\ud83c\uddf3\ud83c\uddf7", - "flag_np": "\ud83c\uddf3\ud83c\uddf5", - "flag_nl": "\ud83c\uddf3\ud83c\uddf1", - "flag_nc": "\ud83c\uddf3\ud83c\udde8", - "flag_nz": "\ud83c\uddf3\ud83c\uddff", - "flag_ni": "\ud83c\uddf3\ud83c\uddee", - "flag_ne": "\ud83c\uddf3\ud83c\uddea", - "flag_ng": "\ud83c\uddf3\ud83c\uddec", - "flag_nu": "\ud83c\uddf3\ud83c\uddfa", - "flag_kp": "\ud83c\uddf0\ud83c\uddf5", - "flag_no": "\ud83c\uddf3\ud83c\uddf4", - "flag_om": "\ud83c\uddf4\ud83c\uddf2", - "flag_pk": "\ud83c\uddf5\ud83c\uddf0", - "flag_pw": "\ud83c\uddf5\ud83c\uddfc", - "flag_ps": "\ud83c\uddf5\ud83c\uddf8", - "flag_pa": "\ud83c\uddf5\ud83c\udde6", - "flag_pg": "\ud83c\uddf5\ud83c\uddec", - "flag_py": "\ud83c\uddf5\ud83c\uddfe", - "flag_pe": "\ud83c\uddf5\ud83c\uddea", - "flag_ph": "\ud83c\uddf5\ud83c\udded", - "flag_pl": "\ud83c\uddf5\ud83c\uddf1", - "flag_pt": "\ud83c\uddf5\ud83c\uddf9", - "flag_pr": "\ud83c\uddf5\ud83c\uddf7", - "flag_qa": "\ud83c\uddf6\ud83c\udde6", - "flag_ro": "\ud83c\uddf7\ud83c\uddf4", - "flag_ru": "\ud83c\uddf7\ud83c\uddfa", - "flag_rw": "\ud83c\uddf7\ud83c\uddfc", - "flag_sh": "\ud83c\uddf8\ud83c\udded", - "flag_kn": "\ud83c\uddf0\ud83c\uddf3", - "flag_lc": "\ud83c\uddf1\ud83c\udde8", - "flag_vc": "\ud83c\uddfb\ud83c\udde8", - "flag_ws": "\ud83c\uddfc\ud83c\uddf8", - "flag_sm": "\ud83c\uddf8\ud83c\uddf2", - "flag_st": "\ud83c\uddf8\ud83c\uddf9", - "flag_sa": "\ud83c\uddf8\ud83c\udde6", - "flag_sn": "\ud83c\uddf8\ud83c\uddf3", - "flag_rs": "\ud83c\uddf7\ud83c\uddf8", - "flag_sc": "\ud83c\uddf8\ud83c\udde8", - "flag_sl": "\ud83c\uddf8\ud83c\uddf1", - "flag_sg": "\ud83c\uddf8\ud83c\uddec", - "flag_sk": "\ud83c\uddf8\ud83c\uddf0", - "flag_si": "\ud83c\uddf8\ud83c\uddee", - "flag_sb": "\ud83c\uddf8\ud83c\udde7", - "flag_so": "\ud83c\uddf8\ud83c\uddf4", - "flag_za": "\ud83c\uddff\ud83c\udde6", - "flag_kr": "\ud83c\uddf0\ud83c\uddf7", - "flag_es": "\ud83c\uddea\ud83c\uddf8", - "flag_lk": "\ud83c\uddf1\ud83c\uddf0", - "flag_sd": "\ud83c\uddf8\ud83c\udde9", - "flag_sr": "\ud83c\uddf8\ud83c\uddf7", - "flag_sz": "\ud83c\uddf8\ud83c\uddff", - "flag_se": "\ud83c\uddf8\ud83c\uddea", - "flag_ch": "\ud83c\udde8\ud83c\udded", - "flag_sy": "\ud83c\uddf8\ud83c\uddfe", - "flag_tw": "\ud83c\uddf9\ud83c\uddfc", - "flag_tj": "\ud83c\uddf9\ud83c\uddef", - "flag_tz": "\ud83c\uddf9\ud83c\uddff", - "flag_th": "\ud83c\uddf9\ud83c\udded", - "flag_tl": "\ud83c\uddf9\ud83c\uddf1", - "flag_tg": "\ud83c\uddf9\ud83c\uddec", - "flag_to": "\ud83c\uddf9\ud83c\uddf4", - "flag_tt": "\ud83c\uddf9\ud83c\uddf9", - "flag_tn": "\ud83c\uddf9\ud83c\uddf3", - "flag_tr": "\ud83c\uddf9\ud83c\uddf7", - "flag_tm": "\ud83c\uddf9\ud83c\uddf2", - "flag_tv": "\ud83c\uddf9\ud83c\uddfb", - "flag_ug": "\ud83c\uddfa\ud83c\uddec", - "flag_ua": "\ud83c\uddfa\ud83c\udde6", - "flag_ae": "\ud83c\udde6\ud83c\uddea", - "flag_gb": "\ud83c\uddec\ud83c\udde7", - "flag_us": "\ud83c\uddfa\ud83c\uddf8", - "flag_vi": "\ud83c\uddfb\ud83c\uddee", - "flag_uy": "\ud83c\uddfa\ud83c\uddfe", - "flag_uz": "\ud83c\uddfa\ud83c\uddff", - "flag_vu": "\ud83c\uddfb\ud83c\uddfa", - "flag_va": "\ud83c\uddfb\ud83c\udde6", - "flag_ve": "\ud83c\uddfb\ud83c\uddea", - "flag_vn": "\ud83c\uddfb\ud83c\uddf3", - "flag_wf": "\ud83c\uddfc\ud83c\uddeb", - "flag_eh": "\ud83c\uddea\ud83c\udded", - "flag_ye": "\ud83c\uddfe\ud83c\uddea", - "flag_zm": "\ud83c\uddff\ud83c\uddf2", - "flag_zw": "\ud83c\uddff\ud83c\uddfc", - "flag_re": "\ud83c\uddf7\ud83c\uddea", - "flag_ax": "\ud83c\udde6\ud83c\uddfd", - "flag_ta": "\ud83c\uddf9\ud83c\udde6", - "flag_io": "\ud83c\uddee\ud83c\uddf4", - "flag_bq": "\ud83c\udde7\ud83c\uddf6", - "flag_cx": "\ud83c\udde8\ud83c\uddfd", - "flag_cc": "\ud83c\udde8\ud83c\udde8", - "flag_gg": "\ud83c\uddec\ud83c\uddec", - "flag_im": "\ud83c\uddee\ud83c\uddf2", - "flag_yt": "\ud83c\uddfe\ud83c\uddf9", - "flag_nf": "\ud83c\uddf3\ud83c\uddeb", - "flag_pn": "\ud83c\uddf5\ud83c\uddf3", - "flag_bl": "\ud83c\udde7\ud83c\uddf1", - "flag_pm": "\ud83c\uddf5\ud83c\uddf2", - "flag_gs": "\ud83c\uddec\ud83c\uddf8", - "flag_tk": "\ud83c\uddf9\ud83c\uddf0", - "flag_bv": "\ud83c\udde7\ud83c\uddfb", - "flag_hm": "\ud83c\udded\ud83c\uddf2", - "flag_sj": "\ud83c\uddf8\ud83c\uddef", - "flag_um": "\ud83c\uddfa\ud83c\uddf2", - "flag_ic": "\ud83c\uddee\ud83c\udde8", - "flag_ea": "\ud83c\uddea\ud83c\udde6", - "flag_cp": "\ud83c\udde8\ud83c\uddf5", - "flag_dg": "\ud83c\udde9\ud83c\uddec", - "flag_as": "\ud83c\udde6\ud83c\uddf8", - "flag_aq": "\ud83c\udde6\ud83c\uddf6", - "flag_vg": "\ud83c\uddfb\ud83c\uddec", - "flag_ck": "\ud83c\udde8\ud83c\uddf0", - "flag_cw": "\ud83c\udde8\ud83c\uddfc", - "flag_eu": "\ud83c\uddea\ud83c\uddfa", - "flag_gf": "\ud83c\uddec\ud83c\uddeb", - "flag_tf": "\ud83c\uddf9\ud83c\uddeb", - "flag_gp": "\ud83c\uddec\ud83c\uddf5", - "flag_mq": "\ud83c\uddf2\ud83c\uddf6", - "flag_mp": "\ud83c\uddf2\ud83c\uddf5", - "flag_sx": "\ud83c\uddf8\ud83c\uddfd", - "flag_ss": "\ud83c\uddf8\ud83c\uddf8", - "flag_tc": "\ud83c\uddf9\ud83c\udde8", - "flag_mf": "\ud83c\uddf2\ud83c\uddeb", - "raised_hands_tone1": "\ud83d\ude4c\ud83c\udffb", - "raised_hands_tone2": "\ud83d\ude4c\ud83c\udffc", - "raised_hands_tone3": "\ud83d\ude4c\ud83c\udffd", - "raised_hands_tone4": "\ud83d\ude4c\ud83c\udffe", - "raised_hands_tone5": "\ud83d\ude4c\ud83c\udfff", - "clap_tone1": "\ud83d\udc4f\ud83c\udffb", - "clap_tone2": "\ud83d\udc4f\ud83c\udffc", - "clap_tone3": "\ud83d\udc4f\ud83c\udffd", - "clap_tone4": "\ud83d\udc4f\ud83c\udffe", - "clap_tone5": "\ud83d\udc4f\ud83c\udfff", - "wave_tone1": "\ud83d\udc4b\ud83c\udffb", - "wave_tone2": "\ud83d\udc4b\ud83c\udffc", - "wave_tone3": "\ud83d\udc4b\ud83c\udffd", - "wave_tone4": "\ud83d\udc4b\ud83c\udffe", - "wave_tone5": "\ud83d\udc4b\ud83c\udfff", - "thumbsup_tone1": "\ud83d\udc4d\ud83c\udffb", - "thumbsup_tone2": "\ud83d\udc4d\ud83c\udffc", - "thumbsup_tone3": "\ud83d\udc4d\ud83c\udffd", - "thumbsup_tone4": "\ud83d\udc4d\ud83c\udffe", - "thumbsup_tone5": "\ud83d\udc4d\ud83c\udfff", - "thumbsdown_tone1": "\ud83d\udc4e\ud83c\udffb", - "thumbsdown_tone2": "\ud83d\udc4e\ud83c\udffc", - "thumbsdown_tone3": "\ud83d\udc4e\ud83c\udffd", - "thumbsdown_tone4": "\ud83d\udc4e\ud83c\udffe", - "thumbsdown_tone5": "\ud83d\udc4e\ud83c\udfff", - "punch_tone1": "\ud83d\udc4a\ud83c\udffb", - "punch_tone2": "\ud83d\udc4a\ud83c\udffc", - "punch_tone3": "\ud83d\udc4a\ud83c\udffd", - "punch_tone4": "\ud83d\udc4a\ud83c\udffe", - "punch_tone5": "\ud83d\udc4a\ud83c\udfff", - "fist_tone1": "\u270a\ud83c\udffb", - "fist_tone2": "\u270a\ud83c\udffc", - "fist_tone3": "\u270a\ud83c\udffd", - "fist_tone4": "\u270a\ud83c\udffe", - "fist_tone5": "\u270a\ud83c\udfff", - "v_tone1": "\u270c\ud83c\udffb", - "v_tone2": "\u270c\ud83c\udffc", - "v_tone3": "\u270c\ud83c\udffd", - "v_tone4": "\u270c\ud83c\udffe", - "v_tone5": "\u270c\ud83c\udfff", - "ok_hand_tone1": "\ud83d\udc4c\ud83c\udffb", - "ok_hand_tone2": "\ud83d\udc4c\ud83c\udffc", - "ok_hand_tone3": "\ud83d\udc4c\ud83c\udffd", - "ok_hand_tone4": "\ud83d\udc4c\ud83c\udffe", - "ok_hand_tone5": "\ud83d\udc4c\ud83c\udfff", - "raised_hand_tone1": "\u270b\ud83c\udffb", - "raised_hand_tone2": "\u270b\ud83c\udffc", - "raised_hand_tone3": "\u270b\ud83c\udffd", - "raised_hand_tone4": "\u270b\ud83c\udffe", - "raised_hand_tone5": "\u270b\ud83c\udfff", - "open_hands_tone1": "\ud83d\udc50\ud83c\udffb", - "open_hands_tone2": "\ud83d\udc50\ud83c\udffc", - "open_hands_tone3": "\ud83d\udc50\ud83c\udffd", - "open_hands_tone4": "\ud83d\udc50\ud83c\udffe", - "open_hands_tone5": "\ud83d\udc50\ud83c\udfff", - "muscle_tone1": "\ud83d\udcaa\ud83c\udffb", - "muscle_tone2": "\ud83d\udcaa\ud83c\udffc", - "muscle_tone3": "\ud83d\udcaa\ud83c\udffd", - "muscle_tone4": "\ud83d\udcaa\ud83c\udffe", - "muscle_tone5": "\ud83d\udcaa\ud83c\udfff", - "pray_tone1": "\ud83d\ude4f\ud83c\udffb", - "pray_tone2": "\ud83d\ude4f\ud83c\udffc", - "pray_tone3": "\ud83d\ude4f\ud83c\udffd", - "pray_tone4": "\ud83d\ude4f\ud83c\udffe", - "pray_tone5": "\ud83d\ude4f\ud83c\udfff", - "point_up_tone1": "\u261d\ud83c\udffb", - "point_up_tone2": "\u261d\ud83c\udffc", - "point_up_tone3": "\u261d\ud83c\udffd", - "point_up_tone4": "\u261d\ud83c\udffe", - "point_up_tone5": "\u261d\ud83c\udfff", - "point_up_2_tone1": "\ud83d\udc46\ud83c\udffb", - "point_up_2_tone2": "\ud83d\udc46\ud83c\udffc", - "point_up_2_tone3": "\ud83d\udc46\ud83c\udffd", - "point_up_2_tone4": "\ud83d\udc46\ud83c\udffe", - "point_up_2_tone5": "\ud83d\udc46\ud83c\udfff", - "point_down_tone1": "\ud83d\udc47\ud83c\udffb", - "point_down_tone2": "\ud83d\udc47\ud83c\udffc", - "point_down_tone3": "\ud83d\udc47\ud83c\udffd", - "point_down_tone4": "\ud83d\udc47\ud83c\udffe", - "point_down_tone5": "\ud83d\udc47\ud83c\udfff", - "point_left_tone1": "\ud83d\udc48\ud83c\udffb", - "point_left_tone2": "\ud83d\udc48\ud83c\udffc", - "point_left_tone3": "\ud83d\udc48\ud83c\udffd", - "point_left_tone4": "\ud83d\udc48\ud83c\udffe", - "point_left_tone5": "\ud83d\udc48\ud83c\udfff", - "point_right_tone1": "\ud83d\udc49\ud83c\udffb", - "point_right_tone2": "\ud83d\udc49\ud83c\udffc", - "point_right_tone3": "\ud83d\udc49\ud83c\udffd", - "point_right_tone4": "\ud83d\udc49\ud83c\udffe", - "point_right_tone5": "\ud83d\udc49\ud83c\udfff", - "middle_finger_tone1": "\ud83d\udd95\ud83c\udffb", - "middle_finger_tone2": "\ud83d\udd95\ud83c\udffc", - "middle_finger_tone3": "\ud83d\udd95\ud83c\udffd", - "middle_finger_tone4": "\ud83d\udd95\ud83c\udffe", - "middle_finger_tone5": "\ud83d\udd95\ud83c\udfff", - "hand_splayed_tone1": "\ud83d\udd90\ud83c\udffb", - "hand_splayed_tone2": "\ud83d\udd90\ud83c\udffc", - "hand_splayed_tone3": "\ud83d\udd90\ud83c\udffd", - "hand_splayed_tone4": "\ud83d\udd90\ud83c\udffe", - "hand_splayed_tone5": "\ud83d\udd90\ud83c\udfff", - "metal_tone1": "\ud83e\udd18\ud83c\udffb", - "metal_tone2": "\ud83e\udd18\ud83c\udffc", - "metal_tone3": "\ud83e\udd18\ud83c\udffd", - "metal_tone4": "\ud83e\udd18\ud83c\udffe", - "metal_tone5": "\ud83e\udd18\ud83c\udfff", - "vulcan_tone1": "\ud83d\udd96\ud83c\udffb", - "vulcan_tone2": "\ud83d\udd96\ud83c\udffc", - "vulcan_tone3": "\ud83d\udd96\ud83c\udffd", - "vulcan_tone4": "\ud83d\udd96\ud83c\udffe", - "vulcan_tone5": "\ud83d\udd96\ud83c\udfff", - "writing_hand_tone1": "\u270d\ud83c\udffb", - "writing_hand_tone2": "\u270d\ud83c\udffc", - "writing_hand_tone3": "\u270d\ud83c\udffd", - "writing_hand_tone4": "\u270d\ud83c\udffe", - "writing_hand_tone5": "\u270d\ud83c\udfff", - "nail_care_tone1": "\ud83d\udc85\ud83c\udffb", - "nail_care_tone2": "\ud83d\udc85\ud83c\udffc", - "nail_care_tone3": "\ud83d\udc85\ud83c\udffd", - "nail_care_tone4": "\ud83d\udc85\ud83c\udffe", - "nail_care_tone5": "\ud83d\udc85\ud83c\udfff", - "ear_tone1": "\ud83d\udc42\ud83c\udffb", - "ear_tone2": "\ud83d\udc42\ud83c\udffc", - "ear_tone3": "\ud83d\udc42\ud83c\udffd", - "ear_tone4": "\ud83d\udc42\ud83c\udffe", - "ear_tone5": "\ud83d\udc42\ud83c\udfff", - "nose_tone1": "\ud83d\udc43\ud83c\udffb", - "nose_tone2": "\ud83d\udc43\ud83c\udffc", - "nose_tone3": "\ud83d\udc43\ud83c\udffd", - "nose_tone4": "\ud83d\udc43\ud83c\udffe", - "nose_tone5": "\ud83d\udc43\ud83c\udfff", - "baby_tone1": "\ud83d\udc76\ud83c\udffb", - "baby_tone2": "\ud83d\udc76\ud83c\udffc", - "baby_tone3": "\ud83d\udc76\ud83c\udffd", - "baby_tone4": "\ud83d\udc76\ud83c\udffe", - "baby_tone5": "\ud83d\udc76\ud83c\udfff", - "boy_tone1": "\ud83d\udc66\ud83c\udffb", - "boy_tone2": "\ud83d\udc66\ud83c\udffc", - "boy_tone3": "\ud83d\udc66\ud83c\udffd", - "boy_tone4": "\ud83d\udc66\ud83c\udffe", - "boy_tone5": "\ud83d\udc66\ud83c\udfff", - "girl_tone1": "\ud83d\udc67\ud83c\udffb", - "girl_tone2": "\ud83d\udc67\ud83c\udffc", - "girl_tone3": "\ud83d\udc67\ud83c\udffd", - "girl_tone4": "\ud83d\udc67\ud83c\udffe", - "girl_tone5": "\ud83d\udc67\ud83c\udfff", - "man_tone1": "\ud83d\udc68\ud83c\udffb", - "man_tone2": "\ud83d\udc68\ud83c\udffc", - "man_tone3": "\ud83d\udc68\ud83c\udffd", - "man_tone4": "\ud83d\udc68\ud83c\udffe", - "man_tone5": "\ud83d\udc68\ud83c\udfff", - "woman_tone1": "\ud83d\udc69\ud83c\udffb", - "woman_tone2": "\ud83d\udc69\ud83c\udffc", - "woman_tone3": "\ud83d\udc69\ud83c\udffd", - "woman_tone4": "\ud83d\udc69\ud83c\udffe", - "woman_tone5": "\ud83d\udc69\ud83c\udfff", - "person_with_blond_hair_tone1": "\ud83d\udc71\ud83c\udffb", - "person_with_blond_hair_tone2": "\ud83d\udc71\ud83c\udffc", - "person_with_blond_hair_tone3": "\ud83d\udc71\ud83c\udffd", - "person_with_blond_hair_tone4": "\ud83d\udc71\ud83c\udffe", - "person_with_blond_hair_tone5": "\ud83d\udc71\ud83c\udfff", - "older_man_tone1": "\ud83d\udc74\ud83c\udffb", - "older_man_tone2": "\ud83d\udc74\ud83c\udffc", - "older_man_tone3": "\ud83d\udc74\ud83c\udffd", - "older_man_tone4": "\ud83d\udc74\ud83c\udffe", - "older_man_tone5": "\ud83d\udc74\ud83c\udfff", - "older_woman_tone1": "\ud83d\udc75\ud83c\udffb", - "older_woman_tone2": "\ud83d\udc75\ud83c\udffc", - "older_woman_tone3": "\ud83d\udc75\ud83c\udffd", - "older_woman_tone4": "\ud83d\udc75\ud83c\udffe", - "older_woman_tone5": "\ud83d\udc75\ud83c\udfff", - "man_with_gua_pi_mao_tone1": "\ud83d\udc72\ud83c\udffb", - "man_with_gua_pi_mao_tone2": "\ud83d\udc72\ud83c\udffc", - "man_with_gua_pi_mao_tone3": "\ud83d\udc72\ud83c\udffd", - "man_with_gua_pi_mao_tone4": "\ud83d\udc72\ud83c\udffe", - "man_with_gua_pi_mao_tone5": "\ud83d\udc72\ud83c\udfff", - "man_with_turban_tone1": "\ud83d\udc73\ud83c\udffb", - "man_with_turban_tone2": "\ud83d\udc73\ud83c\udffc", - "man_with_turban_tone3": "\ud83d\udc73\ud83c\udffd", - "man_with_turban_tone4": "\ud83d\udc73\ud83c\udffe", - "man_with_turban_tone5": "\ud83d\udc73\ud83c\udfff", - "cop_tone1": "\ud83d\udc6e\ud83c\udffb", - "cop_tone2": "\ud83d\udc6e\ud83c\udffc", - "cop_tone3": "\ud83d\udc6e\ud83c\udffd", - "cop_tone4": "\ud83d\udc6e\ud83c\udffe", - "cop_tone5": "\ud83d\udc6e\ud83c\udfff", - "construction_worker_tone1": "\ud83d\udc77\ud83c\udffb", - "construction_worker_tone2": "\ud83d\udc77\ud83c\udffc", - "construction_worker_tone3": "\ud83d\udc77\ud83c\udffd", - "construction_worker_tone4": "\ud83d\udc77\ud83c\udffe", - "construction_worker_tone5": "\ud83d\udc77\ud83c\udfff", - "guardsman_tone1": "\ud83d\udc82\ud83c\udffb", - "guardsman_tone2": "\ud83d\udc82\ud83c\udffc", - "guardsman_tone3": "\ud83d\udc82\ud83c\udffd", - "guardsman_tone4": "\ud83d\udc82\ud83c\udffe", - "guardsman_tone5": "\ud83d\udc82\ud83c\udfff", - "santa_tone1": "\ud83c\udf85\ud83c\udffb", - "santa_tone2": "\ud83c\udf85\ud83c\udffc", - "santa_tone3": "\ud83c\udf85\ud83c\udffd", - "santa_tone4": "\ud83c\udf85\ud83c\udffe", - "santa_tone5": "\ud83c\udf85\ud83c\udfff", + "accept": "\ud83c\ude51", + "aerial_tramway": "\ud83d\udea1", + "airplane": "\u2708", + "airplane_arriving": "\ud83d\udeec", + "airplane_departure": "\ud83d\udeeb", + "airplane_small": "\ud83d\udee9", + "alarm_clock": "\u23f0", + "alembic": "\u2697", + "alien": "\ud83d\udc7d", + "ambulance": "\ud83d\ude91", + "amphora": "\ud83c\udffa", + "anchor": "\u2693", + "angel": "\ud83d\udc7c", "angel_tone1": "\ud83d\udc7c\ud83c\udffb", "angel_tone2": "\ud83d\udc7c\ud83c\udffc", "angel_tone3": "\ud83d\udc7c\ud83c\udffd", "angel_tone4": "\ud83d\udc7c\ud83c\udffe", "angel_tone5": "\ud83d\udc7c\ud83c\udfff", - "princess_tone1": "\ud83d\udc78\ud83c\udffb", - "princess_tone2": "\ud83d\udc78\ud83c\udffc", - "princess_tone3": "\ud83d\udc78\ud83c\udffd", - "princess_tone4": "\ud83d\udc78\ud83c\udffe", - "princess_tone5": "\ud83d\udc78\ud83c\udfff", - "bride_with_veil_tone1": "\ud83d\udc70\ud83c\udffb", - "bride_with_veil_tone2": "\ud83d\udc70\ud83c\udffc", - "bride_with_veil_tone3": "\ud83d\udc70\ud83c\udffd", - "bride_with_veil_tone4": "\ud83d\udc70\ud83c\udffe", - "bride_with_veil_tone5": "\ud83d\udc70\ud83c\udfff", - "walking_tone1": "\ud83d\udeb6\ud83c\udffb", - "walking_tone2": "\ud83d\udeb6\ud83c\udffc", - "walking_tone3": "\ud83d\udeb6\ud83c\udffd", - "walking_tone4": "\ud83d\udeb6\ud83c\udffe", - "walking_tone5": "\ud83d\udeb6\ud83c\udfff", - "runner_tone1": "\ud83c\udfc3\ud83c\udffb", - "runner_tone2": "\ud83c\udfc3\ud83c\udffc", - "runner_tone3": "\ud83c\udfc3\ud83c\udffd", - "runner_tone4": "\ud83c\udfc3\ud83c\udffe", - "runner_tone5": "\ud83c\udfc3\ud83c\udfff", - "dancer_tone1": "\ud83d\udc83\ud83c\udffb", - "dancer_tone2": "\ud83d\udc83\ud83c\udffc", - "dancer_tone3": "\ud83d\udc83\ud83c\udffd", - "dancer_tone4": "\ud83d\udc83\ud83c\udffe", - "dancer_tone5": "\ud83d\udc83\ud83c\udfff", - "bow_tone1": "\ud83d\ude47\ud83c\udffb", - "bow_tone2": "\ud83d\ude47\ud83c\udffc", - "bow_tone3": "\ud83d\ude47\ud83c\udffd", - "bow_tone4": "\ud83d\ude47\ud83c\udffe", - "bow_tone5": "\ud83d\ude47\ud83c\udfff", - "information_desk_person_tone1": "\ud83d\udc81\ud83c\udffb", - "information_desk_person_tone2": "\ud83d\udc81\ud83c\udffc", - "information_desk_person_tone3": "\ud83d\udc81\ud83c\udffd", - "information_desk_person_tone4": "\ud83d\udc81\ud83c\udffe", - "information_desk_person_tone5": "\ud83d\udc81\ud83c\udfff", - "no_good_tone1": "\ud83d\ude45\ud83c\udffb", - "no_good_tone2": "\ud83d\ude45\ud83c\udffc", - "no_good_tone3": "\ud83d\ude45\ud83c\udffd", - "no_good_tone4": "\ud83d\ude45\ud83c\udffe", - "no_good_tone5": "\ud83d\ude45\ud83c\udfff", - "ok_woman_tone1": "\ud83d\ude46\ud83c\udffb", - "ok_woman_tone2": "\ud83d\ude46\ud83c\udffc", - "ok_woman_tone3": "\ud83d\ude46\ud83c\udffd", - "ok_woman_tone4": "\ud83d\ude46\ud83c\udffe", - "ok_woman_tone5": "\ud83d\ude46\ud83c\udfff", - "raising_hand_tone1": "\ud83d\ude4b\ud83c\udffb", - "raising_hand_tone2": "\ud83d\ude4b\ud83c\udffc", - "raising_hand_tone3": "\ud83d\ude4b\ud83c\udffd", - "raising_hand_tone4": "\ud83d\ude4b\ud83c\udffe", - "raising_hand_tone5": "\ud83d\ude4b\ud83c\udfff", - "person_with_pouting_face_tone1": "\ud83d\ude4e\ud83c\udffb", - "person_with_pouting_face_tone2": "\ud83d\ude4e\ud83c\udffc", - "person_with_pouting_face_tone3": "\ud83d\ude4e\ud83c\udffd", - "person_with_pouting_face_tone4": "\ud83d\ude4e\ud83c\udffe", - "person_with_pouting_face_tone5": "\ud83d\ude4e\ud83c\udfff", - "person_frowning_tone1": "\ud83d\ude4d\ud83c\udffb", - "person_frowning_tone2": "\ud83d\ude4d\ud83c\udffc", - "person_frowning_tone3": "\ud83d\ude4d\ud83c\udffd", - "person_frowning_tone4": "\ud83d\ude4d\ud83c\udffe", - "person_frowning_tone5": "\ud83d\ude4d\ud83c\udfff", - "haircut_tone1": "\ud83d\udc87\ud83c\udffb", - "haircut_tone2": "\ud83d\udc87\ud83c\udffc", - "haircut_tone3": "\ud83d\udc87\ud83c\udffd", - "haircut_tone4": "\ud83d\udc87\ud83c\udffe", - "haircut_tone5": "\ud83d\udc87\ud83c\udfff", - "massage_tone1": "\ud83d\udc86\ud83c\udffb", - "massage_tone2": "\ud83d\udc86\ud83c\udffc", - "massage_tone3": "\ud83d\udc86\ud83c\udffd", - "massage_tone4": "\ud83d\udc86\ud83c\udffe", - "massage_tone5": "\ud83d\udc86\ud83c\udfff", - "rowboat_tone1": "\ud83d\udea3\ud83c\udffb", - "rowboat_tone2": "\ud83d\udea3\ud83c\udffc", - "rowboat_tone3": "\ud83d\udea3\ud83c\udffd", - "rowboat_tone4": "\ud83d\udea3\ud83c\udffe", - "rowboat_tone5": "\ud83d\udea3\ud83c\udfff", - "swimmer_tone1": "\ud83c\udfca\ud83c\udffb", - "swimmer_tone2": "\ud83c\udfca\ud83c\udffc", - "swimmer_tone3": "\ud83c\udfca\ud83c\udffd", - "swimmer_tone4": "\ud83c\udfca\ud83c\udffe", - "swimmer_tone5": "\ud83c\udfca\ud83c\udfff", - "surfer_tone1": "\ud83c\udfc4\ud83c\udffb", - "surfer_tone2": "\ud83c\udfc4\ud83c\udffc", - "surfer_tone3": "\ud83c\udfc4\ud83c\udffd", - "surfer_tone4": "\ud83c\udfc4\ud83c\udffe", - "surfer_tone5": "\ud83c\udfc4\ud83c\udfff", - "bath_tone1": "\ud83d\udec0\ud83c\udffb", - "bath_tone2": "\ud83d\udec0\ud83c\udffc", - "bath_tone3": "\ud83d\udec0\ud83c\udffd", - "bath_tone4": "\ud83d\udec0\ud83c\udffe", - "bath_tone5": "\ud83d\udec0\ud83c\udfff", + "anger": "\ud83d\udca2", + "anger_right": "\ud83d\uddef", + "angry": "\ud83d\ude20", + "anguished": "\ud83d\ude27", + "ant": "\ud83d\udc1c", + "apple": "\ud83c\udf4e", + "aquarius": "\u2652", + "aries": "\u2648", + "arrow_backward": "\u25c0", + "arrow_double_down": "\u23ec", + "arrow_double_up": "\u23eb", + "arrow_down": "\u2b07", + "arrow_down_small": "\ud83d\udd3d", + "arrow_forward": "\u25b6", + "arrow_heading_down": "\u2935", + "arrow_heading_up": "\u2934", + "arrow_left": "\u2b05", + "arrow_lower_left": "\u2199", + "arrow_lower_right": "\u2198", + "arrow_right": "\u27a1", + "arrow_right_hook": "\u21aa", + "arrow_up": "\u2b06", + "arrow_up_down": "\u2195", + "arrow_up_small": "\ud83d\udd3c", + "arrow_upper_left": "\u2196", + "arrow_upper_right": "\u2197", + "arrows_clockwise": "\ud83d\udd03", + "arrows_counterclockwise": "\ud83d\udd04", + "art": "\ud83c\udfa8", + "articulated_lorry": "\ud83d\ude9b", + "asterisk": "*\u20e3", + "astonished": "\ud83d\ude32", + "athletic_shoe": "\ud83d\udc5f", + "atm": "\ud83c\udfe7", + "atom": "\u269b", + "b": "\ud83c\udd71", + "baby": "\ud83d\udc76", + "baby_bottle": "\ud83c\udf7c", + "baby_chick": "\ud83d\udc24", + "baby_symbol": "\ud83d\udebc", + "baby_tone1": "\ud83d\udc76\ud83c\udffb", + "baby_tone2": "\ud83d\udc76\ud83c\udffc", + "baby_tone3": "\ud83d\udc76\ud83c\udffd", + "baby_tone4": "\ud83d\udc76\ud83c\udffe", + "baby_tone5": "\ud83d\udc76\ud83c\udfff", + "back": "\ud83d\udd19", + "badminton": "\ud83c\udff8", + "baggage_claim": "\ud83d\udec4", + "balloon": "\ud83c\udf88", + "ballot_box": "\ud83d\uddf3", + "ballot_box_with_check": "\u2611", + "bamboo": "\ud83c\udf8d", + "banana": "\ud83c\udf4c", + "bangbang": "\u203c", + "bank": "\ud83c\udfe6", + "bar_chart": "\ud83d\udcca", + "barber": "\ud83d\udc88", + "baseball": "\u26be", + "basketball": "\ud83c\udfc0", + "basketball_player": "\u26f9", "basketball_player_tone1": "\u26f9\ud83c\udffb", "basketball_player_tone2": "\u26f9\ud83c\udffc", "basketball_player_tone3": "\u26f9\ud83c\udffd", "basketball_player_tone4": "\u26f9\ud83c\udffe", "basketball_player_tone5": "\u26f9\ud83c\udfff", - "lifter_tone1": "\ud83c\udfcb\ud83c\udffb", - "lifter_tone2": "\ud83c\udfcb\ud83c\udffc", - "lifter_tone3": "\ud83c\udfcb\ud83c\udffd", - "lifter_tone4": "\ud83c\udfcb\ud83c\udffe", - "lifter_tone5": "\ud83c\udfcb\ud83c\udfff", + "bath": "\ud83d\udec0", + "bath_tone1": "\ud83d\udec0\ud83c\udffb", + "bath_tone2": "\ud83d\udec0\ud83c\udffc", + "bath_tone3": "\ud83d\udec0\ud83c\udffd", + "bath_tone4": "\ud83d\udec0\ud83c\udffe", + "bath_tone5": "\ud83d\udec0\ud83c\udfff", + "bathtub": "\ud83d\udec1", + "battery": "\ud83d\udd0b", + "beach": "\ud83c\udfd6", + "beach_umbrella": "\u26f1", + "bear": "\ud83d\udc3b", + "bed": "\ud83d\udecf", + "bee": "\ud83d\udc1d", + "beer": "\ud83c\udf7a", + "beers": "\ud83c\udf7b", + "beetle": "\ud83d\udc1e", + "beginner": "\ud83d\udd30", + "bell": "\ud83d\udd14", + "bellhop": "\ud83d\udece", + "bento": "\ud83c\udf71", + "bicyclist": "\ud83d\udeb4", "bicyclist_tone1": "\ud83d\udeb4\ud83c\udffb", "bicyclist_tone2": "\ud83d\udeb4\ud83c\udffc", "bicyclist_tone3": "\ud83d\udeb4\ud83c\udffd", "bicyclist_tone4": "\ud83d\udeb4\ud83c\udffe", "bicyclist_tone5": "\ud83d\udeb4\ud83c\udfff", - "mountain_bicyclist_tone1": "\ud83d\udeb5\ud83c\udffb", - "mountain_bicyclist_tone2": "\ud83d\udeb5\ud83c\udffc", - "mountain_bicyclist_tone3": "\ud83d\udeb5\ud83c\udffd", - "mountain_bicyclist_tone4": "\ud83d\udeb5\ud83c\udffe", - "mountain_bicyclist_tone5": "\ud83d\udeb5\ud83c\udfff", + "bike": "\ud83d\udeb2", + "bikini": "\ud83d\udc59", + "biohazard": "\u2623", + "bird": "\ud83d\udc26", + "birthday": "\ud83c\udf82", + "black_circle": "\u26ab", + "black_joker": "\ud83c\udccf", + "black_large_square": "\u2b1b", + "black_medium_small_square": "\u25fe", + "black_medium_square": "\u25fc", + "black_nib": "\u2712", + "black_small_square": "\u25aa", + "black_square_button": "\ud83d\udd32", + "blossom": "\ud83c\udf3c", + "blowfish": "\ud83d\udc21", + "blue_book": "\ud83d\udcd8", + "blue_car": "\ud83d\ude99", + "blue_heart": "\ud83d\udc99", + "blush": "\ud83d\ude0a", + "boar": "\ud83d\udc17", + "bomb": "\ud83d\udca3", + "book": "\ud83d\udcd6", + "bookmark": "\ud83d\udd16", + "bookmark_tabs": "\ud83d\udcd1", + "books": "\ud83d\udcda", + "boom": "\ud83d\udca5", + "boot": "\ud83d\udc62", + "bouquet": "\ud83d\udc90", + "bow": "\ud83d\ude47", + "bow_and_arrow": "\ud83c\udff9", + "bow_tone1": "\ud83d\ude47\ud83c\udffb", + "bow_tone2": "\ud83d\ude47\ud83c\udffc", + "bow_tone3": "\ud83d\ude47\ud83c\udffd", + "bow_tone4": "\ud83d\ude47\ud83c\udffe", + "bow_tone5": "\ud83d\ude47\ud83c\udfff", + "bowling": "\ud83c\udfb3", + "boy": "\ud83d\udc66", + "boy_tone1": "\ud83d\udc66\ud83c\udffb", + "boy_tone2": "\ud83d\udc66\ud83c\udffc", + "boy_tone3": "\ud83d\udc66\ud83c\udffd", + "boy_tone4": "\ud83d\udc66\ud83c\udffe", + "boy_tone5": "\ud83d\udc66\ud83c\udfff", + "bread": "\ud83c\udf5e", + "bride_with_veil": "\ud83d\udc70", + "bride_with_veil_tone1": "\ud83d\udc70\ud83c\udffb", + "bride_with_veil_tone2": "\ud83d\udc70\ud83c\udffc", + "bride_with_veil_tone3": "\ud83d\udc70\ud83c\udffd", + "bride_with_veil_tone4": "\ud83d\udc70\ud83c\udffe", + "bride_with_veil_tone5": "\ud83d\udc70\ud83c\udfff", + "bridge_at_night": "\ud83c\udf09", + "briefcase": "\ud83d\udcbc", + "broken_heart": "\ud83d\udc94", + "bug": "\ud83d\udc1b", + "bulb": "\ud83d\udca1", + "bullettrain_front": "\ud83d\ude85", + "bullettrain_side": "\ud83d\ude84", + "burrito": "\ud83c\udf2f", + "bus": "\ud83d\ude8c", + "busstop": "\ud83d\ude8f", + "bust_in_silhouette": "\ud83d\udc64", + "busts_in_silhouette": "\ud83d\udc65", + "cactus": "\ud83c\udf35", + "cake": "\ud83c\udf70", + "calendar": "\ud83d\udcc6", + "calendar_spiral": "\ud83d\uddd3", + "calling": "\ud83d\udcf2", + "camel": "\ud83d\udc2b", + "camera": "\ud83d\udcf7", + "camera_with_flash": "\ud83d\udcf8", + "camping": "\ud83c\udfd5", + "cancer": "\u264b", + "candle": "\ud83d\udd6f", + "candy": "\ud83c\udf6c", + "capital_abcd": "\ud83d\udd20", + "capricorn": "\u2651", + "card_box": "\ud83d\uddc3", + "card_index": "\ud83d\udcc7", + "carousel_horse": "\ud83c\udfa0", + "cat": "\ud83d\udc31", + "cat2": "\ud83d\udc08", + "cd": "\ud83d\udcbf", + "chains": "\u26d3", + "champagne": "\ud83c\udf7e", + "chart": "\ud83d\udcb9", + "chart_with_downwards_trend": "\ud83d\udcc9", + "chart_with_upwards_trend": "\ud83d\udcc8", + "checkered_flag": "\ud83c\udfc1", + "cheese": "\ud83e\uddc0", + "cherries": "\ud83c\udf52", + "cherry_blossom": "\ud83c\udf38", + "chestnut": "\ud83c\udf30", + "chicken": "\ud83d\udc14", + "children_crossing": "\ud83d\udeb8", + "chipmunk": "\ud83d\udc3f", + "chocolate_bar": "\ud83c\udf6b", + "christmas_tree": "\ud83c\udf84", + "church": "\u26ea", + "cinema": "\ud83c\udfa6", + "circus_tent": "\ud83c\udfaa", + "city_dusk": "\ud83c\udf06", + "city_sunset": "\ud83c\udf07", + "cityscape": "\ud83c\udfd9", + "cl": "\ud83c\udd91", + "clap": "\ud83d\udc4f", + "clap_tone1": "\ud83d\udc4f\ud83c\udffb", + "clap_tone2": "\ud83d\udc4f\ud83c\udffc", + "clap_tone3": "\ud83d\udc4f\ud83c\udffd", + "clap_tone4": "\ud83d\udc4f\ud83c\udffe", + "clap_tone5": "\ud83d\udc4f\ud83c\udfff", + "clapper": "\ud83c\udfac", + "classical_building": "\ud83c\udfdb", + "clipboard": "\ud83d\udccb", + "clock": "\ud83d\udd70", + "clock1": "\ud83d\udd50", + "clock10": "\ud83d\udd59", + "clock1030": "\ud83d\udd65", + "clock11": "\ud83d\udd5a", + "clock1130": "\ud83d\udd66", + "clock12": "\ud83d\udd5b", + "clock1230": "\ud83d\udd67", + "clock130": "\ud83d\udd5c", + "clock2": "\ud83d\udd51", + "clock230": "\ud83d\udd5d", + "clock3": "\ud83d\udd52", + "clock330": "\ud83d\udd5e", + "clock4": "\ud83d\udd53", + "clock430": "\ud83d\udd5f", + "clock5": "\ud83d\udd54", + "clock530": "\ud83d\udd60", + "clock6": "\ud83d\udd55", + "clock630": "\ud83d\udd61", + "clock7": "\ud83d\udd56", + "clock730": "\ud83d\udd62", + "clock8": "\ud83d\udd57", + "clock830": "\ud83d\udd63", + "clock9": "\ud83d\udd58", + "clock930": "\ud83d\udd64", + "closed_book": "\ud83d\udcd5", + "closed_lock_with_key": "\ud83d\udd10", + "closed_umbrella": "\ud83c\udf02", + "cloud": "\u2601", + "cloud_lightning": "\ud83c\udf29", + "cloud_rain": "\ud83c\udf27", + "cloud_snow": "\ud83c\udf28", + "cloud_tornado": "\ud83c\udf2a", + "clubs": "\u2663", + "cocktail": "\ud83c\udf78", + "coffee": "\u2615", + "coffin": "\u26b0", + "cold_sweat": "\ud83d\ude30", + "comet": "\u2604", + "compression": "\ud83d\udddc", + "computer": "\ud83d\udcbb", + "confetti_ball": "\ud83c\udf8a", + "confounded": "\ud83d\ude16", + "confused": "\ud83d\ude15", + "congratulations": "\u3297", + "construction": "\ud83d\udea7", + "construction_site": "\ud83c\udfd7", + "construction_worker": "\ud83d\udc77", + "construction_worker_tone1": "\ud83d\udc77\ud83c\udffb", + "construction_worker_tone2": "\ud83d\udc77\ud83c\udffc", + "construction_worker_tone3": "\ud83d\udc77\ud83c\udffd", + "construction_worker_tone4": "\ud83d\udc77\ud83c\udffe", + "construction_worker_tone5": "\ud83d\udc77\ud83c\udfff", + "control_knobs": "\ud83c\udf9b", + "convenience_store": "\ud83c\udfea", + "cookie": "\ud83c\udf6a", + "cool": "\ud83c\udd92", + "cop": "\ud83d\udc6e", + "cop_tone1": "\ud83d\udc6e\ud83c\udffb", + "cop_tone2": "\ud83d\udc6e\ud83c\udffc", + "cop_tone3": "\ud83d\udc6e\ud83c\udffd", + "cop_tone4": "\ud83d\udc6e\ud83c\udffe", + "cop_tone5": "\ud83d\udc6e\ud83c\udfff", + "copyright": "\u00a9", + "corn": "\ud83c\udf3d", + "couch": "\ud83d\udecb", + "couple": "\ud83d\udc6b", + "couple_mm": "\ud83d\udc68\u2764\ud83d\udc68", + "couple_with_heart": "\ud83d\udc91", + "couple_ww": "\ud83d\udc69\u2764\ud83d\udc69", + "couplekiss": "\ud83d\udc8f", + "cow": "\ud83d\udc2e", + "cow2": "\ud83d\udc04", + "crab": "\ud83e\udd80", + "crayon": "\ud83d\udd8d", + "credit_card": "\ud83d\udcb3", + "crescent_moon": "\ud83c\udf19", + "cricket": "\ud83c\udfcf", + "crocodile": "\ud83d\udc0a", + "cross": "\u271d", + "crossed_flags": "\ud83c\udf8c", + "crossed_swords": "\u2694", + "crown": "\ud83d\udc51", + "cruise_ship": "\ud83d\udef3", + "cry": "\ud83d\ude22", + "crying_cat_face": "\ud83d\ude3f", + "crystal_ball": "\ud83d\udd2e", + "cupid": "\ud83d\udc98", + "curly_loop": "\u27b0", + "currency_exchange": "\ud83d\udcb1", + "curry": "\ud83c\udf5b", + "custard": "\ud83c\udf6e", + "customs": "\ud83d\udec3", + "cyclone": "\ud83c\udf00", + "dagger": "\ud83d\udde1", + "dancer": "\ud83d\udc83", + "dancer_tone1": "\ud83d\udc83\ud83c\udffb", + "dancer_tone2": "\ud83d\udc83\ud83c\udffc", + "dancer_tone3": "\ud83d\udc83\ud83c\udffd", + "dancer_tone4": "\ud83d\udc83\ud83c\udffe", + "dancer_tone5": "\ud83d\udc83\ud83c\udfff", + "dancers": "\ud83d\udc6f", + "dango": "\ud83c\udf61", + "dark_sunglasses": "\ud83d\udd76", + "dart": "\ud83c\udfaf", + "dash": "\ud83d\udca8", + "date": "\ud83d\udcc5", + "deciduous_tree": "\ud83c\udf33", + "department_store": "\ud83c\udfec", + "desert": "\ud83c\udfdc", + "desktop": "\ud83d\udda5", + "diamond_shape_with_a_dot_inside": "\ud83d\udca0", + "diamonds": "\u2666", + "disappointed": "\ud83d\ude1e", + "disappointed_relieved": "\ud83d\ude25", + "dividers": "\ud83d\uddc2", + "dizzy": "\ud83d\udcab", + "dizzy_face": "\ud83d\ude35", + "do_not_litter": "\ud83d\udeaf", + "dog": "\ud83d\udc36", + "dog2": "\ud83d\udc15", + "dollar": "\ud83d\udcb5", + "dolls": "\ud83c\udf8e", + "dolphin": "\ud83d\udc2c", + "door": "\ud83d\udeaa", + "doughnut": "\ud83c\udf69", + "dove": "\ud83d\udd4a", + "dragon": "\ud83d\udc09", + "dragon_face": "\ud83d\udc32", + "dress": "\ud83d\udc57", + "dromedary_camel": "\ud83d\udc2a", + "droplet": "\ud83d\udca7", + "dvd": "\ud83d\udcc0", + "e-mail": "\ud83d\udce7", + "ear": "\ud83d\udc42", + "ear_of_rice": "\ud83c\udf3e", + "ear_tone1": "\ud83d\udc42\ud83c\udffb", + "ear_tone2": "\ud83d\udc42\ud83c\udffc", + "ear_tone3": "\ud83d\udc42\ud83c\udffd", + "ear_tone4": "\ud83d\udc42\ud83c\udffe", + "ear_tone5": "\ud83d\udc42\ud83c\udfff", + "earth_africa": "\ud83c\udf0d", + "earth_americas": "\ud83c\udf0e", + "earth_asia": "\ud83c\udf0f", + "egg": "\ud83c\udf73", + "eggplant": "\ud83c\udf46", + "eight": "8\u20e3", + "eight_pointed_black_star": "\u2734", + "eight_spoked_asterisk": "\u2733", + "electric_plug": "\ud83d\udd0c", + "elephant": "\ud83d\udc18", + "end": "\ud83d\udd1a", + "envelope": "\u2709", + "envelope_with_arrow": "\ud83d\udce9", + "euro": "\ud83d\udcb6", + "european_castle": "\ud83c\udff0", + "european_post_office": "\ud83c\udfe4", + "evergreen_tree": "\ud83c\udf32", + "exclamation": "\u2757", + "expressionless": "\ud83d\ude11", + "eye": "\ud83d\udc41", + "eye_in_speech_bubble": "\ud83d\udc41\ud83d\udde8", + "eyeglasses": "\ud83d\udc53", + "eyes": "\ud83d\udc40", + "factory": "\ud83c\udfed", + "fallen_leaf": "\ud83c\udf42", + "family": "\ud83d\udc6a", + "family_mmb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66", + "family_mmbb": "\ud83d\udc68\ud83d\udc68\ud83d\udc66\ud83d\udc66", + "family_mmg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67", + "family_mmgb": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc66", + "family_mmgg": "\ud83d\udc68\ud83d\udc68\ud83d\udc67\ud83d\udc67", + "family_mwbb": "\ud83d\udc68\ud83d\udc69\ud83d\udc66\ud83d\udc66", + "family_mwg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67", + "family_mwgb": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc66", + "family_mwgg": "\ud83d\udc68\ud83d\udc69\ud83d\udc67\ud83d\udc67", + "family_wwb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66", + "family_wwbb": "\ud83d\udc69\ud83d\udc69\ud83d\udc66\ud83d\udc66", + "family_wwg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67", + "family_wwgb": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc66", + "family_wwgg": "\ud83d\udc69\ud83d\udc69\ud83d\udc67\ud83d\udc67", + "fast_forward": "\u23e9", + "fax": "\ud83d\udce0", + "fearful": "\ud83d\ude28", + "feet": "\ud83d\udc3e", + "ferris_wheel": "\ud83c\udfa1", + "ferry": "\u26f4", + "field_hockey": "\ud83c\udfd1", + "file_cabinet": "\ud83d\uddc4", + "file_folder": "\ud83d\udcc1", + "film_frames": "\ud83c\udf9e", + "fire": "\ud83d\udd25", + "fire_engine": "\ud83d\ude92", + "fireworks": "\ud83c\udf86", + "first_quarter_moon": "\ud83c\udf13", + "first_quarter_moon_with_face": "\ud83c\udf1b", + "fish": "\ud83d\udc1f", + "fish_cake": "\ud83c\udf65", + "fishing_pole_and_fish": "\ud83c\udfa3", + "fist": "\u270a", + "fist_tone1": "\u270a\ud83c\udffb", + "fist_tone2": "\u270a\ud83c\udffc", + "fist_tone3": "\u270a\ud83c\udffd", + "fist_tone4": "\u270a\ud83c\udffe", + "fist_tone5": "\u270a\ud83c\udfff", + "five": "5\u20e3", + "flag_ac": "\ud83c\udde6\ud83c\udde8", + "flag_ad": "\ud83c\udde6\ud83c\udde9", + "flag_ae": "\ud83c\udde6\ud83c\uddea", + "flag_af": "\ud83c\udde6\ud83c\uddeb", + "flag_ag": "\ud83c\udde6\ud83c\uddec", + "flag_ai": "\ud83c\udde6\ud83c\uddee", + "flag_al": "\ud83c\udde6\ud83c\uddf1", + "flag_am": "\ud83c\udde6\ud83c\uddf2", + "flag_ao": "\ud83c\udde6\ud83c\uddf4", + "flag_aq": "\ud83c\udde6\ud83c\uddf6", + "flag_ar": "\ud83c\udde6\ud83c\uddf7", + "flag_as": "\ud83c\udde6\ud83c\uddf8", + "flag_at": "\ud83c\udde6\ud83c\uddf9", + "flag_au": "\ud83c\udde6\ud83c\uddfa", + "flag_aw": "\ud83c\udde6\ud83c\uddfc", + "flag_ax": "\ud83c\udde6\ud83c\uddfd", + "flag_az": "\ud83c\udde6\ud83c\uddff", + "flag_ba": "\ud83c\udde7\ud83c\udde6", + "flag_bb": "\ud83c\udde7\ud83c\udde7", + "flag_bd": "\ud83c\udde7\ud83c\udde9", + "flag_be": "\ud83c\udde7\ud83c\uddea", + "flag_bf": "\ud83c\udde7\ud83c\uddeb", + "flag_bg": "\ud83c\udde7\ud83c\uddec", + "flag_bh": "\ud83c\udde7\ud83c\udded", + "flag_bi": "\ud83c\udde7\ud83c\uddee", + "flag_bj": "\ud83c\udde7\ud83c\uddef", + "flag_bl": "\ud83c\udde7\ud83c\uddf1", + "flag_black": "\ud83c\udff4", + "flag_bm": "\ud83c\udde7\ud83c\uddf2", + "flag_bn": "\ud83c\udde7\ud83c\uddf3", + "flag_bo": "\ud83c\udde7\ud83c\uddf4", + "flag_bq": "\ud83c\udde7\ud83c\uddf6", + "flag_br": "\ud83c\udde7\ud83c\uddf7", + "flag_bs": "\ud83c\udde7\ud83c\uddf8", + "flag_bt": "\ud83c\udde7\ud83c\uddf9", + "flag_bv": "\ud83c\udde7\ud83c\uddfb", + "flag_bw": "\ud83c\udde7\ud83c\uddfc", + "flag_by": "\ud83c\udde7\ud83c\uddfe", + "flag_bz": "\ud83c\udde7\ud83c\uddff", + "flag_ca": "\ud83c\udde8\ud83c\udde6", + "flag_cc": "\ud83c\udde8\ud83c\udde8", + "flag_cd": "\ud83c\udde8\ud83c\udde9", + "flag_cf": "\ud83c\udde8\ud83c\uddeb", + "flag_cg": "\ud83c\udde8\ud83c\uddec", + "flag_ch": "\ud83c\udde8\ud83c\udded", + "flag_ci": "\ud83c\udde8\ud83c\uddee", + "flag_ck": "\ud83c\udde8\ud83c\uddf0", + "flag_cl": "\ud83c\udde8\ud83c\uddf1", + "flag_cm": "\ud83c\udde8\ud83c\uddf2", + "flag_cn": "\ud83c\udde8\ud83c\uddf3", + "flag_co": "\ud83c\udde8\ud83c\uddf4", + "flag_cp": "\ud83c\udde8\ud83c\uddf5", + "flag_cr": "\ud83c\udde8\ud83c\uddf7", + "flag_cu": "\ud83c\udde8\ud83c\uddfa", + "flag_cv": "\ud83c\udde8\ud83c\uddfb", + "flag_cw": "\ud83c\udde8\ud83c\uddfc", + "flag_cx": "\ud83c\udde8\ud83c\uddfd", + "flag_cy": "\ud83c\udde8\ud83c\uddfe", + "flag_cz": "\ud83c\udde8\ud83c\uddff", + "flag_de": "\ud83c\udde9\ud83c\uddea", + "flag_dg": "\ud83c\udde9\ud83c\uddec", + "flag_dj": "\ud83c\udde9\ud83c\uddef", + "flag_dk": "\ud83c\udde9\ud83c\uddf0", + "flag_dm": "\ud83c\udde9\ud83c\uddf2", + "flag_do": "\ud83c\udde9\ud83c\uddf4", + "flag_dz": "\ud83c\udde9\ud83c\uddff", + "flag_ea": "\ud83c\uddea\ud83c\udde6", + "flag_ec": "\ud83c\uddea\ud83c\udde8", + "flag_ee": "\ud83c\uddea\ud83c\uddea", + "flag_eg": "\ud83c\uddea\ud83c\uddec", + "flag_eh": "\ud83c\uddea\ud83c\udded", + "flag_er": "\ud83c\uddea\ud83c\uddf7", + "flag_es": "\ud83c\uddea\ud83c\uddf8", + "flag_et": "\ud83c\uddea\ud83c\uddf9", + "flag_eu": "\ud83c\uddea\ud83c\uddfa", + "flag_fi": "\ud83c\uddeb\ud83c\uddee", + "flag_fj": "\ud83c\uddeb\ud83c\uddef", + "flag_fk": "\ud83c\uddeb\ud83c\uddf0", + "flag_fm": "\ud83c\uddeb\ud83c\uddf2", + "flag_fo": "\ud83c\uddeb\ud83c\uddf4", + "flag_fr": "\ud83c\uddeb\ud83c\uddf7", + "flag_ga": "\ud83c\uddec\ud83c\udde6", + "flag_gb": "\ud83c\uddec\ud83c\udde7", + "flag_gd": "\ud83c\uddec\ud83c\udde9", + "flag_ge": "\ud83c\uddec\ud83c\uddea", + "flag_gf": "\ud83c\uddec\ud83c\uddeb", + "flag_gg": "\ud83c\uddec\ud83c\uddec", + "flag_gh": "\ud83c\uddec\ud83c\udded", + "flag_gi": "\ud83c\uddec\ud83c\uddee", + "flag_gl": "\ud83c\uddec\ud83c\uddf1", + "flag_gm": "\ud83c\uddec\ud83c\uddf2", + "flag_gn": "\ud83c\uddec\ud83c\uddf3", + "flag_gp": "\ud83c\uddec\ud83c\uddf5", + "flag_gq": "\ud83c\uddec\ud83c\uddf6", + "flag_gr": "\ud83c\uddec\ud83c\uddf7", + "flag_gs": "\ud83c\uddec\ud83c\uddf8", + "flag_gt": "\ud83c\uddec\ud83c\uddf9", + "flag_gu": "\ud83c\uddec\ud83c\uddfa", + "flag_gw": "\ud83c\uddec\ud83c\uddfc", + "flag_gy": "\ud83c\uddec\ud83c\uddfe", + "flag_hk": "\ud83c\udded\ud83c\uddf0", + "flag_hm": "\ud83c\udded\ud83c\uddf2", + "flag_hn": "\ud83c\udded\ud83c\uddf3", + "flag_hr": "\ud83c\udded\ud83c\uddf7", + "flag_ht": "\ud83c\udded\ud83c\uddf9", + "flag_hu": "\ud83c\udded\ud83c\uddfa", + "flag_ic": "\ud83c\uddee\ud83c\udde8", + "flag_id": "\ud83c\uddee\ud83c\udde9", + "flag_ie": "\ud83c\uddee\ud83c\uddea", + "flag_il": "\ud83c\uddee\ud83c\uddf1", + "flag_im": "\ud83c\uddee\ud83c\uddf2", + "flag_in": "\ud83c\uddee\ud83c\uddf3", + "flag_io": "\ud83c\uddee\ud83c\uddf4", + "flag_iq": "\ud83c\uddee\ud83c\uddf6", + "flag_ir": "\ud83c\uddee\ud83c\uddf7", + "flag_is": "\ud83c\uddee\ud83c\uddf8", + "flag_it": "\ud83c\uddee\ud83c\uddf9", + "flag_je": "\ud83c\uddef\ud83c\uddea", + "flag_jm": "\ud83c\uddef\ud83c\uddf2", + "flag_jo": "\ud83c\uddef\ud83c\uddf4", + "flag_jp": "\ud83c\uddef\ud83c\uddf5", + "flag_ke": "\ud83c\uddf0\ud83c\uddea", + "flag_kg": "\ud83c\uddf0\ud83c\uddec", + "flag_kh": "\ud83c\uddf0\ud83c\udded", + "flag_ki": "\ud83c\uddf0\ud83c\uddee", + "flag_km": "\ud83c\uddf0\ud83c\uddf2", + "flag_kn": "\ud83c\uddf0\ud83c\uddf3", + "flag_kp": "\ud83c\uddf0\ud83c\uddf5", + "flag_kr": "\ud83c\uddf0\ud83c\uddf7", + "flag_kw": "\ud83c\uddf0\ud83c\uddfc", + "flag_ky": "\ud83c\uddf0\ud83c\uddfe", + "flag_kz": "\ud83c\uddf0\ud83c\uddff", + "flag_la": "\ud83c\uddf1\ud83c\udde6", + "flag_lb": "\ud83c\uddf1\ud83c\udde7", + "flag_lc": "\ud83c\uddf1\ud83c\udde8", + "flag_li": "\ud83c\uddf1\ud83c\uddee", + "flag_lk": "\ud83c\uddf1\ud83c\uddf0", + "flag_lr": "\ud83c\uddf1\ud83c\uddf7", + "flag_ls": "\ud83c\uddf1\ud83c\uddf8", + "flag_lt": "\ud83c\uddf1\ud83c\uddf9", + "flag_lu": "\ud83c\uddf1\ud83c\uddfa", + "flag_lv": "\ud83c\uddf1\ud83c\uddfb", + "flag_ly": "\ud83c\uddf1\ud83c\uddfe", + "flag_ma": "\ud83c\uddf2\ud83c\udde6", + "flag_mc": "\ud83c\uddf2\ud83c\udde8", + "flag_md": "\ud83c\uddf2\ud83c\udde9", + "flag_me": "\ud83c\uddf2\ud83c\uddea", + "flag_mf": "\ud83c\uddf2\ud83c\uddeb", + "flag_mg": "\ud83c\uddf2\ud83c\uddec", + "flag_mh": "\ud83c\uddf2\ud83c\udded", + "flag_mk": "\ud83c\uddf2\ud83c\uddf0", + "flag_ml": "\ud83c\uddf2\ud83c\uddf1", + "flag_mm": "\ud83c\uddf2\ud83c\uddf2", + "flag_mn": "\ud83c\uddf2\ud83c\uddf3", + "flag_mo": "\ud83c\uddf2\ud83c\uddf4", + "flag_mp": "\ud83c\uddf2\ud83c\uddf5", + "flag_mq": "\ud83c\uddf2\ud83c\uddf6", + "flag_mr": "\ud83c\uddf2\ud83c\uddf7", + "flag_ms": "\ud83c\uddf2\ud83c\uddf8", + "flag_mt": "\ud83c\uddf2\ud83c\uddf9", + "flag_mu": "\ud83c\uddf2\ud83c\uddfa", + "flag_mv": "\ud83c\uddf2\ud83c\uddfb", + "flag_mw": "\ud83c\uddf2\ud83c\uddfc", + "flag_mx": "\ud83c\uddf2\ud83c\uddfd", + "flag_my": "\ud83c\uddf2\ud83c\uddfe", + "flag_mz": "\ud83c\uddf2\ud83c\uddff", + "flag_na": "\ud83c\uddf3\ud83c\udde6", + "flag_nc": "\ud83c\uddf3\ud83c\udde8", + "flag_ne": "\ud83c\uddf3\ud83c\uddea", + "flag_nf": "\ud83c\uddf3\ud83c\uddeb", + "flag_ng": "\ud83c\uddf3\ud83c\uddec", + "flag_ni": "\ud83c\uddf3\ud83c\uddee", + "flag_nl": "\ud83c\uddf3\ud83c\uddf1", + "flag_no": "\ud83c\uddf3\ud83c\uddf4", + "flag_np": "\ud83c\uddf3\ud83c\uddf5", + "flag_nr": "\ud83c\uddf3\ud83c\uddf7", + "flag_nu": "\ud83c\uddf3\ud83c\uddfa", + "flag_nz": "\ud83c\uddf3\ud83c\uddff", + "flag_om": "\ud83c\uddf4\ud83c\uddf2", + "flag_pa": "\ud83c\uddf5\ud83c\udde6", + "flag_pe": "\ud83c\uddf5\ud83c\uddea", + "flag_pf": "\ud83c\uddf5\ud83c\uddeb", + "flag_pg": "\ud83c\uddf5\ud83c\uddec", + "flag_ph": "\ud83c\uddf5\ud83c\udded", + "flag_pk": "\ud83c\uddf5\ud83c\uddf0", + "flag_pl": "\ud83c\uddf5\ud83c\uddf1", + "flag_pm": "\ud83c\uddf5\ud83c\uddf2", + "flag_pn": "\ud83c\uddf5\ud83c\uddf3", + "flag_pr": "\ud83c\uddf5\ud83c\uddf7", + "flag_ps": "\ud83c\uddf5\ud83c\uddf8", + "flag_pt": "\ud83c\uddf5\ud83c\uddf9", + "flag_pw": "\ud83c\uddf5\ud83c\uddfc", + "flag_py": "\ud83c\uddf5\ud83c\uddfe", + "flag_qa": "\ud83c\uddf6\ud83c\udde6", + "flag_re": "\ud83c\uddf7\ud83c\uddea", + "flag_ro": "\ud83c\uddf7\ud83c\uddf4", + "flag_rs": "\ud83c\uddf7\ud83c\uddf8", + "flag_ru": "\ud83c\uddf7\ud83c\uddfa", + "flag_rw": "\ud83c\uddf7\ud83c\uddfc", + "flag_sa": "\ud83c\uddf8\ud83c\udde6", + "flag_sb": "\ud83c\uddf8\ud83c\udde7", + "flag_sc": "\ud83c\uddf8\ud83c\udde8", + "flag_sd": "\ud83c\uddf8\ud83c\udde9", + "flag_se": "\ud83c\uddf8\ud83c\uddea", + "flag_sg": "\ud83c\uddf8\ud83c\uddec", + "flag_sh": "\ud83c\uddf8\ud83c\udded", + "flag_si": "\ud83c\uddf8\ud83c\uddee", + "flag_sj": "\ud83c\uddf8\ud83c\uddef", + "flag_sk": "\ud83c\uddf8\ud83c\uddf0", + "flag_sl": "\ud83c\uddf8\ud83c\uddf1", + "flag_sm": "\ud83c\uddf8\ud83c\uddf2", + "flag_sn": "\ud83c\uddf8\ud83c\uddf3", + "flag_so": "\ud83c\uddf8\ud83c\uddf4", + "flag_sr": "\ud83c\uddf8\ud83c\uddf7", + "flag_ss": "\ud83c\uddf8\ud83c\uddf8", + "flag_st": "\ud83c\uddf8\ud83c\uddf9", + "flag_sv": "\ud83c\uddf8\ud83c\uddfb", + "flag_sx": "\ud83c\uddf8\ud83c\uddfd", + "flag_sy": "\ud83c\uddf8\ud83c\uddfe", + "flag_sz": "\ud83c\uddf8\ud83c\uddff", + "flag_ta": "\ud83c\uddf9\ud83c\udde6", + "flag_tc": "\ud83c\uddf9\ud83c\udde8", + "flag_td": "\ud83c\uddf9\ud83c\udde9", + "flag_tf": "\ud83c\uddf9\ud83c\uddeb", + "flag_tg": "\ud83c\uddf9\ud83c\uddec", + "flag_th": "\ud83c\uddf9\ud83c\udded", + "flag_tj": "\ud83c\uddf9\ud83c\uddef", + "flag_tk": "\ud83c\uddf9\ud83c\uddf0", + "flag_tl": "\ud83c\uddf9\ud83c\uddf1", + "flag_tm": "\ud83c\uddf9\ud83c\uddf2", + "flag_tn": "\ud83c\uddf9\ud83c\uddf3", + "flag_to": "\ud83c\uddf9\ud83c\uddf4", + "flag_tr": "\ud83c\uddf9\ud83c\uddf7", + "flag_tt": "\ud83c\uddf9\ud83c\uddf9", + "flag_tv": "\ud83c\uddf9\ud83c\uddfb", + "flag_tw": "\ud83c\uddf9\ud83c\uddfc", + "flag_tz": "\ud83c\uddf9\ud83c\uddff", + "flag_ua": "\ud83c\uddfa\ud83c\udde6", + "flag_ug": "\ud83c\uddfa\ud83c\uddec", + "flag_um": "\ud83c\uddfa\ud83c\uddf2", + "flag_us": "\ud83c\uddfa\ud83c\uddf8", + "flag_uy": "\ud83c\uddfa\ud83c\uddfe", + "flag_uz": "\ud83c\uddfa\ud83c\uddff", + "flag_va": "\ud83c\uddfb\ud83c\udde6", + "flag_vc": "\ud83c\uddfb\ud83c\udde8", + "flag_ve": "\ud83c\uddfb\ud83c\uddea", + "flag_vg": "\ud83c\uddfb\ud83c\uddec", + "flag_vi": "\ud83c\uddfb\ud83c\uddee", + "flag_vn": "\ud83c\uddfb\ud83c\uddf3", + "flag_vu": "\ud83c\uddfb\ud83c\uddfa", + "flag_wf": "\ud83c\uddfc\ud83c\uddeb", + "flag_white": "\ud83c\udff3", + "flag_ws": "\ud83c\uddfc\ud83c\uddf8", + "flag_xk": "\ud83c\uddfd\ud83c\uddf0", + "flag_ye": "\ud83c\uddfe\ud83c\uddea", + "flag_yt": "\ud83c\uddfe\ud83c\uddf9", + "flag_za": "\ud83c\uddff\ud83c\udde6", + "flag_zm": "\ud83c\uddff\ud83c\uddf2", + "flag_zw": "\ud83c\uddff\ud83c\uddfc", + "flags": "\ud83c\udf8f", + "flashlight": "\ud83d\udd26", + "fleur-de-lis": "\u269c", + "floppy_disk": "\ud83d\udcbe", + "flower_playing_cards": "\ud83c\udfb4", + "flushed": "\ud83d\ude33", + "fog": "\ud83c\udf2b", + "foggy": "\ud83c\udf01", + "football": "\ud83c\udfc8", + "footprints": "\ud83d\udc63", + "fork_and_knife": "\ud83c\udf74", + "fork_knife_plate": "\ud83c\udf7d", + "fountain": "\u26f2", + "four": "4\u20e3", + "four_leaf_clover": "\ud83c\udf40", + "frame_photo": "\ud83d\uddbc", + "free": "\ud83c\udd93", + "fried_shrimp": "\ud83c\udf64", + "fries": "\ud83c\udf5f", + "frog": "\ud83d\udc38", + "frowning": "\ud83d\ude26", + "frowning2": "\u2639", + "fuelpump": "\u26fd", + "full_moon": "\ud83c\udf15", + "full_moon_with_face": "\ud83c\udf1d", + "game_die": "\ud83c\udfb2", + "gear": "\u2699", + "gem": "\ud83d\udc8e", + "gemini": "\u264a", + "ghost": "\ud83d\udc7b", + "gift": "\ud83c\udf81", + "gift_heart": "\ud83d\udc9d", + "girl": "\ud83d\udc67", + "girl_tone1": "\ud83d\udc67\ud83c\udffb", + "girl_tone2": "\ud83d\udc67\ud83c\udffc", + "girl_tone3": "\ud83d\udc67\ud83c\udffd", + "girl_tone4": "\ud83d\udc67\ud83c\udffe", + "girl_tone5": "\ud83d\udc67\ud83c\udfff", + "globe_with_meridians": "\ud83c\udf10", + "goat": "\ud83d\udc10", + "golf": "\u26f3", + "golfer": "\ud83c\udfcc", + "grapes": "\ud83c\udf47", + "green_apple": "\ud83c\udf4f", + "green_book": "\ud83d\udcd7", + "green_heart": "\ud83d\udc9a", + "grey_exclamation": "\u2755", + "grey_question": "\u2754", + "grimacing": "\ud83d\ude2c", + "grin": "\ud83d\ude01", + "grinning": "\ud83d\ude00", + "guardsman": "\ud83d\udc82", + "guardsman_tone1": "\ud83d\udc82\ud83c\udffb", + "guardsman_tone2": "\ud83d\udc82\ud83c\udffc", + "guardsman_tone3": "\ud83d\udc82\ud83c\udffd", + "guardsman_tone4": "\ud83d\udc82\ud83c\udffe", + "guardsman_tone5": "\ud83d\udc82\ud83c\udfff", + "guitar": "\ud83c\udfb8", + "gun": "\ud83d\udd2b", + "haircut": "\ud83d\udc87", + "haircut_tone1": "\ud83d\udc87\ud83c\udffb", + "haircut_tone2": "\ud83d\udc87\ud83c\udffc", + "haircut_tone3": "\ud83d\udc87\ud83c\udffd", + "haircut_tone4": "\ud83d\udc87\ud83c\udffe", + "haircut_tone5": "\ud83d\udc87\ud83c\udfff", + "hamburger": "\ud83c\udf54", + "hammer": "\ud83d\udd28", + "hammer_pick": "\u2692", + "hamster": "\ud83d\udc39", + "hand_splayed": "\ud83d\udd90", + "hand_splayed_tone1": "\ud83d\udd90\ud83c\udffb", + "hand_splayed_tone2": "\ud83d\udd90\ud83c\udffc", + "hand_splayed_tone3": "\ud83d\udd90\ud83c\udffd", + "hand_splayed_tone4": "\ud83d\udd90\ud83c\udffe", + "hand_splayed_tone5": "\ud83d\udd90\ud83c\udfff", + "handbag": "\ud83d\udc5c", + "hash": "#\u20e3", + "hatched_chick": "\ud83d\udc25", + "hatching_chick": "\ud83d\udc23", + "head_bandage": "\ud83e\udd15", + "headphones": "\ud83c\udfa7", + "hear_no_evil": "\ud83d\ude49", + "heart": "\u2764", + "heart_decoration": "\ud83d\udc9f", + "heart_exclamation": "\u2763", + "heart_eyes": "\ud83d\ude0d", + "heart_eyes_cat": "\ud83d\ude3b", + "heartbeat": "\ud83d\udc93", + "heartpulse": "\ud83d\udc97", + "hearts": "\u2665", + "heavy_check_mark": "\u2714", + "heavy_division_sign": "\u2797", + "heavy_dollar_sign": "\ud83d\udcb2", + "heavy_minus_sign": "\u2796", + "heavy_multiplication_x": "\u2716", + "heavy_plus_sign": "\u2795", + "helicopter": "\ud83d\ude81", + "helmet_with_cross": "\u26d1", + "herb": "\ud83c\udf3f", + "hibiscus": "\ud83c\udf3a", + "high_brightness": "\ud83d\udd06", + "high_heel": "\ud83d\udc60", + "hockey": "\ud83c\udfd2", + "hole": "\ud83d\udd73", + "homes": "\ud83c\udfd8", + "honey_pot": "\ud83c\udf6f", + "horse": "\ud83d\udc34", + "horse_racing": "\ud83c\udfc7", "horse_racing_tone1": "\ud83c\udfc7\ud83c\udffb", "horse_racing_tone2": "\ud83c\udfc7\ud83c\udffc", "horse_racing_tone3": "\ud83c\udfc7\ud83c\udffd", "horse_racing_tone4": "\ud83c\udfc7\ud83c\udffe", "horse_racing_tone5": "\ud83c\udfc7\ud83c\udfff", + "hospital": "\ud83c\udfe5", + "hot_pepper": "\ud83c\udf36", + "hotdog": "\ud83c\udf2d", + "hotel": "\ud83c\udfe8", + "hotsprings": "\u2668", + "hourglass": "\u231b", + "hourglass_flowing_sand": "\u23f3", + "house": "\ud83c\udfe0", + "house_abandoned": "\ud83c\udfda", + "house_with_garden": "\ud83c\udfe1", + "hugging": "\ud83e\udd17", + "hushed": "\ud83d\ude2f", + "ice_cream": "\ud83c\udf68", + "ice_skate": "\u26f8", + "icecream": "\ud83c\udf66", + "id": "\ud83c\udd94", + "ideograph_advantage": "\ud83c\ude50", + "imp": "\ud83d\udc7f", + "inbox_tray": "\ud83d\udce5", + "incoming_envelope": "\ud83d\udce8", + "information_desk_person": "\ud83d\udc81", + "information_desk_person_tone1": "\ud83d\udc81\ud83c\udffb", + "information_desk_person_tone2": "\ud83d\udc81\ud83c\udffc", + "information_desk_person_tone3": "\ud83d\udc81\ud83c\udffd", + "information_desk_person_tone4": "\ud83d\udc81\ud83c\udffe", + "information_desk_person_tone5": "\ud83d\udc81\ud83c\udfff", + "information_source": "\u2139", + "innocent": "\ud83d\ude07", + "interrobang": "\u2049", + "iphone": "\ud83d\udcf1", + "island": "\ud83c\udfdd", + "izakaya_lantern": "\ud83c\udfee", + "jack_o_lantern": "\ud83c\udf83", + "japan": "\ud83d\uddfe", + "japanese_castle": "\ud83c\udfef", + "japanese_goblin": "\ud83d\udc7a", + "japanese_ogre": "\ud83d\udc79", + "jeans": "\ud83d\udc56", + "joy": "\ud83d\ude02", + "joy_cat": "\ud83d\ude39", + "joystick": "\ud83d\udd79", + "kaaba": "\ud83d\udd4b", + "key": "\ud83d\udd11", + "key2": "\ud83d\udddd", + "keyboard": "\u2328", + "kimono": "\ud83d\udc58", + "kiss": "\ud83d\udc8b", + "kiss_mm": "\ud83d\udc68\u2764\ud83d\udc8b\ud83d\udc68", + "kiss_ww": "\ud83d\udc69\u2764\ud83d\udc8b\ud83d\udc69", + "kissing": "\ud83d\ude17", + "kissing_cat": "\ud83d\ude3d", + "kissing_closed_eyes": "\ud83d\ude1a", + "kissing_heart": "\ud83d\ude18", + "kissing_smiling_eyes": "\ud83d\ude19", + "knife": "\ud83d\udd2a", + "koala": "\ud83d\udc28", + "koko": "\ud83c\ude01", + "label": "\ud83c\udff7", + "large_blue_circle": "\ud83d\udd35", + "large_blue_diamond": "\ud83d\udd37", + "large_orange_diamond": "\ud83d\udd36", + "last_quarter_moon": "\ud83c\udf17", + "last_quarter_moon_with_face": "\ud83c\udf1c", + "laughing": "\ud83d\ude06", + "leaves": "\ud83c\udf43", + "ledger": "\ud83d\udcd2", + "left_luggage": "\ud83d\udec5", + "left_right_arrow": "\u2194", + "leftwards_arrow_with_hook": "\u21a9", + "lemon": "\ud83c\udf4b", + "leo": "\u264c", + "leopard": "\ud83d\udc06", + "level_slider": "\ud83c\udf9a", + "levitate": "\ud83d\udd74", + "libra": "\u264e", + "lifter": "\ud83c\udfcb", + "lifter_tone1": "\ud83c\udfcb\ud83c\udffb", + "lifter_tone2": "\ud83c\udfcb\ud83c\udffc", + "lifter_tone3": "\ud83c\udfcb\ud83c\udffd", + "lifter_tone4": "\ud83c\udfcb\ud83c\udffe", + "lifter_tone5": "\ud83c\udfcb\ud83c\udfff", + "light_rail": "\ud83d\ude88", + "link": "\ud83d\udd17", + "lion_face": "\ud83e\udd81", + "lips": "\ud83d\udc44", + "lipstick": "\ud83d\udc84", + "lock": "\ud83d\udd12", + "lock_with_ink_pen": "\ud83d\udd0f", + "lollipop": "\ud83c\udf6d", + "loop": "\u27bf", + "loud_sound": "\ud83d\udd0a", + "loudspeaker": "\ud83d\udce2", + "love_hotel": "\ud83c\udfe9", + "love_letter": "\ud83d\udc8c", + "low_brightness": "\ud83d\udd05", + "m": "\u24c2", + "mag": "\ud83d\udd0d", + "mag_right": "\ud83d\udd0e", + "mahjong": "\ud83c\udc04", + "mailbox": "\ud83d\udceb", + "mailbox_closed": "\ud83d\udcea", + "mailbox_with_mail": "\ud83d\udcec", + "mailbox_with_no_mail": "\ud83d\udced", + "man": "\ud83d\udc68", + "man_tone1": "\ud83d\udc68\ud83c\udffb", + "man_tone2": "\ud83d\udc68\ud83c\udffc", + "man_tone3": "\ud83d\udc68\ud83c\udffd", + "man_tone4": "\ud83d\udc68\ud83c\udffe", + "man_tone5": "\ud83d\udc68\ud83c\udfff", + "man_with_gua_pi_mao": "\ud83d\udc72", + "man_with_gua_pi_mao_tone1": "\ud83d\udc72\ud83c\udffb", + "man_with_gua_pi_mao_tone2": "\ud83d\udc72\ud83c\udffc", + "man_with_gua_pi_mao_tone3": "\ud83d\udc72\ud83c\udffd", + "man_with_gua_pi_mao_tone4": "\ud83d\udc72\ud83c\udffe", + "man_with_gua_pi_mao_tone5": "\ud83d\udc72\ud83c\udfff", + "man_with_turban": "\ud83d\udc73", + "man_with_turban_tone1": "\ud83d\udc73\ud83c\udffb", + "man_with_turban_tone2": "\ud83d\udc73\ud83c\udffc", + "man_with_turban_tone3": "\ud83d\udc73\ud83c\udffd", + "man_with_turban_tone4": "\ud83d\udc73\ud83c\udffe", + "man_with_turban_tone5": "\ud83d\udc73\ud83c\udfff", + "mans_shoe": "\ud83d\udc5e", + "map": "\ud83d\uddfa", + "maple_leaf": "\ud83c\udf41", + "mask": "\ud83d\ude37", + "massage": "\ud83d\udc86", + "massage_tone1": "\ud83d\udc86\ud83c\udffb", + "massage_tone2": "\ud83d\udc86\ud83c\udffc", + "massage_tone3": "\ud83d\udc86\ud83c\udffd", + "massage_tone4": "\ud83d\udc86\ud83c\udffe", + "massage_tone5": "\ud83d\udc86\ud83c\udfff", + "meat_on_bone": "\ud83c\udf56", + "medal": "\ud83c\udfc5", + "mega": "\ud83d\udce3", + "melon": "\ud83c\udf48", + "menorah": "\ud83d\udd4e", + "mens": "\ud83d\udeb9", + "metal": "\ud83e\udd18", + "metal_tone1": "\ud83e\udd18\ud83c\udffb", + "metal_tone2": "\ud83e\udd18\ud83c\udffc", + "metal_tone3": "\ud83e\udd18\ud83c\udffd", + "metal_tone4": "\ud83e\udd18\ud83c\udffe", + "metal_tone5": "\ud83e\udd18\ud83c\udfff", + "metro": "\ud83d\ude87", + "microphone": "\ud83c\udfa4", + "microphone2": "\ud83c\udf99", + "microscope": "\ud83d\udd2c", + "middle_finger": "\ud83d\udd95", + "middle_finger_tone1": "\ud83d\udd95\ud83c\udffb", + "middle_finger_tone2": "\ud83d\udd95\ud83c\udffc", + "middle_finger_tone3": "\ud83d\udd95\ud83c\udffd", + "middle_finger_tone4": "\ud83d\udd95\ud83c\udffe", + "middle_finger_tone5": "\ud83d\udd95\ud83c\udfff", + "military_medal": "\ud83c\udf96", + "milky_way": "\ud83c\udf0c", + "minibus": "\ud83d\ude90", + "minidisc": "\ud83d\udcbd", + "mobile_phone_off": "\ud83d\udcf4", + "money_mouth": "\ud83e\udd11", + "money_with_wings": "\ud83d\udcb8", + "moneybag": "\ud83d\udcb0", + "monkey": "\ud83d\udc12", + "monkey_face": "\ud83d\udc35", + "monorail": "\ud83d\ude9d", + "mortar_board": "\ud83c\udf93", + "mosque": "\ud83d\udd4c", + "motorboat": "\ud83d\udee5", + "motorcycle": "\ud83c\udfcd", + "motorway": "\ud83d\udee3", + "mount_fuji": "\ud83d\uddfb", + "mountain": "\u26f0", + "mountain_bicyclist": "\ud83d\udeb5", + "mountain_bicyclist_tone1": "\ud83d\udeb5\ud83c\udffb", + "mountain_bicyclist_tone2": "\ud83d\udeb5\ud83c\udffc", + "mountain_bicyclist_tone3": "\ud83d\udeb5\ud83c\udffd", + "mountain_bicyclist_tone4": "\ud83d\udeb5\ud83c\udffe", + "mountain_bicyclist_tone5": "\ud83d\udeb5\ud83c\udfff", + "mountain_cableway": "\ud83d\udea0", + "mountain_railway": "\ud83d\ude9e", + "mountain_snow": "\ud83c\udfd4", + "mouse": "\ud83d\udc2d", + "mouse2": "\ud83d\udc01", + "mouse_three_button": "\ud83d\uddb1", + "movie_camera": "\ud83c\udfa5", + "moyai": "\ud83d\uddff", + "muscle": "\ud83d\udcaa", + "muscle_tone1": "\ud83d\udcaa\ud83c\udffb", + "muscle_tone2": "\ud83d\udcaa\ud83c\udffc", + "muscle_tone3": "\ud83d\udcaa\ud83c\udffd", + "muscle_tone4": "\ud83d\udcaa\ud83c\udffe", + "muscle_tone5": "\ud83d\udcaa\ud83c\udfff", + "mushroom": "\ud83c\udf44", + "musical_keyboard": "\ud83c\udfb9", + "musical_note": "\ud83c\udfb5", + "musical_score": "\ud83c\udfbc", + "mute": "\ud83d\udd07", + "nail_care": "\ud83d\udc85", + "nail_care_tone1": "\ud83d\udc85\ud83c\udffb", + "nail_care_tone2": "\ud83d\udc85\ud83c\udffc", + "nail_care_tone3": "\ud83d\udc85\ud83c\udffd", + "nail_care_tone4": "\ud83d\udc85\ud83c\udffe", + "nail_care_tone5": "\ud83d\udc85\ud83c\udfff", + "name_badge": "\ud83d\udcdb", + "necktie": "\ud83d\udc54", + "negative_squared_cross_mark": "\u274e", + "nerd": "\ud83e\udd13", + "neutral_face": "\ud83d\ude10", + "new": "\ud83c\udd95", + "new_moon": "\ud83c\udf11", + "new_moon_with_face": "\ud83c\udf1a", + "newspaper": "\ud83d\udcf0", + "newspaper2": "\ud83d\uddde", + "ng": "\ud83c\udd96", + "night_with_stars": "\ud83c\udf03", + "nine": "9\u20e3", + "no_bell": "\ud83d\udd15", + "no_bicycles": "\ud83d\udeb3", + "no_entry": "\u26d4", + "no_entry_sign": "\ud83d\udeab", + "no_good": "\ud83d\ude45", + "no_good_tone1": "\ud83d\ude45\ud83c\udffb", + "no_good_tone2": "\ud83d\ude45\ud83c\udffc", + "no_good_tone3": "\ud83d\ude45\ud83c\udffd", + "no_good_tone4": "\ud83d\ude45\ud83c\udffe", + "no_good_tone5": "\ud83d\ude45\ud83c\udfff", + "no_mobile_phones": "\ud83d\udcf5", + "no_mouth": "\ud83d\ude36", + "no_pedestrians": "\ud83d\udeb7", + "no_smoking": "\ud83d\udead", + "non-potable_water": "\ud83d\udeb1", + "nose": "\ud83d\udc43", + "nose_tone1": "\ud83d\udc43\ud83c\udffb", + "nose_tone2": "\ud83d\udc43\ud83c\udffc", + "nose_tone3": "\ud83d\udc43\ud83c\udffd", + "nose_tone4": "\ud83d\udc43\ud83c\udffe", + "nose_tone5": "\ud83d\udc43\ud83c\udfff", + "notebook": "\ud83d\udcd3", + "notebook_with_decorative_cover": "\ud83d\udcd4", + "notepad_spiral": "\ud83d\uddd2", + "notes": "\ud83c\udfb6", + "nut_and_bolt": "\ud83d\udd29", + "o": "\u2b55", + "o2": "\ud83c\udd7e", + "ocean": "\ud83c\udf0a", + "octopus": "\ud83d\udc19", + "oden": "\ud83c\udf62", + "office": "\ud83c\udfe2", + "oil": "\ud83d\udee2", + "ok": "\ud83c\udd97", + "ok_hand": "\ud83d\udc4c", + "ok_hand_tone1": "\ud83d\udc4c\ud83c\udffb", + "ok_hand_tone2": "\ud83d\udc4c\ud83c\udffc", + "ok_hand_tone3": "\ud83d\udc4c\ud83c\udffd", + "ok_hand_tone4": "\ud83d\udc4c\ud83c\udffe", + "ok_hand_tone5": "\ud83d\udc4c\ud83c\udfff", + "ok_woman": "\ud83d\ude46", + "ok_woman_tone1": "\ud83d\ude46\ud83c\udffb", + "ok_woman_tone2": "\ud83d\ude46\ud83c\udffc", + "ok_woman_tone3": "\ud83d\ude46\ud83c\udffd", + "ok_woman_tone4": "\ud83d\ude46\ud83c\udffe", + "ok_woman_tone5": "\ud83d\ude46\ud83c\udfff", + "older_man": "\ud83d\udc74", + "older_man_tone1": "\ud83d\udc74\ud83c\udffb", + "older_man_tone2": "\ud83d\udc74\ud83c\udffc", + "older_man_tone3": "\ud83d\udc74\ud83c\udffd", + "older_man_tone4": "\ud83d\udc74\ud83c\udffe", + "older_man_tone5": "\ud83d\udc74\ud83c\udfff", + "older_woman": "\ud83d\udc75", + "older_woman_tone1": "\ud83d\udc75\ud83c\udffb", + "older_woman_tone2": "\ud83d\udc75\ud83c\udffc", + "older_woman_tone3": "\ud83d\udc75\ud83c\udffd", + "older_woman_tone4": "\ud83d\udc75\ud83c\udffe", + "older_woman_tone5": "\ud83d\udc75\ud83c\udfff", + "om_symbol": "\ud83d\udd49", + "on": "\ud83d\udd1b", + "oncoming_automobile": "\ud83d\ude98", + "oncoming_bus": "\ud83d\ude8d", + "oncoming_police_car": "\ud83d\ude94", + "oncoming_taxi": "\ud83d\ude96", + "one": "1\u20e3", + "open_file_folder": "\ud83d\udcc2", + "open_hands": "\ud83d\udc50", + "open_hands_tone1": "\ud83d\udc50\ud83c\udffb", + "open_hands_tone2": "\ud83d\udc50\ud83c\udffc", + "open_hands_tone3": "\ud83d\udc50\ud83c\udffd", + "open_hands_tone4": "\ud83d\udc50\ud83c\udffe", + "open_hands_tone5": "\ud83d\udc50\ud83c\udfff", + "open_mouth": "\ud83d\ude2e", + "ophiuchus": "\u26ce", + "orange_book": "\ud83d\udcd9", + "orthodox_cross": "\u2626", + "outbox_tray": "\ud83d\udce4", + "ox": "\ud83d\udc02", + "package": "\ud83d\udce6", + "page_facing_up": "\ud83d\udcc4", + "page_with_curl": "\ud83d\udcc3", + "pager": "\ud83d\udcdf", + "paintbrush": "\ud83d\udd8c", + "palm_tree": "\ud83c\udf34", + "panda_face": "\ud83d\udc3c", + "paperclip": "\ud83d\udcce", + "paperclips": "\ud83d\udd87", + "park": "\ud83c\udfde", + "parking": "\ud83c\udd7f", + "part_alternation_mark": "\u303d", + "partly_sunny": "\u26c5", + "passport_control": "\ud83d\udec2", + "pause_button": "\u23f8", + "peace": "\u262e", + "peach": "\ud83c\udf51", + "pear": "\ud83c\udf50", + "pen_ballpoint": "\ud83d\udd8a", + "pen_fountain": "\ud83d\udd8b", + "pencil": "\ud83d\udcdd", + "pencil2": "\u270f", + "penguin": "\ud83d\udc27", + "pensive": "\ud83d\ude14", + "performing_arts": "\ud83c\udfad", + "persevere": "\ud83d\ude23", + "person_frowning": "\ud83d\ude4d", + "person_frowning_tone1": "\ud83d\ude4d\ud83c\udffb", + "person_frowning_tone2": "\ud83d\ude4d\ud83c\udffc", + "person_frowning_tone3": "\ud83d\ude4d\ud83c\udffd", + "person_frowning_tone4": "\ud83d\ude4d\ud83c\udffe", + "person_frowning_tone5": "\ud83d\ude4d\ud83c\udfff", + "person_with_blond_hair": "\ud83d\udc71", + "person_with_blond_hair_tone1": "\ud83d\udc71\ud83c\udffb", + "person_with_blond_hair_tone2": "\ud83d\udc71\ud83c\udffc", + "person_with_blond_hair_tone3": "\ud83d\udc71\ud83c\udffd", + "person_with_blond_hair_tone4": "\ud83d\udc71\ud83c\udffe", + "person_with_blond_hair_tone5": "\ud83d\udc71\ud83c\udfff", + "person_with_pouting_face": "\ud83d\ude4e", + "person_with_pouting_face_tone1": "\ud83d\ude4e\ud83c\udffb", + "person_with_pouting_face_tone2": "\ud83d\ude4e\ud83c\udffc", + "person_with_pouting_face_tone3": "\ud83d\ude4e\ud83c\udffd", + "person_with_pouting_face_tone4": "\ud83d\ude4e\ud83c\udffe", + "person_with_pouting_face_tone5": "\ud83d\ude4e\ud83c\udfff", + "pick": "\u26cf", + "pig": "\ud83d\udc37", + "pig2": "\ud83d\udc16", + "pig_nose": "\ud83d\udc3d", + "pill": "\ud83d\udc8a", + "pineapple": "\ud83c\udf4d", + "ping_pong": "\ud83c\udfd3", + "pisces": "\u2653", + "pizza": "\ud83c\udf55", + "place_of_worship": "\ud83d\uded0", + "play_pause": "\u23ef", + "point_down": "\ud83d\udc47", + "point_down_tone1": "\ud83d\udc47\ud83c\udffb", + "point_down_tone2": "\ud83d\udc47\ud83c\udffc", + "point_down_tone3": "\ud83d\udc47\ud83c\udffd", + "point_down_tone4": "\ud83d\udc47\ud83c\udffe", + "point_down_tone5": "\ud83d\udc47\ud83c\udfff", + "point_left": "\ud83d\udc48", + "point_left_tone1": "\ud83d\udc48\ud83c\udffb", + "point_left_tone2": "\ud83d\udc48\ud83c\udffc", + "point_left_tone3": "\ud83d\udc48\ud83c\udffd", + "point_left_tone4": "\ud83d\udc48\ud83c\udffe", + "point_left_tone5": "\ud83d\udc48\ud83c\udfff", + "point_right": "\ud83d\udc49", + "point_right_tone1": "\ud83d\udc49\ud83c\udffb", + "point_right_tone2": "\ud83d\udc49\ud83c\udffc", + "point_right_tone3": "\ud83d\udc49\ud83c\udffd", + "point_right_tone4": "\ud83d\udc49\ud83c\udffe", + "point_right_tone5": "\ud83d\udc49\ud83c\udfff", + "point_up": "\u261d", + "point_up_2": "\ud83d\udc46", + "point_up_2_tone1": "\ud83d\udc46\ud83c\udffb", + "point_up_2_tone2": "\ud83d\udc46\ud83c\udffc", + "point_up_2_tone3": "\ud83d\udc46\ud83c\udffd", + "point_up_2_tone4": "\ud83d\udc46\ud83c\udffe", + "point_up_2_tone5": "\ud83d\udc46\ud83c\udfff", + "point_up_tone1": "\u261d\ud83c\udffb", + "point_up_tone2": "\u261d\ud83c\udffc", + "point_up_tone3": "\u261d\ud83c\udffd", + "point_up_tone4": "\u261d\ud83c\udffe", + "point_up_tone5": "\u261d\ud83c\udfff", + "police_car": "\ud83d\ude93", + "poodle": "\ud83d\udc29", + "poop": "\ud83d\udca9", + "popcorn": "\ud83c\udf7f", + "post_office": "\ud83c\udfe3", + "postal_horn": "\ud83d\udcef", + "postbox": "\ud83d\udcee", + "potable_water": "\ud83d\udeb0", + "pouch": "\ud83d\udc5d", + "poultry_leg": "\ud83c\udf57", + "pound": "\ud83d\udcb7", + "pouting_cat": "\ud83d\ude3e", + "pray": "\ud83d\ude4f", + "pray_tone1": "\ud83d\ude4f\ud83c\udffb", + "pray_tone2": "\ud83d\ude4f\ud83c\udffc", + "pray_tone3": "\ud83d\ude4f\ud83c\udffd", + "pray_tone4": "\ud83d\ude4f\ud83c\udffe", + "pray_tone5": "\ud83d\ude4f\ud83c\udfff", + "prayer_beads": "\ud83d\udcff", + "princess": "\ud83d\udc78", + "princess_tone1": "\ud83d\udc78\ud83c\udffb", + "princess_tone2": "\ud83d\udc78\ud83c\udffc", + "princess_tone3": "\ud83d\udc78\ud83c\udffd", + "princess_tone4": "\ud83d\udc78\ud83c\udffe", + "princess_tone5": "\ud83d\udc78\ud83c\udfff", + "printer": "\ud83d\udda8", + "projector": "\ud83d\udcfd", + "punch": "\ud83d\udc4a", + "punch_tone1": "\ud83d\udc4a\ud83c\udffb", + "punch_tone2": "\ud83d\udc4a\ud83c\udffc", + "punch_tone3": "\ud83d\udc4a\ud83c\udffd", + "punch_tone4": "\ud83d\udc4a\ud83c\udffe", + "punch_tone5": "\ud83d\udc4a\ud83c\udfff", + "purple_heart": "\ud83d\udc9c", + "purse": "\ud83d\udc5b", + "pushpin": "\ud83d\udccc", + "put_litter_in_its_place": "\ud83d\udeae", + "question": "\u2753", + "rabbit": "\ud83d\udc30", + "rabbit2": "\ud83d\udc07", + "race_car": "\ud83c\udfce", + "racehorse": "\ud83d\udc0e", + "radio": "\ud83d\udcfb", + "radio_button": "\ud83d\udd18", + "radioactive": "\u2622", + "rage": "\ud83d\ude21", + "railway_car": "\ud83d\ude83", + "railway_track": "\ud83d\udee4", + "rainbow": "\ud83c\udf08", + "raised_hand": "\u270b", + "raised_hand_tone1": "\u270b\ud83c\udffb", + "raised_hand_tone2": "\u270b\ud83c\udffc", + "raised_hand_tone3": "\u270b\ud83c\udffd", + "raised_hand_tone4": "\u270b\ud83c\udffe", + "raised_hand_tone5": "\u270b\ud83c\udfff", + "raised_hands": "\ud83d\ude4c", + "raised_hands_tone1": "\ud83d\ude4c\ud83c\udffb", + "raised_hands_tone2": "\ud83d\ude4c\ud83c\udffc", + "raised_hands_tone3": "\ud83d\ude4c\ud83c\udffd", + "raised_hands_tone4": "\ud83d\ude4c\ud83c\udffe", + "raised_hands_tone5": "\ud83d\ude4c\ud83c\udfff", + "raising_hand": "\ud83d\ude4b", + "raising_hand_tone1": "\ud83d\ude4b\ud83c\udffb", + "raising_hand_tone2": "\ud83d\ude4b\ud83c\udffc", + "raising_hand_tone3": "\ud83d\ude4b\ud83c\udffd", + "raising_hand_tone4": "\ud83d\ude4b\ud83c\udffe", + "raising_hand_tone5": "\ud83d\ude4b\ud83c\udfff", + "ram": "\ud83d\udc0f", + "ramen": "\ud83c\udf5c", + "rat": "\ud83d\udc00", + "record_button": "\u23fa", + "recycle": "\u267b", + "red_car": "\ud83d\ude97", + "red_circle": "\ud83d\udd34", + "registered": "\u00ae", + "relaxed": "\u263a", + "relieved": "\ud83d\ude0c", + "reminder_ribbon": "\ud83c\udf97", + "repeat": "\ud83d\udd01", + "repeat_one": "\ud83d\udd02", + "restroom": "\ud83d\udebb", + "revolving_hearts": "\ud83d\udc9e", + "rewind": "\u23ea", + "ribbon": "\ud83c\udf80", + "rice": "\ud83c\udf5a", + "rice_ball": "\ud83c\udf59", + "rice_cracker": "\ud83c\udf58", + "rice_scene": "\ud83c\udf91", + "ring": "\ud83d\udc8d", + "robot": "\ud83e\udd16", + "rocket": "\ud83d\ude80", + "roller_coaster": "\ud83c\udfa2", + "rolling_eyes": "\ud83d\ude44", + "rooster": "\ud83d\udc13", + "rose": "\ud83c\udf39", + "rosette": "\ud83c\udff5", + "rotating_light": "\ud83d\udea8", + "round_pushpin": "\ud83d\udccd", + "rowboat": "\ud83d\udea3", + "rowboat_tone1": "\ud83d\udea3\ud83c\udffb", + "rowboat_tone2": "\ud83d\udea3\ud83c\udffc", + "rowboat_tone3": "\ud83d\udea3\ud83c\udffd", + "rowboat_tone4": "\ud83d\udea3\ud83c\udffe", + "rowboat_tone5": "\ud83d\udea3\ud83c\udfff", + "rugby_football": "\ud83c\udfc9", + "runner": "\ud83c\udfc3", + "runner_tone1": "\ud83c\udfc3\ud83c\udffb", + "runner_tone2": "\ud83c\udfc3\ud83c\udffc", + "runner_tone3": "\ud83c\udfc3\ud83c\udffd", + "runner_tone4": "\ud83c\udfc3\ud83c\udffe", + "runner_tone5": "\ud83c\udfc3\ud83c\udfff", + "running_shirt_with_sash": "\ud83c\udfbd", + "sa": "\ud83c\ude02", + "sagittarius": "\u2650", + "sailboat": "\u26f5", + "sake": "\ud83c\udf76", + "sandal": "\ud83d\udc61", + "santa": "\ud83c\udf85", + "santa_tone1": "\ud83c\udf85\ud83c\udffb", + "santa_tone2": "\ud83c\udf85\ud83c\udffc", + "santa_tone3": "\ud83c\udf85\ud83c\udffd", + "santa_tone4": "\ud83c\udf85\ud83c\udffe", + "santa_tone5": "\ud83c\udf85\ud83c\udfff", + "satellite": "\ud83d\udce1", + "satellite_orbital": "\ud83d\udef0", + "saxophone": "\ud83c\udfb7", + "scales": "\u2696", + "school": "\ud83c\udfeb", + "school_satchel": "\ud83c\udf92", + "scissors": "\u2702", + "scorpion": "\ud83e\udd82", + "scorpius": "\u264f", + "scream": "\ud83d\ude31", + "scream_cat": "\ud83d\ude40", + "scroll": "\ud83d\udcdc", + "seat": "\ud83d\udcba", + "secret": "\u3299", + "see_no_evil": "\ud83d\ude48", + "seedling": "\ud83c\udf31", + "seven": "7\u20e3", + "shamrock": "\u2618", + "shaved_ice": "\ud83c\udf67", + "sheep": "\ud83d\udc11", + "shell": "\ud83d\udc1a", + "shield": "\ud83d\udee1", + "shinto_shrine": "\u26e9", + "ship": "\ud83d\udea2", + "shirt": "\ud83d\udc55", + "shopping_bags": "\ud83d\udecd", + "shower": "\ud83d\udebf", + "signal_strength": "\ud83d\udcf6", + "six": "6\u20e3", + "six_pointed_star": "\ud83d\udd2f", + "ski": "\ud83c\udfbf", + "skier": "\u26f7", + "skull": "\ud83d\udc80", + "skull_crossbones": "\u2620", + "sleeping": "\ud83d\ude34", + "sleeping_accommodation": "\ud83d\udecc", + "sleepy": "\ud83d\ude2a", + "slight_frown": "\ud83d\ude41", + "slight_smile": "\ud83d\ude42", + "slot_machine": "\ud83c\udfb0", + "small_blue_diamond": "\ud83d\udd39", + "small_orange_diamond": "\ud83d\udd38", + "small_red_triangle": "\ud83d\udd3a", + "small_red_triangle_down": "\ud83d\udd3b", + "smile": "\ud83d\ude04", + "smile_cat": "\ud83d\ude38", + "smiley": "\ud83d\ude03", + "smiley_cat": "\ud83d\ude3a", + "smiling_imp": "\ud83d\ude08", + "smirk": "\ud83d\ude0f", + "smirk_cat": "\ud83d\ude3c", + "smoking": "\ud83d\udeac", + "snail": "\ud83d\udc0c", + "snake": "\ud83d\udc0d", + "snowboarder": "\ud83c\udfc2", + "snowflake": "\u2744", + "snowman": "\u26c4", + "snowman2": "\u2603", + "sob": "\ud83d\ude2d", + "soccer": "\u26bd", + "soon": "\ud83d\udd1c", + "sos": "\ud83c\udd98", + "sound": "\ud83d\udd09", + "space_invader": "\ud83d\udc7e", + "spades": "\u2660", + "spaghetti": "\ud83c\udf5d", + "sparkle": "\u2747", + "sparkler": "\ud83c\udf87", + "sparkles": "\u2728", + "sparkling_heart": "\ud83d\udc96", + "speak_no_evil": "\ud83d\ude4a", + "speaker": "\ud83d\udd08", + "speaking_head": "\ud83d\udde3", + "speech_balloon": "\ud83d\udcac", + "speedboat": "\ud83d\udea4", + "spider": "\ud83d\udd77", + "spider_web": "\ud83d\udd78", + "spy": "\ud83d\udd75", "spy_tone1": "\ud83d\udd75\ud83c\udffb", "spy_tone2": "\ud83d\udd75\ud83c\udffc", "spy_tone3": "\ud83d\udd75\ud83c\udffd", "spy_tone4": "\ud83d\udd75\ud83c\udffe", "spy_tone5": "\ud83d\udd75\ud83c\udfff", + "stadium": "\ud83c\udfdf", + "star": "\u2b50", + "star2": "\ud83c\udf1f", + "star_and_crescent": "\u262a", + "star_of_david": "\u2721", + "stars": "\ud83c\udf20", + "station": "\ud83d\ude89", + "statue_of_liberty": "\ud83d\uddfd", + "steam_locomotive": "\ud83d\ude82", + "stew": "\ud83c\udf72", + "stop_button": "\u23f9", + "stopwatch": "\u23f1", + "straight_ruler": "\ud83d\udccf", + "strawberry": "\ud83c\udf53", + "stuck_out_tongue": "\ud83d\ude1b", + "stuck_out_tongue_closed_eyes": "\ud83d\ude1d", + "stuck_out_tongue_winking_eye": "\ud83d\ude1c", + "sun_with_face": "\ud83c\udf1e", + "sunflower": "\ud83c\udf3b", + "sunglasses": "\ud83d\ude0e", + "sunny": "\u2600", + "sunrise": "\ud83c\udf05", + "sunrise_over_mountains": "\ud83c\udf04", + "surfer": "\ud83c\udfc4", + "surfer_tone1": "\ud83c\udfc4\ud83c\udffb", + "surfer_tone2": "\ud83c\udfc4\ud83c\udffc", + "surfer_tone3": "\ud83c\udfc4\ud83c\udffd", + "surfer_tone4": "\ud83c\udfc4\ud83c\udffe", + "surfer_tone5": "\ud83c\udfc4\ud83c\udfff", + "sushi": "\ud83c\udf63", + "suspension_railway": "\ud83d\ude9f", + "sweat": "\ud83d\ude13", + "sweat_drops": "\ud83d\udca6", + "sweat_smile": "\ud83d\ude05", + "sweet_potato": "\ud83c\udf60", + "swimmer": "\ud83c\udfca", + "swimmer_tone1": "\ud83c\udfca\ud83c\udffb", + "swimmer_tone2": "\ud83c\udfca\ud83c\udffc", + "swimmer_tone3": "\ud83c\udfca\ud83c\udffd", + "swimmer_tone4": "\ud83c\udfca\ud83c\udffe", + "swimmer_tone5": "\ud83c\udfca\ud83c\udfff", + "symbols": "\ud83d\udd23", + "synagogue": "\ud83d\udd4d", + "syringe": "\ud83d\udc89", + "taco": "\ud83c\udf2e", + "tada": "\ud83c\udf89", + "tanabata_tree": "\ud83c\udf8b", + "tangerine": "\ud83c\udf4a", + "taurus": "\u2649", + "taxi": "\ud83d\ude95", + "tea": "\ud83c\udf75", + "telephone": "\u260e", + "telephone_receiver": "\ud83d\udcde", + "telescope": "\ud83d\udd2d", + "ten": "\ud83d\udd1f", + "tennis": "\ud83c\udfbe", + "tent": "\u26fa", + "thermometer": "\ud83c\udf21", + "thermometer_face": "\ud83e\udd12", + "thinking": "\ud83e\udd14", + "thought_balloon": "\ud83d\udcad", + "three": "3\u20e3", + "thumbsdown": "\ud83d\udc4e", + "thumbsdown_tone1": "\ud83d\udc4e\ud83c\udffb", + "thumbsdown_tone2": "\ud83d\udc4e\ud83c\udffc", + "thumbsdown_tone3": "\ud83d\udc4e\ud83c\udffd", + "thumbsdown_tone4": "\ud83d\udc4e\ud83c\udffe", + "thumbsdown_tone5": "\ud83d\udc4e\ud83c\udfff", + "thumbsup": "\ud83d\udc4d", + "thumbsup_tone1": "\ud83d\udc4d\ud83c\udffb", + "thumbsup_tone2": "\ud83d\udc4d\ud83c\udffc", + "thumbsup_tone3": "\ud83d\udc4d\ud83c\udffd", + "thumbsup_tone4": "\ud83d\udc4d\ud83c\udffe", + "thumbsup_tone5": "\ud83d\udc4d\ud83c\udfff", + "thunder_cloud_rain": "\u26c8", + "ticket": "\ud83c\udfab", + "tickets": "\ud83c\udf9f", + "tiger": "\ud83d\udc2f", + "tiger2": "\ud83d\udc05", + "timer": "\u23f2", + "tired_face": "\ud83d\ude2b", + "tm": "\u2122", + "toilet": "\ud83d\udebd", + "tokyo_tower": "\ud83d\uddfc", + "tomato": "\ud83c\udf45", "tone1": "\ud83c\udffb", "tone2": "\ud83c\udffc", "tone3": "\ud83c\udffd", "tone4": "\ud83c\udffe", - "tone5": "\ud83c\udfff" + "tone5": "\ud83c\udfff", + "tongue": "\ud83d\udc45", + "tools": "\ud83d\udee0", + "top": "\ud83d\udd1d", + "tophat": "\ud83c\udfa9", + "track_next": "\u23ed", + "track_previous": "\u23ee", + "trackball": "\ud83d\uddb2", + "tractor": "\ud83d\ude9c", + "traffic_light": "\ud83d\udea5", + "train": "\ud83d\ude8b", + "train2": "\ud83d\ude86", + "tram": "\ud83d\ude8a", + "triangular_flag_on_post": "\ud83d\udea9", + "triangular_ruler": "\ud83d\udcd0", + "trident": "\ud83d\udd31", + "triumph": "\ud83d\ude24", + "trolleybus": "\ud83d\ude8e", + "trophy": "\ud83c\udfc6", + "tropical_drink": "\ud83c\udf79", + "tropical_fish": "\ud83d\udc20", + "truck": "\ud83d\ude9a", + "trumpet": "\ud83c\udfba", + "tulip": "\ud83c\udf37", + "turkey": "\ud83e\udd83", + "turtle": "\ud83d\udc22", + "tv": "\ud83d\udcfa", + "twisted_rightwards_arrows": "\ud83d\udd00", + "two": "2\u20e3", + "two_hearts": "\ud83d\udc95", + "two_men_holding_hands": "\ud83d\udc6c", + "two_women_holding_hands": "\ud83d\udc6d", + "u5272": "\ud83c\ude39", + "u5408": "\ud83c\ude34", + "u55b6": "\ud83c\ude3a", + "u6307": "\ud83c\ude2f", + "u6708": "\ud83c\ude37", + "u6709": "\ud83c\ude36", + "u6e80": "\ud83c\ude35", + "u7121": "\ud83c\ude1a", + "u7533": "\ud83c\ude38", + "u7981": "\ud83c\ude32", + "u7a7a": "\ud83c\ude33", + "umbrella": "\u2614", + "umbrella2": "\u2602", + "unamused": "\ud83d\ude12", + "underage": "\ud83d\udd1e", + "unicorn": "\ud83e\udd84", + "unlock": "\ud83d\udd13", + "up": "\ud83c\udd99", + "upside_down": "\ud83d\ude43", + "urn": "\u26b1", + "v": "\u270c", + "v_tone1": "\u270c\ud83c\udffb", + "v_tone2": "\u270c\ud83c\udffc", + "v_tone3": "\u270c\ud83c\udffd", + "v_tone4": "\u270c\ud83c\udffe", + "v_tone5": "\u270c\ud83c\udfff", + "vertical_traffic_light": "\ud83d\udea6", + "vhs": "\ud83d\udcfc", + "vibration_mode": "\ud83d\udcf3", + "video_camera": "\ud83d\udcf9", + "video_game": "\ud83c\udfae", + "violin": "\ud83c\udfbb", + "virgo": "\u264d", + "volcano": "\ud83c\udf0b", + "volleyball": "\ud83c\udfd0", + "vs": "\ud83c\udd9a", + "vulcan": "\ud83d\udd96", + "vulcan_tone1": "\ud83d\udd96\ud83c\udffb", + "vulcan_tone2": "\ud83d\udd96\ud83c\udffc", + "vulcan_tone3": "\ud83d\udd96\ud83c\udffd", + "vulcan_tone4": "\ud83d\udd96\ud83c\udffe", + "vulcan_tone5": "\ud83d\udd96\ud83c\udfff", + "walking": "\ud83d\udeb6", + "walking_tone1": "\ud83d\udeb6\ud83c\udffb", + "walking_tone2": "\ud83d\udeb6\ud83c\udffc", + "walking_tone3": "\ud83d\udeb6\ud83c\udffd", + "walking_tone4": "\ud83d\udeb6\ud83c\udffe", + "walking_tone5": "\ud83d\udeb6\ud83c\udfff", + "waning_crescent_moon": "\ud83c\udf18", + "waning_gibbous_moon": "\ud83c\udf16", + "warning": "\u26a0", + "wastebasket": "\ud83d\uddd1", + "watch": "\u231a", + "water_buffalo": "\ud83d\udc03", + "watermelon": "\ud83c\udf49", + "wave": "\ud83d\udc4b", + "wave_tone1": "\ud83d\udc4b\ud83c\udffb", + "wave_tone2": "\ud83d\udc4b\ud83c\udffc", + "wave_tone3": "\ud83d\udc4b\ud83c\udffd", + "wave_tone4": "\ud83d\udc4b\ud83c\udffe", + "wave_tone5": "\ud83d\udc4b\ud83c\udfff", + "wavy_dash": "\u3030", + "waxing_crescent_moon": "\ud83c\udf12", + "waxing_gibbous_moon": "\ud83c\udf14", + "wc": "\ud83d\udebe", + "weary": "\ud83d\ude29", + "wedding": "\ud83d\udc92", + "whale": "\ud83d\udc33", + "whale2": "\ud83d\udc0b", + "wheel_of_dharma": "\u2638", + "wheelchair": "\u267f", + "white_check_mark": "\u2705", + "white_circle": "\u26aa", + "white_flower": "\ud83d\udcae", + "white_large_square": "\u2b1c", + "white_medium_small_square": "\u25fd", + "white_medium_square": "\u25fb", + "white_small_square": "\u25ab", + "white_square_button": "\ud83d\udd33", + "white_sun_cloud": "\ud83c\udf25", + "white_sun_rain_cloud": "\ud83c\udf26", + "white_sun_small_cloud": "\ud83c\udf24", + "wind_blowing_face": "\ud83c\udf2c", + "wind_chime": "\ud83c\udf90", + "wine_glass": "\ud83c\udf77", + "wink": "\ud83d\ude09", + "wolf": "\ud83d\udc3a", + "woman": "\ud83d\udc69", + "woman_tone1": "\ud83d\udc69\ud83c\udffb", + "woman_tone2": "\ud83d\udc69\ud83c\udffc", + "woman_tone3": "\ud83d\udc69\ud83c\udffd", + "woman_tone4": "\ud83d\udc69\ud83c\udffe", + "woman_tone5": "\ud83d\udc69\ud83c\udfff", + "womans_clothes": "\ud83d\udc5a", + "womans_hat": "\ud83d\udc52", + "womens": "\ud83d\udeba", + "worried": "\ud83d\ude1f", + "wrench": "\ud83d\udd27", + "writing_hand": "\u270d", + "writing_hand_tone1": "\u270d\ud83c\udffb", + "writing_hand_tone2": "\u270d\ud83c\udffc", + "writing_hand_tone3": "\u270d\ud83c\udffd", + "writing_hand_tone4": "\u270d\ud83c\udffe", + "writing_hand_tone5": "\u270d\ud83c\udfff", + "x": "\u274c", + "yellow_heart": "\ud83d\udc9b", + "yen": "\ud83d\udcb4", + "yin_yang": "\u262f", + "yum": "\ud83d\ude0b", + "zap": "\u26a1", + "zero": "0\u20e3", + "zipper_mouth": "\ud83e\udd10", + "zzz": "\ud83d\udca4", + "100": "\ud83d\udcaf", + "1234": "\ud83d\udd22" } diff --git a/scripts/celerity/generate_emoji.php b/scripts/celerity/generate_emoji.php index 821fafa0ef..d533752932 100755 --- a/scripts/celerity/generate_emoji.php +++ b/scripts/celerity/generate_emoji.php @@ -21,8 +21,9 @@ $args->parse( )); $root = dirname(phutil_get_library_root('phabricator')); -$path = $root.'/webroot/rsrc/externals/emojione/emoji_strategy.json'; -$export_path = $root.'/webroot/rsrc/emoji/manifest.json'; +// move this to an argument? +$path = $root.'/emoji_strategy.json'; +$export_path = $root.'/resources/emoji/manifest.json'; if (Filesystem::pathExists($path)) { $json = Filesystem::readFile($path); @@ -39,6 +40,7 @@ if (Filesystem::pathExists($path)) { $data[$shortname] = $hex; } + ksort($data); $json = new PhutilJSON(); $data = $json->encodeFormatted($data); Filesystem::writeFile($export_path, $data); diff --git a/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php index e740af11cb..a0f0bda981 100644 --- a/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php +++ b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php @@ -32,9 +32,11 @@ final class PhabricatorEmojiDatasource extends PhabricatorTypeaheadDatasource { $results = array(); foreach ($emojis as $shortname => $emoji) { $display_name = $emoji.' '.$shortname; + $name = str_replace('_', ' ', $shortname); $result = id(new PhabricatorTypeaheadResult()) ->setPHID($shortname) - ->setName($display_name) + ->setName($name) + ->setDisplayname($display_name) ->setAutocomplete($emoji); $results[$shortname] = $result; From ed38642afc43f54ba912482030929ffcd06b1781 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 24 Jan 2017 08:57:41 -0800 Subject: [PATCH 09/21] Give Audit an informational "This commit now requires (something)..." transaction Summary: Ref T2393. This adds a state-change transaction hint to Audit, like we have in Differential. This is partly for consistency and partly to make it more clear what should happen next. Test Plan: {F2477848} Reviewers: chad Reviewed By: chad Maniphest Tasks: T2393 Differential Revision: https://secure.phabricator.com/D17243 --- src/__phutil_library_map__.php | 2 + .../audit/editor/PhabricatorAuditEditor.php | 27 ++++++++ .../storage/PhabricatorAuditTransaction.php | 18 +++++ .../DiffusionCommitStateTransaction.php | 66 +++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 src/applications/diffusion/xaction/DiffusionCommitStateTransaction.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 8dae3d81ef..28cf7a83c5 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -671,6 +671,7 @@ phutil_register_library_map(array( 'DiffusionCommitRevisionReviewersHeraldField' => 'applications/diffusion/herald/DiffusionCommitRevisionReviewersHeraldField.php', 'DiffusionCommitRevisionSubscribersHeraldField' => 'applications/diffusion/herald/DiffusionCommitRevisionSubscribersHeraldField.php', 'DiffusionCommitSearchConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionCommitSearchConduitAPIMethod.php', + 'DiffusionCommitStateTransaction' => 'applications/diffusion/xaction/DiffusionCommitStateTransaction.php', 'DiffusionCommitTagsController' => 'applications/diffusion/controller/DiffusionCommitTagsController.php', 'DiffusionCommitTransactionType' => 'applications/diffusion/xaction/DiffusionCommitTransactionType.php', 'DiffusionCompareController' => 'applications/diffusion/controller/DiffusionCompareController.php', @@ -5378,6 +5379,7 @@ phutil_register_library_map(array( 'DiffusionCommitRevisionReviewersHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitRevisionSubscribersHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitSearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod', + 'DiffusionCommitStateTransaction' => 'DiffusionCommitTransactionType', 'DiffusionCommitTagsController' => 'DiffusionController', 'DiffusionCommitTransactionType' => 'PhabricatorModularTransactionType', 'DiffusionCompareController' => 'DiffusionController', diff --git a/src/applications/audit/editor/PhabricatorAuditEditor.php b/src/applications/audit/editor/PhabricatorAuditEditor.php index 4b2d9bec29..2fb83246c5 100644 --- a/src/applications/audit/editor/PhabricatorAuditEditor.php +++ b/src/applications/audit/editor/PhabricatorAuditEditor.php @@ -361,14 +361,41 @@ final class PhabricatorAuditEditor } } + $old_status = $object->getAuditStatus(); + $requests = $object->getAudits(); $object->updateAuditStatus($requests); + + $new_status = $object->getAuditStatus(); + $object->save(); if ($import_status_flag) { $object->writeImportStatusFlag($import_status_flag); } + $partial_status = PhabricatorAuditCommitStatusConstants::PARTIALLY_AUDITED; + + // If the commit has changed state after this edit, add an informational + // transaction about the state change. + if ($old_status !== $new_status) { + if ($new_status === $partial_status) { + // This state isn't interesting enough to get a transaction. The + // best way we could lead the user forward is something like "This + // commit still requires additional audits." but that's redundant and + // probably not very useful. + } else { + $xaction = $object->getApplicationTransactionTemplate() + ->setTransactionType(DiffusionCommitStateTransaction::TRANSACTIONTYPE) + ->setOldValue($old_status) + ->setNewValue($new_status); + + $xaction = $this->populateTransaction($object, $xaction); + + $xaction->save(); + } + } + // Collect auditor PHIDs for building mail. $this->auditorPHIDs = mpull($object->getAudits(), 'getAuditorPHID'); diff --git a/src/applications/audit/storage/PhabricatorAuditTransaction.php b/src/applications/audit/storage/PhabricatorAuditTransaction.php index ff3751b912..d09bdb76ce 100644 --- a/src/applications/audit/storage/PhabricatorAuditTransaction.php +++ b/src/applications/audit/storage/PhabricatorAuditTransaction.php @@ -498,4 +498,22 @@ final class PhabricatorAuditTransaction } return $tags; } + + public function shouldDisplayGroupWith(array $group) { + // Make the "This commit now requires audit." state message stand alone. + $type_state = DiffusionCommitStateTransaction::TRANSACTIONTYPE; + + if ($this->getTransactionType() == $type_state) { + return false; + } + + foreach ($group as $xaction) { + if ($xaction->getTransactionType() == $type_state) { + return false; + } + } + + return parent::shouldDisplayGroupWith($group); + } + } diff --git a/src/applications/diffusion/xaction/DiffusionCommitStateTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitStateTransaction.php new file mode 100644 index 0000000000..3a6440c364 --- /dev/null +++ b/src/applications/diffusion/xaction/DiffusionCommitStateTransaction.php @@ -0,0 +1,66 @@ +getNewValue(); + return PhabricatorAuditCommitStatusConstants::getStatusIcon($new); + } + + public function getColor() { + $new = $this->getNewValue(); + return PhabricatorAuditCommitStatusConstants::getStatusColor($new); + } + + public function getTitle() { + $new = $this->getNewValue(); + + switch ($new) { + case PhabricatorAuditCommitStatusConstants::NONE: + return pht('This commit no longer requires audit.'); + case PhabricatorAuditCommitStatusConstants::NEEDS_AUDIT: + return pht('This commit now requires audit.'); + case PhabricatorAuditCommitStatusConstants::CONCERN_RAISED: + return pht('This commit now has outstanding concerns.'); + case PhabricatorAuditCommitStatusConstants::FULLY_AUDITED: + return pht('All concerns with this commit have now been addressed.'); + } + + return null; + } + + public function getTitleForFeed() { + $new = $this->getNewValue(); + + switch ($new) { + case PhabricatorAuditCommitStatusConstants::NONE: + return pht( + '%s no longer requires audit.', + $this->renderObject()); + case PhabricatorAuditCommitStatusConstants::NEEDS_AUDIT: + return pht( + '%s now requires audit.', + $this->renderObject()); + case PhabricatorAuditCommitStatusConstants::CONCERN_RAISED: + return pht( + '%s now has outstanding concerns.', + $this->renderObject()); + case PhabricatorAuditCommitStatusConstants::FULLY_AUDITED: + return pht( + 'All concerns with %s have now been addressed.', + $this->renderObject()); + } + + return null; + } + +} From ce09ab9b0e1a4abfa1cd3c4d4f8535255059b093 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Wed, 25 Jan 2017 09:04:33 -0800 Subject: [PATCH 10/21] Use new menu contsants in home menu item Summary: Ref T11957, just lays in some minor bug fixes. Sets correct menu, removes sidebar on edit. Test Plan: Test /menu/ on home with Admin and Normal accounts. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T11957 Differential Revision: https://secure.phabricator.com/D17247 --- .../home/controller/PhabricatorHomeMenuItemController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/applications/home/controller/PhabricatorHomeMenuItemController.php b/src/applications/home/controller/PhabricatorHomeMenuItemController.php index 51842dd881..01f5233884 100644 --- a/src/applications/home/controller/PhabricatorHomeMenuItemController.php +++ b/src/applications/home/controller/PhabricatorHomeMenuItemController.php @@ -7,8 +7,10 @@ final class PhabricatorHomeMenuItemController $viewer = $this->getViewer(); $type = $request->getURIData('type'); $custom_phid = null; + $menu = PhabricatorProfileMenuEngine::MENU_GLOBAL; if ($type == 'personal') { $custom_phid = $viewer->getPHID(); + $menu = PhabricatorProfileMenuEngine::MENU_PERSONAL; } $application = 'PhabricatorHomeApplication'; @@ -21,7 +23,9 @@ final class PhabricatorHomeMenuItemController $engine = id(new PhabricatorHomeProfileMenuEngine()) ->setProfileObject($home_app) ->setCustomPHID($custom_phid) - ->setController($this); + ->setMenuType($menu) + ->setController($this) + ->setShowNavigation(false); return $engine->buildResponse(); } From df939f1337fdb4a709f06040b8bcf16f0bbcd2bb Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 25 Jan 2017 11:23:26 -0800 Subject: [PATCH 11/21] Fix two issues with embedding other fields inside "Summary" or "Test Plan" in Differential with the web UI Summary: Ref T11114. Converting to EditEngine caused us to stop running this validation, since these fields no longer subclass this parent. Restore the validation. Also, make sure we check the //first// line of the value, too. After the change to make "Tests: xyz" a valid title, you could write silly summaries / test plans and escape the check if the first line was bogus. Test Plan: {F2493228} Reviewers: chad Reviewed By: chad Maniphest Tasks: T11114 Differential Revision: https://secure.phabricator.com/D17248 --- .../DifferentialCoreCustomField.php | 41 ------------- ...DifferentialTestPlanCommitMessageField.php | 7 +++ ...DifferentialRevisionSummaryTransaction.php | 7 +++ .../DifferentialRevisionTransactionType.php | 58 ++++++++++++++++++- 4 files changed, 71 insertions(+), 42 deletions(-) diff --git a/src/applications/differential/customfield/DifferentialCoreCustomField.php b/src/applications/differential/customfield/DifferentialCoreCustomField.php index 6d956ac367..f88ac8836c 100644 --- a/src/applications/differential/customfield/DifferentialCoreCustomField.php +++ b/src/applications/differential/customfield/DifferentialCoreCustomField.php @@ -64,52 +64,11 @@ abstract class DifferentialCoreCustomField continue; } } - - if (is_string($value)) { - $parser = $this->getFieldParser(); - $result = $parser->parseCorpus($value); - - unset($result['__title__']); - unset($result['__summary__']); - - if ($result) { - $error = new PhabricatorApplicationTransactionValidationError( - $type, - pht('Invalid'), - pht( - 'The value you have entered in "%s" can not be parsed '. - 'unambiguously when rendered in a commit message. Edit the '. - 'message so that keywords like "Summary:" and "Test Plan:" do '. - 'not appear at the beginning of lines. Parsed keys: %s.', - $this->getFieldName(), - implode(', ', array_keys($result))), - $xaction); - $errors[] = $error; - $this->setFieldError(pht('Invalid')); - continue; - } - } } return $errors; } - private function getFieldParser() { - if (!$this->fieldParser) { - $viewer = $this->getViewer(); - $parser = DifferentialCommitMessageParser::newStandardParser($viewer); - - // Set custom title and summary keys so we can detect the presence of - // "Summary:" in, e.g., a test plan. - $parser->setTitleKey('__title__'); - $parser->setSummaryKey('__summary__'); - - $this->fieldParser = $parser; - } - - return $this->fieldParser; - } - public function canDisableField() { return false; } diff --git a/src/applications/differential/field/DifferentialTestPlanCommitMessageField.php b/src/applications/differential/field/DifferentialTestPlanCommitMessageField.php index a477a9036e..178e51d985 100644 --- a/src/applications/differential/field/DifferentialTestPlanCommitMessageField.php +++ b/src/applications/differential/field/DifferentialTestPlanCommitMessageField.php @@ -50,4 +50,11 @@ final class DifferentialTestPlanCommitMessageField ); } + public function validateTransactions($object, array $xactions) { + return $this->validateCommitMessageCorpusTransactions( + $object, + $xactions, + pht('Test Plan')); + } + } diff --git a/src/applications/differential/xaction/DifferentialRevisionSummaryTransaction.php b/src/applications/differential/xaction/DifferentialRevisionSummaryTransaction.php index a4f1dcafa5..238eb53903 100644 --- a/src/applications/differential/xaction/DifferentialRevisionSummaryTransaction.php +++ b/src/applications/differential/xaction/DifferentialRevisionSummaryTransaction.php @@ -54,4 +54,11 @@ final class DifferentialRevisionSummaryTransaction return $changes; } + public function validateTransactions($object, array $xactions) { + return $this->validateCommitMessageCorpusTransactions( + $object, + $xactions, + pht('Summary')); + } + } diff --git a/src/applications/differential/xaction/DifferentialRevisionTransactionType.php b/src/applications/differential/xaction/DifferentialRevisionTransactionType.php index f740d97c74..59b0c7510d 100644 --- a/src/applications/differential/xaction/DifferentialRevisionTransactionType.php +++ b/src/applications/differential/xaction/DifferentialRevisionTransactionType.php @@ -1,4 +1,60 @@ validateMessageCorpus($xaction, $field_name); + if ($error) { + $errors[] = $error; + } + } + + return $errors; + } + + private function validateMessageCorpus($xaction, $field_name) { + $value = $xaction->getNewValue(); + if (!strlen($value)) { + return null; + } + + // Put a placeholder title on the message, because the first line of a + // message is now always parsed as a title. + $value = "\n".$value; + + $viewer = $this->getActor(); + $parser = DifferentialCommitMessageParser::newStandardParser($viewer); + + // Set custom title and summary keys so we can detect the presence of + // "Summary:" in, e.g., a test plan. + $parser->setTitleKey('__title__'); + $parser->setSummaryKey('__summary__'); + + $result = $parser->parseCorpus($value); + + unset($result['__title__']); + unset($result['__summary__']); + + if (!$result) { + return null; + } + + return $this->newInvalidError( + pht( + 'The value you have entered in "%s" can not be parsed '. + 'unambiguously when rendered in a commit message. Edit the '. + 'message so that keywords like "Summary:" and "Test Plan:" do '. + 'not appear at the beginning of lines. Parsed keys: %s.', + $field_name, + implode(', ', array_keys($result))), + $xaction); + } + +} From 36d936fe8ae27c1ce9164db29d4eff1b5af1045d Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 25 Jan 2017 11:05:28 -0800 Subject: [PATCH 12/21] Remove an unused method in Audit for building comment actions Summary: Ref T2393. This has been obsoleted by stacked actions and is no longer used. Test Plan: Grepped for callsites, viwed commits. Reviewers: chad Reviewed By: chad Maniphest Tasks: T2393 Differential Revision: https://secure.phabricator.com/D17249 --- .../controller/DiffusionCommitController.php | 79 ------------------- 1 file changed, 79 deletions(-) diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php index 97cb219b51..f308892790 100644 --- a/src/applications/diffusion/controller/DiffusionCommitController.php +++ b/src/applications/diffusion/controller/DiffusionCommitController.php @@ -739,85 +739,6 @@ final class DiffusionCommitController extends DiffusionController { return $comment_view; } - /** - * Return a map of available audit actions for rendering into a