<?php declare(strict_types=1);
defined('MW_PATH') or exit('No direct script access allowed');

/**
 * EmojiHelper
 *
 * @package MailWizz EMA
 * @author MailWizz Development Team <support@mailwizz.com>
 * @link https://www.mailwizz.com/
 * @copyright MailWizz EMA (https://www.mailwizz.com)
 * @license https://www.mailwizz.com/license/
 * @since 1.3.9.3
 */

class EmojiHelper
{
    /**
     * Credit goes to Wordpress for this method
     *
     * Convert any 4 byte emoji in a string to their equivalent HTML entity.
     *
     * Currently, only Unicode 7 emoji are supported. Skin tone modifiers are allowed,
     * all other Unicode 8 emoji will be added when the spec is finalised.
     *
     * This allows us to store emoji in a DB using the utf8 character set.
     *
     * @param string $content The content to encode.
     * @return string The encoded content.
     */
    public static function encodeEmoji(string $content): string
    {
        if (!CommonHelper::functionExists('mb_convert_encoding')) {
            return $content;
        }

        $content = StringHelper::decodeSurroundingTags($content);

        $regex = '/(
		     \x23\xE2\x83\xA3               # Digits
		     [\x30-\x39]\xE2\x83\xA3
		   | \xF0\x9F[\x85-\x88][\xA6-\xBF] # Enclosed characters
		   | \xF0\x9F[\x8C-\x97][\x80-\xBF] # Misc
		   | \xF0\x9F\x98[\x80-\xBF]        # Smilies
		   | \xF0\x9F\x99[\x80-\x8F]
		   | \xF0\x9F\x9A[\x80-\xBF]        # Transport and map symbols
		)/x';

        $matches = [];
        if (!preg_match_all($regex, $content, $matches)) {
            return $content;
        }

        if (empty($matches[1])) {
            return $content;
        }

        foreach ($matches[1] as $emoji) {
            /*
             * UTF-32's hex encoding is the same as HTML's hex encoding.
             * So, by converting the emoji from UTF-8 to UTF-32, we magically
             * get the correct hex encoding.
             */
            $unpacked = (array)unpack('H*', (string)mb_convert_encoding((string)$emoji, 'UTF-32', 'UTF-8'));
            if (isset($unpacked[1])) {
                $entity = '&#x' . ltrim((string)$unpacked[1], '0') . ';';
                $content = (string)str_replace((string)$emoji, $entity, $content);
            }
        }

        return $content;
    }

    /**
     * This code is auto-generated.
     * @see https://github.com/justinshreve/emoji-parse-php-array
     *
     * @return array
     */
    public static function getList(): array
    {
        return [
            "\xe2\x98\x80" => 'BLACK SUN WITH RAYS',
            "\xe2\x98\x81" => 'CLOUD',
            "\xe2\x98\x94" => 'UMBRELLA WITH RAIN DROPS',
            "\xe2\x9b\x84" => 'SNOWMAN WITHOUT SNOW',
            "\xe2\x9a\xa1" => 'HIGH VOLTAGE SIGN',
            "\xf0\x9f\x8c\x80" => 'CYCLONE',
            "\xf0\x9f\x8c\x81" => 'FOGGY',
            "\xf0\x9f\x8c\x82" => 'CLOSED UMBRELLA',
            "\xf0\x9f\x8c\x83" => 'NIGHT WITH STARS',
            "\xf0\x9f\x8c\x84" => 'SUNRISE OVER MOUNTAINS',
            "\xf0\x9f\x8c\x85" => 'SUNRISE',
            "\xf0\x9f\x8c\x86" => 'CITYSCAPE AT DUSK',
            "\xf0\x9f\x8c\x87" => 'SUNSET OVER BUILDINGS',
            "\xf0\x9f\x8c\x88" => 'RAINBOW',
            "\xe2\x9d\x84" => 'SNOWFLAKE',
            "\xe2\x9b\x85" => 'SUN BEHIND CLOUD',
            "\xf0\x9f\x8c\x89" => 'BRIDGE AT NIGHT',
            "\xf0\x9f\x8c\x8a" => 'WATER WAVE',
            "\xf0\x9f\x8c\x8b" => 'VOLCANO',
            "\xf0\x9f\x8c\x8c" => 'MILKY WAY',
            "\xf0\x9f\x8c\x8f" => 'EARTH GLOBE ASIA-AUSTRALIA',
            "\xf0\x9f\x8c\x91" => 'NEW MOON SYMBOL',
            "\xf0\x9f\x8c\x94" => 'WAXING GIBBOUS MOON SYMBOL',
            "\xf0\x9f\x8c\x93" => 'FIRST QUARTER MOON SYMBOL',
            "\xf0\x9f\x8c\x99" => 'CRESCENT MOON',
            "\xf0\x9f\x8c\x95" => 'FULL MOON SYMBOL',
            "\xf0\x9f\x8c\x9b" => 'FIRST QUARTER MOON WITH FACE',
            "\xf0\x9f\x8c\x9f" => 'GLOWING STAR',
            "\xf0\x9f\x8c\xa0" => 'SHOOTING STAR',
            "\xf0\x9f\x95\x90" => 'CLOCK FACE ONE OCLOCK',
            "\xf0\x9f\x95\x91" => 'CLOCK FACE TWO OCLOCK',
            "\xf0\x9f\x95\x92" => 'CLOCK FACE THREE OCLOCK',
            "\xf0\x9f\x95\x93" => 'CLOCK FACE FOUR OCLOCK',
            "\xf0\x9f\x95\x94" => 'CLOCK FACE FIVE OCLOCK',
            "\xf0\x9f\x95\x95" => 'CLOCK FACE SIX OCLOCK',
            "\xf0\x9f\x95\x96" => 'CLOCK FACE SEVEN OCLOCK',
            "\xf0\x9f\x95\x97" => 'CLOCK FACE EIGHT OCLOCK',
            "\xf0\x9f\x95\x98" => 'CLOCK FACE NINE OCLOCK',
            "\xf0\x9f\x95\x99" => 'CLOCK FACE TEN OCLOCK',
            "\xf0\x9f\x95\x9a" => 'CLOCK FACE ELEVEN OCLOCK',
            "\xf0\x9f\x95\x9b" => 'CLOCK FACE TWELVE OCLOCK',
            "\xe2\x8c\x9a" => 'WATCH',
            "\xe2\x8c\x9b" => 'HOURGLASS',
            "\xe2\x8f\xb0" => 'ALARM CLOCK',
            "\xe2\x8f\xb3" => 'HOURGLASS WITH FLOWING SAND',
            "\xe2\x99\x88" => 'ARIES',
            "\xe2\x99\x89" => 'TAURUS',
            "\xe2\x99\x8a" => 'GEMINI',
            "\xe2\x99\x8b" => 'CANCER',
            "\xe2\x99\x8c" => 'LEO',
            "\xe2\x99\x8d" => 'VIRGO',
            "\xe2\x99\x8e" => 'LIBRA',
            "\xe2\x99\x8f" => 'SCORPIUS',
            "\xe2\x99\x90" => 'SAGITTARIUS',
            "\xe2\x99\x91" => 'CAPRICORN',
            "\xe2\x99\x92" => 'AQUARIUS',
            "\xe2\x99\x93" => 'PISCES',
            "\xe2\x9b\x8e" => 'OPHIUCHUS',
            "\xf0\x9f\x8d\x80" => 'FOUR LEAF CLOVER',
            "\xf0\x9f\x8c\xb7" => 'TULIP',
            "\xf0\x9f\x8c\xb1" => 'SEEDLING',
            "\xf0\x9f\x8d\x81" => 'MAPLE LEAF',
            "\xf0\x9f\x8c\xb8" => 'CHERRY BLOSSOM',
            "\xf0\x9f\x8c\xb9" => 'ROSE',
            "\xf0\x9f\x8d\x82" => 'FALLEN LEAF',
            "\xf0\x9f\x8d\x83" => 'LEAF FLUTTERING IN WIND',
            "\xf0\x9f\x8c\xba" => 'HIBISCUS',
            "\xf0\x9f\x8c\xbb" => 'SUNFLOWER',
            "\xf0\x9f\x8c\xb4" => 'PALM TREE',
            "\xf0\x9f\x8c\xb5" => 'CACTUS',
            "\xf0\x9f\x8c\xbe" => 'EAR OF RICE',
            "\xf0\x9f\x8c\xbd" => 'EAR OF MAIZE',
            "\xf0\x9f\x8d\x84" => 'MUSHROOM',
            "\xf0\x9f\x8c\xb0" => 'CHESTNUT',
            "\xf0\x9f\x8c\xbc" => 'BLOSSOM',
            "\xf0\x9f\x8c\xbf" => 'HERB',
            "\xf0\x9f\x8d\x92" => 'CHERRIES',
            "\xf0\x9f\x8d\x8c" => 'BANANA',
            "\xf0\x9f\x8d\x8e" => 'RED APPLE',
            "\xf0\x9f\x8d\x8a" => 'TANGERINE',
            "\xf0\x9f\x8d\x93" => 'STRAWBERRY',
            "\xf0\x9f\x8d\x89" => 'WATERMELON',
            "\xf0\x9f\x8d\x85" => 'TOMATO',
            "\xf0\x9f\x8d\x86" => 'AUBERGINE',
            "\xf0\x9f\x8d\x88" => 'MELON',
            "\xf0\x9f\x8d\x8d" => 'PINEAPPLE',
            "\xf0\x9f\x8d\x87" => 'GRAPES',
            "\xf0\x9f\x8d\x91" => 'PEACH',
            "\xf0\x9f\x8d\x8f" => 'GREEN APPLE',
            "\xf0\x9f\x91\x80" => 'EYES',
            "\xf0\x9f\x91\x82" => 'EAR',
            "\xf0\x9f\x91\x83" => 'NOSE',
            "\xf0\x9f\x91\x84" => 'MOUTH',
            "\xf0\x9f\x91\x85" => 'TONGUE',
            "\xf0\x9f\x92\x84" => 'LIPSTICK',
            "\xf0\x9f\x92\x85" => 'NAIL POLISH',
            "\xf0\x9f\x92\x86" => 'FACE MASSAGE',
            "\xf0\x9f\x92\x87" => 'HAIRCUT',
            "\xf0\x9f\x92\x88" => 'BARBER POLE',
            "\xf0\x9f\x91\xa4" => 'BUST IN SILHOUETTE',
            "\xf0\x9f\x91\xa6" => 'BOY',
            "\xf0\x9f\x91\xa7" => 'GIRL',
            "\xf0\x9f\x91\xa8" => 'MAN',
            "\xf0\x9f\x91\xa9" => 'WOMAN',
            "\xf0\x9f\x91\xaa" => 'FAMILY',
            "\xf0\x9f\x91\xab" => 'MAN AND WOMAN HOLDING HANDS',
            "\xf0\x9f\x91\xae" => 'POLICE OFFICER',
            "\xf0\x9f\x91\xaf" => 'WOMAN WITH BUNNY EARS',
            "\xf0\x9f\x91\xb0" => 'BRIDE WITH VEIL',
            "\xf0\x9f\x91\xb1" => 'PERSON WITH BLOND HAIR',
            "\xf0\x9f\x91\xb2" => 'MAN WITH GUA PI MAO',
            "\xf0\x9f\x91\xb3" => 'MAN WITH TURBAN',
            "\xf0\x9f\x91\xb4" => 'OLDER MAN',
            "\xf0\x9f\x91\xb5" => 'OLDER WOMAN',
            "\xf0\x9f\x91\xb6" => 'BABY',
            "\xf0\x9f\x91\xb7" => 'CONSTRUCTION WORKER',
            "\xf0\x9f\x91\xb8" => 'PRINCESS',
            "\xf0\x9f\x91\xb9" => 'JAPANESE OGRE',
            "\xf0\x9f\x91\xba" => 'JAPANESE GOBLIN',
            "\xf0\x9f\x91\xbb" => 'GHOST',
            "\xf0\x9f\x91\xbc" => 'BABY ANGEL',
            "\xf0\x9f\x91\xbd" => 'EXTRATERRESTRIAL ALIEN',
            "\xf0\x9f\x91\xbe" => 'ALIEN MONSTER',
            "\xf0\x9f\x91\xbf" => 'IMP',
            "\xf0\x9f\x92\x80" => 'SKULL',
            "\xf0\x9f\x92\x81" => 'INFORMATION DESK PERSON',
            "\xf0\x9f\x92\x82" => 'GUARDSMAN',
            "\xf0\x9f\x92\x83" => 'DANCER',
            "\xf0\x9f\x90\x8c" => 'SNAIL',
            "\xf0\x9f\x90\x8d" => 'SNAKE',
            "\xf0\x9f\x90\x8e" => 'HORSE',
            "\xf0\x9f\x90\x94" => 'CHICKEN',
            "\xf0\x9f\x90\x97" => 'BOAR',
            "\xf0\x9f\x90\xab" => 'BACTRIAN CAMEL',
            "\xf0\x9f\x90\x98" => 'ELEPHANT',
            "\xf0\x9f\x90\xa8" => 'KOALA',
            "\xf0\x9f\x90\x92" => 'MONKEY',
            "\xf0\x9f\x90\x91" => 'SHEEP',
            "\xf0\x9f\x90\x99" => 'OCTOPUS',
            "\xf0\x9f\x90\x9a" => 'SPIRAL SHELL',
            "\xf0\x9f\x90\x9b" => 'BUG',
            "\xf0\x9f\x90\x9c" => 'ANT',
            "\xf0\x9f\x90\x9d" => 'HONEYBEE',
            "\xf0\x9f\x90\x9e" => 'LADY BEETLE',
            "\xf0\x9f\x90\xa0" => 'TROPICAL FISH',
            "\xf0\x9f\x90\xa1" => 'BLOWFISH',
            "\xf0\x9f\x90\xa2" => 'TURTLE',
            "\xf0\x9f\x90\xa4" => 'BABY CHICK',
            "\xf0\x9f\x90\xa5" => 'FRONT-FACING BABY CHICK',
            "\xf0\x9f\x90\xa6" => 'BIRD',
            "\xf0\x9f\x90\xa3" => 'HATCHING CHICK',
            "\xf0\x9f\x90\xa7" => 'PENGUIN',
            "\xf0\x9f\x90\xa9" => 'POODLE',
            "\xf0\x9f\x90\x9f" => 'FISH',
            "\xf0\x9f\x90\xac" => 'DOLPHIN',
            "\xf0\x9f\x90\xad" => 'MOUSE FACE',
            "\xf0\x9f\x90\xaf" => 'TIGER FACE',
            "\xf0\x9f\x90\xb1" => 'CAT FACE',
            "\xf0\x9f\x90\xb3" => 'SPOUTING WHALE',
            "\xf0\x9f\x90\xb4" => 'HORSE FACE',
            "\xf0\x9f\x90\xb5" => 'MONKEY FACE',
            "\xf0\x9f\x90\xb6" => 'DOG FACE',
            "\xf0\x9f\x90\xb7" => 'PIG FACE',
            "\xf0\x9f\x90\xbb" => 'BEAR FACE',
            "\xf0\x9f\x90\xb9" => 'HAMSTER FACE',
            "\xf0\x9f\x90\xba" => 'WOLF FACE',
            "\xf0\x9f\x90\xae" => 'COW FACE',
            "\xf0\x9f\x90\xb0" => 'RABBIT FACE',
            "\xf0\x9f\x90\xb8" => 'FROG FACE',
            "\xf0\x9f\x90\xbe" => 'PAW PRINTS',
            "\xf0\x9f\x90\xb2" => 'DRAGON FACE',
            "\xf0\x9f\x90\xbc" => 'PANDA FACE',
            "\xf0\x9f\x90\xbd" => 'PIG NOSE',
            "\xf0\x9f\x98\xa0" => 'ANGRY FACE',
            "\xf0\x9f\x98\xa9" => 'WEARY FACE',
            "\xf0\x9f\x98\xb2" => 'ASTONISHED FACE',
            "\xf0\x9f\x98\x9e" => 'DISAPPOINTED FACE',
            "\xf0\x9f\x98\xb5" => 'DIZZY FACE',
            "\xf0\x9f\x98\xb0" => 'FACE WITH OPEN MOUTH AND COLD SWEAT',
            "\xf0\x9f\x98\x92" => 'UNAMUSED FACE',
            "\xf0\x9f\x98\x8d" => 'SMILING FACE WITH HEART-SHAPED EYES',
            "\xf0\x9f\x98\xa4" => 'FACE WITH LOOK OF TRIUMPH',
            "\xf0\x9f\x98\x9c" => 'FACE WITH STUCK-OUT TONGUE AND WINKING EYE',
            "\xf0\x9f\x98\x9d" => 'FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES',
            "\xf0\x9f\x98\x8b" => 'FACE SAVOURING DELICIOUS FOOD',
            "\xf0\x9f\x98\x98" => 'FACE THROWING A KISS',
            "\xf0\x9f\x98\x9a" => 'KISSING FACE WITH CLOSED EYES',
            "\xf0\x9f\x98\xb7" => 'FACE WITH MEDICAL MASK',
            "\xf0\x9f\x98\xb3" => 'FLUSHED FACE',
            "\xf0\x9f\x98\x83" => 'SMILING FACE WITH OPEN MOUTH',
            "\xf0\x9f\x98\x85" => 'SMILING FACE WITH OPEN MOUTH AND COLD SWEAT',
            "\xf0\x9f\x98\x86" => 'SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES',
            "\xf0\x9f\x98\x81" => 'GRINNING FACE WITH SMILING EYES',
            "\xf0\x9f\x98\x82" => 'FACE WITH TEARS OF JOY',
            "\xf0\x9f\x98\x8a" => 'SMILING FACE WITH SMILING EYES',
            "\xe2\x98\xba" => 'WHITE SMILING FACE',
            "\xf0\x9f\x98\x84" => 'SMILING FACE WITH OPEN MOUTH AND SMILING EYES',
            "\xf0\x9f\x98\xa2" => 'CRYING FACE',
            "\xf0\x9f\x98\xad" => 'LOUDLY CRYING FACE',
            "\xf0\x9f\x98\xa8" => 'FEARFUL FACE',
            "\xf0\x9f\x98\xa3" => 'PERSEVERING FACE',
            "\xf0\x9f\x98\xa1" => 'POUTING FACE',
            "\xf0\x9f\x98\x8c" => 'RELIEVED FACE',
            "\xf0\x9f\x98\x96" => 'CONFOUNDED FACE',
            "\xf0\x9f\x98\x94" => 'PENSIVE FACE',
            "\xf0\x9f\x98\xb1" => 'FACE SCREAMING IN FEAR',
            "\xf0\x9f\x98\xaa" => 'SLEEPY FACE',
            "\xf0\x9f\x98\x8f" => 'SMIRKING FACE',
            "\xf0\x9f\x98\x93" => 'FACE WITH COLD SWEAT',
            "\xf0\x9f\x98\xa5" => 'DISAPPOINTED BUT RELIEVED FACE',
            "\xf0\x9f\x98\xab" => 'TIRED FACE',
            "\xf0\x9f\x98\x89" => 'WINKING FACE',
            "\xf0\x9f\x98\xba" => 'SMILING CAT FACE WITH OPEN MOUTH',
            "\xf0\x9f\x98\xb8" => 'GRINNING CAT FACE WITH SMILING EYES',
            "\xf0\x9f\x98\xb9" => 'CAT FACE WITH TEARS OF JOY',
            "\xf0\x9f\x98\xbd" => 'KISSING CAT FACE WITH CLOSED EYES',
            "\xf0\x9f\x98\xbb" => 'SMILING CAT FACE WITH HEART-SHAPED EYES',
            "\xf0\x9f\x98\xbf" => 'CRYING CAT FACE',
            "\xf0\x9f\x98\xbe" => 'POUTING CAT FACE',
            "\xf0\x9f\x98\xbc" => 'CAT FACE WITH WRY SMILE',
            "\xf0\x9f\x99\x80" => 'WEARY CAT FACE',
            "\xf0\x9f\x99\x85" => 'FACE WITH NO GOOD GESTURE',
            "\xf0\x9f\x99\x86" => 'FACE WITH OK GESTURE',
            "\xf0\x9f\x99\x87" => 'PERSON BOWING DEEPLY',
            "\xf0\x9f\x99\x88" => 'SEE-NO-EVIL MONKEY',
            "\xf0\x9f\x99\x8a" => 'SPEAK-NO-EVIL MONKEY',
            "\xf0\x9f\x99\x89" => 'HEAR-NO-EVIL MONKEY',
            "\xf0\x9f\x99\x8b" => 'HAPPY PERSON RAISING ONE HAND',
            "\xf0\x9f\x99\x8c" => 'PERSON RAISING BOTH HANDS IN CELEBRATION',
            "\xf0\x9f\x99\x8d" => 'PERSON FROWNING',
            "\xf0\x9f\x99\x8e" => 'PERSON WITH POUTING FACE',
            "\xf0\x9f\x99\x8f" => 'PERSON WITH FOLDED HANDS',
            "\xf0\x9f\x8f\xa0" => 'HOUSE BUILDING',
            "\xf0\x9f\x8f\xa1" => 'HOUSE WITH GARDEN',
            "\xf0\x9f\x8f\xa2" => 'OFFICE BUILDING',
            "\xf0\x9f\x8f\xa3" => 'JAPANESE POST OFFICE',
            "\xf0\x9f\x8f\xa5" => 'HOSPITAL',
            "\xf0\x9f\x8f\xa6" => 'BANK',
            "\xf0\x9f\x8f\xa7" => 'AUTOMATED TELLER MACHINE',
            "\xf0\x9f\x8f\xa8" => 'HOTEL',
            "\xf0\x9f\x8f\xa9" => 'LOVE HOTEL',
            "\xf0\x9f\x8f\xaa" => 'CONVENIENCE STORE',
            "\xf0\x9f\x8f\xab" => 'SCHOOL',
            "\xe2\x9b\xaa" => 'CHURCH',
            "\xe2\x9b\xb2" => 'FOUNTAIN',
            "\xf0\x9f\x8f\xac" => 'DEPARTMENT STORE',
            "\xf0\x9f\x8f\xaf" => 'JAPANESE CASTLE',
            "\xf0\x9f\x8f\xb0" => 'EUROPEAN CASTLE',
            "\xf0\x9f\x8f\xad" => 'FACTORY',
            "\xe2\x9a\x93" => 'ANCHOR',
            "\xf0\x9f\x8f\xae" => 'IZAKAYA LANTERN',
            "\xf0\x9f\x97\xbb" => 'MOUNT FUJI',
            "\xf0\x9f\x97\xbc" => 'TOKYO TOWER',
            "\xf0\x9f\x97\xbd" => 'STATUE OF LIBERTY',
            "\xf0\x9f\x97\xbe" => 'SILHOUETTE OF JAPAN',
            "\xf0\x9f\x97\xbf" => 'MOYAI',
            "\xf0\x9f\x91\x9e" => 'MANS SHOE',
            "\xf0\x9f\x91\x9f" => 'ATHLETIC SHOE',
            "\xf0\x9f\x91\xa0" => 'HIGH-HEELED SHOE',
            "\xf0\x9f\x91\xa1" => 'WOMANS SANDAL',
            "\xf0\x9f\x91\xa2" => 'WOMANS BOOTS',
            "\xf0\x9f\x91\xa3" => 'FOOTPRINTS',
            "\xf0\x9f\x91\x93" => 'EYEGLASSES',
            "\xf0\x9f\x91\x95" => 'T-SHIRT',
            "\xf0\x9f\x91\x96" => 'JEANS',
            "\xf0\x9f\x91\x91" => 'CROWN',
            "\xf0\x9f\x91\x94" => 'NECKTIE',
            "\xf0\x9f\x91\x92" => 'WOMANS HAT',
            "\xf0\x9f\x91\x97" => 'DRESS',
            "\xf0\x9f\x91\x98" => 'KIMONO',
            "\xf0\x9f\x91\x99" => 'BIKINI',
            "\xf0\x9f\x91\x9a" => 'WOMANS CLOTHES',
            "\xf0\x9f\x91\x9b" => 'PURSE',
            "\xf0\x9f\x91\x9c" => 'HANDBAG',
            "\xf0\x9f\x91\x9d" => 'POUCH',
            "\xf0\x9f\x92\xb0" => 'MONEY BAG',
            "\xf0\x9f\x92\xb1" => 'CURRENCY EXCHANGE',
            "\xf0\x9f\x92\xb9" => 'CHART WITH UPWARDS TREND AND YEN SIGN',
            "\xf0\x9f\x92\xb2" => 'HEAVY DOLLAR SIGN',
            "\xf0\x9f\x92\xb3" => 'CREDIT CARD',
            "\xf0\x9f\x92\xb4" => 'BANKNOTE WITH YEN SIGN',
            "\xf0\x9f\x92\xb5" => 'BANKNOTE WITH DOLLAR SIGN',
            "\xf0\x9f\x92\xb8" => 'MONEY WITH WINGS',
            "\xf0\x9f\x87\xa8\xf0\x9f\x87\xb3" => 'REGIONAL INDICATOR SYMBOL LETTERS CN',
            "\xf0\x9f\x87\xa9\xf0\x9f\x87\xaa" => 'REGIONAL INDICATOR SYMBOL LETTERS DE',
            "\xf0\x9f\x87\xaa\xf0\x9f\x87\xb8" => 'REGIONAL INDICATOR SYMBOL LETTERS ES',
            "\xf0\x9f\x87\xab\xf0\x9f\x87\xb7" => 'REGIONAL INDICATOR SYMBOL LETTERS FR',
            "\xf0\x9f\x87\xac\xf0\x9f\x87\xa7" => 'REGIONAL INDICATOR SYMBOL LETTERS GB',
            "\xf0\x9f\x87\xae\xf0\x9f\x87\xb9" => 'REGIONAL INDICATOR SYMBOL LETTERS IT',
            "\xf0\x9f\x87\xaf\xf0\x9f\x87\xb5" => 'REGIONAL INDICATOR SYMBOL LETTERS JP',
            "\xf0\x9f\x87\xb0\xf0\x9f\x87\xb7" => 'REGIONAL INDICATOR SYMBOL LETTERS KR',
            "\xf0\x9f\x87\xb7\xf0\x9f\x87\xba" => 'REGIONAL INDICATOR SYMBOL LETTERS RU',
            "\xf0\x9f\x87\xba\xf0\x9f\x87\xb8" => 'REGIONAL INDICATOR SYMBOL LETTERS US',
            "\xf0\x9f\x94\xa5" => 'FIRE',
            "\xf0\x9f\x94\xa6" => 'ELECTRIC TORCH',
            "\xf0\x9f\x94\xa7" => 'WRENCH',
            "\xf0\x9f\x94\xa8" => 'HAMMER',
            "\xf0\x9f\x94\xa9" => 'NUT AND BOLT',
            "\xf0\x9f\x94\xaa" => 'HOCHO',
            "\xf0\x9f\x94\xab" => 'PISTOL',
            "\xf0\x9f\x94\xae" => 'CRYSTAL BALL',
            "\xf0\x9f\x94\xaf" => 'SIX POINTED STAR WITH MIDDLE DOT',
            "\xf0\x9f\x94\xb0" => 'JAPANESE SYMBOL FOR BEGINNER',
            "\xf0\x9f\x94\xb1" => 'TRIDENT EMBLEM',
            "\xf0\x9f\x92\x89" => 'SYRINGE',
            "\xf0\x9f\x92\x8a" => 'PILL',
            "\xf0\x9f\x85\xb0" => 'NEGATIVE SQUARED LATIN CAPITAL LETTER A',
            "\xf0\x9f\x85\xb1" => 'NEGATIVE SQUARED LATIN CAPITAL LETTER B',
            "\xf0\x9f\x86\x8e" => 'NEGATIVE SQUARED AB',
            "\xf0\x9f\x85\xbe" => 'NEGATIVE SQUARED LATIN CAPITAL LETTER O',
            "\xf0\x9f\x8e\x80" => 'RIBBON',
            "\xf0\x9f\x8e\x81" => 'WRAPPED PRESENT',
            "\xf0\x9f\x8e\x82" => 'BIRTHDAY CAKE',
            "\xf0\x9f\x8e\x84" => 'CHRISTMAS TREE',
            "\xf0\x9f\x8e\x85" => 'FATHER CHRISTMAS',
            "\xf0\x9f\x8e\x8c" => 'CROSSED FLAGS',
            "\xf0\x9f\x8e\x86" => 'FIREWORKS',
            "\xf0\x9f\x8e\x88" => 'BALLOON',
            "\xf0\x9f\x8e\x89" => 'PARTY POPPER',
            "\xf0\x9f\x8e\x8d" => 'PINE DECORATION',
            "\xf0\x9f\x8e\x8e" => 'JAPANESE DOLLS',
            "\xf0\x9f\x8e\x93" => 'GRADUATION CAP',
            "\xf0\x9f\x8e\x92" => 'SCHOOL SATCHEL',
            "\xf0\x9f\x8e\x8f" => 'CARP STREAMER',
            "\xf0\x9f\x8e\x87" => 'FIREWORK SPARKLER',
            "\xf0\x9f\x8e\x90" => 'WIND CHIME',
            "\xf0\x9f\x8e\x83" => 'JACK-O-LANTERN',
            "\xf0\x9f\x8e\x8a" => 'CONFETTI BALL',
            "\xf0\x9f\x8e\x8b" => 'TANABATA TREE',
            "\xf0\x9f\x8e\x91" => 'MOON VIEWING CEREMONY',
            "\xf0\x9f\x93\x9f" => 'PAGER',
            "\xe2\x98\x8e" => 'BLACK TELEPHONE',
            "\xf0\x9f\x93\x9e" => 'TELEPHONE RECEIVER',
            "\xf0\x9f\x93\xb1" => 'MOBILE PHONE',
            "\xf0\x9f\x93\xb2" => 'MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT',
            "\xf0\x9f\x93\x9d" => 'MEMO',
            "\xf0\x9f\x93\xa0" => 'FAX MACHINE',
            "\xe2\x9c\x89" => 'ENVELOPE',
            "\xf0\x9f\x93\xa8" => 'INCOMING ENVELOPE',
            "\xf0\x9f\x93\xa9" => 'ENVELOPE WITH DOWNWARDS ARROW ABOVE',
            "\xf0\x9f\x93\xaa" => 'CLOSED MAILBOX WITH LOWERED FLAG',
            "\xf0\x9f\x93\xab" => 'CLOSED MAILBOX WITH RAISED FLAG',
            "\xf0\x9f\x93\xae" => 'POSTBOX',
            "\xf0\x9f\x93\xb0" => 'NEWSPAPER',
            "\xf0\x9f\x93\xa2" => 'PUBLIC ADDRESS LOUDSPEAKER',
            "\xf0\x9f\x93\xa3" => 'CHEERING MEGAPHONE',
            "\xf0\x9f\x93\xa1" => 'SATELLITE ANTENNA',
            "\xf0\x9f\x93\xa4" => 'OUTBOX TRAY',
            "\xf0\x9f\x93\xa5" => 'INBOX TRAY',
            "\xf0\x9f\x93\xa6" => 'PACKAGE',
            "\xf0\x9f\x93\xa7" => 'E-MAIL SYMBOL',
            "\xf0\x9f\x94\xa0" => 'INPUT SYMBOL FOR LATIN CAPITAL LETTERS',
            "\xf0\x9f\x94\xa1" => 'INPUT SYMBOL FOR LATIN SMALL LETTERS',
            "\xf0\x9f\x94\xa2" => 'INPUT SYMBOL FOR NUMBERS',
            "\xf0\x9f\x94\xa3" => 'INPUT SYMBOL FOR SYMBOLS',
            "\xf0\x9f\x94\xa4" => 'INPUT SYMBOL FOR LATIN LETTERS',
            "\xe2\x9c\x92" => 'BLACK NIB',
            "\xf0\x9f\x92\xba" => 'SEAT',
            "\xf0\x9f\x92\xbb" => 'PERSONAL COMPUTER',
            "\xe2\x9c\x8f" => 'PENCIL',
            "\xf0\x9f\x93\x8e" => 'PAPERCLIP',
            "\xf0\x9f\x92\xbc" => 'BRIEFCASE',
            "\xf0\x9f\x92\xbd" => 'MINIDISC',
            "\xf0\x9f\x92\xbe" => 'FLOPPY DISK',
            "\xf0\x9f\x92\xbf" => 'OPTICAL DISC',
            "\xf0\x9f\x93\x80" => 'DVD',
            "\xe2\x9c\x82" => 'BLACK SCISSORS',
            "\xf0\x9f\x93\x8d" => 'ROUND PUSHPIN',
            "\xf0\x9f\x93\x83" => 'PAGE WITH CURL',
            "\xf0\x9f\x93\x84" => 'PAGE FACING UP',
            "\xf0\x9f\x93\x85" => 'CALENDAR',
            "\xf0\x9f\x93\x81" => 'FILE FOLDER',
            "\xf0\x9f\x93\x82" => 'OPEN FILE FOLDER',
            "\xf0\x9f\x93\x93" => 'NOTEBOOK',
            "\xf0\x9f\x93\x96" => 'OPEN BOOK',
            "\xf0\x9f\x93\x94" => 'NOTEBOOK WITH DECORATIVE COVER',
            "\xf0\x9f\x93\x95" => 'CLOSED BOOK',
            "\xf0\x9f\x93\x97" => 'GREEN BOOK',
            "\xf0\x9f\x93\x98" => 'BLUE BOOK',
            "\xf0\x9f\x93\x99" => 'ORANGE BOOK',
            "\xf0\x9f\x93\x9a" => 'BOOKS',
            "\xf0\x9f\x93\x9b" => 'NAME BADGE',
            "\xf0\x9f\x93\x9c" => 'SCROLL',
            "\xf0\x9f\x93\x8b" => 'CLIPBOARD',
            "\xf0\x9f\x93\x86" => 'TEAR-OFF CALENDAR',
            "\xf0\x9f\x93\x8a" => 'BAR CHART',
            "\xf0\x9f\x93\x88" => 'CHART WITH UPWARDS TREND',
            "\xf0\x9f\x93\x89" => 'CHART WITH DOWNWARDS TREND',
            "\xf0\x9f\x93\x87" => 'CARD INDEX',
            "\xf0\x9f\x93\x8c" => 'PUSHPIN',
            "\xf0\x9f\x93\x92" => 'LEDGER',
            "\xf0\x9f\x93\x8f" => 'STRAIGHT RULER',
            "\xf0\x9f\x93\x90" => 'TRIANGULAR RULER',
            "\xf0\x9f\x93\x91" => 'BOOKMARK TABS',
            "\xf0\x9f\x8e\xbd" => 'RUNNING SHIRT WITH SASH',
            "\xe2\x9a\xbe" => 'BASEBALL',
            "\xe2\x9b\xb3" => 'FLAG IN HOLE',
            "\xf0\x9f\x8e\xbe" => 'TENNIS RACQUET AND BALL',
            "\xe2\x9a\xbd" => 'SOCCER BALL',
            "\xf0\x9f\x8e\xbf" => 'SKI AND SKI BOOT',
            "\xf0\x9f\x8f\x80" => 'BASKETBALL AND HOOP',
            "\xf0\x9f\x8f\x81" => 'CHEQUERED FLAG',
            "\xf0\x9f\x8f\x82" => 'SNOWBOARDER',
            "\xf0\x9f\x8f\x83" => 'RUNNER',
            "\xf0\x9f\x8f\x84" => 'SURFER',
            "\xf0\x9f\x8f\x86" => 'TROPHY',
            "\xf0\x9f\x8f\x88" => 'AMERICAN FOOTBALL',
            "\xf0\x9f\x8f\x8a" => 'SWIMMER',
            "\xf0\x9f\x9a\x83" => 'RAILWAY CAR',
            "\xf0\x9f\x9a\x87" => 'METRO',
            "\xe2\x93\x82" => 'CIRCLED LATIN CAPITAL LETTER M',
            "\xf0\x9f\x9a\x84" => 'HIGH-SPEED TRAIN',
            "\xf0\x9f\x9a\x85" => 'HIGH-SPEED TRAIN WITH BULLET NOSE',
            "\xf0\x9f\x9a\x97" => 'AUTOMOBILE',
            "\xf0\x9f\x9a\x99" => 'RECREATIONAL VEHICLE',
            "\xf0\x9f\x9a\x8c" => 'BUS',
            "\xf0\x9f\x9a\x8f" => 'BUS STOP',
            "\xf0\x9f\x9a\xa2" => 'SHIP',
            "\xe2\x9c\x88" => 'AIRPLANE',
            "\xe2\x9b\xb5" => 'SAILBOAT',
            "\xf0\x9f\x9a\x89" => 'STATION',
            "\xf0\x9f\x9a\x80" => 'ROCKET',
            "\xf0\x9f\x9a\xa4" => 'SPEEDBOAT',
            "\xf0\x9f\x9a\x95" => 'TAXI',
            "\xf0\x9f\x9a\x9a" => 'DELIVERY TRUCK',
            "\xf0\x9f\x9a\x92" => 'FIRE ENGINE',
            "\xf0\x9f\x9a\x91" => 'AMBULANCE',
            "\xf0\x9f\x9a\x93" => 'POLICE CAR',
            "\xe2\x9b\xbd" => 'FUEL PUMP',
            "\xf0\x9f\x85\xbf" => 'NEGATIVE SQUARED LATIN CAPITAL LETTER P',
            "\xf0\x9f\x9a\xa5" => 'HORIZONTAL TRAFFIC LIGHT',
            "\xf0\x9f\x9a\xa7" => 'CONSTRUCTION SIGN',
            "\xf0\x9f\x9a\xa8" => 'POLICE CARS REVOLVING LIGHT',
            "\xe2\x99\xa8" => 'HOT SPRINGS',
            "\xe2\x9b\xba" => 'TENT',
            "\xf0\x9f\x8e\xa0" => 'CAROUSEL HORSE',
            "\xf0\x9f\x8e\xa1" => 'FERRIS WHEEL',
            "\xf0\x9f\x8e\xa2" => 'ROLLER COASTER',
            "\xf0\x9f\x8e\xa3" => 'FISHING POLE AND FISH',
            "\xf0\x9f\x8e\xa4" => 'MICROPHONE',
            "\xf0\x9f\x8e\xa5" => 'MOVIE CAMERA',
            "\xf0\x9f\x8e\xa6" => 'CINEMA',
            "\xf0\x9f\x8e\xa7" => 'HEADPHONE',
            "\xf0\x9f\x8e\xa8" => 'ARTIST PALETTE',
            "\xf0\x9f\x8e\xa9" => 'TOP HAT',
            "\xf0\x9f\x8e\xaa" => 'CIRCUS TENT',
            "\xf0\x9f\x8e\xab" => 'TICKET',
            "\xf0\x9f\x8e\xac" => 'CLAPPER BOARD',
            "\xf0\x9f\x8e\xad" => 'PERFORMING ARTS',
            "\xf0\x9f\x8e\xae" => 'VIDEO GAME',
            "\xf0\x9f\x80\x84" => 'MAHJONG TILE RED DRAGON',
            "\xf0\x9f\x8e\xaf" => 'DIRECT HIT',
            "\xf0\x9f\x8e\xb0" => 'SLOT MACHINE',
            "\xf0\x9f\x8e\xb1" => 'BILLIARDS',
            "\xf0\x9f\x8e\xb2" => 'GAME DIE',
            "\xf0\x9f\x8e\xb3" => 'BOWLING',
            "\xf0\x9f\x8e\xb4" => 'FLOWER PLAYING CARDS',
            "\xf0\x9f\x83\x8f" => 'PLAYING CARD BLACK JOKER',
            "\xf0\x9f\x8e\xb5" => 'MUSICAL NOTE',
            "\xf0\x9f\x8e\xb6" => 'MULTIPLE MUSICAL NOTES',
            "\xf0\x9f\x8e\xb7" => 'SAXOPHONE',
            "\xf0\x9f\x8e\xb8" => 'GUITAR',
            "\xf0\x9f\x8e\xb9" => 'MUSICAL KEYBOARD',
            "\xf0\x9f\x8e\xba" => 'TRUMPET',
            "\xf0\x9f\x8e\xbb" => 'VIOLIN',
            "\xf0\x9f\x8e\xbc" => 'MUSICAL SCORE',
            "\xe3\x80\xbd" => 'PART ALTERNATION MARK',
            "\xf0\x9f\x93\xb7" => 'CAMERA',
            "\xf0\x9f\x93\xb9" => 'VIDEO CAMERA',
            "\xf0\x9f\x93\xba" => 'TELEVISION',
            "\xf0\x9f\x93\xbb" => 'RADIO',
            "\xf0\x9f\x93\xbc" => 'VIDEOCASSETTE',
            "\xf0\x9f\x92\x8b" => 'KISS MARK',
            "\xf0\x9f\x92\x8c" => 'LOVE LETTER',
            "\xf0\x9f\x92\x8d" => 'RING',
            "\xf0\x9f\x92\x8e" => 'GEM STONE',
            "\xf0\x9f\x92\x8f" => 'KISS',
            "\xf0\x9f\x92\x90" => 'BOUQUET',
            "\xf0\x9f\x92\x91" => 'COUPLE WITH HEART',
            "\xf0\x9f\x92\x92" => 'WEDDING',
            "\xf0\x9f\x94\x9e" => 'NO ONE UNDER EIGHTEEN SYMBOL',
            "\xc2\xa9" => 'COPYRIGHT SIGN',
            "\xc2\xae" => 'REGISTERED SIGN',
            "\xe2\x84\xa2" => 'TRADE MARK SIGN',
            "\xe2\x84\xb9" => 'INFORMATION SOURCE',
            "#\xe2\x83\xa3" => 'HASH KEY',
            "1\xe2\x83\xa3" => 'KEYCAP 1',
            "2\xe2\x83\xa3" => 'KEYCAP 2',
            "3\xe2\x83\xa3" => 'KEYCAP 3',
            "4\xe2\x83\xa3" => 'KEYCAP 4',
            "5\xe2\x83\xa3" => 'KEYCAP 5',
            "6\xe2\x83\xa3" => 'KEYCAP 6',
            "7\xe2\x83\xa3" => 'KEYCAP 7',
            "8\xe2\x83\xa3" => 'KEYCAP 8',
            "9\xe2\x83\xa3" => 'KEYCAP 9',
            "0\xe2\x83\xa3" => 'KEYCAP 0',
            "\xf0\x9f\x94\x9f" => 'KEYCAP TEN',
            "\xf0\x9f\x93\xb6" => 'ANTENNA WITH BARS',
            "\xf0\x9f\x93\xb3" => 'VIBRATION MODE',
            "\xf0\x9f\x93\xb4" => 'MOBILE PHONE OFF',
            "\xf0\x9f\x8d\x94" => 'HAMBURGER',
            "\xf0\x9f\x8d\x99" => 'RICE BALL',
            "\xf0\x9f\x8d\xb0" => 'SHORTCAKE',
            "\xf0\x9f\x8d\x9c" => 'STEAMING BOWL',
            "\xf0\x9f\x8d\x9e" => 'BREAD',
            "\xf0\x9f\x8d\xb3" => 'COOKING',
            "\xf0\x9f\x8d\xa6" => 'SOFT ICE CREAM',
            "\xf0\x9f\x8d\x9f" => 'FRENCH FRIES',
            "\xf0\x9f\x8d\xa1" => 'DANGO',
            "\xf0\x9f\x8d\x98" => 'RICE CRACKER',
            "\xf0\x9f\x8d\x9a" => 'COOKED RICE',
            "\xf0\x9f\x8d\x9d" => 'SPAGHETTI',
            "\xf0\x9f\x8d\x9b" => 'CURRY AND RICE',
            "\xf0\x9f\x8d\xa2" => 'ODEN',
            "\xf0\x9f\x8d\xa3" => 'SUSHI',
            "\xf0\x9f\x8d\xb1" => 'BENTO BOX',
            "\xf0\x9f\x8d\xb2" => 'POT OF FOOD',
            "\xf0\x9f\x8d\xa7" => 'SHAVED ICE',
            "\xf0\x9f\x8d\x96" => 'MEAT ON BONE',
            "\xf0\x9f\x8d\xa5" => 'FISH CAKE WITH SWIRL DESIGN',
            "\xf0\x9f\x8d\xa0" => 'ROASTED SWEET POTATO',
            "\xf0\x9f\x8d\x95" => 'SLICE OF PIZZA',
            "\xf0\x9f\x8d\x97" => 'POULTRY LEG',
            "\xf0\x9f\x8d\xa8" => 'ICE CREAM',
            "\xf0\x9f\x8d\xa9" => 'DOUGHNUT',
            "\xf0\x9f\x8d\xaa" => 'COOKIE',
            "\xf0\x9f\x8d\xab" => 'CHOCOLATE BAR',
            "\xf0\x9f\x8d\xac" => 'CANDY',
            "\xf0\x9f\x8d\xad" => 'LOLLIPOP',
            "\xf0\x9f\x8d\xae" => 'CUSTARD',
            "\xf0\x9f\x8d\xaf" => 'HONEY POT',
            "\xf0\x9f\x8d\xa4" => 'FRIED SHRIMP',
            "\xf0\x9f\x8d\xb4" => 'FORK AND KNIFE',
            "\xe2\x98\x95" => 'HOT BEVERAGE',
            "\xf0\x9f\x8d\xb8" => 'COCKTAIL GLASS',
            "\xf0\x9f\x8d\xba" => 'BEER MUG',
            "\xf0\x9f\x8d\xb5" => 'TEACUP WITHOUT HANDLE',
            "\xf0\x9f\x8d\xb6" => 'SAKE BOTTLE AND CUP',
            "\xf0\x9f\x8d\xb7" => 'WINE GLASS',
            "\xf0\x9f\x8d\xbb" => 'CLINKING BEER MUGS',
            "\xf0\x9f\x8d\xb9" => 'TROPICAL DRINK',
            "\xe2\x86\x97" => 'NORTH EAST ARROW',
            "\xe2\x86\x98" => 'SOUTH EAST ARROW',
            "\xe2\x86\x96" => 'NORTH WEST ARROW',
            "\xe2\x86\x99" => 'SOUTH WEST ARROW',
            "\xe2\xa4\xb4" => 'ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS',
            "\xe2\xa4\xb5" => 'ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS',
            "\xe2\x86\x94" => 'LEFT RIGHT ARROW',
            "\xe2\x86\x95" => 'UP DOWN ARROW',
            "\xe2\xac\x86" => 'UPWARDS BLACK ARROW',
            "\xe2\xac\x87" => 'DOWNWARDS BLACK ARROW',
            "\xe2\x9e\xa1" => 'BLACK RIGHTWARDS ARROW',
            "\xe2\xac\x85" => 'LEFTWARDS BLACK ARROW',
            "\xe2\x96\xb6" => 'BLACK RIGHT-POINTING TRIANGLE',
            "\xe2\x97\x80" => 'BLACK LEFT-POINTING TRIANGLE',
            "\xe2\x8f\xa9" => 'BLACK RIGHT-POINTING DOUBLE TRIANGLE',
            "\xe2\x8f\xaa" => 'BLACK LEFT-POINTING DOUBLE TRIANGLE',
            "\xe2\x8f\xab" => 'BLACK UP-POINTING DOUBLE TRIANGLE',
            "\xe2\x8f\xac" => 'BLACK DOWN-POINTING DOUBLE TRIANGLE',
            "\xf0\x9f\x94\xba" => 'UP-POINTING RED TRIANGLE',
            "\xf0\x9f\x94\xbb" => 'DOWN-POINTING RED TRIANGLE',
            "\xf0\x9f\x94\xbc" => 'UP-POINTING SMALL RED TRIANGLE',
            "\xf0\x9f\x94\xbd" => 'DOWN-POINTING SMALL RED TRIANGLE',
            "\xe2\xad\x95" => 'HEAVY LARGE CIRCLE',
            "\xe2\x9d\x8c" => 'CROSS MARK',
            "\xe2\x9d\x8e" => 'NEGATIVE SQUARED CROSS MARK',
            "\xe2\x9d\x97" => 'HEAVY EXCLAMATION MARK SYMBOL',
            "\xe2\x81\x89" => 'EXCLAMATION QUESTION MARK',
            "\xe2\x80\xbc" => 'DOUBLE EXCLAMATION MARK',
            "\xe2\x9d\x93" => 'BLACK QUESTION MARK ORNAMENT',
            "\xe2\x9d\x94" => 'WHITE QUESTION MARK ORNAMENT',
            "\xe2\x9d\x95" => 'WHITE EXCLAMATION MARK ORNAMENT',
            "\xe3\x80\xb0" => 'WAVY DASH',
            "\xe2\x9e\xb0" => 'CURLY LOOP',
            "\xe2\x9e\xbf" => 'DOUBLE CURLY LOOP',
            "\xe2\x9d\xa4" => 'HEAVY BLACK HEART',
            "\xf0\x9f\x92\x93" => 'BEATING HEART',
            "\xf0\x9f\x92\x94" => 'BROKEN HEART',
            "\xf0\x9f\x92\x95" => 'TWO HEARTS',
            "\xf0\x9f\x92\x96" => 'SPARKLING HEART',
            "\xf0\x9f\x92\x97" => 'GROWING HEART',
            "\xf0\x9f\x92\x98" => 'HEART WITH ARROW',
            "\xf0\x9f\x92\x99" => 'BLUE HEART',
            "\xf0\x9f\x92\x9a" => 'GREEN HEART',
            "\xf0\x9f\x92\x9b" => 'YELLOW HEART',
            "\xf0\x9f\x92\x9c" => 'PURPLE HEART',
            "\xf0\x9f\x92\x9d" => 'HEART WITH RIBBON',
            "\xf0\x9f\x92\x9e" => 'REVOLVING HEARTS',
            "\xf0\x9f\x92\x9f" => 'HEART DECORATION',
            "\xe2\x99\xa5" => 'BLACK HEART SUIT',
            "\xe2\x99\xa0" => 'BLACK SPADE SUIT',
            "\xe2\x99\xa6" => 'BLACK DIAMOND SUIT',
            "\xe2\x99\xa3" => 'BLACK CLUB SUIT',
            "\xf0\x9f\x9a\xac" => 'SMOKING SYMBOL',
            "\xf0\x9f\x9a\xad" => 'NO SMOKING SYMBOL',
            "\xe2\x99\xbf" => 'WHEELCHAIR SYMBOL',
            "\xf0\x9f\x9a\xa9" => 'TRIANGULAR FLAG ON POST',
            "\xe2\x9a\xa0" => 'WARNING SIGN',
            "\xe2\x9b\x94" => 'NO ENTRY',
            "\xe2\x99\xbb" => 'BLACK UNIVERSAL RECYCLING SYMBOL',
            "\xf0\x9f\x9a\xb2" => 'BICYCLE',
            "\xf0\x9f\x9a\xb6" => 'PEDESTRIAN',
            "\xf0\x9f\x9a\xb9" => 'MENS SYMBOL',
            "\xf0\x9f\x9a\xba" => 'WOMENS SYMBOL',
            "\xf0\x9f\x9b\x80" => 'BATH',
            "\xf0\x9f\x9a\xbb" => 'RESTROOM',
            "\xf0\x9f\x9a\xbd" => 'TOILET',
            "\xf0\x9f\x9a\xbe" => 'WATER CLOSET',
            "\xf0\x9f\x9a\xbc" => 'BABY SYMBOL',
            "\xf0\x9f\x9a\xaa" => 'DOOR',
            "\xf0\x9f\x9a\xab" => 'NO ENTRY SIGN',
            "\xe2\x9c\x94" => 'HEAVY CHECK MARK',
            "\xf0\x9f\x86\x91" => 'SQUARED CL',
            "\xf0\x9f\x86\x92" => 'SQUARED COOL',
            "\xf0\x9f\x86\x93" => 'SQUARED FREE',
            "\xf0\x9f\x86\x94" => 'SQUARED ID',
            "\xf0\x9f\x86\x95" => 'SQUARED NEW',
            "\xf0\x9f\x86\x96" => 'SQUARED NG',
            "\xf0\x9f\x86\x97" => 'SQUARED OK',
            "\xf0\x9f\x86\x98" => 'SQUARED SOS',
            "\xf0\x9f\x86\x99" => 'SQUARED UP WITH EXCLAMATION MARK',
            "\xf0\x9f\x86\x9a" => 'SQUARED VS',
            "\xf0\x9f\x88\x81" => 'SQUARED KATAKANA KOKO',
            "\xf0\x9f\x88\x82" => 'SQUARED KATAKANA SA',
            "\xf0\x9f\x88\xb2" => 'SQUARED CJK UNIFIED IDEOGRAPH-7981',
            "\xf0\x9f\x88\xb3" => 'SQUARED CJK UNIFIED IDEOGRAPH-7A7A',
            "\xf0\x9f\x88\xb4" => 'SQUARED CJK UNIFIED IDEOGRAPH-5408',
            "\xf0\x9f\x88\xb5" => 'SQUARED CJK UNIFIED IDEOGRAPH-6E80',
            "\xf0\x9f\x88\xb6" => 'SQUARED CJK UNIFIED IDEOGRAPH-6709',
            "\xf0\x9f\x88\x9a" => 'SQUARED CJK UNIFIED IDEOGRAPH-7121',
            "\xf0\x9f\x88\xb7" => 'SQUARED CJK UNIFIED IDEOGRAPH-6708',
            "\xf0\x9f\x88\xb8" => 'SQUARED CJK UNIFIED IDEOGRAPH-7533',
            "\xf0\x9f\x88\xb9" => 'SQUARED CJK UNIFIED IDEOGRAPH-5272',
            "\xf0\x9f\x88\xaf" => 'SQUARED CJK UNIFIED IDEOGRAPH-6307',
            "\xf0\x9f\x88\xba" => 'SQUARED CJK UNIFIED IDEOGRAPH-55B6',
            "\xe3\x8a\x99" => 'CIRCLED IDEOGRAPH SECRET',
            "\xe3\x8a\x97" => 'CIRCLED IDEOGRAPH CONGRATULATION',
            "\xf0\x9f\x89\x90" => 'CIRCLED IDEOGRAPH ADVANTAGE',
            "\xf0\x9f\x89\x91" => 'CIRCLED IDEOGRAPH ACCEPT',
            "\xe2\x9e\x95" => 'HEAVY PLUS SIGN',
            "\xe2\x9e\x96" => 'HEAVY MINUS SIGN',
            "\xe2\x9c\x96" => 'HEAVY MULTIPLICATION X',
            "\xe2\x9e\x97" => 'HEAVY DIVISION SIGN',
            "\xf0\x9f\x92\xa0" => 'DIAMOND SHAPE WITH A DOT INSIDE',
            "\xf0\x9f\x92\xa1" => 'ELECTRIC LIGHT BULB',
            "\xf0\x9f\x92\xa2" => 'ANGER SYMBOL',
            "\xf0\x9f\x92\xa3" => 'BOMB',
            "\xf0\x9f\x92\xa4" => 'SLEEPING SYMBOL',
            "\xf0\x9f\x92\xa5" => 'COLLISION SYMBOL',
            "\xf0\x9f\x92\xa6" => 'SPLASHING SWEAT SYMBOL',
            "\xf0\x9f\x92\xa7" => 'DROPLET',
            "\xf0\x9f\x92\xa8" => 'DASH SYMBOL',
            "\xf0\x9f\x92\xa9" => 'PILE OF POO',
            "\xf0\x9f\x92\xaa" => 'FLEXED BICEPS',
            "\xf0\x9f\x92\xab" => 'DIZZY SYMBOL',
            "\xf0\x9f\x92\xac" => 'SPEECH BALLOON',
            "\xe2\x9c\xa8" => 'SPARKLES',
            "\xe2\x9c\xb4" => 'EIGHT POINTED BLACK STAR',
            "\xe2\x9c\xb3" => 'EIGHT SPOKED ASTERISK',
            "\xe2\x9a\xaa" => 'MEDIUM WHITE CIRCLE',
            "\xe2\x9a\xab" => 'MEDIUM BLACK CIRCLE',
            "\xf0\x9f\x94\xb4" => 'LARGE RED CIRCLE',
            "\xf0\x9f\x94\xb5" => 'LARGE BLUE CIRCLE',
            "\xf0\x9f\x94\xb2" => 'BLACK SQUARE BUTTON',
            "\xf0\x9f\x94\xb3" => 'WHITE SQUARE BUTTON',
            "\xe2\xad\x90" => 'WHITE MEDIUM STAR',
            "\xe2\xac\x9c" => 'WHITE LARGE SQUARE',
            "\xe2\xac\x9b" => 'BLACK LARGE SQUARE',
            "\xe2\x96\xab" => 'WHITE SMALL SQUARE',
            "\xe2\x96\xaa" => 'BLACK SMALL SQUARE',
            "\xe2\x97\xbd" => 'WHITE MEDIUM SMALL SQUARE',
            "\xe2\x97\xbe" => 'BLACK MEDIUM SMALL SQUARE',
            "\xe2\x97\xbb" => 'WHITE MEDIUM SQUARE',
            "\xe2\x97\xbc" => 'BLACK MEDIUM SQUARE',
            "\xf0\x9f\x94\xb6" => 'LARGE ORANGE DIAMOND',
            "\xf0\x9f\x94\xb7" => 'LARGE BLUE DIAMOND',
            "\xf0\x9f\x94\xb8" => 'SMALL ORANGE DIAMOND',
            "\xf0\x9f\x94\xb9" => 'SMALL BLUE DIAMOND',
            "\xe2\x9d\x87" => 'SPARKLE',
            "\xf0\x9f\x92\xae" => 'WHITE FLOWER',
            "\xf0\x9f\x92\xaf" => 'HUNDRED POINTS SYMBOL',
            "\xe2\x86\xa9" => 'LEFTWARDS ARROW WITH HOOK',
            "\xe2\x86\xaa" => 'RIGHTWARDS ARROW WITH HOOK',
            "\xf0\x9f\x94\x83" => 'CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS',
            "\xf0\x9f\x94\x8a" => 'SPEAKER WITH THREE SOUND WAVES',
            "\xf0\x9f\x94\x8b" => 'BATTERY',
            "\xf0\x9f\x94\x8c" => 'ELECTRIC PLUG',
            "\xf0\x9f\x94\x8d" => 'LEFT-POINTING MAGNIFYING GLASS',
            "\xf0\x9f\x94\x8e" => 'RIGHT-POINTING MAGNIFYING GLASS',
            "\xf0\x9f\x94\x92" => 'LOCK',
            "\xf0\x9f\x94\x93" => 'OPEN LOCK',
            "\xf0\x9f\x94\x8f" => 'LOCK WITH INK PEN',
            "\xf0\x9f\x94\x90" => 'CLOSED LOCK WITH KEY',
            "\xf0\x9f\x94\x91" => 'KEY',
            "\xf0\x9f\x94\x94" => 'BELL',
            "\xe2\x98\x91" => 'BALLOT BOX WITH CHECK',
            "\xf0\x9f\x94\x98" => 'RADIO BUTTON',
            "\xf0\x9f\x94\x96" => 'BOOKMARK',
            "\xf0\x9f\x94\x97" => 'LINK SYMBOL',
            "\xf0\x9f\x94\x99" => 'BACK WITH LEFTWARDS ARROW ABOVE',
            "\xf0\x9f\x94\x9a" => 'END WITH LEFTWARDS ARROW ABOVE',
            "\xf0\x9f\x94\x9b" => 'ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE',
            "\xf0\x9f\x94\x9c" => 'SOON WITH RIGHTWARDS ARROW ABOVE',
            "\xf0\x9f\x94\x9d" => 'TOP WITH UPWARDS ARROW ABOVE',
            "\xe2\x9c\x85" => 'WHITE HEAVY CHECK MARK',
            "\xe2\x9c\x8a" => 'RAISED FIST',
            "\xe2\x9c\x8b" => 'RAISED HAND',
            "\xe2\x9c\x8c" => 'VICTORY HAND',
            "\xf0\x9f\x91\x8a" => 'FISTED HAND SIGN',
            "\xf0\x9f\x91\x8d" => 'THUMBS UP SIGN',
            "\xe2\x98\x9d" => 'WHITE UP POINTING INDEX',
            "\xf0\x9f\x91\x86" => 'WHITE UP POINTING BACKHAND INDEX',
            "\xf0\x9f\x91\x87" => 'WHITE DOWN POINTING BACKHAND INDEX',
            "\xf0\x9f\x91\x88" => 'WHITE LEFT POINTING BACKHAND INDEX',
            "\xf0\x9f\x91\x89" => 'WHITE RIGHT POINTING BACKHAND INDEX',
            "\xf0\x9f\x91\x8b" => 'WAVING HAND SIGN',
            "\xf0\x9f\x91\x8f" => 'CLAPPING HANDS SIGN',
            "\xf0\x9f\x91\x8c" => 'OK HAND SIGN',
            "\xf0\x9f\x91\x8e" => 'THUMBS DOWN SIGN',
            "\xf0\x9f\x91\x90" => 'OPEN HANDS SIGN',
        ];
    }
}
