emoji-styles 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/index.d.ts +411 -0
- package/dist/index.js +3980 -0
- package/package.json +63 -0
- package/schemas/emoji-provider.schema.json +63 -0
- package/schemas/emoji-theme.schema.json +94 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,3980 @@
|
|
|
1
|
+
// src/fluent-data.ts
|
|
2
|
+
var fluentAssetNames = {
|
|
3
|
+
"1f311": ["New moon", "new_moon"],
|
|
4
|
+
"1f312": ["Waxing crescent moon", "waxing_crescent_moon"],
|
|
5
|
+
"1f313": ["First quarter moon", "first_quarter_moon"],
|
|
6
|
+
"1f314": ["Waxing gibbous moon", "waxing_gibbous_moon"],
|
|
7
|
+
"1f315": ["Full moon", "full_moon"],
|
|
8
|
+
"1f316": ["Waning gibbous moon", "waning_gibbous_moon"],
|
|
9
|
+
"1f317": ["Last quarter moon", "last_quarter_moon"],
|
|
10
|
+
"1f318": ["Waning crescent moon", "waning_crescent_moon"],
|
|
11
|
+
"1f3e0": ["House", "house"],
|
|
12
|
+
"1f684": ["High-speed train", "high-speed_train"],
|
|
13
|
+
"1f6a7": ["Construction", "construction"],
|
|
14
|
+
"2b50": ["Star", "star"],
|
|
15
|
+
"1f346": ["Eggplant", "eggplant"],
|
|
16
|
+
"1f355": ["Pizza", "pizza"],
|
|
17
|
+
"1f376": ["Sake", "sake"],
|
|
18
|
+
"1f9c2": ["Salt", "salt"],
|
|
19
|
+
"1f425": ["Front-facing baby chick", "front-facing_baby_chick"],
|
|
20
|
+
"1f438": ["Frog", "frog"],
|
|
21
|
+
"1f439": ["Hamster", "hamster"],
|
|
22
|
+
"1f43a": ["Wolf", "wolf"],
|
|
23
|
+
"1f43b": ["Bear", "bear"],
|
|
24
|
+
"1f996": ["T-rex", "t-rex"],
|
|
25
|
+
"1f383": ["Jack-o-lantern", "jack-o-lantern"],
|
|
26
|
+
"1f387": ["Sparkler", "sparkler"],
|
|
27
|
+
"1f3af": ["Bullseye", "bullseye"],
|
|
28
|
+
"1f3be": ["Tennis", "tennis"],
|
|
29
|
+
"1f3c0": ["Basketball", "basketball"],
|
|
30
|
+
"1f52b": ["Water pistol", "water_pistol"],
|
|
31
|
+
"1f94d": ["Lacrosse", "lacrosse"],
|
|
32
|
+
"1f9e7": ["Red envelope", "red_envelope"],
|
|
33
|
+
"1f9f5": ["Thread", "thread"],
|
|
34
|
+
"1f9f6": ["Yarn", "yarn"],
|
|
35
|
+
"1fa80": ["Yo-yo", "yo-yo"],
|
|
36
|
+
"1fa85": ["Pi\xF1ata", "pi\xF1ata"],
|
|
37
|
+
"1f455": ["T-shirt", "t-shirt"],
|
|
38
|
+
"1f460": ["High-heeled shoe", "high-heeled_shoe"],
|
|
39
|
+
"1f4c6": ["Tear-off calendar", "tear-off_calendar"],
|
|
40
|
+
"1f4e2": ["Loudspeaker", "loudspeaker"],
|
|
41
|
+
"1f4e7": ["E-mail", "e-mail"],
|
|
42
|
+
"1f4e9": ["Envelope with arrow", "envelope_with_arrow"],
|
|
43
|
+
"1f517": ["Link", "link"],
|
|
44
|
+
"1f526": ["Flashlight", "flashlight"],
|
|
45
|
+
"1f9ec": ["Dna", "dna"],
|
|
46
|
+
"1f9fc": ["Soap", "soap"],
|
|
47
|
+
"1fa71": ["One-piece swimsuit", "one-piece_swimsuit"],
|
|
48
|
+
"1fa7b": ["X-ray", "x-ray"],
|
|
49
|
+
"1f534": ["Red circle", "red_circle"],
|
|
50
|
+
"1f535": ["Blue circle", "blue_circle"],
|
|
51
|
+
"1f6ad": ["No smoking", "no_smoking"],
|
|
52
|
+
"1f6b0": ["Potable water", "potable_water"],
|
|
53
|
+
"1f6b1": ["Non-potable water", "non-potable_water"],
|
|
54
|
+
"1f7e0": ["Orange circle", "orange_circle"],
|
|
55
|
+
"1f7e1": ["Yellow circle", "yellow_circle"],
|
|
56
|
+
"1f7e2": ["Green circle", "green_circle"],
|
|
57
|
+
"1f7e3": ["Purple circle", "purple_circle"],
|
|
58
|
+
"1f7e4": ["Brown circle", "brown_circle"],
|
|
59
|
+
"1f7e5": ["Red square", "red_square"],
|
|
60
|
+
"1f7e6": ["Blue square", "blue_square"],
|
|
61
|
+
"1f7e7": ["Orange square", "orange_square"],
|
|
62
|
+
"1f7e8": ["Yellow square", "yellow_square"],
|
|
63
|
+
"1f7e9": ["Green square", "green_square"],
|
|
64
|
+
"1f7ea": ["Purple square", "purple_square"],
|
|
65
|
+
"1f7eb": ["Brown square", "brown_square"],
|
|
66
|
+
"25fd": ["White medium-small square", "white_medium-small_square"],
|
|
67
|
+
"25fe": ["Black medium-small square", "black_medium-small_square"],
|
|
68
|
+
"26aa": ["White circle", "white_circle"],
|
|
69
|
+
"26ab": ["Black circle", "black_circle"],
|
|
70
|
+
"1f9de": ["Person genie", "person_genie"],
|
|
71
|
+
"1f9df": ["Person zombie", "person_zombie"],
|
|
72
|
+
"1f47d": ["Alien", "alien"],
|
|
73
|
+
"1f4a4": ["Zzz", "zzz"],
|
|
74
|
+
"1f4a5": ["Collision", "collision"],
|
|
75
|
+
"1f4ab": ["Dizzy", "dizzy"],
|
|
76
|
+
"1f635": ["Knocked-out face", "knocked-out_face"],
|
|
77
|
+
"1f63d": ["Kissing cat", "kissing_cat"],
|
|
78
|
+
"1f63e": ["Pouting cat", "pouting_cat"],
|
|
79
|
+
"1f643": ["Upside-down face", "upside-down_face"],
|
|
80
|
+
"1f648": ["See-no-evil monkey", "see-no-evil_monkey"],
|
|
81
|
+
"1f649": ["Hear-no-evil monkey", "hear-no-evil_monkey"],
|
|
82
|
+
"1f64a": ["Speak-no-evil monkey", "speak-no-evil_monkey"],
|
|
83
|
+
"1f910": ["Zipper-mouth face", "zipper-mouth_face"],
|
|
84
|
+
"1f911": ["Money-mouth face", "money-mouth_face"],
|
|
85
|
+
"1f915": ["Face with head-bandage", "face_with_head-bandage"],
|
|
86
|
+
"1f928": ["Face with raised eyebrow", "face_with_raised_eyebrow"],
|
|
87
|
+
"1f929": ["Star-struck", "star-struck"],
|
|
88
|
+
"1f92a": ["Zany face", "zany_face"],
|
|
89
|
+
"1f92b": ["Shushing face", "shushing_face"],
|
|
90
|
+
"1f92c": ["Face with symbols on mouth", "face_with_symbols_on_mouth"],
|
|
91
|
+
"1f92d": ["Face with hand over mouth", "face_with_hand_over_mouth"],
|
|
92
|
+
"1f92e": ["Face vomiting", "face_vomiting"],
|
|
93
|
+
"1f92f": ["Exploding head", "exploding_head"],
|
|
94
|
+
"1f973": ["Partying face", "partying_face"],
|
|
95
|
+
"1f974": ["Woozy face", "woozy_face"],
|
|
96
|
+
"1f975": ["Hot face", "hot_face"],
|
|
97
|
+
"1f976": ["Cold face", "cold_face"],
|
|
98
|
+
"1f97a": ["Pleading face", "pleading_face"]
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// src/fluent-animated-data.ts
|
|
102
|
+
var fluentAnimatedAssetNames = {
|
|
103
|
+
"1f6a1": ["Aerial tramway", "aerial_tramway", false],
|
|
104
|
+
"2708": ["Airplane", "airplane", false],
|
|
105
|
+
"1f6ec": ["Airplane arrival", "airplane_arrival", false],
|
|
106
|
+
"1f6eb": ["Airplane departure", "airplane_departure", false],
|
|
107
|
+
"23f0": ["Alarm clock", "alarm_clock", false],
|
|
108
|
+
"1f47d": ["Alien", "alien", false],
|
|
109
|
+
"1f47e": ["Alien monster", "alien_monster", false],
|
|
110
|
+
"1f691": ["Ambulance", "ambulance", false],
|
|
111
|
+
"1fac0": ["Anatomical heart", "anatomical_heart", false],
|
|
112
|
+
"1f620": ["Angry face", "angry_face", false],
|
|
113
|
+
"1f47f": ["Angry face with horns", "angry_face_with_horns", false],
|
|
114
|
+
"1f627": ["Anguished face", "anguished_face", false],
|
|
115
|
+
"1f41c": ["Ant", "ant", false],
|
|
116
|
+
"1f630": ["Anxious face with sweat", "anxious_face_with_sweat", false],
|
|
117
|
+
"1f69b": ["Articulated lorry", "articulated_lorry", false],
|
|
118
|
+
"1f9d1-200d-1f3a8": ["Artist", "artist", true],
|
|
119
|
+
"1f632": ["Astonished face", "astonished_face", false],
|
|
120
|
+
"1f9d1-200d-1f680": ["Astronaut", "astronaut", true],
|
|
121
|
+
"1f6fa": ["Auto rickshaw", "auto_rickshaw", false],
|
|
122
|
+
"1f697": ["Automobile", "automobile", false],
|
|
123
|
+
"1f476": ["Baby", "baby", true],
|
|
124
|
+
"1f47c": ["Baby angel", "baby_angel", true],
|
|
125
|
+
"1f424": ["Baby chick", "baby_chick", false],
|
|
126
|
+
"1f447": ["Backhand index pointing down", "backhand_index_pointing_down", true],
|
|
127
|
+
"1f448": ["Backhand index pointing left", "backhand_index_pointing_left", true],
|
|
128
|
+
"1f449": ["Backhand index pointing right", "backhand_index_pointing_right", true],
|
|
129
|
+
"1f446": ["Backhand index pointing up", "backhand_index_pointing_up", true],
|
|
130
|
+
"1f9a1": ["Badger", "badger", false],
|
|
131
|
+
"1f488": ["Barber pole", "barber_pole", false],
|
|
132
|
+
"1f987": ["Bat", "bat", false],
|
|
133
|
+
"1f601": ["Beaming face with smiling eyes", "beaming_face_with_smiling_eyes", false],
|
|
134
|
+
"1f43b": ["Bear", "bear", false],
|
|
135
|
+
"1f493": ["Beating heart", "beating_heart", false],
|
|
136
|
+
"1f9ab": ["Beaver", "beaver", false],
|
|
137
|
+
"1f37a": ["Beer mug", "beer_mug", false],
|
|
138
|
+
"1fab2": ["Beetle", "beetle", false],
|
|
139
|
+
"1f426": ["Bird", "bird", false],
|
|
140
|
+
"1f382": ["Birthday cake", "birthday_cake", false],
|
|
141
|
+
"1f9ac": ["Bison", "bison", false],
|
|
142
|
+
"1f426-200d-2b1b": ["Black bird", "black_bird", false],
|
|
143
|
+
"1f408-200d-2b1b": ["Black cat", "black_cat", false],
|
|
144
|
+
"1f3f4": ["Black flag", "black_flag", false],
|
|
145
|
+
"1f5a4": ["Black heart", "black_heart", false],
|
|
146
|
+
"1f421": ["Blowfish", "blowfish", false],
|
|
147
|
+
"1f499": ["Blue heart", "blue_heart", false],
|
|
148
|
+
"1f417": ["Boar", "boar", false],
|
|
149
|
+
"1f4a3": ["Bomb", "bomb", false],
|
|
150
|
+
"1f9b4": ["Bone", "bone", false],
|
|
151
|
+
"1f37e": ["Bottle with popping cork", "bottle_with_popping_cork", false],
|
|
152
|
+
"1f466": ["Boy", "boy", true],
|
|
153
|
+
"1f9e0": ["Brain", "brain", false],
|
|
154
|
+
"1f931": ["Breast feeding", "breast_feeding", true],
|
|
155
|
+
"1f494": ["Broken heart", "broken_heart", false],
|
|
156
|
+
"1f90e": ["Brown heart", "brown_heart", false],
|
|
157
|
+
"1f41b": ["Bug", "bug", false],
|
|
158
|
+
"1f68c": ["Bus", "bus", false],
|
|
159
|
+
"1f464": ["Bust in silhouette", "bust_in_silhouette", false],
|
|
160
|
+
"1f465": ["Busts in silhouette", "busts_in_silhouette", false],
|
|
161
|
+
"1f98b": ["Butterfly", "butterfly", false],
|
|
162
|
+
"1f919": ["Call me hand", "call_me_hand", true],
|
|
163
|
+
"1f42a": ["Camel", "camel", false],
|
|
164
|
+
"1f4f8": ["Camera with flash", "camera_with_flash", false],
|
|
165
|
+
"1f6f6": ["Canoe", "canoe", false],
|
|
166
|
+
"1f408": ["Cat", "cat", false],
|
|
167
|
+
"1f431": ["Cat face", "cat_face", false],
|
|
168
|
+
"1f639": ["Cat with tears of joy", "cat_with_tears_of_joy", false],
|
|
169
|
+
"1f63c": ["Cat with wry smile", "cat_with_wry_smile", false],
|
|
170
|
+
"1f3c1": ["Chequered flag", "chequered_flag", false],
|
|
171
|
+
"1f414": ["Chicken", "chicken", false],
|
|
172
|
+
"1f9d2": ["Child", "child", true],
|
|
173
|
+
"1f43f": ["Chipmunk", "chipmunk", false],
|
|
174
|
+
"1f384": ["Christmas tree", "christmas_tree", false],
|
|
175
|
+
"1f44f": ["Clapping hands", "clapping_hands", true],
|
|
176
|
+
"1f37b": ["Clinking beer mugs", "clinking_beer_mugs", false],
|
|
177
|
+
"1f942": ["Clinking glasses", "clinking_glasses", false],
|
|
178
|
+
"1f302": ["Closed umbrella", "closed_umbrella", false],
|
|
179
|
+
"2601": ["Cloud", "cloud", false],
|
|
180
|
+
"1f329": ["Cloud with lightning", "cloud_with_lightning", false],
|
|
181
|
+
"26c8": ["Cloud with lightning and rain", "cloud_with_lightning_and_rain", false],
|
|
182
|
+
"1f327": ["Cloud with rain", "cloud_with_rain", false],
|
|
183
|
+
"1f328": ["Cloud with snow", "cloud_with_snow", false],
|
|
184
|
+
"1f921": ["Clown face", "clown_face", false],
|
|
185
|
+
"1fab3": ["Cockroach", "cockroach", false],
|
|
186
|
+
"1f378": ["Cocktail glass", "cocktail_glass", false],
|
|
187
|
+
"1f976": ["Cold face", "cold_face", false],
|
|
188
|
+
"2604": ["Comet", "comet", false],
|
|
189
|
+
"1f9ed": ["Compass", "compass", false],
|
|
190
|
+
"1f616": ["Confounded face", "confounded_face", false],
|
|
191
|
+
"1f615": ["Confused face", "confused_face", false],
|
|
192
|
+
"1f477": ["Construction worker", "construction_worker", true],
|
|
193
|
+
"1f9d1-200d-1f373": ["Cook", "cook", true],
|
|
194
|
+
"1f404": ["Cow", "cow", false],
|
|
195
|
+
"1f42e": ["Cow face", "cow_face", false],
|
|
196
|
+
"1f920": ["Cowboy hat face", "cowboy_hat_face", false],
|
|
197
|
+
"1f980": ["Crab", "crab", false],
|
|
198
|
+
"1f997": ["Cricket", "cricket", false],
|
|
199
|
+
"1f40a": ["Crocodile", "crocodile", false],
|
|
200
|
+
"1f91e": ["Crossed fingers", "crossed_fingers", true],
|
|
201
|
+
"1f38c": ["Crossed flags", "crossed_flags", false],
|
|
202
|
+
"1f63f": ["Crying cat", "crying_cat", false],
|
|
203
|
+
"1f622": ["Crying face", "crying_face", false],
|
|
204
|
+
"1f52e": ["Crystal ball", "crystal_ball", false],
|
|
205
|
+
"1f300": ["Cyclone", "cyclone", false],
|
|
206
|
+
"1f98c": ["Deer", "deer", false],
|
|
207
|
+
"1f69a": ["Delivery truck", "delivery_truck", false],
|
|
208
|
+
"1f575": ["Detective", "detective", true],
|
|
209
|
+
"1f61e": ["Disappointed face", "disappointed_face", false],
|
|
210
|
+
"1f978": ["Disguised face", "disguised_face", false],
|
|
211
|
+
"1f9a4": ["Dodo", "dodo", false],
|
|
212
|
+
"1f415": ["Dog", "dog", false],
|
|
213
|
+
"1f436": ["Dog face", "dog_face", false],
|
|
214
|
+
"1f42c": ["Dolphin", "dolphin", false],
|
|
215
|
+
"1facf": ["Donkey", "donkey", false],
|
|
216
|
+
"1f54a": ["Dove", "dove", false],
|
|
217
|
+
"1f613": ["Downcast face with sweat", "downcast_face_with_sweat", false],
|
|
218
|
+
"1f409": ["Dragon", "dragon", false],
|
|
219
|
+
"1f432": ["Dragon face", "dragon_face", false],
|
|
220
|
+
"1f924": ["Drooling face", "drooling_face", false],
|
|
221
|
+
"1f4a7": ["Droplet", "droplet", false],
|
|
222
|
+
"1f986": ["Duck", "duck", false],
|
|
223
|
+
"1f985": ["Eagle", "eagle", false],
|
|
224
|
+
"1f442": ["Ear", "ear", true],
|
|
225
|
+
"1f9bb": ["Ear with hearing aid", "ear_with_hearing_aid", true],
|
|
226
|
+
"1f557": ["Eight oclock", "eight_oclock", false],
|
|
227
|
+
"1f563": ["Eight-thirty", "eight-thirty", false],
|
|
228
|
+
"1f418": ["Elephant", "elephant", false],
|
|
229
|
+
"1f55a": ["Eleven oclock", "eleven_oclock", false],
|
|
230
|
+
"1f566": ["Eleven-thirty", "eleven-thirty", false],
|
|
231
|
+
"1f411": ["Ewe", "ewe", false],
|
|
232
|
+
"1f92f": ["Exploding head", "exploding_head", false],
|
|
233
|
+
"1f441": ["Eye", "eye", false],
|
|
234
|
+
"1f440": ["Eyes", "eyes", false],
|
|
235
|
+
"1f618": ["Face blowing a kiss", "face_blowing_a_kiss", false],
|
|
236
|
+
"1f62e-200d-1f4a8": ["Face exhaling", "face_exhaling", false],
|
|
237
|
+
"1f979": ["Face holding back tears", "face_holding_back_tears", false],
|
|
238
|
+
"1f636-200d-1f32b": ["Face in clouds", "face_in_clouds", false],
|
|
239
|
+
"1f60b": ["Face savoring food", "face_savoring_food", false],
|
|
240
|
+
"1f631": ["Face screaming in fear", "face_screaming_in_fear", false],
|
|
241
|
+
"1f92e": ["Face vomiting", "face_vomiting", false],
|
|
242
|
+
"1f92d": ["Face with hand over mouth", "face_with_hand_over_mouth", false],
|
|
243
|
+
"1f915": ["Face with head-bandage", "face_with_head-bandage", false],
|
|
244
|
+
"1f637": ["Face with medical mask", "face_with_medical_mask", false],
|
|
245
|
+
"1f9d0": ["Face with monocle", "face_with_monocle", false],
|
|
246
|
+
"1fae2": ["Face with open eyes and hand over mouth", "face_with_open_eyes_and_hand_over_mouth", false],
|
|
247
|
+
"1f62e": ["Face with open mouth", "face_with_open_mouth", false],
|
|
248
|
+
"1f928": ["Face with raised eyebrow", "face_with_raised_eyebrow", false],
|
|
249
|
+
"1f644": ["Face with rolling eyes", "face_with_rolling_eyes", false],
|
|
250
|
+
"1f635-200d-1f4ab": ["Face with spiral eyes", "face_with_spiral_eyes", false],
|
|
251
|
+
"1f624": ["Face with steam from nose", "face_with_steam_from_nose", false],
|
|
252
|
+
"1f92c": ["Face with symbols on mouth", "face_with_symbols_on_mouth", false],
|
|
253
|
+
"1f602": ["Face with tears of joy", "face_with_tears_of_joy", false],
|
|
254
|
+
"1f912": ["Face with thermometer", "face_with_thermometer", false],
|
|
255
|
+
"1f61b": ["Face with tongue", "face_with_tongue", false],
|
|
256
|
+
"1f636": ["Face without mouth", "face_without_mouth", false],
|
|
257
|
+
"1f9d1-200d-1f3ed": ["Factory worker", "factory_worker", true],
|
|
258
|
+
"1f9d1-200d-1f33e": ["Farmer", "farmer", true],
|
|
259
|
+
"1f628": ["Fearful face", "fearful_face", false],
|
|
260
|
+
"1f3a1": ["Ferris wheel", "ferris_wheel", false],
|
|
261
|
+
"26f4": ["Ferry", "ferry", false],
|
|
262
|
+
"1f525": ["Fire", "fire", false],
|
|
263
|
+
"1f692": ["Fire engine", "fire_engine", false],
|
|
264
|
+
"1f9d1-200d-1f692": ["Firefighter", "firefighter", true],
|
|
265
|
+
"1f31b": ["First quarter moon face", "first_quarter_moon_face", false],
|
|
266
|
+
"1f41f": ["Fish", "fish", false],
|
|
267
|
+
"1f554": ["Five oclock", "five_oclock", false],
|
|
268
|
+
"1f560": ["Five-thirty", "five-thirty", false],
|
|
269
|
+
"1f9a9": ["Flamingo", "flamingo", false],
|
|
270
|
+
"1f4aa": ["Flexed biceps", "flexed_biceps", true],
|
|
271
|
+
"1f633": ["Flushed face", "flushed_face", false],
|
|
272
|
+
"1fab0": ["Fly", "fly", false],
|
|
273
|
+
"1f6f8": ["Flying saucer", "flying_saucer", false],
|
|
274
|
+
"1f32b": ["Fog", "fog", false],
|
|
275
|
+
"1f64f": ["Folded hands", "folded_hands", true],
|
|
276
|
+
"1f9b6": ["Foot", "foot", true],
|
|
277
|
+
"1f463": ["Footprints", "footprints", false],
|
|
278
|
+
"26f2": ["Fountain", "fountain", false],
|
|
279
|
+
"1f553": ["Four oclock", "four_oclock", false],
|
|
280
|
+
"1f55f": ["Four-thirty", "four-thirty", false],
|
|
281
|
+
"1f98a": ["Fox", "fox", false],
|
|
282
|
+
"1f438": ["Frog", "frog", false],
|
|
283
|
+
"1f425": ["Front-facing baby chick", "front-facing_baby_chick", false],
|
|
284
|
+
"2639": ["Frowning face", "frowning_face", false],
|
|
285
|
+
"1f626": ["Frowning face with open mouth", "frowning_face_with_open_mouth", false],
|
|
286
|
+
"1f31d": ["Full moon face", "full_moon_face", false],
|
|
287
|
+
"1f47b": ["Ghost", "ghost", false],
|
|
288
|
+
"1f992": ["Giraffe", "giraffe", false],
|
|
289
|
+
"1f467": ["Girl", "girl", true],
|
|
290
|
+
"1f31f": ["Glowing star", "glowing_star", false],
|
|
291
|
+
"1f410": ["Goat", "goat", false],
|
|
292
|
+
"1f47a": ["Goblin", "goblin", false],
|
|
293
|
+
"1fabf": ["Goose", "goose", false],
|
|
294
|
+
"1f98d": ["Gorilla", "gorilla", false],
|
|
295
|
+
"1f49a": ["Green heart", "green_heart", false],
|
|
296
|
+
"1fa76": ["Grey heart", "grey_heart", false],
|
|
297
|
+
"1f62c": ["Grimacing face", "grimacing_face", false],
|
|
298
|
+
"1f63a": ["Grinning cat", "grinning_cat", false],
|
|
299
|
+
"1f638": ["Grinning cat with smiling eyes", "grinning_cat_with_smiling_eyes", false],
|
|
300
|
+
"1f600": ["Grinning face", "grinning_face", false],
|
|
301
|
+
"1f603": ["Grinning face with big eyes", "grinning_face_with_big_eyes", false],
|
|
302
|
+
"1f604": ["Grinning face with smiling eyes", "grinning_face_with_smiling_eyes", false],
|
|
303
|
+
"1f605": ["Grinning face with sweat", "grinning_face_with_sweat", false],
|
|
304
|
+
"1f606": ["Grinning squinting face", "grinning_squinting_face", false],
|
|
305
|
+
"1f497": ["Growing heart", "growing_heart", false],
|
|
306
|
+
"1f482": ["Guard", "guard", true],
|
|
307
|
+
"1f9ae": ["Guide dog", "guide_dog", false],
|
|
308
|
+
"1f439": ["Hamster", "hamster", false],
|
|
309
|
+
"1f590": ["Hand with fingers splayed", "hand_with_fingers_splayed", true],
|
|
310
|
+
"1faf0": ["Hand with index finger and thumb crossed", "hand_with_index_finger_and_thumb_crossed", true],
|
|
311
|
+
"1f91d": ["Handshake", "handshake", true],
|
|
312
|
+
"1f423": ["Hatching chick", "hatching_chick", false],
|
|
313
|
+
"1f642-200d-2194": ["Head shaking horizontally", "head_shaking_horizontally", false],
|
|
314
|
+
"1f642-200d-2195": ["Head shaking vertically", "head_shaking_vertically", false],
|
|
315
|
+
"1f9d1-200d-2695": ["Health worker", "health_worker", true],
|
|
316
|
+
"1f649": ["Hear-no-evil monkey", "hear-no-evil_monkey", false],
|
|
317
|
+
"1f49f": ["Heart decoration", "heart_decoration", false],
|
|
318
|
+
"2763": ["Heart exclamation", "heart_exclamation", false],
|
|
319
|
+
"1faf6": ["Heart hands", "heart_hands", true],
|
|
320
|
+
"2764-200d-1f525": ["Heart on fire", "heart_on_fire", false],
|
|
321
|
+
"1f498": ["Heart with arrow", "heart_with_arrow", false],
|
|
322
|
+
"1f49d": ["Heart with ribbon", "heart_with_ribbon", false],
|
|
323
|
+
"1f994": ["Hedgehog", "hedgehog", false],
|
|
324
|
+
"1f681": ["Helicopter", "helicopter", false],
|
|
325
|
+
"26a1": ["High voltage", "high_voltage", false],
|
|
326
|
+
"1f99b": ["Hippopotamus", "hippopotamus", false],
|
|
327
|
+
"1f41d": ["Honeybee", "honeybee", false],
|
|
328
|
+
"1f40e": ["Horse", "horse", false],
|
|
329
|
+
"1f434": ["Horse face", "horse_face", false],
|
|
330
|
+
"1f3c7": ["Horse racing", "horse_racing", true],
|
|
331
|
+
"2615": ["Hot beverage", "hot_beverage", false],
|
|
332
|
+
"1f975": ["Hot face", "hot_face", false],
|
|
333
|
+
"231b": ["Hourglass done", "hourglass_done", false],
|
|
334
|
+
"23f3": ["Hourglass not done", "hourglass_not_done", false],
|
|
335
|
+
"1f917": ["Hugging face", "hugging_face", false],
|
|
336
|
+
"1f4af": ["Hundred points", "hundred_points", false],
|
|
337
|
+
"1f62f": ["Hushed face", "hushed_face", false],
|
|
338
|
+
"1f6d6": ["Hut", "hut", false],
|
|
339
|
+
"1faf5": ["Index pointing at the viewer", "index_pointing_at_the_viewer", true],
|
|
340
|
+
"261d": ["Index pointing up", "index_pointing_up", true],
|
|
341
|
+
"1f383": ["Jack-o-lantern", "jack-o-lantern", false],
|
|
342
|
+
"1fabc": ["Jellyfish", "jellyfish", false],
|
|
343
|
+
"1f9d1-200d-2696": ["Judge", "judge", true],
|
|
344
|
+
"1f998": ["Kangaroo", "kangaroo", false],
|
|
345
|
+
"1f63d": ["Kissing cat", "kissing_cat", false],
|
|
346
|
+
"1f617": ["Kissing face", "kissing_face", false],
|
|
347
|
+
"1f61a": ["Kissing face with closed eyes", "kissing_face_with_closed_eyes", false],
|
|
348
|
+
"1f619": ["Kissing face with smiling eyes", "kissing_face_with_smiling_eyes", false],
|
|
349
|
+
"1f635": ["Knocked-out face", "knocked-out_face", false],
|
|
350
|
+
"1f428": ["Koala", "koala", false],
|
|
351
|
+
"1f41e": ["Lady beetle", "lady_beetle", false],
|
|
352
|
+
"1f31c": ["Last quarter moon face", "last_quarter_moon_face", false],
|
|
353
|
+
"1f343": ["Leaf fluttering in wind", "leaf_fluttering_in_wind", false],
|
|
354
|
+
"1f91b": ["Left-facing fist", "left-facing_fist", true],
|
|
355
|
+
"1faf2": ["Leftwards hand", "leftwards_hand", true],
|
|
356
|
+
"1faf7": ["Leftwards pushing hand", "leftwards_pushing_hand", true],
|
|
357
|
+
"1f9b5": ["Leg", "leg", true],
|
|
358
|
+
"1f406": ["Leopard", "leopard", false],
|
|
359
|
+
"1fa75": ["Light blue heart", "light_blue_heart", false],
|
|
360
|
+
"1f688": ["Light rail", "light_rail", false],
|
|
361
|
+
"1f981": ["Lion", "lion", false],
|
|
362
|
+
"1f98e": ["Lizard", "lizard", false],
|
|
363
|
+
"1f999": ["Llama", "llama", false],
|
|
364
|
+
"1f99e": ["Lobster", "lobster", false],
|
|
365
|
+
"1f682": ["Locomotive", "locomotive", false],
|
|
366
|
+
"1f62d": ["Loudly crying face", "loudly_crying_face", false],
|
|
367
|
+
"1f48c": ["Love letter", "love_letter", false],
|
|
368
|
+
"1f91f": ["Love-you gesture", "love-you_gesture", true],
|
|
369
|
+
"1fac1": ["Lungs", "lungs", false],
|
|
370
|
+
"1f925": ["Lying face", "lying_face", false],
|
|
371
|
+
"1f9a3": ["Mammoth", "mammoth", false],
|
|
372
|
+
"1f468": ["Man", "man", true],
|
|
373
|
+
"1f468-200d-1f3a8": ["Man artist", "man_artist", true],
|
|
374
|
+
"1f468-200d-1f680": ["Man astronaut", "man_astronaut", true],
|
|
375
|
+
"1f468-200d-1f9b2": ["Man bald", "man_bald", true],
|
|
376
|
+
"1f9d4-200d-2642": ["Man beard", "man_beard", true],
|
|
377
|
+
"1f6b4-200d-2642": ["Man biking", "man_biking", true],
|
|
378
|
+
"1f471-200d-2642": ["Man blonde hair", "man_blonde_hair", true],
|
|
379
|
+
"26f9-200d-2642": ["Man bouncing ball", "man_bouncing_ball", true],
|
|
380
|
+
"1f647-200d-2642": ["Man bowing", "man_bowing", true],
|
|
381
|
+
"1f938-200d-2642": ["Man cartwheeling", "man_cartwheeling", true],
|
|
382
|
+
"1f9d7-200d-2642": ["Man climbing", "man_climbing", true],
|
|
383
|
+
"1f477-200d-2642": ["Man construction worker", "man_construction_worker", true],
|
|
384
|
+
"1f468-200d-1f373": ["Man cook", "man_cook", true],
|
|
385
|
+
"1f468-200d-1f9b1": ["Man curly hair", "man_curly_hair", true],
|
|
386
|
+
"1f57a": ["Man dancing", "man_dancing", true],
|
|
387
|
+
"1f575-200d-2642": ["Man detective", "man_detective", true],
|
|
388
|
+
"1f9dd-200d-2642": ["Man elf", "man_elf", true],
|
|
389
|
+
"1f926-200d-2642": ["Man facepalming", "man_facepalming", true],
|
|
390
|
+
"1f468-200d-1f3ed": ["Man factory worker", "man_factory_worker", true],
|
|
391
|
+
"1f9da-200d-2642": ["Man fairy", "man_fairy", true],
|
|
392
|
+
"1f468-200d-1f33e": ["Man farmer", "man_farmer", true],
|
|
393
|
+
"1f468-200d-1f37c": ["Man feeding baby", "man_feeding_baby", true],
|
|
394
|
+
"1f468-200d-1f692": ["Man firefighter", "man_firefighter", true],
|
|
395
|
+
"1f64d-200d-2642": ["Man frowning", "man_frowning", true],
|
|
396
|
+
"1f9de-200d-2642": ["Man genie", "man_genie", false],
|
|
397
|
+
"1f645-200d-2642": ["Man gesturing no", "man_gesturing_no", true],
|
|
398
|
+
"1f646-200d-2642": ["Man gesturing ok", "man_gesturing_ok", true],
|
|
399
|
+
"1f487-200d-2642": ["Man getting haircut", "man_getting_haircut", true],
|
|
400
|
+
"1f486-200d-2642": ["Man getting massage", "man_getting_massage", true],
|
|
401
|
+
"1f3cc-200d-2642": ["Man golfing", "man_golfing", true],
|
|
402
|
+
"1f482-200d-2642": ["Man guard", "man_guard", true],
|
|
403
|
+
"1f468-200d-2695": ["Man health worker", "man_health_worker", true],
|
|
404
|
+
"1f9d8-200d-2642": ["Man in lotus position", "man_in_lotus_position", true],
|
|
405
|
+
"1f468-200d-1f9bd": ["Man in manual wheelchair", "man_in_manual_wheelchair", true],
|
|
406
|
+
"1f468-200d-1f9bd-200d-27a1": ["Man in manual wheelchair facing right", "man_in_manual_wheelchair_facing_right", true],
|
|
407
|
+
"1f468-200d-1f9bc": ["Man in motorized wheelchair", "man_in_motorized_wheelchair", true],
|
|
408
|
+
"1f468-200d-1f9bc-200d-27a1": ["Man in motorized wheelchair facing right", "man_in_motorized_wheelchair_facing_right", true],
|
|
409
|
+
"1f9d6-200d-2642": ["Man in steamy room", "man_in_steamy_room", true],
|
|
410
|
+
"1f935-200d-2642": ["Man in tuxedo", "man_in_tuxedo", true],
|
|
411
|
+
"1f468-200d-2696": ["Man judge", "man_judge", true],
|
|
412
|
+
"1f939-200d-2642": ["Man juggling", "man_juggling", true],
|
|
413
|
+
"1f3cb-200d-2642": ["Man lifting weights", "man_lifting_weights", true],
|
|
414
|
+
"1f9d9-200d-2642": ["Man mage", "man_mage", true],
|
|
415
|
+
"1f468-200d-1f527": ["Man mechanic", "man_mechanic", true],
|
|
416
|
+
"1f9dc-200d-2642": ["Man merpeople", "man_merpeople", true],
|
|
417
|
+
"1f6b5-200d-2642": ["Man mountain biking", "man_mountain_biking", true],
|
|
418
|
+
"1f468-200d-1f4bc": ["Man office worker", "man_office_worker", true],
|
|
419
|
+
"1f468-200d-2708": ["Man pilot", "man_pilot", true],
|
|
420
|
+
"1f93e-200d-2642": ["Man playing handball", "man_playing_handball", true],
|
|
421
|
+
"1f93d-200d-2642": ["Man playing water polo", "man_playing_water_polo", true],
|
|
422
|
+
"1f46e-200d-2642": ["Man police officer", "man_police_officer", true],
|
|
423
|
+
"1f64e-200d-2642": ["Man pouting", "man_pouting", true],
|
|
424
|
+
"1f64b-200d-2642": ["Man raising hand", "man_raising_hand", true],
|
|
425
|
+
"1f468-200d-1f9b0": ["Man red hair", "man_red_hair", true],
|
|
426
|
+
"1f6a3-200d-2642": ["Man rowing boat", "man_rowing_boat", true],
|
|
427
|
+
"1f3c3-200d-2642": ["Man running", "man_running", true],
|
|
428
|
+
"1f3c3-200d-2642-200d-27a1": ["Man running facing right", "man_running_facing_right", true],
|
|
429
|
+
"1f468-200d-1f52c": ["Man scientist", "man_scientist", true],
|
|
430
|
+
"1f937-200d-2642": ["Man shrugging", "man_shrugging", true],
|
|
431
|
+
"1f468-200d-1f3a4": ["Man singer", "man_singer", true],
|
|
432
|
+
"1f9cd-200d-2642": ["Man standing", "man_standing", true],
|
|
433
|
+
"1f468-200d-1f393": ["Man student", "man_student", true],
|
|
434
|
+
"1f9b8-200d-2642": ["Man superhero", "man_superhero", true],
|
|
435
|
+
"1f9b9-200d-2642": ["Man supervillain", "man_supervillain", true],
|
|
436
|
+
"1f3c4-200d-2642": ["Man surfing", "man_surfing", true],
|
|
437
|
+
"1f3ca-200d-2642": ["Man swimming", "man_swimming", true],
|
|
438
|
+
"1f468-200d-1f3eb": ["Man teacher", "man_teacher", true],
|
|
439
|
+
"1f481-200d-2642": ["Man tipping hand", "man_tipping_hand", true],
|
|
440
|
+
"1f9db-200d-2642": ["Man vampire", "man_vampire", true],
|
|
441
|
+
"1f6b6-200d-2642": ["Man walking", "man_walking", true],
|
|
442
|
+
"1f6b6-200d-2642-200d-27a1": ["Man walking facing right", "man_walking_facing_right", true],
|
|
443
|
+
"1f473-200d-2642": ["Man wearing turban", "man_wearing_turban", true],
|
|
444
|
+
"1f468-200d-1f9b3": ["Man white hair", "man_white_hair", true],
|
|
445
|
+
"1f46f-200d-2642": ["Man with bunny ears", "man_with_bunny_ears", true],
|
|
446
|
+
"1f470-200d-2642": ["Man with veil", "man_with_veil", true],
|
|
447
|
+
"1f468-200d-1f9af": ["Man with white cane", "man_with_white_cane", true],
|
|
448
|
+
"1f468-200d-1f9af-200d-27a1": ["Man with white cane facing right", "man_with_white_cane_facing_right", true],
|
|
449
|
+
"1f93c-200d-2642": ["Man wrestling", "man_wrestling", true],
|
|
450
|
+
"1f9df-200d-2642": ["Man zombie", "man_zombie", false],
|
|
451
|
+
"1f570": ["Mantelpiece clock", "mantelpiece_clock", false],
|
|
452
|
+
"1fa87": ["Maracas", "maracas", false],
|
|
453
|
+
"1f9d1-200d-1f527": ["Mechanic", "mechanic", true],
|
|
454
|
+
"1f9be": ["Mechanical arm", "mechanical_arm", false],
|
|
455
|
+
"1f9bf": ["Mechanical leg", "mechanical_leg", false],
|
|
456
|
+
"1fae0": ["Melting face", "melting_face", false],
|
|
457
|
+
"2764-200d-1fa79": ["Mending heart", "mending_heart", false],
|
|
458
|
+
"1f9a0": ["Microbe", "microbe", false],
|
|
459
|
+
"1f595": ["Middle finger", "middle_finger", true],
|
|
460
|
+
"1f30c": ["Milky way", "milky_way", false],
|
|
461
|
+
"1f690": ["Minibus", "minibus", false],
|
|
462
|
+
"1f911": ["Money-mouth face", "money-mouth_face", false],
|
|
463
|
+
"1f412": ["Monkey", "monkey", false],
|
|
464
|
+
"1f435": ["Monkey face", "monkey_face", false],
|
|
465
|
+
"1f69d": ["Monorail", "monorail", false],
|
|
466
|
+
"1face": ["Moose", "moose", false],
|
|
467
|
+
"1f99f": ["Mosquito", "mosquito", false],
|
|
468
|
+
"1f6e5": ["Motor boat", "motor_boat", false],
|
|
469
|
+
"1f3cd": ["Motorcycle", "motorcycle", false],
|
|
470
|
+
"1f6a0": ["Mountain cableway", "mountain_cableway", false],
|
|
471
|
+
"1f401": ["Mouse", "mouse", false],
|
|
472
|
+
"1f42d": ["Mouse face", "mouse_face", false],
|
|
473
|
+
"1f444": ["Mouth", "mouth", false],
|
|
474
|
+
"1f936": ["Mrs claus", "mrs_claus", true],
|
|
475
|
+
"1f3b6": ["Musical notes", "musical_notes", false],
|
|
476
|
+
"1f9d1-200d-1f384": ["Mx claus", "mx_claus", true],
|
|
477
|
+
"1f485": ["Nail polish", "nail_polish", true],
|
|
478
|
+
"1f922": ["Nauseated face", "nauseated_face", false],
|
|
479
|
+
"1f913": ["Nerd face", "nerd_face", false],
|
|
480
|
+
"1f610": ["Neutral face", "neutral_face", false],
|
|
481
|
+
"1f31a": ["New moon face", "new_moon_face", false],
|
|
482
|
+
"1f558": ["Nine oclock", "nine_oclock", false],
|
|
483
|
+
"1f564": ["Nine-thirty", "nine-thirty", false],
|
|
484
|
+
"1f977": ["Ninja", "ninja", true],
|
|
485
|
+
"1f443": ["Nose", "nose", true],
|
|
486
|
+
"1f419": ["Octopus", "octopus", false],
|
|
487
|
+
"1f9d1-200d-1f4bc": ["Office worker", "office_worker", true],
|
|
488
|
+
"1f479": ["Ogre", "ogre", false],
|
|
489
|
+
"1f44c": ["Ok hand", "ok_hand", true],
|
|
490
|
+
"1f474": ["Old man", "old_man", true],
|
|
491
|
+
"1f475": ["Old woman", "old_woman", true],
|
|
492
|
+
"1f9d3": ["Older person", "older_person", true],
|
|
493
|
+
"1f698": ["Oncoming automobile", "oncoming_automobile", false],
|
|
494
|
+
"1f44a": ["Oncoming fist", "oncoming_fist", true],
|
|
495
|
+
"1f694": ["Oncoming police car", "oncoming_police_car", false],
|
|
496
|
+
"1f696": ["Oncoming taxi", "oncoming_taxi", false],
|
|
497
|
+
"1f550": ["One oclock", "one_oclock", false],
|
|
498
|
+
"1f55c": ["One-thirty", "one-thirty", false],
|
|
499
|
+
"1f450": ["Open hands", "open_hands", true],
|
|
500
|
+
"1f9e1": ["Orange heart", "orange_heart", false],
|
|
501
|
+
"1f9a7": ["Orangutan", "orangutan", false],
|
|
502
|
+
"1f9a6": ["Otter", "otter", false],
|
|
503
|
+
"1f989": ["Owl", "owl", false],
|
|
504
|
+
"1f402": ["Ox", "ox", false],
|
|
505
|
+
"1faf3": ["Palm down hand", "palm_down_hand", true],
|
|
506
|
+
"1faf4": ["Palm up hand", "palm_up_hand", true],
|
|
507
|
+
"1f932": ["Palms up together", "palms_up_together", true],
|
|
508
|
+
"1f43c": ["Panda", "panda", false],
|
|
509
|
+
"1fa82": ["Parachute", "parachute", false],
|
|
510
|
+
"1f99c": ["Parrot", "parrot", false],
|
|
511
|
+
"1f389": ["Party popper", "party_popper", false],
|
|
512
|
+
"1f973": ["Partying face", "partying_face", false],
|
|
513
|
+
"1f6f3": ["Passenger ship", "passenger_ship", false],
|
|
514
|
+
"1f43e": ["Paw prints", "paw_prints", false],
|
|
515
|
+
"1f99a": ["Peacock", "peacock", false],
|
|
516
|
+
"1f427": ["Penguin", "penguin", false],
|
|
517
|
+
"1f614": ["Pensive face", "pensive_face", false],
|
|
518
|
+
"1fac2": ["People hugging", "people_hugging", false],
|
|
519
|
+
"1f623": ["Persevering face", "persevering_face", false],
|
|
520
|
+
"1f9d1": ["Person", "person", true],
|
|
521
|
+
"1f9d1-200d-1f9b2": ["Person bald", "person_bald", true],
|
|
522
|
+
"1f9d4": ["Person beard", "person_beard", true],
|
|
523
|
+
"1f6b4": ["Person biking", "person_biking", true],
|
|
524
|
+
"1f471": ["Person blonde hair", "person_blonde_hair", true],
|
|
525
|
+
"26f9": ["Person bouncing ball", "person_bouncing_ball", true],
|
|
526
|
+
"1f647": ["Person bowing", "person_bowing", true],
|
|
527
|
+
"1f938": ["Person cartwheeling", "person_cartwheeling", true],
|
|
528
|
+
"1f9d7": ["Person climbing", "person_climbing", true],
|
|
529
|
+
"1f9d1-200d-1f9b1": ["Person curly hair", "person_curly_hair", true],
|
|
530
|
+
"1f9dd": ["Person elf", "person_elf", true],
|
|
531
|
+
"1f926": ["Person facepalming", "person_facepalming", true],
|
|
532
|
+
"1f9da": ["Person fairy", "person_fairy", true],
|
|
533
|
+
"1f9d1-200d-1f37c": ["Person feeding baby", "person_feeding_baby", true],
|
|
534
|
+
"1f93a": ["Person fencing", "person_fencing", false],
|
|
535
|
+
"1f64d": ["Person frowning", "person_frowning", true],
|
|
536
|
+
"1f9de": ["Person genie", "person_genie", true],
|
|
537
|
+
"1f645": ["Person gesturing no", "person_gesturing_no", true],
|
|
538
|
+
"1f646": ["Person gesturing ok", "person_gesturing_ok", true],
|
|
539
|
+
"1f487": ["Person getting haircut", "person_getting_haircut", true],
|
|
540
|
+
"1f486": ["Person getting massage", "person_getting_massage", true],
|
|
541
|
+
"1f3cc": ["Person golfing", "person_golfing", true],
|
|
542
|
+
"1f6cc": ["Person in bed", "person_in_bed", true],
|
|
543
|
+
"1f9d8": ["Person in lotus position", "person_in_lotus_position", true],
|
|
544
|
+
"1f9d1-200d-1f9bd": ["Person in manual wheelchair", "person_in_manual_wheelchair", true],
|
|
545
|
+
"1f9d1-200d-1f9bd-200d-27a1": ["Person in manual wheelchair facing right", "person_in_manual_wheelchair_facing_right", true],
|
|
546
|
+
"1f9d1-200d-1f9bc": ["Person in motorized wheelchair", "person_in_motorized_wheelchair", true],
|
|
547
|
+
"1f9d1-200d-1f9bc-200d-27a1": ["Person in motorized wheelchair facing right", "person_in_motorized_wheelchair_facing_right", true],
|
|
548
|
+
"1f9d6": ["Person in steamy room", "person_in_steamy_room", true],
|
|
549
|
+
"1f574": ["Person in suit levitating", "person_in_suit_levitating", true],
|
|
550
|
+
"1f935": ["Person in tuxedo", "person_in_tuxedo", true],
|
|
551
|
+
"1f939": ["Person juggling", "person_juggling", true],
|
|
552
|
+
"1f3cb": ["Person lifting weights", "person_lifting_weights", true],
|
|
553
|
+
"1f9d9": ["Person mage", "person_mage", true],
|
|
554
|
+
"1f9dc": ["Person merpeople", "person_merpeople", true],
|
|
555
|
+
"1f6b5": ["Person mountain biking", "person_mountain_biking", true],
|
|
556
|
+
"1f93e": ["Person playing handball", "person_playing_handball", true],
|
|
557
|
+
"1f64e": ["Person pouting", "person_pouting", true],
|
|
558
|
+
"1f64b": ["Person raising hand", "person_raising_hand", true],
|
|
559
|
+
"1f9d1-200d-1f9b0": ["Person red hair", "person_red_hair", true],
|
|
560
|
+
"1f6a3": ["Person rowing boat", "person_rowing_boat", true],
|
|
561
|
+
"1f3c3": ["Person running", "person_running", true],
|
|
562
|
+
"1f3c3-200d-27a1": ["Person running facing right", "person_running_facing_right", true],
|
|
563
|
+
"1f937": ["Person shrugging", "person_shrugging", true],
|
|
564
|
+
"1f9cd": ["Person standing", "person_standing", true],
|
|
565
|
+
"1f9b8": ["Person superhero", "person_superhero", true],
|
|
566
|
+
"1f9b9": ["Person supervillain", "person_supervillain", true],
|
|
567
|
+
"1f3c4": ["Person surfing", "person_surfing", true],
|
|
568
|
+
"1f3ca": ["Person swimming", "person_swimming", true],
|
|
569
|
+
"1f6c0": ["Person taking bath", "person_taking_bath", true],
|
|
570
|
+
"1f481": ["Person tipping hand", "person_tipping_hand", true],
|
|
571
|
+
"1f9db": ["Person vampire", "person_vampire", true],
|
|
572
|
+
"1f6b6": ["Person walking", "person_walking", true],
|
|
573
|
+
"1f6b6-200d-27a1": ["Person walking facing right", "person_walking_facing_right", true],
|
|
574
|
+
"1f473": ["Person wearing turban", "person_wearing_turban", true],
|
|
575
|
+
"1f9d1-200d-1f9b3": ["Person white hair", "person_white_hair", true],
|
|
576
|
+
"1f46f": ["Person with bunny ears", "person_with_bunny_ears", true],
|
|
577
|
+
"1fac5": ["Person with crown", "person_with_crown", true],
|
|
578
|
+
"1f472": ["Person with skullcap", "person_with_skullcap", true],
|
|
579
|
+
"1f470": ["Person with veil", "person_with_veil", true],
|
|
580
|
+
"1f9d1-200d-1f9af": ["Person with white cane", "person_with_white_cane", true],
|
|
581
|
+
"1f9d1-200d-1f9af-200d-27a1": ["Person with white cane facing right", "person_with_white_cane_facing_right", true],
|
|
582
|
+
"1f93c": ["Person wrestling", "person_wrestling", true],
|
|
583
|
+
"1f9df": ["Person zombie", "person_zombie", false],
|
|
584
|
+
"1f426-200d-1f525": ["Phoenix", "phoenix", false],
|
|
585
|
+
"1f416": ["Pig", "pig", false],
|
|
586
|
+
"1f437": ["Pig face", "pig_face", false],
|
|
587
|
+
"1f43d": ["Pig nose", "pig_nose", false],
|
|
588
|
+
"1f4a9": ["Pile of poo", "pile_of_poo", false],
|
|
589
|
+
"1f9d1-200d-2708": ["Pilot", "pilot", true],
|
|
590
|
+
"1f90c": ["Pinched fingers", "pinched_fingers", true],
|
|
591
|
+
"1f90f": ["Pinching hand", "pinching_hand", true],
|
|
592
|
+
"1fa77": ["Pink heart", "pink_heart", false],
|
|
593
|
+
"1f3f4-200d-2620": ["Pirate flag", "pirate_flag", false],
|
|
594
|
+
"1f97a": ["Pleading face", "pleading_face", false],
|
|
595
|
+
"1f43b-200d-2744": ["Polar bear", "polar_bear", false],
|
|
596
|
+
"1f693": ["Police car", "police_car", false],
|
|
597
|
+
"1f46e": ["Police officer", "police_officer", true],
|
|
598
|
+
"1f429": ["Poodle", "poodle", false],
|
|
599
|
+
"1f621": ["Pouting face", "pouting_face", false],
|
|
600
|
+
"1fac3": ["Pregnant man", "pregnant_man", true],
|
|
601
|
+
"1fac4": ["Pregnant person", "pregnant_person", true],
|
|
602
|
+
"1f930": ["Pregnant woman", "pregnant_woman", true],
|
|
603
|
+
"1f934": ["Prince", "prince", true],
|
|
604
|
+
"1f478": ["Princess", "princess", true],
|
|
605
|
+
"1f49c": ["Purple heart", "purple_heart", false],
|
|
606
|
+
"1f407": ["Rabbit", "rabbit", false],
|
|
607
|
+
"1f430": ["Rabbit face", "rabbit_face", false],
|
|
608
|
+
"1f99d": ["Raccoon", "raccoon", false],
|
|
609
|
+
"1f3ce": ["Racing car", "racing_car", false],
|
|
610
|
+
"1f308": ["Rainbow", "rainbow", false],
|
|
611
|
+
"1f3f3-200d-1f308": ["Rainbow flag", "rainbow_flag", false],
|
|
612
|
+
"1f91a": ["Raised back of hand", "raised_back_of_hand", true],
|
|
613
|
+
"270a": ["Raised fist", "raised_fist", true],
|
|
614
|
+
"270b": ["Raised hand", "raised_hand", true],
|
|
615
|
+
"1f64c": ["Raising hands", "raising_hands", true],
|
|
616
|
+
"1f40f": ["Ram", "ram", false],
|
|
617
|
+
"1f400": ["Rat", "rat", false],
|
|
618
|
+
"2764": ["Red heart", "red_heart", false],
|
|
619
|
+
"1f60c": ["Relieved face", "relieved_face", false],
|
|
620
|
+
"1f49e": ["Revolving hearts", "revolving_hearts", false],
|
|
621
|
+
"1f98f": ["Rhinoceros", "rhinoceros", false],
|
|
622
|
+
"1f91c": ["Right-facing fist", "right-facing_fist", true],
|
|
623
|
+
"1faf1": ["Rightwards hand", "rightwards_hand", true],
|
|
624
|
+
"1faf8": ["Rightwards pushing hand", "rightwards_pushing_hand", true],
|
|
625
|
+
"1fa90": ["Ringed planet", "ringed_planet", false],
|
|
626
|
+
"1f916": ["Robot", "robot", false],
|
|
627
|
+
"1f680": ["Rocket", "rocket", false],
|
|
628
|
+
"1f3a2": ["Roller coaster", "roller_coaster", false],
|
|
629
|
+
"1f6fc": ["Roller skate", "roller_skate", false],
|
|
630
|
+
"1f923": ["Rolling on the floor laughing", "rolling_on_the_floor_laughing", false],
|
|
631
|
+
"1f413": ["Rooster", "rooster", false],
|
|
632
|
+
"1f625": ["Sad but relieved face", "sad_but_relieved_face", false],
|
|
633
|
+
"26f5": ["Sailboat", "sailboat", false],
|
|
634
|
+
"1f385": ["Santa claus", "santa_claus", true],
|
|
635
|
+
"1f995": ["Sauropod", "sauropod", false],
|
|
636
|
+
"1f9d1-200d-1f52c": ["Scientist", "scientist", true],
|
|
637
|
+
"1f982": ["Scorpion", "scorpion", false],
|
|
638
|
+
"1f9ad": ["Seal", "seal", false],
|
|
639
|
+
"1f4ba": ["Seat", "seat", false],
|
|
640
|
+
"1f648": ["See-no-evil monkey", "see-no-evil_monkey", false],
|
|
641
|
+
"1f933": ["Selfie", "selfie", true],
|
|
642
|
+
"1f415-200d-1f9ba": ["Service dog", "service_dog", false],
|
|
643
|
+
"1f556": ["Seven oclock", "seven_oclock", false],
|
|
644
|
+
"1f562": ["Seven-thirty", "seven-thirty", false],
|
|
645
|
+
"1fae8": ["Shaking face", "shaking_face", false],
|
|
646
|
+
"1f988": ["Shark", "shark", false],
|
|
647
|
+
"1f6a2": ["Ship", "ship", false],
|
|
648
|
+
"1f320": ["Shooting star", "shooting_star", false],
|
|
649
|
+
"1f990": ["Shrimp", "shrimp", false],
|
|
650
|
+
"1f92b": ["Shushing face", "shushing_face", false],
|
|
651
|
+
"1f918": ["Sign of the horns", "sign_of_the_horns", true],
|
|
652
|
+
"1f9d1-200d-1f3a4": ["Singer", "singer", true],
|
|
653
|
+
"1f555": ["Six oclock", "six_oclock", false],
|
|
654
|
+
"1f561": ["Six-thirty", "six-thirty", false],
|
|
655
|
+
"26f7": ["Skier", "skier", true],
|
|
656
|
+
"1f480": ["Skull", "skull", false],
|
|
657
|
+
"2620": ["Skull and crossbones", "skull_and_crossbones", false],
|
|
658
|
+
"1f9a8": ["Skunk", "skunk", false],
|
|
659
|
+
"1f634": ["Sleeping face", "sleeping_face", false],
|
|
660
|
+
"1f62a": ["Sleepy face", "sleepy_face", false],
|
|
661
|
+
"1f641": ["Slightly frowning face", "slightly_frowning_face", false],
|
|
662
|
+
"1f642": ["Slightly smiling face", "slightly_smiling_face", false],
|
|
663
|
+
"1f9a5": ["Sloth", "sloth", false],
|
|
664
|
+
"1f6e9": ["Small airplane", "small_airplane", false],
|
|
665
|
+
"1f63b": ["Smiling cat with heart-eyes", "smiling_cat_with_heart-eyes", false],
|
|
666
|
+
"263a": ["Smiling face", "smiling_face", false],
|
|
667
|
+
"1f607": ["Smiling face with halo", "smiling_face_with_halo", false],
|
|
668
|
+
"1f60d": ["Smiling face with heart-eyes", "smiling_face_with_heart-eyes", false],
|
|
669
|
+
"1f970": ["Smiling face with hearts", "smiling_face_with_hearts", false],
|
|
670
|
+
"1f608": ["Smiling face with horns", "smiling_face_with_horns", false],
|
|
671
|
+
"1f60a": ["Smiling face with smiling eyes", "smiling_face_with_smiling_eyes", false],
|
|
672
|
+
"1f60e": ["Smiling face with sunglasses", "smiling_face_with_sunglasses", false],
|
|
673
|
+
"1f972": ["Smiling face with tear", "smiling_face_with_tear", false],
|
|
674
|
+
"1f60f": ["Smirking face", "smirking_face", false],
|
|
675
|
+
"1f40c": ["Snail", "snail", false],
|
|
676
|
+
"1f40d": ["Snake", "snake", false],
|
|
677
|
+
"1f927": ["Sneezing face", "sneezing_face", false],
|
|
678
|
+
"1f3c2": ["Snowboarder", "snowboarder", true],
|
|
679
|
+
"2744": ["Snowflake", "snowflake", false],
|
|
680
|
+
"2603": ["Snowman", "snowman", false],
|
|
681
|
+
"26c4": ["Snowman without snow", "snowman_without_snow", false],
|
|
682
|
+
"1f496": ["Sparkling heart", "sparkling_heart", false],
|
|
683
|
+
"1f64a": ["Speak-no-evil monkey", "speak-no-evil_monkey", false],
|
|
684
|
+
"1f5e3": ["Speaking head", "speaking_head", false],
|
|
685
|
+
"1f6a4": ["Speedboat", "speedboat", false],
|
|
686
|
+
"1f577": ["Spider", "spider", false],
|
|
687
|
+
"1f578": ["Spider web", "spider_web", false],
|
|
688
|
+
"1f5d3": ["Spiral calendar", "spiral_calendar", false],
|
|
689
|
+
"1f41a": ["Spiral shell", "spiral_shell", false],
|
|
690
|
+
"1f699": ["Sport utility vehicle", "sport_utility_vehicle", false],
|
|
691
|
+
"1f433": ["Spouting whale", "spouting_whale", false],
|
|
692
|
+
"1f991": ["Squid", "squid", false],
|
|
693
|
+
"1f61d": ["Squinting face with tongue", "squinting_face_with_tongue", false],
|
|
694
|
+
"2b50": ["Star", "star", false],
|
|
695
|
+
"1f929": ["Star-struck", "star-struck", false],
|
|
696
|
+
"23f1": ["Stopwatch", "stopwatch", false],
|
|
697
|
+
"1f9d1-200d-1f393": ["Student", "student", true],
|
|
698
|
+
"2600": ["Sun", "sun", false],
|
|
699
|
+
"26c5": ["Sun behind cloud", "sun_behind_cloud", false],
|
|
700
|
+
"1f325": ["Sun behind large cloud", "sun_behind_large_cloud", false],
|
|
701
|
+
"1f326": ["Sun behind rain cloud", "sun_behind_rain_cloud", false],
|
|
702
|
+
"1f324": ["Sun behind small cloud", "sun_behind_small_cloud", false],
|
|
703
|
+
"1f31e": ["Sun with face", "sun_with_face", false],
|
|
704
|
+
"1f69f": ["Suspension railway", "suspension_railway", false],
|
|
705
|
+
"1f9a2": ["Swan", "swan", false],
|
|
706
|
+
"1f996": ["T-rex", "t-rex", false],
|
|
707
|
+
"1f695": ["Taxi", "taxi", false],
|
|
708
|
+
"1f9d1-200d-1f3eb": ["Teacher", "teacher", true],
|
|
709
|
+
"1f375": ["Teacup without handle", "teacup_without_handle", false],
|
|
710
|
+
"1f9f8": ["Teddy bear", "teddy_bear", false],
|
|
711
|
+
"1f4de": ["Telephone receiver", "telephone_receiver", false],
|
|
712
|
+
"1f559": ["Ten oclock", "ten_oclock", false],
|
|
713
|
+
"1f565": ["Ten-thirty", "ten-thirty", false],
|
|
714
|
+
"1f914": ["Thinking face", "thinking_face", false],
|
|
715
|
+
"1f552": ["Three oclock", "three_oclock", false],
|
|
716
|
+
"1f55e": ["Three-thirty", "three-thirty", false],
|
|
717
|
+
"1f44e": ["Thumbs down", "thumbs_down", true],
|
|
718
|
+
"1f44d": ["Thumbs up", "thumbs_up", true],
|
|
719
|
+
"1f405": ["Tiger", "tiger", false],
|
|
720
|
+
"1f42f": ["Tiger face", "tiger_face", false],
|
|
721
|
+
"23f2": ["Timer clock", "timer_clock", false],
|
|
722
|
+
"1f62b": ["Tired face", "tired_face", false],
|
|
723
|
+
"1f445": ["Tongue", "tongue", false],
|
|
724
|
+
"1f9b7": ["Tooth", "tooth", false],
|
|
725
|
+
"1f32a": ["Tornado", "tornado", false],
|
|
726
|
+
"1f69c": ["Tractor", "tractor", false],
|
|
727
|
+
"1f68b": ["Tram car", "tram_car", false],
|
|
728
|
+
"1f3f3-200d-26a7": ["Transgender flag", "transgender_flag", false],
|
|
729
|
+
"1f6a9": ["Triangular flag", "triangular_flag", false],
|
|
730
|
+
"1f68e": ["Trolleybus", "trolleybus", false],
|
|
731
|
+
"1f379": ["Tropical drink", "tropical_drink", false],
|
|
732
|
+
"1f420": ["Tropical fish", "tropical_fish", false],
|
|
733
|
+
"1f943": ["Tumbler glass", "tumbler_glass", false],
|
|
734
|
+
"1f983": ["Turkey", "turkey", false],
|
|
735
|
+
"1f422": ["Turtle", "turtle", false],
|
|
736
|
+
"1f55b": ["Twelve oclock", "twelve_oclock", false],
|
|
737
|
+
"1f567": ["Twelve-thirty", "twelve-thirty", false],
|
|
738
|
+
"1f495": ["Two hearts", "two_hearts", false],
|
|
739
|
+
"1f551": ["Two oclock", "two_oclock", false],
|
|
740
|
+
"1f42b": ["Two-hump camel", "two-hump_camel", false],
|
|
741
|
+
"1f55d": ["Two-thirty", "two-thirty", false],
|
|
742
|
+
"2602": ["Umbrella", "umbrella", false],
|
|
743
|
+
"2614": ["Umbrella with rain drops", "umbrella_with_rain_drops", false],
|
|
744
|
+
"1f612": ["Unamused face", "unamused_face", false],
|
|
745
|
+
"1f984": ["Unicorn", "unicorn", false],
|
|
746
|
+
"1f643": ["Upside-down face", "upside-down_face", false],
|
|
747
|
+
"270c": ["Victory hand", "victory_hand", true],
|
|
748
|
+
"1f596": ["Vulcan salute", "vulcan_salute", true],
|
|
749
|
+
"231a": ["Watch", "watch", false],
|
|
750
|
+
"1f403": ["Water buffalo", "water_buffalo", false],
|
|
751
|
+
"1f30a": ["Water wave", "water_wave", false],
|
|
752
|
+
"1f44b": ["Waving hand", "waving_hand", true],
|
|
753
|
+
"1f640": ["Weary cat", "weary_cat", false],
|
|
754
|
+
"1f629": ["Weary face", "weary_face", false],
|
|
755
|
+
"1f40b": ["Whale", "whale", false],
|
|
756
|
+
"1f3f3": ["White flag", "white_flag", false],
|
|
757
|
+
"1f90d": ["White heart", "white_heart", false],
|
|
758
|
+
"1f940": ["Wilted flower", "wilted_flower", false],
|
|
759
|
+
"1f32c": ["Wind face", "wind_face", false],
|
|
760
|
+
"1fabd": ["Wing", "wing", false],
|
|
761
|
+
"1f609": ["Winking face", "winking_face", false],
|
|
762
|
+
"1f61c": ["Winking face with tongue", "winking_face_with_tongue", false],
|
|
763
|
+
"1f43a": ["Wolf", "wolf", false],
|
|
764
|
+
"1f469": ["Woman", "woman", true],
|
|
765
|
+
"1f469-200d-1f680": ["Woman astronaut", "woman_astronaut", true],
|
|
766
|
+
"1f469-200d-1f9b2": ["Woman bald", "woman_bald", true],
|
|
767
|
+
"1f9d4-200d-2640": ["Woman beard", "woman_beard", true],
|
|
768
|
+
"1f6b4-200d-2640": ["Woman biking", "woman_biking", true],
|
|
769
|
+
"1f471-200d-2640": ["Woman blonde hair", "woman_blonde_hair", true],
|
|
770
|
+
"26f9-200d-2640": ["Woman bouncing ball", "woman_bouncing_ball", true],
|
|
771
|
+
"1f647-200d-2640": ["Woman bowing", "woman_bowing", true],
|
|
772
|
+
"1f938-200d-2640": ["Woman cartwheeling", "woman_cartwheeling", true],
|
|
773
|
+
"1f9d7-200d-2640": ["Woman climbing", "woman_climbing", true],
|
|
774
|
+
"1f477-200d-2640": ["Woman construction worker", "woman_construction_worker", true],
|
|
775
|
+
"1f469-200d-1f373": ["Woman cook", "woman_cook", true],
|
|
776
|
+
"1f469-200d-1f9b1": ["Woman curly hair", "woman_curly_hair", true],
|
|
777
|
+
"1f483": ["Woman dancing", "woman_dancing", true],
|
|
778
|
+
"1f575-200d-2640": ["Woman detective", "woman_detective", true],
|
|
779
|
+
"1f9dd-200d-2640": ["Woman elf", "woman_elf", true],
|
|
780
|
+
"1f926-200d-2640": ["Woman facepalming", "woman_facepalming", true],
|
|
781
|
+
"1f9da-200d-2640": ["Woman fairy", "woman_fairy", true],
|
|
782
|
+
"1f469-200d-1f33e": ["Woman farmer", "woman_farmer", true],
|
|
783
|
+
"1f469-200d-1f37c": ["Woman feeding baby", "woman_feeding_baby", true],
|
|
784
|
+
"1f469-200d-1f692": ["Woman firefighter", "woman_firefighter", true],
|
|
785
|
+
"1f64d-200d-2640": ["Woman frowning", "woman_frowning", true],
|
|
786
|
+
"1f9de-200d-2640": ["Woman genie", "woman_genie", false],
|
|
787
|
+
"1f645-200d-2640": ["Woman gesturing no", "woman_gesturing_no", true],
|
|
788
|
+
"1f646-200d-2640": ["Woman gesturing ok", "woman_gesturing_ok", true],
|
|
789
|
+
"1f487-200d-2640": ["Woman getting haircut", "woman_getting_haircut", true],
|
|
790
|
+
"1f486-200d-2640": ["Woman getting massage", "woman_getting_massage", true],
|
|
791
|
+
"1f3cc-200d-2640": ["Woman golfing", "woman_golfing", true],
|
|
792
|
+
"1f482-200d-2640": ["Woman guard", "woman_guard", true],
|
|
793
|
+
"1f469-200d-2695": ["Woman health worker", "woman_health_worker", true],
|
|
794
|
+
"1f9d8-200d-2640": ["Woman in lotus position", "woman_in_lotus_position", true],
|
|
795
|
+
"1f469-200d-1f9bc": ["Woman in motorized wheelchair", "woman_in_motorized_wheelchair", true],
|
|
796
|
+
"1f469-200d-1f9bc-200d-27a1": ["Woman in motorized wheelchair facing right", "woman_in_motorized_wheelchair_facing_right", true],
|
|
797
|
+
"1f9d6-200d-2640": ["Woman in steamy room", "woman_in_steamy_room", true],
|
|
798
|
+
"1f935-200d-2640": ["Woman in tuxedo", "woman_in_tuxedo", true],
|
|
799
|
+
"1f469-200d-2696": ["Woman judge", "woman_judge", true],
|
|
800
|
+
"1f939-200d-2640": ["Woman juggling", "woman_juggling", true],
|
|
801
|
+
"1f3cb-200d-2640": ["Woman lifting weights", "woman_lifting_weights", true],
|
|
802
|
+
"1f9d9-200d-2640": ["Woman mage", "woman_mage", true],
|
|
803
|
+
"1f469-200d-1f527": ["Woman mechanic", "woman_mechanic", true],
|
|
804
|
+
"1f9dc-200d-2640": ["Woman merpeople", "woman_merpeople", true],
|
|
805
|
+
"1f6b5-200d-2640": ["Woman mountain biking", "woman_mountain_biking", true],
|
|
806
|
+
"1f469-200d-2708": ["Woman pilot", "woman_pilot", true],
|
|
807
|
+
"1f93e-200d-2640": ["Woman playing handball", "woman_playing_handball", true],
|
|
808
|
+
"1f93d-200d-2640": ["Woman playing water polo", "woman_playing_water_polo", true],
|
|
809
|
+
"1f46e-200d-2640": ["Woman police officer", "woman_police_officer", true],
|
|
810
|
+
"1f64e-200d-2640": ["Woman pouting", "woman_pouting", true],
|
|
811
|
+
"1f64b-200d-2640": ["Woman raising hand", "woman_raising_hand", true],
|
|
812
|
+
"1f469-200d-1f9b0": ["Woman red hair", "woman_red_hair", true],
|
|
813
|
+
"1f6a3-200d-2640": ["Woman rowing boat", "woman_rowing_boat", true],
|
|
814
|
+
"1f3c3-200d-2640": ["Woman running", "woman_running", true],
|
|
815
|
+
"1f3c3-200d-2640-200d-27a1": ["Woman running facing right", "woman_running_facing_right", true],
|
|
816
|
+
"1f469-200d-1f52c": ["Woman scientist", "woman_scientist", true],
|
|
817
|
+
"1f937-200d-2640": ["Woman shrugging", "woman_shrugging", true],
|
|
818
|
+
"1f9cd-200d-2640": ["Woman standing", "woman_standing", true],
|
|
819
|
+
"1f469-200d-1f393": ["Woman student", "woman_student", true],
|
|
820
|
+
"1f9b8-200d-2640": ["Woman superhero", "woman_superhero", true],
|
|
821
|
+
"1f9b9-200d-2640": ["Woman supervillain", "woman_supervillain", true],
|
|
822
|
+
"1f3c4-200d-2640": ["Woman surfing", "woman_surfing", true],
|
|
823
|
+
"1f3ca-200d-2640": ["Woman swimming", "woman_swimming", true],
|
|
824
|
+
"1f469-200d-1f3eb": ["Woman teacher", "woman_teacher", true],
|
|
825
|
+
"1f481-200d-2640": ["Woman tipping hand", "woman_tipping_hand", true],
|
|
826
|
+
"1f9db-200d-2640": ["Woman vampire", "woman_vampire", true],
|
|
827
|
+
"1f6b6-200d-2640": ["Woman walking", "woman_walking", true],
|
|
828
|
+
"1f6b6-200d-2640-200d-27a1": ["Woman walking facing right", "woman_walking_facing_right", true],
|
|
829
|
+
"1f473-200d-2640": ["Woman wearing turban", "woman_wearing_turban", true],
|
|
830
|
+
"1f469-200d-1f9b3": ["Woman white hair", "woman_white_hair", true],
|
|
831
|
+
"1f46f-200d-2640": ["Woman with bunny ears", "woman_with_bunny_ears", true],
|
|
832
|
+
"1f9d5": ["Woman with headscarf", "woman_with_headscarf", true],
|
|
833
|
+
"1f470-200d-2640": ["Woman with veil", "woman_with_veil", true],
|
|
834
|
+
"1f469-200d-1f9af": ["Woman with white cane", "woman_with_white_cane", true],
|
|
835
|
+
"1f469-200d-1f9af-200d-27a1": ["Woman with white cane facing right", "woman_with_white_cane_facing_right", true],
|
|
836
|
+
"1f93c-200d-2640": ["Woman wrestling", "woman_wrestling", true],
|
|
837
|
+
"1f9df-200d-2640": ["Woman zombie", "woman_zombie", false],
|
|
838
|
+
"1fab5": ["Wood", "wood", false],
|
|
839
|
+
"1f974": ["Woozy face", "woozy_face", false],
|
|
840
|
+
"1fab1": ["Worm", "worm", false],
|
|
841
|
+
"1f61f": ["Worried face", "worried_face", false],
|
|
842
|
+
"270d": ["Writing hand", "writing_hand", true],
|
|
843
|
+
"1f971": ["Yawning face", "yawning_face", false],
|
|
844
|
+
"1f49b": ["Yellow heart", "yellow_heart", false],
|
|
845
|
+
"1f92a": ["Zany face", "zany_face", false],
|
|
846
|
+
"1f993": ["Zebra", "zebra", false],
|
|
847
|
+
"1f910": ["Zipper-mouth face", "zipper-mouth_face", false],
|
|
848
|
+
"1f4a4": ["Zzz", "zzz", false]
|
|
849
|
+
};
|
|
850
|
+
|
|
851
|
+
// src/serenityos-data.ts
|
|
852
|
+
var SERENITYOS_RGI_ASSET_COUNT = 1800;
|
|
853
|
+
var SERENITYOS_DATASET_VERSION = "17.0";
|
|
854
|
+
var serenityOSAssetIds = /* @__PURE__ */ new Set([
|
|
855
|
+
"U+1F004",
|
|
856
|
+
"U+1F0CF",
|
|
857
|
+
"U+1F170",
|
|
858
|
+
"U+1F171",
|
|
859
|
+
"U+1F17E",
|
|
860
|
+
"U+1F17F",
|
|
861
|
+
"U+1F18E",
|
|
862
|
+
"U+1F191",
|
|
863
|
+
"U+1F192",
|
|
864
|
+
"U+1F193",
|
|
865
|
+
"U+1F194",
|
|
866
|
+
"U+1F195",
|
|
867
|
+
"U+1F196",
|
|
868
|
+
"U+1F197",
|
|
869
|
+
"U+1F198",
|
|
870
|
+
"U+1F199",
|
|
871
|
+
"U+1F19A",
|
|
872
|
+
"U+1F1E6_U+1F1E8",
|
|
873
|
+
"U+1F1E6_U+1F1E9",
|
|
874
|
+
"U+1F1E6_U+1F1EA",
|
|
875
|
+
"U+1F1E6_U+1F1EB",
|
|
876
|
+
"U+1F1E6_U+1F1EC",
|
|
877
|
+
"U+1F1E6_U+1F1EE",
|
|
878
|
+
"U+1F1E6_U+1F1F1",
|
|
879
|
+
"U+1F1E6_U+1F1F2",
|
|
880
|
+
"U+1F1E6_U+1F1F4",
|
|
881
|
+
"U+1F1E6_U+1F1F6",
|
|
882
|
+
"U+1F1E6_U+1F1F7",
|
|
883
|
+
"U+1F1E6_U+1F1F8",
|
|
884
|
+
"U+1F1E6_U+1F1F9",
|
|
885
|
+
"U+1F1E6_U+1F1FA",
|
|
886
|
+
"U+1F1E6_U+1F1FC",
|
|
887
|
+
"U+1F1E6_U+1F1FD",
|
|
888
|
+
"U+1F1E6_U+1F1FF",
|
|
889
|
+
"U+1F1E7_U+1F1E6",
|
|
890
|
+
"U+1F1E7_U+1F1E7",
|
|
891
|
+
"U+1F1E7_U+1F1E9",
|
|
892
|
+
"U+1F1E7_U+1F1EA",
|
|
893
|
+
"U+1F1E7_U+1F1EB",
|
|
894
|
+
"U+1F1E7_U+1F1EC",
|
|
895
|
+
"U+1F1E7_U+1F1ED",
|
|
896
|
+
"U+1F1E7_U+1F1EE",
|
|
897
|
+
"U+1F1E7_U+1F1EF",
|
|
898
|
+
"U+1F1E7_U+1F1F1",
|
|
899
|
+
"U+1F1E7_U+1F1F2",
|
|
900
|
+
"U+1F1E7_U+1F1F3",
|
|
901
|
+
"U+1F1E7_U+1F1F4",
|
|
902
|
+
"U+1F1E7_U+1F1F6",
|
|
903
|
+
"U+1F1E7_U+1F1F7",
|
|
904
|
+
"U+1F1E7_U+1F1F8",
|
|
905
|
+
"U+1F1E7_U+1F1F9",
|
|
906
|
+
"U+1F1E7_U+1F1FB",
|
|
907
|
+
"U+1F1E7_U+1F1FC",
|
|
908
|
+
"U+1F1E7_U+1F1FE",
|
|
909
|
+
"U+1F1E7_U+1F1FF",
|
|
910
|
+
"U+1F1E8_U+1F1E6",
|
|
911
|
+
"U+1F1E8_U+1F1E8",
|
|
912
|
+
"U+1F1E8_U+1F1E9",
|
|
913
|
+
"U+1F1E8_U+1F1EB",
|
|
914
|
+
"U+1F1E8_U+1F1EC",
|
|
915
|
+
"U+1F1E8_U+1F1ED",
|
|
916
|
+
"U+1F1E8_U+1F1EE",
|
|
917
|
+
"U+1F1E8_U+1F1F0",
|
|
918
|
+
"U+1F1E8_U+1F1F1",
|
|
919
|
+
"U+1F1E8_U+1F1F2",
|
|
920
|
+
"U+1F1E8_U+1F1F3",
|
|
921
|
+
"U+1F1E8_U+1F1F4",
|
|
922
|
+
"U+1F1E8_U+1F1F5",
|
|
923
|
+
"U+1F1E8_U+1F1F6",
|
|
924
|
+
"U+1F1E8_U+1F1F7",
|
|
925
|
+
"U+1F1E8_U+1F1FA",
|
|
926
|
+
"U+1F1E8_U+1F1FB",
|
|
927
|
+
"U+1F1E8_U+1F1FC",
|
|
928
|
+
"U+1F1E8_U+1F1FD",
|
|
929
|
+
"U+1F1E8_U+1F1FE",
|
|
930
|
+
"U+1F1E8_U+1F1FF",
|
|
931
|
+
"U+1F1E9_U+1F1EA",
|
|
932
|
+
"U+1F1E9_U+1F1EC",
|
|
933
|
+
"U+1F1E9_U+1F1EF",
|
|
934
|
+
"U+1F1E9_U+1F1F0",
|
|
935
|
+
"U+1F1E9_U+1F1F2",
|
|
936
|
+
"U+1F1E9_U+1F1F4",
|
|
937
|
+
"U+1F1E9_U+1F1FF",
|
|
938
|
+
"U+1F1EA_U+1F1E6",
|
|
939
|
+
"U+1F1EA_U+1F1E8",
|
|
940
|
+
"U+1F1EA_U+1F1EA",
|
|
941
|
+
"U+1F1EA_U+1F1EC",
|
|
942
|
+
"U+1F1EA_U+1F1ED",
|
|
943
|
+
"U+1F1EA_U+1F1F7",
|
|
944
|
+
"U+1F1EA_U+1F1F8",
|
|
945
|
+
"U+1F1EA_U+1F1F9",
|
|
946
|
+
"U+1F1EA_U+1F1FA",
|
|
947
|
+
"U+1F1EB_U+1F1EE",
|
|
948
|
+
"U+1F1EB_U+1F1EF",
|
|
949
|
+
"U+1F1EB_U+1F1F0",
|
|
950
|
+
"U+1F1EB_U+1F1F2",
|
|
951
|
+
"U+1F1EB_U+1F1F4",
|
|
952
|
+
"U+1F1EB_U+1F1F7",
|
|
953
|
+
"U+1F1EC_U+1F1E6",
|
|
954
|
+
"U+1F1EC_U+1F1E7",
|
|
955
|
+
"U+1F1EC_U+1F1E9",
|
|
956
|
+
"U+1F1EC_U+1F1EA",
|
|
957
|
+
"U+1F1EC_U+1F1EB",
|
|
958
|
+
"U+1F1EC_U+1F1EC",
|
|
959
|
+
"U+1F1EC_U+1F1ED",
|
|
960
|
+
"U+1F1EC_U+1F1EE",
|
|
961
|
+
"U+1F1EC_U+1F1F1",
|
|
962
|
+
"U+1F1EC_U+1F1F2",
|
|
963
|
+
"U+1F1EC_U+1F1F3",
|
|
964
|
+
"U+1F1EC_U+1F1F5",
|
|
965
|
+
"U+1F1EC_U+1F1F6",
|
|
966
|
+
"U+1F1EC_U+1F1F7",
|
|
967
|
+
"U+1F1EC_U+1F1F8",
|
|
968
|
+
"U+1F1EC_U+1F1F9",
|
|
969
|
+
"U+1F1EC_U+1F1FA",
|
|
970
|
+
"U+1F1EC_U+1F1FC",
|
|
971
|
+
"U+1F1EC_U+1F1FE",
|
|
972
|
+
"U+1F1ED_U+1F1F0",
|
|
973
|
+
"U+1F1ED_U+1F1F2",
|
|
974
|
+
"U+1F1ED_U+1F1F3",
|
|
975
|
+
"U+1F1ED_U+1F1F7",
|
|
976
|
+
"U+1F1ED_U+1F1F9",
|
|
977
|
+
"U+1F1ED_U+1F1FA",
|
|
978
|
+
"U+1F1EE_U+1F1E8",
|
|
979
|
+
"U+1F1EE_U+1F1E9",
|
|
980
|
+
"U+1F1EE_U+1F1EA",
|
|
981
|
+
"U+1F1EE_U+1F1F1",
|
|
982
|
+
"U+1F1EE_U+1F1F2",
|
|
983
|
+
"U+1F1EE_U+1F1F3",
|
|
984
|
+
"U+1F1EE_U+1F1F4",
|
|
985
|
+
"U+1F1EE_U+1F1F6",
|
|
986
|
+
"U+1F1EE_U+1F1F7",
|
|
987
|
+
"U+1F1EE_U+1F1F8",
|
|
988
|
+
"U+1F1EE_U+1F1F9",
|
|
989
|
+
"U+1F1EF_U+1F1EA",
|
|
990
|
+
"U+1F1EF_U+1F1F2",
|
|
991
|
+
"U+1F1EF_U+1F1F4",
|
|
992
|
+
"U+1F1EF_U+1F1F5",
|
|
993
|
+
"U+1F1F0_U+1F1EA",
|
|
994
|
+
"U+1F1F0_U+1F1EC",
|
|
995
|
+
"U+1F1F0_U+1F1ED",
|
|
996
|
+
"U+1F1F0_U+1F1EE",
|
|
997
|
+
"U+1F1F0_U+1F1F2",
|
|
998
|
+
"U+1F1F0_U+1F1F3",
|
|
999
|
+
"U+1F1F0_U+1F1F5",
|
|
1000
|
+
"U+1F1F0_U+1F1F7",
|
|
1001
|
+
"U+1F1F0_U+1F1FC",
|
|
1002
|
+
"U+1F1F0_U+1F1FE",
|
|
1003
|
+
"U+1F1F0_U+1F1FF",
|
|
1004
|
+
"U+1F1F1_U+1F1E6",
|
|
1005
|
+
"U+1F1F1_U+1F1E7",
|
|
1006
|
+
"U+1F1F1_U+1F1E8",
|
|
1007
|
+
"U+1F1F1_U+1F1EE",
|
|
1008
|
+
"U+1F1F1_U+1F1F0",
|
|
1009
|
+
"U+1F1F1_U+1F1F7",
|
|
1010
|
+
"U+1F1F1_U+1F1F8",
|
|
1011
|
+
"U+1F1F1_U+1F1F9",
|
|
1012
|
+
"U+1F1F1_U+1F1FA",
|
|
1013
|
+
"U+1F1F1_U+1F1FB",
|
|
1014
|
+
"U+1F1F1_U+1F1FE",
|
|
1015
|
+
"U+1F1F2_U+1F1E6",
|
|
1016
|
+
"U+1F1F2_U+1F1E8",
|
|
1017
|
+
"U+1F1F2_U+1F1E9",
|
|
1018
|
+
"U+1F1F2_U+1F1EA",
|
|
1019
|
+
"U+1F1F2_U+1F1EB",
|
|
1020
|
+
"U+1F1F2_U+1F1EC",
|
|
1021
|
+
"U+1F1F2_U+1F1ED",
|
|
1022
|
+
"U+1F1F2_U+1F1F0",
|
|
1023
|
+
"U+1F1F2_U+1F1F1",
|
|
1024
|
+
"U+1F1F2_U+1F1F2",
|
|
1025
|
+
"U+1F1F2_U+1F1F3",
|
|
1026
|
+
"U+1F1F2_U+1F1F4",
|
|
1027
|
+
"U+1F1F2_U+1F1F5",
|
|
1028
|
+
"U+1F1F2_U+1F1F6",
|
|
1029
|
+
"U+1F1F2_U+1F1F7",
|
|
1030
|
+
"U+1F1F2_U+1F1F8",
|
|
1031
|
+
"U+1F1F2_U+1F1F9",
|
|
1032
|
+
"U+1F1F2_U+1F1FA",
|
|
1033
|
+
"U+1F1F2_U+1F1FB",
|
|
1034
|
+
"U+1F1F2_U+1F1FC",
|
|
1035
|
+
"U+1F1F2_U+1F1FD",
|
|
1036
|
+
"U+1F1F2_U+1F1FE",
|
|
1037
|
+
"U+1F1F2_U+1F1FF",
|
|
1038
|
+
"U+1F1F3_U+1F1E6",
|
|
1039
|
+
"U+1F1F3_U+1F1E8",
|
|
1040
|
+
"U+1F1F3_U+1F1EA",
|
|
1041
|
+
"U+1F1F3_U+1F1EB",
|
|
1042
|
+
"U+1F1F3_U+1F1EC",
|
|
1043
|
+
"U+1F1F3_U+1F1EE",
|
|
1044
|
+
"U+1F1F3_U+1F1F1",
|
|
1045
|
+
"U+1F1F3_U+1F1F4",
|
|
1046
|
+
"U+1F1F3_U+1F1F5",
|
|
1047
|
+
"U+1F1F3_U+1F1F7",
|
|
1048
|
+
"U+1F1F3_U+1F1FA",
|
|
1049
|
+
"U+1F1F3_U+1F1FF",
|
|
1050
|
+
"U+1F1F4_U+1F1F2",
|
|
1051
|
+
"U+1F1F5_U+1F1E6",
|
|
1052
|
+
"U+1F1F5_U+1F1EA",
|
|
1053
|
+
"U+1F1F5_U+1F1EB",
|
|
1054
|
+
"U+1F1F5_U+1F1EC",
|
|
1055
|
+
"U+1F1F5_U+1F1ED",
|
|
1056
|
+
"U+1F1F5_U+1F1F0",
|
|
1057
|
+
"U+1F1F5_U+1F1F1",
|
|
1058
|
+
"U+1F1F5_U+1F1F2",
|
|
1059
|
+
"U+1F1F5_U+1F1F3",
|
|
1060
|
+
"U+1F1F5_U+1F1F7",
|
|
1061
|
+
"U+1F1F5_U+1F1F8",
|
|
1062
|
+
"U+1F1F5_U+1F1F9",
|
|
1063
|
+
"U+1F1F5_U+1F1FC",
|
|
1064
|
+
"U+1F1F5_U+1F1FE",
|
|
1065
|
+
"U+1F1F6_U+1F1E6",
|
|
1066
|
+
"U+1F1F7_U+1F1EA",
|
|
1067
|
+
"U+1F1F7_U+1F1F4",
|
|
1068
|
+
"U+1F1F7_U+1F1F8",
|
|
1069
|
+
"U+1F1F7_U+1F1FA",
|
|
1070
|
+
"U+1F1F7_U+1F1FC",
|
|
1071
|
+
"U+1F1F8_U+1F1E6",
|
|
1072
|
+
"U+1F1F8_U+1F1E7",
|
|
1073
|
+
"U+1F1F8_U+1F1E8",
|
|
1074
|
+
"U+1F1F8_U+1F1E9",
|
|
1075
|
+
"U+1F1F8_U+1F1EA",
|
|
1076
|
+
"U+1F1F8_U+1F1EC",
|
|
1077
|
+
"U+1F1F8_U+1F1ED",
|
|
1078
|
+
"U+1F1F8_U+1F1EE",
|
|
1079
|
+
"U+1F1F8_U+1F1EF",
|
|
1080
|
+
"U+1F1F8_U+1F1F0",
|
|
1081
|
+
"U+1F1F8_U+1F1F1",
|
|
1082
|
+
"U+1F1F8_U+1F1F2",
|
|
1083
|
+
"U+1F1F8_U+1F1F3",
|
|
1084
|
+
"U+1F1F8_U+1F1F4",
|
|
1085
|
+
"U+1F1F8_U+1F1F7",
|
|
1086
|
+
"U+1F1F8_U+1F1F8",
|
|
1087
|
+
"U+1F1F8_U+1F1F9",
|
|
1088
|
+
"U+1F1F8_U+1F1FB",
|
|
1089
|
+
"U+1F1F8_U+1F1FD",
|
|
1090
|
+
"U+1F1F8_U+1F1FE",
|
|
1091
|
+
"U+1F1F8_U+1F1FF",
|
|
1092
|
+
"U+1F1F9_U+1F1E6",
|
|
1093
|
+
"U+1F1F9_U+1F1E8",
|
|
1094
|
+
"U+1F1F9_U+1F1E9",
|
|
1095
|
+
"U+1F1F9_U+1F1EB",
|
|
1096
|
+
"U+1F1F9_U+1F1EC",
|
|
1097
|
+
"U+1F1F9_U+1F1ED",
|
|
1098
|
+
"U+1F1F9_U+1F1EF",
|
|
1099
|
+
"U+1F1F9_U+1F1F0",
|
|
1100
|
+
"U+1F1F9_U+1F1F1",
|
|
1101
|
+
"U+1F1F9_U+1F1F2",
|
|
1102
|
+
"U+1F1F9_U+1F1F3",
|
|
1103
|
+
"U+1F1F9_U+1F1F4",
|
|
1104
|
+
"U+1F1F9_U+1F1F7",
|
|
1105
|
+
"U+1F1F9_U+1F1F9",
|
|
1106
|
+
"U+1F1F9_U+1F1FB",
|
|
1107
|
+
"U+1F1F9_U+1F1FC",
|
|
1108
|
+
"U+1F1F9_U+1F1FF",
|
|
1109
|
+
"U+1F1FA_U+1F1E6",
|
|
1110
|
+
"U+1F1FA_U+1F1EC",
|
|
1111
|
+
"U+1F1FA_U+1F1F2",
|
|
1112
|
+
"U+1F1FA_U+1F1F3",
|
|
1113
|
+
"U+1F1FA_U+1F1F8",
|
|
1114
|
+
"U+1F1FA_U+1F1FE",
|
|
1115
|
+
"U+1F1FA_U+1F1FF",
|
|
1116
|
+
"U+1F1FB_U+1F1E6",
|
|
1117
|
+
"U+1F1FB_U+1F1E8",
|
|
1118
|
+
"U+1F1FB_U+1F1EA",
|
|
1119
|
+
"U+1F1FB_U+1F1EC",
|
|
1120
|
+
"U+1F1FB_U+1F1EE",
|
|
1121
|
+
"U+1F1FB_U+1F1F3",
|
|
1122
|
+
"U+1F1FB_U+1F1FA",
|
|
1123
|
+
"U+1F1FC_U+1F1EB",
|
|
1124
|
+
"U+1F1FC_U+1F1F8",
|
|
1125
|
+
"U+1F1FD_U+1F1F0",
|
|
1126
|
+
"U+1F1FE_U+1F1EA",
|
|
1127
|
+
"U+1F1FE_U+1F1F9",
|
|
1128
|
+
"U+1F1FF_U+1F1E6",
|
|
1129
|
+
"U+1F1FF_U+1F1F2",
|
|
1130
|
+
"U+1F1FF_U+1F1FC",
|
|
1131
|
+
"U+1F201",
|
|
1132
|
+
"U+1F202",
|
|
1133
|
+
"U+1F21A",
|
|
1134
|
+
"U+1F22F",
|
|
1135
|
+
"U+1F232",
|
|
1136
|
+
"U+1F233",
|
|
1137
|
+
"U+1F234",
|
|
1138
|
+
"U+1F235",
|
|
1139
|
+
"U+1F236",
|
|
1140
|
+
"U+1F237",
|
|
1141
|
+
"U+1F238",
|
|
1142
|
+
"U+1F239",
|
|
1143
|
+
"U+1F23A",
|
|
1144
|
+
"U+1F250",
|
|
1145
|
+
"U+1F251",
|
|
1146
|
+
"U+1F300",
|
|
1147
|
+
"U+1F301",
|
|
1148
|
+
"U+1F302",
|
|
1149
|
+
"U+1F303",
|
|
1150
|
+
"U+1F304",
|
|
1151
|
+
"U+1F305",
|
|
1152
|
+
"U+1F306",
|
|
1153
|
+
"U+1F307",
|
|
1154
|
+
"U+1F308",
|
|
1155
|
+
"U+1F309",
|
|
1156
|
+
"U+1F30A",
|
|
1157
|
+
"U+1F30B",
|
|
1158
|
+
"U+1F30C",
|
|
1159
|
+
"U+1F30D",
|
|
1160
|
+
"U+1F30E",
|
|
1161
|
+
"U+1F30F",
|
|
1162
|
+
"U+1F310",
|
|
1163
|
+
"U+1F311",
|
|
1164
|
+
"U+1F312",
|
|
1165
|
+
"U+1F313",
|
|
1166
|
+
"U+1F314",
|
|
1167
|
+
"U+1F315",
|
|
1168
|
+
"U+1F316",
|
|
1169
|
+
"U+1F317",
|
|
1170
|
+
"U+1F318",
|
|
1171
|
+
"U+1F319",
|
|
1172
|
+
"U+1F31A",
|
|
1173
|
+
"U+1F31B",
|
|
1174
|
+
"U+1F31C",
|
|
1175
|
+
"U+1F31D",
|
|
1176
|
+
"U+1F31E",
|
|
1177
|
+
"U+1F31F",
|
|
1178
|
+
"U+1F320",
|
|
1179
|
+
"U+1F321",
|
|
1180
|
+
"U+1F324",
|
|
1181
|
+
"U+1F325",
|
|
1182
|
+
"U+1F326",
|
|
1183
|
+
"U+1F327",
|
|
1184
|
+
"U+1F328",
|
|
1185
|
+
"U+1F329",
|
|
1186
|
+
"U+1F32A",
|
|
1187
|
+
"U+1F32B",
|
|
1188
|
+
"U+1F32C",
|
|
1189
|
+
"U+1F32D",
|
|
1190
|
+
"U+1F32E",
|
|
1191
|
+
"U+1F32F",
|
|
1192
|
+
"U+1F330",
|
|
1193
|
+
"U+1F331",
|
|
1194
|
+
"U+1F332",
|
|
1195
|
+
"U+1F333",
|
|
1196
|
+
"U+1F334",
|
|
1197
|
+
"U+1F335",
|
|
1198
|
+
"U+1F336",
|
|
1199
|
+
"U+1F337",
|
|
1200
|
+
"U+1F338",
|
|
1201
|
+
"U+1F339",
|
|
1202
|
+
"U+1F33A",
|
|
1203
|
+
"U+1F33B",
|
|
1204
|
+
"U+1F33C",
|
|
1205
|
+
"U+1F33D",
|
|
1206
|
+
"U+1F33E",
|
|
1207
|
+
"U+1F33F",
|
|
1208
|
+
"U+1F340",
|
|
1209
|
+
"U+1F341",
|
|
1210
|
+
"U+1F342",
|
|
1211
|
+
"U+1F343",
|
|
1212
|
+
"U+1F344",
|
|
1213
|
+
"U+1F344_U+200D_U+1F7EB",
|
|
1214
|
+
"U+1F345",
|
|
1215
|
+
"U+1F346",
|
|
1216
|
+
"U+1F347",
|
|
1217
|
+
"U+1F348",
|
|
1218
|
+
"U+1F349",
|
|
1219
|
+
"U+1F34A",
|
|
1220
|
+
"U+1F34B",
|
|
1221
|
+
"U+1F34B_U+200D_U+1F7E9",
|
|
1222
|
+
"U+1F34C",
|
|
1223
|
+
"U+1F34D",
|
|
1224
|
+
"U+1F34E",
|
|
1225
|
+
"U+1F34F",
|
|
1226
|
+
"U+1F350",
|
|
1227
|
+
"U+1F351",
|
|
1228
|
+
"U+1F352",
|
|
1229
|
+
"U+1F353",
|
|
1230
|
+
"U+1F354",
|
|
1231
|
+
"U+1F355",
|
|
1232
|
+
"U+1F356",
|
|
1233
|
+
"U+1F357",
|
|
1234
|
+
"U+1F358",
|
|
1235
|
+
"U+1F359",
|
|
1236
|
+
"U+1F35A",
|
|
1237
|
+
"U+1F35B",
|
|
1238
|
+
"U+1F35C",
|
|
1239
|
+
"U+1F35D",
|
|
1240
|
+
"U+1F35E",
|
|
1241
|
+
"U+1F35F",
|
|
1242
|
+
"U+1F360",
|
|
1243
|
+
"U+1F361",
|
|
1244
|
+
"U+1F362",
|
|
1245
|
+
"U+1F363",
|
|
1246
|
+
"U+1F364",
|
|
1247
|
+
"U+1F365",
|
|
1248
|
+
"U+1F366",
|
|
1249
|
+
"U+1F367",
|
|
1250
|
+
"U+1F368",
|
|
1251
|
+
"U+1F369",
|
|
1252
|
+
"U+1F36A",
|
|
1253
|
+
"U+1F36B",
|
|
1254
|
+
"U+1F36C",
|
|
1255
|
+
"U+1F36D",
|
|
1256
|
+
"U+1F36E",
|
|
1257
|
+
"U+1F36F",
|
|
1258
|
+
"U+1F370",
|
|
1259
|
+
"U+1F371",
|
|
1260
|
+
"U+1F372",
|
|
1261
|
+
"U+1F373",
|
|
1262
|
+
"U+1F374",
|
|
1263
|
+
"U+1F375",
|
|
1264
|
+
"U+1F376",
|
|
1265
|
+
"U+1F377",
|
|
1266
|
+
"U+1F378",
|
|
1267
|
+
"U+1F379",
|
|
1268
|
+
"U+1F37A",
|
|
1269
|
+
"U+1F37B",
|
|
1270
|
+
"U+1F37C",
|
|
1271
|
+
"U+1F37D",
|
|
1272
|
+
"U+1F37E",
|
|
1273
|
+
"U+1F37F",
|
|
1274
|
+
"U+1F380",
|
|
1275
|
+
"U+1F381",
|
|
1276
|
+
"U+1F382",
|
|
1277
|
+
"U+1F383",
|
|
1278
|
+
"U+1F384",
|
|
1279
|
+
"U+1F385",
|
|
1280
|
+
"U+1F386",
|
|
1281
|
+
"U+1F387",
|
|
1282
|
+
"U+1F388",
|
|
1283
|
+
"U+1F389",
|
|
1284
|
+
"U+1F38A",
|
|
1285
|
+
"U+1F38B",
|
|
1286
|
+
"U+1F38C",
|
|
1287
|
+
"U+1F38D",
|
|
1288
|
+
"U+1F38E",
|
|
1289
|
+
"U+1F38F",
|
|
1290
|
+
"U+1F390",
|
|
1291
|
+
"U+1F391",
|
|
1292
|
+
"U+1F392",
|
|
1293
|
+
"U+1F393",
|
|
1294
|
+
"U+1F396",
|
|
1295
|
+
"U+1F397",
|
|
1296
|
+
"U+1F399",
|
|
1297
|
+
"U+1F39A",
|
|
1298
|
+
"U+1F39B",
|
|
1299
|
+
"U+1F39E",
|
|
1300
|
+
"U+1F39F",
|
|
1301
|
+
"U+1F3A0",
|
|
1302
|
+
"U+1F3A1",
|
|
1303
|
+
"U+1F3A2",
|
|
1304
|
+
"U+1F3A3",
|
|
1305
|
+
"U+1F3A4",
|
|
1306
|
+
"U+1F3A5",
|
|
1307
|
+
"U+1F3A6",
|
|
1308
|
+
"U+1F3A7",
|
|
1309
|
+
"U+1F3A8",
|
|
1310
|
+
"U+1F3A9",
|
|
1311
|
+
"U+1F3AA",
|
|
1312
|
+
"U+1F3AB",
|
|
1313
|
+
"U+1F3AC",
|
|
1314
|
+
"U+1F3AD",
|
|
1315
|
+
"U+1F3AE",
|
|
1316
|
+
"U+1F3AF",
|
|
1317
|
+
"U+1F3B0",
|
|
1318
|
+
"U+1F3B1",
|
|
1319
|
+
"U+1F3B2",
|
|
1320
|
+
"U+1F3B3",
|
|
1321
|
+
"U+1F3B4",
|
|
1322
|
+
"U+1F3B5",
|
|
1323
|
+
"U+1F3B6",
|
|
1324
|
+
"U+1F3B7",
|
|
1325
|
+
"U+1F3B8",
|
|
1326
|
+
"U+1F3B9",
|
|
1327
|
+
"U+1F3BA",
|
|
1328
|
+
"U+1F3BB",
|
|
1329
|
+
"U+1F3BC",
|
|
1330
|
+
"U+1F3BD",
|
|
1331
|
+
"U+1F3BE",
|
|
1332
|
+
"U+1F3BF",
|
|
1333
|
+
"U+1F3C0",
|
|
1334
|
+
"U+1F3C1",
|
|
1335
|
+
"U+1F3C2",
|
|
1336
|
+
"U+1F3C3",
|
|
1337
|
+
"U+1F3C3_U+200D_U+2640",
|
|
1338
|
+
"U+1F3C3_U+200D_U+2642",
|
|
1339
|
+
"U+1F3C4",
|
|
1340
|
+
"U+1F3C4_U+200D_U+2640",
|
|
1341
|
+
"U+1F3C4_U+200D_U+2642",
|
|
1342
|
+
"U+1F3C5",
|
|
1343
|
+
"U+1F3C6",
|
|
1344
|
+
"U+1F3C7",
|
|
1345
|
+
"U+1F3C8",
|
|
1346
|
+
"U+1F3C9",
|
|
1347
|
+
"U+1F3CA",
|
|
1348
|
+
"U+1F3CA_U+200D_U+2640",
|
|
1349
|
+
"U+1F3CA_U+200D_U+2642",
|
|
1350
|
+
"U+1F3CB",
|
|
1351
|
+
"U+1F3CB_U+200D_U+2640",
|
|
1352
|
+
"U+1F3CB_U+200D_U+2642",
|
|
1353
|
+
"U+1F3CC",
|
|
1354
|
+
"U+1F3CC_U+200D_U+2640",
|
|
1355
|
+
"U+1F3CC_U+200D_U+2642",
|
|
1356
|
+
"U+1F3CE",
|
|
1357
|
+
"U+1F3CF",
|
|
1358
|
+
"U+1F3D0",
|
|
1359
|
+
"U+1F3D1",
|
|
1360
|
+
"U+1F3D2",
|
|
1361
|
+
"U+1F3D3",
|
|
1362
|
+
"U+1F3D4",
|
|
1363
|
+
"U+1F3D5",
|
|
1364
|
+
"U+1F3D6",
|
|
1365
|
+
"U+1F3D7",
|
|
1366
|
+
"U+1F3D8",
|
|
1367
|
+
"U+1F3D9",
|
|
1368
|
+
"U+1F3DA",
|
|
1369
|
+
"U+1F3DB",
|
|
1370
|
+
"U+1F3DC",
|
|
1371
|
+
"U+1F3DD",
|
|
1372
|
+
"U+1F3DE",
|
|
1373
|
+
"U+1F3DF",
|
|
1374
|
+
"U+1F3E0",
|
|
1375
|
+
"U+1F3E1",
|
|
1376
|
+
"U+1F3E2",
|
|
1377
|
+
"U+1F3E3",
|
|
1378
|
+
"U+1F3E4",
|
|
1379
|
+
"U+1F3E5",
|
|
1380
|
+
"U+1F3E6",
|
|
1381
|
+
"U+1F3E7",
|
|
1382
|
+
"U+1F3E8",
|
|
1383
|
+
"U+1F3E9",
|
|
1384
|
+
"U+1F3EA",
|
|
1385
|
+
"U+1F3EB",
|
|
1386
|
+
"U+1F3EC",
|
|
1387
|
+
"U+1F3ED",
|
|
1388
|
+
"U+1F3EE",
|
|
1389
|
+
"U+1F3EF",
|
|
1390
|
+
"U+1F3F0",
|
|
1391
|
+
"U+1F3F3",
|
|
1392
|
+
"U+1F3F3_U+200D_U+1F308",
|
|
1393
|
+
"U+1F3F3_U+200D_U+26A7",
|
|
1394
|
+
"U+1F3F4",
|
|
1395
|
+
"U+1F3F4_U+200D_U+2620",
|
|
1396
|
+
"U+1F3F4_U+E0067_U+E0062_U+E0065_U+E006E_U+E0067_U+E007F",
|
|
1397
|
+
"U+1F3F4_U+E0067_U+E0062_U+E0073_U+E0063_U+E0074_U+E007F",
|
|
1398
|
+
"U+1F3F4_U+E0067_U+E0062_U+E0077_U+E006C_U+E0073_U+E007F",
|
|
1399
|
+
"U+1F3F5",
|
|
1400
|
+
"U+1F3F7",
|
|
1401
|
+
"U+1F3F8",
|
|
1402
|
+
"U+1F3F9",
|
|
1403
|
+
"U+1F3FA",
|
|
1404
|
+
"U+1F3FB",
|
|
1405
|
+
"U+1F3FC",
|
|
1406
|
+
"U+1F3FD",
|
|
1407
|
+
"U+1F3FE",
|
|
1408
|
+
"U+1F3FF",
|
|
1409
|
+
"U+1F400",
|
|
1410
|
+
"U+1F401",
|
|
1411
|
+
"U+1F402",
|
|
1412
|
+
"U+1F403",
|
|
1413
|
+
"U+1F404",
|
|
1414
|
+
"U+1F405",
|
|
1415
|
+
"U+1F406",
|
|
1416
|
+
"U+1F407",
|
|
1417
|
+
"U+1F408",
|
|
1418
|
+
"U+1F408_U+200D_U+2B1B",
|
|
1419
|
+
"U+1F409",
|
|
1420
|
+
"U+1F40A",
|
|
1421
|
+
"U+1F40B",
|
|
1422
|
+
"U+1F40C",
|
|
1423
|
+
"U+1F40D",
|
|
1424
|
+
"U+1F40E",
|
|
1425
|
+
"U+1F40F",
|
|
1426
|
+
"U+1F410",
|
|
1427
|
+
"U+1F411",
|
|
1428
|
+
"U+1F412",
|
|
1429
|
+
"U+1F413",
|
|
1430
|
+
"U+1F414",
|
|
1431
|
+
"U+1F415",
|
|
1432
|
+
"U+1F415_U+200D_U+1F9BA",
|
|
1433
|
+
"U+1F416",
|
|
1434
|
+
"U+1F417",
|
|
1435
|
+
"U+1F418",
|
|
1436
|
+
"U+1F419",
|
|
1437
|
+
"U+1F41A",
|
|
1438
|
+
"U+1F41B",
|
|
1439
|
+
"U+1F41C",
|
|
1440
|
+
"U+1F41D",
|
|
1441
|
+
"U+1F41E",
|
|
1442
|
+
"U+1F41F",
|
|
1443
|
+
"U+1F420",
|
|
1444
|
+
"U+1F421",
|
|
1445
|
+
"U+1F422",
|
|
1446
|
+
"U+1F423",
|
|
1447
|
+
"U+1F424",
|
|
1448
|
+
"U+1F425",
|
|
1449
|
+
"U+1F426",
|
|
1450
|
+
"U+1F426_U+200D_U+1F525",
|
|
1451
|
+
"U+1F426_U+200D_U+2B1B",
|
|
1452
|
+
"U+1F427",
|
|
1453
|
+
"U+1F428",
|
|
1454
|
+
"U+1F429",
|
|
1455
|
+
"U+1F42A",
|
|
1456
|
+
"U+1F42B",
|
|
1457
|
+
"U+1F42C",
|
|
1458
|
+
"U+1F42D",
|
|
1459
|
+
"U+1F42E",
|
|
1460
|
+
"U+1F42F",
|
|
1461
|
+
"U+1F430",
|
|
1462
|
+
"U+1F431",
|
|
1463
|
+
"U+1F432",
|
|
1464
|
+
"U+1F433",
|
|
1465
|
+
"U+1F434",
|
|
1466
|
+
"U+1F435",
|
|
1467
|
+
"U+1F436",
|
|
1468
|
+
"U+1F437",
|
|
1469
|
+
"U+1F438",
|
|
1470
|
+
"U+1F439",
|
|
1471
|
+
"U+1F43A",
|
|
1472
|
+
"U+1F43B",
|
|
1473
|
+
"U+1F43B_U+200D_U+2744",
|
|
1474
|
+
"U+1F43C",
|
|
1475
|
+
"U+1F43D",
|
|
1476
|
+
"U+1F43E",
|
|
1477
|
+
"U+1F43F",
|
|
1478
|
+
"U+1F440",
|
|
1479
|
+
"U+1F441",
|
|
1480
|
+
"U+1F441_U+200D_U+1F5E8",
|
|
1481
|
+
"U+1F442",
|
|
1482
|
+
"U+1F443",
|
|
1483
|
+
"U+1F444",
|
|
1484
|
+
"U+1F445",
|
|
1485
|
+
"U+1F446",
|
|
1486
|
+
"U+1F447",
|
|
1487
|
+
"U+1F448",
|
|
1488
|
+
"U+1F449",
|
|
1489
|
+
"U+1F44A",
|
|
1490
|
+
"U+1F44B",
|
|
1491
|
+
"U+1F44C",
|
|
1492
|
+
"U+1F44D",
|
|
1493
|
+
"U+1F44E",
|
|
1494
|
+
"U+1F44F",
|
|
1495
|
+
"U+1F450",
|
|
1496
|
+
"U+1F451",
|
|
1497
|
+
"U+1F452",
|
|
1498
|
+
"U+1F453",
|
|
1499
|
+
"U+1F454",
|
|
1500
|
+
"U+1F455",
|
|
1501
|
+
"U+1F456",
|
|
1502
|
+
"U+1F457",
|
|
1503
|
+
"U+1F458",
|
|
1504
|
+
"U+1F459",
|
|
1505
|
+
"U+1F45A",
|
|
1506
|
+
"U+1F45B",
|
|
1507
|
+
"U+1F45C",
|
|
1508
|
+
"U+1F45D",
|
|
1509
|
+
"U+1F45E",
|
|
1510
|
+
"U+1F45F",
|
|
1511
|
+
"U+1F460",
|
|
1512
|
+
"U+1F461",
|
|
1513
|
+
"U+1F462",
|
|
1514
|
+
"U+1F463",
|
|
1515
|
+
"U+1F464",
|
|
1516
|
+
"U+1F465",
|
|
1517
|
+
"U+1F468",
|
|
1518
|
+
"U+1F468_U+200D_U+1F466",
|
|
1519
|
+
"U+1F468_U+200D_U+1F466_U+200D_U+1F466",
|
|
1520
|
+
"U+1F468_U+200D_U+1F467",
|
|
1521
|
+
"U+1F468_U+200D_U+1F467_U+200D_U+1F466",
|
|
1522
|
+
"U+1F468_U+200D_U+1F467_U+200D_U+1F467",
|
|
1523
|
+
"U+1F468_U+200D_U+1F468_U+200D_U+1F466",
|
|
1524
|
+
"U+1F468_U+200D_U+1F468_U+200D_U+1F466_U+200D_U+1F466",
|
|
1525
|
+
"U+1F468_U+200D_U+1F468_U+200D_U+1F467",
|
|
1526
|
+
"U+1F468_U+200D_U+1F468_U+200D_U+1F467_U+200D_U+1F466",
|
|
1527
|
+
"U+1F468_U+200D_U+1F468_U+200D_U+1F467_U+200D_U+1F467",
|
|
1528
|
+
"U+1F468_U+200D_U+1F469_U+200D_U+1F466",
|
|
1529
|
+
"U+1F468_U+200D_U+1F469_U+200D_U+1F466_U+200D_U+1F466",
|
|
1530
|
+
"U+1F468_U+200D_U+1F469_U+200D_U+1F467",
|
|
1531
|
+
"U+1F468_U+200D_U+1F469_U+200D_U+1F467_U+200D_U+1F466",
|
|
1532
|
+
"U+1F468_U+200D_U+1F469_U+200D_U+1F467_U+200D_U+1F467",
|
|
1533
|
+
"U+1F468_U+200D_U+1F4BB",
|
|
1534
|
+
"U+1F468_U+200D_U+1F4BC",
|
|
1535
|
+
"U+1F468_U+200D_U+1F527",
|
|
1536
|
+
"U+1F468_U+200D_U+1F52C",
|
|
1537
|
+
"U+1F468_U+200D_U+1F680",
|
|
1538
|
+
"U+1F468_U+200D_U+1F692",
|
|
1539
|
+
"U+1F468_U+200D_U+1F9AF",
|
|
1540
|
+
"U+1F468_U+200D_U+1F9B0",
|
|
1541
|
+
"U+1F468_U+200D_U+1F9B1",
|
|
1542
|
+
"U+1F468_U+200D_U+1F9B2",
|
|
1543
|
+
"U+1F468_U+200D_U+1F9B3",
|
|
1544
|
+
"U+1F468_U+200D_U+1F9BD",
|
|
1545
|
+
"U+1F468_U+200D_U+2695",
|
|
1546
|
+
"U+1F468_U+200D_U+2696",
|
|
1547
|
+
"U+1F468_U+200D_U+2764_U+200D_U+1F468",
|
|
1548
|
+
"U+1F469",
|
|
1549
|
+
"U+1F469_U+200D_U+1F466",
|
|
1550
|
+
"U+1F469_U+200D_U+1F466_U+200D_U+1F466",
|
|
1551
|
+
"U+1F469_U+200D_U+1F467",
|
|
1552
|
+
"U+1F469_U+200D_U+1F467_U+200D_U+1F466",
|
|
1553
|
+
"U+1F469_U+200D_U+1F467_U+200D_U+1F467",
|
|
1554
|
+
"U+1F469_U+200D_U+1F469_U+200D_U+1F466",
|
|
1555
|
+
"U+1F469_U+200D_U+1F469_U+200D_U+1F466_U+200D_U+1F466",
|
|
1556
|
+
"U+1F469_U+200D_U+1F469_U+200D_U+1F467",
|
|
1557
|
+
"U+1F469_U+200D_U+1F469_U+200D_U+1F467_U+200D_U+1F466",
|
|
1558
|
+
"U+1F469_U+200D_U+1F469_U+200D_U+1F467_U+200D_U+1F467",
|
|
1559
|
+
"U+1F469_U+200D_U+1F4BB",
|
|
1560
|
+
"U+1F469_U+200D_U+1F4BC",
|
|
1561
|
+
"U+1F469_U+200D_U+1F527",
|
|
1562
|
+
"U+1F469_U+200D_U+1F52C",
|
|
1563
|
+
"U+1F469_U+200D_U+1F680",
|
|
1564
|
+
"U+1F469_U+200D_U+1F692",
|
|
1565
|
+
"U+1F469_U+200D_U+1F9AF",
|
|
1566
|
+
"U+1F469_U+200D_U+1F9B0",
|
|
1567
|
+
"U+1F469_U+200D_U+1F9B1",
|
|
1568
|
+
"U+1F469_U+200D_U+1F9B2",
|
|
1569
|
+
"U+1F469_U+200D_U+1F9B3",
|
|
1570
|
+
"U+1F469_U+200D_U+1F9BD",
|
|
1571
|
+
"U+1F469_U+200D_U+2695",
|
|
1572
|
+
"U+1F469_U+200D_U+2696",
|
|
1573
|
+
"U+1F469_U+200D_U+2764_U+200D_U+1F468",
|
|
1574
|
+
"U+1F469_U+200D_U+2764_U+200D_U+1F469",
|
|
1575
|
+
"U+1F46F",
|
|
1576
|
+
"U+1F471",
|
|
1577
|
+
"U+1F471_U+200D_U+2640",
|
|
1578
|
+
"U+1F471_U+200D_U+2642",
|
|
1579
|
+
"U+1F473",
|
|
1580
|
+
"U+1F473_U+200D_U+2640",
|
|
1581
|
+
"U+1F473_U+200D_U+2642",
|
|
1582
|
+
"U+1F474",
|
|
1583
|
+
"U+1F478",
|
|
1584
|
+
"U+1F479",
|
|
1585
|
+
"U+1F47A",
|
|
1586
|
+
"U+1F47B",
|
|
1587
|
+
"U+1F47C",
|
|
1588
|
+
"U+1F47D",
|
|
1589
|
+
"U+1F47E",
|
|
1590
|
+
"U+1F47F",
|
|
1591
|
+
"U+1F480",
|
|
1592
|
+
"U+1F481",
|
|
1593
|
+
"U+1F481_U+200D_U+2640",
|
|
1594
|
+
"U+1F481_U+200D_U+2642",
|
|
1595
|
+
"U+1F482",
|
|
1596
|
+
"U+1F482_U+200D_U+2640",
|
|
1597
|
+
"U+1F482_U+200D_U+2642",
|
|
1598
|
+
"U+1F483",
|
|
1599
|
+
"U+1F484",
|
|
1600
|
+
"U+1F485",
|
|
1601
|
+
"U+1F486",
|
|
1602
|
+
"U+1F486_U+200D_U+2640",
|
|
1603
|
+
"U+1F486_U+200D_U+2642",
|
|
1604
|
+
"U+1F487",
|
|
1605
|
+
"U+1F487_U+200D_U+2640",
|
|
1606
|
+
"U+1F487_U+200D_U+2642",
|
|
1607
|
+
"U+1F488",
|
|
1608
|
+
"U+1F489",
|
|
1609
|
+
"U+1F48A",
|
|
1610
|
+
"U+1F48B",
|
|
1611
|
+
"U+1F48C",
|
|
1612
|
+
"U+1F48D",
|
|
1613
|
+
"U+1F48E",
|
|
1614
|
+
"U+1F490",
|
|
1615
|
+
"U+1F492",
|
|
1616
|
+
"U+1F493",
|
|
1617
|
+
"U+1F494",
|
|
1618
|
+
"U+1F495",
|
|
1619
|
+
"U+1F496",
|
|
1620
|
+
"U+1F497",
|
|
1621
|
+
"U+1F498",
|
|
1622
|
+
"U+1F499",
|
|
1623
|
+
"U+1F49A",
|
|
1624
|
+
"U+1F49B",
|
|
1625
|
+
"U+1F49C",
|
|
1626
|
+
"U+1F49D",
|
|
1627
|
+
"U+1F49E",
|
|
1628
|
+
"U+1F49F",
|
|
1629
|
+
"U+1F4A0",
|
|
1630
|
+
"U+1F4A1",
|
|
1631
|
+
"U+1F4A2",
|
|
1632
|
+
"U+1F4A3",
|
|
1633
|
+
"U+1F4A4",
|
|
1634
|
+
"U+1F4A5",
|
|
1635
|
+
"U+1F4A6",
|
|
1636
|
+
"U+1F4A7",
|
|
1637
|
+
"U+1F4A8",
|
|
1638
|
+
"U+1F4A9",
|
|
1639
|
+
"U+1F4AA",
|
|
1640
|
+
"U+1F4AB",
|
|
1641
|
+
"U+1F4AC",
|
|
1642
|
+
"U+1F4AD",
|
|
1643
|
+
"U+1F4AE",
|
|
1644
|
+
"U+1F4AF",
|
|
1645
|
+
"U+1F4B0",
|
|
1646
|
+
"U+1F4B1",
|
|
1647
|
+
"U+1F4B2",
|
|
1648
|
+
"U+1F4B3",
|
|
1649
|
+
"U+1F4B4",
|
|
1650
|
+
"U+1F4B5",
|
|
1651
|
+
"U+1F4B6",
|
|
1652
|
+
"U+1F4B7",
|
|
1653
|
+
"U+1F4B8",
|
|
1654
|
+
"U+1F4B9",
|
|
1655
|
+
"U+1F4BA",
|
|
1656
|
+
"U+1F4BB",
|
|
1657
|
+
"U+1F4BC",
|
|
1658
|
+
"U+1F4BD",
|
|
1659
|
+
"U+1F4BE",
|
|
1660
|
+
"U+1F4BF",
|
|
1661
|
+
"U+1F4C0",
|
|
1662
|
+
"U+1F4C1",
|
|
1663
|
+
"U+1F4C2",
|
|
1664
|
+
"U+1F4C3",
|
|
1665
|
+
"U+1F4C4",
|
|
1666
|
+
"U+1F4C5",
|
|
1667
|
+
"U+1F4C6",
|
|
1668
|
+
"U+1F4C7",
|
|
1669
|
+
"U+1F4C8",
|
|
1670
|
+
"U+1F4C9",
|
|
1671
|
+
"U+1F4CA",
|
|
1672
|
+
"U+1F4CB",
|
|
1673
|
+
"U+1F4CC",
|
|
1674
|
+
"U+1F4CD",
|
|
1675
|
+
"U+1F4CE",
|
|
1676
|
+
"U+1F4CF",
|
|
1677
|
+
"U+1F4D0",
|
|
1678
|
+
"U+1F4D1",
|
|
1679
|
+
"U+1F4D2",
|
|
1680
|
+
"U+1F4D3",
|
|
1681
|
+
"U+1F4D4",
|
|
1682
|
+
"U+1F4D5",
|
|
1683
|
+
"U+1F4D6",
|
|
1684
|
+
"U+1F4D7",
|
|
1685
|
+
"U+1F4D8",
|
|
1686
|
+
"U+1F4D9",
|
|
1687
|
+
"U+1F4DA",
|
|
1688
|
+
"U+1F4DB",
|
|
1689
|
+
"U+1F4DC",
|
|
1690
|
+
"U+1F4DD",
|
|
1691
|
+
"U+1F4DE",
|
|
1692
|
+
"U+1F4DF",
|
|
1693
|
+
"U+1F4E0",
|
|
1694
|
+
"U+1F4E1",
|
|
1695
|
+
"U+1F4E2",
|
|
1696
|
+
"U+1F4E3",
|
|
1697
|
+
"U+1F4E4",
|
|
1698
|
+
"U+1F4E5",
|
|
1699
|
+
"U+1F4E6",
|
|
1700
|
+
"U+1F4E7",
|
|
1701
|
+
"U+1F4E8",
|
|
1702
|
+
"U+1F4E9",
|
|
1703
|
+
"U+1F4EA",
|
|
1704
|
+
"U+1F4EB",
|
|
1705
|
+
"U+1F4EC",
|
|
1706
|
+
"U+1F4ED",
|
|
1707
|
+
"U+1F4EE",
|
|
1708
|
+
"U+1F4EF",
|
|
1709
|
+
"U+1F4F0",
|
|
1710
|
+
"U+1F4F1",
|
|
1711
|
+
"U+1F4F2",
|
|
1712
|
+
"U+1F4F3",
|
|
1713
|
+
"U+1F4F4",
|
|
1714
|
+
"U+1F4F5",
|
|
1715
|
+
"U+1F4F6",
|
|
1716
|
+
"U+1F4F7",
|
|
1717
|
+
"U+1F4F8",
|
|
1718
|
+
"U+1F4F9",
|
|
1719
|
+
"U+1F4FA",
|
|
1720
|
+
"U+1F4FB",
|
|
1721
|
+
"U+1F4FC",
|
|
1722
|
+
"U+1F4FD",
|
|
1723
|
+
"U+1F500",
|
|
1724
|
+
"U+1F501",
|
|
1725
|
+
"U+1F502",
|
|
1726
|
+
"U+1F503",
|
|
1727
|
+
"U+1F504",
|
|
1728
|
+
"U+1F505",
|
|
1729
|
+
"U+1F506",
|
|
1730
|
+
"U+1F507",
|
|
1731
|
+
"U+1F508",
|
|
1732
|
+
"U+1F509",
|
|
1733
|
+
"U+1F50A",
|
|
1734
|
+
"U+1F50B",
|
|
1735
|
+
"U+1F50C",
|
|
1736
|
+
"U+1F50D",
|
|
1737
|
+
"U+1F50E",
|
|
1738
|
+
"U+1F50F",
|
|
1739
|
+
"U+1F510",
|
|
1740
|
+
"U+1F511",
|
|
1741
|
+
"U+1F512",
|
|
1742
|
+
"U+1F513",
|
|
1743
|
+
"U+1F514",
|
|
1744
|
+
"U+1F515",
|
|
1745
|
+
"U+1F516",
|
|
1746
|
+
"U+1F517",
|
|
1747
|
+
"U+1F518",
|
|
1748
|
+
"U+1F519",
|
|
1749
|
+
"U+1F51A",
|
|
1750
|
+
"U+1F51B",
|
|
1751
|
+
"U+1F51C",
|
|
1752
|
+
"U+1F51D",
|
|
1753
|
+
"U+1F51E",
|
|
1754
|
+
"U+1F51F",
|
|
1755
|
+
"U+1F520",
|
|
1756
|
+
"U+1F521",
|
|
1757
|
+
"U+1F522",
|
|
1758
|
+
"U+1F523",
|
|
1759
|
+
"U+1F524",
|
|
1760
|
+
"U+1F525",
|
|
1761
|
+
"U+1F526",
|
|
1762
|
+
"U+1F527",
|
|
1763
|
+
"U+1F528",
|
|
1764
|
+
"U+1F529",
|
|
1765
|
+
"U+1F52A",
|
|
1766
|
+
"U+1F52B",
|
|
1767
|
+
"U+1F52C",
|
|
1768
|
+
"U+1F52D",
|
|
1769
|
+
"U+1F52E",
|
|
1770
|
+
"U+1F52F",
|
|
1771
|
+
"U+1F530",
|
|
1772
|
+
"U+1F531",
|
|
1773
|
+
"U+1F532",
|
|
1774
|
+
"U+1F533",
|
|
1775
|
+
"U+1F534",
|
|
1776
|
+
"U+1F535",
|
|
1777
|
+
"U+1F536",
|
|
1778
|
+
"U+1F537",
|
|
1779
|
+
"U+1F538",
|
|
1780
|
+
"U+1F539",
|
|
1781
|
+
"U+1F53A",
|
|
1782
|
+
"U+1F53B",
|
|
1783
|
+
"U+1F53C",
|
|
1784
|
+
"U+1F53D",
|
|
1785
|
+
"U+1F549",
|
|
1786
|
+
"U+1F54A",
|
|
1787
|
+
"U+1F54B",
|
|
1788
|
+
"U+1F54D",
|
|
1789
|
+
"U+1F54E",
|
|
1790
|
+
"U+1F550",
|
|
1791
|
+
"U+1F551",
|
|
1792
|
+
"U+1F552",
|
|
1793
|
+
"U+1F553",
|
|
1794
|
+
"U+1F554",
|
|
1795
|
+
"U+1F555",
|
|
1796
|
+
"U+1F556",
|
|
1797
|
+
"U+1F557",
|
|
1798
|
+
"U+1F558",
|
|
1799
|
+
"U+1F559",
|
|
1800
|
+
"U+1F55A",
|
|
1801
|
+
"U+1F55B",
|
|
1802
|
+
"U+1F55C",
|
|
1803
|
+
"U+1F55D",
|
|
1804
|
+
"U+1F55E",
|
|
1805
|
+
"U+1F55F",
|
|
1806
|
+
"U+1F560",
|
|
1807
|
+
"U+1F561",
|
|
1808
|
+
"U+1F562",
|
|
1809
|
+
"U+1F563",
|
|
1810
|
+
"U+1F564",
|
|
1811
|
+
"U+1F565",
|
|
1812
|
+
"U+1F566",
|
|
1813
|
+
"U+1F567",
|
|
1814
|
+
"U+1F56F",
|
|
1815
|
+
"U+1F570",
|
|
1816
|
+
"U+1F573",
|
|
1817
|
+
"U+1F574",
|
|
1818
|
+
"U+1F575",
|
|
1819
|
+
"U+1F576",
|
|
1820
|
+
"U+1F577",
|
|
1821
|
+
"U+1F578",
|
|
1822
|
+
"U+1F579",
|
|
1823
|
+
"U+1F57A",
|
|
1824
|
+
"U+1F587",
|
|
1825
|
+
"U+1F58A",
|
|
1826
|
+
"U+1F58B",
|
|
1827
|
+
"U+1F58C",
|
|
1828
|
+
"U+1F58D",
|
|
1829
|
+
"U+1F590",
|
|
1830
|
+
"U+1F595",
|
|
1831
|
+
"U+1F596",
|
|
1832
|
+
"U+1F5A4",
|
|
1833
|
+
"U+1F5A5",
|
|
1834
|
+
"U+1F5A8",
|
|
1835
|
+
"U+1F5B1",
|
|
1836
|
+
"U+1F5B2",
|
|
1837
|
+
"U+1F5BC",
|
|
1838
|
+
"U+1F5C2",
|
|
1839
|
+
"U+1F5C3",
|
|
1840
|
+
"U+1F5C4",
|
|
1841
|
+
"U+1F5D1",
|
|
1842
|
+
"U+1F5D2",
|
|
1843
|
+
"U+1F5D3",
|
|
1844
|
+
"U+1F5DC",
|
|
1845
|
+
"U+1F5DD",
|
|
1846
|
+
"U+1F5DE",
|
|
1847
|
+
"U+1F5E1",
|
|
1848
|
+
"U+1F5E3",
|
|
1849
|
+
"U+1F5E8",
|
|
1850
|
+
"U+1F5EF",
|
|
1851
|
+
"U+1F5F3",
|
|
1852
|
+
"U+1F5FA",
|
|
1853
|
+
"U+1F5FB",
|
|
1854
|
+
"U+1F5FC",
|
|
1855
|
+
"U+1F5FD",
|
|
1856
|
+
"U+1F5FE",
|
|
1857
|
+
"U+1F5FF",
|
|
1858
|
+
"U+1F600",
|
|
1859
|
+
"U+1F601",
|
|
1860
|
+
"U+1F602",
|
|
1861
|
+
"U+1F603",
|
|
1862
|
+
"U+1F604",
|
|
1863
|
+
"U+1F605",
|
|
1864
|
+
"U+1F606",
|
|
1865
|
+
"U+1F607",
|
|
1866
|
+
"U+1F608",
|
|
1867
|
+
"U+1F609",
|
|
1868
|
+
"U+1F60A",
|
|
1869
|
+
"U+1F60B",
|
|
1870
|
+
"U+1F60C",
|
|
1871
|
+
"U+1F60D",
|
|
1872
|
+
"U+1F60E",
|
|
1873
|
+
"U+1F60F",
|
|
1874
|
+
"U+1F610",
|
|
1875
|
+
"U+1F611",
|
|
1876
|
+
"U+1F612",
|
|
1877
|
+
"U+1F613",
|
|
1878
|
+
"U+1F614",
|
|
1879
|
+
"U+1F615",
|
|
1880
|
+
"U+1F616",
|
|
1881
|
+
"U+1F617",
|
|
1882
|
+
"U+1F618",
|
|
1883
|
+
"U+1F619",
|
|
1884
|
+
"U+1F61A",
|
|
1885
|
+
"U+1F61B",
|
|
1886
|
+
"U+1F61C",
|
|
1887
|
+
"U+1F61D",
|
|
1888
|
+
"U+1F61E",
|
|
1889
|
+
"U+1F61F",
|
|
1890
|
+
"U+1F620",
|
|
1891
|
+
"U+1F621",
|
|
1892
|
+
"U+1F622",
|
|
1893
|
+
"U+1F623",
|
|
1894
|
+
"U+1F624",
|
|
1895
|
+
"U+1F625",
|
|
1896
|
+
"U+1F626",
|
|
1897
|
+
"U+1F627",
|
|
1898
|
+
"U+1F628",
|
|
1899
|
+
"U+1F629",
|
|
1900
|
+
"U+1F62A",
|
|
1901
|
+
"U+1F62B",
|
|
1902
|
+
"U+1F62C",
|
|
1903
|
+
"U+1F62D",
|
|
1904
|
+
"U+1F62E",
|
|
1905
|
+
"U+1F62E_U+200D_U+1F4A8",
|
|
1906
|
+
"U+1F62F",
|
|
1907
|
+
"U+1F630",
|
|
1908
|
+
"U+1F631",
|
|
1909
|
+
"U+1F632",
|
|
1910
|
+
"U+1F633",
|
|
1911
|
+
"U+1F634",
|
|
1912
|
+
"U+1F635",
|
|
1913
|
+
"U+1F635_U+200D_U+1F4AB",
|
|
1914
|
+
"U+1F636",
|
|
1915
|
+
"U+1F636_U+200D_U+1F32B",
|
|
1916
|
+
"U+1F637",
|
|
1917
|
+
"U+1F638",
|
|
1918
|
+
"U+1F639",
|
|
1919
|
+
"U+1F63A",
|
|
1920
|
+
"U+1F63B",
|
|
1921
|
+
"U+1F63C",
|
|
1922
|
+
"U+1F63D",
|
|
1923
|
+
"U+1F63E",
|
|
1924
|
+
"U+1F63F",
|
|
1925
|
+
"U+1F640",
|
|
1926
|
+
"U+1F641",
|
|
1927
|
+
"U+1F642",
|
|
1928
|
+
"U+1F642_U+200D_U+2194",
|
|
1929
|
+
"U+1F642_U+200D_U+2195",
|
|
1930
|
+
"U+1F643",
|
|
1931
|
+
"U+1F644",
|
|
1932
|
+
"U+1F645",
|
|
1933
|
+
"U+1F645_U+200D_U+2640",
|
|
1934
|
+
"U+1F645_U+200D_U+2642",
|
|
1935
|
+
"U+1F646",
|
|
1936
|
+
"U+1F646_U+200D_U+2640",
|
|
1937
|
+
"U+1F646_U+200D_U+2642",
|
|
1938
|
+
"U+1F647",
|
|
1939
|
+
"U+1F647_U+200D_U+2640",
|
|
1940
|
+
"U+1F647_U+200D_U+2642",
|
|
1941
|
+
"U+1F648",
|
|
1942
|
+
"U+1F649",
|
|
1943
|
+
"U+1F64A",
|
|
1944
|
+
"U+1F64B",
|
|
1945
|
+
"U+1F64B_U+200D_U+2640",
|
|
1946
|
+
"U+1F64B_U+200D_U+2642",
|
|
1947
|
+
"U+1F64C",
|
|
1948
|
+
"U+1F64F",
|
|
1949
|
+
"U+1F680",
|
|
1950
|
+
"U+1F681",
|
|
1951
|
+
"U+1F682",
|
|
1952
|
+
"U+1F683",
|
|
1953
|
+
"U+1F684",
|
|
1954
|
+
"U+1F685",
|
|
1955
|
+
"U+1F686",
|
|
1956
|
+
"U+1F687",
|
|
1957
|
+
"U+1F689",
|
|
1958
|
+
"U+1F68A",
|
|
1959
|
+
"U+1F68B",
|
|
1960
|
+
"U+1F68C",
|
|
1961
|
+
"U+1F68D",
|
|
1962
|
+
"U+1F68E",
|
|
1963
|
+
"U+1F68F",
|
|
1964
|
+
"U+1F690",
|
|
1965
|
+
"U+1F691",
|
|
1966
|
+
"U+1F692",
|
|
1967
|
+
"U+1F693",
|
|
1968
|
+
"U+1F694",
|
|
1969
|
+
"U+1F695",
|
|
1970
|
+
"U+1F696",
|
|
1971
|
+
"U+1F697",
|
|
1972
|
+
"U+1F698",
|
|
1973
|
+
"U+1F699",
|
|
1974
|
+
"U+1F69A",
|
|
1975
|
+
"U+1F69B",
|
|
1976
|
+
"U+1F69C",
|
|
1977
|
+
"U+1F69D",
|
|
1978
|
+
"U+1F69F",
|
|
1979
|
+
"U+1F6A0",
|
|
1980
|
+
"U+1F6A1",
|
|
1981
|
+
"U+1F6A2",
|
|
1982
|
+
"U+1F6A3",
|
|
1983
|
+
"U+1F6A3_U+200D_U+2640",
|
|
1984
|
+
"U+1F6A3_U+200D_U+2642",
|
|
1985
|
+
"U+1F6A4",
|
|
1986
|
+
"U+1F6A5",
|
|
1987
|
+
"U+1F6A6",
|
|
1988
|
+
"U+1F6A7",
|
|
1989
|
+
"U+1F6A8",
|
|
1990
|
+
"U+1F6A9",
|
|
1991
|
+
"U+1F6AA",
|
|
1992
|
+
"U+1F6AB",
|
|
1993
|
+
"U+1F6AC",
|
|
1994
|
+
"U+1F6AD",
|
|
1995
|
+
"U+1F6AE",
|
|
1996
|
+
"U+1F6AF",
|
|
1997
|
+
"U+1F6B0",
|
|
1998
|
+
"U+1F6B1",
|
|
1999
|
+
"U+1F6B2",
|
|
2000
|
+
"U+1F6B3",
|
|
2001
|
+
"U+1F6B4",
|
|
2002
|
+
"U+1F6B4_U+200D_U+2640",
|
|
2003
|
+
"U+1F6B4_U+200D_U+2642",
|
|
2004
|
+
"U+1F6B5",
|
|
2005
|
+
"U+1F6B5_U+200D_U+2640",
|
|
2006
|
+
"U+1F6B5_U+200D_U+2642",
|
|
2007
|
+
"U+1F6B6",
|
|
2008
|
+
"U+1F6B6_U+200D_U+2640",
|
|
2009
|
+
"U+1F6B6_U+200D_U+2642",
|
|
2010
|
+
"U+1F6B7",
|
|
2011
|
+
"U+1F6B8",
|
|
2012
|
+
"U+1F6B9",
|
|
2013
|
+
"U+1F6BA",
|
|
2014
|
+
"U+1F6BB",
|
|
2015
|
+
"U+1F6BC",
|
|
2016
|
+
"U+1F6BD",
|
|
2017
|
+
"U+1F6BE",
|
|
2018
|
+
"U+1F6BF",
|
|
2019
|
+
"U+1F6C0",
|
|
2020
|
+
"U+1F6C1",
|
|
2021
|
+
"U+1F6C2",
|
|
2022
|
+
"U+1F6C3",
|
|
2023
|
+
"U+1F6C4",
|
|
2024
|
+
"U+1F6C5",
|
|
2025
|
+
"U+1F6CB",
|
|
2026
|
+
"U+1F6CC",
|
|
2027
|
+
"U+1F6CD",
|
|
2028
|
+
"U+1F6CE",
|
|
2029
|
+
"U+1F6CF",
|
|
2030
|
+
"U+1F6D0",
|
|
2031
|
+
"U+1F6D1",
|
|
2032
|
+
"U+1F6D2",
|
|
2033
|
+
"U+1F6D6",
|
|
2034
|
+
"U+1F6D7",
|
|
2035
|
+
"U+1F6D8",
|
|
2036
|
+
"U+1F6DC",
|
|
2037
|
+
"U+1F6DD",
|
|
2038
|
+
"U+1F6DE",
|
|
2039
|
+
"U+1F6DF",
|
|
2040
|
+
"U+1F6E0",
|
|
2041
|
+
"U+1F6E1",
|
|
2042
|
+
"U+1F6E2",
|
|
2043
|
+
"U+1F6E3",
|
|
2044
|
+
"U+1F6E4",
|
|
2045
|
+
"U+1F6E5",
|
|
2046
|
+
"U+1F6E9",
|
|
2047
|
+
"U+1F6EB",
|
|
2048
|
+
"U+1F6EC",
|
|
2049
|
+
"U+1F6F0",
|
|
2050
|
+
"U+1F6F3",
|
|
2051
|
+
"U+1F6F4",
|
|
2052
|
+
"U+1F6F5",
|
|
2053
|
+
"U+1F6F6",
|
|
2054
|
+
"U+1F6F7",
|
|
2055
|
+
"U+1F6F8",
|
|
2056
|
+
"U+1F6F9",
|
|
2057
|
+
"U+1F6FA",
|
|
2058
|
+
"U+1F6FB",
|
|
2059
|
+
"U+1F6FC",
|
|
2060
|
+
"U+1F7E0",
|
|
2061
|
+
"U+1F7E1",
|
|
2062
|
+
"U+1F7E2",
|
|
2063
|
+
"U+1F7E3",
|
|
2064
|
+
"U+1F7E4",
|
|
2065
|
+
"U+1F7E5",
|
|
2066
|
+
"U+1F7E6",
|
|
2067
|
+
"U+1F7E7",
|
|
2068
|
+
"U+1F7E8",
|
|
2069
|
+
"U+1F7E9",
|
|
2070
|
+
"U+1F7EA",
|
|
2071
|
+
"U+1F7EB",
|
|
2072
|
+
"U+1F7F0",
|
|
2073
|
+
"U+1F90C",
|
|
2074
|
+
"U+1F90D",
|
|
2075
|
+
"U+1F90E",
|
|
2076
|
+
"U+1F90F",
|
|
2077
|
+
"U+1F910",
|
|
2078
|
+
"U+1F911",
|
|
2079
|
+
"U+1F912",
|
|
2080
|
+
"U+1F913",
|
|
2081
|
+
"U+1F914",
|
|
2082
|
+
"U+1F915",
|
|
2083
|
+
"U+1F916",
|
|
2084
|
+
"U+1F917",
|
|
2085
|
+
"U+1F918",
|
|
2086
|
+
"U+1F919",
|
|
2087
|
+
"U+1F91A",
|
|
2088
|
+
"U+1F91B",
|
|
2089
|
+
"U+1F91C",
|
|
2090
|
+
"U+1F91D",
|
|
2091
|
+
"U+1F91E",
|
|
2092
|
+
"U+1F91F",
|
|
2093
|
+
"U+1F920",
|
|
2094
|
+
"U+1F921",
|
|
2095
|
+
"U+1F922",
|
|
2096
|
+
"U+1F923",
|
|
2097
|
+
"U+1F924",
|
|
2098
|
+
"U+1F925",
|
|
2099
|
+
"U+1F926",
|
|
2100
|
+
"U+1F927",
|
|
2101
|
+
"U+1F928",
|
|
2102
|
+
"U+1F929",
|
|
2103
|
+
"U+1F92A",
|
|
2104
|
+
"U+1F92B",
|
|
2105
|
+
"U+1F92C",
|
|
2106
|
+
"U+1F92D",
|
|
2107
|
+
"U+1F92E",
|
|
2108
|
+
"U+1F92F",
|
|
2109
|
+
"U+1F930",
|
|
2110
|
+
"U+1F931",
|
|
2111
|
+
"U+1F933",
|
|
2112
|
+
"U+1F938",
|
|
2113
|
+
"U+1F938_U+200D_U+2640",
|
|
2114
|
+
"U+1F938_U+200D_U+2642",
|
|
2115
|
+
"U+1F939",
|
|
2116
|
+
"U+1F939_U+200D_U+2640",
|
|
2117
|
+
"U+1F939_U+200D_U+2642",
|
|
2118
|
+
"U+1F93A",
|
|
2119
|
+
"U+1F93D",
|
|
2120
|
+
"U+1F93D_U+200D_U+2640",
|
|
2121
|
+
"U+1F93D_U+200D_U+2642",
|
|
2122
|
+
"U+1F93E",
|
|
2123
|
+
"U+1F93E_U+200D_U+2640",
|
|
2124
|
+
"U+1F93E_U+200D_U+2642",
|
|
2125
|
+
"U+1F93F",
|
|
2126
|
+
"U+1F940",
|
|
2127
|
+
"U+1F941",
|
|
2128
|
+
"U+1F942",
|
|
2129
|
+
"U+1F943",
|
|
2130
|
+
"U+1F944",
|
|
2131
|
+
"U+1F945",
|
|
2132
|
+
"U+1F947",
|
|
2133
|
+
"U+1F948",
|
|
2134
|
+
"U+1F949",
|
|
2135
|
+
"U+1F94A",
|
|
2136
|
+
"U+1F94B",
|
|
2137
|
+
"U+1F94C",
|
|
2138
|
+
"U+1F94D",
|
|
2139
|
+
"U+1F94E",
|
|
2140
|
+
"U+1F94F",
|
|
2141
|
+
"U+1F950",
|
|
2142
|
+
"U+1F951",
|
|
2143
|
+
"U+1F952",
|
|
2144
|
+
"U+1F953",
|
|
2145
|
+
"U+1F954",
|
|
2146
|
+
"U+1F955",
|
|
2147
|
+
"U+1F956",
|
|
2148
|
+
"U+1F957",
|
|
2149
|
+
"U+1F958",
|
|
2150
|
+
"U+1F959",
|
|
2151
|
+
"U+1F95A",
|
|
2152
|
+
"U+1F95B",
|
|
2153
|
+
"U+1F95C",
|
|
2154
|
+
"U+1F95D",
|
|
2155
|
+
"U+1F95E",
|
|
2156
|
+
"U+1F95F",
|
|
2157
|
+
"U+1F960",
|
|
2158
|
+
"U+1F961",
|
|
2159
|
+
"U+1F962",
|
|
2160
|
+
"U+1F963",
|
|
2161
|
+
"U+1F964",
|
|
2162
|
+
"U+1F965",
|
|
2163
|
+
"U+1F966",
|
|
2164
|
+
"U+1F967",
|
|
2165
|
+
"U+1F968",
|
|
2166
|
+
"U+1F969",
|
|
2167
|
+
"U+1F96A",
|
|
2168
|
+
"U+1F96B",
|
|
2169
|
+
"U+1F96C",
|
|
2170
|
+
"U+1F96D",
|
|
2171
|
+
"U+1F96F",
|
|
2172
|
+
"U+1F970",
|
|
2173
|
+
"U+1F971",
|
|
2174
|
+
"U+1F972",
|
|
2175
|
+
"U+1F973",
|
|
2176
|
+
"U+1F974",
|
|
2177
|
+
"U+1F975",
|
|
2178
|
+
"U+1F976",
|
|
2179
|
+
"U+1F977",
|
|
2180
|
+
"U+1F978",
|
|
2181
|
+
"U+1F979",
|
|
2182
|
+
"U+1F97A",
|
|
2183
|
+
"U+1F97B",
|
|
2184
|
+
"U+1F97C",
|
|
2185
|
+
"U+1F97D",
|
|
2186
|
+
"U+1F97E",
|
|
2187
|
+
"U+1F97F",
|
|
2188
|
+
"U+1F980",
|
|
2189
|
+
"U+1F981",
|
|
2190
|
+
"U+1F982",
|
|
2191
|
+
"U+1F983",
|
|
2192
|
+
"U+1F984",
|
|
2193
|
+
"U+1F985",
|
|
2194
|
+
"U+1F986",
|
|
2195
|
+
"U+1F987",
|
|
2196
|
+
"U+1F988",
|
|
2197
|
+
"U+1F989",
|
|
2198
|
+
"U+1F98A",
|
|
2199
|
+
"U+1F98B",
|
|
2200
|
+
"U+1F98C",
|
|
2201
|
+
"U+1F98D",
|
|
2202
|
+
"U+1F98E",
|
|
2203
|
+
"U+1F990",
|
|
2204
|
+
"U+1F991",
|
|
2205
|
+
"U+1F992",
|
|
2206
|
+
"U+1F993",
|
|
2207
|
+
"U+1F994",
|
|
2208
|
+
"U+1F995",
|
|
2209
|
+
"U+1F996",
|
|
2210
|
+
"U+1F997",
|
|
2211
|
+
"U+1F998",
|
|
2212
|
+
"U+1F999",
|
|
2213
|
+
"U+1F99A",
|
|
2214
|
+
"U+1F99C",
|
|
2215
|
+
"U+1F99D",
|
|
2216
|
+
"U+1F99E",
|
|
2217
|
+
"U+1F99F",
|
|
2218
|
+
"U+1F9A0",
|
|
2219
|
+
"U+1F9A1",
|
|
2220
|
+
"U+1F9A2",
|
|
2221
|
+
"U+1F9A3",
|
|
2222
|
+
"U+1F9A4",
|
|
2223
|
+
"U+1F9A5",
|
|
2224
|
+
"U+1F9A6",
|
|
2225
|
+
"U+1F9A7",
|
|
2226
|
+
"U+1F9A8",
|
|
2227
|
+
"U+1F9A9",
|
|
2228
|
+
"U+1F9AA",
|
|
2229
|
+
"U+1F9AB",
|
|
2230
|
+
"U+1F9AC",
|
|
2231
|
+
"U+1F9AD",
|
|
2232
|
+
"U+1F9AE",
|
|
2233
|
+
"U+1F9AF",
|
|
2234
|
+
"U+1F9B0",
|
|
2235
|
+
"U+1F9B1",
|
|
2236
|
+
"U+1F9B2",
|
|
2237
|
+
"U+1F9B3",
|
|
2238
|
+
"U+1F9B4",
|
|
2239
|
+
"U+1F9B5",
|
|
2240
|
+
"U+1F9B6",
|
|
2241
|
+
"U+1F9B7",
|
|
2242
|
+
"U+1F9B8",
|
|
2243
|
+
"U+1F9B9",
|
|
2244
|
+
"U+1F9BA",
|
|
2245
|
+
"U+1F9BB",
|
|
2246
|
+
"U+1F9BE",
|
|
2247
|
+
"U+1F9BF",
|
|
2248
|
+
"U+1F9C0",
|
|
2249
|
+
"U+1F9C1",
|
|
2250
|
+
"U+1F9C2",
|
|
2251
|
+
"U+1F9C3",
|
|
2252
|
+
"U+1F9C4",
|
|
2253
|
+
"U+1F9C5",
|
|
2254
|
+
"U+1F9C6",
|
|
2255
|
+
"U+1F9C7",
|
|
2256
|
+
"U+1F9C8",
|
|
2257
|
+
"U+1F9C9",
|
|
2258
|
+
"U+1F9CA",
|
|
2259
|
+
"U+1F9CB",
|
|
2260
|
+
"U+1F9CC",
|
|
2261
|
+
"U+1F9CD",
|
|
2262
|
+
"U+1F9CD_U+200D_U+2640",
|
|
2263
|
+
"U+1F9CD_U+200D_U+2642",
|
|
2264
|
+
"U+1F9CE",
|
|
2265
|
+
"U+1F9CE_U+1F3FB",
|
|
2266
|
+
"U+1F9CE_U+1F3FB_U+200D_U+2640",
|
|
2267
|
+
"U+1F9CE_U+1F3FB_U+200D_U+2642",
|
|
2268
|
+
"U+1F9CE_U+1F3FC",
|
|
2269
|
+
"U+1F9CE_U+1F3FC_U+200D_U+2640",
|
|
2270
|
+
"U+1F9CE_U+1F3FC_U+200D_U+2642",
|
|
2271
|
+
"U+1F9CE_U+1F3FD",
|
|
2272
|
+
"U+1F9CE_U+1F3FD_U+200D_U+2640",
|
|
2273
|
+
"U+1F9CE_U+1F3FD_U+200D_U+2642",
|
|
2274
|
+
"U+1F9CE_U+1F3FE",
|
|
2275
|
+
"U+1F9CE_U+1F3FE_U+200D_U+2640",
|
|
2276
|
+
"U+1F9CE_U+1F3FE_U+200D_U+2642",
|
|
2277
|
+
"U+1F9CE_U+1F3FF",
|
|
2278
|
+
"U+1F9CE_U+1F3FF_U+200D_U+2640",
|
|
2279
|
+
"U+1F9CE_U+1F3FF_U+200D_U+2642",
|
|
2280
|
+
"U+1F9CE_U+200D_U+2640",
|
|
2281
|
+
"U+1F9CE_U+200D_U+2642",
|
|
2282
|
+
"U+1F9D0",
|
|
2283
|
+
"U+1F9D1",
|
|
2284
|
+
"U+1F9D1_U+200D_U+1F33E",
|
|
2285
|
+
"U+1F9D1_U+200D_U+1F373",
|
|
2286
|
+
"U+1F9D1_U+200D_U+1F393",
|
|
2287
|
+
"U+1F9D1_U+200D_U+1F4BB",
|
|
2288
|
+
"U+1F9D1_U+200D_U+1F4BC",
|
|
2289
|
+
"U+1F9D1_U+200D_U+1F527",
|
|
2290
|
+
"U+1F9D1_U+200D_U+1F52C",
|
|
2291
|
+
"U+1F9D1_U+200D_U+1F680",
|
|
2292
|
+
"U+1F9D1_U+200D_U+1F692",
|
|
2293
|
+
"U+1F9D1_U+200D_U+1F9AF",
|
|
2294
|
+
"U+1F9D1_U+200D_U+1F9B0",
|
|
2295
|
+
"U+1F9D1_U+200D_U+1F9B1",
|
|
2296
|
+
"U+1F9D1_U+200D_U+1F9B2",
|
|
2297
|
+
"U+1F9D1_U+200D_U+1F9B3",
|
|
2298
|
+
"U+1F9D1_U+200D_U+1F9BD",
|
|
2299
|
+
"U+1F9D1_U+200D_U+1F9D1_U+200D_U+1F9D2",
|
|
2300
|
+
"U+1F9D1_U+200D_U+1F9D1_U+200D_U+1F9D2_U+200D_U+1F9D2",
|
|
2301
|
+
"U+1F9D1_U+200D_U+1F9D2",
|
|
2302
|
+
"U+1F9D1_U+200D_U+1F9D2_U+200D_U+1F9D2",
|
|
2303
|
+
"U+1F9D1_U+200D_U+2695",
|
|
2304
|
+
"U+1F9D1_U+200D_U+2696",
|
|
2305
|
+
"U+1F9D4",
|
|
2306
|
+
"U+1F9D4_U+200D_U+2640",
|
|
2307
|
+
"U+1F9D4_U+200D_U+2642",
|
|
2308
|
+
"U+1F9D7",
|
|
2309
|
+
"U+1F9D7_U+200D_U+2640",
|
|
2310
|
+
"U+1F9D7_U+200D_U+2642",
|
|
2311
|
+
"U+1F9D9",
|
|
2312
|
+
"U+1F9D9_U+200D_U+2640",
|
|
2313
|
+
"U+1F9D9_U+200D_U+2642",
|
|
2314
|
+
"U+1F9DC_U+200D_U+2640",
|
|
2315
|
+
"U+1F9DD_U+200D_U+2642",
|
|
2316
|
+
"U+1F9DE",
|
|
2317
|
+
"U+1F9DF",
|
|
2318
|
+
"U+1F9E0",
|
|
2319
|
+
"U+1F9E1",
|
|
2320
|
+
"U+1F9E3",
|
|
2321
|
+
"U+1F9E4",
|
|
2322
|
+
"U+1F9E5",
|
|
2323
|
+
"U+1F9E6",
|
|
2324
|
+
"U+1F9E7",
|
|
2325
|
+
"U+1F9E8",
|
|
2326
|
+
"U+1F9E9",
|
|
2327
|
+
"U+1F9EA",
|
|
2328
|
+
"U+1F9EB",
|
|
2329
|
+
"U+1F9EC",
|
|
2330
|
+
"U+1F9ED",
|
|
2331
|
+
"U+1F9EE",
|
|
2332
|
+
"U+1F9EF",
|
|
2333
|
+
"U+1F9F0",
|
|
2334
|
+
"U+1F9F1",
|
|
2335
|
+
"U+1F9F2",
|
|
2336
|
+
"U+1F9F3",
|
|
2337
|
+
"U+1F9F4",
|
|
2338
|
+
"U+1F9F5",
|
|
2339
|
+
"U+1F9F6",
|
|
2340
|
+
"U+1F9F7",
|
|
2341
|
+
"U+1F9F8",
|
|
2342
|
+
"U+1F9F9",
|
|
2343
|
+
"U+1F9FA",
|
|
2344
|
+
"U+1F9FB",
|
|
2345
|
+
"U+1F9FC",
|
|
2346
|
+
"U+1F9FD",
|
|
2347
|
+
"U+1F9FE",
|
|
2348
|
+
"U+1F9FF",
|
|
2349
|
+
"U+1FA70",
|
|
2350
|
+
"U+1FA71",
|
|
2351
|
+
"U+1FA72",
|
|
2352
|
+
"U+1FA73",
|
|
2353
|
+
"U+1FA74",
|
|
2354
|
+
"U+1FA75",
|
|
2355
|
+
"U+1FA76",
|
|
2356
|
+
"U+1FA77",
|
|
2357
|
+
"U+1FA78",
|
|
2358
|
+
"U+1FA79",
|
|
2359
|
+
"U+1FA7A",
|
|
2360
|
+
"U+1FA7B",
|
|
2361
|
+
"U+1FA7C",
|
|
2362
|
+
"U+1FA80",
|
|
2363
|
+
"U+1FA81",
|
|
2364
|
+
"U+1FA82",
|
|
2365
|
+
"U+1FA83",
|
|
2366
|
+
"U+1FA84",
|
|
2367
|
+
"U+1FA85",
|
|
2368
|
+
"U+1FA87",
|
|
2369
|
+
"U+1FA88",
|
|
2370
|
+
"U+1FA89",
|
|
2371
|
+
"U+1FA8A",
|
|
2372
|
+
"U+1FA8F",
|
|
2373
|
+
"U+1FA90",
|
|
2374
|
+
"U+1FA91",
|
|
2375
|
+
"U+1FA92",
|
|
2376
|
+
"U+1FA93",
|
|
2377
|
+
"U+1FA94",
|
|
2378
|
+
"U+1FA95",
|
|
2379
|
+
"U+1FA96",
|
|
2380
|
+
"U+1FA97",
|
|
2381
|
+
"U+1FA98",
|
|
2382
|
+
"U+1FA99",
|
|
2383
|
+
"U+1FA9A",
|
|
2384
|
+
"U+1FA9B",
|
|
2385
|
+
"U+1FA9C",
|
|
2386
|
+
"U+1FA9D",
|
|
2387
|
+
"U+1FA9E",
|
|
2388
|
+
"U+1FA9F",
|
|
2389
|
+
"U+1FAA0",
|
|
2390
|
+
"U+1FAA1",
|
|
2391
|
+
"U+1FAA2",
|
|
2392
|
+
"U+1FAA3",
|
|
2393
|
+
"U+1FAA4",
|
|
2394
|
+
"U+1FAA5",
|
|
2395
|
+
"U+1FAA6",
|
|
2396
|
+
"U+1FAA7",
|
|
2397
|
+
"U+1FAA8",
|
|
2398
|
+
"U+1FAA9",
|
|
2399
|
+
"U+1FAAA",
|
|
2400
|
+
"U+1FAAB",
|
|
2401
|
+
"U+1FAAC",
|
|
2402
|
+
"U+1FAAD",
|
|
2403
|
+
"U+1FAAE",
|
|
2404
|
+
"U+1FAAF",
|
|
2405
|
+
"U+1FAB0",
|
|
2406
|
+
"U+1FAB1",
|
|
2407
|
+
"U+1FAB2",
|
|
2408
|
+
"U+1FAB3",
|
|
2409
|
+
"U+1FAB4",
|
|
2410
|
+
"U+1FAB5",
|
|
2411
|
+
"U+1FAB6",
|
|
2412
|
+
"U+1FAB7",
|
|
2413
|
+
"U+1FAB8",
|
|
2414
|
+
"U+1FAB9",
|
|
2415
|
+
"U+1FABA",
|
|
2416
|
+
"U+1FABB",
|
|
2417
|
+
"U+1FABC",
|
|
2418
|
+
"U+1FABD",
|
|
2419
|
+
"U+1FABE",
|
|
2420
|
+
"U+1FABF",
|
|
2421
|
+
"U+1FAC0",
|
|
2422
|
+
"U+1FAC1",
|
|
2423
|
+
"U+1FAC2",
|
|
2424
|
+
"U+1FAC3",
|
|
2425
|
+
"U+1FAC4",
|
|
2426
|
+
"U+1FAC5",
|
|
2427
|
+
"U+1FAC6",
|
|
2428
|
+
"U+1FACD",
|
|
2429
|
+
"U+1FACE",
|
|
2430
|
+
"U+1FACF",
|
|
2431
|
+
"U+1FAD0",
|
|
2432
|
+
"U+1FAD1",
|
|
2433
|
+
"U+1FAD2",
|
|
2434
|
+
"U+1FAD3",
|
|
2435
|
+
"U+1FAD4",
|
|
2436
|
+
"U+1FAD5",
|
|
2437
|
+
"U+1FAD6",
|
|
2438
|
+
"U+1FAD7",
|
|
2439
|
+
"U+1FAD8",
|
|
2440
|
+
"U+1FAD9",
|
|
2441
|
+
"U+1FADA",
|
|
2442
|
+
"U+1FADB",
|
|
2443
|
+
"U+1FADC",
|
|
2444
|
+
"U+1FADF",
|
|
2445
|
+
"U+1FAE0",
|
|
2446
|
+
"U+1FAE1",
|
|
2447
|
+
"U+1FAE2",
|
|
2448
|
+
"U+1FAE3",
|
|
2449
|
+
"U+1FAE4",
|
|
2450
|
+
"U+1FAE5",
|
|
2451
|
+
"U+1FAE6",
|
|
2452
|
+
"U+1FAE7",
|
|
2453
|
+
"U+1FAE8",
|
|
2454
|
+
"U+1FAE9",
|
|
2455
|
+
"U+1FAEA",
|
|
2456
|
+
"U+1FAF0",
|
|
2457
|
+
"U+1FAF1",
|
|
2458
|
+
"U+1FAF2",
|
|
2459
|
+
"U+1FAF3",
|
|
2460
|
+
"U+1FAF4",
|
|
2461
|
+
"U+1FAF5",
|
|
2462
|
+
"U+1FAF6",
|
|
2463
|
+
"U+1FAF6_U+1F3FB",
|
|
2464
|
+
"U+1FAF6_U+1F3FC",
|
|
2465
|
+
"U+1FAF6_U+1F3FD",
|
|
2466
|
+
"U+1FAF6_U+1F3FE",
|
|
2467
|
+
"U+1FAF6_U+1F3FF",
|
|
2468
|
+
"U+1FAF7",
|
|
2469
|
+
"U+1FAF8",
|
|
2470
|
+
"U+203C",
|
|
2471
|
+
"U+2049",
|
|
2472
|
+
"U+2122",
|
|
2473
|
+
"U+2139",
|
|
2474
|
+
"U+2194",
|
|
2475
|
+
"U+2195",
|
|
2476
|
+
"U+2196",
|
|
2477
|
+
"U+2197",
|
|
2478
|
+
"U+2198",
|
|
2479
|
+
"U+2199",
|
|
2480
|
+
"U+21A9",
|
|
2481
|
+
"U+21AA",
|
|
2482
|
+
"U+23_U+20E3",
|
|
2483
|
+
"U+231A",
|
|
2484
|
+
"U+231B",
|
|
2485
|
+
"U+2328",
|
|
2486
|
+
"U+23CF",
|
|
2487
|
+
"U+23E9",
|
|
2488
|
+
"U+23EA",
|
|
2489
|
+
"U+23EB",
|
|
2490
|
+
"U+23EC",
|
|
2491
|
+
"U+23ED",
|
|
2492
|
+
"U+23EE",
|
|
2493
|
+
"U+23EF",
|
|
2494
|
+
"U+23F0",
|
|
2495
|
+
"U+23F1",
|
|
2496
|
+
"U+23F2",
|
|
2497
|
+
"U+23F3",
|
|
2498
|
+
"U+23F8",
|
|
2499
|
+
"U+23F9",
|
|
2500
|
+
"U+23FA",
|
|
2501
|
+
"U+24C2",
|
|
2502
|
+
"U+25AA",
|
|
2503
|
+
"U+25AB",
|
|
2504
|
+
"U+25B6",
|
|
2505
|
+
"U+25C0",
|
|
2506
|
+
"U+25FB",
|
|
2507
|
+
"U+25FC",
|
|
2508
|
+
"U+25FD",
|
|
2509
|
+
"U+25FE",
|
|
2510
|
+
"U+2600",
|
|
2511
|
+
"U+2601",
|
|
2512
|
+
"U+2602",
|
|
2513
|
+
"U+2603",
|
|
2514
|
+
"U+2604",
|
|
2515
|
+
"U+260E",
|
|
2516
|
+
"U+2611",
|
|
2517
|
+
"U+2614",
|
|
2518
|
+
"U+2615",
|
|
2519
|
+
"U+2618",
|
|
2520
|
+
"U+261D",
|
|
2521
|
+
"U+2620",
|
|
2522
|
+
"U+2622",
|
|
2523
|
+
"U+2623",
|
|
2524
|
+
"U+2626",
|
|
2525
|
+
"U+262A",
|
|
2526
|
+
"U+262E",
|
|
2527
|
+
"U+262F",
|
|
2528
|
+
"U+2638",
|
|
2529
|
+
"U+2639",
|
|
2530
|
+
"U+263A",
|
|
2531
|
+
"U+2640",
|
|
2532
|
+
"U+2642",
|
|
2533
|
+
"U+2648",
|
|
2534
|
+
"U+2649",
|
|
2535
|
+
"U+264A",
|
|
2536
|
+
"U+264B",
|
|
2537
|
+
"U+264C",
|
|
2538
|
+
"U+264D",
|
|
2539
|
+
"U+264E",
|
|
2540
|
+
"U+264F",
|
|
2541
|
+
"U+2650",
|
|
2542
|
+
"U+2651",
|
|
2543
|
+
"U+2652",
|
|
2544
|
+
"U+2653",
|
|
2545
|
+
"U+265F",
|
|
2546
|
+
"U+2660",
|
|
2547
|
+
"U+2663",
|
|
2548
|
+
"U+2665",
|
|
2549
|
+
"U+2666",
|
|
2550
|
+
"U+2668",
|
|
2551
|
+
"U+267B",
|
|
2552
|
+
"U+267E",
|
|
2553
|
+
"U+267F",
|
|
2554
|
+
"U+2692",
|
|
2555
|
+
"U+2693",
|
|
2556
|
+
"U+2694",
|
|
2557
|
+
"U+2695",
|
|
2558
|
+
"U+2696",
|
|
2559
|
+
"U+2697",
|
|
2560
|
+
"U+2699",
|
|
2561
|
+
"U+269B",
|
|
2562
|
+
"U+269C",
|
|
2563
|
+
"U+26A0",
|
|
2564
|
+
"U+26A1",
|
|
2565
|
+
"U+26A7",
|
|
2566
|
+
"U+26AA",
|
|
2567
|
+
"U+26AB",
|
|
2568
|
+
"U+26B0",
|
|
2569
|
+
"U+26B1",
|
|
2570
|
+
"U+26BD",
|
|
2571
|
+
"U+26BE",
|
|
2572
|
+
"U+26C4",
|
|
2573
|
+
"U+26C5",
|
|
2574
|
+
"U+26C8",
|
|
2575
|
+
"U+26CE",
|
|
2576
|
+
"U+26CF",
|
|
2577
|
+
"U+26D1",
|
|
2578
|
+
"U+26D3",
|
|
2579
|
+
"U+26D4",
|
|
2580
|
+
"U+26E9",
|
|
2581
|
+
"U+26EA",
|
|
2582
|
+
"U+26F0",
|
|
2583
|
+
"U+26F1",
|
|
2584
|
+
"U+26F2",
|
|
2585
|
+
"U+26F3",
|
|
2586
|
+
"U+26F4",
|
|
2587
|
+
"U+26F5",
|
|
2588
|
+
"U+26F7",
|
|
2589
|
+
"U+26F8",
|
|
2590
|
+
"U+26F9",
|
|
2591
|
+
"U+26F9_U+200D_U+2640",
|
|
2592
|
+
"U+26F9_U+200D_U+2642",
|
|
2593
|
+
"U+26FA",
|
|
2594
|
+
"U+26FD",
|
|
2595
|
+
"U+2702",
|
|
2596
|
+
"U+2705",
|
|
2597
|
+
"U+2708",
|
|
2598
|
+
"U+2709",
|
|
2599
|
+
"U+270A",
|
|
2600
|
+
"U+270B",
|
|
2601
|
+
"U+270C",
|
|
2602
|
+
"U+270D",
|
|
2603
|
+
"U+270F",
|
|
2604
|
+
"U+2712",
|
|
2605
|
+
"U+2714",
|
|
2606
|
+
"U+2716",
|
|
2607
|
+
"U+271D",
|
|
2608
|
+
"U+2721",
|
|
2609
|
+
"U+2728",
|
|
2610
|
+
"U+2733",
|
|
2611
|
+
"U+2734",
|
|
2612
|
+
"U+2744",
|
|
2613
|
+
"U+2747",
|
|
2614
|
+
"U+274C",
|
|
2615
|
+
"U+274E",
|
|
2616
|
+
"U+2753",
|
|
2617
|
+
"U+2754",
|
|
2618
|
+
"U+2755",
|
|
2619
|
+
"U+2757",
|
|
2620
|
+
"U+2763",
|
|
2621
|
+
"U+2764",
|
|
2622
|
+
"U+2764_U+200D_U+1F525",
|
|
2623
|
+
"U+2764_U+200D_U+1FA79",
|
|
2624
|
+
"U+2795",
|
|
2625
|
+
"U+2796",
|
|
2626
|
+
"U+2797",
|
|
2627
|
+
"U+27A1",
|
|
2628
|
+
"U+27B0",
|
|
2629
|
+
"U+27BF",
|
|
2630
|
+
"U+2934",
|
|
2631
|
+
"U+2935",
|
|
2632
|
+
"U+2A_U+20E3",
|
|
2633
|
+
"U+2B05",
|
|
2634
|
+
"U+2B06",
|
|
2635
|
+
"U+2B07",
|
|
2636
|
+
"U+2B1B",
|
|
2637
|
+
"U+2B1C",
|
|
2638
|
+
"U+2B50",
|
|
2639
|
+
"U+2B55",
|
|
2640
|
+
"U+30_U+20E3",
|
|
2641
|
+
"U+3030",
|
|
2642
|
+
"U+303D",
|
|
2643
|
+
"U+31_U+20E3",
|
|
2644
|
+
"U+32_U+20E3",
|
|
2645
|
+
"U+3297",
|
|
2646
|
+
"U+33_U+20E3",
|
|
2647
|
+
"U+34_U+20E3",
|
|
2648
|
+
"U+35_U+20E3",
|
|
2649
|
+
"U+36_U+20E3",
|
|
2650
|
+
"U+37_U+20E3",
|
|
2651
|
+
"U+38_U+20E3",
|
|
2652
|
+
"U+39_U+20E3",
|
|
2653
|
+
"U+A9",
|
|
2654
|
+
"U+AE"
|
|
2655
|
+
]);
|
|
2656
|
+
|
|
2657
|
+
// src/providers.ts
|
|
2658
|
+
import { emojiData } from "emoji-styles-data";
|
|
2659
|
+
function createCdnProvider(options) {
|
|
2660
|
+
const format = options.format ?? options.extension;
|
|
2661
|
+
const getUrl = (data, emoji) => {
|
|
2662
|
+
if (options.supports && !options.supports(data, emoji)) return null;
|
|
2663
|
+
const filename = options.filename?.(data) ?? data.name;
|
|
2664
|
+
return `${options.baseUrl}/${filename}.${options.extension}`;
|
|
2665
|
+
};
|
|
2666
|
+
return {
|
|
2667
|
+
id: options.id,
|
|
2668
|
+
label: options.label,
|
|
2669
|
+
visibility: options.visibility,
|
|
2670
|
+
version: options.version ?? "unversioned",
|
|
2671
|
+
formats: [format],
|
|
2672
|
+
local: options.local ?? false,
|
|
2673
|
+
source: options.source ?? options.baseUrl,
|
|
2674
|
+
license: options.license,
|
|
2675
|
+
getUrl,
|
|
2676
|
+
resolve(emoji) {
|
|
2677
|
+
const url = getUrl(emoji.data, emoji.normalized);
|
|
2678
|
+
if (!url) return null;
|
|
2679
|
+
return {
|
|
2680
|
+
providerId: options.id,
|
|
2681
|
+
providerVersion: options.version ?? "unversioned",
|
|
2682
|
+
url,
|
|
2683
|
+
format,
|
|
2684
|
+
local: options.local ?? false,
|
|
2685
|
+
license: options.license
|
|
2686
|
+
};
|
|
2687
|
+
},
|
|
2688
|
+
getCoverage: options.coverage
|
|
2689
|
+
};
|
|
2690
|
+
}
|
|
2691
|
+
function getTwemojiAssetId(data) {
|
|
2692
|
+
const codepoint = data.codepoint.toLowerCase();
|
|
2693
|
+
if (codepoint === "1f441-fe0f-200d-1f5e8-fe0f") return "1f441-200d-1f5e8";
|
|
2694
|
+
return codepoint.includes("-200d-") ? codepoint : codepoint.replace(/-fe0f/g, "");
|
|
2695
|
+
}
|
|
2696
|
+
var FLUENT_COMMIT = "62ecdc0d7ca5c6df32148c169556bc8d3782fca4";
|
|
2697
|
+
var FLUENT_ANIMATED_COMMIT = "daa0365c09795789ed2bc6e8b228c97736cb6669";
|
|
2698
|
+
var NOTO_COMMIT = "8998f5dd683424a73e2314a8c1f1e359c19e8742";
|
|
2699
|
+
var SERENITYOS_COMMIT = "b490eb8b17499c02d67c3e4de360e6ea583dc09c";
|
|
2700
|
+
function serenityOSAssetId(data) {
|
|
2701
|
+
return data.codepoint.toUpperCase().split("-").filter((codepoint) => codepoint !== "FE0F").map((codepoint) => `U+${codepoint}`).join("_");
|
|
2702
|
+
}
|
|
2703
|
+
var FLUENT_SKIN_TONES = {
|
|
2704
|
+
"1f3fb": ["Light", "light"],
|
|
2705
|
+
"1f3fc": ["Medium-Light", "medium-light"],
|
|
2706
|
+
"1f3fd": ["Medium", "medium"],
|
|
2707
|
+
"1f3fe": ["Medium-Dark", "medium-dark"],
|
|
2708
|
+
"1f3ff": ["Dark", "dark"]
|
|
2709
|
+
};
|
|
2710
|
+
function fluentAnimatedFilename(data) {
|
|
2711
|
+
const codepoints = data.codepoint.toLowerCase().split("-").filter((codepoint) => codepoint !== "fe0f");
|
|
2712
|
+
const skinTones = codepoints.filter((codepoint) => FLUENT_SKIN_TONES[codepoint]);
|
|
2713
|
+
if (skinTones.length > 1) return null;
|
|
2714
|
+
const baseCodepoint = codepoints.filter((codepoint) => !FLUENT_SKIN_TONES[codepoint]).join("-");
|
|
2715
|
+
const mapped = fluentAnimatedAssetNames[baseCodepoint];
|
|
2716
|
+
if (!mapped) return null;
|
|
2717
|
+
const [folder, basename, hasSkinTones] = mapped;
|
|
2718
|
+
if (skinTones.length === 0) {
|
|
2719
|
+
return hasSkinTones ? `${encodeURIComponent(folder)}/Default/animated/${basename}_animated_default` : `${encodeURIComponent(folder)}/animated/${basename}_animated`;
|
|
2720
|
+
}
|
|
2721
|
+
if (!hasSkinTones) return null;
|
|
2722
|
+
const [toneFolder, toneFilename] = FLUENT_SKIN_TONES[skinTones[0]];
|
|
2723
|
+
return `${encodeURIComponent(folder)}/${toneFolder}/animated/${basename}_animated_${toneFilename}`;
|
|
2724
|
+
}
|
|
2725
|
+
function fluentFilename(data, style) {
|
|
2726
|
+
const codepoint = data.codepoint.toLowerCase().replace(/-fe0f/g, "");
|
|
2727
|
+
const mapped = fluentAssetNames[codepoint];
|
|
2728
|
+
const folder = mapped?.[0] ?? data.alt;
|
|
2729
|
+
const slug = mapped?.[1] ?? data.alt.toLowerCase().replace(/[’']/g, "").replace(/[^a-z0-9]+/g, "_").replace(/^_|_$/g, "");
|
|
2730
|
+
return `${encodeURIComponent(folder)}/${style}/${slug}_${style.toLowerCase()}`;
|
|
2731
|
+
}
|
|
2732
|
+
var publicProviders = {
|
|
2733
|
+
fluentAnimated: createCdnProvider({
|
|
2734
|
+
id: "fluent-animated",
|
|
2735
|
+
label: "Fluent Emoji Animated",
|
|
2736
|
+
baseUrl: `https://media.githubusercontent.com/media/microsoft/fluentui-emoji-animated/${FLUENT_ANIMATED_COMMIT}/assets`,
|
|
2737
|
+
extension: "png",
|
|
2738
|
+
visibility: "public",
|
|
2739
|
+
version: FLUENT_ANIMATED_COMMIT,
|
|
2740
|
+
source: "https://github.com/microsoft/fluentui-emoji-animated",
|
|
2741
|
+
supports: (data) => fluentAnimatedFilename(data) !== null,
|
|
2742
|
+
filename: (data) => fluentAnimatedFilename(data) ?? "unsupported",
|
|
2743
|
+
license: {
|
|
2744
|
+
name: "MIT",
|
|
2745
|
+
url: `https://github.com/microsoft/fluentui-emoji-animated/blob/${FLUENT_ANIMATED_COMMIT}/LICENSE`,
|
|
2746
|
+
attribution: "Fluent Emoji Animated by Microsoft"
|
|
2747
|
+
}
|
|
2748
|
+
}),
|
|
2749
|
+
fluent3d: createCdnProvider({
|
|
2750
|
+
id: "fluent-3d",
|
|
2751
|
+
label: "Fluent Emoji 3D",
|
|
2752
|
+
baseUrl: `https://cdn.jsdelivr.net/gh/microsoft/fluentui-emoji@${FLUENT_COMMIT}/assets`,
|
|
2753
|
+
extension: "png",
|
|
2754
|
+
visibility: "public",
|
|
2755
|
+
version: FLUENT_COMMIT,
|
|
2756
|
+
source: "https://github.com/microsoft/fluentui-emoji",
|
|
2757
|
+
filename: (data) => fluentFilename(data, "3D"),
|
|
2758
|
+
license: {
|
|
2759
|
+
name: "MIT",
|
|
2760
|
+
url: "https://github.com/microsoft/fluentui-emoji/blob/main/LICENSE",
|
|
2761
|
+
attribution: "Fluent Emoji by Microsoft"
|
|
2762
|
+
}
|
|
2763
|
+
}),
|
|
2764
|
+
fluentColor: createCdnProvider({
|
|
2765
|
+
id: "fluent-color",
|
|
2766
|
+
label: "Fluent Emoji Color",
|
|
2767
|
+
baseUrl: `https://cdn.jsdelivr.net/gh/microsoft/fluentui-emoji@${FLUENT_COMMIT}/assets`,
|
|
2768
|
+
extension: "svg",
|
|
2769
|
+
visibility: "public",
|
|
2770
|
+
version: FLUENT_COMMIT,
|
|
2771
|
+
source: "https://github.com/microsoft/fluentui-emoji",
|
|
2772
|
+
filename: (data) => fluentFilename(data, "Color"),
|
|
2773
|
+
license: {
|
|
2774
|
+
name: "MIT",
|
|
2775
|
+
url: "https://github.com/microsoft/fluentui-emoji/blob/main/LICENSE",
|
|
2776
|
+
attribution: "Fluent Emoji by Microsoft"
|
|
2777
|
+
}
|
|
2778
|
+
}),
|
|
2779
|
+
fluentFlat: createCdnProvider({
|
|
2780
|
+
id: "fluent-flat",
|
|
2781
|
+
label: "Fluent Emoji Flat",
|
|
2782
|
+
baseUrl: `https://cdn.jsdelivr.net/gh/microsoft/fluentui-emoji@${FLUENT_COMMIT}/assets`,
|
|
2783
|
+
extension: "svg",
|
|
2784
|
+
visibility: "public",
|
|
2785
|
+
version: FLUENT_COMMIT,
|
|
2786
|
+
source: "https://github.com/microsoft/fluentui-emoji",
|
|
2787
|
+
filename: (data) => fluentFilename(data, "Flat"),
|
|
2788
|
+
license: {
|
|
2789
|
+
name: "MIT",
|
|
2790
|
+
url: "https://github.com/microsoft/fluentui-emoji/blob/main/LICENSE",
|
|
2791
|
+
attribution: "Fluent Emoji by Microsoft"
|
|
2792
|
+
}
|
|
2793
|
+
}),
|
|
2794
|
+
noto: createCdnProvider({
|
|
2795
|
+
id: "noto",
|
|
2796
|
+
label: "Noto Emoji",
|
|
2797
|
+
baseUrl: `https://cdn.jsdelivr.net/gh/googlefonts/noto-emoji@${NOTO_COMMIT}/png/128`,
|
|
2798
|
+
extension: "png",
|
|
2799
|
+
visibility: "public",
|
|
2800
|
+
version: NOTO_COMMIT,
|
|
2801
|
+
source: "https://github.com/googlefonts/noto-emoji",
|
|
2802
|
+
filename: (data) => `emoji_u${data.codepoint.replace(/-fe0f/gi, "").replace(/-/g, "_")}`,
|
|
2803
|
+
license: {
|
|
2804
|
+
name: "Apache-2.0",
|
|
2805
|
+
url: "https://github.com/googlefonts/noto-emoji",
|
|
2806
|
+
attribution: "Noto Emoji by Google and contributors"
|
|
2807
|
+
}
|
|
2808
|
+
}),
|
|
2809
|
+
serenityOS: createCdnProvider({
|
|
2810
|
+
id: "serenityos",
|
|
2811
|
+
label: "SerenityOS Pixel Art",
|
|
2812
|
+
baseUrl: `https://cdn.jsdelivr.net/gh/SerenityOS/serenity@${SERENITYOS_COMMIT}/Base/res/emoji`,
|
|
2813
|
+
extension: "png",
|
|
2814
|
+
visibility: "public",
|
|
2815
|
+
version: SERENITYOS_COMMIT,
|
|
2816
|
+
source: `https://github.com/SerenityOS/serenity/tree/${SERENITYOS_COMMIT}/Base/res/emoji`,
|
|
2817
|
+
supports: (data) => serenityOSAssetIds.has(serenityOSAssetId(data)),
|
|
2818
|
+
filename: serenityOSAssetId,
|
|
2819
|
+
coverage: () => {
|
|
2820
|
+
const total = Object.keys(emojiData).length;
|
|
2821
|
+
return {
|
|
2822
|
+
providerId: "serenityos",
|
|
2823
|
+
providerVersion: SERENITYOS_COMMIT,
|
|
2824
|
+
datasetVersion: SERENITYOS_DATASET_VERSION,
|
|
2825
|
+
total,
|
|
2826
|
+
supported: SERENITYOS_RGI_ASSET_COUNT,
|
|
2827
|
+
percentage: Number((SERENITYOS_RGI_ASSET_COUNT / total * 100).toFixed(2)),
|
|
2828
|
+
verified: true,
|
|
2829
|
+
source: `https://github.com/SerenityOS/serenity/tree/${SERENITYOS_COMMIT}/Base/res/emoji`
|
|
2830
|
+
};
|
|
2831
|
+
},
|
|
2832
|
+
license: {
|
|
2833
|
+
name: "BSD-2-Clause",
|
|
2834
|
+
url: `https://github.com/SerenityOS/serenity/blob/${SERENITYOS_COMMIT}/LICENSE`,
|
|
2835
|
+
attribution: "SerenityOS emoji artwork by the SerenityOS developers and contributors"
|
|
2836
|
+
}
|
|
2837
|
+
}),
|
|
2838
|
+
twemoji: createCdnProvider({
|
|
2839
|
+
id: "twemoji",
|
|
2840
|
+
label: "Twemoji",
|
|
2841
|
+
baseUrl: "https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/72x72",
|
|
2842
|
+
extension: "png",
|
|
2843
|
+
visibility: "public",
|
|
2844
|
+
version: "15.1.0",
|
|
2845
|
+
source: "https://github.com/jdecked/twemoji",
|
|
2846
|
+
supports: (data) => Number.parseFloat(data.emojiVersion ?? "Infinity") <= 15.1,
|
|
2847
|
+
filename: getTwemojiAssetId,
|
|
2848
|
+
license: {
|
|
2849
|
+
name: "CC BY 4.0",
|
|
2850
|
+
url: "https://creativecommons.org/licenses/by/4.0/",
|
|
2851
|
+
attribution: "Twemoji graphics by Twitter and contributors"
|
|
2852
|
+
}
|
|
2853
|
+
}),
|
|
2854
|
+
native: {
|
|
2855
|
+
id: "native",
|
|
2856
|
+
label: "Native Unicode",
|
|
2857
|
+
visibility: "public",
|
|
2858
|
+
version: "unicode",
|
|
2859
|
+
formats: [],
|
|
2860
|
+
local: true,
|
|
2861
|
+
source: "unicode",
|
|
2862
|
+
getUrl: () => null,
|
|
2863
|
+
resolve: () => null
|
|
2864
|
+
}
|
|
2865
|
+
};
|
|
2866
|
+
var experimentalProviders = {
|
|
2867
|
+
notoAnimated: createCdnProvider({
|
|
2868
|
+
id: "noto-animated",
|
|
2869
|
+
label: "Noto Animated",
|
|
2870
|
+
baseUrl: "https://fonts.gstatic.com/s/e/notoemoji/latest",
|
|
2871
|
+
extension: "webp",
|
|
2872
|
+
format: "webp",
|
|
2873
|
+
visibility: "public",
|
|
2874
|
+
version: "rolling-latest",
|
|
2875
|
+
source: "https://googlefonts.github.io/noto-emoji-animation/",
|
|
2876
|
+
filename: (data) => `${data.codepoint.toLowerCase().replace(/-/g, "_")}/512`,
|
|
2877
|
+
license: {
|
|
2878
|
+
name: "CC BY 4.0",
|
|
2879
|
+
url: "https://creativecommons.org/licenses/by/4.0/",
|
|
2880
|
+
attribution: "Noto Animated Emoji by Google and contributors"
|
|
2881
|
+
}
|
|
2882
|
+
})
|
|
2883
|
+
};
|
|
2884
|
+
var providers = {
|
|
2885
|
+
"fluent-animated": publicProviders.fluentAnimated,
|
|
2886
|
+
"fluent-3d": publicProviders.fluent3d,
|
|
2887
|
+
"fluent-color": publicProviders.fluentColor,
|
|
2888
|
+
"fluent-flat": publicProviders.fluentFlat,
|
|
2889
|
+
noto: publicProviders.noto,
|
|
2890
|
+
serenityos: publicProviders.serenityOS,
|
|
2891
|
+
twemoji: publicProviders.twemoji,
|
|
2892
|
+
native: publicProviders.native
|
|
2893
|
+
};
|
|
2894
|
+
var SIZE_MAP = {
|
|
2895
|
+
xs: 12,
|
|
2896
|
+
sm: 16,
|
|
2897
|
+
md: 20,
|
|
2898
|
+
lg: 24,
|
|
2899
|
+
xl: 32,
|
|
2900
|
+
"2xl": 40,
|
|
2901
|
+
"3xl": 48
|
|
2902
|
+
};
|
|
2903
|
+
|
|
2904
|
+
// src/mapped-provider.ts
|
|
2905
|
+
import { normalizeEmoji } from "emoji-styles-data";
|
|
2906
|
+
|
|
2907
|
+
// src/tokenize.ts
|
|
2908
|
+
import { emojiAliases, emojiData as emojiData2 } from "emoji-styles-data";
|
|
2909
|
+
var candidatesByFirstUnit = /* @__PURE__ */ new Map();
|
|
2910
|
+
for (const emoji of [...Object.keys(emojiData2), ...Object.keys(emojiAliases)]) {
|
|
2911
|
+
const firstUnit = String.fromCodePoint(emoji.codePointAt(0));
|
|
2912
|
+
const candidates = candidatesByFirstUnit.get(firstUnit) ?? [];
|
|
2913
|
+
candidates.push(emoji);
|
|
2914
|
+
candidatesByFirstUnit.set(firstUnit, candidates);
|
|
2915
|
+
}
|
|
2916
|
+
for (const candidates of candidatesByFirstUnit.values()) {
|
|
2917
|
+
candidates.sort((a, b) => b.length - a.length);
|
|
2918
|
+
}
|
|
2919
|
+
var Segmenter = Intl.Segmenter;
|
|
2920
|
+
var emojiGraphemePattern = /\p{Extended_Pictographic}|\p{Regional_Indicator}{2}|[0-9#*]\uFE0F?\u20E3/u;
|
|
2921
|
+
function appendToken(tokens, token) {
|
|
2922
|
+
const previous = tokens[tokens.length - 1];
|
|
2923
|
+
if (token.type === "text" && previous?.type === "text") {
|
|
2924
|
+
previous.value += token.value;
|
|
2925
|
+
} else {
|
|
2926
|
+
tokens.push(token);
|
|
2927
|
+
}
|
|
2928
|
+
}
|
|
2929
|
+
function tokenizeEmojiText(text) {
|
|
2930
|
+
if (!text) return [];
|
|
2931
|
+
if (Segmenter) {
|
|
2932
|
+
const tokens2 = [];
|
|
2933
|
+
const segments = new Segmenter(void 0, { granularity: "grapheme" }).segment(text);
|
|
2934
|
+
for (const { segment } of segments) {
|
|
2935
|
+
appendToken(tokens2, {
|
|
2936
|
+
type: emojiGraphemePattern.test(segment) ? "emoji" : "text",
|
|
2937
|
+
value: segment
|
|
2938
|
+
});
|
|
2939
|
+
}
|
|
2940
|
+
return tokens2;
|
|
2941
|
+
}
|
|
2942
|
+
const tokens = [];
|
|
2943
|
+
let textStart = 0;
|
|
2944
|
+
let cursor = 0;
|
|
2945
|
+
while (cursor < text.length) {
|
|
2946
|
+
const firstUnit = String.fromCodePoint(text.codePointAt(cursor));
|
|
2947
|
+
const candidates = candidatesByFirstUnit.get(firstUnit);
|
|
2948
|
+
const emoji = candidates?.find((candidate) => text.startsWith(candidate, cursor));
|
|
2949
|
+
if (!emoji) {
|
|
2950
|
+
cursor += firstUnit.length;
|
|
2951
|
+
continue;
|
|
2952
|
+
}
|
|
2953
|
+
if (cursor > textStart) {
|
|
2954
|
+
tokens.push({ type: "text", value: text.slice(textStart, cursor) });
|
|
2955
|
+
}
|
|
2956
|
+
tokens.push({ type: "emoji", value: emoji });
|
|
2957
|
+
cursor += emoji.length;
|
|
2958
|
+
textStart = cursor;
|
|
2959
|
+
}
|
|
2960
|
+
if (textStart < text.length) {
|
|
2961
|
+
tokens.push({ type: "text", value: text.slice(textStart) });
|
|
2962
|
+
}
|
|
2963
|
+
return tokens;
|
|
2964
|
+
}
|
|
2965
|
+
|
|
2966
|
+
// src/mapped-provider.ts
|
|
2967
|
+
function createMappedProvider(options) {
|
|
2968
|
+
const assetsByEmoji = /* @__PURE__ */ new Map();
|
|
2969
|
+
for (const [emoji, url] of Object.entries(options.assets)) {
|
|
2970
|
+
const tokens = tokenizeEmojiText(emoji);
|
|
2971
|
+
if (tokens.length !== 1 || tokens[0].type !== "emoji" || tokens[0].value !== emoji) {
|
|
2972
|
+
throw new Error(`Invalid emoji mapping key: ${emoji}`);
|
|
2973
|
+
}
|
|
2974
|
+
if (!url.trim()) {
|
|
2975
|
+
throw new Error(`Asset URL cannot be empty for emoji: ${emoji}`);
|
|
2976
|
+
}
|
|
2977
|
+
assetsByEmoji.set(emoji, url);
|
|
2978
|
+
}
|
|
2979
|
+
const id = options.id ?? "mapped";
|
|
2980
|
+
const version = options.version ?? "custom";
|
|
2981
|
+
const format = options.format ?? "svg";
|
|
2982
|
+
const local = options.local ?? true;
|
|
2983
|
+
const getUrl = (data, emoji) => {
|
|
2984
|
+
const customAsset = emoji ? assetsByEmoji.get(emoji) : void 0;
|
|
2985
|
+
if (customAsset) return customAsset;
|
|
2986
|
+
if (emoji && !normalizeEmoji(emoji) && !options.fallback?.supportsUnknownEmoji) return null;
|
|
2987
|
+
return options.fallback?.getUrl?.(data, emoji) ?? null;
|
|
2988
|
+
};
|
|
2989
|
+
return {
|
|
2990
|
+
id,
|
|
2991
|
+
label: options.label ?? "Custom emoji",
|
|
2992
|
+
version,
|
|
2993
|
+
formats: [format],
|
|
2994
|
+
local,
|
|
2995
|
+
source: options.source,
|
|
2996
|
+
visibility: "custom",
|
|
2997
|
+
license: options.license,
|
|
2998
|
+
supportsUnknownEmoji: true,
|
|
2999
|
+
getUrl,
|
|
3000
|
+
async resolve(emoji) {
|
|
3001
|
+
const customAsset = assetsByEmoji.get(emoji.normalized) ?? assetsByEmoji.get(emoji.input);
|
|
3002
|
+
if (customAsset) {
|
|
3003
|
+
return {
|
|
3004
|
+
providerId: id,
|
|
3005
|
+
providerVersion: version,
|
|
3006
|
+
url: customAsset,
|
|
3007
|
+
format,
|
|
3008
|
+
local,
|
|
3009
|
+
license: options.license
|
|
3010
|
+
};
|
|
3011
|
+
}
|
|
3012
|
+
if (options.fallback?.resolve) return await options.fallback.resolve(emoji);
|
|
3013
|
+
const url = options.fallback?.getUrl?.(emoji.data, emoji.normalized);
|
|
3014
|
+
return url ? {
|
|
3015
|
+
providerId: options.fallback?.id ?? id,
|
|
3016
|
+
providerVersion: options.fallback?.version ?? version,
|
|
3017
|
+
url,
|
|
3018
|
+
format: options.fallback?.formats?.[0] ?? format,
|
|
3019
|
+
local: options.fallback?.local ?? local,
|
|
3020
|
+
license: options.fallback?.license ?? options.license
|
|
3021
|
+
} : null;
|
|
3022
|
+
}
|
|
3023
|
+
};
|
|
3024
|
+
}
|
|
3025
|
+
|
|
3026
|
+
// src/manifest-provider.ts
|
|
3027
|
+
import { emojiData as emojiData3, emojiDatasetInfo, normalizeEmoji as normalizeEmoji2 } from "emoji-styles-data";
|
|
3028
|
+
function isSafeRelativeAssetPath(file) {
|
|
3029
|
+
return typeof file === "string" && Boolean(file) && !file.startsWith("/") && !file.includes("\\") && !file.split("/").includes("..") && !/^[a-z][a-z0-9+.-]*:/i.test(file);
|
|
3030
|
+
}
|
|
3031
|
+
function isSafeBasePath(basePath) {
|
|
3032
|
+
if (typeof basePath !== "string" || !basePath.trim()) return false;
|
|
3033
|
+
const scheme = basePath.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();
|
|
3034
|
+
return !scheme || scheme === "http" || scheme === "https";
|
|
3035
|
+
}
|
|
3036
|
+
function validateProviderManifest(manifest) {
|
|
3037
|
+
const errors = [];
|
|
3038
|
+
const warnings = [];
|
|
3039
|
+
if (!manifest.id?.trim()) errors.push("Manifest id is required");
|
|
3040
|
+
else if (!/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/.test(manifest.id)) {
|
|
3041
|
+
errors.push("Manifest id must use lowercase letters, numbers, dots, underscores, or hyphens");
|
|
3042
|
+
}
|
|
3043
|
+
if (!manifest.label?.trim()) errors.push("Manifest label is required");
|
|
3044
|
+
if (!manifest.version?.trim()) errors.push("Manifest version is required");
|
|
3045
|
+
if (!manifest.basePath?.trim()) errors.push("Manifest basePath is required");
|
|
3046
|
+
else if (!isSafeBasePath(manifest.basePath)) errors.push("Manifest basePath must be relative, HTTP, or HTTPS");
|
|
3047
|
+
if (!["png", "svg", "webp", "avif"].includes(manifest.format)) {
|
|
3048
|
+
errors.push("Manifest format must be png, svg, webp, or avif");
|
|
3049
|
+
}
|
|
3050
|
+
if (!manifest.assets || typeof manifest.assets !== "object" || Array.isArray(manifest.assets)) {
|
|
3051
|
+
errors.push("Manifest assets must be an object");
|
|
3052
|
+
} else {
|
|
3053
|
+
const normalizedKeys = /* @__PURE__ */ new Set();
|
|
3054
|
+
for (const [emoji, asset] of Object.entries(manifest.assets)) {
|
|
3055
|
+
if (!emoji.trim()) {
|
|
3056
|
+
errors.push("Manifest asset keys cannot be empty");
|
|
3057
|
+
} else {
|
|
3058
|
+
const tokens = tokenizeEmojiText(emoji);
|
|
3059
|
+
if (tokens.length !== 1 || tokens[0]?.type !== "emoji" || tokens[0].value !== emoji) {
|
|
3060
|
+
errors.push(`Invalid emoji asset key: ${emoji}`);
|
|
3061
|
+
}
|
|
3062
|
+
}
|
|
3063
|
+
const normalized = normalizeEmoji2(emoji) ?? emoji.normalize("NFC");
|
|
3064
|
+
if (normalizedKeys.has(normalized)) errors.push(`Duplicate normalized emoji asset key: ${emoji}`);
|
|
3065
|
+
normalizedKeys.add(normalized);
|
|
3066
|
+
if (!asset || typeof asset !== "object" || Array.isArray(asset)) {
|
|
3067
|
+
errors.push(`Invalid asset record for ${emoji}`);
|
|
3068
|
+
continue;
|
|
3069
|
+
}
|
|
3070
|
+
if (!isSafeRelativeAssetPath(asset.file)) errors.push(`Unsafe asset path for ${emoji}`);
|
|
3071
|
+
if (asset.sha256 && !/^[a-f0-9]{64}$/i.test(asset.sha256)) {
|
|
3072
|
+
errors.push(`Invalid SHA-256 for ${emoji}`);
|
|
3073
|
+
}
|
|
3074
|
+
if (asset.width !== void 0 && (!Number.isInteger(asset.width) || asset.width <= 0)) {
|
|
3075
|
+
errors.push(`Invalid width for ${emoji}`);
|
|
3076
|
+
}
|
|
3077
|
+
if (asset.height !== void 0 && (!Number.isInteger(asset.height) || asset.height <= 0)) {
|
|
3078
|
+
errors.push(`Invalid height for ${emoji}`);
|
|
3079
|
+
}
|
|
3080
|
+
}
|
|
3081
|
+
}
|
|
3082
|
+
if (manifest.generated) {
|
|
3083
|
+
if (!manifest.generator) errors.push("Generated manifests require generator provenance");
|
|
3084
|
+
if (!manifest.generator?.type?.trim()) errors.push("Generated manifests require a generator type");
|
|
3085
|
+
if (!manifest.generator?.model?.trim()) errors.push("Generated manifests require a recorded model");
|
|
3086
|
+
if (!manifest.generator?.createdAt || Number.isNaN(Date.parse(manifest.generator.createdAt))) {
|
|
3087
|
+
errors.push("Generated manifests require a valid generator createdAt timestamp");
|
|
3088
|
+
}
|
|
3089
|
+
if (!manifest.license?.ownership) warnings.push("Generated manifests should record asset ownership");
|
|
3090
|
+
}
|
|
3091
|
+
if (!manifest.license) warnings.push("Manifest does not declare an asset license");
|
|
3092
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
3093
|
+
}
|
|
3094
|
+
function joinAssetUrl(basePath, file) {
|
|
3095
|
+
return `${basePath.replace(/\/$/, "")}/${file.replace(/^\//, "")}`;
|
|
3096
|
+
}
|
|
3097
|
+
function createManifestProvider(manifest, options = {}) {
|
|
3098
|
+
const validation = validateProviderManifest(manifest);
|
|
3099
|
+
if (!validation.valid) throw new Error(validation.errors.join("; "));
|
|
3100
|
+
const assets = /* @__PURE__ */ new Map();
|
|
3101
|
+
for (const [input, asset] of Object.entries(manifest.assets)) {
|
|
3102
|
+
assets.set(normalizeEmoji2(input) ?? input.normalize("NFC"), asset);
|
|
3103
|
+
}
|
|
3104
|
+
const basePath = options.baseUrl ?? manifest.basePath;
|
|
3105
|
+
if (!isSafeBasePath(basePath)) throw new Error("Provider base URL must be relative, HTTP, or HTTPS");
|
|
3106
|
+
const local = options.local ?? !/^https?:\/\//i.test(basePath);
|
|
3107
|
+
const resolveAsset = (emoji) => {
|
|
3108
|
+
const asset = assets.get(emoji.normalized);
|
|
3109
|
+
if (!asset) return null;
|
|
3110
|
+
return {
|
|
3111
|
+
providerId: manifest.id,
|
|
3112
|
+
providerVersion: manifest.version,
|
|
3113
|
+
url: joinAssetUrl(basePath, asset.file),
|
|
3114
|
+
format: manifest.format,
|
|
3115
|
+
local,
|
|
3116
|
+
width: asset.width,
|
|
3117
|
+
height: asset.height,
|
|
3118
|
+
checksum: asset.sha256,
|
|
3119
|
+
license: manifest.license
|
|
3120
|
+
};
|
|
3121
|
+
};
|
|
3122
|
+
return {
|
|
3123
|
+
id: manifest.id,
|
|
3124
|
+
label: manifest.label,
|
|
3125
|
+
version: manifest.version,
|
|
3126
|
+
formats: [manifest.format],
|
|
3127
|
+
local,
|
|
3128
|
+
source: manifest.source,
|
|
3129
|
+
visibility: options.visibility ?? "custom",
|
|
3130
|
+
license: manifest.license,
|
|
3131
|
+
supportsUnknownEmoji: true,
|
|
3132
|
+
getUrl(data, input) {
|
|
3133
|
+
const normalized = input ? normalizeEmoji2(input) ?? input.normalize("NFC") : null;
|
|
3134
|
+
const asset = normalized ? assets.get(normalized) : void 0;
|
|
3135
|
+
return asset ? joinAssetUrl(basePath, asset.file) : null;
|
|
3136
|
+
},
|
|
3137
|
+
resolve: resolveAsset,
|
|
3138
|
+
getCoverage() {
|
|
3139
|
+
const supported = [...assets.keys()].filter((emoji) => emoji in emojiData3).length;
|
|
3140
|
+
const total = Object.keys(emojiData3).length;
|
|
3141
|
+
return {
|
|
3142
|
+
providerId: manifest.id,
|
|
3143
|
+
providerVersion: manifest.version,
|
|
3144
|
+
datasetVersion: emojiDatasetInfo.emojiVersion,
|
|
3145
|
+
total,
|
|
3146
|
+
supported,
|
|
3147
|
+
percentage: Number((supported / total * 100).toFixed(2)),
|
|
3148
|
+
verified: true,
|
|
3149
|
+
source: manifest.source
|
|
3150
|
+
};
|
|
3151
|
+
}
|
|
3152
|
+
};
|
|
3153
|
+
}
|
|
3154
|
+
function createGeneratedProvider(manifest, options) {
|
|
3155
|
+
if (!manifest.generated) throw new Error("Generated providers require generated: true");
|
|
3156
|
+
return createManifestProvider(manifest, options);
|
|
3157
|
+
}
|
|
3158
|
+
|
|
3159
|
+
// src/composite-provider.ts
|
|
3160
|
+
function createCompositeProvider(options) {
|
|
3161
|
+
if (options.providers.length === 0) throw new Error("Composite providers require at least one provider");
|
|
3162
|
+
const formats = [...new Set(
|
|
3163
|
+
options.providers.flatMap((provider) => provider.formats ?? [])
|
|
3164
|
+
)];
|
|
3165
|
+
return {
|
|
3166
|
+
id: options.id,
|
|
3167
|
+
label: options.label,
|
|
3168
|
+
version: options.version,
|
|
3169
|
+
formats,
|
|
3170
|
+
local: options.providers.every((provider) => provider.local === true),
|
|
3171
|
+
source: options.providers.map((provider) => provider.id).join(","),
|
|
3172
|
+
visibility: options.visibility ?? "custom",
|
|
3173
|
+
license: options.license,
|
|
3174
|
+
supportsUnknownEmoji: options.providers.some((provider) => provider.supportsUnknownEmoji),
|
|
3175
|
+
getUrl(data, emoji) {
|
|
3176
|
+
for (const provider of options.providers) {
|
|
3177
|
+
const url = provider.getUrl?.(data, emoji);
|
|
3178
|
+
if (url) return url;
|
|
3179
|
+
}
|
|
3180
|
+
return null;
|
|
3181
|
+
},
|
|
3182
|
+
async resolve(emoji) {
|
|
3183
|
+
for (const provider of options.providers) {
|
|
3184
|
+
const asset = provider.resolve ? await provider.resolve(emoji) : provider.getUrl?.(emoji.data, emoji.normalized);
|
|
3185
|
+
if (typeof asset === "string") {
|
|
3186
|
+
return {
|
|
3187
|
+
providerId: provider.id,
|
|
3188
|
+
providerVersion: provider.version ?? "legacy",
|
|
3189
|
+
url: asset,
|
|
3190
|
+
format: provider.formats?.[0] ?? "png",
|
|
3191
|
+
local: provider.local ?? false,
|
|
3192
|
+
license: provider.license
|
|
3193
|
+
};
|
|
3194
|
+
}
|
|
3195
|
+
if (asset) return asset;
|
|
3196
|
+
}
|
|
3197
|
+
return null;
|
|
3198
|
+
}
|
|
3199
|
+
};
|
|
3200
|
+
}
|
|
3201
|
+
|
|
3202
|
+
// src/config.ts
|
|
3203
|
+
function providerId(ref) {
|
|
3204
|
+
return typeof ref === "string" ? ref : ref.id;
|
|
3205
|
+
}
|
|
3206
|
+
function validProvider(ref) {
|
|
3207
|
+
if (typeof ref === "string") return /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/.test(ref);
|
|
3208
|
+
return Boolean(ref && typeof ref === "object" && typeof ref.id === "string");
|
|
3209
|
+
}
|
|
3210
|
+
function defineEmojiConfig(config) {
|
|
3211
|
+
if (!config || typeof config !== "object") throw new Error("Emoji Styles config must be an object");
|
|
3212
|
+
if (config.provider !== void 0 && !validProvider(config.provider)) {
|
|
3213
|
+
throw new Error("Emoji Styles config provider is invalid");
|
|
3214
|
+
}
|
|
3215
|
+
if (config.fallbacks !== void 0 && !Array.isArray(config.fallbacks)) {
|
|
3216
|
+
throw new Error("Emoji Styles config fallbacks must be an array");
|
|
3217
|
+
}
|
|
3218
|
+
const ids = /* @__PURE__ */ new Set();
|
|
3219
|
+
for (const fallback of config.fallbacks ?? []) {
|
|
3220
|
+
if (!validProvider(fallback)) throw new Error("Emoji Styles config contains an invalid fallback provider");
|
|
3221
|
+
const id = providerId(fallback);
|
|
3222
|
+
if (ids.has(id)) throw new Error(`Emoji Styles config contains duplicate fallback: ${id}`);
|
|
3223
|
+
ids.add(id);
|
|
3224
|
+
}
|
|
3225
|
+
if (config.nativeFallback !== void 0 && typeof config.nativeFallback !== "boolean") {
|
|
3226
|
+
throw new Error("Emoji Styles config nativeFallback must be boolean");
|
|
3227
|
+
}
|
|
3228
|
+
return Object.freeze({
|
|
3229
|
+
...config,
|
|
3230
|
+
...config.fallbacks ? { fallbacks: Object.freeze([...config.fallbacks]) } : {}
|
|
3231
|
+
});
|
|
3232
|
+
}
|
|
3233
|
+
|
|
3234
|
+
// src/resolution.ts
|
|
3235
|
+
import {
|
|
3236
|
+
emojiData as emojiData5,
|
|
3237
|
+
emojiDatasetInfo as emojiDatasetInfo2,
|
|
3238
|
+
isRGIEmoji,
|
|
3239
|
+
normalizeEmoji as normalizeEmoji4,
|
|
3240
|
+
toEmojiCodepointSequence as toEmojiCodepointSequence2
|
|
3241
|
+
} from "emoji-styles-data";
|
|
3242
|
+
|
|
3243
|
+
// src/url.ts
|
|
3244
|
+
import { emojiData as emojiData4, normalizeEmoji as normalizeEmoji3, toEmojiCodepointSequence } from "emoji-styles-data";
|
|
3245
|
+
function resolveProvider(provider) {
|
|
3246
|
+
return typeof provider === "string" ? providers[provider] ?? null : provider;
|
|
3247
|
+
}
|
|
3248
|
+
function getEmojiUrl(emoji, providerRef) {
|
|
3249
|
+
const normalized = normalizeEmoji3(emoji);
|
|
3250
|
+
const data = normalized ? emojiData4[normalized] : void 0;
|
|
3251
|
+
const provider = resolveProvider(providerRef);
|
|
3252
|
+
if (!provider) return null;
|
|
3253
|
+
if (!data) {
|
|
3254
|
+
if (!provider.supportsUnknownEmoji) return null;
|
|
3255
|
+
const codepoint = toEmojiCodepointSequence(emoji);
|
|
3256
|
+
return provider.getUrl?.({ name: `emoji_${codepoint}`, alt: emoji, codepoint }, emoji) ?? null;
|
|
3257
|
+
}
|
|
3258
|
+
if (typeof providerRef === "string" && data.unsupported?.includes(providerRef)) return null;
|
|
3259
|
+
if (provider.getUrl) return provider.getUrl(data, emoji);
|
|
3260
|
+
if (provider.resolve && normalized) {
|
|
3261
|
+
const result = provider.resolve({
|
|
3262
|
+
input: emoji,
|
|
3263
|
+
normalized,
|
|
3264
|
+
data,
|
|
3265
|
+
metadata: {
|
|
3266
|
+
label: data.alt,
|
|
3267
|
+
codepoints: data.codepoints ?? data.codepoint.split("-"),
|
|
3268
|
+
sequence: data.sequence ?? data.codepoint,
|
|
3269
|
+
unicodeVersion: data.unicodeVersion,
|
|
3270
|
+
emojiVersion: data.emojiVersion,
|
|
3271
|
+
category: data.group,
|
|
3272
|
+
subgroup: data.subgroup
|
|
3273
|
+
}
|
|
3274
|
+
});
|
|
3275
|
+
return result instanceof Promise ? null : result?.url ?? null;
|
|
3276
|
+
}
|
|
3277
|
+
return null;
|
|
3278
|
+
}
|
|
3279
|
+
function getFallbackChain(emoji, primary, fallbacks = [publicProviders.twemoji]) {
|
|
3280
|
+
if (resolveProvider(primary)?.id === "native") return [];
|
|
3281
|
+
const refs = [primary, ...fallbacks];
|
|
3282
|
+
const urls = [];
|
|
3283
|
+
for (const ref of refs) {
|
|
3284
|
+
const url = getEmojiUrl(emoji, ref);
|
|
3285
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
3286
|
+
}
|
|
3287
|
+
return urls;
|
|
3288
|
+
}
|
|
3289
|
+
function hasEmoji(emoji) {
|
|
3290
|
+
return normalizeEmoji3(emoji) !== null;
|
|
3291
|
+
}
|
|
3292
|
+
function getAvailableEmojis() {
|
|
3293
|
+
return Object.keys(emojiData4);
|
|
3294
|
+
}
|
|
3295
|
+
function getEmojiData(emoji) {
|
|
3296
|
+
const normalized = normalizeEmoji3(emoji);
|
|
3297
|
+
return normalized ? emojiData4[normalized] ?? null : null;
|
|
3298
|
+
}
|
|
3299
|
+
|
|
3300
|
+
// src/resolution.ts
|
|
3301
|
+
function inferFormat(provider, url) {
|
|
3302
|
+
const declared = provider.formats?.[0];
|
|
3303
|
+
if (declared) return declared;
|
|
3304
|
+
const extension = url.split(/[?#]/, 1)[0].split(".").pop();
|
|
3305
|
+
if (extension === "svg" || extension === "webp" || extension === "avif") return extension;
|
|
3306
|
+
return "png";
|
|
3307
|
+
}
|
|
3308
|
+
function createNormalizedEmoji(input) {
|
|
3309
|
+
const normalized = normalizeEmoji4(input);
|
|
3310
|
+
if (!normalized) return null;
|
|
3311
|
+
const data = emojiData5[normalized];
|
|
3312
|
+
return {
|
|
3313
|
+
input,
|
|
3314
|
+
normalized,
|
|
3315
|
+
data,
|
|
3316
|
+
metadata: {
|
|
3317
|
+
label: data.alt,
|
|
3318
|
+
codepoints: data.codepoints ?? data.codepoint.split("-"),
|
|
3319
|
+
sequence: data.sequence ?? data.codepoint,
|
|
3320
|
+
unicodeVersion: data.unicodeVersion,
|
|
3321
|
+
emojiVersion: data.emojiVersion,
|
|
3322
|
+
category: data.group,
|
|
3323
|
+
subgroup: data.subgroup
|
|
3324
|
+
}
|
|
3325
|
+
};
|
|
3326
|
+
}
|
|
3327
|
+
function createUnknownEmoji(input) {
|
|
3328
|
+
const normalized = input.normalize("NFC");
|
|
3329
|
+
const codepoint = toEmojiCodepointSequence2(normalized);
|
|
3330
|
+
const data = {
|
|
3331
|
+
name: `emoji_${codepoint}`,
|
|
3332
|
+
alt: normalized,
|
|
3333
|
+
codepoint,
|
|
3334
|
+
codepoints: codepoint ? codepoint.split("-") : [],
|
|
3335
|
+
sequence: codepoint
|
|
3336
|
+
};
|
|
3337
|
+
return {
|
|
3338
|
+
input,
|
|
3339
|
+
normalized,
|
|
3340
|
+
data,
|
|
3341
|
+
metadata: {
|
|
3342
|
+
label: normalized,
|
|
3343
|
+
codepoints: data.codepoints ?? [],
|
|
3344
|
+
sequence: codepoint
|
|
3345
|
+
}
|
|
3346
|
+
};
|
|
3347
|
+
}
|
|
3348
|
+
function getEmojiMetadata(input) {
|
|
3349
|
+
return createNormalizedEmoji(input)?.metadata ?? null;
|
|
3350
|
+
}
|
|
3351
|
+
function isEmoji(input) {
|
|
3352
|
+
const tokens = tokenizeEmojiText(input);
|
|
3353
|
+
return tokens.length === 1 && tokens[0].type === "emoji" && tokens[0].value === input;
|
|
3354
|
+
}
|
|
3355
|
+
async function resolveAttempt(normalized, provider) {
|
|
3356
|
+
if (!isRGIEmoji(normalized.normalized) && !provider.supportsUnknownEmoji) return null;
|
|
3357
|
+
if (provider.resolve) return await provider.resolve(normalized);
|
|
3358
|
+
const url = provider.getUrl?.(normalized.data, normalized.normalized) ?? null;
|
|
3359
|
+
if (!url) return null;
|
|
3360
|
+
return {
|
|
3361
|
+
providerId: provider.id,
|
|
3362
|
+
providerVersion: provider.version ?? "legacy",
|
|
3363
|
+
url,
|
|
3364
|
+
format: inferFormat(provider, url),
|
|
3365
|
+
local: provider.local ?? false,
|
|
3366
|
+
license: provider.license
|
|
3367
|
+
};
|
|
3368
|
+
}
|
|
3369
|
+
async function resolveEmoji(input, options) {
|
|
3370
|
+
const known = createNormalizedEmoji(input);
|
|
3371
|
+
if (!known && !isEmoji(input)) throw new Error("resolveEmoji requires exactly one emoji grapheme");
|
|
3372
|
+
const normalized = known ?? createUnknownEmoji(input);
|
|
3373
|
+
const refs = [options.provider, ...options.fallbacks ?? []];
|
|
3374
|
+
const attempts = [];
|
|
3375
|
+
let selected = null;
|
|
3376
|
+
let selectedIndex = -1;
|
|
3377
|
+
let nativeFallback = false;
|
|
3378
|
+
let nativeIndex = -1;
|
|
3379
|
+
for (let index = 0; index < refs.length; index++) {
|
|
3380
|
+
const provider = resolveProvider(refs[index]);
|
|
3381
|
+
if (!provider) {
|
|
3382
|
+
attempts.push({ providerId: String(refs[index]), status: "error", asset: null, error: "Unknown provider" });
|
|
3383
|
+
continue;
|
|
3384
|
+
}
|
|
3385
|
+
if (provider.id === publicProviders.native.id) {
|
|
3386
|
+
nativeFallback = true;
|
|
3387
|
+
nativeIndex = index;
|
|
3388
|
+
attempts.push({ providerId: provider.id, status: "native", asset: null });
|
|
3389
|
+
break;
|
|
3390
|
+
}
|
|
3391
|
+
try {
|
|
3392
|
+
const asset = await resolveAttempt(normalized, provider);
|
|
3393
|
+
attempts.push({
|
|
3394
|
+
providerId: provider.id,
|
|
3395
|
+
status: asset ? "resolved" : "unsupported",
|
|
3396
|
+
asset
|
|
3397
|
+
});
|
|
3398
|
+
if (asset) {
|
|
3399
|
+
selected = asset;
|
|
3400
|
+
selectedIndex = index;
|
|
3401
|
+
break;
|
|
3402
|
+
}
|
|
3403
|
+
} catch (error) {
|
|
3404
|
+
attempts.push({
|
|
3405
|
+
providerId: provider.id,
|
|
3406
|
+
status: "error",
|
|
3407
|
+
asset: null,
|
|
3408
|
+
error: error instanceof Error ? error.message : String(error)
|
|
3409
|
+
});
|
|
3410
|
+
}
|
|
3411
|
+
}
|
|
3412
|
+
return {
|
|
3413
|
+
input,
|
|
3414
|
+
normalized: normalized.normalized,
|
|
3415
|
+
metadata: normalized.metadata,
|
|
3416
|
+
selected,
|
|
3417
|
+
attempts,
|
|
3418
|
+
fallbackUsed: selectedIndex > 0 || nativeIndex > 0,
|
|
3419
|
+
nativeFallback
|
|
3420
|
+
};
|
|
3421
|
+
}
|
|
3422
|
+
async function getProviderCoverage(providerRef, options = {}) {
|
|
3423
|
+
const provider = resolveProvider(providerRef);
|
|
3424
|
+
if (!provider) throw new Error(`Unknown provider: ${String(providerRef)}`);
|
|
3425
|
+
if (provider.getCoverage) return await provider.getCoverage();
|
|
3426
|
+
const missing = [];
|
|
3427
|
+
let supported = 0;
|
|
3428
|
+
for (const emoji of Object.keys(emojiData5)) {
|
|
3429
|
+
const normalized = createNormalizedEmoji(emoji);
|
|
3430
|
+
if (provider.id === publicProviders.native.id) {
|
|
3431
|
+
supported++;
|
|
3432
|
+
continue;
|
|
3433
|
+
}
|
|
3434
|
+
try {
|
|
3435
|
+
if (await resolveAttempt(normalized, provider)) supported++;
|
|
3436
|
+
else if (options.includeMissing) missing.push(emoji);
|
|
3437
|
+
} catch {
|
|
3438
|
+
if (options.includeMissing) missing.push(emoji);
|
|
3439
|
+
}
|
|
3440
|
+
}
|
|
3441
|
+
const total = Object.keys(emojiData5).length;
|
|
3442
|
+
return {
|
|
3443
|
+
providerId: provider.id,
|
|
3444
|
+
providerVersion: provider.version ?? "legacy",
|
|
3445
|
+
datasetVersion: emojiDatasetInfo2.emojiVersion,
|
|
3446
|
+
total,
|
|
3447
|
+
supported,
|
|
3448
|
+
percentage: total === 0 ? 0 : Number((supported / total * 100).toFixed(2)),
|
|
3449
|
+
verified: false,
|
|
3450
|
+
source: provider.source,
|
|
3451
|
+
missing: options.includeMissing ? missing : void 0
|
|
3452
|
+
};
|
|
3453
|
+
}
|
|
3454
|
+
|
|
3455
|
+
// src/provider-validation.ts
|
|
3456
|
+
function validateProvider(provider) {
|
|
3457
|
+
const errors = [];
|
|
3458
|
+
const warnings = [];
|
|
3459
|
+
if (!provider.id?.trim()) errors.push("Provider id is required");
|
|
3460
|
+
else if (!/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/.test(provider.id)) {
|
|
3461
|
+
errors.push("Provider id must use lowercase letters, numbers, dots, underscores, or hyphens");
|
|
3462
|
+
}
|
|
3463
|
+
if (!provider.label?.trim()) errors.push("Provider label is required");
|
|
3464
|
+
if (provider.visibility !== "public" && provider.visibility !== "custom") {
|
|
3465
|
+
errors.push("Provider visibility must be public or custom");
|
|
3466
|
+
}
|
|
3467
|
+
if (!provider.resolve && !provider.getUrl) errors.push("Provider must implement resolve or getUrl");
|
|
3468
|
+
if (!provider.version?.trim()) errors.push("Provider version is required for v2");
|
|
3469
|
+
if (!provider.formats) errors.push("Provider formats are required for v2");
|
|
3470
|
+
else if (provider.id !== "native" && provider.formats.length === 0) {
|
|
3471
|
+
errors.push("Non-native providers must declare at least one format");
|
|
3472
|
+
}
|
|
3473
|
+
if (typeof provider.local !== "boolean") errors.push("Provider local must be declared for v2");
|
|
3474
|
+
if (provider.visibility === "public" && provider.id !== "native" && !provider.license) {
|
|
3475
|
+
errors.push("Public providers must declare a license");
|
|
3476
|
+
}
|
|
3477
|
+
if (!provider.source) warnings.push("Provider source is not declared");
|
|
3478
|
+
if (provider.license && !provider.license.url && !provider.license.ownership) {
|
|
3479
|
+
warnings.push("Provider license should declare a URL or ownership");
|
|
3480
|
+
}
|
|
3481
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
3482
|
+
}
|
|
3483
|
+
|
|
3484
|
+
// src/legacy.ts
|
|
3485
|
+
function isV2Provider(provider) {
|
|
3486
|
+
return Boolean(
|
|
3487
|
+
provider.resolve && provider.version && provider.formats && typeof provider.local === "boolean"
|
|
3488
|
+
);
|
|
3489
|
+
}
|
|
3490
|
+
function adaptLegacyProvider(legacy, options = {}) {
|
|
3491
|
+
const format = options.format ?? "png";
|
|
3492
|
+
return {
|
|
3493
|
+
...legacy,
|
|
3494
|
+
version: options.version ?? "legacy",
|
|
3495
|
+
formats: [format],
|
|
3496
|
+
local: options.local ?? false,
|
|
3497
|
+
source: options.source,
|
|
3498
|
+
resolve(emoji) {
|
|
3499
|
+
const url = legacy.getUrl(emoji.data, emoji.normalized);
|
|
3500
|
+
return url ? {
|
|
3501
|
+
providerId: legacy.id,
|
|
3502
|
+
providerVersion: options.version ?? "legacy",
|
|
3503
|
+
url,
|
|
3504
|
+
format,
|
|
3505
|
+
local: options.local ?? false,
|
|
3506
|
+
license: legacy.license
|
|
3507
|
+
} : null;
|
|
3508
|
+
}
|
|
3509
|
+
};
|
|
3510
|
+
}
|
|
3511
|
+
|
|
3512
|
+
// src/index.ts
|
|
3513
|
+
import { emojiData as emojiData6, emojiDatasetInfo as emojiDatasetInfo3, normalizeEmoji as normalizeEmoji6, isRGIEmoji as isRGIEmoji2, toEmojiCodepointSequence as toEmojiCodepointSequence3 } from "emoji-styles-data";
|
|
3514
|
+
|
|
3515
|
+
// src/semantic-theme.ts
|
|
3516
|
+
import { normalizeEmoji as normalizeEmoji5 } from "emoji-styles-data";
|
|
3517
|
+
var EMOJI_THEME_SCHEMA_VERSION = 1;
|
|
3518
|
+
var EMOJI_TOKEN_NAME_PATTERN = /^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9]*)+$/;
|
|
3519
|
+
var PROVIDER_ID_PATTERN = /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/;
|
|
3520
|
+
var THEME_VERSION_PATTERN = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;
|
|
3521
|
+
var LOCALE_PATTERN = /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/i;
|
|
3522
|
+
function isEmojiGrapheme(input) {
|
|
3523
|
+
const tokens = tokenizeEmojiText(input);
|
|
3524
|
+
return tokens.length === 1 && tokens[0]?.type === "emoji" && tokens[0].value === input;
|
|
3525
|
+
}
|
|
3526
|
+
function isSafeAssetUrl(url) {
|
|
3527
|
+
if (typeof url !== "string" || !url.trim() || url.includes("\\")) return false;
|
|
3528
|
+
if (url.startsWith("//") || url.split(/[?#]/, 1)[0].split("/").includes("..")) return false;
|
|
3529
|
+
const scheme = url.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();
|
|
3530
|
+
return !scheme || scheme === "http" || scheme === "https";
|
|
3531
|
+
}
|
|
3532
|
+
function providerId2(ref) {
|
|
3533
|
+
return typeof ref === "string" ? ref : ref?.id;
|
|
3534
|
+
}
|
|
3535
|
+
function normalizeDefinition(definition) {
|
|
3536
|
+
const normalized = normalizeEmoji5(definition.emoji) ?? definition.emoji.normalize("NFC");
|
|
3537
|
+
return {
|
|
3538
|
+
...definition,
|
|
3539
|
+
emoji: normalized,
|
|
3540
|
+
labels: definition.labels ? { ...definition.labels } : void 0,
|
|
3541
|
+
asset: typeof definition.asset === "object" ? { ...definition.asset } : definition.asset,
|
|
3542
|
+
decorative: definition.decorative ?? false
|
|
3543
|
+
};
|
|
3544
|
+
}
|
|
3545
|
+
function createIssue(path, code, message) {
|
|
3546
|
+
return { path, code, message };
|
|
3547
|
+
}
|
|
3548
|
+
function isRecord(value) {
|
|
3549
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
3550
|
+
}
|
|
3551
|
+
function unknownProviderId(ref) {
|
|
3552
|
+
if (typeof ref === "string") return ref;
|
|
3553
|
+
return isRecord(ref) && typeof ref.id === "string" ? ref.id : void 0;
|
|
3554
|
+
}
|
|
3555
|
+
function validateEmojiTheme(theme) {
|
|
3556
|
+
const issues = [];
|
|
3557
|
+
const warnings = [];
|
|
3558
|
+
const error = (path, code, message) => {
|
|
3559
|
+
issues.push(createIssue(path, code, message));
|
|
3560
|
+
};
|
|
3561
|
+
if (!isRecord(theme)) {
|
|
3562
|
+
error("$", "invalid-theme", "Theme must be an object");
|
|
3563
|
+
return {
|
|
3564
|
+
valid: false,
|
|
3565
|
+
errors: issues.map((issue) => `${issue.path}: ${issue.message}`),
|
|
3566
|
+
warnings,
|
|
3567
|
+
issues
|
|
3568
|
+
};
|
|
3569
|
+
}
|
|
3570
|
+
if (theme.schemaVersion !== EMOJI_THEME_SCHEMA_VERSION) {
|
|
3571
|
+
error("schemaVersion", "unsupported-schema", `Theme schemaVersion must be ${EMOJI_THEME_SCHEMA_VERSION}`);
|
|
3572
|
+
}
|
|
3573
|
+
if (typeof theme.id !== "string" || !PROVIDER_ID_PATTERN.test(theme.id)) {
|
|
3574
|
+
error("id", "invalid-id", "Theme id must use lowercase letters, numbers, dots, underscores, or hyphens");
|
|
3575
|
+
}
|
|
3576
|
+
if (typeof theme.version !== "string" || !THEME_VERSION_PATTERN.test(theme.version)) {
|
|
3577
|
+
error("version", "invalid-version", "Theme version must be semantic versioning such as 1.0.0");
|
|
3578
|
+
}
|
|
3579
|
+
if (!isRecord(theme.tokens)) {
|
|
3580
|
+
error("tokens", "invalid-tokens", "Theme tokens must be an object");
|
|
3581
|
+
} else {
|
|
3582
|
+
for (const [token, definition] of Object.entries(theme.tokens)) {
|
|
3583
|
+
const path = `tokens.${token}`;
|
|
3584
|
+
if (!EMOJI_TOKEN_NAME_PATTERN.test(token)) {
|
|
3585
|
+
error(path, "invalid-token", "Token names require at least two lowercase dot-separated segments");
|
|
3586
|
+
}
|
|
3587
|
+
if (!isRecord(definition)) {
|
|
3588
|
+
error(path, "invalid-definition", "Token definition must be an object");
|
|
3589
|
+
continue;
|
|
3590
|
+
}
|
|
3591
|
+
if (typeof definition.emoji !== "string" || !isEmojiGrapheme(definition.emoji)) {
|
|
3592
|
+
error(`${path}.emoji`, "invalid-emoji", "Token emoji must contain exactly one emoji grapheme");
|
|
3593
|
+
}
|
|
3594
|
+
if (typeof definition.label !== "string" || !definition.label.trim()) {
|
|
3595
|
+
error(`${path}.label`, "missing-label", "Token label is required for accessible fallback");
|
|
3596
|
+
}
|
|
3597
|
+
if (typeof definition.decorative !== "boolean") {
|
|
3598
|
+
error(`${path}.decorative`, "invalid-decorative", "Token decorative must be boolean");
|
|
3599
|
+
}
|
|
3600
|
+
if (definition.labels !== void 0 && !isRecord(definition.labels)) {
|
|
3601
|
+
error(`${path}.labels`, "invalid-labels", "Localized labels must be an object");
|
|
3602
|
+
} else {
|
|
3603
|
+
for (const [locale, label] of Object.entries(definition.labels ?? {})) {
|
|
3604
|
+
if (!LOCALE_PATTERN.test(locale)) {
|
|
3605
|
+
error(`${path}.labels.${locale}`, "invalid-locale", "Localized label keys must be BCP 47-like locale tags");
|
|
3606
|
+
}
|
|
3607
|
+
if (typeof label !== "string" || !label.trim()) {
|
|
3608
|
+
error(`${path}.labels.${locale}`, "empty-label", "Localized labels cannot be empty");
|
|
3609
|
+
}
|
|
3610
|
+
}
|
|
3611
|
+
}
|
|
3612
|
+
const definitionProviderId = unknownProviderId(definition.provider);
|
|
3613
|
+
if (definition.provider !== void 0 && (!definitionProviderId || !PROVIDER_ID_PATTERN.test(definitionProviderId))) {
|
|
3614
|
+
error(`${path}.provider`, "invalid-provider", "Token provider reference is invalid");
|
|
3615
|
+
}
|
|
3616
|
+
if (typeof definition.asset === "string" && !EMOJI_TOKEN_NAME_PATTERN.test(definition.asset)) {
|
|
3617
|
+
error(`${path}.asset`, "invalid-asset-id", "Semantic asset ids use lowercase dot-separated segments");
|
|
3618
|
+
}
|
|
3619
|
+
if (definition.asset !== void 0 && typeof definition.asset !== "string" && !isRecord(definition.asset)) {
|
|
3620
|
+
error(`${path}.asset`, "invalid-asset", "Token asset must be a semantic id or asset object");
|
|
3621
|
+
} else if (isRecord(definition.asset)) {
|
|
3622
|
+
if (typeof definition.asset.url !== "string" || !isSafeAssetUrl(definition.asset.url)) {
|
|
3623
|
+
error(`${path}.asset.url`, "unsafe-asset-url", "Asset URLs must be relative, HTTP, or HTTPS");
|
|
3624
|
+
}
|
|
3625
|
+
if (typeof definition.asset.format !== "string" || !["png", "svg", "webp", "avif"].includes(definition.asset.format)) {
|
|
3626
|
+
error(`${path}.asset.format`, "invalid-format", "Asset format must be png, svg, webp, or avif");
|
|
3627
|
+
}
|
|
3628
|
+
if (definition.asset.checksum !== void 0 && (typeof definition.asset.checksum !== "string" || !/^[a-f0-9]{64}$/i.test(definition.asset.checksum))) {
|
|
3629
|
+
error(`${path}.asset.checksum`, "invalid-checksum", "Asset checksum must be SHA-256");
|
|
3630
|
+
}
|
|
3631
|
+
if (definition.asset.providerId !== void 0 && (typeof definition.asset.providerId !== "string" || !PROVIDER_ID_PATTERN.test(definition.asset.providerId))) {
|
|
3632
|
+
error(`${path}.asset.providerId`, "invalid-provider", "Asset provider id is invalid");
|
|
3633
|
+
}
|
|
3634
|
+
if (definition.asset.width !== void 0 && (typeof definition.asset.width !== "number" || !Number.isInteger(definition.asset.width) || definition.asset.width <= 0)) {
|
|
3635
|
+
error(`${path}.asset.width`, "invalid-dimension", "Asset width must be a positive integer");
|
|
3636
|
+
}
|
|
3637
|
+
if (definition.asset.height !== void 0 && (typeof definition.asset.height !== "number" || !Number.isInteger(definition.asset.height) || definition.asset.height <= 0)) {
|
|
3638
|
+
error(`${path}.asset.height`, "invalid-dimension", "Asset height must be a positive integer");
|
|
3639
|
+
}
|
|
3640
|
+
}
|
|
3641
|
+
if (definition.decorative && isRecord(definition.labels) && Object.keys(definition.labels).length > 0) {
|
|
3642
|
+
warnings.push(`${path}: decorative tokens do not expose localized labels to assistive technology`);
|
|
3643
|
+
}
|
|
3644
|
+
}
|
|
3645
|
+
}
|
|
3646
|
+
const defaultProviderId = unknownProviderId(theme.defaultProvider);
|
|
3647
|
+
if (theme.defaultProvider !== void 0 && (!defaultProviderId || !PROVIDER_ID_PATTERN.test(defaultProviderId))) {
|
|
3648
|
+
error("defaultProvider", "invalid-provider", "Theme default provider reference is invalid");
|
|
3649
|
+
}
|
|
3650
|
+
if (theme.fallbacks !== void 0 && !Array.isArray(theme.fallbacks)) {
|
|
3651
|
+
error("fallbacks", "invalid-fallbacks", "Theme fallbacks must be an array");
|
|
3652
|
+
} else {
|
|
3653
|
+
for (const [index, fallback] of (theme.fallbacks ?? []).entries()) {
|
|
3654
|
+
const id = unknownProviderId(fallback);
|
|
3655
|
+
if (!id || !PROVIDER_ID_PATTERN.test(id)) {
|
|
3656
|
+
error(`fallbacks.${index}`, "invalid-provider", "Theme fallback provider reference is invalid");
|
|
3657
|
+
}
|
|
3658
|
+
}
|
|
3659
|
+
}
|
|
3660
|
+
if (theme.nativeFallback !== void 0 && typeof theme.nativeFallback !== "boolean") {
|
|
3661
|
+
error("nativeFallback", "invalid-native-fallback", "Theme nativeFallback must be boolean");
|
|
3662
|
+
}
|
|
3663
|
+
if (!Array.isArray(theme.inherits)) {
|
|
3664
|
+
error("inherits", "invalid-inherits", "Theme inherits must be an array");
|
|
3665
|
+
} else {
|
|
3666
|
+
const seen = /* @__PURE__ */ new Set();
|
|
3667
|
+
for (const [index, inheritedTheme] of theme.inherits.entries()) {
|
|
3668
|
+
if (typeof inheritedTheme !== "string" || !PROVIDER_ID_PATTERN.test(inheritedTheme)) {
|
|
3669
|
+
error(`inherits.${index}`, "invalid-theme-id", "Inherited theme id is invalid");
|
|
3670
|
+
} else if (seen.has(inheritedTheme)) {
|
|
3671
|
+
error(`inherits.${index}`, "duplicate-theme-id", "Inherited theme ids must be unique");
|
|
3672
|
+
}
|
|
3673
|
+
if (typeof inheritedTheme === "string") seen.add(inheritedTheme);
|
|
3674
|
+
}
|
|
3675
|
+
}
|
|
3676
|
+
return {
|
|
3677
|
+
valid: issues.length === 0,
|
|
3678
|
+
errors: issues.map((issue) => `${issue.path}: ${issue.message}`),
|
|
3679
|
+
warnings,
|
|
3680
|
+
issues
|
|
3681
|
+
};
|
|
3682
|
+
}
|
|
3683
|
+
function assertValidTheme(theme) {
|
|
3684
|
+
const result = validateEmojiTheme(theme);
|
|
3685
|
+
if (!result.valid) throw new Error(result.errors.join("; "));
|
|
3686
|
+
return theme;
|
|
3687
|
+
}
|
|
3688
|
+
function defineEmojiTheme(tokens, options = {}) {
|
|
3689
|
+
const parents = options.extends ? Array.isArray(options.extends) ? options.extends : [options.extends] : [];
|
|
3690
|
+
for (const parent of parents) assertValidTheme(parent);
|
|
3691
|
+
const inheritedTokens = Object.assign(
|
|
3692
|
+
{},
|
|
3693
|
+
...parents.map((theme) => theme.tokens)
|
|
3694
|
+
);
|
|
3695
|
+
const normalizedTokens = Object.fromEntries(
|
|
3696
|
+
Object.entries({ ...inheritedTokens, ...tokens }).map(([token, definition]) => [
|
|
3697
|
+
token,
|
|
3698
|
+
normalizeDefinition(definition)
|
|
3699
|
+
])
|
|
3700
|
+
);
|
|
3701
|
+
const lastParent = parents[parents.length - 1];
|
|
3702
|
+
return assertValidTheme({
|
|
3703
|
+
schemaVersion: EMOJI_THEME_SCHEMA_VERSION,
|
|
3704
|
+
id: options.id ?? "default",
|
|
3705
|
+
version: options.version ?? "1.0.0",
|
|
3706
|
+
tokens: normalizedTokens,
|
|
3707
|
+
defaultProvider: options.defaultProvider ?? lastParent?.defaultProvider,
|
|
3708
|
+
fallbacks: options.fallbacks ?? lastParent?.fallbacks,
|
|
3709
|
+
nativeFallback: options.nativeFallback ?? lastParent?.nativeFallback,
|
|
3710
|
+
inherits: [.../* @__PURE__ */ new Set([
|
|
3711
|
+
...options.inherits ?? [],
|
|
3712
|
+
...parents.flatMap((theme) => [...theme.inherits, theme.id])
|
|
3713
|
+
])]
|
|
3714
|
+
});
|
|
3715
|
+
}
|
|
3716
|
+
function mergeEmojiThemes(...themes) {
|
|
3717
|
+
if (themes.length === 0) throw new Error("mergeEmojiThemes requires at least one theme");
|
|
3718
|
+
for (const theme of themes) assertValidTheme(theme);
|
|
3719
|
+
const overlay = themes[themes.length - 1];
|
|
3720
|
+
const tokens = Object.assign({}, ...themes.map((theme) => theme.tokens));
|
|
3721
|
+
return assertValidTheme({
|
|
3722
|
+
...overlay,
|
|
3723
|
+
tokens,
|
|
3724
|
+
inherits: [...new Set(themes.flatMap((theme, index) => [
|
|
3725
|
+
...theme.inherits,
|
|
3726
|
+
...index < themes.length - 1 ? [theme.id] : []
|
|
3727
|
+
]))]
|
|
3728
|
+
});
|
|
3729
|
+
}
|
|
3730
|
+
function getEmojiTokenDefinition(theme, token) {
|
|
3731
|
+
return theme.tokens[token] ?? null;
|
|
3732
|
+
}
|
|
3733
|
+
function getEmojiTokenLabel(definition, locale) {
|
|
3734
|
+
if (!locale) return definition.label;
|
|
3735
|
+
const labels = Object.entries(definition.labels ?? {});
|
|
3736
|
+
const normalizedLocale = locale.toLowerCase();
|
|
3737
|
+
const language = normalizedLocale.split("-")[0];
|
|
3738
|
+
return labels.find(([key]) => key.toLowerCase() === normalizedLocale)?.[1] ?? labels.find(([key]) => key.toLowerCase() === language)?.[1] ?? definition.label;
|
|
3739
|
+
}
|
|
3740
|
+
function resolveThemeProvider(ref, providers2) {
|
|
3741
|
+
if (typeof ref !== "string") return ref;
|
|
3742
|
+
return providers2?.[ref] ?? ref;
|
|
3743
|
+
}
|
|
3744
|
+
function isSemanticTokenProvider(provider) {
|
|
3745
|
+
return Boolean(provider && "resolveToken" in provider && typeof provider.resolveToken === "function");
|
|
3746
|
+
}
|
|
3747
|
+
function includesNativeProvider(refs) {
|
|
3748
|
+
return refs.some((ref) => providerId2(ref) === publicProviders.native.id);
|
|
3749
|
+
}
|
|
3750
|
+
function resolvedCustomAsset(theme, provider, asset) {
|
|
3751
|
+
return {
|
|
3752
|
+
providerId: asset.providerId ?? provider?.id ?? `theme-${theme.id}`,
|
|
3753
|
+
providerVersion: asset.providerVersion ?? provider?.version ?? theme.version,
|
|
3754
|
+
url: asset.url,
|
|
3755
|
+
format: asset.format,
|
|
3756
|
+
local: asset.local ?? !/^https?:\/\//i.test(asset.url),
|
|
3757
|
+
width: asset.width,
|
|
3758
|
+
height: asset.height,
|
|
3759
|
+
checksum: asset.checksum,
|
|
3760
|
+
license: asset.license ?? provider?.license
|
|
3761
|
+
};
|
|
3762
|
+
}
|
|
3763
|
+
async function resolveEmojiToken(token, theme, options = {}) {
|
|
3764
|
+
const definition = theme.tokens[token];
|
|
3765
|
+
if (!definition) throw new Error(`Unknown emoji token: ${token}`);
|
|
3766
|
+
const label = getEmojiTokenLabel(definition, options.locale);
|
|
3767
|
+
const providerRef = options.provider ?? definition.provider ?? theme.defaultProvider ?? publicProviders.twemoji;
|
|
3768
|
+
const resolvedProviderRef = resolveThemeProvider(providerRef, options.providers);
|
|
3769
|
+
const provider = typeof resolvedProviderRef === "string" ? resolveProvider(resolvedProviderRef) : resolvedProviderRef;
|
|
3770
|
+
if (definition.asset && typeof definition.asset === "object") {
|
|
3771
|
+
return {
|
|
3772
|
+
token,
|
|
3773
|
+
themeId: theme.id,
|
|
3774
|
+
themeVersion: theme.version,
|
|
3775
|
+
emoji: definition.emoji,
|
|
3776
|
+
label,
|
|
3777
|
+
decorative: definition.decorative,
|
|
3778
|
+
locale: options.locale,
|
|
3779
|
+
asset: resolvedCustomAsset(theme, provider ?? void 0, definition.asset),
|
|
3780
|
+
emojiResolution: null,
|
|
3781
|
+
source: "custom-asset"
|
|
3782
|
+
};
|
|
3783
|
+
}
|
|
3784
|
+
const semanticProvider = provider ?? void 0;
|
|
3785
|
+
if (isSemanticTokenProvider(semanticProvider)) {
|
|
3786
|
+
const assetId = definition.asset ?? token;
|
|
3787
|
+
const asset = await semanticProvider.resolveToken(assetId, { token, definition, theme });
|
|
3788
|
+
if (asset) {
|
|
3789
|
+
return {
|
|
3790
|
+
token,
|
|
3791
|
+
themeId: theme.id,
|
|
3792
|
+
themeVersion: theme.version,
|
|
3793
|
+
emoji: definition.emoji,
|
|
3794
|
+
label,
|
|
3795
|
+
decorative: definition.decorative,
|
|
3796
|
+
locale: options.locale,
|
|
3797
|
+
asset,
|
|
3798
|
+
emojiResolution: null,
|
|
3799
|
+
source: "semantic-provider"
|
|
3800
|
+
};
|
|
3801
|
+
}
|
|
3802
|
+
}
|
|
3803
|
+
const requestedFallbacks = options.fallbacks ?? theme.fallbacks ?? [];
|
|
3804
|
+
const nativeFallback = options.nativeFallback ?? theme.nativeFallback ?? true;
|
|
3805
|
+
const configuredFallbacks = includesNativeProvider(requestedFallbacks) || !nativeFallback ? requestedFallbacks : [...requestedFallbacks, publicProviders.native];
|
|
3806
|
+
const resolutionOptions = {
|
|
3807
|
+
provider: resolvedProviderRef,
|
|
3808
|
+
fallbacks: configuredFallbacks.map((fallback) => resolveThemeProvider(fallback, options.providers))
|
|
3809
|
+
};
|
|
3810
|
+
const emojiResolution = await resolveEmoji(definition.emoji, resolutionOptions);
|
|
3811
|
+
return {
|
|
3812
|
+
token,
|
|
3813
|
+
themeId: theme.id,
|
|
3814
|
+
themeVersion: theme.version,
|
|
3815
|
+
emoji: definition.emoji,
|
|
3816
|
+
label,
|
|
3817
|
+
decorative: definition.decorative,
|
|
3818
|
+
locale: options.locale,
|
|
3819
|
+
asset: emojiResolution.selected,
|
|
3820
|
+
emojiResolution,
|
|
3821
|
+
source: emojiResolution.selected ? "emoji-provider" : emojiResolution.nativeFallback ? "native" : "unresolved"
|
|
3822
|
+
};
|
|
3823
|
+
}
|
|
3824
|
+
function createSemanticTokenProvider(options) {
|
|
3825
|
+
if (!PROVIDER_ID_PATTERN.test(options.id)) throw new Error(`Invalid semantic provider id: ${options.id}`);
|
|
3826
|
+
if (!THEME_VERSION_PATTERN.test(options.version)) throw new Error(`Invalid semantic provider version: ${options.version}`);
|
|
3827
|
+
const fallbackFormat = options.format ?? "svg";
|
|
3828
|
+
const assets = /* @__PURE__ */ new Map();
|
|
3829
|
+
for (const [assetId, asset] of Object.entries(options.assets)) {
|
|
3830
|
+
if (!EMOJI_TOKEN_NAME_PATTERN.test(assetId)) throw new Error(`Invalid semantic asset id: ${assetId}`);
|
|
3831
|
+
const normalized = typeof asset === "string" ? { url: asset, format: fallbackFormat, local: options.local } : { ...asset };
|
|
3832
|
+
if (!isSafeAssetUrl(normalized.url)) throw new Error(`Unsafe semantic asset URL: ${assetId}`);
|
|
3833
|
+
if (!["png", "svg", "webp", "avif"].includes(normalized.format)) {
|
|
3834
|
+
throw new Error(`Invalid semantic asset format: ${assetId}`);
|
|
3835
|
+
}
|
|
3836
|
+
if (normalized.checksum && !/^[a-f0-9]{64}$/i.test(normalized.checksum)) {
|
|
3837
|
+
throw new Error(`Invalid semantic asset checksum: ${assetId}`);
|
|
3838
|
+
}
|
|
3839
|
+
assets.set(assetId, normalized);
|
|
3840
|
+
}
|
|
3841
|
+
const formats = [.../* @__PURE__ */ new Set([
|
|
3842
|
+
...[...assets.values()].map((asset) => asset.format),
|
|
3843
|
+
...options.fallback?.formats ?? []
|
|
3844
|
+
])];
|
|
3845
|
+
if (formats.length === 0) throw new Error("Semantic providers require at least one asset format");
|
|
3846
|
+
const provider = {
|
|
3847
|
+
id: options.id,
|
|
3848
|
+
label: options.label,
|
|
3849
|
+
version: options.version,
|
|
3850
|
+
visibility: options.visibility ?? "custom",
|
|
3851
|
+
formats,
|
|
3852
|
+
local: options.local ?? [...assets.values()].every((asset) => asset.local ?? !/^https?:\/\//i.test(asset.url)),
|
|
3853
|
+
source: options.source,
|
|
3854
|
+
license: options.license,
|
|
3855
|
+
supportsUnknownEmoji: options.fallback?.supportsUnknownEmoji,
|
|
3856
|
+
getUrl(data, emoji) {
|
|
3857
|
+
return options.fallback?.getUrl?.(data, emoji) ?? null;
|
|
3858
|
+
},
|
|
3859
|
+
async resolve(emoji) {
|
|
3860
|
+
if (options.fallback?.resolve) return await options.fallback.resolve(emoji);
|
|
3861
|
+
const url = options.fallback?.getUrl?.(emoji.data, emoji.normalized);
|
|
3862
|
+
return url ? {
|
|
3863
|
+
providerId: options.fallback?.id ?? options.id,
|
|
3864
|
+
providerVersion: options.fallback?.version ?? options.version,
|
|
3865
|
+
url,
|
|
3866
|
+
format: options.fallback?.formats?.[0] ?? fallbackFormat,
|
|
3867
|
+
local: options.fallback?.local ?? false,
|
|
3868
|
+
license: options.fallback?.license
|
|
3869
|
+
} : null;
|
|
3870
|
+
},
|
|
3871
|
+
resolveToken(assetId) {
|
|
3872
|
+
const asset = assets.get(assetId);
|
|
3873
|
+
return asset ? resolvedCustomAsset(
|
|
3874
|
+
{ id: options.id, version: options.version },
|
|
3875
|
+
provider,
|
|
3876
|
+
asset
|
|
3877
|
+
) : null;
|
|
3878
|
+
}
|
|
3879
|
+
};
|
|
3880
|
+
return provider;
|
|
3881
|
+
}
|
|
3882
|
+
function serializableProvider(ref) {
|
|
3883
|
+
return providerId2(ref);
|
|
3884
|
+
}
|
|
3885
|
+
function serializableTheme(theme) {
|
|
3886
|
+
return {
|
|
3887
|
+
schemaVersion: theme.schemaVersion,
|
|
3888
|
+
id: theme.id,
|
|
3889
|
+
version: theme.version,
|
|
3890
|
+
...theme.defaultProvider ? { defaultProvider: serializableProvider(theme.defaultProvider) } : {},
|
|
3891
|
+
...theme.fallbacks ? { fallbacks: theme.fallbacks.map((fallback) => serializableProvider(fallback)) } : {},
|
|
3892
|
+
...theme.nativeFallback !== void 0 ? { nativeFallback: theme.nativeFallback } : {},
|
|
3893
|
+
...theme.inherits.length > 0 ? { inherits: [...theme.inherits] } : {},
|
|
3894
|
+
tokens: Object.fromEntries(Object.entries(theme.tokens).map(([token, definition]) => [token, {
|
|
3895
|
+
...definition,
|
|
3896
|
+
...definition.provider ? { provider: serializableProvider(definition.provider) } : {}
|
|
3897
|
+
}]))
|
|
3898
|
+
};
|
|
3899
|
+
}
|
|
3900
|
+
function serializeEmojiTheme(theme, options = {}) {
|
|
3901
|
+
assertValidTheme(theme);
|
|
3902
|
+
const space = options.space ?? 2;
|
|
3903
|
+
const document = serializableTheme(theme);
|
|
3904
|
+
if ((options.format ?? "json") === "json") return `${JSON.stringify(document, null, space)}
|
|
3905
|
+
`;
|
|
3906
|
+
const variableName = options.variableName ?? "emojiTheme";
|
|
3907
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(variableName)) throw new Error("Invalid TypeScript variable name");
|
|
3908
|
+
const { tokens, schemaVersion: _schemaVersion, ...themeOptions } = document;
|
|
3909
|
+
return [
|
|
3910
|
+
'import { defineEmojiTheme } from "emoji-styles";',
|
|
3911
|
+
"",
|
|
3912
|
+
`export const ${variableName} = defineEmojiTheme(${JSON.stringify(tokens, null, space)}, ${JSON.stringify(themeOptions, null, space)});`,
|
|
3913
|
+
""
|
|
3914
|
+
].join("\n");
|
|
3915
|
+
}
|
|
3916
|
+
function migrateEmojiTheme(input) {
|
|
3917
|
+
const value = typeof input === "string" ? JSON.parse(input) : input;
|
|
3918
|
+
if (!isRecord(value)) throw new Error("Emoji theme must be an object or JSON object string");
|
|
3919
|
+
const document = "tokens" in value ? value : { tokens: value };
|
|
3920
|
+
if (!isRecord(document.tokens)) throw new Error("Emoji theme tokens must be an object");
|
|
3921
|
+
const schemaVersion = document.schemaVersion ?? 0;
|
|
3922
|
+
if (schemaVersion !== 0 && schemaVersion !== EMOJI_THEME_SCHEMA_VERSION) {
|
|
3923
|
+
throw new Error(`Unsupported emoji theme schemaVersion: ${String(schemaVersion)}`);
|
|
3924
|
+
}
|
|
3925
|
+
return defineEmojiTheme(document.tokens, {
|
|
3926
|
+
id: typeof document.id === "string" ? document.id : "migrated",
|
|
3927
|
+
version: typeof document.version === "string" ? document.version : "1.0.0",
|
|
3928
|
+
defaultProvider: typeof document.defaultProvider === "string" ? document.defaultProvider : void 0,
|
|
3929
|
+
fallbacks: Array.isArray(document.fallbacks) ? document.fallbacks.filter((fallback) => typeof fallback === "string") : void 0,
|
|
3930
|
+
nativeFallback: typeof document.nativeFallback === "boolean" ? document.nativeFallback : void 0,
|
|
3931
|
+
inherits: Array.isArray(document.inherits) ? document.inherits.filter((themeId) => typeof themeId === "string") : void 0
|
|
3932
|
+
});
|
|
3933
|
+
}
|
|
3934
|
+
var parseEmojiTheme = migrateEmojiTheme;
|
|
3935
|
+
export {
|
|
3936
|
+
EMOJI_THEME_SCHEMA_VERSION,
|
|
3937
|
+
EMOJI_TOKEN_NAME_PATTERN,
|
|
3938
|
+
SIZE_MAP,
|
|
3939
|
+
adaptLegacyProvider,
|
|
3940
|
+
createCdnProvider,
|
|
3941
|
+
createCompositeProvider,
|
|
3942
|
+
createGeneratedProvider,
|
|
3943
|
+
createManifestProvider,
|
|
3944
|
+
createMappedProvider,
|
|
3945
|
+
createNormalizedEmoji,
|
|
3946
|
+
createSemanticTokenProvider,
|
|
3947
|
+
defineEmojiConfig,
|
|
3948
|
+
defineEmojiTheme,
|
|
3949
|
+
emojiData6 as emojiData,
|
|
3950
|
+
emojiDatasetInfo3 as emojiDatasetInfo,
|
|
3951
|
+
experimentalProviders,
|
|
3952
|
+
getAvailableEmojis,
|
|
3953
|
+
getEmojiData,
|
|
3954
|
+
getEmojiMetadata,
|
|
3955
|
+
getEmojiTokenDefinition,
|
|
3956
|
+
getEmojiTokenLabel,
|
|
3957
|
+
getEmojiUrl,
|
|
3958
|
+
getFallbackChain,
|
|
3959
|
+
getProviderCoverage,
|
|
3960
|
+
getTwemojiAssetId,
|
|
3961
|
+
hasEmoji,
|
|
3962
|
+
isEmoji,
|
|
3963
|
+
isRGIEmoji2 as isRGIEmoji,
|
|
3964
|
+
isV2Provider,
|
|
3965
|
+
mergeEmojiThemes,
|
|
3966
|
+
migrateEmojiTheme,
|
|
3967
|
+
normalizeEmoji6 as normalizeEmoji,
|
|
3968
|
+
parseEmojiTheme,
|
|
3969
|
+
providers,
|
|
3970
|
+
publicProviders,
|
|
3971
|
+
resolveEmoji,
|
|
3972
|
+
resolveEmojiToken,
|
|
3973
|
+
resolveProvider,
|
|
3974
|
+
serializeEmojiTheme,
|
|
3975
|
+
toEmojiCodepointSequence3 as toEmojiCodepointSequence,
|
|
3976
|
+
tokenizeEmojiText,
|
|
3977
|
+
validateEmojiTheme,
|
|
3978
|
+
validateProvider,
|
|
3979
|
+
validateProviderManifest
|
|
3980
|
+
};
|