summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2019-04-12 10:05:04 -0300
committerFelipe Artur <felipefac@gmail.com>2019-04-12 10:05:04 -0300
commitd12a63cf566716a16465701d5a58408a801f4f6f (patch)
tree53cff9c9b22800b1c3d01b3fc11163855dc1f9fd
parent6643f9ad39079e7220b414a72e01974edea16e37 (diff)
parent6e3e2cb036e9f3cbf9589152e8329e42d86c8298 (diff)
downloadgitlab-ce-ce-issue_6538.tar.gz
Merge branch 'master' into ce-issue_6538ce-issue_6538
-rw-r--r--.gitlab-ci.yml11
-rw-r--r--.gitlab/CODEOWNERS.disabled4
-rw-r--r--.rubocop_todo.yml1
-rw-r--r--CHANGELOG.md24
-rw-r--r--GITLAB_WORKHORSE_VERSION2
-rw-r--r--Gemfile5
-rw-r--r--Gemfile.lock8
-rw-r--r--app/assets/images/emoji/100.png (renamed from public/-/emojis/1/100.png)bin793 -> 793 bytes
-rw-r--r--app/assets/images/emoji/1234.png (renamed from public/-/emojis/1/1234.png)bin676 -> 676 bytes
-rw-r--r--app/assets/images/emoji/1F627.png (renamed from public/-/emojis/1/1F627.png)bin821 -> 821 bytes
-rw-r--r--app/assets/images/emoji/8ball.png (renamed from public/-/emojis/1/8ball.png)bin810 -> 810 bytes
-rw-r--r--app/assets/images/emoji/a.png (renamed from public/-/emojis/1/a.png)bin469 -> 469 bytes
-rw-r--r--app/assets/images/emoji/ab.png (renamed from public/-/emojis/1/ab.png)bin505 -> 505 bytes
-rw-r--r--app/assets/images/emoji/abc.png (renamed from public/-/emojis/1/abc.png)bin646 -> 646 bytes
-rw-r--r--app/assets/images/emoji/abcd.png (renamed from public/-/emojis/1/abcd.png)bin670 -> 670 bytes
-rw-r--r--app/assets/images/emoji/accept.png (renamed from public/-/emojis/1/accept.png)bin491 -> 491 bytes
-rw-r--r--app/assets/images/emoji/aerial_tramway.png (renamed from public/-/emojis/1/aerial_tramway.png)bin759 -> 759 bytes
-rw-r--r--app/assets/images/emoji/airplane.png (renamed from public/-/emojis/1/airplane.png)bin1152 -> 1152 bytes
-rw-r--r--app/assets/images/emoji/airplane_arriving.png (renamed from public/-/emojis/1/airplane_arriving.png)bin1101 -> 1101 bytes
-rw-r--r--app/assets/images/emoji/airplane_departure.png (renamed from public/-/emojis/1/airplane_departure.png)bin1111 -> 1111 bytes
-rw-r--r--app/assets/images/emoji/airplane_small.png (renamed from public/-/emojis/1/airplane_small.png)bin1229 -> 1229 bytes
-rw-r--r--app/assets/images/emoji/alarm_clock.png (renamed from public/-/emojis/1/alarm_clock.png)bin1044 -> 1044 bytes
-rw-r--r--app/assets/images/emoji/alembic.png (renamed from public/-/emojis/1/alembic.png)bin953 -> 953 bytes
-rw-r--r--app/assets/images/emoji/alien.png (renamed from public/-/emojis/1/alien.png)bin839 -> 839 bytes
-rw-r--r--app/assets/images/emoji/ambulance.png (renamed from public/-/emojis/1/ambulance.png)bin1238 -> 1238 bytes
-rw-r--r--app/assets/images/emoji/amphora.png (renamed from public/-/emojis/1/amphora.png)bin1044 -> 1044 bytes
-rw-r--r--app/assets/images/emoji/anchor.png (renamed from public/-/emojis/1/anchor.png)bin779 -> 779 bytes
-rw-r--r--app/assets/images/emoji/angel.png (renamed from public/-/emojis/1/angel.png)bin2077 -> 2077 bytes
-rw-r--r--app/assets/images/emoji/angel_tone1.png (renamed from public/-/emojis/1/angel_tone1.png)bin2088 -> 2088 bytes
-rw-r--r--app/assets/images/emoji/angel_tone2.png (renamed from public/-/emojis/1/angel_tone2.png)bin2075 -> 2075 bytes
-rw-r--r--app/assets/images/emoji/angel_tone3.png (renamed from public/-/emojis/1/angel_tone3.png)bin2078 -> 2078 bytes
-rw-r--r--app/assets/images/emoji/angel_tone4.png (renamed from public/-/emojis/1/angel_tone4.png)bin2076 -> 2076 bytes
-rw-r--r--app/assets/images/emoji/angel_tone5.png (renamed from public/-/emojis/1/angel_tone5.png)bin2078 -> 2078 bytes
-rw-r--r--app/assets/images/emoji/anger.png (renamed from public/-/emojis/1/anger.png)bin594 -> 594 bytes
-rw-r--r--app/assets/images/emoji/anger_right.png (renamed from public/-/emojis/1/anger_right.png)bin551 -> 551 bytes
-rw-r--r--app/assets/images/emoji/angry.png (renamed from public/-/emojis/1/angry.png)bin845 -> 845 bytes
-rw-r--r--app/assets/images/emoji/ant.png (renamed from public/-/emojis/1/ant.png)bin1412 -> 1412 bytes
-rw-r--r--app/assets/images/emoji/apple.png (renamed from public/-/emojis/1/apple.png)bin655 -> 655 bytes
-rw-r--r--app/assets/images/emoji/aquarius.png (renamed from public/-/emojis/1/aquarius.png)bin648 -> 648 bytes
-rw-r--r--app/assets/images/emoji/aries.png (renamed from public/-/emojis/1/aries.png)bin711 -> 711 bytes
-rw-r--r--app/assets/images/emoji/arrow_backward.png (renamed from public/-/emojis/1/arrow_backward.png)bin429 -> 429 bytes
-rw-r--r--app/assets/images/emoji/arrow_double_down.png (renamed from public/-/emojis/1/arrow_double_down.png)bin543 -> 543 bytes
-rw-r--r--app/assets/images/emoji/arrow_double_up.png (renamed from public/-/emojis/1/arrow_double_up.png)bin535 -> 535 bytes
-rw-r--r--app/assets/images/emoji/arrow_down.png (renamed from public/-/emojis/1/arrow_down.png)bin512 -> 512 bytes
-rw-r--r--app/assets/images/emoji/arrow_down_small.png (renamed from public/-/emojis/1/arrow_down_small.png)bin455 -> 455 bytes
-rw-r--r--app/assets/images/emoji/arrow_forward.png (renamed from public/-/emojis/1/arrow_forward.png)bin429 -> 429 bytes
-rw-r--r--app/assets/images/emoji/arrow_heading_down.png (renamed from public/-/emojis/1/arrow_heading_down.png)bin563 -> 563 bytes
-rw-r--r--app/assets/images/emoji/arrow_heading_up.png (renamed from public/-/emojis/1/arrow_heading_up.png)bin559 -> 559 bytes
-rw-r--r--app/assets/images/emoji/arrow_left.png (renamed from public/-/emojis/1/arrow_left.png)bin471 -> 471 bytes
-rw-r--r--app/assets/images/emoji/arrow_lower_left.png (renamed from public/-/emojis/1/arrow_lower_left.png)bin520 -> 520 bytes
-rw-r--r--app/assets/images/emoji/arrow_lower_right.png (renamed from public/-/emojis/1/arrow_lower_right.png)bin526 -> 526 bytes
-rw-r--r--app/assets/images/emoji/arrow_right.png (renamed from public/-/emojis/1/arrow_right.png)bin468 -> 468 bytes
-rw-r--r--app/assets/images/emoji/arrow_right_hook.png (renamed from public/-/emojis/1/arrow_right_hook.png)bin644 -> 644 bytes
-rw-r--r--app/assets/images/emoji/arrow_up.png (renamed from public/-/emojis/1/arrow_up.png)bin507 -> 507 bytes
-rw-r--r--app/assets/images/emoji/arrow_up_down.png (renamed from public/-/emojis/1/arrow_up_down.png)bin474 -> 474 bytes
-rw-r--r--app/assets/images/emoji/arrow_up_small.png (renamed from public/-/emojis/1/arrow_up_small.png)bin454 -> 454 bytes
-rw-r--r--app/assets/images/emoji/arrow_upper_left.png (renamed from public/-/emojis/1/arrow_upper_left.png)bin521 -> 521 bytes
-rw-r--r--app/assets/images/emoji/arrow_upper_right.png (renamed from public/-/emojis/1/arrow_upper_right.png)bin524 -> 524 bytes
-rw-r--r--app/assets/images/emoji/arrows_clockwise.png (renamed from public/-/emojis/1/arrows_clockwise.png)bin519 -> 519 bytes
-rw-r--r--app/assets/images/emoji/arrows_counterclockwise.png (renamed from public/-/emojis/1/arrows_counterclockwise.png)bin693 -> 693 bytes
-rw-r--r--app/assets/images/emoji/art.png (renamed from public/-/emojis/1/art.png)bin1455 -> 1455 bytes
-rw-r--r--app/assets/images/emoji/articulated_lorry.png (renamed from public/-/emojis/1/articulated_lorry.png)bin1710 -> 1710 bytes
-rw-r--r--app/assets/images/emoji/asterisk.png (renamed from public/-/emojis/1/asterisk.png)bin627 -> 627 bytes
-rw-r--r--app/assets/images/emoji/astonished.png (renamed from public/-/emojis/1/astonished.png)bin862 -> 862 bytes
-rw-r--r--app/assets/images/emoji/athletic_shoe.png (renamed from public/-/emojis/1/athletic_shoe.png)bin1595 -> 1595 bytes
-rw-r--r--app/assets/images/emoji/atm.png (renamed from public/-/emojis/1/atm.png)bin1397 -> 1397 bytes
-rw-r--r--app/assets/images/emoji/atom.png (renamed from public/-/emojis/1/atom.png)bin912 -> 912 bytes
-rw-r--r--app/assets/images/emoji/avocado.png (renamed from public/-/emojis/1/avocado.png)bin1520 -> 1520 bytes
-rw-r--r--app/assets/images/emoji/b.png (renamed from public/-/emojis/1/b.png)bin391 -> 391 bytes
-rw-r--r--app/assets/images/emoji/baby.png (renamed from public/-/emojis/1/baby.png)bin1380 -> 1380 bytes
-rw-r--r--app/assets/images/emoji/baby_bottle.png (renamed from public/-/emojis/1/baby_bottle.png)bin818 -> 818 bytes
-rw-r--r--app/assets/images/emoji/baby_chick.png (renamed from public/-/emojis/1/baby_chick.png)bin1181 -> 1181 bytes
-rw-r--r--app/assets/images/emoji/baby_symbol.png (renamed from public/-/emojis/1/baby_symbol.png)bin665 -> 665 bytes
-rw-r--r--app/assets/images/emoji/baby_tone1.png (renamed from public/-/emojis/1/baby_tone1.png)bin1392 -> 1392 bytes
-rw-r--r--app/assets/images/emoji/baby_tone2.png (renamed from public/-/emojis/1/baby_tone2.png)bin1392 -> 1392 bytes
-rw-r--r--app/assets/images/emoji/baby_tone3.png (renamed from public/-/emojis/1/baby_tone3.png)bin1403 -> 1403 bytes
-rw-r--r--app/assets/images/emoji/baby_tone4.png (renamed from public/-/emojis/1/baby_tone4.png)bin1413 -> 1413 bytes
-rw-r--r--app/assets/images/emoji/baby_tone5.png (renamed from public/-/emojis/1/baby_tone5.png)bin1405 -> 1405 bytes
-rw-r--r--app/assets/images/emoji/back.png (renamed from public/-/emojis/1/back.png)bin562 -> 562 bytes
-rw-r--r--app/assets/images/emoji/bacon.png (renamed from public/-/emojis/1/bacon.png)bin2148 -> 2148 bytes
-rw-r--r--app/assets/images/emoji/badminton.png (renamed from public/-/emojis/1/badminton.png)bin1253 -> 1253 bytes
-rw-r--r--app/assets/images/emoji/baggage_claim.png (renamed from public/-/emojis/1/baggage_claim.png)bin490 -> 490 bytes
-rw-r--r--app/assets/images/emoji/balloon.png (renamed from public/-/emojis/1/balloon.png)bin501 -> 501 bytes
-rw-r--r--app/assets/images/emoji/ballot_box.png (renamed from public/-/emojis/1/ballot_box.png)bin1355 -> 1355 bytes
-rw-r--r--app/assets/images/emoji/ballot_box_with_check.png (renamed from public/-/emojis/1/ballot_box_with_check.png)bin639 -> 639 bytes
-rw-r--r--app/assets/images/emoji/bamboo.png (renamed from public/-/emojis/1/bamboo.png)bin1946 -> 1946 bytes
-rw-r--r--app/assets/images/emoji/banana.png (renamed from public/-/emojis/1/banana.png)bin1157 -> 1157 bytes
-rw-r--r--app/assets/images/emoji/bangbang.png (renamed from public/-/emojis/1/bangbang.png)bin390 -> 390 bytes
-rw-r--r--app/assets/images/emoji/bank.png (renamed from public/-/emojis/1/bank.png)bin1358 -> 1358 bytes
-rw-r--r--app/assets/images/emoji/bar_chart.png (renamed from public/-/emojis/1/bar_chart.png)bin408 -> 408 bytes
-rw-r--r--app/assets/images/emoji/barber.png (renamed from public/-/emojis/1/barber.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/baseball.png (renamed from public/-/emojis/1/baseball.png)bin1185 -> 1185 bytes
-rw-r--r--app/assets/images/emoji/basketball.png (renamed from public/-/emojis/1/basketball.png)bin1546 -> 1546 bytes
-rw-r--r--app/assets/images/emoji/basketball_player.png (renamed from public/-/emojis/1/basketball_player.png)bin1491 -> 1491 bytes
-rw-r--r--app/assets/images/emoji/basketball_player_tone1.png (renamed from public/-/emojis/1/basketball_player_tone1.png)bin1492 -> 1492 bytes
-rw-r--r--app/assets/images/emoji/basketball_player_tone2.png (renamed from public/-/emojis/1/basketball_player_tone2.png)bin1493 -> 1493 bytes
-rw-r--r--app/assets/images/emoji/basketball_player_tone3.png (renamed from public/-/emojis/1/basketball_player_tone3.png)bin1492 -> 1492 bytes
-rw-r--r--app/assets/images/emoji/basketball_player_tone4.png (renamed from public/-/emojis/1/basketball_player_tone4.png)bin1491 -> 1491 bytes
-rw-r--r--app/assets/images/emoji/basketball_player_tone5.png (renamed from public/-/emojis/1/basketball_player_tone5.png)bin1474 -> 1474 bytes
-rw-r--r--app/assets/images/emoji/bat.png (renamed from public/-/emojis/1/bat.png)bin1190 -> 1190 bytes
-rw-r--r--app/assets/images/emoji/bath.png (renamed from public/-/emojis/1/bath.png)bin1238 -> 1238 bytes
-rw-r--r--app/assets/images/emoji/bath_tone1.png (renamed from public/-/emojis/1/bath_tone1.png)bin1235 -> 1235 bytes
-rw-r--r--app/assets/images/emoji/bath_tone2.png (renamed from public/-/emojis/1/bath_tone2.png)bin1231 -> 1231 bytes
-rw-r--r--app/assets/images/emoji/bath_tone3.png (renamed from public/-/emojis/1/bath_tone3.png)bin1236 -> 1236 bytes
-rw-r--r--app/assets/images/emoji/bath_tone4.png (renamed from public/-/emojis/1/bath_tone4.png)bin1252 -> 1252 bytes
-rw-r--r--app/assets/images/emoji/bath_tone5.png (renamed from public/-/emojis/1/bath_tone5.png)bin1239 -> 1239 bytes
-rw-r--r--app/assets/images/emoji/bathtub.png (renamed from public/-/emojis/1/bathtub.png)bin767 -> 767 bytes
-rw-r--r--app/assets/images/emoji/battery.png (renamed from public/-/emojis/1/battery.png)bin228 -> 228 bytes
-rw-r--r--app/assets/images/emoji/beach.png (renamed from public/-/emojis/1/beach.png)bin942 -> 942 bytes
-rw-r--r--app/assets/images/emoji/beach_umbrella.png (renamed from public/-/emojis/1/beach_umbrella.png)bin1486 -> 1486 bytes
-rw-r--r--app/assets/images/emoji/bear.png (renamed from public/-/emojis/1/bear.png)bin1023 -> 1023 bytes
-rw-r--r--app/assets/images/emoji/bed.png (renamed from public/-/emojis/1/bed.png)bin1572 -> 1572 bytes
-rw-r--r--app/assets/images/emoji/bee.png (renamed from public/-/emojis/1/bee.png)bin1378 -> 1378 bytes
-rw-r--r--app/assets/images/emoji/beer.png (renamed from public/-/emojis/1/beer.png)bin1338 -> 1338 bytes
-rw-r--r--app/assets/images/emoji/beers.png (renamed from public/-/emojis/1/beers.png)bin2100 -> 2100 bytes
-rw-r--r--app/assets/images/emoji/beetle.png (renamed from public/-/emojis/1/beetle.png)bin1288 -> 1288 bytes
-rw-r--r--app/assets/images/emoji/beginner.png (renamed from public/-/emojis/1/beginner.png)bin545 -> 545 bytes
-rw-r--r--app/assets/images/emoji/bell.png (renamed from public/-/emojis/1/bell.png)bin1496 -> 1496 bytes
-rw-r--r--app/assets/images/emoji/bellhop.png (renamed from public/-/emojis/1/bellhop.png)bin891 -> 891 bytes
-rw-r--r--app/assets/images/emoji/bento.png (renamed from public/-/emojis/1/bento.png)bin1127 -> 1127 bytes
-rw-r--r--app/assets/images/emoji/bicyclist.png (renamed from public/-/emojis/1/bicyclist.png)bin1911 -> 1911 bytes
-rw-r--r--app/assets/images/emoji/bicyclist_tone1.png (renamed from public/-/emojis/1/bicyclist_tone1.png)bin1860 -> 1860 bytes
-rw-r--r--app/assets/images/emoji/bicyclist_tone2.png (renamed from public/-/emojis/1/bicyclist_tone2.png)bin1866 -> 1866 bytes
-rw-r--r--app/assets/images/emoji/bicyclist_tone3.png (renamed from public/-/emojis/1/bicyclist_tone3.png)bin1851 -> 1851 bytes
-rw-r--r--app/assets/images/emoji/bicyclist_tone4.png (renamed from public/-/emojis/1/bicyclist_tone4.png)bin1852 -> 1852 bytes
-rw-r--r--app/assets/images/emoji/bicyclist_tone5.png (renamed from public/-/emojis/1/bicyclist_tone5.png)bin1840 -> 1840 bytes
-rw-r--r--app/assets/images/emoji/bike.png (renamed from public/-/emojis/1/bike.png)bin1505 -> 1505 bytes
-rw-r--r--app/assets/images/emoji/bikini.png (renamed from public/-/emojis/1/bikini.png)bin613 -> 613 bytes
-rw-r--r--app/assets/images/emoji/biohazard.png (renamed from public/-/emojis/1/biohazard.png)bin794 -> 794 bytes
-rw-r--r--app/assets/images/emoji/bird.png (renamed from public/-/emojis/1/bird.png)bin1068 -> 1068 bytes
-rw-r--r--app/assets/images/emoji/birthday.png (renamed from public/-/emojis/1/birthday.png)bin2219 -> 2219 bytes
-rw-r--r--app/assets/images/emoji/black_circle.png (renamed from public/-/emojis/1/black_circle.png)bin374 -> 374 bytes
-rw-r--r--app/assets/images/emoji/black_heart.png (renamed from public/-/emojis/1/black_heart.png)bin435 -> 435 bytes
-rw-r--r--app/assets/images/emoji/black_joker.png (renamed from public/-/emojis/1/black_joker.png)bin1091 -> 1091 bytes
-rw-r--r--app/assets/images/emoji/black_large_square.png (renamed from public/-/emojis/1/black_large_square.png)bin110 -> 110 bytes
-rw-r--r--app/assets/images/emoji/black_medium_small_square.png (renamed from public/-/emojis/1/black_medium_small_square.png)bin110 -> 110 bytes
-rw-r--r--app/assets/images/emoji/black_medium_square.png (renamed from public/-/emojis/1/black_medium_square.png)bin108 -> 108 bytes
-rw-r--r--app/assets/images/emoji/black_nib.png (renamed from public/-/emojis/1/black_nib.png)bin620 -> 620 bytes
-rw-r--r--app/assets/images/emoji/black_small_square.png (renamed from public/-/emojis/1/black_small_square.png)bin108 -> 108 bytes
-rw-r--r--app/assets/images/emoji/black_square_button.png (renamed from public/-/emojis/1/black_square_button.png)bin122 -> 122 bytes
-rw-r--r--app/assets/images/emoji/blossom.png (renamed from public/-/emojis/1/blossom.png)bin867 -> 867 bytes
-rw-r--r--app/assets/images/emoji/blowfish.png (renamed from public/-/emojis/1/blowfish.png)bin1620 -> 1620 bytes
-rw-r--r--app/assets/images/emoji/blue_book.png (renamed from public/-/emojis/1/blue_book.png)bin1347 -> 1347 bytes
-rw-r--r--app/assets/images/emoji/blue_car.png (renamed from public/-/emojis/1/blue_car.png)bin1275 -> 1275 bytes
-rw-r--r--app/assets/images/emoji/blue_heart.png (renamed from public/-/emojis/1/blue_heart.png)bin435 -> 435 bytes
-rw-r--r--app/assets/images/emoji/blush.png (renamed from public/-/emojis/1/blush.png)bin812 -> 812 bytes
-rw-r--r--app/assets/images/emoji/boar.png (renamed from public/-/emojis/1/boar.png)bin1366 -> 1366 bytes
-rw-r--r--app/assets/images/emoji/bomb.png (renamed from public/-/emojis/1/bomb.png)bin702 -> 702 bytes
-rw-r--r--app/assets/images/emoji/book.png (renamed from public/-/emojis/1/book.png)bin1716 -> 1716 bytes
-rw-r--r--app/assets/images/emoji/bookmark.png (renamed from public/-/emojis/1/bookmark.png)bin747 -> 747 bytes
-rw-r--r--app/assets/images/emoji/bookmark_tabs.png (renamed from public/-/emojis/1/bookmark_tabs.png)bin1395 -> 1395 bytes
-rw-r--r--app/assets/images/emoji/books.png (renamed from public/-/emojis/1/books.png)bin2474 -> 2474 bytes
-rw-r--r--app/assets/images/emoji/boom.png (renamed from public/-/emojis/1/boom.png)bin1110 -> 1110 bytes
-rw-r--r--app/assets/images/emoji/boot.png (renamed from public/-/emojis/1/boot.png)bin662 -> 662 bytes
-rw-r--r--app/assets/images/emoji/bouquet.png (renamed from public/-/emojis/1/bouquet.png)bin1662 -> 1662 bytes
-rw-r--r--app/assets/images/emoji/bow.png (renamed from public/-/emojis/1/bow.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/bow_and_arrow.png (renamed from public/-/emojis/1/bow_and_arrow.png)bin1402 -> 1402 bytes
-rw-r--r--app/assets/images/emoji/bow_tone1.png (renamed from public/-/emojis/1/bow_tone1.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/bow_tone2.png (renamed from public/-/emojis/1/bow_tone2.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/bow_tone3.png (renamed from public/-/emojis/1/bow_tone3.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/bow_tone4.png (renamed from public/-/emojis/1/bow_tone4.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/bow_tone5.png (renamed from public/-/emojis/1/bow_tone5.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/bowling.png (renamed from public/-/emojis/1/bowling.png)bin1426 -> 1426 bytes
-rw-r--r--app/assets/images/emoji/boxing_glove.png (renamed from public/-/emojis/1/boxing_glove.png)bin1575 -> 1575 bytes
-rw-r--r--app/assets/images/emoji/boy.png (renamed from public/-/emojis/1/boy.png)bin881 -> 881 bytes
-rw-r--r--app/assets/images/emoji/boy_tone1.png (renamed from public/-/emojis/1/boy_tone1.png)bin876 -> 876 bytes
-rw-r--r--app/assets/images/emoji/boy_tone2.png (renamed from public/-/emojis/1/boy_tone2.png)bin876 -> 876 bytes
-rw-r--r--app/assets/images/emoji/boy_tone3.png (renamed from public/-/emojis/1/boy_tone3.png)bin876 -> 876 bytes
-rw-r--r--app/assets/images/emoji/boy_tone4.png (renamed from public/-/emojis/1/boy_tone4.png)bin870 -> 870 bytes
-rw-r--r--app/assets/images/emoji/boy_tone5.png (renamed from public/-/emojis/1/boy_tone5.png)bin873 -> 873 bytes
-rw-r--r--app/assets/images/emoji/bread.png (renamed from public/-/emojis/1/bread.png)bin1419 -> 1419 bytes
-rw-r--r--app/assets/images/emoji/bride_with_veil.png (renamed from public/-/emojis/1/bride_with_veil.png)bin2452 -> 2452 bytes
-rw-r--r--app/assets/images/emoji/bride_with_veil_tone1.png (renamed from public/-/emojis/1/bride_with_veil_tone1.png)bin2464 -> 2464 bytes
-rw-r--r--app/assets/images/emoji/bride_with_veil_tone2.png (renamed from public/-/emojis/1/bride_with_veil_tone2.png)bin2457 -> 2457 bytes
-rw-r--r--app/assets/images/emoji/bride_with_veil_tone3.png (renamed from public/-/emojis/1/bride_with_veil_tone3.png)bin2463 -> 2463 bytes
-rw-r--r--app/assets/images/emoji/bride_with_veil_tone4.png (renamed from public/-/emojis/1/bride_with_veil_tone4.png)bin2463 -> 2463 bytes
-rw-r--r--app/assets/images/emoji/bride_with_veil_tone5.png (renamed from public/-/emojis/1/bride_with_veil_tone5.png)bin2462 -> 2462 bytes
-rw-r--r--app/assets/images/emoji/bridge_at_night.png (renamed from public/-/emojis/1/bridge_at_night.png)bin637 -> 637 bytes
-rw-r--r--app/assets/images/emoji/briefcase.png (renamed from public/-/emojis/1/briefcase.png)bin1275 -> 1275 bytes
-rw-r--r--app/assets/images/emoji/broken_heart.png (renamed from public/-/emojis/1/broken_heart.png)bin556 -> 556 bytes
-rw-r--r--app/assets/images/emoji/bug.png (renamed from public/-/emojis/1/bug.png)bin1599 -> 1599 bytes
-rw-r--r--app/assets/images/emoji/bulb.png (renamed from public/-/emojis/1/bulb.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/bullettrain_front.png (renamed from public/-/emojis/1/bullettrain_front.png)bin1450 -> 1450 bytes
-rw-r--r--app/assets/images/emoji/bullettrain_side.png (renamed from public/-/emojis/1/bullettrain_side.png)bin1538 -> 1538 bytes
-rw-r--r--app/assets/images/emoji/burrito.png (renamed from public/-/emojis/1/burrito.png)bin2938 -> 2938 bytes
-rw-r--r--app/assets/images/emoji/bus.png (renamed from public/-/emojis/1/bus.png)bin1086 -> 1086 bytes
-rw-r--r--app/assets/images/emoji/busstop.png (renamed from public/-/emojis/1/busstop.png)bin626 -> 626 bytes
-rw-r--r--app/assets/images/emoji/bust_in_silhouette.png (renamed from public/-/emojis/1/bust_in_silhouette.png)bin426 -> 426 bytes
-rw-r--r--app/assets/images/emoji/busts_in_silhouette.png (renamed from public/-/emojis/1/busts_in_silhouette.png)bin526 -> 526 bytes
-rw-r--r--app/assets/images/emoji/butterfly.png (renamed from public/-/emojis/1/butterfly.png)bin1981 -> 1981 bytes
-rw-r--r--app/assets/images/emoji/cactus.png (renamed from public/-/emojis/1/cactus.png)bin628 -> 628 bytes
-rw-r--r--app/assets/images/emoji/cake.png (renamed from public/-/emojis/1/cake.png)bin2266 -> 2266 bytes
-rw-r--r--app/assets/images/emoji/calendar.png (renamed from public/-/emojis/1/calendar.png)bin2077 -> 2077 bytes
-rw-r--r--app/assets/images/emoji/calendar_spiral.png (renamed from public/-/emojis/1/calendar_spiral.png)bin1491 -> 1491 bytes
-rw-r--r--app/assets/images/emoji/call_me.png (renamed from public/-/emojis/1/call_me.png)bin894 -> 894 bytes
-rw-r--r--app/assets/images/emoji/call_me_tone1.png (renamed from public/-/emojis/1/call_me_tone1.png)bin893 -> 893 bytes
-rw-r--r--app/assets/images/emoji/call_me_tone2.png (renamed from public/-/emojis/1/call_me_tone2.png)bin891 -> 891 bytes
-rw-r--r--app/assets/images/emoji/call_me_tone3.png (renamed from public/-/emojis/1/call_me_tone3.png)bin891 -> 891 bytes
-rw-r--r--app/assets/images/emoji/call_me_tone4.png (renamed from public/-/emojis/1/call_me_tone4.png)bin891 -> 891 bytes
-rw-r--r--app/assets/images/emoji/call_me_tone5.png (renamed from public/-/emojis/1/call_me_tone5.png)bin893 -> 893 bytes
-rw-r--r--app/assets/images/emoji/calling.png (renamed from public/-/emojis/1/calling.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/camel.png (renamed from public/-/emojis/1/camel.png)bin1190 -> 1190 bytes
-rw-r--r--app/assets/images/emoji/camera.png (renamed from public/-/emojis/1/camera.png)bin1783 -> 1783 bytes
-rw-r--r--app/assets/images/emoji/camera_with_flash.png (renamed from public/-/emojis/1/camera_with_flash.png)bin2097 -> 2097 bytes
-rw-r--r--app/assets/images/emoji/camping.png (renamed from public/-/emojis/1/camping.png)bin1513 -> 1513 bytes
-rw-r--r--app/assets/images/emoji/cancer.png (renamed from public/-/emojis/1/cancer.png)bin729 -> 729 bytes
-rw-r--r--app/assets/images/emoji/candle.png (renamed from public/-/emojis/1/candle.png)bin1250 -> 1250 bytes
-rw-r--r--app/assets/images/emoji/candy.png (renamed from public/-/emojis/1/candy.png)bin1054 -> 1054 bytes
-rw-r--r--app/assets/images/emoji/canoe.png (renamed from public/-/emojis/1/canoe.png)bin1244 -> 1244 bytes
-rw-r--r--app/assets/images/emoji/capital_abcd.png (renamed from public/-/emojis/1/capital_abcd.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/capricorn.png (renamed from public/-/emojis/1/capricorn.png)bin688 -> 688 bytes
-rw-r--r--app/assets/images/emoji/card_box.png (renamed from public/-/emojis/1/card_box.png)bin1523 -> 1523 bytes
-rw-r--r--app/assets/images/emoji/card_index.png (renamed from public/-/emojis/1/card_index.png)bin1929 -> 1929 bytes
-rw-r--r--app/assets/images/emoji/carousel_horse.png (renamed from public/-/emojis/1/carousel_horse.png)bin1739 -> 1739 bytes
-rw-r--r--app/assets/images/emoji/carrot.png (renamed from public/-/emojis/1/carrot.png)bin1236 -> 1236 bytes
-rw-r--r--app/assets/images/emoji/cartwheel.png (renamed from public/-/emojis/1/cartwheel.png)bin1233 -> 1233 bytes
-rw-r--r--app/assets/images/emoji/cartwheel_tone1.png (renamed from public/-/emojis/1/cartwheel_tone1.png)bin1234 -> 1234 bytes
-rw-r--r--app/assets/images/emoji/cartwheel_tone2.png (renamed from public/-/emojis/1/cartwheel_tone2.png)bin1235 -> 1235 bytes
-rw-r--r--app/assets/images/emoji/cartwheel_tone3.png (renamed from public/-/emojis/1/cartwheel_tone3.png)bin1229 -> 1229 bytes
-rw-r--r--app/assets/images/emoji/cartwheel_tone4.png (renamed from public/-/emojis/1/cartwheel_tone4.png)bin1227 -> 1227 bytes
-rw-r--r--app/assets/images/emoji/cartwheel_tone5.png (renamed from public/-/emojis/1/cartwheel_tone5.png)bin1214 -> 1214 bytes
-rw-r--r--app/assets/images/emoji/cat.png (renamed from public/-/emojis/1/cat.png)bin1354 -> 1354 bytes
-rw-r--r--app/assets/images/emoji/cat2.png (renamed from public/-/emojis/1/cat2.png)bin1781 -> 1781 bytes
-rw-r--r--app/assets/images/emoji/cd.png (renamed from public/-/emojis/1/cd.png)bin908 -> 908 bytes
-rw-r--r--app/assets/images/emoji/chains.png (renamed from public/-/emojis/1/chains.png)bin708 -> 708 bytes
-rw-r--r--app/assets/images/emoji/champagne.png (renamed from public/-/emojis/1/champagne.png)bin1205 -> 1205 bytes
-rw-r--r--app/assets/images/emoji/champagne_glass.png (renamed from public/-/emojis/1/champagne_glass.png)bin1984 -> 1984 bytes
-rw-r--r--app/assets/images/emoji/chart.png (renamed from public/-/emojis/1/chart.png)bin724 -> 724 bytes
-rw-r--r--app/assets/images/emoji/chart_with_downwards_trend.png (renamed from public/-/emojis/1/chart_with_downwards_trend.png)bin709 -> 709 bytes
-rw-r--r--app/assets/images/emoji/chart_with_upwards_trend.png (renamed from public/-/emojis/1/chart_with_upwards_trend.png)bin688 -> 688 bytes
-rw-r--r--app/assets/images/emoji/checkered_flag.png (renamed from public/-/emojis/1/checkered_flag.png)bin787 -> 787 bytes
-rw-r--r--app/assets/images/emoji/cheese.png (renamed from public/-/emojis/1/cheese.png)bin1697 -> 1697 bytes
-rw-r--r--app/assets/images/emoji/cherries.png (renamed from public/-/emojis/1/cherries.png)bin1211 -> 1211 bytes
-rw-r--r--app/assets/images/emoji/cherry_blossom.png (renamed from public/-/emojis/1/cherry_blossom.png)bin1129 -> 1129 bytes
-rw-r--r--app/assets/images/emoji/chestnut.png (renamed from public/-/emojis/1/chestnut.png)bin1337 -> 1337 bytes
-rw-r--r--app/assets/images/emoji/chicken.png (renamed from public/-/emojis/1/chicken.png)bin1267 -> 1267 bytes
-rw-r--r--app/assets/images/emoji/children_crossing.png (renamed from public/-/emojis/1/children_crossing.png)bin778 -> 778 bytes
-rw-r--r--app/assets/images/emoji/chipmunk.png (renamed from public/-/emojis/1/chipmunk.png)bin1454 -> 1454 bytes
-rw-r--r--app/assets/images/emoji/chocolate_bar.png (renamed from public/-/emojis/1/chocolate_bar.png)bin771 -> 771 bytes
-rw-r--r--app/assets/images/emoji/christmas_tree.png (renamed from public/-/emojis/1/christmas_tree.png)bin1542 -> 1542 bytes
-rw-r--r--app/assets/images/emoji/church.png (renamed from public/-/emojis/1/church.png)bin1298 -> 1298 bytes
-rw-r--r--app/assets/images/emoji/cinema.png (renamed from public/-/emojis/1/cinema.png)bin585 -> 585 bytes
-rw-r--r--app/assets/images/emoji/circus_tent.png (renamed from public/-/emojis/1/circus_tent.png)bin1369 -> 1369 bytes
-rw-r--r--app/assets/images/emoji/city_dusk.png (renamed from public/-/emojis/1/city_dusk.png)bin431 -> 431 bytes
-rw-r--r--app/assets/images/emoji/city_sunset.png (renamed from public/-/emojis/1/city_sunset.png)bin997 -> 997 bytes
-rw-r--r--app/assets/images/emoji/cityscape.png (renamed from public/-/emojis/1/cityscape.png)bin599 -> 599 bytes
-rw-r--r--app/assets/images/emoji/cl.png (renamed from public/-/emojis/1/cl.png)bin393 -> 393 bytes
-rw-r--r--app/assets/images/emoji/clap.png (renamed from public/-/emojis/1/clap.png)bin1456 -> 1456 bytes
-rw-r--r--app/assets/images/emoji/clap_tone1.png (renamed from public/-/emojis/1/clap_tone1.png)bin1458 -> 1458 bytes
-rw-r--r--app/assets/images/emoji/clap_tone2.png (renamed from public/-/emojis/1/clap_tone2.png)bin1458 -> 1458 bytes
-rw-r--r--app/assets/images/emoji/clap_tone3.png (renamed from public/-/emojis/1/clap_tone3.png)bin1458 -> 1458 bytes
-rw-r--r--app/assets/images/emoji/clap_tone4.png (renamed from public/-/emojis/1/clap_tone4.png)bin1458 -> 1458 bytes
-rw-r--r--app/assets/images/emoji/clap_tone5.png (renamed from public/-/emojis/1/clap_tone5.png)bin1444 -> 1444 bytes
-rw-r--r--app/assets/images/emoji/clapper.png (renamed from public/-/emojis/1/clapper.png)bin1535 -> 1535 bytes
-rw-r--r--app/assets/images/emoji/classical_building.png (renamed from public/-/emojis/1/classical_building.png)bin1006 -> 1006 bytes
-rw-r--r--app/assets/images/emoji/clipboard.png (renamed from public/-/emojis/1/clipboard.png)bin1345 -> 1345 bytes
-rw-r--r--app/assets/images/emoji/clock.png (renamed from public/-/emojis/1/clock.png)bin592 -> 592 bytes
-rw-r--r--app/assets/images/emoji/clock1.png (renamed from public/-/emojis/1/clock1.png)bin586 -> 586 bytes
-rw-r--r--app/assets/images/emoji/clock10.png (renamed from public/-/emojis/1/clock10.png)bin593 -> 593 bytes
-rw-r--r--app/assets/images/emoji/clock1030.png (renamed from public/-/emojis/1/clock1030.png)bin530 -> 530 bytes
-rw-r--r--app/assets/images/emoji/clock11.png (renamed from public/-/emojis/1/clock11.png)bin590 -> 590 bytes
-rw-r--r--app/assets/images/emoji/clock1130.png (renamed from public/-/emojis/1/clock1130.png)bin583 -> 583 bytes
-rw-r--r--app/assets/images/emoji/clock12.png (renamed from public/-/emojis/1/clock12.png)bin480 -> 480 bytes
-rw-r--r--app/assets/images/emoji/clock1230.png (renamed from public/-/emojis/1/clock1230.png)bin579 -> 579 bytes
-rw-r--r--app/assets/images/emoji/clock130.png (renamed from public/-/emojis/1/clock130.png)bin526 -> 526 bytes
-rw-r--r--app/assets/images/emoji/clock2.png (renamed from public/-/emojis/1/clock2.png)bin591 -> 591 bytes
-rw-r--r--app/assets/images/emoji/clock230.png (renamed from public/-/emojis/1/clock230.png)bin576 -> 576 bytes
-rw-r--r--app/assets/images/emoji/clock3.png (renamed from public/-/emojis/1/clock3.png)bin482 -> 482 bytes
-rw-r--r--app/assets/images/emoji/clock330.png (renamed from public/-/emojis/1/clock330.png)bin568 -> 568 bytes
-rw-r--r--app/assets/images/emoji/clock4.png (renamed from public/-/emojis/1/clock4.png)bin592 -> 592 bytes
-rw-r--r--app/assets/images/emoji/clock430.png (renamed from public/-/emojis/1/clock430.png)bin531 -> 531 bytes
-rw-r--r--app/assets/images/emoji/clock5.png (renamed from public/-/emojis/1/clock5.png)bin585 -> 585 bytes
-rw-r--r--app/assets/images/emoji/clock530.png (renamed from public/-/emojis/1/clock530.png)bin552 -> 552 bytes
-rw-r--r--app/assets/images/emoji/clock6.png (renamed from public/-/emojis/1/clock6.png)bin466 -> 466 bytes
-rw-r--r--app/assets/images/emoji/clock630.png (renamed from public/-/emojis/1/clock630.png)bin536 -> 536 bytes
-rw-r--r--app/assets/images/emoji/clock7.png (renamed from public/-/emojis/1/clock7.png)bin581 -> 581 bytes
-rw-r--r--app/assets/images/emoji/clock730.png (renamed from public/-/emojis/1/clock730.png)bin531 -> 531 bytes
-rw-r--r--app/assets/images/emoji/clock8.png (renamed from public/-/emojis/1/clock8.png)bin590 -> 590 bytes
-rw-r--r--app/assets/images/emoji/clock830.png (renamed from public/-/emojis/1/clock830.png)bin570 -> 570 bytes
-rw-r--r--app/assets/images/emoji/clock9.png (renamed from public/-/emojis/1/clock9.png)bin484 -> 484 bytes
-rw-r--r--app/assets/images/emoji/clock930.png (renamed from public/-/emojis/1/clock930.png)bin576 -> 576 bytes
-rw-r--r--app/assets/images/emoji/closed_book.png (renamed from public/-/emojis/1/closed_book.png)bin1359 -> 1359 bytes
-rw-r--r--app/assets/images/emoji/closed_lock_with_key.png (renamed from public/-/emojis/1/closed_lock_with_key.png)bin1250 -> 1250 bytes
-rw-r--r--app/assets/images/emoji/closed_umbrella.png (renamed from public/-/emojis/1/closed_umbrella.png)bin1002 -> 1002 bytes
-rw-r--r--app/assets/images/emoji/cloud.png (renamed from public/-/emojis/1/cloud.png)bin626 -> 626 bytes
-rw-r--r--app/assets/images/emoji/cloud_lightning.png (renamed from public/-/emojis/1/cloud_lightning.png)bin767 -> 767 bytes
-rw-r--r--app/assets/images/emoji/cloud_rain.png (renamed from public/-/emojis/1/cloud_rain.png)bin876 -> 876 bytes
-rw-r--r--app/assets/images/emoji/cloud_snow.png (renamed from public/-/emojis/1/cloud_snow.png)bin823 -> 823 bytes
-rw-r--r--app/assets/images/emoji/cloud_tornado.png (renamed from public/-/emojis/1/cloud_tornado.png)bin1519 -> 1519 bytes
-rw-r--r--app/assets/images/emoji/clown.png (renamed from public/-/emojis/1/clown.png)bin1818 -> 1818 bytes
-rw-r--r--app/assets/images/emoji/clubs.png (renamed from public/-/emojis/1/clubs.png)bin458 -> 458 bytes
-rw-r--r--app/assets/images/emoji/cocktail.png (renamed from public/-/emojis/1/cocktail.png)bin1027 -> 1027 bytes
-rw-r--r--app/assets/images/emoji/coffee.png (renamed from public/-/emojis/1/coffee.png)bin1679 -> 1679 bytes
-rw-r--r--app/assets/images/emoji/coffin.png (renamed from public/-/emojis/1/coffin.png)bin2195 -> 2195 bytes
-rw-r--r--app/assets/images/emoji/cold_sweat.png (renamed from public/-/emojis/1/cold_sweat.png)bin971 -> 971 bytes
-rw-r--r--app/assets/images/emoji/comet.png (renamed from public/-/emojis/1/comet.png)bin1819 -> 1819 bytes
-rw-r--r--app/assets/images/emoji/compression.png (renamed from public/-/emojis/1/compression.png)bin1612 -> 1612 bytes
-rw-r--r--app/assets/images/emoji/computer.png (renamed from public/-/emojis/1/computer.png)bin369 -> 369 bytes
-rw-r--r--app/assets/images/emoji/confetti_ball.png (renamed from public/-/emojis/1/confetti_ball.png)bin1703 -> 1703 bytes
-rw-r--r--app/assets/images/emoji/confounded.png (renamed from public/-/emojis/1/confounded.png)bin844 -> 844 bytes
-rw-r--r--app/assets/images/emoji/confused.png (renamed from public/-/emojis/1/confused.png)bin647 -> 647 bytes
-rw-r--r--app/assets/images/emoji/congratulations.png (renamed from public/-/emojis/1/congratulations.png)bin729 -> 729 bytes
-rw-r--r--app/assets/images/emoji/construction.png (renamed from public/-/emojis/1/construction.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/construction_site.png (renamed from public/-/emojis/1/construction_site.png)bin668 -> 668 bytes
-rw-r--r--app/assets/images/emoji/construction_worker.png (renamed from public/-/emojis/1/construction_worker.png)bin1126 -> 1126 bytes
-rw-r--r--app/assets/images/emoji/construction_worker_tone1.png (renamed from public/-/emojis/1/construction_worker_tone1.png)bin1102 -> 1102 bytes
-rw-r--r--app/assets/images/emoji/construction_worker_tone2.png (renamed from public/-/emojis/1/construction_worker_tone2.png)bin1102 -> 1102 bytes
-rw-r--r--app/assets/images/emoji/construction_worker_tone3.png (renamed from public/-/emojis/1/construction_worker_tone3.png)bin1102 -> 1102 bytes
-rw-r--r--app/assets/images/emoji/construction_worker_tone4.png (renamed from public/-/emojis/1/construction_worker_tone4.png)bin1095 -> 1095 bytes
-rw-r--r--app/assets/images/emoji/construction_worker_tone5.png (renamed from public/-/emojis/1/construction_worker_tone5.png)bin1119 -> 1119 bytes
-rw-r--r--app/assets/images/emoji/control_knobs.png (renamed from public/-/emojis/1/control_knobs.png)bin1104 -> 1104 bytes
-rw-r--r--app/assets/images/emoji/convenience_store.png (renamed from public/-/emojis/1/convenience_store.png)bin528 -> 528 bytes
-rw-r--r--app/assets/images/emoji/cookie.png (renamed from public/-/emojis/1/cookie.png)bin1351 -> 1351 bytes
-rw-r--r--app/assets/images/emoji/cooking.png (renamed from public/-/emojis/1/cooking.png)bin764 -> 764 bytes
-rw-r--r--app/assets/images/emoji/cool.png (renamed from public/-/emojis/1/cool.png)bin396 -> 396 bytes
-rw-r--r--app/assets/images/emoji/cop.png (renamed from public/-/emojis/1/cop.png)bin1440 -> 1440 bytes
-rw-r--r--app/assets/images/emoji/cop_tone1.png (renamed from public/-/emojis/1/cop_tone1.png)bin1421 -> 1421 bytes
-rw-r--r--app/assets/images/emoji/cop_tone2.png (renamed from public/-/emojis/1/cop_tone2.png)bin1424 -> 1424 bytes
-rw-r--r--app/assets/images/emoji/cop_tone3.png (renamed from public/-/emojis/1/cop_tone3.png)bin1419 -> 1419 bytes
-rw-r--r--app/assets/images/emoji/cop_tone4.png (renamed from public/-/emojis/1/cop_tone4.png)bin1417 -> 1417 bytes
-rw-r--r--app/assets/images/emoji/cop_tone5.png (renamed from public/-/emojis/1/cop_tone5.png)bin1433 -> 1433 bytes
-rw-r--r--app/assets/images/emoji/copyright.png (renamed from public/-/emojis/1/copyright.png)bin530 -> 530 bytes
-rw-r--r--app/assets/images/emoji/corn.png (renamed from public/-/emojis/1/corn.png)bin1547 -> 1547 bytes
-rw-r--r--app/assets/images/emoji/couch.png (renamed from public/-/emojis/1/couch.png)bin1362 -> 1362 bytes
-rw-r--r--app/assets/images/emoji/couple.png (renamed from public/-/emojis/1/couple.png)bin1537 -> 1537 bytes
-rw-r--r--app/assets/images/emoji/couple_mm.png (renamed from public/-/emojis/1/couple_mm.png)bin1091 -> 1091 bytes
-rw-r--r--app/assets/images/emoji/couple_with_heart.png (renamed from public/-/emojis/1/couple_with_heart.png)bin1285 -> 1285 bytes
-rw-r--r--app/assets/images/emoji/couple_ww.png (renamed from public/-/emojis/1/couple_ww.png)bin1034 -> 1034 bytes
-rw-r--r--app/assets/images/emoji/couplekiss.png (renamed from public/-/emojis/1/couplekiss.png)bin1380 -> 1380 bytes
-rw-r--r--app/assets/images/emoji/cow.png (renamed from public/-/emojis/1/cow.png)bin1640 -> 1640 bytes
-rw-r--r--app/assets/images/emoji/cow2.png (renamed from public/-/emojis/1/cow2.png)bin1810 -> 1810 bytes
-rw-r--r--app/assets/images/emoji/cowboy.png (renamed from public/-/emojis/1/cowboy.png)bin1353 -> 1353 bytes
-rw-r--r--app/assets/images/emoji/crab.png (renamed from public/-/emojis/1/crab.png)bin1475 -> 1475 bytes
-rw-r--r--app/assets/images/emoji/crayon.png (renamed from public/-/emojis/1/crayon.png)bin633 -> 633 bytes
-rw-r--r--app/assets/images/emoji/credit_card.png (renamed from public/-/emojis/1/credit_card.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/crescent_moon.png (renamed from public/-/emojis/1/crescent_moon.png)bin446 -> 446 bytes
-rw-r--r--app/assets/images/emoji/cricket.png (renamed from public/-/emojis/1/cricket.png)bin1060 -> 1060 bytes
-rw-r--r--app/assets/images/emoji/crocodile.png (renamed from public/-/emojis/1/crocodile.png)bin2408 -> 2408 bytes
-rw-r--r--app/assets/images/emoji/croissant.png (renamed from public/-/emojis/1/croissant.png)bin1313 -> 1313 bytes
-rw-r--r--app/assets/images/emoji/cross.png (renamed from public/-/emojis/1/cross.png)bin408 -> 408 bytes
-rw-r--r--app/assets/images/emoji/crossed_flags.png (renamed from public/-/emojis/1/crossed_flags.png)bin1239 -> 1239 bytes
-rw-r--r--app/assets/images/emoji/crossed_swords.png (renamed from public/-/emojis/1/crossed_swords.png)bin1591 -> 1591 bytes
-rw-r--r--app/assets/images/emoji/crown.png (renamed from public/-/emojis/1/crown.png)bin1534 -> 1534 bytes
-rw-r--r--app/assets/images/emoji/cruise_ship.png (renamed from public/-/emojis/1/cruise_ship.png)bin2272 -> 2272 bytes
-rw-r--r--app/assets/images/emoji/cry.png (renamed from public/-/emojis/1/cry.png)bin1123 -> 1123 bytes
-rw-r--r--app/assets/images/emoji/crying_cat_face.png (renamed from public/-/emojis/1/crying_cat_face.png)bin1875 -> 1875 bytes
-rw-r--r--app/assets/images/emoji/crystal_ball.png (renamed from public/-/emojis/1/crystal_ball.png)bin1913 -> 1913 bytes
-rw-r--r--app/assets/images/emoji/cucumber.png (renamed from public/-/emojis/1/cucumber.png)bin1357 -> 1357 bytes
-rw-r--r--app/assets/images/emoji/cupid.png (renamed from public/-/emojis/1/cupid.png)bin846 -> 846 bytes
-rw-r--r--app/assets/images/emoji/curly_loop.png (renamed from public/-/emojis/1/curly_loop.png)bin545 -> 545 bytes
-rw-r--r--app/assets/images/emoji/currency_exchange.png (renamed from public/-/emojis/1/currency_exchange.png)bin576 -> 576 bytes
-rw-r--r--app/assets/images/emoji/curry.png (renamed from public/-/emojis/1/curry.png)bin1754 -> 1754 bytes
-rw-r--r--app/assets/images/emoji/custard.png (renamed from public/-/emojis/1/custard.png)bin1273 -> 1273 bytes
-rw-r--r--app/assets/images/emoji/customs.png (renamed from public/-/emojis/1/customs.png)bin648 -> 648 bytes
-rw-r--r--app/assets/images/emoji/cyclone.png (renamed from public/-/emojis/1/cyclone.png)bin797 -> 797 bytes
-rw-r--r--app/assets/images/emoji/dagger.png (renamed from public/-/emojis/1/dagger.png)bin916 -> 916 bytes
-rw-r--r--app/assets/images/emoji/dancer.png (renamed from public/-/emojis/1/dancer.png)bin1405 -> 1405 bytes
-rw-r--r--app/assets/images/emoji/dancer_tone1.png (renamed from public/-/emojis/1/dancer_tone1.png)bin1420 -> 1420 bytes
-rw-r--r--app/assets/images/emoji/dancer_tone2.png (renamed from public/-/emojis/1/dancer_tone2.png)bin1423 -> 1423 bytes
-rw-r--r--app/assets/images/emoji/dancer_tone3.png (renamed from public/-/emojis/1/dancer_tone3.png)bin1429 -> 1429 bytes
-rw-r--r--app/assets/images/emoji/dancer_tone4.png (renamed from public/-/emojis/1/dancer_tone4.png)bin1428 -> 1428 bytes
-rw-r--r--app/assets/images/emoji/dancer_tone5.png (renamed from public/-/emojis/1/dancer_tone5.png)bin1418 -> 1418 bytes
-rw-r--r--app/assets/images/emoji/dancers.png (renamed from public/-/emojis/1/dancers.png)bin1872 -> 1872 bytes
-rw-r--r--app/assets/images/emoji/dango.png (renamed from public/-/emojis/1/dango.png)bin802 -> 802 bytes
-rw-r--r--app/assets/images/emoji/dark_sunglasses.png (renamed from public/-/emojis/1/dark_sunglasses.png)bin829 -> 829 bytes
-rw-r--r--app/assets/images/emoji/dart.png (renamed from public/-/emojis/1/dart.png)bin1374 -> 1374 bytes
-rw-r--r--app/assets/images/emoji/dash.png (renamed from public/-/emojis/1/dash.png)bin840 -> 840 bytes
-rw-r--r--app/assets/images/emoji/date.png (renamed from public/-/emojis/1/date.png)bin788 -> 788 bytes
-rw-r--r--app/assets/images/emoji/deciduous_tree.png (renamed from public/-/emojis/1/deciduous_tree.png)bin1267 -> 1267 bytes
-rw-r--r--app/assets/images/emoji/deer.png (renamed from public/-/emojis/1/deer.png)bin1606 -> 1606 bytes
-rw-r--r--app/assets/images/emoji/department_store.png (renamed from public/-/emojis/1/department_store.png)bin673 -> 673 bytes
-rw-r--r--app/assets/images/emoji/desert.png (renamed from public/-/emojis/1/desert.png)bin1443 -> 1443 bytes
-rw-r--r--app/assets/images/emoji/desktop.png (renamed from public/-/emojis/1/desktop.png)bin311 -> 311 bytes
-rw-r--r--app/assets/images/emoji/diamond_shape_with_a_dot_inside.png (renamed from public/-/emojis/1/diamond_shape_with_a_dot_inside.png)bin693 -> 693 bytes
-rw-r--r--app/assets/images/emoji/diamonds.png (renamed from public/-/emojis/1/diamonds.png)bin247 -> 247 bytes
-rw-r--r--app/assets/images/emoji/disappointed.png (renamed from public/-/emojis/1/disappointed.png)bin757 -> 757 bytes
-rw-r--r--app/assets/images/emoji/disappointed_relieved.png (renamed from public/-/emojis/1/disappointed_relieved.png)bin835 -> 835 bytes
-rw-r--r--app/assets/images/emoji/dividers.png (renamed from public/-/emojis/1/dividers.png)bin810 -> 810 bytes
-rw-r--r--app/assets/images/emoji/dizzy.png (renamed from public/-/emojis/1/dizzy.png)bin795 -> 795 bytes
-rw-r--r--app/assets/images/emoji/dizzy_face.png (renamed from public/-/emojis/1/dizzy_face.png)bin710 -> 710 bytes
-rw-r--r--app/assets/images/emoji/do_not_litter.png (renamed from public/-/emojis/1/do_not_litter.png)bin1010 -> 1010 bytes
-rw-r--r--app/assets/images/emoji/dog.png (renamed from public/-/emojis/1/dog.png)bin1674 -> 1674 bytes
-rw-r--r--app/assets/images/emoji/dog2.png (renamed from public/-/emojis/1/dog2.png)bin2085 -> 2085 bytes
-rw-r--r--app/assets/images/emoji/dollar.png (renamed from public/-/emojis/1/dollar.png)bin405 -> 405 bytes
-rw-r--r--app/assets/images/emoji/dolls.png (renamed from public/-/emojis/1/dolls.png)bin2249 -> 2249 bytes
-rw-r--r--app/assets/images/emoji/dolphin.png (renamed from public/-/emojis/1/dolphin.png)bin1697 -> 1697 bytes
-rw-r--r--app/assets/images/emoji/door.png (renamed from public/-/emojis/1/door.png)bin1105 -> 1105 bytes
-rw-r--r--app/assets/images/emoji/doughnut.png (renamed from public/-/emojis/1/doughnut.png)bin1322 -> 1322 bytes
-rw-r--r--app/assets/images/emoji/dove.png (renamed from public/-/emojis/1/dove.png)bin967 -> 967 bytes
-rw-r--r--app/assets/images/emoji/dragon.png (renamed from public/-/emojis/1/dragon.png)bin1574 -> 1574 bytes
-rw-r--r--app/assets/images/emoji/dragon_face.png (renamed from public/-/emojis/1/dragon_face.png)bin1769 -> 1769 bytes
-rw-r--r--app/assets/images/emoji/dress.png (renamed from public/-/emojis/1/dress.png)bin1001 -> 1001 bytes
-rw-r--r--app/assets/images/emoji/dromedary_camel.png (renamed from public/-/emojis/1/dromedary_camel.png)bin1515 -> 1515 bytes
-rw-r--r--app/assets/images/emoji/drooling_face.png (renamed from public/-/emojis/1/drooling_face.png)bin1049 -> 1049 bytes
-rw-r--r--app/assets/images/emoji/droplet.png (renamed from public/-/emojis/1/droplet.png)bin411 -> 411 bytes
-rw-r--r--app/assets/images/emoji/drum.png (renamed from public/-/emojis/1/drum.png)bin1870 -> 1870 bytes
-rw-r--r--app/assets/images/emoji/duck.png (renamed from public/-/emojis/1/duck.png)bin1729 -> 1729 bytes
-rw-r--r--app/assets/images/emoji/dvd.png (renamed from public/-/emojis/1/dvd.png)bin933 -> 933 bytes
-rw-r--r--app/assets/images/emoji/e-mail.png (renamed from public/-/emojis/1/e-mail.png)bin1196 -> 1196 bytes
-rw-r--r--app/assets/images/emoji/eagle.png (renamed from public/-/emojis/1/eagle.png)bin2222 -> 2222 bytes
-rw-r--r--app/assets/images/emoji/ear.png (renamed from public/-/emojis/1/ear.png)bin860 -> 860 bytes
-rw-r--r--app/assets/images/emoji/ear_of_rice.png (renamed from public/-/emojis/1/ear_of_rice.png)bin1422 -> 1422 bytes
-rw-r--r--app/assets/images/emoji/ear_tone1.png (renamed from public/-/emojis/1/ear_tone1.png)bin860 -> 860 bytes
-rw-r--r--app/assets/images/emoji/ear_tone2.png (renamed from public/-/emojis/1/ear_tone2.png)bin860 -> 860 bytes
-rw-r--r--app/assets/images/emoji/ear_tone3.png (renamed from public/-/emojis/1/ear_tone3.png)bin860 -> 860 bytes
-rw-r--r--app/assets/images/emoji/ear_tone4.png (renamed from public/-/emojis/1/ear_tone4.png)bin860 -> 860 bytes
-rw-r--r--app/assets/images/emoji/ear_tone5.png (renamed from public/-/emojis/1/ear_tone5.png)bin860 -> 860 bytes
-rw-r--r--app/assets/images/emoji/earth_africa.png (renamed from public/-/emojis/1/earth_africa.png)bin978 -> 978 bytes
-rw-r--r--app/assets/images/emoji/earth_americas.png (renamed from public/-/emojis/1/earth_americas.png)bin1031 -> 1031 bytes
-rw-r--r--app/assets/images/emoji/earth_asia.png (renamed from public/-/emojis/1/earth_asia.png)bin966 -> 966 bytes
-rw-r--r--app/assets/images/emoji/egg.png (renamed from public/-/emojis/1/egg.png)bin710 -> 710 bytes
-rw-r--r--app/assets/images/emoji/eggplant.png (renamed from public/-/emojis/1/eggplant.png)bin773 -> 773 bytes
-rw-r--r--app/assets/images/emoji/eight.png (renamed from public/-/emojis/1/eight.png)bin608 -> 608 bytes
-rw-r--r--app/assets/images/emoji/eight_pointed_black_star.png (renamed from public/-/emojis/1/eight_pointed_black_star.png)bin493 -> 493 bytes
-rw-r--r--app/assets/images/emoji/eight_spoked_asterisk.png (renamed from public/-/emojis/1/eight_spoked_asterisk.png)bin493 -> 493 bytes
-rw-r--r--app/assets/images/emoji/eject.png (renamed from public/-/emojis/1/eject.png)bin548 -> 548 bytes
-rw-r--r--app/assets/images/emoji/electric_plug.png (renamed from public/-/emojis/1/electric_plug.png)bin548 -> 548 bytes
-rw-r--r--app/assets/images/emoji/elephant.png (renamed from public/-/emojis/1/elephant.png)bin1293 -> 1293 bytes
-rw-r--r--app/assets/images/emoji/end.png (renamed from public/-/emojis/1/end.png)bin393 -> 393 bytes
-rw-r--r--app/assets/images/emoji/envelope.png (renamed from public/-/emojis/1/envelope.png)bin916 -> 916 bytes
-rw-r--r--app/assets/images/emoji/envelope_with_arrow.png (renamed from public/-/emojis/1/envelope_with_arrow.png)bin1062 -> 1062 bytes
-rw-r--r--app/assets/images/emoji/euro.png (renamed from public/-/emojis/1/euro.png)bin460 -> 460 bytes
-rw-r--r--app/assets/images/emoji/european_castle.png (renamed from public/-/emojis/1/european_castle.png)bin965 -> 965 bytes
-rw-r--r--app/assets/images/emoji/european_post_office.png (renamed from public/-/emojis/1/european_post_office.png)bin551 -> 551 bytes
-rw-r--r--app/assets/images/emoji/evergreen_tree.png (renamed from public/-/emojis/1/evergreen_tree.png)bin719 -> 719 bytes
-rw-r--r--app/assets/images/emoji/exclamation.png (renamed from public/-/emojis/1/exclamation.png)bin354 -> 354 bytes
-rw-r--r--app/assets/images/emoji/expressionless.png (renamed from public/-/emojis/1/expressionless.png)bin438 -> 438 bytes
-rw-r--r--app/assets/images/emoji/eye.png (renamed from public/-/emojis/1/eye.png)bin664 -> 664 bytes
-rw-r--r--app/assets/images/emoji/eye_in_speech_bubble.png (renamed from public/-/emojis/1/eye_in_speech_bubble.png)bin698 -> 698 bytes
-rw-r--r--app/assets/images/emoji/eyeglasses.png (renamed from public/-/emojis/1/eyeglasses.png)bin577 -> 577 bytes
-rw-r--r--app/assets/images/emoji/eyes.png (renamed from public/-/emojis/1/eyes.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/face_palm.png (renamed from public/-/emojis/1/face_palm.png)bin1523 -> 1523 bytes
-rw-r--r--app/assets/images/emoji/face_palm_tone1.png (renamed from public/-/emojis/1/face_palm_tone1.png)bin1563 -> 1563 bytes
-rw-r--r--app/assets/images/emoji/face_palm_tone2.png (renamed from public/-/emojis/1/face_palm_tone2.png)bin1547 -> 1547 bytes
-rw-r--r--app/assets/images/emoji/face_palm_tone3.png (renamed from public/-/emojis/1/face_palm_tone3.png)bin1550 -> 1550 bytes
-rw-r--r--app/assets/images/emoji/face_palm_tone4.png (renamed from public/-/emojis/1/face_palm_tone4.png)bin1553 -> 1553 bytes
-rw-r--r--app/assets/images/emoji/face_palm_tone5.png (renamed from public/-/emojis/1/face_palm_tone5.png)bin1532 -> 1532 bytes
-rw-r--r--app/assets/images/emoji/factory.png (renamed from public/-/emojis/1/factory.png)bin936 -> 936 bytes
-rw-r--r--app/assets/images/emoji/fallen_leaf.png (renamed from public/-/emojis/1/fallen_leaf.png)bin951 -> 951 bytes
-rw-r--r--app/assets/images/emoji/family.png (renamed from public/-/emojis/1/family.png)bin1433 -> 1433 bytes
-rw-r--r--app/assets/images/emoji/family_mmb.png (renamed from public/-/emojis/1/family_mmb.png)bin1206 -> 1206 bytes
-rw-r--r--app/assets/images/emoji/family_mmbb.png (renamed from public/-/emojis/1/family_mmbb.png)bin1349 -> 1349 bytes
-rw-r--r--app/assets/images/emoji/family_mmg.png (renamed from public/-/emojis/1/family_mmg.png)bin1361 -> 1361 bytes
-rw-r--r--app/assets/images/emoji/family_mmgb.png (renamed from public/-/emojis/1/family_mmgb.png)bin1626 -> 1626 bytes
-rw-r--r--app/assets/images/emoji/family_mmgg.png (renamed from public/-/emojis/1/family_mmgg.png)bin1448 -> 1448 bytes
-rw-r--r--app/assets/images/emoji/family_mwbb.png (renamed from public/-/emojis/1/family_mwbb.png)bin1638 -> 1638 bytes
-rw-r--r--app/assets/images/emoji/family_mwg.png (renamed from public/-/emojis/1/family_mwg.png)bin1554 -> 1554 bytes
-rw-r--r--app/assets/images/emoji/family_mwgb.png (renamed from public/-/emojis/1/family_mwgb.png)bin1837 -> 1837 bytes
-rw-r--r--app/assets/images/emoji/family_mwgg.png (renamed from public/-/emojis/1/family_mwgg.png)bin1738 -> 1738 bytes
-rw-r--r--app/assets/images/emoji/family_wwb.png (renamed from public/-/emojis/1/family_wwb.png)bin1155 -> 1155 bytes
-rw-r--r--app/assets/images/emoji/family_wwbb.png (renamed from public/-/emojis/1/family_wwbb.png)bin1289 -> 1289 bytes
-rw-r--r--app/assets/images/emoji/family_wwg.png (renamed from public/-/emojis/1/family_wwg.png)bin1286 -> 1286 bytes
-rw-r--r--app/assets/images/emoji/family_wwgb.png (renamed from public/-/emojis/1/family_wwgb.png)bin1550 -> 1550 bytes
-rw-r--r--app/assets/images/emoji/family_wwgg.png (renamed from public/-/emojis/1/family_wwgg.png)bin1374 -> 1374 bytes
-rw-r--r--app/assets/images/emoji/fast_forward.png (renamed from public/-/emojis/1/fast_forward.png)bin523 -> 523 bytes
-rw-r--r--app/assets/images/emoji/fax.png (renamed from public/-/emojis/1/fax.png)bin1188 -> 1188 bytes
-rw-r--r--app/assets/images/emoji/fearful.png (renamed from public/-/emojis/1/fearful.png)bin1002 -> 1002 bytes
-rw-r--r--app/assets/images/emoji/feet.png (renamed from public/-/emojis/1/feet.png)bin603 -> 603 bytes
-rw-r--r--app/assets/images/emoji/fencer.png (renamed from public/-/emojis/1/fencer.png)bin1342 -> 1342 bytes
-rw-r--r--app/assets/images/emoji/ferris_wheel.png (renamed from public/-/emojis/1/ferris_wheel.png)bin2185 -> 2185 bytes
-rw-r--r--app/assets/images/emoji/ferry.png (renamed from public/-/emojis/1/ferry.png)bin528 -> 528 bytes
-rw-r--r--app/assets/images/emoji/field_hockey.png (renamed from public/-/emojis/1/field_hockey.png)bin947 -> 947 bytes
-rw-r--r--app/assets/images/emoji/file_cabinet.png (renamed from public/-/emojis/1/file_cabinet.png)bin1420 -> 1420 bytes
-rw-r--r--app/assets/images/emoji/file_folder.png (renamed from public/-/emojis/1/file_folder.png)bin1445 -> 1445 bytes
-rw-r--r--app/assets/images/emoji/film_frames.png (renamed from public/-/emojis/1/film_frames.png)bin560 -> 560 bytes
-rw-r--r--app/assets/images/emoji/fingers_crossed.png (renamed from public/-/emojis/1/fingers_crossed.png)bin1050 -> 1050 bytes
-rw-r--r--app/assets/images/emoji/fingers_crossed_tone1.png (renamed from public/-/emojis/1/fingers_crossed_tone1.png)bin1047 -> 1047 bytes
-rw-r--r--app/assets/images/emoji/fingers_crossed_tone2.png (renamed from public/-/emojis/1/fingers_crossed_tone2.png)bin1050 -> 1050 bytes
-rw-r--r--app/assets/images/emoji/fingers_crossed_tone3.png (renamed from public/-/emojis/1/fingers_crossed_tone3.png)bin1050 -> 1050 bytes
-rw-r--r--app/assets/images/emoji/fingers_crossed_tone4.png (renamed from public/-/emojis/1/fingers_crossed_tone4.png)bin1046 -> 1046 bytes
-rw-r--r--app/assets/images/emoji/fingers_crossed_tone5.png (renamed from public/-/emojis/1/fingers_crossed_tone5.png)bin1050 -> 1050 bytes
-rw-r--r--app/assets/images/emoji/fire.png (renamed from public/-/emojis/1/fire.png)bin1020 -> 1020 bytes
-rw-r--r--app/assets/images/emoji/fire_engine.png (renamed from public/-/emojis/1/fire_engine.png)bin1656 -> 1656 bytes
-rw-r--r--app/assets/images/emoji/fireworks.png (renamed from public/-/emojis/1/fireworks.png)bin1364 -> 1364 bytes
-rw-r--r--app/assets/images/emoji/first_place.png (renamed from public/-/emojis/1/first_place.png)bin1419 -> 1419 bytes
-rw-r--r--app/assets/images/emoji/first_quarter_moon.png (renamed from public/-/emojis/1/first_quarter_moon.png)bin1152 -> 1152 bytes
-rw-r--r--app/assets/images/emoji/first_quarter_moon_with_face.png (renamed from public/-/emojis/1/first_quarter_moon_with_face.png)bin1068 -> 1068 bytes
-rw-r--r--app/assets/images/emoji/fish.png (renamed from public/-/emojis/1/fish.png)bin1080 -> 1080 bytes
-rw-r--r--app/assets/images/emoji/fish_cake.png (renamed from public/-/emojis/1/fish_cake.png)bin1245 -> 1245 bytes
-rw-r--r--app/assets/images/emoji/fishing_pole_and_fish.png (renamed from public/-/emojis/1/fishing_pole_and_fish.png)bin1442 -> 1442 bytes
-rw-r--r--app/assets/images/emoji/fist.png (renamed from public/-/emojis/1/fist.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/fist_tone1.png (renamed from public/-/emojis/1/fist_tone1.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/fist_tone2.png (renamed from public/-/emojis/1/fist_tone2.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/fist_tone3.png (renamed from public/-/emojis/1/fist_tone3.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/fist_tone4.png (renamed from public/-/emojis/1/fist_tone4.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/fist_tone5.png (renamed from public/-/emojis/1/fist_tone5.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/five.png (renamed from public/-/emojis/1/five.png)bin577 -> 577 bytes
-rw-r--r--app/assets/images/emoji/flag_ac.png (renamed from public/-/emojis/1/flag_ac.png)bin1934 -> 1934 bytes
-rw-r--r--app/assets/images/emoji/flag_ad.png (renamed from public/-/emojis/1/flag_ad.png)bin1285 -> 1285 bytes
-rw-r--r--app/assets/images/emoji/flag_ae.png (renamed from public/-/emojis/1/flag_ae.png)bin544 -> 544 bytes
-rw-r--r--app/assets/images/emoji/flag_af.png (renamed from public/-/emojis/1/flag_af.png)bin942 -> 942 bytes
-rw-r--r--app/assets/images/emoji/flag_ag.png (renamed from public/-/emojis/1/flag_ag.png)bin913 -> 913 bytes
-rw-r--r--app/assets/images/emoji/flag_ai.png (renamed from public/-/emojis/1/flag_ai.png)bin1056 -> 1056 bytes
-rw-r--r--app/assets/images/emoji/flag_al.png (renamed from public/-/emojis/1/flag_al.png)bin905 -> 905 bytes
-rw-r--r--app/assets/images/emoji/flag_am.png (renamed from public/-/emojis/1/flag_am.png)bin514 -> 514 bytes
-rw-r--r--app/assets/images/emoji/flag_ao.png (renamed from public/-/emojis/1/flag_ao.png)bin997 -> 997 bytes
-rw-r--r--app/assets/images/emoji/flag_aq.png (renamed from public/-/emojis/1/flag_aq.png)bin657 -> 657 bytes
-rw-r--r--app/assets/images/emoji/flag_ar.png (renamed from public/-/emojis/1/flag_ar.png)bin975 -> 975 bytes
-rw-r--r--app/assets/images/emoji/flag_as.png (renamed from public/-/emojis/1/flag_as.png)bin1489 -> 1489 bytes
-rw-r--r--app/assets/images/emoji/flag_at.png (renamed from public/-/emojis/1/flag_at.png)bin430 -> 430 bytes
-rw-r--r--app/assets/images/emoji/flag_au.png (renamed from public/-/emojis/1/flag_au.png)bin962 -> 962 bytes
-rw-r--r--app/assets/images/emoji/flag_aw.png (renamed from public/-/emojis/1/flag_aw.png)bin709 -> 709 bytes
-rw-r--r--app/assets/images/emoji/flag_ax.png (renamed from public/-/emojis/1/flag_ax.png)bin496 -> 496 bytes
-rw-r--r--app/assets/images/emoji/flag_az.png (renamed from public/-/emojis/1/flag_az.png)bin709 -> 709 bytes
-rw-r--r--app/assets/images/emoji/flag_ba.png (renamed from public/-/emojis/1/flag_ba.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/flag_bb.png (renamed from public/-/emojis/1/flag_bb.png)bin789 -> 789 bytes
-rw-r--r--app/assets/images/emoji/flag_bd.png (renamed from public/-/emojis/1/flag_bd.png)bin490 -> 490 bytes
-rw-r--r--app/assets/images/emoji/flag_be.png (renamed from public/-/emojis/1/flag_be.png)bin444 -> 444 bytes
-rw-r--r--app/assets/images/emoji/flag_bf.png (renamed from public/-/emojis/1/flag_bf.png)bin717 -> 717 bytes
-rw-r--r--app/assets/images/emoji/flag_bg.png (renamed from public/-/emojis/1/flag_bg.png)bin513 -> 513 bytes
-rw-r--r--app/assets/images/emoji/flag_bh.png (renamed from public/-/emojis/1/flag_bh.png)bin593 -> 593 bytes
-rw-r--r--app/assets/images/emoji/flag_bi.png (renamed from public/-/emojis/1/flag_bi.png)bin795 -> 795 bytes
-rw-r--r--app/assets/images/emoji/flag_bj.png (renamed from public/-/emojis/1/flag_bj.png)bin554 -> 554 bytes
-rw-r--r--app/assets/images/emoji/flag_bl.png (renamed from public/-/emojis/1/flag_bl.png)bin1691 -> 1691 bytes
-rw-r--r--app/assets/images/emoji/flag_black.png (renamed from public/-/emojis/1/flag_black.png)bin702 -> 702 bytes
-rw-r--r--app/assets/images/emoji/flag_bm.png (renamed from public/-/emojis/1/flag_bm.png)bin1374 -> 1374 bytes
-rw-r--r--app/assets/images/emoji/flag_bn.png (renamed from public/-/emojis/1/flag_bn.png)bin1355 -> 1355 bytes
-rw-r--r--app/assets/images/emoji/flag_bo.png (renamed from public/-/emojis/1/flag_bo.png)bin1132 -> 1132 bytes
-rw-r--r--app/assets/images/emoji/flag_bq.png (renamed from public/-/emojis/1/flag_bq.png)bin1144 -> 1144 bytes
-rw-r--r--app/assets/images/emoji/flag_br.png (renamed from public/-/emojis/1/flag_br.png)bin819 -> 819 bytes
-rw-r--r--app/assets/images/emoji/flag_bs.png (renamed from public/-/emojis/1/flag_bs.png)bin448 -> 448 bytes
-rw-r--r--app/assets/images/emoji/flag_bt.png (renamed from public/-/emojis/1/flag_bt.png)bin1213 -> 1213 bytes
-rw-r--r--app/assets/images/emoji/flag_bv.png (renamed from public/-/emojis/1/flag_bv.png)bin495 -> 495 bytes
-rw-r--r--app/assets/images/emoji/flag_bw.png (renamed from public/-/emojis/1/flag_bw.png)bin391 -> 391 bytes
-rw-r--r--app/assets/images/emoji/flag_by.png (renamed from public/-/emojis/1/flag_by.png)bin1120 -> 1120 bytes
-rw-r--r--app/assets/images/emoji/flag_bz.png (renamed from public/-/emojis/1/flag_bz.png)bin1595 -> 1595 bytes
-rw-r--r--app/assets/images/emoji/flag_ca.png (renamed from public/-/emojis/1/flag_ca.png)bin755 -> 755 bytes
-rw-r--r--app/assets/images/emoji/flag_cc.png (renamed from public/-/emojis/1/flag_cc.png)bin851 -> 851 bytes
-rw-r--r--app/assets/images/emoji/flag_cd.png (renamed from public/-/emojis/1/flag_cd.png)bin707 -> 707 bytes
-rw-r--r--app/assets/images/emoji/flag_cf.png (renamed from public/-/emojis/1/flag_cf.png)bin673 -> 673 bytes
-rw-r--r--app/assets/images/emoji/flag_cg.png (renamed from public/-/emojis/1/flag_cg.png)bin586 -> 586 bytes
-rw-r--r--app/assets/images/emoji/flag_ch.png (renamed from public/-/emojis/1/flag_ch.png)bin390 -> 390 bytes
-rw-r--r--app/assets/images/emoji/flag_ci.png (renamed from public/-/emojis/1/flag_ci.png)bin440 -> 440 bytes
-rw-r--r--app/assets/images/emoji/flag_ck.png (renamed from public/-/emojis/1/flag_ck.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/flag_cl.png (renamed from public/-/emojis/1/flag_cl.png)bin748 -> 748 bytes
-rw-r--r--app/assets/images/emoji/flag_cm.png (renamed from public/-/emojis/1/flag_cm.png)bin627 -> 627 bytes
-rw-r--r--app/assets/images/emoji/flag_cn.png (renamed from public/-/emojis/1/flag_cn.png)bin676 -> 676 bytes
-rw-r--r--app/assets/images/emoji/flag_co.png (renamed from public/-/emojis/1/flag_co.png)bin524 -> 524 bytes
-rw-r--r--app/assets/images/emoji/flag_cp.png (renamed from public/-/emojis/1/flag_cp.png)bin443 -> 443 bytes
-rw-r--r--app/assets/images/emoji/flag_cr.png (renamed from public/-/emojis/1/flag_cr.png)bin419 -> 419 bytes
-rw-r--r--app/assets/images/emoji/flag_cu.png (renamed from public/-/emojis/1/flag_cu.png)bin586 -> 586 bytes
-rw-r--r--app/assets/images/emoji/flag_cv.png (renamed from public/-/emojis/1/flag_cv.png)bin642 -> 642 bytes
-rw-r--r--app/assets/images/emoji/flag_cw.png (renamed from public/-/emojis/1/flag_cw.png)bin665 -> 665 bytes
-rw-r--r--app/assets/images/emoji/flag_cx.png (renamed from public/-/emojis/1/flag_cx.png)bin1142 -> 1142 bytes
-rw-r--r--app/assets/images/emoji/flag_cy.png (renamed from public/-/emojis/1/flag_cy.png)bin830 -> 830 bytes
-rw-r--r--app/assets/images/emoji/flag_cz.png (renamed from public/-/emojis/1/flag_cz.png)bin600 -> 600 bytes
-rw-r--r--app/assets/images/emoji/flag_de.png (renamed from public/-/emojis/1/flag_de.png)bin502 -> 502 bytes
-rw-r--r--app/assets/images/emoji/flag_dg.png (renamed from public/-/emojis/1/flag_dg.png)bin1911 -> 1911 bytes
-rw-r--r--app/assets/images/emoji/flag_dj.png (renamed from public/-/emojis/1/flag_dj.png)bin753 -> 753 bytes
-rw-r--r--app/assets/images/emoji/flag_dk.png (renamed from public/-/emojis/1/flag_dk.png)bin450 -> 450 bytes
-rw-r--r--app/assets/images/emoji/flag_dm.png (renamed from public/-/emojis/1/flag_dm.png)bin1075 -> 1075 bytes
-rw-r--r--app/assets/images/emoji/flag_do.png (renamed from public/-/emojis/1/flag_do.png)bin1135 -> 1135 bytes
-rw-r--r--app/assets/images/emoji/flag_dz.png (renamed from public/-/emojis/1/flag_dz.png)bin734 -> 734 bytes
-rw-r--r--app/assets/images/emoji/flag_ea.png (renamed from public/-/emojis/1/flag_ea.png)bin1337 -> 1337 bytes
-rw-r--r--app/assets/images/emoji/flag_ec.png (renamed from public/-/emojis/1/flag_ec.png)bin1431 -> 1431 bytes
-rw-r--r--app/assets/images/emoji/flag_ee.png (renamed from public/-/emojis/1/flag_ee.png)bin512 -> 512 bytes
-rw-r--r--app/assets/images/emoji/flag_eg.png (renamed from public/-/emojis/1/flag_eg.png)bin818 -> 818 bytes
-rw-r--r--app/assets/images/emoji/flag_eh.png (renamed from public/-/emojis/1/flag_eh.png)bin742 -> 742 bytes
-rw-r--r--app/assets/images/emoji/flag_er.png (renamed from public/-/emojis/1/flag_er.png)bin1218 -> 1218 bytes
-rw-r--r--app/assets/images/emoji/flag_es.png (renamed from public/-/emojis/1/flag_es.png)bin1337 -> 1337 bytes
-rw-r--r--app/assets/images/emoji/flag_et.png (renamed from public/-/emojis/1/flag_et.png)bin947 -> 947 bytes
-rw-r--r--app/assets/images/emoji/flag_eu.png (renamed from public/-/emojis/1/flag_eu.png)bin760 -> 760 bytes
-rw-r--r--app/assets/images/emoji/flag_fi.png (renamed from public/-/emojis/1/flag_fi.png)bin487 -> 487 bytes
-rw-r--r--app/assets/images/emoji/flag_fj.png (renamed from public/-/emojis/1/flag_fj.png)bin1381 -> 1381 bytes
-rw-r--r--app/assets/images/emoji/flag_fk.png (renamed from public/-/emojis/1/flag_fk.png)bin1558 -> 1558 bytes
-rw-r--r--app/assets/images/emoji/flag_fm.png (renamed from public/-/emojis/1/flag_fm.png)bin554 -> 554 bytes
-rw-r--r--app/assets/images/emoji/flag_fo.png (renamed from public/-/emojis/1/flag_fo.png)bin495 -> 495 bytes
-rw-r--r--app/assets/images/emoji/flag_fr.png (renamed from public/-/emojis/1/flag_fr.png)bin443 -> 443 bytes
-rw-r--r--app/assets/images/emoji/flag_ga.png (renamed from public/-/emojis/1/flag_ga.png)bin512 -> 512 bytes
-rw-r--r--app/assets/images/emoji/flag_gb.png (renamed from public/-/emojis/1/flag_gb.png)bin919 -> 919 bytes
-rw-r--r--app/assets/images/emoji/flag_gd.png (renamed from public/-/emojis/1/flag_gd.png)bin1017 -> 1017 bytes
-rw-r--r--app/assets/images/emoji/flag_ge.png (renamed from public/-/emojis/1/flag_ge.png)bin583 -> 583 bytes
-rw-r--r--app/assets/images/emoji/flag_gf.png (renamed from public/-/emojis/1/flag_gf.png)bin865 -> 865 bytes
-rw-r--r--app/assets/images/emoji/flag_gg.png (renamed from public/-/emojis/1/flag_gg.png)bin521 -> 521 bytes
-rw-r--r--app/assets/images/emoji/flag_gh.png (renamed from public/-/emojis/1/flag_gh.png)bin723 -> 723 bytes
-rw-r--r--app/assets/images/emoji/flag_gi.png (renamed from public/-/emojis/1/flag_gi.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/flag_gl.png (renamed from public/-/emojis/1/flag_gl.png)bin700 -> 700 bytes
-rw-r--r--app/assets/images/emoji/flag_gm.png (renamed from public/-/emojis/1/flag_gm.png)bin501 -> 501 bytes
-rw-r--r--app/assets/images/emoji/flag_gn.png (renamed from public/-/emojis/1/flag_gn.png)bin434 -> 434 bytes
-rw-r--r--app/assets/images/emoji/flag_gp.png (renamed from public/-/emojis/1/flag_gp.png)bin1587 -> 1587 bytes
-rw-r--r--app/assets/images/emoji/flag_gq.png (renamed from public/-/emojis/1/flag_gq.png)bin1132 -> 1132 bytes
-rw-r--r--app/assets/images/emoji/flag_gr.png (renamed from public/-/emojis/1/flag_gr.png)bin549 -> 549 bytes
-rw-r--r--app/assets/images/emoji/flag_gs.png (renamed from public/-/emojis/1/flag_gs.png)bin2115 -> 2115 bytes
-rw-r--r--app/assets/images/emoji/flag_gt.png (renamed from public/-/emojis/1/flag_gt.png)bin1087 -> 1087 bytes
-rw-r--r--app/assets/images/emoji/flag_gu.png (renamed from public/-/emojis/1/flag_gu.png)bin1045 -> 1045 bytes
-rw-r--r--app/assets/images/emoji/flag_gw.png (renamed from public/-/emojis/1/flag_gw.png)bin705 -> 705 bytes
-rw-r--r--app/assets/images/emoji/flag_gy.png (renamed from public/-/emojis/1/flag_gy.png)bin690 -> 690 bytes
-rw-r--r--app/assets/images/emoji/flag_hk.png (renamed from public/-/emojis/1/flag_hk.png)bin759 -> 759 bytes
-rw-r--r--app/assets/images/emoji/flag_hm.png (renamed from public/-/emojis/1/flag_hm.png)bin1036 -> 1036 bytes
-rw-r--r--app/assets/images/emoji/flag_hn.png (renamed from public/-/emojis/1/flag_hn.png)bin513 -> 513 bytes
-rw-r--r--app/assets/images/emoji/flag_hr.png (renamed from public/-/emojis/1/flag_hr.png)bin1411 -> 1411 bytes
-rw-r--r--app/assets/images/emoji/flag_ht.png (renamed from public/-/emojis/1/flag_ht.png)bin1205 -> 1205 bytes
-rw-r--r--app/assets/images/emoji/flag_hu.png (renamed from public/-/emojis/1/flag_hu.png)bin513 -> 513 bytes
-rw-r--r--app/assets/images/emoji/flag_ic.png (renamed from public/-/emojis/1/flag_ic.png)bin1330 -> 1330 bytes
-rw-r--r--app/assets/images/emoji/flag_id.png (renamed from public/-/emojis/1/flag_id.png)bin498 -> 498 bytes
-rw-r--r--app/assets/images/emoji/flag_ie.png (renamed from public/-/emojis/1/flag_ie.png)bin478 -> 478 bytes
-rw-r--r--app/assets/images/emoji/flag_il.png (renamed from public/-/emojis/1/flag_il.png)bin658 -> 658 bytes
-rw-r--r--app/assets/images/emoji/flag_im.png (renamed from public/-/emojis/1/flag_im.png)bin976 -> 976 bytes
-rw-r--r--app/assets/images/emoji/flag_in.png (renamed from public/-/emojis/1/flag_in.png)bin773 -> 773 bytes
-rw-r--r--app/assets/images/emoji/flag_io.png (renamed from public/-/emojis/1/flag_io.png)bin1911 -> 1911 bytes
-rw-r--r--app/assets/images/emoji/flag_iq.png (renamed from public/-/emojis/1/flag_iq.png)bin811 -> 811 bytes
-rw-r--r--app/assets/images/emoji/flag_ir.png (renamed from public/-/emojis/1/flag_ir.png)bin1036 -> 1036 bytes
-rw-r--r--app/assets/images/emoji/flag_is.png (renamed from public/-/emojis/1/flag_is.png)bin491 -> 491 bytes
-rw-r--r--app/assets/images/emoji/flag_it.png (renamed from public/-/emojis/1/flag_it.png)bin472 -> 472 bytes
-rw-r--r--app/assets/images/emoji/flag_je.png (renamed from public/-/emojis/1/flag_je.png)bin956 -> 956 bytes
-rw-r--r--app/assets/images/emoji/flag_jm.png (renamed from public/-/emojis/1/flag_jm.png)bin837 -> 837 bytes
-rw-r--r--app/assets/images/emoji/flag_jo.png (renamed from public/-/emojis/1/flag_jo.png)bin740 -> 740 bytes
-rw-r--r--app/assets/images/emoji/flag_jp.png (renamed from public/-/emojis/1/flag_jp.png)bin455 -> 455 bytes
-rw-r--r--app/assets/images/emoji/flag_ke.png (renamed from public/-/emojis/1/flag_ke.png)bin1160 -> 1160 bytes
-rw-r--r--app/assets/images/emoji/flag_kg.png (renamed from public/-/emojis/1/flag_kg.png)bin1080 -> 1080 bytes
-rw-r--r--app/assets/images/emoji/flag_kh.png (renamed from public/-/emojis/1/flag_kh.png)bin872 -> 872 bytes
-rw-r--r--app/assets/images/emoji/flag_ki.png (renamed from public/-/emojis/1/flag_ki.png)bin1369 -> 1369 bytes
-rw-r--r--app/assets/images/emoji/flag_km.png (renamed from public/-/emojis/1/flag_km.png)bin783 -> 783 bytes
-rw-r--r--app/assets/images/emoji/flag_kn.png (renamed from public/-/emojis/1/flag_kn.png)bin1316 -> 1316 bytes
-rw-r--r--app/assets/images/emoji/flag_kp.png (renamed from public/-/emojis/1/flag_kp.png)bin696 -> 696 bytes
-rw-r--r--app/assets/images/emoji/flag_kr.png (renamed from public/-/emojis/1/flag_kr.png)bin967 -> 967 bytes
-rw-r--r--app/assets/images/emoji/flag_kw.png (renamed from public/-/emojis/1/flag_kw.png)bin560 -> 560 bytes
-rw-r--r--app/assets/images/emoji/flag_ky.png (renamed from public/-/emojis/1/flag_ky.png)bin1671 -> 1671 bytes
-rw-r--r--app/assets/images/emoji/flag_kz.png (renamed from public/-/emojis/1/flag_kz.png)bin1136 -> 1136 bytes
-rw-r--r--app/assets/images/emoji/flag_la.png (renamed from public/-/emojis/1/flag_la.png)bin479 -> 479 bytes
-rw-r--r--app/assets/images/emoji/flag_lb.png (renamed from public/-/emojis/1/flag_lb.png)bin740 -> 740 bytes
-rw-r--r--app/assets/images/emoji/flag_lc.png (renamed from public/-/emojis/1/flag_lc.png)bin561 -> 561 bytes
-rw-r--r--app/assets/images/emoji/flag_li.png (renamed from public/-/emojis/1/flag_li.png)bin946 -> 946 bytes
-rw-r--r--app/assets/images/emoji/flag_lk.png (renamed from public/-/emojis/1/flag_lk.png)bin974 -> 974 bytes
-rw-r--r--app/assets/images/emoji/flag_lr.png (renamed from public/-/emojis/1/flag_lr.png)bin772 -> 772 bytes
-rw-r--r--app/assets/images/emoji/flag_ls.png (renamed from public/-/emojis/1/flag_ls.png)bin775 -> 775 bytes
-rw-r--r--app/assets/images/emoji/flag_lt.png (renamed from public/-/emojis/1/flag_lt.png)bin510 -> 510 bytes
-rw-r--r--app/assets/images/emoji/flag_lu.png (renamed from public/-/emojis/1/flag_lu.png)bin512 -> 512 bytes
-rw-r--r--app/assets/images/emoji/flag_lv.png (renamed from public/-/emojis/1/flag_lv.png)bin388 -> 388 bytes
-rw-r--r--app/assets/images/emoji/flag_ly.png (renamed from public/-/emojis/1/flag_ly.png)bin685 -> 685 bytes
-rw-r--r--app/assets/images/emoji/flag_ma.png (renamed from public/-/emojis/1/flag_ma.png)bin626 -> 626 bytes
-rw-r--r--app/assets/images/emoji/flag_mc.png (renamed from public/-/emojis/1/flag_mc.png)bin528 -> 528 bytes
-rw-r--r--app/assets/images/emoji/flag_md.png (renamed from public/-/emojis/1/flag_md.png)bin1170 -> 1170 bytes
-rw-r--r--app/assets/images/emoji/flag_me.png (renamed from public/-/emojis/1/flag_me.png)bin1074 -> 1074 bytes
-rw-r--r--app/assets/images/emoji/flag_mf.png (renamed from public/-/emojis/1/flag_mf.png)bin443 -> 443 bytes
-rw-r--r--app/assets/images/emoji/flag_mg.png (renamed from public/-/emojis/1/flag_mg.png)bin556 -> 556 bytes
-rw-r--r--app/assets/images/emoji/flag_mh.png (renamed from public/-/emojis/1/flag_mh.png)bin1138 -> 1138 bytes
-rw-r--r--app/assets/images/emoji/flag_mk.png (renamed from public/-/emojis/1/flag_mk.png)bin1023 -> 1023 bytes
-rw-r--r--app/assets/images/emoji/flag_ml.png (renamed from public/-/emojis/1/flag_ml.png)bin440 -> 440 bytes
-rw-r--r--app/assets/images/emoji/flag_mm.png (renamed from public/-/emojis/1/flag_mm.png)bin937 -> 937 bytes
-rw-r--r--app/assets/images/emoji/flag_mn.png (renamed from public/-/emojis/1/flag_mn.png)bin698 -> 698 bytes
-rw-r--r--app/assets/images/emoji/flag_mo.png (renamed from public/-/emojis/1/flag_mo.png)bin792 -> 792 bytes
-rw-r--r--app/assets/images/emoji/flag_mp.png (renamed from public/-/emojis/1/flag_mp.png)bin1797 -> 1797 bytes
-rw-r--r--app/assets/images/emoji/flag_mq.png (renamed from public/-/emojis/1/flag_mq.png)bin780 -> 780 bytes
-rw-r--r--app/assets/images/emoji/flag_mr.png (renamed from public/-/emojis/1/flag_mr.png)bin657 -> 657 bytes
-rw-r--r--app/assets/images/emoji/flag_ms.png (renamed from public/-/emojis/1/flag_ms.png)bin1477 -> 1477 bytes
-rw-r--r--app/assets/images/emoji/flag_mt.png (renamed from public/-/emojis/1/flag_mt.png)bin799 -> 799 bytes
-rw-r--r--app/assets/images/emoji/flag_mu.png (renamed from public/-/emojis/1/flag_mu.png)bin544 -> 544 bytes
-rw-r--r--app/assets/images/emoji/flag_mv.png (renamed from public/-/emojis/1/flag_mv.png)bin598 -> 598 bytes
-rw-r--r--app/assets/images/emoji/flag_mw.png (renamed from public/-/emojis/1/flag_mw.png)bin825 -> 825 bytes
-rw-r--r--app/assets/images/emoji/flag_mx.png (renamed from public/-/emojis/1/flag_mx.png)bin951 -> 951 bytes
-rw-r--r--app/assets/images/emoji/flag_my.png (renamed from public/-/emojis/1/flag_my.png)bin775 -> 775 bytes
-rw-r--r--app/assets/images/emoji/flag_mz.png (renamed from public/-/emojis/1/flag_mz.png)bin1159 -> 1159 bytes
-rw-r--r--app/assets/images/emoji/flag_na.png (renamed from public/-/emojis/1/flag_na.png)bin1249 -> 1249 bytes
-rw-r--r--app/assets/images/emoji/flag_nc.png (renamed from public/-/emojis/1/flag_nc.png)bin1148 -> 1148 bytes
-rw-r--r--app/assets/images/emoji/flag_ne.png (renamed from public/-/emojis/1/flag_ne.png)bin593 -> 593 bytes
-rw-r--r--app/assets/images/emoji/flag_nf.png (renamed from public/-/emojis/1/flag_nf.png)bin877 -> 877 bytes
-rw-r--r--app/assets/images/emoji/flag_ng.png (renamed from public/-/emojis/1/flag_ng.png)bin438 -> 438 bytes
-rw-r--r--app/assets/images/emoji/flag_ni.png (renamed from public/-/emojis/1/flag_ni.png)bin823 -> 823 bytes
-rw-r--r--app/assets/images/emoji/flag_nl.png (renamed from public/-/emojis/1/flag_nl.png)bin499 -> 499 bytes
-rw-r--r--app/assets/images/emoji/flag_no.png (renamed from public/-/emojis/1/flag_no.png)bin484 -> 484 bytes
-rw-r--r--app/assets/images/emoji/flag_np.png (renamed from public/-/emojis/1/flag_np.png)bin802 -> 802 bytes
-rw-r--r--app/assets/images/emoji/flag_nr.png (renamed from public/-/emojis/1/flag_nr.png)bin529 -> 529 bytes
-rw-r--r--app/assets/images/emoji/flag_nu.png (renamed from public/-/emojis/1/flag_nu.png)bin1128 -> 1128 bytes
-rw-r--r--app/assets/images/emoji/flag_nz.png (renamed from public/-/emojis/1/flag_nz.png)bin1099 -> 1099 bytes
-rw-r--r--app/assets/images/emoji/flag_om.png (renamed from public/-/emojis/1/flag_om.png)bin754 -> 754 bytes
-rw-r--r--app/assets/images/emoji/flag_pa.png (renamed from public/-/emojis/1/flag_pa.png)bin830 -> 830 bytes
-rw-r--r--app/assets/images/emoji/flag_pe.png (renamed from public/-/emojis/1/flag_pe.png)bin439 -> 439 bytes
-rw-r--r--app/assets/images/emoji/flag_pf.png (renamed from public/-/emojis/1/flag_pf.png)bin1091 -> 1091 bytes
-rw-r--r--app/assets/images/emoji/flag_pg.png (renamed from public/-/emojis/1/flag_pg.png)bin1076 -> 1076 bytes
-rw-r--r--app/assets/images/emoji/flag_ph.png (renamed from public/-/emojis/1/flag_ph.png)bin867 -> 867 bytes
-rw-r--r--app/assets/images/emoji/flag_pk.png (renamed from public/-/emojis/1/flag_pk.png)bin753 -> 753 bytes
-rw-r--r--app/assets/images/emoji/flag_pl.png (renamed from public/-/emojis/1/flag_pl.png)bin522 -> 522 bytes
-rw-r--r--app/assets/images/emoji/flag_pm.png (renamed from public/-/emojis/1/flag_pm.png)bin2314 -> 2314 bytes
-rw-r--r--app/assets/images/emoji/flag_pn.png (renamed from public/-/emojis/1/flag_pn.png)bin1895 -> 1895 bytes
-rw-r--r--app/assets/images/emoji/flag_pr.png (renamed from public/-/emojis/1/flag_pr.png)bin605 -> 605 bytes
-rw-r--r--app/assets/images/emoji/flag_ps.png (renamed from public/-/emojis/1/flag_ps.png)bin574 -> 574 bytes
-rw-r--r--app/assets/images/emoji/flag_pt.png (renamed from public/-/emojis/1/flag_pt.png)bin1055 -> 1055 bytes
-rw-r--r--app/assets/images/emoji/flag_pw.png (renamed from public/-/emojis/1/flag_pw.png)bin475 -> 475 bytes
-rw-r--r--app/assets/images/emoji/flag_py.png (renamed from public/-/emojis/1/flag_py.png)bin1085 -> 1085 bytes
-rw-r--r--app/assets/images/emoji/flag_qa.png (renamed from public/-/emojis/1/flag_qa.png)bin657 -> 657 bytes
-rw-r--r--app/assets/images/emoji/flag_re.png (renamed from public/-/emojis/1/flag_re.png)bin837 -> 837 bytes
-rw-r--r--app/assets/images/emoji/flag_ro.png (renamed from public/-/emojis/1/flag_ro.png)bin441 -> 441 bytes
-rw-r--r--app/assets/images/emoji/flag_rs.png (renamed from public/-/emojis/1/flag_rs.png)bin1237 -> 1237 bytes
-rw-r--r--app/assets/images/emoji/flag_ru.png (renamed from public/-/emojis/1/flag_ru.png)bin496 -> 496 bytes
-rw-r--r--app/assets/images/emoji/flag_rw.png (renamed from public/-/emojis/1/flag_rw.png)bin940 -> 940 bytes
-rw-r--r--app/assets/images/emoji/flag_sa.png (renamed from public/-/emojis/1/flag_sa.png)bin781 -> 781 bytes
-rw-r--r--app/assets/images/emoji/flag_sb.png (renamed from public/-/emojis/1/flag_sb.png)bin1102 -> 1102 bytes
-rw-r--r--app/assets/images/emoji/flag_sc.png (renamed from public/-/emojis/1/flag_sc.png)bin1073 -> 1073 bytes
-rw-r--r--app/assets/images/emoji/flag_sd.png (renamed from public/-/emojis/1/flag_sd.png)bin578 -> 578 bytes
-rw-r--r--app/assets/images/emoji/flag_se.png (renamed from public/-/emojis/1/flag_se.png)bin455 -> 455 bytes
-rw-r--r--app/assets/images/emoji/flag_sg.png (renamed from public/-/emojis/1/flag_sg.png)bin730 -> 730 bytes
-rw-r--r--app/assets/images/emoji/flag_sh.png (renamed from public/-/emojis/1/flag_sh.png)bin1369 -> 1369 bytes
-rw-r--r--app/assets/images/emoji/flag_si.png (renamed from public/-/emojis/1/flag_si.png)bin1030 -> 1030 bytes
-rw-r--r--app/assets/images/emoji/flag_sj.png (renamed from public/-/emojis/1/flag_sj.png)bin495 -> 495 bytes
-rw-r--r--app/assets/images/emoji/flag_sk.png (renamed from public/-/emojis/1/flag_sk.png)bin780 -> 780 bytes
-rw-r--r--app/assets/images/emoji/flag_sl.png (renamed from public/-/emojis/1/flag_sl.png)bin510 -> 510 bytes
-rw-r--r--app/assets/images/emoji/flag_sm.png (renamed from public/-/emojis/1/flag_sm.png)bin2000 -> 2000 bytes
-rw-r--r--app/assets/images/emoji/flag_sn.png (renamed from public/-/emojis/1/flag_sn.png)bin621 -> 621 bytes
-rw-r--r--app/assets/images/emoji/flag_so.png (renamed from public/-/emojis/1/flag_so.png)bin609 -> 609 bytes
-rw-r--r--app/assets/images/emoji/flag_sr.png (renamed from public/-/emojis/1/flag_sr.png)bin650 -> 650 bytes
-rw-r--r--app/assets/images/emoji/flag_ss.png (renamed from public/-/emojis/1/flag_ss.png)bin722 -> 722 bytes
-rw-r--r--app/assets/images/emoji/flag_st.png (renamed from public/-/emojis/1/flag_st.png)bin562 -> 562 bytes
-rw-r--r--app/assets/images/emoji/flag_sv.png (renamed from public/-/emojis/1/flag_sv.png)bin1125 -> 1125 bytes
-rw-r--r--app/assets/images/emoji/flag_sx.png (renamed from public/-/emojis/1/flag_sx.png)bin1195 -> 1195 bytes
-rw-r--r--app/assets/images/emoji/flag_sy.png (renamed from public/-/emojis/1/flag_sy.png)bin696 -> 696 bytes
-rw-r--r--app/assets/images/emoji/flag_sz.png (renamed from public/-/emojis/1/flag_sz.png)bin1102 -> 1102 bytes
-rw-r--r--app/assets/images/emoji/flag_ta.png (renamed from public/-/emojis/1/flag_ta.png)bin1907 -> 1907 bytes
-rw-r--r--app/assets/images/emoji/flag_tc.png (renamed from public/-/emojis/1/flag_tc.png)bin1538 -> 1538 bytes
-rw-r--r--app/assets/images/emoji/flag_td.png (renamed from public/-/emojis/1/flag_td.png)bin443 -> 443 bytes
-rw-r--r--app/assets/images/emoji/flag_tf.png (renamed from public/-/emojis/1/flag_tf.png)bin857 -> 857 bytes
-rw-r--r--app/assets/images/emoji/flag_tg.png (renamed from public/-/emojis/1/flag_tg.png)bin790 -> 790 bytes
-rw-r--r--app/assets/images/emoji/flag_th.png (renamed from public/-/emojis/1/flag_th.png)bin421 -> 421 bytes
-rw-r--r--app/assets/images/emoji/flag_tj.png (renamed from public/-/emojis/1/flag_tj.png)bin906 -> 906 bytes
-rw-r--r--app/assets/images/emoji/flag_tk.png (renamed from public/-/emojis/1/flag_tk.png)bin835 -> 835 bytes
-rw-r--r--app/assets/images/emoji/flag_tl.png (renamed from public/-/emojis/1/flag_tl.png)bin849 -> 849 bytes
-rw-r--r--app/assets/images/emoji/flag_tm.png (renamed from public/-/emojis/1/flag_tm.png)bin1178 -> 1178 bytes
-rw-r--r--app/assets/images/emoji/flag_tn.png (renamed from public/-/emojis/1/flag_tn.png)bin625 -> 625 bytes
-rw-r--r--app/assets/images/emoji/flag_to.png (renamed from public/-/emojis/1/flag_to.png)bin553 -> 553 bytes
-rw-r--r--app/assets/images/emoji/flag_tr.png (renamed from public/-/emojis/1/flag_tr.png)bin576 -> 576 bytes
-rw-r--r--app/assets/images/emoji/flag_tt.png (renamed from public/-/emojis/1/flag_tt.png)bin604 -> 604 bytes
-rw-r--r--app/assets/images/emoji/flag_tv.png (renamed from public/-/emojis/1/flag_tv.png)bin1120 -> 1120 bytes
-rw-r--r--app/assets/images/emoji/flag_tw.png (renamed from public/-/emojis/1/flag_tw.png)bin761 -> 761 bytes
-rw-r--r--app/assets/images/emoji/flag_tz.png (renamed from public/-/emojis/1/flag_tz.png)bin1061 -> 1061 bytes
-rw-r--r--app/assets/images/emoji/flag_ua.png (renamed from public/-/emojis/1/flag_ua.png)bin528 -> 528 bytes
-rw-r--r--app/assets/images/emoji/flag_ug.png (renamed from public/-/emojis/1/flag_ug.png)bin887 -> 887 bytes
-rw-r--r--app/assets/images/emoji/flag_um.png (renamed from public/-/emojis/1/flag_um.png)bin776 -> 776 bytes
-rw-r--r--app/assets/images/emoji/flag_us.png (renamed from public/-/emojis/1/flag_us.png)bin776 -> 776 bytes
-rw-r--r--app/assets/images/emoji/flag_uy.png (renamed from public/-/emojis/1/flag_uy.png)bin966 -> 966 bytes
-rw-r--r--app/assets/images/emoji/flag_uz.png (renamed from public/-/emojis/1/flag_uz.png)bin750 -> 750 bytes
-rw-r--r--app/assets/images/emoji/flag_va.png (renamed from public/-/emojis/1/flag_va.png)bin1331 -> 1331 bytes
-rw-r--r--app/assets/images/emoji/flag_vc.png (renamed from public/-/emojis/1/flag_vc.png)bin897 -> 897 bytes
-rw-r--r--app/assets/images/emoji/flag_ve.png (renamed from public/-/emojis/1/flag_ve.png)bin748 -> 748 bytes
-rw-r--r--app/assets/images/emoji/flag_vg.png (renamed from public/-/emojis/1/flag_vg.png)bin1789 -> 1789 bytes
-rw-r--r--app/assets/images/emoji/flag_vi.png (renamed from public/-/emojis/1/flag_vi.png)bin1378 -> 1378 bytes
-rw-r--r--app/assets/images/emoji/flag_vn.png (renamed from public/-/emojis/1/flag_vn.png)bin583 -> 583 bytes
-rw-r--r--app/assets/images/emoji/flag_vu.png (renamed from public/-/emojis/1/flag_vu.png)bin844 -> 844 bytes
-rw-r--r--app/assets/images/emoji/flag_wf.png (renamed from public/-/emojis/1/flag_wf.png)bin443 -> 443 bytes
-rw-r--r--app/assets/images/emoji/flag_white.png (renamed from public/-/emojis/1/flag_white.png)bin699 -> 699 bytes
-rw-r--r--app/assets/images/emoji/flag_ws.png (renamed from public/-/emojis/1/flag_ws.png)bin634 -> 634 bytes
-rw-r--r--app/assets/images/emoji/flag_xk.png (renamed from public/-/emojis/1/flag_xk.png)bin722 -> 722 bytes
-rw-r--r--app/assets/images/emoji/flag_ye.png (renamed from public/-/emojis/1/flag_ye.png)bin507 -> 507 bytes
-rw-r--r--app/assets/images/emoji/flag_yt.png (renamed from public/-/emojis/1/flag_yt.png)bin1623 -> 1623 bytes
-rw-r--r--app/assets/images/emoji/flag_za.png (renamed from public/-/emojis/1/flag_za.png)bin676 -> 676 bytes
-rw-r--r--app/assets/images/emoji/flag_zm.png (renamed from public/-/emojis/1/flag_zm.png)bin881 -> 881 bytes
-rw-r--r--app/assets/images/emoji/flag_zw.png (renamed from public/-/emojis/1/flag_zw.png)bin993 -> 993 bytes
-rw-r--r--app/assets/images/emoji/flags.png (renamed from public/-/emojis/1/flags.png)bin1722 -> 1722 bytes
-rw-r--r--app/assets/images/emoji/flashlight.png (renamed from public/-/emojis/1/flashlight.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/fleur-de-lis.png (renamed from public/-/emojis/1/fleur-de-lis.png)bin632 -> 632 bytes
-rw-r--r--app/assets/images/emoji/floppy_disk.png (renamed from public/-/emojis/1/floppy_disk.png)bin258 -> 258 bytes
-rw-r--r--app/assets/images/emoji/flower_playing_cards.png (renamed from public/-/emojis/1/flower_playing_cards.png)bin449 -> 449 bytes
-rw-r--r--app/assets/images/emoji/flushed.png (renamed from public/-/emojis/1/flushed.png)bin1127 -> 1127 bytes
-rw-r--r--app/assets/images/emoji/fog.png (renamed from public/-/emojis/1/fog.png)bin713 -> 713 bytes
-rw-r--r--app/assets/images/emoji/foggy.png (renamed from public/-/emojis/1/foggy.png)bin1069 -> 1069 bytes
-rw-r--r--app/assets/images/emoji/football.png (renamed from public/-/emojis/1/football.png)bin956 -> 956 bytes
-rw-r--r--app/assets/images/emoji/footprints.png (renamed from public/-/emojis/1/footprints.png)bin621 -> 621 bytes
-rw-r--r--app/assets/images/emoji/fork_and_knife.png (renamed from public/-/emojis/1/fork_and_knife.png)bin668 -> 668 bytes
-rw-r--r--app/assets/images/emoji/fork_knife_plate.png (renamed from public/-/emojis/1/fork_knife_plate.png)bin976 -> 976 bytes
-rw-r--r--app/assets/images/emoji/fountain.png (renamed from public/-/emojis/1/fountain.png)bin1768 -> 1768 bytes
-rw-r--r--app/assets/images/emoji/four.png (renamed from public/-/emojis/1/four.png)bin497 -> 497 bytes
-rw-r--r--app/assets/images/emoji/four_leaf_clover.png (renamed from public/-/emojis/1/four_leaf_clover.png)bin1156 -> 1156 bytes
-rw-r--r--app/assets/images/emoji/fox.png (renamed from public/-/emojis/1/fox.png)bin1556 -> 1556 bytes
-rw-r--r--app/assets/images/emoji/frame_photo.png (renamed from public/-/emojis/1/frame_photo.png)bin514 -> 514 bytes
-rw-r--r--app/assets/images/emoji/free.png (renamed from public/-/emojis/1/free.png)bin370 -> 370 bytes
-rw-r--r--app/assets/images/emoji/french_bread.png (renamed from public/-/emojis/1/french_bread.png)bin1551 -> 1551 bytes
-rw-r--r--app/assets/images/emoji/fried_shrimp.png (renamed from public/-/emojis/1/fried_shrimp.png)bin1241 -> 1241 bytes
-rw-r--r--app/assets/images/emoji/fries.png (renamed from public/-/emojis/1/fries.png)bin1873 -> 1873 bytes
-rw-r--r--app/assets/images/emoji/frog.png (renamed from public/-/emojis/1/frog.png)bin897 -> 897 bytes
-rw-r--r--app/assets/images/emoji/frowning.png (renamed from public/-/emojis/1/frowning.png)bin633 -> 633 bytes
-rw-r--r--app/assets/images/emoji/frowning2.png (renamed from public/-/emojis/1/frowning2.png)bin589 -> 589 bytes
-rw-r--r--app/assets/images/emoji/fuelpump.png (renamed from public/-/emojis/1/fuelpump.png)bin864 -> 864 bytes
-rw-r--r--app/assets/images/emoji/full_moon.png (renamed from public/-/emojis/1/full_moon.png)bin841 -> 841 bytes
-rw-r--r--app/assets/images/emoji/full_moon_with_face.png (renamed from public/-/emojis/1/full_moon_with_face.png)bin1186 -> 1186 bytes
-rw-r--r--app/assets/images/emoji/game_die.png (renamed from public/-/emojis/1/game_die.png)bin1136 -> 1136 bytes
-rw-r--r--app/assets/images/emoji/gay_pride_flag.png (renamed from public/-/emojis/1/gay_pride_flag.png)bin2340 -> 2340 bytes
-rw-r--r--app/assets/images/emoji/gear.png (renamed from public/-/emojis/1/gear.png)bin747 -> 747 bytes
-rw-r--r--app/assets/images/emoji/gem.png (renamed from public/-/emojis/1/gem.png)bin715 -> 715 bytes
-rw-r--r--app/assets/images/emoji/gemini.png (renamed from public/-/emojis/1/gemini.png)bin547 -> 547 bytes
-rw-r--r--app/assets/images/emoji/ghost.png (renamed from public/-/emojis/1/ghost.png)bin1465 -> 1465 bytes
-rw-r--r--app/assets/images/emoji/gift.png (renamed from public/-/emojis/1/gift.png)bin1966 -> 1966 bytes
-rw-r--r--app/assets/images/emoji/gift_heart.png (renamed from public/-/emojis/1/gift_heart.png)bin1141 -> 1141 bytes
-rw-r--r--app/assets/images/emoji/girl.png (renamed from public/-/emojis/1/girl.png)bin1261 -> 1261 bytes
-rw-r--r--app/assets/images/emoji/girl_tone1.png (renamed from public/-/emojis/1/girl_tone1.png)bin1259 -> 1259 bytes
-rw-r--r--app/assets/images/emoji/girl_tone2.png (renamed from public/-/emojis/1/girl_tone2.png)bin1255 -> 1255 bytes
-rw-r--r--app/assets/images/emoji/girl_tone3.png (renamed from public/-/emojis/1/girl_tone3.png)bin1255 -> 1255 bytes
-rw-r--r--app/assets/images/emoji/girl_tone4.png (renamed from public/-/emojis/1/girl_tone4.png)bin1241 -> 1241 bytes
-rw-r--r--app/assets/images/emoji/girl_tone5.png (renamed from public/-/emojis/1/girl_tone5.png)bin1245 -> 1245 bytes
-rw-r--r--app/assets/images/emoji/globe_with_meridians.png (renamed from public/-/emojis/1/globe_with_meridians.png)bin796 -> 796 bytes
-rw-r--r--app/assets/images/emoji/goal.png (renamed from public/-/emojis/1/goal.png)bin1242 -> 1242 bytes
-rw-r--r--app/assets/images/emoji/goat.png (renamed from public/-/emojis/1/goat.png)bin981 -> 981 bytes
-rw-r--r--app/assets/images/emoji/golf.png (renamed from public/-/emojis/1/golf.png)bin823 -> 823 bytes
-rw-r--r--app/assets/images/emoji/golfer.png (renamed from public/-/emojis/1/golfer.png)bin1189 -> 1189 bytes
-rw-r--r--app/assets/images/emoji/gorilla.png (renamed from public/-/emojis/1/gorilla.png)bin1090 -> 1090 bytes
-rw-r--r--app/assets/images/emoji/grapes.png (renamed from public/-/emojis/1/grapes.png)bin1552 -> 1552 bytes
-rw-r--r--app/assets/images/emoji/green_apple.png (renamed from public/-/emojis/1/green_apple.png)bin656 -> 656 bytes
-rw-r--r--app/assets/images/emoji/green_book.png (renamed from public/-/emojis/1/green_book.png)bin1366 -> 1366 bytes
-rw-r--r--app/assets/images/emoji/green_heart.png (renamed from public/-/emojis/1/green_heart.png)bin435 -> 435 bytes
-rw-r--r--app/assets/images/emoji/grey_exclamation.png (renamed from public/-/emojis/1/grey_exclamation.png)bin354 -> 354 bytes
-rw-r--r--app/assets/images/emoji/grey_question.png (renamed from public/-/emojis/1/grey_question.png)bin449 -> 449 bytes
-rw-r--r--app/assets/images/emoji/grimacing.png (renamed from public/-/emojis/1/grimacing.png)bin694 -> 694 bytes
-rw-r--r--app/assets/images/emoji/grin.png (renamed from public/-/emojis/1/grin.png)bin767 -> 767 bytes
-rw-r--r--app/assets/images/emoji/grinning.png (renamed from public/-/emojis/1/grinning.png)bin810 -> 810 bytes
-rw-r--r--app/assets/images/emoji/guardsman.png (renamed from public/-/emojis/1/guardsman.png)bin1140 -> 1140 bytes
-rw-r--r--app/assets/images/emoji/guardsman_tone1.png (renamed from public/-/emojis/1/guardsman_tone1.png)bin1122 -> 1122 bytes
-rw-r--r--app/assets/images/emoji/guardsman_tone2.png (renamed from public/-/emojis/1/guardsman_tone2.png)bin1160 -> 1160 bytes
-rw-r--r--app/assets/images/emoji/guardsman_tone3.png (renamed from public/-/emojis/1/guardsman_tone3.png)bin1160 -> 1160 bytes
-rw-r--r--app/assets/images/emoji/guardsman_tone4.png (renamed from public/-/emojis/1/guardsman_tone4.png)bin1157 -> 1157 bytes
-rw-r--r--app/assets/images/emoji/guardsman_tone5.png (renamed from public/-/emojis/1/guardsman_tone5.png)bin1165 -> 1165 bytes
-rw-r--r--app/assets/images/emoji/guitar.png (renamed from public/-/emojis/1/guitar.png)bin1056 -> 1056 bytes
-rw-r--r--app/assets/images/emoji/gun.png (renamed from public/-/emojis/1/gun.png)bin1859 -> 1859 bytes
-rw-r--r--app/assets/images/emoji/haircut.png (renamed from public/-/emojis/1/haircut.png)bin1935 -> 1935 bytes
-rw-r--r--app/assets/images/emoji/haircut_tone1.png (renamed from public/-/emojis/1/haircut_tone1.png)bin1945 -> 1945 bytes
-rw-r--r--app/assets/images/emoji/haircut_tone2.png (renamed from public/-/emojis/1/haircut_tone2.png)bin1935 -> 1935 bytes
-rw-r--r--app/assets/images/emoji/haircut_tone3.png (renamed from public/-/emojis/1/haircut_tone3.png)bin1923 -> 1923 bytes
-rw-r--r--app/assets/images/emoji/haircut_tone4.png (renamed from public/-/emojis/1/haircut_tone4.png)bin1904 -> 1904 bytes
-rw-r--r--app/assets/images/emoji/haircut_tone5.png (renamed from public/-/emojis/1/haircut_tone5.png)bin1920 -> 1920 bytes
-rw-r--r--app/assets/images/emoji/hamburger.png (renamed from public/-/emojis/1/hamburger.png)bin1973 -> 1973 bytes
-rw-r--r--app/assets/images/emoji/hammer.png (renamed from public/-/emojis/1/hammer.png)bin834 -> 834 bytes
-rw-r--r--app/assets/images/emoji/hammer_pick.png (renamed from public/-/emojis/1/hammer_pick.png)bin1068 -> 1068 bytes
-rw-r--r--app/assets/images/emoji/hamster.png (renamed from public/-/emojis/1/hamster.png)bin1279 -> 1279 bytes
-rw-r--r--app/assets/images/emoji/hand_splayed.png (renamed from public/-/emojis/1/hand_splayed.png)bin1081 -> 1081 bytes
-rw-r--r--app/assets/images/emoji/hand_splayed_tone1.png (renamed from public/-/emojis/1/hand_splayed_tone1.png)bin1081 -> 1081 bytes
-rw-r--r--app/assets/images/emoji/hand_splayed_tone2.png (renamed from public/-/emojis/1/hand_splayed_tone2.png)bin1081 -> 1081 bytes
-rw-r--r--app/assets/images/emoji/hand_splayed_tone3.png (renamed from public/-/emojis/1/hand_splayed_tone3.png)bin1081 -> 1081 bytes
-rw-r--r--app/assets/images/emoji/hand_splayed_tone4.png (renamed from public/-/emojis/1/hand_splayed_tone4.png)bin1081 -> 1081 bytes
-rw-r--r--app/assets/images/emoji/hand_splayed_tone5.png (renamed from public/-/emojis/1/hand_splayed_tone5.png)bin1081 -> 1081 bytes
-rw-r--r--app/assets/images/emoji/handbag.png (renamed from public/-/emojis/1/handbag.png)bin1285 -> 1285 bytes
-rw-r--r--app/assets/images/emoji/handball.png (renamed from public/-/emojis/1/handball.png)bin1634 -> 1634 bytes
-rw-r--r--app/assets/images/emoji/handball_tone1.png (renamed from public/-/emojis/1/handball_tone1.png)bin1645 -> 1645 bytes
-rw-r--r--app/assets/images/emoji/handball_tone2.png (renamed from public/-/emojis/1/handball_tone2.png)bin1628 -> 1628 bytes
-rw-r--r--app/assets/images/emoji/handball_tone3.png (renamed from public/-/emojis/1/handball_tone3.png)bin1639 -> 1639 bytes
-rw-r--r--app/assets/images/emoji/handball_tone4.png (renamed from public/-/emojis/1/handball_tone4.png)bin1634 -> 1634 bytes
-rw-r--r--app/assets/images/emoji/handball_tone5.png (renamed from public/-/emojis/1/handball_tone5.png)bin1606 -> 1606 bytes
-rw-r--r--app/assets/images/emoji/handshake.png (renamed from public/-/emojis/1/handshake.png)bin1366 -> 1366 bytes
-rw-r--r--app/assets/images/emoji/handshake_tone1.png (renamed from public/-/emojis/1/handshake_tone1.png)bin1381 -> 1381 bytes
-rw-r--r--app/assets/images/emoji/handshake_tone2.png (renamed from public/-/emojis/1/handshake_tone2.png)bin1381 -> 1381 bytes
-rw-r--r--app/assets/images/emoji/handshake_tone3.png (renamed from public/-/emojis/1/handshake_tone3.png)bin1381 -> 1381 bytes
-rw-r--r--app/assets/images/emoji/handshake_tone4.png (renamed from public/-/emojis/1/handshake_tone4.png)bin1381 -> 1381 bytes
-rw-r--r--app/assets/images/emoji/handshake_tone5.png (renamed from public/-/emojis/1/handshake_tone5.png)bin1381 -> 1381 bytes
-rw-r--r--app/assets/images/emoji/hash.png (renamed from public/-/emojis/1/hash.png)bin604 -> 604 bytes
-rw-r--r--app/assets/images/emoji/hatched_chick.png (renamed from public/-/emojis/1/hatched_chick.png)bin1174 -> 1174 bytes
-rw-r--r--app/assets/images/emoji/hatching_chick.png (renamed from public/-/emojis/1/hatching_chick.png)bin1598 -> 1598 bytes
-rw-r--r--app/assets/images/emoji/head_bandage.png (renamed from public/-/emojis/1/head_bandage.png)bin1199 -> 1199 bytes
-rw-r--r--app/assets/images/emoji/headphones.png (renamed from public/-/emojis/1/headphones.png)bin1202 -> 1202 bytes
-rw-r--r--app/assets/images/emoji/hear_no_evil.png (renamed from public/-/emojis/1/hear_no_evil.png)bin1210 -> 1210 bytes
-rw-r--r--app/assets/images/emoji/heart.png (renamed from public/-/emojis/1/heart.png)bin435 -> 435 bytes
-rw-r--r--app/assets/images/emoji/heart_decoration.png (renamed from public/-/emojis/1/heart_decoration.png)bin557 -> 557 bytes
-rw-r--r--app/assets/images/emoji/heart_exclamation.png (renamed from public/-/emojis/1/heart_exclamation.png)bin471 -> 471 bytes
-rw-r--r--app/assets/images/emoji/heart_eyes.png (renamed from public/-/emojis/1/heart_eyes.png)bin1069 -> 1069 bytes
-rw-r--r--app/assets/images/emoji/heart_eyes_cat.png (renamed from public/-/emojis/1/heart_eyes_cat.png)bin1512 -> 1512 bytes
-rw-r--r--app/assets/images/emoji/heartbeat.png (renamed from public/-/emojis/1/heartbeat.png)bin699 -> 699 bytes
-rw-r--r--app/assets/images/emoji/heartpulse.png (renamed from public/-/emojis/1/heartpulse.png)bin675 -> 675 bytes
-rw-r--r--app/assets/images/emoji/hearts.png (renamed from public/-/emojis/1/hearts.png)bin449 -> 449 bytes
-rw-r--r--app/assets/images/emoji/heavy_check_mark.png (renamed from public/-/emojis/1/heavy_check_mark.png)bin438 -> 438 bytes
-rw-r--r--app/assets/images/emoji/heavy_division_sign.png (renamed from public/-/emojis/1/heavy_division_sign.png)bin204 -> 204 bytes
-rw-r--r--app/assets/images/emoji/heavy_dollar_sign.png (renamed from public/-/emojis/1/heavy_dollar_sign.png)bin429 -> 429 bytes
-rw-r--r--app/assets/images/emoji/heavy_minus_sign.png (renamed from public/-/emojis/1/heavy_minus_sign.png)bin108 -> 108 bytes
-rw-r--r--app/assets/images/emoji/heavy_multiplication_x.png (renamed from public/-/emojis/1/heavy_multiplication_x.png)bin298 -> 298 bytes
-rw-r--r--app/assets/images/emoji/heavy_plus_sign.png (renamed from public/-/emojis/1/heavy_plus_sign.png)bin115 -> 115 bytes
-rw-r--r--app/assets/images/emoji/helicopter.png (renamed from public/-/emojis/1/helicopter.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/helmet_with_cross.png (renamed from public/-/emojis/1/helmet_with_cross.png)bin1014 -> 1014 bytes
-rw-r--r--app/assets/images/emoji/herb.png (renamed from public/-/emojis/1/herb.png)bin886 -> 886 bytes
-rw-r--r--app/assets/images/emoji/hibiscus.png (renamed from public/-/emojis/1/hibiscus.png)bin1815 -> 1815 bytes
-rw-r--r--app/assets/images/emoji/high_brightness.png (renamed from public/-/emojis/1/high_brightness.png)bin474 -> 474 bytes
-rw-r--r--app/assets/images/emoji/high_heel.png (renamed from public/-/emojis/1/high_heel.png)bin1008 -> 1008 bytes
-rw-r--r--app/assets/images/emoji/hockey.png (renamed from public/-/emojis/1/hockey.png)bin1010 -> 1010 bytes
-rw-r--r--app/assets/images/emoji/hole.png (renamed from public/-/emojis/1/hole.png)bin1390 -> 1390 bytes
-rw-r--r--app/assets/images/emoji/homes.png (renamed from public/-/emojis/1/homes.png)bin981 -> 981 bytes
-rw-r--r--app/assets/images/emoji/honey_pot.png (renamed from public/-/emojis/1/honey_pot.png)bin1217 -> 1217 bytes
-rw-r--r--app/assets/images/emoji/horse.png (renamed from public/-/emojis/1/horse.png)bin1694 -> 1694 bytes
-rw-r--r--app/assets/images/emoji/horse_racing.png (renamed from public/-/emojis/1/horse_racing.png)bin2096 -> 2096 bytes
-rw-r--r--app/assets/images/emoji/horse_racing_tone1.png (renamed from public/-/emojis/1/horse_racing_tone1.png)bin2099 -> 2099 bytes
-rw-r--r--app/assets/images/emoji/horse_racing_tone2.png (renamed from public/-/emojis/1/horse_racing_tone2.png)bin2103 -> 2103 bytes
-rw-r--r--app/assets/images/emoji/horse_racing_tone3.png (renamed from public/-/emojis/1/horse_racing_tone3.png)bin2090 -> 2090 bytes
-rw-r--r--app/assets/images/emoji/horse_racing_tone4.png (renamed from public/-/emojis/1/horse_racing_tone4.png)bin2090 -> 2090 bytes
-rw-r--r--app/assets/images/emoji/horse_racing_tone5.png (renamed from public/-/emojis/1/horse_racing_tone5.png)bin2085 -> 2085 bytes
-rw-r--r--app/assets/images/emoji/hospital.png (renamed from public/-/emojis/1/hospital.png)bin530 -> 530 bytes
-rw-r--r--app/assets/images/emoji/hot_pepper.png (renamed from public/-/emojis/1/hot_pepper.png)bin677 -> 677 bytes
-rw-r--r--app/assets/images/emoji/hotdog.png (renamed from public/-/emojis/1/hotdog.png)bin1770 -> 1770 bytes
-rw-r--r--app/assets/images/emoji/hotel.png (renamed from public/-/emojis/1/hotel.png)bin1322 -> 1322 bytes
-rw-r--r--app/assets/images/emoji/hotsprings.png (renamed from public/-/emojis/1/hotsprings.png)bin733 -> 733 bytes
-rw-r--r--app/assets/images/emoji/hourglass.png (renamed from public/-/emojis/1/hourglass.png)bin800 -> 800 bytes
-rw-r--r--app/assets/images/emoji/hourglass_flowing_sand.png (renamed from public/-/emojis/1/hourglass_flowing_sand.png)bin847 -> 847 bytes
-rw-r--r--app/assets/images/emoji/house.png (renamed from public/-/emojis/1/house.png)bin863 -> 863 bytes
-rw-r--r--app/assets/images/emoji/house_abandoned.png (renamed from public/-/emojis/1/house_abandoned.png)bin1606 -> 1606 bytes
-rw-r--r--app/assets/images/emoji/house_with_garden.png (renamed from public/-/emojis/1/house_with_garden.png)bin1613 -> 1613 bytes
-rw-r--r--app/assets/images/emoji/hugging.png (renamed from public/-/emojis/1/hugging.png)bin1425 -> 1425 bytes
-rw-r--r--app/assets/images/emoji/hushed.png (renamed from public/-/emojis/1/hushed.png)bin634 -> 634 bytes
-rw-r--r--app/assets/images/emoji/ice_cream.png (renamed from public/-/emojis/1/ice_cream.png)bin1779 -> 1779 bytes
-rw-r--r--app/assets/images/emoji/ice_skate.png (renamed from public/-/emojis/1/ice_skate.png)bin1574 -> 1574 bytes
-rw-r--r--app/assets/images/emoji/icecream.png (renamed from public/-/emojis/1/icecream.png)bin1496 -> 1496 bytes
-rw-r--r--app/assets/images/emoji/id.png (renamed from public/-/emojis/1/id.png)bin348 -> 348 bytes
-rw-r--r--app/assets/images/emoji/ideograph_advantage.png (renamed from public/-/emojis/1/ideograph_advantage.png)bin716 -> 716 bytes
-rw-r--r--app/assets/images/emoji/imp.png (renamed from public/-/emojis/1/imp.png)bin1988 -> 1988 bytes
-rw-r--r--app/assets/images/emoji/inbox_tray.png (renamed from public/-/emojis/1/inbox_tray.png)bin1029 -> 1029 bytes
-rw-r--r--app/assets/images/emoji/incoming_envelope.png (renamed from public/-/emojis/1/incoming_envelope.png)bin1129 -> 1129 bytes
-rw-r--r--app/assets/images/emoji/information_desk_person.png (renamed from public/-/emojis/1/information_desk_person.png)bin1580 -> 1580 bytes
-rw-r--r--app/assets/images/emoji/information_desk_person_tone1.png (renamed from public/-/emojis/1/information_desk_person_tone1.png)bin1597 -> 1597 bytes
-rw-r--r--app/assets/images/emoji/information_desk_person_tone2.png (renamed from public/-/emojis/1/information_desk_person_tone2.png)bin1590 -> 1590 bytes
-rw-r--r--app/assets/images/emoji/information_desk_person_tone3.png (renamed from public/-/emojis/1/information_desk_person_tone3.png)bin1580 -> 1580 bytes
-rw-r--r--app/assets/images/emoji/information_desk_person_tone4.png (renamed from public/-/emojis/1/information_desk_person_tone4.png)bin1572 -> 1572 bytes
-rw-r--r--app/assets/images/emoji/information_desk_person_tone5.png (renamed from public/-/emojis/1/information_desk_person_tone5.png)bin1588 -> 1588 bytes
-rw-r--r--app/assets/images/emoji/information_source.png (renamed from public/-/emojis/1/information_source.png)bin506 -> 506 bytes
-rw-r--r--app/assets/images/emoji/innocent.png (renamed from public/-/emojis/1/innocent.png)bin935 -> 935 bytes
-rw-r--r--app/assets/images/emoji/interrobang.png (renamed from public/-/emojis/1/interrobang.png)bin601 -> 601 bytes
-rw-r--r--app/assets/images/emoji/iphone.png (renamed from public/-/emojis/1/iphone.png)bin695 -> 695 bytes
-rw-r--r--app/assets/images/emoji/island.png (renamed from public/-/emojis/1/island.png)bin1273 -> 1273 bytes
-rw-r--r--app/assets/images/emoji/izakaya_lantern.png (renamed from public/-/emojis/1/izakaya_lantern.png)bin1227 -> 1227 bytes
-rw-r--r--app/assets/images/emoji/jack_o_lantern.png (renamed from public/-/emojis/1/jack_o_lantern.png)bin2289 -> 2289 bytes
-rw-r--r--app/assets/images/emoji/japan.png (renamed from public/-/emojis/1/japan.png)bin539 -> 539 bytes
-rw-r--r--app/assets/images/emoji/japanese_castle.png (renamed from public/-/emojis/1/japanese_castle.png)bin1404 -> 1404 bytes
-rw-r--r--app/assets/images/emoji/japanese_goblin.png (renamed from public/-/emojis/1/japanese_goblin.png)bin1561 -> 1561 bytes
-rw-r--r--app/assets/images/emoji/japanese_ogre.png (renamed from public/-/emojis/1/japanese_ogre.png)bin1864 -> 1864 bytes
-rw-r--r--app/assets/images/emoji/jeans.png (renamed from public/-/emojis/1/jeans.png)bin1158 -> 1158 bytes
-rw-r--r--app/assets/images/emoji/joy.png (renamed from public/-/emojis/1/joy.png)bin1136 -> 1136 bytes
-rw-r--r--app/assets/images/emoji/joy_cat.png (renamed from public/-/emojis/1/joy_cat.png)bin1633 -> 1633 bytes
-rw-r--r--app/assets/images/emoji/joystick.png (renamed from public/-/emojis/1/joystick.png)bin1039 -> 1039 bytes
-rw-r--r--app/assets/images/emoji/juggling.png (renamed from public/-/emojis/1/juggling.png)bin1165 -> 1165 bytes
-rw-r--r--app/assets/images/emoji/juggling_tone1.png (renamed from public/-/emojis/1/juggling_tone1.png)bin1171 -> 1171 bytes
-rw-r--r--app/assets/images/emoji/juggling_tone2.png (renamed from public/-/emojis/1/juggling_tone2.png)bin1160 -> 1160 bytes
-rw-r--r--app/assets/images/emoji/juggling_tone3.png (renamed from public/-/emojis/1/juggling_tone3.png)bin1170 -> 1170 bytes
-rw-r--r--app/assets/images/emoji/juggling_tone4.png (renamed from public/-/emojis/1/juggling_tone4.png)bin1167 -> 1167 bytes
-rw-r--r--app/assets/images/emoji/juggling_tone5.png (renamed from public/-/emojis/1/juggling_tone5.png)bin1161 -> 1161 bytes
-rw-r--r--app/assets/images/emoji/kaaba.png (renamed from public/-/emojis/1/kaaba.png)bin1251 -> 1251 bytes
-rw-r--r--app/assets/images/emoji/key.png (renamed from public/-/emojis/1/key.png)bin770 -> 770 bytes
-rw-r--r--app/assets/images/emoji/key2.png (renamed from public/-/emojis/1/key2.png)bin593 -> 593 bytes
-rw-r--r--app/assets/images/emoji/keyboard.png (renamed from public/-/emojis/1/keyboard.png)bin429 -> 429 bytes
-rw-r--r--app/assets/images/emoji/kimono.png (renamed from public/-/emojis/1/kimono.png)bin1527 -> 1527 bytes
-rw-r--r--app/assets/images/emoji/kiss.png (renamed from public/-/emojis/1/kiss.png)bin842 -> 842 bytes
-rw-r--r--app/assets/images/emoji/kiss_mm.png (renamed from public/-/emojis/1/kiss_mm.png)bin1269 -> 1269 bytes
-rw-r--r--app/assets/images/emoji/kiss_ww.png (renamed from public/-/emojis/1/kiss_ww.png)bin1149 -> 1149 bytes
-rw-r--r--app/assets/images/emoji/kissing.png (renamed from public/-/emojis/1/kissing.png)bin738 -> 738 bytes
-rw-r--r--app/assets/images/emoji/kissing_cat.png (renamed from public/-/emojis/1/kissing_cat.png)bin1468 -> 1468 bytes
-rw-r--r--app/assets/images/emoji/kissing_closed_eyes.png (renamed from public/-/emojis/1/kissing_closed_eyes.png)bin888 -> 888 bytes
-rw-r--r--app/assets/images/emoji/kissing_heart.png (renamed from public/-/emojis/1/kissing_heart.png)bin843 -> 843 bytes
-rw-r--r--app/assets/images/emoji/kissing_smiling_eyes.png (renamed from public/-/emojis/1/kissing_smiling_eyes.png)bin648 -> 648 bytes
-rw-r--r--app/assets/images/emoji/kiwi.png (renamed from public/-/emojis/1/kiwi.png)bin1892 -> 1892 bytes
-rw-r--r--app/assets/images/emoji/knife.png (renamed from public/-/emojis/1/knife.png)bin616 -> 616 bytes
-rw-r--r--app/assets/images/emoji/koala.png (renamed from public/-/emojis/1/koala.png)bin1428 -> 1428 bytes
-rw-r--r--app/assets/images/emoji/koko.png (renamed from public/-/emojis/1/koko.png)bin266 -> 266 bytes
-rw-r--r--app/assets/images/emoji/label.png (renamed from public/-/emojis/1/label.png)bin669 -> 669 bytes
-rw-r--r--app/assets/images/emoji/large_blue_circle.png (renamed from public/-/emojis/1/large_blue_circle.png)bin371 -> 371 bytes
-rw-r--r--app/assets/images/emoji/large_blue_diamond.png (renamed from public/-/emojis/1/large_blue_diamond.png)bin245 -> 245 bytes
-rw-r--r--app/assets/images/emoji/large_orange_diamond.png (renamed from public/-/emojis/1/large_orange_diamond.png)bin248 -> 248 bytes
-rw-r--r--app/assets/images/emoji/last_quarter_moon.png (renamed from public/-/emojis/1/last_quarter_moon.png)bin1180 -> 1180 bytes
-rw-r--r--app/assets/images/emoji/last_quarter_moon_with_face.png (renamed from public/-/emojis/1/last_quarter_moon_with_face.png)bin1030 -> 1030 bytes
-rw-r--r--app/assets/images/emoji/laughing.png (renamed from public/-/emojis/1/laughing.png)bin901 -> 901 bytes
-rw-r--r--app/assets/images/emoji/leaves.png (renamed from public/-/emojis/1/leaves.png)bin993 -> 993 bytes
-rw-r--r--app/assets/images/emoji/ledger.png (renamed from public/-/emojis/1/ledger.png)bin1528 -> 1528 bytes
-rw-r--r--app/assets/images/emoji/left_facing_fist.png (renamed from public/-/emojis/1/left_facing_fist.png)bin972 -> 972 bytes
-rw-r--r--app/assets/images/emoji/left_facing_fist_tone1.png (renamed from public/-/emojis/1/left_facing_fist_tone1.png)bin960 -> 960 bytes
-rw-r--r--app/assets/images/emoji/left_facing_fist_tone2.png (renamed from public/-/emojis/1/left_facing_fist_tone2.png)bin972 -> 972 bytes
-rw-r--r--app/assets/images/emoji/left_facing_fist_tone3.png (renamed from public/-/emojis/1/left_facing_fist_tone3.png)bin960 -> 960 bytes
-rw-r--r--app/assets/images/emoji/left_facing_fist_tone4.png (renamed from public/-/emojis/1/left_facing_fist_tone4.png)bin960 -> 960 bytes
-rw-r--r--app/assets/images/emoji/left_facing_fist_tone5.png (renamed from public/-/emojis/1/left_facing_fist_tone5.png)bin976 -> 976 bytes
-rw-r--r--app/assets/images/emoji/left_luggage.png (renamed from public/-/emojis/1/left_luggage.png)bin576 -> 576 bytes
-rw-r--r--app/assets/images/emoji/left_right_arrow.png (renamed from public/-/emojis/1/left_right_arrow.png)bin495 -> 495 bytes
-rw-r--r--app/assets/images/emoji/leftwards_arrow_with_hook.png (renamed from public/-/emojis/1/leftwards_arrow_with_hook.png)bin643 -> 643 bytes
-rw-r--r--app/assets/images/emoji/lemon.png (renamed from public/-/emojis/1/lemon.png)bin1033 -> 1033 bytes
-rw-r--r--app/assets/images/emoji/leo.png (renamed from public/-/emojis/1/leo.png)bin745 -> 745 bytes
-rw-r--r--app/assets/images/emoji/leopard.png (renamed from public/-/emojis/1/leopard.png)bin2222 -> 2222 bytes
-rw-r--r--app/assets/images/emoji/level_slider.png (renamed from public/-/emojis/1/level_slider.png)bin454 -> 454 bytes
-rw-r--r--app/assets/images/emoji/levitate.png (renamed from public/-/emojis/1/levitate.png)bin914 -> 914 bytes
-rw-r--r--app/assets/images/emoji/libra.png (renamed from public/-/emojis/1/libra.png)bin657 -> 657 bytes
-rw-r--r--app/assets/images/emoji/lifter.png (renamed from public/-/emojis/1/lifter.png)bin1356 -> 1356 bytes
-rw-r--r--app/assets/images/emoji/lifter_tone1.png (renamed from public/-/emojis/1/lifter_tone1.png)bin1346 -> 1346 bytes
-rw-r--r--app/assets/images/emoji/lifter_tone2.png (renamed from public/-/emojis/1/lifter_tone2.png)bin1347 -> 1347 bytes
-rw-r--r--app/assets/images/emoji/lifter_tone3.png (renamed from public/-/emojis/1/lifter_tone3.png)bin1339 -> 1339 bytes
-rw-r--r--app/assets/images/emoji/lifter_tone4.png (renamed from public/-/emojis/1/lifter_tone4.png)bin1343 -> 1343 bytes
-rw-r--r--app/assets/images/emoji/lifter_tone5.png (renamed from public/-/emojis/1/lifter_tone5.png)bin1337 -> 1337 bytes
-rw-r--r--app/assets/images/emoji/light_rail.png (renamed from public/-/emojis/1/light_rail.png)bin902 -> 902 bytes
-rw-r--r--app/assets/images/emoji/link.png (renamed from public/-/emojis/1/link.png)bin477 -> 477 bytes
-rw-r--r--app/assets/images/emoji/lion_face.png (renamed from public/-/emojis/1/lion_face.png)bin1728 -> 1728 bytes
-rw-r--r--app/assets/images/emoji/lips.png (renamed from public/-/emojis/1/lips.png)bin599 -> 599 bytes
-rw-r--r--app/assets/images/emoji/lipstick.png (renamed from public/-/emojis/1/lipstick.png)bin549 -> 549 bytes
-rw-r--r--app/assets/images/emoji/lizard.png (renamed from public/-/emojis/1/lizard.png)bin1709 -> 1709 bytes
-rw-r--r--app/assets/images/emoji/lock.png (renamed from public/-/emojis/1/lock.png)bin986 -> 986 bytes
-rw-r--r--app/assets/images/emoji/lock_with_ink_pen.png (renamed from public/-/emojis/1/lock_with_ink_pen.png)bin1123 -> 1123 bytes
-rw-r--r--app/assets/images/emoji/lollipop.png (renamed from public/-/emojis/1/lollipop.png)bin2164 -> 2164 bytes
-rw-r--r--app/assets/images/emoji/loop.png (renamed from public/-/emojis/1/loop.png)bin550 -> 550 bytes
-rw-r--r--app/assets/images/emoji/loud_sound.png (renamed from public/-/emojis/1/loud_sound.png)bin977 -> 977 bytes
-rw-r--r--app/assets/images/emoji/loudspeaker.png (renamed from public/-/emojis/1/loudspeaker.png)bin1316 -> 1316 bytes
-rw-r--r--app/assets/images/emoji/love_hotel.png (renamed from public/-/emojis/1/love_hotel.png)bin372 -> 372 bytes
-rw-r--r--app/assets/images/emoji/love_letter.png (renamed from public/-/emojis/1/love_letter.png)bin923 -> 923 bytes
-rw-r--r--app/assets/images/emoji/low_brightness.png (renamed from public/-/emojis/1/low_brightness.png)bin431 -> 431 bytes
-rw-r--r--app/assets/images/emoji/lying_face.png (renamed from public/-/emojis/1/lying_face.png)bin1103 -> 1103 bytes
-rw-r--r--app/assets/images/emoji/m.png (renamed from public/-/emojis/1/m.png)bin500 -> 500 bytes
-rw-r--r--app/assets/images/emoji/mag.png (renamed from public/-/emojis/1/mag.png)bin1240 -> 1240 bytes
-rw-r--r--app/assets/images/emoji/mag_right.png (renamed from public/-/emojis/1/mag_right.png)bin1251 -> 1251 bytes
-rw-r--r--app/assets/images/emoji/mahjong.png (renamed from public/-/emojis/1/mahjong.png)bin951 -> 951 bytes
-rw-r--r--app/assets/images/emoji/mailbox.png (renamed from public/-/emojis/1/mailbox.png)bin1166 -> 1166 bytes
-rw-r--r--app/assets/images/emoji/mailbox_closed.png (renamed from public/-/emojis/1/mailbox_closed.png)bin1192 -> 1192 bytes
-rw-r--r--app/assets/images/emoji/mailbox_with_mail.png (renamed from public/-/emojis/1/mailbox_with_mail.png)bin1307 -> 1307 bytes
-rw-r--r--app/assets/images/emoji/mailbox_with_no_mail.png (renamed from public/-/emojis/1/mailbox_with_no_mail.png)bin960 -> 960 bytes
-rw-r--r--app/assets/images/emoji/man.png (renamed from public/-/emojis/1/man.png)bin1092 -> 1092 bytes
-rw-r--r--app/assets/images/emoji/man_dancing.png (renamed from public/-/emojis/1/man_dancing.png)bin1400 -> 1400 bytes
-rw-r--r--app/assets/images/emoji/man_dancing_tone1.png (renamed from public/-/emojis/1/man_dancing_tone1.png)bin1404 -> 1404 bytes
-rw-r--r--app/assets/images/emoji/man_dancing_tone2.png (renamed from public/-/emojis/1/man_dancing_tone2.png)bin1402 -> 1402 bytes
-rw-r--r--app/assets/images/emoji/man_dancing_tone3.png (renamed from public/-/emojis/1/man_dancing_tone3.png)bin1409 -> 1409 bytes
-rw-r--r--app/assets/images/emoji/man_dancing_tone4.png (renamed from public/-/emojis/1/man_dancing_tone4.png)bin1421 -> 1421 bytes
-rw-r--r--app/assets/images/emoji/man_dancing_tone5.png (renamed from public/-/emojis/1/man_dancing_tone5.png)bin1418 -> 1418 bytes
-rw-r--r--app/assets/images/emoji/man_in_tuxedo.png (renamed from public/-/emojis/1/man_in_tuxedo.png)bin1307 -> 1307 bytes
-rw-r--r--app/assets/images/emoji/man_in_tuxedo_tone1.png (renamed from public/-/emojis/1/man_in_tuxedo_tone1.png)bin1307 -> 1307 bytes
-rw-r--r--app/assets/images/emoji/man_in_tuxedo_tone2.png (renamed from public/-/emojis/1/man_in_tuxedo_tone2.png)bin1307 -> 1307 bytes
-rw-r--r--app/assets/images/emoji/man_in_tuxedo_tone3.png (renamed from public/-/emojis/1/man_in_tuxedo_tone3.png)bin1307 -> 1307 bytes
-rw-r--r--app/assets/images/emoji/man_in_tuxedo_tone4.png (renamed from public/-/emojis/1/man_in_tuxedo_tone4.png)bin1307 -> 1307 bytes
-rw-r--r--app/assets/images/emoji/man_in_tuxedo_tone5.png (renamed from public/-/emojis/1/man_in_tuxedo_tone5.png)bin1302 -> 1302 bytes
-rw-r--r--app/assets/images/emoji/man_tone1.png (renamed from public/-/emojis/1/man_tone1.png)bin1069 -> 1069 bytes
-rw-r--r--app/assets/images/emoji/man_tone2.png (renamed from public/-/emojis/1/man_tone2.png)bin1069 -> 1069 bytes
-rw-r--r--app/assets/images/emoji/man_tone3.png (renamed from public/-/emojis/1/man_tone3.png)bin1069 -> 1069 bytes
-rw-r--r--app/assets/images/emoji/man_tone4.png (renamed from public/-/emojis/1/man_tone4.png)bin1069 -> 1069 bytes
-rw-r--r--app/assets/images/emoji/man_tone5.png (renamed from public/-/emojis/1/man_tone5.png)bin1087 -> 1087 bytes
-rw-r--r--app/assets/images/emoji/man_with_gua_pi_mao.png (renamed from public/-/emojis/1/man_with_gua_pi_mao.png)bin1339 -> 1339 bytes
-rw-r--r--app/assets/images/emoji/man_with_gua_pi_mao_tone1.png (renamed from public/-/emojis/1/man_with_gua_pi_mao_tone1.png)bin1328 -> 1328 bytes
-rw-r--r--app/assets/images/emoji/man_with_gua_pi_mao_tone2.png (renamed from public/-/emojis/1/man_with_gua_pi_mao_tone2.png)bin1332 -> 1332 bytes
-rw-r--r--app/assets/images/emoji/man_with_gua_pi_mao_tone3.png (renamed from public/-/emojis/1/man_with_gua_pi_mao_tone3.png)bin1329 -> 1329 bytes
-rw-r--r--app/assets/images/emoji/man_with_gua_pi_mao_tone4.png (renamed from public/-/emojis/1/man_with_gua_pi_mao_tone4.png)bin1325 -> 1325 bytes
-rw-r--r--app/assets/images/emoji/man_with_gua_pi_mao_tone5.png (renamed from public/-/emojis/1/man_with_gua_pi_mao_tone5.png)bin1337 -> 1337 bytes
-rw-r--r--app/assets/images/emoji/man_with_turban.png (renamed from public/-/emojis/1/man_with_turban.png)bin1618 -> 1618 bytes
-rw-r--r--app/assets/images/emoji/man_with_turban_tone1.png (renamed from public/-/emojis/1/man_with_turban_tone1.png)bin1584 -> 1584 bytes
-rw-r--r--app/assets/images/emoji/man_with_turban_tone2.png (renamed from public/-/emojis/1/man_with_turban_tone2.png)bin1588 -> 1588 bytes
-rw-r--r--app/assets/images/emoji/man_with_turban_tone3.png (renamed from public/-/emojis/1/man_with_turban_tone3.png)bin1584 -> 1584 bytes
-rw-r--r--app/assets/images/emoji/man_with_turban_tone4.png (renamed from public/-/emojis/1/man_with_turban_tone4.png)bin1583 -> 1583 bytes
-rw-r--r--app/assets/images/emoji/man_with_turban_tone5.png (renamed from public/-/emojis/1/man_with_turban_tone5.png)bin1605 -> 1605 bytes
-rw-r--r--app/assets/images/emoji/mans_shoe.png (renamed from public/-/emojis/1/mans_shoe.png)bin1649 -> 1649 bytes
-rw-r--r--app/assets/images/emoji/map.png (renamed from public/-/emojis/1/map.png)bin2352 -> 2352 bytes
-rw-r--r--app/assets/images/emoji/maple_leaf.png (renamed from public/-/emojis/1/maple_leaf.png)bin1117 -> 1117 bytes
-rw-r--r--app/assets/images/emoji/martial_arts_uniform.png (renamed from public/-/emojis/1/martial_arts_uniform.png)bin1412 -> 1412 bytes
-rw-r--r--app/assets/images/emoji/mask.png (renamed from public/-/emojis/1/mask.png)bin1322 -> 1322 bytes
-rw-r--r--app/assets/images/emoji/massage.png (renamed from public/-/emojis/1/massage.png)bin1571 -> 1571 bytes
-rw-r--r--app/assets/images/emoji/massage_tone1.png (renamed from public/-/emojis/1/massage_tone1.png)bin1578 -> 1578 bytes
-rw-r--r--app/assets/images/emoji/massage_tone2.png (renamed from public/-/emojis/1/massage_tone2.png)bin1565 -> 1565 bytes
-rw-r--r--app/assets/images/emoji/massage_tone3.png (renamed from public/-/emojis/1/massage_tone3.png)bin1553 -> 1553 bytes
-rw-r--r--app/assets/images/emoji/massage_tone4.png (renamed from public/-/emojis/1/massage_tone4.png)bin1546 -> 1546 bytes
-rw-r--r--app/assets/images/emoji/massage_tone5.png (renamed from public/-/emojis/1/massage_tone5.png)bin1557 -> 1557 bytes
-rw-r--r--app/assets/images/emoji/meat_on_bone.png (renamed from public/-/emojis/1/meat_on_bone.png)bin1465 -> 1465 bytes
-rw-r--r--app/assets/images/emoji/medal.png (renamed from public/-/emojis/1/medal.png)bin1700 -> 1700 bytes
-rw-r--r--app/assets/images/emoji/mega.png (renamed from public/-/emojis/1/mega.png)bin1751 -> 1751 bytes
-rw-r--r--app/assets/images/emoji/melon.png (renamed from public/-/emojis/1/melon.png)bin2005 -> 2005 bytes
-rw-r--r--app/assets/images/emoji/menorah.png (renamed from public/-/emojis/1/menorah.png)bin1279 -> 1279 bytes
-rw-r--r--app/assets/images/emoji/mens.png (renamed from public/-/emojis/1/mens.png)bin561 -> 561 bytes
-rw-r--r--app/assets/images/emoji/metal.png (renamed from public/-/emojis/1/metal.png)bin894 -> 894 bytes
-rw-r--r--app/assets/images/emoji/metal_tone1.png (renamed from public/-/emojis/1/metal_tone1.png)bin894 -> 894 bytes
-rw-r--r--app/assets/images/emoji/metal_tone2.png (renamed from public/-/emojis/1/metal_tone2.png)bin888 -> 888 bytes
-rw-r--r--app/assets/images/emoji/metal_tone3.png (renamed from public/-/emojis/1/metal_tone3.png)bin894 -> 894 bytes
-rw-r--r--app/assets/images/emoji/metal_tone4.png (renamed from public/-/emojis/1/metal_tone4.png)bin888 -> 888 bytes
-rw-r--r--app/assets/images/emoji/metal_tone5.png (renamed from public/-/emojis/1/metal_tone5.png)bin894 -> 894 bytes
-rw-r--r--app/assets/images/emoji/metro.png (renamed from public/-/emojis/1/metro.png)bin1020 -> 1020 bytes
-rw-r--r--app/assets/images/emoji/microphone.png (renamed from public/-/emojis/1/microphone.png)bin1165 -> 1165 bytes
-rw-r--r--app/assets/images/emoji/microphone2.png (renamed from public/-/emojis/1/microphone2.png)bin839 -> 839 bytes
-rw-r--r--app/assets/images/emoji/microscope.png (renamed from public/-/emojis/1/microscope.png)bin1113 -> 1113 bytes
-rw-r--r--app/assets/images/emoji/middle_finger.png (renamed from public/-/emojis/1/middle_finger.png)bin893 -> 893 bytes
-rw-r--r--app/assets/images/emoji/middle_finger_tone1.png (renamed from public/-/emojis/1/middle_finger_tone1.png)bin892 -> 892 bytes
-rw-r--r--app/assets/images/emoji/middle_finger_tone2.png (renamed from public/-/emojis/1/middle_finger_tone2.png)bin892 -> 892 bytes
-rw-r--r--app/assets/images/emoji/middle_finger_tone3.png (renamed from public/-/emojis/1/middle_finger_tone3.png)bin892 -> 892 bytes
-rw-r--r--app/assets/images/emoji/middle_finger_tone4.png (renamed from public/-/emojis/1/middle_finger_tone4.png)bin892 -> 892 bytes
-rw-r--r--app/assets/images/emoji/middle_finger_tone5.png (renamed from public/-/emojis/1/middle_finger_tone5.png)bin892 -> 892 bytes
-rw-r--r--app/assets/images/emoji/military_medal.png (renamed from public/-/emojis/1/military_medal.png)bin949 -> 949 bytes
-rw-r--r--app/assets/images/emoji/milk.png (renamed from public/-/emojis/1/milk.png)bin1224 -> 1224 bytes
-rw-r--r--app/assets/images/emoji/milky_way.png (renamed from public/-/emojis/1/milky_way.png)bin622 -> 622 bytes
-rw-r--r--app/assets/images/emoji/minibus.png (renamed from public/-/emojis/1/minibus.png)bin1256 -> 1256 bytes
-rw-r--r--app/assets/images/emoji/minidisc.png (renamed from public/-/emojis/1/minidisc.png)bin522 -> 522 bytes
-rw-r--r--app/assets/images/emoji/mobile_phone_off.png (renamed from public/-/emojis/1/mobile_phone_off.png)bin621 -> 621 bytes
-rw-r--r--app/assets/images/emoji/money_mouth.png (renamed from public/-/emojis/1/money_mouth.png)bin967 -> 967 bytes
-rw-r--r--app/assets/images/emoji/money_with_wings.png (renamed from public/-/emojis/1/money_with_wings.png)bin2327 -> 2327 bytes
-rw-r--r--app/assets/images/emoji/moneybag.png (renamed from public/-/emojis/1/moneybag.png)bin2310 -> 2310 bytes
-rw-r--r--app/assets/images/emoji/monkey.png (renamed from public/-/emojis/1/monkey.png)bin1348 -> 1348 bytes
-rw-r--r--app/assets/images/emoji/monkey_face.png (renamed from public/-/emojis/1/monkey_face.png)bin1022 -> 1022 bytes
-rw-r--r--app/assets/images/emoji/monorail.png (renamed from public/-/emojis/1/monorail.png)bin1068 -> 1068 bytes
-rw-r--r--app/assets/images/emoji/mortar_board.png (renamed from public/-/emojis/1/mortar_board.png)bin710 -> 710 bytes
-rw-r--r--app/assets/images/emoji/mosque.png (renamed from public/-/emojis/1/mosque.png)bin984 -> 984 bytes
-rw-r--r--app/assets/images/emoji/motor_scooter.png (renamed from public/-/emojis/1/motor_scooter.png)bin1207 -> 1207 bytes
-rw-r--r--app/assets/images/emoji/motorboat.png (renamed from public/-/emojis/1/motorboat.png)bin990 -> 990 bytes
-rw-r--r--app/assets/images/emoji/motorcycle.png (renamed from public/-/emojis/1/motorcycle.png)bin2081 -> 2081 bytes
-rw-r--r--app/assets/images/emoji/motorway.png (renamed from public/-/emojis/1/motorway.png)bin1102 -> 1102 bytes
-rw-r--r--app/assets/images/emoji/mount_fuji.png (renamed from public/-/emojis/1/mount_fuji.png)bin881 -> 881 bytes
-rw-r--r--app/assets/images/emoji/mountain.png (renamed from public/-/emojis/1/mountain.png)bin1409 -> 1409 bytes
-rw-r--r--app/assets/images/emoji/mountain_bicyclist.png (renamed from public/-/emojis/1/mountain_bicyclist.png)bin2288 -> 2288 bytes
-rw-r--r--app/assets/images/emoji/mountain_bicyclist_tone1.png (renamed from public/-/emojis/1/mountain_bicyclist_tone1.png)bin2294 -> 2294 bytes
-rw-r--r--app/assets/images/emoji/mountain_bicyclist_tone2.png (renamed from public/-/emojis/1/mountain_bicyclist_tone2.png)bin2298 -> 2298 bytes
-rw-r--r--app/assets/images/emoji/mountain_bicyclist_tone3.png (renamed from public/-/emojis/1/mountain_bicyclist_tone3.png)bin2284 -> 2284 bytes
-rw-r--r--app/assets/images/emoji/mountain_bicyclist_tone4.png (renamed from public/-/emojis/1/mountain_bicyclist_tone4.png)bin2288 -> 2288 bytes
-rw-r--r--app/assets/images/emoji/mountain_bicyclist_tone5.png (renamed from public/-/emojis/1/mountain_bicyclist_tone5.png)bin2281 -> 2281 bytes
-rw-r--r--app/assets/images/emoji/mountain_cableway.png (renamed from public/-/emojis/1/mountain_cableway.png)bin811 -> 811 bytes
-rw-r--r--app/assets/images/emoji/mountain_railway.png (renamed from public/-/emojis/1/mountain_railway.png)bin1317 -> 1317 bytes
-rw-r--r--app/assets/images/emoji/mountain_snow.png (renamed from public/-/emojis/1/mountain_snow.png)bin1193 -> 1193 bytes
-rw-r--r--app/assets/images/emoji/mouse.png (renamed from public/-/emojis/1/mouse.png)bin1245 -> 1245 bytes
-rw-r--r--app/assets/images/emoji/mouse2.png (renamed from public/-/emojis/1/mouse2.png)bin1324 -> 1324 bytes
-rw-r--r--app/assets/images/emoji/mouse_three_button.png (renamed from public/-/emojis/1/mouse_three_button.png)bin934 -> 934 bytes
-rw-r--r--app/assets/images/emoji/movie_camera.png (renamed from public/-/emojis/1/movie_camera.png)bin576 -> 576 bytes
-rw-r--r--app/assets/images/emoji/moyai.png (renamed from public/-/emojis/1/moyai.png)bin1593 -> 1593 bytes
-rw-r--r--app/assets/images/emoji/mrs_claus.png (renamed from public/-/emojis/1/mrs_claus.png)bin3338 -> 3338 bytes
-rw-r--r--app/assets/images/emoji/mrs_claus_tone1.png (renamed from public/-/emojis/1/mrs_claus_tone1.png)bin1999 -> 1999 bytes
-rw-r--r--app/assets/images/emoji/mrs_claus_tone2.png (renamed from public/-/emojis/1/mrs_claus_tone2.png)bin2006 -> 2006 bytes
-rw-r--r--app/assets/images/emoji/mrs_claus_tone3.png (renamed from public/-/emojis/1/mrs_claus_tone3.png)bin2017 -> 2017 bytes
-rw-r--r--app/assets/images/emoji/mrs_claus_tone4.png (renamed from public/-/emojis/1/mrs_claus_tone4.png)bin2016 -> 2016 bytes
-rw-r--r--app/assets/images/emoji/mrs_claus_tone5.png (renamed from public/-/emojis/1/mrs_claus_tone5.png)bin2016 -> 2016 bytes
-rw-r--r--app/assets/images/emoji/muscle.png (renamed from public/-/emojis/1/muscle.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/muscle_tone1.png (renamed from public/-/emojis/1/muscle_tone1.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/muscle_tone2.png (renamed from public/-/emojis/1/muscle_tone2.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/muscle_tone3.png (renamed from public/-/emojis/1/muscle_tone3.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/muscle_tone4.png (renamed from public/-/emojis/1/muscle_tone4.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/muscle_tone5.png (renamed from public/-/emojis/1/muscle_tone5.png)bin1012 -> 1012 bytes
-rw-r--r--app/assets/images/emoji/mushroom.png (renamed from public/-/emojis/1/mushroom.png)bin1024 -> 1024 bytes
-rw-r--r--app/assets/images/emoji/musical_keyboard.png (renamed from public/-/emojis/1/musical_keyboard.png)bin1695 -> 1695 bytes
-rw-r--r--app/assets/images/emoji/musical_note.png (renamed from public/-/emojis/1/musical_note.png)bin419 -> 419 bytes
-rw-r--r--app/assets/images/emoji/musical_score.png (renamed from public/-/emojis/1/musical_score.png)bin1289 -> 1289 bytes
-rw-r--r--app/assets/images/emoji/mute.png (renamed from public/-/emojis/1/mute.png)bin823 -> 823 bytes
-rw-r--r--app/assets/images/emoji/nail_care.png (renamed from public/-/emojis/1/nail_care.png)bin1639 -> 1639 bytes
-rw-r--r--app/assets/images/emoji/nail_care_tone1.png (renamed from public/-/emojis/1/nail_care_tone1.png)bin1712 -> 1712 bytes
-rw-r--r--app/assets/images/emoji/nail_care_tone2.png (renamed from public/-/emojis/1/nail_care_tone2.png)bin1711 -> 1711 bytes
-rw-r--r--app/assets/images/emoji/nail_care_tone3.png (renamed from public/-/emojis/1/nail_care_tone3.png)bin1727 -> 1727 bytes
-rw-r--r--app/assets/images/emoji/nail_care_tone4.png (renamed from public/-/emojis/1/nail_care_tone4.png)bin1728 -> 1728 bytes
-rw-r--r--app/assets/images/emoji/nail_care_tone5.png (renamed from public/-/emojis/1/nail_care_tone5.png)bin1716 -> 1716 bytes
-rw-r--r--app/assets/images/emoji/name_badge.png (renamed from public/-/emojis/1/name_badge.png)bin632 -> 632 bytes
-rw-r--r--app/assets/images/emoji/nauseated_face.png (renamed from public/-/emojis/1/nauseated_face.png)bin965 -> 965 bytes
-rw-r--r--app/assets/images/emoji/necktie.png (renamed from public/-/emojis/1/necktie.png)bin995 -> 995 bytes
-rw-r--r--app/assets/images/emoji/negative_squared_cross_mark.png (renamed from public/-/emojis/1/negative_squared_cross_mark.png)bin370 -> 370 bytes
-rw-r--r--app/assets/images/emoji/nerd.png (renamed from public/-/emojis/1/nerd.png)bin975 -> 975 bytes
-rw-r--r--app/assets/images/emoji/neutral_face.png (renamed from public/-/emojis/1/neutral_face.png)bin517 -> 517 bytes
-rw-r--r--app/assets/images/emoji/new.png (renamed from public/-/emojis/1/new.png)bin486 -> 486 bytes
-rw-r--r--app/assets/images/emoji/new_moon.png (renamed from public/-/emojis/1/new_moon.png)bin829 -> 829 bytes
-rw-r--r--app/assets/images/emoji/new_moon_with_face.png (renamed from public/-/emojis/1/new_moon_with_face.png)bin975 -> 975 bytes
-rw-r--r--app/assets/images/emoji/newspaper.png (renamed from public/-/emojis/1/newspaper.png)bin1178 -> 1178 bytes
-rw-r--r--app/assets/images/emoji/newspaper2.png (renamed from public/-/emojis/1/newspaper2.png)bin1046 -> 1046 bytes
-rw-r--r--app/assets/images/emoji/ng.png (renamed from public/-/emojis/1/ng.png)bin445 -> 445 bytes
-rw-r--r--app/assets/images/emoji/night_with_stars.png (renamed from public/-/emojis/1/night_with_stars.png)bin835 -> 835 bytes
-rw-r--r--app/assets/images/emoji/nine.png (renamed from public/-/emojis/1/nine.png)bin607 -> 607 bytes
-rw-r--r--app/assets/images/emoji/no_bell.png (renamed from public/-/emojis/1/no_bell.png)bin823 -> 823 bytes
-rw-r--r--app/assets/images/emoji/no_bicycles.png (renamed from public/-/emojis/1/no_bicycles.png)bin998 -> 998 bytes
-rw-r--r--app/assets/images/emoji/no_entry.png (renamed from public/-/emojis/1/no_entry.png)bin377 -> 377 bytes
-rw-r--r--app/assets/images/emoji/no_entry_sign.png (renamed from public/-/emojis/1/no_entry_sign.png)bin555 -> 555 bytes
-rw-r--r--app/assets/images/emoji/no_good.png (renamed from public/-/emojis/1/no_good.png)bin1750 -> 1750 bytes
-rw-r--r--app/assets/images/emoji/no_good_tone1.png (renamed from public/-/emojis/1/no_good_tone1.png)bin1767 -> 1767 bytes
-rw-r--r--app/assets/images/emoji/no_good_tone2.png (renamed from public/-/emojis/1/no_good_tone2.png)bin1756 -> 1756 bytes
-rw-r--r--app/assets/images/emoji/no_good_tone3.png (renamed from public/-/emojis/1/no_good_tone3.png)bin1766 -> 1766 bytes
-rw-r--r--app/assets/images/emoji/no_good_tone4.png (renamed from public/-/emojis/1/no_good_tone4.png)bin1782 -> 1782 bytes
-rw-r--r--app/assets/images/emoji/no_good_tone5.png (renamed from public/-/emojis/1/no_good_tone5.png)bin1784 -> 1784 bytes
-rw-r--r--app/assets/images/emoji/no_mobile_phones.png (renamed from public/-/emojis/1/no_mobile_phones.png)bin790 -> 790 bytes
-rw-r--r--app/assets/images/emoji/no_mouth.png (renamed from public/-/emojis/1/no_mouth.png)bin465 -> 465 bytes
-rw-r--r--app/assets/images/emoji/no_pedestrians.png (renamed from public/-/emojis/1/no_pedestrians.png)bin875 -> 875 bytes
-rw-r--r--app/assets/images/emoji/no_smoking.png (renamed from public/-/emojis/1/no_smoking.png)bin1136 -> 1136 bytes
-rw-r--r--app/assets/images/emoji/non-potable_water.png (renamed from public/-/emojis/1/non-potable_water.png)bin827 -> 827 bytes
-rw-r--r--app/assets/images/emoji/nose.png (renamed from public/-/emojis/1/nose.png)bin703 -> 703 bytes
-rw-r--r--app/assets/images/emoji/nose_tone1.png (renamed from public/-/emojis/1/nose_tone1.png)bin703 -> 703 bytes
-rw-r--r--app/assets/images/emoji/nose_tone2.png (renamed from public/-/emojis/1/nose_tone2.png)bin703 -> 703 bytes
-rw-r--r--app/assets/images/emoji/nose_tone3.png (renamed from public/-/emojis/1/nose_tone3.png)bin703 -> 703 bytes
-rw-r--r--app/assets/images/emoji/nose_tone4.png (renamed from public/-/emojis/1/nose_tone4.png)bin703 -> 703 bytes
-rw-r--r--app/assets/images/emoji/nose_tone5.png (renamed from public/-/emojis/1/nose_tone5.png)bin703 -> 703 bytes
-rw-r--r--app/assets/images/emoji/notebook.png (renamed from public/-/emojis/1/notebook.png)bin1215 -> 1215 bytes
-rw-r--r--app/assets/images/emoji/notebook_with_decorative_cover.png (renamed from public/-/emojis/1/notebook_with_decorative_cover.png)bin1782 -> 1782 bytes
-rw-r--r--app/assets/images/emoji/notepad_spiral.png (renamed from public/-/emojis/1/notepad_spiral.png)bin1377 -> 1377 bytes
-rw-r--r--app/assets/images/emoji/notes.png (renamed from public/-/emojis/1/notes.png)bin501 -> 501 bytes
-rw-r--r--app/assets/images/emoji/nut_and_bolt.png (renamed from public/-/emojis/1/nut_and_bolt.png)bin899 -> 899 bytes
-rw-r--r--app/assets/images/emoji/o.png (renamed from public/-/emojis/1/o.png)bin475 -> 475 bytes
-rw-r--r--app/assets/images/emoji/o2.png (renamed from public/-/emojis/1/o2.png)bin425 -> 425 bytes
-rw-r--r--app/assets/images/emoji/ocean.png (renamed from public/-/emojis/1/ocean.png)bin1018 -> 1018 bytes
-rw-r--r--app/assets/images/emoji/octagonal_sign.png (renamed from public/-/emojis/1/octagonal_sign.png)bin260 -> 260 bytes
-rw-r--r--app/assets/images/emoji/octopus.png (renamed from public/-/emojis/1/octopus.png)bin1188 -> 1188 bytes
-rw-r--r--app/assets/images/emoji/oden.png (renamed from public/-/emojis/1/oden.png)bin794 -> 794 bytes
-rw-r--r--app/assets/images/emoji/office.png (renamed from public/-/emojis/1/office.png)bin524 -> 524 bytes
-rw-r--r--app/assets/images/emoji/oil.png (renamed from public/-/emojis/1/oil.png)bin674 -> 674 bytes
-rw-r--r--app/assets/images/emoji/ok.png (renamed from public/-/emojis/1/ok.png)bin511 -> 511 bytes
-rw-r--r--app/assets/images/emoji/ok_hand.png (renamed from public/-/emojis/1/ok_hand.png)bin979 -> 979 bytes
-rw-r--r--app/assets/images/emoji/ok_hand_tone1.png (renamed from public/-/emojis/1/ok_hand_tone1.png)bin979 -> 979 bytes
-rw-r--r--app/assets/images/emoji/ok_hand_tone2.png (renamed from public/-/emojis/1/ok_hand_tone2.png)bin979 -> 979 bytes
-rw-r--r--app/assets/images/emoji/ok_hand_tone3.png (renamed from public/-/emojis/1/ok_hand_tone3.png)bin979 -> 979 bytes
-rw-r--r--app/assets/images/emoji/ok_hand_tone4.png (renamed from public/-/emojis/1/ok_hand_tone4.png)bin979 -> 979 bytes
-rw-r--r--app/assets/images/emoji/ok_hand_tone5.png (renamed from public/-/emojis/1/ok_hand_tone5.png)bin979 -> 979 bytes
-rw-r--r--app/assets/images/emoji/ok_woman.png (renamed from public/-/emojis/1/ok_woman.png)bin1696 -> 1696 bytes
-rw-r--r--app/assets/images/emoji/ok_woman_tone1.png (renamed from public/-/emojis/1/ok_woman_tone1.png)bin1696 -> 1696 bytes
-rw-r--r--app/assets/images/emoji/ok_woman_tone2.png (renamed from public/-/emojis/1/ok_woman_tone2.png)bin1694 -> 1694 bytes
-rw-r--r--app/assets/images/emoji/ok_woman_tone3.png (renamed from public/-/emojis/1/ok_woman_tone3.png)bin1675 -> 1675 bytes
-rw-r--r--app/assets/images/emoji/ok_woman_tone4.png (renamed from public/-/emojis/1/ok_woman_tone4.png)bin1684 -> 1684 bytes
-rw-r--r--app/assets/images/emoji/ok_woman_tone5.png (renamed from public/-/emojis/1/ok_woman_tone5.png)bin1696 -> 1696 bytes
-rw-r--r--app/assets/images/emoji/older_man.png (renamed from public/-/emojis/1/older_man.png)bin1253 -> 1253 bytes
-rw-r--r--app/assets/images/emoji/older_man_tone1.png (renamed from public/-/emojis/1/older_man_tone1.png)bin1253 -> 1253 bytes
-rw-r--r--app/assets/images/emoji/older_man_tone2.png (renamed from public/-/emojis/1/older_man_tone2.png)bin1253 -> 1253 bytes
-rw-r--r--app/assets/images/emoji/older_man_tone3.png (renamed from public/-/emojis/1/older_man_tone3.png)bin1253 -> 1253 bytes
-rw-r--r--app/assets/images/emoji/older_man_tone4.png (renamed from public/-/emojis/1/older_man_tone4.png)bin1254 -> 1254 bytes
-rw-r--r--app/assets/images/emoji/older_man_tone5.png (renamed from public/-/emojis/1/older_man_tone5.png)bin1254 -> 1254 bytes
-rw-r--r--app/assets/images/emoji/older_woman.png (renamed from public/-/emojis/1/older_woman.png)bin1472 -> 1472 bytes
-rw-r--r--app/assets/images/emoji/older_woman_tone1.png (renamed from public/-/emojis/1/older_woman_tone1.png)bin1562 -> 1562 bytes
-rw-r--r--app/assets/images/emoji/older_woman_tone2.png (renamed from public/-/emojis/1/older_woman_tone2.png)bin1564 -> 1564 bytes
-rw-r--r--app/assets/images/emoji/older_woman_tone3.png (renamed from public/-/emojis/1/older_woman_tone3.png)bin1555 -> 1555 bytes
-rw-r--r--app/assets/images/emoji/older_woman_tone4.png (renamed from public/-/emojis/1/older_woman_tone4.png)bin1562 -> 1562 bytes
-rw-r--r--app/assets/images/emoji/older_woman_tone5.png (renamed from public/-/emojis/1/older_woman_tone5.png)bin1544 -> 1544 bytes
-rw-r--r--app/assets/images/emoji/om_symbol.png (renamed from public/-/emojis/1/om_symbol.png)bin773 -> 773 bytes
-rw-r--r--app/assets/images/emoji/on.png (renamed from public/-/emojis/1/on.png)bin459 -> 459 bytes
-rw-r--r--app/assets/images/emoji/oncoming_automobile.png (renamed from public/-/emojis/1/oncoming_automobile.png)bin1238 -> 1238 bytes
-rw-r--r--app/assets/images/emoji/oncoming_bus.png (renamed from public/-/emojis/1/oncoming_bus.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/oncoming_police_car.png (renamed from public/-/emojis/1/oncoming_police_car.png)bin1547 -> 1547 bytes
-rw-r--r--app/assets/images/emoji/oncoming_taxi.png (renamed from public/-/emojis/1/oncoming_taxi.png)bin1405 -> 1405 bytes
-rw-r--r--app/assets/images/emoji/one.png (renamed from public/-/emojis/1/one.png)bin442 -> 442 bytes
-rw-r--r--app/assets/images/emoji/open_file_folder.png (renamed from public/-/emojis/1/open_file_folder.png)bin755 -> 755 bytes
-rw-r--r--app/assets/images/emoji/open_hands.png (renamed from public/-/emojis/1/open_hands.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/open_hands_tone1.png (renamed from public/-/emojis/1/open_hands_tone1.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/open_hands_tone2.png (renamed from public/-/emojis/1/open_hands_tone2.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/open_hands_tone3.png (renamed from public/-/emojis/1/open_hands_tone3.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/open_hands_tone4.png (renamed from public/-/emojis/1/open_hands_tone4.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/open_hands_tone5.png (renamed from public/-/emojis/1/open_hands_tone5.png)bin1053 -> 1053 bytes
-rw-r--r--app/assets/images/emoji/open_mouth.png (renamed from public/-/emojis/1/open_mouth.png)bin575 -> 575 bytes
-rw-r--r--app/assets/images/emoji/ophiuchus.png (renamed from public/-/emojis/1/ophiuchus.png)bin723 -> 723 bytes
-rw-r--r--app/assets/images/emoji/orange_book.png (renamed from public/-/emojis/1/orange_book.png)bin1329 -> 1329 bytes
-rw-r--r--app/assets/images/emoji/orthodox_cross.png (renamed from public/-/emojis/1/orthodox_cross.png)bin239 -> 239 bytes
-rw-r--r--app/assets/images/emoji/outbox_tray.png (renamed from public/-/emojis/1/outbox_tray.png)bin1002 -> 1002 bytes
-rw-r--r--app/assets/images/emoji/owl.png (renamed from public/-/emojis/1/owl.png)bin2045 -> 2045 bytes
-rw-r--r--app/assets/images/emoji/ox.png (renamed from public/-/emojis/1/ox.png)bin1436 -> 1436 bytes
-rw-r--r--app/assets/images/emoji/package.png (renamed from public/-/emojis/1/package.png)bin950 -> 950 bytes
-rw-r--r--app/assets/images/emoji/page_facing_up.png (renamed from public/-/emojis/1/page_facing_up.png)bin1110 -> 1110 bytes
-rw-r--r--app/assets/images/emoji/page_with_curl.png (renamed from public/-/emojis/1/page_with_curl.png)bin1157 -> 1157 bytes
-rw-r--r--app/assets/images/emoji/pager.png (renamed from public/-/emojis/1/pager.png)bin553 -> 553 bytes
-rw-r--r--app/assets/images/emoji/paintbrush.png (renamed from public/-/emojis/1/paintbrush.png)bin950 -> 950 bytes
-rw-r--r--app/assets/images/emoji/palm_tree.png (renamed from public/-/emojis/1/palm_tree.png)bin1450 -> 1450 bytes
-rw-r--r--app/assets/images/emoji/pancakes.png (renamed from public/-/emojis/1/pancakes.png)bin3661 -> 3661 bytes
-rw-r--r--app/assets/images/emoji/panda_face.png (renamed from public/-/emojis/1/panda_face.png)bin1478 -> 1478 bytes
-rw-r--r--app/assets/images/emoji/paperclip.png (renamed from public/-/emojis/1/paperclip.png)bin439 -> 439 bytes
-rw-r--r--app/assets/images/emoji/paperclips.png (renamed from public/-/emojis/1/paperclips.png)bin642 -> 642 bytes
-rw-r--r--app/assets/images/emoji/park.png (renamed from public/-/emojis/1/park.png)bin929 -> 929 bytes
-rw-r--r--app/assets/images/emoji/parking.png (renamed from public/-/emojis/1/parking.png)bin385 -> 385 bytes
-rw-r--r--app/assets/images/emoji/part_alternation_mark.png (renamed from public/-/emojis/1/part_alternation_mark.png)bin521 -> 521 bytes
-rw-r--r--app/assets/images/emoji/partly_sunny.png (renamed from public/-/emojis/1/partly_sunny.png)bin977 -> 977 bytes
-rw-r--r--app/assets/images/emoji/passport_control.png (renamed from public/-/emojis/1/passport_control.png)bin683 -> 683 bytes
-rw-r--r--app/assets/images/emoji/pause_button.png (renamed from public/-/emojis/1/pause_button.png)bin395 -> 395 bytes
-rw-r--r--app/assets/images/emoji/peace.png (renamed from public/-/emojis/1/peace.png)bin933 -> 933 bytes
-rw-r--r--app/assets/images/emoji/peach.png (renamed from public/-/emojis/1/peach.png)bin1189 -> 1189 bytes
-rw-r--r--app/assets/images/emoji/peanuts.png (renamed from public/-/emojis/1/peanuts.png)bin3266 -> 3266 bytes
-rw-r--r--app/assets/images/emoji/pear.png (renamed from public/-/emojis/1/pear.png)bin747 -> 747 bytes
-rw-r--r--app/assets/images/emoji/pen_ballpoint.png (renamed from public/-/emojis/1/pen_ballpoint.png)bin696 -> 696 bytes
-rw-r--r--app/assets/images/emoji/pen_fountain.png (renamed from public/-/emojis/1/pen_fountain.png)bin623 -> 623 bytes
-rw-r--r--app/assets/images/emoji/pencil.png (renamed from public/-/emojis/1/pencil.png)bin1624 -> 1624 bytes
-rw-r--r--app/assets/images/emoji/pencil2.png (renamed from public/-/emojis/1/pencil2.png)bin654 -> 654 bytes
-rw-r--r--app/assets/images/emoji/penguin.png (renamed from public/-/emojis/1/penguin.png)bin1034 -> 1034 bytes
-rw-r--r--app/assets/images/emoji/pensive.png (renamed from public/-/emojis/1/pensive.png)bin718 -> 718 bytes
-rw-r--r--app/assets/images/emoji/performing_arts.png (renamed from public/-/emojis/1/performing_arts.png)bin1971 -> 1971 bytes
-rw-r--r--app/assets/images/emoji/persevere.png (renamed from public/-/emojis/1/persevere.png)bin891 -> 891 bytes
-rw-r--r--app/assets/images/emoji/person_frowning.png (renamed from public/-/emojis/1/person_frowning.png)bin1148 -> 1148 bytes
-rw-r--r--app/assets/images/emoji/person_frowning_tone1.png (renamed from public/-/emojis/1/person_frowning_tone1.png)bin1141 -> 1141 bytes
-rw-r--r--app/assets/images/emoji/person_frowning_tone2.png (renamed from public/-/emojis/1/person_frowning_tone2.png)bin1141 -> 1141 bytes
-rw-r--r--app/assets/images/emoji/person_frowning_tone3.png (renamed from public/-/emojis/1/person_frowning_tone3.png)bin1141 -> 1141 bytes
-rw-r--r--app/assets/images/emoji/person_frowning_tone4.png (renamed from public/-/emojis/1/person_frowning_tone4.png)bin1109 -> 1109 bytes
-rw-r--r--app/assets/images/emoji/person_frowning_tone5.png (renamed from public/-/emojis/1/person_frowning_tone5.png)bin1114 -> 1114 bytes
-rw-r--r--app/assets/images/emoji/person_with_blond_hair.png (renamed from public/-/emojis/1/person_with_blond_hair.png)bin1205 -> 1205 bytes
-rw-r--r--app/assets/images/emoji/person_with_blond_hair_tone1.png (renamed from public/-/emojis/1/person_with_blond_hair_tone1.png)bin1181 -> 1181 bytes
-rw-r--r--app/assets/images/emoji/person_with_blond_hair_tone2.png (renamed from public/-/emojis/1/person_with_blond_hair_tone2.png)bin1181 -> 1181 bytes
-rw-r--r--app/assets/images/emoji/person_with_blond_hair_tone3.png (renamed from public/-/emojis/1/person_with_blond_hair_tone3.png)bin1181 -> 1181 bytes
-rw-r--r--app/assets/images/emoji/person_with_blond_hair_tone4.png (renamed from public/-/emojis/1/person_with_blond_hair_tone4.png)bin1189 -> 1189 bytes
-rw-r--r--app/assets/images/emoji/person_with_blond_hair_tone5.png (renamed from public/-/emojis/1/person_with_blond_hair_tone5.png)bin1214 -> 1214 bytes
-rw-r--r--app/assets/images/emoji/person_with_pouting_face.png (renamed from public/-/emojis/1/person_with_pouting_face.png)bin1297 -> 1297 bytes
-rw-r--r--app/assets/images/emoji/person_with_pouting_face_tone1.png (renamed from public/-/emojis/1/person_with_pouting_face_tone1.png)bin1309 -> 1309 bytes
-rw-r--r--app/assets/images/emoji/person_with_pouting_face_tone2.png (renamed from public/-/emojis/1/person_with_pouting_face_tone2.png)bin1292 -> 1292 bytes
-rw-r--r--app/assets/images/emoji/person_with_pouting_face_tone3.png (renamed from public/-/emojis/1/person_with_pouting_face_tone3.png)bin1305 -> 1305 bytes
-rw-r--r--app/assets/images/emoji/person_with_pouting_face_tone4.png (renamed from public/-/emojis/1/person_with_pouting_face_tone4.png)bin1296 -> 1296 bytes
-rw-r--r--app/assets/images/emoji/person_with_pouting_face_tone5.png (renamed from public/-/emojis/1/person_with_pouting_face_tone5.png)bin1303 -> 1303 bytes
-rw-r--r--app/assets/images/emoji/pick.png (renamed from public/-/emojis/1/pick.png)bin1023 -> 1023 bytes
-rw-r--r--app/assets/images/emoji/pig.png (renamed from public/-/emojis/1/pig.png)bin1138 -> 1138 bytes
-rw-r--r--app/assets/images/emoji/pig2.png (renamed from public/-/emojis/1/pig2.png)bin1548 -> 1548 bytes
-rw-r--r--app/assets/images/emoji/pig_nose.png (renamed from public/-/emojis/1/pig_nose.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/pill.png (renamed from public/-/emojis/1/pill.png)bin442 -> 442 bytes
-rw-r--r--app/assets/images/emoji/pineapple.png (renamed from public/-/emojis/1/pineapple.png)bin1642 -> 1642 bytes
-rw-r--r--app/assets/images/emoji/ping_pong.png (renamed from public/-/emojis/1/ping_pong.png)bin823 -> 823 bytes
-rw-r--r--app/assets/images/emoji/pisces.png (renamed from public/-/emojis/1/pisces.png)bin678 -> 678 bytes
-rw-r--r--app/assets/images/emoji/pizza.png (renamed from public/-/emojis/1/pizza.png)bin2008 -> 2008 bytes
-rw-r--r--app/assets/images/emoji/place_of_worship.png (renamed from public/-/emojis/1/place_of_worship.png)bin487 -> 487 bytes
-rw-r--r--app/assets/images/emoji/play_pause.png (renamed from public/-/emojis/1/play_pause.png)bin509 -> 509 bytes
-rw-r--r--app/assets/images/emoji/point_down.png (renamed from public/-/emojis/1/point_down.png)bin853 -> 853 bytes
-rw-r--r--app/assets/images/emoji/point_down_tone1.png (renamed from public/-/emojis/1/point_down_tone1.png)bin856 -> 856 bytes
-rw-r--r--app/assets/images/emoji/point_down_tone2.png (renamed from public/-/emojis/1/point_down_tone2.png)bin856 -> 856 bytes
-rw-r--r--app/assets/images/emoji/point_down_tone3.png (renamed from public/-/emojis/1/point_down_tone3.png)bin858 -> 858 bytes
-rw-r--r--app/assets/images/emoji/point_down_tone4.png (renamed from public/-/emojis/1/point_down_tone4.png)bin856 -> 856 bytes
-rw-r--r--app/assets/images/emoji/point_down_tone5.png (renamed from public/-/emojis/1/point_down_tone5.png)bin856 -> 856 bytes
-rw-r--r--app/assets/images/emoji/point_left.png (renamed from public/-/emojis/1/point_left.png)bin825 -> 825 bytes
-rw-r--r--app/assets/images/emoji/point_left_tone1.png (renamed from public/-/emojis/1/point_left_tone1.png)bin832 -> 832 bytes
-rw-r--r--app/assets/images/emoji/point_left_tone2.png (renamed from public/-/emojis/1/point_left_tone2.png)bin830 -> 830 bytes
-rw-r--r--app/assets/images/emoji/point_left_tone3.png (renamed from public/-/emojis/1/point_left_tone3.png)bin830 -> 830 bytes
-rw-r--r--app/assets/images/emoji/point_left_tone4.png (renamed from public/-/emojis/1/point_left_tone4.png)bin830 -> 830 bytes
-rw-r--r--app/assets/images/emoji/point_left_tone5.png (renamed from public/-/emojis/1/point_left_tone5.png)bin832 -> 832 bytes
-rw-r--r--app/assets/images/emoji/point_right.png (renamed from public/-/emojis/1/point_right.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/point_right_tone1.png (renamed from public/-/emojis/1/point_right_tone1.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/point_right_tone2.png (renamed from public/-/emojis/1/point_right_tone2.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/point_right_tone3.png (renamed from public/-/emojis/1/point_right_tone3.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/point_right_tone4.png (renamed from public/-/emojis/1/point_right_tone4.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/point_right_tone5.png (renamed from public/-/emojis/1/point_right_tone5.png)bin805 -> 805 bytes
-rw-r--r--app/assets/images/emoji/point_up.png (renamed from public/-/emojis/1/point_up.png)bin819 -> 819 bytes
-rw-r--r--app/assets/images/emoji/point_up_2.png (renamed from public/-/emojis/1/point_up_2.png)bin822 -> 822 bytes
-rw-r--r--app/assets/images/emoji/point_up_2_tone1.png (renamed from public/-/emojis/1/point_up_2_tone1.png)bin822 -> 822 bytes
-rw-r--r--app/assets/images/emoji/point_up_2_tone2.png (renamed from public/-/emojis/1/point_up_2_tone2.png)bin822 -> 822 bytes
-rw-r--r--app/assets/images/emoji/point_up_2_tone3.png (renamed from public/-/emojis/1/point_up_2_tone3.png)bin871 -> 871 bytes
-rw-r--r--app/assets/images/emoji/point_up_2_tone4.png (renamed from public/-/emojis/1/point_up_2_tone4.png)bin822 -> 822 bytes
-rw-r--r--app/assets/images/emoji/point_up_2_tone5.png (renamed from public/-/emojis/1/point_up_2_tone5.png)bin822 -> 822 bytes
-rw-r--r--app/assets/images/emoji/point_up_tone1.png (renamed from public/-/emojis/1/point_up_tone1.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/point_up_tone2.png (renamed from public/-/emojis/1/point_up_tone2.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/point_up_tone3.png (renamed from public/-/emojis/1/point_up_tone3.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/point_up_tone4.png (renamed from public/-/emojis/1/point_up_tone4.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/point_up_tone5.png (renamed from public/-/emojis/1/point_up_tone5.png)bin820 -> 820 bytes
-rw-r--r--app/assets/images/emoji/police_car.png (renamed from public/-/emojis/1/police_car.png)bin1431 -> 1431 bytes
-rw-r--r--app/assets/images/emoji/poodle.png (renamed from public/-/emojis/1/poodle.png)bin1531 -> 1531 bytes
-rw-r--r--app/assets/images/emoji/poop.png (renamed from public/-/emojis/1/poop.png)bin1273 -> 1273 bytes
-rw-r--r--app/assets/images/emoji/popcorn.png (renamed from public/-/emojis/1/popcorn.png)bin1843 -> 1843 bytes
-rw-r--r--app/assets/images/emoji/post_office.png (renamed from public/-/emojis/1/post_office.png)bin676 -> 676 bytes
-rw-r--r--app/assets/images/emoji/postal_horn.png (renamed from public/-/emojis/1/postal_horn.png)bin809 -> 809 bytes
-rw-r--r--app/assets/images/emoji/postbox.png (renamed from public/-/emojis/1/postbox.png)bin1077 -> 1077 bytes
-rw-r--r--app/assets/images/emoji/potable_water.png (renamed from public/-/emojis/1/potable_water.png)bin633 -> 633 bytes
-rw-r--r--app/assets/images/emoji/potato.png (renamed from public/-/emojis/1/potato.png)bin1246 -> 1246 bytes
-rw-r--r--app/assets/images/emoji/pouch.png (renamed from public/-/emojis/1/pouch.png)bin1259 -> 1259 bytes
-rw-r--r--app/assets/images/emoji/poultry_leg.png (renamed from public/-/emojis/1/poultry_leg.png)bin925 -> 925 bytes
-rw-r--r--app/assets/images/emoji/pound.png (renamed from public/-/emojis/1/pound.png)bin452 -> 452 bytes
-rw-r--r--app/assets/images/emoji/pouting_cat.png (renamed from public/-/emojis/1/pouting_cat.png)bin1675 -> 1675 bytes
-rw-r--r--app/assets/images/emoji/pray.png (renamed from public/-/emojis/1/pray.png)bin1122 -> 1122 bytes
-rw-r--r--app/assets/images/emoji/pray_tone1.png (renamed from public/-/emojis/1/pray_tone1.png)bin1131 -> 1131 bytes
-rw-r--r--app/assets/images/emoji/pray_tone2.png (renamed from public/-/emojis/1/pray_tone2.png)bin1134 -> 1134 bytes
-rw-r--r--app/assets/images/emoji/pray_tone3.png (renamed from public/-/emojis/1/pray_tone3.png)bin1137 -> 1137 bytes
-rw-r--r--app/assets/images/emoji/pray_tone4.png (renamed from public/-/emojis/1/pray_tone4.png)bin1126 -> 1126 bytes
-rw-r--r--app/assets/images/emoji/pray_tone5.png (renamed from public/-/emojis/1/pray_tone5.png)bin1117 -> 1117 bytes
-rw-r--r--app/assets/images/emoji/prayer_beads.png (renamed from public/-/emojis/1/prayer_beads.png)bin1059 -> 1059 bytes
-rw-r--r--app/assets/images/emoji/pregnant_woman.png (renamed from public/-/emojis/1/pregnant_woman.png)bin1252 -> 1252 bytes
-rw-r--r--app/assets/images/emoji/pregnant_woman_tone1.png (renamed from public/-/emojis/1/pregnant_woman_tone1.png)bin1255 -> 1255 bytes
-rw-r--r--app/assets/images/emoji/pregnant_woman_tone2.png (renamed from public/-/emojis/1/pregnant_woman_tone2.png)bin1246 -> 1246 bytes
-rw-r--r--app/assets/images/emoji/pregnant_woman_tone3.png (renamed from public/-/emojis/1/pregnant_woman_tone3.png)bin1237 -> 1237 bytes
-rw-r--r--app/assets/images/emoji/pregnant_woman_tone4.png (renamed from public/-/emojis/1/pregnant_woman_tone4.png)bin1246 -> 1246 bytes
-rw-r--r--app/assets/images/emoji/pregnant_woman_tone5.png (renamed from public/-/emojis/1/pregnant_woman_tone5.png)bin1235 -> 1235 bytes
-rw-r--r--app/assets/images/emoji/prince.png (renamed from public/-/emojis/1/prince.png)bin1616 -> 1616 bytes
-rw-r--r--app/assets/images/emoji/prince_tone1.png (renamed from public/-/emojis/1/prince_tone1.png)bin1618 -> 1618 bytes
-rw-r--r--app/assets/images/emoji/prince_tone2.png (renamed from public/-/emojis/1/prince_tone2.png)bin1621 -> 1621 bytes
-rw-r--r--app/assets/images/emoji/prince_tone3.png (renamed from public/-/emojis/1/prince_tone3.png)bin1619 -> 1619 bytes
-rw-r--r--app/assets/images/emoji/prince_tone4.png (renamed from public/-/emojis/1/prince_tone4.png)bin1619 -> 1619 bytes
-rw-r--r--app/assets/images/emoji/prince_tone5.png (renamed from public/-/emojis/1/prince_tone5.png)bin1616 -> 1616 bytes
-rw-r--r--app/assets/images/emoji/princess.png (renamed from public/-/emojis/1/princess.png)bin1812 -> 1812 bytes
-rw-r--r--app/assets/images/emoji/princess_tone1.png (renamed from public/-/emojis/1/princess_tone1.png)bin1812 -> 1812 bytes
-rw-r--r--app/assets/images/emoji/princess_tone2.png (renamed from public/-/emojis/1/princess_tone2.png)bin1805 -> 1805 bytes
-rw-r--r--app/assets/images/emoji/princess_tone3.png (renamed from public/-/emojis/1/princess_tone3.png)bin1805 -> 1805 bytes
-rw-r--r--app/assets/images/emoji/princess_tone4.png (renamed from public/-/emojis/1/princess_tone4.png)bin1813 -> 1813 bytes
-rw-r--r--app/assets/images/emoji/princess_tone5.png (renamed from public/-/emojis/1/princess_tone5.png)bin1812 -> 1812 bytes
-rw-r--r--app/assets/images/emoji/printer.png (renamed from public/-/emojis/1/printer.png)bin926 -> 926 bytes
-rw-r--r--app/assets/images/emoji/projector.png (renamed from public/-/emojis/1/projector.png)bin943 -> 943 bytes
-rw-r--r--app/assets/images/emoji/punch.png (renamed from public/-/emojis/1/punch.png)bin838 -> 838 bytes
-rw-r--r--app/assets/images/emoji/punch_tone1.png (renamed from public/-/emojis/1/punch_tone1.png)bin838 -> 838 bytes
-rw-r--r--app/assets/images/emoji/punch_tone2.png (renamed from public/-/emojis/1/punch_tone2.png)bin838 -> 838 bytes
-rw-r--r--app/assets/images/emoji/punch_tone3.png (renamed from public/-/emojis/1/punch_tone3.png)bin838 -> 838 bytes
-rw-r--r--app/assets/images/emoji/punch_tone4.png (renamed from public/-/emojis/1/punch_tone4.png)bin838 -> 838 bytes
-rw-r--r--app/assets/images/emoji/punch_tone5.png (renamed from public/-/emojis/1/punch_tone5.png)bin838 -> 838 bytes
-rw-r--r--app/assets/images/emoji/purple_heart.png (renamed from public/-/emojis/1/purple_heart.png)bin435 -> 435 bytes
-rw-r--r--app/assets/images/emoji/purse.png (renamed from public/-/emojis/1/purse.png)bin1558 -> 1558 bytes
-rw-r--r--app/assets/images/emoji/pushpin.png (renamed from public/-/emojis/1/pushpin.png)bin640 -> 640 bytes
-rw-r--r--app/assets/images/emoji/put_litter_in_its_place.png (renamed from public/-/emojis/1/put_litter_in_its_place.png)bin650 -> 650 bytes
-rw-r--r--app/assets/images/emoji/question.png (renamed from public/-/emojis/1/question.png)bin449 -> 449 bytes
-rw-r--r--app/assets/images/emoji/rabbit.png (renamed from public/-/emojis/1/rabbit.png)bin1660 -> 1660 bytes
-rw-r--r--app/assets/images/emoji/rabbit2.png (renamed from public/-/emojis/1/rabbit2.png)bin1805 -> 1805 bytes
-rw-r--r--app/assets/images/emoji/race_car.png (renamed from public/-/emojis/1/race_car.png)bin2140 -> 2140 bytes
-rw-r--r--app/assets/images/emoji/racehorse.png (renamed from public/-/emojis/1/racehorse.png)bin1401 -> 1401 bytes
-rw-r--r--app/assets/images/emoji/radio.png (renamed from public/-/emojis/1/radio.png)bin851 -> 851 bytes
-rw-r--r--app/assets/images/emoji/radio_button.png (renamed from public/-/emojis/1/radio_button.png)bin674 -> 674 bytes
-rw-r--r--app/assets/images/emoji/radioactive.png (renamed from public/-/emojis/1/radioactive.png)bin858 -> 858 bytes
-rw-r--r--app/assets/images/emoji/rage.png (renamed from public/-/emojis/1/rage.png)bin845 -> 845 bytes
-rw-r--r--app/assets/images/emoji/railway_car.png (renamed from public/-/emojis/1/railway_car.png)bin847 -> 847 bytes
-rw-r--r--app/assets/images/emoji/railway_track.png (renamed from public/-/emojis/1/railway_track.png)bin1550 -> 1550 bytes
-rw-r--r--app/assets/images/emoji/rainbow.png (renamed from public/-/emojis/1/rainbow.png)bin1299 -> 1299 bytes
-rw-r--r--app/assets/images/emoji/raised_back_of_hand.png (renamed from public/-/emojis/1/raised_back_of_hand.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/raised_back_of_hand_tone1.png (renamed from public/-/emojis/1/raised_back_of_hand_tone1.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/raised_back_of_hand_tone2.png (renamed from public/-/emojis/1/raised_back_of_hand_tone2.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/raised_back_of_hand_tone3.png (renamed from public/-/emojis/1/raised_back_of_hand_tone3.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/raised_back_of_hand_tone4.png (renamed from public/-/emojis/1/raised_back_of_hand_tone4.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/raised_back_of_hand_tone5.png (renamed from public/-/emojis/1/raised_back_of_hand_tone5.png)bin848 -> 848 bytes
-rw-r--r--app/assets/images/emoji/raised_hand.png (renamed from public/-/emojis/1/raised_hand.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/raised_hand_tone1.png (renamed from public/-/emojis/1/raised_hand_tone1.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/raised_hand_tone2.png (renamed from public/-/emojis/1/raised_hand_tone2.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/raised_hand_tone3.png (renamed from public/-/emojis/1/raised_hand_tone3.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/raised_hand_tone4.png (renamed from public/-/emojis/1/raised_hand_tone4.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/raised_hand_tone5.png (renamed from public/-/emojis/1/raised_hand_tone5.png)bin791 -> 791 bytes
-rw-r--r--app/assets/images/emoji/raised_hands.png (renamed from public/-/emojis/1/raised_hands.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/raised_hands_tone1.png (renamed from public/-/emojis/1/raised_hands_tone1.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/raised_hands_tone2.png (renamed from public/-/emojis/1/raised_hands_tone2.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/raised_hands_tone3.png (renamed from public/-/emojis/1/raised_hands_tone3.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/raised_hands_tone4.png (renamed from public/-/emojis/1/raised_hands_tone4.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/raised_hands_tone5.png (renamed from public/-/emojis/1/raised_hands_tone5.png)bin1098 -> 1098 bytes
-rw-r--r--app/assets/images/emoji/raising_hand.png (renamed from public/-/emojis/1/raising_hand.png)bin1664 -> 1664 bytes
-rw-r--r--app/assets/images/emoji/raising_hand_tone1.png (renamed from public/-/emojis/1/raising_hand_tone1.png)bin1678 -> 1678 bytes
-rw-r--r--app/assets/images/emoji/raising_hand_tone2.png (renamed from public/-/emojis/1/raising_hand_tone2.png)bin1665 -> 1665 bytes
-rw-r--r--app/assets/images/emoji/raising_hand_tone3.png (renamed from public/-/emojis/1/raising_hand_tone3.png)bin1657 -> 1657 bytes
-rw-r--r--app/assets/images/emoji/raising_hand_tone4.png (renamed from public/-/emojis/1/raising_hand_tone4.png)bin1657 -> 1657 bytes
-rw-r--r--app/assets/images/emoji/raising_hand_tone5.png (renamed from public/-/emojis/1/raising_hand_tone5.png)bin1661 -> 1661 bytes
-rw-r--r--app/assets/images/emoji/ram.png (renamed from public/-/emojis/1/ram.png)bin1951 -> 1951 bytes
-rw-r--r--app/assets/images/emoji/ramen.png (renamed from public/-/emojis/1/ramen.png)bin1992 -> 1992 bytes
-rw-r--r--app/assets/images/emoji/rat.png (renamed from public/-/emojis/1/rat.png)bin1193 -> 1193 bytes
-rw-r--r--app/assets/images/emoji/record_button.png (renamed from public/-/emojis/1/record_button.png)bin475 -> 475 bytes
-rw-r--r--app/assets/images/emoji/recycle.png (renamed from public/-/emojis/1/recycle.png)bin914 -> 914 bytes
-rw-r--r--app/assets/images/emoji/red_car.png (renamed from public/-/emojis/1/red_car.png)bin1065 -> 1065 bytes
-rw-r--r--app/assets/images/emoji/red_circle.png (renamed from public/-/emojis/1/red_circle.png)bin374 -> 374 bytes
-rw-r--r--app/assets/images/emoji/registered.png (renamed from public/-/emojis/1/registered.png)bin547 -> 547 bytes
-rw-r--r--app/assets/images/emoji/relaxed.png (renamed from public/-/emojis/1/relaxed.png)bin636 -> 636 bytes
-rw-r--r--app/assets/images/emoji/relieved.png (renamed from public/-/emojis/1/relieved.png)bin785 -> 785 bytes
-rw-r--r--app/assets/images/emoji/reminder_ribbon.png (renamed from public/-/emojis/1/reminder_ribbon.png)bin921 -> 921 bytes
-rw-r--r--app/assets/images/emoji/repeat.png (renamed from public/-/emojis/1/repeat.png)bin644 -> 644 bytes
-rw-r--r--app/assets/images/emoji/repeat_one.png (renamed from public/-/emojis/1/repeat_one.png)bin688 -> 688 bytes
-rw-r--r--app/assets/images/emoji/restroom.png (renamed from public/-/emojis/1/restroom.png)bin676 -> 676 bytes
-rw-r--r--app/assets/images/emoji/revolving_hearts.png (renamed from public/-/emojis/1/revolving_hearts.png)bin920 -> 920 bytes
-rw-r--r--app/assets/images/emoji/rewind.png (renamed from public/-/emojis/1/rewind.png)bin523 -> 523 bytes
-rw-r--r--app/assets/images/emoji/rhino.png (renamed from public/-/emojis/1/rhino.png)bin1558 -> 1558 bytes
-rw-r--r--app/assets/images/emoji/ribbon.png (renamed from public/-/emojis/1/ribbon.png)bin968 -> 968 bytes
-rw-r--r--app/assets/images/emoji/rice.png (renamed from public/-/emojis/1/rice.png)bin1195 -> 1195 bytes
-rw-r--r--app/assets/images/emoji/rice_ball.png (renamed from public/-/emojis/1/rice_ball.png)bin1091 -> 1091 bytes
-rw-r--r--app/assets/images/emoji/rice_cracker.png (renamed from public/-/emojis/1/rice_cracker.png)bin1443 -> 1443 bytes
-rw-r--r--app/assets/images/emoji/rice_scene.png (renamed from public/-/emojis/1/rice_scene.png)bin1349 -> 1349 bytes
-rw-r--r--app/assets/images/emoji/right_facing_fist.png (renamed from public/-/emojis/1/right_facing_fist.png)bin975 -> 975 bytes
-rw-r--r--app/assets/images/emoji/right_facing_fist_tone1.png (renamed from public/-/emojis/1/right_facing_fist_tone1.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/right_facing_fist_tone2.png (renamed from public/-/emojis/1/right_facing_fist_tone2.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/right_facing_fist_tone3.png (renamed from public/-/emojis/1/right_facing_fist_tone3.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/right_facing_fist_tone4.png (renamed from public/-/emojis/1/right_facing_fist_tone4.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/right_facing_fist_tone5.png (renamed from public/-/emojis/1/right_facing_fist_tone5.png)bin964 -> 964 bytes
-rw-r--r--app/assets/images/emoji/ring.png (renamed from public/-/emojis/1/ring.png)bin1113 -> 1113 bytes
-rw-r--r--app/assets/images/emoji/robot.png (renamed from public/-/emojis/1/robot.png)bin1228 -> 1228 bytes
-rw-r--r--app/assets/images/emoji/rocket.png (renamed from public/-/emojis/1/rocket.png)bin1639 -> 1639 bytes
-rw-r--r--app/assets/images/emoji/rofl.png (renamed from public/-/emojis/1/rofl.png)bin1760 -> 1760 bytes
-rw-r--r--app/assets/images/emoji/roller_coaster.png (renamed from public/-/emojis/1/roller_coaster.png)bin1723 -> 1723 bytes
-rw-r--r--app/assets/images/emoji/rolling_eyes.png (renamed from public/-/emojis/1/rolling_eyes.png)bin743 -> 743 bytes
-rw-r--r--app/assets/images/emoji/rooster.png (renamed from public/-/emojis/1/rooster.png)bin1333 -> 1333 bytes
-rw-r--r--app/assets/images/emoji/rose.png (renamed from public/-/emojis/1/rose.png)bin1182 -> 1182 bytes
-rw-r--r--app/assets/images/emoji/rosette.png (renamed from public/-/emojis/1/rosette.png)bin1023 -> 1023 bytes
-rw-r--r--app/assets/images/emoji/rotating_light.png (renamed from public/-/emojis/1/rotating_light.png)bin1969 -> 1969 bytes
-rw-r--r--app/assets/images/emoji/round_pushpin.png (renamed from public/-/emojis/1/round_pushpin.png)bin455 -> 455 bytes
-rw-r--r--app/assets/images/emoji/rowboat.png (renamed from public/-/emojis/1/rowboat.png)bin1963 -> 1963 bytes
-rw-r--r--app/assets/images/emoji/rowboat_tone1.png (renamed from public/-/emojis/1/rowboat_tone1.png)bin1971 -> 1971 bytes
-rw-r--r--app/assets/images/emoji/rowboat_tone2.png (renamed from public/-/emojis/1/rowboat_tone2.png)bin1972 -> 1972 bytes
-rw-r--r--app/assets/images/emoji/rowboat_tone3.png (renamed from public/-/emojis/1/rowboat_tone3.png)bin1967 -> 1967 bytes
-rw-r--r--app/assets/images/emoji/rowboat_tone4.png (renamed from public/-/emojis/1/rowboat_tone4.png)bin1974 -> 1974 bytes
-rw-r--r--app/assets/images/emoji/rowboat_tone5.png (renamed from public/-/emojis/1/rowboat_tone5.png)bin1971 -> 1971 bytes
-rw-r--r--app/assets/images/emoji/rugby_football.png (renamed from public/-/emojis/1/rugby_football.png)bin1618 -> 1618 bytes
-rw-r--r--app/assets/images/emoji/runner.png (renamed from public/-/emojis/1/runner.png)bin1161 -> 1161 bytes
-rw-r--r--app/assets/images/emoji/runner_tone1.png (renamed from public/-/emojis/1/runner_tone1.png)bin1163 -> 1163 bytes
-rw-r--r--app/assets/images/emoji/runner_tone2.png (renamed from public/-/emojis/1/runner_tone2.png)bin1162 -> 1162 bytes
-rw-r--r--app/assets/images/emoji/runner_tone3.png (renamed from public/-/emojis/1/runner_tone3.png)bin1151 -> 1151 bytes
-rw-r--r--app/assets/images/emoji/runner_tone4.png (renamed from public/-/emojis/1/runner_tone4.png)bin1156 -> 1156 bytes
-rw-r--r--app/assets/images/emoji/runner_tone5.png (renamed from public/-/emojis/1/runner_tone5.png)bin1145 -> 1145 bytes
-rw-r--r--app/assets/images/emoji/running_shirt_with_sash.png (renamed from public/-/emojis/1/running_shirt_with_sash.png)bin784 -> 784 bytes
-rw-r--r--app/assets/images/emoji/sa.png (renamed from public/-/emojis/1/sa.png)bin420 -> 420 bytes
-rw-r--r--app/assets/images/emoji/sagittarius.png (renamed from public/-/emojis/1/sagittarius.png)bin602 -> 602 bytes
-rw-r--r--app/assets/images/emoji/sailboat.png (renamed from public/-/emojis/1/sailboat.png)bin1274 -> 1274 bytes
-rw-r--r--app/assets/images/emoji/sake.png (renamed from public/-/emojis/1/sake.png)bin826 -> 826 bytes
-rw-r--r--app/assets/images/emoji/salad.png (renamed from public/-/emojis/1/salad.png)bin2398 -> 2398 bytes
-rw-r--r--app/assets/images/emoji/sandal.png (renamed from public/-/emojis/1/sandal.png)bin1180 -> 1180 bytes
-rw-r--r--app/assets/images/emoji/santa.png (renamed from public/-/emojis/1/santa.png)bin1585 -> 1585 bytes
-rw-r--r--app/assets/images/emoji/santa_tone1.png (renamed from public/-/emojis/1/santa_tone1.png)bin1585 -> 1585 bytes
-rw-r--r--app/assets/images/emoji/santa_tone2.png (renamed from public/-/emojis/1/santa_tone2.png)bin1578 -> 1578 bytes
-rw-r--r--app/assets/images/emoji/santa_tone3.png (renamed from public/-/emojis/1/santa_tone3.png)bin1578 -> 1578 bytes
-rw-r--r--app/assets/images/emoji/santa_tone4.png (renamed from public/-/emojis/1/santa_tone4.png)bin1578 -> 1578 bytes
-rw-r--r--app/assets/images/emoji/santa_tone5.png (renamed from public/-/emojis/1/santa_tone5.png)bin1578 -> 1578 bytes
-rw-r--r--app/assets/images/emoji/satellite.png (renamed from public/-/emojis/1/satellite.png)bin1173 -> 1173 bytes
-rw-r--r--app/assets/images/emoji/satellite_orbital.png (renamed from public/-/emojis/1/satellite_orbital.png)bin762 -> 762 bytes
-rw-r--r--app/assets/images/emoji/saxophone.png (renamed from public/-/emojis/1/saxophone.png)bin1442 -> 1442 bytes
-rw-r--r--app/assets/images/emoji/scales.png (renamed from public/-/emojis/1/scales.png)bin1181 -> 1181 bytes
-rw-r--r--app/assets/images/emoji/school.png (renamed from public/-/emojis/1/school.png)bin1234 -> 1234 bytes
-rw-r--r--app/assets/images/emoji/school_satchel.png (renamed from public/-/emojis/1/school_satchel.png)bin1490 -> 1490 bytes
-rw-r--r--app/assets/images/emoji/scissors.png (renamed from public/-/emojis/1/scissors.png)bin937 -> 937 bytes
-rw-r--r--app/assets/images/emoji/scooter.png (renamed from public/-/emojis/1/scooter.png)bin1228 -> 1228 bytes
-rw-r--r--app/assets/images/emoji/scorpion.png (renamed from public/-/emojis/1/scorpion.png)bin1503 -> 1503 bytes
-rw-r--r--app/assets/images/emoji/scorpius.png (renamed from public/-/emojis/1/scorpius.png)bin612 -> 612 bytes
-rw-r--r--app/assets/images/emoji/scream.png (renamed from public/-/emojis/1/scream.png)bin1583 -> 1583 bytes
-rw-r--r--app/assets/images/emoji/scream_cat.png (renamed from public/-/emojis/1/scream_cat.png)bin2120 -> 2120 bytes
-rw-r--r--app/assets/images/emoji/scroll.png (renamed from public/-/emojis/1/scroll.png)bin989 -> 989 bytes
-rw-r--r--app/assets/images/emoji/seat.png (renamed from public/-/emojis/1/seat.png)bin884 -> 884 bytes
-rw-r--r--app/assets/images/emoji/second_place.png (renamed from public/-/emojis/1/second_place.png)bin1511 -> 1511 bytes
-rw-r--r--app/assets/images/emoji/secret.png (renamed from public/-/emojis/1/secret.png)bin857 -> 857 bytes
-rw-r--r--app/assets/images/emoji/see_no_evil.png (renamed from public/-/emojis/1/see_no_evil.png)bin1227 -> 1227 bytes
-rw-r--r--app/assets/images/emoji/seedling.png (renamed from public/-/emojis/1/seedling.png)bin749 -> 749 bytes
-rw-r--r--app/assets/images/emoji/selfie.png (renamed from public/-/emojis/1/selfie.png)bin1160 -> 1160 bytes
-rw-r--r--app/assets/images/emoji/selfie_tone1.png (renamed from public/-/emojis/1/selfie_tone1.png)bin1166 -> 1166 bytes
-rw-r--r--app/assets/images/emoji/selfie_tone2.png (renamed from public/-/emojis/1/selfie_tone2.png)bin1167 -> 1167 bytes
-rw-r--r--app/assets/images/emoji/selfie_tone3.png (renamed from public/-/emojis/1/selfie_tone3.png)bin1154 -> 1154 bytes
-rw-r--r--app/assets/images/emoji/selfie_tone4.png (renamed from public/-/emojis/1/selfie_tone4.png)bin1153 -> 1153 bytes
-rw-r--r--app/assets/images/emoji/selfie_tone5.png (renamed from public/-/emojis/1/selfie_tone5.png)bin1148 -> 1148 bytes
-rw-r--r--app/assets/images/emoji/seven.png (renamed from public/-/emojis/1/seven.png)bin522 -> 522 bytes
-rw-r--r--app/assets/images/emoji/shallow_pan_of_food.png (renamed from public/-/emojis/1/shallow_pan_of_food.png)bin1738 -> 1738 bytes
-rw-r--r--app/assets/images/emoji/shamrock.png (renamed from public/-/emojis/1/shamrock.png)bin1023 -> 1023 bytes
-rw-r--r--app/assets/images/emoji/shark.png (renamed from public/-/emojis/1/shark.png)bin1811 -> 1811 bytes
-rw-r--r--app/assets/images/emoji/shaved_ice.png (renamed from public/-/emojis/1/shaved_ice.png)bin997 -> 997 bytes
-rw-r--r--app/assets/images/emoji/sheep.png (renamed from public/-/emojis/1/sheep.png)bin1372 -> 1372 bytes
-rw-r--r--app/assets/images/emoji/shell.png (renamed from public/-/emojis/1/shell.png)bin1497 -> 1497 bytes
-rw-r--r--app/assets/images/emoji/shield.png (renamed from public/-/emojis/1/shield.png)bin1602 -> 1602 bytes
-rw-r--r--app/assets/images/emoji/shinto_shrine.png (renamed from public/-/emojis/1/shinto_shrine.png)bin579 -> 579 bytes
-rw-r--r--app/assets/images/emoji/ship.png (renamed from public/-/emojis/1/ship.png)bin1405 -> 1405 bytes
-rw-r--r--app/assets/images/emoji/shirt.png (renamed from public/-/emojis/1/shirt.png)bin670 -> 670 bytes
-rw-r--r--app/assets/images/emoji/shopping_bags.png (renamed from public/-/emojis/1/shopping_bags.png)bin1234 -> 1234 bytes
-rw-r--r--app/assets/images/emoji/shopping_cart.png (renamed from public/-/emojis/1/shopping_cart.png)bin1072 -> 1072 bytes
-rw-r--r--app/assets/images/emoji/shower.png (renamed from public/-/emojis/1/shower.png)bin2537 -> 2537 bytes
-rw-r--r--app/assets/images/emoji/shrimp.png (renamed from public/-/emojis/1/shrimp.png)bin1376 -> 1376 bytes
-rw-r--r--app/assets/images/emoji/shrug.png (renamed from public/-/emojis/1/shrug.png)bin1671 -> 1671 bytes
-rw-r--r--app/assets/images/emoji/shrug_tone1.png (renamed from public/-/emojis/1/shrug_tone1.png)bin1676 -> 1676 bytes
-rw-r--r--app/assets/images/emoji/shrug_tone2.png (renamed from public/-/emojis/1/shrug_tone2.png)bin1671 -> 1671 bytes
-rw-r--r--app/assets/images/emoji/shrug_tone3.png (renamed from public/-/emojis/1/shrug_tone3.png)bin1675 -> 1675 bytes
-rw-r--r--app/assets/images/emoji/shrug_tone4.png (renamed from public/-/emojis/1/shrug_tone4.png)bin1641 -> 1641 bytes
-rw-r--r--app/assets/images/emoji/shrug_tone5.png (renamed from public/-/emojis/1/shrug_tone5.png)bin1634 -> 1634 bytes
-rw-r--r--app/assets/images/emoji/signal_strength.png (renamed from public/-/emojis/1/signal_strength.png)bin445 -> 445 bytes
-rw-r--r--app/assets/images/emoji/six.png (renamed from public/-/emojis/1/six.png)bin612 -> 612 bytes
-rw-r--r--app/assets/images/emoji/six_pointed_star.png (renamed from public/-/emojis/1/six_pointed_star.png)bin540 -> 540 bytes
-rw-r--r--app/assets/images/emoji/ski.png (renamed from public/-/emojis/1/ski.png)bin1762 -> 1762 bytes
-rw-r--r--app/assets/images/emoji/skier.png (renamed from public/-/emojis/1/skier.png)bin1539 -> 1539 bytes
-rw-r--r--app/assets/images/emoji/skull.png (renamed from public/-/emojis/1/skull.png)bin628 -> 628 bytes
-rw-r--r--app/assets/images/emoji/skull_crossbones.png (renamed from public/-/emojis/1/skull_crossbones.png)bin726 -> 726 bytes
-rw-r--r--app/assets/images/emoji/sleeping.png (renamed from public/-/emojis/1/sleeping.png)bin1075 -> 1075 bytes
-rw-r--r--app/assets/images/emoji/sleeping_accommodation.png (renamed from public/-/emojis/1/sleeping_accommodation.png)bin926 -> 926 bytes
-rw-r--r--app/assets/images/emoji/sleepy.png (renamed from public/-/emojis/1/sleepy.png)bin1185 -> 1185 bytes
-rw-r--r--app/assets/images/emoji/slight_frown.png (renamed from public/-/emojis/1/slight_frown.png)bin580 -> 580 bytes
-rw-r--r--app/assets/images/emoji/slight_smile.png (renamed from public/-/emojis/1/slight_smile.png)bin600 -> 600 bytes
-rw-r--r--app/assets/images/emoji/slot_machine.png (renamed from public/-/emojis/1/slot_machine.png)bin1648 -> 1648 bytes
-rw-r--r--app/assets/images/emoji/small_blue_diamond.png (renamed from public/-/emojis/1/small_blue_diamond.png)bin191 -> 191 bytes
-rw-r--r--app/assets/images/emoji/small_orange_diamond.png (renamed from public/-/emojis/1/small_orange_diamond.png)bin194 -> 194 bytes
-rw-r--r--app/assets/images/emoji/small_red_triangle.png (renamed from public/-/emojis/1/small_red_triangle.png)bin273 -> 273 bytes
-rw-r--r--app/assets/images/emoji/small_red_triangle_down.png (renamed from public/-/emojis/1/small_red_triangle_down.png)bin291 -> 291 bytes
-rw-r--r--app/assets/images/emoji/smile.png (renamed from public/-/emojis/1/smile.png)bin737 -> 737 bytes
-rw-r--r--app/assets/images/emoji/smile_cat.png (renamed from public/-/emojis/1/smile_cat.png)bin1405 -> 1405 bytes
-rw-r--r--app/assets/images/emoji/smiley.png (renamed from public/-/emojis/1/smiley.png)bin686 -> 686 bytes
-rw-r--r--app/assets/images/emoji/smiley_cat.png (renamed from public/-/emojis/1/smiley_cat.png)bin1669 -> 1669 bytes
-rw-r--r--app/assets/images/emoji/smiling_imp.png (renamed from public/-/emojis/1/smiling_imp.png)bin1078 -> 1078 bytes
-rw-r--r--app/assets/images/emoji/smirk.png (renamed from public/-/emojis/1/smirk.png)bin775 -> 775 bytes
-rw-r--r--app/assets/images/emoji/smirk_cat.png (renamed from public/-/emojis/1/smirk_cat.png)bin1663 -> 1663 bytes
-rw-r--r--app/assets/images/emoji/smoking.png (renamed from public/-/emojis/1/smoking.png)bin417 -> 417 bytes
-rw-r--r--app/assets/images/emoji/snail.png (renamed from public/-/emojis/1/snail.png)bin1731 -> 1731 bytes
-rw-r--r--app/assets/images/emoji/snake.png (renamed from public/-/emojis/1/snake.png)bin1575 -> 1575 bytes
-rw-r--r--app/assets/images/emoji/sneezing_face.png (renamed from public/-/emojis/1/sneezing_face.png)bin1289 -> 1289 bytes
-rw-r--r--app/assets/images/emoji/snowboarder.png (renamed from public/-/emojis/1/snowboarder.png)bin2020 -> 2020 bytes
-rw-r--r--app/assets/images/emoji/snowflake.png (renamed from public/-/emojis/1/snowflake.png)bin691 -> 691 bytes
-rw-r--r--app/assets/images/emoji/snowman.png (renamed from public/-/emojis/1/snowman.png)bin1481 -> 1481 bytes
-rw-r--r--app/assets/images/emoji/snowman2.png (renamed from public/-/emojis/1/snowman2.png)bin2176 -> 2176 bytes
-rw-r--r--app/assets/images/emoji/sob.png (renamed from public/-/emojis/1/sob.png)bin1236 -> 1236 bytes
-rw-r--r--app/assets/images/emoji/soccer.png (renamed from public/-/emojis/1/soccer.png)bin1034 -> 1034 bytes
-rw-r--r--app/assets/images/emoji/soon.png (renamed from public/-/emojis/1/soon.png)bin483 -> 483 bytes
-rw-r--r--app/assets/images/emoji/sos.png (renamed from public/-/emojis/1/sos.png)bin604 -> 604 bytes
-rw-r--r--app/assets/images/emoji/sound.png (renamed from public/-/emojis/1/sound.png)bin690 -> 690 bytes
-rw-r--r--app/assets/images/emoji/space_invader.png (renamed from public/-/emojis/1/space_invader.png)bin1325 -> 1325 bytes
-rw-r--r--app/assets/images/emoji/spades.png (renamed from public/-/emojis/1/spades.png)bin454 -> 454 bytes
-rw-r--r--app/assets/images/emoji/spaghetti.png (renamed from public/-/emojis/1/spaghetti.png)bin1796 -> 1796 bytes
-rw-r--r--app/assets/images/emoji/sparkle.png (renamed from public/-/emojis/1/sparkle.png)bin663 -> 663 bytes
-rw-r--r--app/assets/images/emoji/sparkler.png (renamed from public/-/emojis/1/sparkler.png)bin910 -> 910 bytes
-rw-r--r--app/assets/images/emoji/sparkles.png (renamed from public/-/emojis/1/sparkles.png)bin651 -> 651 bytes
-rw-r--r--app/assets/images/emoji/sparkling_heart.png (renamed from public/-/emojis/1/sparkling_heart.png)bin821 -> 821 bytes
-rw-r--r--app/assets/images/emoji/speak_no_evil.png (renamed from public/-/emojis/1/speak_no_evil.png)bin1497 -> 1497 bytes
-rw-r--r--app/assets/images/emoji/speaker.png (renamed from public/-/emojis/1/speaker.png)bin575 -> 575 bytes
-rw-r--r--app/assets/images/emoji/speaking_head.png (renamed from public/-/emojis/1/speaking_head.png)bin531 -> 531 bytes
-rw-r--r--app/assets/images/emoji/speech_balloon.png (renamed from public/-/emojis/1/speech_balloon.png)bin384 -> 384 bytes
-rw-r--r--app/assets/images/emoji/speech_left.png (renamed from public/-/emojis/1/speech_left.png)bin390 -> 390 bytes
-rw-r--r--app/assets/images/emoji/speedboat.png (renamed from public/-/emojis/1/speedboat.png)bin1255 -> 1255 bytes
-rw-r--r--app/assets/images/emoji/spider.png (renamed from public/-/emojis/1/spider.png)bin1724 -> 1724 bytes
-rw-r--r--app/assets/images/emoji/spider_web.png (renamed from public/-/emojis/1/spider_web.png)bin929 -> 929 bytes
-rw-r--r--app/assets/images/emoji/spoon.png (renamed from public/-/emojis/1/spoon.png)bin700 -> 700 bytes
-rw-r--r--app/assets/images/emoji/spy.png (renamed from public/-/emojis/1/spy.png)bin1650 -> 1650 bytes
-rw-r--r--app/assets/images/emoji/spy_tone1.png (renamed from public/-/emojis/1/spy_tone1.png)bin1639 -> 1639 bytes
-rw-r--r--app/assets/images/emoji/spy_tone2.png (renamed from public/-/emojis/1/spy_tone2.png)bin1632 -> 1632 bytes
-rw-r--r--app/assets/images/emoji/spy_tone3.png (renamed from public/-/emojis/1/spy_tone3.png)bin1645 -> 1645 bytes
-rw-r--r--app/assets/images/emoji/spy_tone4.png (renamed from public/-/emojis/1/spy_tone4.png)bin1639 -> 1639 bytes
-rw-r--r--app/assets/images/emoji/spy_tone5.png (renamed from public/-/emojis/1/spy_tone5.png)bin1639 -> 1639 bytes
-rw-r--r--app/assets/images/emoji/squid.png (renamed from public/-/emojis/1/squid.png)bin1394 -> 1394 bytes
-rw-r--r--app/assets/images/emoji/stadium.png (renamed from public/-/emojis/1/stadium.png)bin1515 -> 1515 bytes
-rw-r--r--app/assets/images/emoji/star.png (renamed from public/-/emojis/1/star.png)bin456 -> 456 bytes
-rw-r--r--app/assets/images/emoji/star2.png (renamed from public/-/emojis/1/star2.png)bin732 -> 732 bytes
-rw-r--r--app/assets/images/emoji/star_and_crescent.png (renamed from public/-/emojis/1/star_and_crescent.png)bin490 -> 490 bytes
-rw-r--r--app/assets/images/emoji/star_of_david.png (renamed from public/-/emojis/1/star_of_david.png)bin491 -> 491 bytes
-rw-r--r--app/assets/images/emoji/stars.png (renamed from public/-/emojis/1/stars.png)bin1048 -> 1048 bytes
-rw-r--r--app/assets/images/emoji/station.png (renamed from public/-/emojis/1/station.png)bin1336 -> 1336 bytes
-rw-r--r--app/assets/images/emoji/statue_of_liberty.png (renamed from public/-/emojis/1/statue_of_liberty.png)bin1145 -> 1145 bytes
-rw-r--r--app/assets/images/emoji/steam_locomotive.png (renamed from public/-/emojis/1/steam_locomotive.png)bin1736 -> 1736 bytes
-rw-r--r--app/assets/images/emoji/stew.png (renamed from public/-/emojis/1/stew.png)bin1960 -> 1960 bytes
-rw-r--r--app/assets/images/emoji/stop_button.png (renamed from public/-/emojis/1/stop_button.png)bin385 -> 385 bytes
-rw-r--r--app/assets/images/emoji/stopwatch.png (renamed from public/-/emojis/1/stopwatch.png)bin1329 -> 1329 bytes
-rw-r--r--app/assets/images/emoji/straight_ruler.png (renamed from public/-/emojis/1/straight_ruler.png)bin1406 -> 1406 bytes
-rw-r--r--app/assets/images/emoji/strawberry.png (renamed from public/-/emojis/1/strawberry.png)bin1206 -> 1206 bytes
-rw-r--r--app/assets/images/emoji/stuck_out_tongue.png (renamed from public/-/emojis/1/stuck_out_tongue.png)bin752 -> 752 bytes
-rw-r--r--app/assets/images/emoji/stuck_out_tongue_closed_eyes.png (renamed from public/-/emojis/1/stuck_out_tongue_closed_eyes.png)bin867 -> 867 bytes
-rw-r--r--app/assets/images/emoji/stuck_out_tongue_winking_eye.png (renamed from public/-/emojis/1/stuck_out_tongue_winking_eye.png)bin1061 -> 1061 bytes
-rw-r--r--app/assets/images/emoji/stuffed_flatbread.png (renamed from public/-/emojis/1/stuffed_flatbread.png)bin2160 -> 2160 bytes
-rw-r--r--app/assets/images/emoji/sun_with_face.png (renamed from public/-/emojis/1/sun_with_face.png)bin741 -> 741 bytes
-rw-r--r--app/assets/images/emoji/sunflower.png (renamed from public/-/emojis/1/sunflower.png)bin1915 -> 1915 bytes
-rw-r--r--app/assets/images/emoji/sunglasses.png (renamed from public/-/emojis/1/sunglasses.png)bin824 -> 824 bytes
-rw-r--r--app/assets/images/emoji/sunny.png (renamed from public/-/emojis/1/sunny.png)bin746 -> 746 bytes
-rw-r--r--app/assets/images/emoji/sunrise.png (renamed from public/-/emojis/1/sunrise.png)bin812 -> 812 bytes
-rw-r--r--app/assets/images/emoji/sunrise_over_mountains.png (renamed from public/-/emojis/1/sunrise_over_mountains.png)bin1576 -> 1576 bytes
-rw-r--r--app/assets/images/emoji/surfer.png (renamed from public/-/emojis/1/surfer.png)bin1777 -> 1777 bytes
-rw-r--r--app/assets/images/emoji/surfer_tone1.png (renamed from public/-/emojis/1/surfer_tone1.png)bin1781 -> 1781 bytes
-rw-r--r--app/assets/images/emoji/surfer_tone2.png (renamed from public/-/emojis/1/surfer_tone2.png)bin1769 -> 1769 bytes
-rw-r--r--app/assets/images/emoji/surfer_tone3.png (renamed from public/-/emojis/1/surfer_tone3.png)bin1777 -> 1777 bytes
-rw-r--r--app/assets/images/emoji/surfer_tone4.png (renamed from public/-/emojis/1/surfer_tone4.png)bin1784 -> 1784 bytes
-rw-r--r--app/assets/images/emoji/surfer_tone5.png (renamed from public/-/emojis/1/surfer_tone5.png)bin1782 -> 1782 bytes
-rw-r--r--app/assets/images/emoji/sushi.png (renamed from public/-/emojis/1/sushi.png)bin2101 -> 2101 bytes
-rw-r--r--app/assets/images/emoji/suspension_railway.png (renamed from public/-/emojis/1/suspension_railway.png)bin927 -> 927 bytes
-rw-r--r--app/assets/images/emoji/sweat.png (renamed from public/-/emojis/1/sweat.png)bin861 -> 861 bytes
-rw-r--r--app/assets/images/emoji/sweat_drops.png (renamed from public/-/emojis/1/sweat_drops.png)bin549 -> 549 bytes
-rw-r--r--app/assets/images/emoji/sweat_smile.png (renamed from public/-/emojis/1/sweat_smile.png)bin851 -> 851 bytes
-rw-r--r--app/assets/images/emoji/sweet_potato.png (renamed from public/-/emojis/1/sweet_potato.png)bin951 -> 951 bytes
-rw-r--r--app/assets/images/emoji/swimmer.png (renamed from public/-/emojis/1/swimmer.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/swimmer_tone1.png (renamed from public/-/emojis/1/swimmer_tone1.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/swimmer_tone2.png (renamed from public/-/emojis/1/swimmer_tone2.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/swimmer_tone3.png (renamed from public/-/emojis/1/swimmer_tone3.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/swimmer_tone4.png (renamed from public/-/emojis/1/swimmer_tone4.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/swimmer_tone5.png (renamed from public/-/emojis/1/swimmer_tone5.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/symbols.png (renamed from public/-/emojis/1/symbols.png)bin746 -> 746 bytes
-rw-r--r--app/assets/images/emoji/synagogue.png (renamed from public/-/emojis/1/synagogue.png)bin1309 -> 1309 bytes
-rw-r--r--app/assets/images/emoji/syringe.png (renamed from public/-/emojis/1/syringe.png)bin737 -> 737 bytes
-rw-r--r--app/assets/images/emoji/taco.png (renamed from public/-/emojis/1/taco.png)bin3045 -> 3045 bytes
-rw-r--r--app/assets/images/emoji/tada.png (renamed from public/-/emojis/1/tada.png)bin1778 -> 1778 bytes
-rw-r--r--app/assets/images/emoji/tanabata_tree.png (renamed from public/-/emojis/1/tanabata_tree.png)bin1479 -> 1479 bytes
-rw-r--r--app/assets/images/emoji/tangerine.png (renamed from public/-/emojis/1/tangerine.png)bin1184 -> 1184 bytes
-rw-r--r--app/assets/images/emoji/taurus.png (renamed from public/-/emojis/1/taurus.png)bin701 -> 701 bytes
-rw-r--r--app/assets/images/emoji/taxi.png (renamed from public/-/emojis/1/taxi.png)bin1230 -> 1230 bytes
-rw-r--r--app/assets/images/emoji/tea.png (renamed from public/-/emojis/1/tea.png)bin1297 -> 1297 bytes
-rw-r--r--app/assets/images/emoji/telephone.png (renamed from public/-/emojis/1/telephone.png)bin1760 -> 1760 bytes
-rw-r--r--app/assets/images/emoji/telephone_receiver.png (renamed from public/-/emojis/1/telephone_receiver.png)bin941 -> 941 bytes
-rw-r--r--app/assets/images/emoji/telescope.png (renamed from public/-/emojis/1/telescope.png)bin1256 -> 1256 bytes
-rw-r--r--app/assets/images/emoji/ten.png (renamed from public/-/emojis/1/ten.png)bin621 -> 621 bytes
-rw-r--r--app/assets/images/emoji/tennis.png (renamed from public/-/emojis/1/tennis.png)bin1561 -> 1561 bytes
-rw-r--r--app/assets/images/emoji/tent.png (renamed from public/-/emojis/1/tent.png)bin1684 -> 1684 bytes
-rw-r--r--app/assets/images/emoji/thermometer.png (renamed from public/-/emojis/1/thermometer.png)bin759 -> 759 bytes
-rw-r--r--app/assets/images/emoji/thermometer_face.png (renamed from public/-/emojis/1/thermometer_face.png)bin1503 -> 1503 bytes
-rw-r--r--app/assets/images/emoji/thinking.png (renamed from public/-/emojis/1/thinking.png)bin1345 -> 1345 bytes
-rw-r--r--app/assets/images/emoji/third_place.png (renamed from public/-/emojis/1/third_place.png)bin1529 -> 1529 bytes
-rw-r--r--app/assets/images/emoji/thought_balloon.png (renamed from public/-/emojis/1/thought_balloon.png)bin489 -> 489 bytes
-rw-r--r--app/assets/images/emoji/three.png (renamed from public/-/emojis/1/three.png)bin602 -> 602 bytes
-rw-r--r--app/assets/images/emoji/thumbsdown.png (renamed from public/-/emojis/1/thumbsdown.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/thumbsdown_tone1.png (renamed from public/-/emojis/1/thumbsdown_tone1.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/thumbsdown_tone2.png (renamed from public/-/emojis/1/thumbsdown_tone2.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/thumbsdown_tone3.png (renamed from public/-/emojis/1/thumbsdown_tone3.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/thumbsdown_tone4.png (renamed from public/-/emojis/1/thumbsdown_tone4.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/thumbsdown_tone5.png (renamed from public/-/emojis/1/thumbsdown_tone5.png)bin815 -> 815 bytes
-rw-r--r--app/assets/images/emoji/thumbsup.png (renamed from public/-/emojis/1/thumbsup.png)bin814 -> 814 bytes
-rw-r--r--app/assets/images/emoji/thumbsup_tone1.png (renamed from public/-/emojis/1/thumbsup_tone1.png)bin814 -> 814 bytes
-rw-r--r--app/assets/images/emoji/thumbsup_tone2.png (renamed from public/-/emojis/1/thumbsup_tone2.png)bin814 -> 814 bytes
-rw-r--r--app/assets/images/emoji/thumbsup_tone3.png (renamed from public/-/emojis/1/thumbsup_tone3.png)bin814 -> 814 bytes
-rw-r--r--app/assets/images/emoji/thumbsup_tone4.png (renamed from public/-/emojis/1/thumbsup_tone4.png)bin814 -> 814 bytes
-rw-r--r--app/assets/images/emoji/thumbsup_tone5.png (renamed from public/-/emojis/1/thumbsup_tone5.png)bin814 -> 814 bytes
-rw-r--r--app/assets/images/emoji/thunder_cloud_rain.png (renamed from public/-/emojis/1/thunder_cloud_rain.png)bin1020 -> 1020 bytes
-rw-r--r--app/assets/images/emoji/ticket.png (renamed from public/-/emojis/1/ticket.png)bin763 -> 763 bytes
-rw-r--r--app/assets/images/emoji/tickets.png (renamed from public/-/emojis/1/tickets.png)bin1750 -> 1750 bytes
-rw-r--r--app/assets/images/emoji/tiger.png (renamed from public/-/emojis/1/tiger.png)bin2104 -> 2104 bytes
-rw-r--r--app/assets/images/emoji/tiger2.png (renamed from public/-/emojis/1/tiger2.png)bin2623 -> 2623 bytes
-rw-r--r--app/assets/images/emoji/timer.png (renamed from public/-/emojis/1/timer.png)bin1897 -> 1897 bytes
-rw-r--r--app/assets/images/emoji/tired_face.png (renamed from public/-/emojis/1/tired_face.png)bin1126 -> 1126 bytes
-rw-r--r--app/assets/images/emoji/tm.png (renamed from public/-/emojis/1/tm.png)bin300 -> 300 bytes
-rw-r--r--app/assets/images/emoji/toilet.png (renamed from public/-/emojis/1/toilet.png)bin726 -> 726 bytes
-rw-r--r--app/assets/images/emoji/tokyo_tower.png (renamed from public/-/emojis/1/tokyo_tower.png)bin765 -> 765 bytes
-rw-r--r--app/assets/images/emoji/tomato.png (renamed from public/-/emojis/1/tomato.png)bin1055 -> 1055 bytes
-rw-r--r--app/assets/images/emoji/tone1.png (renamed from public/-/emojis/1/tone1.png)bin372 -> 372 bytes
-rw-r--r--app/assets/images/emoji/tone2.png (renamed from public/-/emojis/1/tone2.png)bin372 -> 372 bytes
-rw-r--r--app/assets/images/emoji/tone3.png (renamed from public/-/emojis/1/tone3.png)bin375 -> 375 bytes
-rw-r--r--app/assets/images/emoji/tone4.png (renamed from public/-/emojis/1/tone4.png)bin374 -> 374 bytes
-rw-r--r--app/assets/images/emoji/tone5.png (renamed from public/-/emojis/1/tone5.png)bin374 -> 374 bytes
-rw-r--r--app/assets/images/emoji/tongue.png (renamed from public/-/emojis/1/tongue.png)bin599 -> 599 bytes
-rw-r--r--app/assets/images/emoji/tools.png (renamed from public/-/emojis/1/tools.png)bin1225 -> 1225 bytes
-rw-r--r--app/assets/images/emoji/top.png (renamed from public/-/emojis/1/top.png)bin389 -> 389 bytes
-rw-r--r--app/assets/images/emoji/tophat.png (renamed from public/-/emojis/1/tophat.png)bin845 -> 845 bytes
-rw-r--r--app/assets/images/emoji/track_next.png (renamed from public/-/emojis/1/track_next.png)bin551 -> 551 bytes
-rw-r--r--app/assets/images/emoji/track_previous.png (renamed from public/-/emojis/1/track_previous.png)bin549 -> 549 bytes
-rw-r--r--app/assets/images/emoji/trackball.png (renamed from public/-/emojis/1/trackball.png)bin892 -> 892 bytes
-rw-r--r--app/assets/images/emoji/tractor.png (renamed from public/-/emojis/1/tractor.png)bin1192 -> 1192 bytes
-rw-r--r--app/assets/images/emoji/traffic_light.png (renamed from public/-/emojis/1/traffic_light.png)bin590 -> 590 bytes
-rw-r--r--app/assets/images/emoji/train.png (renamed from public/-/emojis/1/train.png)bin1031 -> 1031 bytes
-rw-r--r--app/assets/images/emoji/train2.png (renamed from public/-/emojis/1/train2.png)bin1499 -> 1499 bytes
-rw-r--r--app/assets/images/emoji/tram.png (renamed from public/-/emojis/1/tram.png)bin1065 -> 1065 bytes
-rw-r--r--app/assets/images/emoji/triangular_flag_on_post.png (renamed from public/-/emojis/1/triangular_flag_on_post.png)bin415 -> 415 bytes
-rw-r--r--app/assets/images/emoji/triangular_ruler.png (renamed from public/-/emojis/1/triangular_ruler.png)bin369 -> 369 bytes
-rw-r--r--app/assets/images/emoji/trident.png (renamed from public/-/emojis/1/trident.png)bin668 -> 668 bytes
-rw-r--r--app/assets/images/emoji/triumph.png (renamed from public/-/emojis/1/triumph.png)bin1529 -> 1529 bytes
-rw-r--r--app/assets/images/emoji/trolleybus.png (renamed from public/-/emojis/1/trolleybus.png)bin1168 -> 1168 bytes
-rw-r--r--app/assets/images/emoji/trophy.png (renamed from public/-/emojis/1/trophy.png)bin863 -> 863 bytes
-rw-r--r--app/assets/images/emoji/tropical_drink.png (renamed from public/-/emojis/1/tropical_drink.png)bin1428 -> 1428 bytes
-rw-r--r--app/assets/images/emoji/tropical_fish.png (renamed from public/-/emojis/1/tropical_fish.png)bin1676 -> 1676 bytes
-rw-r--r--app/assets/images/emoji/truck.png (renamed from public/-/emojis/1/truck.png)bin1366 -> 1366 bytes
-rw-r--r--app/assets/images/emoji/trumpet.png (renamed from public/-/emojis/1/trumpet.png)bin1281 -> 1281 bytes
-rw-r--r--app/assets/images/emoji/tulip.png (renamed from public/-/emojis/1/tulip.png)bin1065 -> 1065 bytes
-rw-r--r--app/assets/images/emoji/tumbler_glass.png (renamed from public/-/emojis/1/tumbler_glass.png)bin2312 -> 2312 bytes
-rw-r--r--app/assets/images/emoji/turkey.png (renamed from public/-/emojis/1/turkey.png)bin1240 -> 1240 bytes
-rw-r--r--app/assets/images/emoji/turtle.png (renamed from public/-/emojis/1/turtle.png)bin1515 -> 1515 bytes
-rw-r--r--app/assets/images/emoji/tv.png (renamed from public/-/emojis/1/tv.png)bin776 -> 776 bytes
-rw-r--r--app/assets/images/emoji/twisted_rightwards_arrows.png (renamed from public/-/emojis/1/twisted_rightwards_arrows.png)bin574 -> 574 bytes
-rw-r--r--app/assets/images/emoji/two.png (renamed from public/-/emojis/1/two.png)bin567 -> 567 bytes
-rw-r--r--app/assets/images/emoji/two_hearts.png (renamed from public/-/emojis/1/two_hearts.png)bin493 -> 493 bytes
-rw-r--r--app/assets/images/emoji/two_men_holding_hands.png (renamed from public/-/emojis/1/two_men_holding_hands.png)bin1347 -> 1347 bytes
-rw-r--r--app/assets/images/emoji/two_women_holding_hands.png (renamed from public/-/emojis/1/two_women_holding_hands.png)bin1544 -> 1544 bytes
-rw-r--r--app/assets/images/emoji/u5272.png (renamed from public/-/emojis/1/u5272.png)bin411 -> 411 bytes
-rw-r--r--app/assets/images/emoji/u5408.png (renamed from public/-/emojis/1/u5408.png)bin484 -> 484 bytes
-rw-r--r--app/assets/images/emoji/u55b6.png (renamed from public/-/emojis/1/u55b6.png)bin460 -> 460 bytes
-rw-r--r--app/assets/images/emoji/u6307.png (renamed from public/-/emojis/1/u6307.png)bin504 -> 504 bytes
-rw-r--r--app/assets/images/emoji/u6708.png (renamed from public/-/emojis/1/u6708.png)bin409 -> 409 bytes
-rw-r--r--app/assets/images/emoji/u6709.png (renamed from public/-/emojis/1/u6709.png)bin434 -> 434 bytes
-rw-r--r--app/assets/images/emoji/u6e80.png (renamed from public/-/emojis/1/u6e80.png)bin564 -> 564 bytes
-rw-r--r--app/assets/images/emoji/u7121.png (renamed from public/-/emojis/1/u7121.png)bin534 -> 534 bytes
-rw-r--r--app/assets/images/emoji/u7533.png (renamed from public/-/emojis/1/u7533.png)bin306 -> 306 bytes
-rw-r--r--app/assets/images/emoji/u7981.png (renamed from public/-/emojis/1/u7981.png)bin584 -> 584 bytes
-rw-r--r--app/assets/images/emoji/u7a7a.png (renamed from public/-/emojis/1/u7a7a.png)bin456 -> 456 bytes
-rw-r--r--app/assets/images/emoji/umbrella.png (renamed from public/-/emojis/1/umbrella.png)bin1229 -> 1229 bytes
-rw-r--r--app/assets/images/emoji/umbrella2.png (renamed from public/-/emojis/1/umbrella2.png)bin897 -> 897 bytes
-rw-r--r--app/assets/images/emoji/unamused.png (renamed from public/-/emojis/1/unamused.png)bin632 -> 632 bytes
-rw-r--r--app/assets/images/emoji/underage.png (renamed from public/-/emojis/1/underage.png)bin863 -> 863 bytes
-rw-r--r--app/assets/images/emoji/unicorn.png (renamed from public/-/emojis/1/unicorn.png)bin2107 -> 2107 bytes
-rw-r--r--app/assets/images/emoji/unlock.png (renamed from public/-/emojis/1/unlock.png)bin856 -> 856 bytes
-rw-r--r--app/assets/images/emoji/up.png (renamed from public/-/emojis/1/up.png)bin405 -> 405 bytes
-rw-r--r--app/assets/images/emoji/upside_down.png (renamed from public/-/emojis/1/upside_down.png)bin602 -> 602 bytes
-rw-r--r--app/assets/images/emoji/urn.png (renamed from public/-/emojis/1/urn.png)bin742 -> 742 bytes
-rw-r--r--app/assets/images/emoji/v.png (renamed from public/-/emojis/1/v.png)bin1009 -> 1009 bytes
-rw-r--r--app/assets/images/emoji/v_tone1.png (renamed from public/-/emojis/1/v_tone1.png)bin1009 -> 1009 bytes
-rw-r--r--app/assets/images/emoji/v_tone2.png (renamed from public/-/emojis/1/v_tone2.png)bin1009 -> 1009 bytes
-rw-r--r--app/assets/images/emoji/v_tone3.png (renamed from public/-/emojis/1/v_tone3.png)bin1009 -> 1009 bytes
-rw-r--r--app/assets/images/emoji/v_tone4.png (renamed from public/-/emojis/1/v_tone4.png)bin1009 -> 1009 bytes
-rw-r--r--app/assets/images/emoji/v_tone5.png (renamed from public/-/emojis/1/v_tone5.png)bin1009 -> 1009 bytes
-rw-r--r--app/assets/images/emoji/vertical_traffic_light.png (renamed from public/-/emojis/1/vertical_traffic_light.png)bin752 -> 752 bytes
-rw-r--r--app/assets/images/emoji/vhs.png (renamed from public/-/emojis/1/vhs.png)bin632 -> 632 bytes
-rw-r--r--app/assets/images/emoji/vibration_mode.png (renamed from public/-/emojis/1/vibration_mode.png)bin683 -> 683 bytes
-rw-r--r--app/assets/images/emoji/video_camera.png (renamed from public/-/emojis/1/video_camera.png)bin1611 -> 1611 bytes
-rw-r--r--app/assets/images/emoji/video_game.png (renamed from public/-/emojis/1/video_game.png)bin765 -> 765 bytes
-rw-r--r--app/assets/images/emoji/violin.png (renamed from public/-/emojis/1/violin.png)bin1156 -> 1156 bytes
-rw-r--r--app/assets/images/emoji/virgo.png (renamed from public/-/emojis/1/virgo.png)bin618 -> 618 bytes
-rw-r--r--app/assets/images/emoji/volcano.png (renamed from public/-/emojis/1/volcano.png)bin1257 -> 1257 bytes
-rw-r--r--app/assets/images/emoji/volleyball.png (renamed from public/-/emojis/1/volleyball.png)bin1202 -> 1202 bytes
-rw-r--r--app/assets/images/emoji/vs.png (renamed from public/-/emojis/1/vs.png)bin604 -> 604 bytes
-rw-r--r--app/assets/images/emoji/vulcan.png (renamed from public/-/emojis/1/vulcan.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/vulcan_tone1.png (renamed from public/-/emojis/1/vulcan_tone1.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/vulcan_tone2.png (renamed from public/-/emojis/1/vulcan_tone2.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/vulcan_tone3.png (renamed from public/-/emojis/1/vulcan_tone3.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/vulcan_tone4.png (renamed from public/-/emojis/1/vulcan_tone4.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/vulcan_tone5.png (renamed from public/-/emojis/1/vulcan_tone5.png)bin1083 -> 1083 bytes
-rw-r--r--app/assets/images/emoji/walking.png (renamed from public/-/emojis/1/walking.png)bin1082 -> 1082 bytes
-rw-r--r--app/assets/images/emoji/walking_tone1.png (renamed from public/-/emojis/1/walking_tone1.png)bin1084 -> 1084 bytes
-rw-r--r--app/assets/images/emoji/walking_tone2.png (renamed from public/-/emojis/1/walking_tone2.png)bin1084 -> 1084 bytes
-rw-r--r--app/assets/images/emoji/walking_tone3.png (renamed from public/-/emojis/1/walking_tone3.png)bin1066 -> 1066 bytes
-rw-r--r--app/assets/images/emoji/walking_tone4.png (renamed from public/-/emojis/1/walking_tone4.png)bin1075 -> 1075 bytes
-rw-r--r--app/assets/images/emoji/walking_tone5.png (renamed from public/-/emojis/1/walking_tone5.png)bin1065 -> 1065 bytes
-rw-r--r--app/assets/images/emoji/waning_crescent_moon.png (renamed from public/-/emojis/1/waning_crescent_moon.png)bin1213 -> 1213 bytes
-rw-r--r--app/assets/images/emoji/waning_gibbous_moon.png (renamed from public/-/emojis/1/waning_gibbous_moon.png)bin1208 -> 1208 bytes
-rw-r--r--app/assets/images/emoji/warning.png (renamed from public/-/emojis/1/warning.png)bin565 -> 565 bytes
-rw-r--r--app/assets/images/emoji/wastebasket.png (renamed from public/-/emojis/1/wastebasket.png)bin2414 -> 2414 bytes
-rw-r--r--app/assets/images/emoji/watch.png (renamed from public/-/emojis/1/watch.png)bin785 -> 785 bytes
-rw-r--r--app/assets/images/emoji/water_buffalo.png (renamed from public/-/emojis/1/water_buffalo.png)bin1536 -> 1536 bytes
-rw-r--r--app/assets/images/emoji/water_polo.png (renamed from public/-/emojis/1/water_polo.png)bin1755 -> 1755 bytes
-rw-r--r--app/assets/images/emoji/water_polo_tone1.png (renamed from public/-/emojis/1/water_polo_tone1.png)bin1758 -> 1758 bytes
-rw-r--r--app/assets/images/emoji/water_polo_tone2.png (renamed from public/-/emojis/1/water_polo_tone2.png)bin1756 -> 1756 bytes
-rw-r--r--app/assets/images/emoji/water_polo_tone3.png (renamed from public/-/emojis/1/water_polo_tone3.png)bin1760 -> 1760 bytes
-rw-r--r--app/assets/images/emoji/water_polo_tone4.png (renamed from public/-/emojis/1/water_polo_tone4.png)bin1749 -> 1749 bytes
-rw-r--r--app/assets/images/emoji/water_polo_tone5.png (renamed from public/-/emojis/1/water_polo_tone5.png)bin1748 -> 1748 bytes
-rw-r--r--app/assets/images/emoji/watermelon.png (renamed from public/-/emojis/1/watermelon.png)bin1275 -> 1275 bytes
-rw-r--r--app/assets/images/emoji/wave.png (renamed from public/-/emojis/1/wave.png)bin1300 -> 1300 bytes
-rw-r--r--app/assets/images/emoji/wave_tone1.png (renamed from public/-/emojis/1/wave_tone1.png)bin1300 -> 1300 bytes
-rw-r--r--app/assets/images/emoji/wave_tone2.png (renamed from public/-/emojis/1/wave_tone2.png)bin1300 -> 1300 bytes
-rw-r--r--app/assets/images/emoji/wave_tone3.png (renamed from public/-/emojis/1/wave_tone3.png)bin1295 -> 1295 bytes
-rw-r--r--app/assets/images/emoji/wave_tone4.png (renamed from public/-/emojis/1/wave_tone4.png)bin1300 -> 1300 bytes
-rw-r--r--app/assets/images/emoji/wave_tone5.png (renamed from public/-/emojis/1/wave_tone5.png)bin1300 -> 1300 bytes
-rw-r--r--app/assets/images/emoji/wavy_dash.png (renamed from public/-/emojis/1/wavy_dash.png)bin359 -> 359 bytes
-rw-r--r--app/assets/images/emoji/waxing_crescent_moon.png (renamed from public/-/emojis/1/waxing_crescent_moon.png)bin1199 -> 1199 bytes
-rw-r--r--app/assets/images/emoji/waxing_gibbous_moon.png (renamed from public/-/emojis/1/waxing_gibbous_moon.png)bin1229 -> 1229 bytes
-rw-r--r--app/assets/images/emoji/wc.png (renamed from public/-/emojis/1/wc.png)bin752 -> 752 bytes
-rw-r--r--app/assets/images/emoji/weary.png (renamed from public/-/emojis/1/weary.png)bin871 -> 871 bytes
-rw-r--r--app/assets/images/emoji/wedding.png (renamed from public/-/emojis/1/wedding.png)bin1260 -> 1260 bytes
-rw-r--r--app/assets/images/emoji/whale.png (renamed from public/-/emojis/1/whale.png)bin1572 -> 1572 bytes
-rw-r--r--app/assets/images/emoji/whale2.png (renamed from public/-/emojis/1/whale2.png)bin1196 -> 1196 bytes
-rw-r--r--app/assets/images/emoji/wheel_of_dharma.png (renamed from public/-/emojis/1/wheel_of_dharma.png)bin666 -> 666 bytes
-rw-r--r--app/assets/images/emoji/wheelchair.png (renamed from public/-/emojis/1/wheelchair.png)bin683 -> 683 bytes
-rw-r--r--app/assets/images/emoji/white_check_mark.png (renamed from public/-/emojis/1/white_check_mark.png)bin547 -> 547 bytes
-rw-r--r--app/assets/images/emoji/white_circle.png (renamed from public/-/emojis/1/white_circle.png)bin351 -> 351 bytes
-rw-r--r--app/assets/images/emoji/white_flower.png (renamed from public/-/emojis/1/white_flower.png)bin941 -> 941 bytes
-rw-r--r--app/assets/images/emoji/white_large_square.png (renamed from public/-/emojis/1/white_large_square.png)bin110 -> 110 bytes
-rw-r--r--app/assets/images/emoji/white_medium_small_square.png (renamed from public/-/emojis/1/white_medium_small_square.png)bin110 -> 110 bytes
-rw-r--r--app/assets/images/emoji/white_medium_square.png (renamed from public/-/emojis/1/white_medium_square.png)bin108 -> 108 bytes
-rw-r--r--app/assets/images/emoji/white_small_square.png (renamed from public/-/emojis/1/white_small_square.png)bin108 -> 108 bytes
-rw-r--r--app/assets/images/emoji/white_square_button.png (renamed from public/-/emojis/1/white_square_button.png)bin122 -> 122 bytes
-rw-r--r--app/assets/images/emoji/white_sun_cloud.png (renamed from public/-/emojis/1/white_sun_cloud.png)bin968 -> 968 bytes
-rw-r--r--app/assets/images/emoji/white_sun_rain_cloud.png (renamed from public/-/emojis/1/white_sun_rain_cloud.png)bin1161 -> 1161 bytes
-rw-r--r--app/assets/images/emoji/white_sun_small_cloud.png (renamed from public/-/emojis/1/white_sun_small_cloud.png)bin989 -> 989 bytes
-rw-r--r--app/assets/images/emoji/wilted_rose.png (renamed from public/-/emojis/1/wilted_rose.png)bin1349 -> 1349 bytes
-rw-r--r--app/assets/images/emoji/wind_blowing_face.png (renamed from public/-/emojis/1/wind_blowing_face.png)bin1827 -> 1827 bytes
-rw-r--r--app/assets/images/emoji/wind_chime.png (renamed from public/-/emojis/1/wind_chime.png)bin1046 -> 1046 bytes
-rw-r--r--app/assets/images/emoji/wine_glass.png (renamed from public/-/emojis/1/wine_glass.png)bin655 -> 655 bytes
-rw-r--r--app/assets/images/emoji/wink.png (renamed from public/-/emojis/1/wink.png)bin746 -> 746 bytes
-rw-r--r--app/assets/images/emoji/wolf.png (renamed from public/-/emojis/1/wolf.png)bin1528 -> 1528 bytes
-rw-r--r--app/assets/images/emoji/woman.png (renamed from public/-/emojis/1/woman.png)bin1212 -> 1212 bytes
-rw-r--r--app/assets/images/emoji/woman_tone1.png (renamed from public/-/emojis/1/woman_tone1.png)bin1212 -> 1212 bytes
-rw-r--r--app/assets/images/emoji/woman_tone2.png (renamed from public/-/emojis/1/woman_tone2.png)bin1212 -> 1212 bytes
-rw-r--r--app/assets/images/emoji/woman_tone3.png (renamed from public/-/emojis/1/woman_tone3.png)bin1202 -> 1202 bytes
-rw-r--r--app/assets/images/emoji/woman_tone4.png (renamed from public/-/emojis/1/woman_tone4.png)bin1195 -> 1195 bytes
-rw-r--r--app/assets/images/emoji/woman_tone5.png (renamed from public/-/emojis/1/woman_tone5.png)bin1202 -> 1202 bytes
-rw-r--r--app/assets/images/emoji/womans_clothes.png (renamed from public/-/emojis/1/womans_clothes.png)bin1042 -> 1042 bytes
-rw-r--r--app/assets/images/emoji/womans_hat.png (renamed from public/-/emojis/1/womans_hat.png)bin1553 -> 1553 bytes
-rw-r--r--app/assets/images/emoji/womens.png (renamed from public/-/emojis/1/womens.png)bin577 -> 577 bytes
-rw-r--r--app/assets/images/emoji/worried.png (renamed from public/-/emojis/1/worried.png)bin715 -> 715 bytes
-rw-r--r--app/assets/images/emoji/wrench.png (renamed from public/-/emojis/1/wrench.png)bin418 -> 418 bytes
-rw-r--r--app/assets/images/emoji/wrestlers.png (renamed from public/-/emojis/1/wrestlers.png)bin2556 -> 2556 bytes
-rw-r--r--app/assets/images/emoji/wrestlers_tone1.png (renamed from public/-/emojis/1/wrestlers_tone1.png)bin2563 -> 2563 bytes
-rw-r--r--app/assets/images/emoji/wrestlers_tone2.png (renamed from public/-/emojis/1/wrestlers_tone2.png)bin2553 -> 2553 bytes
-rw-r--r--app/assets/images/emoji/wrestlers_tone3.png (renamed from public/-/emojis/1/wrestlers_tone3.png)bin2541 -> 2541 bytes
-rw-r--r--app/assets/images/emoji/wrestlers_tone4.png (renamed from public/-/emojis/1/wrestlers_tone4.png)bin2553 -> 2553 bytes
-rw-r--r--app/assets/images/emoji/wrestlers_tone5.png (renamed from public/-/emojis/1/wrestlers_tone5.png)bin2542 -> 2542 bytes
-rw-r--r--app/assets/images/emoji/writing_hand.png (renamed from public/-/emojis/1/writing_hand.png)bin1001 -> 1001 bytes
-rw-r--r--app/assets/images/emoji/writing_hand_tone1.png (renamed from public/-/emojis/1/writing_hand_tone1.png)bin988 -> 988 bytes
-rw-r--r--app/assets/images/emoji/writing_hand_tone2.png (renamed from public/-/emojis/1/writing_hand_tone2.png)bin987 -> 987 bytes
-rw-r--r--app/assets/images/emoji/writing_hand_tone3.png (renamed from public/-/emojis/1/writing_hand_tone3.png)bin977 -> 977 bytes
-rw-r--r--app/assets/images/emoji/writing_hand_tone4.png (renamed from public/-/emojis/1/writing_hand_tone4.png)bin973 -> 973 bytes
-rw-r--r--app/assets/images/emoji/writing_hand_tone5.png (renamed from public/-/emojis/1/writing_hand_tone5.png)bin970 -> 970 bytes
-rw-r--r--app/assets/images/emoji/x.png (renamed from public/-/emojis/1/x.png)bin298 -> 298 bytes
-rw-r--r--app/assets/images/emoji/yellow_heart.png (renamed from public/-/emojis/1/yellow_heart.png)bin435 -> 435 bytes
-rw-r--r--app/assets/images/emoji/yen.png (renamed from public/-/emojis/1/yen.png)bin421 -> 421 bytes
-rw-r--r--app/assets/images/emoji/yin_yang.png (renamed from public/-/emojis/1/yin_yang.png)bin776 -> 776 bytes
-rw-r--r--app/assets/images/emoji/yum.png (renamed from public/-/emojis/1/yum.png)bin896 -> 896 bytes
-rw-r--r--app/assets/images/emoji/zap.png (renamed from public/-/emojis/1/zap.png)bin413 -> 413 bytes
-rw-r--r--app/assets/images/emoji/zero.png (renamed from public/-/emojis/1/zero.png)bin560 -> 560 bytes
-rw-r--r--app/assets/images/emoji/zipper_mouth.png (renamed from public/-/emojis/1/zipper_mouth.png)bin722 -> 722 bytes
-rw-r--r--app/assets/images/emoji/zzz.png (renamed from public/-/emojis/1/zzz.png)bin540 -> 540 bytes
-rw-r--r--app/assets/javascripts/awards_handler.js16
-rw-r--r--app/assets/javascripts/behaviors/gl_emoji.js97
-rw-r--r--app/assets/javascripts/boards/models/issue.js16
-rw-r--r--app/assets/javascripts/boards/models/list.js19
-rw-r--r--app/assets/javascripts/boards/models/milestone.js11
-rw-r--r--app/assets/javascripts/diffs/components/app.vue7
-rw-r--r--app/assets/javascripts/diffs/constants.js2
-rw-r--r--app/assets/javascripts/diffs/index.js2
-rw-r--r--app/assets/javascripts/dirty_submit/dirty_submit_form.js2
-rw-r--r--app/assets/javascripts/emoji/index.js77
-rw-r--r--app/assets/javascripts/emoji/support/index.js3
-rw-r--r--app/assets/javascripts/filtered_search/visual_token_value.js23
-rw-r--r--app/assets/javascripts/gfm_auto_complete.js12
-rw-r--r--app/assets/javascripts/ide/stores/mutations/merge_request.js3
-rw-r--r--app/assets/javascripts/import_projects/components/provider_repo_table_row.vue2
-rw-r--r--app/assets/javascripts/jobs/components/job_app.vue2
-rw-r--r--app/assets/javascripts/jobs/components/job_container_item.vue8
-rw-r--r--app/assets/javascripts/jobs/components/job_log_controllers.vue6
-rw-r--r--app/assets/javascripts/jobs/components/trigger_block.vue2
-rw-r--r--app/assets/javascripts/pages/profiles/show/index.js48
-rw-r--r--app/assets/javascripts/pages/projects/edit/index.js17
-rw-r--r--app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue28
-rw-r--r--app/assets/javascripts/vue_shared/components/notes/timeline_entry_item.vue6
-rw-r--r--app/assets/stylesheets/framework/common.scss6
-rw-r--r--app/assets/stylesheets/framework/dropdowns.scss6
-rw-r--r--app/assets/stylesheets/framework/forms.scss4
-rw-r--r--app/assets/stylesheets/pages/builds.scss47
-rw-r--r--app/assets/stylesheets/pages/import.scss2
-rw-r--r--app/assets/stylesheets/pages/issuable.scss11
-rw-r--r--app/assets/stylesheets/pages/settings.scss2
-rw-r--r--app/assets/stylesheets/pages/stat_graph.scss8
-rw-r--r--app/controllers/projects/repositories_controller.rb2
-rw-r--r--app/finders/projects_finder.rb2
-rw-r--r--app/helpers/clusters_helper.rb5
-rw-r--r--app/helpers/projects_helper.rb4
-rw-r--r--app/models/application_setting.rb16
-rw-r--r--app/models/badge.rb2
-rw-r--r--app/models/ci/build_runner_session.rb2
-rw-r--r--app/models/concerns/group_descendant.rb4
-rw-r--r--app/models/concerns/token_authenticatable_strategies/base.rb2
-rw-r--r--app/models/concerns/token_authenticatable_strategies/encrypted.rb6
-rw-r--r--app/models/environment.rb2
-rw-r--r--app/models/error_tracking/project_error_tracking_setting.rb2
-rw-r--r--app/models/generic_commit_status.rb2
-rw-r--r--app/models/milestone.rb10
-rw-r--r--app/models/project.rb78
-rw-r--r--app/models/project_group_link.rb4
-rw-r--r--app/models/project_services/asana_service.rb8
-rw-r--r--app/models/project_services/bamboo_service.rb12
-rw-r--r--app/models/project_services/discord_service.rb4
-rw-r--r--app/models/project_services/emails_on_push_service.rb14
-rw-r--r--app/models/project_services/external_wiki_service.rb6
-rw-r--r--app/models/project_services/flowdock_service.rb4
-rw-r--r--app/models/project_services/hipchat_service.rb311
-rw-r--r--app/models/project_services/jira_service.rb20
-rw-r--r--app/models/project_services/pipelines_email_service.rb6
-rw-r--r--app/models/project_services/pivotaltracker_service.rb8
-rw-r--r--app/models/project_services/pushover_service.rb26
-rw-r--r--app/models/releases/link.rb2
-rw-r--r--app/models/remote_mirror.rb2
-rw-r--r--app/models/repository.rb5
-rw-r--r--app/models/service.rb1
-rw-r--r--app/models/u2f_registration.rb2
-rw-r--r--app/models/upload.rb6
-rw-r--r--app/models/user.rb22
-rw-r--r--app/serializers/issue_board_entity.rb1
-rw-r--r--app/services/clusters/applications/base_helm_service.rb14
-rw-r--r--app/services/clusters/applications/install_service.rb2
-rw-r--r--app/services/clusters/applications/patch_service.rb2
-rw-r--r--app/services/clusters/applications/upgrade_service.rb2
-rw-r--r--app/services/git/base_hooks_service.rb2
-rw-r--r--app/services/groups/create_service.rb6
-rw-r--r--app/services/merge_requests/push_options_handler_service.rb4
-rw-r--r--app/services/projects/create_service.rb4
-rw-r--r--app/validators/addressable_url_validator.rb112
-rw-r--r--app/validators/public_url_validator.rb19
-rw-r--r--app/validators/url_validator.rb104
-rw-r--r--app/views/clusters/clusters/show.html.haml2
-rw-r--r--app/views/projects/_classification_policy_settings.html.haml6
-rw-r--r--app/views/projects/_export.html.haml67
-rw-r--r--app/views/projects/buttons/_download.html.haml36
-rw-r--r--app/views/projects/buttons/_download_links.html.haml9
-rw-r--r--app/views/projects/deployments/_actions.haml2
-rw-r--r--app/views/projects/edit.html.haml329
-rw-r--r--app/views/projects/environments/_form.html.haml2
-rw-r--r--app/views/projects/graphs/show.html.haml4
-rw-r--r--app/views/projects/merge_requests/show.html.haml3
-rw-r--r--app/views/projects/settings/_general.html.haml42
-rw-r--r--app/views/shared/_confirm_modal.html.haml8
-rw-r--r--app/workers/concerns/application_worker.rb2
-rw-r--r--app/workers/email_receiver_worker.rb16
-rw-r--r--app/workers/object_storage/migrate_uploads_worker.rb14
-rw-r--r--app/workers/post_receive.rb27
-rw-r--r--changelogs/unreleased/24704-download-repository-path.yml5
-rw-r--r--changelogs/unreleased/24985-align-urlvalidator-to-validate_url-gem-implementation.yml5
-rw-r--r--changelogs/unreleased/47327-fix-github-import-visibility.yml5
-rw-r--r--changelogs/unreleased/60224-btn-env.yml5
-rw-r--r--changelogs/unreleased/60261-save-btn-env.yml5
-rw-r--r--changelogs/unreleased/60304-long-file-names-in-mr-diffs-cause-horizontal-scrolling.yml5
-rw-r--r--changelogs/unreleased/allow-to-use-untrusted-ruby-syntax.yml5
-rw-r--r--changelogs/unreleased/fix-api-group-visibility.yml5
-rw-r--r--changelogs/unreleased/fix-pull-request-importer.yml5
-rw-r--r--changelogs/unreleased/fixed-web-ide-merge-request-review.yml5
-rw-r--r--changelogs/unreleased/fj-bump-workhorse-version-8-6-0.yml5
-rw-r--r--changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml5
-rw-r--r--changelogs/unreleased/limit-amount-of-created-pipelines.yml5
-rw-r--r--changelogs/unreleased/sh-optimize-projects-api.yml5
-rw-r--r--changelogs/unreleased/update-workhorse-8-5-1.yml5
-rw-r--r--config/gitlab.yml.example3
-rw-r--r--config/initializers/hipchat_client_patch.rb15
-rw-r--r--config/initializers/zz_metrics.rb1
-rw-r--r--db/fixtures/development/02_application_settings.rb2
-rw-r--r--db/migrate/20190107151029_remove_hipchat_services.rb16
-rw-r--r--doc/administration/high_availability/nfs.md11
-rw-r--r--doc/administration/housekeeping.md2
-rw-r--r--doc/administration/img/housekeeping_settings.pngbin12025 -> 24754 bytes
-rw-r--r--doc/administration/integration/terminal.md2
-rw-r--r--doc/administration/operations/fast_ssh_key_lookup.md3
-rw-r--r--doc/api/services.md39
-rw-r--r--doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md5
-rw-r--r--[-rwxr-xr-x]doc/ci/introduction/img/job_running.pngbin237781 -> 237781 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/introduction/img/pipeline_status.pngbin54243 -> 54243 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/introduction/img/rollback.pngbin41693 -> 41693 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/variables/img/ci_job_stage_output_example.pngbin68964 -> 68964 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/variables/img/custom_variable_output.pngbin70552 -> 70552 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/variables/img/new_custom_variable_example.pngbin44164 -> 44164 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/variables/img/override_value_via_manual_pipeline_output.pngbin72420 -> 72420 bytes
-rw-r--r--[-rwxr-xr-x]doc/ci/variables/img/override_variable_manual_pipeline.pngbin29090 -> 29090 bytes
-rw-r--r--doc/ci/yaml/README.md22
-rw-r--r--doc/development/contributing/index.md7
-rw-r--r--doc/development/contributing/issue_workflow.md4
-rw-r--r--doc/development/contributing/style_guides.md2
-rw-r--r--doc/development/testing_guide/flaky_tests.md4
-rw-r--r--doc/install/google_cloud_platform/index.md6
-rw-r--r--doc/integration/README.md4
-rw-r--r--doc/project_services/hipchat.md1
-rw-r--r--doc/raketasks/backup_restore.md54
-rw-r--r--doc/university/glossary/README.md2
-rw-r--r--doc/university/high-availability/aws/README.md2
-rw-r--r--doc/user/group/subgroups/index.md2
-rw-r--r--doc/user/index.md4
-rw-r--r--doc/user/profile/index.md11
-rw-r--r--doc/user/project/clusters/index.md2
-rw-r--r--doc/user/project/integrations/hipchat.md53
-rw-r--r--doc/user/project/integrations/project_services.md1
-rw-r--r--doc/user/project/pages/getting_started_part_one.md89
-rw-r--r--doc/user/project/pages/getting_started_part_three.md3
-rw-r--r--doc/user/project/pages/getting_started_part_two.md4
-rw-r--r--doc/user/project/pages/img/pages_remove.pngbin3777 -> 0 bytes
-rw-r--r--doc/user/project/pages/img/remove_pages.pngbin0 -> 58035 bytes
-rw-r--r--doc/user/project/pages/index.md9
-rw-r--r--doc/user/project/pages/introduction.md352
-rw-r--r--doc/user/project/pages/lets_encrypt_for_gitlab_pages.md2
-rw-r--r--doc/user/project/repository/img/download_source_code.pngbin61467 -> 0 bytes
-rw-r--r--doc/user/project/repository/index.md20
-rw-r--r--doc/workflow/repository_mirroring.md17
-rw-r--r--doc/workflow/time_tracking.md2
-rw-r--r--lib/api/helpers/services_helpers.rb40
-rw-r--r--lib/api/import_github.rb4
-rw-r--r--lib/gitlab/git/repository.rb9
-rw-r--r--lib/gitlab/import_export/after_export_strategies/web_upload_strategy.rb2
-rw-r--r--lib/gitlab/kubernetes/namespace.rb29
-rw-r--r--lib/gitlab/legacy_github_import/project_creator.rb2
-rw-r--r--lib/gitlab/url_blocker.rb10
-rw-r--r--lib/gitlab/visibility_level.rb2
-rw-r--r--lib/gitlab/workhorse.rb38
-rw-r--r--lib/tasks/gemojione.rake15
-rw-r--r--lib/tasks/karma.rake10
-rw-r--r--locale/gitlab.pot510
-rw-r--r--public/-/emojis/1/emojis.json10760
-rw-r--r--qa/Dockerfile2
-rw-r--r--qa/README.md18
-rw-r--r--qa/qa/page/project/settings/advanced.rb20
-rw-r--r--qa/qa/page/project/settings/common.rb8
-rw-r--r--qa/qa/page/project/settings/main.rb18
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb4
-rw-r--r--qa/spec/specs/runner_spec.rb4
-rw-r--r--spec/controllers/projects/mirrors_controller_spec.rb2
-rw-r--r--spec/factories/services.rb6
-rw-r--r--spec/features/ide/user_opens_merge_request_spec.rb21
-rw-r--r--spec/features/issues/issue_sidebar_spec.rb2
-rw-r--r--spec/features/issues/user_creates_branch_and_merge_request_spec.rb4
-rw-r--r--spec/features/issues/user_interacts_with_awards_spec.rb2
-rw-r--r--spec/features/projects/branches/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/files/download_buttons_spec.rb2
-rw-r--r--spec/features/projects/services/disable_triggers_spec.rb5
-rw-r--r--spec/features/projects/services/user_activates_hipchat_spec.rb40
-rw-r--r--spec/features/projects/services/user_views_services_spec.rb3
-rw-r--r--spec/features/projects/settings/user_renames_a_project_spec.rb37
-rw-r--r--spec/features/projects/show/download_buttons_spec.rb3
-rw-r--r--spec/features/projects/tags/download_buttons_spec.rb2
-rw-r--r--spec/features/projects_spec.rb15
-rw-r--r--spec/fixtures/api/schemas/entities/issue_board.json3
-rw-r--r--spec/frontend/.eslintrc.yml6
-rw-r--r--spec/frontend/clusters/clusters_bundle_spec.js2
-rw-r--r--spec/frontend/ide/stores/modules/file_templates/mutations_spec.js10
-rw-r--r--spec/frontend/ide/stores/mutations/merge_request_spec.js18
-rw-r--r--spec/frontend/import_projects/store/mutations_spec.js4
-rw-r--r--spec/frontend/lib/utils/text_utility_spec.js14
-rw-r--r--spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js2
-rw-r--r--spec/frontend/vue_shared/components/notes/timeline_entry_item_spec.js2
-rw-r--r--spec/frontend/vuex_shared/modules/modal/mutations_spec.js6
-rw-r--r--spec/javascripts/awards_handler_spec.js11
-rw-r--r--spec/javascripts/diffs/components/app_spec.js8
-rw-r--r--spec/javascripts/emoji_spec.js189
-rw-r--r--spec/javascripts/fixtures/environments/table.html.haml11
-rw-r--r--spec/javascripts/fixtures/static/environments/table.html15
-rw-r--r--spec/javascripts/fixtures/static_fixtures.rb19
-rw-r--r--spec/javascripts/notes_spec.js2
-rw-r--r--spec/lib/gitlab/git/repository_spec.rb18
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml1
-rw-r--r--spec/lib/gitlab/import_export/project.json22
-rw-r--r--spec/lib/gitlab/kubernetes/namespace_spec.rb27
-rw-r--r--spec/lib/gitlab/legacy_github_import/project_creator_spec.rb16
-rw-r--r--spec/lib/gitlab/path_regex_spec.rb2
-rw-r--r--spec/lib/gitlab/url_blocker_spec.rb6
-rw-r--r--spec/lib/gitlab/visibility_level_spec.rb8
-rw-r--r--spec/lib/gitlab/workhorse_spec.rb31
-rw-r--r--spec/models/project_services/hipchat_service_spec.rb410
-rw-r--r--spec/models/project_spec.rb50
-rw-r--r--spec/requests/api/commit_statuses_spec.rb17
-rw-r--r--spec/requests/api/pipelines_spec.rb6
-rw-r--r--spec/serializers/pipeline_serializer_spec.rb6
-rw-r--r--spec/services/ci/retry_build_service_spec.rb8
-rw-r--r--spec/services/groups/create_service_spec.rb11
-rw-r--r--spec/services/merge_requests/push_options_handler_service_spec.rb2
-rw-r--r--spec/services/merge_requests/refresh_service_spec.rb4
-rw-r--r--spec/services/merge_requests/update_service_spec.rb2
-rw-r--r--spec/services/quick_actions/interpret_service_spec.rb2
-rw-r--r--spec/spec_helper.rb4
-rw-r--r--spec/support/features/discussion_comments_shared_example.rb2
-rw-r--r--spec/support/helpers/stub_configuration.rb3
-rw-r--r--spec/support/helpers/stub_object_storage.rb3
-rw-r--r--spec/support/shared_examples/dirty_submit_form_shared_examples.rb14
-rw-r--r--spec/support/shared_examples/services/base_helm_service_shared_examples.rb2
-rw-r--r--spec/support/shared_examples/url_validator_examples.rb24
-rw-r--r--spec/validators/addressable_url_validator_spec.rb (renamed from spec/validators/url_validator_spec.rb)131
-rw-r--r--spec/validators/public_url_validator_spec.rb8
-rw-r--r--spec/workers/post_receive_spec.rb42
-rw-r--r--vendor/licenses.csv1
2043 files changed, 3128 insertions, 12580 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7d01afc9a16..8f80f1656d6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -561,8 +561,13 @@ rspec-mysql:
<<: *only-schedules-master
parallel: 50
+rspec-fast-spec-helper:
+ <<: *rspec-metadata-pg
+ script:
+ - bundle exec rspec spec/fast_spec_helper.rb
+
.rspec-quarantine: &rspec-quarantine
- retry: 0
+ <<: *only-schedules-master
script:
- export CACHE_CLASSES=true
- scripts/gitaly-test-spawn
@@ -593,7 +598,7 @@ static-analysis:
- tmp/rubocop_cache
# Documentation checks:
-# - Check validity of relative links
+# - Check validity of relative links, and anchors
# - Make sure cURL examples in API docs use the full switches
docs lint:
<<: *dedicated-runner
@@ -612,6 +617,8 @@ docs lint:
- bundle exec nanoc
# Check the internal links
- bundle exec nanoc check internal_links
+ # Check the internal anchor links
+ - bundle exec nanoc check internal_anchors
downtime_check:
<<: *rake-exec
diff --git a/.gitlab/CODEOWNERS.disabled b/.gitlab/CODEOWNERS.disabled
index 89a9696d3e8..f7e2c06dae5 100644
--- a/.gitlab/CODEOWNERS.disabled
+++ b/.gitlab/CODEOWNERS.disabled
@@ -1,6 +1,6 @@
# Backend Maintainers are the default for all ruby files
-*.rb @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @nick.thomas @rspeicher @rymai @smcgivern
-*.rake @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @nick.thomas @rspeicher @rymai @smcgivern
+*.rb @ashmckenzie @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @nick.thomas @rspeicher @rymai @smcgivern
+*.rake @ashmckenzie @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @nick.thomas @rspeicher @rymai @smcgivern
# Technical writing team are the default reviewers for everything in `doc/`
/doc/ @axil @marcia
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 97e39ce99cb..77ad4753c84 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -268,6 +268,7 @@ Rails/Presence:
- 'app/models/clusters/platforms/kubernetes.rb'
- 'app/models/concerns/mentionable.rb'
- 'app/models/concerns/token_authenticatable.rb'
+ - 'app/models/project_services/hipchat_service.rb'
- 'app/models/project_services/irker_service.rb'
- 'app/models/project_services/jira_service.rb'
- 'app/models/project_services/kubernetes_service.rb'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c99e487d04b..41506746c98 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,26 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
+## 11.9.8 (2019-04-11)
+
+### Deprecated (1 change)
+
+- Allow to use untrusted Regexp via feature flag. !26905
+
+### Performance (2 changes)
+
+- Improve performance of PR import. !27121
+- Disable method instrumentation for diffs. !27235
+
+### Other (1 change)
+
+- Restore HipChat project service. !27172
+
+
+## 11.9.7 (2019-04-09)
+
+- No changes.
+
## 11.9.6 (2019-04-04)
### Fixed (3 changes)
@@ -602,6 +622,10 @@ entry.
- Creates mixin to reduce code duplication between CE and EE in graph component.
+## 11.7.11 (2019-04-09)
+
+- No changes.
+
## 11.7.10 (2019-03-28)
### Security (7 changes)
diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION
index 6d2890793d4..acd405b1d62 100644
--- a/GITLAB_WORKHORSE_VERSION
+++ b/GITLAB_WORKHORSE_VERSION
@@ -1 +1 @@
-8.5.0
+8.6.0
diff --git a/Gemfile b/Gemfile
index 6052018754a..f2d24d79cb7 100644
--- a/Gemfile
+++ b/Gemfile
@@ -201,6 +201,9 @@ gem 'connection_pool', '~> 2.0'
# Discord integration
gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false
+# HipChat integration
+gem 'hipchat', '~> 1.5.0'
+
# JIRA integration
gem 'jira-ruby', '~> 1.4'
@@ -349,7 +352,7 @@ group :development, :test do
gem 'spring', '~> 2.0.0'
gem 'spring-commands-rspec', '~> 1.0.4'
- gem 'gitlab-styles', '~> 2.4', require: false
+ gem 'gitlab-styles', '~> 2.5', require: false
# Pin these dependencies, otherwise a new rule could break the CI pipelines
gem 'rubocop', '~> 0.54.0'
gem 'rubocop-rspec', '~> 1.22.1'
diff --git a/Gemfile.lock b/Gemfile.lock
index b522aa85b39..baa7be6258a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -289,7 +289,7 @@ GEM
gitlab-markup (1.7.0)
gitlab-sidekiq-fetcher (0.4.0)
sidekiq (~> 5)
- gitlab-styles (2.5.1)
+ gitlab-styles (2.5.2)
rubocop (~> 0.54.0)
rubocop-gitlab-security (~> 0.1.0)
rubocop-rspec (~> 1.19)
@@ -366,6 +366,9 @@ GEM
hashie (>= 3.0)
health_check (2.6.0)
rails (>= 4.0)
+ hipchat (1.5.2)
+ httparty
+ mimemagic
html-pipeline (2.8.4)
activesupport (>= 2)
nokogiri (>= 1.4)
@@ -1022,7 +1025,7 @@ DEPENDENCIES
gitlab-default_value_for (~> 3.1.1)
gitlab-markup (~> 1.7.0)
gitlab-sidekiq-fetcher (~> 0.4.0)
- gitlab-styles (~> 2.4)
+ gitlab-styles (~> 2.5)
gitlab_omniauth-ldap (~> 2.1.1)
gon (~> 6.2)
google-api-client (~> 0.23)
@@ -1040,6 +1043,7 @@ DEPENDENCIES
hangouts-chat (~> 0.0.5)
hashie-forbidden_attributes
health_check (~> 2.6.0)
+ hipchat (~> 1.5.0)
html-pipeline (~> 2.8)
html2text
httparty (~> 0.16.4)
diff --git a/public/-/emojis/1/100.png b/app/assets/images/emoji/100.png
index 6903ff0304a..6903ff0304a 100644
--- a/public/-/emojis/1/100.png
+++ b/app/assets/images/emoji/100.png
Binary files differ
diff --git a/public/-/emojis/1/1234.png b/app/assets/images/emoji/1234.png
index 248dc7e55b6..248dc7e55b6 100644
--- a/public/-/emojis/1/1234.png
+++ b/app/assets/images/emoji/1234.png
Binary files differ
diff --git a/public/-/emojis/1/1F627.png b/app/assets/images/emoji/1F627.png
index f99026a3bc7..f99026a3bc7 100644
--- a/public/-/emojis/1/1F627.png
+++ b/app/assets/images/emoji/1F627.png
Binary files differ
diff --git a/public/-/emojis/1/8ball.png b/app/assets/images/emoji/8ball.png
index 38ca662eded..38ca662eded 100644
--- a/public/-/emojis/1/8ball.png
+++ b/app/assets/images/emoji/8ball.png
Binary files differ
diff --git a/public/-/emojis/1/a.png b/app/assets/images/emoji/a.png
index 8603ff05a17..8603ff05a17 100644
--- a/public/-/emojis/1/a.png
+++ b/app/assets/images/emoji/a.png
Binary files differ
diff --git a/public/-/emojis/1/ab.png b/app/assets/images/emoji/ab.png
index d9f2d17dea0..d9f2d17dea0 100644
--- a/public/-/emojis/1/ab.png
+++ b/app/assets/images/emoji/ab.png
Binary files differ
diff --git a/public/-/emojis/1/abc.png b/app/assets/images/emoji/abc.png
index 7688de692a9..7688de692a9 100644
--- a/public/-/emojis/1/abc.png
+++ b/app/assets/images/emoji/abc.png
Binary files differ
diff --git a/public/-/emojis/1/abcd.png b/app/assets/images/emoji/abcd.png
index 0996a870570..0996a870570 100644
--- a/public/-/emojis/1/abcd.png
+++ b/app/assets/images/emoji/abcd.png
Binary files differ
diff --git a/public/-/emojis/1/accept.png b/app/assets/images/emoji/accept.png
index 8afd7ce99cf..8afd7ce99cf 100644
--- a/public/-/emojis/1/accept.png
+++ b/app/assets/images/emoji/accept.png
Binary files differ
diff --git a/public/-/emojis/1/aerial_tramway.png b/app/assets/images/emoji/aerial_tramway.png
index 3eb4b61bf1d..3eb4b61bf1d 100644
--- a/public/-/emojis/1/aerial_tramway.png
+++ b/app/assets/images/emoji/aerial_tramway.png
Binary files differ
diff --git a/public/-/emojis/1/airplane.png b/app/assets/images/emoji/airplane.png
index 268d2ac3c8e..268d2ac3c8e 100644
--- a/public/-/emojis/1/airplane.png
+++ b/app/assets/images/emoji/airplane.png
Binary files differ
diff --git a/public/-/emojis/1/airplane_arriving.png b/app/assets/images/emoji/airplane_arriving.png
index d66841962f2..d66841962f2 100644
--- a/public/-/emojis/1/airplane_arriving.png
+++ b/app/assets/images/emoji/airplane_arriving.png
Binary files differ
diff --git a/public/-/emojis/1/airplane_departure.png b/app/assets/images/emoji/airplane_departure.png
index a5766f9f4ae..a5766f9f4ae 100644
--- a/public/-/emojis/1/airplane_departure.png
+++ b/app/assets/images/emoji/airplane_departure.png
Binary files differ
diff --git a/public/-/emojis/1/airplane_small.png b/app/assets/images/emoji/airplane_small.png
index b731b15e3a8..b731b15e3a8 100644
--- a/public/-/emojis/1/airplane_small.png
+++ b/app/assets/images/emoji/airplane_small.png
Binary files differ
diff --git a/public/-/emojis/1/alarm_clock.png b/app/assets/images/emoji/alarm_clock.png
index cdbc2fbb950..cdbc2fbb950 100644
--- a/public/-/emojis/1/alarm_clock.png
+++ b/app/assets/images/emoji/alarm_clock.png
Binary files differ
diff --git a/public/-/emojis/1/alembic.png b/app/assets/images/emoji/alembic.png
index 307a7324249..307a7324249 100644
--- a/public/-/emojis/1/alembic.png
+++ b/app/assets/images/emoji/alembic.png
Binary files differ
diff --git a/public/-/emojis/1/alien.png b/app/assets/images/emoji/alien.png
index 3b90e97433b..3b90e97433b 100644
--- a/public/-/emojis/1/alien.png
+++ b/app/assets/images/emoji/alien.png
Binary files differ
diff --git a/public/-/emojis/1/ambulance.png b/app/assets/images/emoji/ambulance.png
index 6fb8076d766..6fb8076d766 100644
--- a/public/-/emojis/1/ambulance.png
+++ b/app/assets/images/emoji/ambulance.png
Binary files differ
diff --git a/public/-/emojis/1/amphora.png b/app/assets/images/emoji/amphora.png
index 96de5056059..96de5056059 100644
--- a/public/-/emojis/1/amphora.png
+++ b/app/assets/images/emoji/amphora.png
Binary files differ
diff --git a/public/-/emojis/1/anchor.png b/app/assets/images/emoji/anchor.png
index b036f70a00b..b036f70a00b 100644
--- a/public/-/emojis/1/anchor.png
+++ b/app/assets/images/emoji/anchor.png
Binary files differ
diff --git a/public/-/emojis/1/angel.png b/app/assets/images/emoji/angel.png
index 66ea97a3b99..66ea97a3b99 100644
--- a/public/-/emojis/1/angel.png
+++ b/app/assets/images/emoji/angel.png
Binary files differ
diff --git a/public/-/emojis/1/angel_tone1.png b/app/assets/images/emoji/angel_tone1.png
index 391694dc07e..391694dc07e 100644
--- a/public/-/emojis/1/angel_tone1.png
+++ b/app/assets/images/emoji/angel_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/angel_tone2.png b/app/assets/images/emoji/angel_tone2.png
index 700cbe6ed2c..700cbe6ed2c 100644
--- a/public/-/emojis/1/angel_tone2.png
+++ b/app/assets/images/emoji/angel_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/angel_tone3.png b/app/assets/images/emoji/angel_tone3.png
index be597437d25..be597437d25 100644
--- a/public/-/emojis/1/angel_tone3.png
+++ b/app/assets/images/emoji/angel_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/angel_tone4.png b/app/assets/images/emoji/angel_tone4.png
index b06d3c853ef..b06d3c853ef 100644
--- a/public/-/emojis/1/angel_tone4.png
+++ b/app/assets/images/emoji/angel_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/angel_tone5.png b/app/assets/images/emoji/angel_tone5.png
index 17bd677e334..17bd677e334 100644
--- a/public/-/emojis/1/angel_tone5.png
+++ b/app/assets/images/emoji/angel_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/anger.png b/app/assets/images/emoji/anger.png
index d63c2e000e4..d63c2e000e4 100644
--- a/public/-/emojis/1/anger.png
+++ b/app/assets/images/emoji/anger.png
Binary files differ
diff --git a/public/-/emojis/1/anger_right.png b/app/assets/images/emoji/anger_right.png
index f5c97c4d297..f5c97c4d297 100644
--- a/public/-/emojis/1/anger_right.png
+++ b/app/assets/images/emoji/anger_right.png
Binary files differ
diff --git a/public/-/emojis/1/angry.png b/app/assets/images/emoji/angry.png
index cfc4a6ecde5..cfc4a6ecde5 100644
--- a/public/-/emojis/1/angry.png
+++ b/app/assets/images/emoji/angry.png
Binary files differ
diff --git a/public/-/emojis/1/ant.png b/app/assets/images/emoji/ant.png
index 994127ed6b3..994127ed6b3 100644
--- a/public/-/emojis/1/ant.png
+++ b/app/assets/images/emoji/ant.png
Binary files differ
diff --git a/public/-/emojis/1/apple.png b/app/assets/images/emoji/apple.png
index da650c60f62..da650c60f62 100644
--- a/public/-/emojis/1/apple.png
+++ b/app/assets/images/emoji/apple.png
Binary files differ
diff --git a/public/-/emojis/1/aquarius.png b/app/assets/images/emoji/aquarius.png
index 641a4f68889..641a4f68889 100644
--- a/public/-/emojis/1/aquarius.png
+++ b/app/assets/images/emoji/aquarius.png
Binary files differ
diff --git a/public/-/emojis/1/aries.png b/app/assets/images/emoji/aries.png
index 21a189d0ede..21a189d0ede 100644
--- a/public/-/emojis/1/aries.png
+++ b/app/assets/images/emoji/aries.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_backward.png b/app/assets/images/emoji/arrow_backward.png
index ee38e3b038e..ee38e3b038e 100644
--- a/public/-/emojis/1/arrow_backward.png
+++ b/app/assets/images/emoji/arrow_backward.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_double_down.png b/app/assets/images/emoji/arrow_double_down.png
index 90193bfcb40..90193bfcb40 100644
--- a/public/-/emojis/1/arrow_double_down.png
+++ b/app/assets/images/emoji/arrow_double_down.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_double_up.png b/app/assets/images/emoji/arrow_double_up.png
index 13543d5eef2..13543d5eef2 100644
--- a/public/-/emojis/1/arrow_double_up.png
+++ b/app/assets/images/emoji/arrow_double_up.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_down.png b/app/assets/images/emoji/arrow_down.png
index b8eefd0b19f..b8eefd0b19f 100644
--- a/public/-/emojis/1/arrow_down.png
+++ b/app/assets/images/emoji/arrow_down.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_down_small.png b/app/assets/images/emoji/arrow_down_small.png
index 5870b9a2241..5870b9a2241 100644
--- a/public/-/emojis/1/arrow_down_small.png
+++ b/app/assets/images/emoji/arrow_down_small.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_forward.png b/app/assets/images/emoji/arrow_forward.png
index 4e2b682857c..4e2b682857c 100644
--- a/public/-/emojis/1/arrow_forward.png
+++ b/app/assets/images/emoji/arrow_forward.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_heading_down.png b/app/assets/images/emoji/arrow_heading_down.png
index 2d9d24bca80..2d9d24bca80 100644
--- a/public/-/emojis/1/arrow_heading_down.png
+++ b/app/assets/images/emoji/arrow_heading_down.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_heading_up.png b/app/assets/images/emoji/arrow_heading_up.png
index f29bfcfc0de..f29bfcfc0de 100644
--- a/public/-/emojis/1/arrow_heading_up.png
+++ b/app/assets/images/emoji/arrow_heading_up.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_left.png b/app/assets/images/emoji/arrow_left.png
index 8c685e0a81b..8c685e0a81b 100644
--- a/public/-/emojis/1/arrow_left.png
+++ b/app/assets/images/emoji/arrow_left.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_lower_left.png b/app/assets/images/emoji/arrow_lower_left.png
index 88b37716078..88b37716078 100644
--- a/public/-/emojis/1/arrow_lower_left.png
+++ b/app/assets/images/emoji/arrow_lower_left.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_lower_right.png b/app/assets/images/emoji/arrow_lower_right.png
index 7e807da7392..7e807da7392 100644
--- a/public/-/emojis/1/arrow_lower_right.png
+++ b/app/assets/images/emoji/arrow_lower_right.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_right.png b/app/assets/images/emoji/arrow_right.png
index 4755670b5cc..4755670b5cc 100644
--- a/public/-/emojis/1/arrow_right.png
+++ b/app/assets/images/emoji/arrow_right.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_right_hook.png b/app/assets/images/emoji/arrow_right_hook.png
index e7258ad3268..e7258ad3268 100644
--- a/public/-/emojis/1/arrow_right_hook.png
+++ b/app/assets/images/emoji/arrow_right_hook.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_up.png b/app/assets/images/emoji/arrow_up.png
index af8218a87f7..af8218a87f7 100644
--- a/public/-/emojis/1/arrow_up.png
+++ b/app/assets/images/emoji/arrow_up.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_up_down.png b/app/assets/images/emoji/arrow_up_down.png
index dfa32b97186..dfa32b97186 100644
--- a/public/-/emojis/1/arrow_up_down.png
+++ b/app/assets/images/emoji/arrow_up_down.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_up_small.png b/app/assets/images/emoji/arrow_up_small.png
index 20a13dcd5cd..20a13dcd5cd 100644
--- a/public/-/emojis/1/arrow_up_small.png
+++ b/app/assets/images/emoji/arrow_up_small.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_upper_left.png b/app/assets/images/emoji/arrow_upper_left.png
index f38718fbe34..f38718fbe34 100644
--- a/public/-/emojis/1/arrow_upper_left.png
+++ b/app/assets/images/emoji/arrow_upper_left.png
Binary files differ
diff --git a/public/-/emojis/1/arrow_upper_right.png b/app/assets/images/emoji/arrow_upper_right.png
index c43e12d0f64..c43e12d0f64 100644
--- a/public/-/emojis/1/arrow_upper_right.png
+++ b/app/assets/images/emoji/arrow_upper_right.png
Binary files differ
diff --git a/public/-/emojis/1/arrows_clockwise.png b/app/assets/images/emoji/arrows_clockwise.png
index 26e49c38388..26e49c38388 100644
--- a/public/-/emojis/1/arrows_clockwise.png
+++ b/app/assets/images/emoji/arrows_clockwise.png
Binary files differ
diff --git a/public/-/emojis/1/arrows_counterclockwise.png b/app/assets/images/emoji/arrows_counterclockwise.png
index 8d06d8e0912..8d06d8e0912 100644
--- a/public/-/emojis/1/arrows_counterclockwise.png
+++ b/app/assets/images/emoji/arrows_counterclockwise.png
Binary files differ
diff --git a/public/-/emojis/1/art.png b/app/assets/images/emoji/art.png
index bd6afe9ff06..bd6afe9ff06 100644
--- a/public/-/emojis/1/art.png
+++ b/app/assets/images/emoji/art.png
Binary files differ
diff --git a/public/-/emojis/1/articulated_lorry.png b/app/assets/images/emoji/articulated_lorry.png
index c8217317132..c8217317132 100644
--- a/public/-/emojis/1/articulated_lorry.png
+++ b/app/assets/images/emoji/articulated_lorry.png
Binary files differ
diff --git a/public/-/emojis/1/asterisk.png b/app/assets/images/emoji/asterisk.png
index 2f8e5113803..2f8e5113803 100644
--- a/public/-/emojis/1/asterisk.png
+++ b/app/assets/images/emoji/asterisk.png
Binary files differ
diff --git a/public/-/emojis/1/astonished.png b/app/assets/images/emoji/astonished.png
index bd0ac55ec8e..bd0ac55ec8e 100644
--- a/public/-/emojis/1/astonished.png
+++ b/app/assets/images/emoji/astonished.png
Binary files differ
diff --git a/public/-/emojis/1/athletic_shoe.png b/app/assets/images/emoji/athletic_shoe.png
index 423fa07dd5d..423fa07dd5d 100644
--- a/public/-/emojis/1/athletic_shoe.png
+++ b/app/assets/images/emoji/athletic_shoe.png
Binary files differ
diff --git a/public/-/emojis/1/atm.png b/app/assets/images/emoji/atm.png
index 4d935307b94..4d935307b94 100644
--- a/public/-/emojis/1/atm.png
+++ b/app/assets/images/emoji/atm.png
Binary files differ
diff --git a/public/-/emojis/1/atom.png b/app/assets/images/emoji/atom.png
index 5f4567aa093..5f4567aa093 100644
--- a/public/-/emojis/1/atom.png
+++ b/app/assets/images/emoji/atom.png
Binary files differ
diff --git a/public/-/emojis/1/avocado.png b/app/assets/images/emoji/avocado.png
index 06f0d124aed..06f0d124aed 100644
--- a/public/-/emojis/1/avocado.png
+++ b/app/assets/images/emoji/avocado.png
Binary files differ
diff --git a/public/-/emojis/1/b.png b/app/assets/images/emoji/b.png
index 25875bc6a14..25875bc6a14 100644
--- a/public/-/emojis/1/b.png
+++ b/app/assets/images/emoji/b.png
Binary files differ
diff --git a/public/-/emojis/1/baby.png b/app/assets/images/emoji/baby.png
index a4af92c63c7..a4af92c63c7 100644
--- a/public/-/emojis/1/baby.png
+++ b/app/assets/images/emoji/baby.png
Binary files differ
diff --git a/public/-/emojis/1/baby_bottle.png b/app/assets/images/emoji/baby_bottle.png
index 2bd10524180..2bd10524180 100644
--- a/public/-/emojis/1/baby_bottle.png
+++ b/app/assets/images/emoji/baby_bottle.png
Binary files differ
diff --git a/public/-/emojis/1/baby_chick.png b/app/assets/images/emoji/baby_chick.png
index dccd96576ea..dccd96576ea 100644
--- a/public/-/emojis/1/baby_chick.png
+++ b/app/assets/images/emoji/baby_chick.png
Binary files differ
diff --git a/public/-/emojis/1/baby_symbol.png b/app/assets/images/emoji/baby_symbol.png
index 64a10b71710..64a10b71710 100644
--- a/public/-/emojis/1/baby_symbol.png
+++ b/app/assets/images/emoji/baby_symbol.png
Binary files differ
diff --git a/public/-/emojis/1/baby_tone1.png b/app/assets/images/emoji/baby_tone1.png
index d20911d40db..d20911d40db 100644
--- a/public/-/emojis/1/baby_tone1.png
+++ b/app/assets/images/emoji/baby_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/baby_tone2.png b/app/assets/images/emoji/baby_tone2.png
index b0a9b30ed17..b0a9b30ed17 100644
--- a/public/-/emojis/1/baby_tone2.png
+++ b/app/assets/images/emoji/baby_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/baby_tone3.png b/app/assets/images/emoji/baby_tone3.png
index 7de5286fac1..7de5286fac1 100644
--- a/public/-/emojis/1/baby_tone3.png
+++ b/app/assets/images/emoji/baby_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/baby_tone4.png b/app/assets/images/emoji/baby_tone4.png
index 9b7a86ac615..9b7a86ac615 100644
--- a/public/-/emojis/1/baby_tone4.png
+++ b/app/assets/images/emoji/baby_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/baby_tone5.png b/app/assets/images/emoji/baby_tone5.png
index fe1be34cb88..fe1be34cb88 100644
--- a/public/-/emojis/1/baby_tone5.png
+++ b/app/assets/images/emoji/baby_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/back.png b/app/assets/images/emoji/back.png
index d32c5d4f17f..d32c5d4f17f 100644
--- a/public/-/emojis/1/back.png
+++ b/app/assets/images/emoji/back.png
Binary files differ
diff --git a/public/-/emojis/1/bacon.png b/app/assets/images/emoji/bacon.png
index f38a485fbe4..f38a485fbe4 100644
--- a/public/-/emojis/1/bacon.png
+++ b/app/assets/images/emoji/bacon.png
Binary files differ
diff --git a/public/-/emojis/1/badminton.png b/app/assets/images/emoji/badminton.png
index 7ba15708990..7ba15708990 100644
--- a/public/-/emojis/1/badminton.png
+++ b/app/assets/images/emoji/badminton.png
Binary files differ
diff --git a/public/-/emojis/1/baggage_claim.png b/app/assets/images/emoji/baggage_claim.png
index 409b593e78a..409b593e78a 100644
--- a/public/-/emojis/1/baggage_claim.png
+++ b/app/assets/images/emoji/baggage_claim.png
Binary files differ
diff --git a/public/-/emojis/1/balloon.png b/app/assets/images/emoji/balloon.png
index 07916fe6df1..07916fe6df1 100644
--- a/public/-/emojis/1/balloon.png
+++ b/app/assets/images/emoji/balloon.png
Binary files differ
diff --git a/public/-/emojis/1/ballot_box.png b/app/assets/images/emoji/ballot_box.png
index 9b6767aea9e..9b6767aea9e 100644
--- a/public/-/emojis/1/ballot_box.png
+++ b/app/assets/images/emoji/ballot_box.png
Binary files differ
diff --git a/public/-/emojis/1/ballot_box_with_check.png b/app/assets/images/emoji/ballot_box_with_check.png
index 284d9573847..284d9573847 100644
--- a/public/-/emojis/1/ballot_box_with_check.png
+++ b/app/assets/images/emoji/ballot_box_with_check.png
Binary files differ
diff --git a/public/-/emojis/1/bamboo.png b/app/assets/images/emoji/bamboo.png
index 5d5e0e728a0..5d5e0e728a0 100644
--- a/public/-/emojis/1/bamboo.png
+++ b/app/assets/images/emoji/bamboo.png
Binary files differ
diff --git a/public/-/emojis/1/banana.png b/app/assets/images/emoji/banana.png
index f4987279580..f4987279580 100644
--- a/public/-/emojis/1/banana.png
+++ b/app/assets/images/emoji/banana.png
Binary files differ
diff --git a/public/-/emojis/1/bangbang.png b/app/assets/images/emoji/bangbang.png
index 58a9c528fca..58a9c528fca 100644
--- a/public/-/emojis/1/bangbang.png
+++ b/app/assets/images/emoji/bangbang.png
Binary files differ
diff --git a/public/-/emojis/1/bank.png b/app/assets/images/emoji/bank.png
index dffdcef36a1..dffdcef36a1 100644
--- a/public/-/emojis/1/bank.png
+++ b/app/assets/images/emoji/bank.png
Binary files differ
diff --git a/public/-/emojis/1/bar_chart.png b/app/assets/images/emoji/bar_chart.png
index 53c89455008..53c89455008 100644
--- a/public/-/emojis/1/bar_chart.png
+++ b/app/assets/images/emoji/bar_chart.png
Binary files differ
diff --git a/public/-/emojis/1/barber.png b/app/assets/images/emoji/barber.png
index 896f4d716cf..896f4d716cf 100644
--- a/public/-/emojis/1/barber.png
+++ b/app/assets/images/emoji/barber.png
Binary files differ
diff --git a/public/-/emojis/1/baseball.png b/app/assets/images/emoji/baseball.png
index f8463f1538b..f8463f1538b 100644
--- a/public/-/emojis/1/baseball.png
+++ b/app/assets/images/emoji/baseball.png
Binary files differ
diff --git a/public/-/emojis/1/basketball.png b/app/assets/images/emoji/basketball.png
index 64c76b79c6d..64c76b79c6d 100644
--- a/public/-/emojis/1/basketball.png
+++ b/app/assets/images/emoji/basketball.png
Binary files differ
diff --git a/public/-/emojis/1/basketball_player.png b/app/assets/images/emoji/basketball_player.png
index 8ce90c5cad6..8ce90c5cad6 100644
--- a/public/-/emojis/1/basketball_player.png
+++ b/app/assets/images/emoji/basketball_player.png
Binary files differ
diff --git a/public/-/emojis/1/basketball_player_tone1.png b/app/assets/images/emoji/basketball_player_tone1.png
index cd12c7ab9bf..cd12c7ab9bf 100644
--- a/public/-/emojis/1/basketball_player_tone1.png
+++ b/app/assets/images/emoji/basketball_player_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/basketball_player_tone2.png b/app/assets/images/emoji/basketball_player_tone2.png
index f892fd596da..f892fd596da 100644
--- a/public/-/emojis/1/basketball_player_tone2.png
+++ b/app/assets/images/emoji/basketball_player_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/basketball_player_tone3.png b/app/assets/images/emoji/basketball_player_tone3.png
index e109997a91a..e109997a91a 100644
--- a/public/-/emojis/1/basketball_player_tone3.png
+++ b/app/assets/images/emoji/basketball_player_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/basketball_player_tone4.png b/app/assets/images/emoji/basketball_player_tone4.png
index 3b90b946af4..3b90b946af4 100644
--- a/public/-/emojis/1/basketball_player_tone4.png
+++ b/app/assets/images/emoji/basketball_player_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/basketball_player_tone5.png b/app/assets/images/emoji/basketball_player_tone5.png
index bafed7828a7..bafed7828a7 100644
--- a/public/-/emojis/1/basketball_player_tone5.png
+++ b/app/assets/images/emoji/basketball_player_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/bat.png b/app/assets/images/emoji/bat.png
index 3152c047e00..3152c047e00 100644
--- a/public/-/emojis/1/bat.png
+++ b/app/assets/images/emoji/bat.png
Binary files differ
diff --git a/public/-/emojis/1/bath.png b/app/assets/images/emoji/bath.png
index 43fba5c8a28..43fba5c8a28 100644
--- a/public/-/emojis/1/bath.png
+++ b/app/assets/images/emoji/bath.png
Binary files differ
diff --git a/public/-/emojis/1/bath_tone1.png b/app/assets/images/emoji/bath_tone1.png
index 2152eabf2f5..2152eabf2f5 100644
--- a/public/-/emojis/1/bath_tone1.png
+++ b/app/assets/images/emoji/bath_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/bath_tone2.png b/app/assets/images/emoji/bath_tone2.png
index 2102e6133e3..2102e6133e3 100644
--- a/public/-/emojis/1/bath_tone2.png
+++ b/app/assets/images/emoji/bath_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/bath_tone3.png b/app/assets/images/emoji/bath_tone3.png
index fae66181e9f..fae66181e9f 100644
--- a/public/-/emojis/1/bath_tone3.png
+++ b/app/assets/images/emoji/bath_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/bath_tone4.png b/app/assets/images/emoji/bath_tone4.png
index 1f8959d0d99..1f8959d0d99 100644
--- a/public/-/emojis/1/bath_tone4.png
+++ b/app/assets/images/emoji/bath_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/bath_tone5.png b/app/assets/images/emoji/bath_tone5.png
index c8a08e84f25..c8a08e84f25 100644
--- a/public/-/emojis/1/bath_tone5.png
+++ b/app/assets/images/emoji/bath_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/bathtub.png b/app/assets/images/emoji/bathtub.png
index 9a5f09361eb..9a5f09361eb 100644
--- a/public/-/emojis/1/bathtub.png
+++ b/app/assets/images/emoji/bathtub.png
Binary files differ
diff --git a/public/-/emojis/1/battery.png b/app/assets/images/emoji/battery.png
index f593e2bdb65..f593e2bdb65 100644
--- a/public/-/emojis/1/battery.png
+++ b/app/assets/images/emoji/battery.png
Binary files differ
diff --git a/public/-/emojis/1/beach.png b/app/assets/images/emoji/beach.png
index 69108c8ea10..69108c8ea10 100644
--- a/public/-/emojis/1/beach.png
+++ b/app/assets/images/emoji/beach.png
Binary files differ
diff --git a/public/-/emojis/1/beach_umbrella.png b/app/assets/images/emoji/beach_umbrella.png
index 220a74f8132..220a74f8132 100644
--- a/public/-/emojis/1/beach_umbrella.png
+++ b/app/assets/images/emoji/beach_umbrella.png
Binary files differ
diff --git a/public/-/emojis/1/bear.png b/app/assets/images/emoji/bear.png
index 272d56bbbcc..272d56bbbcc 100644
--- a/public/-/emojis/1/bear.png
+++ b/app/assets/images/emoji/bear.png
Binary files differ
diff --git a/public/-/emojis/1/bed.png b/app/assets/images/emoji/bed.png
index 86f964e245d..86f964e245d 100644
--- a/public/-/emojis/1/bed.png
+++ b/app/assets/images/emoji/bed.png
Binary files differ
diff --git a/public/-/emojis/1/bee.png b/app/assets/images/emoji/bee.png
index 46156060096..46156060096 100644
--- a/public/-/emojis/1/bee.png
+++ b/app/assets/images/emoji/bee.png
Binary files differ
diff --git a/public/-/emojis/1/beer.png b/app/assets/images/emoji/beer.png
index b6d73dc0b7a..b6d73dc0b7a 100644
--- a/public/-/emojis/1/beer.png
+++ b/app/assets/images/emoji/beer.png
Binary files differ
diff --git a/public/-/emojis/1/beers.png b/app/assets/images/emoji/beers.png
index b55deb66b41..b55deb66b41 100644
--- a/public/-/emojis/1/beers.png
+++ b/app/assets/images/emoji/beers.png
Binary files differ
diff --git a/public/-/emojis/1/beetle.png b/app/assets/images/emoji/beetle.png
index 3d93174d7fc..3d93174d7fc 100644
--- a/public/-/emojis/1/beetle.png
+++ b/app/assets/images/emoji/beetle.png
Binary files differ
diff --git a/public/-/emojis/1/beginner.png b/app/assets/images/emoji/beginner.png
index bc434fb7cb5..bc434fb7cb5 100644
--- a/public/-/emojis/1/beginner.png
+++ b/app/assets/images/emoji/beginner.png
Binary files differ
diff --git a/public/-/emojis/1/bell.png b/app/assets/images/emoji/bell.png
index 5b3b0461999..5b3b0461999 100644
--- a/public/-/emojis/1/bell.png
+++ b/app/assets/images/emoji/bell.png
Binary files differ
diff --git a/public/-/emojis/1/bellhop.png b/app/assets/images/emoji/bellhop.png
index 6b3297ceaf7..6b3297ceaf7 100644
--- a/public/-/emojis/1/bellhop.png
+++ b/app/assets/images/emoji/bellhop.png
Binary files differ
diff --git a/public/-/emojis/1/bento.png b/app/assets/images/emoji/bento.png
index 83d41ca7eb9..83d41ca7eb9 100644
--- a/public/-/emojis/1/bento.png
+++ b/app/assets/images/emoji/bento.png
Binary files differ
diff --git a/public/-/emojis/1/bicyclist.png b/app/assets/images/emoji/bicyclist.png
index 9274da11048..9274da11048 100644
--- a/public/-/emojis/1/bicyclist.png
+++ b/app/assets/images/emoji/bicyclist.png
Binary files differ
diff --git a/public/-/emojis/1/bicyclist_tone1.png b/app/assets/images/emoji/bicyclist_tone1.png
index decc2f728fe..decc2f728fe 100644
--- a/public/-/emojis/1/bicyclist_tone1.png
+++ b/app/assets/images/emoji/bicyclist_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/bicyclist_tone2.png b/app/assets/images/emoji/bicyclist_tone2.png
index 0067717b80a..0067717b80a 100644
--- a/public/-/emojis/1/bicyclist_tone2.png
+++ b/app/assets/images/emoji/bicyclist_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/bicyclist_tone3.png b/app/assets/images/emoji/bicyclist_tone3.png
index a4f7b5e2776..a4f7b5e2776 100644
--- a/public/-/emojis/1/bicyclist_tone3.png
+++ b/app/assets/images/emoji/bicyclist_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/bicyclist_tone4.png b/app/assets/images/emoji/bicyclist_tone4.png
index a3c8a797db4..a3c8a797db4 100644
--- a/public/-/emojis/1/bicyclist_tone4.png
+++ b/app/assets/images/emoji/bicyclist_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/bicyclist_tone5.png b/app/assets/images/emoji/bicyclist_tone5.png
index 1606a874051..1606a874051 100644
--- a/public/-/emojis/1/bicyclist_tone5.png
+++ b/app/assets/images/emoji/bicyclist_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/bike.png b/app/assets/images/emoji/bike.png
index 556ed70f1a7..556ed70f1a7 100644
--- a/public/-/emojis/1/bike.png
+++ b/app/assets/images/emoji/bike.png
Binary files differ
diff --git a/public/-/emojis/1/bikini.png b/app/assets/images/emoji/bikini.png
index 77a8a0aae5b..77a8a0aae5b 100644
--- a/public/-/emojis/1/bikini.png
+++ b/app/assets/images/emoji/bikini.png
Binary files differ
diff --git a/public/-/emojis/1/biohazard.png b/app/assets/images/emoji/biohazard.png
index 007b4fc2d85..007b4fc2d85 100644
--- a/public/-/emojis/1/biohazard.png
+++ b/app/assets/images/emoji/biohazard.png
Binary files differ
diff --git a/public/-/emojis/1/bird.png b/app/assets/images/emoji/bird.png
index e201c22be33..e201c22be33 100644
--- a/public/-/emojis/1/bird.png
+++ b/app/assets/images/emoji/bird.png
Binary files differ
diff --git a/public/-/emojis/1/birthday.png b/app/assets/images/emoji/birthday.png
index 317e9a41949..317e9a41949 100644
--- a/public/-/emojis/1/birthday.png
+++ b/app/assets/images/emoji/birthday.png
Binary files differ
diff --git a/public/-/emojis/1/black_circle.png b/app/assets/images/emoji/black_circle.png
index b62b87170e8..b62b87170e8 100644
--- a/public/-/emojis/1/black_circle.png
+++ b/app/assets/images/emoji/black_circle.png
Binary files differ
diff --git a/public/-/emojis/1/black_heart.png b/app/assets/images/emoji/black_heart.png
index b4068c3e6e8..b4068c3e6e8 100644
--- a/public/-/emojis/1/black_heart.png
+++ b/app/assets/images/emoji/black_heart.png
Binary files differ
diff --git a/public/-/emojis/1/black_joker.png b/app/assets/images/emoji/black_joker.png
index 3d0924b68aa..3d0924b68aa 100644
--- a/public/-/emojis/1/black_joker.png
+++ b/app/assets/images/emoji/black_joker.png
Binary files differ
diff --git a/public/-/emojis/1/black_large_square.png b/app/assets/images/emoji/black_large_square.png
index 162f2bb4290..162f2bb4290 100644
--- a/public/-/emojis/1/black_large_square.png
+++ b/app/assets/images/emoji/black_large_square.png
Binary files differ
diff --git a/public/-/emojis/1/black_medium_small_square.png b/app/assets/images/emoji/black_medium_small_square.png
index 39765bba610..39765bba610 100644
--- a/public/-/emojis/1/black_medium_small_square.png
+++ b/app/assets/images/emoji/black_medium_small_square.png
Binary files differ
diff --git a/public/-/emojis/1/black_medium_square.png b/app/assets/images/emoji/black_medium_square.png
index 05a30a6aa2d..05a30a6aa2d 100644
--- a/public/-/emojis/1/black_medium_square.png
+++ b/app/assets/images/emoji/black_medium_square.png
Binary files differ
diff --git a/public/-/emojis/1/black_nib.png b/app/assets/images/emoji/black_nib.png
index 872d0ae1598..872d0ae1598 100644
--- a/public/-/emojis/1/black_nib.png
+++ b/app/assets/images/emoji/black_nib.png
Binary files differ
diff --git a/public/-/emojis/1/black_small_square.png b/app/assets/images/emoji/black_small_square.png
index 48595d3e1a9..48595d3e1a9 100644
--- a/public/-/emojis/1/black_small_square.png
+++ b/app/assets/images/emoji/black_small_square.png
Binary files differ
diff --git a/public/-/emojis/1/black_square_button.png b/app/assets/images/emoji/black_square_button.png
index a78fc2f6b63..a78fc2f6b63 100644
--- a/public/-/emojis/1/black_square_button.png
+++ b/app/assets/images/emoji/black_square_button.png
Binary files differ
diff --git a/public/-/emojis/1/blossom.png b/app/assets/images/emoji/blossom.png
index 4083026c157..4083026c157 100644
--- a/public/-/emojis/1/blossom.png
+++ b/app/assets/images/emoji/blossom.png
Binary files differ
diff --git a/public/-/emojis/1/blowfish.png b/app/assets/images/emoji/blowfish.png
index a10f4f84e35..a10f4f84e35 100644
--- a/public/-/emojis/1/blowfish.png
+++ b/app/assets/images/emoji/blowfish.png
Binary files differ
diff --git a/public/-/emojis/1/blue_book.png b/app/assets/images/emoji/blue_book.png
index e1e455401cc..e1e455401cc 100644
--- a/public/-/emojis/1/blue_book.png
+++ b/app/assets/images/emoji/blue_book.png
Binary files differ
diff --git a/public/-/emojis/1/blue_car.png b/app/assets/images/emoji/blue_car.png
index e8ba817d393..e8ba817d393 100644
--- a/public/-/emojis/1/blue_car.png
+++ b/app/assets/images/emoji/blue_car.png
Binary files differ
diff --git a/public/-/emojis/1/blue_heart.png b/app/assets/images/emoji/blue_heart.png
index bdf1287e55e..bdf1287e55e 100644
--- a/public/-/emojis/1/blue_heart.png
+++ b/app/assets/images/emoji/blue_heart.png
Binary files differ
diff --git a/public/-/emojis/1/blush.png b/app/assets/images/emoji/blush.png
index aac1a424ad4..aac1a424ad4 100644
--- a/public/-/emojis/1/blush.png
+++ b/app/assets/images/emoji/blush.png
Binary files differ
diff --git a/public/-/emojis/1/boar.png b/app/assets/images/emoji/boar.png
index fead972633c..fead972633c 100644
--- a/public/-/emojis/1/boar.png
+++ b/app/assets/images/emoji/boar.png
Binary files differ
diff --git a/public/-/emojis/1/bomb.png b/app/assets/images/emoji/bomb.png
index c7f8f81c939..c7f8f81c939 100644
--- a/public/-/emojis/1/bomb.png
+++ b/app/assets/images/emoji/bomb.png
Binary files differ
diff --git a/public/-/emojis/1/book.png b/app/assets/images/emoji/book.png
index 0f4447ed396..0f4447ed396 100644
--- a/public/-/emojis/1/book.png
+++ b/app/assets/images/emoji/book.png
Binary files differ
diff --git a/public/-/emojis/1/bookmark.png b/app/assets/images/emoji/bookmark.png
index bbb444611f0..bbb444611f0 100644
--- a/public/-/emojis/1/bookmark.png
+++ b/app/assets/images/emoji/bookmark.png
Binary files differ
diff --git a/public/-/emojis/1/bookmark_tabs.png b/app/assets/images/emoji/bookmark_tabs.png
index f8d9e01b428..f8d9e01b428 100644
--- a/public/-/emojis/1/bookmark_tabs.png
+++ b/app/assets/images/emoji/bookmark_tabs.png
Binary files differ
diff --git a/public/-/emojis/1/books.png b/app/assets/images/emoji/books.png
index 59a8bafeb0d..59a8bafeb0d 100644
--- a/public/-/emojis/1/books.png
+++ b/app/assets/images/emoji/books.png
Binary files differ
diff --git a/public/-/emojis/1/boom.png b/app/assets/images/emoji/boom.png
index 9b0f027b1a8..9b0f027b1a8 100644
--- a/public/-/emojis/1/boom.png
+++ b/app/assets/images/emoji/boom.png
Binary files differ
diff --git a/public/-/emojis/1/boot.png b/app/assets/images/emoji/boot.png
index 11f1065ed07..11f1065ed07 100644
--- a/public/-/emojis/1/boot.png
+++ b/app/assets/images/emoji/boot.png
Binary files differ
diff --git a/public/-/emojis/1/bouquet.png b/app/assets/images/emoji/bouquet.png
index 11455af6df4..11455af6df4 100644
--- a/public/-/emojis/1/bouquet.png
+++ b/app/assets/images/emoji/bouquet.png
Binary files differ
diff --git a/public/-/emojis/1/bow.png b/app/assets/images/emoji/bow.png
index d8f793088dc..d8f793088dc 100644
--- a/public/-/emojis/1/bow.png
+++ b/app/assets/images/emoji/bow.png
Binary files differ
diff --git a/public/-/emojis/1/bow_and_arrow.png b/app/assets/images/emoji/bow_and_arrow.png
index 6a538bf475f..6a538bf475f 100644
--- a/public/-/emojis/1/bow_and_arrow.png
+++ b/app/assets/images/emoji/bow_and_arrow.png
Binary files differ
diff --git a/public/-/emojis/1/bow_tone1.png b/app/assets/images/emoji/bow_tone1.png
index 87afb7b54cf..87afb7b54cf 100644
--- a/public/-/emojis/1/bow_tone1.png
+++ b/app/assets/images/emoji/bow_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/bow_tone2.png b/app/assets/images/emoji/bow_tone2.png
index 3ccf7dc0850..3ccf7dc0850 100644
--- a/public/-/emojis/1/bow_tone2.png
+++ b/app/assets/images/emoji/bow_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/bow_tone3.png b/app/assets/images/emoji/bow_tone3.png
index 8b9eb64f926..8b9eb64f926 100644
--- a/public/-/emojis/1/bow_tone3.png
+++ b/app/assets/images/emoji/bow_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/bow_tone4.png b/app/assets/images/emoji/bow_tone4.png
index 683795ff40d..683795ff40d 100644
--- a/public/-/emojis/1/bow_tone4.png
+++ b/app/assets/images/emoji/bow_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/bow_tone5.png b/app/assets/images/emoji/bow_tone5.png
index 7969d971752..7969d971752 100644
--- a/public/-/emojis/1/bow_tone5.png
+++ b/app/assets/images/emoji/bow_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/bowling.png b/app/assets/images/emoji/bowling.png
index 63add89e53b..63add89e53b 100644
--- a/public/-/emojis/1/bowling.png
+++ b/app/assets/images/emoji/bowling.png
Binary files differ
diff --git a/public/-/emojis/1/boxing_glove.png b/app/assets/images/emoji/boxing_glove.png
index 9838f24e51a..9838f24e51a 100644
--- a/public/-/emojis/1/boxing_glove.png
+++ b/app/assets/images/emoji/boxing_glove.png
Binary files differ
diff --git a/public/-/emojis/1/boy.png b/app/assets/images/emoji/boy.png
index 8ecfb0a4e92..8ecfb0a4e92 100644
--- a/public/-/emojis/1/boy.png
+++ b/app/assets/images/emoji/boy.png
Binary files differ
diff --git a/public/-/emojis/1/boy_tone1.png b/app/assets/images/emoji/boy_tone1.png
index 2fc436ea512..2fc436ea512 100644
--- a/public/-/emojis/1/boy_tone1.png
+++ b/app/assets/images/emoji/boy_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/boy_tone2.png b/app/assets/images/emoji/boy_tone2.png
index 09a5f18d360..09a5f18d360 100644
--- a/public/-/emojis/1/boy_tone2.png
+++ b/app/assets/images/emoji/boy_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/boy_tone3.png b/app/assets/images/emoji/boy_tone3.png
index 3cfe675dd3a..3cfe675dd3a 100644
--- a/public/-/emojis/1/boy_tone3.png
+++ b/app/assets/images/emoji/boy_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/boy_tone4.png b/app/assets/images/emoji/boy_tone4.png
index 780be0ace36..780be0ace36 100644
--- a/public/-/emojis/1/boy_tone4.png
+++ b/app/assets/images/emoji/boy_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/boy_tone5.png b/app/assets/images/emoji/boy_tone5.png
index f32fe22e35c..f32fe22e35c 100644
--- a/public/-/emojis/1/boy_tone5.png
+++ b/app/assets/images/emoji/boy_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/bread.png b/app/assets/images/emoji/bread.png
index 6676510aaa5..6676510aaa5 100644
--- a/public/-/emojis/1/bread.png
+++ b/app/assets/images/emoji/bread.png
Binary files differ
diff --git a/public/-/emojis/1/bride_with_veil.png b/app/assets/images/emoji/bride_with_veil.png
index eaf4bd97890..eaf4bd97890 100644
--- a/public/-/emojis/1/bride_with_veil.png
+++ b/app/assets/images/emoji/bride_with_veil.png
Binary files differ
diff --git a/public/-/emojis/1/bride_with_veil_tone1.png b/app/assets/images/emoji/bride_with_veil_tone1.png
index c4fb141ae8f..c4fb141ae8f 100644
--- a/public/-/emojis/1/bride_with_veil_tone1.png
+++ b/app/assets/images/emoji/bride_with_veil_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/bride_with_veil_tone2.png b/app/assets/images/emoji/bride_with_veil_tone2.png
index c248769fc06..c248769fc06 100644
--- a/public/-/emojis/1/bride_with_veil_tone2.png
+++ b/app/assets/images/emoji/bride_with_veil_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/bride_with_veil_tone3.png b/app/assets/images/emoji/bride_with_veil_tone3.png
index 962c0a6eedb..962c0a6eedb 100644
--- a/public/-/emojis/1/bride_with_veil_tone3.png
+++ b/app/assets/images/emoji/bride_with_veil_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/bride_with_veil_tone4.png b/app/assets/images/emoji/bride_with_veil_tone4.png
index 740ca208cd4..740ca208cd4 100644
--- a/public/-/emojis/1/bride_with_veil_tone4.png
+++ b/app/assets/images/emoji/bride_with_veil_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/bride_with_veil_tone5.png b/app/assets/images/emoji/bride_with_veil_tone5.png
index 5cc5598587d..5cc5598587d 100644
--- a/public/-/emojis/1/bride_with_veil_tone5.png
+++ b/app/assets/images/emoji/bride_with_veil_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/bridge_at_night.png b/app/assets/images/emoji/bridge_at_night.png
index 1d444e0be65..1d444e0be65 100644
--- a/public/-/emojis/1/bridge_at_night.png
+++ b/app/assets/images/emoji/bridge_at_night.png
Binary files differ
diff --git a/public/-/emojis/1/briefcase.png b/app/assets/images/emoji/briefcase.png
index b9912ba2148..b9912ba2148 100644
--- a/public/-/emojis/1/briefcase.png
+++ b/app/assets/images/emoji/briefcase.png
Binary files differ
diff --git a/public/-/emojis/1/broken_heart.png b/app/assets/images/emoji/broken_heart.png
index 718e26ee122..718e26ee122 100644
--- a/public/-/emojis/1/broken_heart.png
+++ b/app/assets/images/emoji/broken_heart.png
Binary files differ
diff --git a/public/-/emojis/1/bug.png b/app/assets/images/emoji/bug.png
index e64e72f259a..e64e72f259a 100644
--- a/public/-/emojis/1/bug.png
+++ b/app/assets/images/emoji/bug.png
Binary files differ
diff --git a/public/-/emojis/1/bulb.png b/app/assets/images/emoji/bulb.png
index 38e32e02d9f..38e32e02d9f 100644
--- a/public/-/emojis/1/bulb.png
+++ b/app/assets/images/emoji/bulb.png
Binary files differ
diff --git a/public/-/emojis/1/bullettrain_front.png b/app/assets/images/emoji/bullettrain_front.png
index 4f698e056fa..4f698e056fa 100644
--- a/public/-/emojis/1/bullettrain_front.png
+++ b/app/assets/images/emoji/bullettrain_front.png
Binary files differ
diff --git a/public/-/emojis/1/bullettrain_side.png b/app/assets/images/emoji/bullettrain_side.png
index ed61c67bf07..ed61c67bf07 100644
--- a/public/-/emojis/1/bullettrain_side.png
+++ b/app/assets/images/emoji/bullettrain_side.png
Binary files differ
diff --git a/public/-/emojis/1/burrito.png b/app/assets/images/emoji/burrito.png
index 02bd5601df7..02bd5601df7 100644
--- a/public/-/emojis/1/burrito.png
+++ b/app/assets/images/emoji/burrito.png
Binary files differ
diff --git a/public/-/emojis/1/bus.png b/app/assets/images/emoji/bus.png
index 641ddc56ca7..641ddc56ca7 100644
--- a/public/-/emojis/1/bus.png
+++ b/app/assets/images/emoji/bus.png
Binary files differ
diff --git a/public/-/emojis/1/busstop.png b/app/assets/images/emoji/busstop.png
index b2b62208bfd..b2b62208bfd 100644
--- a/public/-/emojis/1/busstop.png
+++ b/app/assets/images/emoji/busstop.png
Binary files differ
diff --git a/public/-/emojis/1/bust_in_silhouette.png b/app/assets/images/emoji/bust_in_silhouette.png
index 123b2cbe1fb..123b2cbe1fb 100644
--- a/public/-/emojis/1/bust_in_silhouette.png
+++ b/app/assets/images/emoji/bust_in_silhouette.png
Binary files differ
diff --git a/public/-/emojis/1/busts_in_silhouette.png b/app/assets/images/emoji/busts_in_silhouette.png
index d7656860a1c..d7656860a1c 100644
--- a/public/-/emojis/1/busts_in_silhouette.png
+++ b/app/assets/images/emoji/busts_in_silhouette.png
Binary files differ
diff --git a/public/-/emojis/1/butterfly.png b/app/assets/images/emoji/butterfly.png
index 5631fe99226..5631fe99226 100644
--- a/public/-/emojis/1/butterfly.png
+++ b/app/assets/images/emoji/butterfly.png
Binary files differ
diff --git a/public/-/emojis/1/cactus.png b/app/assets/images/emoji/cactus.png
index 9b48ccf3d0c..9b48ccf3d0c 100644
--- a/public/-/emojis/1/cactus.png
+++ b/app/assets/images/emoji/cactus.png
Binary files differ
diff --git a/public/-/emojis/1/cake.png b/app/assets/images/emoji/cake.png
index 4368177be9a..4368177be9a 100644
--- a/public/-/emojis/1/cake.png
+++ b/app/assets/images/emoji/cake.png
Binary files differ
diff --git a/public/-/emojis/1/calendar.png b/app/assets/images/emoji/calendar.png
index 47353b74447..47353b74447 100644
--- a/public/-/emojis/1/calendar.png
+++ b/app/assets/images/emoji/calendar.png
Binary files differ
diff --git a/public/-/emojis/1/calendar_spiral.png b/app/assets/images/emoji/calendar_spiral.png
index dec8d49bfa8..dec8d49bfa8 100644
--- a/public/-/emojis/1/calendar_spiral.png
+++ b/app/assets/images/emoji/calendar_spiral.png
Binary files differ
diff --git a/public/-/emojis/1/call_me.png b/app/assets/images/emoji/call_me.png
index a10c59ba711..a10c59ba711 100644
--- a/public/-/emojis/1/call_me.png
+++ b/app/assets/images/emoji/call_me.png
Binary files differ
diff --git a/public/-/emojis/1/call_me_tone1.png b/app/assets/images/emoji/call_me_tone1.png
index 2c93201181a..2c93201181a 100644
--- a/public/-/emojis/1/call_me_tone1.png
+++ b/app/assets/images/emoji/call_me_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/call_me_tone2.png b/app/assets/images/emoji/call_me_tone2.png
index c39f45a41ed..c39f45a41ed 100644
--- a/public/-/emojis/1/call_me_tone2.png
+++ b/app/assets/images/emoji/call_me_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/call_me_tone3.png b/app/assets/images/emoji/call_me_tone3.png
index 83a57f63c29..83a57f63c29 100644
--- a/public/-/emojis/1/call_me_tone3.png
+++ b/app/assets/images/emoji/call_me_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/call_me_tone4.png b/app/assets/images/emoji/call_me_tone4.png
index 65b3468fe44..65b3468fe44 100644
--- a/public/-/emojis/1/call_me_tone4.png
+++ b/app/assets/images/emoji/call_me_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/call_me_tone5.png b/app/assets/images/emoji/call_me_tone5.png
index 94ef68ff3b3..94ef68ff3b3 100644
--- a/public/-/emojis/1/call_me_tone5.png
+++ b/app/assets/images/emoji/call_me_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/calling.png b/app/assets/images/emoji/calling.png
index e2f308f8e46..e2f308f8e46 100644
--- a/public/-/emojis/1/calling.png
+++ b/app/assets/images/emoji/calling.png
Binary files differ
diff --git a/public/-/emojis/1/camel.png b/app/assets/images/emoji/camel.png
index b421d07a805..b421d07a805 100644
--- a/public/-/emojis/1/camel.png
+++ b/app/assets/images/emoji/camel.png
Binary files differ
diff --git a/public/-/emojis/1/camera.png b/app/assets/images/emoji/camera.png
index 0a3429f72ef..0a3429f72ef 100644
--- a/public/-/emojis/1/camera.png
+++ b/app/assets/images/emoji/camera.png
Binary files differ
diff --git a/public/-/emojis/1/camera_with_flash.png b/app/assets/images/emoji/camera_with_flash.png
index 27471da2029..27471da2029 100644
--- a/public/-/emojis/1/camera_with_flash.png
+++ b/app/assets/images/emoji/camera_with_flash.png
Binary files differ
diff --git a/public/-/emojis/1/camping.png b/app/assets/images/emoji/camping.png
index d589cc1f44b..d589cc1f44b 100644
--- a/public/-/emojis/1/camping.png
+++ b/app/assets/images/emoji/camping.png
Binary files differ
diff --git a/public/-/emojis/1/cancer.png b/app/assets/images/emoji/cancer.png
index a64af07cb5f..a64af07cb5f 100644
--- a/public/-/emojis/1/cancer.png
+++ b/app/assets/images/emoji/cancer.png
Binary files differ
diff --git a/public/-/emojis/1/candle.png b/app/assets/images/emoji/candle.png
index 0b56444e355..0b56444e355 100644
--- a/public/-/emojis/1/candle.png
+++ b/app/assets/images/emoji/candle.png
Binary files differ
diff --git a/public/-/emojis/1/candy.png b/app/assets/images/emoji/candy.png
index 8c67ace3a35..8c67ace3a35 100644
--- a/public/-/emojis/1/candy.png
+++ b/app/assets/images/emoji/candy.png
Binary files differ
diff --git a/public/-/emojis/1/canoe.png b/app/assets/images/emoji/canoe.png
index e26cdb9da69..e26cdb9da69 100644
--- a/public/-/emojis/1/canoe.png
+++ b/app/assets/images/emoji/canoe.png
Binary files differ
diff --git a/public/-/emojis/1/capital_abcd.png b/app/assets/images/emoji/capital_abcd.png
index fe9482d2d8a..fe9482d2d8a 100644
--- a/public/-/emojis/1/capital_abcd.png
+++ b/app/assets/images/emoji/capital_abcd.png
Binary files differ
diff --git a/public/-/emojis/1/capricorn.png b/app/assets/images/emoji/capricorn.png
index 6293d31d4b1..6293d31d4b1 100644
--- a/public/-/emojis/1/capricorn.png
+++ b/app/assets/images/emoji/capricorn.png
Binary files differ
diff --git a/public/-/emojis/1/card_box.png b/app/assets/images/emoji/card_box.png
index f2e764ce59d..f2e764ce59d 100644
--- a/public/-/emojis/1/card_box.png
+++ b/app/assets/images/emoji/card_box.png
Binary files differ
diff --git a/public/-/emojis/1/card_index.png b/app/assets/images/emoji/card_index.png
index 151e11cb3b4..151e11cb3b4 100644
--- a/public/-/emojis/1/card_index.png
+++ b/app/assets/images/emoji/card_index.png
Binary files differ
diff --git a/public/-/emojis/1/carousel_horse.png b/app/assets/images/emoji/carousel_horse.png
index a17074edf05..a17074edf05 100644
--- a/public/-/emojis/1/carousel_horse.png
+++ b/app/assets/images/emoji/carousel_horse.png
Binary files differ
diff --git a/public/-/emojis/1/carrot.png b/app/assets/images/emoji/carrot.png
index c68829b58e7..c68829b58e7 100644
--- a/public/-/emojis/1/carrot.png
+++ b/app/assets/images/emoji/carrot.png
Binary files differ
diff --git a/public/-/emojis/1/cartwheel.png b/app/assets/images/emoji/cartwheel.png
index cbcaa578253..cbcaa578253 100644
--- a/public/-/emojis/1/cartwheel.png
+++ b/app/assets/images/emoji/cartwheel.png
Binary files differ
diff --git a/public/-/emojis/1/cartwheel_tone1.png b/app/assets/images/emoji/cartwheel_tone1.png
index db6d65895fb..db6d65895fb 100644
--- a/public/-/emojis/1/cartwheel_tone1.png
+++ b/app/assets/images/emoji/cartwheel_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/cartwheel_tone2.png b/app/assets/images/emoji/cartwheel_tone2.png
index e00ffbc27a8..e00ffbc27a8 100644
--- a/public/-/emojis/1/cartwheel_tone2.png
+++ b/app/assets/images/emoji/cartwheel_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/cartwheel_tone3.png b/app/assets/images/emoji/cartwheel_tone3.png
index 49321be391f..49321be391f 100644
--- a/public/-/emojis/1/cartwheel_tone3.png
+++ b/app/assets/images/emoji/cartwheel_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/cartwheel_tone4.png b/app/assets/images/emoji/cartwheel_tone4.png
index d4562b5e3dd..d4562b5e3dd 100644
--- a/public/-/emojis/1/cartwheel_tone4.png
+++ b/app/assets/images/emoji/cartwheel_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/cartwheel_tone5.png b/app/assets/images/emoji/cartwheel_tone5.png
index 6e09a870767..6e09a870767 100644
--- a/public/-/emojis/1/cartwheel_tone5.png
+++ b/app/assets/images/emoji/cartwheel_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/cat.png b/app/assets/images/emoji/cat.png
index efd82c2abf3..efd82c2abf3 100644
--- a/public/-/emojis/1/cat.png
+++ b/app/assets/images/emoji/cat.png
Binary files differ
diff --git a/public/-/emojis/1/cat2.png b/app/assets/images/emoji/cat2.png
index 46abe8cbc14..46abe8cbc14 100644
--- a/public/-/emojis/1/cat2.png
+++ b/app/assets/images/emoji/cat2.png
Binary files differ
diff --git a/public/-/emojis/1/cd.png b/app/assets/images/emoji/cd.png
index e6b01449cd9..e6b01449cd9 100644
--- a/public/-/emojis/1/cd.png
+++ b/app/assets/images/emoji/cd.png
Binary files differ
diff --git a/public/-/emojis/1/chains.png b/app/assets/images/emoji/chains.png
index 57f46139a06..57f46139a06 100644
--- a/public/-/emojis/1/chains.png
+++ b/app/assets/images/emoji/chains.png
Binary files differ
diff --git a/public/-/emojis/1/champagne.png b/app/assets/images/emoji/champagne.png
index 285a79a93d0..285a79a93d0 100644
--- a/public/-/emojis/1/champagne.png
+++ b/app/assets/images/emoji/champagne.png
Binary files differ
diff --git a/public/-/emojis/1/champagne_glass.png b/app/assets/images/emoji/champagne_glass.png
index 31937ae9392..31937ae9392 100644
--- a/public/-/emojis/1/champagne_glass.png
+++ b/app/assets/images/emoji/champagne_glass.png
Binary files differ
diff --git a/public/-/emojis/1/chart.png b/app/assets/images/emoji/chart.png
index 9773f03be22..9773f03be22 100644
--- a/public/-/emojis/1/chart.png
+++ b/app/assets/images/emoji/chart.png
Binary files differ
diff --git a/public/-/emojis/1/chart_with_downwards_trend.png b/app/assets/images/emoji/chart_with_downwards_trend.png
index 5222ec72d85..5222ec72d85 100644
--- a/public/-/emojis/1/chart_with_downwards_trend.png
+++ b/app/assets/images/emoji/chart_with_downwards_trend.png
Binary files differ
diff --git a/public/-/emojis/1/chart_with_upwards_trend.png b/app/assets/images/emoji/chart_with_upwards_trend.png
index f13cfcf9956..f13cfcf9956 100644
--- a/public/-/emojis/1/chart_with_upwards_trend.png
+++ b/app/assets/images/emoji/chart_with_upwards_trend.png
Binary files differ
diff --git a/public/-/emojis/1/checkered_flag.png b/app/assets/images/emoji/checkered_flag.png
index 5a71eecb89b..5a71eecb89b 100644
--- a/public/-/emojis/1/checkered_flag.png
+++ b/app/assets/images/emoji/checkered_flag.png
Binary files differ
diff --git a/public/-/emojis/1/cheese.png b/app/assets/images/emoji/cheese.png
index 00e99762286..00e99762286 100644
--- a/public/-/emojis/1/cheese.png
+++ b/app/assets/images/emoji/cheese.png
Binary files differ
diff --git a/public/-/emojis/1/cherries.png b/app/assets/images/emoji/cherries.png
index 9b10cbaac5e..9b10cbaac5e 100644
--- a/public/-/emojis/1/cherries.png
+++ b/app/assets/images/emoji/cherries.png
Binary files differ
diff --git a/public/-/emojis/1/cherry_blossom.png b/app/assets/images/emoji/cherry_blossom.png
index 282f3e7bc81..282f3e7bc81 100644
--- a/public/-/emojis/1/cherry_blossom.png
+++ b/app/assets/images/emoji/cherry_blossom.png
Binary files differ
diff --git a/public/-/emojis/1/chestnut.png b/app/assets/images/emoji/chestnut.png
index e9fb40468ed..e9fb40468ed 100644
--- a/public/-/emojis/1/chestnut.png
+++ b/app/assets/images/emoji/chestnut.png
Binary files differ
diff --git a/public/-/emojis/1/chicken.png b/app/assets/images/emoji/chicken.png
index 9a6992e55ba..9a6992e55ba 100644
--- a/public/-/emojis/1/chicken.png
+++ b/app/assets/images/emoji/chicken.png
Binary files differ
diff --git a/public/-/emojis/1/children_crossing.png b/app/assets/images/emoji/children_crossing.png
index fa4c091c7c3..fa4c091c7c3 100644
--- a/public/-/emojis/1/children_crossing.png
+++ b/app/assets/images/emoji/children_crossing.png
Binary files differ
diff --git a/public/-/emojis/1/chipmunk.png b/app/assets/images/emoji/chipmunk.png
index 2aac560cb22..2aac560cb22 100644
--- a/public/-/emojis/1/chipmunk.png
+++ b/app/assets/images/emoji/chipmunk.png
Binary files differ
diff --git a/public/-/emojis/1/chocolate_bar.png b/app/assets/images/emoji/chocolate_bar.png
index 318bbd40ef9..318bbd40ef9 100644
--- a/public/-/emojis/1/chocolate_bar.png
+++ b/app/assets/images/emoji/chocolate_bar.png
Binary files differ
diff --git a/public/-/emojis/1/christmas_tree.png b/app/assets/images/emoji/christmas_tree.png
index 4197d37a52b..4197d37a52b 100644
--- a/public/-/emojis/1/christmas_tree.png
+++ b/app/assets/images/emoji/christmas_tree.png
Binary files differ
diff --git a/public/-/emojis/1/church.png b/app/assets/images/emoji/church.png
index 8242fd272b3..8242fd272b3 100644
--- a/public/-/emojis/1/church.png
+++ b/app/assets/images/emoji/church.png
Binary files differ
diff --git a/public/-/emojis/1/cinema.png b/app/assets/images/emoji/cinema.png
index 65f27b386f2..65f27b386f2 100644
--- a/public/-/emojis/1/cinema.png
+++ b/app/assets/images/emoji/cinema.png
Binary files differ
diff --git a/public/-/emojis/1/circus_tent.png b/app/assets/images/emoji/circus_tent.png
index b0379775b12..b0379775b12 100644
--- a/public/-/emojis/1/circus_tent.png
+++ b/app/assets/images/emoji/circus_tent.png
Binary files differ
diff --git a/public/-/emojis/1/city_dusk.png b/app/assets/images/emoji/city_dusk.png
index 80cdff7cf5d..80cdff7cf5d 100644
--- a/public/-/emojis/1/city_dusk.png
+++ b/app/assets/images/emoji/city_dusk.png
Binary files differ
diff --git a/public/-/emojis/1/city_sunset.png b/app/assets/images/emoji/city_sunset.png
index 7cded0ba55b..7cded0ba55b 100644
--- a/public/-/emojis/1/city_sunset.png
+++ b/app/assets/images/emoji/city_sunset.png
Binary files differ
diff --git a/public/-/emojis/1/cityscape.png b/app/assets/images/emoji/cityscape.png
index d7b9844a0b4..d7b9844a0b4 100644
--- a/public/-/emojis/1/cityscape.png
+++ b/app/assets/images/emoji/cityscape.png
Binary files differ
diff --git a/public/-/emojis/1/cl.png b/app/assets/images/emoji/cl.png
index 8b01b4343e2..8b01b4343e2 100644
--- a/public/-/emojis/1/cl.png
+++ b/app/assets/images/emoji/cl.png
Binary files differ
diff --git a/public/-/emojis/1/clap.png b/app/assets/images/emoji/clap.png
index b0ffe928920..b0ffe928920 100644
--- a/public/-/emojis/1/clap.png
+++ b/app/assets/images/emoji/clap.png
Binary files differ
diff --git a/public/-/emojis/1/clap_tone1.png b/app/assets/images/emoji/clap_tone1.png
index de4bc837b96..de4bc837b96 100644
--- a/public/-/emojis/1/clap_tone1.png
+++ b/app/assets/images/emoji/clap_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/clap_tone2.png b/app/assets/images/emoji/clap_tone2.png
index 1323de775ba..1323de775ba 100644
--- a/public/-/emojis/1/clap_tone2.png
+++ b/app/assets/images/emoji/clap_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/clap_tone3.png b/app/assets/images/emoji/clap_tone3.png
index d448ca19dde..d448ca19dde 100644
--- a/public/-/emojis/1/clap_tone3.png
+++ b/app/assets/images/emoji/clap_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/clap_tone4.png b/app/assets/images/emoji/clap_tone4.png
index c49f44ee91d..c49f44ee91d 100644
--- a/public/-/emojis/1/clap_tone4.png
+++ b/app/assets/images/emoji/clap_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/clap_tone5.png b/app/assets/images/emoji/clap_tone5.png
index 29ee9bdf37c..29ee9bdf37c 100644
--- a/public/-/emojis/1/clap_tone5.png
+++ b/app/assets/images/emoji/clap_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/clapper.png b/app/assets/images/emoji/clapper.png
index 81390883111..81390883111 100644
--- a/public/-/emojis/1/clapper.png
+++ b/app/assets/images/emoji/clapper.png
Binary files differ
diff --git a/public/-/emojis/1/classical_building.png b/app/assets/images/emoji/classical_building.png
index de7b559daaf..de7b559daaf 100644
--- a/public/-/emojis/1/classical_building.png
+++ b/app/assets/images/emoji/classical_building.png
Binary files differ
diff --git a/public/-/emojis/1/clipboard.png b/app/assets/images/emoji/clipboard.png
index 7edcfc52509..7edcfc52509 100644
--- a/public/-/emojis/1/clipboard.png
+++ b/app/assets/images/emoji/clipboard.png
Binary files differ
diff --git a/public/-/emojis/1/clock.png b/app/assets/images/emoji/clock.png
index ffdb451e3a8..ffdb451e3a8 100644
--- a/public/-/emojis/1/clock.png
+++ b/app/assets/images/emoji/clock.png
Binary files differ
diff --git a/public/-/emojis/1/clock1.png b/app/assets/images/emoji/clock1.png
index d6e34941f23..d6e34941f23 100644
--- a/public/-/emojis/1/clock1.png
+++ b/app/assets/images/emoji/clock1.png
Binary files differ
diff --git a/public/-/emojis/1/clock10.png b/app/assets/images/emoji/clock10.png
index e62b245cdbe..e62b245cdbe 100644
--- a/public/-/emojis/1/clock10.png
+++ b/app/assets/images/emoji/clock10.png
Binary files differ
diff --git a/public/-/emojis/1/clock1030.png b/app/assets/images/emoji/clock1030.png
index 0802b3c65b9..0802b3c65b9 100644
--- a/public/-/emojis/1/clock1030.png
+++ b/app/assets/images/emoji/clock1030.png
Binary files differ
diff --git a/public/-/emojis/1/clock11.png b/app/assets/images/emoji/clock11.png
index 0983345273b..0983345273b 100644
--- a/public/-/emojis/1/clock11.png
+++ b/app/assets/images/emoji/clock11.png
Binary files differ
diff --git a/public/-/emojis/1/clock1130.png b/app/assets/images/emoji/clock1130.png
index d970d03b809..d970d03b809 100644
--- a/public/-/emojis/1/clock1130.png
+++ b/app/assets/images/emoji/clock1130.png
Binary files differ
diff --git a/public/-/emojis/1/clock12.png b/app/assets/images/emoji/clock12.png
index e61caa4b3e2..e61caa4b3e2 100644
--- a/public/-/emojis/1/clock12.png
+++ b/app/assets/images/emoji/clock12.png
Binary files differ
diff --git a/public/-/emojis/1/clock1230.png b/app/assets/images/emoji/clock1230.png
index f2b1d261721..f2b1d261721 100644
--- a/public/-/emojis/1/clock1230.png
+++ b/app/assets/images/emoji/clock1230.png
Binary files differ
diff --git a/public/-/emojis/1/clock130.png b/app/assets/images/emoji/clock130.png
index 86b7689b84e..86b7689b84e 100644
--- a/public/-/emojis/1/clock130.png
+++ b/app/assets/images/emoji/clock130.png
Binary files differ
diff --git a/public/-/emojis/1/clock2.png b/app/assets/images/emoji/clock2.png
index a54253d7d57..a54253d7d57 100644
--- a/public/-/emojis/1/clock2.png
+++ b/app/assets/images/emoji/clock2.png
Binary files differ
diff --git a/public/-/emojis/1/clock230.png b/app/assets/images/emoji/clock230.png
index 7a787e018e6..7a787e018e6 100644
--- a/public/-/emojis/1/clock230.png
+++ b/app/assets/images/emoji/clock230.png
Binary files differ
diff --git a/public/-/emojis/1/clock3.png b/app/assets/images/emoji/clock3.png
index 27ec4b1f514..27ec4b1f514 100644
--- a/public/-/emojis/1/clock3.png
+++ b/app/assets/images/emoji/clock3.png
Binary files differ
diff --git a/public/-/emojis/1/clock330.png b/app/assets/images/emoji/clock330.png
index c6860395cec..c6860395cec 100644
--- a/public/-/emojis/1/clock330.png
+++ b/app/assets/images/emoji/clock330.png
Binary files differ
diff --git a/public/-/emojis/1/clock4.png b/app/assets/images/emoji/clock4.png
index 60a1ef4cc13..60a1ef4cc13 100644
--- a/public/-/emojis/1/clock4.png
+++ b/app/assets/images/emoji/clock4.png
Binary files differ
diff --git a/public/-/emojis/1/clock430.png b/app/assets/images/emoji/clock430.png
index 3c05b362122..3c05b362122 100644
--- a/public/-/emojis/1/clock430.png
+++ b/app/assets/images/emoji/clock430.png
Binary files differ
diff --git a/public/-/emojis/1/clock5.png b/app/assets/images/emoji/clock5.png
index c9382d1e094..c9382d1e094 100644
--- a/public/-/emojis/1/clock5.png
+++ b/app/assets/images/emoji/clock5.png
Binary files differ
diff --git a/public/-/emojis/1/clock530.png b/app/assets/images/emoji/clock530.png
index c21fa926db2..c21fa926db2 100644
--- a/public/-/emojis/1/clock530.png
+++ b/app/assets/images/emoji/clock530.png
Binary files differ
diff --git a/public/-/emojis/1/clock6.png b/app/assets/images/emoji/clock6.png
index 8fd5d3f5bd7..8fd5d3f5bd7 100644
--- a/public/-/emojis/1/clock6.png
+++ b/app/assets/images/emoji/clock6.png
Binary files differ
diff --git a/public/-/emojis/1/clock630.png b/app/assets/images/emoji/clock630.png
index 2aec87fefcf..2aec87fefcf 100644
--- a/public/-/emojis/1/clock630.png
+++ b/app/assets/images/emoji/clock630.png
Binary files differ
diff --git a/public/-/emojis/1/clock7.png b/app/assets/images/emoji/clock7.png
index 8c7084036f2..8c7084036f2 100644
--- a/public/-/emojis/1/clock7.png
+++ b/app/assets/images/emoji/clock7.png
Binary files differ
diff --git a/public/-/emojis/1/clock730.png b/app/assets/images/emoji/clock730.png
index f7a1135e03f..f7a1135e03f 100644
--- a/public/-/emojis/1/clock730.png
+++ b/app/assets/images/emoji/clock730.png
Binary files differ
diff --git a/public/-/emojis/1/clock8.png b/app/assets/images/emoji/clock8.png
index fcddf722e95..fcddf722e95 100644
--- a/public/-/emojis/1/clock8.png
+++ b/app/assets/images/emoji/clock8.png
Binary files differ
diff --git a/public/-/emojis/1/clock830.png b/app/assets/images/emoji/clock830.png
index 799b4aebc08..799b4aebc08 100644
--- a/public/-/emojis/1/clock830.png
+++ b/app/assets/images/emoji/clock830.png
Binary files differ
diff --git a/public/-/emojis/1/clock9.png b/app/assets/images/emoji/clock9.png
index dfbe0117981..dfbe0117981 100644
--- a/public/-/emojis/1/clock9.png
+++ b/app/assets/images/emoji/clock9.png
Binary files differ
diff --git a/public/-/emojis/1/clock930.png b/app/assets/images/emoji/clock930.png
index 4a2092ee6f0..4a2092ee6f0 100644
--- a/public/-/emojis/1/clock930.png
+++ b/app/assets/images/emoji/clock930.png
Binary files differ
diff --git a/public/-/emojis/1/closed_book.png b/app/assets/images/emoji/closed_book.png
index 6395cf2151e..6395cf2151e 100644
--- a/public/-/emojis/1/closed_book.png
+++ b/app/assets/images/emoji/closed_book.png
Binary files differ
diff --git a/public/-/emojis/1/closed_lock_with_key.png b/app/assets/images/emoji/closed_lock_with_key.png
index 1c1cd5d0741..1c1cd5d0741 100644
--- a/public/-/emojis/1/closed_lock_with_key.png
+++ b/app/assets/images/emoji/closed_lock_with_key.png
Binary files differ
diff --git a/public/-/emojis/1/closed_umbrella.png b/app/assets/images/emoji/closed_umbrella.png
index ecefba9e446..ecefba9e446 100644
--- a/public/-/emojis/1/closed_umbrella.png
+++ b/app/assets/images/emoji/closed_umbrella.png
Binary files differ
diff --git a/public/-/emojis/1/cloud.png b/app/assets/images/emoji/cloud.png
index 5b4f57f77ba..5b4f57f77ba 100644
--- a/public/-/emojis/1/cloud.png
+++ b/app/assets/images/emoji/cloud.png
Binary files differ
diff --git a/public/-/emojis/1/cloud_lightning.png b/app/assets/images/emoji/cloud_lightning.png
index 0831e88aa31..0831e88aa31 100644
--- a/public/-/emojis/1/cloud_lightning.png
+++ b/app/assets/images/emoji/cloud_lightning.png
Binary files differ
diff --git a/public/-/emojis/1/cloud_rain.png b/app/assets/images/emoji/cloud_rain.png
index 385685e0512..385685e0512 100644
--- a/public/-/emojis/1/cloud_rain.png
+++ b/app/assets/images/emoji/cloud_rain.png
Binary files differ
diff --git a/public/-/emojis/1/cloud_snow.png b/app/assets/images/emoji/cloud_snow.png
index 9720384eb99..9720384eb99 100644
--- a/public/-/emojis/1/cloud_snow.png
+++ b/app/assets/images/emoji/cloud_snow.png
Binary files differ
diff --git a/public/-/emojis/1/cloud_tornado.png b/app/assets/images/emoji/cloud_tornado.png
index 4821c89da1e..4821c89da1e 100644
--- a/public/-/emojis/1/cloud_tornado.png
+++ b/app/assets/images/emoji/cloud_tornado.png
Binary files differ
diff --git a/public/-/emojis/1/clown.png b/app/assets/images/emoji/clown.png
index 02b7ff70049..02b7ff70049 100644
--- a/public/-/emojis/1/clown.png
+++ b/app/assets/images/emoji/clown.png
Binary files differ
diff --git a/public/-/emojis/1/clubs.png b/app/assets/images/emoji/clubs.png
index 4f2abf791ca..4f2abf791ca 100644
--- a/public/-/emojis/1/clubs.png
+++ b/app/assets/images/emoji/clubs.png
Binary files differ
diff --git a/public/-/emojis/1/cocktail.png b/app/assets/images/emoji/cocktail.png
index 2e50c57e98d..2e50c57e98d 100644
--- a/public/-/emojis/1/cocktail.png
+++ b/app/assets/images/emoji/cocktail.png
Binary files differ
diff --git a/public/-/emojis/1/coffee.png b/app/assets/images/emoji/coffee.png
index 553061471b1..553061471b1 100644
--- a/public/-/emojis/1/coffee.png
+++ b/app/assets/images/emoji/coffee.png
Binary files differ
diff --git a/public/-/emojis/1/coffin.png b/app/assets/images/emoji/coffin.png
index fb2932aa5f6..fb2932aa5f6 100644
--- a/public/-/emojis/1/coffin.png
+++ b/app/assets/images/emoji/coffin.png
Binary files differ
diff --git a/public/-/emojis/1/cold_sweat.png b/app/assets/images/emoji/cold_sweat.png
index 85b2231bbf6..85b2231bbf6 100644
--- a/public/-/emojis/1/cold_sweat.png
+++ b/app/assets/images/emoji/cold_sweat.png
Binary files differ
diff --git a/public/-/emojis/1/comet.png b/app/assets/images/emoji/comet.png
index a99751f79be..a99751f79be 100644
--- a/public/-/emojis/1/comet.png
+++ b/app/assets/images/emoji/comet.png
Binary files differ
diff --git a/public/-/emojis/1/compression.png b/app/assets/images/emoji/compression.png
index d7eda7f362a..d7eda7f362a 100644
--- a/public/-/emojis/1/compression.png
+++ b/app/assets/images/emoji/compression.png
Binary files differ
diff --git a/public/-/emojis/1/computer.png b/app/assets/images/emoji/computer.png
index c1fee27e3a9..c1fee27e3a9 100644
--- a/public/-/emojis/1/computer.png
+++ b/app/assets/images/emoji/computer.png
Binary files differ
diff --git a/public/-/emojis/1/confetti_ball.png b/app/assets/images/emoji/confetti_ball.png
index ba4fd9b12be..ba4fd9b12be 100644
--- a/public/-/emojis/1/confetti_ball.png
+++ b/app/assets/images/emoji/confetti_ball.png
Binary files differ
diff --git a/public/-/emojis/1/confounded.png b/app/assets/images/emoji/confounded.png
index aa4b29e9375..aa4b29e9375 100644
--- a/public/-/emojis/1/confounded.png
+++ b/app/assets/images/emoji/confounded.png
Binary files differ
diff --git a/public/-/emojis/1/confused.png b/app/assets/images/emoji/confused.png
index 502b6bf0e0b..502b6bf0e0b 100644
--- a/public/-/emojis/1/confused.png
+++ b/app/assets/images/emoji/confused.png
Binary files differ
diff --git a/public/-/emojis/1/congratulations.png b/app/assets/images/emoji/congratulations.png
index ba8c89d95ee..ba8c89d95ee 100644
--- a/public/-/emojis/1/congratulations.png
+++ b/app/assets/images/emoji/congratulations.png
Binary files differ
diff --git a/public/-/emojis/1/construction.png b/app/assets/images/emoji/construction.png
index ef8db5f471c..ef8db5f471c 100644
--- a/public/-/emojis/1/construction.png
+++ b/app/assets/images/emoji/construction.png
Binary files differ
diff --git a/public/-/emojis/1/construction_site.png b/app/assets/images/emoji/construction_site.png
index 8206a20f63f..8206a20f63f 100644
--- a/public/-/emojis/1/construction_site.png
+++ b/app/assets/images/emoji/construction_site.png
Binary files differ
diff --git a/public/-/emojis/1/construction_worker.png b/app/assets/images/emoji/construction_worker.png
index a9970a89005..a9970a89005 100644
--- a/public/-/emojis/1/construction_worker.png
+++ b/app/assets/images/emoji/construction_worker.png
Binary files differ
diff --git a/public/-/emojis/1/construction_worker_tone1.png b/app/assets/images/emoji/construction_worker_tone1.png
index 2f24a2bab24..2f24a2bab24 100644
--- a/public/-/emojis/1/construction_worker_tone1.png
+++ b/app/assets/images/emoji/construction_worker_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/construction_worker_tone2.png b/app/assets/images/emoji/construction_worker_tone2.png
index 93c8fec5a75..93c8fec5a75 100644
--- a/public/-/emojis/1/construction_worker_tone2.png
+++ b/app/assets/images/emoji/construction_worker_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/construction_worker_tone3.png b/app/assets/images/emoji/construction_worker_tone3.png
index abc1f2af2e0..abc1f2af2e0 100644
--- a/public/-/emojis/1/construction_worker_tone3.png
+++ b/app/assets/images/emoji/construction_worker_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/construction_worker_tone4.png b/app/assets/images/emoji/construction_worker_tone4.png
index eed83289aeb..eed83289aeb 100644
--- a/public/-/emojis/1/construction_worker_tone4.png
+++ b/app/assets/images/emoji/construction_worker_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/construction_worker_tone5.png b/app/assets/images/emoji/construction_worker_tone5.png
index acbb220b8bb..acbb220b8bb 100644
--- a/public/-/emojis/1/construction_worker_tone5.png
+++ b/app/assets/images/emoji/construction_worker_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/control_knobs.png b/app/assets/images/emoji/control_knobs.png
index 6635ac93b50..6635ac93b50 100644
--- a/public/-/emojis/1/control_knobs.png
+++ b/app/assets/images/emoji/control_knobs.png
Binary files differ
diff --git a/public/-/emojis/1/convenience_store.png b/app/assets/images/emoji/convenience_store.png
index 26b53b5669e..26b53b5669e 100644
--- a/public/-/emojis/1/convenience_store.png
+++ b/app/assets/images/emoji/convenience_store.png
Binary files differ
diff --git a/public/-/emojis/1/cookie.png b/app/assets/images/emoji/cookie.png
index 1b6bcb1554f..1b6bcb1554f 100644
--- a/public/-/emojis/1/cookie.png
+++ b/app/assets/images/emoji/cookie.png
Binary files differ
diff --git a/public/-/emojis/1/cooking.png b/app/assets/images/emoji/cooking.png
index 918c980577a..918c980577a 100644
--- a/public/-/emojis/1/cooking.png
+++ b/app/assets/images/emoji/cooking.png
Binary files differ
diff --git a/public/-/emojis/1/cool.png b/app/assets/images/emoji/cool.png
index 74674978d00..74674978d00 100644
--- a/public/-/emojis/1/cool.png
+++ b/app/assets/images/emoji/cool.png
Binary files differ
diff --git a/public/-/emojis/1/cop.png b/app/assets/images/emoji/cop.png
index 0b16d7c17b7..0b16d7c17b7 100644
--- a/public/-/emojis/1/cop.png
+++ b/app/assets/images/emoji/cop.png
Binary files differ
diff --git a/public/-/emojis/1/cop_tone1.png b/app/assets/images/emoji/cop_tone1.png
index 6ccba3879dc..6ccba3879dc 100644
--- a/public/-/emojis/1/cop_tone1.png
+++ b/app/assets/images/emoji/cop_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/cop_tone2.png b/app/assets/images/emoji/cop_tone2.png
index 7814ea9f52d..7814ea9f52d 100644
--- a/public/-/emojis/1/cop_tone2.png
+++ b/app/assets/images/emoji/cop_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/cop_tone3.png b/app/assets/images/emoji/cop_tone3.png
index d78e88ec872..d78e88ec872 100644
--- a/public/-/emojis/1/cop_tone3.png
+++ b/app/assets/images/emoji/cop_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/cop_tone4.png b/app/assets/images/emoji/cop_tone4.png
index 2e13c508315..2e13c508315 100644
--- a/public/-/emojis/1/cop_tone4.png
+++ b/app/assets/images/emoji/cop_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/cop_tone5.png b/app/assets/images/emoji/cop_tone5.png
index 2980d61cc2e..2980d61cc2e 100644
--- a/public/-/emojis/1/cop_tone5.png
+++ b/app/assets/images/emoji/cop_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/copyright.png b/app/assets/images/emoji/copyright.png
index 6b9a6adbfd2..6b9a6adbfd2 100644
--- a/public/-/emojis/1/copyright.png
+++ b/app/assets/images/emoji/copyright.png
Binary files differ
diff --git a/public/-/emojis/1/corn.png b/app/assets/images/emoji/corn.png
index 36e20127931..36e20127931 100644
--- a/public/-/emojis/1/corn.png
+++ b/app/assets/images/emoji/corn.png
Binary files differ
diff --git a/public/-/emojis/1/couch.png b/app/assets/images/emoji/couch.png
index 27b19b13bb0..27b19b13bb0 100644
--- a/public/-/emojis/1/couch.png
+++ b/app/assets/images/emoji/couch.png
Binary files differ
diff --git a/public/-/emojis/1/couple.png b/app/assets/images/emoji/couple.png
index 960323f3c16..960323f3c16 100644
--- a/public/-/emojis/1/couple.png
+++ b/app/assets/images/emoji/couple.png
Binary files differ
diff --git a/public/-/emojis/1/couple_mm.png b/app/assets/images/emoji/couple_mm.png
index 8759fa5db87..8759fa5db87 100644
--- a/public/-/emojis/1/couple_mm.png
+++ b/app/assets/images/emoji/couple_mm.png
Binary files differ
diff --git a/public/-/emojis/1/couple_with_heart.png b/app/assets/images/emoji/couple_with_heart.png
index 62111601b36..62111601b36 100644
--- a/public/-/emojis/1/couple_with_heart.png
+++ b/app/assets/images/emoji/couple_with_heart.png
Binary files differ
diff --git a/public/-/emojis/1/couple_ww.png b/app/assets/images/emoji/couple_ww.png
index 08fdabcdc5c..08fdabcdc5c 100644
--- a/public/-/emojis/1/couple_ww.png
+++ b/app/assets/images/emoji/couple_ww.png
Binary files differ
diff --git a/public/-/emojis/1/couplekiss.png b/app/assets/images/emoji/couplekiss.png
index 9aa519da9e8..9aa519da9e8 100644
--- a/public/-/emojis/1/couplekiss.png
+++ b/app/assets/images/emoji/couplekiss.png
Binary files differ
diff --git a/public/-/emojis/1/cow.png b/app/assets/images/emoji/cow.png
index 718a3986d64..718a3986d64 100644
--- a/public/-/emojis/1/cow.png
+++ b/app/assets/images/emoji/cow.png
Binary files differ
diff --git a/public/-/emojis/1/cow2.png b/app/assets/images/emoji/cow2.png
index 4d0ca534ff1..4d0ca534ff1 100644
--- a/public/-/emojis/1/cow2.png
+++ b/app/assets/images/emoji/cow2.png
Binary files differ
diff --git a/public/-/emojis/1/cowboy.png b/app/assets/images/emoji/cowboy.png
index 70dd5d0d9d1..70dd5d0d9d1 100644
--- a/public/-/emojis/1/cowboy.png
+++ b/app/assets/images/emoji/cowboy.png
Binary files differ
diff --git a/public/-/emojis/1/crab.png b/app/assets/images/emoji/crab.png
index 19f3047ab61..19f3047ab61 100644
--- a/public/-/emojis/1/crab.png
+++ b/app/assets/images/emoji/crab.png
Binary files differ
diff --git a/public/-/emojis/1/crayon.png b/app/assets/images/emoji/crayon.png
index 8d7b427aaa3..8d7b427aaa3 100644
--- a/public/-/emojis/1/crayon.png
+++ b/app/assets/images/emoji/crayon.png
Binary files differ
diff --git a/public/-/emojis/1/credit_card.png b/app/assets/images/emoji/credit_card.png
index 372777d5c61..372777d5c61 100644
--- a/public/-/emojis/1/credit_card.png
+++ b/app/assets/images/emoji/credit_card.png
Binary files differ
diff --git a/public/-/emojis/1/crescent_moon.png b/app/assets/images/emoji/crescent_moon.png
index 765420ecec7..765420ecec7 100644
--- a/public/-/emojis/1/crescent_moon.png
+++ b/app/assets/images/emoji/crescent_moon.png
Binary files differ
diff --git a/public/-/emojis/1/cricket.png b/app/assets/images/emoji/cricket.png
index d602294a2cd..d602294a2cd 100644
--- a/public/-/emojis/1/cricket.png
+++ b/app/assets/images/emoji/cricket.png
Binary files differ
diff --git a/public/-/emojis/1/crocodile.png b/app/assets/images/emoji/crocodile.png
index 3005c46f176..3005c46f176 100644
--- a/public/-/emojis/1/crocodile.png
+++ b/app/assets/images/emoji/crocodile.png
Binary files differ
diff --git a/public/-/emojis/1/croissant.png b/app/assets/images/emoji/croissant.png
index fb33feb1a38..fb33feb1a38 100644
--- a/public/-/emojis/1/croissant.png
+++ b/app/assets/images/emoji/croissant.png
Binary files differ
diff --git a/public/-/emojis/1/cross.png b/app/assets/images/emoji/cross.png
index 42b10e82257..42b10e82257 100644
--- a/public/-/emojis/1/cross.png
+++ b/app/assets/images/emoji/cross.png
Binary files differ
diff --git a/public/-/emojis/1/crossed_flags.png b/app/assets/images/emoji/crossed_flags.png
index 273bd0f0fe5..273bd0f0fe5 100644
--- a/public/-/emojis/1/crossed_flags.png
+++ b/app/assets/images/emoji/crossed_flags.png
Binary files differ
diff --git a/public/-/emojis/1/crossed_swords.png b/app/assets/images/emoji/crossed_swords.png
index 907e9607134..907e9607134 100644
--- a/public/-/emojis/1/crossed_swords.png
+++ b/app/assets/images/emoji/crossed_swords.png
Binary files differ
diff --git a/public/-/emojis/1/crown.png b/app/assets/images/emoji/crown.png
index 93b82d92f04..93b82d92f04 100644
--- a/public/-/emojis/1/crown.png
+++ b/app/assets/images/emoji/crown.png
Binary files differ
diff --git a/public/-/emojis/1/cruise_ship.png b/app/assets/images/emoji/cruise_ship.png
index 19d4acbe40c..19d4acbe40c 100644
--- a/public/-/emojis/1/cruise_ship.png
+++ b/app/assets/images/emoji/cruise_ship.png
Binary files differ
diff --git a/public/-/emojis/1/cry.png b/app/assets/images/emoji/cry.png
index b7877f8a173..b7877f8a173 100644
--- a/public/-/emojis/1/cry.png
+++ b/app/assets/images/emoji/cry.png
Binary files differ
diff --git a/public/-/emojis/1/crying_cat_face.png b/app/assets/images/emoji/crying_cat_face.png
index b4f49715e00..b4f49715e00 100644
--- a/public/-/emojis/1/crying_cat_face.png
+++ b/app/assets/images/emoji/crying_cat_face.png
Binary files differ
diff --git a/public/-/emojis/1/crystal_ball.png b/app/assets/images/emoji/crystal_ball.png
index 485d5c888f1..485d5c888f1 100644
--- a/public/-/emojis/1/crystal_ball.png
+++ b/app/assets/images/emoji/crystal_ball.png
Binary files differ
diff --git a/public/-/emojis/1/cucumber.png b/app/assets/images/emoji/cucumber.png
index 500807059d2..500807059d2 100644
--- a/public/-/emojis/1/cucumber.png
+++ b/app/assets/images/emoji/cucumber.png
Binary files differ
diff --git a/public/-/emojis/1/cupid.png b/app/assets/images/emoji/cupid.png
index 2df0078ddd1..2df0078ddd1 100644
--- a/public/-/emojis/1/cupid.png
+++ b/app/assets/images/emoji/cupid.png
Binary files differ
diff --git a/public/-/emojis/1/curly_loop.png b/app/assets/images/emoji/curly_loop.png
index 440aa56d50e..440aa56d50e 100644
--- a/public/-/emojis/1/curly_loop.png
+++ b/app/assets/images/emoji/curly_loop.png
Binary files differ
diff --git a/public/-/emojis/1/currency_exchange.png b/app/assets/images/emoji/currency_exchange.png
index 4d46c6050e7..4d46c6050e7 100644
--- a/public/-/emojis/1/currency_exchange.png
+++ b/app/assets/images/emoji/currency_exchange.png
Binary files differ
diff --git a/public/-/emojis/1/curry.png b/app/assets/images/emoji/curry.png
index 69657ca8103..69657ca8103 100644
--- a/public/-/emojis/1/curry.png
+++ b/app/assets/images/emoji/curry.png
Binary files differ
diff --git a/public/-/emojis/1/custard.png b/app/assets/images/emoji/custard.png
index fa3df67b8f6..fa3df67b8f6 100644
--- a/public/-/emojis/1/custard.png
+++ b/app/assets/images/emoji/custard.png
Binary files differ
diff --git a/public/-/emojis/1/customs.png b/app/assets/images/emoji/customs.png
index 21b7ce2c69e..21b7ce2c69e 100644
--- a/public/-/emojis/1/customs.png
+++ b/app/assets/images/emoji/customs.png
Binary files differ
diff --git a/public/-/emojis/1/cyclone.png b/app/assets/images/emoji/cyclone.png
index ff00b1afe70..ff00b1afe70 100644
--- a/public/-/emojis/1/cyclone.png
+++ b/app/assets/images/emoji/cyclone.png
Binary files differ
diff --git a/public/-/emojis/1/dagger.png b/app/assets/images/emoji/dagger.png
index 66e97b0aa25..66e97b0aa25 100644
--- a/public/-/emojis/1/dagger.png
+++ b/app/assets/images/emoji/dagger.png
Binary files differ
diff --git a/public/-/emojis/1/dancer.png b/app/assets/images/emoji/dancer.png
index 04b166991cb..04b166991cb 100644
--- a/public/-/emojis/1/dancer.png
+++ b/app/assets/images/emoji/dancer.png
Binary files differ
diff --git a/public/-/emojis/1/dancer_tone1.png b/app/assets/images/emoji/dancer_tone1.png
index 2c7b11c3a6e..2c7b11c3a6e 100644
--- a/public/-/emojis/1/dancer_tone1.png
+++ b/app/assets/images/emoji/dancer_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/dancer_tone2.png b/app/assets/images/emoji/dancer_tone2.png
index cb04b1f907e..cb04b1f907e 100644
--- a/public/-/emojis/1/dancer_tone2.png
+++ b/app/assets/images/emoji/dancer_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/dancer_tone3.png b/app/assets/images/emoji/dancer_tone3.png
index 98c5bca7b64..98c5bca7b64 100644
--- a/public/-/emojis/1/dancer_tone3.png
+++ b/app/assets/images/emoji/dancer_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/dancer_tone4.png b/app/assets/images/emoji/dancer_tone4.png
index fdb1e00cbba..fdb1e00cbba 100644
--- a/public/-/emojis/1/dancer_tone4.png
+++ b/app/assets/images/emoji/dancer_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/dancer_tone5.png b/app/assets/images/emoji/dancer_tone5.png
index 0e34e0e23f0..0e34e0e23f0 100644
--- a/public/-/emojis/1/dancer_tone5.png
+++ b/app/assets/images/emoji/dancer_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/dancers.png b/app/assets/images/emoji/dancers.png
index 67e6ffacb76..67e6ffacb76 100644
--- a/public/-/emojis/1/dancers.png
+++ b/app/assets/images/emoji/dancers.png
Binary files differ
diff --git a/public/-/emojis/1/dango.png b/app/assets/images/emoji/dango.png
index f73f37b01c7..f73f37b01c7 100644
--- a/public/-/emojis/1/dango.png
+++ b/app/assets/images/emoji/dango.png
Binary files differ
diff --git a/public/-/emojis/1/dark_sunglasses.png b/app/assets/images/emoji/dark_sunglasses.png
index b1b6db0acff..b1b6db0acff 100644
--- a/public/-/emojis/1/dark_sunglasses.png
+++ b/app/assets/images/emoji/dark_sunglasses.png
Binary files differ
diff --git a/public/-/emojis/1/dart.png b/app/assets/images/emoji/dart.png
index f6704aeb8ba..f6704aeb8ba 100644
--- a/public/-/emojis/1/dart.png
+++ b/app/assets/images/emoji/dart.png
Binary files differ
diff --git a/public/-/emojis/1/dash.png b/app/assets/images/emoji/dash.png
index 064b8525c12..064b8525c12 100644
--- a/public/-/emojis/1/dash.png
+++ b/app/assets/images/emoji/dash.png
Binary files differ
diff --git a/public/-/emojis/1/date.png b/app/assets/images/emoji/date.png
index f05b3da97b8..f05b3da97b8 100644
--- a/public/-/emojis/1/date.png
+++ b/app/assets/images/emoji/date.png
Binary files differ
diff --git a/public/-/emojis/1/deciduous_tree.png b/app/assets/images/emoji/deciduous_tree.png
index 785fc1c30ea..785fc1c30ea 100644
--- a/public/-/emojis/1/deciduous_tree.png
+++ b/app/assets/images/emoji/deciduous_tree.png
Binary files differ
diff --git a/public/-/emojis/1/deer.png b/app/assets/images/emoji/deer.png
index d8698195ff0..d8698195ff0 100644
--- a/public/-/emojis/1/deer.png
+++ b/app/assets/images/emoji/deer.png
Binary files differ
diff --git a/public/-/emojis/1/department_store.png b/app/assets/images/emoji/department_store.png
index 58867c7a6e1..58867c7a6e1 100644
--- a/public/-/emojis/1/department_store.png
+++ b/app/assets/images/emoji/department_store.png
Binary files differ
diff --git a/public/-/emojis/1/desert.png b/app/assets/images/emoji/desert.png
index e9966ff8c65..e9966ff8c65 100644
--- a/public/-/emojis/1/desert.png
+++ b/app/assets/images/emoji/desert.png
Binary files differ
diff --git a/public/-/emojis/1/desktop.png b/app/assets/images/emoji/desktop.png
index 909bd42b5e1..909bd42b5e1 100644
--- a/public/-/emojis/1/desktop.png
+++ b/app/assets/images/emoji/desktop.png
Binary files differ
diff --git a/public/-/emojis/1/diamond_shape_with_a_dot_inside.png b/app/assets/images/emoji/diamond_shape_with_a_dot_inside.png
index 2a22a26d1e2..2a22a26d1e2 100644
--- a/public/-/emojis/1/diamond_shape_with_a_dot_inside.png
+++ b/app/assets/images/emoji/diamond_shape_with_a_dot_inside.png
Binary files differ
diff --git a/public/-/emojis/1/diamonds.png b/app/assets/images/emoji/diamonds.png
index 1f25f51f97a..1f25f51f97a 100644
--- a/public/-/emojis/1/diamonds.png
+++ b/app/assets/images/emoji/diamonds.png
Binary files differ
diff --git a/public/-/emojis/1/disappointed.png b/app/assets/images/emoji/disappointed.png
index efe4e67e23c..efe4e67e23c 100644
--- a/public/-/emojis/1/disappointed.png
+++ b/app/assets/images/emoji/disappointed.png
Binary files differ
diff --git a/public/-/emojis/1/disappointed_relieved.png b/app/assets/images/emoji/disappointed_relieved.png
index aef864d2b3d..aef864d2b3d 100644
--- a/public/-/emojis/1/disappointed_relieved.png
+++ b/app/assets/images/emoji/disappointed_relieved.png
Binary files differ
diff --git a/public/-/emojis/1/dividers.png b/app/assets/images/emoji/dividers.png
index 46a7e403f9d..46a7e403f9d 100644
--- a/public/-/emojis/1/dividers.png
+++ b/app/assets/images/emoji/dividers.png
Binary files differ
diff --git a/public/-/emojis/1/dizzy.png b/app/assets/images/emoji/dizzy.png
index 85f52efad24..85f52efad24 100644
--- a/public/-/emojis/1/dizzy.png
+++ b/app/assets/images/emoji/dizzy.png
Binary files differ
diff --git a/public/-/emojis/1/dizzy_face.png b/app/assets/images/emoji/dizzy_face.png
index 3120316ab5e..3120316ab5e 100644
--- a/public/-/emojis/1/dizzy_face.png
+++ b/app/assets/images/emoji/dizzy_face.png
Binary files differ
diff --git a/public/-/emojis/1/do_not_litter.png b/app/assets/images/emoji/do_not_litter.png
index 341d2575f4f..341d2575f4f 100644
--- a/public/-/emojis/1/do_not_litter.png
+++ b/app/assets/images/emoji/do_not_litter.png
Binary files differ
diff --git a/public/-/emojis/1/dog.png b/app/assets/images/emoji/dog.png
index 281b81d58bd..281b81d58bd 100644
--- a/public/-/emojis/1/dog.png
+++ b/app/assets/images/emoji/dog.png
Binary files differ
diff --git a/public/-/emojis/1/dog2.png b/app/assets/images/emoji/dog2.png
index 976143dbdbe..976143dbdbe 100644
--- a/public/-/emojis/1/dog2.png
+++ b/app/assets/images/emoji/dog2.png
Binary files differ
diff --git a/public/-/emojis/1/dollar.png b/app/assets/images/emoji/dollar.png
index a9904c28293..a9904c28293 100644
--- a/public/-/emojis/1/dollar.png
+++ b/app/assets/images/emoji/dollar.png
Binary files differ
diff --git a/public/-/emojis/1/dolls.png b/app/assets/images/emoji/dolls.png
index 10955615110..10955615110 100644
--- a/public/-/emojis/1/dolls.png
+++ b/app/assets/images/emoji/dolls.png
Binary files differ
diff --git a/public/-/emojis/1/dolphin.png b/app/assets/images/emoji/dolphin.png
index 81434809003..81434809003 100644
--- a/public/-/emojis/1/dolphin.png
+++ b/app/assets/images/emoji/dolphin.png
Binary files differ
diff --git a/public/-/emojis/1/door.png b/app/assets/images/emoji/door.png
index 36ae3e27494..36ae3e27494 100644
--- a/public/-/emojis/1/door.png
+++ b/app/assets/images/emoji/door.png
Binary files differ
diff --git a/public/-/emojis/1/doughnut.png b/app/assets/images/emoji/doughnut.png
index 0ca4cd0bde8..0ca4cd0bde8 100644
--- a/public/-/emojis/1/doughnut.png
+++ b/app/assets/images/emoji/doughnut.png
Binary files differ
diff --git a/public/-/emojis/1/dove.png b/app/assets/images/emoji/dove.png
index 9580c4917d7..9580c4917d7 100644
--- a/public/-/emojis/1/dove.png
+++ b/app/assets/images/emoji/dove.png
Binary files differ
diff --git a/public/-/emojis/1/dragon.png b/app/assets/images/emoji/dragon.png
index d6311cf5429..d6311cf5429 100644
--- a/public/-/emojis/1/dragon.png
+++ b/app/assets/images/emoji/dragon.png
Binary files differ
diff --git a/public/-/emojis/1/dragon_face.png b/app/assets/images/emoji/dragon_face.png
index 3c2720446c6..3c2720446c6 100644
--- a/public/-/emojis/1/dragon_face.png
+++ b/app/assets/images/emoji/dragon_face.png
Binary files differ
diff --git a/public/-/emojis/1/dress.png b/app/assets/images/emoji/dress.png
index a697ca5c57d..a697ca5c57d 100644
--- a/public/-/emojis/1/dress.png
+++ b/app/assets/images/emoji/dress.png
Binary files differ
diff --git a/public/-/emojis/1/dromedary_camel.png b/app/assets/images/emoji/dromedary_camel.png
index 5271637c7c4..5271637c7c4 100644
--- a/public/-/emojis/1/dromedary_camel.png
+++ b/app/assets/images/emoji/dromedary_camel.png
Binary files differ
diff --git a/public/-/emojis/1/drooling_face.png b/app/assets/images/emoji/drooling_face.png
index a5460532597..a5460532597 100644
--- a/public/-/emojis/1/drooling_face.png
+++ b/app/assets/images/emoji/drooling_face.png
Binary files differ
diff --git a/public/-/emojis/1/droplet.png b/app/assets/images/emoji/droplet.png
index 71241ec3061..71241ec3061 100644
--- a/public/-/emojis/1/droplet.png
+++ b/app/assets/images/emoji/droplet.png
Binary files differ
diff --git a/public/-/emojis/1/drum.png b/app/assets/images/emoji/drum.png
index b038727cc99..b038727cc99 100644
--- a/public/-/emojis/1/drum.png
+++ b/app/assets/images/emoji/drum.png
Binary files differ
diff --git a/public/-/emojis/1/duck.png b/app/assets/images/emoji/duck.png
index 74330b77ca3..74330b77ca3 100644
--- a/public/-/emojis/1/duck.png
+++ b/app/assets/images/emoji/duck.png
Binary files differ
diff --git a/public/-/emojis/1/dvd.png b/app/assets/images/emoji/dvd.png
index 045a6f7a08d..045a6f7a08d 100644
--- a/public/-/emojis/1/dvd.png
+++ b/app/assets/images/emoji/dvd.png
Binary files differ
diff --git a/public/-/emojis/1/e-mail.png b/app/assets/images/emoji/e-mail.png
index d22e654a20b..d22e654a20b 100644
--- a/public/-/emojis/1/e-mail.png
+++ b/app/assets/images/emoji/e-mail.png
Binary files differ
diff --git a/public/-/emojis/1/eagle.png b/app/assets/images/emoji/eagle.png
index 4f277debeef..4f277debeef 100644
--- a/public/-/emojis/1/eagle.png
+++ b/app/assets/images/emoji/eagle.png
Binary files differ
diff --git a/public/-/emojis/1/ear.png b/app/assets/images/emoji/ear.png
index f84f9ff154a..f84f9ff154a 100644
--- a/public/-/emojis/1/ear.png
+++ b/app/assets/images/emoji/ear.png
Binary files differ
diff --git a/public/-/emojis/1/ear_of_rice.png b/app/assets/images/emoji/ear_of_rice.png
index 3564d9d643a..3564d9d643a 100644
--- a/public/-/emojis/1/ear_of_rice.png
+++ b/app/assets/images/emoji/ear_of_rice.png
Binary files differ
diff --git a/public/-/emojis/1/ear_tone1.png b/app/assets/images/emoji/ear_tone1.png
index d09e1e41996..d09e1e41996 100644
--- a/public/-/emojis/1/ear_tone1.png
+++ b/app/assets/images/emoji/ear_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/ear_tone2.png b/app/assets/images/emoji/ear_tone2.png
index 300d60a9948..300d60a9948 100644
--- a/public/-/emojis/1/ear_tone2.png
+++ b/app/assets/images/emoji/ear_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/ear_tone3.png b/app/assets/images/emoji/ear_tone3.png
index 2a56eebe445..2a56eebe445 100644
--- a/public/-/emojis/1/ear_tone3.png
+++ b/app/assets/images/emoji/ear_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/ear_tone4.png b/app/assets/images/emoji/ear_tone4.png
index bd270f7763e..bd270f7763e 100644
--- a/public/-/emojis/1/ear_tone4.png
+++ b/app/assets/images/emoji/ear_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/ear_tone5.png b/app/assets/images/emoji/ear_tone5.png
index b96bb441dff..b96bb441dff 100644
--- a/public/-/emojis/1/ear_tone5.png
+++ b/app/assets/images/emoji/ear_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/earth_africa.png b/app/assets/images/emoji/earth_africa.png
index 66c3348c23a..66c3348c23a 100644
--- a/public/-/emojis/1/earth_africa.png
+++ b/app/assets/images/emoji/earth_africa.png
Binary files differ
diff --git a/public/-/emojis/1/earth_americas.png b/app/assets/images/emoji/earth_americas.png
index 538c3cddd68..538c3cddd68 100644
--- a/public/-/emojis/1/earth_americas.png
+++ b/app/assets/images/emoji/earth_americas.png
Binary files differ
diff --git a/public/-/emojis/1/earth_asia.png b/app/assets/images/emoji/earth_asia.png
index d8df97fec3c..d8df97fec3c 100644
--- a/public/-/emojis/1/earth_asia.png
+++ b/app/assets/images/emoji/earth_asia.png
Binary files differ
diff --git a/public/-/emojis/1/egg.png b/app/assets/images/emoji/egg.png
index c171974d993..c171974d993 100644
--- a/public/-/emojis/1/egg.png
+++ b/app/assets/images/emoji/egg.png
Binary files differ
diff --git a/public/-/emojis/1/eggplant.png b/app/assets/images/emoji/eggplant.png
index fafd7c1a14c..fafd7c1a14c 100644
--- a/public/-/emojis/1/eggplant.png
+++ b/app/assets/images/emoji/eggplant.png
Binary files differ
diff --git a/public/-/emojis/1/eight.png b/app/assets/images/emoji/eight.png
index 8c95874d4c5..8c95874d4c5 100644
--- a/public/-/emojis/1/eight.png
+++ b/app/assets/images/emoji/eight.png
Binary files differ
diff --git a/public/-/emojis/1/eight_pointed_black_star.png b/app/assets/images/emoji/eight_pointed_black_star.png
index 820179bda50..820179bda50 100644
--- a/public/-/emojis/1/eight_pointed_black_star.png
+++ b/app/assets/images/emoji/eight_pointed_black_star.png
Binary files differ
diff --git a/public/-/emojis/1/eight_spoked_asterisk.png b/app/assets/images/emoji/eight_spoked_asterisk.png
index 3307ffa62ee..3307ffa62ee 100644
--- a/public/-/emojis/1/eight_spoked_asterisk.png
+++ b/app/assets/images/emoji/eight_spoked_asterisk.png
Binary files differ
diff --git a/public/-/emojis/1/eject.png b/app/assets/images/emoji/eject.png
index ec5cfc48973..ec5cfc48973 100644
--- a/public/-/emojis/1/eject.png
+++ b/app/assets/images/emoji/eject.png
Binary files differ
diff --git a/public/-/emojis/1/electric_plug.png b/app/assets/images/emoji/electric_plug.png
index 31d1eb215b4..31d1eb215b4 100644
--- a/public/-/emojis/1/electric_plug.png
+++ b/app/assets/images/emoji/electric_plug.png
Binary files differ
diff --git a/public/-/emojis/1/elephant.png b/app/assets/images/emoji/elephant.png
index b8a6d140595..b8a6d140595 100644
--- a/public/-/emojis/1/elephant.png
+++ b/app/assets/images/emoji/elephant.png
Binary files differ
diff --git a/public/-/emojis/1/end.png b/app/assets/images/emoji/end.png
index ef3ccd5f367..ef3ccd5f367 100644
--- a/public/-/emojis/1/end.png
+++ b/app/assets/images/emoji/end.png
Binary files differ
diff --git a/public/-/emojis/1/envelope.png b/app/assets/images/emoji/envelope.png
index ec77ac375a4..ec77ac375a4 100644
--- a/public/-/emojis/1/envelope.png
+++ b/app/assets/images/emoji/envelope.png
Binary files differ
diff --git a/public/-/emojis/1/envelope_with_arrow.png b/app/assets/images/emoji/envelope_with_arrow.png
index 7448a6b7673..7448a6b7673 100644
--- a/public/-/emojis/1/envelope_with_arrow.png
+++ b/app/assets/images/emoji/envelope_with_arrow.png
Binary files differ
diff --git a/public/-/emojis/1/euro.png b/app/assets/images/emoji/euro.png
index a49020820e1..a49020820e1 100644
--- a/public/-/emojis/1/euro.png
+++ b/app/assets/images/emoji/euro.png
Binary files differ
diff --git a/public/-/emojis/1/european_castle.png b/app/assets/images/emoji/european_castle.png
index 888d11332ce..888d11332ce 100644
--- a/public/-/emojis/1/european_castle.png
+++ b/app/assets/images/emoji/european_castle.png
Binary files differ
diff --git a/public/-/emojis/1/european_post_office.png b/app/assets/images/emoji/european_post_office.png
index 3745aff8dd2..3745aff8dd2 100644
--- a/public/-/emojis/1/european_post_office.png
+++ b/app/assets/images/emoji/european_post_office.png
Binary files differ
diff --git a/public/-/emojis/1/evergreen_tree.png b/app/assets/images/emoji/evergreen_tree.png
index f679d8dd772..f679d8dd772 100644
--- a/public/-/emojis/1/evergreen_tree.png
+++ b/app/assets/images/emoji/evergreen_tree.png
Binary files differ
diff --git a/public/-/emojis/1/exclamation.png b/app/assets/images/emoji/exclamation.png
index 2c14406422f..2c14406422f 100644
--- a/public/-/emojis/1/exclamation.png
+++ b/app/assets/images/emoji/exclamation.png
Binary files differ
diff --git a/public/-/emojis/1/expressionless.png b/app/assets/images/emoji/expressionless.png
index 2954017f6c2..2954017f6c2 100644
--- a/public/-/emojis/1/expressionless.png
+++ b/app/assets/images/emoji/expressionless.png
Binary files differ
diff --git a/public/-/emojis/1/eye.png b/app/assets/images/emoji/eye.png
index 9d989cdd375..9d989cdd375 100644
--- a/public/-/emojis/1/eye.png
+++ b/app/assets/images/emoji/eye.png
Binary files differ
diff --git a/public/-/emojis/1/eye_in_speech_bubble.png b/app/assets/images/emoji/eye_in_speech_bubble.png
index 21bd22bbcce..21bd22bbcce 100644
--- a/public/-/emojis/1/eye_in_speech_bubble.png
+++ b/app/assets/images/emoji/eye_in_speech_bubble.png
Binary files differ
diff --git a/public/-/emojis/1/eyeglasses.png b/app/assets/images/emoji/eyeglasses.png
index 865d8274acf..865d8274acf 100644
--- a/public/-/emojis/1/eyeglasses.png
+++ b/app/assets/images/emoji/eyeglasses.png
Binary files differ
diff --git a/public/-/emojis/1/eyes.png b/app/assets/images/emoji/eyes.png
index 2102ada7e09..2102ada7e09 100644
--- a/public/-/emojis/1/eyes.png
+++ b/app/assets/images/emoji/eyes.png
Binary files differ
diff --git a/public/-/emojis/1/face_palm.png b/app/assets/images/emoji/face_palm.png
index defc796cf16..defc796cf16 100644
--- a/public/-/emojis/1/face_palm.png
+++ b/app/assets/images/emoji/face_palm.png
Binary files differ
diff --git a/public/-/emojis/1/face_palm_tone1.png b/app/assets/images/emoji/face_palm_tone1.png
index 2f4b010bb40..2f4b010bb40 100644
--- a/public/-/emojis/1/face_palm_tone1.png
+++ b/app/assets/images/emoji/face_palm_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/face_palm_tone2.png b/app/assets/images/emoji/face_palm_tone2.png
index 97fb6831687..97fb6831687 100644
--- a/public/-/emojis/1/face_palm_tone2.png
+++ b/app/assets/images/emoji/face_palm_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/face_palm_tone3.png b/app/assets/images/emoji/face_palm_tone3.png
index b5b5c1e5306..b5b5c1e5306 100644
--- a/public/-/emojis/1/face_palm_tone3.png
+++ b/app/assets/images/emoji/face_palm_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/face_palm_tone4.png b/app/assets/images/emoji/face_palm_tone4.png
index 2840b113483..2840b113483 100644
--- a/public/-/emojis/1/face_palm_tone4.png
+++ b/app/assets/images/emoji/face_palm_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/face_palm_tone5.png b/app/assets/images/emoji/face_palm_tone5.png
index 6f070db98be..6f070db98be 100644
--- a/public/-/emojis/1/face_palm_tone5.png
+++ b/app/assets/images/emoji/face_palm_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/factory.png b/app/assets/images/emoji/factory.png
index e1d2ddf4a27..e1d2ddf4a27 100644
--- a/public/-/emojis/1/factory.png
+++ b/app/assets/images/emoji/factory.png
Binary files differ
diff --git a/public/-/emojis/1/fallen_leaf.png b/app/assets/images/emoji/fallen_leaf.png
index 0d60e7bdf2d..0d60e7bdf2d 100644
--- a/public/-/emojis/1/fallen_leaf.png
+++ b/app/assets/images/emoji/fallen_leaf.png
Binary files differ
diff --git a/public/-/emojis/1/family.png b/app/assets/images/emoji/family.png
index 26421965791..26421965791 100644
--- a/public/-/emojis/1/family.png
+++ b/app/assets/images/emoji/family.png
Binary files differ
diff --git a/public/-/emojis/1/family_mmb.png b/app/assets/images/emoji/family_mmb.png
index 7a2e4e2c491..7a2e4e2c491 100644
--- a/public/-/emojis/1/family_mmb.png
+++ b/app/assets/images/emoji/family_mmb.png
Binary files differ
diff --git a/public/-/emojis/1/family_mmbb.png b/app/assets/images/emoji/family_mmbb.png
index 81e6c0fc0ee..81e6c0fc0ee 100644
--- a/public/-/emojis/1/family_mmbb.png
+++ b/app/assets/images/emoji/family_mmbb.png
Binary files differ
diff --git a/public/-/emojis/1/family_mmg.png b/app/assets/images/emoji/family_mmg.png
index 932a85e1fe5..932a85e1fe5 100644
--- a/public/-/emojis/1/family_mmg.png
+++ b/app/assets/images/emoji/family_mmg.png
Binary files differ
diff --git a/public/-/emojis/1/family_mmgb.png b/app/assets/images/emoji/family_mmgb.png
index 41e35166670..41e35166670 100644
--- a/public/-/emojis/1/family_mmgb.png
+++ b/app/assets/images/emoji/family_mmgb.png
Binary files differ
diff --git a/public/-/emojis/1/family_mmgg.png b/app/assets/images/emoji/family_mmgg.png
index 8e8ccfe6c7f..8e8ccfe6c7f 100644
--- a/public/-/emojis/1/family_mmgg.png
+++ b/app/assets/images/emoji/family_mmgg.png
Binary files differ
diff --git a/public/-/emojis/1/family_mwbb.png b/app/assets/images/emoji/family_mwbb.png
index b544fbe573f..b544fbe573f 100644
--- a/public/-/emojis/1/family_mwbb.png
+++ b/app/assets/images/emoji/family_mwbb.png
Binary files differ
diff --git a/public/-/emojis/1/family_mwg.png b/app/assets/images/emoji/family_mwg.png
index 71d2681c32a..71d2681c32a 100644
--- a/public/-/emojis/1/family_mwg.png
+++ b/app/assets/images/emoji/family_mwg.png
Binary files differ
diff --git a/public/-/emojis/1/family_mwgb.png b/app/assets/images/emoji/family_mwgb.png
index 40dbf1f7a18..40dbf1f7a18 100644
--- a/public/-/emojis/1/family_mwgb.png
+++ b/app/assets/images/emoji/family_mwgb.png
Binary files differ
diff --git a/public/-/emojis/1/family_mwgg.png b/app/assets/images/emoji/family_mwgg.png
index bfefa4879cb..bfefa4879cb 100644
--- a/public/-/emojis/1/family_mwgg.png
+++ b/app/assets/images/emoji/family_mwgg.png
Binary files differ
diff --git a/public/-/emojis/1/family_wwb.png b/app/assets/images/emoji/family_wwb.png
index 836feae7c78..836feae7c78 100644
--- a/public/-/emojis/1/family_wwb.png
+++ b/app/assets/images/emoji/family_wwb.png
Binary files differ
diff --git a/public/-/emojis/1/family_wwbb.png b/app/assets/images/emoji/family_wwbb.png
index 6c6ba45e7bb..6c6ba45e7bb 100644
--- a/public/-/emojis/1/family_wwbb.png
+++ b/app/assets/images/emoji/family_wwbb.png
Binary files differ
diff --git a/public/-/emojis/1/family_wwg.png b/app/assets/images/emoji/family_wwg.png
index 41225c6fa5a..41225c6fa5a 100644
--- a/public/-/emojis/1/family_wwg.png
+++ b/app/assets/images/emoji/family_wwg.png
Binary files differ
diff --git a/public/-/emojis/1/family_wwgb.png b/app/assets/images/emoji/family_wwgb.png
index 284d29ab5da..284d29ab5da 100644
--- a/public/-/emojis/1/family_wwgb.png
+++ b/app/assets/images/emoji/family_wwgb.png
Binary files differ
diff --git a/public/-/emojis/1/family_wwgg.png b/app/assets/images/emoji/family_wwgg.png
index d8d3f49b85f..d8d3f49b85f 100644
--- a/public/-/emojis/1/family_wwgg.png
+++ b/app/assets/images/emoji/family_wwgg.png
Binary files differ
diff --git a/public/-/emojis/1/fast_forward.png b/app/assets/images/emoji/fast_forward.png
index c406fedfdb1..c406fedfdb1 100644
--- a/public/-/emojis/1/fast_forward.png
+++ b/app/assets/images/emoji/fast_forward.png
Binary files differ
diff --git a/public/-/emojis/1/fax.png b/app/assets/images/emoji/fax.png
index 6f929e294c2..6f929e294c2 100644
--- a/public/-/emojis/1/fax.png
+++ b/app/assets/images/emoji/fax.png
Binary files differ
diff --git a/public/-/emojis/1/fearful.png b/app/assets/images/emoji/fearful.png
index eb8b347cef9..eb8b347cef9 100644
--- a/public/-/emojis/1/fearful.png
+++ b/app/assets/images/emoji/fearful.png
Binary files differ
diff --git a/public/-/emojis/1/feet.png b/app/assets/images/emoji/feet.png
index 5fe568cee93..5fe568cee93 100644
--- a/public/-/emojis/1/feet.png
+++ b/app/assets/images/emoji/feet.png
Binary files differ
diff --git a/public/-/emojis/1/fencer.png b/app/assets/images/emoji/fencer.png
index 5288c920eb9..5288c920eb9 100644
--- a/public/-/emojis/1/fencer.png
+++ b/app/assets/images/emoji/fencer.png
Binary files differ
diff --git a/public/-/emojis/1/ferris_wheel.png b/app/assets/images/emoji/ferris_wheel.png
index 55c8ff0475b..55c8ff0475b 100644
--- a/public/-/emojis/1/ferris_wheel.png
+++ b/app/assets/images/emoji/ferris_wheel.png
Binary files differ
diff --git a/public/-/emojis/1/ferry.png b/app/assets/images/emoji/ferry.png
index 41816b3ae34..41816b3ae34 100644
--- a/public/-/emojis/1/ferry.png
+++ b/app/assets/images/emoji/ferry.png
Binary files differ
diff --git a/public/-/emojis/1/field_hockey.png b/app/assets/images/emoji/field_hockey.png
index 839637716ee..839637716ee 100644
--- a/public/-/emojis/1/field_hockey.png
+++ b/app/assets/images/emoji/field_hockey.png
Binary files differ
diff --git a/public/-/emojis/1/file_cabinet.png b/app/assets/images/emoji/file_cabinet.png
index fddc65dde96..fddc65dde96 100644
--- a/public/-/emojis/1/file_cabinet.png
+++ b/app/assets/images/emoji/file_cabinet.png
Binary files differ
diff --git a/public/-/emojis/1/file_folder.png b/app/assets/images/emoji/file_folder.png
index addedaf0870..addedaf0870 100644
--- a/public/-/emojis/1/file_folder.png
+++ b/app/assets/images/emoji/file_folder.png
Binary files differ
diff --git a/public/-/emojis/1/film_frames.png b/app/assets/images/emoji/film_frames.png
index 30143aedbe6..30143aedbe6 100644
--- a/public/-/emojis/1/film_frames.png
+++ b/app/assets/images/emoji/film_frames.png
Binary files differ
diff --git a/public/-/emojis/1/fingers_crossed.png b/app/assets/images/emoji/fingers_crossed.png
index 4cd18514ea3..4cd18514ea3 100644
--- a/public/-/emojis/1/fingers_crossed.png
+++ b/app/assets/images/emoji/fingers_crossed.png
Binary files differ
diff --git a/public/-/emojis/1/fingers_crossed_tone1.png b/app/assets/images/emoji/fingers_crossed_tone1.png
index dd2384a6cd5..dd2384a6cd5 100644
--- a/public/-/emojis/1/fingers_crossed_tone1.png
+++ b/app/assets/images/emoji/fingers_crossed_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/fingers_crossed_tone2.png b/app/assets/images/emoji/fingers_crossed_tone2.png
index 6228401befe..6228401befe 100644
--- a/public/-/emojis/1/fingers_crossed_tone2.png
+++ b/app/assets/images/emoji/fingers_crossed_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/fingers_crossed_tone3.png b/app/assets/images/emoji/fingers_crossed_tone3.png
index b1074da15f5..b1074da15f5 100644
--- a/public/-/emojis/1/fingers_crossed_tone3.png
+++ b/app/assets/images/emoji/fingers_crossed_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/fingers_crossed_tone4.png b/app/assets/images/emoji/fingers_crossed_tone4.png
index 75e05e4d332..75e05e4d332 100644
--- a/public/-/emojis/1/fingers_crossed_tone4.png
+++ b/app/assets/images/emoji/fingers_crossed_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/fingers_crossed_tone5.png b/app/assets/images/emoji/fingers_crossed_tone5.png
index 761aebdc30f..761aebdc30f 100644
--- a/public/-/emojis/1/fingers_crossed_tone5.png
+++ b/app/assets/images/emoji/fingers_crossed_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/fire.png b/app/assets/images/emoji/fire.png
index bd3775a460b..bd3775a460b 100644
--- a/public/-/emojis/1/fire.png
+++ b/app/assets/images/emoji/fire.png
Binary files differ
diff --git a/public/-/emojis/1/fire_engine.png b/app/assets/images/emoji/fire_engine.png
index 2cd45b7cf7e..2cd45b7cf7e 100644
--- a/public/-/emojis/1/fire_engine.png
+++ b/app/assets/images/emoji/fire_engine.png
Binary files differ
diff --git a/public/-/emojis/1/fireworks.png b/app/assets/images/emoji/fireworks.png
index 176c8b58265..176c8b58265 100644
--- a/public/-/emojis/1/fireworks.png
+++ b/app/assets/images/emoji/fireworks.png
Binary files differ
diff --git a/public/-/emojis/1/first_place.png b/app/assets/images/emoji/first_place.png
index 15612b66492..15612b66492 100644
--- a/public/-/emojis/1/first_place.png
+++ b/app/assets/images/emoji/first_place.png
Binary files differ
diff --git a/public/-/emojis/1/first_quarter_moon.png b/app/assets/images/emoji/first_quarter_moon.png
index 5dccaf72a4f..5dccaf72a4f 100644
--- a/public/-/emojis/1/first_quarter_moon.png
+++ b/app/assets/images/emoji/first_quarter_moon.png
Binary files differ
diff --git a/public/-/emojis/1/first_quarter_moon_with_face.png b/app/assets/images/emoji/first_quarter_moon_with_face.png
index cd8a3d7acd8..cd8a3d7acd8 100644
--- a/public/-/emojis/1/first_quarter_moon_with_face.png
+++ b/app/assets/images/emoji/first_quarter_moon_with_face.png
Binary files differ
diff --git a/public/-/emojis/1/fish.png b/app/assets/images/emoji/fish.png
index c2d2faaacd4..c2d2faaacd4 100644
--- a/public/-/emojis/1/fish.png
+++ b/app/assets/images/emoji/fish.png
Binary files differ
diff --git a/public/-/emojis/1/fish_cake.png b/app/assets/images/emoji/fish_cake.png
index 157bded65db..157bded65db 100644
--- a/public/-/emojis/1/fish_cake.png
+++ b/app/assets/images/emoji/fish_cake.png
Binary files differ
diff --git a/public/-/emojis/1/fishing_pole_and_fish.png b/app/assets/images/emoji/fishing_pole_and_fish.png
index dfcdf07eb50..dfcdf07eb50 100644
--- a/public/-/emojis/1/fishing_pole_and_fish.png
+++ b/app/assets/images/emoji/fishing_pole_and_fish.png
Binary files differ
diff --git a/public/-/emojis/1/fist.png b/app/assets/images/emoji/fist.png
index de33592bf98..de33592bf98 100644
--- a/public/-/emojis/1/fist.png
+++ b/app/assets/images/emoji/fist.png
Binary files differ
diff --git a/public/-/emojis/1/fist_tone1.png b/app/assets/images/emoji/fist_tone1.png
index 02809e2dd68..02809e2dd68 100644
--- a/public/-/emojis/1/fist_tone1.png
+++ b/app/assets/images/emoji/fist_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/fist_tone2.png b/app/assets/images/emoji/fist_tone2.png
index 5de34810383..5de34810383 100644
--- a/public/-/emojis/1/fist_tone2.png
+++ b/app/assets/images/emoji/fist_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/fist_tone3.png b/app/assets/images/emoji/fist_tone3.png
index 0d5240129b1..0d5240129b1 100644
--- a/public/-/emojis/1/fist_tone3.png
+++ b/app/assets/images/emoji/fist_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/fist_tone4.png b/app/assets/images/emoji/fist_tone4.png
index a95c0dd634b..a95c0dd634b 100644
--- a/public/-/emojis/1/fist_tone4.png
+++ b/app/assets/images/emoji/fist_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/fist_tone5.png b/app/assets/images/emoji/fist_tone5.png
index a2f092fd8c7..a2f092fd8c7 100644
--- a/public/-/emojis/1/fist_tone5.png
+++ b/app/assets/images/emoji/fist_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/five.png b/app/assets/images/emoji/five.png
index d14371f3f27..d14371f3f27 100644
--- a/public/-/emojis/1/five.png
+++ b/app/assets/images/emoji/five.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ac.png b/app/assets/images/emoji/flag_ac.png
index 286239920c7..286239920c7 100644
--- a/public/-/emojis/1/flag_ac.png
+++ b/app/assets/images/emoji/flag_ac.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ad.png b/app/assets/images/emoji/flag_ad.png
index 20f4b14e8ad..20f4b14e8ad 100644
--- a/public/-/emojis/1/flag_ad.png
+++ b/app/assets/images/emoji/flag_ad.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ae.png b/app/assets/images/emoji/flag_ae.png
index d16ffe4b862..d16ffe4b862 100644
--- a/public/-/emojis/1/flag_ae.png
+++ b/app/assets/images/emoji/flag_ae.png
Binary files differ
diff --git a/public/-/emojis/1/flag_af.png b/app/assets/images/emoji/flag_af.png
index a51533b554d..a51533b554d 100644
--- a/public/-/emojis/1/flag_af.png
+++ b/app/assets/images/emoji/flag_af.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ag.png b/app/assets/images/emoji/flag_ag.png
index 07f2ce397d0..07f2ce397d0 100644
--- a/public/-/emojis/1/flag_ag.png
+++ b/app/assets/images/emoji/flag_ag.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ai.png b/app/assets/images/emoji/flag_ai.png
index 500b5ab09fb..500b5ab09fb 100644
--- a/public/-/emojis/1/flag_ai.png
+++ b/app/assets/images/emoji/flag_ai.png
Binary files differ
diff --git a/public/-/emojis/1/flag_al.png b/app/assets/images/emoji/flag_al.png
index 03a20132cc6..03a20132cc6 100644
--- a/public/-/emojis/1/flag_al.png
+++ b/app/assets/images/emoji/flag_al.png
Binary files differ
diff --git a/public/-/emojis/1/flag_am.png b/app/assets/images/emoji/flag_am.png
index 2ad60a273ec..2ad60a273ec 100644
--- a/public/-/emojis/1/flag_am.png
+++ b/app/assets/images/emoji/flag_am.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ao.png b/app/assets/images/emoji/flag_ao.png
index cb46c31f862..cb46c31f862 100644
--- a/public/-/emojis/1/flag_ao.png
+++ b/app/assets/images/emoji/flag_ao.png
Binary files differ
diff --git a/public/-/emojis/1/flag_aq.png b/app/assets/images/emoji/flag_aq.png
index b272021d375..b272021d375 100644
--- a/public/-/emojis/1/flag_aq.png
+++ b/app/assets/images/emoji/flag_aq.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ar.png b/app/assets/images/emoji/flag_ar.png
index 73136caf3b7..73136caf3b7 100644
--- a/public/-/emojis/1/flag_ar.png
+++ b/app/assets/images/emoji/flag_ar.png
Binary files differ
diff --git a/public/-/emojis/1/flag_as.png b/app/assets/images/emoji/flag_as.png
index 3db45a0d9f3..3db45a0d9f3 100644
--- a/public/-/emojis/1/flag_as.png
+++ b/app/assets/images/emoji/flag_as.png
Binary files differ
diff --git a/public/-/emojis/1/flag_at.png b/app/assets/images/emoji/flag_at.png
index c43769dcb19..c43769dcb19 100644
--- a/public/-/emojis/1/flag_at.png
+++ b/app/assets/images/emoji/flag_at.png
Binary files differ
diff --git a/public/-/emojis/1/flag_au.png b/app/assets/images/emoji/flag_au.png
index 7794309c78c..7794309c78c 100644
--- a/public/-/emojis/1/flag_au.png
+++ b/app/assets/images/emoji/flag_au.png
Binary files differ
diff --git a/public/-/emojis/1/flag_aw.png b/app/assets/images/emoji/flag_aw.png
index 02c840d12c9..02c840d12c9 100644
--- a/public/-/emojis/1/flag_aw.png
+++ b/app/assets/images/emoji/flag_aw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ax.png b/app/assets/images/emoji/flag_ax.png
index fc5466174bb..fc5466174bb 100644
--- a/public/-/emojis/1/flag_ax.png
+++ b/app/assets/images/emoji/flag_ax.png
Binary files differ
diff --git a/public/-/emojis/1/flag_az.png b/app/assets/images/emoji/flag_az.png
index 89d3d15fd9f..89d3d15fd9f 100644
--- a/public/-/emojis/1/flag_az.png
+++ b/app/assets/images/emoji/flag_az.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ba.png b/app/assets/images/emoji/flag_ba.png
index 25fe407e13c..25fe407e13c 100644
--- a/public/-/emojis/1/flag_ba.png
+++ b/app/assets/images/emoji/flag_ba.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bb.png b/app/assets/images/emoji/flag_bb.png
index bccd8c5c9b0..bccd8c5c9b0 100644
--- a/public/-/emojis/1/flag_bb.png
+++ b/app/assets/images/emoji/flag_bb.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bd.png b/app/assets/images/emoji/flag_bd.png
index b0597a3149b..b0597a3149b 100644
--- a/public/-/emojis/1/flag_bd.png
+++ b/app/assets/images/emoji/flag_bd.png
Binary files differ
diff --git a/public/-/emojis/1/flag_be.png b/app/assets/images/emoji/flag_be.png
index 551f086e3c4..551f086e3c4 100644
--- a/public/-/emojis/1/flag_be.png
+++ b/app/assets/images/emoji/flag_be.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bf.png b/app/assets/images/emoji/flag_bf.png
index 444d4829f94..444d4829f94 100644
--- a/public/-/emojis/1/flag_bf.png
+++ b/app/assets/images/emoji/flag_bf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bg.png b/app/assets/images/emoji/flag_bg.png
index 821eee5e170..821eee5e170 100644
--- a/public/-/emojis/1/flag_bg.png
+++ b/app/assets/images/emoji/flag_bg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bh.png b/app/assets/images/emoji/flag_bh.png
index f33724249f0..f33724249f0 100644
--- a/public/-/emojis/1/flag_bh.png
+++ b/app/assets/images/emoji/flag_bh.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bi.png b/app/assets/images/emoji/flag_bi.png
index ea20ac93211..ea20ac93211 100644
--- a/public/-/emojis/1/flag_bi.png
+++ b/app/assets/images/emoji/flag_bi.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bj.png b/app/assets/images/emoji/flag_bj.png
index 7cca4f80457..7cca4f80457 100644
--- a/public/-/emojis/1/flag_bj.png
+++ b/app/assets/images/emoji/flag_bj.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bl.png b/app/assets/images/emoji/flag_bl.png
index 1082e78999f..1082e78999f 100644
--- a/public/-/emojis/1/flag_bl.png
+++ b/app/assets/images/emoji/flag_bl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_black.png b/app/assets/images/emoji/flag_black.png
index 0e28d05d5ac..0e28d05d5ac 100644
--- a/public/-/emojis/1/flag_black.png
+++ b/app/assets/images/emoji/flag_black.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bm.png b/app/assets/images/emoji/flag_bm.png
index ab8cafdac63..ab8cafdac63 100644
--- a/public/-/emojis/1/flag_bm.png
+++ b/app/assets/images/emoji/flag_bm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bn.png b/app/assets/images/emoji/flag_bn.png
index caa9329a896..caa9329a896 100644
--- a/public/-/emojis/1/flag_bn.png
+++ b/app/assets/images/emoji/flag_bn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bo.png b/app/assets/images/emoji/flag_bo.png
index 98af62b3da7..98af62b3da7 100644
--- a/public/-/emojis/1/flag_bo.png
+++ b/app/assets/images/emoji/flag_bo.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bq.png b/app/assets/images/emoji/flag_bq.png
index cb978ef9de9..cb978ef9de9 100644
--- a/public/-/emojis/1/flag_bq.png
+++ b/app/assets/images/emoji/flag_bq.png
Binary files differ
diff --git a/public/-/emojis/1/flag_br.png b/app/assets/images/emoji/flag_br.png
index b139366a42b..b139366a42b 100644
--- a/public/-/emojis/1/flag_br.png
+++ b/app/assets/images/emoji/flag_br.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bs.png b/app/assets/images/emoji/flag_bs.png
index d36bcd2fb52..d36bcd2fb52 100644
--- a/public/-/emojis/1/flag_bs.png
+++ b/app/assets/images/emoji/flag_bs.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bt.png b/app/assets/images/emoji/flag_bt.png
index ed57aa0360e..ed57aa0360e 100644
--- a/public/-/emojis/1/flag_bt.png
+++ b/app/assets/images/emoji/flag_bt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bv.png b/app/assets/images/emoji/flag_bv.png
index 5884e648228..5884e648228 100644
--- a/public/-/emojis/1/flag_bv.png
+++ b/app/assets/images/emoji/flag_bv.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bw.png b/app/assets/images/emoji/flag_bw.png
index cb12f34739d..cb12f34739d 100644
--- a/public/-/emojis/1/flag_bw.png
+++ b/app/assets/images/emoji/flag_bw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_by.png b/app/assets/images/emoji/flag_by.png
index 859c05beb13..859c05beb13 100644
--- a/public/-/emojis/1/flag_by.png
+++ b/app/assets/images/emoji/flag_by.png
Binary files differ
diff --git a/public/-/emojis/1/flag_bz.png b/app/assets/images/emoji/flag_bz.png
index 34761cd03d8..34761cd03d8 100644
--- a/public/-/emojis/1/flag_bz.png
+++ b/app/assets/images/emoji/flag_bz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ca.png b/app/assets/images/emoji/flag_ca.png
index 7c5b390e85b..7c5b390e85b 100644
--- a/public/-/emojis/1/flag_ca.png
+++ b/app/assets/images/emoji/flag_ca.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cc.png b/app/assets/images/emoji/flag_cc.png
index b6555a23d83..b6555a23d83 100644
--- a/public/-/emojis/1/flag_cc.png
+++ b/app/assets/images/emoji/flag_cc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cd.png b/app/assets/images/emoji/flag_cd.png
index fa92009771d..fa92009771d 100644
--- a/public/-/emojis/1/flag_cd.png
+++ b/app/assets/images/emoji/flag_cd.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cf.png b/app/assets/images/emoji/flag_cf.png
index b969ae29ea9..b969ae29ea9 100644
--- a/public/-/emojis/1/flag_cf.png
+++ b/app/assets/images/emoji/flag_cf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cg.png b/app/assets/images/emoji/flag_cg.png
index 3a38a40a95e..3a38a40a95e 100644
--- a/public/-/emojis/1/flag_cg.png
+++ b/app/assets/images/emoji/flag_cg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ch.png b/app/assets/images/emoji/flag_ch.png
index 5ff86b8a3b7..5ff86b8a3b7 100644
--- a/public/-/emojis/1/flag_ch.png
+++ b/app/assets/images/emoji/flag_ch.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ci.png b/app/assets/images/emoji/flag_ci.png
index e3b4d15c7f1..e3b4d15c7f1 100644
--- a/public/-/emojis/1/flag_ci.png
+++ b/app/assets/images/emoji/flag_ci.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ck.png b/app/assets/images/emoji/flag_ck.png
index b6b53dbc1c4..b6b53dbc1c4 100644
--- a/public/-/emojis/1/flag_ck.png
+++ b/app/assets/images/emoji/flag_ck.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cl.png b/app/assets/images/emoji/flag_cl.png
index c9390da5499..c9390da5499 100644
--- a/public/-/emojis/1/flag_cl.png
+++ b/app/assets/images/emoji/flag_cl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cm.png b/app/assets/images/emoji/flag_cm.png
index 2d3f6ec4518..2d3f6ec4518 100644
--- a/public/-/emojis/1/flag_cm.png
+++ b/app/assets/images/emoji/flag_cm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cn.png b/app/assets/images/emoji/flag_cn.png
index 0a7f350a6d2..0a7f350a6d2 100644
--- a/public/-/emojis/1/flag_cn.png
+++ b/app/assets/images/emoji/flag_cn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_co.png b/app/assets/images/emoji/flag_co.png
index 7e0f5e0dc3c..7e0f5e0dc3c 100644
--- a/public/-/emojis/1/flag_co.png
+++ b/app/assets/images/emoji/flag_co.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cp.png b/app/assets/images/emoji/flag_cp.png
index 70c761036bd..70c761036bd 100644
--- a/public/-/emojis/1/flag_cp.png
+++ b/app/assets/images/emoji/flag_cp.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cr.png b/app/assets/images/emoji/flag_cr.png
index a5fce126515..a5fce126515 100644
--- a/public/-/emojis/1/flag_cr.png
+++ b/app/assets/images/emoji/flag_cr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cu.png b/app/assets/images/emoji/flag_cu.png
index 447328f7dfd..447328f7dfd 100644
--- a/public/-/emojis/1/flag_cu.png
+++ b/app/assets/images/emoji/flag_cu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cv.png b/app/assets/images/emoji/flag_cv.png
index 43faf4d64d5..43faf4d64d5 100644
--- a/public/-/emojis/1/flag_cv.png
+++ b/app/assets/images/emoji/flag_cv.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cw.png b/app/assets/images/emoji/flag_cw.png
index eb39e8d0078..eb39e8d0078 100644
--- a/public/-/emojis/1/flag_cw.png
+++ b/app/assets/images/emoji/flag_cw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cx.png b/app/assets/images/emoji/flag_cx.png
index 09d21359f3a..09d21359f3a 100644
--- a/public/-/emojis/1/flag_cx.png
+++ b/app/assets/images/emoji/flag_cx.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cy.png b/app/assets/images/emoji/flag_cy.png
index 154a7aa3176..154a7aa3176 100644
--- a/public/-/emojis/1/flag_cy.png
+++ b/app/assets/images/emoji/flag_cy.png
Binary files differ
diff --git a/public/-/emojis/1/flag_cz.png b/app/assets/images/emoji/flag_cz.png
index 9737ca223c7..9737ca223c7 100644
--- a/public/-/emojis/1/flag_cz.png
+++ b/app/assets/images/emoji/flag_cz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_de.png b/app/assets/images/emoji/flag_de.png
index 98ed76b3bab..98ed76b3bab 100644
--- a/public/-/emojis/1/flag_de.png
+++ b/app/assets/images/emoji/flag_de.png
Binary files differ
diff --git a/public/-/emojis/1/flag_dg.png b/app/assets/images/emoji/flag_dg.png
index aae927d14b8..aae927d14b8 100644
--- a/public/-/emojis/1/flag_dg.png
+++ b/app/assets/images/emoji/flag_dg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_dj.png b/app/assets/images/emoji/flag_dj.png
index 73c2a2acbd9..73c2a2acbd9 100644
--- a/public/-/emojis/1/flag_dj.png
+++ b/app/assets/images/emoji/flag_dj.png
Binary files differ
diff --git a/public/-/emojis/1/flag_dk.png b/app/assets/images/emoji/flag_dk.png
index e5a60b06256..e5a60b06256 100644
--- a/public/-/emojis/1/flag_dk.png
+++ b/app/assets/images/emoji/flag_dk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_dm.png b/app/assets/images/emoji/flag_dm.png
index 50f8a53981d..50f8a53981d 100644
--- a/public/-/emojis/1/flag_dm.png
+++ b/app/assets/images/emoji/flag_dm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_do.png b/app/assets/images/emoji/flag_do.png
index 037a45d7c26..037a45d7c26 100644
--- a/public/-/emojis/1/flag_do.png
+++ b/app/assets/images/emoji/flag_do.png
Binary files differ
diff --git a/public/-/emojis/1/flag_dz.png b/app/assets/images/emoji/flag_dz.png
index 24945b10f2d..24945b10f2d 100644
--- a/public/-/emojis/1/flag_dz.png
+++ b/app/assets/images/emoji/flag_dz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ea.png b/app/assets/images/emoji/flag_ea.png
index 356ff347838..356ff347838 100644
--- a/public/-/emojis/1/flag_ea.png
+++ b/app/assets/images/emoji/flag_ea.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ec.png b/app/assets/images/emoji/flag_ec.png
index 13814594619..13814594619 100644
--- a/public/-/emojis/1/flag_ec.png
+++ b/app/assets/images/emoji/flag_ec.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ee.png b/app/assets/images/emoji/flag_ee.png
index 84f317e7747..84f317e7747 100644
--- a/public/-/emojis/1/flag_ee.png
+++ b/app/assets/images/emoji/flag_ee.png
Binary files differ
diff --git a/public/-/emojis/1/flag_eg.png b/app/assets/images/emoji/flag_eg.png
index 57786064a95..57786064a95 100644
--- a/public/-/emojis/1/flag_eg.png
+++ b/app/assets/images/emoji/flag_eg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_eh.png b/app/assets/images/emoji/flag_eh.png
index 4d7a76687f6..4d7a76687f6 100644
--- a/public/-/emojis/1/flag_eh.png
+++ b/app/assets/images/emoji/flag_eh.png
Binary files differ
diff --git a/public/-/emojis/1/flag_er.png b/app/assets/images/emoji/flag_er.png
index 0c3c724c1fb..0c3c724c1fb 100644
--- a/public/-/emojis/1/flag_er.png
+++ b/app/assets/images/emoji/flag_er.png
Binary files differ
diff --git a/public/-/emojis/1/flag_es.png b/app/assets/images/emoji/flag_es.png
index 3e73597a225..3e73597a225 100644
--- a/public/-/emojis/1/flag_es.png
+++ b/app/assets/images/emoji/flag_es.png
Binary files differ
diff --git a/public/-/emojis/1/flag_et.png b/app/assets/images/emoji/flag_et.png
index 9560a134c97..9560a134c97 100644
--- a/public/-/emojis/1/flag_et.png
+++ b/app/assets/images/emoji/flag_et.png
Binary files differ
diff --git a/public/-/emojis/1/flag_eu.png b/app/assets/images/emoji/flag_eu.png
index 0b456cf3330..0b456cf3330 100644
--- a/public/-/emojis/1/flag_eu.png
+++ b/app/assets/images/emoji/flag_eu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_fi.png b/app/assets/images/emoji/flag_fi.png
index ebcf58abfc5..ebcf58abfc5 100644
--- a/public/-/emojis/1/flag_fi.png
+++ b/app/assets/images/emoji/flag_fi.png
Binary files differ
diff --git a/public/-/emojis/1/flag_fj.png b/app/assets/images/emoji/flag_fj.png
index 9cc8c37fe37..9cc8c37fe37 100644
--- a/public/-/emojis/1/flag_fj.png
+++ b/app/assets/images/emoji/flag_fj.png
Binary files differ
diff --git a/public/-/emojis/1/flag_fk.png b/app/assets/images/emoji/flag_fk.png
index 61372fd2549..61372fd2549 100644
--- a/public/-/emojis/1/flag_fk.png
+++ b/app/assets/images/emoji/flag_fk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_fm.png b/app/assets/images/emoji/flag_fm.png
index 0889825c8e1..0889825c8e1 100644
--- a/public/-/emojis/1/flag_fm.png
+++ b/app/assets/images/emoji/flag_fm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_fo.png b/app/assets/images/emoji/flag_fo.png
index 9a4431b0831..9a4431b0831 100644
--- a/public/-/emojis/1/flag_fo.png
+++ b/app/assets/images/emoji/flag_fo.png
Binary files differ
diff --git a/public/-/emojis/1/flag_fr.png b/app/assets/images/emoji/flag_fr.png
index 62ca19c3fcf..62ca19c3fcf 100644
--- a/public/-/emojis/1/flag_fr.png
+++ b/app/assets/images/emoji/flag_fr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ga.png b/app/assets/images/emoji/flag_ga.png
index 2e68e527a3e..2e68e527a3e 100644
--- a/public/-/emojis/1/flag_ga.png
+++ b/app/assets/images/emoji/flag_ga.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gb.png b/app/assets/images/emoji/flag_gb.png
index 3ed10f62347..3ed10f62347 100644
--- a/public/-/emojis/1/flag_gb.png
+++ b/app/assets/images/emoji/flag_gb.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gd.png b/app/assets/images/emoji/flag_gd.png
index 527aad33807..527aad33807 100644
--- a/public/-/emojis/1/flag_gd.png
+++ b/app/assets/images/emoji/flag_gd.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ge.png b/app/assets/images/emoji/flag_ge.png
index a75d142480d..a75d142480d 100644
--- a/public/-/emojis/1/flag_ge.png
+++ b/app/assets/images/emoji/flag_ge.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gf.png b/app/assets/images/emoji/flag_gf.png
index 0cf96f327c0..0cf96f327c0 100644
--- a/public/-/emojis/1/flag_gf.png
+++ b/app/assets/images/emoji/flag_gf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gg.png b/app/assets/images/emoji/flag_gg.png
index 970002c7f76..970002c7f76 100644
--- a/public/-/emojis/1/flag_gg.png
+++ b/app/assets/images/emoji/flag_gg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gh.png b/app/assets/images/emoji/flag_gh.png
index f31b5eb7b45..f31b5eb7b45 100644
--- a/public/-/emojis/1/flag_gh.png
+++ b/app/assets/images/emoji/flag_gh.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gi.png b/app/assets/images/emoji/flag_gi.png
index e554a2a1d0c..e554a2a1d0c 100644
--- a/public/-/emojis/1/flag_gi.png
+++ b/app/assets/images/emoji/flag_gi.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gl.png b/app/assets/images/emoji/flag_gl.png
index 2e795dd4e33..2e795dd4e33 100644
--- a/public/-/emojis/1/flag_gl.png
+++ b/app/assets/images/emoji/flag_gl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gm.png b/app/assets/images/emoji/flag_gm.png
index bb69c0975a3..bb69c0975a3 100644
--- a/public/-/emojis/1/flag_gm.png
+++ b/app/assets/images/emoji/flag_gm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gn.png b/app/assets/images/emoji/flag_gn.png
index 1981f61dbf5..1981f61dbf5 100644
--- a/public/-/emojis/1/flag_gn.png
+++ b/app/assets/images/emoji/flag_gn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gp.png b/app/assets/images/emoji/flag_gp.png
index 10e42e672bd..10e42e672bd 100644
--- a/public/-/emojis/1/flag_gp.png
+++ b/app/assets/images/emoji/flag_gp.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gq.png b/app/assets/images/emoji/flag_gq.png
index 11475e61eeb..11475e61eeb 100644
--- a/public/-/emojis/1/flag_gq.png
+++ b/app/assets/images/emoji/flag_gq.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gr.png b/app/assets/images/emoji/flag_gr.png
index 0f6bb1b6b94..0f6bb1b6b94 100644
--- a/public/-/emojis/1/flag_gr.png
+++ b/app/assets/images/emoji/flag_gr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gs.png b/app/assets/images/emoji/flag_gs.png
index 6fc92780453..6fc92780453 100644
--- a/public/-/emojis/1/flag_gs.png
+++ b/app/assets/images/emoji/flag_gs.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gt.png b/app/assets/images/emoji/flag_gt.png
index 7213d4139ed..7213d4139ed 100644
--- a/public/-/emojis/1/flag_gt.png
+++ b/app/assets/images/emoji/flag_gt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gu.png b/app/assets/images/emoji/flag_gu.png
index 4027549ca3c..4027549ca3c 100644
--- a/public/-/emojis/1/flag_gu.png
+++ b/app/assets/images/emoji/flag_gu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gw.png b/app/assets/images/emoji/flag_gw.png
index 6357f6225f4..6357f6225f4 100644
--- a/public/-/emojis/1/flag_gw.png
+++ b/app/assets/images/emoji/flag_gw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_gy.png b/app/assets/images/emoji/flag_gy.png
index 746e2fb7e44..746e2fb7e44 100644
--- a/public/-/emojis/1/flag_gy.png
+++ b/app/assets/images/emoji/flag_gy.png
Binary files differ
diff --git a/public/-/emojis/1/flag_hk.png b/app/assets/images/emoji/flag_hk.png
index cf0c7151b56..cf0c7151b56 100644
--- a/public/-/emojis/1/flag_hk.png
+++ b/app/assets/images/emoji/flag_hk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_hm.png b/app/assets/images/emoji/flag_hm.png
index b613509e466..b613509e466 100644
--- a/public/-/emojis/1/flag_hm.png
+++ b/app/assets/images/emoji/flag_hm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_hn.png b/app/assets/images/emoji/flag_hn.png
index 402cdcefdf8..402cdcefdf8 100644
--- a/public/-/emojis/1/flag_hn.png
+++ b/app/assets/images/emoji/flag_hn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_hr.png b/app/assets/images/emoji/flag_hr.png
index 46f4f06b4f2..46f4f06b4f2 100644
--- a/public/-/emojis/1/flag_hr.png
+++ b/app/assets/images/emoji/flag_hr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ht.png b/app/assets/images/emoji/flag_ht.png
index d8d0c888498..d8d0c888498 100644
--- a/public/-/emojis/1/flag_ht.png
+++ b/app/assets/images/emoji/flag_ht.png
Binary files differ
diff --git a/public/-/emojis/1/flag_hu.png b/app/assets/images/emoji/flag_hu.png
index a898de636a5..a898de636a5 100644
--- a/public/-/emojis/1/flag_hu.png
+++ b/app/assets/images/emoji/flag_hu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ic.png b/app/assets/images/emoji/flag_ic.png
index 69fd990aa95..69fd990aa95 100644
--- a/public/-/emojis/1/flag_ic.png
+++ b/app/assets/images/emoji/flag_ic.png
Binary files differ
diff --git a/public/-/emojis/1/flag_id.png b/app/assets/images/emoji/flag_id.png
index 85b4c063a45..85b4c063a45 100644
--- a/public/-/emojis/1/flag_id.png
+++ b/app/assets/images/emoji/flag_id.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ie.png b/app/assets/images/emoji/flag_ie.png
index a28295838cc..a28295838cc 100644
--- a/public/-/emojis/1/flag_ie.png
+++ b/app/assets/images/emoji/flag_ie.png
Binary files differ
diff --git a/public/-/emojis/1/flag_il.png b/app/assets/images/emoji/flag_il.png
index 85c410d45fb..85c410d45fb 100644
--- a/public/-/emojis/1/flag_il.png
+++ b/app/assets/images/emoji/flag_il.png
Binary files differ
diff --git a/public/-/emojis/1/flag_im.png b/app/assets/images/emoji/flag_im.png
index 60a2458e38e..60a2458e38e 100644
--- a/public/-/emojis/1/flag_im.png
+++ b/app/assets/images/emoji/flag_im.png
Binary files differ
diff --git a/public/-/emojis/1/flag_in.png b/app/assets/images/emoji/flag_in.png
index feccc8952ce..feccc8952ce 100644
--- a/public/-/emojis/1/flag_in.png
+++ b/app/assets/images/emoji/flag_in.png
Binary files differ
diff --git a/public/-/emojis/1/flag_io.png b/app/assets/images/emoji/flag_io.png
index aae927d14b8..aae927d14b8 100644
--- a/public/-/emojis/1/flag_io.png
+++ b/app/assets/images/emoji/flag_io.png
Binary files differ
diff --git a/public/-/emojis/1/flag_iq.png b/app/assets/images/emoji/flag_iq.png
index 41fd1db6f86..41fd1db6f86 100644
--- a/public/-/emojis/1/flag_iq.png
+++ b/app/assets/images/emoji/flag_iq.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ir.png b/app/assets/images/emoji/flag_ir.png
index ff7aaf62ba6..ff7aaf62ba6 100644
--- a/public/-/emojis/1/flag_ir.png
+++ b/app/assets/images/emoji/flag_ir.png
Binary files differ
diff --git a/public/-/emojis/1/flag_is.png b/app/assets/images/emoji/flag_is.png
index ad8d4131dd2..ad8d4131dd2 100644
--- a/public/-/emojis/1/flag_is.png
+++ b/app/assets/images/emoji/flag_is.png
Binary files differ
diff --git a/public/-/emojis/1/flag_it.png b/app/assets/images/emoji/flag_it.png
index f21563ec533..f21563ec533 100644
--- a/public/-/emojis/1/flag_it.png
+++ b/app/assets/images/emoji/flag_it.png
Binary files differ
diff --git a/public/-/emojis/1/flag_je.png b/app/assets/images/emoji/flag_je.png
index 198a918f6a4..198a918f6a4 100644
--- a/public/-/emojis/1/flag_je.png
+++ b/app/assets/images/emoji/flag_je.png
Binary files differ
diff --git a/public/-/emojis/1/flag_jm.png b/app/assets/images/emoji/flag_jm.png
index f84e4f9e8db..f84e4f9e8db 100644
--- a/public/-/emojis/1/flag_jm.png
+++ b/app/assets/images/emoji/flag_jm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_jo.png b/app/assets/images/emoji/flag_jo.png
index 20bfa147e3e..20bfa147e3e 100644
--- a/public/-/emojis/1/flag_jo.png
+++ b/app/assets/images/emoji/flag_jo.png
Binary files differ
diff --git a/public/-/emojis/1/flag_jp.png b/app/assets/images/emoji/flag_jp.png
index 8d8838e4708..8d8838e4708 100644
--- a/public/-/emojis/1/flag_jp.png
+++ b/app/assets/images/emoji/flag_jp.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ke.png b/app/assets/images/emoji/flag_ke.png
index 9e417ab3009..9e417ab3009 100644
--- a/public/-/emojis/1/flag_ke.png
+++ b/app/assets/images/emoji/flag_ke.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kg.png b/app/assets/images/emoji/flag_kg.png
index 2f2d848fe58..2f2d848fe58 100644
--- a/public/-/emojis/1/flag_kg.png
+++ b/app/assets/images/emoji/flag_kg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kh.png b/app/assets/images/emoji/flag_kh.png
index 9a2877dd620..9a2877dd620 100644
--- a/public/-/emojis/1/flag_kh.png
+++ b/app/assets/images/emoji/flag_kh.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ki.png b/app/assets/images/emoji/flag_ki.png
index 10e507e3245..10e507e3245 100644
--- a/public/-/emojis/1/flag_ki.png
+++ b/app/assets/images/emoji/flag_ki.png
Binary files differ
diff --git a/public/-/emojis/1/flag_km.png b/app/assets/images/emoji/flag_km.png
index bd5a0588e03..bd5a0588e03 100644
--- a/public/-/emojis/1/flag_km.png
+++ b/app/assets/images/emoji/flag_km.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kn.png b/app/assets/images/emoji/flag_kn.png
index 776207c9605..776207c9605 100644
--- a/public/-/emojis/1/flag_kn.png
+++ b/app/assets/images/emoji/flag_kn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kp.png b/app/assets/images/emoji/flag_kp.png
index 6b3fd89eaaa..6b3fd89eaaa 100644
--- a/public/-/emojis/1/flag_kp.png
+++ b/app/assets/images/emoji/flag_kp.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kr.png b/app/assets/images/emoji/flag_kr.png
index 833a88116e1..833a88116e1 100644
--- a/public/-/emojis/1/flag_kr.png
+++ b/app/assets/images/emoji/flag_kr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kw.png b/app/assets/images/emoji/flag_kw.png
index 4d19bfa6ca7..4d19bfa6ca7 100644
--- a/public/-/emojis/1/flag_kw.png
+++ b/app/assets/images/emoji/flag_kw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ky.png b/app/assets/images/emoji/flag_ky.png
index 40daa4da597..40daa4da597 100644
--- a/public/-/emojis/1/flag_ky.png
+++ b/app/assets/images/emoji/flag_ky.png
Binary files differ
diff --git a/public/-/emojis/1/flag_kz.png b/app/assets/images/emoji/flag_kz.png
index 2f97a8fd3c6..2f97a8fd3c6 100644
--- a/public/-/emojis/1/flag_kz.png
+++ b/app/assets/images/emoji/flag_kz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_la.png b/app/assets/images/emoji/flag_la.png
index 4d4179f34f6..4d4179f34f6 100644
--- a/public/-/emojis/1/flag_la.png
+++ b/app/assets/images/emoji/flag_la.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lb.png b/app/assets/images/emoji/flag_lb.png
index 3d594467011..3d594467011 100644
--- a/public/-/emojis/1/flag_lb.png
+++ b/app/assets/images/emoji/flag_lb.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lc.png b/app/assets/images/emoji/flag_lc.png
index 45547b1e439..45547b1e439 100644
--- a/public/-/emojis/1/flag_lc.png
+++ b/app/assets/images/emoji/flag_lc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_li.png b/app/assets/images/emoji/flag_li.png
index 0eafa6a2215..0eafa6a2215 100644
--- a/public/-/emojis/1/flag_li.png
+++ b/app/assets/images/emoji/flag_li.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lk.png b/app/assets/images/emoji/flag_lk.png
index ab4fe10c40c..ab4fe10c40c 100644
--- a/public/-/emojis/1/flag_lk.png
+++ b/app/assets/images/emoji/flag_lk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lr.png b/app/assets/images/emoji/flag_lr.png
index f66f267fea2..f66f267fea2 100644
--- a/public/-/emojis/1/flag_lr.png
+++ b/app/assets/images/emoji/flag_lr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ls.png b/app/assets/images/emoji/flag_ls.png
index 24745631e3c..24745631e3c 100644
--- a/public/-/emojis/1/flag_ls.png
+++ b/app/assets/images/emoji/flag_ls.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lt.png b/app/assets/images/emoji/flag_lt.png
index d644b56d62a..d644b56d62a 100644
--- a/public/-/emojis/1/flag_lt.png
+++ b/app/assets/images/emoji/flag_lt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lu.png b/app/assets/images/emoji/flag_lu.png
index a2df9c92994..a2df9c92994 100644
--- a/public/-/emojis/1/flag_lu.png
+++ b/app/assets/images/emoji/flag_lu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_lv.png b/app/assets/images/emoji/flag_lv.png
index ae680d5f0e3..ae680d5f0e3 100644
--- a/public/-/emojis/1/flag_lv.png
+++ b/app/assets/images/emoji/flag_lv.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ly.png b/app/assets/images/emoji/flag_ly.png
index f6e77b0f3ba..f6e77b0f3ba 100644
--- a/public/-/emojis/1/flag_ly.png
+++ b/app/assets/images/emoji/flag_ly.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ma.png b/app/assets/images/emoji/flag_ma.png
index c4a056722cd..c4a056722cd 100644
--- a/public/-/emojis/1/flag_ma.png
+++ b/app/assets/images/emoji/flag_ma.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mc.png b/app/assets/images/emoji/flag_mc.png
index d479eab98cb..d479eab98cb 100644
--- a/public/-/emojis/1/flag_mc.png
+++ b/app/assets/images/emoji/flag_mc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_md.png b/app/assets/images/emoji/flag_md.png
index a7a72539872..a7a72539872 100644
--- a/public/-/emojis/1/flag_md.png
+++ b/app/assets/images/emoji/flag_md.png
Binary files differ
diff --git a/public/-/emojis/1/flag_me.png b/app/assets/images/emoji/flag_me.png
index 7c771e7e120..7c771e7e120 100644
--- a/public/-/emojis/1/flag_me.png
+++ b/app/assets/images/emoji/flag_me.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mf.png b/app/assets/images/emoji/flag_mf.png
index 70c761036bd..70c761036bd 100644
--- a/public/-/emojis/1/flag_mf.png
+++ b/app/assets/images/emoji/flag_mf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mg.png b/app/assets/images/emoji/flag_mg.png
index 2f3ccdda76f..2f3ccdda76f 100644
--- a/public/-/emojis/1/flag_mg.png
+++ b/app/assets/images/emoji/flag_mg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mh.png b/app/assets/images/emoji/flag_mh.png
index 598016481c1..598016481c1 100644
--- a/public/-/emojis/1/flag_mh.png
+++ b/app/assets/images/emoji/flag_mh.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mk.png b/app/assets/images/emoji/flag_mk.png
index 7ba775ee75c..7ba775ee75c 100644
--- a/public/-/emojis/1/flag_mk.png
+++ b/app/assets/images/emoji/flag_mk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ml.png b/app/assets/images/emoji/flag_ml.png
index 68343785468..68343785468 100644
--- a/public/-/emojis/1/flag_ml.png
+++ b/app/assets/images/emoji/flag_ml.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mm.png b/app/assets/images/emoji/flag_mm.png
index 37dc7d71591..37dc7d71591 100644
--- a/public/-/emojis/1/flag_mm.png
+++ b/app/assets/images/emoji/flag_mm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mn.png b/app/assets/images/emoji/flag_mn.png
index 1f146bbcd1a..1f146bbcd1a 100644
--- a/public/-/emojis/1/flag_mn.png
+++ b/app/assets/images/emoji/flag_mn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mo.png b/app/assets/images/emoji/flag_mo.png
index 7edde31f64b..7edde31f64b 100644
--- a/public/-/emojis/1/flag_mo.png
+++ b/app/assets/images/emoji/flag_mo.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mp.png b/app/assets/images/emoji/flag_mp.png
index 17ec1c441ed..17ec1c441ed 100644
--- a/public/-/emojis/1/flag_mp.png
+++ b/app/assets/images/emoji/flag_mp.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mq.png b/app/assets/images/emoji/flag_mq.png
index 1e672dc9087..1e672dc9087 100644
--- a/public/-/emojis/1/flag_mq.png
+++ b/app/assets/images/emoji/flag_mq.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mr.png b/app/assets/images/emoji/flag_mr.png
index f87de46effe..f87de46effe 100644
--- a/public/-/emojis/1/flag_mr.png
+++ b/app/assets/images/emoji/flag_mr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ms.png b/app/assets/images/emoji/flag_ms.png
index 480b0d4ebda..480b0d4ebda 100644
--- a/public/-/emojis/1/flag_ms.png
+++ b/app/assets/images/emoji/flag_ms.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mt.png b/app/assets/images/emoji/flag_mt.png
index c9e1dbdce82..c9e1dbdce82 100644
--- a/public/-/emojis/1/flag_mt.png
+++ b/app/assets/images/emoji/flag_mt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mu.png b/app/assets/images/emoji/flag_mu.png
index 55b33cb7c33..55b33cb7c33 100644
--- a/public/-/emojis/1/flag_mu.png
+++ b/app/assets/images/emoji/flag_mu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mv.png b/app/assets/images/emoji/flag_mv.png
index ce5867126ae..ce5867126ae 100644
--- a/public/-/emojis/1/flag_mv.png
+++ b/app/assets/images/emoji/flag_mv.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mw.png b/app/assets/images/emoji/flag_mw.png
index 003d8548401..003d8548401 100644
--- a/public/-/emojis/1/flag_mw.png
+++ b/app/assets/images/emoji/flag_mw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mx.png b/app/assets/images/emoji/flag_mx.png
index 42572bcd0ba..42572bcd0ba 100644
--- a/public/-/emojis/1/flag_mx.png
+++ b/app/assets/images/emoji/flag_mx.png
Binary files differ
diff --git a/public/-/emojis/1/flag_my.png b/app/assets/images/emoji/flag_my.png
index 17526c26742..17526c26742 100644
--- a/public/-/emojis/1/flag_my.png
+++ b/app/assets/images/emoji/flag_my.png
Binary files differ
diff --git a/public/-/emojis/1/flag_mz.png b/app/assets/images/emoji/flag_mz.png
index 2352a78e786..2352a78e786 100644
--- a/public/-/emojis/1/flag_mz.png
+++ b/app/assets/images/emoji/flag_mz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_na.png b/app/assets/images/emoji/flag_na.png
index ed31c3df04d..ed31c3df04d 100644
--- a/public/-/emojis/1/flag_na.png
+++ b/app/assets/images/emoji/flag_na.png
Binary files differ
diff --git a/public/-/emojis/1/flag_nc.png b/app/assets/images/emoji/flag_nc.png
index 90b3afebfa3..90b3afebfa3 100644
--- a/public/-/emojis/1/flag_nc.png
+++ b/app/assets/images/emoji/flag_nc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ne.png b/app/assets/images/emoji/flag_ne.png
index f98a1173c2a..f98a1173c2a 100644
--- a/public/-/emojis/1/flag_ne.png
+++ b/app/assets/images/emoji/flag_ne.png
Binary files differ
diff --git a/public/-/emojis/1/flag_nf.png b/app/assets/images/emoji/flag_nf.png
index 9099e767420..9099e767420 100644
--- a/public/-/emojis/1/flag_nf.png
+++ b/app/assets/images/emoji/flag_nf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ng.png b/app/assets/images/emoji/flag_ng.png
index ea0abeff1a1..ea0abeff1a1 100644
--- a/public/-/emojis/1/flag_ng.png
+++ b/app/assets/images/emoji/flag_ng.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ni.png b/app/assets/images/emoji/flag_ni.png
index 772920dfa10..772920dfa10 100644
--- a/public/-/emojis/1/flag_ni.png
+++ b/app/assets/images/emoji/flag_ni.png
Binary files differ
diff --git a/public/-/emojis/1/flag_nl.png b/app/assets/images/emoji/flag_nl.png
index 83a0e817e41..83a0e817e41 100644
--- a/public/-/emojis/1/flag_nl.png
+++ b/app/assets/images/emoji/flag_nl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_no.png b/app/assets/images/emoji/flag_no.png
index 99d3142eb7b..99d3142eb7b 100644
--- a/public/-/emojis/1/flag_no.png
+++ b/app/assets/images/emoji/flag_no.png
Binary files differ
diff --git a/public/-/emojis/1/flag_np.png b/app/assets/images/emoji/flag_np.png
index 87425a8dfef..87425a8dfef 100644
--- a/public/-/emojis/1/flag_np.png
+++ b/app/assets/images/emoji/flag_np.png
Binary files differ
diff --git a/public/-/emojis/1/flag_nr.png b/app/assets/images/emoji/flag_nr.png
index b3e3a5d5621..b3e3a5d5621 100644
--- a/public/-/emojis/1/flag_nr.png
+++ b/app/assets/images/emoji/flag_nr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_nu.png b/app/assets/images/emoji/flag_nu.png
index f03614443ee..f03614443ee 100644
--- a/public/-/emojis/1/flag_nu.png
+++ b/app/assets/images/emoji/flag_nu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_nz.png b/app/assets/images/emoji/flag_nz.png
index a4eeeab9cd9..a4eeeab9cd9 100644
--- a/public/-/emojis/1/flag_nz.png
+++ b/app/assets/images/emoji/flag_nz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_om.png b/app/assets/images/emoji/flag_om.png
index ea824ba31e7..ea824ba31e7 100644
--- a/public/-/emojis/1/flag_om.png
+++ b/app/assets/images/emoji/flag_om.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pa.png b/app/assets/images/emoji/flag_pa.png
index c3091d89889..c3091d89889 100644
--- a/public/-/emojis/1/flag_pa.png
+++ b/app/assets/images/emoji/flag_pa.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pe.png b/app/assets/images/emoji/flag_pe.png
index 39223aa9dbb..39223aa9dbb 100644
--- a/public/-/emojis/1/flag_pe.png
+++ b/app/assets/images/emoji/flag_pe.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pf.png b/app/assets/images/emoji/flag_pf.png
index 113445f8f6e..113445f8f6e 100644
--- a/public/-/emojis/1/flag_pf.png
+++ b/app/assets/images/emoji/flag_pf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pg.png b/app/assets/images/emoji/flag_pg.png
index 825e9dcb762..825e9dcb762 100644
--- a/public/-/emojis/1/flag_pg.png
+++ b/app/assets/images/emoji/flag_pg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ph.png b/app/assets/images/emoji/flag_ph.png
index 8260e15bd2c..8260e15bd2c 100644
--- a/public/-/emojis/1/flag_ph.png
+++ b/app/assets/images/emoji/flag_ph.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pk.png b/app/assets/images/emoji/flag_pk.png
index a7b6a1c5074..a7b6a1c5074 100644
--- a/public/-/emojis/1/flag_pk.png
+++ b/app/assets/images/emoji/flag_pk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pl.png b/app/assets/images/emoji/flag_pl.png
index 19de2edec11..19de2edec11 100644
--- a/public/-/emojis/1/flag_pl.png
+++ b/app/assets/images/emoji/flag_pl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pm.png b/app/assets/images/emoji/flag_pm.png
index 2ca60554193..2ca60554193 100644
--- a/public/-/emojis/1/flag_pm.png
+++ b/app/assets/images/emoji/flag_pm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pn.png b/app/assets/images/emoji/flag_pn.png
index f2263b154bc..f2263b154bc 100644
--- a/public/-/emojis/1/flag_pn.png
+++ b/app/assets/images/emoji/flag_pn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pr.png b/app/assets/images/emoji/flag_pr.png
index d0209cddb79..d0209cddb79 100644
--- a/public/-/emojis/1/flag_pr.png
+++ b/app/assets/images/emoji/flag_pr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ps.png b/app/assets/images/emoji/flag_ps.png
index 7ccab09778b..7ccab09778b 100644
--- a/public/-/emojis/1/flag_ps.png
+++ b/app/assets/images/emoji/flag_ps.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pt.png b/app/assets/images/emoji/flag_pt.png
index cc93f27c64b..cc93f27c64b 100644
--- a/public/-/emojis/1/flag_pt.png
+++ b/app/assets/images/emoji/flag_pt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_pw.png b/app/assets/images/emoji/flag_pw.png
index 154b2f12d3c..154b2f12d3c 100644
--- a/public/-/emojis/1/flag_pw.png
+++ b/app/assets/images/emoji/flag_pw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_py.png b/app/assets/images/emoji/flag_py.png
index 662ad2f6ff1..662ad2f6ff1 100644
--- a/public/-/emojis/1/flag_py.png
+++ b/app/assets/images/emoji/flag_py.png
Binary files differ
diff --git a/public/-/emojis/1/flag_qa.png b/app/assets/images/emoji/flag_qa.png
index a01d8b05cc7..a01d8b05cc7 100644
--- a/public/-/emojis/1/flag_qa.png
+++ b/app/assets/images/emoji/flag_qa.png
Binary files differ
diff --git a/public/-/emojis/1/flag_re.png b/app/assets/images/emoji/flag_re.png
index 57f2bbe9df8..57f2bbe9df8 100644
--- a/public/-/emojis/1/flag_re.png
+++ b/app/assets/images/emoji/flag_re.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ro.png b/app/assets/images/emoji/flag_ro.png
index 3e48c447706..3e48c447706 100644
--- a/public/-/emojis/1/flag_ro.png
+++ b/app/assets/images/emoji/flag_ro.png
Binary files differ
diff --git a/public/-/emojis/1/flag_rs.png b/app/assets/images/emoji/flag_rs.png
index 9df6c9a5235..9df6c9a5235 100644
--- a/public/-/emojis/1/flag_rs.png
+++ b/app/assets/images/emoji/flag_rs.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ru.png b/app/assets/images/emoji/flag_ru.png
index e50c9db90e7..e50c9db90e7 100644
--- a/public/-/emojis/1/flag_ru.png
+++ b/app/assets/images/emoji/flag_ru.png
Binary files differ
diff --git a/public/-/emojis/1/flag_rw.png b/app/assets/images/emoji/flag_rw.png
index c238c874e1d..c238c874e1d 100644
--- a/public/-/emojis/1/flag_rw.png
+++ b/app/assets/images/emoji/flag_rw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sa.png b/app/assets/images/emoji/flag_sa.png
index 4941be7d198..4941be7d198 100644
--- a/public/-/emojis/1/flag_sa.png
+++ b/app/assets/images/emoji/flag_sa.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sb.png b/app/assets/images/emoji/flag_sb.png
index 7d8f1ac6130..7d8f1ac6130 100644
--- a/public/-/emojis/1/flag_sb.png
+++ b/app/assets/images/emoji/flag_sb.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sc.png b/app/assets/images/emoji/flag_sc.png
index 6ae4d90765e..6ae4d90765e 100644
--- a/public/-/emojis/1/flag_sc.png
+++ b/app/assets/images/emoji/flag_sc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sd.png b/app/assets/images/emoji/flag_sd.png
index 963be1b36fb..963be1b36fb 100644
--- a/public/-/emojis/1/flag_sd.png
+++ b/app/assets/images/emoji/flag_sd.png
Binary files differ
diff --git a/public/-/emojis/1/flag_se.png b/app/assets/images/emoji/flag_se.png
index fc0d0e0ce89..fc0d0e0ce89 100644
--- a/public/-/emojis/1/flag_se.png
+++ b/app/assets/images/emoji/flag_se.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sg.png b/app/assets/images/emoji/flag_sg.png
index de3c7737c42..de3c7737c42 100644
--- a/public/-/emojis/1/flag_sg.png
+++ b/app/assets/images/emoji/flag_sg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sh.png b/app/assets/images/emoji/flag_sh.png
index 40cd9e44e96..40cd9e44e96 100644
--- a/public/-/emojis/1/flag_sh.png
+++ b/app/assets/images/emoji/flag_sh.png
Binary files differ
diff --git a/public/-/emojis/1/flag_si.png b/app/assets/images/emoji/flag_si.png
index e308999dba2..e308999dba2 100644
--- a/public/-/emojis/1/flag_si.png
+++ b/app/assets/images/emoji/flag_si.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sj.png b/app/assets/images/emoji/flag_sj.png
index 5884e648228..5884e648228 100644
--- a/public/-/emojis/1/flag_sj.png
+++ b/app/assets/images/emoji/flag_sj.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sk.png b/app/assets/images/emoji/flag_sk.png
index 4259d0e1418..4259d0e1418 100644
--- a/public/-/emojis/1/flag_sk.png
+++ b/app/assets/images/emoji/flag_sk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sl.png b/app/assets/images/emoji/flag_sl.png
index d2cc68830ab..d2cc68830ab 100644
--- a/public/-/emojis/1/flag_sl.png
+++ b/app/assets/images/emoji/flag_sl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sm.png b/app/assets/images/emoji/flag_sm.png
index 03b8708754e..03b8708754e 100644
--- a/public/-/emojis/1/flag_sm.png
+++ b/app/assets/images/emoji/flag_sm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sn.png b/app/assets/images/emoji/flag_sn.png
index 5368bbe93df..5368bbe93df 100644
--- a/public/-/emojis/1/flag_sn.png
+++ b/app/assets/images/emoji/flag_sn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_so.png b/app/assets/images/emoji/flag_so.png
index 68a0597365a..68a0597365a 100644
--- a/public/-/emojis/1/flag_so.png
+++ b/app/assets/images/emoji/flag_so.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sr.png b/app/assets/images/emoji/flag_sr.png
index d3251327035..d3251327035 100644
--- a/public/-/emojis/1/flag_sr.png
+++ b/app/assets/images/emoji/flag_sr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ss.png b/app/assets/images/emoji/flag_ss.png
index 122977e798f..122977e798f 100644
--- a/public/-/emojis/1/flag_ss.png
+++ b/app/assets/images/emoji/flag_ss.png
Binary files differ
diff --git a/public/-/emojis/1/flag_st.png b/app/assets/images/emoji/flag_st.png
index f83a863d612..f83a863d612 100644
--- a/public/-/emojis/1/flag_st.png
+++ b/app/assets/images/emoji/flag_st.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sv.png b/app/assets/images/emoji/flag_sv.png
index efb83e2f253..efb83e2f253 100644
--- a/public/-/emojis/1/flag_sv.png
+++ b/app/assets/images/emoji/flag_sv.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sx.png b/app/assets/images/emoji/flag_sx.png
index 94b760fbedf..94b760fbedf 100644
--- a/public/-/emojis/1/flag_sx.png
+++ b/app/assets/images/emoji/flag_sx.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sy.png b/app/assets/images/emoji/flag_sy.png
index 09a8ee8f78c..09a8ee8f78c 100644
--- a/public/-/emojis/1/flag_sy.png
+++ b/app/assets/images/emoji/flag_sy.png
Binary files differ
diff --git a/public/-/emojis/1/flag_sz.png b/app/assets/images/emoji/flag_sz.png
index f74e82ea1fd..f74e82ea1fd 100644
--- a/public/-/emojis/1/flag_sz.png
+++ b/app/assets/images/emoji/flag_sz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ta.png b/app/assets/images/emoji/flag_ta.png
index b44283e90e2..b44283e90e2 100644
--- a/public/-/emojis/1/flag_ta.png
+++ b/app/assets/images/emoji/flag_ta.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tc.png b/app/assets/images/emoji/flag_tc.png
index 156b33d1ba6..156b33d1ba6 100644
--- a/public/-/emojis/1/flag_tc.png
+++ b/app/assets/images/emoji/flag_tc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_td.png b/app/assets/images/emoji/flag_td.png
index ebe7f592828..ebe7f592828 100644
--- a/public/-/emojis/1/flag_td.png
+++ b/app/assets/images/emoji/flag_td.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tf.png b/app/assets/images/emoji/flag_tf.png
index a1a3ad68ee2..a1a3ad68ee2 100644
--- a/public/-/emojis/1/flag_tf.png
+++ b/app/assets/images/emoji/flag_tf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tg.png b/app/assets/images/emoji/flag_tg.png
index 826b73c9ac5..826b73c9ac5 100644
--- a/public/-/emojis/1/flag_tg.png
+++ b/app/assets/images/emoji/flag_tg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_th.png b/app/assets/images/emoji/flag_th.png
index 93ff542c5a6..93ff542c5a6 100644
--- a/public/-/emojis/1/flag_th.png
+++ b/app/assets/images/emoji/flag_th.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tj.png b/app/assets/images/emoji/flag_tj.png
index 7a8a0b6190a..7a8a0b6190a 100644
--- a/public/-/emojis/1/flag_tj.png
+++ b/app/assets/images/emoji/flag_tj.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tk.png b/app/assets/images/emoji/flag_tk.png
index 2fa5a21b1bb..2fa5a21b1bb 100644
--- a/public/-/emojis/1/flag_tk.png
+++ b/app/assets/images/emoji/flag_tk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tl.png b/app/assets/images/emoji/flag_tl.png
index 5b120eccc6f..5b120eccc6f 100644
--- a/public/-/emojis/1/flag_tl.png
+++ b/app/assets/images/emoji/flag_tl.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tm.png b/app/assets/images/emoji/flag_tm.png
index c3c4f532302..c3c4f532302 100644
--- a/public/-/emojis/1/flag_tm.png
+++ b/app/assets/images/emoji/flag_tm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tn.png b/app/assets/images/emoji/flag_tn.png
index 58ef161229f..58ef161229f 100644
--- a/public/-/emojis/1/flag_tn.png
+++ b/app/assets/images/emoji/flag_tn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_to.png b/app/assets/images/emoji/flag_to.png
index 1ffa7bb9d19..1ffa7bb9d19 100644
--- a/public/-/emojis/1/flag_to.png
+++ b/app/assets/images/emoji/flag_to.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tr.png b/app/assets/images/emoji/flag_tr.png
index 325251fae88..325251fae88 100644
--- a/public/-/emojis/1/flag_tr.png
+++ b/app/assets/images/emoji/flag_tr.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tt.png b/app/assets/images/emoji/flag_tt.png
index ed3bb39a300..ed3bb39a300 100644
--- a/public/-/emojis/1/flag_tt.png
+++ b/app/assets/images/emoji/flag_tt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tv.png b/app/assets/images/emoji/flag_tv.png
index e82c65c7bb9..e82c65c7bb9 100644
--- a/public/-/emojis/1/flag_tv.png
+++ b/app/assets/images/emoji/flag_tv.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tw.png b/app/assets/images/emoji/flag_tw.png
index 3a8f00b5928..3a8f00b5928 100644
--- a/public/-/emojis/1/flag_tw.png
+++ b/app/assets/images/emoji/flag_tw.png
Binary files differ
diff --git a/public/-/emojis/1/flag_tz.png b/app/assets/images/emoji/flag_tz.png
index 2a020853d4e..2a020853d4e 100644
--- a/public/-/emojis/1/flag_tz.png
+++ b/app/assets/images/emoji/flag_tz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ua.png b/app/assets/images/emoji/flag_ua.png
index cd84d1bbd36..cd84d1bbd36 100644
--- a/public/-/emojis/1/flag_ua.png
+++ b/app/assets/images/emoji/flag_ua.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ug.png b/app/assets/images/emoji/flag_ug.png
index dc97690eb55..dc97690eb55 100644
--- a/public/-/emojis/1/flag_ug.png
+++ b/app/assets/images/emoji/flag_ug.png
Binary files differ
diff --git a/public/-/emojis/1/flag_um.png b/app/assets/images/emoji/flag_um.png
index 4a7ee3cdf13..4a7ee3cdf13 100644
--- a/public/-/emojis/1/flag_um.png
+++ b/app/assets/images/emoji/flag_um.png
Binary files differ
diff --git a/public/-/emojis/1/flag_us.png b/app/assets/images/emoji/flag_us.png
index 9f730305860..9f730305860 100644
--- a/public/-/emojis/1/flag_us.png
+++ b/app/assets/images/emoji/flag_us.png
Binary files differ
diff --git a/public/-/emojis/1/flag_uy.png b/app/assets/images/emoji/flag_uy.png
index b8002a697a6..b8002a697a6 100644
--- a/public/-/emojis/1/flag_uy.png
+++ b/app/assets/images/emoji/flag_uy.png
Binary files differ
diff --git a/public/-/emojis/1/flag_uz.png b/app/assets/images/emoji/flag_uz.png
index d56ca9bc424..d56ca9bc424 100644
--- a/public/-/emojis/1/flag_uz.png
+++ b/app/assets/images/emoji/flag_uz.png
Binary files differ
diff --git a/public/-/emojis/1/flag_va.png b/app/assets/images/emoji/flag_va.png
index ddaf5e3141b..ddaf5e3141b 100644
--- a/public/-/emojis/1/flag_va.png
+++ b/app/assets/images/emoji/flag_va.png
Binary files differ
diff --git a/public/-/emojis/1/flag_vc.png b/app/assets/images/emoji/flag_vc.png
index 43703c62a71..43703c62a71 100644
--- a/public/-/emojis/1/flag_vc.png
+++ b/app/assets/images/emoji/flag_vc.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ve.png b/app/assets/images/emoji/flag_ve.png
index 1b62796824e..1b62796824e 100644
--- a/public/-/emojis/1/flag_ve.png
+++ b/app/assets/images/emoji/flag_ve.png
Binary files differ
diff --git a/public/-/emojis/1/flag_vg.png b/app/assets/images/emoji/flag_vg.png
index 536f780f1c0..536f780f1c0 100644
--- a/public/-/emojis/1/flag_vg.png
+++ b/app/assets/images/emoji/flag_vg.png
Binary files differ
diff --git a/public/-/emojis/1/flag_vi.png b/app/assets/images/emoji/flag_vi.png
index 64102012cfe..64102012cfe 100644
--- a/public/-/emojis/1/flag_vi.png
+++ b/app/assets/images/emoji/flag_vi.png
Binary files differ
diff --git a/public/-/emojis/1/flag_vn.png b/app/assets/images/emoji/flag_vn.png
index 427036046b6..427036046b6 100644
--- a/public/-/emojis/1/flag_vn.png
+++ b/app/assets/images/emoji/flag_vn.png
Binary files differ
diff --git a/public/-/emojis/1/flag_vu.png b/app/assets/images/emoji/flag_vu.png
index 706eba44070..706eba44070 100644
--- a/public/-/emojis/1/flag_vu.png
+++ b/app/assets/images/emoji/flag_vu.png
Binary files differ
diff --git a/public/-/emojis/1/flag_wf.png b/app/assets/images/emoji/flag_wf.png
index 70c761036bd..70c761036bd 100644
--- a/public/-/emojis/1/flag_wf.png
+++ b/app/assets/images/emoji/flag_wf.png
Binary files differ
diff --git a/public/-/emojis/1/flag_white.png b/app/assets/images/emoji/flag_white.png
index 86d6e96d5e9..86d6e96d5e9 100644
--- a/public/-/emojis/1/flag_white.png
+++ b/app/assets/images/emoji/flag_white.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ws.png b/app/assets/images/emoji/flag_ws.png
index a1ea0703141..a1ea0703141 100644
--- a/public/-/emojis/1/flag_ws.png
+++ b/app/assets/images/emoji/flag_ws.png
Binary files differ
diff --git a/public/-/emojis/1/flag_xk.png b/app/assets/images/emoji/flag_xk.png
index e587a446632..e587a446632 100644
--- a/public/-/emojis/1/flag_xk.png
+++ b/app/assets/images/emoji/flag_xk.png
Binary files differ
diff --git a/public/-/emojis/1/flag_ye.png b/app/assets/images/emoji/flag_ye.png
index eadfebd5f67..eadfebd5f67 100644
--- a/public/-/emojis/1/flag_ye.png
+++ b/app/assets/images/emoji/flag_ye.png
Binary files differ
diff --git a/public/-/emojis/1/flag_yt.png b/app/assets/images/emoji/flag_yt.png
index c81fa6d886e..c81fa6d886e 100644
--- a/public/-/emojis/1/flag_yt.png
+++ b/app/assets/images/emoji/flag_yt.png
Binary files differ
diff --git a/public/-/emojis/1/flag_za.png b/app/assets/images/emoji/flag_za.png
index f397ef5072f..f397ef5072f 100644
--- a/public/-/emojis/1/flag_za.png
+++ b/app/assets/images/emoji/flag_za.png
Binary files differ
diff --git a/public/-/emojis/1/flag_zm.png b/app/assets/images/emoji/flag_zm.png
index 2494a31f662..2494a31f662 100644
--- a/public/-/emojis/1/flag_zm.png
+++ b/app/assets/images/emoji/flag_zm.png
Binary files differ
diff --git a/public/-/emojis/1/flag_zw.png b/app/assets/images/emoji/flag_zw.png
index e09b9652be6..e09b9652be6 100644
--- a/public/-/emojis/1/flag_zw.png
+++ b/app/assets/images/emoji/flag_zw.png
Binary files differ
diff --git a/public/-/emojis/1/flags.png b/app/assets/images/emoji/flags.png
index 3b451035a3a..3b451035a3a 100644
--- a/public/-/emojis/1/flags.png
+++ b/app/assets/images/emoji/flags.png
Binary files differ
diff --git a/public/-/emojis/1/flashlight.png b/app/assets/images/emoji/flashlight.png
index eee36c25067..eee36c25067 100644
--- a/public/-/emojis/1/flashlight.png
+++ b/app/assets/images/emoji/flashlight.png
Binary files differ
diff --git a/public/-/emojis/1/fleur-de-lis.png b/app/assets/images/emoji/fleur-de-lis.png
index c9250d27fa7..c9250d27fa7 100644
--- a/public/-/emojis/1/fleur-de-lis.png
+++ b/app/assets/images/emoji/fleur-de-lis.png
Binary files differ
diff --git a/public/-/emojis/1/floppy_disk.png b/app/assets/images/emoji/floppy_disk.png
index 072a76d3c13..072a76d3c13 100644
--- a/public/-/emojis/1/floppy_disk.png
+++ b/app/assets/images/emoji/floppy_disk.png
Binary files differ
diff --git a/public/-/emojis/1/flower_playing_cards.png b/app/assets/images/emoji/flower_playing_cards.png
index 6766b044d95..6766b044d95 100644
--- a/public/-/emojis/1/flower_playing_cards.png
+++ b/app/assets/images/emoji/flower_playing_cards.png
Binary files differ
diff --git a/public/-/emojis/1/flushed.png b/app/assets/images/emoji/flushed.png
index 829220bc470..829220bc470 100644
--- a/public/-/emojis/1/flushed.png
+++ b/app/assets/images/emoji/flushed.png
Binary files differ
diff --git a/public/-/emojis/1/fog.png b/app/assets/images/emoji/fog.png
index 4e73c2de272..4e73c2de272 100644
--- a/public/-/emojis/1/fog.png
+++ b/app/assets/images/emoji/fog.png
Binary files differ
diff --git a/public/-/emojis/1/foggy.png b/app/assets/images/emoji/foggy.png
index 57702d8d3ac..57702d8d3ac 100644
--- a/public/-/emojis/1/foggy.png
+++ b/app/assets/images/emoji/foggy.png
Binary files differ
diff --git a/public/-/emojis/1/football.png b/app/assets/images/emoji/football.png
index 10366f41fce..10366f41fce 100644
--- a/public/-/emojis/1/football.png
+++ b/app/assets/images/emoji/football.png
Binary files differ
diff --git a/public/-/emojis/1/footprints.png b/app/assets/images/emoji/footprints.png
index b2673c5a1a8..b2673c5a1a8 100644
--- a/public/-/emojis/1/footprints.png
+++ b/app/assets/images/emoji/footprints.png
Binary files differ
diff --git a/public/-/emojis/1/fork_and_knife.png b/app/assets/images/emoji/fork_and_knife.png
index 09f1feaea1c..09f1feaea1c 100644
--- a/public/-/emojis/1/fork_and_knife.png
+++ b/app/assets/images/emoji/fork_and_knife.png
Binary files differ
diff --git a/public/-/emojis/1/fork_knife_plate.png b/app/assets/images/emoji/fork_knife_plate.png
index 7411755f708..7411755f708 100644
--- a/public/-/emojis/1/fork_knife_plate.png
+++ b/app/assets/images/emoji/fork_knife_plate.png
Binary files differ
diff --git a/public/-/emojis/1/fountain.png b/app/assets/images/emoji/fountain.png
index 293f5d91c0f..293f5d91c0f 100644
--- a/public/-/emojis/1/fountain.png
+++ b/app/assets/images/emoji/fountain.png
Binary files differ
diff --git a/public/-/emojis/1/four.png b/app/assets/images/emoji/four.png
index b0e914aac45..b0e914aac45 100644
--- a/public/-/emojis/1/four.png
+++ b/app/assets/images/emoji/four.png
Binary files differ
diff --git a/public/-/emojis/1/four_leaf_clover.png b/app/assets/images/emoji/four_leaf_clover.png
index fdedfcc2b4e..fdedfcc2b4e 100644
--- a/public/-/emojis/1/four_leaf_clover.png
+++ b/app/assets/images/emoji/four_leaf_clover.png
Binary files differ
diff --git a/public/-/emojis/1/fox.png b/app/assets/images/emoji/fox.png
index 1ab339bf054..1ab339bf054 100644
--- a/public/-/emojis/1/fox.png
+++ b/app/assets/images/emoji/fox.png
Binary files differ
diff --git a/public/-/emojis/1/frame_photo.png b/app/assets/images/emoji/frame_photo.png
index 9fe84607bfd..9fe84607bfd 100644
--- a/public/-/emojis/1/frame_photo.png
+++ b/app/assets/images/emoji/frame_photo.png
Binary files differ
diff --git a/public/-/emojis/1/free.png b/app/assets/images/emoji/free.png
index b71956eb48a..b71956eb48a 100644
--- a/public/-/emojis/1/free.png
+++ b/app/assets/images/emoji/free.png
Binary files differ
diff --git a/public/-/emojis/1/french_bread.png b/app/assets/images/emoji/french_bread.png
index 4c2c5639822..4c2c5639822 100644
--- a/public/-/emojis/1/french_bread.png
+++ b/app/assets/images/emoji/french_bread.png
Binary files differ
diff --git a/public/-/emojis/1/fried_shrimp.png b/app/assets/images/emoji/fried_shrimp.png
index 752ba7f1398..752ba7f1398 100644
--- a/public/-/emojis/1/fried_shrimp.png
+++ b/app/assets/images/emoji/fried_shrimp.png
Binary files differ
diff --git a/public/-/emojis/1/fries.png b/app/assets/images/emoji/fries.png
index 4e2a4caacef..4e2a4caacef 100644
--- a/public/-/emojis/1/fries.png
+++ b/app/assets/images/emoji/fries.png
Binary files differ
diff --git a/public/-/emojis/1/frog.png b/app/assets/images/emoji/frog.png
index 8825d1ad577..8825d1ad577 100644
--- a/public/-/emojis/1/frog.png
+++ b/app/assets/images/emoji/frog.png
Binary files differ
diff --git a/public/-/emojis/1/frowning.png b/app/assets/images/emoji/frowning.png
index 43ab6b0a1c1..43ab6b0a1c1 100644
--- a/public/-/emojis/1/frowning.png
+++ b/app/assets/images/emoji/frowning.png
Binary files differ
diff --git a/public/-/emojis/1/frowning2.png b/app/assets/images/emoji/frowning2.png
index 6ae71f233b9..6ae71f233b9 100644
--- a/public/-/emojis/1/frowning2.png
+++ b/app/assets/images/emoji/frowning2.png
Binary files differ
diff --git a/public/-/emojis/1/fuelpump.png b/app/assets/images/emoji/fuelpump.png
index 05b18794474..05b18794474 100644
--- a/public/-/emojis/1/fuelpump.png
+++ b/app/assets/images/emoji/fuelpump.png
Binary files differ
diff --git a/public/-/emojis/1/full_moon.png b/app/assets/images/emoji/full_moon.png
index c9a2d6aa7c9..c9a2d6aa7c9 100644
--- a/public/-/emojis/1/full_moon.png
+++ b/app/assets/images/emoji/full_moon.png
Binary files differ
diff --git a/public/-/emojis/1/full_moon_with_face.png b/app/assets/images/emoji/full_moon_with_face.png
index a5c25bbaf64..a5c25bbaf64 100644
--- a/public/-/emojis/1/full_moon_with_face.png
+++ b/app/assets/images/emoji/full_moon_with_face.png
Binary files differ
diff --git a/public/-/emojis/1/game_die.png b/app/assets/images/emoji/game_die.png
index ad3626fe5e5..ad3626fe5e5 100644
--- a/public/-/emojis/1/game_die.png
+++ b/app/assets/images/emoji/game_die.png
Binary files differ
diff --git a/public/-/emojis/1/gay_pride_flag.png b/app/assets/images/emoji/gay_pride_flag.png
index 1bec5f2ffd7..1bec5f2ffd7 100644
--- a/public/-/emojis/1/gay_pride_flag.png
+++ b/app/assets/images/emoji/gay_pride_flag.png
Binary files differ
diff --git a/public/-/emojis/1/gear.png b/app/assets/images/emoji/gear.png
index 2a1cc2c0ff4..2a1cc2c0ff4 100644
--- a/public/-/emojis/1/gear.png
+++ b/app/assets/images/emoji/gear.png
Binary files differ
diff --git a/public/-/emojis/1/gem.png b/app/assets/images/emoji/gem.png
index db122d26a19..db122d26a19 100644
--- a/public/-/emojis/1/gem.png
+++ b/app/assets/images/emoji/gem.png
Binary files differ
diff --git a/public/-/emojis/1/gemini.png b/app/assets/images/emoji/gemini.png
index 1a09698cf00..1a09698cf00 100644
--- a/public/-/emojis/1/gemini.png
+++ b/app/assets/images/emoji/gemini.png
Binary files differ
diff --git a/public/-/emojis/1/ghost.png b/app/assets/images/emoji/ghost.png
index 5650bc0ed18..5650bc0ed18 100644
--- a/public/-/emojis/1/ghost.png
+++ b/app/assets/images/emoji/ghost.png
Binary files differ
diff --git a/public/-/emojis/1/gift.png b/app/assets/images/emoji/gift.png
index 844e2164560..844e2164560 100644
--- a/public/-/emojis/1/gift.png
+++ b/app/assets/images/emoji/gift.png
Binary files differ
diff --git a/public/-/emojis/1/gift_heart.png b/app/assets/images/emoji/gift_heart.png
index 902ceafe4d1..902ceafe4d1 100644
--- a/public/-/emojis/1/gift_heart.png
+++ b/app/assets/images/emoji/gift_heart.png
Binary files differ
diff --git a/public/-/emojis/1/girl.png b/app/assets/images/emoji/girl.png
index dc1d4d08b39..dc1d4d08b39 100644
--- a/public/-/emojis/1/girl.png
+++ b/app/assets/images/emoji/girl.png
Binary files differ
diff --git a/public/-/emojis/1/girl_tone1.png b/app/assets/images/emoji/girl_tone1.png
index bb667e88651..bb667e88651 100644
--- a/public/-/emojis/1/girl_tone1.png
+++ b/app/assets/images/emoji/girl_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/girl_tone2.png b/app/assets/images/emoji/girl_tone2.png
index a59ed4a3f0d..a59ed4a3f0d 100644
--- a/public/-/emojis/1/girl_tone2.png
+++ b/app/assets/images/emoji/girl_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/girl_tone3.png b/app/assets/images/emoji/girl_tone3.png
index 517e7f2a7b0..517e7f2a7b0 100644
--- a/public/-/emojis/1/girl_tone3.png
+++ b/app/assets/images/emoji/girl_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/girl_tone4.png b/app/assets/images/emoji/girl_tone4.png
index 542d96c8487..542d96c8487 100644
--- a/public/-/emojis/1/girl_tone4.png
+++ b/app/assets/images/emoji/girl_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/girl_tone5.png b/app/assets/images/emoji/girl_tone5.png
index 66b7c28c2df..66b7c28c2df 100644
--- a/public/-/emojis/1/girl_tone5.png
+++ b/app/assets/images/emoji/girl_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/globe_with_meridians.png b/app/assets/images/emoji/globe_with_meridians.png
index 82450c1a4ba..82450c1a4ba 100644
--- a/public/-/emojis/1/globe_with_meridians.png
+++ b/app/assets/images/emoji/globe_with_meridians.png
Binary files differ
diff --git a/public/-/emojis/1/goal.png b/app/assets/images/emoji/goal.png
index df3a53da0fb..df3a53da0fb 100644
--- a/public/-/emojis/1/goal.png
+++ b/app/assets/images/emoji/goal.png
Binary files differ
diff --git a/public/-/emojis/1/goat.png b/app/assets/images/emoji/goat.png
index f9d9e38a128..f9d9e38a128 100644
--- a/public/-/emojis/1/goat.png
+++ b/app/assets/images/emoji/goat.png
Binary files differ
diff --git a/public/-/emojis/1/golf.png b/app/assets/images/emoji/golf.png
index f65a21d8a46..f65a21d8a46 100644
--- a/public/-/emojis/1/golf.png
+++ b/app/assets/images/emoji/golf.png
Binary files differ
diff --git a/public/-/emojis/1/golfer.png b/app/assets/images/emoji/golfer.png
index 39c552de86d..39c552de86d 100644
--- a/public/-/emojis/1/golfer.png
+++ b/app/assets/images/emoji/golfer.png
Binary files differ
diff --git a/public/-/emojis/1/gorilla.png b/app/assets/images/emoji/gorilla.png
index acc51e13622..acc51e13622 100644
--- a/public/-/emojis/1/gorilla.png
+++ b/app/assets/images/emoji/gorilla.png
Binary files differ
diff --git a/public/-/emojis/1/grapes.png b/app/assets/images/emoji/grapes.png
index 30d22218896..30d22218896 100644
--- a/public/-/emojis/1/grapes.png
+++ b/app/assets/images/emoji/grapes.png
Binary files differ
diff --git a/public/-/emojis/1/green_apple.png b/app/assets/images/emoji/green_apple.png
index 5fd51bd3915..5fd51bd3915 100644
--- a/public/-/emojis/1/green_apple.png
+++ b/app/assets/images/emoji/green_apple.png
Binary files differ
diff --git a/public/-/emojis/1/green_book.png b/app/assets/images/emoji/green_book.png
index e5e411cf3b5..e5e411cf3b5 100644
--- a/public/-/emojis/1/green_book.png
+++ b/app/assets/images/emoji/green_book.png
Binary files differ
diff --git a/public/-/emojis/1/green_heart.png b/app/assets/images/emoji/green_heart.png
index c52d60a58be..c52d60a58be 100644
--- a/public/-/emojis/1/green_heart.png
+++ b/app/assets/images/emoji/green_heart.png
Binary files differ
diff --git a/public/-/emojis/1/grey_exclamation.png b/app/assets/images/emoji/grey_exclamation.png
index 9b64da8bf7f..9b64da8bf7f 100644
--- a/public/-/emojis/1/grey_exclamation.png
+++ b/app/assets/images/emoji/grey_exclamation.png
Binary files differ
diff --git a/public/-/emojis/1/grey_question.png b/app/assets/images/emoji/grey_question.png
index 6e7824c75f6..6e7824c75f6 100644
--- a/public/-/emojis/1/grey_question.png
+++ b/app/assets/images/emoji/grey_question.png
Binary files differ
diff --git a/public/-/emojis/1/grimacing.png b/app/assets/images/emoji/grimacing.png
index 871b2f071c9..871b2f071c9 100644
--- a/public/-/emojis/1/grimacing.png
+++ b/app/assets/images/emoji/grimacing.png
Binary files differ
diff --git a/public/-/emojis/1/grin.png b/app/assets/images/emoji/grin.png
index 418d94c811b..418d94c811b 100644
--- a/public/-/emojis/1/grin.png
+++ b/app/assets/images/emoji/grin.png
Binary files differ
diff --git a/public/-/emojis/1/grinning.png b/app/assets/images/emoji/grinning.png
index 3e8e0dab78c..3e8e0dab78c 100644
--- a/public/-/emojis/1/grinning.png
+++ b/app/assets/images/emoji/grinning.png
Binary files differ
diff --git a/public/-/emojis/1/guardsman.png b/app/assets/images/emoji/guardsman.png
index 8d7ab3c473c..8d7ab3c473c 100644
--- a/public/-/emojis/1/guardsman.png
+++ b/app/assets/images/emoji/guardsman.png
Binary files differ
diff --git a/public/-/emojis/1/guardsman_tone1.png b/app/assets/images/emoji/guardsman_tone1.png
index cea9ba27468..cea9ba27468 100644
--- a/public/-/emojis/1/guardsman_tone1.png
+++ b/app/assets/images/emoji/guardsman_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/guardsman_tone2.png b/app/assets/images/emoji/guardsman_tone2.png
index 037464e4028..037464e4028 100644
--- a/public/-/emojis/1/guardsman_tone2.png
+++ b/app/assets/images/emoji/guardsman_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/guardsman_tone3.png b/app/assets/images/emoji/guardsman_tone3.png
index 0f6726fbe87..0f6726fbe87 100644
--- a/public/-/emojis/1/guardsman_tone3.png
+++ b/app/assets/images/emoji/guardsman_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/guardsman_tone4.png b/app/assets/images/emoji/guardsman_tone4.png
index 85fcf9a3b97..85fcf9a3b97 100644
--- a/public/-/emojis/1/guardsman_tone4.png
+++ b/app/assets/images/emoji/guardsman_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/guardsman_tone5.png b/app/assets/images/emoji/guardsman_tone5.png
index e5f9ca7d5a2..e5f9ca7d5a2 100644
--- a/public/-/emojis/1/guardsman_tone5.png
+++ b/app/assets/images/emoji/guardsman_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/guitar.png b/app/assets/images/emoji/guitar.png
index 43d752f1e3d..43d752f1e3d 100644
--- a/public/-/emojis/1/guitar.png
+++ b/app/assets/images/emoji/guitar.png
Binary files differ
diff --git a/public/-/emojis/1/gun.png b/app/assets/images/emoji/gun.png
index 89c5c244c7b..89c5c244c7b 100644
--- a/public/-/emojis/1/gun.png
+++ b/app/assets/images/emoji/gun.png
Binary files differ
diff --git a/public/-/emojis/1/haircut.png b/app/assets/images/emoji/haircut.png
index 91266b12930..91266b12930 100644
--- a/public/-/emojis/1/haircut.png
+++ b/app/assets/images/emoji/haircut.png
Binary files differ
diff --git a/public/-/emojis/1/haircut_tone1.png b/app/assets/images/emoji/haircut_tone1.png
index c743b74abeb..c743b74abeb 100644
--- a/public/-/emojis/1/haircut_tone1.png
+++ b/app/assets/images/emoji/haircut_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/haircut_tone2.png b/app/assets/images/emoji/haircut_tone2.png
index f144f8e55ce..f144f8e55ce 100644
--- a/public/-/emojis/1/haircut_tone2.png
+++ b/app/assets/images/emoji/haircut_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/haircut_tone3.png b/app/assets/images/emoji/haircut_tone3.png
index d5ad19563ac..d5ad19563ac 100644
--- a/public/-/emojis/1/haircut_tone3.png
+++ b/app/assets/images/emoji/haircut_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/haircut_tone4.png b/app/assets/images/emoji/haircut_tone4.png
index 244fd3af008..244fd3af008 100644
--- a/public/-/emojis/1/haircut_tone4.png
+++ b/app/assets/images/emoji/haircut_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/haircut_tone5.png b/app/assets/images/emoji/haircut_tone5.png
index 20a94a88623..20a94a88623 100644
--- a/public/-/emojis/1/haircut_tone5.png
+++ b/app/assets/images/emoji/haircut_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/hamburger.png b/app/assets/images/emoji/hamburger.png
index 3573b28a1fd..3573b28a1fd 100644
--- a/public/-/emojis/1/hamburger.png
+++ b/app/assets/images/emoji/hamburger.png
Binary files differ
diff --git a/public/-/emojis/1/hammer.png b/app/assets/images/emoji/hammer.png
index 00736cce47d..00736cce47d 100644
--- a/public/-/emojis/1/hammer.png
+++ b/app/assets/images/emoji/hammer.png
Binary files differ
diff --git a/public/-/emojis/1/hammer_pick.png b/app/assets/images/emoji/hammer_pick.png
index 3bee30ec588..3bee30ec588 100644
--- a/public/-/emojis/1/hammer_pick.png
+++ b/app/assets/images/emoji/hammer_pick.png
Binary files differ
diff --git a/public/-/emojis/1/hamster.png b/app/assets/images/emoji/hamster.png
index 9a04388e4e7..9a04388e4e7 100644
--- a/public/-/emojis/1/hamster.png
+++ b/app/assets/images/emoji/hamster.png
Binary files differ
diff --git a/public/-/emojis/1/hand_splayed.png b/app/assets/images/emoji/hand_splayed.png
index fb5ae8ebb5a..fb5ae8ebb5a 100644
--- a/public/-/emojis/1/hand_splayed.png
+++ b/app/assets/images/emoji/hand_splayed.png
Binary files differ
diff --git a/public/-/emojis/1/hand_splayed_tone1.png b/app/assets/images/emoji/hand_splayed_tone1.png
index a7888e6bd23..a7888e6bd23 100644
--- a/public/-/emojis/1/hand_splayed_tone1.png
+++ b/app/assets/images/emoji/hand_splayed_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/hand_splayed_tone2.png b/app/assets/images/emoji/hand_splayed_tone2.png
index cc10fbc272d..cc10fbc272d 100644
--- a/public/-/emojis/1/hand_splayed_tone2.png
+++ b/app/assets/images/emoji/hand_splayed_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/hand_splayed_tone3.png b/app/assets/images/emoji/hand_splayed_tone3.png
index 707236ae8a4..707236ae8a4 100644
--- a/public/-/emojis/1/hand_splayed_tone3.png
+++ b/app/assets/images/emoji/hand_splayed_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/hand_splayed_tone4.png b/app/assets/images/emoji/hand_splayed_tone4.png
index 1430df9c61f..1430df9c61f 100644
--- a/public/-/emojis/1/hand_splayed_tone4.png
+++ b/app/assets/images/emoji/hand_splayed_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/hand_splayed_tone5.png b/app/assets/images/emoji/hand_splayed_tone5.png
index 80bec971b6b..80bec971b6b 100644
--- a/public/-/emojis/1/hand_splayed_tone5.png
+++ b/app/assets/images/emoji/hand_splayed_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/handbag.png b/app/assets/images/emoji/handbag.png
index cbf75c5d25e..cbf75c5d25e 100644
--- a/public/-/emojis/1/handbag.png
+++ b/app/assets/images/emoji/handbag.png
Binary files differ
diff --git a/public/-/emojis/1/handball.png b/app/assets/images/emoji/handball.png
index 1152f1344c7..1152f1344c7 100644
--- a/public/-/emojis/1/handball.png
+++ b/app/assets/images/emoji/handball.png
Binary files differ
diff --git a/public/-/emojis/1/handball_tone1.png b/app/assets/images/emoji/handball_tone1.png
index c26cac2df98..c26cac2df98 100644
--- a/public/-/emojis/1/handball_tone1.png
+++ b/app/assets/images/emoji/handball_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/handball_tone2.png b/app/assets/images/emoji/handball_tone2.png
index 7baaf95a9a2..7baaf95a9a2 100644
--- a/public/-/emojis/1/handball_tone2.png
+++ b/app/assets/images/emoji/handball_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/handball_tone3.png b/app/assets/images/emoji/handball_tone3.png
index 0e3a37c3d40..0e3a37c3d40 100644
--- a/public/-/emojis/1/handball_tone3.png
+++ b/app/assets/images/emoji/handball_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/handball_tone4.png b/app/assets/images/emoji/handball_tone4.png
index e1233f38266..e1233f38266 100644
--- a/public/-/emojis/1/handball_tone4.png
+++ b/app/assets/images/emoji/handball_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/handball_tone5.png b/app/assets/images/emoji/handball_tone5.png
index 6b1eb9b64b0..6b1eb9b64b0 100644
--- a/public/-/emojis/1/handball_tone5.png
+++ b/app/assets/images/emoji/handball_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/handshake.png b/app/assets/images/emoji/handshake.png
index c5d35fd8138..c5d35fd8138 100644
--- a/public/-/emojis/1/handshake.png
+++ b/app/assets/images/emoji/handshake.png
Binary files differ
diff --git a/public/-/emojis/1/handshake_tone1.png b/app/assets/images/emoji/handshake_tone1.png
index 8f8fbb9bdca..8f8fbb9bdca 100644
--- a/public/-/emojis/1/handshake_tone1.png
+++ b/app/assets/images/emoji/handshake_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/handshake_tone2.png b/app/assets/images/emoji/handshake_tone2.png
index 336a77a6d78..336a77a6d78 100644
--- a/public/-/emojis/1/handshake_tone2.png
+++ b/app/assets/images/emoji/handshake_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/handshake_tone3.png b/app/assets/images/emoji/handshake_tone3.png
index 95f62d4fecd..95f62d4fecd 100644
--- a/public/-/emojis/1/handshake_tone3.png
+++ b/app/assets/images/emoji/handshake_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/handshake_tone4.png b/app/assets/images/emoji/handshake_tone4.png
index 2b0a6433886..2b0a6433886 100644
--- a/public/-/emojis/1/handshake_tone4.png
+++ b/app/assets/images/emoji/handshake_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/handshake_tone5.png b/app/assets/images/emoji/handshake_tone5.png
index 40189ee68e4..40189ee68e4 100644
--- a/public/-/emojis/1/handshake_tone5.png
+++ b/app/assets/images/emoji/handshake_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/hash.png b/app/assets/images/emoji/hash.png
index 6e26f0070b0..6e26f0070b0 100644
--- a/public/-/emojis/1/hash.png
+++ b/app/assets/images/emoji/hash.png
Binary files differ
diff --git a/public/-/emojis/1/hatched_chick.png b/app/assets/images/emoji/hatched_chick.png
index 31dfb511e0e..31dfb511e0e 100644
--- a/public/-/emojis/1/hatched_chick.png
+++ b/app/assets/images/emoji/hatched_chick.png
Binary files differ
diff --git a/public/-/emojis/1/hatching_chick.png b/app/assets/images/emoji/hatching_chick.png
index c5b0e8f3bcc..c5b0e8f3bcc 100644
--- a/public/-/emojis/1/hatching_chick.png
+++ b/app/assets/images/emoji/hatching_chick.png
Binary files differ
diff --git a/public/-/emojis/1/head_bandage.png b/app/assets/images/emoji/head_bandage.png
index 0be723085e0..0be723085e0 100644
--- a/public/-/emojis/1/head_bandage.png
+++ b/app/assets/images/emoji/head_bandage.png
Binary files differ
diff --git a/public/-/emojis/1/headphones.png b/app/assets/images/emoji/headphones.png
index e9fd34041d8..e9fd34041d8 100644
--- a/public/-/emojis/1/headphones.png
+++ b/app/assets/images/emoji/headphones.png
Binary files differ
diff --git a/public/-/emojis/1/hear_no_evil.png b/app/assets/images/emoji/hear_no_evil.png
index 74b6be0c6c5..74b6be0c6c5 100644
--- a/public/-/emojis/1/hear_no_evil.png
+++ b/app/assets/images/emoji/hear_no_evil.png
Binary files differ
diff --git a/public/-/emojis/1/heart.png b/app/assets/images/emoji/heart.png
index 638cb72dc4e..638cb72dc4e 100644
--- a/public/-/emojis/1/heart.png
+++ b/app/assets/images/emoji/heart.png
Binary files differ
diff --git a/public/-/emojis/1/heart_decoration.png b/app/assets/images/emoji/heart_decoration.png
index 5443f60bc63..5443f60bc63 100644
--- a/public/-/emojis/1/heart_decoration.png
+++ b/app/assets/images/emoji/heart_decoration.png
Binary files differ
diff --git a/public/-/emojis/1/heart_exclamation.png b/app/assets/images/emoji/heart_exclamation.png
index 91b520be40b..91b520be40b 100644
--- a/public/-/emojis/1/heart_exclamation.png
+++ b/app/assets/images/emoji/heart_exclamation.png
Binary files differ
diff --git a/public/-/emojis/1/heart_eyes.png b/app/assets/images/emoji/heart_eyes.png
index 73fbee29d4e..73fbee29d4e 100644
--- a/public/-/emojis/1/heart_eyes.png
+++ b/app/assets/images/emoji/heart_eyes.png
Binary files differ
diff --git a/public/-/emojis/1/heart_eyes_cat.png b/app/assets/images/emoji/heart_eyes_cat.png
index bc5a833f9a1..bc5a833f9a1 100644
--- a/public/-/emojis/1/heart_eyes_cat.png
+++ b/app/assets/images/emoji/heart_eyes_cat.png
Binary files differ
diff --git a/public/-/emojis/1/heartbeat.png b/app/assets/images/emoji/heartbeat.png
index 0bcf2d1d567..0bcf2d1d567 100644
--- a/public/-/emojis/1/heartbeat.png
+++ b/app/assets/images/emoji/heartbeat.png
Binary files differ
diff --git a/public/-/emojis/1/heartpulse.png b/app/assets/images/emoji/heartpulse.png
index d6e694e972f..d6e694e972f 100644
--- a/public/-/emojis/1/heartpulse.png
+++ b/app/assets/images/emoji/heartpulse.png
Binary files differ
diff --git a/public/-/emojis/1/hearts.png b/app/assets/images/emoji/hearts.png
index 393c3ed5267..393c3ed5267 100644
--- a/public/-/emojis/1/hearts.png
+++ b/app/assets/images/emoji/hearts.png
Binary files differ
diff --git a/public/-/emojis/1/heavy_check_mark.png b/app/assets/images/emoji/heavy_check_mark.png
index 03bd695377e..03bd695377e 100644
--- a/public/-/emojis/1/heavy_check_mark.png
+++ b/app/assets/images/emoji/heavy_check_mark.png
Binary files differ
diff --git a/public/-/emojis/1/heavy_division_sign.png b/app/assets/images/emoji/heavy_division_sign.png
index df32ab21bea..df32ab21bea 100644
--- a/public/-/emojis/1/heavy_division_sign.png
+++ b/app/assets/images/emoji/heavy_division_sign.png
Binary files differ
diff --git a/public/-/emojis/1/heavy_dollar_sign.png b/app/assets/images/emoji/heavy_dollar_sign.png
index ef2c2e20590..ef2c2e20590 100644
--- a/public/-/emojis/1/heavy_dollar_sign.png
+++ b/app/assets/images/emoji/heavy_dollar_sign.png
Binary files differ
diff --git a/public/-/emojis/1/heavy_minus_sign.png b/app/assets/images/emoji/heavy_minus_sign.png
index 054211caf12..054211caf12 100644
--- a/public/-/emojis/1/heavy_minus_sign.png
+++ b/app/assets/images/emoji/heavy_minus_sign.png
Binary files differ
diff --git a/public/-/emojis/1/heavy_multiplication_x.png b/app/assets/images/emoji/heavy_multiplication_x.png
index e47cc1b685d..e47cc1b685d 100644
--- a/public/-/emojis/1/heavy_multiplication_x.png
+++ b/app/assets/images/emoji/heavy_multiplication_x.png
Binary files differ
diff --git a/public/-/emojis/1/heavy_plus_sign.png b/app/assets/images/emoji/heavy_plus_sign.png
index 40799798aaf..40799798aaf 100644
--- a/public/-/emojis/1/heavy_plus_sign.png
+++ b/app/assets/images/emoji/heavy_plus_sign.png
Binary files differ
diff --git a/public/-/emojis/1/helicopter.png b/app/assets/images/emoji/helicopter.png
index 7ec5f39a51a..7ec5f39a51a 100644
--- a/public/-/emojis/1/helicopter.png
+++ b/app/assets/images/emoji/helicopter.png
Binary files differ
diff --git a/public/-/emojis/1/helmet_with_cross.png b/app/assets/images/emoji/helmet_with_cross.png
index 7140a676038..7140a676038 100644
--- a/public/-/emojis/1/helmet_with_cross.png
+++ b/app/assets/images/emoji/helmet_with_cross.png
Binary files differ
diff --git a/public/-/emojis/1/herb.png b/app/assets/images/emoji/herb.png
index d984d1562bb..d984d1562bb 100644
--- a/public/-/emojis/1/herb.png
+++ b/app/assets/images/emoji/herb.png
Binary files differ
diff --git a/public/-/emojis/1/hibiscus.png b/app/assets/images/emoji/hibiscus.png
index 39dd3524233..39dd3524233 100644
--- a/public/-/emojis/1/hibiscus.png
+++ b/app/assets/images/emoji/hibiscus.png
Binary files differ
diff --git a/public/-/emojis/1/high_brightness.png b/app/assets/images/emoji/high_brightness.png
index c41f2d5fd50..c41f2d5fd50 100644
--- a/public/-/emojis/1/high_brightness.png
+++ b/app/assets/images/emoji/high_brightness.png
Binary files differ
diff --git a/public/-/emojis/1/high_heel.png b/app/assets/images/emoji/high_heel.png
index b331cbccc9d..b331cbccc9d 100644
--- a/public/-/emojis/1/high_heel.png
+++ b/app/assets/images/emoji/high_heel.png
Binary files differ
diff --git a/public/-/emojis/1/hockey.png b/app/assets/images/emoji/hockey.png
index be94e9cbf73..be94e9cbf73 100644
--- a/public/-/emojis/1/hockey.png
+++ b/app/assets/images/emoji/hockey.png
Binary files differ
diff --git a/public/-/emojis/1/hole.png b/app/assets/images/emoji/hole.png
index 517d2ae0deb..517d2ae0deb 100644
--- a/public/-/emojis/1/hole.png
+++ b/app/assets/images/emoji/hole.png
Binary files differ
diff --git a/public/-/emojis/1/homes.png b/app/assets/images/emoji/homes.png
index 6ab4a2a2651..6ab4a2a2651 100644
--- a/public/-/emojis/1/homes.png
+++ b/app/assets/images/emoji/homes.png
Binary files differ
diff --git a/public/-/emojis/1/honey_pot.png b/app/assets/images/emoji/honey_pot.png
index 9d8f592955e..9d8f592955e 100644
--- a/public/-/emojis/1/honey_pot.png
+++ b/app/assets/images/emoji/honey_pot.png
Binary files differ
diff --git a/public/-/emojis/1/horse.png b/app/assets/images/emoji/horse.png
index 7cb1172f4e4..7cb1172f4e4 100644
--- a/public/-/emojis/1/horse.png
+++ b/app/assets/images/emoji/horse.png
Binary files differ
diff --git a/public/-/emojis/1/horse_racing.png b/app/assets/images/emoji/horse_racing.png
index addf9edac56..addf9edac56 100644
--- a/public/-/emojis/1/horse_racing.png
+++ b/app/assets/images/emoji/horse_racing.png
Binary files differ
diff --git a/public/-/emojis/1/horse_racing_tone1.png b/app/assets/images/emoji/horse_racing_tone1.png
index e9bf4092e98..e9bf4092e98 100644
--- a/public/-/emojis/1/horse_racing_tone1.png
+++ b/app/assets/images/emoji/horse_racing_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/horse_racing_tone2.png b/app/assets/images/emoji/horse_racing_tone2.png
index 031bbc3d867..031bbc3d867 100644
--- a/public/-/emojis/1/horse_racing_tone2.png
+++ b/app/assets/images/emoji/horse_racing_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/horse_racing_tone3.png b/app/assets/images/emoji/horse_racing_tone3.png
index b40ef891f9b..b40ef891f9b 100644
--- a/public/-/emojis/1/horse_racing_tone3.png
+++ b/app/assets/images/emoji/horse_racing_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/horse_racing_tone4.png b/app/assets/images/emoji/horse_racing_tone4.png
index e286cb85065..e286cb85065 100644
--- a/public/-/emojis/1/horse_racing_tone4.png
+++ b/app/assets/images/emoji/horse_racing_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/horse_racing_tone5.png b/app/assets/images/emoji/horse_racing_tone5.png
index 453c51c6007..453c51c6007 100644
--- a/public/-/emojis/1/horse_racing_tone5.png
+++ b/app/assets/images/emoji/horse_racing_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/hospital.png b/app/assets/images/emoji/hospital.png
index 1cbce4ae767..1cbce4ae767 100644
--- a/public/-/emojis/1/hospital.png
+++ b/app/assets/images/emoji/hospital.png
Binary files differ
diff --git a/public/-/emojis/1/hot_pepper.png b/app/assets/images/emoji/hot_pepper.png
index 266675bd577..266675bd577 100644
--- a/public/-/emojis/1/hot_pepper.png
+++ b/app/assets/images/emoji/hot_pepper.png
Binary files differ
diff --git a/public/-/emojis/1/hotdog.png b/app/assets/images/emoji/hotdog.png
index 3c3354d94cb..3c3354d94cb 100644
--- a/public/-/emojis/1/hotdog.png
+++ b/app/assets/images/emoji/hotdog.png
Binary files differ
diff --git a/public/-/emojis/1/hotel.png b/app/assets/images/emoji/hotel.png
index ea8f4c4979a..ea8f4c4979a 100644
--- a/public/-/emojis/1/hotel.png
+++ b/app/assets/images/emoji/hotel.png
Binary files differ
diff --git a/public/-/emojis/1/hotsprings.png b/app/assets/images/emoji/hotsprings.png
index 3d9df2d9475..3d9df2d9475 100644
--- a/public/-/emojis/1/hotsprings.png
+++ b/app/assets/images/emoji/hotsprings.png
Binary files differ
diff --git a/public/-/emojis/1/hourglass.png b/app/assets/images/emoji/hourglass.png
index a5db2d1d3f4..a5db2d1d3f4 100644
--- a/public/-/emojis/1/hourglass.png
+++ b/app/assets/images/emoji/hourglass.png
Binary files differ
diff --git a/public/-/emojis/1/hourglass_flowing_sand.png b/app/assets/images/emoji/hourglass_flowing_sand.png
index b93b15ed6d8..b93b15ed6d8 100644
--- a/public/-/emojis/1/hourglass_flowing_sand.png
+++ b/app/assets/images/emoji/hourglass_flowing_sand.png
Binary files differ
diff --git a/public/-/emojis/1/house.png b/app/assets/images/emoji/house.png
index 01c98a0ba92..01c98a0ba92 100644
--- a/public/-/emojis/1/house.png
+++ b/app/assets/images/emoji/house.png
Binary files differ
diff --git a/public/-/emojis/1/house_abandoned.png b/app/assets/images/emoji/house_abandoned.png
index c55e81de990..c55e81de990 100644
--- a/public/-/emojis/1/house_abandoned.png
+++ b/app/assets/images/emoji/house_abandoned.png
Binary files differ
diff --git a/public/-/emojis/1/house_with_garden.png b/app/assets/images/emoji/house_with_garden.png
index 0aae41598ef..0aae41598ef 100644
--- a/public/-/emojis/1/house_with_garden.png
+++ b/app/assets/images/emoji/house_with_garden.png
Binary files differ
diff --git a/public/-/emojis/1/hugging.png b/app/assets/images/emoji/hugging.png
index 5bba6dc6d51..5bba6dc6d51 100644
--- a/public/-/emojis/1/hugging.png
+++ b/app/assets/images/emoji/hugging.png
Binary files differ
diff --git a/public/-/emojis/1/hushed.png b/app/assets/images/emoji/hushed.png
index cad0e23132e..cad0e23132e 100644
--- a/public/-/emojis/1/hushed.png
+++ b/app/assets/images/emoji/hushed.png
Binary files differ
diff --git a/public/-/emojis/1/ice_cream.png b/app/assets/images/emoji/ice_cream.png
index 94267b9c434..94267b9c434 100644
--- a/public/-/emojis/1/ice_cream.png
+++ b/app/assets/images/emoji/ice_cream.png
Binary files differ
diff --git a/public/-/emojis/1/ice_skate.png b/app/assets/images/emoji/ice_skate.png
index 8c449b0c039..8c449b0c039 100644
--- a/public/-/emojis/1/ice_skate.png
+++ b/app/assets/images/emoji/ice_skate.png
Binary files differ
diff --git a/public/-/emojis/1/icecream.png b/app/assets/images/emoji/icecream.png
index 8f6546e31a5..8f6546e31a5 100644
--- a/public/-/emojis/1/icecream.png
+++ b/app/assets/images/emoji/icecream.png
Binary files differ
diff --git a/public/-/emojis/1/id.png b/app/assets/images/emoji/id.png
index 5bf69bf7ba8..5bf69bf7ba8 100644
--- a/public/-/emojis/1/id.png
+++ b/app/assets/images/emoji/id.png
Binary files differ
diff --git a/public/-/emojis/1/ideograph_advantage.png b/app/assets/images/emoji/ideograph_advantage.png
index 0c0d589caf0..0c0d589caf0 100644
--- a/public/-/emojis/1/ideograph_advantage.png
+++ b/app/assets/images/emoji/ideograph_advantage.png
Binary files differ
diff --git a/public/-/emojis/1/imp.png b/app/assets/images/emoji/imp.png
index 9f9a9605539..9f9a9605539 100644
--- a/public/-/emojis/1/imp.png
+++ b/app/assets/images/emoji/imp.png
Binary files differ
diff --git a/public/-/emojis/1/inbox_tray.png b/app/assets/images/emoji/inbox_tray.png
index 41a6be2b0ee..41a6be2b0ee 100644
--- a/public/-/emojis/1/inbox_tray.png
+++ b/app/assets/images/emoji/inbox_tray.png
Binary files differ
diff --git a/public/-/emojis/1/incoming_envelope.png b/app/assets/images/emoji/incoming_envelope.png
index fd22e88182e..fd22e88182e 100644
--- a/public/-/emojis/1/incoming_envelope.png
+++ b/app/assets/images/emoji/incoming_envelope.png
Binary files differ
diff --git a/public/-/emojis/1/information_desk_person.png b/app/assets/images/emoji/information_desk_person.png
index 55fc6294d25..55fc6294d25 100644
--- a/public/-/emojis/1/information_desk_person.png
+++ b/app/assets/images/emoji/information_desk_person.png
Binary files differ
diff --git a/public/-/emojis/1/information_desk_person_tone1.png b/app/assets/images/emoji/information_desk_person_tone1.png
index 3d9e2247940..3d9e2247940 100644
--- a/public/-/emojis/1/information_desk_person_tone1.png
+++ b/app/assets/images/emoji/information_desk_person_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/information_desk_person_tone2.png b/app/assets/images/emoji/information_desk_person_tone2.png
index 879e8b7966d..879e8b7966d 100644
--- a/public/-/emojis/1/information_desk_person_tone2.png
+++ b/app/assets/images/emoji/information_desk_person_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/information_desk_person_tone3.png b/app/assets/images/emoji/information_desk_person_tone3.png
index 307514eab67..307514eab67 100644
--- a/public/-/emojis/1/information_desk_person_tone3.png
+++ b/app/assets/images/emoji/information_desk_person_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/information_desk_person_tone4.png b/app/assets/images/emoji/information_desk_person_tone4.png
index 297395dcb3f..297395dcb3f 100644
--- a/public/-/emojis/1/information_desk_person_tone4.png
+++ b/app/assets/images/emoji/information_desk_person_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/information_desk_person_tone5.png b/app/assets/images/emoji/information_desk_person_tone5.png
index 26f8f22b28b..26f8f22b28b 100644
--- a/public/-/emojis/1/information_desk_person_tone5.png
+++ b/app/assets/images/emoji/information_desk_person_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/information_source.png b/app/assets/images/emoji/information_source.png
index 871f2db9314..871f2db9314 100644
--- a/public/-/emojis/1/information_source.png
+++ b/app/assets/images/emoji/information_source.png
Binary files differ
diff --git a/public/-/emojis/1/innocent.png b/app/assets/images/emoji/innocent.png
index 57f5151124f..57f5151124f 100644
--- a/public/-/emojis/1/innocent.png
+++ b/app/assets/images/emoji/innocent.png
Binary files differ
diff --git a/public/-/emojis/1/interrobang.png b/app/assets/images/emoji/interrobang.png
index 509813e9bb2..509813e9bb2 100644
--- a/public/-/emojis/1/interrobang.png
+++ b/app/assets/images/emoji/interrobang.png
Binary files differ
diff --git a/public/-/emojis/1/iphone.png b/app/assets/images/emoji/iphone.png
index fd377acf872..fd377acf872 100644
--- a/public/-/emojis/1/iphone.png
+++ b/app/assets/images/emoji/iphone.png
Binary files differ
diff --git a/public/-/emojis/1/island.png b/app/assets/images/emoji/island.png
index 7fd834389b7..7fd834389b7 100644
--- a/public/-/emojis/1/island.png
+++ b/app/assets/images/emoji/island.png
Binary files differ
diff --git a/public/-/emojis/1/izakaya_lantern.png b/app/assets/images/emoji/izakaya_lantern.png
index dfd933f6f36..dfd933f6f36 100644
--- a/public/-/emojis/1/izakaya_lantern.png
+++ b/app/assets/images/emoji/izakaya_lantern.png
Binary files differ
diff --git a/public/-/emojis/1/jack_o_lantern.png b/app/assets/images/emoji/jack_o_lantern.png
index 44c3fc0aec9..44c3fc0aec9 100644
--- a/public/-/emojis/1/jack_o_lantern.png
+++ b/app/assets/images/emoji/jack_o_lantern.png
Binary files differ
diff --git a/public/-/emojis/1/japan.png b/app/assets/images/emoji/japan.png
index d86d0a59e12..d86d0a59e12 100644
--- a/public/-/emojis/1/japan.png
+++ b/app/assets/images/emoji/japan.png
Binary files differ
diff --git a/public/-/emojis/1/japanese_castle.png b/app/assets/images/emoji/japanese_castle.png
index 64b4e33a1ae..64b4e33a1ae 100644
--- a/public/-/emojis/1/japanese_castle.png
+++ b/app/assets/images/emoji/japanese_castle.png
Binary files differ
diff --git a/public/-/emojis/1/japanese_goblin.png b/app/assets/images/emoji/japanese_goblin.png
index 515c6a2250e..515c6a2250e 100644
--- a/public/-/emojis/1/japanese_goblin.png
+++ b/app/assets/images/emoji/japanese_goblin.png
Binary files differ
diff --git a/public/-/emojis/1/japanese_ogre.png b/app/assets/images/emoji/japanese_ogre.png
index fe8670fdaf1..fe8670fdaf1 100644
--- a/public/-/emojis/1/japanese_ogre.png
+++ b/app/assets/images/emoji/japanese_ogre.png
Binary files differ
diff --git a/public/-/emojis/1/jeans.png b/app/assets/images/emoji/jeans.png
index 2a6869d674c..2a6869d674c 100644
--- a/public/-/emojis/1/jeans.png
+++ b/app/assets/images/emoji/jeans.png
Binary files differ
diff --git a/public/-/emojis/1/joy.png b/app/assets/images/emoji/joy.png
index 0ba3b1859d8..0ba3b1859d8 100644
--- a/public/-/emojis/1/joy.png
+++ b/app/assets/images/emoji/joy.png
Binary files differ
diff --git a/public/-/emojis/1/joy_cat.png b/app/assets/images/emoji/joy_cat.png
index aac353179aa..aac353179aa 100644
--- a/public/-/emojis/1/joy_cat.png
+++ b/app/assets/images/emoji/joy_cat.png
Binary files differ
diff --git a/public/-/emojis/1/joystick.png b/app/assets/images/emoji/joystick.png
index 1ee1905434e..1ee1905434e 100644
--- a/public/-/emojis/1/joystick.png
+++ b/app/assets/images/emoji/joystick.png
Binary files differ
diff --git a/public/-/emojis/1/juggling.png b/app/assets/images/emoji/juggling.png
index a37f6224a42..a37f6224a42 100644
--- a/public/-/emojis/1/juggling.png
+++ b/app/assets/images/emoji/juggling.png
Binary files differ
diff --git a/public/-/emojis/1/juggling_tone1.png b/app/assets/images/emoji/juggling_tone1.png
index c18eda40031..c18eda40031 100644
--- a/public/-/emojis/1/juggling_tone1.png
+++ b/app/assets/images/emoji/juggling_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/juggling_tone2.png b/app/assets/images/emoji/juggling_tone2.png
index de3b7a555b6..de3b7a555b6 100644
--- a/public/-/emojis/1/juggling_tone2.png
+++ b/app/assets/images/emoji/juggling_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/juggling_tone3.png b/app/assets/images/emoji/juggling_tone3.png
index 74ab6d85458..74ab6d85458 100644
--- a/public/-/emojis/1/juggling_tone3.png
+++ b/app/assets/images/emoji/juggling_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/juggling_tone4.png b/app/assets/images/emoji/juggling_tone4.png
index 1c57823203f..1c57823203f 100644
--- a/public/-/emojis/1/juggling_tone4.png
+++ b/app/assets/images/emoji/juggling_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/juggling_tone5.png b/app/assets/images/emoji/juggling_tone5.png
index c343d6ee98a..c343d6ee98a 100644
--- a/public/-/emojis/1/juggling_tone5.png
+++ b/app/assets/images/emoji/juggling_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/kaaba.png b/app/assets/images/emoji/kaaba.png
index 1778c1138e4..1778c1138e4 100644
--- a/public/-/emojis/1/kaaba.png
+++ b/app/assets/images/emoji/kaaba.png
Binary files differ
diff --git a/public/-/emojis/1/key.png b/app/assets/images/emoji/key.png
index 319cd1b884c..319cd1b884c 100644
--- a/public/-/emojis/1/key.png
+++ b/app/assets/images/emoji/key.png
Binary files differ
diff --git a/public/-/emojis/1/key2.png b/app/assets/images/emoji/key2.png
index e11d706c6c8..e11d706c6c8 100644
--- a/public/-/emojis/1/key2.png
+++ b/app/assets/images/emoji/key2.png
Binary files differ
diff --git a/public/-/emojis/1/keyboard.png b/app/assets/images/emoji/keyboard.png
index 75027cb9af7..75027cb9af7 100644
--- a/public/-/emojis/1/keyboard.png
+++ b/app/assets/images/emoji/keyboard.png
Binary files differ
diff --git a/public/-/emojis/1/kimono.png b/app/assets/images/emoji/kimono.png
index abe851115d1..abe851115d1 100644
--- a/public/-/emojis/1/kimono.png
+++ b/app/assets/images/emoji/kimono.png
Binary files differ
diff --git a/public/-/emojis/1/kiss.png b/app/assets/images/emoji/kiss.png
index 85e6dcfc4e8..85e6dcfc4e8 100644
--- a/public/-/emojis/1/kiss.png
+++ b/app/assets/images/emoji/kiss.png
Binary files differ
diff --git a/public/-/emojis/1/kiss_mm.png b/app/assets/images/emoji/kiss_mm.png
index a9a0edae17c..a9a0edae17c 100644
--- a/public/-/emojis/1/kiss_mm.png
+++ b/app/assets/images/emoji/kiss_mm.png
Binary files differ
diff --git a/public/-/emojis/1/kiss_ww.png b/app/assets/images/emoji/kiss_ww.png
index fdac73cbb1d..fdac73cbb1d 100644
--- a/public/-/emojis/1/kiss_ww.png
+++ b/app/assets/images/emoji/kiss_ww.png
Binary files differ
diff --git a/public/-/emojis/1/kissing.png b/app/assets/images/emoji/kissing.png
index 39d325fd8e3..39d325fd8e3 100644
--- a/public/-/emojis/1/kissing.png
+++ b/app/assets/images/emoji/kissing.png
Binary files differ
diff --git a/public/-/emojis/1/kissing_cat.png b/app/assets/images/emoji/kissing_cat.png
index 6e0bcc77540..6e0bcc77540 100644
--- a/public/-/emojis/1/kissing_cat.png
+++ b/app/assets/images/emoji/kissing_cat.png
Binary files differ
diff --git a/public/-/emojis/1/kissing_closed_eyes.png b/app/assets/images/emoji/kissing_closed_eyes.png
index b684d7d4d6c..b684d7d4d6c 100644
--- a/public/-/emojis/1/kissing_closed_eyes.png
+++ b/app/assets/images/emoji/kissing_closed_eyes.png
Binary files differ
diff --git a/public/-/emojis/1/kissing_heart.png b/app/assets/images/emoji/kissing_heart.png
index 0ff808fd614..0ff808fd614 100644
--- a/public/-/emojis/1/kissing_heart.png
+++ b/app/assets/images/emoji/kissing_heart.png
Binary files differ
diff --git a/public/-/emojis/1/kissing_smiling_eyes.png b/app/assets/images/emoji/kissing_smiling_eyes.png
index e181f17099d..e181f17099d 100644
--- a/public/-/emojis/1/kissing_smiling_eyes.png
+++ b/app/assets/images/emoji/kissing_smiling_eyes.png
Binary files differ
diff --git a/public/-/emojis/1/kiwi.png b/app/assets/images/emoji/kiwi.png
index dfbd8258074..dfbd8258074 100644
--- a/public/-/emojis/1/kiwi.png
+++ b/app/assets/images/emoji/kiwi.png
Binary files differ
diff --git a/public/-/emojis/1/knife.png b/app/assets/images/emoji/knife.png
index 1acb9f3077b..1acb9f3077b 100644
--- a/public/-/emojis/1/knife.png
+++ b/app/assets/images/emoji/knife.png
Binary files differ
diff --git a/public/-/emojis/1/koala.png b/app/assets/images/emoji/koala.png
index a0aa437a98c..a0aa437a98c 100644
--- a/public/-/emojis/1/koala.png
+++ b/app/assets/images/emoji/koala.png
Binary files differ
diff --git a/public/-/emojis/1/koko.png b/app/assets/images/emoji/koko.png
index 6450eb44d90..6450eb44d90 100644
--- a/public/-/emojis/1/koko.png
+++ b/app/assets/images/emoji/koko.png
Binary files differ
diff --git a/public/-/emojis/1/label.png b/app/assets/images/emoji/label.png
index d41c9b4f1e1..d41c9b4f1e1 100644
--- a/public/-/emojis/1/label.png
+++ b/app/assets/images/emoji/label.png
Binary files differ
diff --git a/public/-/emojis/1/large_blue_circle.png b/app/assets/images/emoji/large_blue_circle.png
index 84078ef3127..84078ef3127 100644
--- a/public/-/emojis/1/large_blue_circle.png
+++ b/app/assets/images/emoji/large_blue_circle.png
Binary files differ
diff --git a/public/-/emojis/1/large_blue_diamond.png b/app/assets/images/emoji/large_blue_diamond.png
index 416a58bd5a8..416a58bd5a8 100644
--- a/public/-/emojis/1/large_blue_diamond.png
+++ b/app/assets/images/emoji/large_blue_diamond.png
Binary files differ
diff --git a/public/-/emojis/1/large_orange_diamond.png b/app/assets/images/emoji/large_orange_diamond.png
index 73ff0ac36c8..73ff0ac36c8 100644
--- a/public/-/emojis/1/large_orange_diamond.png
+++ b/app/assets/images/emoji/large_orange_diamond.png
Binary files differ
diff --git a/public/-/emojis/1/last_quarter_moon.png b/app/assets/images/emoji/last_quarter_moon.png
index 0842a0dd408..0842a0dd408 100644
--- a/public/-/emojis/1/last_quarter_moon.png
+++ b/app/assets/images/emoji/last_quarter_moon.png
Binary files differ
diff --git a/public/-/emojis/1/last_quarter_moon_with_face.png b/app/assets/images/emoji/last_quarter_moon_with_face.png
index 94099343c5d..94099343c5d 100644
--- a/public/-/emojis/1/last_quarter_moon_with_face.png
+++ b/app/assets/images/emoji/last_quarter_moon_with_face.png
Binary files differ
diff --git a/public/-/emojis/1/laughing.png b/app/assets/images/emoji/laughing.png
index d94e9505ba1..d94e9505ba1 100644
--- a/public/-/emojis/1/laughing.png
+++ b/app/assets/images/emoji/laughing.png
Binary files differ
diff --git a/public/-/emojis/1/leaves.png b/app/assets/images/emoji/leaves.png
index 1e43e1af820..1e43e1af820 100644
--- a/public/-/emojis/1/leaves.png
+++ b/app/assets/images/emoji/leaves.png
Binary files differ
diff --git a/public/-/emojis/1/ledger.png b/app/assets/images/emoji/ledger.png
index 13e7561a4bd..13e7561a4bd 100644
--- a/public/-/emojis/1/ledger.png
+++ b/app/assets/images/emoji/ledger.png
Binary files differ
diff --git a/public/-/emojis/1/left_facing_fist.png b/app/assets/images/emoji/left_facing_fist.png
index a9d9fd8d59c..a9d9fd8d59c 100644
--- a/public/-/emojis/1/left_facing_fist.png
+++ b/app/assets/images/emoji/left_facing_fist.png
Binary files differ
diff --git a/public/-/emojis/1/left_facing_fist_tone1.png b/app/assets/images/emoji/left_facing_fist_tone1.png
index 1262a6b4b69..1262a6b4b69 100644
--- a/public/-/emojis/1/left_facing_fist_tone1.png
+++ b/app/assets/images/emoji/left_facing_fist_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/left_facing_fist_tone2.png b/app/assets/images/emoji/left_facing_fist_tone2.png
index 40bf70b82b2..40bf70b82b2 100644
--- a/public/-/emojis/1/left_facing_fist_tone2.png
+++ b/app/assets/images/emoji/left_facing_fist_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/left_facing_fist_tone3.png b/app/assets/images/emoji/left_facing_fist_tone3.png
index 93f58145111..93f58145111 100644
--- a/public/-/emojis/1/left_facing_fist_tone3.png
+++ b/app/assets/images/emoji/left_facing_fist_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/left_facing_fist_tone4.png b/app/assets/images/emoji/left_facing_fist_tone4.png
index d82b5ec91f0..d82b5ec91f0 100644
--- a/public/-/emojis/1/left_facing_fist_tone4.png
+++ b/app/assets/images/emoji/left_facing_fist_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/left_facing_fist_tone5.png b/app/assets/images/emoji/left_facing_fist_tone5.png
index 09ae4cd492b..09ae4cd492b 100644
--- a/public/-/emojis/1/left_facing_fist_tone5.png
+++ b/app/assets/images/emoji/left_facing_fist_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/left_luggage.png b/app/assets/images/emoji/left_luggage.png
index 887b23f3f25..887b23f3f25 100644
--- a/public/-/emojis/1/left_luggage.png
+++ b/app/assets/images/emoji/left_luggage.png
Binary files differ
diff --git a/public/-/emojis/1/left_right_arrow.png b/app/assets/images/emoji/left_right_arrow.png
index 7937f24f2ac..7937f24f2ac 100644
--- a/public/-/emojis/1/left_right_arrow.png
+++ b/app/assets/images/emoji/left_right_arrow.png
Binary files differ
diff --git a/public/-/emojis/1/leftwards_arrow_with_hook.png b/app/assets/images/emoji/leftwards_arrow_with_hook.png
index ba45c2ad9e9..ba45c2ad9e9 100644
--- a/public/-/emojis/1/leftwards_arrow_with_hook.png
+++ b/app/assets/images/emoji/leftwards_arrow_with_hook.png
Binary files differ
diff --git a/public/-/emojis/1/lemon.png b/app/assets/images/emoji/lemon.png
index 9a7d95ca220..9a7d95ca220 100644
--- a/public/-/emojis/1/lemon.png
+++ b/app/assets/images/emoji/lemon.png
Binary files differ
diff --git a/public/-/emojis/1/leo.png b/app/assets/images/emoji/leo.png
index 30158d34de9..30158d34de9 100644
--- a/public/-/emojis/1/leo.png
+++ b/app/assets/images/emoji/leo.png
Binary files differ
diff --git a/public/-/emojis/1/leopard.png b/app/assets/images/emoji/leopard.png
index 8aac3d49448..8aac3d49448 100644
--- a/public/-/emojis/1/leopard.png
+++ b/app/assets/images/emoji/leopard.png
Binary files differ
diff --git a/public/-/emojis/1/level_slider.png b/app/assets/images/emoji/level_slider.png
index 720a3b34119..720a3b34119 100644
--- a/public/-/emojis/1/level_slider.png
+++ b/app/assets/images/emoji/level_slider.png
Binary files differ
diff --git a/public/-/emojis/1/levitate.png b/app/assets/images/emoji/levitate.png
index 3dc315a3d91..3dc315a3d91 100644
--- a/public/-/emojis/1/levitate.png
+++ b/app/assets/images/emoji/levitate.png
Binary files differ
diff --git a/public/-/emojis/1/libra.png b/app/assets/images/emoji/libra.png
index 8fd133a357c..8fd133a357c 100644
--- a/public/-/emojis/1/libra.png
+++ b/app/assets/images/emoji/libra.png
Binary files differ
diff --git a/public/-/emojis/1/lifter.png b/app/assets/images/emoji/lifter.png
index afdeaa476af..afdeaa476af 100644
--- a/public/-/emojis/1/lifter.png
+++ b/app/assets/images/emoji/lifter.png
Binary files differ
diff --git a/public/-/emojis/1/lifter_tone1.png b/app/assets/images/emoji/lifter_tone1.png
index febaad123ec..febaad123ec 100644
--- a/public/-/emojis/1/lifter_tone1.png
+++ b/app/assets/images/emoji/lifter_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/lifter_tone2.png b/app/assets/images/emoji/lifter_tone2.png
index 27ae794a18e..27ae794a18e 100644
--- a/public/-/emojis/1/lifter_tone2.png
+++ b/app/assets/images/emoji/lifter_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/lifter_tone3.png b/app/assets/images/emoji/lifter_tone3.png
index 45c4c22c709..45c4c22c709 100644
--- a/public/-/emojis/1/lifter_tone3.png
+++ b/app/assets/images/emoji/lifter_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/lifter_tone4.png b/app/assets/images/emoji/lifter_tone4.png
index 67dd21d2464..67dd21d2464 100644
--- a/public/-/emojis/1/lifter_tone4.png
+++ b/app/assets/images/emoji/lifter_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/lifter_tone5.png b/app/assets/images/emoji/lifter_tone5.png
index fa0152038b6..fa0152038b6 100644
--- a/public/-/emojis/1/lifter_tone5.png
+++ b/app/assets/images/emoji/lifter_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/light_rail.png b/app/assets/images/emoji/light_rail.png
index a64829f5078..a64829f5078 100644
--- a/public/-/emojis/1/light_rail.png
+++ b/app/assets/images/emoji/light_rail.png
Binary files differ
diff --git a/public/-/emojis/1/link.png b/app/assets/images/emoji/link.png
index ae20f0f8eec..ae20f0f8eec 100644
--- a/public/-/emojis/1/link.png
+++ b/app/assets/images/emoji/link.png
Binary files differ
diff --git a/public/-/emojis/1/lion_face.png b/app/assets/images/emoji/lion_face.png
index 5062ab47ecf..5062ab47ecf 100644
--- a/public/-/emojis/1/lion_face.png
+++ b/app/assets/images/emoji/lion_face.png
Binary files differ
diff --git a/public/-/emojis/1/lips.png b/app/assets/images/emoji/lips.png
index 35f3cc2006f..35f3cc2006f 100644
--- a/public/-/emojis/1/lips.png
+++ b/app/assets/images/emoji/lips.png
Binary files differ
diff --git a/public/-/emojis/1/lipstick.png b/app/assets/images/emoji/lipstick.png
index 61a0c084c99..61a0c084c99 100644
--- a/public/-/emojis/1/lipstick.png
+++ b/app/assets/images/emoji/lipstick.png
Binary files differ
diff --git a/public/-/emojis/1/lizard.png b/app/assets/images/emoji/lizard.png
index 8363876050e..8363876050e 100644
--- a/public/-/emojis/1/lizard.png
+++ b/app/assets/images/emoji/lizard.png
Binary files differ
diff --git a/public/-/emojis/1/lock.png b/app/assets/images/emoji/lock.png
index 5a739c46644..5a739c46644 100644
--- a/public/-/emojis/1/lock.png
+++ b/app/assets/images/emoji/lock.png
Binary files differ
diff --git a/public/-/emojis/1/lock_with_ink_pen.png b/app/assets/images/emoji/lock_with_ink_pen.png
index 19a07d162fb..19a07d162fb 100644
--- a/public/-/emojis/1/lock_with_ink_pen.png
+++ b/app/assets/images/emoji/lock_with_ink_pen.png
Binary files differ
diff --git a/public/-/emojis/1/lollipop.png b/app/assets/images/emoji/lollipop.png
index ad76d7bf916..ad76d7bf916 100644
--- a/public/-/emojis/1/lollipop.png
+++ b/app/assets/images/emoji/lollipop.png
Binary files differ
diff --git a/public/-/emojis/1/loop.png b/app/assets/images/emoji/loop.png
index 0b82c8fe315..0b82c8fe315 100644
--- a/public/-/emojis/1/loop.png
+++ b/app/assets/images/emoji/loop.png
Binary files differ
diff --git a/public/-/emojis/1/loud_sound.png b/app/assets/images/emoji/loud_sound.png
index 8370033a539..8370033a539 100644
--- a/public/-/emojis/1/loud_sound.png
+++ b/app/assets/images/emoji/loud_sound.png
Binary files differ
diff --git a/public/-/emojis/1/loudspeaker.png b/app/assets/images/emoji/loudspeaker.png
index 5fd76a95b82..5fd76a95b82 100644
--- a/public/-/emojis/1/loudspeaker.png
+++ b/app/assets/images/emoji/loudspeaker.png
Binary files differ
diff --git a/public/-/emojis/1/love_hotel.png b/app/assets/images/emoji/love_hotel.png
index 5e136be6f8b..5e136be6f8b 100644
--- a/public/-/emojis/1/love_hotel.png
+++ b/app/assets/images/emoji/love_hotel.png
Binary files differ
diff --git a/public/-/emojis/1/love_letter.png b/app/assets/images/emoji/love_letter.png
index 3c3c767e784..3c3c767e784 100644
--- a/public/-/emojis/1/love_letter.png
+++ b/app/assets/images/emoji/love_letter.png
Binary files differ
diff --git a/public/-/emojis/1/low_brightness.png b/app/assets/images/emoji/low_brightness.png
index 543011d3961..543011d3961 100644
--- a/public/-/emojis/1/low_brightness.png
+++ b/app/assets/images/emoji/low_brightness.png
Binary files differ
diff --git a/public/-/emojis/1/lying_face.png b/app/assets/images/emoji/lying_face.png
index 02827e2628b..02827e2628b 100644
--- a/public/-/emojis/1/lying_face.png
+++ b/app/assets/images/emoji/lying_face.png
Binary files differ
diff --git a/public/-/emojis/1/m.png b/app/assets/images/emoji/m.png
index 8a3506fc1d7..8a3506fc1d7 100644
--- a/public/-/emojis/1/m.png
+++ b/app/assets/images/emoji/m.png
Binary files differ
diff --git a/public/-/emojis/1/mag.png b/app/assets/images/emoji/mag.png
index 55487156ac6..55487156ac6 100644
--- a/public/-/emojis/1/mag.png
+++ b/app/assets/images/emoji/mag.png
Binary files differ
diff --git a/public/-/emojis/1/mag_right.png b/app/assets/images/emoji/mag_right.png
index 0f4b1bca876..0f4b1bca876 100644
--- a/public/-/emojis/1/mag_right.png
+++ b/app/assets/images/emoji/mag_right.png
Binary files differ
diff --git a/public/-/emojis/1/mahjong.png b/app/assets/images/emoji/mahjong.png
index 66fd32025b2..66fd32025b2 100644
--- a/public/-/emojis/1/mahjong.png
+++ b/app/assets/images/emoji/mahjong.png
Binary files differ
diff --git a/public/-/emojis/1/mailbox.png b/app/assets/images/emoji/mailbox.png
index ef5174e40dd..ef5174e40dd 100644
--- a/public/-/emojis/1/mailbox.png
+++ b/app/assets/images/emoji/mailbox.png
Binary files differ
diff --git a/public/-/emojis/1/mailbox_closed.png b/app/assets/images/emoji/mailbox_closed.png
index ddc705db0d8..ddc705db0d8 100644
--- a/public/-/emojis/1/mailbox_closed.png
+++ b/app/assets/images/emoji/mailbox_closed.png
Binary files differ
diff --git a/public/-/emojis/1/mailbox_with_mail.png b/app/assets/images/emoji/mailbox_with_mail.png
index 5460616a5b1..5460616a5b1 100644
--- a/public/-/emojis/1/mailbox_with_mail.png
+++ b/app/assets/images/emoji/mailbox_with_mail.png
Binary files differ
diff --git a/public/-/emojis/1/mailbox_with_no_mail.png b/app/assets/images/emoji/mailbox_with_no_mail.png
index f9aeee6b15a..f9aeee6b15a 100644
--- a/public/-/emojis/1/mailbox_with_no_mail.png
+++ b/app/assets/images/emoji/mailbox_with_no_mail.png
Binary files differ
diff --git a/public/-/emojis/1/man.png b/app/assets/images/emoji/man.png
index 857a02e5146..857a02e5146 100644
--- a/public/-/emojis/1/man.png
+++ b/app/assets/images/emoji/man.png
Binary files differ
diff --git a/public/-/emojis/1/man_dancing.png b/app/assets/images/emoji/man_dancing.png
index ccff3bede5a..ccff3bede5a 100644
--- a/public/-/emojis/1/man_dancing.png
+++ b/app/assets/images/emoji/man_dancing.png
Binary files differ
diff --git a/public/-/emojis/1/man_dancing_tone1.png b/app/assets/images/emoji/man_dancing_tone1.png
index e0b9f82d905..e0b9f82d905 100644
--- a/public/-/emojis/1/man_dancing_tone1.png
+++ b/app/assets/images/emoji/man_dancing_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/man_dancing_tone2.png b/app/assets/images/emoji/man_dancing_tone2.png
index a5beed56e2e..a5beed56e2e 100644
--- a/public/-/emojis/1/man_dancing_tone2.png
+++ b/app/assets/images/emoji/man_dancing_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/man_dancing_tone3.png b/app/assets/images/emoji/man_dancing_tone3.png
index 2fa20180a6e..2fa20180a6e 100644
--- a/public/-/emojis/1/man_dancing_tone3.png
+++ b/app/assets/images/emoji/man_dancing_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/man_dancing_tone4.png b/app/assets/images/emoji/man_dancing_tone4.png
index bd3528c83ba..bd3528c83ba 100644
--- a/public/-/emojis/1/man_dancing_tone4.png
+++ b/app/assets/images/emoji/man_dancing_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/man_dancing_tone5.png b/app/assets/images/emoji/man_dancing_tone5.png
index 41fd4f880c9..41fd4f880c9 100644
--- a/public/-/emojis/1/man_dancing_tone5.png
+++ b/app/assets/images/emoji/man_dancing_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/man_in_tuxedo.png b/app/assets/images/emoji/man_in_tuxedo.png
index 5f7e9303f89..5f7e9303f89 100644
--- a/public/-/emojis/1/man_in_tuxedo.png
+++ b/app/assets/images/emoji/man_in_tuxedo.png
Binary files differ
diff --git a/public/-/emojis/1/man_in_tuxedo_tone1.png b/app/assets/images/emoji/man_in_tuxedo_tone1.png
index 7b6b3acd99b..7b6b3acd99b 100644
--- a/public/-/emojis/1/man_in_tuxedo_tone1.png
+++ b/app/assets/images/emoji/man_in_tuxedo_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/man_in_tuxedo_tone2.png b/app/assets/images/emoji/man_in_tuxedo_tone2.png
index 7975191b360..7975191b360 100644
--- a/public/-/emojis/1/man_in_tuxedo_tone2.png
+++ b/app/assets/images/emoji/man_in_tuxedo_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/man_in_tuxedo_tone3.png b/app/assets/images/emoji/man_in_tuxedo_tone3.png
index a2816f600ae..a2816f600ae 100644
--- a/public/-/emojis/1/man_in_tuxedo_tone3.png
+++ b/app/assets/images/emoji/man_in_tuxedo_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/man_in_tuxedo_tone4.png b/app/assets/images/emoji/man_in_tuxedo_tone4.png
index ea8291760f9..ea8291760f9 100644
--- a/public/-/emojis/1/man_in_tuxedo_tone4.png
+++ b/app/assets/images/emoji/man_in_tuxedo_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/man_in_tuxedo_tone5.png b/app/assets/images/emoji/man_in_tuxedo_tone5.png
index c743e05fc5e..c743e05fc5e 100644
--- a/public/-/emojis/1/man_in_tuxedo_tone5.png
+++ b/app/assets/images/emoji/man_in_tuxedo_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/man_tone1.png b/app/assets/images/emoji/man_tone1.png
index bb86e963a80..bb86e963a80 100644
--- a/public/-/emojis/1/man_tone1.png
+++ b/app/assets/images/emoji/man_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/man_tone2.png b/app/assets/images/emoji/man_tone2.png
index fdeeaff46f5..fdeeaff46f5 100644
--- a/public/-/emojis/1/man_tone2.png
+++ b/app/assets/images/emoji/man_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/man_tone3.png b/app/assets/images/emoji/man_tone3.png
index 7ae0b5df9cf..7ae0b5df9cf 100644
--- a/public/-/emojis/1/man_tone3.png
+++ b/app/assets/images/emoji/man_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/man_tone4.png b/app/assets/images/emoji/man_tone4.png
index db14cde99b8..db14cde99b8 100644
--- a/public/-/emojis/1/man_tone4.png
+++ b/app/assets/images/emoji/man_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/man_tone5.png b/app/assets/images/emoji/man_tone5.png
index 7c67a70529c..7c67a70529c 100644
--- a/public/-/emojis/1/man_tone5.png
+++ b/app/assets/images/emoji/man_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_gua_pi_mao.png b/app/assets/images/emoji/man_with_gua_pi_mao.png
index 7841e13608d..7841e13608d 100644
--- a/public/-/emojis/1/man_with_gua_pi_mao.png
+++ b/app/assets/images/emoji/man_with_gua_pi_mao.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_gua_pi_mao_tone1.png b/app/assets/images/emoji/man_with_gua_pi_mao_tone1.png
index 5b7b3def19c..5b7b3def19c 100644
--- a/public/-/emojis/1/man_with_gua_pi_mao_tone1.png
+++ b/app/assets/images/emoji/man_with_gua_pi_mao_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_gua_pi_mao_tone2.png b/app/assets/images/emoji/man_with_gua_pi_mao_tone2.png
index c8b9cf87f4b..c8b9cf87f4b 100644
--- a/public/-/emojis/1/man_with_gua_pi_mao_tone2.png
+++ b/app/assets/images/emoji/man_with_gua_pi_mao_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_gua_pi_mao_tone3.png b/app/assets/images/emoji/man_with_gua_pi_mao_tone3.png
index effdd0c4c84..effdd0c4c84 100644
--- a/public/-/emojis/1/man_with_gua_pi_mao_tone3.png
+++ b/app/assets/images/emoji/man_with_gua_pi_mao_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_gua_pi_mao_tone4.png b/app/assets/images/emoji/man_with_gua_pi_mao_tone4.png
index f885ff46fa1..f885ff46fa1 100644
--- a/public/-/emojis/1/man_with_gua_pi_mao_tone4.png
+++ b/app/assets/images/emoji/man_with_gua_pi_mao_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_gua_pi_mao_tone5.png b/app/assets/images/emoji/man_with_gua_pi_mao_tone5.png
index a6d55ca1380..a6d55ca1380 100644
--- a/public/-/emojis/1/man_with_gua_pi_mao_tone5.png
+++ b/app/assets/images/emoji/man_with_gua_pi_mao_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_turban.png b/app/assets/images/emoji/man_with_turban.png
index 51cf047f966..51cf047f966 100644
--- a/public/-/emojis/1/man_with_turban.png
+++ b/app/assets/images/emoji/man_with_turban.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_turban_tone1.png b/app/assets/images/emoji/man_with_turban_tone1.png
index 1e12ee4b231..1e12ee4b231 100644
--- a/public/-/emojis/1/man_with_turban_tone1.png
+++ b/app/assets/images/emoji/man_with_turban_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_turban_tone2.png b/app/assets/images/emoji/man_with_turban_tone2.png
index 37de4cceb23..37de4cceb23 100644
--- a/public/-/emojis/1/man_with_turban_tone2.png
+++ b/app/assets/images/emoji/man_with_turban_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_turban_tone3.png b/app/assets/images/emoji/man_with_turban_tone3.png
index f607afd3450..f607afd3450 100644
--- a/public/-/emojis/1/man_with_turban_tone3.png
+++ b/app/assets/images/emoji/man_with_turban_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_turban_tone4.png b/app/assets/images/emoji/man_with_turban_tone4.png
index c05695888af..c05695888af 100644
--- a/public/-/emojis/1/man_with_turban_tone4.png
+++ b/app/assets/images/emoji/man_with_turban_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/man_with_turban_tone5.png b/app/assets/images/emoji/man_with_turban_tone5.png
index 4b4ff64720b..4b4ff64720b 100644
--- a/public/-/emojis/1/man_with_turban_tone5.png
+++ b/app/assets/images/emoji/man_with_turban_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/mans_shoe.png b/app/assets/images/emoji/mans_shoe.png
index 4bf7541032c..4bf7541032c 100644
--- a/public/-/emojis/1/mans_shoe.png
+++ b/app/assets/images/emoji/mans_shoe.png
Binary files differ
diff --git a/public/-/emojis/1/map.png b/app/assets/images/emoji/map.png
index 15efe32c798..15efe32c798 100644
--- a/public/-/emojis/1/map.png
+++ b/app/assets/images/emoji/map.png
Binary files differ
diff --git a/public/-/emojis/1/maple_leaf.png b/app/assets/images/emoji/maple_leaf.png
index c49acea67f7..c49acea67f7 100644
--- a/public/-/emojis/1/maple_leaf.png
+++ b/app/assets/images/emoji/maple_leaf.png
Binary files differ
diff --git a/public/-/emojis/1/martial_arts_uniform.png b/app/assets/images/emoji/martial_arts_uniform.png
index 8d6114761f6..8d6114761f6 100644
--- a/public/-/emojis/1/martial_arts_uniform.png
+++ b/app/assets/images/emoji/martial_arts_uniform.png
Binary files differ
diff --git a/public/-/emojis/1/mask.png b/app/assets/images/emoji/mask.png
index 1e800acd1c0..1e800acd1c0 100644
--- a/public/-/emojis/1/mask.png
+++ b/app/assets/images/emoji/mask.png
Binary files differ
diff --git a/public/-/emojis/1/massage.png b/app/assets/images/emoji/massage.png
index b91d845e374..b91d845e374 100644
--- a/public/-/emojis/1/massage.png
+++ b/app/assets/images/emoji/massage.png
Binary files differ
diff --git a/public/-/emojis/1/massage_tone1.png b/app/assets/images/emoji/massage_tone1.png
index e0f415d3186..e0f415d3186 100644
--- a/public/-/emojis/1/massage_tone1.png
+++ b/app/assets/images/emoji/massage_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/massage_tone2.png b/app/assets/images/emoji/massage_tone2.png
index 0bb244a270b..0bb244a270b 100644
--- a/public/-/emojis/1/massage_tone2.png
+++ b/app/assets/images/emoji/massage_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/massage_tone3.png b/app/assets/images/emoji/massage_tone3.png
index a117ee81a22..a117ee81a22 100644
--- a/public/-/emojis/1/massage_tone3.png
+++ b/app/assets/images/emoji/massage_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/massage_tone4.png b/app/assets/images/emoji/massage_tone4.png
index 6f42ab017f4..6f42ab017f4 100644
--- a/public/-/emojis/1/massage_tone4.png
+++ b/app/assets/images/emoji/massage_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/massage_tone5.png b/app/assets/images/emoji/massage_tone5.png
index 6a388c0d0b5..6a388c0d0b5 100644
--- a/public/-/emojis/1/massage_tone5.png
+++ b/app/assets/images/emoji/massage_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/meat_on_bone.png b/app/assets/images/emoji/meat_on_bone.png
index b20a59d1690..b20a59d1690 100644
--- a/public/-/emojis/1/meat_on_bone.png
+++ b/app/assets/images/emoji/meat_on_bone.png
Binary files differ
diff --git a/public/-/emojis/1/medal.png b/app/assets/images/emoji/medal.png
index b85896b14da..b85896b14da 100644
--- a/public/-/emojis/1/medal.png
+++ b/app/assets/images/emoji/medal.png
Binary files differ
diff --git a/public/-/emojis/1/mega.png b/app/assets/images/emoji/mega.png
index 4e6735188e3..4e6735188e3 100644
--- a/public/-/emojis/1/mega.png
+++ b/app/assets/images/emoji/mega.png
Binary files differ
diff --git a/public/-/emojis/1/melon.png b/app/assets/images/emoji/melon.png
index c01232d419d..c01232d419d 100644
--- a/public/-/emojis/1/melon.png
+++ b/app/assets/images/emoji/melon.png
Binary files differ
diff --git a/public/-/emojis/1/menorah.png b/app/assets/images/emoji/menorah.png
index b4297362869..b4297362869 100644
--- a/public/-/emojis/1/menorah.png
+++ b/app/assets/images/emoji/menorah.png
Binary files differ
diff --git a/public/-/emojis/1/mens.png b/app/assets/images/emoji/mens.png
index f5a1e1ba0cd..f5a1e1ba0cd 100644
--- a/public/-/emojis/1/mens.png
+++ b/app/assets/images/emoji/mens.png
Binary files differ
diff --git a/public/-/emojis/1/metal.png b/app/assets/images/emoji/metal.png
index 4aa6e7e0a44..4aa6e7e0a44 100644
--- a/public/-/emojis/1/metal.png
+++ b/app/assets/images/emoji/metal.png
Binary files differ
diff --git a/public/-/emojis/1/metal_tone1.png b/app/assets/images/emoji/metal_tone1.png
index c080d2addbd..c080d2addbd 100644
--- a/public/-/emojis/1/metal_tone1.png
+++ b/app/assets/images/emoji/metal_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/metal_tone2.png b/app/assets/images/emoji/metal_tone2.png
index 12313529bcf..12313529bcf 100644
--- a/public/-/emojis/1/metal_tone2.png
+++ b/app/assets/images/emoji/metal_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/metal_tone3.png b/app/assets/images/emoji/metal_tone3.png
index ca9be6ae67b..ca9be6ae67b 100644
--- a/public/-/emojis/1/metal_tone3.png
+++ b/app/assets/images/emoji/metal_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/metal_tone4.png b/app/assets/images/emoji/metal_tone4.png
index abe28cbf890..abe28cbf890 100644
--- a/public/-/emojis/1/metal_tone4.png
+++ b/app/assets/images/emoji/metal_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/metal_tone5.png b/app/assets/images/emoji/metal_tone5.png
index 0c6b5dd34ed..0c6b5dd34ed 100644
--- a/public/-/emojis/1/metal_tone5.png
+++ b/app/assets/images/emoji/metal_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/metro.png b/app/assets/images/emoji/metro.png
index 1de8f0551f3..1de8f0551f3 100644
--- a/public/-/emojis/1/metro.png
+++ b/app/assets/images/emoji/metro.png
Binary files differ
diff --git a/public/-/emojis/1/microphone.png b/app/assets/images/emoji/microphone.png
index d4e6b0def25..d4e6b0def25 100644
--- a/public/-/emojis/1/microphone.png
+++ b/app/assets/images/emoji/microphone.png
Binary files differ
diff --git a/public/-/emojis/1/microphone2.png b/app/assets/images/emoji/microphone2.png
index cd9167654ff..cd9167654ff 100644
--- a/public/-/emojis/1/microphone2.png
+++ b/app/assets/images/emoji/microphone2.png
Binary files differ
diff --git a/public/-/emojis/1/microscope.png b/app/assets/images/emoji/microscope.png
index 90f5acf6a78..90f5acf6a78 100644
--- a/public/-/emojis/1/microscope.png
+++ b/app/assets/images/emoji/microscope.png
Binary files differ
diff --git a/public/-/emojis/1/middle_finger.png b/app/assets/images/emoji/middle_finger.png
index 697f7a25eb2..697f7a25eb2 100644
--- a/public/-/emojis/1/middle_finger.png
+++ b/app/assets/images/emoji/middle_finger.png
Binary files differ
diff --git a/public/-/emojis/1/middle_finger_tone1.png b/app/assets/images/emoji/middle_finger_tone1.png
index 61ef12a1548..61ef12a1548 100644
--- a/public/-/emojis/1/middle_finger_tone1.png
+++ b/app/assets/images/emoji/middle_finger_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/middle_finger_tone2.png b/app/assets/images/emoji/middle_finger_tone2.png
index c31a69be9af..c31a69be9af 100644
--- a/public/-/emojis/1/middle_finger_tone2.png
+++ b/app/assets/images/emoji/middle_finger_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/middle_finger_tone3.png b/app/assets/images/emoji/middle_finger_tone3.png
index 73ac216ce63..73ac216ce63 100644
--- a/public/-/emojis/1/middle_finger_tone3.png
+++ b/app/assets/images/emoji/middle_finger_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/middle_finger_tone4.png b/app/assets/images/emoji/middle_finger_tone4.png
index 80b8ab7706d..80b8ab7706d 100644
--- a/public/-/emojis/1/middle_finger_tone4.png
+++ b/app/assets/images/emoji/middle_finger_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/middle_finger_tone5.png b/app/assets/images/emoji/middle_finger_tone5.png
index a8826b196e8..a8826b196e8 100644
--- a/public/-/emojis/1/middle_finger_tone5.png
+++ b/app/assets/images/emoji/middle_finger_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/military_medal.png b/app/assets/images/emoji/military_medal.png
index ecd3fb03584..ecd3fb03584 100644
--- a/public/-/emojis/1/military_medal.png
+++ b/app/assets/images/emoji/military_medal.png
Binary files differ
diff --git a/public/-/emojis/1/milk.png b/app/assets/images/emoji/milk.png
index e4fcf2e64f3..e4fcf2e64f3 100644
--- a/public/-/emojis/1/milk.png
+++ b/app/assets/images/emoji/milk.png
Binary files differ
diff --git a/public/-/emojis/1/milky_way.png b/app/assets/images/emoji/milky_way.png
index b2b8ac59c5e..b2b8ac59c5e 100644
--- a/public/-/emojis/1/milky_way.png
+++ b/app/assets/images/emoji/milky_way.png
Binary files differ
diff --git a/public/-/emojis/1/minibus.png b/app/assets/images/emoji/minibus.png
index c60dd8f47ab..c60dd8f47ab 100644
--- a/public/-/emojis/1/minibus.png
+++ b/app/assets/images/emoji/minibus.png
Binary files differ
diff --git a/public/-/emojis/1/minidisc.png b/app/assets/images/emoji/minidisc.png
index 9fa94cfbe74..9fa94cfbe74 100644
--- a/public/-/emojis/1/minidisc.png
+++ b/app/assets/images/emoji/minidisc.png
Binary files differ
diff --git a/public/-/emojis/1/mobile_phone_off.png b/app/assets/images/emoji/mobile_phone_off.png
index 8b661ec1c94..8b661ec1c94 100644
--- a/public/-/emojis/1/mobile_phone_off.png
+++ b/app/assets/images/emoji/mobile_phone_off.png
Binary files differ
diff --git a/public/-/emojis/1/money_mouth.png b/app/assets/images/emoji/money_mouth.png
index 75fd1e90cb0..75fd1e90cb0 100644
--- a/public/-/emojis/1/money_mouth.png
+++ b/app/assets/images/emoji/money_mouth.png
Binary files differ
diff --git a/public/-/emojis/1/money_with_wings.png b/app/assets/images/emoji/money_with_wings.png
index f022b04b3c2..f022b04b3c2 100644
--- a/public/-/emojis/1/money_with_wings.png
+++ b/app/assets/images/emoji/money_with_wings.png
Binary files differ
diff --git a/public/-/emojis/1/moneybag.png b/app/assets/images/emoji/moneybag.png
index b9296be0902..b9296be0902 100644
--- a/public/-/emojis/1/moneybag.png
+++ b/app/assets/images/emoji/moneybag.png
Binary files differ
diff --git a/public/-/emojis/1/monkey.png b/app/assets/images/emoji/monkey.png
index 9fae29448e3..9fae29448e3 100644
--- a/public/-/emojis/1/monkey.png
+++ b/app/assets/images/emoji/monkey.png
Binary files differ
diff --git a/public/-/emojis/1/monkey_face.png b/app/assets/images/emoji/monkey_face.png
index 7cab9b91a82..7cab9b91a82 100644
--- a/public/-/emojis/1/monkey_face.png
+++ b/app/assets/images/emoji/monkey_face.png
Binary files differ
diff --git a/public/-/emojis/1/monorail.png b/app/assets/images/emoji/monorail.png
index 11eb1f574bf..11eb1f574bf 100644
--- a/public/-/emojis/1/monorail.png
+++ b/app/assets/images/emoji/monorail.png
Binary files differ
diff --git a/public/-/emojis/1/mortar_board.png b/app/assets/images/emoji/mortar_board.png
index 8b17ddd9d00..8b17ddd9d00 100644
--- a/public/-/emojis/1/mortar_board.png
+++ b/app/assets/images/emoji/mortar_board.png
Binary files differ
diff --git a/public/-/emojis/1/mosque.png b/app/assets/images/emoji/mosque.png
index ef770b26d96..ef770b26d96 100644
--- a/public/-/emojis/1/mosque.png
+++ b/app/assets/images/emoji/mosque.png
Binary files differ
diff --git a/public/-/emojis/1/motor_scooter.png b/app/assets/images/emoji/motor_scooter.png
index c5afa72d807..c5afa72d807 100644
--- a/public/-/emojis/1/motor_scooter.png
+++ b/app/assets/images/emoji/motor_scooter.png
Binary files differ
diff --git a/public/-/emojis/1/motorboat.png b/app/assets/images/emoji/motorboat.png
index 0506db1a40f..0506db1a40f 100644
--- a/public/-/emojis/1/motorboat.png
+++ b/app/assets/images/emoji/motorboat.png
Binary files differ
diff --git a/public/-/emojis/1/motorcycle.png b/app/assets/images/emoji/motorcycle.png
index 3d1d567e8ec..3d1d567e8ec 100644
--- a/public/-/emojis/1/motorcycle.png
+++ b/app/assets/images/emoji/motorcycle.png
Binary files differ
diff --git a/public/-/emojis/1/motorway.png b/app/assets/images/emoji/motorway.png
index 8c3d3d03e3f..8c3d3d03e3f 100644
--- a/public/-/emojis/1/motorway.png
+++ b/app/assets/images/emoji/motorway.png
Binary files differ
diff --git a/public/-/emojis/1/mount_fuji.png b/app/assets/images/emoji/mount_fuji.png
index 88a54752458..88a54752458 100644
--- a/public/-/emojis/1/mount_fuji.png
+++ b/app/assets/images/emoji/mount_fuji.png
Binary files differ
diff --git a/public/-/emojis/1/mountain.png b/app/assets/images/emoji/mountain.png
index 6722ebdd294..6722ebdd294 100644
--- a/public/-/emojis/1/mountain.png
+++ b/app/assets/images/emoji/mountain.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_bicyclist.png b/app/assets/images/emoji/mountain_bicyclist.png
index 41d3dc3ac6f..41d3dc3ac6f 100644
--- a/public/-/emojis/1/mountain_bicyclist.png
+++ b/app/assets/images/emoji/mountain_bicyclist.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_bicyclist_tone1.png b/app/assets/images/emoji/mountain_bicyclist_tone1.png
index e9f1daf5e40..e9f1daf5e40 100644
--- a/public/-/emojis/1/mountain_bicyclist_tone1.png
+++ b/app/assets/images/emoji/mountain_bicyclist_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_bicyclist_tone2.png b/app/assets/images/emoji/mountain_bicyclist_tone2.png
index 555b9e29d4d..555b9e29d4d 100644
--- a/public/-/emojis/1/mountain_bicyclist_tone2.png
+++ b/app/assets/images/emoji/mountain_bicyclist_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_bicyclist_tone3.png b/app/assets/images/emoji/mountain_bicyclist_tone3.png
index 7df5508ec8c..7df5508ec8c 100644
--- a/public/-/emojis/1/mountain_bicyclist_tone3.png
+++ b/app/assets/images/emoji/mountain_bicyclist_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_bicyclist_tone4.png b/app/assets/images/emoji/mountain_bicyclist_tone4.png
index f94b3450697..f94b3450697 100644
--- a/public/-/emojis/1/mountain_bicyclist_tone4.png
+++ b/app/assets/images/emoji/mountain_bicyclist_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_bicyclist_tone5.png b/app/assets/images/emoji/mountain_bicyclist_tone5.png
index 16a45861e1f..16a45861e1f 100644
--- a/public/-/emojis/1/mountain_bicyclist_tone5.png
+++ b/app/assets/images/emoji/mountain_bicyclist_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_cableway.png b/app/assets/images/emoji/mountain_cableway.png
index 1dea73ca53b..1dea73ca53b 100644
--- a/public/-/emojis/1/mountain_cableway.png
+++ b/app/assets/images/emoji/mountain_cableway.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_railway.png b/app/assets/images/emoji/mountain_railway.png
index ade2218e469..ade2218e469 100644
--- a/public/-/emojis/1/mountain_railway.png
+++ b/app/assets/images/emoji/mountain_railway.png
Binary files differ
diff --git a/public/-/emojis/1/mountain_snow.png b/app/assets/images/emoji/mountain_snow.png
index 76e1cfd8313..76e1cfd8313 100644
--- a/public/-/emojis/1/mountain_snow.png
+++ b/app/assets/images/emoji/mountain_snow.png
Binary files differ
diff --git a/public/-/emojis/1/mouse.png b/app/assets/images/emoji/mouse.png
index 50afcd3262e..50afcd3262e 100644
--- a/public/-/emojis/1/mouse.png
+++ b/app/assets/images/emoji/mouse.png
Binary files differ
diff --git a/public/-/emojis/1/mouse2.png b/app/assets/images/emoji/mouse2.png
index 20fb041f09f..20fb041f09f 100644
--- a/public/-/emojis/1/mouse2.png
+++ b/app/assets/images/emoji/mouse2.png
Binary files differ
diff --git a/public/-/emojis/1/mouse_three_button.png b/app/assets/images/emoji/mouse_three_button.png
index e84e96ff6e8..e84e96ff6e8 100644
--- a/public/-/emojis/1/mouse_three_button.png
+++ b/app/assets/images/emoji/mouse_three_button.png
Binary files differ
diff --git a/public/-/emojis/1/movie_camera.png b/app/assets/images/emoji/movie_camera.png
index 4e73b130155..4e73b130155 100644
--- a/public/-/emojis/1/movie_camera.png
+++ b/app/assets/images/emoji/movie_camera.png
Binary files differ
diff --git a/public/-/emojis/1/moyai.png b/app/assets/images/emoji/moyai.png
index e6a7779c45b..e6a7779c45b 100644
--- a/public/-/emojis/1/moyai.png
+++ b/app/assets/images/emoji/moyai.png
Binary files differ
diff --git a/public/-/emojis/1/mrs_claus.png b/app/assets/images/emoji/mrs_claus.png
index 9cf2458df1a..9cf2458df1a 100644
--- a/public/-/emojis/1/mrs_claus.png
+++ b/app/assets/images/emoji/mrs_claus.png
Binary files differ
diff --git a/public/-/emojis/1/mrs_claus_tone1.png b/app/assets/images/emoji/mrs_claus_tone1.png
index d8a695d7035..d8a695d7035 100644
--- a/public/-/emojis/1/mrs_claus_tone1.png
+++ b/app/assets/images/emoji/mrs_claus_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/mrs_claus_tone2.png b/app/assets/images/emoji/mrs_claus_tone2.png
index 0e17e8c51f3..0e17e8c51f3 100644
--- a/public/-/emojis/1/mrs_claus_tone2.png
+++ b/app/assets/images/emoji/mrs_claus_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/mrs_claus_tone3.png b/app/assets/images/emoji/mrs_claus_tone3.png
index c3ee4d1dfae..c3ee4d1dfae 100644
--- a/public/-/emojis/1/mrs_claus_tone3.png
+++ b/app/assets/images/emoji/mrs_claus_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/mrs_claus_tone4.png b/app/assets/images/emoji/mrs_claus_tone4.png
index 68a556da2fe..68a556da2fe 100644
--- a/public/-/emojis/1/mrs_claus_tone4.png
+++ b/app/assets/images/emoji/mrs_claus_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/mrs_claus_tone5.png b/app/assets/images/emoji/mrs_claus_tone5.png
index ccab3c40ff2..ccab3c40ff2 100644
--- a/public/-/emojis/1/mrs_claus_tone5.png
+++ b/app/assets/images/emoji/mrs_claus_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/muscle.png b/app/assets/images/emoji/muscle.png
index 7e67c1880f7..7e67c1880f7 100644
--- a/public/-/emojis/1/muscle.png
+++ b/app/assets/images/emoji/muscle.png
Binary files differ
diff --git a/public/-/emojis/1/muscle_tone1.png b/app/assets/images/emoji/muscle_tone1.png
index 1522942ce51..1522942ce51 100644
--- a/public/-/emojis/1/muscle_tone1.png
+++ b/app/assets/images/emoji/muscle_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/muscle_tone2.png b/app/assets/images/emoji/muscle_tone2.png
index 569c6e832ca..569c6e832ca 100644
--- a/public/-/emojis/1/muscle_tone2.png
+++ b/app/assets/images/emoji/muscle_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/muscle_tone3.png b/app/assets/images/emoji/muscle_tone3.png
index 0a76b00fa89..0a76b00fa89 100644
--- a/public/-/emojis/1/muscle_tone3.png
+++ b/app/assets/images/emoji/muscle_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/muscle_tone4.png b/app/assets/images/emoji/muscle_tone4.png
index f0cf31328e0..f0cf31328e0 100644
--- a/public/-/emojis/1/muscle_tone4.png
+++ b/app/assets/images/emoji/muscle_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/muscle_tone5.png b/app/assets/images/emoji/muscle_tone5.png
index 4fda92460e8..4fda92460e8 100644
--- a/public/-/emojis/1/muscle_tone5.png
+++ b/app/assets/images/emoji/muscle_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/mushroom.png b/app/assets/images/emoji/mushroom.png
index dd85742ba2c..dd85742ba2c 100644
--- a/public/-/emojis/1/mushroom.png
+++ b/app/assets/images/emoji/mushroom.png
Binary files differ
diff --git a/public/-/emojis/1/musical_keyboard.png b/app/assets/images/emoji/musical_keyboard.png
index 442b7456842..442b7456842 100644
--- a/public/-/emojis/1/musical_keyboard.png
+++ b/app/assets/images/emoji/musical_keyboard.png
Binary files differ
diff --git a/public/-/emojis/1/musical_note.png b/app/assets/images/emoji/musical_note.png
index 06691ef61bb..06691ef61bb 100644
--- a/public/-/emojis/1/musical_note.png
+++ b/app/assets/images/emoji/musical_note.png
Binary files differ
diff --git a/public/-/emojis/1/musical_score.png b/app/assets/images/emoji/musical_score.png
index 47dc05a8ef5..47dc05a8ef5 100644
--- a/public/-/emojis/1/musical_score.png
+++ b/app/assets/images/emoji/musical_score.png
Binary files differ
diff --git a/public/-/emojis/1/mute.png b/app/assets/images/emoji/mute.png
index 7c1788e5075..7c1788e5075 100644
--- a/public/-/emojis/1/mute.png
+++ b/app/assets/images/emoji/mute.png
Binary files differ
diff --git a/public/-/emojis/1/nail_care.png b/app/assets/images/emoji/nail_care.png
index aa52af7050d..aa52af7050d 100644
--- a/public/-/emojis/1/nail_care.png
+++ b/app/assets/images/emoji/nail_care.png
Binary files differ
diff --git a/public/-/emojis/1/nail_care_tone1.png b/app/assets/images/emoji/nail_care_tone1.png
index 26e883dd244..26e883dd244 100644
--- a/public/-/emojis/1/nail_care_tone1.png
+++ b/app/assets/images/emoji/nail_care_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/nail_care_tone2.png b/app/assets/images/emoji/nail_care_tone2.png
index 61257b47ea3..61257b47ea3 100644
--- a/public/-/emojis/1/nail_care_tone2.png
+++ b/app/assets/images/emoji/nail_care_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/nail_care_tone3.png b/app/assets/images/emoji/nail_care_tone3.png
index 29871b05f62..29871b05f62 100644
--- a/public/-/emojis/1/nail_care_tone3.png
+++ b/app/assets/images/emoji/nail_care_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/nail_care_tone4.png b/app/assets/images/emoji/nail_care_tone4.png
index 2881de0b17d..2881de0b17d 100644
--- a/public/-/emojis/1/nail_care_tone4.png
+++ b/app/assets/images/emoji/nail_care_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/nail_care_tone5.png b/app/assets/images/emoji/nail_care_tone5.png
index a0b7c0a45a6..a0b7c0a45a6 100644
--- a/public/-/emojis/1/nail_care_tone5.png
+++ b/app/assets/images/emoji/nail_care_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/name_badge.png b/app/assets/images/emoji/name_badge.png
index ec5ee213e20..ec5ee213e20 100644
--- a/public/-/emojis/1/name_badge.png
+++ b/app/assets/images/emoji/name_badge.png
Binary files differ
diff --git a/public/-/emojis/1/nauseated_face.png b/app/assets/images/emoji/nauseated_face.png
index a566c109c28..a566c109c28 100644
--- a/public/-/emojis/1/nauseated_face.png
+++ b/app/assets/images/emoji/nauseated_face.png
Binary files differ
diff --git a/public/-/emojis/1/necktie.png b/app/assets/images/emoji/necktie.png
index 1804e7f3ff3..1804e7f3ff3 100644
--- a/public/-/emojis/1/necktie.png
+++ b/app/assets/images/emoji/necktie.png
Binary files differ
diff --git a/public/-/emojis/1/negative_squared_cross_mark.png b/app/assets/images/emoji/negative_squared_cross_mark.png
index dae487f1f98..dae487f1f98 100644
--- a/public/-/emojis/1/negative_squared_cross_mark.png
+++ b/app/assets/images/emoji/negative_squared_cross_mark.png
Binary files differ
diff --git a/public/-/emojis/1/nerd.png b/app/assets/images/emoji/nerd.png
index 7820bd581dc..7820bd581dc 100644
--- a/public/-/emojis/1/nerd.png
+++ b/app/assets/images/emoji/nerd.png
Binary files differ
diff --git a/public/-/emojis/1/neutral_face.png b/app/assets/images/emoji/neutral_face.png
index 065d193afe4..065d193afe4 100644
--- a/public/-/emojis/1/neutral_face.png
+++ b/app/assets/images/emoji/neutral_face.png
Binary files differ
diff --git a/public/-/emojis/1/new.png b/app/assets/images/emoji/new.png
index b4f85488d1a..b4f85488d1a 100644
--- a/public/-/emojis/1/new.png
+++ b/app/assets/images/emoji/new.png
Binary files differ
diff --git a/public/-/emojis/1/new_moon.png b/app/assets/images/emoji/new_moon.png
index ecff72caa42..ecff72caa42 100644
--- a/public/-/emojis/1/new_moon.png
+++ b/app/assets/images/emoji/new_moon.png
Binary files differ
diff --git a/public/-/emojis/1/new_moon_with_face.png b/app/assets/images/emoji/new_moon_with_face.png
index 150dd12400c..150dd12400c 100644
--- a/public/-/emojis/1/new_moon_with_face.png
+++ b/app/assets/images/emoji/new_moon_with_face.png
Binary files differ
diff --git a/public/-/emojis/1/newspaper.png b/app/assets/images/emoji/newspaper.png
index 2aa8f060bde..2aa8f060bde 100644
--- a/public/-/emojis/1/newspaper.png
+++ b/app/assets/images/emoji/newspaper.png
Binary files differ
diff --git a/public/-/emojis/1/newspaper2.png b/app/assets/images/emoji/newspaper2.png
index f64748df2b2..f64748df2b2 100644
--- a/public/-/emojis/1/newspaper2.png
+++ b/app/assets/images/emoji/newspaper2.png
Binary files differ
diff --git a/public/-/emojis/1/ng.png b/app/assets/images/emoji/ng.png
index ee8d20f5ebc..ee8d20f5ebc 100644
--- a/public/-/emojis/1/ng.png
+++ b/app/assets/images/emoji/ng.png
Binary files differ
diff --git a/public/-/emojis/1/night_with_stars.png b/app/assets/images/emoji/night_with_stars.png
index ca2018f456d..ca2018f456d 100644
--- a/public/-/emojis/1/night_with_stars.png
+++ b/app/assets/images/emoji/night_with_stars.png
Binary files differ
diff --git a/public/-/emojis/1/nine.png b/app/assets/images/emoji/nine.png
index 9fce3d1eca9..9fce3d1eca9 100644
--- a/public/-/emojis/1/nine.png
+++ b/app/assets/images/emoji/nine.png
Binary files differ
diff --git a/public/-/emojis/1/no_bell.png b/app/assets/images/emoji/no_bell.png
index 15cb38dd1e7..15cb38dd1e7 100644
--- a/public/-/emojis/1/no_bell.png
+++ b/app/assets/images/emoji/no_bell.png
Binary files differ
diff --git a/public/-/emojis/1/no_bicycles.png b/app/assets/images/emoji/no_bicycles.png
index 19c85421ce9..19c85421ce9 100644
--- a/public/-/emojis/1/no_bicycles.png
+++ b/app/assets/images/emoji/no_bicycles.png
Binary files differ
diff --git a/public/-/emojis/1/no_entry.png b/app/assets/images/emoji/no_entry.png
index 476800fc5c6..476800fc5c6 100644
--- a/public/-/emojis/1/no_entry.png
+++ b/app/assets/images/emoji/no_entry.png
Binary files differ
diff --git a/public/-/emojis/1/no_entry_sign.png b/app/assets/images/emoji/no_entry_sign.png
index d2efd65e74b..d2efd65e74b 100644
--- a/public/-/emojis/1/no_entry_sign.png
+++ b/app/assets/images/emoji/no_entry_sign.png
Binary files differ
diff --git a/public/-/emojis/1/no_good.png b/app/assets/images/emoji/no_good.png
index ed577100322..ed577100322 100644
--- a/public/-/emojis/1/no_good.png
+++ b/app/assets/images/emoji/no_good.png
Binary files differ
diff --git a/public/-/emojis/1/no_good_tone1.png b/app/assets/images/emoji/no_good_tone1.png
index 5c1a3cbb884..5c1a3cbb884 100644
--- a/public/-/emojis/1/no_good_tone1.png
+++ b/app/assets/images/emoji/no_good_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/no_good_tone2.png b/app/assets/images/emoji/no_good_tone2.png
index 80d8021f8fe..80d8021f8fe 100644
--- a/public/-/emojis/1/no_good_tone2.png
+++ b/app/assets/images/emoji/no_good_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/no_good_tone3.png b/app/assets/images/emoji/no_good_tone3.png
index 635e6a00815..635e6a00815 100644
--- a/public/-/emojis/1/no_good_tone3.png
+++ b/app/assets/images/emoji/no_good_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/no_good_tone4.png b/app/assets/images/emoji/no_good_tone4.png
index b96e412a374..b96e412a374 100644
--- a/public/-/emojis/1/no_good_tone4.png
+++ b/app/assets/images/emoji/no_good_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/no_good_tone5.png b/app/assets/images/emoji/no_good_tone5.png
index 9a7084afa0a..9a7084afa0a 100644
--- a/public/-/emojis/1/no_good_tone5.png
+++ b/app/assets/images/emoji/no_good_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/no_mobile_phones.png b/app/assets/images/emoji/no_mobile_phones.png
index 7b1ae6ea579..7b1ae6ea579 100644
--- a/public/-/emojis/1/no_mobile_phones.png
+++ b/app/assets/images/emoji/no_mobile_phones.png
Binary files differ
diff --git a/public/-/emojis/1/no_mouth.png b/app/assets/images/emoji/no_mouth.png
index b642f6c1172..b642f6c1172 100644
--- a/public/-/emojis/1/no_mouth.png
+++ b/app/assets/images/emoji/no_mouth.png
Binary files differ
diff --git a/public/-/emojis/1/no_pedestrians.png b/app/assets/images/emoji/no_pedestrians.png
index 286aa577a23..286aa577a23 100644
--- a/public/-/emojis/1/no_pedestrians.png
+++ b/app/assets/images/emoji/no_pedestrians.png
Binary files differ
diff --git a/public/-/emojis/1/no_smoking.png b/app/assets/images/emoji/no_smoking.png
index 586b8d29d05..586b8d29d05 100644
--- a/public/-/emojis/1/no_smoking.png
+++ b/app/assets/images/emoji/no_smoking.png
Binary files differ
diff --git a/public/-/emojis/1/non-potable_water.png b/app/assets/images/emoji/non-potable_water.png
index 827d4193f4e..827d4193f4e 100644
--- a/public/-/emojis/1/non-potable_water.png
+++ b/app/assets/images/emoji/non-potable_water.png
Binary files differ
diff --git a/public/-/emojis/1/nose.png b/app/assets/images/emoji/nose.png
index 2f04ac5f98f..2f04ac5f98f 100644
--- a/public/-/emojis/1/nose.png
+++ b/app/assets/images/emoji/nose.png
Binary files differ
diff --git a/public/-/emojis/1/nose_tone1.png b/app/assets/images/emoji/nose_tone1.png
index 8008d17506e..8008d17506e 100644
--- a/public/-/emojis/1/nose_tone1.png
+++ b/app/assets/images/emoji/nose_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/nose_tone2.png b/app/assets/images/emoji/nose_tone2.png
index ac17f26e827..ac17f26e827 100644
--- a/public/-/emojis/1/nose_tone2.png
+++ b/app/assets/images/emoji/nose_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/nose_tone3.png b/app/assets/images/emoji/nose_tone3.png
index d8b6cbe0f8e..d8b6cbe0f8e 100644
--- a/public/-/emojis/1/nose_tone3.png
+++ b/app/assets/images/emoji/nose_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/nose_tone4.png b/app/assets/images/emoji/nose_tone4.png
index 004b2631e2e..004b2631e2e 100644
--- a/public/-/emojis/1/nose_tone4.png
+++ b/app/assets/images/emoji/nose_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/nose_tone5.png b/app/assets/images/emoji/nose_tone5.png
index 7b33821f6c9..7b33821f6c9 100644
--- a/public/-/emojis/1/nose_tone5.png
+++ b/app/assets/images/emoji/nose_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/notebook.png b/app/assets/images/emoji/notebook.png
index f6c28b4915d..f6c28b4915d 100644
--- a/public/-/emojis/1/notebook.png
+++ b/app/assets/images/emoji/notebook.png
Binary files differ
diff --git a/public/-/emojis/1/notebook_with_decorative_cover.png b/app/assets/images/emoji/notebook_with_decorative_cover.png
index 03f566b6d2c..03f566b6d2c 100644
--- a/public/-/emojis/1/notebook_with_decorative_cover.png
+++ b/app/assets/images/emoji/notebook_with_decorative_cover.png
Binary files differ
diff --git a/public/-/emojis/1/notepad_spiral.png b/app/assets/images/emoji/notepad_spiral.png
index 85faa10d8ea..85faa10d8ea 100644
--- a/public/-/emojis/1/notepad_spiral.png
+++ b/app/assets/images/emoji/notepad_spiral.png
Binary files differ
diff --git a/public/-/emojis/1/notes.png b/app/assets/images/emoji/notes.png
index 57d499aa181..57d499aa181 100644
--- a/public/-/emojis/1/notes.png
+++ b/app/assets/images/emoji/notes.png
Binary files differ
diff --git a/public/-/emojis/1/nut_and_bolt.png b/app/assets/images/emoji/nut_and_bolt.png
index 4b9ae155319..4b9ae155319 100644
--- a/public/-/emojis/1/nut_and_bolt.png
+++ b/app/assets/images/emoji/nut_and_bolt.png
Binary files differ
diff --git a/public/-/emojis/1/o.png b/app/assets/images/emoji/o.png
index 3fe75ce4675..3fe75ce4675 100644
--- a/public/-/emojis/1/o.png
+++ b/app/assets/images/emoji/o.png
Binary files differ
diff --git a/public/-/emojis/1/o2.png b/app/assets/images/emoji/o2.png
index 73278ba194a..73278ba194a 100644
--- a/public/-/emojis/1/o2.png
+++ b/app/assets/images/emoji/o2.png
Binary files differ
diff --git a/public/-/emojis/1/ocean.png b/app/assets/images/emoji/ocean.png
index 45ff1e87703..45ff1e87703 100644
--- a/public/-/emojis/1/ocean.png
+++ b/app/assets/images/emoji/ocean.png
Binary files differ
diff --git a/public/-/emojis/1/octagonal_sign.png b/app/assets/images/emoji/octagonal_sign.png
index 5ed61004045..5ed61004045 100644
--- a/public/-/emojis/1/octagonal_sign.png
+++ b/app/assets/images/emoji/octagonal_sign.png
Binary files differ
diff --git a/public/-/emojis/1/octopus.png b/app/assets/images/emoji/octopus.png
index 72c84074aac..72c84074aac 100644
--- a/public/-/emojis/1/octopus.png
+++ b/app/assets/images/emoji/octopus.png
Binary files differ
diff --git a/public/-/emojis/1/oden.png b/app/assets/images/emoji/oden.png
index d38a849fece..d38a849fece 100644
--- a/public/-/emojis/1/oden.png
+++ b/app/assets/images/emoji/oden.png
Binary files differ
diff --git a/public/-/emojis/1/office.png b/app/assets/images/emoji/office.png
index 7eee927d1b0..7eee927d1b0 100644
--- a/public/-/emojis/1/office.png
+++ b/app/assets/images/emoji/office.png
Binary files differ
diff --git a/public/-/emojis/1/oil.png b/app/assets/images/emoji/oil.png
index c4c4d42da8b..c4c4d42da8b 100644
--- a/public/-/emojis/1/oil.png
+++ b/app/assets/images/emoji/oil.png
Binary files differ
diff --git a/public/-/emojis/1/ok.png b/app/assets/images/emoji/ok.png
index d0d775532ff..d0d775532ff 100644
--- a/public/-/emojis/1/ok.png
+++ b/app/assets/images/emoji/ok.png
Binary files differ
diff --git a/public/-/emojis/1/ok_hand.png b/app/assets/images/emoji/ok_hand.png
index 028d69b0de3..028d69b0de3 100644
--- a/public/-/emojis/1/ok_hand.png
+++ b/app/assets/images/emoji/ok_hand.png
Binary files differ
diff --git a/public/-/emojis/1/ok_hand_tone1.png b/app/assets/images/emoji/ok_hand_tone1.png
index cecf7b2ab5a..cecf7b2ab5a 100644
--- a/public/-/emojis/1/ok_hand_tone1.png
+++ b/app/assets/images/emoji/ok_hand_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/ok_hand_tone2.png b/app/assets/images/emoji/ok_hand_tone2.png
index c19239bcd3d..c19239bcd3d 100644
--- a/public/-/emojis/1/ok_hand_tone2.png
+++ b/app/assets/images/emoji/ok_hand_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/ok_hand_tone3.png b/app/assets/images/emoji/ok_hand_tone3.png
index 94b65b03ecd..94b65b03ecd 100644
--- a/public/-/emojis/1/ok_hand_tone3.png
+++ b/app/assets/images/emoji/ok_hand_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/ok_hand_tone4.png b/app/assets/images/emoji/ok_hand_tone4.png
index 03d26f08e6a..03d26f08e6a 100644
--- a/public/-/emojis/1/ok_hand_tone4.png
+++ b/app/assets/images/emoji/ok_hand_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/ok_hand_tone5.png b/app/assets/images/emoji/ok_hand_tone5.png
index d4b24086364..d4b24086364 100644
--- a/public/-/emojis/1/ok_hand_tone5.png
+++ b/app/assets/images/emoji/ok_hand_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/ok_woman.png b/app/assets/images/emoji/ok_woman.png
index 90a2c7469c4..90a2c7469c4 100644
--- a/public/-/emojis/1/ok_woman.png
+++ b/app/assets/images/emoji/ok_woman.png
Binary files differ
diff --git a/public/-/emojis/1/ok_woman_tone1.png b/app/assets/images/emoji/ok_woman_tone1.png
index c99543e785b..c99543e785b 100644
--- a/public/-/emojis/1/ok_woman_tone1.png
+++ b/app/assets/images/emoji/ok_woman_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/ok_woman_tone2.png b/app/assets/images/emoji/ok_woman_tone2.png
index ad5fae813db..ad5fae813db 100644
--- a/public/-/emojis/1/ok_woman_tone2.png
+++ b/app/assets/images/emoji/ok_woman_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/ok_woman_tone3.png b/app/assets/images/emoji/ok_woman_tone3.png
index 51bf4fab406..51bf4fab406 100644
--- a/public/-/emojis/1/ok_woman_tone3.png
+++ b/app/assets/images/emoji/ok_woman_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/ok_woman_tone4.png b/app/assets/images/emoji/ok_woman_tone4.png
index ee3f9dc640a..ee3f9dc640a 100644
--- a/public/-/emojis/1/ok_woman_tone4.png
+++ b/app/assets/images/emoji/ok_woman_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/ok_woman_tone5.png b/app/assets/images/emoji/ok_woman_tone5.png
index 62a9d9237f7..62a9d9237f7 100644
--- a/public/-/emojis/1/ok_woman_tone5.png
+++ b/app/assets/images/emoji/ok_woman_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/older_man.png b/app/assets/images/emoji/older_man.png
index 4ace4e6f308..4ace4e6f308 100644
--- a/public/-/emojis/1/older_man.png
+++ b/app/assets/images/emoji/older_man.png
Binary files differ
diff --git a/public/-/emojis/1/older_man_tone1.png b/app/assets/images/emoji/older_man_tone1.png
index ab459baace8..ab459baace8 100644
--- a/public/-/emojis/1/older_man_tone1.png
+++ b/app/assets/images/emoji/older_man_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/older_man_tone2.png b/app/assets/images/emoji/older_man_tone2.png
index f4dfc7694ea..f4dfc7694ea 100644
--- a/public/-/emojis/1/older_man_tone2.png
+++ b/app/assets/images/emoji/older_man_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/older_man_tone3.png b/app/assets/images/emoji/older_man_tone3.png
index 5ffd11792f4..5ffd11792f4 100644
--- a/public/-/emojis/1/older_man_tone3.png
+++ b/app/assets/images/emoji/older_man_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/older_man_tone4.png b/app/assets/images/emoji/older_man_tone4.png
index b350a764bfd..b350a764bfd 100644
--- a/public/-/emojis/1/older_man_tone4.png
+++ b/app/assets/images/emoji/older_man_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/older_man_tone5.png b/app/assets/images/emoji/older_man_tone5.png
index 05fe24a1708..05fe24a1708 100644
--- a/public/-/emojis/1/older_man_tone5.png
+++ b/app/assets/images/emoji/older_man_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/older_woman.png b/app/assets/images/emoji/older_woman.png
index 52dc4987143..52dc4987143 100644
--- a/public/-/emojis/1/older_woman.png
+++ b/app/assets/images/emoji/older_woman.png
Binary files differ
diff --git a/public/-/emojis/1/older_woman_tone1.png b/app/assets/images/emoji/older_woman_tone1.png
index b49e821402c..b49e821402c 100644
--- a/public/-/emojis/1/older_woman_tone1.png
+++ b/app/assets/images/emoji/older_woman_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/older_woman_tone2.png b/app/assets/images/emoji/older_woman_tone2.png
index e86bf5ab3b7..e86bf5ab3b7 100644
--- a/public/-/emojis/1/older_woman_tone2.png
+++ b/app/assets/images/emoji/older_woman_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/older_woman_tone3.png b/app/assets/images/emoji/older_woman_tone3.png
index 83fc14b0874..83fc14b0874 100644
--- a/public/-/emojis/1/older_woman_tone3.png
+++ b/app/assets/images/emoji/older_woman_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/older_woman_tone4.png b/app/assets/images/emoji/older_woman_tone4.png
index e4aa8a424d4..e4aa8a424d4 100644
--- a/public/-/emojis/1/older_woman_tone4.png
+++ b/app/assets/images/emoji/older_woman_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/older_woman_tone5.png b/app/assets/images/emoji/older_woman_tone5.png
index 4009012bb0a..4009012bb0a 100644
--- a/public/-/emojis/1/older_woman_tone5.png
+++ b/app/assets/images/emoji/older_woman_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/om_symbol.png b/app/assets/images/emoji/om_symbol.png
index a35c63c459c..a35c63c459c 100644
--- a/public/-/emojis/1/om_symbol.png
+++ b/app/assets/images/emoji/om_symbol.png
Binary files differ
diff --git a/public/-/emojis/1/on.png b/app/assets/images/emoji/on.png
index a0c371ae21e..a0c371ae21e 100644
--- a/public/-/emojis/1/on.png
+++ b/app/assets/images/emoji/on.png
Binary files differ
diff --git a/public/-/emojis/1/oncoming_automobile.png b/app/assets/images/emoji/oncoming_automobile.png
index 3c7e1d52e63..3c7e1d52e63 100644
--- a/public/-/emojis/1/oncoming_automobile.png
+++ b/app/assets/images/emoji/oncoming_automobile.png
Binary files differ
diff --git a/public/-/emojis/1/oncoming_bus.png b/app/assets/images/emoji/oncoming_bus.png
index ad91e256c7f..ad91e256c7f 100644
--- a/public/-/emojis/1/oncoming_bus.png
+++ b/app/assets/images/emoji/oncoming_bus.png
Binary files differ
diff --git a/public/-/emojis/1/oncoming_police_car.png b/app/assets/images/emoji/oncoming_police_car.png
index c9109c85b5d..c9109c85b5d 100644
--- a/public/-/emojis/1/oncoming_police_car.png
+++ b/app/assets/images/emoji/oncoming_police_car.png
Binary files differ
diff --git a/public/-/emojis/1/oncoming_taxi.png b/app/assets/images/emoji/oncoming_taxi.png
index fea14e45846..fea14e45846 100644
--- a/public/-/emojis/1/oncoming_taxi.png
+++ b/app/assets/images/emoji/oncoming_taxi.png
Binary files differ
diff --git a/public/-/emojis/1/one.png b/app/assets/images/emoji/one.png
index e6d84b80128..e6d84b80128 100644
--- a/public/-/emojis/1/one.png
+++ b/app/assets/images/emoji/one.png
Binary files differ
diff --git a/public/-/emojis/1/open_file_folder.png b/app/assets/images/emoji/open_file_folder.png
index 3993b09222f..3993b09222f 100644
--- a/public/-/emojis/1/open_file_folder.png
+++ b/app/assets/images/emoji/open_file_folder.png
Binary files differ
diff --git a/public/-/emojis/1/open_hands.png b/app/assets/images/emoji/open_hands.png
index 1cf75c9101e..1cf75c9101e 100644
--- a/public/-/emojis/1/open_hands.png
+++ b/app/assets/images/emoji/open_hands.png
Binary files differ
diff --git a/public/-/emojis/1/open_hands_tone1.png b/app/assets/images/emoji/open_hands_tone1.png
index 352d2614f11..352d2614f11 100644
--- a/public/-/emojis/1/open_hands_tone1.png
+++ b/app/assets/images/emoji/open_hands_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/open_hands_tone2.png b/app/assets/images/emoji/open_hands_tone2.png
index 70824a50c73..70824a50c73 100644
--- a/public/-/emojis/1/open_hands_tone2.png
+++ b/app/assets/images/emoji/open_hands_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/open_hands_tone3.png b/app/assets/images/emoji/open_hands_tone3.png
index d7d136bd3db..d7d136bd3db 100644
--- a/public/-/emojis/1/open_hands_tone3.png
+++ b/app/assets/images/emoji/open_hands_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/open_hands_tone4.png b/app/assets/images/emoji/open_hands_tone4.png
index df4eaa711e7..df4eaa711e7 100644
--- a/public/-/emojis/1/open_hands_tone4.png
+++ b/app/assets/images/emoji/open_hands_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/open_hands_tone5.png b/app/assets/images/emoji/open_hands_tone5.png
index 7dc04eaebd8..7dc04eaebd8 100644
--- a/public/-/emojis/1/open_hands_tone5.png
+++ b/app/assets/images/emoji/open_hands_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/open_mouth.png b/app/assets/images/emoji/open_mouth.png
index a62cd27e148..a62cd27e148 100644
--- a/public/-/emojis/1/open_mouth.png
+++ b/app/assets/images/emoji/open_mouth.png
Binary files differ
diff --git a/public/-/emojis/1/ophiuchus.png b/app/assets/images/emoji/ophiuchus.png
index 0a780a700da..0a780a700da 100644
--- a/public/-/emojis/1/ophiuchus.png
+++ b/app/assets/images/emoji/ophiuchus.png
Binary files differ
diff --git a/public/-/emojis/1/orange_book.png b/app/assets/images/emoji/orange_book.png
index ab40e6ae6a2..ab40e6ae6a2 100644
--- a/public/-/emojis/1/orange_book.png
+++ b/app/assets/images/emoji/orange_book.png
Binary files differ
diff --git a/public/-/emojis/1/orthodox_cross.png b/app/assets/images/emoji/orthodox_cross.png
index 0530e33a4d4..0530e33a4d4 100644
--- a/public/-/emojis/1/orthodox_cross.png
+++ b/app/assets/images/emoji/orthodox_cross.png
Binary files differ
diff --git a/public/-/emojis/1/outbox_tray.png b/app/assets/images/emoji/outbox_tray.png
index 46493ed5b2c..46493ed5b2c 100644
--- a/public/-/emojis/1/outbox_tray.png
+++ b/app/assets/images/emoji/outbox_tray.png
Binary files differ
diff --git a/public/-/emojis/1/owl.png b/app/assets/images/emoji/owl.png
index fa6815480c3..fa6815480c3 100644
--- a/public/-/emojis/1/owl.png
+++ b/app/assets/images/emoji/owl.png
Binary files differ
diff --git a/public/-/emojis/1/ox.png b/app/assets/images/emoji/ox.png
index badf5708f2f..badf5708f2f 100644
--- a/public/-/emojis/1/ox.png
+++ b/app/assets/images/emoji/ox.png
Binary files differ
diff --git a/public/-/emojis/1/package.png b/app/assets/images/emoji/package.png
index 85431756ad8..85431756ad8 100644
--- a/public/-/emojis/1/package.png
+++ b/app/assets/images/emoji/package.png
Binary files differ
diff --git a/public/-/emojis/1/page_facing_up.png b/app/assets/images/emoji/page_facing_up.png
index ba4ed757e01..ba4ed757e01 100644
--- a/public/-/emojis/1/page_facing_up.png
+++ b/app/assets/images/emoji/page_facing_up.png
Binary files differ
diff --git a/public/-/emojis/1/page_with_curl.png b/app/assets/images/emoji/page_with_curl.png
index 06355319c74..06355319c74 100644
--- a/public/-/emojis/1/page_with_curl.png
+++ b/app/assets/images/emoji/page_with_curl.png
Binary files differ
diff --git a/public/-/emojis/1/pager.png b/app/assets/images/emoji/pager.png
index b24b99306a2..b24b99306a2 100644
--- a/public/-/emojis/1/pager.png
+++ b/app/assets/images/emoji/pager.png
Binary files differ
diff --git a/public/-/emojis/1/paintbrush.png b/app/assets/images/emoji/paintbrush.png
index 28bffbaa3c9..28bffbaa3c9 100644
--- a/public/-/emojis/1/paintbrush.png
+++ b/app/assets/images/emoji/paintbrush.png
Binary files differ
diff --git a/public/-/emojis/1/palm_tree.png b/app/assets/images/emoji/palm_tree.png
index 4bbb10f4f19..4bbb10f4f19 100644
--- a/public/-/emojis/1/palm_tree.png
+++ b/app/assets/images/emoji/palm_tree.png
Binary files differ
diff --git a/public/-/emojis/1/pancakes.png b/app/assets/images/emoji/pancakes.png
index 6223d1a28e9..6223d1a28e9 100644
--- a/public/-/emojis/1/pancakes.png
+++ b/app/assets/images/emoji/pancakes.png
Binary files differ
diff --git a/public/-/emojis/1/panda_face.png b/app/assets/images/emoji/panda_face.png
index 978382775ce..978382775ce 100644
--- a/public/-/emojis/1/panda_face.png
+++ b/app/assets/images/emoji/panda_face.png
Binary files differ
diff --git a/public/-/emojis/1/paperclip.png b/app/assets/images/emoji/paperclip.png
index 8cd8d4f8750..8cd8d4f8750 100644
--- a/public/-/emojis/1/paperclip.png
+++ b/app/assets/images/emoji/paperclip.png
Binary files differ
diff --git a/public/-/emojis/1/paperclips.png b/app/assets/images/emoji/paperclips.png
index 76021e8c705..76021e8c705 100644
--- a/public/-/emojis/1/paperclips.png
+++ b/app/assets/images/emoji/paperclips.png
Binary files differ
diff --git a/public/-/emojis/1/park.png b/app/assets/images/emoji/park.png
index 63ec7016301..63ec7016301 100644
--- a/public/-/emojis/1/park.png
+++ b/app/assets/images/emoji/park.png
Binary files differ
diff --git a/public/-/emojis/1/parking.png b/app/assets/images/emoji/parking.png
index 7be7dac27e8..7be7dac27e8 100644
--- a/public/-/emojis/1/parking.png
+++ b/app/assets/images/emoji/parking.png
Binary files differ
diff --git a/public/-/emojis/1/part_alternation_mark.png b/app/assets/images/emoji/part_alternation_mark.png
index 70453d41528..70453d41528 100644
--- a/public/-/emojis/1/part_alternation_mark.png
+++ b/app/assets/images/emoji/part_alternation_mark.png
Binary files differ
diff --git a/public/-/emojis/1/partly_sunny.png b/app/assets/images/emoji/partly_sunny.png
index a55e59c344c..a55e59c344c 100644
--- a/public/-/emojis/1/partly_sunny.png
+++ b/app/assets/images/emoji/partly_sunny.png
Binary files differ
diff --git a/public/-/emojis/1/passport_control.png b/app/assets/images/emoji/passport_control.png
index 079e34ee4d4..079e34ee4d4 100644
--- a/public/-/emojis/1/passport_control.png
+++ b/app/assets/images/emoji/passport_control.png
Binary files differ
diff --git a/public/-/emojis/1/pause_button.png b/app/assets/images/emoji/pause_button.png
index 4f07e7ebfd7..4f07e7ebfd7 100644
--- a/public/-/emojis/1/pause_button.png
+++ b/app/assets/images/emoji/pause_button.png
Binary files differ
diff --git a/public/-/emojis/1/peace.png b/app/assets/images/emoji/peace.png
index 86033faf477..86033faf477 100644
--- a/public/-/emojis/1/peace.png
+++ b/app/assets/images/emoji/peace.png
Binary files differ
diff --git a/public/-/emojis/1/peach.png b/app/assets/images/emoji/peach.png
index 9ab57cbb758..9ab57cbb758 100644
--- a/public/-/emojis/1/peach.png
+++ b/app/assets/images/emoji/peach.png
Binary files differ
diff --git a/public/-/emojis/1/peanuts.png b/app/assets/images/emoji/peanuts.png
index b64fadad010..b64fadad010 100644
--- a/public/-/emojis/1/peanuts.png
+++ b/app/assets/images/emoji/peanuts.png
Binary files differ
diff --git a/public/-/emojis/1/pear.png b/app/assets/images/emoji/pear.png
index 3869f718bcf..3869f718bcf 100644
--- a/public/-/emojis/1/pear.png
+++ b/app/assets/images/emoji/pear.png
Binary files differ
diff --git a/public/-/emojis/1/pen_ballpoint.png b/app/assets/images/emoji/pen_ballpoint.png
index 6ef7a342433..6ef7a342433 100644
--- a/public/-/emojis/1/pen_ballpoint.png
+++ b/app/assets/images/emoji/pen_ballpoint.png
Binary files differ
diff --git a/public/-/emojis/1/pen_fountain.png b/app/assets/images/emoji/pen_fountain.png
index 3ca4bd2c231..3ca4bd2c231 100644
--- a/public/-/emojis/1/pen_fountain.png
+++ b/app/assets/images/emoji/pen_fountain.png
Binary files differ
diff --git a/public/-/emojis/1/pencil.png b/app/assets/images/emoji/pencil.png
index edc6155e168..edc6155e168 100644
--- a/public/-/emojis/1/pencil.png
+++ b/app/assets/images/emoji/pencil.png
Binary files differ
diff --git a/public/-/emojis/1/pencil2.png b/app/assets/images/emoji/pencil2.png
index 3833d590fa2..3833d590fa2 100644
--- a/public/-/emojis/1/pencil2.png
+++ b/app/assets/images/emoji/pencil2.png
Binary files differ
diff --git a/public/-/emojis/1/penguin.png b/app/assets/images/emoji/penguin.png
index c0064fb9734..c0064fb9734 100644
--- a/public/-/emojis/1/penguin.png
+++ b/app/assets/images/emoji/penguin.png
Binary files differ
diff --git a/public/-/emojis/1/pensive.png b/app/assets/images/emoji/pensive.png
index 490fb566954..490fb566954 100644
--- a/public/-/emojis/1/pensive.png
+++ b/app/assets/images/emoji/pensive.png
Binary files differ
diff --git a/public/-/emojis/1/performing_arts.png b/app/assets/images/emoji/performing_arts.png
index 685441fdaa1..685441fdaa1 100644
--- a/public/-/emojis/1/performing_arts.png
+++ b/app/assets/images/emoji/performing_arts.png
Binary files differ
diff --git a/public/-/emojis/1/persevere.png b/app/assets/images/emoji/persevere.png
index 646a05fe908..646a05fe908 100644
--- a/public/-/emojis/1/persevere.png
+++ b/app/assets/images/emoji/persevere.png
Binary files differ
diff --git a/public/-/emojis/1/person_frowning.png b/app/assets/images/emoji/person_frowning.png
index 579324959a1..579324959a1 100644
--- a/public/-/emojis/1/person_frowning.png
+++ b/app/assets/images/emoji/person_frowning.png
Binary files differ
diff --git a/public/-/emojis/1/person_frowning_tone1.png b/app/assets/images/emoji/person_frowning_tone1.png
index 21d3bb43923..21d3bb43923 100644
--- a/public/-/emojis/1/person_frowning_tone1.png
+++ b/app/assets/images/emoji/person_frowning_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/person_frowning_tone2.png b/app/assets/images/emoji/person_frowning_tone2.png
index 973f5fc8382..973f5fc8382 100644
--- a/public/-/emojis/1/person_frowning_tone2.png
+++ b/app/assets/images/emoji/person_frowning_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/person_frowning_tone3.png b/app/assets/images/emoji/person_frowning_tone3.png
index 41fbcc78816..41fbcc78816 100644
--- a/public/-/emojis/1/person_frowning_tone3.png
+++ b/app/assets/images/emoji/person_frowning_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/person_frowning_tone4.png b/app/assets/images/emoji/person_frowning_tone4.png
index 5a37c741030..5a37c741030 100644
--- a/public/-/emojis/1/person_frowning_tone4.png
+++ b/app/assets/images/emoji/person_frowning_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/person_frowning_tone5.png b/app/assets/images/emoji/person_frowning_tone5.png
index e08141f3efe..e08141f3efe 100644
--- a/public/-/emojis/1/person_frowning_tone5.png
+++ b/app/assets/images/emoji/person_frowning_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_blond_hair.png b/app/assets/images/emoji/person_with_blond_hair.png
index ad6f01a7dda..ad6f01a7dda 100644
--- a/public/-/emojis/1/person_with_blond_hair.png
+++ b/app/assets/images/emoji/person_with_blond_hair.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_blond_hair_tone1.png b/app/assets/images/emoji/person_with_blond_hair_tone1.png
index 7d18ef24445..7d18ef24445 100644
--- a/public/-/emojis/1/person_with_blond_hair_tone1.png
+++ b/app/assets/images/emoji/person_with_blond_hair_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_blond_hair_tone2.png b/app/assets/images/emoji/person_with_blond_hair_tone2.png
index dae1307315c..dae1307315c 100644
--- a/public/-/emojis/1/person_with_blond_hair_tone2.png
+++ b/app/assets/images/emoji/person_with_blond_hair_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_blond_hair_tone3.png b/app/assets/images/emoji/person_with_blond_hair_tone3.png
index 684677e8e5a..684677e8e5a 100644
--- a/public/-/emojis/1/person_with_blond_hair_tone3.png
+++ b/app/assets/images/emoji/person_with_blond_hair_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_blond_hair_tone4.png b/app/assets/images/emoji/person_with_blond_hair_tone4.png
index 012be0b51f8..012be0b51f8 100644
--- a/public/-/emojis/1/person_with_blond_hair_tone4.png
+++ b/app/assets/images/emoji/person_with_blond_hair_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_blond_hair_tone5.png b/app/assets/images/emoji/person_with_blond_hair_tone5.png
index d4ecc4cf44b..d4ecc4cf44b 100644
--- a/public/-/emojis/1/person_with_blond_hair_tone5.png
+++ b/app/assets/images/emoji/person_with_blond_hair_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_pouting_face.png b/app/assets/images/emoji/person_with_pouting_face.png
index 10eb0571078..10eb0571078 100644
--- a/public/-/emojis/1/person_with_pouting_face.png
+++ b/app/assets/images/emoji/person_with_pouting_face.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_pouting_face_tone1.png b/app/assets/images/emoji/person_with_pouting_face_tone1.png
index 57e826b75a4..57e826b75a4 100644
--- a/public/-/emojis/1/person_with_pouting_face_tone1.png
+++ b/app/assets/images/emoji/person_with_pouting_face_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_pouting_face_tone2.png b/app/assets/images/emoji/person_with_pouting_face_tone2.png
index 3f317c0c25f..3f317c0c25f 100644
--- a/public/-/emojis/1/person_with_pouting_face_tone2.png
+++ b/app/assets/images/emoji/person_with_pouting_face_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_pouting_face_tone3.png b/app/assets/images/emoji/person_with_pouting_face_tone3.png
index d2fbb6c20bf..d2fbb6c20bf 100644
--- a/public/-/emojis/1/person_with_pouting_face_tone3.png
+++ b/app/assets/images/emoji/person_with_pouting_face_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_pouting_face_tone4.png b/app/assets/images/emoji/person_with_pouting_face_tone4.png
index 643ceb4a5c5..643ceb4a5c5 100644
--- a/public/-/emojis/1/person_with_pouting_face_tone4.png
+++ b/app/assets/images/emoji/person_with_pouting_face_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/person_with_pouting_face_tone5.png b/app/assets/images/emoji/person_with_pouting_face_tone5.png
index b2eb6859c32..b2eb6859c32 100644
--- a/public/-/emojis/1/person_with_pouting_face_tone5.png
+++ b/app/assets/images/emoji/person_with_pouting_face_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/pick.png b/app/assets/images/emoji/pick.png
index 6370fe6d791..6370fe6d791 100644
--- a/public/-/emojis/1/pick.png
+++ b/app/assets/images/emoji/pick.png
Binary files differ
diff --git a/public/-/emojis/1/pig.png b/app/assets/images/emoji/pig.png
index afe05ca1676..afe05ca1676 100644
--- a/public/-/emojis/1/pig.png
+++ b/app/assets/images/emoji/pig.png
Binary files differ
diff --git a/public/-/emojis/1/pig2.png b/app/assets/images/emoji/pig2.png
index 5f31c1a2d75..5f31c1a2d75 100644
--- a/public/-/emojis/1/pig2.png
+++ b/app/assets/images/emoji/pig2.png
Binary files differ
diff --git a/public/-/emojis/1/pig_nose.png b/app/assets/images/emoji/pig_nose.png
index 3610ae4a910..3610ae4a910 100644
--- a/public/-/emojis/1/pig_nose.png
+++ b/app/assets/images/emoji/pig_nose.png
Binary files differ
diff --git a/public/-/emojis/1/pill.png b/app/assets/images/emoji/pill.png
index 1d4530e77a3..1d4530e77a3 100644
--- a/public/-/emojis/1/pill.png
+++ b/app/assets/images/emoji/pill.png
Binary files differ
diff --git a/public/-/emojis/1/pineapple.png b/app/assets/images/emoji/pineapple.png
index c89a1606462..c89a1606462 100644
--- a/public/-/emojis/1/pineapple.png
+++ b/app/assets/images/emoji/pineapple.png
Binary files differ
diff --git a/public/-/emojis/1/ping_pong.png b/app/assets/images/emoji/ping_pong.png
index ff3c51727d1..ff3c51727d1 100644
--- a/public/-/emojis/1/ping_pong.png
+++ b/app/assets/images/emoji/ping_pong.png
Binary files differ
diff --git a/public/-/emojis/1/pisces.png b/app/assets/images/emoji/pisces.png
index 7f6f646a95c..7f6f646a95c 100644
--- a/public/-/emojis/1/pisces.png
+++ b/app/assets/images/emoji/pisces.png
Binary files differ
diff --git a/public/-/emojis/1/pizza.png b/app/assets/images/emoji/pizza.png
index e07365cb398..e07365cb398 100644
--- a/public/-/emojis/1/pizza.png
+++ b/app/assets/images/emoji/pizza.png
Binary files differ
diff --git a/public/-/emojis/1/place_of_worship.png b/app/assets/images/emoji/place_of_worship.png
index 207d59cce85..207d59cce85 100644
--- a/public/-/emojis/1/place_of_worship.png
+++ b/app/assets/images/emoji/place_of_worship.png
Binary files differ
diff --git a/public/-/emojis/1/play_pause.png b/app/assets/images/emoji/play_pause.png
index a9f857139ac..a9f857139ac 100644
--- a/public/-/emojis/1/play_pause.png
+++ b/app/assets/images/emoji/play_pause.png
Binary files differ
diff --git a/public/-/emojis/1/point_down.png b/app/assets/images/emoji/point_down.png
index 00d3d13ab5c..00d3d13ab5c 100644
--- a/public/-/emojis/1/point_down.png
+++ b/app/assets/images/emoji/point_down.png
Binary files differ
diff --git a/public/-/emojis/1/point_down_tone1.png b/app/assets/images/emoji/point_down_tone1.png
index 140f157d8c7..140f157d8c7 100644
--- a/public/-/emojis/1/point_down_tone1.png
+++ b/app/assets/images/emoji/point_down_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/point_down_tone2.png b/app/assets/images/emoji/point_down_tone2.png
index d518544f7fa..d518544f7fa 100644
--- a/public/-/emojis/1/point_down_tone2.png
+++ b/app/assets/images/emoji/point_down_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/point_down_tone3.png b/app/assets/images/emoji/point_down_tone3.png
index 018b688b8b7..018b688b8b7 100644
--- a/public/-/emojis/1/point_down_tone3.png
+++ b/app/assets/images/emoji/point_down_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/point_down_tone4.png b/app/assets/images/emoji/point_down_tone4.png
index 98845bf6f72..98845bf6f72 100644
--- a/public/-/emojis/1/point_down_tone4.png
+++ b/app/assets/images/emoji/point_down_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/point_down_tone5.png b/app/assets/images/emoji/point_down_tone5.png
index 9a9b039a9fc..9a9b039a9fc 100644
--- a/public/-/emojis/1/point_down_tone5.png
+++ b/app/assets/images/emoji/point_down_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/point_left.png b/app/assets/images/emoji/point_left.png
index 599fa2e3cf1..599fa2e3cf1 100644
--- a/public/-/emojis/1/point_left.png
+++ b/app/assets/images/emoji/point_left.png
Binary files differ
diff --git a/public/-/emojis/1/point_left_tone1.png b/app/assets/images/emoji/point_left_tone1.png
index 88e2c306076..88e2c306076 100644
--- a/public/-/emojis/1/point_left_tone1.png
+++ b/app/assets/images/emoji/point_left_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/point_left_tone2.png b/app/assets/images/emoji/point_left_tone2.png
index d3c89d87c5f..d3c89d87c5f 100644
--- a/public/-/emojis/1/point_left_tone2.png
+++ b/app/assets/images/emoji/point_left_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/point_left_tone3.png b/app/assets/images/emoji/point_left_tone3.png
index b23b9167358..b23b9167358 100644
--- a/public/-/emojis/1/point_left_tone3.png
+++ b/app/assets/images/emoji/point_left_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/point_left_tone4.png b/app/assets/images/emoji/point_left_tone4.png
index 3093f325c27..3093f325c27 100644
--- a/public/-/emojis/1/point_left_tone4.png
+++ b/app/assets/images/emoji/point_left_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/point_left_tone5.png b/app/assets/images/emoji/point_left_tone5.png
index 2b4cbfa120c..2b4cbfa120c 100644
--- a/public/-/emojis/1/point_left_tone5.png
+++ b/app/assets/images/emoji/point_left_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/point_right.png b/app/assets/images/emoji/point_right.png
index 93a3cd34aa5..93a3cd34aa5 100644
--- a/public/-/emojis/1/point_right.png
+++ b/app/assets/images/emoji/point_right.png
Binary files differ
diff --git a/public/-/emojis/1/point_right_tone1.png b/app/assets/images/emoji/point_right_tone1.png
index 4a28c6bbc89..4a28c6bbc89 100644
--- a/public/-/emojis/1/point_right_tone1.png
+++ b/app/assets/images/emoji/point_right_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/point_right_tone2.png b/app/assets/images/emoji/point_right_tone2.png
index 7cb13231733..7cb13231733 100644
--- a/public/-/emojis/1/point_right_tone2.png
+++ b/app/assets/images/emoji/point_right_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/point_right_tone3.png b/app/assets/images/emoji/point_right_tone3.png
index 5514807d71a..5514807d71a 100644
--- a/public/-/emojis/1/point_right_tone3.png
+++ b/app/assets/images/emoji/point_right_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/point_right_tone4.png b/app/assets/images/emoji/point_right_tone4.png
index b8541d6440d..b8541d6440d 100644
--- a/public/-/emojis/1/point_right_tone4.png
+++ b/app/assets/images/emoji/point_right_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/point_right_tone5.png b/app/assets/images/emoji/point_right_tone5.png
index 1b7aab07bb1..1b7aab07bb1 100644
--- a/public/-/emojis/1/point_right_tone5.png
+++ b/app/assets/images/emoji/point_right_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/point_up.png b/app/assets/images/emoji/point_up.png
index f4978ff0f00..f4978ff0f00 100644
--- a/public/-/emojis/1/point_up.png
+++ b/app/assets/images/emoji/point_up.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_2.png b/app/assets/images/emoji/point_up_2.png
index bc496dfeae4..bc496dfeae4 100644
--- a/public/-/emojis/1/point_up_2.png
+++ b/app/assets/images/emoji/point_up_2.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_2_tone1.png b/app/assets/images/emoji/point_up_2_tone1.png
index a12a7e78430..a12a7e78430 100644
--- a/public/-/emojis/1/point_up_2_tone1.png
+++ b/app/assets/images/emoji/point_up_2_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_2_tone2.png b/app/assets/images/emoji/point_up_2_tone2.png
index cdff40ceab0..cdff40ceab0 100644
--- a/public/-/emojis/1/point_up_2_tone2.png
+++ b/app/assets/images/emoji/point_up_2_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_2_tone3.png b/app/assets/images/emoji/point_up_2_tone3.png
index a07ce9e5ae8..a07ce9e5ae8 100644
--- a/public/-/emojis/1/point_up_2_tone3.png
+++ b/app/assets/images/emoji/point_up_2_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_2_tone4.png b/app/assets/images/emoji/point_up_2_tone4.png
index 4f86c88ba42..4f86c88ba42 100644
--- a/public/-/emojis/1/point_up_2_tone4.png
+++ b/app/assets/images/emoji/point_up_2_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_2_tone5.png b/app/assets/images/emoji/point_up_2_tone5.png
index ed1b26c35d3..ed1b26c35d3 100644
--- a/public/-/emojis/1/point_up_2_tone5.png
+++ b/app/assets/images/emoji/point_up_2_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_tone1.png b/app/assets/images/emoji/point_up_tone1.png
index 6a9db21d64c..6a9db21d64c 100644
--- a/public/-/emojis/1/point_up_tone1.png
+++ b/app/assets/images/emoji/point_up_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_tone2.png b/app/assets/images/emoji/point_up_tone2.png
index 15aa9ea0e05..15aa9ea0e05 100644
--- a/public/-/emojis/1/point_up_tone2.png
+++ b/app/assets/images/emoji/point_up_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_tone3.png b/app/assets/images/emoji/point_up_tone3.png
index 652b73a9c5d..652b73a9c5d 100644
--- a/public/-/emojis/1/point_up_tone3.png
+++ b/app/assets/images/emoji/point_up_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_tone4.png b/app/assets/images/emoji/point_up_tone4.png
index 692bad926e9..692bad926e9 100644
--- a/public/-/emojis/1/point_up_tone4.png
+++ b/app/assets/images/emoji/point_up_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/point_up_tone5.png b/app/assets/images/emoji/point_up_tone5.png
index 1e1b10fb71c..1e1b10fb71c 100644
--- a/public/-/emojis/1/point_up_tone5.png
+++ b/app/assets/images/emoji/point_up_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/police_car.png b/app/assets/images/emoji/police_car.png
index 3da4253de7e..3da4253de7e 100644
--- a/public/-/emojis/1/police_car.png
+++ b/app/assets/images/emoji/police_car.png
Binary files differ
diff --git a/public/-/emojis/1/poodle.png b/app/assets/images/emoji/poodle.png
index 8ec39e396af..8ec39e396af 100644
--- a/public/-/emojis/1/poodle.png
+++ b/app/assets/images/emoji/poodle.png
Binary files differ
diff --git a/public/-/emojis/1/poop.png b/app/assets/images/emoji/poop.png
index 10b15e72d56..10b15e72d56 100644
--- a/public/-/emojis/1/poop.png
+++ b/app/assets/images/emoji/poop.png
Binary files differ
diff --git a/public/-/emojis/1/popcorn.png b/app/assets/images/emoji/popcorn.png
index 36853e381d4..36853e381d4 100644
--- a/public/-/emojis/1/popcorn.png
+++ b/app/assets/images/emoji/popcorn.png
Binary files differ
diff --git a/public/-/emojis/1/post_office.png b/app/assets/images/emoji/post_office.png
index a23848f9aa0..a23848f9aa0 100644
--- a/public/-/emojis/1/post_office.png
+++ b/app/assets/images/emoji/post_office.png
Binary files differ
diff --git a/public/-/emojis/1/postal_horn.png b/app/assets/images/emoji/postal_horn.png
index c173b8dbd67..c173b8dbd67 100644
--- a/public/-/emojis/1/postal_horn.png
+++ b/app/assets/images/emoji/postal_horn.png
Binary files differ
diff --git a/public/-/emojis/1/postbox.png b/app/assets/images/emoji/postbox.png
index 07c9c4ab3d6..07c9c4ab3d6 100644
--- a/public/-/emojis/1/postbox.png
+++ b/app/assets/images/emoji/postbox.png
Binary files differ
diff --git a/public/-/emojis/1/potable_water.png b/app/assets/images/emoji/potable_water.png
index 2c610049459..2c610049459 100644
--- a/public/-/emojis/1/potable_water.png
+++ b/app/assets/images/emoji/potable_water.png
Binary files differ
diff --git a/public/-/emojis/1/potato.png b/app/assets/images/emoji/potato.png
index 70350ca2c0a..70350ca2c0a 100644
--- a/public/-/emojis/1/potato.png
+++ b/app/assets/images/emoji/potato.png
Binary files differ
diff --git a/public/-/emojis/1/pouch.png b/app/assets/images/emoji/pouch.png
index 8795c6c66ff..8795c6c66ff 100644
--- a/public/-/emojis/1/pouch.png
+++ b/app/assets/images/emoji/pouch.png
Binary files differ
diff --git a/public/-/emojis/1/poultry_leg.png b/app/assets/images/emoji/poultry_leg.png
index eea4a53a2f9..eea4a53a2f9 100644
--- a/public/-/emojis/1/poultry_leg.png
+++ b/app/assets/images/emoji/poultry_leg.png
Binary files differ
diff --git a/public/-/emojis/1/pound.png b/app/assets/images/emoji/pound.png
index a0d4c4099e9..a0d4c4099e9 100644
--- a/public/-/emojis/1/pound.png
+++ b/app/assets/images/emoji/pound.png
Binary files differ
diff --git a/public/-/emojis/1/pouting_cat.png b/app/assets/images/emoji/pouting_cat.png
index 41ddfeab42b..41ddfeab42b 100644
--- a/public/-/emojis/1/pouting_cat.png
+++ b/app/assets/images/emoji/pouting_cat.png
Binary files differ
diff --git a/public/-/emojis/1/pray.png b/app/assets/images/emoji/pray.png
index 8347f2435be..8347f2435be 100644
--- a/public/-/emojis/1/pray.png
+++ b/app/assets/images/emoji/pray.png
Binary files differ
diff --git a/public/-/emojis/1/pray_tone1.png b/app/assets/images/emoji/pray_tone1.png
index 060ef257172..060ef257172 100644
--- a/public/-/emojis/1/pray_tone1.png
+++ b/app/assets/images/emoji/pray_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/pray_tone2.png b/app/assets/images/emoji/pray_tone2.png
index 56dc607c07a..56dc607c07a 100644
--- a/public/-/emojis/1/pray_tone2.png
+++ b/app/assets/images/emoji/pray_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/pray_tone3.png b/app/assets/images/emoji/pray_tone3.png
index 0f33b862008..0f33b862008 100644
--- a/public/-/emojis/1/pray_tone3.png
+++ b/app/assets/images/emoji/pray_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/pray_tone4.png b/app/assets/images/emoji/pray_tone4.png
index 2ea8dc11657..2ea8dc11657 100644
--- a/public/-/emojis/1/pray_tone4.png
+++ b/app/assets/images/emoji/pray_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/pray_tone5.png b/app/assets/images/emoji/pray_tone5.png
index 2128a6c4703..2128a6c4703 100644
--- a/public/-/emojis/1/pray_tone5.png
+++ b/app/assets/images/emoji/pray_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/prayer_beads.png b/app/assets/images/emoji/prayer_beads.png
index a4b6dfcc62e..a4b6dfcc62e 100644
--- a/public/-/emojis/1/prayer_beads.png
+++ b/app/assets/images/emoji/prayer_beads.png
Binary files differ
diff --git a/public/-/emojis/1/pregnant_woman.png b/app/assets/images/emoji/pregnant_woman.png
index 084e83a414a..084e83a414a 100644
--- a/public/-/emojis/1/pregnant_woman.png
+++ b/app/assets/images/emoji/pregnant_woman.png
Binary files differ
diff --git a/public/-/emojis/1/pregnant_woman_tone1.png b/app/assets/images/emoji/pregnant_woman_tone1.png
index a78703b33aa..a78703b33aa 100644
--- a/public/-/emojis/1/pregnant_woman_tone1.png
+++ b/app/assets/images/emoji/pregnant_woman_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/pregnant_woman_tone2.png b/app/assets/images/emoji/pregnant_woman_tone2.png
index 0068c6c4a77..0068c6c4a77 100644
--- a/public/-/emojis/1/pregnant_woman_tone2.png
+++ b/app/assets/images/emoji/pregnant_woman_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/pregnant_woman_tone3.png b/app/assets/images/emoji/pregnant_woman_tone3.png
index 3206296b684..3206296b684 100644
--- a/public/-/emojis/1/pregnant_woman_tone3.png
+++ b/app/assets/images/emoji/pregnant_woman_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/pregnant_woman_tone4.png b/app/assets/images/emoji/pregnant_woman_tone4.png
index 120fda5cd8c..120fda5cd8c 100644
--- a/public/-/emojis/1/pregnant_woman_tone4.png
+++ b/app/assets/images/emoji/pregnant_woman_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/pregnant_woman_tone5.png b/app/assets/images/emoji/pregnant_woman_tone5.png
index 569bfdf05ce..569bfdf05ce 100644
--- a/public/-/emojis/1/pregnant_woman_tone5.png
+++ b/app/assets/images/emoji/pregnant_woman_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/prince.png b/app/assets/images/emoji/prince.png
index 38d69344c84..38d69344c84 100644
--- a/public/-/emojis/1/prince.png
+++ b/app/assets/images/emoji/prince.png
Binary files differ
diff --git a/public/-/emojis/1/prince_tone1.png b/app/assets/images/emoji/prince_tone1.png
index 849930c8887..849930c8887 100644
--- a/public/-/emojis/1/prince_tone1.png
+++ b/app/assets/images/emoji/prince_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/prince_tone2.png b/app/assets/images/emoji/prince_tone2.png
index 23d8b3b1285..23d8b3b1285 100644
--- a/public/-/emojis/1/prince_tone2.png
+++ b/app/assets/images/emoji/prince_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/prince_tone3.png b/app/assets/images/emoji/prince_tone3.png
index db6dfff0647..db6dfff0647 100644
--- a/public/-/emojis/1/prince_tone3.png
+++ b/app/assets/images/emoji/prince_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/prince_tone4.png b/app/assets/images/emoji/prince_tone4.png
index 8e10f8be6a8..8e10f8be6a8 100644
--- a/public/-/emojis/1/prince_tone4.png
+++ b/app/assets/images/emoji/prince_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/prince_tone5.png b/app/assets/images/emoji/prince_tone5.png
index 138d4ea7048..138d4ea7048 100644
--- a/public/-/emojis/1/prince_tone5.png
+++ b/app/assets/images/emoji/prince_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/princess.png b/app/assets/images/emoji/princess.png
index 879e9fa8c5d..879e9fa8c5d 100644
--- a/public/-/emojis/1/princess.png
+++ b/app/assets/images/emoji/princess.png
Binary files differ
diff --git a/public/-/emojis/1/princess_tone1.png b/app/assets/images/emoji/princess_tone1.png
index c28078cdc36..c28078cdc36 100644
--- a/public/-/emojis/1/princess_tone1.png
+++ b/app/assets/images/emoji/princess_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/princess_tone2.png b/app/assets/images/emoji/princess_tone2.png
index dcd20e6ecd4..dcd20e6ecd4 100644
--- a/public/-/emojis/1/princess_tone2.png
+++ b/app/assets/images/emoji/princess_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/princess_tone3.png b/app/assets/images/emoji/princess_tone3.png
index cde6f315c56..cde6f315c56 100644
--- a/public/-/emojis/1/princess_tone3.png
+++ b/app/assets/images/emoji/princess_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/princess_tone4.png b/app/assets/images/emoji/princess_tone4.png
index c71e69caaef..c71e69caaef 100644
--- a/public/-/emojis/1/princess_tone4.png
+++ b/app/assets/images/emoji/princess_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/princess_tone5.png b/app/assets/images/emoji/princess_tone5.png
index 063e2645910..063e2645910 100644
--- a/public/-/emojis/1/princess_tone5.png
+++ b/app/assets/images/emoji/princess_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/printer.png b/app/assets/images/emoji/printer.png
index 027c830f0fe..027c830f0fe 100644
--- a/public/-/emojis/1/printer.png
+++ b/app/assets/images/emoji/printer.png
Binary files differ
diff --git a/public/-/emojis/1/projector.png b/app/assets/images/emoji/projector.png
index ce9ab0daa28..ce9ab0daa28 100644
--- a/public/-/emojis/1/projector.png
+++ b/app/assets/images/emoji/projector.png
Binary files differ
diff --git a/public/-/emojis/1/punch.png b/app/assets/images/emoji/punch.png
index b14ca5f5211..b14ca5f5211 100644
--- a/public/-/emojis/1/punch.png
+++ b/app/assets/images/emoji/punch.png
Binary files differ
diff --git a/public/-/emojis/1/punch_tone1.png b/app/assets/images/emoji/punch_tone1.png
index 93c7d17fb47..93c7d17fb47 100644
--- a/public/-/emojis/1/punch_tone1.png
+++ b/app/assets/images/emoji/punch_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/punch_tone2.png b/app/assets/images/emoji/punch_tone2.png
index c0a1af6e10a..c0a1af6e10a 100644
--- a/public/-/emojis/1/punch_tone2.png
+++ b/app/assets/images/emoji/punch_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/punch_tone3.png b/app/assets/images/emoji/punch_tone3.png
index 1458b021201..1458b021201 100644
--- a/public/-/emojis/1/punch_tone3.png
+++ b/app/assets/images/emoji/punch_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/punch_tone4.png b/app/assets/images/emoji/punch_tone4.png
index c1466bfcdef..c1466bfcdef 100644
--- a/public/-/emojis/1/punch_tone4.png
+++ b/app/assets/images/emoji/punch_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/punch_tone5.png b/app/assets/images/emoji/punch_tone5.png
index 00b4ddb8953..00b4ddb8953 100644
--- a/public/-/emojis/1/punch_tone5.png
+++ b/app/assets/images/emoji/punch_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/purple_heart.png b/app/assets/images/emoji/purple_heart.png
index 95c53a9ade6..95c53a9ade6 100644
--- a/public/-/emojis/1/purple_heart.png
+++ b/app/assets/images/emoji/purple_heart.png
Binary files differ
diff --git a/public/-/emojis/1/purse.png b/app/assets/images/emoji/purse.png
index 981346193c5..981346193c5 100644
--- a/public/-/emojis/1/purse.png
+++ b/app/assets/images/emoji/purse.png
Binary files differ
diff --git a/public/-/emojis/1/pushpin.png b/app/assets/images/emoji/pushpin.png
index 57e07d7f4cc..57e07d7f4cc 100644
--- a/public/-/emojis/1/pushpin.png
+++ b/app/assets/images/emoji/pushpin.png
Binary files differ
diff --git a/public/-/emojis/1/put_litter_in_its_place.png b/app/assets/images/emoji/put_litter_in_its_place.png
index 82a84f9a375..82a84f9a375 100644
--- a/public/-/emojis/1/put_litter_in_its_place.png
+++ b/app/assets/images/emoji/put_litter_in_its_place.png
Binary files differ
diff --git a/public/-/emojis/1/question.png b/app/assets/images/emoji/question.png
index 5a58f3458aa..5a58f3458aa 100644
--- a/public/-/emojis/1/question.png
+++ b/app/assets/images/emoji/question.png
Binary files differ
diff --git a/public/-/emojis/1/rabbit.png b/app/assets/images/emoji/rabbit.png
index ea75ab0426e..ea75ab0426e 100644
--- a/public/-/emojis/1/rabbit.png
+++ b/app/assets/images/emoji/rabbit.png
Binary files differ
diff --git a/public/-/emojis/1/rabbit2.png b/app/assets/images/emoji/rabbit2.png
index 2c8a29c642f..2c8a29c642f 100644
--- a/public/-/emojis/1/rabbit2.png
+++ b/app/assets/images/emoji/rabbit2.png
Binary files differ
diff --git a/public/-/emojis/1/race_car.png b/app/assets/images/emoji/race_car.png
index fe3f045f446..fe3f045f446 100644
--- a/public/-/emojis/1/race_car.png
+++ b/app/assets/images/emoji/race_car.png
Binary files differ
diff --git a/public/-/emojis/1/racehorse.png b/app/assets/images/emoji/racehorse.png
index b3e73cc8903..b3e73cc8903 100644
--- a/public/-/emojis/1/racehorse.png
+++ b/app/assets/images/emoji/racehorse.png
Binary files differ
diff --git a/public/-/emojis/1/radio.png b/app/assets/images/emoji/radio.png
index dec381fa242..dec381fa242 100644
--- a/public/-/emojis/1/radio.png
+++ b/app/assets/images/emoji/radio.png
Binary files differ
diff --git a/public/-/emojis/1/radio_button.png b/app/assets/images/emoji/radio_button.png
index 3a23449d917..3a23449d917 100644
--- a/public/-/emojis/1/radio_button.png
+++ b/app/assets/images/emoji/radio_button.png
Binary files differ
diff --git a/public/-/emojis/1/radioactive.png b/app/assets/images/emoji/radioactive.png
index 3b46199fe37..3b46199fe37 100644
--- a/public/-/emojis/1/radioactive.png
+++ b/app/assets/images/emoji/radioactive.png
Binary files differ
diff --git a/public/-/emojis/1/rage.png b/app/assets/images/emoji/rage.png
index 9d739bd40ad..9d739bd40ad 100644
--- a/public/-/emojis/1/rage.png
+++ b/app/assets/images/emoji/rage.png
Binary files differ
diff --git a/public/-/emojis/1/railway_car.png b/app/assets/images/emoji/railway_car.png
index a9acbf13008..a9acbf13008 100644
--- a/public/-/emojis/1/railway_car.png
+++ b/app/assets/images/emoji/railway_car.png
Binary files differ
diff --git a/public/-/emojis/1/railway_track.png b/app/assets/images/emoji/railway_track.png
index e1a7a0d1430..e1a7a0d1430 100644
--- a/public/-/emojis/1/railway_track.png
+++ b/app/assets/images/emoji/railway_track.png
Binary files differ
diff --git a/public/-/emojis/1/rainbow.png b/app/assets/images/emoji/rainbow.png
index 154735d7147..154735d7147 100644
--- a/public/-/emojis/1/rainbow.png
+++ b/app/assets/images/emoji/rainbow.png
Binary files differ
diff --git a/public/-/emojis/1/raised_back_of_hand.png b/app/assets/images/emoji/raised_back_of_hand.png
index 479234294b4..479234294b4 100644
--- a/public/-/emojis/1/raised_back_of_hand.png
+++ b/app/assets/images/emoji/raised_back_of_hand.png
Binary files differ
diff --git a/public/-/emojis/1/raised_back_of_hand_tone1.png b/app/assets/images/emoji/raised_back_of_hand_tone1.png
index 813d28499b5..813d28499b5 100644
--- a/public/-/emojis/1/raised_back_of_hand_tone1.png
+++ b/app/assets/images/emoji/raised_back_of_hand_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/raised_back_of_hand_tone2.png b/app/assets/images/emoji/raised_back_of_hand_tone2.png
index 192ff795e37..192ff795e37 100644
--- a/public/-/emojis/1/raised_back_of_hand_tone2.png
+++ b/app/assets/images/emoji/raised_back_of_hand_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/raised_back_of_hand_tone3.png b/app/assets/images/emoji/raised_back_of_hand_tone3.png
index 61a727abe6b..61a727abe6b 100644
--- a/public/-/emojis/1/raised_back_of_hand_tone3.png
+++ b/app/assets/images/emoji/raised_back_of_hand_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/raised_back_of_hand_tone4.png b/app/assets/images/emoji/raised_back_of_hand_tone4.png
index 2e83da511f5..2e83da511f5 100644
--- a/public/-/emojis/1/raised_back_of_hand_tone4.png
+++ b/app/assets/images/emoji/raised_back_of_hand_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/raised_back_of_hand_tone5.png b/app/assets/images/emoji/raised_back_of_hand_tone5.png
index d7a5b95a02c..d7a5b95a02c 100644
--- a/public/-/emojis/1/raised_back_of_hand_tone5.png
+++ b/app/assets/images/emoji/raised_back_of_hand_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hand.png b/app/assets/images/emoji/raised_hand.png
index 6b2954315d1..6b2954315d1 100644
--- a/public/-/emojis/1/raised_hand.png
+++ b/app/assets/images/emoji/raised_hand.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hand_tone1.png b/app/assets/images/emoji/raised_hand_tone1.png
index 3b752902c07..3b752902c07 100644
--- a/public/-/emojis/1/raised_hand_tone1.png
+++ b/app/assets/images/emoji/raised_hand_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hand_tone2.png b/app/assets/images/emoji/raised_hand_tone2.png
index 44e2a514c60..44e2a514c60 100644
--- a/public/-/emojis/1/raised_hand_tone2.png
+++ b/app/assets/images/emoji/raised_hand_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hand_tone3.png b/app/assets/images/emoji/raised_hand_tone3.png
index 5bb62a7528a..5bb62a7528a 100644
--- a/public/-/emojis/1/raised_hand_tone3.png
+++ b/app/assets/images/emoji/raised_hand_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hand_tone4.png b/app/assets/images/emoji/raised_hand_tone4.png
index c7f8c9ec270..c7f8c9ec270 100644
--- a/public/-/emojis/1/raised_hand_tone4.png
+++ b/app/assets/images/emoji/raised_hand_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hand_tone5.png b/app/assets/images/emoji/raised_hand_tone5.png
index c601b58a73e..c601b58a73e 100644
--- a/public/-/emojis/1/raised_hand_tone5.png
+++ b/app/assets/images/emoji/raised_hand_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hands.png b/app/assets/images/emoji/raised_hands.png
index c0155f728e7..c0155f728e7 100644
--- a/public/-/emojis/1/raised_hands.png
+++ b/app/assets/images/emoji/raised_hands.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hands_tone1.png b/app/assets/images/emoji/raised_hands_tone1.png
index 1168b8236b6..1168b8236b6 100644
--- a/public/-/emojis/1/raised_hands_tone1.png
+++ b/app/assets/images/emoji/raised_hands_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hands_tone2.png b/app/assets/images/emoji/raised_hands_tone2.png
index 322de622903..322de622903 100644
--- a/public/-/emojis/1/raised_hands_tone2.png
+++ b/app/assets/images/emoji/raised_hands_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hands_tone3.png b/app/assets/images/emoji/raised_hands_tone3.png
index 2aa24e05ae1..2aa24e05ae1 100644
--- a/public/-/emojis/1/raised_hands_tone3.png
+++ b/app/assets/images/emoji/raised_hands_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hands_tone4.png b/app/assets/images/emoji/raised_hands_tone4.png
index f31bf0db992..f31bf0db992 100644
--- a/public/-/emojis/1/raised_hands_tone4.png
+++ b/app/assets/images/emoji/raised_hands_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/raised_hands_tone5.png b/app/assets/images/emoji/raised_hands_tone5.png
index 5e95067f98b..5e95067f98b 100644
--- a/public/-/emojis/1/raised_hands_tone5.png
+++ b/app/assets/images/emoji/raised_hands_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/raising_hand.png b/app/assets/images/emoji/raising_hand.png
index 2880708c0cc..2880708c0cc 100644
--- a/public/-/emojis/1/raising_hand.png
+++ b/app/assets/images/emoji/raising_hand.png
Binary files differ
diff --git a/public/-/emojis/1/raising_hand_tone1.png b/app/assets/images/emoji/raising_hand_tone1.png
index 1c90e3e2689..1c90e3e2689 100644
--- a/public/-/emojis/1/raising_hand_tone1.png
+++ b/app/assets/images/emoji/raising_hand_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/raising_hand_tone2.png b/app/assets/images/emoji/raising_hand_tone2.png
index 82c3ef2bfc5..82c3ef2bfc5 100644
--- a/public/-/emojis/1/raising_hand_tone2.png
+++ b/app/assets/images/emoji/raising_hand_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/raising_hand_tone3.png b/app/assets/images/emoji/raising_hand_tone3.png
index 1b1da2aa0ca..1b1da2aa0ca 100644
--- a/public/-/emojis/1/raising_hand_tone3.png
+++ b/app/assets/images/emoji/raising_hand_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/raising_hand_tone4.png b/app/assets/images/emoji/raising_hand_tone4.png
index e453855c01f..e453855c01f 100644
--- a/public/-/emojis/1/raising_hand_tone4.png
+++ b/app/assets/images/emoji/raising_hand_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/raising_hand_tone5.png b/app/assets/images/emoji/raising_hand_tone5.png
index b86200fd844..b86200fd844 100644
--- a/public/-/emojis/1/raising_hand_tone5.png
+++ b/app/assets/images/emoji/raising_hand_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/ram.png b/app/assets/images/emoji/ram.png
index 52a44464c9b..52a44464c9b 100644
--- a/public/-/emojis/1/ram.png
+++ b/app/assets/images/emoji/ram.png
Binary files differ
diff --git a/public/-/emojis/1/ramen.png b/app/assets/images/emoji/ramen.png
index c1cb7cd7384..c1cb7cd7384 100644
--- a/public/-/emojis/1/ramen.png
+++ b/app/assets/images/emoji/ramen.png
Binary files differ
diff --git a/public/-/emojis/1/rat.png b/app/assets/images/emoji/rat.png
index 86219144f10..86219144f10 100644
--- a/public/-/emojis/1/rat.png
+++ b/app/assets/images/emoji/rat.png
Binary files differ
diff --git a/public/-/emojis/1/record_button.png b/app/assets/images/emoji/record_button.png
index ada52830fce..ada52830fce 100644
--- a/public/-/emojis/1/record_button.png
+++ b/app/assets/images/emoji/record_button.png
Binary files differ
diff --git a/public/-/emojis/1/recycle.png b/app/assets/images/emoji/recycle.png
index 9221f095c37..9221f095c37 100644
--- a/public/-/emojis/1/recycle.png
+++ b/app/assets/images/emoji/recycle.png
Binary files differ
diff --git a/public/-/emojis/1/red_car.png b/app/assets/images/emoji/red_car.png
index b3e6a774dea..b3e6a774dea 100644
--- a/public/-/emojis/1/red_car.png
+++ b/app/assets/images/emoji/red_car.png
Binary files differ
diff --git a/public/-/emojis/1/red_circle.png b/app/assets/images/emoji/red_circle.png
index 4bef930d92f..4bef930d92f 100644
--- a/public/-/emojis/1/red_circle.png
+++ b/app/assets/images/emoji/red_circle.png
Binary files differ
diff --git a/public/-/emojis/1/registered.png b/app/assets/images/emoji/registered.png
index 53ef9f2d4e6..53ef9f2d4e6 100644
--- a/public/-/emojis/1/registered.png
+++ b/app/assets/images/emoji/registered.png
Binary files differ
diff --git a/public/-/emojis/1/relaxed.png b/app/assets/images/emoji/relaxed.png
index e9e53c03d45..e9e53c03d45 100644
--- a/public/-/emojis/1/relaxed.png
+++ b/app/assets/images/emoji/relaxed.png
Binary files differ
diff --git a/public/-/emojis/1/relieved.png b/app/assets/images/emoji/relieved.png
index 715ad0bf53f..715ad0bf53f 100644
--- a/public/-/emojis/1/relieved.png
+++ b/app/assets/images/emoji/relieved.png
Binary files differ
diff --git a/public/-/emojis/1/reminder_ribbon.png b/app/assets/images/emoji/reminder_ribbon.png
index 3988bbd094c..3988bbd094c 100644
--- a/public/-/emojis/1/reminder_ribbon.png
+++ b/app/assets/images/emoji/reminder_ribbon.png
Binary files differ
diff --git a/public/-/emojis/1/repeat.png b/app/assets/images/emoji/repeat.png
index 540ce4e0fba..540ce4e0fba 100644
--- a/public/-/emojis/1/repeat.png
+++ b/app/assets/images/emoji/repeat.png
Binary files differ
diff --git a/public/-/emojis/1/repeat_one.png b/app/assets/images/emoji/repeat_one.png
index 9567e83337f..9567e83337f 100644
--- a/public/-/emojis/1/repeat_one.png
+++ b/app/assets/images/emoji/repeat_one.png
Binary files differ
diff --git a/public/-/emojis/1/restroom.png b/app/assets/images/emoji/restroom.png
index 9588e0f0ef7..9588e0f0ef7 100644
--- a/public/-/emojis/1/restroom.png
+++ b/app/assets/images/emoji/restroom.png
Binary files differ
diff --git a/public/-/emojis/1/revolving_hearts.png b/app/assets/images/emoji/revolving_hearts.png
index 7b9d1948f73..7b9d1948f73 100644
--- a/public/-/emojis/1/revolving_hearts.png
+++ b/app/assets/images/emoji/revolving_hearts.png
Binary files differ
diff --git a/public/-/emojis/1/rewind.png b/app/assets/images/emoji/rewind.png
index e22e2bd3da5..e22e2bd3da5 100644
--- a/public/-/emojis/1/rewind.png
+++ b/app/assets/images/emoji/rewind.png
Binary files differ
diff --git a/public/-/emojis/1/rhino.png b/app/assets/images/emoji/rhino.png
index 12f4e0d9d9b..12f4e0d9d9b 100644
--- a/public/-/emojis/1/rhino.png
+++ b/app/assets/images/emoji/rhino.png
Binary files differ
diff --git a/public/-/emojis/1/ribbon.png b/app/assets/images/emoji/ribbon.png
index 0f253c3d8c8..0f253c3d8c8 100644
--- a/public/-/emojis/1/ribbon.png
+++ b/app/assets/images/emoji/ribbon.png
Binary files differ
diff --git a/public/-/emojis/1/rice.png b/app/assets/images/emoji/rice.png
index 6e3ac7956b1..6e3ac7956b1 100644
--- a/public/-/emojis/1/rice.png
+++ b/app/assets/images/emoji/rice.png
Binary files differ
diff --git a/public/-/emojis/1/rice_ball.png b/app/assets/images/emoji/rice_ball.png
index d3d8ee25cb8..d3d8ee25cb8 100644
--- a/public/-/emojis/1/rice_ball.png
+++ b/app/assets/images/emoji/rice_ball.png
Binary files differ
diff --git a/public/-/emojis/1/rice_cracker.png b/app/assets/images/emoji/rice_cracker.png
index 7fbd08e4ff9..7fbd08e4ff9 100644
--- a/public/-/emojis/1/rice_cracker.png
+++ b/app/assets/images/emoji/rice_cracker.png
Binary files differ
diff --git a/public/-/emojis/1/rice_scene.png b/app/assets/images/emoji/rice_scene.png
index 1a28426592a..1a28426592a 100644
--- a/public/-/emojis/1/rice_scene.png
+++ b/app/assets/images/emoji/rice_scene.png
Binary files differ
diff --git a/public/-/emojis/1/right_facing_fist.png b/app/assets/images/emoji/right_facing_fist.png
index 754ed066d2c..754ed066d2c 100644
--- a/public/-/emojis/1/right_facing_fist.png
+++ b/app/assets/images/emoji/right_facing_fist.png
Binary files differ
diff --git a/public/-/emojis/1/right_facing_fist_tone1.png b/app/assets/images/emoji/right_facing_fist_tone1.png
index 33ded2f61a6..33ded2f61a6 100644
--- a/public/-/emojis/1/right_facing_fist_tone1.png
+++ b/app/assets/images/emoji/right_facing_fist_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/right_facing_fist_tone2.png b/app/assets/images/emoji/right_facing_fist_tone2.png
index 88054e335c7..88054e335c7 100644
--- a/public/-/emojis/1/right_facing_fist_tone2.png
+++ b/app/assets/images/emoji/right_facing_fist_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/right_facing_fist_tone3.png b/app/assets/images/emoji/right_facing_fist_tone3.png
index 84b9f5da7f7..84b9f5da7f7 100644
--- a/public/-/emojis/1/right_facing_fist_tone3.png
+++ b/app/assets/images/emoji/right_facing_fist_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/right_facing_fist_tone4.png b/app/assets/images/emoji/right_facing_fist_tone4.png
index e741cfea68b..e741cfea68b 100644
--- a/public/-/emojis/1/right_facing_fist_tone4.png
+++ b/app/assets/images/emoji/right_facing_fist_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/right_facing_fist_tone5.png b/app/assets/images/emoji/right_facing_fist_tone5.png
index cf66d760c1f..cf66d760c1f 100644
--- a/public/-/emojis/1/right_facing_fist_tone5.png
+++ b/app/assets/images/emoji/right_facing_fist_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/ring.png b/app/assets/images/emoji/ring.png
index 87d227adb74..87d227adb74 100644
--- a/public/-/emojis/1/ring.png
+++ b/app/assets/images/emoji/ring.png
Binary files differ
diff --git a/public/-/emojis/1/robot.png b/app/assets/images/emoji/robot.png
index 7cc62612c6a..7cc62612c6a 100644
--- a/public/-/emojis/1/robot.png
+++ b/app/assets/images/emoji/robot.png
Binary files differ
diff --git a/public/-/emojis/1/rocket.png b/app/assets/images/emoji/rocket.png
index 0d8da089a37..0d8da089a37 100644
--- a/public/-/emojis/1/rocket.png
+++ b/app/assets/images/emoji/rocket.png
Binary files differ
diff --git a/public/-/emojis/1/rofl.png b/app/assets/images/emoji/rofl.png
index b1736fedfeb..b1736fedfeb 100644
--- a/public/-/emojis/1/rofl.png
+++ b/app/assets/images/emoji/rofl.png
Binary files differ
diff --git a/public/-/emojis/1/roller_coaster.png b/app/assets/images/emoji/roller_coaster.png
index 5b849e071e8..5b849e071e8 100644
--- a/public/-/emojis/1/roller_coaster.png
+++ b/app/assets/images/emoji/roller_coaster.png
Binary files differ
diff --git a/public/-/emojis/1/rolling_eyes.png b/app/assets/images/emoji/rolling_eyes.png
index 2f77b9fc3b9..2f77b9fc3b9 100644
--- a/public/-/emojis/1/rolling_eyes.png
+++ b/app/assets/images/emoji/rolling_eyes.png
Binary files differ
diff --git a/public/-/emojis/1/rooster.png b/app/assets/images/emoji/rooster.png
index bbf2bbff97a..bbf2bbff97a 100644
--- a/public/-/emojis/1/rooster.png
+++ b/app/assets/images/emoji/rooster.png
Binary files differ
diff --git a/public/-/emojis/1/rose.png b/app/assets/images/emoji/rose.png
index 52c286d31ce..52c286d31ce 100644
--- a/public/-/emojis/1/rose.png
+++ b/app/assets/images/emoji/rose.png
Binary files differ
diff --git a/public/-/emojis/1/rosette.png b/app/assets/images/emoji/rosette.png
index 8030e494bcf..8030e494bcf 100644
--- a/public/-/emojis/1/rosette.png
+++ b/app/assets/images/emoji/rosette.png
Binary files differ
diff --git a/public/-/emojis/1/rotating_light.png b/app/assets/images/emoji/rotating_light.png
index cad66b0afef..cad66b0afef 100644
--- a/public/-/emojis/1/rotating_light.png
+++ b/app/assets/images/emoji/rotating_light.png
Binary files differ
diff --git a/public/-/emojis/1/round_pushpin.png b/app/assets/images/emoji/round_pushpin.png
index 28b9d72866e..28b9d72866e 100644
--- a/public/-/emojis/1/round_pushpin.png
+++ b/app/assets/images/emoji/round_pushpin.png
Binary files differ
diff --git a/public/-/emojis/1/rowboat.png b/app/assets/images/emoji/rowboat.png
index dd4dfc095d9..dd4dfc095d9 100644
--- a/public/-/emojis/1/rowboat.png
+++ b/app/assets/images/emoji/rowboat.png
Binary files differ
diff --git a/public/-/emojis/1/rowboat_tone1.png b/app/assets/images/emoji/rowboat_tone1.png
index 5e5d18548cb..5e5d18548cb 100644
--- a/public/-/emojis/1/rowboat_tone1.png
+++ b/app/assets/images/emoji/rowboat_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/rowboat_tone2.png b/app/assets/images/emoji/rowboat_tone2.png
index 9b123ef8871..9b123ef8871 100644
--- a/public/-/emojis/1/rowboat_tone2.png
+++ b/app/assets/images/emoji/rowboat_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/rowboat_tone3.png b/app/assets/images/emoji/rowboat_tone3.png
index 8ebd89a55f5..8ebd89a55f5 100644
--- a/public/-/emojis/1/rowboat_tone3.png
+++ b/app/assets/images/emoji/rowboat_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/rowboat_tone4.png b/app/assets/images/emoji/rowboat_tone4.png
index 2b0d04f8725..2b0d04f8725 100644
--- a/public/-/emojis/1/rowboat_tone4.png
+++ b/app/assets/images/emoji/rowboat_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/rowboat_tone5.png b/app/assets/images/emoji/rowboat_tone5.png
index b346f2dfc84..b346f2dfc84 100644
--- a/public/-/emojis/1/rowboat_tone5.png
+++ b/app/assets/images/emoji/rowboat_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/rugby_football.png b/app/assets/images/emoji/rugby_football.png
index b1872273436..b1872273436 100644
--- a/public/-/emojis/1/rugby_football.png
+++ b/app/assets/images/emoji/rugby_football.png
Binary files differ
diff --git a/public/-/emojis/1/runner.png b/app/assets/images/emoji/runner.png
index e914915976a..e914915976a 100644
--- a/public/-/emojis/1/runner.png
+++ b/app/assets/images/emoji/runner.png
Binary files differ
diff --git a/public/-/emojis/1/runner_tone1.png b/app/assets/images/emoji/runner_tone1.png
index 9355239a52d..9355239a52d 100644
--- a/public/-/emojis/1/runner_tone1.png
+++ b/app/assets/images/emoji/runner_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/runner_tone2.png b/app/assets/images/emoji/runner_tone2.png
index 6112fd5c376..6112fd5c376 100644
--- a/public/-/emojis/1/runner_tone2.png
+++ b/app/assets/images/emoji/runner_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/runner_tone3.png b/app/assets/images/emoji/runner_tone3.png
index 625ec708f48..625ec708f48 100644
--- a/public/-/emojis/1/runner_tone3.png
+++ b/app/assets/images/emoji/runner_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/runner_tone4.png b/app/assets/images/emoji/runner_tone4.png
index 242f1b56337..242f1b56337 100644
--- a/public/-/emojis/1/runner_tone4.png
+++ b/app/assets/images/emoji/runner_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/runner_tone5.png b/app/assets/images/emoji/runner_tone5.png
index 2976c6f019f..2976c6f019f 100644
--- a/public/-/emojis/1/runner_tone5.png
+++ b/app/assets/images/emoji/runner_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/running_shirt_with_sash.png b/app/assets/images/emoji/running_shirt_with_sash.png
index 6d83c06b803..6d83c06b803 100644
--- a/public/-/emojis/1/running_shirt_with_sash.png
+++ b/app/assets/images/emoji/running_shirt_with_sash.png
Binary files differ
diff --git a/public/-/emojis/1/sa.png b/app/assets/images/emoji/sa.png
index 900f9633247..900f9633247 100644
--- a/public/-/emojis/1/sa.png
+++ b/app/assets/images/emoji/sa.png
Binary files differ
diff --git a/public/-/emojis/1/sagittarius.png b/app/assets/images/emoji/sagittarius.png
index f8d94ff2923..f8d94ff2923 100644
--- a/public/-/emojis/1/sagittarius.png
+++ b/app/assets/images/emoji/sagittarius.png
Binary files differ
diff --git a/public/-/emojis/1/sailboat.png b/app/assets/images/emoji/sailboat.png
index 772ef11da5d..772ef11da5d 100644
--- a/public/-/emojis/1/sailboat.png
+++ b/app/assets/images/emoji/sailboat.png
Binary files differ
diff --git a/public/-/emojis/1/sake.png b/app/assets/images/emoji/sake.png
index 2933f5672c4..2933f5672c4 100644
--- a/public/-/emojis/1/sake.png
+++ b/app/assets/images/emoji/sake.png
Binary files differ
diff --git a/public/-/emojis/1/salad.png b/app/assets/images/emoji/salad.png
index c89f9341158..c89f9341158 100644
--- a/public/-/emojis/1/salad.png
+++ b/app/assets/images/emoji/salad.png
Binary files differ
diff --git a/public/-/emojis/1/sandal.png b/app/assets/images/emoji/sandal.png
index 9d9f5122b7a..9d9f5122b7a 100644
--- a/public/-/emojis/1/sandal.png
+++ b/app/assets/images/emoji/sandal.png
Binary files differ
diff --git a/public/-/emojis/1/santa.png b/app/assets/images/emoji/santa.png
index bc83ab80d52..bc83ab80d52 100644
--- a/public/-/emojis/1/santa.png
+++ b/app/assets/images/emoji/santa.png
Binary files differ
diff --git a/public/-/emojis/1/santa_tone1.png b/app/assets/images/emoji/santa_tone1.png
index 5233ffb7174..5233ffb7174 100644
--- a/public/-/emojis/1/santa_tone1.png
+++ b/app/assets/images/emoji/santa_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/santa_tone2.png b/app/assets/images/emoji/santa_tone2.png
index 4e845438197..4e845438197 100644
--- a/public/-/emojis/1/santa_tone2.png
+++ b/app/assets/images/emoji/santa_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/santa_tone3.png b/app/assets/images/emoji/santa_tone3.png
index 7fc4f33b60f..7fc4f33b60f 100644
--- a/public/-/emojis/1/santa_tone3.png
+++ b/app/assets/images/emoji/santa_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/santa_tone4.png b/app/assets/images/emoji/santa_tone4.png
index d1d5a15132d..d1d5a15132d 100644
--- a/public/-/emojis/1/santa_tone4.png
+++ b/app/assets/images/emoji/santa_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/santa_tone5.png b/app/assets/images/emoji/santa_tone5.png
index 4d697a01f24..4d697a01f24 100644
--- a/public/-/emojis/1/santa_tone5.png
+++ b/app/assets/images/emoji/santa_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/satellite.png b/app/assets/images/emoji/satellite.png
index db0372795f4..db0372795f4 100644
--- a/public/-/emojis/1/satellite.png
+++ b/app/assets/images/emoji/satellite.png
Binary files differ
diff --git a/public/-/emojis/1/satellite_orbital.png b/app/assets/images/emoji/satellite_orbital.png
index 4ba55d6e297..4ba55d6e297 100644
--- a/public/-/emojis/1/satellite_orbital.png
+++ b/app/assets/images/emoji/satellite_orbital.png
Binary files differ
diff --git a/public/-/emojis/1/saxophone.png b/app/assets/images/emoji/saxophone.png
index a392faec291..a392faec291 100644
--- a/public/-/emojis/1/saxophone.png
+++ b/app/assets/images/emoji/saxophone.png
Binary files differ
diff --git a/public/-/emojis/1/scales.png b/app/assets/images/emoji/scales.png
index 0757eda1684..0757eda1684 100644
--- a/public/-/emojis/1/scales.png
+++ b/app/assets/images/emoji/scales.png
Binary files differ
diff --git a/public/-/emojis/1/school.png b/app/assets/images/emoji/school.png
index 269759534f0..269759534f0 100644
--- a/public/-/emojis/1/school.png
+++ b/app/assets/images/emoji/school.png
Binary files differ
diff --git a/public/-/emojis/1/school_satchel.png b/app/assets/images/emoji/school_satchel.png
index 9997c86e7dc..9997c86e7dc 100644
--- a/public/-/emojis/1/school_satchel.png
+++ b/app/assets/images/emoji/school_satchel.png
Binary files differ
diff --git a/public/-/emojis/1/scissors.png b/app/assets/images/emoji/scissors.png
index 270571c8cdd..270571c8cdd 100644
--- a/public/-/emojis/1/scissors.png
+++ b/app/assets/images/emoji/scissors.png
Binary files differ
diff --git a/public/-/emojis/1/scooter.png b/app/assets/images/emoji/scooter.png
index 4ab7ef59cd2..4ab7ef59cd2 100644
--- a/public/-/emojis/1/scooter.png
+++ b/app/assets/images/emoji/scooter.png
Binary files differ
diff --git a/public/-/emojis/1/scorpion.png b/app/assets/images/emoji/scorpion.png
index 449a6b281c9..449a6b281c9 100644
--- a/public/-/emojis/1/scorpion.png
+++ b/app/assets/images/emoji/scorpion.png
Binary files differ
diff --git a/public/-/emojis/1/scorpius.png b/app/assets/images/emoji/scorpius.png
index c31a9920455..c31a9920455 100644
--- a/public/-/emojis/1/scorpius.png
+++ b/app/assets/images/emoji/scorpius.png
Binary files differ
diff --git a/public/-/emojis/1/scream.png b/app/assets/images/emoji/scream.png
index c3bea9f2510..c3bea9f2510 100644
--- a/public/-/emojis/1/scream.png
+++ b/app/assets/images/emoji/scream.png
Binary files differ
diff --git a/public/-/emojis/1/scream_cat.png b/app/assets/images/emoji/scream_cat.png
index 15803ad8e6e..15803ad8e6e 100644
--- a/public/-/emojis/1/scream_cat.png
+++ b/app/assets/images/emoji/scream_cat.png
Binary files differ
diff --git a/public/-/emojis/1/scroll.png b/app/assets/images/emoji/scroll.png
index 50ee5dcd4b9..50ee5dcd4b9 100644
--- a/public/-/emojis/1/scroll.png
+++ b/app/assets/images/emoji/scroll.png
Binary files differ
diff --git a/public/-/emojis/1/seat.png b/app/assets/images/emoji/seat.png
index a6d72d95adb..a6d72d95adb 100644
--- a/public/-/emojis/1/seat.png
+++ b/app/assets/images/emoji/seat.png
Binary files differ
diff --git a/public/-/emojis/1/second_place.png b/app/assets/images/emoji/second_place.png
index 17b011268b6..17b011268b6 100644
--- a/public/-/emojis/1/second_place.png
+++ b/app/assets/images/emoji/second_place.png
Binary files differ
diff --git a/public/-/emojis/1/secret.png b/app/assets/images/emoji/secret.png
index 5fd72608e60..5fd72608e60 100644
--- a/public/-/emojis/1/secret.png
+++ b/app/assets/images/emoji/secret.png
Binary files differ
diff --git a/public/-/emojis/1/see_no_evil.png b/app/assets/images/emoji/see_no_evil.png
index 5187e474531..5187e474531 100644
--- a/public/-/emojis/1/see_no_evil.png
+++ b/app/assets/images/emoji/see_no_evil.png
Binary files differ
diff --git a/public/-/emojis/1/seedling.png b/app/assets/images/emoji/seedling.png
index ae0948bcfd6..ae0948bcfd6 100644
--- a/public/-/emojis/1/seedling.png
+++ b/app/assets/images/emoji/seedling.png
Binary files differ
diff --git a/public/-/emojis/1/selfie.png b/app/assets/images/emoji/selfie.png
index 6a1ba75c7e3..6a1ba75c7e3 100644
--- a/public/-/emojis/1/selfie.png
+++ b/app/assets/images/emoji/selfie.png
Binary files differ
diff --git a/public/-/emojis/1/selfie_tone1.png b/app/assets/images/emoji/selfie_tone1.png
index 290e075b56f..290e075b56f 100644
--- a/public/-/emojis/1/selfie_tone1.png
+++ b/app/assets/images/emoji/selfie_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/selfie_tone2.png b/app/assets/images/emoji/selfie_tone2.png
index fcd9595b643..fcd9595b643 100644
--- a/public/-/emojis/1/selfie_tone2.png
+++ b/app/assets/images/emoji/selfie_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/selfie_tone3.png b/app/assets/images/emoji/selfie_tone3.png
index f3a22fdf435..f3a22fdf435 100644
--- a/public/-/emojis/1/selfie_tone3.png
+++ b/app/assets/images/emoji/selfie_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/selfie_tone4.png b/app/assets/images/emoji/selfie_tone4.png
index cdecf6d9f4e..cdecf6d9f4e 100644
--- a/public/-/emojis/1/selfie_tone4.png
+++ b/app/assets/images/emoji/selfie_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/selfie_tone5.png b/app/assets/images/emoji/selfie_tone5.png
index 86acbb6c202..86acbb6c202 100644
--- a/public/-/emojis/1/selfie_tone5.png
+++ b/app/assets/images/emoji/selfie_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/seven.png b/app/assets/images/emoji/seven.png
index 9b3476ae7c7..9b3476ae7c7 100644
--- a/public/-/emojis/1/seven.png
+++ b/app/assets/images/emoji/seven.png
Binary files differ
diff --git a/public/-/emojis/1/shallow_pan_of_food.png b/app/assets/images/emoji/shallow_pan_of_food.png
index 663a1006acd..663a1006acd 100644
--- a/public/-/emojis/1/shallow_pan_of_food.png
+++ b/app/assets/images/emoji/shallow_pan_of_food.png
Binary files differ
diff --git a/public/-/emojis/1/shamrock.png b/app/assets/images/emoji/shamrock.png
index f202aecfe6f..f202aecfe6f 100644
--- a/public/-/emojis/1/shamrock.png
+++ b/app/assets/images/emoji/shamrock.png
Binary files differ
diff --git a/public/-/emojis/1/shark.png b/app/assets/images/emoji/shark.png
index c75076d57d8..c75076d57d8 100644
--- a/public/-/emojis/1/shark.png
+++ b/app/assets/images/emoji/shark.png
Binary files differ
diff --git a/public/-/emojis/1/shaved_ice.png b/app/assets/images/emoji/shaved_ice.png
index 36dfb53ca93..36dfb53ca93 100644
--- a/public/-/emojis/1/shaved_ice.png
+++ b/app/assets/images/emoji/shaved_ice.png
Binary files differ
diff --git a/public/-/emojis/1/sheep.png b/app/assets/images/emoji/sheep.png
index 102b8a52b28..102b8a52b28 100644
--- a/public/-/emojis/1/sheep.png
+++ b/app/assets/images/emoji/sheep.png
Binary files differ
diff --git a/public/-/emojis/1/shell.png b/app/assets/images/emoji/shell.png
index 55721629f62..55721629f62 100644
--- a/public/-/emojis/1/shell.png
+++ b/app/assets/images/emoji/shell.png
Binary files differ
diff --git a/public/-/emojis/1/shield.png b/app/assets/images/emoji/shield.png
index 610bf033ce0..610bf033ce0 100644
--- a/public/-/emojis/1/shield.png
+++ b/app/assets/images/emoji/shield.png
Binary files differ
diff --git a/public/-/emojis/1/shinto_shrine.png b/app/assets/images/emoji/shinto_shrine.png
index 5a344975bf3..5a344975bf3 100644
--- a/public/-/emojis/1/shinto_shrine.png
+++ b/app/assets/images/emoji/shinto_shrine.png
Binary files differ
diff --git a/public/-/emojis/1/ship.png b/app/assets/images/emoji/ship.png
index 62d54f7d6c9..62d54f7d6c9 100644
--- a/public/-/emojis/1/ship.png
+++ b/app/assets/images/emoji/ship.png
Binary files differ
diff --git a/public/-/emojis/1/shirt.png b/app/assets/images/emoji/shirt.png
index af08dec8b59..af08dec8b59 100644
--- a/public/-/emojis/1/shirt.png
+++ b/app/assets/images/emoji/shirt.png
Binary files differ
diff --git a/public/-/emojis/1/shopping_bags.png b/app/assets/images/emoji/shopping_bags.png
index 99f2a2b13ac..99f2a2b13ac 100644
--- a/public/-/emojis/1/shopping_bags.png
+++ b/app/assets/images/emoji/shopping_bags.png
Binary files differ
diff --git a/public/-/emojis/1/shopping_cart.png b/app/assets/images/emoji/shopping_cart.png
index 1086fe6e456..1086fe6e456 100644
--- a/public/-/emojis/1/shopping_cart.png
+++ b/app/assets/images/emoji/shopping_cart.png
Binary files differ
diff --git a/public/-/emojis/1/shower.png b/app/assets/images/emoji/shower.png
index 156776a2e52..156776a2e52 100644
--- a/public/-/emojis/1/shower.png
+++ b/app/assets/images/emoji/shower.png
Binary files differ
diff --git a/public/-/emojis/1/shrimp.png b/app/assets/images/emoji/shrimp.png
index 49eff28a71e..49eff28a71e 100644
--- a/public/-/emojis/1/shrimp.png
+++ b/app/assets/images/emoji/shrimp.png
Binary files differ
diff --git a/public/-/emojis/1/shrug.png b/app/assets/images/emoji/shrug.png
index 76e63bfac77..76e63bfac77 100644
--- a/public/-/emojis/1/shrug.png
+++ b/app/assets/images/emoji/shrug.png
Binary files differ
diff --git a/public/-/emojis/1/shrug_tone1.png b/app/assets/images/emoji/shrug_tone1.png
index 1c895e64468..1c895e64468 100644
--- a/public/-/emojis/1/shrug_tone1.png
+++ b/app/assets/images/emoji/shrug_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/shrug_tone2.png b/app/assets/images/emoji/shrug_tone2.png
index 4e3ca8f8bac..4e3ca8f8bac 100644
--- a/public/-/emojis/1/shrug_tone2.png
+++ b/app/assets/images/emoji/shrug_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/shrug_tone3.png b/app/assets/images/emoji/shrug_tone3.png
index d1b16a19bb5..d1b16a19bb5 100644
--- a/public/-/emojis/1/shrug_tone3.png
+++ b/app/assets/images/emoji/shrug_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/shrug_tone4.png b/app/assets/images/emoji/shrug_tone4.png
index 5fbef3f2255..5fbef3f2255 100644
--- a/public/-/emojis/1/shrug_tone4.png
+++ b/app/assets/images/emoji/shrug_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/shrug_tone5.png b/app/assets/images/emoji/shrug_tone5.png
index 4af2e28bc5c..4af2e28bc5c 100644
--- a/public/-/emojis/1/shrug_tone5.png
+++ b/app/assets/images/emoji/shrug_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/signal_strength.png b/app/assets/images/emoji/signal_strength.png
index ee2b5a4b519..ee2b5a4b519 100644
--- a/public/-/emojis/1/signal_strength.png
+++ b/app/assets/images/emoji/signal_strength.png
Binary files differ
diff --git a/public/-/emojis/1/six.png b/app/assets/images/emoji/six.png
index 371b3acef2c..371b3acef2c 100644
--- a/public/-/emojis/1/six.png
+++ b/app/assets/images/emoji/six.png
Binary files differ
diff --git a/public/-/emojis/1/six_pointed_star.png b/app/assets/images/emoji/six_pointed_star.png
index 2eb1707458b..2eb1707458b 100644
--- a/public/-/emojis/1/six_pointed_star.png
+++ b/app/assets/images/emoji/six_pointed_star.png
Binary files differ
diff --git a/public/-/emojis/1/ski.png b/app/assets/images/emoji/ski.png
index 4a2d2c12306..4a2d2c12306 100644
--- a/public/-/emojis/1/ski.png
+++ b/app/assets/images/emoji/ski.png
Binary files differ
diff --git a/public/-/emojis/1/skier.png b/app/assets/images/emoji/skier.png
index 2eb3bdce2af..2eb3bdce2af 100644
--- a/public/-/emojis/1/skier.png
+++ b/app/assets/images/emoji/skier.png
Binary files differ
diff --git a/public/-/emojis/1/skull.png b/app/assets/images/emoji/skull.png
index 26abb17296a..26abb17296a 100644
--- a/public/-/emojis/1/skull.png
+++ b/app/assets/images/emoji/skull.png
Binary files differ
diff --git a/public/-/emojis/1/skull_crossbones.png b/app/assets/images/emoji/skull_crossbones.png
index b459df9227a..b459df9227a 100644
--- a/public/-/emojis/1/skull_crossbones.png
+++ b/app/assets/images/emoji/skull_crossbones.png
Binary files differ
diff --git a/public/-/emojis/1/sleeping.png b/app/assets/images/emoji/sleeping.png
index 9ecf600d6d8..9ecf600d6d8 100644
--- a/public/-/emojis/1/sleeping.png
+++ b/app/assets/images/emoji/sleeping.png
Binary files differ
diff --git a/public/-/emojis/1/sleeping_accommodation.png b/app/assets/images/emoji/sleeping_accommodation.png
index c739e7fb69b..c739e7fb69b 100644
--- a/public/-/emojis/1/sleeping_accommodation.png
+++ b/app/assets/images/emoji/sleeping_accommodation.png
Binary files differ
diff --git a/public/-/emojis/1/sleepy.png b/app/assets/images/emoji/sleepy.png
index 836b4107717..836b4107717 100644
--- a/public/-/emojis/1/sleepy.png
+++ b/app/assets/images/emoji/sleepy.png
Binary files differ
diff --git a/public/-/emojis/1/slight_frown.png b/app/assets/images/emoji/slight_frown.png
index b2f1d983d36..b2f1d983d36 100644
--- a/public/-/emojis/1/slight_frown.png
+++ b/app/assets/images/emoji/slight_frown.png
Binary files differ
diff --git a/public/-/emojis/1/slight_smile.png b/app/assets/images/emoji/slight_smile.png
index ddd7d65dd3d..ddd7d65dd3d 100644
--- a/public/-/emojis/1/slight_smile.png
+++ b/app/assets/images/emoji/slight_smile.png
Binary files differ
diff --git a/public/-/emojis/1/slot_machine.png b/app/assets/images/emoji/slot_machine.png
index ee71b6c268c..ee71b6c268c 100644
--- a/public/-/emojis/1/slot_machine.png
+++ b/app/assets/images/emoji/slot_machine.png
Binary files differ
diff --git a/public/-/emojis/1/small_blue_diamond.png b/app/assets/images/emoji/small_blue_diamond.png
index b86b5bc4db3..b86b5bc4db3 100644
--- a/public/-/emojis/1/small_blue_diamond.png
+++ b/app/assets/images/emoji/small_blue_diamond.png
Binary files differ
diff --git a/public/-/emojis/1/small_orange_diamond.png b/app/assets/images/emoji/small_orange_diamond.png
index e1c6ed9b2f8..e1c6ed9b2f8 100644
--- a/public/-/emojis/1/small_orange_diamond.png
+++ b/app/assets/images/emoji/small_orange_diamond.png
Binary files differ
diff --git a/public/-/emojis/1/small_red_triangle.png b/app/assets/images/emoji/small_red_triangle.png
index 785887c195a..785887c195a 100644
--- a/public/-/emojis/1/small_red_triangle.png
+++ b/app/assets/images/emoji/small_red_triangle.png
Binary files differ
diff --git a/public/-/emojis/1/small_red_triangle_down.png b/app/assets/images/emoji/small_red_triangle_down.png
index a83beff1914..a83beff1914 100644
--- a/public/-/emojis/1/small_red_triangle_down.png
+++ b/app/assets/images/emoji/small_red_triangle_down.png
Binary files differ
diff --git a/public/-/emojis/1/smile.png b/app/assets/images/emoji/smile.png
index aa47ffe978c..aa47ffe978c 100644
--- a/public/-/emojis/1/smile.png
+++ b/app/assets/images/emoji/smile.png
Binary files differ
diff --git a/public/-/emojis/1/smile_cat.png b/app/assets/images/emoji/smile_cat.png
index 6f25f11dd3a..6f25f11dd3a 100644
--- a/public/-/emojis/1/smile_cat.png
+++ b/app/assets/images/emoji/smile_cat.png
Binary files differ
diff --git a/public/-/emojis/1/smiley.png b/app/assets/images/emoji/smiley.png
index 30957a65968..30957a65968 100644
--- a/public/-/emojis/1/smiley.png
+++ b/app/assets/images/emoji/smiley.png
Binary files differ
diff --git a/public/-/emojis/1/smiley_cat.png b/app/assets/images/emoji/smiley_cat.png
index 163b57a3427..163b57a3427 100644
--- a/public/-/emojis/1/smiley_cat.png
+++ b/app/assets/images/emoji/smiley_cat.png
Binary files differ
diff --git a/public/-/emojis/1/smiling_imp.png b/app/assets/images/emoji/smiling_imp.png
index cc2c5f1ec72..cc2c5f1ec72 100644
--- a/public/-/emojis/1/smiling_imp.png
+++ b/app/assets/images/emoji/smiling_imp.png
Binary files differ
diff --git a/public/-/emojis/1/smirk.png b/app/assets/images/emoji/smirk.png
index 87852109988..87852109988 100644
--- a/public/-/emojis/1/smirk.png
+++ b/app/assets/images/emoji/smirk.png
Binary files differ
diff --git a/public/-/emojis/1/smirk_cat.png b/app/assets/images/emoji/smirk_cat.png
index 9ac5954c199..9ac5954c199 100644
--- a/public/-/emojis/1/smirk_cat.png
+++ b/app/assets/images/emoji/smirk_cat.png
Binary files differ
diff --git a/public/-/emojis/1/smoking.png b/app/assets/images/emoji/smoking.png
index 910f648c8f9..910f648c8f9 100644
--- a/public/-/emojis/1/smoking.png
+++ b/app/assets/images/emoji/smoking.png
Binary files differ
diff --git a/public/-/emojis/1/snail.png b/app/assets/images/emoji/snail.png
index f4ea071e2d3..f4ea071e2d3 100644
--- a/public/-/emojis/1/snail.png
+++ b/app/assets/images/emoji/snail.png
Binary files differ
diff --git a/public/-/emojis/1/snake.png b/app/assets/images/emoji/snake.png
index d0278a28d8c..d0278a28d8c 100644
--- a/public/-/emojis/1/snake.png
+++ b/app/assets/images/emoji/snake.png
Binary files differ
diff --git a/public/-/emojis/1/sneezing_face.png b/app/assets/images/emoji/sneezing_face.png
index ccf07d4b64d..ccf07d4b64d 100644
--- a/public/-/emojis/1/sneezing_face.png
+++ b/app/assets/images/emoji/sneezing_face.png
Binary files differ
diff --git a/public/-/emojis/1/snowboarder.png b/app/assets/images/emoji/snowboarder.png
index 6361c0f2c9d..6361c0f2c9d 100644
--- a/public/-/emojis/1/snowboarder.png
+++ b/app/assets/images/emoji/snowboarder.png
Binary files differ
diff --git a/public/-/emojis/1/snowflake.png b/app/assets/images/emoji/snowflake.png
index db319a77ec6..db319a77ec6 100644
--- a/public/-/emojis/1/snowflake.png
+++ b/app/assets/images/emoji/snowflake.png
Binary files differ
diff --git a/public/-/emojis/1/snowman.png b/app/assets/images/emoji/snowman.png
index 20c177c2aff..20c177c2aff 100644
--- a/public/-/emojis/1/snowman.png
+++ b/app/assets/images/emoji/snowman.png
Binary files differ
diff --git a/public/-/emojis/1/snowman2.png b/app/assets/images/emoji/snowman2.png
index 896f28502af..896f28502af 100644
--- a/public/-/emojis/1/snowman2.png
+++ b/app/assets/images/emoji/snowman2.png
Binary files differ
diff --git a/public/-/emojis/1/sob.png b/app/assets/images/emoji/sob.png
index 52e3517a1ee..52e3517a1ee 100644
--- a/public/-/emojis/1/sob.png
+++ b/app/assets/images/emoji/sob.png
Binary files differ
diff --git a/public/-/emojis/1/soccer.png b/app/assets/images/emoji/soccer.png
index 28cfa218d6d..28cfa218d6d 100644
--- a/public/-/emojis/1/soccer.png
+++ b/app/assets/images/emoji/soccer.png
Binary files differ
diff --git a/public/-/emojis/1/soon.png b/app/assets/images/emoji/soon.png
index 8cdfd86690d..8cdfd86690d 100644
--- a/public/-/emojis/1/soon.png
+++ b/app/assets/images/emoji/soon.png
Binary files differ
diff --git a/public/-/emojis/1/sos.png b/app/assets/images/emoji/sos.png
index d7d8c9953e4..d7d8c9953e4 100644
--- a/public/-/emojis/1/sos.png
+++ b/app/assets/images/emoji/sos.png
Binary files differ
diff --git a/public/-/emojis/1/sound.png b/app/assets/images/emoji/sound.png
index e75ddca53ba..e75ddca53ba 100644
--- a/public/-/emojis/1/sound.png
+++ b/app/assets/images/emoji/sound.png
Binary files differ
diff --git a/public/-/emojis/1/space_invader.png b/app/assets/images/emoji/space_invader.png
index 2e73f5f32e5..2e73f5f32e5 100644
--- a/public/-/emojis/1/space_invader.png
+++ b/app/assets/images/emoji/space_invader.png
Binary files differ
diff --git a/public/-/emojis/1/spades.png b/app/assets/images/emoji/spades.png
index f822f184cb0..f822f184cb0 100644
--- a/public/-/emojis/1/spades.png
+++ b/app/assets/images/emoji/spades.png
Binary files differ
diff --git a/public/-/emojis/1/spaghetti.png b/app/assets/images/emoji/spaghetti.png
index 89c24a321f1..89c24a321f1 100644
--- a/public/-/emojis/1/spaghetti.png
+++ b/app/assets/images/emoji/spaghetti.png
Binary files differ
diff --git a/public/-/emojis/1/sparkle.png b/app/assets/images/emoji/sparkle.png
index 6aa7b6ec9cf..6aa7b6ec9cf 100644
--- a/public/-/emojis/1/sparkle.png
+++ b/app/assets/images/emoji/sparkle.png
Binary files differ
diff --git a/public/-/emojis/1/sparkler.png b/app/assets/images/emoji/sparkler.png
index 30339cd6e09..30339cd6e09 100644
--- a/public/-/emojis/1/sparkler.png
+++ b/app/assets/images/emoji/sparkler.png
Binary files differ
diff --git a/public/-/emojis/1/sparkles.png b/app/assets/images/emoji/sparkles.png
index 169bc10b023..169bc10b023 100644
--- a/public/-/emojis/1/sparkles.png
+++ b/app/assets/images/emoji/sparkles.png
Binary files differ
diff --git a/public/-/emojis/1/sparkling_heart.png b/app/assets/images/emoji/sparkling_heart.png
index 6709269454e..6709269454e 100644
--- a/public/-/emojis/1/sparkling_heart.png
+++ b/app/assets/images/emoji/sparkling_heart.png
Binary files differ
diff --git a/public/-/emojis/1/speak_no_evil.png b/app/assets/images/emoji/speak_no_evil.png
index 9d9e07c974b..9d9e07c974b 100644
--- a/public/-/emojis/1/speak_no_evil.png
+++ b/app/assets/images/emoji/speak_no_evil.png
Binary files differ
diff --git a/public/-/emojis/1/speaker.png b/app/assets/images/emoji/speaker.png
index 7bcffb8fc43..7bcffb8fc43 100644
--- a/public/-/emojis/1/speaker.png
+++ b/app/assets/images/emoji/speaker.png
Binary files differ
diff --git a/public/-/emojis/1/speaking_head.png b/app/assets/images/emoji/speaking_head.png
index 2df93aaae09..2df93aaae09 100644
--- a/public/-/emojis/1/speaking_head.png
+++ b/app/assets/images/emoji/speaking_head.png
Binary files differ
diff --git a/public/-/emojis/1/speech_balloon.png b/app/assets/images/emoji/speech_balloon.png
index a34ef741733..a34ef741733 100644
--- a/public/-/emojis/1/speech_balloon.png
+++ b/app/assets/images/emoji/speech_balloon.png
Binary files differ
diff --git a/public/-/emojis/1/speech_left.png b/app/assets/images/emoji/speech_left.png
index 00c05959bcd..00c05959bcd 100644
--- a/public/-/emojis/1/speech_left.png
+++ b/app/assets/images/emoji/speech_left.png
Binary files differ
diff --git a/public/-/emojis/1/speedboat.png b/app/assets/images/emoji/speedboat.png
index 74059d12de1..74059d12de1 100644
--- a/public/-/emojis/1/speedboat.png
+++ b/app/assets/images/emoji/speedboat.png
Binary files differ
diff --git a/public/-/emojis/1/spider.png b/app/assets/images/emoji/spider.png
index 3849fa90b94..3849fa90b94 100644
--- a/public/-/emojis/1/spider.png
+++ b/app/assets/images/emoji/spider.png
Binary files differ
diff --git a/public/-/emojis/1/spider_web.png b/app/assets/images/emoji/spider_web.png
index ba448ee7fba..ba448ee7fba 100644
--- a/public/-/emojis/1/spider_web.png
+++ b/app/assets/images/emoji/spider_web.png
Binary files differ
diff --git a/public/-/emojis/1/spoon.png b/app/assets/images/emoji/spoon.png
index 3c4da766aee..3c4da766aee 100644
--- a/public/-/emojis/1/spoon.png
+++ b/app/assets/images/emoji/spoon.png
Binary files differ
diff --git a/public/-/emojis/1/spy.png b/app/assets/images/emoji/spy.png
index a729e9584d6..a729e9584d6 100644
--- a/public/-/emojis/1/spy.png
+++ b/app/assets/images/emoji/spy.png
Binary files differ
diff --git a/public/-/emojis/1/spy_tone1.png b/app/assets/images/emoji/spy_tone1.png
index 2d1c022caee..2d1c022caee 100644
--- a/public/-/emojis/1/spy_tone1.png
+++ b/app/assets/images/emoji/spy_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/spy_tone2.png b/app/assets/images/emoji/spy_tone2.png
index 548b9c26f5d..548b9c26f5d 100644
--- a/public/-/emojis/1/spy_tone2.png
+++ b/app/assets/images/emoji/spy_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/spy_tone3.png b/app/assets/images/emoji/spy_tone3.png
index b023f4b18e1..b023f4b18e1 100644
--- a/public/-/emojis/1/spy_tone3.png
+++ b/app/assets/images/emoji/spy_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/spy_tone4.png b/app/assets/images/emoji/spy_tone4.png
index d8300af492d..d8300af492d 100644
--- a/public/-/emojis/1/spy_tone4.png
+++ b/app/assets/images/emoji/spy_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/spy_tone5.png b/app/assets/images/emoji/spy_tone5.png
index ca1462595fa..ca1462595fa 100644
--- a/public/-/emojis/1/spy_tone5.png
+++ b/app/assets/images/emoji/spy_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/squid.png b/app/assets/images/emoji/squid.png
index d2af223f0cb..d2af223f0cb 100644
--- a/public/-/emojis/1/squid.png
+++ b/app/assets/images/emoji/squid.png
Binary files differ
diff --git a/public/-/emojis/1/stadium.png b/app/assets/images/emoji/stadium.png
index 00cd6db5e29..00cd6db5e29 100644
--- a/public/-/emojis/1/stadium.png
+++ b/app/assets/images/emoji/stadium.png
Binary files differ
diff --git a/public/-/emojis/1/star.png b/app/assets/images/emoji/star.png
index c930947076e..c930947076e 100644
--- a/public/-/emojis/1/star.png
+++ b/app/assets/images/emoji/star.png
Binary files differ
diff --git a/public/-/emojis/1/star2.png b/app/assets/images/emoji/star2.png
index 2f5cba592db..2f5cba592db 100644
--- a/public/-/emojis/1/star2.png
+++ b/app/assets/images/emoji/star2.png
Binary files differ
diff --git a/public/-/emojis/1/star_and_crescent.png b/app/assets/images/emoji/star_and_crescent.png
index e182636457d..e182636457d 100644
--- a/public/-/emojis/1/star_and_crescent.png
+++ b/app/assets/images/emoji/star_and_crescent.png
Binary files differ
diff --git a/public/-/emojis/1/star_of_david.png b/app/assets/images/emoji/star_of_david.png
index fc59d0dde24..fc59d0dde24 100644
--- a/public/-/emojis/1/star_of_david.png
+++ b/app/assets/images/emoji/star_of_david.png
Binary files differ
diff --git a/public/-/emojis/1/stars.png b/app/assets/images/emoji/stars.png
index aa45384d1c6..aa45384d1c6 100644
--- a/public/-/emojis/1/stars.png
+++ b/app/assets/images/emoji/stars.png
Binary files differ
diff --git a/public/-/emojis/1/station.png b/app/assets/images/emoji/station.png
index 5c26fee529c..5c26fee529c 100644
--- a/public/-/emojis/1/station.png
+++ b/app/assets/images/emoji/station.png
Binary files differ
diff --git a/public/-/emojis/1/statue_of_liberty.png b/app/assets/images/emoji/statue_of_liberty.png
index 05df8289b59..05df8289b59 100644
--- a/public/-/emojis/1/statue_of_liberty.png
+++ b/app/assets/images/emoji/statue_of_liberty.png
Binary files differ
diff --git a/public/-/emojis/1/steam_locomotive.png b/app/assets/images/emoji/steam_locomotive.png
index 9ac0d999c4c..9ac0d999c4c 100644
--- a/public/-/emojis/1/steam_locomotive.png
+++ b/app/assets/images/emoji/steam_locomotive.png
Binary files differ
diff --git a/public/-/emojis/1/stew.png b/app/assets/images/emoji/stew.png
index 6b3f010c17a..6b3f010c17a 100644
--- a/public/-/emojis/1/stew.png
+++ b/app/assets/images/emoji/stew.png
Binary files differ
diff --git a/public/-/emojis/1/stop_button.png b/app/assets/images/emoji/stop_button.png
index cfa99988ac2..cfa99988ac2 100644
--- a/public/-/emojis/1/stop_button.png
+++ b/app/assets/images/emoji/stop_button.png
Binary files differ
diff --git a/public/-/emojis/1/stopwatch.png b/app/assets/images/emoji/stopwatch.png
index 8fae1c9a898..8fae1c9a898 100644
--- a/public/-/emojis/1/stopwatch.png
+++ b/app/assets/images/emoji/stopwatch.png
Binary files differ
diff --git a/public/-/emojis/1/straight_ruler.png b/app/assets/images/emoji/straight_ruler.png
index 1017b7433a1..1017b7433a1 100644
--- a/public/-/emojis/1/straight_ruler.png
+++ b/app/assets/images/emoji/straight_ruler.png
Binary files differ
diff --git a/public/-/emojis/1/strawberry.png b/app/assets/images/emoji/strawberry.png
index 7bb86f0b29c..7bb86f0b29c 100644
--- a/public/-/emojis/1/strawberry.png
+++ b/app/assets/images/emoji/strawberry.png
Binary files differ
diff --git a/public/-/emojis/1/stuck_out_tongue.png b/app/assets/images/emoji/stuck_out_tongue.png
index 25757341f96..25757341f96 100644
--- a/public/-/emojis/1/stuck_out_tongue.png
+++ b/app/assets/images/emoji/stuck_out_tongue.png
Binary files differ
diff --git a/public/-/emojis/1/stuck_out_tongue_closed_eyes.png b/app/assets/images/emoji/stuck_out_tongue_closed_eyes.png
index 5c0401e9b1d..5c0401e9b1d 100644
--- a/public/-/emojis/1/stuck_out_tongue_closed_eyes.png
+++ b/app/assets/images/emoji/stuck_out_tongue_closed_eyes.png
Binary files differ
diff --git a/public/-/emojis/1/stuck_out_tongue_winking_eye.png b/app/assets/images/emoji/stuck_out_tongue_winking_eye.png
index 4817eaa3dc6..4817eaa3dc6 100644
--- a/public/-/emojis/1/stuck_out_tongue_winking_eye.png
+++ b/app/assets/images/emoji/stuck_out_tongue_winking_eye.png
Binary files differ
diff --git a/public/-/emojis/1/stuffed_flatbread.png b/app/assets/images/emoji/stuffed_flatbread.png
index a2e10df40a5..a2e10df40a5 100644
--- a/public/-/emojis/1/stuffed_flatbread.png
+++ b/app/assets/images/emoji/stuffed_flatbread.png
Binary files differ
diff --git a/public/-/emojis/1/sun_with_face.png b/app/assets/images/emoji/sun_with_face.png
index 14a4ea971db..14a4ea971db 100644
--- a/public/-/emojis/1/sun_with_face.png
+++ b/app/assets/images/emoji/sun_with_face.png
Binary files differ
diff --git a/public/-/emojis/1/sunflower.png b/app/assets/images/emoji/sunflower.png
index 08cc07761ea..08cc07761ea 100644
--- a/public/-/emojis/1/sunflower.png
+++ b/app/assets/images/emoji/sunflower.png
Binary files differ
diff --git a/public/-/emojis/1/sunglasses.png b/app/assets/images/emoji/sunglasses.png
index 20011735110..20011735110 100644
--- a/public/-/emojis/1/sunglasses.png
+++ b/app/assets/images/emoji/sunglasses.png
Binary files differ
diff --git a/public/-/emojis/1/sunny.png b/app/assets/images/emoji/sunny.png
index fd521ae31a7..fd521ae31a7 100644
--- a/public/-/emojis/1/sunny.png
+++ b/app/assets/images/emoji/sunny.png
Binary files differ
diff --git a/public/-/emojis/1/sunrise.png b/app/assets/images/emoji/sunrise.png
index 4ad36003c20..4ad36003c20 100644
--- a/public/-/emojis/1/sunrise.png
+++ b/app/assets/images/emoji/sunrise.png
Binary files differ
diff --git a/public/-/emojis/1/sunrise_over_mountains.png b/app/assets/images/emoji/sunrise_over_mountains.png
index 2b99307344d..2b99307344d 100644
--- a/public/-/emojis/1/sunrise_over_mountains.png
+++ b/app/assets/images/emoji/sunrise_over_mountains.png
Binary files differ
diff --git a/public/-/emojis/1/surfer.png b/app/assets/images/emoji/surfer.png
index 3ab017adf4b..3ab017adf4b 100644
--- a/public/-/emojis/1/surfer.png
+++ b/app/assets/images/emoji/surfer.png
Binary files differ
diff --git a/public/-/emojis/1/surfer_tone1.png b/app/assets/images/emoji/surfer_tone1.png
index b5faaa524cc..b5faaa524cc 100644
--- a/public/-/emojis/1/surfer_tone1.png
+++ b/app/assets/images/emoji/surfer_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/surfer_tone2.png b/app/assets/images/emoji/surfer_tone2.png
index 6d92e412ff1..6d92e412ff1 100644
--- a/public/-/emojis/1/surfer_tone2.png
+++ b/app/assets/images/emoji/surfer_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/surfer_tone3.png b/app/assets/images/emoji/surfer_tone3.png
index f05ef59496e..f05ef59496e 100644
--- a/public/-/emojis/1/surfer_tone3.png
+++ b/app/assets/images/emoji/surfer_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/surfer_tone4.png b/app/assets/images/emoji/surfer_tone4.png
index 35e143d19dc..35e143d19dc 100644
--- a/public/-/emojis/1/surfer_tone4.png
+++ b/app/assets/images/emoji/surfer_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/surfer_tone5.png b/app/assets/images/emoji/surfer_tone5.png
index 38917658eac..38917658eac 100644
--- a/public/-/emojis/1/surfer_tone5.png
+++ b/app/assets/images/emoji/surfer_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/sushi.png b/app/assets/images/emoji/sushi.png
index f171fd2f7a1..f171fd2f7a1 100644
--- a/public/-/emojis/1/sushi.png
+++ b/app/assets/images/emoji/sushi.png
Binary files differ
diff --git a/public/-/emojis/1/suspension_railway.png b/app/assets/images/emoji/suspension_railway.png
index a59d5f48c24..a59d5f48c24 100644
--- a/public/-/emojis/1/suspension_railway.png
+++ b/app/assets/images/emoji/suspension_railway.png
Binary files differ
diff --git a/public/-/emojis/1/sweat.png b/app/assets/images/emoji/sweat.png
index f0dae7b7893..f0dae7b7893 100644
--- a/public/-/emojis/1/sweat.png
+++ b/app/assets/images/emoji/sweat.png
Binary files differ
diff --git a/public/-/emojis/1/sweat_drops.png b/app/assets/images/emoji/sweat_drops.png
index 4106117ebc8..4106117ebc8 100644
--- a/public/-/emojis/1/sweat_drops.png
+++ b/app/assets/images/emoji/sweat_drops.png
Binary files differ
diff --git a/public/-/emojis/1/sweat_smile.png b/app/assets/images/emoji/sweat_smile.png
index cb18d9c899b..cb18d9c899b 100644
--- a/public/-/emojis/1/sweat_smile.png
+++ b/app/assets/images/emoji/sweat_smile.png
Binary files differ
diff --git a/public/-/emojis/1/sweet_potato.png b/app/assets/images/emoji/sweet_potato.png
index 92a425f2e20..92a425f2e20 100644
--- a/public/-/emojis/1/sweet_potato.png
+++ b/app/assets/images/emoji/sweet_potato.png
Binary files differ
diff --git a/public/-/emojis/1/swimmer.png b/app/assets/images/emoji/swimmer.png
index 55b4d72f9a7..55b4d72f9a7 100644
--- a/public/-/emojis/1/swimmer.png
+++ b/app/assets/images/emoji/swimmer.png
Binary files differ
diff --git a/public/-/emojis/1/swimmer_tone1.png b/app/assets/images/emoji/swimmer_tone1.png
index 38441c9ca9a..38441c9ca9a 100644
--- a/public/-/emojis/1/swimmer_tone1.png
+++ b/app/assets/images/emoji/swimmer_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/swimmer_tone2.png b/app/assets/images/emoji/swimmer_tone2.png
index b0d43112444..b0d43112444 100644
--- a/public/-/emojis/1/swimmer_tone2.png
+++ b/app/assets/images/emoji/swimmer_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/swimmer_tone3.png b/app/assets/images/emoji/swimmer_tone3.png
index 211e77e2aa0..211e77e2aa0 100644
--- a/public/-/emojis/1/swimmer_tone3.png
+++ b/app/assets/images/emoji/swimmer_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/swimmer_tone4.png b/app/assets/images/emoji/swimmer_tone4.png
index f34c34db9d2..f34c34db9d2 100644
--- a/public/-/emojis/1/swimmer_tone4.png
+++ b/app/assets/images/emoji/swimmer_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/swimmer_tone5.png b/app/assets/images/emoji/swimmer_tone5.png
index 3e9231ff868..3e9231ff868 100644
--- a/public/-/emojis/1/swimmer_tone5.png
+++ b/app/assets/images/emoji/swimmer_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/symbols.png b/app/assets/images/emoji/symbols.png
index ac2fc1f358f..ac2fc1f358f 100644
--- a/public/-/emojis/1/symbols.png
+++ b/app/assets/images/emoji/symbols.png
Binary files differ
diff --git a/public/-/emojis/1/synagogue.png b/app/assets/images/emoji/synagogue.png
index ee347904c80..ee347904c80 100644
--- a/public/-/emojis/1/synagogue.png
+++ b/app/assets/images/emoji/synagogue.png
Binary files differ
diff --git a/public/-/emojis/1/syringe.png b/app/assets/images/emoji/syringe.png
index 71c1a9528d5..71c1a9528d5 100644
--- a/public/-/emojis/1/syringe.png
+++ b/app/assets/images/emoji/syringe.png
Binary files differ
diff --git a/public/-/emojis/1/taco.png b/app/assets/images/emoji/taco.png
index 10e847a4619..10e847a4619 100644
--- a/public/-/emojis/1/taco.png
+++ b/app/assets/images/emoji/taco.png
Binary files differ
diff --git a/public/-/emojis/1/tada.png b/app/assets/images/emoji/tada.png
index 0244d60f269..0244d60f269 100644
--- a/public/-/emojis/1/tada.png
+++ b/app/assets/images/emoji/tada.png
Binary files differ
diff --git a/public/-/emojis/1/tanabata_tree.png b/app/assets/images/emoji/tanabata_tree.png
index 46fcb3a1aac..46fcb3a1aac 100644
--- a/public/-/emojis/1/tanabata_tree.png
+++ b/app/assets/images/emoji/tanabata_tree.png
Binary files differ
diff --git a/public/-/emojis/1/tangerine.png b/app/assets/images/emoji/tangerine.png
index ab14e5378db..ab14e5378db 100644
--- a/public/-/emojis/1/tangerine.png
+++ b/app/assets/images/emoji/tangerine.png
Binary files differ
diff --git a/public/-/emojis/1/taurus.png b/app/assets/images/emoji/taurus.png
index b2a370df42b..b2a370df42b 100644
--- a/public/-/emojis/1/taurus.png
+++ b/app/assets/images/emoji/taurus.png
Binary files differ
diff --git a/public/-/emojis/1/taxi.png b/app/assets/images/emoji/taxi.png
index 55f4cc84797..55f4cc84797 100644
--- a/public/-/emojis/1/taxi.png
+++ b/app/assets/images/emoji/taxi.png
Binary files differ
diff --git a/public/-/emojis/1/tea.png b/app/assets/images/emoji/tea.png
index b53b98f0c45..b53b98f0c45 100644
--- a/public/-/emojis/1/tea.png
+++ b/app/assets/images/emoji/tea.png
Binary files differ
diff --git a/public/-/emojis/1/telephone.png b/app/assets/images/emoji/telephone.png
index a1e69f566bc..a1e69f566bc 100644
--- a/public/-/emojis/1/telephone.png
+++ b/app/assets/images/emoji/telephone.png
Binary files differ
diff --git a/public/-/emojis/1/telephone_receiver.png b/app/assets/images/emoji/telephone_receiver.png
index 69388316c35..69388316c35 100644
--- a/public/-/emojis/1/telephone_receiver.png
+++ b/app/assets/images/emoji/telephone_receiver.png
Binary files differ
diff --git a/public/-/emojis/1/telescope.png b/app/assets/images/emoji/telescope.png
index d63154614b5..d63154614b5 100644
--- a/public/-/emojis/1/telescope.png
+++ b/app/assets/images/emoji/telescope.png
Binary files differ
diff --git a/public/-/emojis/1/ten.png b/app/assets/images/emoji/ten.png
index 782d4004962..782d4004962 100644
--- a/public/-/emojis/1/ten.png
+++ b/app/assets/images/emoji/ten.png
Binary files differ
diff --git a/public/-/emojis/1/tennis.png b/app/assets/images/emoji/tennis.png
index 7e68ba8f301..7e68ba8f301 100644
--- a/public/-/emojis/1/tennis.png
+++ b/app/assets/images/emoji/tennis.png
Binary files differ
diff --git a/public/-/emojis/1/tent.png b/app/assets/images/emoji/tent.png
index 3fddcfc56eb..3fddcfc56eb 100644
--- a/public/-/emojis/1/tent.png
+++ b/app/assets/images/emoji/tent.png
Binary files differ
diff --git a/public/-/emojis/1/thermometer.png b/app/assets/images/emoji/thermometer.png
index b1147392426..b1147392426 100644
--- a/public/-/emojis/1/thermometer.png
+++ b/app/assets/images/emoji/thermometer.png
Binary files differ
diff --git a/public/-/emojis/1/thermometer_face.png b/app/assets/images/emoji/thermometer_face.png
index 8fc57387563..8fc57387563 100644
--- a/public/-/emojis/1/thermometer_face.png
+++ b/app/assets/images/emoji/thermometer_face.png
Binary files differ
diff --git a/public/-/emojis/1/thinking.png b/app/assets/images/emoji/thinking.png
index c18f6fd14ad..c18f6fd14ad 100644
--- a/public/-/emojis/1/thinking.png
+++ b/app/assets/images/emoji/thinking.png
Binary files differ
diff --git a/public/-/emojis/1/third_place.png b/app/assets/images/emoji/third_place.png
index 636e04a5950..636e04a5950 100644
--- a/public/-/emojis/1/third_place.png
+++ b/app/assets/images/emoji/third_place.png
Binary files differ
diff --git a/public/-/emojis/1/thought_balloon.png b/app/assets/images/emoji/thought_balloon.png
index 72fe8fa7022..72fe8fa7022 100644
--- a/public/-/emojis/1/thought_balloon.png
+++ b/app/assets/images/emoji/thought_balloon.png
Binary files differ
diff --git a/public/-/emojis/1/three.png b/app/assets/images/emoji/three.png
index dbaa6183e72..dbaa6183e72 100644
--- a/public/-/emojis/1/three.png
+++ b/app/assets/images/emoji/three.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsdown.png b/app/assets/images/emoji/thumbsdown.png
index b63da2f20a8..b63da2f20a8 100644
--- a/public/-/emojis/1/thumbsdown.png
+++ b/app/assets/images/emoji/thumbsdown.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsdown_tone1.png b/app/assets/images/emoji/thumbsdown_tone1.png
index a1631af8e92..a1631af8e92 100644
--- a/public/-/emojis/1/thumbsdown_tone1.png
+++ b/app/assets/images/emoji/thumbsdown_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsdown_tone2.png b/app/assets/images/emoji/thumbsdown_tone2.png
index 85fff82d595..85fff82d595 100644
--- a/public/-/emojis/1/thumbsdown_tone2.png
+++ b/app/assets/images/emoji/thumbsdown_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsdown_tone3.png b/app/assets/images/emoji/thumbsdown_tone3.png
index eeba3be80fd..eeba3be80fd 100644
--- a/public/-/emojis/1/thumbsdown_tone3.png
+++ b/app/assets/images/emoji/thumbsdown_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsdown_tone4.png b/app/assets/images/emoji/thumbsdown_tone4.png
index 1addafdaed0..1addafdaed0 100644
--- a/public/-/emojis/1/thumbsdown_tone4.png
+++ b/app/assets/images/emoji/thumbsdown_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsdown_tone5.png b/app/assets/images/emoji/thumbsdown_tone5.png
index 37ec07b5721..37ec07b5721 100644
--- a/public/-/emojis/1/thumbsdown_tone5.png
+++ b/app/assets/images/emoji/thumbsdown_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsup.png b/app/assets/images/emoji/thumbsup.png
index f9e6f13a34f..f9e6f13a34f 100644
--- a/public/-/emojis/1/thumbsup.png
+++ b/app/assets/images/emoji/thumbsup.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsup_tone1.png b/app/assets/images/emoji/thumbsup_tone1.png
index 39684cd5cc7..39684cd5cc7 100644
--- a/public/-/emojis/1/thumbsup_tone1.png
+++ b/app/assets/images/emoji/thumbsup_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsup_tone2.png b/app/assets/images/emoji/thumbsup_tone2.png
index a9b59723573..a9b59723573 100644
--- a/public/-/emojis/1/thumbsup_tone2.png
+++ b/app/assets/images/emoji/thumbsup_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsup_tone3.png b/app/assets/images/emoji/thumbsup_tone3.png
index c5e29167015..c5e29167015 100644
--- a/public/-/emojis/1/thumbsup_tone3.png
+++ b/app/assets/images/emoji/thumbsup_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsup_tone4.png b/app/assets/images/emoji/thumbsup_tone4.png
index 5bf4857a884..5bf4857a884 100644
--- a/public/-/emojis/1/thumbsup_tone4.png
+++ b/app/assets/images/emoji/thumbsup_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/thumbsup_tone5.png b/app/assets/images/emoji/thumbsup_tone5.png
index d829f787c61..d829f787c61 100644
--- a/public/-/emojis/1/thumbsup_tone5.png
+++ b/app/assets/images/emoji/thumbsup_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/thunder_cloud_rain.png b/app/assets/images/emoji/thunder_cloud_rain.png
index 31a26a1b6ee..31a26a1b6ee 100644
--- a/public/-/emojis/1/thunder_cloud_rain.png
+++ b/app/assets/images/emoji/thunder_cloud_rain.png
Binary files differ
diff --git a/public/-/emojis/1/ticket.png b/app/assets/images/emoji/ticket.png
index 605936bb6b3..605936bb6b3 100644
--- a/public/-/emojis/1/ticket.png
+++ b/app/assets/images/emoji/ticket.png
Binary files differ
diff --git a/public/-/emojis/1/tickets.png b/app/assets/images/emoji/tickets.png
index e510f4a7a50..e510f4a7a50 100644
--- a/public/-/emojis/1/tickets.png
+++ b/app/assets/images/emoji/tickets.png
Binary files differ
diff --git a/public/-/emojis/1/tiger.png b/app/assets/images/emoji/tiger.png
index a4d3ef086d4..a4d3ef086d4 100644
--- a/public/-/emojis/1/tiger.png
+++ b/app/assets/images/emoji/tiger.png
Binary files differ
diff --git a/public/-/emojis/1/tiger2.png b/app/assets/images/emoji/tiger2.png
index 871a8b74d56..871a8b74d56 100644
--- a/public/-/emojis/1/tiger2.png
+++ b/app/assets/images/emoji/tiger2.png
Binary files differ
diff --git a/public/-/emojis/1/timer.png b/app/assets/images/emoji/timer.png
index 8a3be574c24..8a3be574c24 100644
--- a/public/-/emojis/1/timer.png
+++ b/app/assets/images/emoji/timer.png
Binary files differ
diff --git a/public/-/emojis/1/tired_face.png b/app/assets/images/emoji/tired_face.png
index 4e01eff5b23..4e01eff5b23 100644
--- a/public/-/emojis/1/tired_face.png
+++ b/app/assets/images/emoji/tired_face.png
Binary files differ
diff --git a/public/-/emojis/1/tm.png b/app/assets/images/emoji/tm.png
index 7a0c44a2c2b..7a0c44a2c2b 100644
--- a/public/-/emojis/1/tm.png
+++ b/app/assets/images/emoji/tm.png
Binary files differ
diff --git a/public/-/emojis/1/toilet.png b/app/assets/images/emoji/toilet.png
index 1392f761835..1392f761835 100644
--- a/public/-/emojis/1/toilet.png
+++ b/app/assets/images/emoji/toilet.png
Binary files differ
diff --git a/public/-/emojis/1/tokyo_tower.png b/app/assets/images/emoji/tokyo_tower.png
index 37df7fc65b1..37df7fc65b1 100644
--- a/public/-/emojis/1/tokyo_tower.png
+++ b/app/assets/images/emoji/tokyo_tower.png
Binary files differ
diff --git a/public/-/emojis/1/tomato.png b/app/assets/images/emoji/tomato.png
index 497da8f6b22..497da8f6b22 100644
--- a/public/-/emojis/1/tomato.png
+++ b/app/assets/images/emoji/tomato.png
Binary files differ
diff --git a/public/-/emojis/1/tone1.png b/app/assets/images/emoji/tone1.png
index c395f3d0d68..c395f3d0d68 100644
--- a/public/-/emojis/1/tone1.png
+++ b/app/assets/images/emoji/tone1.png
Binary files differ
diff --git a/public/-/emojis/1/tone2.png b/app/assets/images/emoji/tone2.png
index 080847431c1..080847431c1 100644
--- a/public/-/emojis/1/tone2.png
+++ b/app/assets/images/emoji/tone2.png
Binary files differ
diff --git a/public/-/emojis/1/tone3.png b/app/assets/images/emoji/tone3.png
index 482dd403475..482dd403475 100644
--- a/public/-/emojis/1/tone3.png
+++ b/app/assets/images/emoji/tone3.png
Binary files differ
diff --git a/public/-/emojis/1/tone4.png b/app/assets/images/emoji/tone4.png
index 5cae8bb20b0..5cae8bb20b0 100644
--- a/public/-/emojis/1/tone4.png
+++ b/app/assets/images/emoji/tone4.png
Binary files differ
diff --git a/public/-/emojis/1/tone5.png b/app/assets/images/emoji/tone5.png
index 49d1a8c3a64..49d1a8c3a64 100644
--- a/public/-/emojis/1/tone5.png
+++ b/app/assets/images/emoji/tone5.png
Binary files differ
diff --git a/public/-/emojis/1/tongue.png b/app/assets/images/emoji/tongue.png
index 70ce9c1225f..70ce9c1225f 100644
--- a/public/-/emojis/1/tongue.png
+++ b/app/assets/images/emoji/tongue.png
Binary files differ
diff --git a/public/-/emojis/1/tools.png b/app/assets/images/emoji/tools.png
index 3c6049273a9..3c6049273a9 100644
--- a/public/-/emojis/1/tools.png
+++ b/app/assets/images/emoji/tools.png
Binary files differ
diff --git a/public/-/emojis/1/top.png b/app/assets/images/emoji/top.png
index 49dea8c08b5..49dea8c08b5 100644
--- a/public/-/emojis/1/top.png
+++ b/app/assets/images/emoji/top.png
Binary files differ
diff --git a/public/-/emojis/1/tophat.png b/app/assets/images/emoji/tophat.png
index 131b657b109..131b657b109 100644
--- a/public/-/emojis/1/tophat.png
+++ b/app/assets/images/emoji/tophat.png
Binary files differ
diff --git a/public/-/emojis/1/track_next.png b/app/assets/images/emoji/track_next.png
index f8880d33bab..f8880d33bab 100644
--- a/public/-/emojis/1/track_next.png
+++ b/app/assets/images/emoji/track_next.png
Binary files differ
diff --git a/public/-/emojis/1/track_previous.png b/app/assets/images/emoji/track_previous.png
index 1ffd0566cfc..1ffd0566cfc 100644
--- a/public/-/emojis/1/track_previous.png
+++ b/app/assets/images/emoji/track_previous.png
Binary files differ
diff --git a/public/-/emojis/1/trackball.png b/app/assets/images/emoji/trackball.png
index 3bea84ad7ce..3bea84ad7ce 100644
--- a/public/-/emojis/1/trackball.png
+++ b/app/assets/images/emoji/trackball.png
Binary files differ
diff --git a/public/-/emojis/1/tractor.png b/app/assets/images/emoji/tractor.png
index c1bf8cae44f..c1bf8cae44f 100644
--- a/public/-/emojis/1/tractor.png
+++ b/app/assets/images/emoji/tractor.png
Binary files differ
diff --git a/public/-/emojis/1/traffic_light.png b/app/assets/images/emoji/traffic_light.png
index 6b312285b00..6b312285b00 100644
--- a/public/-/emojis/1/traffic_light.png
+++ b/app/assets/images/emoji/traffic_light.png
Binary files differ
diff --git a/public/-/emojis/1/train.png b/app/assets/images/emoji/train.png
index 3c80321f7e8..3c80321f7e8 100644
--- a/public/-/emojis/1/train.png
+++ b/app/assets/images/emoji/train.png
Binary files differ
diff --git a/public/-/emojis/1/train2.png b/app/assets/images/emoji/train2.png
index 367c7bc5d39..367c7bc5d39 100644
--- a/public/-/emojis/1/train2.png
+++ b/app/assets/images/emoji/train2.png
Binary files differ
diff --git a/public/-/emojis/1/tram.png b/app/assets/images/emoji/tram.png
index b6f0e69038f..b6f0e69038f 100644
--- a/public/-/emojis/1/tram.png
+++ b/app/assets/images/emoji/tram.png
Binary files differ
diff --git a/public/-/emojis/1/triangular_flag_on_post.png b/app/assets/images/emoji/triangular_flag_on_post.png
index c12d8b06886..c12d8b06886 100644
--- a/public/-/emojis/1/triangular_flag_on_post.png
+++ b/app/assets/images/emoji/triangular_flag_on_post.png
Binary files differ
diff --git a/public/-/emojis/1/triangular_ruler.png b/app/assets/images/emoji/triangular_ruler.png
index 77dee9ee843..77dee9ee843 100644
--- a/public/-/emojis/1/triangular_ruler.png
+++ b/app/assets/images/emoji/triangular_ruler.png
Binary files differ
diff --git a/public/-/emojis/1/trident.png b/app/assets/images/emoji/trident.png
index 777a1dad121..777a1dad121 100644
--- a/public/-/emojis/1/trident.png
+++ b/app/assets/images/emoji/trident.png
Binary files differ
diff --git a/public/-/emojis/1/triumph.png b/app/assets/images/emoji/triumph.png
index 0be7a501969..0be7a501969 100644
--- a/public/-/emojis/1/triumph.png
+++ b/app/assets/images/emoji/triumph.png
Binary files differ
diff --git a/public/-/emojis/1/trolleybus.png b/app/assets/images/emoji/trolleybus.png
index 139a9931b52..139a9931b52 100644
--- a/public/-/emojis/1/trolleybus.png
+++ b/app/assets/images/emoji/trolleybus.png
Binary files differ
diff --git a/public/-/emojis/1/trophy.png b/app/assets/images/emoji/trophy.png
index ac2895c1896..ac2895c1896 100644
--- a/public/-/emojis/1/trophy.png
+++ b/app/assets/images/emoji/trophy.png
Binary files differ
diff --git a/public/-/emojis/1/tropical_drink.png b/app/assets/images/emoji/tropical_drink.png
index cd714f81b36..cd714f81b36 100644
--- a/public/-/emojis/1/tropical_drink.png
+++ b/app/assets/images/emoji/tropical_drink.png
Binary files differ
diff --git a/public/-/emojis/1/tropical_fish.png b/app/assets/images/emoji/tropical_fish.png
index 252105235a6..252105235a6 100644
--- a/public/-/emojis/1/tropical_fish.png
+++ b/app/assets/images/emoji/tropical_fish.png
Binary files differ
diff --git a/public/-/emojis/1/truck.png b/app/assets/images/emoji/truck.png
index 130de047f8b..130de047f8b 100644
--- a/public/-/emojis/1/truck.png
+++ b/app/assets/images/emoji/truck.png
Binary files differ
diff --git a/public/-/emojis/1/trumpet.png b/app/assets/images/emoji/trumpet.png
index 864ccbcd04a..864ccbcd04a 100644
--- a/public/-/emojis/1/trumpet.png
+++ b/app/assets/images/emoji/trumpet.png
Binary files differ
diff --git a/public/-/emojis/1/tulip.png b/app/assets/images/emoji/tulip.png
index f799d75c182..f799d75c182 100644
--- a/public/-/emojis/1/tulip.png
+++ b/app/assets/images/emoji/tulip.png
Binary files differ
diff --git a/public/-/emojis/1/tumbler_glass.png b/app/assets/images/emoji/tumbler_glass.png
index 7bf09229879..7bf09229879 100644
--- a/public/-/emojis/1/tumbler_glass.png
+++ b/app/assets/images/emoji/tumbler_glass.png
Binary files differ
diff --git a/public/-/emojis/1/turkey.png b/app/assets/images/emoji/turkey.png
index 344af94c9ec..344af94c9ec 100644
--- a/public/-/emojis/1/turkey.png
+++ b/app/assets/images/emoji/turkey.png
Binary files differ
diff --git a/public/-/emojis/1/turtle.png b/app/assets/images/emoji/turtle.png
index c22f7519fe8..c22f7519fe8 100644
--- a/public/-/emojis/1/turtle.png
+++ b/app/assets/images/emoji/turtle.png
Binary files differ
diff --git a/public/-/emojis/1/tv.png b/app/assets/images/emoji/tv.png
index 999f1fb5c6d..999f1fb5c6d 100644
--- a/public/-/emojis/1/tv.png
+++ b/app/assets/images/emoji/tv.png
Binary files differ
diff --git a/public/-/emojis/1/twisted_rightwards_arrows.png b/app/assets/images/emoji/twisted_rightwards_arrows.png
index 5904badde65..5904badde65 100644
--- a/public/-/emojis/1/twisted_rightwards_arrows.png
+++ b/app/assets/images/emoji/twisted_rightwards_arrows.png
Binary files differ
diff --git a/public/-/emojis/1/two.png b/app/assets/images/emoji/two.png
index 927339c9bff..927339c9bff 100644
--- a/public/-/emojis/1/two.png
+++ b/app/assets/images/emoji/two.png
Binary files differ
diff --git a/public/-/emojis/1/two_hearts.png b/app/assets/images/emoji/two_hearts.png
index 4d8c3386042..4d8c3386042 100644
--- a/public/-/emojis/1/two_hearts.png
+++ b/app/assets/images/emoji/two_hearts.png
Binary files differ
diff --git a/public/-/emojis/1/two_men_holding_hands.png b/app/assets/images/emoji/two_men_holding_hands.png
index a511fda822a..a511fda822a 100644
--- a/public/-/emojis/1/two_men_holding_hands.png
+++ b/app/assets/images/emoji/two_men_holding_hands.png
Binary files differ
diff --git a/public/-/emojis/1/two_women_holding_hands.png b/app/assets/images/emoji/two_women_holding_hands.png
index b077cd3e40f..b077cd3e40f 100644
--- a/public/-/emojis/1/two_women_holding_hands.png
+++ b/app/assets/images/emoji/two_women_holding_hands.png
Binary files differ
diff --git a/public/-/emojis/1/u5272.png b/app/assets/images/emoji/u5272.png
index c4f837fe684..c4f837fe684 100644
--- a/public/-/emojis/1/u5272.png
+++ b/app/assets/images/emoji/u5272.png
Binary files differ
diff --git a/public/-/emojis/1/u5408.png b/app/assets/images/emoji/u5408.png
index 8375ad9d9af..8375ad9d9af 100644
--- a/public/-/emojis/1/u5408.png
+++ b/app/assets/images/emoji/u5408.png
Binary files differ
diff --git a/public/-/emojis/1/u55b6.png b/app/assets/images/emoji/u55b6.png
index d21cb30eaf3..d21cb30eaf3 100644
--- a/public/-/emojis/1/u55b6.png
+++ b/app/assets/images/emoji/u55b6.png
Binary files differ
diff --git a/public/-/emojis/1/u6307.png b/app/assets/images/emoji/u6307.png
index 078e23e4ff3..078e23e4ff3 100644
--- a/public/-/emojis/1/u6307.png
+++ b/app/assets/images/emoji/u6307.png
Binary files differ
diff --git a/public/-/emojis/1/u6708.png b/app/assets/images/emoji/u6708.png
index c41bd36a26a..c41bd36a26a 100644
--- a/public/-/emojis/1/u6708.png
+++ b/app/assets/images/emoji/u6708.png
Binary files differ
diff --git a/public/-/emojis/1/u6709.png b/app/assets/images/emoji/u6709.png
index a4510de41c0..a4510de41c0 100644
--- a/public/-/emojis/1/u6709.png
+++ b/app/assets/images/emoji/u6709.png
Binary files differ
diff --git a/public/-/emojis/1/u6e80.png b/app/assets/images/emoji/u6e80.png
index f9dea8b8833..f9dea8b8833 100644
--- a/public/-/emojis/1/u6e80.png
+++ b/app/assets/images/emoji/u6e80.png
Binary files differ
diff --git a/public/-/emojis/1/u7121.png b/app/assets/images/emoji/u7121.png
index d3a19b420de..d3a19b420de 100644
--- a/public/-/emojis/1/u7121.png
+++ b/app/assets/images/emoji/u7121.png
Binary files differ
diff --git a/public/-/emojis/1/u7533.png b/app/assets/images/emoji/u7533.png
index 6b7af0ee222..6b7af0ee222 100644
--- a/public/-/emojis/1/u7533.png
+++ b/app/assets/images/emoji/u7533.png
Binary files differ
diff --git a/public/-/emojis/1/u7981.png b/app/assets/images/emoji/u7981.png
index 4c704e03433..4c704e03433 100644
--- a/public/-/emojis/1/u7981.png
+++ b/app/assets/images/emoji/u7981.png
Binary files differ
diff --git a/public/-/emojis/1/u7a7a.png b/app/assets/images/emoji/u7a7a.png
index 47966c1ea93..47966c1ea93 100644
--- a/public/-/emojis/1/u7a7a.png
+++ b/app/assets/images/emoji/u7a7a.png
Binary files differ
diff --git a/public/-/emojis/1/umbrella.png b/app/assets/images/emoji/umbrella.png
index 5b35b7ff6a4..5b35b7ff6a4 100644
--- a/public/-/emojis/1/umbrella.png
+++ b/app/assets/images/emoji/umbrella.png
Binary files differ
diff --git a/public/-/emojis/1/umbrella2.png b/app/assets/images/emoji/umbrella2.png
index 97fe859e74f..97fe859e74f 100644
--- a/public/-/emojis/1/umbrella2.png
+++ b/app/assets/images/emoji/umbrella2.png
Binary files differ
diff --git a/public/-/emojis/1/unamused.png b/app/assets/images/emoji/unamused.png
index 25e3677f2eb..25e3677f2eb 100644
--- a/public/-/emojis/1/unamused.png
+++ b/app/assets/images/emoji/unamused.png
Binary files differ
diff --git a/public/-/emojis/1/underage.png b/app/assets/images/emoji/underage.png
index 6dfe6da51e2..6dfe6da51e2 100644
--- a/public/-/emojis/1/underage.png
+++ b/app/assets/images/emoji/underage.png
Binary files differ
diff --git a/public/-/emojis/1/unicorn.png b/app/assets/images/emoji/unicorn.png
index 05a97969f7e..05a97969f7e 100644
--- a/public/-/emojis/1/unicorn.png
+++ b/app/assets/images/emoji/unicorn.png
Binary files differ
diff --git a/public/-/emojis/1/unlock.png b/app/assets/images/emoji/unlock.png
index 4a74a693911..4a74a693911 100644
--- a/public/-/emojis/1/unlock.png
+++ b/app/assets/images/emoji/unlock.png
Binary files differ
diff --git a/public/-/emojis/1/up.png b/app/assets/images/emoji/up.png
index 0d42142ba04..0d42142ba04 100644
--- a/public/-/emojis/1/up.png
+++ b/app/assets/images/emoji/up.png
Binary files differ
diff --git a/public/-/emojis/1/upside_down.png b/app/assets/images/emoji/upside_down.png
index 128f31c9828..128f31c9828 100644
--- a/public/-/emojis/1/upside_down.png
+++ b/app/assets/images/emoji/upside_down.png
Binary files differ
diff --git a/public/-/emojis/1/urn.png b/app/assets/images/emoji/urn.png
index 6b5b3503438..6b5b3503438 100644
--- a/public/-/emojis/1/urn.png
+++ b/app/assets/images/emoji/urn.png
Binary files differ
diff --git a/public/-/emojis/1/v.png b/app/assets/images/emoji/v.png
index 70c5516ffee..70c5516ffee 100644
--- a/public/-/emojis/1/v.png
+++ b/app/assets/images/emoji/v.png
Binary files differ
diff --git a/public/-/emojis/1/v_tone1.png b/app/assets/images/emoji/v_tone1.png
index 6ac54a745f4..6ac54a745f4 100644
--- a/public/-/emojis/1/v_tone1.png
+++ b/app/assets/images/emoji/v_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/v_tone2.png b/app/assets/images/emoji/v_tone2.png
index 6dd9669866d..6dd9669866d 100644
--- a/public/-/emojis/1/v_tone2.png
+++ b/app/assets/images/emoji/v_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/v_tone3.png b/app/assets/images/emoji/v_tone3.png
index a615e53f02f..a615e53f02f 100644
--- a/public/-/emojis/1/v_tone3.png
+++ b/app/assets/images/emoji/v_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/v_tone4.png b/app/assets/images/emoji/v_tone4.png
index 33a34bd5a78..33a34bd5a78 100644
--- a/public/-/emojis/1/v_tone4.png
+++ b/app/assets/images/emoji/v_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/v_tone5.png b/app/assets/images/emoji/v_tone5.png
index 45ad14b6c9c..45ad14b6c9c 100644
--- a/public/-/emojis/1/v_tone5.png
+++ b/app/assets/images/emoji/v_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/vertical_traffic_light.png b/app/assets/images/emoji/vertical_traffic_light.png
index 8085973eecf..8085973eecf 100644
--- a/public/-/emojis/1/vertical_traffic_light.png
+++ b/app/assets/images/emoji/vertical_traffic_light.png
Binary files differ
diff --git a/public/-/emojis/1/vhs.png b/app/assets/images/emoji/vhs.png
index b9eb78ecd92..b9eb78ecd92 100644
--- a/public/-/emojis/1/vhs.png
+++ b/app/assets/images/emoji/vhs.png
Binary files differ
diff --git a/public/-/emojis/1/vibration_mode.png b/app/assets/images/emoji/vibration_mode.png
index cc46510e48e..cc46510e48e 100644
--- a/public/-/emojis/1/vibration_mode.png
+++ b/app/assets/images/emoji/vibration_mode.png
Binary files differ
diff --git a/public/-/emojis/1/video_camera.png b/app/assets/images/emoji/video_camera.png
index 85b300d425c..85b300d425c 100644
--- a/public/-/emojis/1/video_camera.png
+++ b/app/assets/images/emoji/video_camera.png
Binary files differ
diff --git a/public/-/emojis/1/video_game.png b/app/assets/images/emoji/video_game.png
index 316a9106a55..316a9106a55 100644
--- a/public/-/emojis/1/video_game.png
+++ b/app/assets/images/emoji/video_game.png
Binary files differ
diff --git a/public/-/emojis/1/violin.png b/app/assets/images/emoji/violin.png
index e1e76cce242..e1e76cce242 100644
--- a/public/-/emojis/1/violin.png
+++ b/app/assets/images/emoji/violin.png
Binary files differ
diff --git a/public/-/emojis/1/virgo.png b/app/assets/images/emoji/virgo.png
index a6b56c2cb5e..a6b56c2cb5e 100644
--- a/public/-/emojis/1/virgo.png
+++ b/app/assets/images/emoji/virgo.png
Binary files differ
diff --git a/public/-/emojis/1/volcano.png b/app/assets/images/emoji/volcano.png
index 931d569294c..931d569294c 100644
--- a/public/-/emojis/1/volcano.png
+++ b/app/assets/images/emoji/volcano.png
Binary files differ
diff --git a/public/-/emojis/1/volleyball.png b/app/assets/images/emoji/volleyball.png
index 7a0e49d4b07..7a0e49d4b07 100644
--- a/public/-/emojis/1/volleyball.png
+++ b/app/assets/images/emoji/volleyball.png
Binary files differ
diff --git a/public/-/emojis/1/vs.png b/app/assets/images/emoji/vs.png
index e1180f4a464..e1180f4a464 100644
--- a/public/-/emojis/1/vs.png
+++ b/app/assets/images/emoji/vs.png
Binary files differ
diff --git a/public/-/emojis/1/vulcan.png b/app/assets/images/emoji/vulcan.png
index 54728bcaf5c..54728bcaf5c 100644
--- a/public/-/emojis/1/vulcan.png
+++ b/app/assets/images/emoji/vulcan.png
Binary files differ
diff --git a/public/-/emojis/1/vulcan_tone1.png b/app/assets/images/emoji/vulcan_tone1.png
index 8aff5d8fa16..8aff5d8fa16 100644
--- a/public/-/emojis/1/vulcan_tone1.png
+++ b/app/assets/images/emoji/vulcan_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/vulcan_tone2.png b/app/assets/images/emoji/vulcan_tone2.png
index 82b7ad519b4..82b7ad519b4 100644
--- a/public/-/emojis/1/vulcan_tone2.png
+++ b/app/assets/images/emoji/vulcan_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/vulcan_tone3.png b/app/assets/images/emoji/vulcan_tone3.png
index d1400e1dd28..d1400e1dd28 100644
--- a/public/-/emojis/1/vulcan_tone3.png
+++ b/app/assets/images/emoji/vulcan_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/vulcan_tone4.png b/app/assets/images/emoji/vulcan_tone4.png
index 47e2b280148..47e2b280148 100644
--- a/public/-/emojis/1/vulcan_tone4.png
+++ b/app/assets/images/emoji/vulcan_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/vulcan_tone5.png b/app/assets/images/emoji/vulcan_tone5.png
index 60b5c6077be..60b5c6077be 100644
--- a/public/-/emojis/1/vulcan_tone5.png
+++ b/app/assets/images/emoji/vulcan_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/walking.png b/app/assets/images/emoji/walking.png
index 06dc169a3fd..06dc169a3fd 100644
--- a/public/-/emojis/1/walking.png
+++ b/app/assets/images/emoji/walking.png
Binary files differ
diff --git a/public/-/emojis/1/walking_tone1.png b/app/assets/images/emoji/walking_tone1.png
index 4e391b45a0b..4e391b45a0b 100644
--- a/public/-/emojis/1/walking_tone1.png
+++ b/app/assets/images/emoji/walking_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/walking_tone2.png b/app/assets/images/emoji/walking_tone2.png
index 31f94a1bce1..31f94a1bce1 100644
--- a/public/-/emojis/1/walking_tone2.png
+++ b/app/assets/images/emoji/walking_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/walking_tone3.png b/app/assets/images/emoji/walking_tone3.png
index f7ed8e39c2e..f7ed8e39c2e 100644
--- a/public/-/emojis/1/walking_tone3.png
+++ b/app/assets/images/emoji/walking_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/walking_tone4.png b/app/assets/images/emoji/walking_tone4.png
index e58dc04c7b2..e58dc04c7b2 100644
--- a/public/-/emojis/1/walking_tone4.png
+++ b/app/assets/images/emoji/walking_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/walking_tone5.png b/app/assets/images/emoji/walking_tone5.png
index ba4e1b58fcb..ba4e1b58fcb 100644
--- a/public/-/emojis/1/walking_tone5.png
+++ b/app/assets/images/emoji/walking_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/waning_crescent_moon.png b/app/assets/images/emoji/waning_crescent_moon.png
index cf68706b871..cf68706b871 100644
--- a/public/-/emojis/1/waning_crescent_moon.png
+++ b/app/assets/images/emoji/waning_crescent_moon.png
Binary files differ
diff --git a/public/-/emojis/1/waning_gibbous_moon.png b/app/assets/images/emoji/waning_gibbous_moon.png
index 24e16266119..24e16266119 100644
--- a/public/-/emojis/1/waning_gibbous_moon.png
+++ b/app/assets/images/emoji/waning_gibbous_moon.png
Binary files differ
diff --git a/public/-/emojis/1/warning.png b/app/assets/images/emoji/warning.png
index 35691c2ed97..35691c2ed97 100644
--- a/public/-/emojis/1/warning.png
+++ b/app/assets/images/emoji/warning.png
Binary files differ
diff --git a/public/-/emojis/1/wastebasket.png b/app/assets/images/emoji/wastebasket.png
index 2b3c484b498..2b3c484b498 100644
--- a/public/-/emojis/1/wastebasket.png
+++ b/app/assets/images/emoji/wastebasket.png
Binary files differ
diff --git a/public/-/emojis/1/watch.png b/app/assets/images/emoji/watch.png
index 64819bc6e21..64819bc6e21 100644
--- a/public/-/emojis/1/watch.png
+++ b/app/assets/images/emoji/watch.png
Binary files differ
diff --git a/public/-/emojis/1/water_buffalo.png b/app/assets/images/emoji/water_buffalo.png
index 80446615caf..80446615caf 100644
--- a/public/-/emojis/1/water_buffalo.png
+++ b/app/assets/images/emoji/water_buffalo.png
Binary files differ
diff --git a/public/-/emojis/1/water_polo.png b/app/assets/images/emoji/water_polo.png
index cb44576780d..cb44576780d 100644
--- a/public/-/emojis/1/water_polo.png
+++ b/app/assets/images/emoji/water_polo.png
Binary files differ
diff --git a/public/-/emojis/1/water_polo_tone1.png b/app/assets/images/emoji/water_polo_tone1.png
index bed1a908d6a..bed1a908d6a 100644
--- a/public/-/emojis/1/water_polo_tone1.png
+++ b/app/assets/images/emoji/water_polo_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/water_polo_tone2.png b/app/assets/images/emoji/water_polo_tone2.png
index ec5a43b4d4a..ec5a43b4d4a 100644
--- a/public/-/emojis/1/water_polo_tone2.png
+++ b/app/assets/images/emoji/water_polo_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/water_polo_tone3.png b/app/assets/images/emoji/water_polo_tone3.png
index b081a4a5a96..b081a4a5a96 100644
--- a/public/-/emojis/1/water_polo_tone3.png
+++ b/app/assets/images/emoji/water_polo_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/water_polo_tone4.png b/app/assets/images/emoji/water_polo_tone4.png
index 82cfbc3b0c7..82cfbc3b0c7 100644
--- a/public/-/emojis/1/water_polo_tone4.png
+++ b/app/assets/images/emoji/water_polo_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/water_polo_tone5.png b/app/assets/images/emoji/water_polo_tone5.png
index bd3366eb06c..bd3366eb06c 100644
--- a/public/-/emojis/1/water_polo_tone5.png
+++ b/app/assets/images/emoji/water_polo_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/watermelon.png b/app/assets/images/emoji/watermelon.png
index 0761488b4c9..0761488b4c9 100644
--- a/public/-/emojis/1/watermelon.png
+++ b/app/assets/images/emoji/watermelon.png
Binary files differ
diff --git a/public/-/emojis/1/wave.png b/app/assets/images/emoji/wave.png
index e0cd79b45f5..e0cd79b45f5 100644
--- a/public/-/emojis/1/wave.png
+++ b/app/assets/images/emoji/wave.png
Binary files differ
diff --git a/public/-/emojis/1/wave_tone1.png b/app/assets/images/emoji/wave_tone1.png
index 6b2b34b106e..6b2b34b106e 100644
--- a/public/-/emojis/1/wave_tone1.png
+++ b/app/assets/images/emoji/wave_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/wave_tone2.png b/app/assets/images/emoji/wave_tone2.png
index b857119732e..b857119732e 100644
--- a/public/-/emojis/1/wave_tone2.png
+++ b/app/assets/images/emoji/wave_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/wave_tone3.png b/app/assets/images/emoji/wave_tone3.png
index 6283b670f43..6283b670f43 100644
--- a/public/-/emojis/1/wave_tone3.png
+++ b/app/assets/images/emoji/wave_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/wave_tone4.png b/app/assets/images/emoji/wave_tone4.png
index fe6b2baa747..fe6b2baa747 100644
--- a/public/-/emojis/1/wave_tone4.png
+++ b/app/assets/images/emoji/wave_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/wave_tone5.png b/app/assets/images/emoji/wave_tone5.png
index 4bd168ebb78..4bd168ebb78 100644
--- a/public/-/emojis/1/wave_tone5.png
+++ b/app/assets/images/emoji/wave_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/wavy_dash.png b/app/assets/images/emoji/wavy_dash.png
index 001c8d6e47d..001c8d6e47d 100644
--- a/public/-/emojis/1/wavy_dash.png
+++ b/app/assets/images/emoji/wavy_dash.png
Binary files differ
diff --git a/public/-/emojis/1/waxing_crescent_moon.png b/app/assets/images/emoji/waxing_crescent_moon.png
index 687125173d9..687125173d9 100644
--- a/public/-/emojis/1/waxing_crescent_moon.png
+++ b/app/assets/images/emoji/waxing_crescent_moon.png
Binary files differ
diff --git a/public/-/emojis/1/waxing_gibbous_moon.png b/app/assets/images/emoji/waxing_gibbous_moon.png
index 3a808156318..3a808156318 100644
--- a/public/-/emojis/1/waxing_gibbous_moon.png
+++ b/app/assets/images/emoji/waxing_gibbous_moon.png
Binary files differ
diff --git a/public/-/emojis/1/wc.png b/app/assets/images/emoji/wc.png
index aa433e84ba6..aa433e84ba6 100644
--- a/public/-/emojis/1/wc.png
+++ b/app/assets/images/emoji/wc.png
Binary files differ
diff --git a/public/-/emojis/1/weary.png b/app/assets/images/emoji/weary.png
index 98bfbd24a16..98bfbd24a16 100644
--- a/public/-/emojis/1/weary.png
+++ b/app/assets/images/emoji/weary.png
Binary files differ
diff --git a/public/-/emojis/1/wedding.png b/app/assets/images/emoji/wedding.png
index d0d8aa0bfae..d0d8aa0bfae 100644
--- a/public/-/emojis/1/wedding.png
+++ b/app/assets/images/emoji/wedding.png
Binary files differ
diff --git a/public/-/emojis/1/whale.png b/app/assets/images/emoji/whale.png
index 9f19b44257c..9f19b44257c 100644
--- a/public/-/emojis/1/whale.png
+++ b/app/assets/images/emoji/whale.png
Binary files differ
diff --git a/public/-/emojis/1/whale2.png b/app/assets/images/emoji/whale2.png
index 0df9d3c73a4..0df9d3c73a4 100644
--- a/public/-/emojis/1/whale2.png
+++ b/app/assets/images/emoji/whale2.png
Binary files differ
diff --git a/public/-/emojis/1/wheel_of_dharma.png b/app/assets/images/emoji/wheel_of_dharma.png
index 3666db0016b..3666db0016b 100644
--- a/public/-/emojis/1/wheel_of_dharma.png
+++ b/app/assets/images/emoji/wheel_of_dharma.png
Binary files differ
diff --git a/public/-/emojis/1/wheelchair.png b/app/assets/images/emoji/wheelchair.png
index 4e5b2698eac..4e5b2698eac 100644
--- a/public/-/emojis/1/wheelchair.png
+++ b/app/assets/images/emoji/wheelchair.png
Binary files differ
diff --git a/public/-/emojis/1/white_check_mark.png b/app/assets/images/emoji/white_check_mark.png
index e55f087e544..e55f087e544 100644
--- a/public/-/emojis/1/white_check_mark.png
+++ b/app/assets/images/emoji/white_check_mark.png
Binary files differ
diff --git a/public/-/emojis/1/white_circle.png b/app/assets/images/emoji/white_circle.png
index c19e15684dd..c19e15684dd 100644
--- a/public/-/emojis/1/white_circle.png
+++ b/app/assets/images/emoji/white_circle.png
Binary files differ
diff --git a/public/-/emojis/1/white_flower.png b/app/assets/images/emoji/white_flower.png
index d6af8b60077..d6af8b60077 100644
--- a/public/-/emojis/1/white_flower.png
+++ b/app/assets/images/emoji/white_flower.png
Binary files differ
diff --git a/public/-/emojis/1/white_large_square.png b/app/assets/images/emoji/white_large_square.png
index 6f06c1c79de..6f06c1c79de 100644
--- a/public/-/emojis/1/white_large_square.png
+++ b/app/assets/images/emoji/white_large_square.png
Binary files differ
diff --git a/public/-/emojis/1/white_medium_small_square.png b/app/assets/images/emoji/white_medium_small_square.png
index ae874126750..ae874126750 100644
--- a/public/-/emojis/1/white_medium_small_square.png
+++ b/app/assets/images/emoji/white_medium_small_square.png
Binary files differ
diff --git a/public/-/emojis/1/white_medium_square.png b/app/assets/images/emoji/white_medium_square.png
index 8daacf57059..8daacf57059 100644
--- a/public/-/emojis/1/white_medium_square.png
+++ b/app/assets/images/emoji/white_medium_square.png
Binary files differ
diff --git a/public/-/emojis/1/white_small_square.png b/app/assets/images/emoji/white_small_square.png
index d7ebdb0c0ed..d7ebdb0c0ed 100644
--- a/public/-/emojis/1/white_small_square.png
+++ b/app/assets/images/emoji/white_small_square.png
Binary files differ
diff --git a/public/-/emojis/1/white_square_button.png b/app/assets/images/emoji/white_square_button.png
index 934b1cedfd2..934b1cedfd2 100644
--- a/public/-/emojis/1/white_square_button.png
+++ b/app/assets/images/emoji/white_square_button.png
Binary files differ
diff --git a/public/-/emojis/1/white_sun_cloud.png b/app/assets/images/emoji/white_sun_cloud.png
index 0a4cc100269..0a4cc100269 100644
--- a/public/-/emojis/1/white_sun_cloud.png
+++ b/app/assets/images/emoji/white_sun_cloud.png
Binary files differ
diff --git a/public/-/emojis/1/white_sun_rain_cloud.png b/app/assets/images/emoji/white_sun_rain_cloud.png
index 491f9ca4839..491f9ca4839 100644
--- a/public/-/emojis/1/white_sun_rain_cloud.png
+++ b/app/assets/images/emoji/white_sun_rain_cloud.png
Binary files differ
diff --git a/public/-/emojis/1/white_sun_small_cloud.png b/app/assets/images/emoji/white_sun_small_cloud.png
index cead0bfa521..cead0bfa521 100644
--- a/public/-/emojis/1/white_sun_small_cloud.png
+++ b/app/assets/images/emoji/white_sun_small_cloud.png
Binary files differ
diff --git a/public/-/emojis/1/wilted_rose.png b/app/assets/images/emoji/wilted_rose.png
index 62412b143ae..62412b143ae 100644
--- a/public/-/emojis/1/wilted_rose.png
+++ b/app/assets/images/emoji/wilted_rose.png
Binary files differ
diff --git a/public/-/emojis/1/wind_blowing_face.png b/app/assets/images/emoji/wind_blowing_face.png
index df81b652eb6..df81b652eb6 100644
--- a/public/-/emojis/1/wind_blowing_face.png
+++ b/app/assets/images/emoji/wind_blowing_face.png
Binary files differ
diff --git a/public/-/emojis/1/wind_chime.png b/app/assets/images/emoji/wind_chime.png
index 3c9ef3a95f6..3c9ef3a95f6 100644
--- a/public/-/emojis/1/wind_chime.png
+++ b/app/assets/images/emoji/wind_chime.png
Binary files differ
diff --git a/public/-/emojis/1/wine_glass.png b/app/assets/images/emoji/wine_glass.png
index 3cc98689192..3cc98689192 100644
--- a/public/-/emojis/1/wine_glass.png
+++ b/app/assets/images/emoji/wine_glass.png
Binary files differ
diff --git a/public/-/emojis/1/wink.png b/app/assets/images/emoji/wink.png
index 7ea7810a37d..7ea7810a37d 100644
--- a/public/-/emojis/1/wink.png
+++ b/app/assets/images/emoji/wink.png
Binary files differ
diff --git a/public/-/emojis/1/wolf.png b/app/assets/images/emoji/wolf.png
index ba7220f2de9..ba7220f2de9 100644
--- a/public/-/emojis/1/wolf.png
+++ b/app/assets/images/emoji/wolf.png
Binary files differ
diff --git a/public/-/emojis/1/woman.png b/app/assets/images/emoji/woman.png
index ece440e7a61..ece440e7a61 100644
--- a/public/-/emojis/1/woman.png
+++ b/app/assets/images/emoji/woman.png
Binary files differ
diff --git a/public/-/emojis/1/woman_tone1.png b/app/assets/images/emoji/woman_tone1.png
index ff089b8889b..ff089b8889b 100644
--- a/public/-/emojis/1/woman_tone1.png
+++ b/app/assets/images/emoji/woman_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/woman_tone2.png b/app/assets/images/emoji/woman_tone2.png
index 0719c378016..0719c378016 100644
--- a/public/-/emojis/1/woman_tone2.png
+++ b/app/assets/images/emoji/woman_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/woman_tone3.png b/app/assets/images/emoji/woman_tone3.png
index 5672e2fd52d..5672e2fd52d 100644
--- a/public/-/emojis/1/woman_tone3.png
+++ b/app/assets/images/emoji/woman_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/woman_tone4.png b/app/assets/images/emoji/woman_tone4.png
index 5754aab558b..5754aab558b 100644
--- a/public/-/emojis/1/woman_tone4.png
+++ b/app/assets/images/emoji/woman_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/woman_tone5.png b/app/assets/images/emoji/woman_tone5.png
index fc252af3a39..fc252af3a39 100644
--- a/public/-/emojis/1/woman_tone5.png
+++ b/app/assets/images/emoji/woman_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/womans_clothes.png b/app/assets/images/emoji/womans_clothes.png
index 01410dc8107..01410dc8107 100644
--- a/public/-/emojis/1/womans_clothes.png
+++ b/app/assets/images/emoji/womans_clothes.png
Binary files differ
diff --git a/public/-/emojis/1/womans_hat.png b/app/assets/images/emoji/womans_hat.png
index b837b6a2e47..b837b6a2e47 100644
--- a/public/-/emojis/1/womans_hat.png
+++ b/app/assets/images/emoji/womans_hat.png
Binary files differ
diff --git a/public/-/emojis/1/womens.png b/app/assets/images/emoji/womens.png
index d4ecc22e7b3..d4ecc22e7b3 100644
--- a/public/-/emojis/1/womens.png
+++ b/app/assets/images/emoji/womens.png
Binary files differ
diff --git a/public/-/emojis/1/worried.png b/app/assets/images/emoji/worried.png
index 7074afcf5b7..7074afcf5b7 100644
--- a/public/-/emojis/1/worried.png
+++ b/app/assets/images/emoji/worried.png
Binary files differ
diff --git a/public/-/emojis/1/wrench.png b/app/assets/images/emoji/wrench.png
index c16b7439697..c16b7439697 100644
--- a/public/-/emojis/1/wrench.png
+++ b/app/assets/images/emoji/wrench.png
Binary files differ
diff --git a/public/-/emojis/1/wrestlers.png b/app/assets/images/emoji/wrestlers.png
index 71e67cfad85..71e67cfad85 100644
--- a/public/-/emojis/1/wrestlers.png
+++ b/app/assets/images/emoji/wrestlers.png
Binary files differ
diff --git a/public/-/emojis/1/wrestlers_tone1.png b/app/assets/images/emoji/wrestlers_tone1.png
index 379070fd03b..379070fd03b 100644
--- a/public/-/emojis/1/wrestlers_tone1.png
+++ b/app/assets/images/emoji/wrestlers_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/wrestlers_tone2.png b/app/assets/images/emoji/wrestlers_tone2.png
index 6863ea9209d..6863ea9209d 100644
--- a/public/-/emojis/1/wrestlers_tone2.png
+++ b/app/assets/images/emoji/wrestlers_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/wrestlers_tone3.png b/app/assets/images/emoji/wrestlers_tone3.png
index b7e62910127..b7e62910127 100644
--- a/public/-/emojis/1/wrestlers_tone3.png
+++ b/app/assets/images/emoji/wrestlers_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/wrestlers_tone4.png b/app/assets/images/emoji/wrestlers_tone4.png
index 750f9589233..750f9589233 100644
--- a/public/-/emojis/1/wrestlers_tone4.png
+++ b/app/assets/images/emoji/wrestlers_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/wrestlers_tone5.png b/app/assets/images/emoji/wrestlers_tone5.png
index 36ab9bb3f42..36ab9bb3f42 100644
--- a/public/-/emojis/1/wrestlers_tone5.png
+++ b/app/assets/images/emoji/wrestlers_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/writing_hand.png b/app/assets/images/emoji/writing_hand.png
index 85639f8ac40..85639f8ac40 100644
--- a/public/-/emojis/1/writing_hand.png
+++ b/app/assets/images/emoji/writing_hand.png
Binary files differ
diff --git a/public/-/emojis/1/writing_hand_tone1.png b/app/assets/images/emoji/writing_hand_tone1.png
index 7923d8ebb17..7923d8ebb17 100644
--- a/public/-/emojis/1/writing_hand_tone1.png
+++ b/app/assets/images/emoji/writing_hand_tone1.png
Binary files differ
diff --git a/public/-/emojis/1/writing_hand_tone2.png b/app/assets/images/emoji/writing_hand_tone2.png
index bcb304e15d2..bcb304e15d2 100644
--- a/public/-/emojis/1/writing_hand_tone2.png
+++ b/app/assets/images/emoji/writing_hand_tone2.png
Binary files differ
diff --git a/public/-/emojis/1/writing_hand_tone3.png b/app/assets/images/emoji/writing_hand_tone3.png
index fd885fd2d90..fd885fd2d90 100644
--- a/public/-/emojis/1/writing_hand_tone3.png
+++ b/app/assets/images/emoji/writing_hand_tone3.png
Binary files differ
diff --git a/public/-/emojis/1/writing_hand_tone4.png b/app/assets/images/emoji/writing_hand_tone4.png
index d065b8c64ab..d065b8c64ab 100644
--- a/public/-/emojis/1/writing_hand_tone4.png
+++ b/app/assets/images/emoji/writing_hand_tone4.png
Binary files differ
diff --git a/public/-/emojis/1/writing_hand_tone5.png b/app/assets/images/emoji/writing_hand_tone5.png
index a44b3dd757c..a44b3dd757c 100644
--- a/public/-/emojis/1/writing_hand_tone5.png
+++ b/app/assets/images/emoji/writing_hand_tone5.png
Binary files differ
diff --git a/public/-/emojis/1/x.png b/app/assets/images/emoji/x.png
index 9f9ed0f7ad2..9f9ed0f7ad2 100644
--- a/public/-/emojis/1/x.png
+++ b/app/assets/images/emoji/x.png
Binary files differ
diff --git a/public/-/emojis/1/yellow_heart.png b/app/assets/images/emoji/yellow_heart.png
index 7901a9d0103..7901a9d0103 100644
--- a/public/-/emojis/1/yellow_heart.png
+++ b/app/assets/images/emoji/yellow_heart.png
Binary files differ
diff --git a/public/-/emojis/1/yen.png b/app/assets/images/emoji/yen.png
index 63ee4799d66..63ee4799d66 100644
--- a/public/-/emojis/1/yen.png
+++ b/app/assets/images/emoji/yen.png
Binary files differ
diff --git a/public/-/emojis/1/yin_yang.png b/app/assets/images/emoji/yin_yang.png
index f2900f6338f..f2900f6338f 100644
--- a/public/-/emojis/1/yin_yang.png
+++ b/app/assets/images/emoji/yin_yang.png
Binary files differ
diff --git a/public/-/emojis/1/yum.png b/app/assets/images/emoji/yum.png
index 2df15753ca1..2df15753ca1 100644
--- a/public/-/emojis/1/yum.png
+++ b/app/assets/images/emoji/yum.png
Binary files differ
diff --git a/public/-/emojis/1/zap.png b/app/assets/images/emoji/zap.png
index 47e68e48e49..47e68e48e49 100644
--- a/public/-/emojis/1/zap.png
+++ b/app/assets/images/emoji/zap.png
Binary files differ
diff --git a/public/-/emojis/1/zero.png b/app/assets/images/emoji/zero.png
index 13aca83e018..13aca83e018 100644
--- a/public/-/emojis/1/zero.png
+++ b/app/assets/images/emoji/zero.png
Binary files differ
diff --git a/public/-/emojis/1/zipper_mouth.png b/app/assets/images/emoji/zipper_mouth.png
index f8ced2502a7..f8ced2502a7 100644
--- a/public/-/emojis/1/zipper_mouth.png
+++ b/app/assets/images/emoji/zipper_mouth.png
Binary files differ
diff --git a/public/-/emojis/1/zzz.png b/app/assets/images/emoji/zzz.png
index 9bc72b4469f..9bc72b4469f 100644
--- a/public/-/emojis/1/zzz.png
+++ b/app/assets/images/emoji/zzz.png
Binary files differ
diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js
index 3826ecd1ac1..743f11625bc 100644
--- a/app/assets/javascripts/awards_handler.js
+++ b/app/assets/javascripts/awards_handler.js
@@ -619,18 +619,10 @@ export class AwardsHandler {
let awardsHandlerPromise = null;
export default function loadAwardsHandler(reload = false) {
if (!awardsHandlerPromise || reload) {
- awardsHandlerPromise = new Promise((resolve, reject) => {
- import(/* webpackChunkName: 'emoji' */ './emoji')
- .then(Emoji => {
- Emoji.initEmojiMap()
- .then(() => {
- const awardsHandler = new AwardsHandler(Emoji);
- awardsHandler.bindEvents();
- resolve(awardsHandler);
- })
- .catch(() => reject);
- })
- .catch(() => reject);
+ awardsHandlerPromise = import(/* webpackChunkName: 'emoji' */ './emoji').then(Emoji => {
+ const awardsHandler = new AwardsHandler(Emoji);
+ awardsHandler.bindEvents();
+ return awardsHandler;
});
}
return awardsHandlerPromise;
diff --git a/app/assets/javascripts/behaviors/gl_emoji.js b/app/assets/javascripts/behaviors/gl_emoji.js
index 9034563d9b3..d1d75658181 100644
--- a/app/assets/javascripts/behaviors/gl_emoji.js
+++ b/app/assets/javascripts/behaviors/gl_emoji.js
@@ -1,74 +1,47 @@
import 'document-register-element';
import isEmojiUnicodeSupported from '../emoji/support';
-import { initEmojiMap, getEmojiInfo, emojiFallbackImageSrc, emojiImageTag } from '../emoji';
class GlEmoji extends HTMLElement {
constructor() {
super();
- let emojiUnicode = this.textContent.trim();
- const { fallbackSpriteClass, fallbackSrc, forceFallback } = this.dataset;
- let { name, unicodeVersion } = this.dataset;
-
- initEmojiMap()
- .then(() => {
- if (!unicodeVersion) {
- const emojiInfo = getEmojiInfo(name);
-
- if (emojiInfo) {
- if (name !== emojiInfo.name) {
- ({ name } = emojiInfo);
- this.dataset.name = emojiInfo.name;
- }
- unicodeVersion = emojiInfo.u;
- this.dataset.uni = unicodeVersion;
-
- if (forceFallback === 'true' && !fallbackSpriteClass) {
- this.innerHTML = emojiImageTag(name, emojiFallbackImageSrc(name));
- } else {
- emojiUnicode = emojiInfo.e;
- this.innerHTML = emojiInfo.e;
- }
-
- this.title = emojiInfo.d;
- }
+ const emojiUnicode = this.textContent.trim();
+ const { name, unicodeVersion, fallbackSrc, fallbackSpriteClass } = this.dataset;
+
+ const isEmojiUnicode =
+ this.childNodes &&
+ Array.prototype.every.call(this.childNodes, childNode => childNode.nodeType === 3);
+ const hasImageFallback = fallbackSrc && fallbackSrc.length > 0;
+ const hasCssSpriteFalback = fallbackSpriteClass && fallbackSpriteClass.length > 0;
+
+ if (emojiUnicode && isEmojiUnicode && !isEmojiUnicodeSupported(emojiUnicode, unicodeVersion)) {
+ // CSS sprite fallback takes precedence over image fallback
+ if (hasCssSpriteFalback) {
+ if (!gon.emoji_sprites_css_added && gon.emoji_sprites_css_path) {
+ const emojiSpriteLinkTag = document.createElement('link');
+ emojiSpriteLinkTag.setAttribute('rel', 'stylesheet');
+ emojiSpriteLinkTag.setAttribute('href', gon.emoji_sprites_css_path);
+ document.head.appendChild(emojiSpriteLinkTag);
+ gon.emoji_sprites_css_added = true;
}
-
- const isEmojiUnicode =
- this.childNodes &&
- Array.prototype.every.call(this.childNodes, childNode => childNode.nodeType === 3);
- const hasImageFallback = fallbackSrc && fallbackSrc.length > 0;
- const hasCssSpriteFalback = fallbackSpriteClass && fallbackSpriteClass.length > 0;
-
- if (
- emojiUnicode &&
- isEmojiUnicode &&
- !isEmojiUnicodeSupported(emojiUnicode, unicodeVersion)
- ) {
- // CSS sprite fallback takes precedence over image fallback
- if (hasCssSpriteFalback) {
- if (!gon.emoji_sprites_css_added && gon.emoji_sprites_css_path) {
- const emojiSpriteLinkTag = document.createElement('link');
- emojiSpriteLinkTag.setAttribute('rel', 'stylesheet');
- emojiSpriteLinkTag.setAttribute('href', gon.emoji_sprites_css_path);
- document.head.appendChild(emojiSpriteLinkTag);
- gon.emoji_sprites_css_added = true;
+ // IE 11 doesn't like adding multiple at once :(
+ this.classList.add('emoji-icon');
+ this.classList.add(fallbackSpriteClass);
+ } else {
+ import(/* webpackChunkName: 'emoji' */ '../emoji')
+ .then(({ emojiImageTag, emojiFallbackImageSrc }) => {
+ if (hasImageFallback) {
+ this.innerHTML = emojiImageTag(name, fallbackSrc);
+ } else {
+ const src = emojiFallbackImageSrc(name);
+ this.innerHTML = emojiImageTag(name, src);
}
- // IE 11 doesn't like adding multiple at once :(
- this.classList.add('emoji-icon');
- this.classList.add(fallbackSpriteClass);
- } else if (hasImageFallback) {
- this.innerHTML = emojiImageTag(name, fallbackSrc);
- } else {
- const src = emojiFallbackImageSrc(name);
- this.innerHTML = emojiImageTag(name, src);
- }
- }
- })
- .catch(error => {
- // Only reject is already handled in initEmojiMap
- throw error;
- });
+ })
+ .catch(() => {
+ // do nothing
+ });
+ }
+ }
}
}
diff --git a/app/assets/javascripts/boards/models/issue.js b/app/assets/javascripts/boards/models/issue.js
index 2edb6723ada..b4d913f5d69 100644
--- a/app/assets/javascripts/boards/models/issue.js
+++ b/app/assets/javascripts/boards/models/issue.js
@@ -5,6 +5,7 @@
import Vue from 'vue';
import '~/vue_shared/models/label';
+import { isEE } from '~/lib/utils/common_utils';
import IssueProject from './project';
import boardsStore from '../stores/boards_store';
@@ -28,7 +29,6 @@ class ListIssue {
this.referencePath = obj.reference_path;
this.path = obj.real_path;
this.toggleSubscriptionEndpoint = obj.toggle_subscription_endpoint;
- this.milestone_id = obj.milestone_id;
this.project_id = obj.project_id;
this.timeEstimate = obj.time_estimate;
this.assignableLabelsEndpoint = obj.assignable_labels_endpoint;
@@ -39,6 +39,7 @@ class ListIssue {
if (obj.milestone) {
this.milestone = new ListMilestone(obj.milestone);
+ this.milestone_id = obj.milestone.id;
}
obj.labels.forEach(label => {
@@ -88,6 +89,19 @@ class ListIssue {
this.assignees = [];
}
+ addMilestone(milestone) {
+ const miletoneId = this.milestone ? this.milestone.id : null;
+ if (isEE && milestone.id !== miletoneId) {
+ this.milestone = new ListMilestone(milestone);
+ }
+ }
+
+ removeMilestone(removeMilestone) {
+ if (isEE && removeMilestone && removeMilestone.id === this.milestone.id) {
+ this.milestone = {};
+ }
+ }
+
getLists() {
return boardsStore.state.lists.filter(list => list.findIssue(this.id));
}
diff --git a/app/assets/javascripts/boards/models/list.js b/app/assets/javascripts/boards/models/list.js
index 9f6d9a853da..6cf77705847 100644
--- a/app/assets/javascripts/boards/models/list.js
+++ b/app/assets/javascripts/boards/models/list.js
@@ -4,8 +4,9 @@
import { __ } from '~/locale';
import ListLabel from '~/vue_shared/models/label';
import ListAssignee from '~/vue_shared/models/assignee';
-import { urlParamsToObject } from '~/lib/utils/common_utils';
+import { isEE, urlParamsToObject } from '~/lib/utils/common_utils';
import boardsStore from '../stores/boards_store';
+import ListMilestone from './milestone';
const PER_PAGE = 20;
@@ -51,6 +52,9 @@ class List {
} else if (obj.user) {
this.assignee = new ListAssignee(obj.user);
this.title = this.assignee.name;
+ } else if (isEE && obj.milestone) {
+ this.milestone = new ListMilestone(obj.milestone);
+ this.title = this.milestone.title;
}
if (!typeInfo.isBlank && this.id) {
@@ -69,12 +73,14 @@ class List {
}
save() {
- const entity = this.label || this.assignee;
+ const entity = this.label || this.assignee || this.milestone;
let entityType = '';
if (this.label) {
entityType = 'label_id';
- } else {
+ } else if (this.assignee) {
entityType = 'assignee_id';
+ } else if (isEE && this.milestone) {
+ entityType = 'milestone_id';
}
return gl.boardService
@@ -192,6 +198,13 @@ class List {
issue.addAssignee(this.assignee);
}
+ if (isEE && this.milestone) {
+ if (listFrom && listFrom.type === 'milestone') {
+ issue.removeMilestone(listFrom.milestone);
+ }
+ issue.addMilestone(this.milestone);
+ }
+
if (listFrom) {
this.issuesSize += 1;
diff --git a/app/assets/javascripts/boards/models/milestone.js b/app/assets/javascripts/boards/models/milestone.js
index 17d15278a74..6f81d6bc6f8 100644
--- a/app/assets/javascripts/boards/models/milestone.js
+++ b/app/assets/javascripts/boards/models/milestone.js
@@ -1,7 +1,16 @@
-class ListMilestone {
+import { isEE } from '~/lib/utils/common_utils';
+
+export default class ListMilestone {
constructor(obj) {
this.id = obj.id;
this.title = obj.title;
+
+ if (isEE) {
+ this.path = obj.path;
+ this.state = obj.state;
+ this.webUrl = obj.web_url || obj.webUrl;
+ this.description = obj.description;
+ }
}
}
diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue
index 5e74998579b..0ed4dcdcd81 100644
--- a/app/assets/javascripts/diffs/components/app.vue
+++ b/app/assets/javascripts/diffs/components/app.vue
@@ -64,6 +64,11 @@ export default {
required: false,
default: '',
},
+ isFluidLayout: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
},
data() {
const treeWidth =
@@ -116,7 +121,7 @@ export default {
return this.treeWidth <= TREE_HIDE_STATS_WIDTH;
},
isLimitedContainer() {
- return !this.showTreeList && !this.isParallelView;
+ return !this.showTreeList && !this.isParallelView && !this.isFluidLayout;
},
},
watch: {
diff --git a/app/assets/javascripts/diffs/constants.js b/app/assets/javascripts/diffs/constants.js
index 5dabe224baa..4feb73cfef2 100644
--- a/app/assets/javascripts/diffs/constants.js
+++ b/app/assets/javascripts/diffs/constants.js
@@ -49,4 +49,4 @@ export const TYPE_KEY = 'type';
export const LEFT_LINE_KEY = 'left';
export const CENTERED_LIMITED_CONTAINER_CLASSES =
- 'container-limited limit-container-width mx-auto px-3';
+ 'container-limited limit-container-width mx-lg-auto px-3';
diff --git a/app/assets/javascripts/diffs/index.js b/app/assets/javascripts/diffs/index.js
index 63954d9d412..1d897bca1dd 100644
--- a/app/assets/javascripts/diffs/index.js
+++ b/app/assets/javascripts/diffs/index.js
@@ -71,6 +71,7 @@ export default function initDiffsApp(store) {
helpPagePath: dataset.helpPagePath,
currentUser: JSON.parse(dataset.currentUserData) || {},
changesEmptyStateIllustration: dataset.changesEmptyStateIllustration,
+ isFluidLayout: parseBoolean(dataset.isFluidLayout),
};
},
computed: {
@@ -97,6 +98,7 @@ export default function initDiffsApp(store) {
helpPagePath: this.helpPagePath,
shouldShow: this.activeTab === 'diffs',
changesEmptyStateIllustration: this.changesEmptyStateIllustration,
+ isFluidLayout: this.isFluidLayout,
},
});
},
diff --git a/app/assets/javascripts/dirty_submit/dirty_submit_form.js b/app/assets/javascripts/dirty_submit/dirty_submit_form.js
index 00e41dd0301..765969daa32 100644
--- a/app/assets/javascripts/dirty_submit/dirty_submit_form.js
+++ b/app/assets/javascripts/dirty_submit/dirty_submit_form.js
@@ -1,4 +1,5 @@
import _ from 'underscore';
+import $ from 'jquery';
class DirtySubmitForm {
constructor(form) {
@@ -26,6 +27,7 @@ class DirtySubmitForm {
);
this.form.addEventListener('input', throttledUpdateDirtyInput);
this.form.addEventListener('change', throttledUpdateDirtyInput);
+ $(this.form).on('change.select2', throttledUpdateDirtyInput);
this.form.addEventListener('submit', event => this.formSubmit(event));
}
diff --git a/app/assets/javascripts/emoji/index.js b/app/assets/javascripts/emoji/index.js
index b9b3b344524..cd8dff40b88 100644
--- a/app/assets/javascripts/emoji/index.js
+++ b/app/assets/javascripts/emoji/index.js
@@ -1,63 +1,13 @@
import _ from 'underscore';
-import createFlash from '~/flash';
-import { s__ } from '~/locale';
+import emojiMap from 'emojis/digests.json';
import emojiAliases from 'emojis/aliases.json';
-import axios from '../lib/utils/axios_utils';
-import csrf from '../lib/utils/csrf';
-import AccessorUtilities from '../lib/utils/accessor';
-
-let emojiMap = null;
-let validEmojiNames = null;
-
-export const EMOJI_VERSION = '1';
-const EMOJI_VERSION_LOCALSTORAGE = `EMOJIS_${EMOJI_VERSION}`;
-
-const isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe();
-
-export function initEmojiMap() {
- return new Promise((resolve, reject) => {
- if (emojiMap) {
- resolve(emojiMap);
- } else if (isLocalStorageAvailable && window.localStorage.getItem(EMOJI_VERSION_LOCALSTORAGE)) {
- emojiMap = JSON.parse(window.localStorage.getItem(EMOJI_VERSION_LOCALSTORAGE));
- validEmojiNames = [...Object.keys(emojiMap), ...Object.keys(emojiAliases)];
- resolve(emojiMap);
- } else {
- // We load the JSON from server
- const axiosInstance = axios.create();
-
- // If the static JSON file is on a CDN we don't want to send the default CSRF token
- if (gon.asset_host) {
- delete axiosInstance.defaults.headers.common[csrf.headerKey];
- }
-
- axiosInstance
- .get(`${gon.relative_url_root || ''}/-/emojis/${EMOJI_VERSION}/emojis.json`)
- .then(({ data }) => {
- emojiMap = data;
- validEmojiNames = [...Object.keys(emojiMap), ...Object.keys(emojiAliases)];
- resolve(emojiMap);
- if (isLocalStorageAvailable) {
- window.localStorage.setItem(EMOJI_VERSION_LOCALSTORAGE, JSON.stringify(emojiMap));
- }
- })
- .catch(err => {
- createFlash(s__('Emojis|Something went wrong while loading emojis.'));
- reject(err);
- });
- }
- });
-}
+export const validEmojiNames = [...Object.keys(emojiMap), ...Object.keys(emojiAliases)];
export function normalizeEmojiName(name) {
return Object.prototype.hasOwnProperty.call(emojiAliases, name) ? emojiAliases[name] : name;
}
-export function getValidEmojiNames() {
- return validEmojiNames;
-}
-
export function isEmojiNameValid(name) {
return validEmojiNames.indexOf(name) >= 0;
}
@@ -86,8 +36,8 @@ export function getEmojiCategoryMap() {
};
Object.keys(emojiMap).forEach(name => {
const emoji = emojiMap[name];
- if (emojiCategoryMap[emoji.c]) {
- emojiCategoryMap[emoji.c].push(name);
+ if (emojiCategoryMap[emoji.category]) {
+ emojiCategoryMap[emoji.category].push(name);
}
});
}
@@ -108,9 +58,8 @@ export function getEmojiInfo(query) {
}
export function emojiFallbackImageSrc(inputName) {
- const { name } = getEmojiInfo(inputName);
- return `${gon.asset_host || ''}${gon.relative_url_root ||
- ''}/-/emojis/${EMOJI_VERSION}/${name}.png`;
+ const { name, digest } = getEmojiInfo(inputName);
+ return `${gon.asset_host || ''}${gon.relative_url_root || ''}/assets/emoji/${name}-${digest}.png`;
}
export function emojiImageTag(name, src) {
@@ -119,8 +68,9 @@ export function emojiImageTag(name, src) {
export function glEmojiTag(inputName, options) {
const opts = { sprite: false, forceFallback: false, ...options };
- const name = normalizeEmojiName(inputName);
+ const { name, ...emojiInfo } = getEmojiInfo(inputName);
+ const fallbackImageSrc = emojiFallbackImageSrc(name);
const fallbackSpriteClass = `emoji-${name}`;
const classList = [];
@@ -129,19 +79,24 @@ export function glEmojiTag(inputName, options) {
classList.push(fallbackSpriteClass);
}
const classAttribute = classList.length > 0 ? `class="${classList.join(' ')}"` : '';
-
const fallbackSpriteAttribute = opts.sprite
? `data-fallback-sprite-class="${fallbackSpriteClass}"`
: '';
- const forceFallbackAttribute = opts.forceFallback ? 'data-force-fallback="true"' : '';
+ let contents = emojiInfo.moji;
+ if (opts.forceFallback && !opts.sprite) {
+ contents = emojiImageTag(name, fallbackImageSrc);
+ }
return `
<gl-emoji
${classAttribute}
data-name="${name}"
+ data-fallback-src="${fallbackImageSrc}"
${fallbackSpriteAttribute}
- ${forceFallbackAttribute}
+ data-unicode-version="${emojiInfo.unicodeVersion}"
+ title="${emojiInfo.description}"
>
+ ${contents}
</gl-emoji>
`;
}
diff --git a/app/assets/javascripts/emoji/support/index.js b/app/assets/javascripts/emoji/support/index.js
index ed9bfb8bc78..1f7852dd487 100644
--- a/app/assets/javascripts/emoji/support/index.js
+++ b/app/assets/javascripts/emoji/support/index.js
@@ -5,9 +5,6 @@ import getUnicodeSupportMap from './unicode_support_map';
let browserUnicodeSupportMap;
export default function isEmojiUnicodeSupportedByBrowser(emojiUnicode, unicodeVersion) {
- // Our Spec browser would fail producing emoji maps
- if (/\bHeadlessChrome\//.test(navigator.userAgent)) return true;
-
browserUnicodeSupportMap = browserUnicodeSupportMap || getUnicodeSupportMap();
return isEmojiUnicodeSupported(browserUnicodeSupportMap, emojiUnicode, unicodeVersion);
}
diff --git a/app/assets/javascripts/filtered_search/visual_token_value.js b/app/assets/javascripts/filtered_search/visual_token_value.js
index 24532d88cf3..a9d5ba8faa8 100644
--- a/app/assets/javascripts/filtered_search/visual_token_value.js
+++ b/app/assets/javascripts/filtered_search/visual_token_value.js
@@ -102,24 +102,15 @@ export default class VisualTokenValue {
return (
import(/* webpackChunkName: 'emoji' */ '../emoji')
.then(Emoji => {
- Emoji.initEmojiMap()
- .then(() => {
- if (!Emoji.isEmojiNameValid(value)) {
- return;
- }
-
- container.dataset.originalValue = value;
- element.innerHTML = Emoji.glEmojiTag(value);
- })
- // ignore error and leave emoji name in the search bar
- .catch(err => {
- throw err;
- });
+ if (!Emoji.isEmojiNameValid(value)) {
+ return;
+ }
+
+ container.dataset.originalValue = value;
+ element.innerHTML = Emoji.glEmojiTag(value);
})
// ignore error and leave emoji name in the search bar
- .catch(importError => {
- throw importError;
- })
+ .catch(() => {})
);
}
}
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js
index 50ea13edf63..c81e754df4c 100644
--- a/app/assets/javascripts/gfm_auto_complete.js
+++ b/app/assets/javascripts/gfm_auto_complete.js
@@ -487,15 +487,9 @@ class GfmAutoComplete {
this.loadData($input, at, this.cachedData[at]);
} else if (GfmAutoComplete.atTypeMap[at] === 'emojis') {
import(/* webpackChunkName: 'emoji' */ './emoji')
- .then(({ initEmojiMap, getValidEmojiNames, glEmojiTag }) => {
- initEmojiMap()
- .then(() => {
- this.loadData($input, at, getValidEmojiNames());
- GfmAutoComplete.glEmojiTag = glEmojiTag;
- })
- .catch(() => {
- this.isLoadingData[at] = false;
- });
+ .then(({ validEmojiNames, glEmojiTag }) => {
+ this.loadData($input, at, validEmojiNames);
+ GfmAutoComplete.glEmojiTag = glEmojiTag;
})
.catch(() => {
this.isLoadingData[at] = false;
diff --git a/app/assets/javascripts/ide/stores/mutations/merge_request.js b/app/assets/javascripts/ide/stores/mutations/merge_request.js
index 334819fe702..e5b5107bc93 100644
--- a/app/assets/javascripts/ide/stores/mutations/merge_request.js
+++ b/app/assets/javascripts/ide/stores/mutations/merge_request.js
@@ -7,6 +7,8 @@ export default {
});
},
[types.SET_MERGE_REQUEST](state, { projectPath, mergeRequestId, mergeRequest }) {
+ const existingMergeRequest = state.projects[projectPath].mergeRequests[mergeRequestId] || {};
+
Object.assign(state.projects[projectPath], {
mergeRequests: {
[mergeRequestId]: {
@@ -15,6 +17,7 @@ export default {
changes: [],
versions: [],
baseCommitSha: null,
+ ...existingMergeRequest,
},
},
});
diff --git a/app/assets/javascripts/import_projects/components/provider_repo_table_row.vue b/app/assets/javascripts/import_projects/components/provider_repo_table_row.vue
index 7cc29fa1b91..3c6c9c71b8c 100644
--- a/app/assets/javascripts/import_projects/components/provider_repo_table_row.vue
+++ b/app/assets/javascripts/import_projects/components/provider_repo_table_row.vue
@@ -41,7 +41,7 @@ export default {
return {
data: this.namespaceSelectOptions,
containerCssClass:
- 'import-namespace-select js-namespace-select qa-project-namespace-select',
+ 'import-namespace-select js-namespace-select qa-project-namespace-select w-auto',
};
},
diff --git a/app/assets/javascripts/jobs/components/job_app.vue b/app/assets/javascripts/jobs/components/job_app.vue
index 0670e2b06b9..7594edfac27 100644
--- a/app/assets/javascripts/jobs/components/job_app.vue
+++ b/app/assets/javascripts/jobs/components/job_app.vue
@@ -275,7 +275,7 @@ export default {
<!-- job log -->
<div
v-if="hasTrace"
- class="build-trace-container"
+ class="build-trace-container position-relative"
:class="{ 'prepend-top-default': !job.archived }"
>
<log-top-bar
diff --git a/app/assets/javascripts/jobs/components/job_container_item.vue b/app/assets/javascripts/jobs/components/job_container_item.vue
index 845699a90b5..a55dffbe488 100644
--- a/app/assets/javascripts/jobs/components/job_container_item.vue
+++ b/app/assets/javascripts/jobs/components/job_container_item.vue
@@ -43,7 +43,7 @@ export default {
<template>
<div
- class="build-job"
+ class="build-job position-relative"
:class="{
retried: job.retried,
active: isActive,
@@ -56,7 +56,11 @@ export default {
data-boundary="viewport"
class="js-job-link"
>
- <icon v-if="isActive" name="arrow-right" class="js-arrow-right icon-arrow-right" />
+ <icon
+ v-if="isActive"
+ name="arrow-right"
+ class="js-arrow-right icon-arrow-right position-absolute d-block"
+ />
<ci-icon :status="job.status" />
diff --git a/app/assets/javascripts/jobs/components/job_log_controllers.vue b/app/assets/javascripts/jobs/components/job_log_controllers.vue
index 52e14f954ee..607b2bd1c74 100644
--- a/app/assets/javascripts/jobs/components/job_log_controllers.vue
+++ b/app/assets/javascripts/jobs/components/job_log_controllers.vue
@@ -75,7 +75,11 @@ export default {
<template v-if="isTraceSizeVisible">
{{ jobLogSize }}
- <gl-link v-if="rawPath" :href="rawPath" class="js-raw-link raw-link">
+ <gl-link
+ v-if="rawPath"
+ :href="rawPath"
+ class="js-raw-link text-plain text-underline prepend-left-5"
+ >
{{ s__('Job|Complete Raw') }}
</gl-link>
</template>
diff --git a/app/assets/javascripts/jobs/components/trigger_block.vue b/app/assets/javascripts/jobs/components/trigger_block.vue
index 997737b3e23..922f64d93fe 100644
--- a/app/assets/javascripts/jobs/components/trigger_block.vue
+++ b/app/assets/javascripts/jobs/components/trigger_block.vue
@@ -52,7 +52,7 @@ export default {
</p>
<template v-if="hasVariables">
- <p class="trigger-variables-btn-container">
+ <p class="trigger-variables-btn-container d-flex">
<span class="font-weight-bold">{{ __('Trigger variables:') }}</span>
<gl-button
diff --git a/app/assets/javascripts/pages/profiles/show/index.js b/app/assets/javascripts/pages/profiles/show/index.js
index c9d3bbc8c39..0dd0d5336fc 100644
--- a/app/assets/javascripts/pages/profiles/show/index.js
+++ b/app/assets/javascripts/pages/profiles/show/index.js
@@ -56,34 +56,30 @@ document.addEventListener('DOMContentLoaded', () => {
import(/* webpackChunkName: 'emoji' */ '~/emoji')
.then(Emoji => {
- Emoji.initEmojiMap()
- .then(() => {
- const emojiMenu = new EmojiMenu(
- Emoji,
- toggleEmojiMenuButtonSelector,
- 'js-status-emoji-menu',
- selectEmojiCallback,
- );
- emojiMenu.bindEvents();
+ const emojiMenu = new EmojiMenu(
+ Emoji,
+ toggleEmojiMenuButtonSelector,
+ 'js-status-emoji-menu',
+ selectEmojiCallback,
+ );
+ emojiMenu.bindEvents();
- const defaultEmojiTag = Emoji.glEmojiTag(defaultStatusEmoji);
- statusMessageField.addEventListener('input', () => {
- const hasStatusMessage = statusMessageField.value.trim() !== '';
- const statusEmoji = findStatusEmoji();
- if (hasStatusMessage && statusEmoji) {
- return;
- }
+ const defaultEmojiTag = Emoji.glEmojiTag(defaultStatusEmoji);
+ statusMessageField.addEventListener('input', () => {
+ const hasStatusMessage = statusMessageField.value.trim() !== '';
+ const statusEmoji = findStatusEmoji();
+ if (hasStatusMessage && statusEmoji) {
+ return;
+ }
- if (hasStatusMessage) {
- toggleNoEmojiPlaceholder(false);
- toggleEmojiMenuButton.innerHTML += defaultEmojiTag;
- } else if (statusEmoji.dataset.name === defaultStatusEmoji) {
- toggleNoEmojiPlaceholder(true);
- removeStatusEmoji();
- }
- });
- })
- .catch(() => createFlash('Failed to load emoji list.'));
+ if (hasStatusMessage) {
+ toggleNoEmojiPlaceholder(false);
+ toggleEmojiMenuButton.innerHTML += defaultEmojiTag;
+ } else if (statusEmoji.dataset.name === defaultStatusEmoji) {
+ toggleNoEmojiPlaceholder(true);
+ removeStatusEmoji();
+ }
+ });
})
.catch(() => createFlash('Failed to load emoji list.'));
});
diff --git a/app/assets/javascripts/pages/projects/edit/index.js b/app/assets/javascripts/pages/projects/edit/index.js
index 278c35d3846..92ed6a652d7 100644
--- a/app/assets/javascripts/pages/projects/edit/index.js
+++ b/app/assets/javascripts/pages/projects/edit/index.js
@@ -3,17 +3,24 @@ import initSettingsPanels from '~/settings_panels';
import setupProjectEdit from '~/project_edit';
import initConfirmDangerModal from '~/confirm_danger_modal';
import mountBadgeSettings from '~/pages/shared/mount_badge_settings';
+import dirtySubmitFactory from '~/dirty_submit/dirty_submit_factory';
import initAvatarPicker from '~/avatar_picker';
import initProjectLoadingSpinner from '../shared/save_project_loader';
import initProjectPermissionsSettings from '../shared/permissions';
document.addEventListener('DOMContentLoaded', () => {
- initProjectLoadingSpinner();
- setupProjectEdit();
- // Initialize expandable settings panels
- initSettingsPanels();
initAvatarPicker();
- initProjectPermissionsSettings();
initConfirmDangerModal();
+ initSettingsPanels();
mountBadgeSettings(PROJECT_BADGE);
+
+ initProjectLoadingSpinner();
+ initProjectPermissionsSettings();
+ setupProjectEdit();
+
+ dirtySubmitFactory(
+ document.querySelectorAll(
+ '.js-general-settings-form, .js-mr-settings-form, .js-mr-approvals-form',
+ ),
+ );
});
diff --git a/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue b/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue
index e9ed05e30cd..7f86741ed29 100644
--- a/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue
+++ b/app/assets/javascripts/set_status_modal/set_status_modal_wrapper.vue
@@ -66,23 +66,19 @@ export default {
import(/* webpackChunkName: 'emoji' */ '~/emoji')
.then(Emoji => {
- Emoji.initEmojiMap()
- .then(() => {
- if (this.emoji) {
- this.emojiTag = Emoji.glEmojiTag(this.emoji);
- }
- this.noEmoji = this.emoji === '';
- this.defaultEmojiTag = Emoji.glEmojiTag('speech_balloon');
+ if (this.emoji) {
+ this.emojiTag = Emoji.glEmojiTag(this.emoji);
+ }
+ this.noEmoji = this.emoji === '';
+ this.defaultEmojiTag = Emoji.glEmojiTag('speech_balloon');
- this.emojiMenu = new EmojiMenuInModal(
- Emoji,
- toggleEmojiMenuButtonSelector,
- emojiMenuClass,
- this.setEmoji,
- this.$refs.userStatusForm,
- );
- })
- .catch(() => createFlash(__('Failed to load emoji list.')));
+ this.emojiMenu = new EmojiMenuInModal(
+ Emoji,
+ toggleEmojiMenuButtonSelector,
+ emojiMenuClass,
+ this.setEmoji,
+ this.$refs.userStatusForm,
+ );
})
.catch(() => createFlash(__('Failed to load emoji list.')));
},
diff --git a/app/assets/javascripts/vue_shared/components/notes/timeline_entry_item.vue b/app/assets/javascripts/vue_shared/components/notes/timeline_entry_item.vue
index 06974a12aed..f316c4fe112 100644
--- a/app/assets/javascripts/vue_shared/components/notes/timeline_entry_item.vue
+++ b/app/assets/javascripts/vue_shared/components/notes/timeline_entry_item.vue
@@ -1,9 +1,3 @@
-<script>
-export default {
- name: 'TimelineEntryItem',
-};
-</script>
-
<template>
<li class="timeline-entry">
<div class="timeline-entry-inner"><slot></slot></div>
diff --git a/app/assets/stylesheets/framework/common.scss b/app/assets/stylesheets/framework/common.scss
index db6c107210e..c3031c3375e 100644
--- a/app/assets/stylesheets/framework/common.scss
+++ b/app/assets/stylesheets/framework/common.scss
@@ -436,6 +436,12 @@ img.emoji {
.h-3 { width: #{3 * $grid-size}; }
+.svg-w-100 {
+ svg {
+ width: 100%;
+ }
+}
+
/** COMMON SPACING CLASSES **/
.gl-pl-0 { padding-left: 0; }
.gl-pl-1 { padding-left: #{0.5 * $grid-size}; }
diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss
index efcd35a2e0e..b90db135b4a 100644
--- a/app/assets/stylesheets/framework/dropdowns.scss
+++ b/app/assets/stylesheets/framework/dropdowns.scss
@@ -287,7 +287,7 @@
list-style: none;
padding: 0 1px;
- a:not(.btn),
+ a,
button,
.menu-item {
@include dropdown-link;
@@ -351,10 +351,6 @@
// Expects up to 3 digits on the badge
margin-right: 40px;
}
-
- .dropdown-menu-content {
- padding: $dropdown-item-padding-y $dropdown-item-padding-x;
- }
}
.droplab-dropdown {
diff --git a/app/assets/stylesheets/framework/forms.scss b/app/assets/stylesheets/framework/forms.scss
index 1c23c14c2de..be544c0a814 100644
--- a/app/assets/stylesheets/framework/forms.scss
+++ b/app/assets/stylesheets/framework/forms.scss
@@ -157,6 +157,10 @@ label {
padding-left: 10px;
padding-right: 10px;
appearance: none;
+ /* stylelint-disable property-no-vendor-prefix */
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ /* stylelint-enable property-no-vendor-prefix */
&::-ms-expand {
display: none;
diff --git a/app/assets/stylesheets/pages/builds.scss b/app/assets/stylesheets/pages/builds.scss
index 916f6cd3137..6fc742871e7 100644
--- a/app/assets/stylesheets/pages/builds.scss
+++ b/app/assets/stylesheets/pages/builds.scss
@@ -46,10 +46,6 @@
}
.build-page {
- .build-trace-container {
- position: relative;
- }
-
.build-trace {
@include build-trace();
}
@@ -104,18 +100,6 @@
top: 0;
}
- .truncated-info {
- .truncated-info-size {
- margin: 0 5px;
- }
-
- .raw-link {
- color: $gl-text-color;
- margin-left: 5px;
- text-decoration: underline;
- }
- }
-
.controllers {
@include build-controllers(15px, center, false, 0, inline, 0);
}
@@ -142,12 +126,6 @@
}
}
-.with-performance-bar .build-page {
- .top-bar.affix {
- top: $header-height + $performance-bar-height;
- }
-}
-
.build-header {
.ci-header-container,
.header-action-buttons {
@@ -233,7 +211,6 @@
}
.trigger-variables-btn-container {
- @extend .d-flex;
justify-content: space-between;
align-items: center;
@@ -277,12 +254,6 @@
.retry-link {
display: block;
- .btn {
- i {
- margin-left: 5px;
- }
- }
-
.btn-inverted-secondary {
color: $blue-500;
@@ -329,16 +300,12 @@
}
}
- .build-job {
- position: relative;
-
- .icon-arrow-right {
- position: absolute;
- left: 15px;
- top: 20px;
- display: block;
- }
+ .icon-arrow-right {
+ left: 15px;
+ top: 20px;
+ }
+ .build-job {
&.active {
font-weight: $gl-font-weight-bold;
}
@@ -350,10 +317,6 @@
&:hover {
background-color: $gray-darker;
}
-
- .icon-retry {
- margin-left: 3px;
- }
}
}
diff --git a/app/assets/stylesheets/pages/import.scss b/app/assets/stylesheets/pages/import.scss
index 20240835fda..74f80a11471 100644
--- a/app/assets/stylesheets/pages/import.scss
+++ b/app/assets/stylesheets/pages/import.scss
@@ -18,8 +18,6 @@
}
.import-namespace-select {
- width: auto !important;
-
> .select2-choice {
border-radius: $border-radius-default 0 0 $border-radius-default;
position: relative;
diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss
index 9be3f8138a0..fbd291f095a 100644
--- a/app/assets/stylesheets/pages/issuable.scss
+++ b/app/assets/stylesheets/pages/issuable.scss
@@ -1,8 +1,3 @@
-// Limit MR description for side-by-side diff view
-.fixed-width-container {
- @include fixed-width-container;
-}
-
.issuable-warning-icon {
background-color: $orange-100;
border-radius: $border-radius-default;
@@ -27,7 +22,7 @@
.files-changed-inner,
.limited-header-width,
.limited-width-notes {
- @extend .fixed-width-container;
+ @include fixed-width-container;
}
.issuable-details {
@@ -35,13 +30,13 @@
.mr-source-target,
.mr-state-widget,
.merge-manually {
- @extend .fixed-width-container;
+ @include fixed-width-container;
}
}
.merge-request-details {
.emoji-list-container {
- @extend .fixed-width-container;
+ @include fixed-width-container;
}
}
}
diff --git a/app/assets/stylesheets/pages/settings.scss b/app/assets/stylesheets/pages/settings.scss
index 7b0538dca20..0a9c56f5625 100644
--- a/app/assets/stylesheets/pages/settings.scss
+++ b/app/assets/stylesheets/pages/settings.scss
@@ -39,7 +39,7 @@
.settings-header {
position: relative;
- padding: 20px 110px 10px 0;
+ padding: 20px 110px 0 0;
h4 {
margin-top: 0;
diff --git a/app/assets/stylesheets/pages/stat_graph.scss b/app/assets/stylesheets/pages/stat_graph.scss
index 79186480605..31ccdacbc02 100644
--- a/app/assets/stylesheets/pages/stat_graph.scss
+++ b/app/assets/stylesheets/pages/stat_graph.scss
@@ -18,10 +18,6 @@
@include make-col-ready();
@include make-col(12);
}
-
- svg {
- width: 100%;
- }
}
#contributors {
@@ -31,10 +27,6 @@
margin: 0 0 10px;
list-style: none;
padding: 0;
-
- svg {
- width: 100%;
- }
}
.person {
diff --git a/app/controllers/projects/repositories_controller.rb b/app/controllers/projects/repositories_controller.rb
index 3b4215b766e..4eeaeb860ee 100644
--- a/app/controllers/projects/repositories_controller.rb
+++ b/app/controllers/projects/repositories_controller.rb
@@ -23,7 +23,7 @@ class Projects::RepositoriesController < Projects::ApplicationController
append_sha = false if @filename == shortname
end
- send_git_archive @repository, ref: @ref, path: params[:path], format: params[:format], append_sha: append_sha
+ send_git_archive @repository, ref: @ref, format: params[:format], append_sha: append_sha
rescue => ex
logger.error("#{self.class.name}: #{ex}")
git_not_found!
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb
index 0319e95d439..93d3c991846 100644
--- a/app/finders/projects_finder.rb
+++ b/app/finders/projects_finder.rb
@@ -81,7 +81,7 @@ class ProjectsFinder < UnionFinder
if private_only?
current_user.authorized_projects
else
- Project.public_or_visible_to_user(current_user, params[:visibility_level])
+ Project.public_or_visible_to_user(current_user)
end
end
end
diff --git a/app/helpers/clusters_helper.rb b/app/helpers/clusters_helper.rb
index 769f75f57c4..30d8a19ecce 100644
--- a/app/helpers/clusters_helper.rb
+++ b/app/helpers/clusters_helper.rb
@@ -20,4 +20,9 @@ module ClustersHelper
!cluster.provider.legacy_abac?
end
+
+ # EE overrides this
+ def show_cluster_health_graphs?(cluster)
+ false
+ end
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 2ac90eb8d9f..7da51da8473 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -299,10 +299,6 @@ module ProjectsHelper
}.to_json
end
- def directory?
- @path.present?
- end
-
def external_classification_label_help_message
default_label = ::Gitlab::CurrentSettings.current_application_settings
.external_authorization_service_default_label
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index d28a12413bf..2f9b4c4eaa2 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -48,17 +48,17 @@ class ApplicationSetting < ApplicationRecord
validates :home_page_url,
allow_blank: true,
- url: true,
+ addressable_url: true,
if: :home_page_url_column_exists?
validates :help_page_support_url,
allow_blank: true,
- url: true,
+ addressable_url: true,
if: :help_page_support_url_column_exists?
validates :after_sign_out_path,
allow_blank: true,
- url: true
+ addressable_url: true
validates :admin_notification_email,
devise_email: true,
@@ -198,7 +198,7 @@ class ApplicationSetting < ApplicationRecord
validates_each :restricted_visibility_levels do |record, attr, value|
value&.each do |level|
unless Gitlab::VisibilityLevel.options.value?(level)
- record.errors.add(attr, "'#{level}' is not a valid visibility level")
+ record.errors.add(attr, _("'%{level}' is not a valid visibility level") % { level: level })
end
end
end
@@ -206,7 +206,7 @@ class ApplicationSetting < ApplicationRecord
validates_each :import_sources do |record, attr, value|
value&.each do |source|
unless Gitlab::ImportSources.options.value?(source)
- record.errors.add(attr, "'#{source}' is not a import source")
+ record.errors.add(attr, _("'%{source}' is not a import source") % { source: source })
end
end
end
@@ -218,7 +218,7 @@ class ApplicationSetting < ApplicationRecord
if: :external_authorization_service_enabled
validates :external_authorization_service_url,
- url: true, allow_blank: true,
+ addressable_url: true, allow_blank: true,
if: :external_authorization_service_enabled
validates :external_authorization_service_timeout,
@@ -259,7 +259,9 @@ class ApplicationSetting < ApplicationRecord
after_commit :expire_performance_bar_allowed_user_ids_cache, if: -> { previous_changes.key?('performance_bar_allowed_group_id') }
def self.create_from_defaults
- super
+ transaction(requires_new: true) do
+ super
+ end
rescue ActiveRecord::RecordNotUnique
# We already have an ApplicationSetting record, so just return it.
current_without_cache
diff --git a/app/models/badge.rb b/app/models/badge.rb
index a244ed473de..50299cd6652 100644
--- a/app/models/badge.rb
+++ b/app/models/badge.rb
@@ -22,7 +22,7 @@ class Badge < ApplicationRecord
scope :order_created_at_asc, -> { reorder(created_at: :asc) }
- validates :link_url, :image_url, url: { protocols: %w(http https) }
+ validates :link_url, :image_url, addressable_url: true
validates :type, presence: true
def rendered_link_url(project = nil)
diff --git a/app/models/ci/build_runner_session.rb b/app/models/ci/build_runner_session.rb
index 80dbb150085..997bf298025 100644
--- a/app/models/ci/build_runner_session.rb
+++ b/app/models/ci/build_runner_session.rb
@@ -13,7 +13,7 @@ module Ci
belongs_to :build, class_name: 'Ci::Build', inverse_of: :runner_session
validates :build, presence: true
- validates :url, url: { protocols: %w(https) }
+ validates :url, addressable_url: { schemes: %w(https) }
def terminal_specification
wss_url = Gitlab::UrlHelpers.as_wss(self.url)
diff --git a/app/models/concerns/group_descendant.rb b/app/models/concerns/group_descendant.rb
index 05cd4265133..cfffd845e43 100644
--- a/app/models/concerns/group_descendant.rb
+++ b/app/models/concerns/group_descendant.rb
@@ -22,7 +22,7 @@ module GroupDescendant
return [] if descendants.empty?
unless descendants.all? { |hierarchy| hierarchy.is_a?(GroupDescendant) }
- raise ArgumentError.new('element is not a hierarchy')
+ raise ArgumentError.new(_('element is not a hierarchy'))
end
all_hierarchies = descendants.map do |descendant|
@@ -56,7 +56,7 @@ module GroupDescendant
end
if parent.nil? && hierarchy_top.present?
- raise ArgumentError.new('specified top is not part of the tree')
+ raise ArgumentError.new(_('specified top is not part of the tree'))
end
if parent && parent != hierarchy_top
diff --git a/app/models/concerns/token_authenticatable_strategies/base.rb b/app/models/concerns/token_authenticatable_strategies/base.rb
index df14e6e4754..aafd0b538a3 100644
--- a/app/models/concerns/token_authenticatable_strategies/base.rb
+++ b/app/models/concerns/token_authenticatable_strategies/base.rb
@@ -41,7 +41,7 @@ module TokenAuthenticatableStrategies
def self.fabricate(model, field, options)
if options[:digest] && options[:encrypted]
- raise ArgumentError, 'Incompatible options set!'
+ raise ArgumentError, _('Incompatible options set!')
end
if options[:digest]
diff --git a/app/models/concerns/token_authenticatable_strategies/encrypted.rb b/app/models/concerns/token_authenticatable_strategies/encrypted.rb
index 2c7fa2c5b3c..4728cb658dc 100644
--- a/app/models/concerns/token_authenticatable_strategies/encrypted.rb
+++ b/app/models/concerns/token_authenticatable_strategies/encrypted.rb
@@ -13,7 +13,7 @@ module TokenAuthenticatableStrategies
elsif migrating?
find_by_plaintext_token(token, unscoped)
else
- raise ArgumentError, "Unknown encryption strategy: #{encrypted_strategy}!"
+ raise ArgumentError, _("Unknown encryption strategy: %{encrypted_strategy}!") % { encrypted_strategy: encrypted_strategy }
end
end
@@ -32,7 +32,7 @@ module TokenAuthenticatableStrategies
return super if instance.has_attribute?(encrypted_field)
if required?
- raise ArgumentError, 'Using required encryption strategy when encrypted field is missing!'
+ raise ArgumentError, _('Using required encryption strategy when encrypted field is missing!')
else
insecure_strategy.ensure_token(instance)
end
@@ -74,7 +74,7 @@ module TokenAuthenticatableStrategies
value = value.call if value.is_a?(Proc)
unless value.in?([:required, :optional, :migrating])
- raise ArgumentError, 'encrypted: needs to be a :required, :optional or :migrating!'
+ raise ArgumentError, _('encrypted: needs to be a :required, :optional or :migrating!')
end
value
diff --git a/app/models/environment.rb b/app/models/environment.rb
index fa29a83e517..69224635e34 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -35,7 +35,7 @@ class Environment < ApplicationRecord
validates :external_url,
length: { maximum: 255 },
allow_nil: true,
- url: true
+ addressable_url: true
delegate :stop_action, :manual_actions, to: :last_deployment, allow_nil: true
diff --git a/app/models/error_tracking/project_error_tracking_setting.rb b/app/models/error_tracking/project_error_tracking_setting.rb
index 70954bf8b05..72270ee8b4f 100644
--- a/app/models/error_tracking/project_error_tracking_setting.rb
+++ b/app/models/error_tracking/project_error_tracking_setting.rb
@@ -22,7 +22,7 @@ module ErrorTracking
belongs_to :project
- validates :api_url, length: { maximum: 255 }, public_url: true, url: { enforce_sanitization: true, ascii_only: true }, allow_nil: true
+ validates :api_url, length: { maximum: 255 }, public_url: { enforce_sanitization: true, ascii_only: true }, allow_nil: true
validates :api_url, presence: { message: 'is a required field' }, if: :enabled
diff --git a/app/models/generic_commit_status.rb b/app/models/generic_commit_status.rb
index 3028bf21301..8a768b3a2c0 100644
--- a/app/models/generic_commit_status.rb
+++ b/app/models/generic_commit_status.rb
@@ -3,7 +3,7 @@
class GenericCommitStatus < CommitStatus
before_validation :set_default_values
- validates :target_url, url: true,
+ validates :target_url, addressable_url: true,
length: { maximum: 255 },
allow_nil: true
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index b4aad9e512e..787600569fa 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -291,22 +291,22 @@ class Milestone < ApplicationRecord
end
title_exists = relation.find_by_title(title)
- errors.add(:title, "already being used for another group or project milestone.") if title_exists
+ errors.add(:title, _("already being used for another group or project milestone.")) if title_exists
end
# Milestone should be either a project milestone or a group milestone
def milestone_type_check
if group_id && project_id
field = project_id_changed? ? :project_id : :group_id
- errors.add(field, "milestone should belong either to a project or a group.")
+ errors.add(field, _("milestone should belong either to a project or a group."))
end
end
def milestone_format_reference(format = :iid)
- raise ArgumentError, 'Unknown format' unless [:iid, :name].include?(format)
+ raise ArgumentError, _('Unknown format') unless [:iid, :name].include?(format)
if group_milestone? && format == :iid
- raise ArgumentError, 'Cannot refer to a group milestone by an internal id!'
+ raise ArgumentError, _('Cannot refer to a group milestone by an internal id!')
end
if format == :name && !name.include?('"')
@@ -322,7 +322,7 @@ class Milestone < ApplicationRecord
def start_date_should_be_less_than_due_date
if due_date <= start_date
- errors.add(:due_date, "must be greater than start date")
+ errors.add(:due_date, _("must be greater than start date"))
end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 3e9bb6aedf1..2fb6f5cb6a7 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -146,6 +146,7 @@ class Project < ApplicationRecord
has_one :pipelines_email_service
has_one :irker_service
has_one :pivotaltracker_service
+ has_one :hipchat_service
has_one :flowdock_service
has_one :assembla_service
has_one :asana_service
@@ -312,7 +313,7 @@ class Project < ApplicationRecord
validates :description, length: { maximum: 2000 }, allow_blank: true
validates :ci_config_path,
format: { without: %r{(\.{2}|\A/)},
- message: 'cannot include leading slash or directory traversal.' },
+ message: _('cannot include leading slash or directory traversal.') },
length: { maximum: 255 },
allow_blank: true
validates :name,
@@ -327,7 +328,7 @@ class Project < ApplicationRecord
validates :namespace, presence: true
validates :name, uniqueness: { scope: :namespace_id }
- validates :import_url, public_url: { protocols: ->(project) { project.persisted? ? VALID_MIRROR_PROTOCOLS : VALID_IMPORT_PROTOCOLS },
+ validates :import_url, public_url: { schemes: ->(project) { project.persisted? ? VALID_MIRROR_PROTOCOLS : VALID_IMPORT_PROTOCOLS },
ports: ->(project) { project.persisted? ? VALID_MIRROR_PORTS : VALID_IMPORT_PORTS },
enforce_user: true }, if: [:external_import?, :import_url_changed?]
validates :star_count, numericality: { greater_than_or_equal_to: 0 }
@@ -419,13 +420,13 @@ class Project < ApplicationRecord
enum auto_cancel_pending_pipelines: { disabled: 0, enabled: 1 }
chronic_duration_attr :build_timeout_human_readable, :build_timeout,
- default: 3600, error_message: 'Maximum job timeout has a value which could not be accepted'
+ default: 3600, error_message: _('Maximum job timeout has a value which could not be accepted')
validates :build_timeout, allow_nil: true,
numericality: { greater_than_or_equal_to: 10.minutes,
less_than: 1.month,
only_integer: true,
- message: 'needs to be beetween 10 minutes and 1 month' }
+ message: _('needs to be beetween 10 minutes and 1 month') }
# Used by Projects::CleanupService to hold a map of rewritten object IDs
mount_uploader :bfg_object_map, AttachmentUploader
@@ -459,41 +460,14 @@ class Project < ApplicationRecord
# Returns a collection of projects that is either public or visible to the
# logged in user.
- #
- # requested_visiblity_levels: Normally all projects that are visible
- # to the user (e.g. internal and public) are queried, but this
- # parameter allows the caller to narrow the search space to optimize
- # database queries. For instance, a caller may only want to see
- # internal projects. Instead of querying for internal and public
- # projects and throwing away public projects, this parameter allows
- # the query to be targeted for only internal projects.
- def self.public_or_visible_to_user(user = nil, requested_visibility_levels = [])
- return public_to_user unless user
-
- visible_levels = Gitlab::VisibilityLevel.levels_for_user(user)
- include_private = true
- requested_visibility_levels = Array(requested_visibility_levels)
-
- if requested_visibility_levels.present?
- visible_levels &= requested_visibility_levels
- include_private = requested_visibility_levels.include?(Gitlab::VisibilityLevel::PRIVATE)
- end
-
- public_or_internal_rel =
- if visible_levels.present?
- where('projects.visibility_level IN (?)', visible_levels)
- else
- Project.none
- end
-
- private_rel =
- if include_private
- where('EXISTS (?)', user.authorizations_for_projects)
- else
- Project.none
- end
-
- public_or_internal_rel.or(private_rel)
+ def self.public_or_visible_to_user(user = nil)
+ if user
+ where('EXISTS (?) OR projects.visibility_level IN (?)',
+ user.authorizations_for_projects,
+ Gitlab::VisibilityLevel.levels_for_user(user))
+ else
+ public_to_user
+ end
end
# project features may be "disabled", "internal", "enabled" or "public". If "internal",
@@ -876,7 +850,7 @@ class Project < ApplicationRecord
def mark_stuck_remote_mirrors_as_failed!
remote_mirrors.stuck.update_all(
update_status: :failed,
- last_error: 'The remote mirror took to long to complete.',
+ last_error: _('The remote mirror took to long to complete.'),
last_update_at: Time.now
)
end
@@ -913,14 +887,14 @@ class Project < ApplicationRecord
level_name = Gitlab::VisibilityLevel.level_name(self.visibility_level).downcase
group_level_name = Gitlab::VisibilityLevel.level_name(self.group.visibility_level).downcase
- self.errors.add(:visibility_level, "#{level_name} is not allowed in a #{group_level_name} group.")
+ self.errors.add(:visibility_level, _("%{level_name} is not allowed in a %{group_level_name} group.") % { level_name: level_name, group_level_name: group_level_name })
end
def visibility_level_allowed_as_fork
return if visibility_level_allowed_as_fork?
level_name = Gitlab::VisibilityLevel.level_name(self.visibility_level).downcase
- self.errors.add(:visibility_level, "#{level_name} is not allowed since the fork source project has lower visibility.")
+ self.errors.add(:visibility_level, _("%{level_name} is not allowed since the fork source project has lower visibility.") % { level_name: level_name })
end
def check_wiki_path_conflict
@@ -929,7 +903,7 @@ class Project < ApplicationRecord
path_to_check = path.ends_with?('.wiki') ? path.chomp('.wiki') : "#{path}.wiki"
if Project.where(namespace_id: namespace_id, path: path_to_check).exists?
- errors.add(:name, 'has already been taken')
+ errors.add(:name, _('has already been taken'))
end
end
@@ -949,7 +923,7 @@ class Project < ApplicationRecord
return unless pages_https_only?
unless pages_domains.all?(&:https?)
- errors.add(:pages_https_only, "cannot be enabled unless all domains have TLS certificates")
+ errors.add(:pages_https_only, _("cannot be enabled unless all domains have TLS certificates"))
end
end
@@ -1229,7 +1203,7 @@ class Project < ApplicationRecord
def valid_repo?
repository.exists?
rescue
- errors.add(:path, 'Invalid repository path')
+ errors.add(:path, _('Invalid repository path'))
false
end
@@ -1320,7 +1294,7 @@ class Project < ApplicationRecord
# Check if repository with same path already exists on disk we can
# skip this for the hashed storage because the path does not change
if legacy_storage? && repository_with_same_path_already_exists?
- errors.add(:base, 'There is already a repository with that name on disk')
+ errors.add(:base, _('There is already a repository with that name on disk'))
return false
end
@@ -1342,7 +1316,7 @@ class Project < ApplicationRecord
repository.after_create
true
else
- errors.add(:base, 'Failed to create repository via gitlab-shell')
+ errors.add(:base, _('Failed to create repository via gitlab-shell'))
false
end
end
@@ -1418,7 +1392,7 @@ class Project < ApplicationRecord
ProjectCacheWorker.perform_async(self.id, [], [:commit_count])
reload_default_branch
else
- errors.add(:base, "Could not change HEAD: branch '#{branch}' does not exist")
+ errors.add(:base, _("Could not change HEAD: branch '%{branch}' does not exist") % { branch: branch })
false
end
end
@@ -1470,7 +1444,7 @@ class Project < ApplicationRecord
ProjectWiki.new(self, self.owner).wiki
true
rescue ProjectWiki::CouldNotCreateWikiError
- errors.add(:base, 'Failed create wiki')
+ errors.add(:base, _('Failed create wiki'))
false
end
@@ -1959,7 +1933,7 @@ class Project < ApplicationRecord
#
# @param [Symbol] feature that needs to be rolled out for the project (:repository, :attachments)
def hashed_storage?(feature)
- raise ArgumentError, "Invalid feature" unless HASHED_STORAGE_FEATURES.include?(feature)
+ raise ArgumentError, _("Invalid feature") unless HASHED_STORAGE_FEATURES.include?(feature)
self.storage_version && self.storage_version >= HASHED_STORAGE_FEATURES[feature]
end
@@ -2191,7 +2165,7 @@ class Project < ApplicationRecord
return if skip_disk_validation
if repository_storage.blank? || repository_with_same_path_already_exists?
- errors.add(:base, 'There is already a repository with that name on disk')
+ errors.add(:base, _('There is already a repository with that name on disk'))
throw :abort
end
end
@@ -2237,7 +2211,7 @@ class Project < ApplicationRecord
errors.delete(error)
end
- errors.add(:base, "The project is still being deleted. Please try again later.")
+ errors.add(:base, _("The project is still being deleted. Please try again later."))
end
def pending_delete_twin
diff --git a/app/models/project_group_link.rb b/app/models/project_group_link.rb
index 58b555c3581..feaf172d48d 100644
--- a/app/models/project_group_link.rb
+++ b/app/models/project_group_link.rb
@@ -14,7 +14,7 @@ class ProjectGroupLink < ApplicationRecord
validates :project_id, presence: true
validates :group, presence: true
- validates :group_id, uniqueness: { scope: [:project_id], message: "already shared with this group" }
+ validates :group_id, uniqueness: { scope: [:project_id], message: _("already shared with this group") }
validates :group_access, presence: true
validates :group_access, inclusion: { in: Gitlab::Access.values }, presence: true
validate :different_group
@@ -44,7 +44,7 @@ class ProjectGroupLink < ApplicationRecord
group_ids = project_group.ancestors.map(&:id).push(project_group.id)
if group_ids.include?(self.group.id)
- errors.add(:base, "Project cannot be shared with the group it is in or one of its ancestors.")
+ errors.add(:base, _("Project cannot be shared with the group it is in or one of its ancestors."))
end
end
diff --git a/app/models/project_services/asana_service.rb b/app/models/project_services/asana_service.rb
index cc5f1207653..3e28dc23782 100644
--- a/app/models/project_services/asana_service.rb
+++ b/app/models/project_services/asana_service.rb
@@ -11,7 +11,7 @@ class AsanaService < Service
end
def description
- 'Asana - Teamwork without email'
+ s_('AsanaService|Asana - Teamwork without email')
end
def help
@@ -36,13 +36,13 @@ http://app.asana.com/-/account_api'
{
type: 'text',
name: 'api_key',
- placeholder: 'User Personal Access Token. User must have access to task, all comments will be attributed to this user.',
+ placeholder: s_('AsanaService|User Personal Access Token. User must have access to task, all comments will be attributed to this user.'),
required: true
},
{
type: 'text',
name: 'restrict_to_branch',
- placeholder: 'Comma-separated list of branches which will be automatically inspected. Leave blank to include all branches.'
+ placeholder: s_('AsanaService|Comma-separated list of branches which will be automatically inspected. Leave blank to include all branches.')
}
]
end
@@ -73,7 +73,7 @@ http://app.asana.com/-/account_api'
project_name = project.full_name
data[:commits].each do |commit|
- push_msg = "#{user} pushed to branch #{branch} of #{project_name} ( #{commit[:url]} ):"
+ push_msg = s_("AsanaService|%{user} pushed to branch %{branch} of %{project_name} ( %{commit_url} ):") % { user: user, branch: branch, project_name: project_name, commit_url: commit[:url] }
check_commit(commit[:message], push_msg)
end
end
diff --git a/app/models/project_services/bamboo_service.rb b/app/models/project_services/bamboo_service.rb
index 71f5607dbdb..dfeb21680a9 100644
--- a/app/models/project_services/bamboo_service.rb
+++ b/app/models/project_services/bamboo_service.rb
@@ -31,15 +31,15 @@ class BambooService < CiService
end
def title
- 'Atlassian Bamboo CI'
+ s_('BambooService|Atlassian Bamboo CI')
end
def description
- 'A continuous integration and build server'
+ s_('BambooService|A continuous integration and build server')
end
def help
- 'You must set up automatic revision labeling and a repository trigger in Bamboo.'
+ s_('BambooService|You must set up automatic revision labeling and a repository trigger in Bamboo.')
end
def self.to_param
@@ -49,11 +49,11 @@ class BambooService < CiService
def fields
[
{ type: 'text', name: 'bamboo_url',
- placeholder: 'Bamboo root URL like https://bamboo.example.com', required: true },
+ placeholder: s_('BambooService|Bamboo root URL like https://bamboo.example.com'), required: true },
{ type: 'text', name: 'build_key',
- placeholder: 'Bamboo build plan key like KEY', required: true },
+ placeholder: s_('BambooService|Bamboo build plan key like KEY'), required: true },
{ type: 'text', name: 'username',
- placeholder: 'A user with API access, if applicable' },
+ placeholder: s_('BambooService|A user with API access, if applicable') },
{ type: 'password', name: 'password' }
]
end
diff --git a/app/models/project_services/discord_service.rb b/app/models/project_services/discord_service.rb
index 21afd14dbff..405676792de 100644
--- a/app/models/project_services/discord_service.rb
+++ b/app/models/project_services/discord_service.rb
@@ -4,11 +4,11 @@ require "discordrb/webhooks"
class DiscordService < ChatNotificationService
def title
- "Discord Notifications"
+ s_("DiscordService|Discord Notifications")
end
def description
- "Receive event notifications in Discord"
+ s_("DiscordService|Receive event notifications in Discord")
end
def self.to_param
diff --git a/app/models/project_services/emails_on_push_service.rb b/app/models/project_services/emails_on_push_service.rb
index fb73d430fb1..45de64a9990 100644
--- a/app/models/project_services/emails_on_push_service.rb
+++ b/app/models/project_services/emails_on_push_service.rb
@@ -7,11 +7,11 @@ class EmailsOnPushService < Service
validates :recipients, presence: true, if: :valid_recipients?
def title
- 'Emails on push'
+ s_('EmailsOnPushService|Emails on push')
end
def description
- 'Email the commits and diff of each push to a list of recipients.'
+ s_('EmailsOnPushService|Email the commits and diff of each push to a list of recipients.')
end
def self.to_param
@@ -45,11 +45,11 @@ class EmailsOnPushService < Service
def fields
domains = Notify.allowed_email_domains.map { |domain| "user@#{domain}" }.join(", ")
[
- { type: 'checkbox', name: 'send_from_committer_email', title: "Send from committer",
- help: "Send notifications from the committer's email address if the domain is part of the domain GitLab is running on (e.g. #{domains})." },
- { type: 'checkbox', name: 'disable_diffs', title: "Disable code diffs",
- help: "Don't include possibly sensitive code diffs in notification body." },
- { type: 'textarea', name: 'recipients', placeholder: 'Emails separated by whitespace' }
+ { type: 'checkbox', name: 'send_from_committer_email', title: s_("EmailsOnPushService|Send from committer"),
+ help: s_("EmailsOnPushService|Send notifications from the committer's email address if the domain is part of the domain GitLab is running on (e.g. %{domains}).") % { domains: domains } },
+ { type: 'checkbox', name: 'disable_diffs', title: s_("EmailsOnPushService|Disable code diffs"),
+ help: s_("EmailsOnPushService|Don't include possibly sensitive code diffs in notification body.") },
+ { type: 'textarea', name: 'recipients', placeholder: s_('EmailsOnPushService|Emails separated by whitespace') }
]
end
end
diff --git a/app/models/project_services/external_wiki_service.rb b/app/models/project_services/external_wiki_service.rb
index d2835c6ac82..593ce69b0fd 100644
--- a/app/models/project_services/external_wiki_service.rb
+++ b/app/models/project_services/external_wiki_service.rb
@@ -6,11 +6,11 @@ class ExternalWikiService < Service
validates :external_wiki_url, presence: true, public_url: true, if: :activated?
def title
- 'External Wiki'
+ s_('ExternalWikiService|External Wiki')
end
def description
- 'Replaces the link to the internal wiki with a link to an external wiki.'
+ s_('ExternalWikiService|Replaces the link to the internal wiki with a link to an external wiki.')
end
def self.to_param
@@ -19,7 +19,7 @@ class ExternalWikiService < Service
def fields
[
- { type: 'text', name: 'external_wiki_url', placeholder: 'The URL of the external Wiki', required: true }
+ { type: 'text', name: 'external_wiki_url', placeholder: s_('ExternalWikiService|The URL of the external Wiki'), required: true }
]
end
diff --git a/app/models/project_services/flowdock_service.rb b/app/models/project_services/flowdock_service.rb
index 76624263aab..094488cb431 100644
--- a/app/models/project_services/flowdock_service.rb
+++ b/app/models/project_services/flowdock_service.rb
@@ -9,7 +9,7 @@ class FlowdockService < Service
end
def description
- 'Flowdock is a collaboration web app for technical teams.'
+ s_('FlowdockService|Flowdock is a collaboration web app for technical teams.')
end
def self.to_param
@@ -18,7 +18,7 @@ class FlowdockService < Service
def fields
[
- { type: 'text', name: 'token', placeholder: 'Flowdock Git source token', required: true }
+ { type: 'text', name: 'token', placeholder: s_('FlowdockService|Flowdock Git source token'), required: true }
]
end
diff --git a/app/models/project_services/hipchat_service.rb b/app/models/project_services/hipchat_service.rb
new file mode 100644
index 00000000000..a69b7b4c4b6
--- /dev/null
+++ b/app/models/project_services/hipchat_service.rb
@@ -0,0 +1,311 @@
+# frozen_string_literal: true
+
+class HipchatService < Service
+ include ActionView::Helpers::SanitizeHelper
+
+ MAX_COMMITS = 3
+ HIPCHAT_ALLOWED_TAGS = %w[
+ a b i strong em br img pre code
+ table th tr td caption colgroup col thead tbody tfoot
+ ul ol li dl dt dd
+ ].freeze
+
+ prop_accessor :token, :room, :server, :color, :api_version
+ boolean_accessor :notify_only_broken_pipelines, :notify
+ validates :token, presence: true, if: :activated?
+
+ def initialize_properties
+ if properties.nil?
+ self.properties = {}
+ self.notify_only_broken_pipelines = true
+ end
+ end
+
+ def title
+ 'HipChat'
+ end
+
+ def description
+ 'Private group chat and IM'
+ end
+
+ def self.to_param
+ 'hipchat'
+ end
+
+ def fields
+ [
+ { type: 'text', name: 'token', placeholder: 'Room token', required: true },
+ { type: 'text', name: 'room', placeholder: 'Room name or ID' },
+ { type: 'checkbox', name: 'notify' },
+ { type: 'select', name: 'color', choices: %w(yellow red green purple gray random) },
+ { type: 'text', name: 'api_version',
+ placeholder: 'Leave blank for default (v2)' },
+ { type: 'text', name: 'server',
+ placeholder: 'Leave blank for default. https://hipchat.example.com' },
+ { type: 'checkbox', name: 'notify_only_broken_pipelines' }
+ ]
+ end
+
+ def self.supported_events
+ %w(push issue confidential_issue merge_request note confidential_note tag_push pipeline)
+ end
+
+ def execute(data)
+ return unless supported_events.include?(data[:object_kind])
+
+ message = create_message(data)
+ return unless message.present?
+
+ gate[room].send('GitLab', message, message_options(data)) # rubocop:disable GitlabSecurity/PublicSend
+ end
+
+ def test(data)
+ begin
+ result = execute(data)
+ rescue StandardError => error
+ return { success: false, result: error }
+ end
+
+ { success: true, result: result }
+ end
+
+ private
+
+ def gate
+ options = { api_version: api_version.present? ? api_version : 'v2' }
+ options[:server_url] = server unless server.blank?
+ @gate ||= HipChat::Client.new(token, options)
+ end
+
+ def message_options(data = nil)
+ { notify: notify.present? && Gitlab::Utils.to_boolean(notify), color: message_color(data) }
+ end
+
+ def create_message(data)
+ object_kind = data[:object_kind]
+
+ case object_kind
+ when "push", "tag_push"
+ create_push_message(data)
+ when "issue"
+ create_issue_message(data) unless update?(data)
+ when "merge_request"
+ create_merge_request_message(data) unless update?(data)
+ when "note"
+ create_note_message(data)
+ when "pipeline"
+ create_pipeline_message(data) if should_pipeline_be_notified?(data)
+ end
+ end
+
+ def render_line(text)
+ markdown(text.lines.first.chomp, pipeline: :single_line) if text
+ end
+
+ def create_push_message(push)
+ ref_type = Gitlab::Git.tag_ref?(push[:ref]) ? 'tag' : 'branch'
+ ref = Gitlab::Git.ref_name(push[:ref])
+
+ before = push[:before]
+ after = push[:after]
+
+ message = []
+ message << "#{push[:user_name]} "
+
+ if Gitlab::Git.blank_ref?(before)
+ message << "pushed new #{ref_type} <a href=\""\
+ "#{project_url}/commits/#{CGI.escape(ref)}\">#{ref}</a>"\
+ " to #{project_link}\n"
+ elsif Gitlab::Git.blank_ref?(after)
+ message << "removed #{ref_type} <b>#{ref}</b> from <a href=\"#{project.web_url}\">#{project_name}</a> \n"
+ else
+ message << "pushed to #{ref_type} <a href=\""\
+ "#{project.web_url}/commits/#{CGI.escape(ref)}\">#{ref}</a> "
+ message << "of <a href=\"#{project.web_url}\">#{project.full_name.gsub!(/\s/, '')}</a> "
+ message << "(<a href=\"#{project.web_url}/compare/#{before}...#{after}\">Compare changes</a>)"
+
+ push[:commits].take(MAX_COMMITS).each do |commit|
+ message << "<br /> - #{render_line(commit[:message])} (<a href=\"#{commit[:url]}\">#{commit[:id][0..5]}</a>)"
+ end
+
+ if push[:commits].count > MAX_COMMITS
+ message << "<br />... #{push[:commits].count - MAX_COMMITS} more commits"
+ end
+ end
+
+ message.join
+ end
+
+ def markdown(text, options = {})
+ return "" unless text
+
+ context = {
+ project: project,
+ pipeline: :email
+ }
+
+ Banzai.render(text, context)
+
+ context.merge!(options)
+
+ html = Banzai.render_and_post_process(text, context)
+ sanitized_html = sanitize(html, tags: HIPCHAT_ALLOWED_TAGS, attributes: %w[href title alt])
+
+ sanitized_html.truncate(200, separator: ' ', omission: '...')
+ end
+
+ def create_issue_message(data)
+ user_name = data[:user][:name]
+
+ obj_attr = data[:object_attributes]
+ obj_attr = HashWithIndifferentAccess.new(obj_attr)
+ title = render_line(obj_attr[:title])
+ state = obj_attr[:state]
+ issue_iid = obj_attr[:iid]
+ issue_url = obj_attr[:url]
+ description = obj_attr[:description]
+
+ issue_link = "<a href=\"#{issue_url}\">issue ##{issue_iid}</a>"
+
+ message = ["#{user_name} #{state} #{issue_link} in #{project_link}: <b>#{title}</b>"]
+ message << "<pre>#{markdown(description)}</pre>"
+
+ message.join
+ end
+
+ def create_merge_request_message(data)
+ user_name = data[:user][:name]
+
+ obj_attr = data[:object_attributes]
+ obj_attr = HashWithIndifferentAccess.new(obj_attr)
+ merge_request_id = obj_attr[:iid]
+ state = obj_attr[:state]
+ description = obj_attr[:description]
+ title = render_line(obj_attr[:title])
+
+ merge_request_url = "#{project_url}/merge_requests/#{merge_request_id}"
+ merge_request_link = "<a href=\"#{merge_request_url}\">merge request !#{merge_request_id}</a>"
+ message = ["#{user_name} #{state} #{merge_request_link} in " \
+ "#{project_link}: <b>#{title}</b>"]
+
+ message << "<pre>#{markdown(description)}</pre>"
+ message.join
+ end
+
+ def format_title(title)
+ "<b>#{render_line(title)}</b>"
+ end
+
+ def create_note_message(data)
+ data = HashWithIndifferentAccess.new(data)
+ user_name = data[:user][:name]
+
+ obj_attr = HashWithIndifferentAccess.new(data[:object_attributes])
+ note = obj_attr[:note]
+ note_url = obj_attr[:url]
+ noteable_type = obj_attr[:noteable_type]
+ commit_id = nil
+
+ case noteable_type
+ when "Commit"
+ commit_attr = HashWithIndifferentAccess.new(data[:commit])
+ commit_id = commit_attr[:id]
+ subject_desc = commit_id
+ subject_desc = Commit.truncate_sha(subject_desc)
+ subject_type = "commit"
+ title = format_title(commit_attr[:message])
+ when "Issue"
+ subj_attr = HashWithIndifferentAccess.new(data[:issue])
+ subject_id = subj_attr[:iid]
+ subject_desc = "##{subject_id}"
+ subject_type = "issue"
+ title = format_title(subj_attr[:title])
+ when "MergeRequest"
+ subj_attr = HashWithIndifferentAccess.new(data[:merge_request])
+ subject_id = subj_attr[:iid]
+ subject_desc = "!#{subject_id}"
+ subject_type = "merge request"
+ title = format_title(subj_attr[:title])
+ when "Snippet"
+ subj_attr = HashWithIndifferentAccess.new(data[:snippet])
+ subject_id = subj_attr[:id]
+ subject_desc = "##{subject_id}"
+ subject_type = "snippet"
+ title = format_title(subj_attr[:title])
+ end
+
+ subject_html = "<a href=\"#{note_url}\">#{subject_type} #{subject_desc}</a>"
+ message = ["#{user_name} commented on #{subject_html} in #{project_link}: "]
+ message << title
+
+ message << "<pre>#{markdown(note, ref: commit_id)}</pre>"
+ message.join
+ end
+
+ def create_pipeline_message(data)
+ pipeline_attributes = data[:object_attributes]
+ pipeline_id = pipeline_attributes[:id]
+ ref_type = pipeline_attributes[:tag] ? 'tag' : 'branch'
+ ref = pipeline_attributes[:ref]
+ user_name = (data[:user] && data[:user][:name]) || 'API'
+ status = pipeline_attributes[:status]
+ duration = pipeline_attributes[:duration]
+
+ branch_link = "<a href=\"#{project_url}/commits/#{CGI.escape(ref)}\">#{ref}</a>"
+ pipeline_url = "<a href=\"#{project_url}/pipelines/#{pipeline_id}\">##{pipeline_id}</a>"
+
+ "#{project_link}: Pipeline #{pipeline_url} of #{branch_link} #{ref_type} by #{user_name} #{humanized_status(status)} in #{duration} second(s)"
+ end
+
+ def message_color(data)
+ pipeline_status_color(data) || color || 'yellow'
+ end
+
+ def pipeline_status_color(data)
+ return unless data && data[:object_kind] == 'pipeline'
+
+ case data[:object_attributes][:status]
+ when 'success'
+ 'green'
+ else
+ 'red'
+ end
+ end
+
+ def project_name
+ project.full_name.gsub(/\s/, '')
+ end
+
+ def project_url
+ project.web_url
+ end
+
+ def project_link
+ "<a href=\"#{project_url}\">#{project_name}</a>"
+ end
+
+ def update?(data)
+ data[:object_attributes][:action] == 'update'
+ end
+
+ def humanized_status(status)
+ case status
+ when 'success'
+ 'passed'
+ else
+ status
+ end
+ end
+
+ def should_pipeline_be_notified?(data)
+ case data[:object_attributes][:status]
+ when 'success'
+ !notify_only_broken_pipelines?
+ when 'failed'
+ true
+ else
+ false
+ end
+ end
+end
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index 81302c516c2..ebf28dc842c 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -11,7 +11,7 @@ class JiraService < IssueTrackerService
validates :password, presence: true, if: :activated?
validates :jira_issue_transition_id,
- format: { with: Gitlab::Regex.jira_transition_id_regex, message: "transition ids can have only numbers which can be split with , or ;" },
+ format: { with: Gitlab::Regex.jira_transition_id_regex, message: s_("JiraService|transition ids can have only numbers which can be split with , or ;") },
allow_blank: true
# JIRA cloud version is deprecating authentication via username and password.
@@ -86,7 +86,7 @@ class JiraService < IssueTrackerService
if self.properties && self.properties['description'].present?
self.properties['description']
else
- 'Jira issue tracker'
+ s_('JiraService|Jira issue tracker')
end
end
@@ -96,11 +96,11 @@ class JiraService < IssueTrackerService
def fields
[
- { type: 'text', name: 'url', title: 'Web URL', placeholder: 'https://jira.example.com', required: true },
- { type: 'text', name: 'api_url', title: 'JIRA API URL', placeholder: 'If different from Web URL' },
- { type: 'text', name: 'username', title: 'Username or Email', placeholder: 'Use a username for server version and an email for cloud version', required: true },
- { type: 'password', name: 'password', title: 'Password or API token', placeholder: 'Use a password for server version and an API token for cloud version', required: true },
- { type: 'text', name: 'jira_issue_transition_id', title: 'Transition ID(s)', placeholder: 'Use , or ; to separate multiple transition IDs' }
+ { type: 'text', name: 'url', title: s_('JiraService|Web URL'), placeholder: 'https://jira.example.com', required: true },
+ { type: 'text', name: 'api_url', title: s_('JiraService|JIRA API URL'), placeholder: s_('JiraService|If different from Web URL') },
+ { type: 'text', name: 'username', title: s_('JiraService|Username or Email'), placeholder: s_('JiraService|Use a username for server version and an email for cloud version'), required: true },
+ { type: 'password', name: 'password', title: s_('JiraService|Password or API token'), placeholder: s_('JiraService|Use a password for server version and an API token for cloud version'), required: true },
+ { type: 'text', name: 'jira_issue_transition_id', title: s_('JiraService|Transition ID(s)'), placeholder: s_('JiraService|Use , or ; to separate multiple transition IDs') }
]
end
@@ -139,7 +139,7 @@ class JiraService < IssueTrackerService
def create_cross_reference_note(mentioned, noteable, author)
unless can_cross_reference?(noteable)
- return "Events for #{noteable.model_name.plural.humanize(capitalize: false)} are disabled."
+ return s_("JiraService|Events for %{noteable_model_name} are disabled.") % { noteable_model_name: noteable.model_name.plural.humanize(capitalize: false) }
end
jira_issue = jira_request { client.Issue.find(mentioned.id) }
@@ -338,9 +338,9 @@ class JiraService < IssueTrackerService
def self.event_description(event)
case event
when "merge_request", "merge_request_events"
- "JIRA comments will be created when an issue gets referenced in a merge request."
+ s_("JiraService|JIRA comments will be created when an issue gets referenced in a merge request.")
when "commit", "commit_events"
- "JIRA comments will be created when an issue gets referenced in a commit."
+ s_("JiraService|JIRA comments will be created when an issue gets referenced in a commit.")
end
end
end
diff --git a/app/models/project_services/pipelines_email_service.rb b/app/models/project_services/pipelines_email_service.rb
index d60a6a7efa3..7ba69370f14 100644
--- a/app/models/project_services/pipelines_email_service.rb
+++ b/app/models/project_services/pipelines_email_service.rb
@@ -10,11 +10,11 @@ class PipelinesEmailService < Service
end
def title
- 'Pipelines emails'
+ _('Pipelines emails')
end
def description
- 'Email the pipelines status to a list of recipients.'
+ _('Email the pipelines status to a list of recipients.')
end
def self.to_param
@@ -51,7 +51,7 @@ class PipelinesEmailService < Service
[
{ type: 'textarea',
name: 'recipients',
- placeholder: 'Emails separated by comma',
+ placeholder: _('Emails separated by comma'),
required: true },
{ type: 'checkbox',
name: 'notify_only_broken_pipelines' }
diff --git a/app/models/project_services/pivotaltracker_service.rb b/app/models/project_services/pivotaltracker_service.rb
index 617e502b639..c15993bdc06 100644
--- a/app/models/project_services/pivotaltracker_service.rb
+++ b/app/models/project_services/pivotaltracker_service.rb
@@ -11,7 +11,7 @@ class PivotaltrackerService < Service
end
def description
- 'Project Management Software (Source Commits Endpoint)'
+ s_('PivotalTrackerService|Project Management Software (Source Commits Endpoint)')
end
def self.to_param
@@ -23,14 +23,14 @@ class PivotaltrackerService < Service
{
type: 'text',
name: 'token',
- placeholder: 'Pivotal Tracker API token.',
+ placeholder: s_('PivotalTrackerService|Pivotal Tracker API token.'),
required: true
},
{
type: 'text',
name: 'restrict_to_branch',
- placeholder: 'Comma-separated list of branches which will be ' \
- 'automatically inspected. Leave blank to include all branches.'
+ placeholder: s_('PivotalTrackerService|Comma-separated list of branches which will be ' \
+ 'automatically inspected. Leave blank to include all branches.')
}
]
end
diff --git a/app/models/project_services/pushover_service.rb b/app/models/project_services/pushover_service.rb
index 4e48c348b45..0d35bab7f80 100644
--- a/app/models/project_services/pushover_service.rb
+++ b/app/models/project_services/pushover_service.rb
@@ -11,7 +11,7 @@ class PushoverService < Service
end
def description
- 'Pushover makes it easy to get real-time notifications on your Android device, iPhone, iPad, and Desktop.'
+ s_('PushoverService|Pushover makes it easy to get real-time notifications on your Android device, iPhone, iPad, and Desktop.')
end
def self.to_param
@@ -20,15 +20,15 @@ class PushoverService < Service
def fields
[
- { type: 'text', name: 'api_key', placeholder: 'Your application key', required: true },
- { type: 'text', name: 'user_key', placeholder: 'Your user key', required: true },
- { type: 'text', name: 'device', placeholder: 'Leave blank for all active devices' },
+ { type: 'text', name: 'api_key', placeholder: s_('PushoverService|Your application key'), required: true },
+ { type: 'text', name: 'user_key', placeholder: s_('PushoverService|Your user key'), required: true },
+ { type: 'text', name: 'device', placeholder: s_('PushoverService|Leave blank for all active devices') },
{ type: 'select', name: 'priority', required: true, choices:
[
- ['Lowest Priority', -2],
- ['Low Priority', -1],
- ['Normal Priority', 0],
- ['High Priority', 1]
+ [s_('PushoverService|Lowest Priority'), -2],
+ [s_('PushoverService|Low Priority'), -1],
+ [s_('PushoverService|Normal Priority'), 0],
+ [s_('PushoverService|High Priority'), 1]
],
default_choice: 0 },
{ type: 'select', name: 'sound', choices:
@@ -73,15 +73,15 @@ class PushoverService < Service
message =
if Gitlab::Git.blank_ref?(before)
- "#{data[:user_name]} pushed new branch \"#{ref}\"."
+ s_("PushoverService|%{user_name} pushed new branch \"%{ref}\".") % { user_name: data[:user_name], ref: ref }
elsif Gitlab::Git.blank_ref?(after)
- "#{data[:user_name]} deleted branch \"#{ref}\"."
+ s_("PushoverService|%{user_name} deleted branch \"%{ref}\".") % { user_name: data[:user_name], ref: ref }
else
- "#{data[:user_name]} push to branch \"#{ref}\"."
+ s_("PushoverService|%{user_name} push to branch \"%{ref}\".") % { user_name: data[:user_name], ref: ref }
end
if data[:total_commits_count] > 0
- message = [message, "Total commits count: #{data[:total_commits_count]}"].join("\n")
+ message = [message, s_("PushoverService|Total commits count: %{total_commits_count}") % { total_commits_count: data[:total_commits_count] }].join("\n")
end
pushover_data = {
@@ -92,7 +92,7 @@ class PushoverService < Service
title: "#{project.full_name}",
message: message,
url: data[:project][:web_url],
- url_title: "See project #{project.full_name}"
+ url_title: s_("PushoverService|See project %{project_full_name}") % { project_full_name: project.full_name }
}
# Sound parameter MUST NOT be sent to API if not selected
diff --git a/app/models/releases/link.rb b/app/models/releases/link.rb
index 36ec33d3e3e..58c2b98e524 100644
--- a/app/models/releases/link.rb
+++ b/app/models/releases/link.rb
@@ -6,7 +6,7 @@ module Releases
belongs_to :release
- validates :url, presence: true, url: { protocols: %w(http https ftp) }, uniqueness: { scope: :release }
+ validates :url, presence: true, addressable_url: { schemes: %w(http https ftp) }, uniqueness: { scope: :release }
validates :name, presence: true, uniqueness: { scope: :release }
scope :sorted, -> { order(created_at: :desc) }
diff --git a/app/models/remote_mirror.rb b/app/models/remote_mirror.rb
index 5610cfe0f24..b2fd5394a03 100644
--- a/app/models/remote_mirror.rb
+++ b/app/models/remote_mirror.rb
@@ -17,7 +17,7 @@ class RemoteMirror < ApplicationRecord
belongs_to :project, inverse_of: :remote_mirrors
- validates :url, presence: true, public_url: { protocols: %w(ssh git http https), allow_blank: true, enforce_user: true }
+ validates :url, presence: true, public_url: { schemes: %w(ssh git http https), allow_blank: true, enforce_user: true }
before_save :set_new_remote_name, if: :mirror_url_changed?
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 51ab2247a03..574ce12b309 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -299,14 +299,13 @@ class Repository
end
end
- def archive_metadata(ref, storage_path, format = "tar.gz", append_sha:, path: nil)
+ def archive_metadata(ref, storage_path, format = "tar.gz", append_sha:)
raw_repository.archive_metadata(
ref,
storage_path,
project.path,
format,
- append_sha: append_sha,
- path: path
+ append_sha: append_sha
)
end
diff --git a/app/models/service.rb b/app/models/service.rb
index c6d5eb353dc..de549becf71 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -255,6 +255,7 @@ class Service < ApplicationRecord
external_wiki
flowdock
hangouts_chat
+ hipchat
irker
jira
kubernetes
diff --git a/app/models/u2f_registration.rb b/app/models/u2f_registration.rb
index b4645462314..81415eb383b 100644
--- a/app/models/u2f_registration.rb
+++ b/app/models/u2f_registration.rb
@@ -19,7 +19,7 @@ class U2fRegistration < ApplicationRecord
user: user,
name: params[:name])
rescue JSON::ParserError, NoMethodError, ArgumentError
- registration.errors.add(:base, 'Your U2F device did not send a valid JSON response.')
+ registration.errors.add(:base, _('Your U2F device did not send a valid JSON response.'))
rescue U2F::Error => e
registration.errors.add(:base, e.message)
end
diff --git a/app/models/upload.rb b/app/models/upload.rb
index 9bffdcdb2e7..ca74f16b3b8 100644
--- a/app/models/upload.rb
+++ b/app/models/upload.rb
@@ -45,7 +45,7 @@ class Upload < ApplicationRecord
end
def absolute_path
- raise ObjectStorage::RemoteStoreError, "Remote object has no absolute path." unless local?
+ raise ObjectStorage::RemoteStoreError, _("Remote object has no absolute path.") unless local?
return path unless relative_path?
uploader_class.absolute_path(self)
@@ -71,10 +71,10 @@ class Upload < ApplicationRecord
# Help sysadmins find missing upload files
if persisted? && !exist
if Gitlab::Sentry.enabled?
- Raven.capture_message("Upload file does not exist", extra: self.attributes)
+ Raven.capture_message(_("Upload file does not exist"), extra: self.attributes)
end
- Gitlab::Metrics.counter(:upload_file_does_not_exist_total, 'The number of times an upload record could not find its file').increment
+ Gitlab::Metrics.counter(:upload_file_does_not_exist_total, _('The number of times an upload record could not find its file')).increment
end
exist
diff --git a/app/models/user.rb b/app/models/user.rb
index d3524bfd6ae..551eb58a4de 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -517,7 +517,7 @@ class User < ApplicationRecord
def ghost
email = 'ghost%s@example.com'
unique_internal(where(ghost: true), 'ghost', email) do |u|
- u.bio = 'This is a "Ghost User", created to hold all issues authored by users that have since been deleted. This user cannot be removed.'
+ u.bio = _('This is a "Ghost User", created to hold all issues authored by users that have since been deleted. This user cannot be removed.')
u.name = 'Ghost User'
end
end
@@ -537,20 +537,16 @@ class User < ApplicationRecord
username
end
- def self.internal_attributes
- [:ghost]
- end
-
def internal?
- self.class.internal_attributes.any? { |a| self[a] }
+ ghost?
end
def self.internal
- where(Hash[internal_attributes.zip([true] * internal_attributes.size)])
+ where(ghost: true)
end
def self.non_internal
- where(internal_attributes.map { |attr| "#{attr} IS NOT TRUE" }.join(" AND "))
+ where('ghost IS NOT TRUE')
end
#
@@ -626,32 +622,32 @@ class User < ApplicationRecord
def namespace_move_dir_allowed
if namespace&.any_project_has_container_registry_tags?
- errors.add(:username, 'cannot be changed if a personal project has container registry tags.')
+ errors.add(:username, _('cannot be changed if a personal project has container registry tags.'))
end
end
def unique_email
if !emails.exists?(email: email) && Email.exists?(email: email)
- errors.add(:email, 'has already been taken')
+ errors.add(:email, _('has already been taken'))
end
end
def owns_notification_email
return if temp_oauth_email?
- errors.add(:notification_email, "is not an email you own") unless all_emails.include?(notification_email)
+ errors.add(:notification_email, _("is not an email you own")) unless all_emails.include?(notification_email)
end
def owns_public_email
return if public_email.blank?
- errors.add(:public_email, "is not an email you own") unless all_emails.include?(public_email)
+ errors.add(:public_email, _("is not an email you own")) unless all_emails.include?(public_email)
end
def owns_commit_email
return if read_attribute(:commit_email).blank?
- errors.add(:commit_email, "is not an email you own") unless verified_emails.include?(commit_email)
+ errors.add(:commit_email, _("is not an email you own")) unless verified_emails.include?(commit_email)
end
# Define commit_email-related attribute methods explicitly instead of relying
diff --git a/app/serializers/issue_board_entity.rb b/app/serializers/issue_board_entity.rb
index f7719447b92..e0041eff6cc 100644
--- a/app/serializers/issue_board_entity.rb
+++ b/app/serializers/issue_board_entity.rb
@@ -2,6 +2,7 @@
class IssueBoardEntity < Grape::Entity
include RequestAwareEntity
+ include TimeTrackableEntity
expose :id
expose :iid
diff --git a/app/services/clusters/applications/base_helm_service.rb b/app/services/clusters/applications/base_helm_service.rb
index adaa68b1efb..3e7f55f0c63 100644
--- a/app/services/clusters/applications/base_helm_service.rb
+++ b/app/services/clusters/applications/base_helm_service.rb
@@ -16,6 +16,7 @@ module Clusters
error_code: error.respond_to?(:error_code) ? error.error_code : nil,
service: self.class.name,
app_id: app.id,
+ app_name: app.name,
project_ids: app.cluster.project_ids,
group_ids: app.cluster.group_ids
}
@@ -30,6 +31,19 @@ module Clusters
Gitlab::Sentry.track_acceptable_exception(error, extra: meta)
end
+ def log_event(event)
+ meta = {
+ service: self.class.name,
+ app_id: app.id,
+ app_name: app.name,
+ project_ids: app.cluster.project_ids,
+ group_ids: app.cluster.group_ids,
+ event: event
+ }
+
+ logger.info(meta)
+ end
+
def logger
@logger ||= Gitlab::Kubernetes::Logger.build
end
diff --git a/app/services/clusters/applications/install_service.rb b/app/services/clusters/applications/install_service.rb
index 5bd3623a558..1f62b3eb4de 100644
--- a/app/services/clusters/applications/install_service.rb
+++ b/app/services/clusters/applications/install_service.rb
@@ -7,8 +7,10 @@ module Clusters
return unless app.scheduled?
app.make_installing!
+ log_event(:begin_install)
helm_api.install(install_command)
+ log_event(:schedule_wait_for_installation)
ClusterWaitForAppInstallationWorker.perform_in(
ClusterWaitForAppInstallationWorker::INTERVAL, app.name, app.id)
rescue Kubeclient::HttpError => e
diff --git a/app/services/clusters/applications/patch_service.rb b/app/services/clusters/applications/patch_service.rb
index 20c739af7a2..c3d317e226b 100644
--- a/app/services/clusters/applications/patch_service.rb
+++ b/app/services/clusters/applications/patch_service.rb
@@ -8,8 +8,10 @@ module Clusters
app.make_updating!
+ log_event(:begin_patch)
helm_api.update(update_command)
+ log_event(:schedule_wait_for_patch)
ClusterWaitForAppInstallationWorker.perform_in(
ClusterWaitForAppInstallationWorker::INTERVAL, app.name, app.id)
rescue Kubeclient::HttpError => e
diff --git a/app/services/clusters/applications/upgrade_service.rb b/app/services/clusters/applications/upgrade_service.rb
index a0ece1d2635..c34391bc8ad 100644
--- a/app/services/clusters/applications/upgrade_service.rb
+++ b/app/services/clusters/applications/upgrade_service.rb
@@ -9,10 +9,12 @@ module Clusters
begin
app.make_updating!
+ log_event(:begin_upgrade)
# install_command works with upgrades too
# as it basically does `helm upgrade --install`
helm_api.update(install_command)
+ log_event(:schedule_wait_for_upgrade)
ClusterWaitForAppInstallationWorker.perform_in(
ClusterWaitForAppInstallationWorker::INTERVAL, app.name, app.id)
rescue Kubeclient::HttpError => e
diff --git a/app/services/git/base_hooks_service.rb b/app/services/git/base_hooks_service.rb
index fce4040e390..a8478e3a904 100644
--- a/app/services/git/base_hooks_service.rb
+++ b/app/services/git/base_hooks_service.rb
@@ -51,6 +51,8 @@ module Git
end
def create_pipelines
+ return unless params.fetch(:create_pipelines, true)
+
Ci::CreatePipelineService
.new(project, current_user, push_data)
.execute(:push, pipeline_options)
diff --git a/app/services/groups/create_service.rb b/app/services/groups/create_service.rb
index 74aad3b1c94..8f1f25a7307 100644
--- a/app/services/groups/create_service.rb
+++ b/app/services/groups/create_service.rb
@@ -62,12 +62,16 @@ module Groups
end
def can_use_visibility_level?
- unless Gitlab::VisibilityLevel.allowed_for?(current_user, params[:visibility_level])
+ unless Gitlab::VisibilityLevel.allowed_for?(current_user, visibility_level)
deny_visibility_level(@group)
return false
end
true
end
+
+ def visibility_level
+ params[:visibility].present? ? Gitlab::VisibilityLevel.level_value(params[:visibility]) : params[:visibility_level]
+ end
end
end
diff --git a/app/services/merge_requests/push_options_handler_service.rb b/app/services/merge_requests/push_options_handler_service.rb
index d92eb0a68c3..a24163331e8 100644
--- a/app/services/merge_requests/push_options_handler_service.rb
+++ b/app/services/merge_requests/push_options_handler_service.rb
@@ -100,7 +100,7 @@ module MergeRequests
merge_request = ::MergeRequests::CreateService.new(
project,
current_user,
- merge_request.attributes
+ merge_request.attributes.merge(assignees: merge_request.assignees)
).execute
end
@@ -119,7 +119,7 @@ module MergeRequests
def create_params(branch)
params = {
- assignee: current_user,
+ assignees: [current_user],
source_branch: branch,
source_project: project,
target_branch: push_options[:target] || target_project.default_branch,
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 3723c5ef7d7..4ea40e3c8ce 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -159,8 +159,8 @@ module Projects
log_message << " Project ID: #{@project.id}" if @project&.id
Rails.logger.error(log_message)
- if @project
- @project.import_state.mark_as_failed(message) if @project.persisted? && @project.import?
+ if @project && @project.persisted? && @project.import_state
+ @project.import_state.mark_as_failed(message)
end
@project
diff --git a/app/validators/addressable_url_validator.rb b/app/validators/addressable_url_validator.rb
new file mode 100644
index 00000000000..273e15ef925
--- /dev/null
+++ b/app/validators/addressable_url_validator.rb
@@ -0,0 +1,112 @@
+# frozen_string_literal: true
+
+# AddressableUrlValidator
+#
+# Custom validator for URLs. This is a stricter version of UrlValidator - it also checks
+# for using the right protocol, but it actually parses the URL checking for any syntax errors.
+# The regex is also different from `URI` as we use `Addressable::URI` here.
+#
+# By default, only URLs for the HTTP(S) schemes will be considered valid.
+# Provide a `:schemes` option to configure accepted schemes.
+#
+# Example:
+#
+# class User < ActiveRecord::Base
+# validates :personal_url, addressable_url: true
+#
+# validates :ftp_url, addressable_url: { schemes: %w(ftp) }
+#
+# validates :git_url, addressable_url: { schemes: %w(http https ssh git) }
+# end
+#
+# This validator can also block urls pointing to localhost or the local network to
+# protect against Server-side Request Forgery (SSRF), or check for the right port.
+#
+# Configuration options:
+# * <tt>message</tt> - A custom error message (default is: "must be a valid URL").
+# * <tt>schemes</tt> - Array of URI schemes. Default: +['http', 'https']+
+# * <tt>allow_localhost</tt> - Allow urls pointing to +localhost+. Default: +true+
+# * <tt>allow_local_network</tt> - Allow urls pointing to private network addresses. Default: +true+
+# * <tt>allow_blank</tt> - Allow urls to be +blank+. Default: +false+
+# * <tt>allow_nil</tt> - Allow urls to be +nil+. Default: +false+
+# * <tt>ports</tt> - Allowed ports. Default: +all+.
+# * <tt>enforce_user</tt> - Validate user format. Default: +false+
+# * <tt>enforce_sanitization</tt> - Validate that there are no html/css/js tags. Default: +false+
+#
+# Example:
+# class User < ActiveRecord::Base
+# validates :personal_url, addressable_url: { allow_localhost: false, allow_local_network: false}
+#
+# validates :web_url, addressable_url: { ports: [80, 443] }
+# end
+class AddressableUrlValidator < ActiveModel::EachValidator
+ attr_reader :record
+
+ BLOCKER_VALIDATE_OPTIONS = {
+ schemes: %w(http https),
+ ports: [],
+ allow_localhost: true,
+ allow_local_network: true,
+ ascii_only: false,
+ enforce_user: false,
+ enforce_sanitization: false
+ }.freeze
+
+ DEFAULT_OPTIONS = BLOCKER_VALIDATE_OPTIONS.merge({
+ message: 'must be a valid URL'
+ }).freeze
+
+ def initialize(options)
+ options.reverse_merge!(DEFAULT_OPTIONS)
+
+ super(options)
+ end
+
+ def validate_each(record, attribute, value)
+ @record = record
+
+ unless value.present?
+ record.errors.add(attribute, options.fetch(:message))
+ return
+ end
+
+ value = strip_value!(record, attribute, value)
+
+ Gitlab::UrlBlocker.validate!(value, blocker_args)
+ rescue Gitlab::UrlBlocker::BlockedUrlError => e
+ record.errors.add(attribute, "is blocked: #{e.message}")
+ end
+
+ private
+
+ def strip_value!(record, attribute, value)
+ new_value = value.strip
+ return value if new_value == value
+
+ record.public_send("#{attribute}=", new_value) # rubocop:disable GitlabSecurity/PublicSend
+ end
+
+ def current_options
+ options.map do |option, value|
+ [option, value.is_a?(Proc) ? value.call(record) : value]
+ end.to_h
+ end
+
+ def blocker_args
+ current_options.slice(*BLOCKER_VALIDATE_OPTIONS.keys).tap do |args|
+ if self.class.allow_setting_local_requests?
+ args[:allow_localhost] = args[:allow_local_network] = true
+ end
+ end
+ end
+
+ def self.allow_setting_local_requests?
+ # We cannot use Gitlab::CurrentSettings as ApplicationSetting itself
+ # uses UrlValidator to validate urls. This ends up in a cycle
+ # when Gitlab::CurrentSettings creates an ApplicationSetting which then
+ # calls this validator.
+ #
+ # See https://gitlab.com/gitlab-org/gitlab-ee/issues/9833
+ ApplicationSetting.current&.allow_local_requests_from_hooks_and_services?
+ end
+end
diff --git a/app/validators/public_url_validator.rb b/app/validators/public_url_validator.rb
index 3ff880deedd..91847c5d866 100644
--- a/app/validators/public_url_validator.rb
+++ b/app/validators/public_url_validator.rb
@@ -2,7 +2,7 @@
# PublicUrlValidator
#
-# Custom validator for URLs. This validator works like UrlValidator but
+# Custom validator for URLs. This validator works like AddressableUrlValidator but
# it blocks by default urls pointing to localhost or the local network.
#
# This validator accepts the same params UrlValidator does.
@@ -12,17 +12,20 @@
# class User < ActiveRecord::Base
# validates :personal_url, public_url: true
#
-# validates :ftp_url, public_url: { protocols: %w(ftp) }
+# validates :ftp_url, public_url: { schemes: %w(ftp) }
#
# validates :git_url, public_url: { allow_localhost: true, allow_local_network: true}
# end
#
-class PublicUrlValidator < UrlValidator
- private
+class PublicUrlValidator < AddressableUrlValidator
+ DEFAULT_OPTIONS = {
+ allow_localhost: false,
+ allow_local_network: false
+ }.freeze
- def default_options
- # By default block all urls pointing to localhost or the local network
- super.merge(allow_localhost: false,
- allow_local_network: false)
+ def initialize(options)
+ options.reverse_merge!(DEFAULT_OPTIONS)
+
+ super(options)
end
end
diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb
deleted file mode 100644
index 3fd015c3cf5..00000000000
--- a/app/validators/url_validator.rb
+++ /dev/null
@@ -1,104 +0,0 @@
-# frozen_string_literal: true
-
-# UrlValidator
-#
-# Custom validator for URLs.
-#
-# By default, only URLs for the HTTP(S) protocols will be considered valid.
-# Provide a `:protocols` option to configure accepted protocols.
-#
-# Example:
-#
-# class User < ActiveRecord::Base
-# validates :personal_url, url: true
-#
-# validates :ftp_url, url: { protocols: %w(ftp) }
-#
-# validates :git_url, url: { protocols: %w(http https ssh git) }
-# end
-#
-# This validator can also block urls pointing to localhost or the local network to
-# protect against Server-side Request Forgery (SSRF), or check for the right port.
-#
-# The available options are:
-# - protocols: Allowed protocols. Default: http and https
-# - allow_localhost: Allow urls pointing to localhost. Default: true
-# - allow_local_network: Allow urls pointing to private network addresses. Default: true
-# - ports: Allowed ports. Default: all.
-# - enforce_user: Validate user format. Default: false
-# - enforce_sanitization: Validate that there are no html/css/js tags. Default: false
-#
-# Example:
-# class User < ActiveRecord::Base
-# validates :personal_url, url: { allow_localhost: false, allow_local_network: false}
-#
-# validates :web_url, url: { ports: [80, 443] }
-# end
-class UrlValidator < ActiveModel::EachValidator
- DEFAULT_PROTOCOLS = %w(http https).freeze
-
- attr_reader :record
-
- def validate_each(record, attribute, value)
- @record = record
-
- unless value.present?
- record.errors.add(attribute, 'must be a valid URL')
- return
- end
-
- value = strip_value!(record, attribute, value)
-
- Gitlab::UrlBlocker.validate!(value, blocker_args)
- rescue Gitlab::UrlBlocker::BlockedUrlError => e
- record.errors.add(attribute, "is blocked: #{e.message}")
- end
-
- private
-
- def strip_value!(record, attribute, value)
- new_value = value.strip
- return value if new_value == value
-
- record.public_send("#{attribute}=", new_value) # rubocop:disable GitlabSecurity/PublicSend
- end
-
- def default_options
- # By default the validator doesn't block any url based on the ip address
- {
- protocols: DEFAULT_PROTOCOLS,
- ports: [],
- allow_localhost: true,
- allow_local_network: true,
- ascii_only: false,
- enforce_user: false,
- enforce_sanitization: false
- }
- end
-
- def current_options
- options = self.options.map do |option, value|
- [option, value.is_a?(Proc) ? value.call(record) : value]
- end.to_h
-
- default_options.merge(options)
- end
-
- def blocker_args
- current_options.slice(*default_options.keys).tap do |args|
- if allow_setting_local_requests?
- args[:allow_localhost] = args[:allow_local_network] = true
- end
- end
- end
-
- def allow_setting_local_requests?
- # We cannot use Gitlab::CurrentSettings as ApplicationSetting itself
- # uses UrlValidator to validate urls. This ends up in a cycle
- # when Gitlab::CurrentSettings creates an ApplicationSetting which then
- # calls this validator.
- #
- # See https://gitlab.com/gitlab-org/gitlab-ee/issues/9833
- ApplicationSetting.current&.allow_local_requests_from_hooks_and_services?
- end
-end
diff --git a/app/views/clusters/clusters/show.html.haml b/app/views/clusters/clusters/show.html.haml
index 62b947ca40d..e38a16e7a1a 100644
--- a/app/views/clusters/clusters/show.html.haml
+++ b/app/views/clusters/clusters/show.html.haml
@@ -34,7 +34,7 @@
= render 'banner'
= render 'form'
- = render_if_exists 'health'
+ = render_if_exists 'projects/clusters/prometheus_graphs' if show_cluster_health_graphs?(@cluster)
.cluster-applications-table#js-cluster-applications
diff --git a/app/views/projects/_classification_policy_settings.html.haml b/app/views/projects/_classification_policy_settings.html.haml
index 57c7a718d53..5a766ab024f 100644
--- a/app/views/projects/_classification_policy_settings.html.haml
+++ b/app/views/projects/_classification_policy_settings.html.haml
@@ -1,8 +1,6 @@
- if ::Gitlab::ExternalAuthorization.enabled?
- .form-group
- = f.label :external_authorization_classification_label, class: 'label-bold' do
- = s_('ExternalAuthorizationService|Classification Label')
- %span.light (optional)
+ .form-group.col-md-9
+ = f.label :external_authorization_classification_label, _('Classification Label (optional)'), class: 'label-bold'
= f.text_field :external_authorization_classification_label, class: "form-control"
%span.form-text.text-muted
= external_classification_label_help_message
diff --git a/app/views/projects/_export.html.haml b/app/views/projects/_export.html.haml
index 409b6dba9ca..1056977886a 100644
--- a/app/views/projects/_export.html.haml
+++ b/app/views/projects/_export.html.haml
@@ -1,42 +1,33 @@
- return unless Gitlab::CurrentSettings.project_export_enabled?
- project = local_assigns.fetch(:project)
-- expanded = Rails.env.test?
-%section.settings.no-animate#js-export-project{ class: ('expanded' if expanded) }
- .settings-header
- %h4
- Export project
- %button.btn.js-settings-toggle{ type: 'button' }
- = expanded ? 'Collapse' : 'Expand'
- %p
- Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the "New Project" page.
- .settings-content
- .bs-callout.bs-callout-info
- %p.append-bottom-0
- %p
- The following items will be exported:
- %ul
- %li Project and wiki repositories
- %li Project uploads
- %li Project configuration, including services
- %li Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities
- %li LFS objects
- %p
- The following items will NOT be exported:
- %ul
- %li Job traces and artifacts
- %li Container registry images
- %li CI variables
- %li Webhooks
- %li Any encrypted tokens
- %p
- Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page.
- - if project.export_status == :finished
- = link_to 'Download export', download_export_project_path(project),
- rel: 'nofollow', download: '', method: :get, class: "btn btn-default"
- = link_to 'Generate new export', generate_new_export_project_path(project),
- method: :post, class: "btn btn-default"
- - else
- = link_to 'Export project', export_project_path(project),
- method: :post, class: "btn btn-default"
+.sub-section
+ %h4= _('Export project')
+ %p= _('Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the "New Project" page.')
+
+ .bs-callout.bs-callout-info
+ %p.append-bottom-0
+ %p= _('The following items will be exported:')
+ %ul
+ %li= _('Project and wiki repositories')
+ %li= _('Project uploads')
+ %li= _('Project configuration, including services')
+ %li= _('Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities')
+ %li= _('LFS objects')
+ %p= _('The following items will NOT be exported:')
+ %ul
+ %li= _('Job traces and artifacts')
+ %li= _('Container registry images')
+ %li= _('CI variables')
+ %li= _('Webhooks')
+ %li= _('Any encrypted tokens')
+ %p= _('Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page.')
+ - if project.export_status == :finished
+ = link_to _('Download export'), download_export_project_path(project),
+ rel: 'nofollow', download: '', method: :get, class: "btn btn-default"
+ = link_to _('Generate new export'), generate_new_export_project_path(project),
+ method: :post, class: "btn btn-default"
+ - else
+ = link_to _('Export project'), export_project_path(project),
+ method: :post, class: "btn btn-default"
diff --git a/app/views/projects/buttons/_download.html.haml b/app/views/projects/buttons/_download.html.haml
index acd63de2277..4eb53faa6ff 100644
--- a/app/views/projects/buttons/_download.html.haml
+++ b/app/views/projects/buttons/_download.html.haml
@@ -8,20 +8,30 @@
%span.sr-only= _('Select Archive Format')
= sprite_icon("arrow-down")
%ul.dropdown-menu.dropdown-menu-right{ role: 'menu' }
- %li.dropdown-bold-header= _('Download source code')
- %li.dropdown-menu-content
- = render 'projects/buttons/download_links', project: project, ref: ref, archive_prefix: archive_prefix, path: nil
- - if directory?
- %li.separator
- %li.dropdown-bold-header= _('Download this directory')
- %li.dropdown-menu-content
- = render 'projects/buttons/download_links', project: project, ref: ref, archive_prefix: archive_prefix, path: @path
+ %li.dropdown-header
+ #{ _('Source code') }
+ %li
+ = link_to project_archive_path(project, id: tree_join(ref, archive_prefix), format: 'zip'), rel: 'nofollow', download: '' do
+ %span= _('Download zip')
+ %li
+ = link_to project_archive_path(project, id: tree_join(ref, archive_prefix), format: 'tar.gz'), rel: 'nofollow', download: '' do
+ %span= _('Download tar.gz')
+ %li
+ = link_to project_archive_path(project, id: tree_join(ref, archive_prefix), format: 'tar.bz2'), rel: 'nofollow', download: '' do
+ %span= _('Download tar.bz2')
+ %li
+ = link_to project_archive_path(project, id: tree_join(ref, archive_prefix), format: 'tar'), rel: 'nofollow', download: '' do
+ %span= _('Download tar')
+
- if pipeline && pipeline.latest_builds_with_artifacts.any?
- %li.separator
- %li.dropdown-bold-header= _('Download artifacts')
+ %li.dropdown-header Artifacts
- unless pipeline.latest?
- %span.unclickable= ci_status_for_statuseable(project.pipeline_for(ref))
- %li.dropdown-header= _('Previous Artifacts')
+ - latest_pipeline = project.pipeline_for(ref)
+ %li
+ .unclickable= ci_status_for_statuseable(latest_pipeline)
+ %li.dropdown-header Previous Artifacts
- pipeline.latest_builds_with_artifacts.each do |job|
%li
- = link_to job.name, latest_succeeded_project_artifacts_path(project, "#{ref}/download", job: job.name), rel: 'nofollow', download: ''
+ = link_to latest_succeeded_project_artifacts_path(project, "#{ref}/download", job: job.name), rel: 'nofollow', download: '' do
+ %span
+ #{s_('DownloadArtifacts|Download')} '#{job.name}'
diff --git a/app/views/projects/buttons/_download_links.html.haml b/app/views/projects/buttons/_download_links.html.haml
deleted file mode 100644
index 47a1704f946..00000000000
--- a/app/views/projects/buttons/_download_links.html.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-%ul
- %li.d-inline-block.m-0.p-0
- = link_to 'zip', project_archive_path(project, id: tree_join(ref, archive_prefix), path: path, format: 'zip'), rel: 'nofollow', download: '', class: 'btn btn-primary btn-xs'
- %li.d-inline-block.m-0.p-0
- = link_to 'tar.gz', project_archive_path(project, id: tree_join(ref, archive_prefix), path: path, format: 'tar.gz'), rel: 'nofollow', download: '', class: 'btn btn-xs'
- %li.d-inline-block.m-0.p-0
- = link_to 'tar.bz2', project_archive_path(project, id: tree_join(ref, archive_prefix), path: path, format: 'tar.bz2'), rel: 'nofollow', download: '', class: 'btn btn-xs'
- %li.d-inline-block.m-0.p-0
- = link_to 'tar', project_archive_path(project, id: tree_join(ref, archive_prefix), path: path, format: 'tar'), rel: 'nofollow', download: '', class: 'btn btn-xs'
diff --git a/app/views/projects/deployments/_actions.haml b/app/views/projects/deployments/_actions.haml
index e45c5be76de..c84c376d57b 100644
--- a/app/views/projects/deployments/_actions.haml
+++ b/app/views/projects/deployments/_actions.haml
@@ -10,5 +10,5 @@
- actions.each do |action|
- next unless can?(current_user, :update_build, action)
%li
- = link_to [:play, @project.namespace.becomes(Namespace), @project, action], method: :post, rel: 'nofollow', class: 'btn' do
+ = link_to [:play, @project.namespace.becomes(Namespace), @project, action], method: :post, rel: 'nofollow' do
%span= action.name
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index abf2fb7dc57..1a3e4a5d608 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -3,210 +3,155 @@
- @content_class = "limit-container-width" unless fluid_layout
- expanded = Rails.env.test?
-.project-edit-container
- %section.settings.general-settings.no-animate#js-general-project-settings{ class: ('expanded' if expanded) }
- .settings-header
- %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Naming, tags, avatar')
- %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
- %p= _('Update your project name, tags, description and avatar.')
-
- .settings-content
- .project-edit-errors
- = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "edit-project" }, authenticity_token: true do |f|
- %input{ name: 'update_section', type: 'hidden', value: 'js-general-project-settings' }
- %fieldset
- .row
- .form-group.col-md-9
- = f.label :name, class: 'label-bold', for: 'project_name_edit' do
- Project name
- = f.text_field :name, class: "form-control", id: "project_name_edit"
-
- .form-group.col-md-3
- = f.label :id, class: 'label-bold' do
- Project ID
- = f.text_field :id, class: 'form-control', readonly: true
-
- .form-group
- = f.label :description, class: 'label-bold' do
- Project description
- %span.light (optional)
- = f.text_area :description, class: "form-control", rows: 3, maxlength: 250
-
- = render 'projects/classification_policy_settings', f: f
-
- = render_if_exists 'shared/repository_size_limit_setting', form: f, type: :project
-
- .form-group
- = f.label :tag_list, "Topics", class: 'label-bold'
- = f.text_field :tag_list, value: @project.tag_list.join(', '), maxlength: 2000, class: "form-control"
- %p.form-text.text-muted Separate topics with commas.
-
- .form-group.prepend-top-default.append-bottom-20
- .avatar-container.s90
- = project_icon(@project, alt: _('Project avatar'), class: 'avatar project-avatar s90')
- = f.label :avatar, _('Project avatar'), class: 'label-bold d-block'
- = render 'shared/choose_avatar_button', f: f
- - if @project.avatar?
- %hr
- = link_to _('Remove avatar'), project_avatar_path(@project), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'btn btn-link'
-
- = f.submit 'Save changes', class: "btn btn-success js-btn-success-general-project-settings"
-
- %section.settings.sharing-permissions.no-animate#js-shared-permissions{ class: ('expanded' if expanded) }
- .settings-header
- %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Visibility, project features, permissions')
- %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
- %p= _('Choose visibility level, enable/disable project features (issues, repository, wiki, snippets) and set permissions.')
-
- .settings-content
- = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "sharing-permissions-form" }, authenticity_token: true do |f|
- %input{ name: 'update_section', type: 'hidden', value: 'js-shared-permissions' }
- -# haml-lint:disable InlineJavaScript
- %script.js-project-permissions-form-data{ type: "application/json" }= project_permissions_panel_data_json(@project)
- .js-project-permissions-form
- = f.submit 'Save changes', class: "btn btn-success"
-
- = render_if_exists 'projects/issues_settings'
-
- %section.qa-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)] }
- .settings-header
- %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Merge requests')
- %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
- %p= _('Choose your merge method, set up a default merge request description template.')
-
- .settings-content
- = render_if_exists 'shared/promotions/promote_mr_features'
-
- = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "merge-request-settings-form" }, authenticity_token: true do |f|
- %input{ name: 'update_section', type: 'hidden', value: 'js-merge-request-settings' }
- = render 'projects/merge_request_settings', form: f
- = f.submit 'Save changes', class: "btn btn-success qa-save-merge-request-changes"
-
- = render_if_exists 'projects/merge_request_approvals_settings', expanded: expanded
-
-
- %section.settings.no-animate{ class: ('expanded' if expanded) }
- .settings-header
- %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
- = s_('ProjectSettings|Badges')
- %button.btn.js-settings-toggle{ type: 'button' }
- = expanded ? 'Collapse' : 'Expand'
- %p
- = s_('ProjectSettings|Customize your project badges.')
- = link_to s_('ProjectSettings|Learn more about badges.'), help_page_path('user/project/badges')
- .settings-content
- = render 'shared/badges/badge_settings'
-
- = render_if_exists 'projects/service_desk_settings'
- = render 'export', project: @project
-
- %section.qa-advanced-settings.settings.advanced-settings.no-animate#js-project-advanced-settings{ class: ('expanded' if expanded) }
- .settings-header
- %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Advanced')
- %button.btn.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
- %p= _('Housekeeping, export, path, transfer, remove, archive.')
-
- .settings-content
+%section.settings.general-settings.no-animate.expanded#js-general-settings
+ .settings-header
+ %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Naming, topics, avatar')
+ %button.btn.btn-default.js-settings-toggle{ type: 'button' }= _('Collapse')
+ %p= _('Update your project name, topics, description and avatar.')
+ .settings-content= render 'projects/settings/general'
+
+%section.settings.sharing-permissions.no-animate#js-shared-permissions{ class: ('expanded' if expanded) }
+ .settings-header
+ %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Visibility, project features, permissions')
+ %button.btn.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
+ %p= _('Choose visibility level, enable/disable project features (issues, repository, wiki, snippets) and set permissions.')
+
+ .settings-content
+ = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "sharing-permissions-form" }, authenticity_token: true do |f|
+ %input{ name: 'update_section', type: 'hidden', value: 'js-shared-permissions' }
+ %template.js-project-permissions-form-data{ type: "application/json" }= project_permissions_panel_data_json(@project)
+ .js-project-permissions-form
+ = f.submit _('Save changes'), class: "btn btn-success"
+
+%section.qa-merge-request-settings.settings.merge-requests-feature.no-animate#js-merge-request-settings{ class: [('expanded' if expanded), ('hidden' if @project.project_feature.send(:merge_requests_access_level) == 0)] }
+ .settings-header
+ %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Merge requests')
+ %button.btn.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
+ %p= _('Choose your merge method, set up a default merge request description template.')
+
+ .settings-content
+ = render_if_exists 'shared/promotions/promote_mr_features'
+
+ = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "merge-request-settings-form js-mr-settings-form" }, authenticity_token: true do |f|
+ %input{ name: 'update_section', type: 'hidden', value: 'js-merge-request-settings' }
+ = render 'projects/merge_request_settings', form: f
+ = f.submit _('Save changes'), class: "btn btn-success qa-save-merge-request-changes"
+
+= render_if_exists 'projects/merge_request_approvals_settings', expanded: expanded
+
+
+%section.settings.no-animate{ class: ('expanded' if expanded) }
+ .settings-header
+ %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
+ = s_('ProjectSettings|Badges')
+ %button.btn.btn-default.js-settings-toggle{ type: 'button' }
+ = expanded ? _('Collapse') : _('Expand')
+ %p
+ = s_('ProjectSettings|Customize your project badges.')
+ = link_to s_('ProjectSettings|Learn more about badges.'), help_page_path('user/project/badges')
+ .settings-content
+ = render 'shared/badges/badge_settings'
+
+= render_if_exists 'projects/settings/default_issue_template'
+
+= render_if_exists 'projects/service_desk_settings'
+
+%section.qa-advanced-settings.settings.advanced-settings.no-animate#js-project-advanced-settings{ class: ('expanded' if expanded) }
+ .settings-header
+ %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only= _('Advanced')
+ %button.btn.btn-default.js-settings-toggle{ type: 'button' }= expanded ? _('Collapse') : _('Expand')
+ %p= _('Housekeeping, export, path, transfer, remove, archive.')
+
+ .settings-content
+ .sub-section
+ %h4= _('Housekeeping')
+ %p= _('Runs a number of housekeeping tasks within the current repository, such as compressing file revisions and removing unreachable objects.')
+ = link_to _('Run housekeeping'), housekeeping_project_path(@project),
+ method: :post, class: "btn btn-default"
+
+ = render 'export', project: @project
+
+ - if can? current_user, :archive_project, @project
.sub-section
- %h4 Housekeeping
- %p
- Runs a number of housekeeping tasks within the current repository, such as compressing file revisions and removing unreachable objects.
- = link_to 'Run housekeeping', housekeeping_project_path(@project),
- method: :post, class: "btn btn-default"
- - if can? current_user, :archive_project, @project
- .sub-section
- %h4.warning-title
- - if @project.archived?
- Unarchive project
- - else
- Archive project
+ %h4.warning-title
- if @project.archived?
- %p
- Unarchiving the project will restore people's ability to make changes to it.
- The repository can be committed to, and issues, comments and other entities can be created.
- %strong Once active this project shows up in the search and on the dashboard.
- = link_to 'Unarchive project', unarchive_project_path(@project),
- data: { confirm: "Are you sure that you want to unarchive this project?" },
- method: :post, class: "btn btn-success"
+ = _('Unarchive project')
- else
- %p
- Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches.
- %strong The repository cannot be committed to, and no issues, comments or other entities can be created.
- = link_to 'Archive project', archive_project_path(@project),
- data: { confirm: "Are you sure that you want to archive this project?" },
- method: :post, class: "btn btn-warning"
- .sub-section.rename-repository
- %h4.warning-title
- Rename repository
- = render 'projects/errors'
- = form_for([@project.namespace.becomes(Namespace), @project]) do |f|
- .form-group.project_name_holder
- = f.label :name, class: 'label-bold' do
- Project name
- .form-group
- = f.text_field :name, class: "form-control"
+ = _('Archive project')
+ - if @project.archived?
+ %p= _("Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments and other entities can be created. <strong>Once active this project shows up in the search and on the dashboard.</strong>").html_safe
+ = link_to _('Unarchive project'), unarchive_project_path(@project),
+ data: { confirm: _("Are you sure that you want to unarchive this project?") },
+ method: :post, class: "btn btn-success"
+ - else
+ %p= _("Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>").html_safe
+ = link_to _('Archive project'), archive_project_path(@project),
+ data: { confirm: _("Are you sure that you want to archive this project?") },
+ method: :post, class: "btn btn-warning"
+ .sub-section.rename-repository
+ %h4.warning-title= _('Change path')
+ = render 'projects/errors'
+ = form_for([@project.namespace.becomes(Namespace), @project]) do |f|
+ .form-group
+ = f.label :path, _('Path'), class: 'label-bold'
+ .form-group
+ .input-group
+ .input-group-prepend
+ .input-group-text
+ #{Gitlab::Utils.append_path(root_url, @project.namespace.full_path)}/
+ = f.text_field :path, class: 'form-control qa-project-path-field h-auto'
+ %ul
+ %li= _("Be careful. Renaming a project's repository can have unintended side effects.")
+ %li= _('You will need to update your local repositories to point to the new location.')
+ - if @project.deployment_platform.present?
+ %li= _('Your deployment services will be broken, you will need to manually fix the services after renaming.')
+ = f.submit _('Change path'), class: "btn btn-warning qa-change-path-button"
+
+ - if can?(current_user, :change_namespace, @project)
+ .sub-section
+ %h4.danger-title= _('Transfer project')
+ = form_for([@project.namespace.becomes(Namespace), @project], url: transfer_project_path(@project), method: :put, remote: true, html: { class: 'js-project-transfer-form' } ) do |f|
.form-group
- = f.label :path, class: 'label-bold' do
- %span Path
+ = label_tag :new_namespace_id, nil, class: 'label-bold' do
+ %span= _('Select a new namespace')
.form-group
- .input-group
- .input-group-prepend
- .input-group-text
- #{Gitlab::Utils.append_path(root_url, @project.namespace.full_path)}/
- = f.text_field :path, class: 'form-control'
+ = select_tag :new_namespace_id, namespaces_options(nil), include_blank: true, class: 'select2'
%ul
- %li Be careful. Renaming a project's repository can have unintended side effects.
- %li You will need to update your local repositories to point to the new location.
- - if @project.deployment_platform.present?
- %li Your deployment services will be broken, you will need to manually fix the services after renaming.
- = f.submit 'Rename project', class: "btn btn-warning"
- - if can?(current_user, :change_namespace, @project)
- .sub-section
- %h4.danger-title
- Transfer project
- = form_for([@project.namespace.becomes(Namespace), @project], url: transfer_project_path(@project), method: :put, remote: true, html: { class: 'js-project-transfer-form' } ) do |f|
- .form-group
- = label_tag :new_namespace_id, nil, class: 'label-bold' do
- %span Select a new namespace
- .form-group
- = select_tag :new_namespace_id, namespaces_options(nil), include_blank: true, class: 'select2'
- %ul
- %li Be careful. Changing the project's namespace can have unintended side effects.
- %li You can only transfer the project to namespaces you manage.
- %li You will need to update your local repositories to point to the new location.
- %li Project visibility level will be changed to match namespace rules when transferring to a group.
- = f.submit 'Transfer project', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => transfer_project_message(@project) }
- - if @project.forked? && can?(current_user, :remove_fork_project, @project)
- .sub-section
- %h4.danger-title
- Remove fork relationship
+ %li= _("Be careful. Changing the project's namespace can have unintended side effects.")
+ %li= _('You can only transfer the project to namespaces you manage.')
+ %li= _('You will need to update your local repositories to point to the new location.')
+ %li= _('Project visibility level will be changed to match namespace rules when transferring to a group.')
+ = f.submit 'Transfer project', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => transfer_project_message(@project) }
+
+ - if @project.forked? && can?(current_user, :remove_fork_project, @project)
+ .sub-section
+ %h4.danger-title= _('Remove fork relationship')
+ %p
+ = _('This will remove the fork relationship to source project')
+ = succeed "." do
+ - if @project.fork_source
+ = link_to(fork_source_name(@project), project_path(@project.fork_source))
+ - else
+ = fork_source_name(@project)
+ = form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_project_path(@project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f|
%p
- This will remove the fork relationship to source project
- = succeed "." do
- - if @project.fork_source
- = link_to(fork_source_name(@project), project_path(@project.fork_source))
- - else
- = fork_source_name(@project)
- = form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_project_path(@project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f|
- %p
- %strong Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source.
- = button_to 'Remove fork relationship', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_message(@project) }
- - if can?(current_user, :remove_project, @project)
- .sub-section
- %h4.danger-title
- Remove project
+ %strong= _('Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source.')
+ = button_to _('Remove fork relationship'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_message(@project) }
+
+ - if can?(current_user, :remove_project, @project)
+ .sub-section
+ %h4.danger-title= _('Remove project')
+ %p= _('Removing the project will delete its repository and all related resources including issues, merge requests etc.')
+ = form_tag(project_path(@project), method: :delete) do
%p
- Removing the project will delete its repository and all related resources including issues, merge requests etc.
- = form_tag(project_path(@project), method: :delete) do
- %p
- %strong Removed projects cannot be restored!
- = button_to 'Remove project', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) }
+ %strong= _('Removed projects cannot be restored!')
+ = button_to _('Remove project'), '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) }
.save-project-loader.hide
.center
%h2
%i.fa.fa-spinner.fa-spin
- Saving project.
- %p Please wait a moment, this page will automatically refresh when ready.
+ = _('Saving project.')
+ %p= _('Please wait a moment, this page will automatically refresh when ready.')
= render 'shared/confirm_modal', phrase: @project.path
diff --git a/app/views/projects/environments/_form.html.haml b/app/views/projects/environments/_form.html.haml
index cbd5c54cecc..1fbe34cfff3 100644
--- a/app/views/projects/environments/_form.html.haml
+++ b/app/views/projects/environments/_form.html.haml
@@ -17,5 +17,5 @@
= f.url_field :external_url, class: 'form-control'
.form-actions
- = f.submit _('Save'), class: 'btn btn-save'
+ = f.submit _('Save'), class: 'btn btn-success'
= link_to _('Cancel'), project_environments_path(@project), class: 'btn btn-cancel'
diff --git a/app/views/projects/graphs/show.html.haml b/app/views/projects/graphs/show.html.haml
index f1b14d4c4d1..4b2417ff43b 100644
--- a/app/views/projects/graphs/show.html.haml
+++ b/app/views/projects/graphs/show.html.haml
@@ -22,6 +22,6 @@
= s_('ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits.') % { branch_name: @ref }
%input#brush_change{ :type => "hidden" }
.graphs.row
- #contributors-master
+ #contributors-master.svg-w-100
#contributors.clearfix
- %ol.contributors-list.row
+ %ol.contributors-list.svg-w-100.row
diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml
index 5111c9fab8d..79c586eef73 100644
--- a/app/views/projects/merge_requests/show.html.haml
+++ b/app/views/projects/merge_requests/show.html.haml
@@ -82,7 +82,8 @@
help_page_path: suggest_changes_help_path,
current_user_data: UserSerializer.new(project: @project).represent(current_user, {}, MergeRequestUserEntity).to_json,
project_path: project_path(@merge_request.project),
- changes_empty_state_illustration: image_path('illustrations/merge_request_changes_empty.svg') } }
+ changes_empty_state_illustration: image_path('illustrations/merge_request_changes_empty.svg'),
+ is_fluid_layout: fluid_layout.to_s } }
.mr-loading-status
= spinner
diff --git a/app/views/projects/settings/_general.html.haml b/app/views/projects/settings/_general.html.haml
new file mode 100644
index 00000000000..380430ff52b
--- /dev/null
+++ b/app/views/projects/settings/_general.html.haml
@@ -0,0 +1,42 @@
+= form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "edit-project js-general-settings-form" }, authenticity_token: true do |f|
+ %input{ name: 'update_section', type: 'hidden', value: 'js-general-settings' }
+ = form_errors(@project)
+
+ %fieldset
+ .row
+ .form-group.col-md-5
+ = f.label :name, class: 'label-bold', for: 'project_name_edit' do
+ = _('Project name')
+ = f.text_field :name, class: 'form-control qa-project-name-field', id: "project_name_edit"
+
+ .form-group.col-md-7
+ = f.label :id, class: 'label-bold' do
+ = _('Project ID')
+ = f.text_field :id, class: 'form-control w-auto', readonly: true
+
+ .row
+ .form-group.col-md-9
+ = f.label :tag_list, _('Topics'), class: 'label-bold'
+ = f.text_field :tag_list, value: @project.tag_list.join(', '), maxlength: 2000, class: "form-control"
+ %p.form-text.text-muted= _('Separate topics with commas.')
+
+ .row
+ .form-group.col-md-9
+ = f.label :description, _('Project description (optional)'), class: 'label-bold'
+ = f.text_area :description, class: 'form-control', rows: 3, maxlength: 250
+
+ .row= render_if_exists 'projects/classification_policy_settings', f: f
+
+ .row= render_if_exists 'shared/repository_size_limit_setting', form: f, type: :project
+
+ .form-group.prepend-top-default.append-bottom-20
+ .avatar-container.s90
+ = project_icon(@project, alt: _('Project avatar'), class: 'avatar project-avatar s90')
+ = f.label :avatar, _('Project avatar'), class: 'label-bold d-block'
+ = render 'shared/choose_avatar_button', f: f
+ - if @project.avatar?
+ %hr
+ = link_to _('Remove avatar'), project_avatar_path(@project), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'btn btn-link'
+
+
+ = f.submit _('Save changes'), class: "btn btn-success mt-4 qa-save-naming-topics-avatar-button"
diff --git a/app/views/shared/_confirm_modal.html.haml b/app/views/shared/_confirm_modal.html.haml
index 1dcf4369253..3967c8148d2 100644
--- a/app/views/shared/_confirm_modal.html.haml
+++ b/app/views/shared/_confirm_modal.html.haml
@@ -2,8 +2,7 @@
.modal-dialog
.modal-content
.modal-header
- %h3.page-title
- Confirmation required
+ %h3.page-title= _('Confirmation required')
%button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') }
%span{ "aria-hidden": true } &times;
@@ -11,8 +10,7 @@
%p.text-danger.js-confirm-text
%p
- This action can lead to data loss.
- To prevent accidental actions we ask you to confirm your intention.
+ %span.js-warning-text= _('This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention.')
%br
Please type
%code.js-confirm-danger-match= phrase
@@ -21,4 +19,4 @@
.form-group
= text_field_tag 'confirm_name_input', '', class: 'form-control js-confirm-danger-input'
.form-actions
- = submit_tag 'Confirm', class: "btn btn-danger js-confirm-danger-submit"
+ = submit_tag _('Confirm'), class: "btn btn-danger js-confirm-danger-submit"
diff --git a/app/workers/concerns/application_worker.rb b/app/workers/concerns/application_worker.rb
index d64c2f82a09..25c3a945077 100644
--- a/app/workers/concerns/application_worker.rb
+++ b/app/workers/concerns/application_worker.rb
@@ -53,7 +53,7 @@ module ApplicationWorker
schedule = now + delay.to_i
if schedule <= now
- raise ArgumentError, 'The schedule time must be in the future!'
+ raise ArgumentError, _('The schedule time must be in the future!')
end
Sidekiq::Client.push_bulk('class' => self, 'args' => args_list, 'at' => schedule)
diff --git a/app/workers/email_receiver_worker.rb b/app/workers/email_receiver_worker.rb
index bf637f82df2..c4bcda2da16 100644
--- a/app/workers/email_receiver_worker.rb
+++ b/app/workers/email_receiver_worker.rb
@@ -24,22 +24,22 @@ class EmailReceiverWorker
reason =
case error
when Gitlab::Email::UnknownIncomingEmail
- "We couldn't figure out what the email is for. Please create your issue or comment through the web interface."
+ s_("EmailError|We couldn't figure out what the email is for. Please create your issue or comment through the web interface.")
when Gitlab::Email::SentNotificationNotFoundError
- "We couldn't figure out what the email is in reply to. Please create your comment through the web interface."
+ s_("EmailError|We couldn't figure out what the email is in reply to. Please create your comment through the web interface.")
when Gitlab::Email::ProjectNotFound
- "We couldn't find the project. Please check if there's any typo."
+ s_("EmailError|We couldn't find the project. Please check if there's any typo.")
when Gitlab::Email::EmptyEmailError
can_retry = true
- "It appears that the email is blank. Make sure your reply is at the top of the email, we can't process inline replies."
+ s_("EmailError|It appears that the email is blank. Make sure your reply is at the top of the email, we can't process inline replies.")
when Gitlab::Email::UserNotFoundError
- "We couldn't figure out what user corresponds to the email. Please create your comment through the web interface."
+ s_("EmailError|We couldn't figure out what user corresponds to the email. Please create your comment through the web interface.")
when Gitlab::Email::UserBlockedError
- "Your account has been blocked. If you believe this is in error, contact a staff member."
+ s_("EmailError|Your account has been blocked. If you believe this is in error, contact a staff member.")
when Gitlab::Email::UserNotAuthorizedError
- "You are not allowed to perform this action. If you believe this is in error, contact a staff member."
+ s_("EmailError|You are not allowed to perform this action. If you believe this is in error, contact a staff member.")
when Gitlab::Email::NoteableNotFoundError
- "The thread you are replying to no longer exists, perhaps it was deleted? If you believe this is in error, contact a staff member."
+ s_("EmailError|The thread you are replying to no longer exists, perhaps it was deleted? If you believe this is in error, contact a staff member.")
when Gitlab::Email::InvalidAttachment
error.message
when Gitlab::Email::InvalidRecordError
diff --git a/app/workers/object_storage/migrate_uploads_worker.rb b/app/workers/object_storage/migrate_uploads_worker.rb
index 206eb71b898..12400d4e025 100644
--- a/app/workers/object_storage/migrate_uploads_worker.rb
+++ b/app/workers/object_storage/migrate_uploads_worker.rb
@@ -20,7 +20,7 @@ module ObjectStorage
end
def to_s
- success? ? "Migration successful." : "Error while migrating #{upload.id}: #{error.message}"
+ success? ? _("Migration successful.") : _("Error while migrating %{upload_id}: %{error_message}") % { upload_id: upload.id, error_message: error.message }
end
end
@@ -47,7 +47,7 @@ module ObjectStorage
end
def header(success, failures)
- "Migrated #{success.count}/#{success.count + failures.count} files."
+ _("Migrated %{success_count}/%{total_count} files.") % { success_count: success.count, total_count: success.count + failures.count }
end
def failures(failures)
@@ -75,9 +75,9 @@ module ObjectStorage
model_types = uploads.map(&:model_type).uniq
model_has_mount = mounted_as.nil? || model_class.uploaders[mounted_as] == uploader_class
- raise(SanityCheckError, "Multiple uploaders found: #{uploader_types}") unless uploader_types.count == 1
- raise(SanityCheckError, "Multiple model types found: #{model_types}") unless model_types.count == 1
- raise(SanityCheckError, "Mount point #{mounted_as} not found in #{model_class}.") unless model_has_mount
+ raise(SanityCheckError, _("Multiple uploaders found: %{uploader_types}") % { uploader_types: uploader_types }) unless uploader_types.count == 1
+ raise(SanityCheckError, _("Multiple model types found: %{model_types}") % { model_types: model_types }) unless model_types.count == 1
+ raise(SanityCheckError, _("Mount point %{mounted_as} not found in %{model_class}.") % { mounted_as: mounted_as, model_class: model_class }) unless model_has_mount
end
# rubocop: disable CodeReuse/ActiveRecord
@@ -110,9 +110,9 @@ module ObjectStorage
return if args.count == 4
case args.count
- when 3 then raise SanityCheckError, "Job is missing the `model_type` argument."
+ when 3 then raise SanityCheckError, _("Job is missing the `model_type` argument.")
else
- raise SanityCheckError, "Job has wrong arguments format."
+ raise SanityCheckError, _("Job has wrong arguments format.")
end
end
diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb
index a5554f07699..337efa7919b 100644
--- a/app/workers/post_receive.rb
+++ b/app/workers/post_receive.rb
@@ -3,6 +3,8 @@
class PostReceive
include ApplicationWorker
+ PIPELINE_PROCESS_LIMIT = 4
+
def perform(gl_repository, identifier, changes, push_options = {})
project, repo_type = Gitlab::GlRepository.parse(gl_repository)
@@ -36,23 +38,24 @@ class PostReceive
return false
end
- post_received.changes_refs do |oldrev, newrev, ref|
- if Gitlab::Git.tag_ref?(ref)
- Git::TagPushService.new(
- post_received.project,
- @user,
- oldrev: oldrev,
- newrev: newrev,
- ref: ref,
- push_options: post_received.push_options).execute
- elsif Gitlab::Git.branch_ref?(ref)
- Git::BranchPushService.new(
+ post_received.enum_for(:changes_refs).with_index do |(oldrev, newrev, ref), index|
+ service_klass =
+ if Gitlab::Git.tag_ref?(ref)
+ Git::TagPushService
+ elsif Gitlab::Git.branch_ref?(ref)
+ Git::BranchPushService
+ end
+
+ if service_klass
+ service_klass.new(
post_received.project,
@user,
oldrev: oldrev,
newrev: newrev,
ref: ref,
- push_options: post_received.push_options).execute
+ push_options: post_received.push_options,
+ create_pipelines: index < PIPELINE_PROCESS_LIMIT || Feature.enabled?(:git_push_create_all_pipelines, post_received.project)
+ ).execute
end
changes << Gitlab::DataBuilder::Repository.single_change(oldrev, newrev, ref)
diff --git a/changelogs/unreleased/24704-download-repository-path.yml b/changelogs/unreleased/24704-download-repository-path.yml
deleted file mode 100644
index ff3082bec45..00000000000
--- a/changelogs/unreleased/24704-download-repository-path.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Download a folder from repository
-merge_request: 26532
-author: kiameisomabes
-type: added
diff --git a/changelogs/unreleased/24985-align-urlvalidator-to-validate_url-gem-implementation.yml b/changelogs/unreleased/24985-align-urlvalidator-to-validate_url-gem-implementation.yml
new file mode 100644
index 00000000000..1143e4effea
--- /dev/null
+++ b/changelogs/unreleased/24985-align-urlvalidator-to-validate_url-gem-implementation.yml
@@ -0,0 +1,5 @@
+---
+title: "Align UrlValidator to validate_url gem implementation"
+merge_request: 27194
+author: Horatiu Eugen Vlad
+type: fixed
diff --git a/changelogs/unreleased/47327-fix-github-import-visibility.yml b/changelogs/unreleased/47327-fix-github-import-visibility.yml
new file mode 100644
index 00000000000..b02318f0e89
--- /dev/null
+++ b/changelogs/unreleased/47327-fix-github-import-visibility.yml
@@ -0,0 +1,5 @@
+---
+title: Fix GitHub project import visibility
+merge_request: 27133
+author: Daniel Wyatt
+type: fixed
diff --git a/changelogs/unreleased/60224-btn-env.yml b/changelogs/unreleased/60224-btn-env.yml
new file mode 100644
index 00000000000..5053ddb31fa
--- /dev/null
+++ b/changelogs/unreleased/60224-btn-env.yml
@@ -0,0 +1,5 @@
+---
+title: Fixes actions dropdowns in environments page
+merge_request: 27160
+author:
+type: fixed
diff --git a/changelogs/unreleased/60261-save-btn-env.yml b/changelogs/unreleased/60261-save-btn-env.yml
new file mode 100644
index 00000000000..b0936198d2e
--- /dev/null
+++ b/changelogs/unreleased/60261-save-btn-env.yml
@@ -0,0 +1,5 @@
+---
+title: Fixes create button background for Environments form
+merge_request: 27161
+author:
+type: fixed
diff --git a/changelogs/unreleased/60304-long-file-names-in-mr-diffs-cause-horizontal-scrolling.yml b/changelogs/unreleased/60304-long-file-names-in-mr-diffs-cause-horizontal-scrolling.yml
new file mode 100644
index 00000000000..ec5e9e4703b
--- /dev/null
+++ b/changelogs/unreleased/60304-long-file-names-in-mr-diffs-cause-horizontal-scrolling.yml
@@ -0,0 +1,5 @@
+---
+title: Fix long file header names bug in diffs
+merge_request: 27233
+author:
+type: fixed
diff --git a/changelogs/unreleased/allow-to-use-untrusted-ruby-syntax.yml b/changelogs/unreleased/allow-to-use-untrusted-ruby-syntax.yml
deleted file mode 100644
index 731c9c10b00..00000000000
--- a/changelogs/unreleased/allow-to-use-untrusted-ruby-syntax.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Allow to use untrusted Regexp via feature flag
-merge_request: 26905
-author:
-type: deprecated
diff --git a/changelogs/unreleased/fix-api-group-visibility.yml b/changelogs/unreleased/fix-api-group-visibility.yml
new file mode 100644
index 00000000000..7fbdcd729c6
--- /dev/null
+++ b/changelogs/unreleased/fix-api-group-visibility.yml
@@ -0,0 +1,5 @@
+---
+title: Fix api group visibility
+merge_request: 26896
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-pull-request-importer.yml b/changelogs/unreleased/fix-pull-request-importer.yml
deleted file mode 100644
index 5f642a0710b..00000000000
--- a/changelogs/unreleased/fix-pull-request-importer.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Improve performance of PR import
-merge_request: 27121
-author:
-type: performance
diff --git a/changelogs/unreleased/fixed-web-ide-merge-request-review.yml b/changelogs/unreleased/fixed-web-ide-merge-request-review.yml
new file mode 100644
index 00000000000..2799f5ee38a
--- /dev/null
+++ b/changelogs/unreleased/fixed-web-ide-merge-request-review.yml
@@ -0,0 +1,5 @@
+---
+title: Fixed Web IDE not loading merge request files
+merge_request:
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-bump-workhorse-version-8-6-0.yml b/changelogs/unreleased/fj-bump-workhorse-version-8-6-0.yml
new file mode 100644
index 00000000000..e53499e21ba
--- /dev/null
+++ b/changelogs/unreleased/fj-bump-workhorse-version-8-6-0.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Workhorse to v8.6.0
+merge_request: 27260
+author:
+type: fixed
diff --git a/changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml b/changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml
new file mode 100644
index 00000000000..94e5b4a81b7
--- /dev/null
+++ b/changelogs/unreleased/jc-guard-against-empty-dereferenced_target.yml
@@ -0,0 +1,5 @@
+---
+title: Guard against nil dereferenced_target
+merge_request: 27192
+author:
+type: fixed
diff --git a/changelogs/unreleased/limit-amount-of-created-pipelines.yml b/changelogs/unreleased/limit-amount-of-created-pipelines.yml
new file mode 100644
index 00000000000..51fdbb4d7ff
--- /dev/null
+++ b/changelogs/unreleased/limit-amount-of-created-pipelines.yml
@@ -0,0 +1,5 @@
+---
+title: Process at most 4 pipelines during push
+merge_request: 27205
+author:
+type: performance
diff --git a/changelogs/unreleased/sh-optimize-projects-api.yml b/changelogs/unreleased/sh-optimize-projects-api.yml
deleted file mode 100644
index 2f2459be77f..00000000000
--- a/changelogs/unreleased/sh-optimize-projects-api.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Optimize /api/v4/projects endpoint for visibility level
-merge_request: 26481
-author:
-type: performance
diff --git a/changelogs/unreleased/update-workhorse-8-5-1.yml b/changelogs/unreleased/update-workhorse-8-5-1.yml
new file mode 100644
index 00000000000..18193701678
--- /dev/null
+++ b/changelogs/unreleased/update-workhorse-8-5-1.yml
@@ -0,0 +1,5 @@
+---
+title: Update GitLab Workhorse to v8.5.1
+merge_request: 27217
+author:
+type: fixed
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 8d9b6624995..bdac5b2a6a1 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -7,7 +7,8 @@
# * are being moved to ApplicationSetting model! #
# If a setting requires an application restart say so in that screen. #
# If you change this file in a Merge Request, please also create #
-# a MR on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests #
+# a MR on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests. #
+# For more details see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/0928cfb09f43993fd9454b0b14dbd1924b1407bc/doc/settings/gitlab.yml.md #
########################################################################
#
#
diff --git a/config/initializers/hipchat_client_patch.rb b/config/initializers/hipchat_client_patch.rb
new file mode 100644
index 00000000000..1879ecb15fb
--- /dev/null
+++ b/config/initializers/hipchat_client_patch.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+# This monkey patches the HTTParty used in https://github.com/hipchat/hipchat-rb.
+module HipChat
+ class Client
+ connection_adapter ::Gitlab::ProxyHTTPConnectionAdapter
+ end
+
+ class Room
+ connection_adapter ::Gitlab::ProxyHTTPConnectionAdapter
+ end
+
+ class User
+ connection_adapter ::Gitlab::ProxyHTTPConnectionAdapter
+ end
+end
diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb
index 151cad3ef9a..5aa6f73c5c5 100644
--- a/config/initializers/zz_metrics.rb
+++ b/config/initializers/zz_metrics.rb
@@ -30,7 +30,6 @@ def instrument_classes(instrumentation)
# are included.
%w(app services [^concerns]**) => %w(app services),
%w(lib gitlab conflicts) => ['lib'],
- %w(lib gitlab diff) => ['lib'],
%w(lib gitlab email message) => ['lib'],
%w(lib gitlab checks) => ['lib']
}
diff --git a/db/fixtures/development/02_application_settings.rb b/db/fixtures/development/02_application_settings.rb
index d604f0be3cd..7cdc8e40b69 100644
--- a/db/fixtures/development/02_application_settings.rb
+++ b/db/fixtures/development/02_application_settings.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
puts "Creating the default ApplicationSetting record.".color(:green)
-Gitlab::CurrentSettings.current_application_settings
+ApplicationSetting.create_from_defaults
# Details https://gitlab.com/gitlab-org/gitlab-ce/issues/46241
puts "Enable hashed storage for every new projects.".color(:green)
diff --git a/db/migrate/20190107151029_remove_hipchat_services.rb b/db/migrate/20190107151029_remove_hipchat_services.rb
deleted file mode 100644
index 4741ec88907..00000000000
--- a/db/migrate/20190107151029_remove_hipchat_services.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-# See http://doc.gitlab.com/ce/development/migration_style_guide.html
-# for more information on how to write migrations for GitLab.
-
-class RemoveHipchatServices < ActiveRecord::Migration[5.0]
- DOWNTIME = false
-
- def up
- execute "DELETE FROM services WHERE type = 'HipchatService'"
- end
-
- def down
- # no-op
- end
-end
diff --git a/doc/administration/high_availability/nfs.md b/doc/administration/high_availability/nfs.md
index f406163aea0..72341a5c777 100644
--- a/doc/administration/high_availability/nfs.md
+++ b/doc/administration/high_availability/nfs.md
@@ -145,7 +145,6 @@ mountpoint
└── gitlab-data
├── builds
├── git-data
- ├── home-git
├── shared
└── uploads
```
@@ -158,16 +157,11 @@ configuration to move each data location to a subdirectory:
```ruby
git_data_dirs({"default" => { "path" => "/gitlab-nfs/gitlab-data/git-data"} })
-user['home'] = '/gitlab-nfs/gitlab-data/home'
gitlab_rails['uploads_directory'] = '/gitlab-nfs/gitlab-data/uploads'
gitlab_rails['shared_path'] = '/gitlab-nfs/gitlab-data/shared'
gitlab_ci['builds_directory'] = '/gitlab-nfs/gitlab-data/builds'
```
-To move the `git` home directory, all GitLab services must be stopped. Run
-`gitlab-ctl stop && initctl stop gitlab-runsvdir`. Then continue with the
-reconfigure.
-
Run `sudo gitlab-ctl reconfigure` to start using the central location. Please
be aware that if you had existing data you will need to manually copy/rsync it
to these new locations and then restart GitLab.
@@ -197,14 +191,13 @@ are empty before attempting a restore. Read more about the
## Multiple NFS mounts
-When using default Omnibus configuration you will need to share 5 data locations
+When using default Omnibus configuration you will need to share 4 data locations
between all GitLab cluster nodes. No other locations should be shared. The
-following are the 5 locations need to be shared:
+following are the 4 locations need to be shared:
| Location | Description | Default configuration |
| -------- | ----------- | --------------------- |
| `/var/opt/gitlab/git-data` | Git repository data. This will account for a large portion of your data | `git_data_dirs({"default" => { "path" => "/var/opt/gitlab/git-data"} })`
-| `/var/opt/gitlab/.ssh` | SSH `authorized_keys` file and keys used to import repositories from some other Git services | `user['home'] = '/var/opt/gitlab/'`
| `/var/opt/gitlab/gitlab-rails/uploads` | User uploaded attachments | `gitlab_rails['uploads_directory'] = '/var/opt/gitlab/gitlab-rails/uploads'`
| `/var/opt/gitlab/gitlab-rails/shared` | Build artifacts, GitLab Pages, LFS objects, temp files, etc. If you're using LFS this may also account for a large portion of your data | `gitlab_rails['shared_path'] = '/var/opt/gitlab/gitlab-rails/shared'`
| `/var/opt/gitlab/gitlab-ci/builds` | GitLab CI build traces | `gitlab_ci['builds_directory'] = '/var/opt/gitlab/gitlab-ci/builds'`
diff --git a/doc/administration/housekeeping.md b/doc/administration/housekeeping.md
index 058346df56d..1b01419e062 100644
--- a/doc/administration/housekeeping.md
+++ b/doc/administration/housekeeping.md
@@ -30,7 +30,7 @@ the `pushes_since_gc` value is 200 a `git gc` will be run.
`git add`.
- `git repack` ([man page][man-repack]) re-organize existing packs into a single, more efficient pack.
-You can find this option under your **[Project] > Edit Project**.
+You can find this option under your project's **Settings > General > Advanced**.
---
diff --git a/doc/administration/img/housekeeping_settings.png b/doc/administration/img/housekeeping_settings.png
index acc4506993a..356de51f0cc 100644
--- a/doc/administration/img/housekeeping_settings.png
+++ b/doc/administration/img/housekeeping_settings.png
Binary files differ
diff --git a/doc/administration/integration/terminal.md b/doc/administration/integration/terminal.md
index 25d85d1687b..2596e3fe68b 100644
--- a/doc/administration/integration/terminal.md
+++ b/doc/administration/integration/terminal.md
@@ -11,7 +11,7 @@ One of the things it uses these credentials for is providing access to
## How it works
A detailed overview of the architecture of web terminals and how they work
-can be found in [this document](https://gitlab.com/gitlab-org/gitlab-workhorse/blob/master/doc/terminal.md).
+can be found in [this document](https://gitlab.com/gitlab-org/gitlab-workhorse/blob/master/doc/channel.md).
In brief:
- GitLab relies on the user to provide their own Kubernetes credentials, and to
diff --git a/doc/administration/operations/fast_ssh_key_lookup.md b/doc/administration/operations/fast_ssh_key_lookup.md
index c293df3fc57..f8d58c6ce28 100644
--- a/doc/administration/operations/fast_ssh_key_lookup.md
+++ b/doc/administration/operations/fast_ssh_key_lookup.md
@@ -58,6 +58,9 @@ sudo service sshd reload
Confirm that SSH is working by removing your user's SSH key in the UI, adding a
new one, and attempting to pull a repo.
+> **Note:** For Omnibus Docker, `AuthorizedKeysCommand` is setup by default in
+GitLab 11.11 and later.
+
> **Warning:** Do not disable writes until SSH is confirmed to be working
perfectly, because the file will quickly become out-of-date.
diff --git a/doc/api/services.md b/doc/api/services.md
index 1f84e2de7de..e8ae7ff78f4 100644
--- a/doc/api/services.md
+++ b/doc/api/services.md
@@ -449,6 +449,45 @@ Get Hangouts Chat service settings for a project.
GET /projects/:id/services/hangouts-chat
```
+## HipChat
+
+Private group chat and IM
+
+### Create/Edit HipChat service
+
+Set HipChat service for a project.
+
+```
+PUT /projects/:id/services/hipchat
+```
+
+Parameters:
+
+| Parameter | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `token` | string | true | Room token |
+| `color` | string | false | The room color |
+| `notify` | boolean | false | Enable notifications |
+| `room` | string | false |Room name or ID |
+| `api_version` | string | false | Leave blank for default (v2) |
+| `server` | string | false | Leave blank for default. For example, `https://hipchat.example.com`. |
+
+### Delete HipChat service
+
+Delete HipChat service for a project.
+
+```
+DELETE /projects/:id/services/hipchat
+```
+
+### Get HipChat service settings
+
+Get HipChat service settings for a project.
+
+```
+GET /projects/:id/services/hipchat
+```
+
## Irker (IRC gateway)
Send IRC messages, on update, to a list of recipients through an Irker gateway.
diff --git a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
index 1a909e8892a..4a5fda661df 100644
--- a/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
+++ b/doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
@@ -11,7 +11,7 @@ last_updated: 2019-03-06
[Phoenix][phoenix-site] is a web development framework written in [Elixir][elixir-site], which is a
functional language designed for productivity and maintainability that runs on the
-[Erlang VM][erlang-site]. Erlang VM is really really fast and can handle very large numbers of
+[Erlang VM](https://www.erlang.org). Erlang VM is really really fast and can handle very large numbers of
simultaneous users.
That's why we're hearing so much about Phoenix today.
@@ -27,7 +27,7 @@ and GitLab UI._
### What is Phoenix?
[Phoenix][phoenix-site] is a web development framework written in [Elixir][elixir-site] very useful
- to build fast, reliable, and high-performance applications, as it uses [Erlang VM][erlang-site].
+ to build fast, reliable, and high-performance applications, as it uses [Erlang VM](https://www.erlang.org).
Many components and concepts are similar to Ruby on Rails or Python's Django. High developer
productivity and high application performance are only a few advantages on learning how to use it.
@@ -406,7 +406,6 @@ other reasons][ci-reasons] to keep using GitLab CI/CD. The benefits to our teams
[elixir-site]: http://elixir-lang.org/ "Elixir"
[elixir-mix]: http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html "Introduction to mix"
[elixir-docs]: http://elixir-lang.org/getting-started/introduction.html "Elixir Documentation"
-[erlang-site]: http://erlang.org "Erlang"
[elixir-install]: https://elixir-lang.org/install.html "Elixir Installation"
[ecto]: http://hexdocs.pm/ecto "Ecto"
[ecto-repo]: https://hexdocs.pm/ecto/Ecto.html#module-repositories "Ecto Repositories"
diff --git a/doc/ci/introduction/img/job_running.png b/doc/ci/introduction/img/job_running.png
index d5f922ceb8c..d5f922ceb8c 100755..100644
--- a/doc/ci/introduction/img/job_running.png
+++ b/doc/ci/introduction/img/job_running.png
Binary files differ
diff --git a/doc/ci/introduction/img/pipeline_status.png b/doc/ci/introduction/img/pipeline_status.png
index 96881f072e1..96881f072e1 100755..100644
--- a/doc/ci/introduction/img/pipeline_status.png
+++ b/doc/ci/introduction/img/pipeline_status.png
Binary files differ
diff --git a/doc/ci/introduction/img/rollback.png b/doc/ci/introduction/img/rollback.png
index 38e0552f4f1..38e0552f4f1 100755..100644
--- a/doc/ci/introduction/img/rollback.png
+++ b/doc/ci/introduction/img/rollback.png
Binary files differ
diff --git a/doc/ci/variables/img/ci_job_stage_output_example.png b/doc/ci/variables/img/ci_job_stage_output_example.png
index 056238d5693..056238d5693 100755..100644
--- a/doc/ci/variables/img/ci_job_stage_output_example.png
+++ b/doc/ci/variables/img/ci_job_stage_output_example.png
Binary files differ
diff --git a/doc/ci/variables/img/custom_variable_output.png b/doc/ci/variables/img/custom_variable_output.png
index 50f3bceff9a..50f3bceff9a 100755..100644
--- a/doc/ci/variables/img/custom_variable_output.png
+++ b/doc/ci/variables/img/custom_variable_output.png
Binary files differ
diff --git a/doc/ci/variables/img/new_custom_variable_example.png b/doc/ci/variables/img/new_custom_variable_example.png
index d169c5f1806..d169c5f1806 100755..100644
--- a/doc/ci/variables/img/new_custom_variable_example.png
+++ b/doc/ci/variables/img/new_custom_variable_example.png
Binary files differ
diff --git a/doc/ci/variables/img/override_value_via_manual_pipeline_output.png b/doc/ci/variables/img/override_value_via_manual_pipeline_output.png
index 02369d57fb8..02369d57fb8 100755..100644
--- a/doc/ci/variables/img/override_value_via_manual_pipeline_output.png
+++ b/doc/ci/variables/img/override_value_via_manual_pipeline_output.png
Binary files differ
diff --git a/doc/ci/variables/img/override_variable_manual_pipeline.png b/doc/ci/variables/img/override_variable_manual_pipeline.png
index 3bcd354e096..3bcd354e096 100755..100644
--- a/doc/ci/variables/img/override_variable_manual_pipeline.png
+++ b/doc/ci/variables/img/override_variable_manual_pipeline.png
Binary files differ
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md
index 5e44de13b51..36a0bf10416 100644
--- a/doc/ci/yaml/README.md
+++ b/doc/ci/yaml/README.md
@@ -437,10 +437,6 @@ Feature.enable(:allow_unsafe_ruby_regexp)
### `only`/`except` (advanced)
-> - `refs` and `kubernetes` policies introduced in GitLab 10.0.
-> - `variables` policy introduced in GitLab 10.7.
-> - `changes` policy [introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/19232) in GitLab 11.4.
-
CAUTION: **Warning:**
This an _alpha_ feature, and it is subject to change at any time without
prior notice!
@@ -461,6 +457,8 @@ If you use multiple keys under `only` or `except`, they act as an AND. The logic
#### `only:refs`/`except:refs`
+> `refs` policy introduced in GitLab 10.0.
+
The `refs` strategy can take the same values as the
[simplified only/except configuration](#onlyexcept-basic).
@@ -477,6 +475,8 @@ deploy:
#### `only:kubernetes`/`except:kubernetes`
+> `kubernetes` policy introduced in GitLab 10.0.
+
The `kubernetes` strategy accepts only the `active` keyword.
In the example below, the `deploy` job is going to be created only when the
@@ -490,6 +490,8 @@ deploy:
#### `only:variables`/`except:variables`
+> `variables` policy introduced in GitLab 10.7.
+
The `variables` keyword is used to define variables expressions. In other words,
you can use predefined variables / project / group or
environment-scoped variables to define an expression GitLab is going to
@@ -522,6 +524,8 @@ Learn more about [variables expressions](../variables/README.md#environment-vari
#### `only:changes`/`except:changes`
+> `changes` policy [introduced][ce-19232] in GitLab 11.4.
+
Using the `changes` keyword with `only` or `except` makes it possible to define if
a job should be created based on files modified by a git push event.
@@ -2697,6 +2701,15 @@ Not to be confused with [`trigger`](#trigger-premium).
[Read more in the triggers documentation.](../triggers/README.md)
+## Processing Git pushes
+
+GitLab will create at most 4 branch and tags pipelines when
+doing pushing multiple changes in single `git push` invocation.
+
+This limitation does not affect any of the updated Merge Request pipelines,
+all updated Merge Requests will have a pipeline created when using
+[pipelines for merge requests](../merge_request_pipelines/index.md).
+
## Skipping jobs
If your commit message contains `[ci skip]` or `[skip ci]`, using any
@@ -2714,6 +2727,7 @@ git push -o ci.skip
[ce-7983]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7983
[ce-7447]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7447
[ce-12909]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12909
+[ce-19232]: https://gitlab.com/gitlab-org/gitlab-ce/issues/19232
[environment]: ../environments.md "CI/CD environments"
[schedules]: ../../user/project/pipelines/schedules.md "Pipelines schedules"
[variables]: ../variables/README.md "CI/CD variables"
diff --git a/doc/development/contributing/index.md b/doc/development/contributing/index.md
index b39c302453b..8b1d014e101 100644
--- a/doc/development/contributing/index.md
+++ b/doc/development/contributing/index.md
@@ -3,9 +3,6 @@
Thank you for your interest in contributing to GitLab. This guide details how
to contribute to GitLab in a way that is easy for everyone.
-We want to create a welcoming environment for everyone who is interested in contributing.
-Please visit our [Code of Conduct page](https://about.gitlab.com/contributing/code-of-conduct) to learn more about our commitment to an open and welcoming environment.
-
For a first-time step-by-step guide to the contribution process, please see
["Contributing to GitLab"](https://about.gitlab.com/contributing/).
@@ -33,8 +30,8 @@ vulnerabilities.
## Code of conduct
-Our code of conduct can be found on the
-["Contributing to GitLab"](https://about.gitlab.com/contributing/) page.
+We want to create a welcoming environment for everyone who is interested in contributing.
+Please visit our [Code of Conduct page](https://about.gitlab.com/community/contribute/code-of-conduct/) to learn more about our commitment to an open and welcoming environment.
## Closing policy for issues and merge requests
diff --git a/doc/development/contributing/issue_workflow.md b/doc/development/contributing/issue_workflow.md
index 4c53643ed9c..827b3d7681a 100644
--- a/doc/development/contributing/issue_workflow.md
+++ b/doc/development/contributing/issue_workflow.md
@@ -62,10 +62,12 @@ The current team labels are:
- ~Configure
- ~Create
+- ~Defend
- ~Distribution
- ~Documentation
- ~Geo
- ~Gitaly
+- ~Growth
- ~Manage
- ~Monitor
- ~Plan
@@ -99,6 +101,8 @@ The current stage labels are:
- ~"devops:configure"
- ~"devops:monitor"
- ~"devops:secure"
+- ~"devops:defend"
+- ~"devops:enablement"
These labels should be mutually exclusive. If an issue belongs to multiple
stages, the most relevant should be used.
diff --git a/doc/development/contributing/style_guides.md b/doc/development/contributing/style_guides.md
index 45104a1f91d..f319d00d7fe 100644
--- a/doc/development/contributing/style_guides.md
+++ b/doc/development/contributing/style_guides.md
@@ -10,7 +10,7 @@
1. [Testing][testing]
1. [JavaScript styleguide][js-styleguide]
1. [SCSS styleguide][scss-styleguide]
-1. [Shell commands](../shell_commands.md) created by GitLab
+1. [Shell commands (Ruby)](../shell_commands.md) created by GitLab
contributors to enhance security
1. [Database Migrations](../migration_style_guide.md)
1. [Markdown](http://www.cirosantilli.com/markdown-styleguide)
diff --git a/doc/development/testing_guide/flaky_tests.md b/doc/development/testing_guide/flaky_tests.md
index 3d568c37fba..931cbc51cae 100644
--- a/doc/development/testing_guide/flaky_tests.md
+++ b/doc/development/testing_guide/flaky_tests.md
@@ -8,7 +8,7 @@ eventually.
## Quarantined tests
When a test frequently fails in `master`,
-[a ~"broken master" issue](https://about.gitlab.com/handbook/engineering/workflow/#broken-master)
+[a ~"master:broken" issue](https://about.gitlab.com/handbook/engineering/workflow/#broken-master)
should be created.
If the test cannot be fixed in a timely fashion, there is an impact on the
productivity of all the developers, so it should be placed in quarantine by
@@ -21,7 +21,7 @@ bin/rspec --tag quarantine
```
**Before putting a test in quarantine, you should make sure that a
-~"broken master" issue exists for it so it won't stay in quarantine forever.**
+~"master:broken" issue exists for it so it won't stay in quarantine forever.**
Once a test is in quarantine, there are 3 choices:
diff --git a/doc/install/google_cloud_platform/index.md b/doc/install/google_cloud_platform/index.md
index aa4b3dccf7d..bd60ee25bff 100644
--- a/doc/install/google_cloud_platform/index.md
+++ b/doc/install/google_cloud_platform/index.md
@@ -8,6 +8,12 @@ description: 'Learn how to install a GitLab instance on Google Cloud Platform.'
Getting started with GitLab on a [Google Cloud Platform (GCP)][gcp] instance is quick and easy.
+NOTE: **Note:**
+Google provides a whitepaper for [deploying production-ready GitLab on
+Google Kubernetes Engine](https://cloud.google.com/solutions/deploying-production-ready-gitlab-on-gke),
+including all steps and external resource configuration. These are an alternative to using a GCP VM, and use
+the [Cloud native GitLab Helm chart](https://docs.gitlab.com/charts).
+
## Prerequisites
There are only two prerequisites in order to install GitLab on GCP:
diff --git a/doc/integration/README.md b/doc/integration/README.md
index f5bc0693b84..a539933f223 100644
--- a/doc/integration/README.md
+++ b/doc/integration/README.md
@@ -29,8 +29,8 @@ See the documentation below for details on how to configure these services.
## Project services
-Integration with services such as Campfire, Flowdock, Pivotal Tracker, and Slack
-are available in the form of a [Project Service][].
+Integration with services such as Campfire, Flowdock, HipChat,
+Pivotal Tracker, and Slack are available in the form of a [Project Service][].
[Project Service]: ../user/project/integrations/project_services.md
diff --git a/doc/project_services/hipchat.md b/doc/project_services/hipchat.md
new file mode 100644
index 00000000000..4ae9f6c6b2e
--- /dev/null
+++ b/doc/project_services/hipchat.md
@@ -0,0 +1 @@
+This document was moved to [user/project/integrations/hipchat.md](../user/project/integrations/hipchat.md).
diff --git a/doc/raketasks/backup_restore.md b/doc/raketasks/backup_restore.md
index 32c2e4a5c99..56db7b5eb3a 100644
--- a/doc/raketasks/backup_restore.md
+++ b/doc/raketasks/backup_restore.md
@@ -409,7 +409,7 @@ an access key from the Google console first:
1. Select "Interoperability" and create an access key
1. Make note of the "Access Key" and "Secret" and replace them in the
configurations below
-1. In the buckets advanced settings ensure the Access Control option "Set object-level
+1. In the buckets advanced settings ensure the Access Control option "Set object-level
and bucket-level permissions" is selected
1. Make sure you already have a bucket created
@@ -848,15 +848,24 @@ including (but not restricted to):
* [Project mirroring](../workflow/repository_mirroring.md)
* [Web hooks](../user/project/integrations/webhooks.md)
-In the case of CI/CD, variables, you might experience some weird behavior, like
-stuck jobs or 500 errors. In that case, you can try removing contents of the
-`ci_group_variables` and `ci_project_variables` tables from the database.
+In cases like CI/CD variables and Runner authentication, you might
+experience some unexpected behavior such as:
+
+- Stuck jobs.
+- 500 errors.
+
+In this case, you are required to reset all the tokens for CI/CD variables
+and Runner Authentication, which is described in more detail below. After
+resetting the tokens, you should be able to visit your project and the jobs
+will have started running again.
CAUTION: **Warning:**
Use the following commands at your own risk, and make sure you've taken a
backup beforehand.
-1. Enter the Rails console:
+#### Reset CI/CD variables
+
+1. Enter the DB console:
For Omnibus GitLab packages:
@@ -889,8 +898,39 @@ backup beforehand.
1. You may need to reconfigure or restart GitLab for the changes to take
effect.
-You should now be able to visit your project, and the jobs will start
-running again.
+
+#### Reset Runner registration tokens
+
+1. Enter the DB console:
+
+ For Omnibus GitLab packages:
+
+ ```sh
+ sudo gitlab-rails dbconsole
+ ```
+
+ For installations from source:
+
+ ```sh
+ sudo -u git -H bundle exec rails dbconsole RAILS_ENV=production
+ ```
+
+1. Clear all the tokens for projects, groups, and the whole instance:
+
+CAUTION: **Caution:**
+The last UPDATE operation will stop the runners being able to pick up
+new jobs. You must register new runners.
+
+ ```sql
+ -- Clear project tokens
+ UPDATE projects SET runners_token = null, runners_token_encrypted = null;
+ -- Clear group tokens
+ UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
+ -- Clear instance tokens
+ UPDATE application_settings SET runners_registration_token_encrypted = null;
+ -- Clear runner tokens
+ UPDATE ci_runners SET token = null, token_encrypted = null;
+ ```
A similar strategy can be employed for the remaining features - by removing the
data that cannot be decrypted, GitLab can be brought back into working order,
diff --git a/doc/university/glossary/README.md b/doc/university/glossary/README.md
index 254e234a22c..0af2f8d2f54 100644
--- a/doc/university/glossary/README.md
+++ b/doc/university/glossary/README.md
@@ -41,7 +41,7 @@ Objects (usually binary and large) created by a build process. These can include
### Atlassian
-A [company](https://www.atlassian.com) that develops software products for developers and project managers including Bitbucket, Jira, Confluence, Bamboo.
+A [company](https://www.atlassian.com) that develops software products for developers and project managers including Bitbucket, Jira, Hipchat, Confluence, Bamboo.
### Audit Log
diff --git a/doc/university/high-availability/aws/README.md b/doc/university/high-availability/aws/README.md
index 1906655dfa5..01d5073ab7e 100644
--- a/doc/university/high-availability/aws/README.md
+++ b/doc/university/high-availability/aws/README.md
@@ -83,7 +83,7 @@ our newly created VPC.
### Internet Gateway
Now still on the same dashboard head over to Internet Gateways and
-create a new one. After its created pres on the `Attach to VPC` button and
+create a new one. After its created press on the `Attach to VPC` button and
select our VPC.
![Internet Gateway](img/ig.png)
diff --git a/doc/user/group/subgroups/index.md b/doc/user/group/subgroups/index.md
index 3cecefe11f5..4e81e28a45a 100644
--- a/doc/user/group/subgroups/index.md
+++ b/doc/user/group/subgroups/index.md
@@ -167,7 +167,7 @@ Here's a list of what you can't do with subgroups:
- [GitLab Pages](../../project/pages/index.md) supports projects hosted under
a subgroup, but not subgroup websites.
That means that only the highest-level group supports
- [group websites](../../project/pages/introduction.html#user-or-group-pages),
+ [group websites](../../project/pages/getting_started_part_one.md#gitlab-pages-domain-names),
although you can have project websites under a subgroup.
- It is not possible to share a project with a group that's an ancestor of
the group the project is in. That means you can only share as you walk down
diff --git a/doc/user/index.md b/doc/user/index.md
index 626246447f3..8164b31c37e 100644
--- a/doc/user/index.md
+++ b/doc/user/index.md
@@ -65,9 +65,7 @@ With GitLab Enterprise Edition, you can also:
- View the current health and status of each CI environment running on Kubernetes with [Deploy Boards](https://docs.gitlab.com/ee/user/project/deploy_boards.html).
- Leverage continuous delivery method with [Canary Deployments](https://docs.gitlab.com/ee/user/project/canary_deployments.html).
-You can also [integrate](project/integrations/project_services.md) GitLab with
-numerous third-party applications, such as Mattermost, Microsoft Teams, Trello,
-Slack, Bamboo CI, JIRA, and a lot more.
+You can also [integrate](project/integrations/project_services.md) GitLab with numerous third-party applications, such as Mattermost, Microsoft Teams, HipChat, Trello, Slack, Bamboo CI, JIRA, and a lot more.
## Projects
diff --git a/doc/user/profile/index.md b/doc/user/profile/index.md
index b216b9f255c..61a30a775b0 100644
--- a/doc/user/profile/index.md
+++ b/doc/user/profile/index.md
@@ -33,6 +33,7 @@ From there, you can:
- Set a [custom status](#current-status) for your profile
- Manage your [commit email](#commit-email) for your profile
- Manage [2FA](account/two_factor_authentication.md)
+- Add details of [external accounts](#add-details-of-external-accounts).
- Change your username and [delete your account](account/delete_account.md)
- Manage applications that can
[use GitLab as an OAuth provider](../../integration/oauth_provider.md#introduction-to-oauth)
@@ -92,6 +93,16 @@ To enable private profile:
NOTE: **Note:**
You and GitLab admins can see your the abovementioned information on your profile even if it is private.
+## Add details of external accounts
+
+GitLab allows you to add links to certain other external accounts you might have, like Skype and Twitter. They can help other users connect with you on other platforms.
+
+To add links to other accounts:
+
+1. Navigate to your **User Settings > Profile**.
+1. In the **Main settings** section, locate and fill out fields for links to external accounts like Skype and Twitter.
+1. Click the **Update profile settings** button.
+
## Private contributions
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/14078) in GitLab 11.3.
diff --git a/doc/user/project/clusters/index.md b/doc/user/project/clusters/index.md
index 141fe488357..1983513174c 100644
--- a/doc/user/project/clusters/index.md
+++ b/doc/user/project/clusters/index.md
@@ -573,7 +573,7 @@ However, sometimes GitLab can not create them. In such instances, your job will
This job failed because the necessary resources were not successfully created.
```
-To find the cause of this error when creating a namespace and service account, check the [logs](../../../administration/logs.md#sidekiqlog).
+To find the cause of this error when creating a namespace and service account, check the [logs](../../../administration/logs.md#kuberneteslog).
Common reasons for failure include:
diff --git a/doc/user/project/integrations/hipchat.md b/doc/user/project/integrations/hipchat.md
new file mode 100644
index 00000000000..0fd847d415f
--- /dev/null
+++ b/doc/user/project/integrations/hipchat.md
@@ -0,0 +1,53 @@
+# Atlassian HipChat
+
+GitLab provides a way to send HipChat notifications upon a number of events,
+such as when a user pushes code, creates a branch or tag, adds a comment, and
+creates a merge request.
+
+## Setup
+
+GitLab requires the use of a HipChat v2 API token to work. v1 tokens are
+not supported at this time. Note the differences between v1 and v2 tokens:
+
+HipChat v1 API (legacy) supports "API Auth Tokens" in the Group API menu. A v1
+token is allowed to send messages to *any* room.
+
+HipChat v2 API has tokens that are can be created using the Integrations tab
+in the Group or Room admin page. By design, these are lightweight tokens that
+allow GitLab to send messages only to *one* room.
+
+### Complete these steps in HipChat
+
+1. Go to: <https://admin.hipchat.com/admin>
+1. Click on "Group Admin" -> "Integrations".
+1. Find "Build Your Own!" and click "Create".
+1. Select the desired room, name the integration "GitLab", and click "Create".
+1. In the "Send messages to this room by posting this URL" column, you should
+see a URL in the format:
+
+```
+https://api.hipchat.com/v2/room/<room>/notification?auth_token=<token>
+```
+
+HipChat is now ready to accept messages from GitLab. Next, set up the HipChat
+service in GitLab.
+
+### Complete these steps in GitLab
+
+1. Navigate to the project you want to configure for notifications.
+1. Navigate to the [Integrations page](project_services.md#accessing-the-project-services)
+1. Click "HipChat".
+1. Select the "Active" checkbox.
+1. Insert the `token` field from the URL into the `Token` field on the Web page.
+1. Insert the `room` field from the URL into the `Room` field on the Web page.
+1. Save or optionally click "Test Settings".
+
+## Troubleshooting
+
+If you do not see notifications, make sure you are using a HipChat v2 API
+token, not a v1 token.
+
+Note that the v2 token is tied to a specific room. If you want to be able to
+specify arbitrary rooms, you can create an API token for a specific user in
+HipChat under "Account settings" and "API access". Use the `XXX` value under
+`auth_token=XXX`.
diff --git a/doc/user/project/integrations/project_services.md b/doc/user/project/integrations/project_services.md
index e2f23827360..42c7824a125 100644
--- a/doc/user/project/integrations/project_services.md
+++ b/doc/user/project/integrations/project_services.md
@@ -36,6 +36,7 @@ Click on the service links to see further configuration instructions and details
| External Wiki | Replaces the link to the internal wiki with a link to an external wiki |
| Flowdock | Flowdock is a collaboration web app for technical teams |
| [Hangouts Chat](hangouts_chat.md) | Receive events notifications in Google Hangouts Chat |
+| [HipChat](hipchat.md) | Private group chat and IM |
| [Irker (IRC gateway)](irker.md) | Send IRC messages, on update, to a list of recipients through an Irker gateway |
| [JIRA](jira.md) | JIRA issue tracker |
| JetBrains TeamCity CI | A continuous integration and build server |
diff --git a/doc/user/project/pages/getting_started_part_one.md b/doc/user/project/pages/getting_started_part_one.md
index f1e2771dcb9..7dbf58b5715 100644
--- a/doc/user/project/pages/getting_started_part_one.md
+++ b/doc/user/project/pages/getting_started_part_one.md
@@ -1,42 +1,11 @@
---
last_updated: 2018-02-16
-author: Marcia Ramos
-author_gitlab: marcia
-level: beginner
-article_type: user guide
-date: 2017-02-22
---
# Static sites and GitLab Pages domains
-This document is the beginning of a comprehensive guide, made for those who want to
-publish a website with GitLab Pages but aren't familiar with
-the entire process involved.
-
-This [first document](#what-you-need-to-know-before-getting-started) of this series will present you to the concepts of
-static sites, and go over how the default Pages domains work.
-
-The [second document](getting_started_part_two.md) covers how to get started with GitLab Pages: deploy
-a website from a forked project or create a new one from scratch.
-
-The [third document](getting_started_part_three.md) will show you how to set up a custom domain or subdomain
-to your site already deployed.
-
-The [fourth document](getting_started_part_four.md) will show you how to create and tweak GitLab CI for
-GitLab Pages.
-
-To **enable** GitLab Pages for GitLab CE (Community Edition)
-and GitLab EE (Enterprise Edition), please read the
-[admin documentation](https://docs.gitlab.com/ce/administration/pages/index.html),
-and/or watch this [video tutorial](https://youtu.be/dD8c7WNcc6s).
-
->**Note:**
-For this guide, we assume you already have GitLab Pages
-server up and running for your GitLab instance.
-
-## What you need to know before getting started
-
-Before we begin, let's understand a few concepts first.
+On this docucument, learn how to name your project for GitLab Pages
+according to your intended website's URL.
## Static sites
@@ -48,20 +17,10 @@ CSS, and JS, or use a [Static Site Generator (SSG)](https://www.staticgen.com/)
to simplify your code and build the static site for you,
which is highly recommendable and much faster than hardcoding.
-### Further reading
-
-- Read through this technical overview on [Static versus Dynamic Websites](https://about.gitlab.com/2016/06/03/ssg-overview-gitlab-pages-part-1-dynamic-x-static/)
-- Understand [how modern Static Site Generators work](https://about.gitlab.com/2016/06/10/ssg-overview-gitlab-pages-part-2/) and what you can add to your static site
-- You can use [any SSG with GitLab Pages](https://about.gitlab.com/2016/06/17/ssg-overview-gitlab-pages-part-3-examples-ci/)
-- Fork an [example project](https://gitlab.com/pages) to build your website based upon
-
-## GitLab Pages domain
+See the [further reading](#further-reading) section below for
+references on static site concepts.
-If you set up a GitLab Pages project on GitLab.com,
-it will automatically be accessible under a
-[subdomain of `namespace.gitlab.io`](introduction.md#gitlab-pages-on-gitlabcom).
-The `namespace` is defined by your username on GitLab.com,
-or the group name you created this project under.
+## GitLab Pages domain names
>**Note:**
If you use your own GitLab instance to deploy your
@@ -70,11 +29,32 @@ Pages wildcard domain. This guide is valid for any GitLab instance,
you just need to replace Pages wildcard domain on GitLab.com
(`*.gitlab.io`) with your own.
-Learn more about [namespaces](../../group/index.md#namespaces).
+If you set up a GitLab Pages project on GitLab,
+it will automatically be accessible under a
+subdomain of `namespace.example.io`.
+The [`namespace`](../../group/index.md#namespaces)
+is defined by your username on GitLab.com,
+or the group name you created this project under.
+For GitLab self-managed instances, replace `example.io`
+with your instance's Pages domain. For GitLab.com,
+Pages domains are `*.gitlab.io`.
+
+| Type of GitLab Pages | The name of the project created in GitLab | Website URL |
+| -------------------- | ------------ | ----------- |
+| User pages | `username.example.io` | `http(s)://username.example.io` |
+| Group pages | `groupname.example.io` | `http(s)://groupname.example.io` |
+| Project pages owned by a user | `projectname` | `http(s)://username.example.io/projectname` |
+| Project pages owned by a group | `projectname` | `http(s)://groupname.example.io/projectname`|
+| Project pages owned by a subgroup | `subgroup/projectname` | `http(s)://groupname.example.io/subgroup/projectname`|
+
+CAUTION: **Warning:**
+There are some known [limitations](introduction.md#limitations)
+regarding namespaces served under the general domain name and HTTPS.
+Make sure to read that section.
-### Practical examples
+To understand Pages domains clearly, read the examples below.
-#### Project Websites
+### Project website examples
- You created a project called `blog` under your username `john`,
therefore your project URL is `https://gitlab.com/john/blog/`.
@@ -92,7 +72,7 @@ Learn more about [namespaces](../../group/index.md#namespaces).
GitLab Pages for this project, the site will live under
`https://engineering.gitlab.io/docs/workflows`.
-#### User and Group Websites
+### User and Group website examples
- Under your username, `john`, you created a project called
`john.gitlab.io`. Your project URL will be `https://gitlab.com/john/john.gitlab.io`.
@@ -103,8 +83,6 @@ Learn more about [namespaces](../../group/index.md#namespaces).
Once you enable GitLab Pages for your project,
your website will be published under `https://websites.gitlab.io`.
-> Support for subgroup project's websites was [introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/30548) in GitLab 11.8.
-
**General example:**
- On GitLab.com, a project site will always be available under
@@ -115,3 +93,10 @@ Learn more about [namespaces](../../group/index.md#namespaces).
Pages server domain. Ask your sysadmin for this information.
_Read on about [Projects for GitLab Pages and URL structure](getting_started_part_two.md)._
+
+### Further reading
+
+- Read through this technical overview on [Static versus Dynamic Websites](https://about.gitlab.com/2016/06/03/ssg-overview-gitlab-pages-part-1-dynamic-x-static/)
+- Understand [how modern Static Site Generators work](https://about.gitlab.com/2016/06/10/ssg-overview-gitlab-pages-part-2/) and what you can add to your static site
+- You can use [any SSG with GitLab Pages](https://about.gitlab.com/2016/06/17/ssg-overview-gitlab-pages-part-3-examples-ci/)
+- Fork an [example project](https://gitlab.com/pages) to build your website based upon \ No newline at end of file
diff --git a/doc/user/project/pages/getting_started_part_three.md b/doc/user/project/pages/getting_started_part_three.md
index 2839f04ae59..9f2bc281f85 100644
--- a/doc/user/project/pages/getting_started_part_three.md
+++ b/doc/user/project/pages/getting_started_part_three.md
@@ -177,9 +177,6 @@ Note that [DNS propagation may take some time (up to 24h)](http://www.inmotionho
although it's usually a matter of minutes to complete. Until it does, verification
will fail and attempts to visit your domain will respond with a 404.
-Read through the [general documentation on GitLab Pages](introduction.md#add-a-custom-domain-to-your-pages-website) to learn more about adding
-custom domains to GitLab Pages sites.
-
### Redirecting `www.domain.com` to `domain.com` with Cloudflare
If you use Cloudflare, you can redirect `www` to `domain.com` without the need of adding both
diff --git a/doc/user/project/pages/getting_started_part_two.md b/doc/user/project/pages/getting_started_part_two.md
index 901fb226cda..1034ba1733d 100644
--- a/doc/user/project/pages/getting_started_part_two.md
+++ b/doc/user/project/pages/getting_started_part_two.md
@@ -104,8 +104,8 @@ from the Pages group into a **user/group** website, you'll need to:
### Create a project from scratch
1. From your **Project**'s **[Dashboard](https://gitlab.com/dashboard/projects)**,
- click **New project**, and name it considering the
- [practical examples](getting_started_part_one.md#practical-examples).
+ click **New project**, and name it according to the
+ [Pages domain names](getting_started_part_one.md#gitlab-pages-domain-names).
1. Clone it to your local computer, add your website
files to your project, add, commit and push to GitLab.
1. From the your **Project**'s page, click **Set up CI/CD**:
diff --git a/doc/user/project/pages/img/pages_remove.png b/doc/user/project/pages/img/pages_remove.png
deleted file mode 100644
index 10299880247..00000000000
--- a/doc/user/project/pages/img/pages_remove.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/pages/img/remove_pages.png b/doc/user/project/pages/img/remove_pages.png
new file mode 100644
index 00000000000..60f76f15f93
--- /dev/null
+++ b/doc/user/project/pages/img/remove_pages.png
Binary files differ
diff --git a/doc/user/project/pages/index.md b/doc/user/project/pages/index.md
index 885df9f0850..0cd47c65d76 100644
--- a/doc/user/project/pages/index.md
+++ b/doc/user/project/pages/index.md
@@ -5,6 +5,11 @@ last_updated: 2019-03-05
# GitLab Pages
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/80) in GitLab Enterprise Edition 8.3.
+> - Custom CNAMEs with TLS support were [introduced](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/173) in GitLab Enterprise Edition 8.5.
+> - [Ported](https://gitlab.com/gitlab-org/gitlab-ce/issues/14605) to GitLab Community Edition in GitLab 8.17.
+> Support for subgroup project's websites was [introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/30548) in GitLab 11.8.
+
**GitLab Pages is a feature that allows you to publish static websites
directly from a repository in GitLab.**
@@ -83,7 +88,7 @@ that will build your site and publish it to the GitLab Pages server. The sequenc
scripts that GitLab CI/CD runs to accomplish this task is created from a file named
`.gitlab-ci.yml`, which you can [create and modify](getting_started_part_four.md) at will.
-You can either use GitLab's [default domain for GitLab Pages websites](getting_started_part_one.md#gitlab-pages-domain),
+You can either use GitLab's [default domain for GitLab Pages websites](getting_started_part_one.md#gitlab-pages-domain-names),
`*.gitlab.io`, or your own domain (`example.com`). In that case, you'll
need admin access to your domain's registrar (or control panel) to set it up with Pages.
@@ -128,7 +133,7 @@ To learn more about GitLab Pages, read the following tutorials:
- [Projects for GitLab Pages and URL structure](getting_started_part_two.md): Forking projects and creating new ones from scratch, understanding URLs structure and baseurls
- [GitLab Pages custom domains and SSL/TLS Certificates](getting_started_part_three.md): How to add custom domains and subdomains to your website, configure DNS records and SSL/TLS certificates
- [Creating and Tweaking GitLab CI/CD for GitLab Pages](getting_started_part_four.md): Understand how to create your own `.gitlab-ci.yml` for your site
-- [Technical aspects, custom 404 pages, limitations](introduction.md)
+- [Exploring GitLab Pages](introduction.md): Technical aspects, specific configuration options, custom 404 pages, limitations
### GitLab Pages with Static Site Generators (SSGs)
diff --git a/doc/user/project/pages/introduction.md b/doc/user/project/pages/introduction.md
index 39f14a1126f..a14a446aead 100644
--- a/doc/user/project/pages/introduction.md
+++ b/doc/user/project/pages/introduction.md
@@ -1,178 +1,44 @@
# Exploring GitLab Pages
-> **Notes:**
->
-> - This feature was [introduced][ee-80] in GitLab EE 8.3.
-> - Custom CNAMEs with TLS support were [introduced][ee-173] in GitLab EE 8.5.
-> - GitLab Pages [was ported][ce-14605] to Community Edition in GitLab 8.17.
-> - This document is about the user guide. To learn how to enable GitLab Pages
-> across your GitLab instance, visit the [administrator documentation](../../../administration/pages/index.md).
+This document is a user guide to explore the options and settings
+GitLab Pages offers.
-With GitLab Pages you can host for free your static websites on GitLab.
-Combined with the power of [GitLab CI] and the help of [GitLab Runner] you can
-deploy static pages for your individual projects, your user or your group.
+To familiarize yourself with GitLab Pages first:
-Read [GitLab Pages on GitLab.com](#gitlab-pages-on-gitlabcom) for specific
-information, if you are using GitLab.com to host your website.
+- Read an [introduction to GitLab Pages](index.md#overview).
+- Learn [how to get started with Pages](index.md#getting-started).
+- Learn how to enable GitLab Pages
+across your GitLab instance on the [administrator documentation](../../../administration/pages/index.md).
-## Getting started with GitLab Pages domains
-
-> **Note:**
-> In the rest of this document we will assume that the general domain name that
-> is used for GitLab Pages is `example.io`.
-
-In general there are two types of pages one might create:
-
-- Pages per user (`username.example.io`) or per group (`groupname.example.io`)
-- Pages per project (`username.example.io/projectname` or `groupname.example.io/projectname`)
-
-In GitLab, usernames and groupnames are unique and we often refer to them
-as [namespaces](../../group/index.md#namespaces). There can be only one namespace
-in a GitLab instance. Below you
-can see the connection between the type of GitLab Pages, what the project name
-that is created on GitLab looks like and the website URL it will be ultimately
-be served on.
-
-| Type of GitLab Pages | The name of the project created in GitLab | Website URL |
-| -------------------- | ------------ | ----------- |
-| User pages | `username.example.io` | `http(s)://username.example.io` |
-| Group pages | `groupname.example.io` | `http(s)://groupname.example.io` |
-| Project pages owned by a user | `projectname` | `http(s)://username.example.io/projectname` |
-| Project pages owned by a group | `projectname` | `http(s)://groupname.example.io/projectname`|
-| Project pages owned by a subgroup | `subgroup/projectname` | `http(s)://groupname.example.io/subgroup/projectname`|
-
-> **Warning:**
-> There are some known [limitations](#limitations) regarding namespaces served
-> under the general domain name and HTTPS. Make sure to read that section.
-
-### GitLab Pages requirements
+## Pages requirements
In brief, this is what you need to upload your website in GitLab Pages:
-1. Find out the general domain name that is used for GitLab Pages
- (ask your administrator). This is very important, so you should first make
- sure you get that right.
-1. Create a project
-1. Push a [`.gitlab-ci.yml` file][yaml] in the root directory
- of your repository with a specific job named [`pages`][pages]
-1. Set up a GitLab Runner to build your website
-
-> **Note:**
-If [shared runners](../../../ci/runners/README.md) are enabled by your GitLab
-administrator, you should be able to use them instead of bringing your own.
-
-### User or group Pages
-
-For user and group pages, the name of the project should be specific to the
-username or groupname and the general domain name that is used for GitLab Pages.
-Head over your GitLab instance that supports GitLab Pages and create a
-repository named `username.example.io`, where `username` is your username on
-GitLab. If the first part of the project name doesn't match exactly your
-username, it won’t work, so make sure to get it right.
-
-To create a group page, the steps are the same like when creating a website for
-users. Just make sure that you are creating the project within the group's
-namespace.
-
-![Create a user-based pages project](img/pages_create_user_page.png)
-
----
-
-After you push some static content to your repository and GitLab Runner uploads
-the artifacts to GitLab CI, you will be able to access your website under
-`http(s)://username.example.io`. Keep reading to find out how.
-
->**Note:**
-If your username/groupname contains a dot, for example `foo.bar`, you will not
-be able to use the wildcard domain HTTPS, read more at [limitations](#limitations).
+1. Domain of the instance: domain name that is used for GitLab Pages
+(ask your administrator).
+1. GitLab CI/CD: a `.gitlab-ci.yml` file with a specific job named [`pages`][pages] in the root directory of your repository.
+1. A directory called `public` in your site's repo containing the content
+to be published.
+1. GitLab Runner enabled for the project.
-### Project Pages
-
-GitLab Pages for projects can be created by both user and group accounts.
-The steps to create a project page for a user or a group are identical:
-
-1. Create a new project
-1. Push a [`.gitlab-ci.yml` file][yaml] in the root directory
- of your repository with a specific job named [`pages`][pages].
-1. Set up a GitLab Runner to build your website
-
-A user's project will be served under `http(s)://username.example.io/projectname`
-whereas a group's project under `http(s)://groupname.example.io/projectname`.
-
-For practical examples for group and project Pages, read through the guide
-[GitLab Pages from A to Z: Part 1 - Static sites and GitLab Pages domains](getting_started_part_one.md#practical-examples).
-
-## Quick Start
-
-Read through [GitLab Pages Quick Start Guide][pages-quick] or watch the video tutorial on
-[how to publish a website with GitLab Pages on GitLab.com from a forked project][video-pages-fork].
-
-See also [All you Need to Know About GitLab Pages][pages-index-guide] for a list with all the resources we have for GitLab Pages.
-
-### Explore the contents of `.gitlab-ci.yml`
-
-The key thing about GitLab Pages is the `.gitlab-ci.yml` file, something that
-gives you absolute control over the build process. You can actually watch your
-website being built live by following the CI job traces.
-
-For a simplified user guide on setting up GitLab CI/CD for Pages, read through
-the article [GitLab Pages from A to Z: Part 4 - Creating and Tweaking `.gitlab-ci.yml` for GitLab Pages](getting_started_part_four.md)
-
-> **Note:**
-> Before reading this section, make sure you familiarize yourself with GitLab CI
-> and the specific syntax of[`.gitlab-ci.yml`][yaml] by
-> following our [quick start guide].
-
-To make use of GitLab Pages, the contents of `.gitlab-ci.yml` must follow the
-rules below:
-
-1. A special job named [`pages`][pages] must be defined
-1. Any static content which will be served by GitLab Pages must be placed under
- a `public/` directory
-1. `artifacts` with a path to the `public/` directory must be defined
+## GitLab Pages on GitLab.com
-In its simplest form, `.gitlab-ci.yml` looks like:
+If you are using [GitLab Pages on GitLab.com](#gitlab-pages-on-gitlabcom) to host your website, then:
-```yaml
-pages:
- script:
- - my_commands
- artifacts:
- paths:
- - public
-```
+- The domain name for GitLab Pages on GitLab.com is `gitlab.io`.
+- Custom domains and TLS support are enabled.
+- Shared runners are enabled by default, provided for free and can be used to
+ build your website. If you want you can still bring your own Runner.
-When the Runner reaches to build the `pages` job, it executes whatever is
-defined in the `script` parameter and if the job completes with a non-zero
-exit status, it then uploads the `public/` directory to GitLab Pages.
+## Example projects
-The `public/` directory should contain all the static content of your website.
-Depending on how you plan to publish your website, the steps defined in the
-[`script` parameter](../../../ci/yaml/README.md#script) may differ.
+Visit the [GitLab Pages group](https://gitlab.com/groups/pages) for a complete list of example projects. Contributions are very welcome.
-Be aware that Pages are by default branch/tag agnostic and their deployment
-relies solely on what you specify in `.gitlab-ci.yml`. If you don't limit the
-`pages` job with the [`only` parameter](../../../ci/yaml/README.md#onlyexcept-basic),
-whenever a new commit is pushed to whatever branch or tag, the Pages will be
-overwritten. In the example below, we limit the Pages to be deployed whenever
-a commit is pushed only on the `master` branch:
+## Specific configuration options for Pages
-```yaml
-pages:
- script:
- - my_commands
- artifacts:
- paths:
- - public
- only:
- - master
-```
-
-We then tell the Runner to treat the `public/` directory as `artifacts` and
-upload it to GitLab. And since all these parameters were all under a `pages`
-job, the contents of the `public` directory will be served by GitLab Pages.
+Learn how to set up GitLab CI/CD for specific use cases.
-#### How `.gitlab-ci.yml` looks like when the static content is in your repository
+### `.gitlab-ci.yml` for plain HTML websites
Supposed your repository contained the following files:
@@ -201,55 +67,11 @@ pages:
- master
```
-#### How `.gitlab-ci.yml` looks like when using a static generator
-
-In general, GitLab Pages support any kind of [static site generator][staticgen],
-since `.gitlab-ci.yml` can be configured to run any possible command.
-
-In the root directory of your Git repository, place the source files of your
-favorite static generator. Then provide a `.gitlab-ci.yml` file which is
-specific to your static generator.
+### `.gitlab-ci.yml` for a static site generator
-The example below, uses [Jekyll] to build the static site:
+See this document for a [step-by-step guide](getting_started_part_four.md).
-```yaml
-image: ruby:2.1 # the script will run in Ruby 2.1 using the Docker image ruby:2.1
-
-pages: # the build job must be named pages
- script:
- - gem install jekyll # we install jekyll
- - jekyll build -d public/ # we tell jekyll to build the site for us
- artifacts:
- paths:
- - public # this is where the site will live and the Runner uploads it in GitLab
- only:
- - master # this script is only affecting the master branch
-```
-
-Here, we used the Docker executor and in the first line we specified the base
-image against which our jobs will run.
-
-You have to make sure that the generated static files are ultimately placed
-under the `public` directory, that's why in the `script` section we run the
-`jekyll` command that jobs the website and puts all content in the `public/`
-directory. Depending on the static generator of your choice, this command will
-differ. Search in the documentation of the static generator you will use if
-there is an option to explicitly set the output directory. If there is not
-such an option, you can always add one more line under `script` to rename the
-resulting directory in `public/`.
-
-We then tell the Runner to treat the `public/` directory as `artifacts` and
-upload it to GitLab.
-
----
-
-See the [jekyll example project][pages-jekyll] to better understand how this
-works.
-
-For a list of Pages projects, see the [example projects](#example-projects) to
-get you started.
-
-#### How to set up GitLab Pages in a repository where there's also actual code
+### `.gitlab-ci.yml` for a repository where there's also actual code
Remember that GitLab Pages are by default branch/tag agnostic and their
deployment relies solely on what you specify in `.gitlab-ci.yml`. You can limit
@@ -294,28 +116,6 @@ also includes `.gitlab-ci.yml`.
[jekyll-master]: https://gitlab.com/pages/jekyll-branched/tree/master
[jekyll-pages]: https://gitlab.com/pages/jekyll-branched/tree/pages
-## Next steps
-
-So you have successfully deployed your website, congratulations! Let's check
-what more you can do with GitLab Pages.
-
-### Example projects
-
-Below is a list of example projects for GitLab Pages with a plain HTML website
-or various static site generators. Contributions are very welcome.
-
-- [Plain HTML](https://gitlab.com/pages/plain-html)
-- [Jekyll](https://gitlab.com/pages/jekyll)
-- [Hugo](https://gitlab.com/pages/hugo)
-- [Middleman](https://gitlab.com/pages/middleman)
-- [Hexo](https://gitlab.com/pages/hexo)
-- [Brunch](https://gitlab.com/pages/brunch)
-- [Metalsmith](https://gitlab.com/pages/metalsmith)
-- [Harp](https://gitlab.com/pages/harp)
-
-Visit the GitLab Pages group for a full list of example projects:
-<https://gitlab.com/groups/pages>.
-
### Serving compressed assets
Most modern browsers support downloading files in a compressed format. This
@@ -408,52 +208,6 @@ NOTE: **Note:**
When `public/data/index.html` exists, it takes priority over the `public/data.html`
file for both the `/data` and `/data/` URL paths.
-### Add a custom domain to your Pages website
-
-For a complete guide on Pages domains, read through the article
-[GitLab Pages from A to Z: Part 3 - GitLab Pages custom domains and SSL/TLS Certificates](getting_started_part_three.md)
-
-If this setting is enabled by your GitLab administrator, you should be able to
-see the **New Domain** button when visiting your project's settings through the
-gear icon in the top right and then navigating to **Pages**.
-
-![New domain button](img/pages_new_domain_button.png)
-
----
-
-You can add multiple domains pointing to your website hosted under GitLab.
-Once the domain is added, you can see it listed under the **Domains** section.
-
-![Pages multiple domains](img/pages_multiple_domains.png)
-
----
-
-As a last step, you need to configure your DNS and add a CNAME pointing to your
-user/group page. Click on the **Details** button of a domain for further
-instructions.
-
-![Pages DNS details](img/pages_dns_details.png)
-
----
-
->**Note:**
-Currently there is support only for custom domains on per-project basis. That
-means that if you add a custom domain (`example.com`) for your user website
-(`username.example.io`), a project that is served under `username.example.io/foo`,
-will not be accessible under `example.com/foo`.
-
-### Secure your custom domain website with TLS
-
-When you add a new custom domain, you also have the chance to add a TLS
-certificate. If this setting is enabled by your GitLab administrator, you
-should be able to see the option to upload the public certificate and the
-private key when adding a new domain.
-
-![Pages upload cert](img/pages_upload_cert.png)
-
-For a complete guide on Pages domains, read through the article
-[GitLab Pages from A to Z: Part 3 - GitLab Pages custom domains and SSL/TLS Certificates](getting_started_part_three.md)
-
### Custom error codes pages
You can provide your own 403 and 404 error pages by creating the `403.html` and
@@ -472,29 +226,17 @@ If the case of `404.html`, there are different scenarios. For example:
- If you use a custom domain and try to access `/non/existing_file`, GitLab
Pages will try to serve only `/404.html`.
-### Remove the contents of your pages
-
-If you ever feel the need to purge your Pages content, you can do so by going
-to your project's settings through the gear icon in the top right, and then
-navigating to **Pages**. Hit the **Remove pages** button and your Pages website
-will be deleted. Simple as that.
-
-![Remove pages](img/pages_remove.png)
-
-## GitLab Pages on GitLab.com
-
-If you are using GitLab.com to host your website, then:
-
-- The general domain name for GitLab Pages on GitLab.com is `gitlab.io`.
-- Custom domains and TLS support are enabled.
-- Shared runners are enabled by default, provided for free and can be used to
- build your website. If you want you can still bring your own Runner.
+### Redirects in GitLab Pages
-The rest of the guide still applies.
+Since you cannot use any custom server configuration files, like `.htaccess` or
+any `.conf` file, if you want to redirect a page to another
+location, you can use the [HTTP meta refresh tag][metarefresh].
-See also: [GitLab Pages from A to Z: Part 1 - Static sites and GitLab Pages domains](getting_started_part_one.md#gitlab-pages-domain).
+Some static site generators provide plugins for that functionality so that you
+don't have to create and edit HTML files manually. For example, Jekyll has the
+[redirect-from plugin](https://github.com/jekyll/jekyll-redirect-from).
-## GitLab Pages access control **[CORE ONLY]**
+### GitLab Pages Access Control **[CORE ONLY]**
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/33422) in GitLab 11.5.
@@ -536,6 +278,15 @@ The next time someone tries to access your website and the access control is
enabled, they will be presented with a page to sign into GitLab and verify they
can access the website.
+## Unpublishing your Pages
+
+If you ever feel the need to purge your Pages content, you can do so by going
+to your project's settings through the gear icon in the top right, and then
+navigating to **Pages**. Hit the **Remove pages** button and your Pages website
+will be deleted.
+
+![Remove pages](img/remove_pages.png)
+
## Limitations
When using Pages under the general domain of a GitLab instance (`*.example.io`),
@@ -550,16 +301,6 @@ don't redirect HTTP to HTTPS.
GitLab Pages [does **not** support group websites for subgroups](../../group/subgroups/index.md#limitations).
You can only create the highest-level group website.
-## Redirects in GitLab Pages
-
-Since you cannot use any custom server configuration files, like `.htaccess` or
-any `.conf` file, if you want to redirect a page to another
-location, you can use the [HTTP meta refresh tag][metarefresh].
-
-Some static site generators provide plugins for that functionality so that you
-don't have to create and edit HTML files manually. For example, Jekyll has the
-[redirect-from plugin](https://github.com/jekyll/jekyll-redirect-from).
-
## Frequently Asked Questions
### Can I download my generated pages?
@@ -581,8 +322,6 @@ No, you don't. You can create your project first and it will be accessed under
For a list of known issues, visit GitLab's [public issue tracker].
[jekyll]: http://jekyllrb.com/
-[ee-80]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/80
-[ee-173]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/173
[pages-daemon]: https://gitlab.com/gitlab-org/gitlab-pages
[gitlab ci]: https://about.gitlab.com/gitlab-ci
[gitlab runner]: https://docs.gitlab.com/runner/
@@ -592,7 +331,6 @@ For a list of known issues, visit GitLab's [public issue tracker].
[pages-jekyll]: https://gitlab.com/pages/jekyll
[metarefresh]: https://en.wikipedia.org/wiki/Meta_refresh
[public issue tracker]: https://gitlab.com/gitlab-org/gitlab-ce/issues?label_name=pages
-[ce-14605]: https://gitlab.com/gitlab-org/gitlab-ce/issues/14605
[quick start guide]: ../../../ci/quick_start/README.md
[pages-index-guide]: index.md
[pages-quick]: getting_started_part_one.md
diff --git a/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md b/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md
index 5ad500c4d20..ea22f3e905b 100644
--- a/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md
+++ b/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md
@@ -141,7 +141,7 @@ Now that your certificate has been issued, let's add it to your Pages site:
```
1. Click **Save changes** to apply them to your website.
-1. Wait a few minutes for DNS propagation.
+1. Wait a few minutes for the configuration changes to take effect.
1. Visit your website at `https://example.com`.
To force `https` connections on your site, navigate to your
diff --git a/doc/user/project/repository/img/download_source_code.png b/doc/user/project/repository/img/download_source_code.png
deleted file mode 100644
index 17f2cb4b3e8..00000000000
--- a/doc/user/project/repository/img/download_source_code.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md
index 718566a539f..22d912cd9d1 100644
--- a/doc/user/project/repository/index.md
+++ b/doc/user/project/repository/index.md
@@ -241,24 +241,4 @@ Projects that contain a `.xcodeproj` or `.xcworkspace` directory can now be clon
in Xcode using the new **Open in Xcode** button, located next to the Git URL
used for cloning your project. The button is only shown on macOS.
-## Download Source Code
-
-Source code stored in the repository can be downloaded.
-
-By clicking the download icon, a dropdown will open with links to download the following:
-
-![Download source code](img/download_source_code.png)
-
-- **Source Code:**
- This allows users to download the source code on branch they're currently
- viewing. Available zip, tar, tar.gz and tar.bz2.
-- **Directory:**
- > [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/24704) in GitLab 11.10
-
- Only shows up when viewing a sub-directory. This allows users to download
- the specific directory they're currently viewing. Also available in zip, tar,
- tar.gz and tar.bz2.
-- **Artifacts:**
- This allows users to download the artifacts of the latest CI build.
-
[jupyter]: https://jupyter.org
diff --git a/doc/workflow/repository_mirroring.md b/doc/workflow/repository_mirroring.md
index ae1624b7dc0..9fcadbf3bee 100644
--- a/doc/workflow/repository_mirroring.md
+++ b/doc/workflow/repository_mirroring.md
@@ -84,7 +84,7 @@ To set up a mirror from GitLab to GitHub, you need to follow these steps:
1. Fill in **Password** field with your GitHub personal access token.
1. Click the **Mirror repository** button.
-The mirrored repository will be listed. For example, `https://*****:*****@github.com/<your_github_group>/<your_github_project>.git`.
+The mirrored repository will be listed. For example, `https://*****:*****@github.com/<your_github_group>/<your_github_project>.git`.
The repository will push soon. To force a push, click the appropriate button.
@@ -138,13 +138,18 @@ upstream and GitLab will no longer automatically update this branch to prevent a
### How it works
-Once you activate the pull mirroring feature, the mirror will be inserted into a queue. A scheduler
-will start every minute and schedule a fixed number of mirrors for update, based on the configured maximum capacity.
+Once the pull mirroring feature has been enabled for a repository, the repository is added to a queue.
-If the mirror updates successfully, it will be enqueued once again with a small backoff period.
+Once per minute, a Sidekiq cron job schedules repository mirrors to update, based on:
-If the mirror fails (for example, a branch diverged from upstream), the project's backoff period is
-increased each time it fails, up to a maximum amount of time.
+- The capacity available. This is determined by Sidekiq settings. For GitLab.com, see [GitLab.com Sidekiq settings](../user/gitlab_com/index.md#sidekiq).
+- The number of repository mirrors already in the queue that are due to be updated. Being due depends on when the repository mirror was last updated and how many times it's been retried.
+
+Repository mirrors are updated as Sidekiq becomes available to process them. If the process of updating the repository mirror:
+
+- Succeeds, an update will be enqueued again with at least a 30 minute wait.
+- Fails (for example, a branch diverged from upstream), it will be attempted again later. Mirrors can fail
+ up to 14 times before they will not be enqueued for update again.
### SSH authentication
diff --git a/doc/workflow/time_tracking.md b/doc/workflow/time_tracking.md
index e60b6819bf1..c03dffa967d 100644
--- a/doc/workflow/time_tracking.md
+++ b/doc/workflow/time_tracking.md
@@ -75,6 +75,6 @@ Default conversion rates are 1mo = 4w, 1w = 5d and 1d = 8h.
Other interesting links:
-- [Time Tracking landing page on about.gitlab.com](https://about.gitlab.com/features/time-tracking)
+- [Time Tracking landing page on about.gitlab.com](https://about.gitlab.com/solutions/time-tracking/)
[quick actions]: ../user/project/quick_actions.md
diff --git a/lib/api/helpers/services_helpers.rb b/lib/api/helpers/services_helpers.rb
index 8582c45798f..953be7f3798 100644
--- a/lib/api/helpers/services_helpers.rb
+++ b/lib/api/helpers/services_helpers.rb
@@ -1,3 +1,4 @@
+# coding: utf-8
# frozen_string_literal: true
module API
@@ -386,6 +387,44 @@ module API
},
chat_notification_events
].flatten,
+ 'hipchat' => [
+ {
+ required: true,
+ name: :token,
+ type: String,
+ desc: 'The room token'
+ },
+ {
+ required: false,
+ name: :room,
+ type: String,
+ desc: 'The room name or ID'
+ },
+ {
+ required: false,
+ name: :color,
+ type: String,
+ desc: 'The room color'
+ },
+ {
+ required: false,
+ name: :notify,
+ type: Boolean,
+ desc: 'Enable notifications'
+ },
+ {
+ required: false,
+ name: :api_version,
+ type: String,
+ desc: 'Leave blank for default (v2)'
+ },
+ {
+ required: false,
+ name: :server,
+ type: String,
+ desc: 'Leave blank for default. https://hipchat.example.com'
+ }
+ ],
'irker' => [
{
required: true,
@@ -690,6 +729,7 @@ module API
::ExternalWikiService,
::FlowdockService,
::HangoutsChatService,
+ ::HipchatService,
::IrkerService,
::JiraService,
::KubernetesService,
diff --git a/lib/api/import_github.rb b/lib/api/import_github.rb
index bb4e536cf57..e7504051808 100644
--- a/lib/api/import_github.rb
+++ b/lib/api/import_github.rb
@@ -20,6 +20,10 @@ module API
def provider
:github
end
+
+ def provider_unauthorized
+ error!("Access denied to your #{Gitlab::ImportSources.title(provider.to_s)} account.", 401)
+ end
end
desc 'Import a GitHub project' do
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index c33d243330d..be9e926728c 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -231,12 +231,12 @@ module Gitlab
end
end
- def archive_metadata(ref, storage_path, project_path, format = "tar.gz", append_sha:, path: nil)
+ def archive_metadata(ref, storage_path, project_path, format = "tar.gz", append_sha:)
ref ||= root_ref
commit = Gitlab::Git::Commit.find(self, ref)
return {} if commit.nil?
- prefix = archive_prefix(ref, commit.id, project_path, append_sha: append_sha, path: path)
+ prefix = archive_prefix(ref, commit.id, project_path, append_sha: append_sha)
{
'ArchivePrefix' => prefix,
@@ -248,14 +248,13 @@ module Gitlab
# This is both the filename of the archive (missing the extension) and the
# name of the top-level member of the archive under which all files go
- def archive_prefix(ref, sha, project_path, append_sha:, path:)
+ def archive_prefix(ref, sha, project_path, append_sha:)
append_sha = (ref != sha) if append_sha.nil?
formatted_ref = ref.tr('/', '-')
prefix_segments = [project_path, formatted_ref]
prefix_segments << sha if append_sha
- prefix_segments << path.tr('/', '-').gsub(%r{^/|/$}, '') if path
prefix_segments.join('-')
end
@@ -466,7 +465,7 @@ module Gitlab
@refs_hash = Hash.new { |h, k| h[k] = [] }
(tags + branches).each do |ref|
- next unless ref.target && ref.name
+ next unless ref.target && ref.name && ref.dereferenced_target&.id
@refs_hash[ref.dereferenced_target.id] << ref.name
end
diff --git a/lib/gitlab/import_export/after_export_strategies/web_upload_strategy.rb b/lib/gitlab/import_export/after_export_strategies/web_upload_strategy.rb
index b30900f7c61..fcf6a25ab00 100644
--- a/lib/gitlab/import_export/after_export_strategies/web_upload_strategy.rb
+++ b/lib/gitlab/import_export/after_export_strategies/web_upload_strategy.rb
@@ -8,7 +8,7 @@ module Gitlab
POST_METHOD = 'POST'.freeze
INVALID_HTTP_METHOD = 'invalid. Only PUT and POST methods allowed.'.freeze
- validates :url, url: true
+ validates :url, addressable_url: true
validate do
unless [PUT_METHOD, POST_METHOD].include?(http_method.upcase)
diff --git a/lib/gitlab/kubernetes/namespace.rb b/lib/gitlab/kubernetes/namespace.rb
index 919f19c86d7..8a3bea95a04 100644
--- a/lib/gitlab/kubernetes/namespace.rb
+++ b/lib/gitlab/kubernetes/namespace.rb
@@ -19,11 +19,40 @@ module Gitlab
def create!
resource = ::Kubeclient::Resource.new(metadata: { name: name })
+ log_event(:begin_create)
@client.create_namespace(resource)
end
def ensure_exists!
exists? || create!
+ rescue ::Kubeclient::HttpError => error
+ log_create_failed(error)
+ raise
+ end
+
+ private
+
+ def log_create_failed(error)
+ logger.error({
+ exception: error.class.name,
+ status_code: error.error_code,
+ namespace: name,
+ class_name: self.class.name,
+ event: :failed_to_create_namespace,
+ message: error.message
+ })
+ end
+
+ def log_event(event)
+ logger.info(
+ namespace: name,
+ class_name: self.class.name,
+ event: event
+ )
+ end
+
+ def logger
+ @logger ||= Gitlab::Kubernetes::Logger.build
end
end
end
diff --git a/lib/gitlab/legacy_github_import/project_creator.rb b/lib/gitlab/legacy_github_import/project_creator.rb
index ca1a1b8e9bd..b484b69c932 100644
--- a/lib/gitlab/legacy_github_import/project_creator.rb
+++ b/lib/gitlab/legacy_github_import/project_creator.rb
@@ -37,7 +37,7 @@ module Gitlab
end
def visibility_level
- visibility_level = repo.private ? Gitlab::VisibilityLevel::PRIVATE : Gitlab::VisibilityLevel::PUBLIC
+ visibility_level = repo.private ? Gitlab::VisibilityLevel::PRIVATE : @namespace.visibility_level
visibility_level = Gitlab::CurrentSettings.default_project_visibility if Gitlab::CurrentSettings.restricted_visibility_levels.include?(visibility_level)
visibility_level
diff --git a/lib/gitlab/url_blocker.rb b/lib/gitlab/url_blocker.rb
index 9b7b0db9525..641ba70ef83 100644
--- a/lib/gitlab/url_blocker.rb
+++ b/lib/gitlab/url_blocker.rb
@@ -8,7 +8,7 @@ module Gitlab
BlockedUrlError = Class.new(StandardError)
class << self
- def validate!(url, ports: [], protocols: [], allow_localhost: false, allow_local_network: true, ascii_only: false, enforce_user: false, enforce_sanitization: false)
+ def validate!(url, ports: [], schemes: [], allow_localhost: false, allow_local_network: true, ascii_only: false, enforce_user: false, enforce_sanitization: false)
return true if url.nil?
# Param url can be a string, URI or Addressable::URI
@@ -20,7 +20,7 @@ module Gitlab
return true if internal?(uri)
port = get_port(uri)
- validate_protocol!(uri.scheme, protocols)
+ validate_scheme!(uri.scheme, schemes)
validate_port!(port, ports) if ports.any?
validate_user!(uri.user) if enforce_user
validate_hostname!(uri.hostname)
@@ -85,9 +85,9 @@ module Gitlab
raise BlockedUrlError, "Only allowed ports are #{ports.join(', ')}, and any over 1024"
end
- def validate_protocol!(protocol, protocols)
- if protocol.blank? || (protocols.any? && !protocols.include?(protocol))
- raise BlockedUrlError, "Only allowed protocols are #{protocols.join(', ')}"
+ def validate_scheme!(scheme, schemes)
+ if scheme.blank? || (schemes.any? && !schemes.include?(scheme))
+ raise BlockedUrlError, "Only allowed schemes are #{schemes.join(', ')}"
end
end
diff --git a/lib/gitlab/visibility_level.rb b/lib/gitlab/visibility_level.rb
index a3c7de87765..8f9d5cf1e63 100644
--- a/lib/gitlab/visibility_level.rb
+++ b/lib/gitlab/visibility_level.rb
@@ -75,8 +75,8 @@ module Gitlab
user.admin? || allowed_level?(level.to_i)
end
+ # Level should be a numeric value, e.g. `20`
# Return true if the specified level is allowed for the current user.
- # Level should be a numeric value, e.g. `20`.
def allowed_level?(level)
valid_level?(level) && non_restricted_level?(level)
end
diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb
index 533757d2237..0c2acac3d1e 100644
--- a/lib/gitlab/workhorse.rb
+++ b/lib/gitlab/workhorse.rb
@@ -63,26 +63,13 @@ module Gitlab
]
end
- def send_git_archive(repository, ref:, format:, append_sha:, path: nil)
+ def send_git_archive(repository, ref:, format:, append_sha:)
format ||= 'tar.gz'
format = format.downcase
- metadata = repository.archive_metadata(ref, Gitlab.config.gitlab.repository_downloads_path, format, append_sha: append_sha, path: path)
+ params = repository.archive_metadata(ref, Gitlab.config.gitlab.repository_downloads_path, format, append_sha: append_sha)
+ raise "Repository or ref not found" if params.empty?
- raise "Repository or ref not found" if metadata.empty?
-
- params = {
- 'GitalyServer' => gitaly_server_hash(repository),
- 'ArchivePath' => metadata['ArchivePath'],
- 'GetArchiveRequest' => encode_binary(
- Gitaly::GetArchiveRequest.new(
- repository: repository.gitaly_repository,
- commit_id: metadata['CommitId'],
- prefix: metadata['ArchivePrefix'],
- format: archive_format(format),
- path: path.presence || ""
- ).to_proto
- )
- }
+ params['GitalyServer'] = gitaly_server_hash(repository)
# If present DisableCache must be a Boolean. Otherwise workhorse ignores it.
params['DisableCache'] = true if git_archive_cache_disabled?
@@ -233,10 +220,6 @@ module Gitlab
Base64.urlsafe_encode64(JSON.dump(hash))
end
- def encode_binary(binary)
- Base64.urlsafe_encode64(binary)
- end
-
def gitaly_server_hash(repository)
{
address: Gitlab::GitalyClient.address(repository.project.repository_storage),
@@ -255,19 +238,6 @@ module Gitlab
def git_archive_cache_disabled?
ENV['WORKHORSE_ARCHIVE_CACHE_DISABLED'].present? || Feature.enabled?(:workhorse_archive_cache_disabled)
end
-
- def archive_format(format)
- case format
- when "tar.bz2", "tbz", "tbz2", "tb2", "bz2"
- Gitaly::GetArchiveRequest::Format::TAR_BZ2
- when "tar"
- Gitaly::GetArchiveRequest::Format::TAR
- when "zip"
- Gitaly::GetArchiveRequest::Format::ZIP
- else
- Gitaly::GetArchiveRequest::Format::TAR_GZ
- end
- end
end
end
end
diff --git a/lib/tasks/gemojione.rake b/lib/tasks/gemojione.rake
index c24207b134a..560a52053d8 100644
--- a/lib/tasks/gemojione.rake
+++ b/lib/tasks/gemojione.rake
@@ -30,28 +30,33 @@ namespace :gemojione do
# We don't have `node_modules` available in built versions of GitLab
FileUtils.cp_r(Rails.root.join('node_modules', 'emoji-unicode-version', 'emoji-unicode-version-map.json'), File.join(Rails.root, 'fixtures', 'emojis'))
+ dir = Gemojione.images_path
resultant_emoji_map = {}
Gitlab::Emoji.emojis.each do |name, emoji_hash|
# Ignore aliases
unless Gitlab::Emoji.emojis_aliases.key?(name)
+ fpath = File.join(dir, "#{emoji_hash['unicode']}.png")
+ hash_digest = Digest::SHA256.file(fpath).hexdigest
+
category = emoji_hash['category']
if name == 'gay_pride_flag'
category = 'flags'
end
entry = {
- c: category,
- e: emoji_hash['moji'],
- d: emoji_hash['description'],
- u: Gitlab::Emoji.emoji_unicode_version(name)
+ category: category,
+ moji: emoji_hash['moji'],
+ description: emoji_hash['description'],
+ unicodeVersion: Gitlab::Emoji.emoji_unicode_version(name),
+ digest: hash_digest
}
resultant_emoji_map[name] = entry
end
end
- out = File.join(Rails.root, 'public', '-', 'emojis', '1', 'emojis.json')
+ out = File.join(Rails.root, 'fixtures', 'emojis', 'digests.json')
File.open(out, 'w') do |handle|
handle.write(JSON.pretty_generate(resultant_emoji_map))
end
diff --git a/lib/tasks/karma.rake b/lib/tasks/karma.rake
index 02987f2beef..2dc14183fa3 100644
--- a/lib/tasks/karma.rake
+++ b/lib/tasks/karma.rake
@@ -1,7 +1,7 @@
unless Rails.env.production?
namespace :karma do
desc 'GitLab | Karma | Generate fixtures for JavaScript tests'
- task fixtures: ['karma:copy_emojis_from_public_folder', 'karma:rspec_fixtures']
+ task fixtures: ['karma:rspec_fixtures']
desc 'GitLab | Karma | Generate fixtures using RSpec'
RSpec::Core::RakeTask.new(:rspec_fixtures, [:pattern]) do |t, args|
@@ -11,14 +11,6 @@ unless Rails.env.production?
t.rspec_opts = '--format documentation'
end
- desc 'GitLab | Karma | Copy emojis file'
- task :copy_emojis_from_public_folder do
- # Copying the emojis.json from the public folder
- fixture_file_name = Rails.root.join('spec/javascripts/fixtures/emojis/emojis.json')
- FileUtils.mkdir_p(File.dirname(fixture_file_name))
- FileUtils.cp(Rails.root.join('public/-/emojis/1/emojis.json'), fixture_file_name)
- end
-
desc 'GitLab | Karma | Run JavaScript tests'
task tests: ['yarn:check'] do
sh "yarn run karma" do |ok, res|
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 0e04b67f5b8..4f401acccf9 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -132,6 +132,12 @@ msgstr ""
msgid "%{label_for_message} unavailable"
msgstr ""
+msgid "%{level_name} is not allowed in a %{group_level_name} group."
+msgstr ""
+
+msgid "%{level_name} is not allowed since the fork source project has lower visibility."
+msgstr ""
+
msgid "%{level_name} visibility has been restricted by the administrator."
msgstr ""
@@ -203,6 +209,12 @@ msgstr ""
msgid "%{user_name} profile page"
msgstr ""
+msgid "'%{level}' is not a valid visibility level"
+msgstr ""
+
+msgid "'%{source}' is not a import source"
+msgstr ""
+
msgid "(external source)"
msgstr ""
@@ -867,6 +879,9 @@ msgstr ""
msgid "Any"
msgstr ""
+msgid "Any encrypted tokens"
+msgstr ""
+
msgid "Appearance"
msgstr ""
@@ -912,15 +927,27 @@ msgstr ""
msgid "Archive jobs"
msgstr ""
+msgid "Archive project"
+msgstr ""
+
msgid "Archived project! Repository and other project resources are read-only"
msgstr ""
msgid "Archived projects"
msgstr ""
+msgid "Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>"
+msgstr ""
+
msgid "Are you sure"
msgstr ""
+msgid "Are you sure that you want to archive this project?"
+msgstr ""
+
+msgid "Are you sure that you want to unarchive this project?"
+msgstr ""
+
msgid "Are you sure you want to delete this pipeline schedule?"
msgstr ""
@@ -963,6 +990,18 @@ msgstr ""
msgid "Artifacts"
msgstr ""
+msgid "AsanaService|%{user} pushed to branch %{branch} of %{project_name} ( %{commit_url} ):"
+msgstr ""
+
+msgid "AsanaService|Asana - Teamwork without email"
+msgstr ""
+
+msgid "AsanaService|Comma-separated list of branches which will be automatically inspected. Leave blank to include all branches."
+msgstr ""
+
+msgid "AsanaService|User Personal Access Token. User must have access to task, all comments will be attributed to this user."
+msgstr ""
+
msgid "Ask your group maintainer to set up a group Runner."
msgstr ""
@@ -1206,6 +1245,30 @@ msgstr ""
msgid "Badges|e.g. %{exampleUrl}"
msgstr ""
+msgid "BambooService|A continuous integration and build server"
+msgstr ""
+
+msgid "BambooService|A user with API access, if applicable"
+msgstr ""
+
+msgid "BambooService|Atlassian Bamboo CI"
+msgstr ""
+
+msgid "BambooService|Bamboo build plan key like KEY"
+msgstr ""
+
+msgid "BambooService|Bamboo root URL like https://bamboo.example.com"
+msgstr ""
+
+msgid "BambooService|You must set up automatic revision labeling and a repository trigger in Bamboo."
+msgstr ""
+
+msgid "Be careful. Changing the project's namespace can have unintended side effects."
+msgstr ""
+
+msgid "Be careful. Renaming a project's repository can have unintended side effects."
+msgstr ""
+
msgid "Begin with the selected commit"
msgstr ""
@@ -1413,6 +1476,9 @@ msgstr ""
msgid "CI Lint"
msgstr ""
+msgid "CI variables"
+msgstr ""
+
msgid "CI/CD"
msgstr ""
@@ -1491,6 +1557,9 @@ msgstr ""
msgid "Cannot modify managed Kubernetes cluster"
msgstr ""
+msgid "Cannot refer to a group milestone by an internal id!"
+msgstr ""
+
msgid "Cannot render the image. Maximum character count (%{charLimit}) has been exceeded."
msgstr ""
@@ -1503,6 +1572,9 @@ msgstr ""
msgid "Certificate (PEM)"
msgstr ""
+msgid "Change path"
+msgstr ""
+
msgid "Change permissions"
msgstr ""
@@ -1707,6 +1779,9 @@ msgstr ""
msgid "CiVariable|Validation failed"
msgstr ""
+msgid "Classification Label (optional)"
+msgstr ""
+
msgid "ClassificationLabelUnavailable|is unavailable: %{reason}"
msgstr ""
@@ -2408,6 +2483,12 @@ msgstr ""
msgid "Configure the way a user creates a new account."
msgstr ""
+msgid "Confirm"
+msgstr ""
+
+msgid "Confirmation required"
+msgstr ""
+
msgid "Connect"
msgstr ""
@@ -2417,6 +2498,9 @@ msgstr ""
msgid "Container Registry"
msgstr ""
+msgid "Container registry images"
+msgstr ""
+
msgid "ContainerRegistry|Created"
msgstr ""
@@ -2561,6 +2645,9 @@ msgstr ""
msgid "Could not authorize chat nickname. Try again!"
msgstr ""
+msgid "Could not change HEAD: branch '%{branch}' does not exist"
+msgstr ""
+
msgid "Could not connect to FogBugz, check your URL"
msgstr ""
@@ -3070,6 +3157,12 @@ msgstr ""
msgid "Discard draft"
msgstr ""
+msgid "DiscordService|Discord Notifications"
+msgstr ""
+
+msgid "DiscordService|Receive event notifications in Discord"
+msgstr ""
+
msgid "Discover projects, groups and snippets. Share your projects with others"
msgstr ""
@@ -3109,10 +3202,22 @@ msgstr ""
msgid "Download asset"
msgstr ""
-msgid "Download source code"
+msgid "Download export"
+msgstr ""
+
+msgid "Download tar"
+msgstr ""
+
+msgid "Download tar.bz2"
msgstr ""
-msgid "Download this directory"
+msgid "Download tar.gz"
+msgstr ""
+
+msgid "Download zip"
+msgstr ""
+
+msgid "DownloadArtifacts|Download"
msgstr ""
msgid "DownloadCommit|Email Patches"
@@ -3184,13 +3289,61 @@ msgstr ""
msgid "Email patch"
msgstr ""
+msgid "Email the pipelines status to a list of recipients."
+msgstr ""
+
+msgid "EmailError|It appears that the email is blank. Make sure your reply is at the top of the email, we can't process inline replies."
+msgstr ""
+
+msgid "EmailError|The thread you are replying to no longer exists, perhaps it was deleted? If you believe this is in error, contact a staff member."
+msgstr ""
+
+msgid "EmailError|We couldn't figure out what the email is for. Please create your issue or comment through the web interface."
+msgstr ""
+
+msgid "EmailError|We couldn't figure out what the email is in reply to. Please create your comment through the web interface."
+msgstr ""
+
+msgid "EmailError|We couldn't figure out what user corresponds to the email. Please create your comment through the web interface."
+msgstr ""
+
+msgid "EmailError|We couldn't find the project. Please check if there's any typo."
+msgstr ""
+
+msgid "EmailError|You are not allowed to perform this action. If you believe this is in error, contact a staff member."
+msgstr ""
+
+msgid "EmailError|Your account has been blocked. If you believe this is in error, contact a staff member."
+msgstr ""
+
msgid "Emails"
msgstr ""
-msgid "Embed"
+msgid "Emails separated by comma"
+msgstr ""
+
+msgid "EmailsOnPushService|Disable code diffs"
+msgstr ""
+
+msgid "EmailsOnPushService|Don't include possibly sensitive code diffs in notification body."
+msgstr ""
+
+msgid "EmailsOnPushService|Email the commits and diff of each push to a list of recipients."
msgstr ""
-msgid "Emojis|Something went wrong while loading emojis."
+msgid "EmailsOnPushService|Emails on push"
+msgstr ""
+
+msgid "EmailsOnPushService|Emails separated by whitespace"
+msgstr ""
+
+msgid "EmailsOnPushService|Send from committer"
+msgstr ""
+
+msgid "EmailsOnPushService|Send notifications from the committer's email address if the domain is part of the domain GitLab is running on (e.g. %{domains})."
+msgstr ""
+
+msgid "Embed"
msgstr ""
msgid "Empty file"
@@ -3508,6 +3661,9 @@ msgstr ""
msgid "Error while loading the merge request. Please try again."
msgstr ""
+msgid "Error while migrating %{upload_id}: %{error_message}"
+msgstr ""
+
msgid "Error with Akismet. Please check the logs for more info."
msgstr ""
@@ -3646,6 +3802,12 @@ msgstr ""
msgid "Explore public groups"
msgstr ""
+msgid "Export project"
+msgstr ""
+
+msgid "Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the \"New Project\" page."
+msgstr ""
+
msgid "External Classification Policy Authorization"
msgstr ""
@@ -3664,15 +3826,21 @@ msgstr ""
msgid "External authorization request timeout"
msgstr ""
-msgid "ExternalAuthorizationService|Classification Label"
-msgstr ""
-
msgid "ExternalAuthorizationService|Classification label"
msgstr ""
msgid "ExternalAuthorizationService|When no classification label is set the default label `%{default_label}` will be used."
msgstr ""
+msgid "ExternalWikiService|External Wiki"
+msgstr ""
+
+msgid "ExternalWikiService|Replaces the link to the internal wiki with a link to an external wiki."
+msgstr ""
+
+msgid "ExternalWikiService|The URL of the external Wiki"
+msgstr ""
+
msgid "Facebook"
msgstr ""
@@ -3682,12 +3850,18 @@ msgstr ""
msgid "Failed Jobs"
msgstr ""
+msgid "Failed create wiki"
+msgstr ""
+
msgid "Failed to change the owner"
msgstr ""
msgid "Failed to check related branches."
msgstr ""
+msgid "Failed to create repository via gitlab-shell"
+msgstr ""
+
msgid "Failed to create resources"
msgstr ""
@@ -3843,6 +4017,12 @@ msgstr ""
msgid "FirstPushedBy|pushed by"
msgstr ""
+msgid "FlowdockService|Flowdock Git source token"
+msgstr ""
+
+msgid "FlowdockService|Flowdock is a collaboration web app for technical teams."
+msgstr ""
+
msgid "FogBugz Email"
msgstr ""
@@ -3948,6 +4128,9 @@ msgstr ""
msgid "Generate a default set of labels"
msgstr ""
+msgid "Generate new export"
+msgstr ""
+
msgid "Geo"
msgstr ""
@@ -4313,6 +4496,9 @@ msgstr ""
msgid "Hook was successfully updated."
msgstr ""
+msgid "Housekeeping"
+msgstr ""
+
msgid "Housekeeping successfully started"
msgstr ""
@@ -4523,6 +4709,9 @@ msgstr ""
msgid "Incompatible Project"
msgstr ""
+msgid "Incompatible options set!"
+msgstr ""
+
msgid "Indicates whether this runner can pick jobs without tags"
msgstr ""
@@ -4598,6 +4787,9 @@ msgstr ""
msgid "Invalid Login or password"
msgstr ""
+msgid "Invalid feature"
+msgstr ""
+
msgid "Invalid file."
msgstr ""
@@ -4607,6 +4799,9 @@ msgstr ""
msgid "Invalid pin code"
msgstr ""
+msgid "Invalid repository path"
+msgstr ""
+
msgid "Invalid two-factor code."
msgstr ""
@@ -4649,6 +4844,9 @@ msgstr ""
msgid "Issues can be bugs, tasks or ideas to be discussed. Also, issues are searchable and filterable."
msgstr ""
+msgid "Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities"
+msgstr ""
+
msgid "Issues, merge requests, pushes, and comments."
msgstr ""
@@ -4664,6 +4862,48 @@ msgstr ""
msgid "January"
msgstr ""
+msgid "JiraService|Events for %{noteable_model_name} are disabled."
+msgstr ""
+
+msgid "JiraService|If different from Web URL"
+msgstr ""
+
+msgid "JiraService|JIRA API URL"
+msgstr ""
+
+msgid "JiraService|JIRA comments will be created when an issue gets referenced in a commit."
+msgstr ""
+
+msgid "JiraService|JIRA comments will be created when an issue gets referenced in a merge request."
+msgstr ""
+
+msgid "JiraService|Jira issue tracker"
+msgstr ""
+
+msgid "JiraService|Password or API token"
+msgstr ""
+
+msgid "JiraService|Transition ID(s)"
+msgstr ""
+
+msgid "JiraService|Use , or ; to separate multiple transition IDs"
+msgstr ""
+
+msgid "JiraService|Use a password for server version and an API token for cloud version"
+msgstr ""
+
+msgid "JiraService|Use a username for server version and an email for cloud version"
+msgstr ""
+
+msgid "JiraService|Username or Email"
+msgstr ""
+
+msgid "JiraService|Web URL"
+msgstr ""
+
+msgid "JiraService|transition ids can have only numbers which can be split with , or ;"
+msgstr ""
+
msgid "Job"
msgstr ""
@@ -4679,9 +4919,18 @@ msgstr ""
msgid "Job has been successfully erased!"
msgstr ""
+msgid "Job has wrong arguments format."
+msgstr ""
+
+msgid "Job is missing the `model_type` argument."
+msgstr ""
+
msgid "Job is stuck. Check runners."
msgstr ""
+msgid "Job traces and artifacts"
+msgstr ""
+
msgid "Job was retried"
msgstr ""
@@ -4790,6 +5039,9 @@ msgstr ""
msgid "LFS"
msgstr ""
+msgid "LFS objects"
+msgstr ""
+
msgid "LFSStatus|Disabled"
msgstr ""
@@ -5088,6 +5340,9 @@ msgstr ""
msgid "Maximum job timeout"
msgstr ""
+msgid "Maximum job timeout has a value which could not be accepted"
+msgstr ""
+
msgid "Maximum push size (MB)"
msgstr ""
@@ -5262,6 +5517,12 @@ msgstr ""
msgid "Metrics|Unexpected metrics data response from prometheus endpoint"
msgstr ""
+msgid "Migrated %{success_count}/%{total_count} files."
+msgstr ""
+
+msgid "Migration successful."
+msgstr ""
+
msgid "Milestone"
msgstr ""
@@ -5355,12 +5616,21 @@ msgstr ""
msgid "Most stars"
msgstr ""
+msgid "Mount point %{mounted_as} not found in %{model_class}."
+msgstr ""
+
msgid "Move"
msgstr ""
msgid "Move issue"
msgstr ""
+msgid "Multiple model types found: %{model_types}"
+msgstr ""
+
+msgid "Multiple uploaders found: %{uploader_types}"
+msgstr ""
+
msgid "Name"
msgstr ""
@@ -5373,7 +5643,7 @@ msgstr ""
msgid "Name:"
msgstr ""
-msgid "Naming, tags, avatar"
+msgid "Naming, topics, avatar"
msgstr ""
msgid "Naming, visibility"
@@ -5741,6 +6011,12 @@ msgstr ""
msgid "OfSearchInADropdown|Filter"
msgstr ""
+msgid "Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source."
+msgstr ""
+
+msgid "Once the exported file is ready, you will receive a notification email with a download link, or you can download it from this page."
+msgstr ""
+
msgid "One more item"
msgid_plural "%d more items"
msgstr[0] ""
@@ -5893,6 +6169,9 @@ msgstr ""
msgid "Paste your public SSH key, which is usually contained in the file '~/.ssh/id_rsa.pub' and begins with 'ssh-rsa'. Don't use your private SSH key."
msgstr ""
+msgid "Path"
+msgstr ""
+
msgid "Path, transfer, remove"
msgstr ""
@@ -6010,6 +6289,9 @@ msgstr ""
msgid "Pipelines charts"
msgstr ""
+msgid "Pipelines emails"
+msgstr ""
+
msgid "Pipelines for last month"
msgstr ""
@@ -6133,6 +6415,15 @@ msgstr ""
msgid "Pipeline|with stages"
msgstr ""
+msgid "PivotalTrackerService|Comma-separated list of branches which will be automatically inspected. Leave blank to include all branches."
+msgstr ""
+
+msgid "PivotalTrackerService|Pivotal Tracker API token."
+msgstr ""
+
+msgid "PivotalTrackerService|Project Management Software (Source Commits Endpoint)"
+msgstr ""
+
msgid "Plain diff"
msgstr ""
@@ -6190,6 +6481,9 @@ msgstr ""
msgid "Please use this form to report users to GitLab who create spam issues, comments or behave inappropriately."
msgstr ""
+msgid "Please wait a moment, this page will automatically refresh when ready."
+msgstr ""
+
msgid "Please wait while we import the repository for you. Refresh at will."
msgstr ""
@@ -6217,9 +6511,6 @@ msgstr ""
msgid "Preview payload"
msgstr ""
-msgid "Previous Artifacts"
-msgstr ""
-
msgid "Prioritize"
msgstr ""
@@ -6529,15 +6820,30 @@ msgstr ""
msgid "Project Badges"
msgstr ""
+msgid "Project ID"
+msgstr ""
+
msgid "Project URL"
msgstr ""
msgid "Project access must be granted explicitly to each user."
msgstr ""
+msgid "Project and wiki repositories"
+msgstr ""
+
msgid "Project avatar"
msgstr ""
+msgid "Project cannot be shared with the group it is in or one of its ancestors."
+msgstr ""
+
+msgid "Project configuration, including services"
+msgstr ""
+
+msgid "Project description (optional)"
+msgstr ""
+
msgid "Project details"
msgstr ""
@@ -6568,6 +6874,12 @@ msgstr ""
msgid "Project slug"
msgstr ""
+msgid "Project uploads"
+msgstr ""
+
+msgid "Project visibility level will be changed to match namespace rules when transferring to a group."
+msgstr ""
+
msgid "Project:"
msgstr ""
@@ -6787,6 +7099,45 @@ msgstr ""
msgid "Push to create a project"
msgstr ""
+msgid "PushoverService|%{user_name} deleted branch \"%{ref}\"."
+msgstr ""
+
+msgid "PushoverService|%{user_name} push to branch \"%{ref}\"."
+msgstr ""
+
+msgid "PushoverService|%{user_name} pushed new branch \"%{ref}\"."
+msgstr ""
+
+msgid "PushoverService|High Priority"
+msgstr ""
+
+msgid "PushoverService|Leave blank for all active devices"
+msgstr ""
+
+msgid "PushoverService|Low Priority"
+msgstr ""
+
+msgid "PushoverService|Lowest Priority"
+msgstr ""
+
+msgid "PushoverService|Normal Priority"
+msgstr ""
+
+msgid "PushoverService|Pushover makes it easy to get real-time notifications on your Android device, iPhone, iPad, and Desktop."
+msgstr ""
+
+msgid "PushoverService|See project %{project_full_name}"
+msgstr ""
+
+msgid "PushoverService|Total commits count: %{total_commits_count}"
+msgstr ""
+
+msgid "PushoverService|Your application key"
+msgstr ""
+
+msgid "PushoverService|Your user key"
+msgstr ""
+
msgid "Quick actions can be used in the issues description and comment boxes."
msgstr ""
@@ -6873,6 +7224,9 @@ msgstr ""
msgid "Remind later"
msgstr ""
+msgid "Remote object has no absolute path."
+msgstr ""
+
msgid "Remove"
msgstr ""
@@ -6882,6 +7236,9 @@ msgstr ""
msgid "Remove avatar"
msgstr ""
+msgid "Remove fork relationship"
+msgstr ""
+
msgid "Remove group"
msgstr ""
@@ -6900,9 +7257,15 @@ msgstr ""
msgid "Removed group can not be restored!"
msgstr ""
+msgid "Removed projects cannot be restored!"
+msgstr ""
+
msgid "Removing group will cause all child projects and resources to be removed."
msgstr ""
+msgid "Removing the project will delete its repository and all related resources including issues, merge requests etc."
+msgstr ""
+
msgid "Rename"
msgstr ""
@@ -7091,6 +7454,9 @@ msgstr ""
msgid "Revoked personal access token %{personal_access_token_name}!"
msgstr ""
+msgid "Run housekeeping"
+msgstr ""
+
msgid "Run untagged jobs"
msgstr ""
@@ -7145,6 +7511,9 @@ msgstr ""
msgid "Running…"
msgstr ""
+msgid "Runs a number of housekeeping tasks within the current repository, such as compressing file revisions and removing unreachable objects."
+msgstr ""
+
msgid "SSH Keys"
msgstr ""
@@ -7184,6 +7553,9 @@ msgstr ""
msgid "Save variables"
msgstr ""
+msgid "Saving project."
+msgstr ""
+
msgid "Schedule a new pipeline"
msgstr ""
@@ -7307,6 +7679,9 @@ msgstr ""
msgid "Select a namespace to fork the project"
msgstr ""
+msgid "Select a new namespace"
+msgstr ""
+
msgid "Select a timezone"
msgstr ""
@@ -7361,6 +7736,9 @@ msgstr ""
msgid "Sep"
msgstr ""
+msgid "Separate topics with commas."
+msgstr ""
+
msgid "September"
msgstr ""
@@ -8202,6 +8580,12 @@ msgstr ""
msgid "The file has been successfully deleted."
msgstr ""
+msgid "The following items will NOT be exported:"
+msgstr ""
+
+msgid "The following items will be exported:"
+msgstr ""
+
msgid "The fork relationship has been removed."
msgstr ""
@@ -8256,6 +8640,9 @@ msgstr ""
msgid "The name %{entryName} is already taken in this directory."
msgstr ""
+msgid "The number of times an upload record could not find its file"
+msgstr ""
+
msgid "The passphrase required to decrypt the private key. This is optional and the value is encrypted at rest."
msgstr ""
@@ -8283,12 +8670,18 @@ msgstr ""
msgid "The project can be accessed without any authentication."
msgstr ""
+msgid "The project is still being deleted. Please try again later."
+msgstr ""
+
msgid "The project was successfully forked."
msgstr ""
msgid "The project was successfully imported."
msgstr ""
+msgid "The remote mirror took to long to complete."
+msgstr ""
+
msgid "The remote repository is being updated..."
msgstr ""
@@ -8307,6 +8700,9 @@ msgstr ""
msgid "The review stage shows the time from creating the merge request to merging it. The data will automatically be added after you merge your first merge request."
msgstr ""
+msgid "The schedule time must be in the future!"
+msgstr ""
+
msgid "The snippet can be accessed without any authentication."
msgstr ""
@@ -8385,6 +8781,9 @@ msgstr ""
msgid "There are no unstaged changes"
msgstr ""
+msgid "There is already a repository with that name on disk"
+msgstr ""
+
msgid "There was an error loading users activity calendar."
msgstr ""
@@ -8430,6 +8829,9 @@ msgstr ""
msgid "This GitLab instance does not provide any shared Runners yet. Instance administrators can register shared Runners in the admin area."
msgstr ""
+msgid "This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention."
+msgstr ""
+
msgid "This application was created by %{link_to_owner}."
msgstr ""
@@ -8478,6 +8880,9 @@ msgstr ""
msgid "This group does not provide any group Runners yet."
msgstr ""
+msgid "This is a \"Ghost User\", created to hold all issues authored by users that have since been deleted. This user cannot be removed."
+msgstr ""
+
msgid "This is a confidential issue."
msgstr ""
@@ -8622,6 +9027,9 @@ msgstr ""
msgid "This user will be the author of all events in the activity feed that are the result of an update, like new branches being created or new commits being pushed to existing branches."
msgstr ""
+msgid "This will remove the fork relationship to source project"
+msgstr ""
+
msgid "Time before an issue gets scheduled"
msgstr ""
@@ -8923,6 +9331,9 @@ msgstr ""
msgid "Too many changes to show."
msgstr ""
+msgid "Topics"
+msgstr ""
+
msgid "Total Time"
msgstr ""
@@ -8935,6 +9346,9 @@ msgstr ""
msgid "Track time with quick actions"
msgstr ""
+msgid "Transfer project"
+msgstr ""
+
msgid "Tree view"
msgstr ""
@@ -8995,6 +9409,12 @@ msgstr ""
msgid "Unable to schedule a pipeline to run immediately"
msgstr ""
+msgid "Unarchive project"
+msgstr ""
+
+msgid "Unarchiving the project will restore people's ability to make changes to it. The repository can be committed to, and issues, comments and other entities can be created. <strong>Once active this project shows up in the search and on the dashboard.</strong>"
+msgstr ""
+
msgid "Unblock"
msgstr ""
@@ -9004,6 +9424,12 @@ msgstr ""
msgid "Unfortunately, your email message to GitLab could not be processed."
msgstr ""
+msgid "Unknown encryption strategy: %{encrypted_strategy}!"
+msgstr ""
+
+msgid "Unknown format"
+msgstr ""
+
msgid "Unlock"
msgstr ""
@@ -9076,7 +9502,7 @@ msgstr ""
msgid "Update your group name, description, avatar, and visibility."
msgstr ""
-msgid "Update your project name, tags, description and avatar."
+msgid "Update your project name, topics, description and avatar."
msgstr ""
msgid "Updating"
@@ -9100,6 +9526,9 @@ msgstr ""
msgid "Upload file"
msgstr ""
+msgid "Upload file does not exist"
+msgstr ""
+
msgid "Upload object map"
msgstr ""
@@ -9265,6 +9694,9 @@ msgstr ""
msgid "Users were successfully added."
msgstr ""
+msgid "Using required encryption strategy when encrypted field is missing!"
+msgstr ""
+
msgid "Validate"
msgstr ""
@@ -9400,6 +9832,9 @@ msgstr ""
msgid "Web terminal"
msgstr ""
+msgid "Webhooks"
+msgstr ""
+
msgid "Webhooks Help"
msgstr ""
@@ -9681,6 +10116,9 @@ msgstr ""
msgid "You can only merge once the items above are resolved"
msgstr ""
+msgid "You can only transfer the project to namespaces you manage."
+msgstr ""
+
msgid "You can resolve the merge conflict using either the Interactive mode, by choosing %{use_ours} or %{use_theirs} buttons, or by editing the files directly. Commit these changes into %{branch_name}"
msgstr ""
@@ -9771,6 +10209,9 @@ msgstr ""
msgid "You will lose all the unstaged changes you've made in this project. This action cannot be undone."
msgstr ""
+msgid "You will need to update your local repositories to point to the new location."
+msgstr ""
+
msgid "You will not get any notifications via email"
msgstr ""
@@ -9837,6 +10278,9 @@ msgstr ""
msgid "Your Todos"
msgstr ""
+msgid "Your U2F device did not send a valid JSON response."
+msgstr ""
+
msgid "Your U2F device needs to be set up. Plug it in (if not already) and click the button on the left."
msgstr ""
@@ -9873,6 +10317,9 @@ msgstr ""
msgid "Your comment will not be visible to the public."
msgstr ""
+msgid "Your deployment services will be broken, you will need to manually fix the services after renaming."
+msgstr ""
+
msgid "Your device was successfully set up! Give it a name and register it with the GitLab server."
msgstr ""
@@ -9915,6 +10362,12 @@ msgstr ""
msgid "allowed to fail"
msgstr ""
+msgid "already being used for another group or project milestone."
+msgstr ""
+
+msgid "already shared with this group"
+msgstr ""
+
msgid "among other things"
msgstr ""
@@ -9927,6 +10380,15 @@ msgstr ""
msgid "branch name"
msgstr ""
+msgid "cannot be changed if a personal project has container registry tags."
+msgstr ""
+
+msgid "cannot be enabled unless all domains have TLS certificates"
+msgstr ""
+
+msgid "cannot include leading slash or directory traversal."
+msgstr ""
+
msgid "commented on %{link_to_project}"
msgstr ""
@@ -9970,9 +10432,15 @@ msgstr[1] ""
msgid "done"
msgstr ""
+msgid "element is not a hierarchy"
+msgstr ""
+
msgid "enabled"
msgstr ""
+msgid "encrypted: needs to be a :required, :optional or :migrating!"
+msgstr ""
+
msgid "error"
msgstr ""
@@ -10006,6 +10474,9 @@ msgstr ""
msgid "group"
msgstr ""
+msgid "has already been taken"
+msgstr ""
+
msgid "here"
msgstr ""
@@ -10033,6 +10504,9 @@ msgstr ""
msgid "is not a valid X509 certificate."
msgstr ""
+msgid "is not an email you own"
+msgstr ""
+
msgid "issue boards"
msgstr ""
@@ -10065,6 +10539,9 @@ msgid_plural "merge requests"
msgstr[0] ""
msgstr[1] ""
+msgid "milestone should belong either to a project or a group."
+msgstr ""
+
msgid "missing"
msgstr ""
@@ -10272,9 +10749,15 @@ msgstr ""
msgid "mrWidget|to be merged automatically when the pipeline succeeds"
msgstr ""
+msgid "must be greater than start date"
+msgstr ""
+
msgid "n/a"
msgstr ""
+msgid "needs to be beetween 10 minutes and 1 month"
+msgstr ""
+
msgid "new merge request"
msgstr ""
@@ -10362,6 +10845,9 @@ msgstr ""
msgid "source diff"
msgstr ""
+msgid "specified top is not part of the tree"
+msgstr ""
+
msgid "spendCommand|%{slash_command} will update the sum of the time spent."
msgstr ""
diff --git a/public/-/emojis/1/emojis.json b/public/-/emojis/1/emojis.json
deleted file mode 100644
index 20a564720d1..00000000000
--- a/public/-/emojis/1/emojis.json
+++ /dev/null
@@ -1,10760 +0,0 @@
-{
- "100": {
- "c": "symbols",
- "e": "💯",
- "d": "hundred points symbol",
- "u": "6.0"
- },
- "1234": {
- "c": "symbols",
- "e": "🔢",
- "d": "input symbol for numbers",
- "u": "6.0"
- },
- "8ball": {
- "c": "activity",
- "e": "🎱",
- "d": "billiards",
- "u": "6.0"
- },
- "a": {
- "c": "symbols",
- "e": "🅰",
- "d": "negative squared latin capital letter a",
- "u": "6.0"
- },
- "ab": {
- "c": "symbols",
- "e": "🆎",
- "d": "negative squared ab",
- "u": "6.0"
- },
- "abc": {
- "c": "symbols",
- "e": "🔤",
- "d": "input symbol for latin letters",
- "u": "6.0"
- },
- "abcd": {
- "c": "symbols",
- "e": "🔡",
- "d": "input symbol for latin small letters",
- "u": "6.0"
- },
- "accept": {
- "c": "symbols",
- "e": "🉑",
- "d": "circled ideograph accept",
- "u": "6.0"
- },
- "aerial_tramway": {
- "c": "travel",
- "e": "🚡",
- "d": "aerial tramway",
- "u": "6.0"
- },
- "airplane": {
- "c": "travel",
- "e": "✈",
- "d": "airplane",
- "u": "1.1"
- },
- "airplane_arriving": {
- "c": "travel",
- "e": "🛬",
- "d": "airplane arriving",
- "u": "7.0"
- },
- "airplane_departure": {
- "c": "travel",
- "e": "🛫",
- "d": "airplane departure",
- "u": "7.0"
- },
- "airplane_small": {
- "c": "travel",
- "e": "🛩",
- "d": "small airplane",
- "u": "7.0"
- },
- "alarm_clock": {
- "c": "objects",
- "e": "⏰",
- "d": "alarm clock",
- "u": "6.0"
- },
- "alembic": {
- "c": "objects",
- "e": "⚗",
- "d": "alembic",
- "u": "4.1"
- },
- "alien": {
- "c": "people",
- "e": "👽",
- "d": "extraterrestrial alien",
- "u": "6.0"
- },
- "ambulance": {
- "c": "travel",
- "e": "🚑",
- "d": "ambulance",
- "u": "6.0"
- },
- "amphora": {
- "c": "objects",
- "e": "🏺",
- "d": "amphora",
- "u": "8.0"
- },
- "anchor": {
- "c": "travel",
- "e": "⚓",
- "d": "anchor",
- "u": "4.1"
- },
- "angel": {
- "c": "people",
- "e": "👼",
- "d": "baby angel",
- "u": "6.0"
- },
- "angel_tone1": {
- "c": "people",
- "e": "👼🏻",
- "d": "baby angel tone 1",
- "u": "8.0"
- },
- "angel_tone2": {
- "c": "people",
- "e": "👼🏼",
- "d": "baby angel tone 2",
- "u": "8.0"
- },
- "angel_tone3": {
- "c": "people",
- "e": "👼🏽",
- "d": "baby angel tone 3",
- "u": "8.0"
- },
- "angel_tone4": {
- "c": "people",
- "e": "👼🏾",
- "d": "baby angel tone 4",
- "u": "8.0"
- },
- "angel_tone5": {
- "c": "people",
- "e": "👼🏿",
- "d": "baby angel tone 5",
- "u": "8.0"
- },
- "anger": {
- "c": "symbols",
- "e": "💢",
- "d": "anger symbol",
- "u": "6.0"
- },
- "anger_right": {
- "c": "symbols",
- "e": "🗯",
- "d": "right anger bubble",
- "u": "7.0"
- },
- "angry": {
- "c": "people",
- "e": "😠",
- "d": "angry face",
- "u": "6.0"
- },
- "ant": {
- "c": "nature",
- "e": "🐜",
- "d": "ant",
- "u": "6.0"
- },
- "apple": {
- "c": "food",
- "e": "🍎",
- "d": "red apple",
- "u": "6.0"
- },
- "aquarius": {
- "c": "symbols",
- "e": "♒",
- "d": "aquarius",
- "u": "1.1"
- },
- "aries": {
- "c": "symbols",
- "e": "♈",
- "d": "aries",
- "u": "1.1"
- },
- "arrow_backward": {
- "c": "symbols",
- "e": "◀",
- "d": "black left-pointing triangle",
- "u": "1.1"
- },
- "arrow_double_down": {
- "c": "symbols",
- "e": "⏬",
- "d": "black down-pointing double triangle",
- "u": "6.0"
- },
- "arrow_double_up": {
- "c": "symbols",
- "e": "⏫",
- "d": "black up-pointing double triangle",
- "u": "6.0"
- },
- "arrow_down": {
- "c": "symbols",
- "e": "⬇",
- "d": "downwards black arrow",
- "u": "4.0"
- },
- "arrow_down_small": {
- "c": "symbols",
- "e": "🔽",
- "d": "down-pointing small red triangle",
- "u": "6.0"
- },
- "arrow_forward": {
- "c": "symbols",
- "e": "▶",
- "d": "black right-pointing triangle",
- "u": "1.1"
- },
- "arrow_heading_down": {
- "c": "symbols",
- "e": "⤵",
- "d": "arrow pointing rightwards then curving downwards",
- "u": "3.2"
- },
- "arrow_heading_up": {
- "c": "symbols",
- "e": "⤴",
- "d": "arrow pointing rightwards then curving upwards",
- "u": "3.2"
- },
- "arrow_left": {
- "c": "symbols",
- "e": "⬅",
- "d": "leftwards black arrow",
- "u": "4.0"
- },
- "arrow_lower_left": {
- "c": "symbols",
- "e": "↙",
- "d": "south west arrow",
- "u": "1.1"
- },
- "arrow_lower_right": {
- "c": "symbols",
- "e": "↘",
- "d": "south east arrow",
- "u": "1.1"
- },
- "arrow_right": {
- "c": "symbols",
- "e": "➡",
- "d": "black rightwards arrow",
- "u": "1.1"
- },
- "arrow_right_hook": {
- "c": "symbols",
- "e": "↪",
- "d": "rightwards arrow with hook",
- "u": "1.1"
- },
- "arrow_up": {
- "c": "symbols",
- "e": "⬆",
- "d": "upwards black arrow",
- "u": "4.0"
- },
- "arrow_up_down": {
- "c": "symbols",
- "e": "↕",
- "d": "up down arrow",
- "u": "1.1"
- },
- "arrow_up_small": {
- "c": "symbols",
- "e": "🔼",
- "d": "up-pointing small red triangle",
- "u": "6.0"
- },
- "arrow_upper_left": {
- "c": "symbols",
- "e": "↖",
- "d": "north west arrow",
- "u": "1.1"
- },
- "arrow_upper_right": {
- "c": "symbols",
- "e": "↗",
- "d": "north east arrow",
- "u": "1.1"
- },
- "arrows_clockwise": {
- "c": "symbols",
- "e": "🔃",
- "d": "clockwise downwards and upwards open circle arrows",
- "u": "6.0"
- },
- "arrows_counterclockwise": {
- "c": "symbols",
- "e": "🔄",
- "d": "anticlockwise downwards and upwards open circle ar",
- "u": "6.0"
- },
- "art": {
- "c": "activity",
- "e": "🎨",
- "d": "artist palette",
- "u": "6.0"
- },
- "articulated_lorry": {
- "c": "travel",
- "e": "🚛",
- "d": "articulated lorry",
- "u": "6.0"
- },
- "asterisk": {
- "c": "symbols",
- "e": "*⃣",
- "d": "keycap asterisk",
- "u": "3.0"
- },
- "astonished": {
- "c": "people",
- "e": "😲",
- "d": "astonished face",
- "u": "6.0"
- },
- "athletic_shoe": {
- "c": "people",
- "e": "👟",
- "d": "athletic shoe",
- "u": "6.0"
- },
- "atm": {
- "c": "symbols",
- "e": "🏧",
- "d": "automated teller machine",
- "u": "6.0"
- },
- "atom": {
- "c": "symbols",
- "e": "⚛",
- "d": "atom symbol",
- "u": "4.1"
- },
- "avocado": {
- "c": "food",
- "e": "🥑",
- "d": "avocado",
- "u": "9.0"
- },
- "b": {
- "c": "symbols",
- "e": "🅱",
- "d": "negative squared latin capital letter b",
- "u": "6.0"
- },
- "baby": {
- "c": "people",
- "e": "👶",
- "d": "baby",
- "u": "6.0"
- },
- "baby_bottle": {
- "c": "food",
- "e": "🍼",
- "d": "baby bottle",
- "u": "6.0"
- },
- "baby_chick": {
- "c": "nature",
- "e": "🐤",
- "d": "baby chick",
- "u": "6.0"
- },
- "baby_symbol": {
- "c": "symbols",
- "e": "🚼",
- "d": "baby symbol",
- "u": "6.0"
- },
- "baby_tone1": {
- "c": "people",
- "e": "👶🏻",
- "d": "baby tone 1",
- "u": "8.0"
- },
- "baby_tone2": {
- "c": "people",
- "e": "👶🏼",
- "d": "baby tone 2",
- "u": "8.0"
- },
- "baby_tone3": {
- "c": "people",
- "e": "👶🏽",
- "d": "baby tone 3",
- "u": "8.0"
- },
- "baby_tone4": {
- "c": "people",
- "e": "👶🏾",
- "d": "baby tone 4",
- "u": "8.0"
- },
- "baby_tone5": {
- "c": "people",
- "e": "👶🏿",
- "d": "baby tone 5",
- "u": "8.0"
- },
- "back": {
- "c": "symbols",
- "e": "🔙",
- "d": "back with leftwards arrow above",
- "u": "6.0"
- },
- "bacon": {
- "c": "food",
- "e": "🥓",
- "d": "bacon",
- "u": "9.0"
- },
- "badminton": {
- "c": "activity",
- "e": "🏸",
- "d": "badminton racquet",
- "u": "8.0"
- },
- "baggage_claim": {
- "c": "symbols",
- "e": "🛄",
- "d": "baggage claim",
- "u": "6.0"
- },
- "balloon": {
- "c": "objects",
- "e": "🎈",
- "d": "balloon",
- "u": "6.0"
- },
- "ballot_box": {
- "c": "objects",
- "e": "🗳",
- "d": "ballot box with ballot",
- "u": "7.0"
- },
- "ballot_box_with_check": {
- "c": "symbols",
- "e": "☑",
- "d": "ballot box with check",
- "u": "1.1"
- },
- "bamboo": {
- "c": "nature",
- "e": "🎍",
- "d": "pine decoration",
- "u": "6.0"
- },
- "banana": {
- "c": "food",
- "e": "🍌",
- "d": "banana",
- "u": "6.0"
- },
- "bangbang": {
- "c": "symbols",
- "e": "‼",
- "d": "double exclamation mark",
- "u": "1.1"
- },
- "bank": {
- "c": "travel",
- "e": "🏦",
- "d": "bank",
- "u": "6.0"
- },
- "bar_chart": {
- "c": "objects",
- "e": "📊",
- "d": "bar chart",
- "u": "6.0"
- },
- "barber": {
- "c": "objects",
- "e": "💈",
- "d": "barber pole",
- "u": "6.0"
- },
- "baseball": {
- "c": "activity",
- "e": "⚾",
- "d": "baseball",
- "u": "5.2"
- },
- "basketball": {
- "c": "activity",
- "e": "🏀",
- "d": "basketball and hoop",
- "u": "6.0"
- },
- "basketball_player": {
- "c": "activity",
- "e": "⛹",
- "d": "person with ball",
- "u": "5.2"
- },
- "basketball_player_tone1": {
- "c": "activity",
- "e": "⛹🏻",
- "d": "person with ball tone 1",
- "u": "8.0"
- },
- "basketball_player_tone2": {
- "c": "activity",
- "e": "⛹🏼",
- "d": "person with ball tone 2",
- "u": "8.0"
- },
- "basketball_player_tone3": {
- "c": "activity",
- "e": "⛹🏽",
- "d": "person with ball tone 3",
- "u": "8.0"
- },
- "basketball_player_tone4": {
- "c": "activity",
- "e": "⛹🏾",
- "d": "person with ball tone 4",
- "u": "8.0"
- },
- "basketball_player_tone5": {
- "c": "activity",
- "e": "⛹🏿",
- "d": "person with ball tone 5",
- "u": "8.0"
- },
- "bat": {
- "c": "nature",
- "e": "🦇",
- "d": "bat",
- "u": "9.0"
- },
- "bath": {
- "c": "activity",
- "e": "🛀",
- "d": "bath",
- "u": "6.0"
- },
- "bath_tone1": {
- "c": "activity",
- "e": "🛀🏻",
- "d": "bath tone 1",
- "u": "8.0"
- },
- "bath_tone2": {
- "c": "activity",
- "e": "🛀🏼",
- "d": "bath tone 2",
- "u": "8.0"
- },
- "bath_tone3": {
- "c": "activity",
- "e": "🛀🏽",
- "d": "bath tone 3",
- "u": "8.0"
- },
- "bath_tone4": {
- "c": "activity",
- "e": "🛀🏾",
- "d": "bath tone 4",
- "u": "8.0"
- },
- "bath_tone5": {
- "c": "activity",
- "e": "🛀🏿",
- "d": "bath tone 5",
- "u": "8.0"
- },
- "bathtub": {
- "c": "objects",
- "e": "🛁",
- "d": "bathtub",
- "u": "6.0"
- },
- "battery": {
- "c": "objects",
- "e": "🔋",
- "d": "battery",
- "u": "6.0"
- },
- "beach": {
- "c": "travel",
- "e": "🏖",
- "d": "beach with umbrella",
- "u": "7.0"
- },
- "beach_umbrella": {
- "c": "objects",
- "e": "⛱",
- "d": "umbrella on ground",
- "u": "5.2"
- },
- "bear": {
- "c": "nature",
- "e": "🐻",
- "d": "bear face",
- "u": "6.0"
- },
- "bed": {
- "c": "objects",
- "e": "🛏",
- "d": "bed",
- "u": "7.0"
- },
- "bee": {
- "c": "nature",
- "e": "🐝",
- "d": "honeybee",
- "u": "6.0"
- },
- "beer": {
- "c": "food",
- "e": "🍺",
- "d": "beer mug",
- "u": "6.0"
- },
- "beers": {
- "c": "food",
- "e": "🍻",
- "d": "clinking beer mugs",
- "u": "6.0"
- },
- "beetle": {
- "c": "nature",
- "e": "🐞",
- "d": "lady beetle",
- "u": "6.0"
- },
- "beginner": {
- "c": "symbols",
- "e": "🔰",
- "d": "japanese symbol for beginner",
- "u": "6.0"
- },
- "bell": {
- "c": "symbols",
- "e": "🔔",
- "d": "bell",
- "u": "6.0"
- },
- "bellhop": {
- "c": "objects",
- "e": "🛎",
- "d": "bellhop bell",
- "u": "7.0"
- },
- "bento": {
- "c": "food",
- "e": "🍱",
- "d": "bento box",
- "u": "6.0"
- },
- "bicyclist": {
- "c": "activity",
- "e": "🚴",
- "d": "bicyclist",
- "u": "6.0"
- },
- "bicyclist_tone1": {
- "c": "activity",
- "e": "🚴🏻",
- "d": "bicyclist tone 1",
- "u": "8.0"
- },
- "bicyclist_tone2": {
- "c": "activity",
- "e": "🚴🏼",
- "d": "bicyclist tone 2",
- "u": "8.0"
- },
- "bicyclist_tone3": {
- "c": "activity",
- "e": "🚴🏽",
- "d": "bicyclist tone 3",
- "u": "8.0"
- },
- "bicyclist_tone4": {
- "c": "activity",
- "e": "🚴🏾",
- "d": "bicyclist tone 4",
- "u": "8.0"
- },
- "bicyclist_tone5": {
- "c": "activity",
- "e": "🚴🏿",
- "d": "bicyclist tone 5",
- "u": "8.0"
- },
- "bike": {
- "c": "travel",
- "e": "🚲",
- "d": "bicycle",
- "u": "6.0"
- },
- "bikini": {
- "c": "people",
- "e": "👙",
- "d": "bikini",
- "u": "6.0"
- },
- "biohazard": {
- "c": "symbols",
- "e": "☣",
- "d": "biohazard sign",
- "u": "1.1"
- },
- "bird": {
- "c": "nature",
- "e": "🐦",
- "d": "bird",
- "u": "6.0"
- },
- "birthday": {
- "c": "food",
- "e": "🎂",
- "d": "birthday cake",
- "u": "6.0"
- },
- "black_circle": {
- "c": "symbols",
- "e": "⚫",
- "d": "medium black circle",
- "u": "4.1"
- },
- "black_heart": {
- "c": "symbols",
- "e": "🖤",
- "d": "black heart",
- "u": "9.0"
- },
- "black_joker": {
- "c": "symbols",
- "e": "🃏",
- "d": "playing card black joker",
- "u": "6.0"
- },
- "black_large_square": {
- "c": "symbols",
- "e": "⬛",
- "d": "black large square",
- "u": "5.1"
- },
- "black_medium_small_square": {
- "c": "symbols",
- "e": "◾",
- "d": "black medium small square",
- "u": "3.2"
- },
- "black_medium_square": {
- "c": "symbols",
- "e": "◼",
- "d": "black medium square",
- "u": "3.2"
- },
- "black_nib": {
- "c": "objects",
- "e": "✒",
- "d": "black nib",
- "u": "1.1"
- },
- "black_small_square": {
- "c": "symbols",
- "e": "▪",
- "d": "black small square",
- "u": "1.1"
- },
- "black_square_button": {
- "c": "symbols",
- "e": "🔲",
- "d": "black square button",
- "u": "6.0"
- },
- "blossom": {
- "c": "nature",
- "e": "🌼",
- "d": "blossom",
- "u": "6.0"
- },
- "blowfish": {
- "c": "nature",
- "e": "🐡",
- "d": "blowfish",
- "u": "6.0"
- },
- "blue_book": {
- "c": "objects",
- "e": "📘",
- "d": "blue book",
- "u": "6.0"
- },
- "blue_car": {
- "c": "travel",
- "e": "🚙",
- "d": "recreational vehicle",
- "u": "6.0"
- },
- "blue_heart": {
- "c": "symbols",
- "e": "💙",
- "d": "blue heart",
- "u": "6.0"
- },
- "blush": {
- "c": "people",
- "e": "😊",
- "d": "smiling face with smiling eyes",
- "u": "6.0"
- },
- "boar": {
- "c": "nature",
- "e": "🐗",
- "d": "boar",
- "u": "6.0"
- },
- "bomb": {
- "c": "objects",
- "e": "💣",
- "d": "bomb",
- "u": "6.0"
- },
- "book": {
- "c": "objects",
- "e": "📖",
- "d": "open book",
- "u": "6.0"
- },
- "bookmark": {
- "c": "objects",
- "e": "🔖",
- "d": "bookmark",
- "u": "6.0"
- },
- "bookmark_tabs": {
- "c": "objects",
- "e": "📑",
- "d": "bookmark tabs",
- "u": "6.0"
- },
- "books": {
- "c": "objects",
- "e": "📚",
- "d": "books",
- "u": "6.0"
- },
- "boom": {
- "c": "nature",
- "e": "💥",
- "d": "collision symbol",
- "u": "6.0"
- },
- "boot": {
- "c": "people",
- "e": "👢",
- "d": "womans boots",
- "u": "6.0"
- },
- "bouquet": {
- "c": "nature",
- "e": "💐",
- "d": "bouquet",
- "u": "6.0"
- },
- "bow": {
- "c": "people",
- "e": "🙇",
- "d": "person bowing deeply",
- "u": "6.0"
- },
- "bow_and_arrow": {
- "c": "activity",
- "e": "🏹",
- "d": "bow and arrow",
- "u": "8.0"
- },
- "bow_tone1": {
- "c": "people",
- "e": "🙇🏻",
- "d": "person bowing deeply tone 1",
- "u": "8.0"
- },
- "bow_tone2": {
- "c": "people",
- "e": "🙇🏼",
- "d": "person bowing deeply tone 2",
- "u": "8.0"
- },
- "bow_tone3": {
- "c": "people",
- "e": "🙇🏽",
- "d": "person bowing deeply tone 3",
- "u": "8.0"
- },
- "bow_tone4": {
- "c": "people",
- "e": "🙇🏾",
- "d": "person bowing deeply tone 4",
- "u": "8.0"
- },
- "bow_tone5": {
- "c": "people",
- "e": "🙇🏿",
- "d": "person bowing deeply tone 5",
- "u": "8.0"
- },
- "bowling": {
- "c": "activity",
- "e": "🎳",
- "d": "bowling",
- "u": "6.0"
- },
- "boxing_glove": {
- "c": "activity",
- "e": "🥊",
- "d": "boxing glove",
- "u": "9.0"
- },
- "boy": {
- "c": "people",
- "e": "👦",
- "d": "boy",
- "u": "6.0"
- },
- "boy_tone1": {
- "c": "people",
- "e": "👦🏻",
- "d": "boy tone 1",
- "u": "8.0"
- },
- "boy_tone2": {
- "c": "people",
- "e": "👦🏼",
- "d": "boy tone 2",
- "u": "8.0"
- },
- "boy_tone3": {
- "c": "people",
- "e": "👦🏽",
- "d": "boy tone 3",
- "u": "8.0"
- },
- "boy_tone4": {
- "c": "people",
- "e": "👦🏾",
- "d": "boy tone 4",
- "u": "8.0"
- },
- "boy_tone5": {
- "c": "people",
- "e": "👦🏿",
- "d": "boy tone 5",
- "u": "8.0"
- },
- "bread": {
- "c": "food",
- "e": "🍞",
- "d": "bread",
- "u": "6.0"
- },
- "bride_with_veil": {
- "c": "people",
- "e": "👰",
- "d": "bride with veil",
- "u": "6.0"
- },
- "bride_with_veil_tone1": {
- "c": "people",
- "e": "👰🏻",
- "d": "bride with veil tone 1",
- "u": "8.0"
- },
- "bride_with_veil_tone2": {
- "c": "people",
- "e": "👰🏼",
- "d": "bride with veil tone 2",
- "u": "8.0"
- },
- "bride_with_veil_tone3": {
- "c": "people",
- "e": "👰🏽",
- "d": "bride with veil tone 3",
- "u": "8.0"
- },
- "bride_with_veil_tone4": {
- "c": "people",
- "e": "👰🏾",
- "d": "bride with veil tone 4",
- "u": "8.0"
- },
- "bride_with_veil_tone5": {
- "c": "people",
- "e": "👰🏿",
- "d": "bride with veil tone 5",
- "u": "8.0"
- },
- "bridge_at_night": {
- "c": "travel",
- "e": "🌉",
- "d": "bridge at night",
- "u": "6.0"
- },
- "briefcase": {
- "c": "people",
- "e": "💼",
- "d": "briefcase",
- "u": "6.0"
- },
- "broken_heart": {
- "c": "symbols",
- "e": "💔",
- "d": "broken heart",
- "u": "6.0"
- },
- "bug": {
- "c": "nature",
- "e": "🐛",
- "d": "bug",
- "u": "6.0"
- },
- "bulb": {
- "c": "objects",
- "e": "💡",
- "d": "electric light bulb",
- "u": "6.0"
- },
- "bullettrain_front": {
- "c": "travel",
- "e": "🚅",
- "d": "high-speed train with bullet nose",
- "u": "6.0"
- },
- "bullettrain_side": {
- "c": "travel",
- "e": "🚄",
- "d": "high-speed train",
- "u": "6.0"
- },
- "burrito": {
- "c": "food",
- "e": "🌯",
- "d": "burrito",
- "u": "8.0"
- },
- "bus": {
- "c": "travel",
- "e": "🚌",
- "d": "bus",
- "u": "6.0"
- },
- "busstop": {
- "c": "travel",
- "e": "🚏",
- "d": "bus stop",
- "u": "6.0"
- },
- "bust_in_silhouette": {
- "c": "people",
- "e": "👤",
- "d": "bust in silhouette",
- "u": "6.0"
- },
- "busts_in_silhouette": {
- "c": "people",
- "e": "👥",
- "d": "busts in silhouette",
- "u": "6.0"
- },
- "butterfly": {
- "c": "nature",
- "e": "🦋",
- "d": "butterfly",
- "u": "9.0"
- },
- "cactus": {
- "c": "nature",
- "e": "🌵",
- "d": "cactus",
- "u": "6.0"
- },
- "cake": {
- "c": "food",
- "e": "🍰",
- "d": "shortcake",
- "u": "6.0"
- },
- "calendar": {
- "c": "objects",
- "e": "📆",
- "d": "tear-off calendar",
- "u": "6.0"
- },
- "calendar_spiral": {
- "c": "objects",
- "e": "🗓",
- "d": "spiral calendar pad",
- "u": "7.0"
- },
- "call_me": {
- "c": "people",
- "e": "🤙",
- "d": "call me hand",
- "u": "9.0"
- },
- "call_me_tone1": {
- "c": "people",
- "e": "🤙🏻",
- "d": "call me hand tone 1",
- "u": "9.0"
- },
- "call_me_tone2": {
- "c": "people",
- "e": "🤙🏼",
- "d": "call me hand tone 2",
- "u": "9.0"
- },
- "call_me_tone3": {
- "c": "people",
- "e": "🤙🏽",
- "d": "call me hand tone 3",
- "u": "9.0"
- },
- "call_me_tone4": {
- "c": "people",
- "e": "🤙🏾",
- "d": "call me hand tone 4",
- "u": "9.0"
- },
- "call_me_tone5": {
- "c": "people",
- "e": "🤙🏿",
- "d": "call me hand tone 5",
- "u": "9.0"
- },
- "calling": {
- "c": "objects",
- "e": "📲",
- "d": "mobile phone with rightwards arrow at left",
- "u": "6.0"
- },
- "camel": {
- "c": "nature",
- "e": "🐫",
- "d": "bactrian camel",
- "u": "6.0"
- },
- "camera": {
- "c": "objects",
- "e": "📷",
- "d": "camera",
- "u": "6.0"
- },
- "camera_with_flash": {
- "c": "objects",
- "e": "📸",
- "d": "camera with flash",
- "u": "7.0"
- },
- "camping": {
- "c": "travel",
- "e": "🏕",
- "d": "camping",
- "u": "7.0"
- },
- "cancer": {
- "c": "symbols",
- "e": "♋",
- "d": "cancer",
- "u": "1.1"
- },
- "candle": {
- "c": "objects",
- "e": "🕯",
- "d": "candle",
- "u": "7.0"
- },
- "candy": {
- "c": "food",
- "e": "🍬",
- "d": "candy",
- "u": "6.0"
- },
- "canoe": {
- "c": "travel",
- "e": "🛶",
- "d": "canoe",
- "u": "9.0"
- },
- "capital_abcd": {
- "c": "symbols",
- "e": "🔠",
- "d": "input symbol for latin capital letters",
- "u": "6.0"
- },
- "capricorn": {
- "c": "symbols",
- "e": "♑",
- "d": "capricorn",
- "u": "1.1"
- },
- "card_box": {
- "c": "objects",
- "e": "🗃",
- "d": "card file box",
- "u": "7.0"
- },
- "card_index": {
- "c": "objects",
- "e": "📇",
- "d": "card index",
- "u": "6.0"
- },
- "carousel_horse": {
- "c": "travel",
- "e": "🎠",
- "d": "carousel horse",
- "u": "6.0"
- },
- "carrot": {
- "c": "food",
- "e": "🥕",
- "d": "carrot",
- "u": "9.0"
- },
- "cartwheel": {
- "c": "activity",
- "e": "🤸",
- "d": "person doing cartwheel",
- "u": "9.0"
- },
- "cartwheel_tone1": {
- "c": "activity",
- "e": "🤸🏻",
- "d": "person doing cartwheel tone 1",
- "u": "9.0"
- },
- "cartwheel_tone2": {
- "c": "activity",
- "e": "🤸🏼",
- "d": "person doing cartwheel tone 2",
- "u": "9.0"
- },
- "cartwheel_tone3": {
- "c": "activity",
- "e": "🤸🏽",
- "d": "person doing cartwheel tone 3",
- "u": "9.0"
- },
- "cartwheel_tone4": {
- "c": "activity",
- "e": "🤸🏾",
- "d": "person doing cartwheel tone 4",
- "u": "9.0"
- },
- "cartwheel_tone5": {
- "c": "activity",
- "e": "🤸🏿",
- "d": "person doing cartwheel tone 5",
- "u": "9.0"
- },
- "cat": {
- "c": "nature",
- "e": "🐱",
- "d": "cat face",
- "u": "6.0"
- },
- "cat2": {
- "c": "nature",
- "e": "🐈",
- "d": "cat",
- "u": "6.0"
- },
- "cd": {
- "c": "objects",
- "e": "💿",
- "d": "optical disc",
- "u": "6.0"
- },
- "chains": {
- "c": "objects",
- "e": "⛓",
- "d": "chains",
- "u": "5.2"
- },
- "champagne": {
- "c": "food",
- "e": "🍾",
- "d": "bottle with popping cork",
- "u": "8.0"
- },
- "champagne_glass": {
- "c": "food",
- "e": "🥂",
- "d": "clinking glasses",
- "u": "9.0"
- },
- "chart": {
- "c": "symbols",
- "e": "💹",
- "d": "chart with upwards trend and yen sign",
- "u": "6.0"
- },
- "chart_with_downwards_trend": {
- "c": "objects",
- "e": "📉",
- "d": "chart with downwards trend",
- "u": "6.0"
- },
- "chart_with_upwards_trend": {
- "c": "objects",
- "e": "📈",
- "d": "chart with upwards trend",
- "u": "6.0"
- },
- "checkered_flag": {
- "c": "travel",
- "e": "🏁",
- "d": "chequered flag",
- "u": "6.0"
- },
- "cheese": {
- "c": "food",
- "e": "🧀",
- "d": "cheese wedge",
- "u": "8.0"
- },
- "cherries": {
- "c": "food",
- "e": "🍒",
- "d": "cherries",
- "u": "6.0"
- },
- "cherry_blossom": {
- "c": "nature",
- "e": "🌸",
- "d": "cherry blossom",
- "u": "6.0"
- },
- "chestnut": {
- "c": "nature",
- "e": "🌰",
- "d": "chestnut",
- "u": "6.0"
- },
- "chicken": {
- "c": "nature",
- "e": "🐔",
- "d": "chicken",
- "u": "6.0"
- },
- "children_crossing": {
- "c": "symbols",
- "e": "🚸",
- "d": "children crossing",
- "u": "6.0"
- },
- "chipmunk": {
- "c": "nature",
- "e": "🐿",
- "d": "chipmunk",
- "u": "7.0"
- },
- "chocolate_bar": {
- "c": "food",
- "e": "🍫",
- "d": "chocolate bar",
- "u": "6.0"
- },
- "christmas_tree": {
- "c": "nature",
- "e": "🎄",
- "d": "christmas tree",
- "u": "6.0"
- },
- "church": {
- "c": "travel",
- "e": "⛪",
- "d": "church",
- "u": "5.2"
- },
- "cinema": {
- "c": "symbols",
- "e": "🎦",
- "d": "cinema",
- "u": "6.0"
- },
- "circus_tent": {
- "c": "activity",
- "e": "🎪",
- "d": "circus tent",
- "u": "6.0"
- },
- "city_dusk": {
- "c": "travel",
- "e": "🌆",
- "d": "cityscape at dusk",
- "u": "6.0"
- },
- "city_sunset": {
- "c": "travel",
- "e": "🌇",
- "d": "sunset over buildings",
- "u": "6.0"
- },
- "cityscape": {
- "c": "travel",
- "e": "🏙",
- "d": "cityscape",
- "u": "7.0"
- },
- "cl": {
- "c": "symbols",
- "e": "🆑",
- "d": "squared cl",
- "u": "6.0"
- },
- "clap": {
- "c": "people",
- "e": "👏",
- "d": "clapping hands sign",
- "u": "6.0"
- },
- "clap_tone1": {
- "c": "people",
- "e": "👏🏻",
- "d": "clapping hands sign tone 1",
- "u": "8.0"
- },
- "clap_tone2": {
- "c": "people",
- "e": "👏🏼",
- "d": "clapping hands sign tone 2",
- "u": "8.0"
- },
- "clap_tone3": {
- "c": "people",
- "e": "👏🏽",
- "d": "clapping hands sign tone 3",
- "u": "8.0"
- },
- "clap_tone4": {
- "c": "people",
- "e": "👏🏾",
- "d": "clapping hands sign tone 4",
- "u": "8.0"
- },
- "clap_tone5": {
- "c": "people",
- "e": "👏🏿",
- "d": "clapping hands sign tone 5",
- "u": "8.0"
- },
- "clapper": {
- "c": "activity",
- "e": "🎬",
- "d": "clapper board",
- "u": "6.0"
- },
- "classical_building": {
- "c": "travel",
- "e": "🏛",
- "d": "classical building",
- "u": "7.0"
- },
- "clipboard": {
- "c": "objects",
- "e": "📋",
- "d": "clipboard",
- "u": "6.0"
- },
- "clock": {
- "c": "objects",
- "e": "🕰",
- "d": "mantlepiece clock",
- "u": "7.0"
- },
- "clock1": {
- "c": "symbols",
- "e": "🕐",
- "d": "clock face one oclock",
- "u": "6.0"
- },
- "clock10": {
- "c": "symbols",
- "e": "🕙",
- "d": "clock face ten oclock",
- "u": "6.0"
- },
- "clock1030": {
- "c": "symbols",
- "e": "🕥",
- "d": "clock face ten-thirty",
- "u": "6.0"
- },
- "clock11": {
- "c": "symbols",
- "e": "🕚",
- "d": "clock face eleven oclock",
- "u": "6.0"
- },
- "clock1130": {
- "c": "symbols",
- "e": "🕦",
- "d": "clock face eleven-thirty",
- "u": "6.0"
- },
- "clock12": {
- "c": "symbols",
- "e": "🕛",
- "d": "clock face twelve oclock",
- "u": "6.0"
- },
- "clock1230": {
- "c": "symbols",
- "e": "🕧",
- "d": "clock face twelve-thirty",
- "u": "6.0"
- },
- "clock130": {
- "c": "symbols",
- "e": "🕜",
- "d": "clock face one-thirty",
- "u": "6.0"
- },
- "clock2": {
- "c": "symbols",
- "e": "🕑",
- "d": "clock face two oclock",
- "u": "6.0"
- },
- "clock230": {
- "c": "symbols",
- "e": "🕝",
- "d": "clock face two-thirty",
- "u": "6.0"
- },
- "clock3": {
- "c": "symbols",
- "e": "🕒",
- "d": "clock face three oclock",
- "u": "6.0"
- },
- "clock330": {
- "c": "symbols",
- "e": "🕞",
- "d": "clock face three-thirty",
- "u": "6.0"
- },
- "clock4": {
- "c": "symbols",
- "e": "🕓",
- "d": "clock face four oclock",
- "u": "6.0"
- },
- "clock430": {
- "c": "symbols",
- "e": "🕟",
- "d": "clock face four-thirty",
- "u": "6.0"
- },
- "clock5": {
- "c": "symbols",
- "e": "🕔",
- "d": "clock face five oclock",
- "u": "6.0"
- },
- "clock530": {
- "c": "symbols",
- "e": "🕠",
- "d": "clock face five-thirty",
- "u": "6.0"
- },
- "clock6": {
- "c": "symbols",
- "e": "🕕",
- "d": "clock face six oclock",
- "u": "6.0"
- },
- "clock630": {
- "c": "symbols",
- "e": "🕡",
- "d": "clock face six-thirty",
- "u": "6.0"
- },
- "clock7": {
- "c": "symbols",
- "e": "🕖",
- "d": "clock face seven oclock",
- "u": "6.0"
- },
- "clock730": {
- "c": "symbols",
- "e": "🕢",
- "d": "clock face seven-thirty",
- "u": "6.0"
- },
- "clock8": {
- "c": "symbols",
- "e": "🕗",
- "d": "clock face eight oclock",
- "u": "6.0"
- },
- "clock830": {
- "c": "symbols",
- "e": "🕣",
- "d": "clock face eight-thirty",
- "u": "6.0"
- },
- "clock9": {
- "c": "symbols",
- "e": "🕘",
- "d": "clock face nine oclock",
- "u": "6.0"
- },
- "clock930": {
- "c": "symbols",
- "e": "🕤",
- "d": "clock face nine-thirty",
- "u": "6.0"
- },
- "closed_book": {
- "c": "objects",
- "e": "📕",
- "d": "closed book",
- "u": "6.0"
- },
- "closed_lock_with_key": {
- "c": "objects",
- "e": "🔐",
- "d": "closed lock with key",
- "u": "6.0"
- },
- "closed_umbrella": {
- "c": "people",
- "e": "🌂",
- "d": "closed umbrella",
- "u": "6.0"
- },
- "cloud": {
- "c": "nature",
- "e": "☁",
- "d": "cloud",
- "u": "1.1"
- },
- "cloud_lightning": {
- "c": "nature",
- "e": "🌩",
- "d": "cloud with lightning",
- "u": "7.0"
- },
- "cloud_rain": {
- "c": "nature",
- "e": "🌧",
- "d": "cloud with rain",
- "u": "7.0"
- },
- "cloud_snow": {
- "c": "nature",
- "e": "🌨",
- "d": "cloud with snow",
- "u": "7.0"
- },
- "cloud_tornado": {
- "c": "nature",
- "e": "🌪",
- "d": "cloud with tornado",
- "u": "7.0"
- },
- "clown": {
- "c": "people",
- "e": "🤡",
- "d": "clown face",
- "u": "9.0"
- },
- "clubs": {
- "c": "symbols",
- "e": "♣",
- "d": "black club suit",
- "u": "1.1"
- },
- "cocktail": {
- "c": "food",
- "e": "🍸",
- "d": "cocktail glass",
- "u": "6.0"
- },
- "coffee": {
- "c": "food",
- "e": "☕",
- "d": "hot beverage",
- "u": "4.0"
- },
- "coffin": {
- "c": "objects",
- "e": "⚰",
- "d": "coffin",
- "u": "4.1"
- },
- "cold_sweat": {
- "c": "people",
- "e": "😰",
- "d": "face with open mouth and cold sweat",
- "u": "6.0"
- },
- "comet": {
- "c": "nature",
- "e": "☄",
- "d": "comet",
- "u": "1.1"
- },
- "compression": {
- "c": "objects",
- "e": "🗜",
- "d": "compression",
- "u": "7.0"
- },
- "computer": {
- "c": "objects",
- "e": "💻",
- "d": "personal computer",
- "u": "6.0"
- },
- "confetti_ball": {
- "c": "objects",
- "e": "🎊",
- "d": "confetti ball",
- "u": "6.0"
- },
- "confounded": {
- "c": "people",
- "e": "😖",
- "d": "confounded face",
- "u": "6.0"
- },
- "confused": {
- "c": "people",
- "e": "😕",
- "d": "confused face",
- "u": "6.1"
- },
- "congratulations": {
- "c": "symbols",
- "e": "㊗",
- "d": "circled ideograph congratulation",
- "u": "1.1"
- },
- "construction": {
- "c": "travel",
- "e": "🚧",
- "d": "construction sign",
- "u": "6.0"
- },
- "construction_site": {
- "c": "travel",
- "e": "🏗",
- "d": "building construction",
- "u": "7.0"
- },
- "construction_worker": {
- "c": "people",
- "e": "👷",
- "d": "construction worker",
- "u": "6.0"
- },
- "construction_worker_tone1": {
- "c": "people",
- "e": "👷🏻",
- "d": "construction worker tone 1",
- "u": "8.0"
- },
- "construction_worker_tone2": {
- "c": "people",
- "e": "👷🏼",
- "d": "construction worker tone 2",
- "u": "8.0"
- },
- "construction_worker_tone3": {
- "c": "people",
- "e": "👷🏽",
- "d": "construction worker tone 3",
- "u": "8.0"
- },
- "construction_worker_tone4": {
- "c": "people",
- "e": "👷🏾",
- "d": "construction worker tone 4",
- "u": "8.0"
- },
- "construction_worker_tone5": {
- "c": "people",
- "e": "👷🏿",
- "d": "construction worker tone 5",
- "u": "8.0"
- },
- "control_knobs": {
- "c": "objects",
- "e": "🎛",
- "d": "control knobs",
- "u": "7.0"
- },
- "convenience_store": {
- "c": "travel",
- "e": "🏪",
- "d": "convenience store",
- "u": "6.0"
- },
- "cookie": {
- "c": "food",
- "e": "🍪",
- "d": "cookie",
- "u": "6.0"
- },
- "cooking": {
- "c": "food",
- "e": "🍳",
- "d": "cooking",
- "u": "6.0"
- },
- "cool": {
- "c": "symbols",
- "e": "🆒",
- "d": "squared cool",
- "u": "6.0"
- },
- "cop": {
- "c": "people",
- "e": "👮",
- "d": "police officer",
- "u": "6.0"
- },
- "cop_tone1": {
- "c": "people",
- "e": "👮🏻",
- "d": "police officer tone 1",
- "u": "8.0"
- },
- "cop_tone2": {
- "c": "people",
- "e": "👮🏼",
- "d": "police officer tone 2",
- "u": "8.0"
- },
- "cop_tone3": {
- "c": "people",
- "e": "👮🏽",
- "d": "police officer tone 3",
- "u": "8.0"
- },
- "cop_tone4": {
- "c": "people",
- "e": "👮🏾",
- "d": "police officer tone 4",
- "u": "8.0"
- },
- "cop_tone5": {
- "c": "people",
- "e": "👮🏿",
- "d": "police officer tone 5",
- "u": "8.0"
- },
- "copyright": {
- "c": "symbols",
- "e": "©",
- "d": "copyright sign",
- "u": "1.1"
- },
- "corn": {
- "c": "food",
- "e": "🌽",
- "d": "ear of maize",
- "u": "6.0"
- },
- "couch": {
- "c": "objects",
- "e": "🛋",
- "d": "couch and lamp",
- "u": "7.0"
- },
- "couple": {
- "c": "people",
- "e": "👫",
- "d": "man and woman holding hands",
- "u": "6.0"
- },
- "couple_mm": {
- "c": "people",
- "e": "👨‍❤️‍👨",
- "d": "couple (man,man)",
- "u": "6.0"
- },
- "couple_with_heart": {
- "c": "people",
- "e": "💑",
- "d": "couple with heart",
- "u": "6.0"
- },
- "couple_ww": {
- "c": "people",
- "e": "👩‍❤️‍👩",
- "d": "couple (woman,woman)",
- "u": "6.0"
- },
- "couplekiss": {
- "c": "people",
- "e": "💏",
- "d": "kiss",
- "u": "6.0"
- },
- "cow": {
- "c": "nature",
- "e": "🐮",
- "d": "cow face",
- "u": "6.0"
- },
- "cow2": {
- "c": "nature",
- "e": "🐄",
- "d": "cow",
- "u": "6.0"
- },
- "cowboy": {
- "c": "people",
- "e": "🤠",
- "d": "face with cowboy hat",
- "u": "9.0"
- },
- "crab": {
- "c": "nature",
- "e": "🦀",
- "d": "crab",
- "u": "8.0"
- },
- "crayon": {
- "c": "objects",
- "e": "🖍",
- "d": "lower left crayon",
- "u": "7.0"
- },
- "credit_card": {
- "c": "objects",
- "e": "💳",
- "d": "credit card",
- "u": "6.0"
- },
- "crescent_moon": {
- "c": "nature",
- "e": "🌙",
- "d": "crescent moon",
- "u": "6.0"
- },
- "cricket": {
- "c": "activity",
- "e": "🏏",
- "d": "cricket bat and ball",
- "u": "8.0"
- },
- "crocodile": {
- "c": "nature",
- "e": "🐊",
- "d": "crocodile",
- "u": "6.0"
- },
- "croissant": {
- "c": "food",
- "e": "🥐",
- "d": "croissant",
- "u": "9.0"
- },
- "cross": {
- "c": "symbols",
- "e": "✝",
- "d": "latin cross",
- "u": "1.1"
- },
- "crossed_flags": {
- "c": "objects",
- "e": "🎌",
- "d": "crossed flags",
- "u": "6.0"
- },
- "crossed_swords": {
- "c": "objects",
- "e": "⚔",
- "d": "crossed swords",
- "u": "4.1"
- },
- "crown": {
- "c": "people",
- "e": "👑",
- "d": "crown",
- "u": "6.0"
- },
- "cruise_ship": {
- "c": "travel",
- "e": "🛳",
- "d": "passenger ship",
- "u": "7.0"
- },
- "cry": {
- "c": "people",
- "e": "😢",
- "d": "crying face",
- "u": "6.0"
- },
- "crying_cat_face": {
- "c": "people",
- "e": "😿",
- "d": "crying cat face",
- "u": "6.0"
- },
- "crystal_ball": {
- "c": "objects",
- "e": "🔮",
- "d": "crystal ball",
- "u": "6.0"
- },
- "cucumber": {
- "c": "food",
- "e": "🥒",
- "d": "cucumber",
- "u": "9.0"
- },
- "cupid": {
- "c": "symbols",
- "e": "💘",
- "d": "heart with arrow",
- "u": "6.0"
- },
- "curly_loop": {
- "c": "symbols",
- "e": "➰",
- "d": "curly loop",
- "u": "6.0"
- },
- "currency_exchange": {
- "c": "symbols",
- "e": "💱",
- "d": "currency exchange",
- "u": "6.0"
- },
- "curry": {
- "c": "food",
- "e": "🍛",
- "d": "curry and rice",
- "u": "6.0"
- },
- "custard": {
- "c": "food",
- "e": "🍮",
- "d": "custard",
- "u": "6.0"
- },
- "customs": {
- "c": "symbols",
- "e": "🛃",
- "d": "customs",
- "u": "6.0"
- },
- "cyclone": {
- "c": "symbols",
- "e": "🌀",
- "d": "cyclone",
- "u": "6.0"
- },
- "dagger": {
- "c": "objects",
- "e": "🗡",
- "d": "dagger knife",
- "u": "7.0"
- },
- "dancer": {
- "c": "people",
- "e": "💃",
- "d": "dancer",
- "u": "6.0"
- },
- "dancer_tone1": {
- "c": "people",
- "e": "💃🏻",
- "d": "dancer tone 1",
- "u": "8.0"
- },
- "dancer_tone2": {
- "c": "people",
- "e": "💃🏼",
- "d": "dancer tone 2",
- "u": "8.0"
- },
- "dancer_tone3": {
- "c": "people",
- "e": "💃🏽",
- "d": "dancer tone 3",
- "u": "8.0"
- },
- "dancer_tone4": {
- "c": "people",
- "e": "💃🏾",
- "d": "dancer tone 4",
- "u": "8.0"
- },
- "dancer_tone5": {
- "c": "people",
- "e": "💃🏿",
- "d": "dancer tone 5",
- "u": "8.0"
- },
- "dancers": {
- "c": "people",
- "e": "👯",
- "d": "woman with bunny ears",
- "u": "6.0"
- },
- "dango": {
- "c": "food",
- "e": "🍡",
- "d": "dango",
- "u": "6.0"
- },
- "dark_sunglasses": {
- "c": "people",
- "e": "🕶",
- "d": "dark sunglasses",
- "u": "7.0"
- },
- "dart": {
- "c": "activity",
- "e": "🎯",
- "d": "direct hit",
- "u": "6.0"
- },
- "dash": {
- "c": "nature",
- "e": "💨",
- "d": "dash symbol",
- "u": "6.0"
- },
- "date": {
- "c": "objects",
- "e": "📅",
- "d": "calendar",
- "u": "6.0"
- },
- "deciduous_tree": {
- "c": "nature",
- "e": "🌳",
- "d": "deciduous tree",
- "u": "6.0"
- },
- "deer": {
- "c": "nature",
- "e": "🦌",
- "d": "deer",
- "u": "9.0"
- },
- "department_store": {
- "c": "travel",
- "e": "🏬",
- "d": "department store",
- "u": "6.0"
- },
- "desert": {
- "c": "travel",
- "e": "🏜",
- "d": "desert",
- "u": "7.0"
- },
- "desktop": {
- "c": "objects",
- "e": "🖥",
- "d": "desktop computer",
- "u": "7.0"
- },
- "diamond_shape_with_a_dot_inside": {
- "c": "symbols",
- "e": "💠",
- "d": "diamond shape with a dot inside",
- "u": "6.0"
- },
- "diamonds": {
- "c": "symbols",
- "e": "♦",
- "d": "black diamond suit",
- "u": "1.1"
- },
- "disappointed": {
- "c": "people",
- "e": "😞",
- "d": "disappointed face",
- "u": "6.0"
- },
- "disappointed_relieved": {
- "c": "people",
- "e": "😥",
- "d": "disappointed but relieved face",
- "u": "6.0"
- },
- "dividers": {
- "c": "objects",
- "e": "🗂",
- "d": "card index dividers",
- "u": "7.0"
- },
- "dizzy": {
- "c": "nature",
- "e": "💫",
- "d": "dizzy symbol",
- "u": "6.0"
- },
- "dizzy_face": {
- "c": "people",
- "e": "😵",
- "d": "dizzy face",
- "u": "6.0"
- },
- "do_not_litter": {
- "c": "symbols",
- "e": "🚯",
- "d": "do not litter symbol",
- "u": "6.0"
- },
- "dog": {
- "c": "nature",
- "e": "🐶",
- "d": "dog face",
- "u": "6.0"
- },
- "dog2": {
- "c": "nature",
- "e": "🐕",
- "d": "dog",
- "u": "6.0"
- },
- "dollar": {
- "c": "objects",
- "e": "💵",
- "d": "banknote with dollar sign",
- "u": "6.0"
- },
- "dolls": {
- "c": "objects",
- "e": "🎎",
- "d": "japanese dolls",
- "u": "6.0"
- },
- "dolphin": {
- "c": "nature",
- "e": "🐬",
- "d": "dolphin",
- "u": "6.0"
- },
- "door": {
- "c": "objects",
- "e": "🚪",
- "d": "door",
- "u": "6.0"
- },
- "doughnut": {
- "c": "food",
- "e": "🍩",
- "d": "doughnut",
- "u": "6.0"
- },
- "dove": {
- "c": "nature",
- "e": "🕊",
- "d": "dove of peace",
- "u": "7.0"
- },
- "dragon": {
- "c": "nature",
- "e": "🐉",
- "d": "dragon",
- "u": "6.0"
- },
- "dragon_face": {
- "c": "nature",
- "e": "🐲",
- "d": "dragon face",
- "u": "6.0"
- },
- "dress": {
- "c": "people",
- "e": "👗",
- "d": "dress",
- "u": "6.0"
- },
- "dromedary_camel": {
- "c": "nature",
- "e": "🐪",
- "d": "dromedary camel",
- "u": "6.0"
- },
- "drooling_face": {
- "c": "people",
- "e": "🤤",
- "d": "drooling face",
- "u": "9.0"
- },
- "droplet": {
- "c": "nature",
- "e": "💧",
- "d": "droplet",
- "u": "6.0"
- },
- "drum": {
- "c": "activity",
- "e": "🥁",
- "d": "drum with drumsticks",
- "u": "9.0"
- },
- "duck": {
- "c": "nature",
- "e": "🦆",
- "d": "duck",
- "u": "9.0"
- },
- "dvd": {
- "c": "objects",
- "e": "📀",
- "d": "dvd",
- "u": "6.0"
- },
- "e-mail": {
- "c": "objects",
- "e": "📧",
- "d": "e-mail symbol",
- "u": "6.0"
- },
- "eagle": {
- "c": "nature",
- "e": "🦅",
- "d": "eagle",
- "u": "9.0"
- },
- "ear": {
- "c": "people",
- "e": "👂",
- "d": "ear",
- "u": "6.0"
- },
- "ear_of_rice": {
- "c": "nature",
- "e": "🌾",
- "d": "ear of rice",
- "u": "6.0"
- },
- "ear_tone1": {
- "c": "people",
- "e": "👂🏻",
- "d": "ear tone 1",
- "u": "8.0"
- },
- "ear_tone2": {
- "c": "people",
- "e": "👂🏼",
- "d": "ear tone 2",
- "u": "8.0"
- },
- "ear_tone3": {
- "c": "people",
- "e": "👂🏽",
- "d": "ear tone 3",
- "u": "8.0"
- },
- "ear_tone4": {
- "c": "people",
- "e": "👂🏾",
- "d": "ear tone 4",
- "u": "8.0"
- },
- "ear_tone5": {
- "c": "people",
- "e": "👂🏿",
- "d": "ear tone 5",
- "u": "8.0"
- },
- "earth_africa": {
- "c": "nature",
- "e": "🌍",
- "d": "earth globe europe-africa",
- "u": "6.0"
- },
- "earth_americas": {
- "c": "nature",
- "e": "🌎",
- "d": "earth globe americas",
- "u": "6.0"
- },
- "earth_asia": {
- "c": "nature",
- "e": "🌏",
- "d": "earth globe asia-australia",
- "u": "6.0"
- },
- "egg": {
- "c": "food",
- "e": "🥚",
- "d": "egg",
- "u": "9.0"
- },
- "eggplant": {
- "c": "food",
- "e": "🍆",
- "d": "aubergine",
- "u": "6.0"
- },
- "eight": {
- "c": "symbols",
- "e": "8️⃣",
- "d": "keycap digit eight",
- "u": "3.0"
- },
- "eight_pointed_black_star": {
- "c": "symbols",
- "e": "✴",
- "d": "eight pointed black star",
- "u": "1.1"
- },
- "eight_spoked_asterisk": {
- "c": "symbols",
- "e": "✳",
- "d": "eight spoked asterisk",
- "u": "1.1"
- },
- "eject": {
- "c": "symbols",
- "e": "⏏",
- "d": "eject symbol",
- "u": "4.0"
- },
- "electric_plug": {
- "c": "objects",
- "e": "🔌",
- "d": "electric plug",
- "u": "6.0"
- },
- "elephant": {
- "c": "nature",
- "e": "🐘",
- "d": "elephant",
- "u": "6.0"
- },
- "end": {
- "c": "symbols",
- "e": "🔚",
- "d": "end with leftwards arrow above",
- "u": "6.0"
- },
- "envelope": {
- "c": "objects",
- "e": "✉",
- "d": "envelope",
- "u": "1.1"
- },
- "envelope_with_arrow": {
- "c": "objects",
- "e": "📩",
- "d": "envelope with downwards arrow above",
- "u": "6.0"
- },
- "euro": {
- "c": "objects",
- "e": "💶",
- "d": "banknote with euro sign",
- "u": "6.0"
- },
- "european_castle": {
- "c": "travel",
- "e": "🏰",
- "d": "european castle",
- "u": "6.0"
- },
- "european_post_office": {
- "c": "travel",
- "e": "🏤",
- "d": "european post office",
- "u": "6.0"
- },
- "evergreen_tree": {
- "c": "nature",
- "e": "🌲",
- "d": "evergreen tree",
- "u": "6.0"
- },
- "exclamation": {
- "c": "symbols",
- "e": "❗",
- "d": "heavy exclamation mark symbol",
- "u": "5.2"
- },
- "expressionless": {
- "c": "people",
- "e": "😑",
- "d": "expressionless face",
- "u": "6.1"
- },
- "eye": {
- "c": "people",
- "e": "👁",
- "d": "eye",
- "u": "7.0"
- },
- "eye_in_speech_bubble": {
- "c": "symbols",
- "e": "👁‍🗨",
- "d": "eye in speech bubble",
- "u": "7.0"
- },
- "eyeglasses": {
- "c": "people",
- "e": "👓",
- "d": "eyeglasses",
- "u": "6.0"
- },
- "eyes": {
- "c": "people",
- "e": "👀",
- "d": "eyes",
- "u": "6.0"
- },
- "face_palm": {
- "c": "people",
- "e": "🤦",
- "d": "face palm",
- "u": "9.0"
- },
- "face_palm_tone1": {
- "c": "people",
- "e": "🤦🏻",
- "d": "face palm tone 1",
- "u": "9.0"
- },
- "face_palm_tone2": {
- "c": "people",
- "e": "🤦🏼",
- "d": "face palm tone 2",
- "u": "9.0"
- },
- "face_palm_tone3": {
- "c": "people",
- "e": "🤦🏽",
- "d": "face palm tone 3",
- "u": "9.0"
- },
- "face_palm_tone4": {
- "c": "people",
- "e": "🤦🏾",
- "d": "face palm tone 4",
- "u": "9.0"
- },
- "face_palm_tone5": {
- "c": "people",
- "e": "🤦🏿",
- "d": "face palm tone 5",
- "u": "9.0"
- },
- "factory": {
- "c": "travel",
- "e": "🏭",
- "d": "factory",
- "u": "6.0"
- },
- "fallen_leaf": {
- "c": "nature",
- "e": "🍂",
- "d": "fallen leaf",
- "u": "6.0"
- },
- "family": {
- "c": "people",
- "e": "👪",
- "d": "family",
- "u": "6.0"
- },
- "family_mmb": {
- "c": "people",
- "e": "👨‍👨‍👦",
- "d": "family (man,man,boy)",
- "u": "6.0"
- },
- "family_mmbb": {
- "c": "people",
- "e": "👨‍👨‍👦‍👦",
- "d": "family (man,man,boy,boy)",
- "u": "6.0"
- },
- "family_mmg": {
- "c": "people",
- "e": "👨‍👨‍👧",
- "d": "family (man,man,girl)",
- "u": "6.0"
- },
- "family_mmgb": {
- "c": "people",
- "e": "👨‍👨‍👧‍👦",
- "d": "family (man,man,girl,boy)",
- "u": "6.0"
- },
- "family_mmgg": {
- "c": "people",
- "e": "👨‍👨‍👧‍👧",
- "d": "family (man,man,girl,girl)",
- "u": "6.0"
- },
- "family_mwbb": {
- "c": "people",
- "e": "👨‍👩‍👦‍👦",
- "d": "family (man,woman,boy,boy)",
- "u": "6.0"
- },
- "family_mwg": {
- "c": "people",
- "e": "👨‍👩‍👧",
- "d": "family (man,woman,girl)",
- "u": "6.0"
- },
- "family_mwgb": {
- "c": "people",
- "e": "👨‍👩‍👧‍👦",
- "d": "family (man,woman,girl,boy)",
- "u": "6.0"
- },
- "family_mwgg": {
- "c": "people",
- "e": "👨‍👩‍👧‍👧",
- "d": "family (man,woman,girl,girl)",
- "u": "6.0"
- },
- "family_wwb": {
- "c": "people",
- "e": "👩‍👩‍👦",
- "d": "family (woman,woman,boy)",
- "u": "6.0"
- },
- "family_wwbb": {
- "c": "people",
- "e": "👩‍👩‍👦‍👦",
- "d": "family (woman,woman,boy,boy)",
- "u": "6.0"
- },
- "family_wwg": {
- "c": "people",
- "e": "👩‍👩‍👧",
- "d": "family (woman,woman,girl)",
- "u": "6.0"
- },
- "family_wwgb": {
- "c": "people",
- "e": "👩‍👩‍👧‍👦",
- "d": "family (woman,woman,girl,boy)",
- "u": "6.0"
- },
- "family_wwgg": {
- "c": "people",
- "e": "👩‍👩‍👧‍👧",
- "d": "family (woman,woman,girl,girl)",
- "u": "6.0"
- },
- "fast_forward": {
- "c": "symbols",
- "e": "⏩",
- "d": "black right-pointing double triangle",
- "u": "6.0"
- },
- "fax": {
- "c": "objects",
- "e": "📠",
- "d": "fax machine",
- "u": "6.0"
- },
- "fearful": {
- "c": "people",
- "e": "😨",
- "d": "fearful face",
- "u": "6.0"
- },
- "feet": {
- "c": "nature",
- "e": "🐾",
- "d": "paw prints",
- "u": "6.0"
- },
- "fencer": {
- "c": "activity",
- "e": "🤺",
- "d": "fencer",
- "u": "9.0"
- },
- "ferris_wheel": {
- "c": "travel",
- "e": "🎡",
- "d": "ferris wheel",
- "u": "6.0"
- },
- "ferry": {
- "c": "travel",
- "e": "⛴",
- "d": "ferry",
- "u": "5.2"
- },
- "field_hockey": {
- "c": "activity",
- "e": "🏑",
- "d": "field hockey stick and ball",
- "u": "8.0"
- },
- "file_cabinet": {
- "c": "objects",
- "e": "🗄",
- "d": "file cabinet",
- "u": "7.0"
- },
- "file_folder": {
- "c": "objects",
- "e": "📁",
- "d": "file folder",
- "u": "6.0"
- },
- "film_frames": {
- "c": "objects",
- "e": "🎞",
- "d": "film frames",
- "u": "7.0"
- },
- "fingers_crossed": {
- "c": "people",
- "e": "🤞",
- "d": "hand with first and index finger crossed",
- "u": "9.0"
- },
- "fingers_crossed_tone1": {
- "c": "people",
- "e": "🤞🏻",
- "d": "hand with index and middle fingers crossed tone 1",
- "u": "9.0"
- },
- "fingers_crossed_tone2": {
- "c": "people",
- "e": "🤞🏼",
- "d": "hand with index and middle fingers crossed tone 2",
- "u": "9.0"
- },
- "fingers_crossed_tone3": {
- "c": "people",
- "e": "🤞🏽",
- "d": "hand with index and middle fingers crossed tone 3",
- "u": "9.0"
- },
- "fingers_crossed_tone4": {
- "c": "people",
- "e": "🤞🏾",
- "d": "hand with index and middle fingers crossed tone 4",
- "u": "9.0"
- },
- "fingers_crossed_tone5": {
- "c": "people",
- "e": "🤞🏿",
- "d": "hand with index and middle fingers crossed tone 5",
- "u": "9.0"
- },
- "fire": {
- "c": "nature",
- "e": "🔥",
- "d": "fire",
- "u": "6.0"
- },
- "fire_engine": {
- "c": "travel",
- "e": "🚒",
- "d": "fire engine",
- "u": "6.0"
- },
- "fireworks": {
- "c": "travel",
- "e": "🎆",
- "d": "fireworks",
- "u": "6.0"
- },
- "first_place": {
- "c": "activity",
- "e": "🥇",
- "d": "first place medal",
- "u": "9.0"
- },
- "first_quarter_moon": {
- "c": "nature",
- "e": "🌓",
- "d": "first quarter moon symbol",
- "u": "6.0"
- },
- "first_quarter_moon_with_face": {
- "c": "nature",
- "e": "🌛",
- "d": "first quarter moon with face",
- "u": "6.0"
- },
- "fish": {
- "c": "nature",
- "e": "🐟",
- "d": "fish",
- "u": "6.0"
- },
- "fish_cake": {
- "c": "food",
- "e": "🍥",
- "d": "fish cake with swirl design",
- "u": "6.0"
- },
- "fishing_pole_and_fish": {
- "c": "activity",
- "e": "🎣",
- "d": "fishing pole and fish",
- "u": "6.0"
- },
- "fist": {
- "c": "people",
- "e": "✊",
- "d": "raised fist",
- "u": "6.0"
- },
- "fist_tone1": {
- "c": "people",
- "e": "✊🏻",
- "d": "raised fist tone 1",
- "u": "8.0"
- },
- "fist_tone2": {
- "c": "people",
- "e": "✊🏼",
- "d": "raised fist tone 2",
- "u": "8.0"
- },
- "fist_tone3": {
- "c": "people",
- "e": "✊🏽",
- "d": "raised fist tone 3",
- "u": "8.0"
- },
- "fist_tone4": {
- "c": "people",
- "e": "✊🏾",
- "d": "raised fist tone 4",
- "u": "8.0"
- },
- "fist_tone5": {
- "c": "people",
- "e": "✊🏿",
- "d": "raised fist tone 5",
- "u": "8.0"
- },
- "five": {
- "c": "symbols",
- "e": "5️⃣",
- "d": "keycap digit five",
- "u": "3.0"
- },
- "flag_ac": {
- "c": "flags",
- "e": "🇦🇨",
- "d": "ascension",
- "u": "6.0"
- },
- "flag_ad": {
- "c": "flags",
- "e": "🇦🇩",
- "d": "andorra",
- "u": "6.0"
- },
- "flag_ae": {
- "c": "flags",
- "e": "🇦🇪",
- "d": "the united arab emirates",
- "u": "6.0"
- },
- "flag_af": {
- "c": "flags",
- "e": "🇦🇫",
- "d": "afghanistan",
- "u": "6.0"
- },
- "flag_ag": {
- "c": "flags",
- "e": "🇦🇬",
- "d": "antigua and barbuda",
- "u": "6.0"
- },
- "flag_ai": {
- "c": "flags",
- "e": "🇦🇮",
- "d": "anguilla",
- "u": "6.0"
- },
- "flag_al": {
- "c": "flags",
- "e": "🇦🇱",
- "d": "albania",
- "u": "6.0"
- },
- "flag_am": {
- "c": "flags",
- "e": "🇦🇲",
- "d": "armenia",
- "u": "6.0"
- },
- "flag_ao": {
- "c": "flags",
- "e": "🇦🇴",
- "d": "angola",
- "u": "6.0"
- },
- "flag_aq": {
- "c": "flags",
- "e": "🇦🇶",
- "d": "antarctica",
- "u": "6.0"
- },
- "flag_ar": {
- "c": "flags",
- "e": "🇦🇷",
- "d": "argentina",
- "u": "6.0"
- },
- "flag_as": {
- "c": "flags",
- "e": "🇦🇸",
- "d": "american samoa",
- "u": "6.0"
- },
- "flag_at": {
- "c": "flags",
- "e": "🇦🇹",
- "d": "austria",
- "u": "6.0"
- },
- "flag_au": {
- "c": "flags",
- "e": "🇦🇺",
- "d": "australia",
- "u": "6.0"
- },
- "flag_aw": {
- "c": "flags",
- "e": "🇦🇼",
- "d": "aruba",
- "u": "6.0"
- },
- "flag_ax": {
- "c": "flags",
- "e": "🇦🇽",
- "d": "åland islands",
- "u": "6.0"
- },
- "flag_az": {
- "c": "flags",
- "e": "🇦🇿",
- "d": "azerbaijan",
- "u": "6.0"
- },
- "flag_ba": {
- "c": "flags",
- "e": "🇧🇦",
- "d": "bosnia and herzegovina",
- "u": "6.0"
- },
- "flag_bb": {
- "c": "flags",
- "e": "🇧🇧",
- "d": "barbados",
- "u": "6.0"
- },
- "flag_bd": {
- "c": "flags",
- "e": "🇧🇩",
- "d": "bangladesh",
- "u": "6.0"
- },
- "flag_be": {
- "c": "flags",
- "e": "🇧🇪",
- "d": "belgium",
- "u": "6.0"
- },
- "flag_bf": {
- "c": "flags",
- "e": "🇧🇫",
- "d": "burkina faso",
- "u": "6.0"
- },
- "flag_bg": {
- "c": "flags",
- "e": "🇧🇬",
- "d": "bulgaria",
- "u": "6.0"
- },
- "flag_bh": {
- "c": "flags",
- "e": "🇧🇭",
- "d": "bahrain",
- "u": "6.0"
- },
- "flag_bi": {
- "c": "flags",
- "e": "🇧🇮",
- "d": "burundi",
- "u": "6.0"
- },
- "flag_bj": {
- "c": "flags",
- "e": "🇧🇯",
- "d": "benin",
- "u": "6.0"
- },
- "flag_bl": {
- "c": "flags",
- "e": "🇧🇱",
- "d": "saint barthélemy",
- "u": "6.0"
- },
- "flag_black": {
- "c": "objects",
- "e": "🏴",
- "d": "waving black flag",
- "u": "6.0"
- },
- "flag_bm": {
- "c": "flags",
- "e": "🇧🇲",
- "d": "bermuda",
- "u": "6.0"
- },
- "flag_bn": {
- "c": "flags",
- "e": "🇧🇳",
- "d": "brunei",
- "u": "6.0"
- },
- "flag_bo": {
- "c": "flags",
- "e": "🇧🇴",
- "d": "bolivia",
- "u": "6.0"
- },
- "flag_bq": {
- "c": "flags",
- "e": "🇧🇶",
- "d": "caribbean netherlands",
- "u": "6.0"
- },
- "flag_br": {
- "c": "flags",
- "e": "🇧🇷",
- "d": "brazil",
- "u": "6.0"
- },
- "flag_bs": {
- "c": "flags",
- "e": "🇧🇸",
- "d": "the bahamas",
- "u": "6.0"
- },
- "flag_bt": {
- "c": "flags",
- "e": "🇧🇹",
- "d": "bhutan",
- "u": "6.0"
- },
- "flag_bv": {
- "c": "flags",
- "e": "🇧🇻",
- "d": "bouvet island",
- "u": "6.0"
- },
- "flag_bw": {
- "c": "flags",
- "e": "🇧🇼",
- "d": "botswana",
- "u": "6.0"
- },
- "flag_by": {
- "c": "flags",
- "e": "🇧🇾",
- "d": "belarus",
- "u": "6.0"
- },
- "flag_bz": {
- "c": "flags",
- "e": "🇧🇿",
- "d": "belize",
- "u": "6.0"
- },
- "flag_ca": {
- "c": "flags",
- "e": "🇨🇦",
- "d": "canada",
- "u": "6.0"
- },
- "flag_cc": {
- "c": "flags",
- "e": "🇨🇨",
- "d": "cocos (keeling) islands",
- "u": "6.0"
- },
- "flag_cd": {
- "c": "flags",
- "e": "🇨🇩",
- "d": "the democratic republic of the congo",
- "u": "6.0"
- },
- "flag_cf": {
- "c": "flags",
- "e": "🇨🇫",
- "d": "central african republic",
- "u": "6.0"
- },
- "flag_cg": {
- "c": "flags",
- "e": "🇨🇬",
- "d": "the republic of the congo",
- "u": "6.0"
- },
- "flag_ch": {
- "c": "flags",
- "e": "🇨🇭",
- "d": "switzerland",
- "u": "6.0"
- },
- "flag_ci": {
- "c": "flags",
- "e": "🇨🇮",
- "d": "cote d'ivoire",
- "u": "6.0"
- },
- "flag_ck": {
- "c": "flags",
- "e": "🇨🇰",
- "d": "cook islands",
- "u": "6.0"
- },
- "flag_cl": {
- "c": "flags",
- "e": "🇨🇱",
- "d": "chile",
- "u": "6.0"
- },
- "flag_cm": {
- "c": "flags",
- "e": "🇨🇲",
- "d": "cameroon",
- "u": "6.0"
- },
- "flag_cn": {
- "c": "flags",
- "e": "🇨🇳",
- "d": "china",
- "u": "6.0"
- },
- "flag_co": {
- "c": "flags",
- "e": "🇨🇴",
- "d": "colombia",
- "u": "6.0"
- },
- "flag_cp": {
- "c": "flags",
- "e": "🇨🇵",
- "d": "clipperton island",
- "u": "6.0"
- },
- "flag_cr": {
- "c": "flags",
- "e": "🇨🇷",
- "d": "costa rica",
- "u": "6.0"
- },
- "flag_cu": {
- "c": "flags",
- "e": "🇨🇺",
- "d": "cuba",
- "u": "6.0"
- },
- "flag_cv": {
- "c": "flags",
- "e": "🇨🇻",
- "d": "cape verde",
- "u": "6.0"
- },
- "flag_cw": {
- "c": "flags",
- "e": "🇨🇼",
- "d": "curaçao",
- "u": "6.0"
- },
- "flag_cx": {
- "c": "flags",
- "e": "🇨🇽",
- "d": "christmas island",
- "u": "6.0"
- },
- "flag_cy": {
- "c": "flags",
- "e": "🇨🇾",
- "d": "cyprus",
- "u": "6.0"
- },
- "flag_cz": {
- "c": "flags",
- "e": "🇨🇿",
- "d": "the czech republic",
- "u": "6.0"
- },
- "flag_de": {
- "c": "flags",
- "e": "🇩🇪",
- "d": "germany",
- "u": "6.0"
- },
- "flag_dg": {
- "c": "flags",
- "e": "🇩🇬",
- "d": "diego garcia",
- "u": "6.0"
- },
- "flag_dj": {
- "c": "flags",
- "e": "🇩🇯",
- "d": "djibouti",
- "u": "6.0"
- },
- "flag_dk": {
- "c": "flags",
- "e": "🇩🇰",
- "d": "denmark",
- "u": "6.0"
- },
- "flag_dm": {
- "c": "flags",
- "e": "🇩🇲",
- "d": "dominica",
- "u": "6.0"
- },
- "flag_do": {
- "c": "flags",
- "e": "🇩🇴",
- "d": "the dominican republic",
- "u": "6.0"
- },
- "flag_dz": {
- "c": "flags",
- "e": "🇩🇿",
- "d": "algeria",
- "u": "6.0"
- },
- "flag_ea": {
- "c": "flags",
- "e": "🇪🇦",
- "d": "ceuta, melilla",
- "u": "6.0"
- },
- "flag_ec": {
- "c": "flags",
- "e": "🇪🇨",
- "d": "ecuador",
- "u": "6.0"
- },
- "flag_ee": {
- "c": "flags",
- "e": "🇪🇪",
- "d": "estonia",
- "u": "6.0"
- },
- "flag_eg": {
- "c": "flags",
- "e": "🇪🇬",
- "d": "egypt",
- "u": "6.0"
- },
- "flag_eh": {
- "c": "flags",
- "e": "🇪🇭",
- "d": "western sahara",
- "u": "6.0"
- },
- "flag_er": {
- "c": "flags",
- "e": "🇪🇷",
- "d": "eritrea",
- "u": "6.0"
- },
- "flag_es": {
- "c": "flags",
- "e": "🇪🇸",
- "d": "spain",
- "u": "6.0"
- },
- "flag_et": {
- "c": "flags",
- "e": "🇪🇹",
- "d": "ethiopia",
- "u": "6.0"
- },
- "flag_eu": {
- "c": "flags",
- "e": "🇪🇺",
- "d": "european union",
- "u": "6.0"
- },
- "flag_fi": {
- "c": "flags",
- "e": "🇫🇮",
- "d": "finland",
- "u": "6.0"
- },
- "flag_fj": {
- "c": "flags",
- "e": "🇫🇯",
- "d": "fiji",
- "u": "6.0"
- },
- "flag_fk": {
- "c": "flags",
- "e": "🇫🇰",
- "d": "falkland islands",
- "u": "6.0"
- },
- "flag_fm": {
- "c": "flags",
- "e": "🇫🇲",
- "d": "micronesia",
- "u": "6.0"
- },
- "flag_fo": {
- "c": "flags",
- "e": "🇫🇴",
- "d": "faroe islands",
- "u": "6.0"
- },
- "flag_fr": {
- "c": "flags",
- "e": "🇫🇷",
- "d": "france",
- "u": "6.0"
- },
- "flag_ga": {
- "c": "flags",
- "e": "🇬🇦",
- "d": "gabon",
- "u": "6.0"
- },
- "flag_gb": {
- "c": "flags",
- "e": "🇬🇧",
- "d": "great britain",
- "u": "6.0"
- },
- "flag_gd": {
- "c": "flags",
- "e": "🇬🇩",
- "d": "grenada",
- "u": "6.0"
- },
- "flag_ge": {
- "c": "flags",
- "e": "🇬🇪",
- "d": "georgia",
- "u": "6.0"
- },
- "flag_gf": {
- "c": "flags",
- "e": "🇬🇫",
- "d": "french guiana",
- "u": "6.0"
- },
- "flag_gg": {
- "c": "flags",
- "e": "🇬🇬",
- "d": "guernsey",
- "u": "6.0"
- },
- "flag_gh": {
- "c": "flags",
- "e": "🇬🇭",
- "d": "ghana",
- "u": "6.0"
- },
- "flag_gi": {
- "c": "flags",
- "e": "🇬🇮",
- "d": "gibraltar",
- "u": "6.0"
- },
- "flag_gl": {
- "c": "flags",
- "e": "🇬🇱",
- "d": "greenland",
- "u": "6.0"
- },
- "flag_gm": {
- "c": "flags",
- "e": "🇬🇲",
- "d": "the gambia",
- "u": "6.0"
- },
- "flag_gn": {
- "c": "flags",
- "e": "🇬🇳",
- "d": "guinea",
- "u": "6.0"
- },
- "flag_gp": {
- "c": "flags",
- "e": "🇬🇵",
- "d": "guadeloupe",
- "u": "6.0"
- },
- "flag_gq": {
- "c": "flags",
- "e": "🇬🇶",
- "d": "equatorial guinea",
- "u": "6.0"
- },
- "flag_gr": {
- "c": "flags",
- "e": "🇬🇷",
- "d": "greece",
- "u": "6.0"
- },
- "flag_gs": {
- "c": "flags",
- "e": "🇬🇸",
- "d": "south georgia",
- "u": "6.0"
- },
- "flag_gt": {
- "c": "flags",
- "e": "🇬🇹",
- "d": "guatemala",
- "u": "6.0"
- },
- "flag_gu": {
- "c": "flags",
- "e": "🇬🇺",
- "d": "guam",
- "u": "6.0"
- },
- "flag_gw": {
- "c": "flags",
- "e": "🇬🇼",
- "d": "guinea-bissau",
- "u": "6.0"
- },
- "flag_gy": {
- "c": "flags",
- "e": "🇬🇾",
- "d": "guyana",
- "u": "6.0"
- },
- "flag_hk": {
- "c": "flags",
- "e": "🇭🇰",
- "d": "hong kong",
- "u": "6.0"
- },
- "flag_hm": {
- "c": "flags",
- "e": "🇭🇲",
- "d": "heard island and mcdonald islands",
- "u": "6.0"
- },
- "flag_hn": {
- "c": "flags",
- "e": "🇭🇳",
- "d": "honduras",
- "u": "6.0"
- },
- "flag_hr": {
- "c": "flags",
- "e": "🇭🇷",
- "d": "croatia",
- "u": "6.0"
- },
- "flag_ht": {
- "c": "flags",
- "e": "🇭🇹",
- "d": "haiti",
- "u": "6.0"
- },
- "flag_hu": {
- "c": "flags",
- "e": "🇭🇺",
- "d": "hungary",
- "u": "6.0"
- },
- "flag_ic": {
- "c": "flags",
- "e": "🇮🇨",
- "d": "canary islands",
- "u": "6.0"
- },
- "flag_id": {
- "c": "flags",
- "e": "🇮🇩",
- "d": "indonesia",
- "u": "6.0"
- },
- "flag_ie": {
- "c": "flags",
- "e": "🇮🇪",
- "d": "ireland",
- "u": "6.0"
- },
- "flag_il": {
- "c": "flags",
- "e": "🇮🇱",
- "d": "israel",
- "u": "6.0"
- },
- "flag_im": {
- "c": "flags",
- "e": "🇮🇲",
- "d": "isle of man",
- "u": "6.0"
- },
- "flag_in": {
- "c": "flags",
- "e": "🇮🇳",
- "d": "india",
- "u": "6.0"
- },
- "flag_io": {
- "c": "flags",
- "e": "🇮🇴",
- "d": "british indian ocean territory",
- "u": "6.0"
- },
- "flag_iq": {
- "c": "flags",
- "e": "🇮🇶",
- "d": "iraq",
- "u": "6.0"
- },
- "flag_ir": {
- "c": "flags",
- "e": "🇮🇷",
- "d": "iran",
- "u": "6.0"
- },
- "flag_is": {
- "c": "flags",
- "e": "🇮🇸",
- "d": "iceland",
- "u": "6.0"
- },
- "flag_it": {
- "c": "flags",
- "e": "🇮🇹",
- "d": "italy",
- "u": "6.0"
- },
- "flag_je": {
- "c": "flags",
- "e": "🇯🇪",
- "d": "jersey",
- "u": "6.0"
- },
- "flag_jm": {
- "c": "flags",
- "e": "🇯🇲",
- "d": "jamaica",
- "u": "6.0"
- },
- "flag_jo": {
- "c": "flags",
- "e": "🇯🇴",
- "d": "jordan",
- "u": "6.0"
- },
- "flag_jp": {
- "c": "flags",
- "e": "🇯🇵",
- "d": "japan",
- "u": "6.0"
- },
- "flag_ke": {
- "c": "flags",
- "e": "🇰🇪",
- "d": "kenya",
- "u": "6.0"
- },
- "flag_kg": {
- "c": "flags",
- "e": "🇰🇬",
- "d": "kyrgyzstan",
- "u": "6.0"
- },
- "flag_kh": {
- "c": "flags",
- "e": "🇰🇭",
- "d": "cambodia",
- "u": "6.0"
- },
- "flag_ki": {
- "c": "flags",
- "e": "🇰🇮",
- "d": "kiribati",
- "u": "6.0"
- },
- "flag_km": {
- "c": "flags",
- "e": "🇰🇲",
- "d": "the comoros",
- "u": "6.0"
- },
- "flag_kn": {
- "c": "flags",
- "e": "🇰🇳",
- "d": "saint kitts and nevis",
- "u": "6.0"
- },
- "flag_kp": {
- "c": "flags",
- "e": "🇰🇵",
- "d": "north korea",
- "u": "6.0"
- },
- "flag_kr": {
- "c": "flags",
- "e": "🇰🇷",
- "d": "korea",
- "u": "6.0"
- },
- "flag_kw": {
- "c": "flags",
- "e": "🇰🇼",
- "d": "kuwait",
- "u": "6.0"
- },
- "flag_ky": {
- "c": "flags",
- "e": "🇰🇾",
- "d": "cayman islands",
- "u": "6.0"
- },
- "flag_kz": {
- "c": "flags",
- "e": "🇰🇿",
- "d": "kazakhstan",
- "u": "6.0"
- },
- "flag_la": {
- "c": "flags",
- "e": "🇱🇦",
- "d": "laos",
- "u": "6.0"
- },
- "flag_lb": {
- "c": "flags",
- "e": "🇱🇧",
- "d": "lebanon",
- "u": "6.0"
- },
- "flag_lc": {
- "c": "flags",
- "e": "🇱🇨",
- "d": "saint lucia",
- "u": "6.0"
- },
- "flag_li": {
- "c": "flags",
- "e": "🇱🇮",
- "d": "liechtenstein",
- "u": "6.0"
- },
- "flag_lk": {
- "c": "flags",
- "e": "🇱🇰",
- "d": "sri lanka",
- "u": "6.0"
- },
- "flag_lr": {
- "c": "flags",
- "e": "🇱🇷",
- "d": "liberia",
- "u": "6.0"
- },
- "flag_ls": {
- "c": "flags",
- "e": "🇱🇸",
- "d": "lesotho",
- "u": "6.0"
- },
- "flag_lt": {
- "c": "flags",
- "e": "🇱🇹",
- "d": "lithuania",
- "u": "6.0"
- },
- "flag_lu": {
- "c": "flags",
- "e": "🇱🇺",
- "d": "luxembourg",
- "u": "6.0"
- },
- "flag_lv": {
- "c": "flags",
- "e": "🇱🇻",
- "d": "latvia",
- "u": "6.0"
- },
- "flag_ly": {
- "c": "flags",
- "e": "🇱🇾",
- "d": "libya",
- "u": "6.0"
- },
- "flag_ma": {
- "c": "flags",
- "e": "🇲🇦",
- "d": "morocco",
- "u": "6.0"
- },
- "flag_mc": {
- "c": "flags",
- "e": "🇲🇨",
- "d": "monaco",
- "u": "6.0"
- },
- "flag_md": {
- "c": "flags",
- "e": "🇲🇩",
- "d": "moldova",
- "u": "6.0"
- },
- "flag_me": {
- "c": "flags",
- "e": "🇲🇪",
- "d": "montenegro",
- "u": "6.0"
- },
- "flag_mf": {
- "c": "flags",
- "e": "🇲🇫",
- "d": "saint martin",
- "u": "6.0"
- },
- "flag_mg": {
- "c": "flags",
- "e": "🇲🇬",
- "d": "madagascar",
- "u": "6.0"
- },
- "flag_mh": {
- "c": "flags",
- "e": "🇲🇭",
- "d": "the marshall islands",
- "u": "6.0"
- },
- "flag_mk": {
- "c": "flags",
- "e": "🇲🇰",
- "d": "macedonia",
- "u": "6.0"
- },
- "flag_ml": {
- "c": "flags",
- "e": "🇲🇱",
- "d": "mali",
- "u": "6.0"
- },
- "flag_mm": {
- "c": "flags",
- "e": "🇲🇲",
- "d": "myanmar",
- "u": "6.0"
- },
- "flag_mn": {
- "c": "flags",
- "e": "🇲🇳",
- "d": "mongolia",
- "u": "6.0"
- },
- "flag_mo": {
- "c": "flags",
- "e": "🇲🇴",
- "d": "macau",
- "u": "6.0"
- },
- "flag_mp": {
- "c": "flags",
- "e": "🇲🇵",
- "d": "northern mariana islands",
- "u": "6.0"
- },
- "flag_mq": {
- "c": "flags",
- "e": "🇲🇶",
- "d": "martinique",
- "u": "6.0"
- },
- "flag_mr": {
- "c": "flags",
- "e": "🇲🇷",
- "d": "mauritania",
- "u": "6.0"
- },
- "flag_ms": {
- "c": "flags",
- "e": "🇲🇸",
- "d": "montserrat",
- "u": "6.0"
- },
- "flag_mt": {
- "c": "flags",
- "e": "🇲🇹",
- "d": "malta",
- "u": "6.0"
- },
- "flag_mu": {
- "c": "flags",
- "e": "🇲🇺",
- "d": "mauritius",
- "u": "6.0"
- },
- "flag_mv": {
- "c": "flags",
- "e": "🇲🇻",
- "d": "maldives",
- "u": "6.0"
- },
- "flag_mw": {
- "c": "flags",
- "e": "🇲🇼",
- "d": "malawi",
- "u": "6.0"
- },
- "flag_mx": {
- "c": "flags",
- "e": "🇲🇽",
- "d": "mexico",
- "u": "6.0"
- },
- "flag_my": {
- "c": "flags",
- "e": "🇲🇾",
- "d": "malaysia",
- "u": "6.0"
- },
- "flag_mz": {
- "c": "flags",
- "e": "🇲🇿",
- "d": "mozambique",
- "u": "6.0"
- },
- "flag_na": {
- "c": "flags",
- "e": "🇳🇦",
- "d": "namibia",
- "u": "6.0"
- },
- "flag_nc": {
- "c": "flags",
- "e": "🇳🇨",
- "d": "new caledonia",
- "u": "6.0"
- },
- "flag_ne": {
- "c": "flags",
- "e": "🇳🇪",
- "d": "niger",
- "u": "6.0"
- },
- "flag_nf": {
- "c": "flags",
- "e": "🇳🇫",
- "d": "norfolk island",
- "u": "6.0"
- },
- "flag_ng": {
- "c": "flags",
- "e": "🇳🇬",
- "d": "nigeria",
- "u": "6.0"
- },
- "flag_ni": {
- "c": "flags",
- "e": "🇳🇮",
- "d": "nicaragua",
- "u": "6.0"
- },
- "flag_nl": {
- "c": "flags",
- "e": "🇳🇱",
- "d": "the netherlands",
- "u": "6.0"
- },
- "flag_no": {
- "c": "flags",
- "e": "🇳🇴",
- "d": "norway",
- "u": "6.0"
- },
- "flag_np": {
- "c": "flags",
- "e": "🇳🇵",
- "d": "nepal",
- "u": "6.0"
- },
- "flag_nr": {
- "c": "flags",
- "e": "🇳🇷",
- "d": "nauru",
- "u": "6.0"
- },
- "flag_nu": {
- "c": "flags",
- "e": "🇳🇺",
- "d": "niue",
- "u": "6.0"
- },
- "flag_nz": {
- "c": "flags",
- "e": "🇳🇿",
- "d": "new zealand",
- "u": "6.0"
- },
- "flag_om": {
- "c": "flags",
- "e": "🇴🇲",
- "d": "oman",
- "u": "6.0"
- },
- "flag_pa": {
- "c": "flags",
- "e": "🇵🇦",
- "d": "panama",
- "u": "6.0"
- },
- "flag_pe": {
- "c": "flags",
- "e": "🇵🇪",
- "d": "peru",
- "u": "6.0"
- },
- "flag_pf": {
- "c": "flags",
- "e": "🇵🇫",
- "d": "french polynesia",
- "u": "6.0"
- },
- "flag_pg": {
- "c": "flags",
- "e": "🇵🇬",
- "d": "papua new guinea",
- "u": "6.0"
- },
- "flag_ph": {
- "c": "flags",
- "e": "🇵🇭",
- "d": "the philippines",
- "u": "6.0"
- },
- "flag_pk": {
- "c": "flags",
- "e": "🇵🇰",
- "d": "pakistan",
- "u": "6.0"
- },
- "flag_pl": {
- "c": "flags",
- "e": "🇵🇱",
- "d": "poland",
- "u": "6.0"
- },
- "flag_pm": {
- "c": "flags",
- "e": "🇵🇲",
- "d": "saint pierre and miquelon",
- "u": "6.0"
- },
- "flag_pn": {
- "c": "flags",
- "e": "🇵🇳",
- "d": "pitcairn",
- "u": "6.0"
- },
- "flag_pr": {
- "c": "flags",
- "e": "🇵🇷",
- "d": "puerto rico",
- "u": "6.0"
- },
- "flag_ps": {
- "c": "flags",
- "e": "🇵🇸",
- "d": "palestinian authority",
- "u": "6.0"
- },
- "flag_pt": {
- "c": "flags",
- "e": "🇵🇹",
- "d": "portugal",
- "u": "6.0"
- },
- "flag_pw": {
- "c": "flags",
- "e": "🇵🇼",
- "d": "palau",
- "u": "6.0"
- },
- "flag_py": {
- "c": "flags",
- "e": "🇵🇾",
- "d": "paraguay",
- "u": "6.0"
- },
- "flag_qa": {
- "c": "flags",
- "e": "🇶🇦",
- "d": "qatar",
- "u": "6.0"
- },
- "flag_re": {
- "c": "flags",
- "e": "🇷🇪",
- "d": "réunion",
- "u": "6.0"
- },
- "flag_ro": {
- "c": "flags",
- "e": "🇷🇴",
- "d": "romania",
- "u": "6.0"
- },
- "flag_rs": {
- "c": "flags",
- "e": "🇷🇸",
- "d": "serbia",
- "u": "6.0"
- },
- "flag_ru": {
- "c": "flags",
- "e": "🇷🇺",
- "d": "russia",
- "u": "6.0"
- },
- "flag_rw": {
- "c": "flags",
- "e": "🇷🇼",
- "d": "rwanda",
- "u": "6.0"
- },
- "flag_sa": {
- "c": "flags",
- "e": "🇸🇦",
- "d": "saudi arabia",
- "u": "6.0"
- },
- "flag_sb": {
- "c": "flags",
- "e": "🇸🇧",
- "d": "the solomon islands",
- "u": "6.0"
- },
- "flag_sc": {
- "c": "flags",
- "e": "🇸🇨",
- "d": "the seychelles",
- "u": "6.0"
- },
- "flag_sd": {
- "c": "flags",
- "e": "🇸🇩",
- "d": "sudan",
- "u": "6.0"
- },
- "flag_se": {
- "c": "flags",
- "e": "🇸🇪",
- "d": "sweden",
- "u": "6.0"
- },
- "flag_sg": {
- "c": "flags",
- "e": "🇸🇬",
- "d": "singapore",
- "u": "6.0"
- },
- "flag_sh": {
- "c": "flags",
- "e": "🇸🇭",
- "d": "saint helena",
- "u": "6.0"
- },
- "flag_si": {
- "c": "flags",
- "e": "🇸🇮",
- "d": "slovenia",
- "u": "6.0"
- },
- "flag_sj": {
- "c": "flags",
- "e": "🇸🇯",
- "d": "svalbard and jan mayen",
- "u": "6.0"
- },
- "flag_sk": {
- "c": "flags",
- "e": "🇸🇰",
- "d": "slovakia",
- "u": "6.0"
- },
- "flag_sl": {
- "c": "flags",
- "e": "🇸🇱",
- "d": "sierra leone",
- "u": "6.0"
- },
- "flag_sm": {
- "c": "flags",
- "e": "🇸🇲",
- "d": "san marino",
- "u": "6.0"
- },
- "flag_sn": {
- "c": "flags",
- "e": "🇸🇳",
- "d": "senegal",
- "u": "6.0"
- },
- "flag_so": {
- "c": "flags",
- "e": "🇸🇴",
- "d": "somalia",
- "u": "6.0"
- },
- "flag_sr": {
- "c": "flags",
- "e": "🇸🇷",
- "d": "suriname",
- "u": "6.0"
- },
- "flag_ss": {
- "c": "flags",
- "e": "🇸🇸",
- "d": "south sudan",
- "u": "6.0"
- },
- "flag_st": {
- "c": "flags",
- "e": "🇸🇹",
- "d": "sao tome and principe",
- "u": "6.0"
- },
- "flag_sv": {
- "c": "flags",
- "e": "🇸🇻",
- "d": "el salvador",
- "u": "6.0"
- },
- "flag_sx": {
- "c": "flags",
- "e": "🇸🇽",
- "d": "sint maarten",
- "u": "6.0"
- },
- "flag_sy": {
- "c": "flags",
- "e": "🇸🇾",
- "d": "syria",
- "u": "6.0"
- },
- "flag_sz": {
- "c": "flags",
- "e": "🇸🇿",
- "d": "swaziland",
- "u": "6.0"
- },
- "flag_ta": {
- "c": "flags",
- "e": "🇹🇦",
- "d": "tristan da cunha",
- "u": "6.0"
- },
- "flag_tc": {
- "c": "flags",
- "e": "🇹🇨",
- "d": "turks and caicos islands",
- "u": "6.0"
- },
- "flag_td": {
- "c": "flags",
- "e": "🇹🇩",
- "d": "chad",
- "u": "6.0"
- },
- "flag_tf": {
- "c": "flags",
- "e": "🇹🇫",
- "d": "french southern territories",
- "u": "6.0"
- },
- "flag_tg": {
- "c": "flags",
- "e": "🇹🇬",
- "d": "togo",
- "u": "6.0"
- },
- "flag_th": {
- "c": "flags",
- "e": "🇹🇭",
- "d": "thailand",
- "u": "6.0"
- },
- "flag_tj": {
- "c": "flags",
- "e": "🇹🇯",
- "d": "tajikistan",
- "u": "6.0"
- },
- "flag_tk": {
- "c": "flags",
- "e": "🇹🇰",
- "d": "tokelau",
- "u": "6.0"
- },
- "flag_tl": {
- "c": "flags",
- "e": "🇹🇱",
- "d": "east timor",
- "u": "6.0"
- },
- "flag_tm": {
- "c": "flags",
- "e": "🇹🇲",
- "d": "turkmenistan",
- "u": "6.0"
- },
- "flag_tn": {
- "c": "flags",
- "e": "🇹🇳",
- "d": "tunisia",
- "u": "6.0"
- },
- "flag_to": {
- "c": "flags",
- "e": "🇹🇴",
- "d": "tonga",
- "u": "6.0"
- },
- "flag_tr": {
- "c": "flags",
- "e": "🇹🇷",
- "d": "turkey",
- "u": "6.0"
- },
- "flag_tt": {
- "c": "flags",
- "e": "🇹🇹",
- "d": "trinidad and tobago",
- "u": "6.0"
- },
- "flag_tv": {
- "c": "flags",
- "e": "🇹🇻",
- "d": "tuvalu",
- "u": "6.0"
- },
- "flag_tw": {
- "c": "flags",
- "e": "🇹🇼",
- "d": "the republic of china",
- "u": "6.0"
- },
- "flag_tz": {
- "c": "flags",
- "e": "🇹🇿",
- "d": "tanzania",
- "u": "6.0"
- },
- "flag_ua": {
- "c": "flags",
- "e": "🇺🇦",
- "d": "ukraine",
- "u": "6.0"
- },
- "flag_ug": {
- "c": "flags",
- "e": "🇺🇬",
- "d": "uganda",
- "u": "6.0"
- },
- "flag_um": {
- "c": "flags",
- "e": "🇺🇲",
- "d": "united states minor outlying islands",
- "u": "6.0"
- },
- "flag_us": {
- "c": "flags",
- "e": "🇺🇸",
- "d": "united states",
- "u": "6.0"
- },
- "flag_uy": {
- "c": "flags",
- "e": "🇺🇾",
- "d": "uruguay",
- "u": "6.0"
- },
- "flag_uz": {
- "c": "flags",
- "e": "🇺🇿",
- "d": "uzbekistan",
- "u": "6.0"
- },
- "flag_va": {
- "c": "flags",
- "e": "🇻🇦",
- "d": "the vatican city",
- "u": "6.0"
- },
- "flag_vc": {
- "c": "flags",
- "e": "🇻🇨",
- "d": "saint vincent and the grenadines",
- "u": "6.0"
- },
- "flag_ve": {
- "c": "flags",
- "e": "🇻🇪",
- "d": "venezuela",
- "u": "6.0"
- },
- "flag_vg": {
- "c": "flags",
- "e": "🇻🇬",
- "d": "british virgin islands",
- "u": "6.0"
- },
- "flag_vi": {
- "c": "flags",
- "e": "🇻🇮",
- "d": "u.s. virgin islands",
- "u": "6.0"
- },
- "flag_vn": {
- "c": "flags",
- "e": "🇻🇳",
- "d": "vietnam",
- "u": "6.0"
- },
- "flag_vu": {
- "c": "flags",
- "e": "🇻🇺",
- "d": "vanuatu",
- "u": "6.0"
- },
- "flag_wf": {
- "c": "flags",
- "e": "🇼🇫",
- "d": "wallis and futuna",
- "u": "6.0"
- },
- "flag_white": {
- "c": "objects",
- "e": "🏳",
- "d": "waving white flag",
- "u": "6.0"
- },
- "flag_ws": {
- "c": "flags",
- "e": "🇼🇸",
- "d": "samoa",
- "u": "6.0"
- },
- "flag_xk": {
- "c": "flags",
- "e": "🇽🇰",
- "d": "kosovo",
- "u": "6.0"
- },
- "flag_ye": {
- "c": "flags",
- "e": "🇾🇪",
- "d": "yemen",
- "u": "6.0"
- },
- "flag_yt": {
- "c": "flags",
- "e": "🇾🇹",
- "d": "mayotte",
- "u": "6.0"
- },
- "flag_za": {
- "c": "flags",
- "e": "🇿🇦",
- "d": "south africa",
- "u": "6.0"
- },
- "flag_zm": {
- "c": "flags",
- "e": "🇿🇲",
- "d": "zambia",
- "u": "6.0"
- },
- "flag_zw": {
- "c": "flags",
- "e": "🇿🇼",
- "d": "zimbabwe",
- "u": "6.0"
- },
- "flags": {
- "c": "objects",
- "e": "🎏",
- "d": "carp streamer",
- "u": "6.0"
- },
- "flashlight": {
- "c": "objects",
- "e": "🔦",
- "d": "electric torch",
- "u": "6.0"
- },
- "fleur-de-lis": {
- "c": "symbols",
- "e": "⚜",
- "d": "fleur-de-lis",
- "u": "4.1"
- },
- "floppy_disk": {
- "c": "objects",
- "e": "💾",
- "d": "floppy disk",
- "u": "6.0"
- },
- "flower_playing_cards": {
- "c": "symbols",
- "e": "🎴",
- "d": "flower playing cards",
- "u": "6.0"
- },
- "flushed": {
- "c": "people",
- "e": "😳",
- "d": "flushed face",
- "u": "6.0"
- },
- "fog": {
- "c": "nature",
- "e": "🌫",
- "d": "fog",
- "u": "7.0"
- },
- "foggy": {
- "c": "travel",
- "e": "🌁",
- "d": "foggy",
- "u": "6.0"
- },
- "football": {
- "c": "activity",
- "e": "🏈",
- "d": "american football",
- "u": "6.0"
- },
- "footprints": {
- "c": "people",
- "e": "👣",
- "d": "footprints",
- "u": "6.0"
- },
- "fork_and_knife": {
- "c": "food",
- "e": "🍴",
- "d": "fork and knife",
- "u": "6.0"
- },
- "fork_knife_plate": {
- "c": "food",
- "e": "🍽",
- "d": "fork and knife with plate",
- "u": "7.0"
- },
- "fountain": {
- "c": "travel",
- "e": "⛲",
- "d": "fountain",
- "u": "5.2"
- },
- "four": {
- "c": "symbols",
- "e": "4️⃣",
- "d": "keycap digit four",
- "u": "3.0"
- },
- "four_leaf_clover": {
- "c": "nature",
- "e": "🍀",
- "d": "four leaf clover",
- "u": "6.0"
- },
- "fox": {
- "c": "nature",
- "e": "🦊",
- "d": "fox face",
- "u": "9.0"
- },
- "frame_photo": {
- "c": "objects",
- "e": "🖼",
- "d": "frame with picture",
- "u": "7.0"
- },
- "free": {
- "c": "symbols",
- "e": "🆓",
- "d": "squared free",
- "u": "6.0"
- },
- "french_bread": {
- "c": "food",
- "e": "🥖",
- "d": "baguette bread",
- "u": "9.0"
- },
- "fried_shrimp": {
- "c": "food",
- "e": "🍤",
- "d": "fried shrimp",
- "u": "6.0"
- },
- "fries": {
- "c": "food",
- "e": "🍟",
- "d": "french fries",
- "u": "6.0"
- },
- "frog": {
- "c": "nature",
- "e": "🐸",
- "d": "frog face",
- "u": "6.0"
- },
- "frowning": {
- "c": "people",
- "e": "😦",
- "d": "frowning face with open mouth",
- "u": "6.1"
- },
- "frowning2": {
- "c": "people",
- "e": "☹",
- "d": "white frowning face",
- "u": "1.1"
- },
- "fuelpump": {
- "c": "travel",
- "e": "⛽",
- "d": "fuel pump",
- "u": "5.2"
- },
- "full_moon": {
- "c": "nature",
- "e": "🌕",
- "d": "full moon symbol",
- "u": "6.0"
- },
- "full_moon_with_face": {
- "c": "nature",
- "e": "🌝",
- "d": "full moon with face",
- "u": "6.0"
- },
- "game_die": {
- "c": "activity",
- "e": "🎲",
- "d": "game die",
- "u": "6.0"
- },
- "gear": {
- "c": "objects",
- "e": "⚙",
- "d": "gear",
- "u": "4.1"
- },
- "gem": {
- "c": "objects",
- "e": "💎",
- "d": "gem stone",
- "u": "6.0"
- },
- "gay_pride_flag": {
- "c": "flags",
- "e": "🏳🌈",
- "d": "gay_pride_flag",
- "u": "6.0"
- },
- "gemini": {
- "c": "symbols",
- "e": "♊",
- "d": "gemini",
- "u": "1.1"
- },
- "ghost": {
- "c": "people",
- "e": "👻",
- "d": "ghost",
- "u": "6.0"
- },
- "gift": {
- "c": "objects",
- "e": "🎁",
- "d": "wrapped present",
- "u": "6.0"
- },
- "gift_heart": {
- "c": "symbols",
- "e": "💝",
- "d": "heart with ribbon",
- "u": "6.0"
- },
- "girl": {
- "c": "people",
- "e": "👧",
- "d": "girl",
- "u": "6.0"
- },
- "girl_tone1": {
- "c": "people",
- "e": "👧🏻",
- "d": "girl tone 1",
- "u": "8.0"
- },
- "girl_tone2": {
- "c": "people",
- "e": "👧🏼",
- "d": "girl tone 2",
- "u": "8.0"
- },
- "girl_tone3": {
- "c": "people",
- "e": "👧🏽",
- "d": "girl tone 3",
- "u": "8.0"
- },
- "girl_tone4": {
- "c": "people",
- "e": "👧🏾",
- "d": "girl tone 4",
- "u": "8.0"
- },
- "girl_tone5": {
- "c": "people",
- "e": "👧🏿",
- "d": "girl tone 5",
- "u": "8.0"
- },
- "globe_with_meridians": {
- "c": "symbols",
- "e": "🌐",
- "d": "globe with meridians",
- "u": "6.0"
- },
- "goal": {
- "c": "activity",
- "e": "🥅",
- "d": "goal net",
- "u": "9.0"
- },
- "goat": {
- "c": "nature",
- "e": "🐐",
- "d": "goat",
- "u": "6.0"
- },
- "golf": {
- "c": "activity",
- "e": "⛳",
- "d": "flag in hole",
- "u": "5.2"
- },
- "golfer": {
- "c": "activity",
- "e": "🏌",
- "d": "golfer",
- "u": "7.0"
- },
- "gorilla": {
- "c": "nature",
- "e": "🦍",
- "d": "gorilla",
- "u": "9.0"
- },
- "grapes": {
- "c": "food",
- "e": "🍇",
- "d": "grapes",
- "u": "6.0"
- },
- "green_apple": {
- "c": "food",
- "e": "🍏",
- "d": "green apple",
- "u": "6.0"
- },
- "green_book": {
- "c": "objects",
- "e": "📗",
- "d": "green book",
- "u": "6.0"
- },
- "green_heart": {
- "c": "symbols",
- "e": "💚",
- "d": "green heart",
- "u": "6.0"
- },
- "grey_exclamation": {
- "c": "symbols",
- "e": "❕",
- "d": "white exclamation mark ornament",
- "u": "6.0"
- },
- "grey_question": {
- "c": "symbols",
- "e": "❔",
- "d": "white question mark ornament",
- "u": "6.0"
- },
- "grimacing": {
- "c": "people",
- "e": "😬",
- "d": "grimacing face",
- "u": "6.1"
- },
- "grin": {
- "c": "people",
- "e": "😁",
- "d": "grinning face with smiling eyes",
- "u": "6.0"
- },
- "grinning": {
- "c": "people",
- "e": "😀",
- "d": "grinning face",
- "u": "6.1"
- },
- "guardsman": {
- "c": "people",
- "e": "💂",
- "d": "guardsman",
- "u": "6.0"
- },
- "guardsman_tone1": {
- "c": "people",
- "e": "💂🏻",
- "d": "guardsman tone 1",
- "u": "8.0"
- },
- "guardsman_tone2": {
- "c": "people",
- "e": "💂🏼",
- "d": "guardsman tone 2",
- "u": "8.0"
- },
- "guardsman_tone3": {
- "c": "people",
- "e": "💂🏽",
- "d": "guardsman tone 3",
- "u": "8.0"
- },
- "guardsman_tone4": {
- "c": "people",
- "e": "💂🏾",
- "d": "guardsman tone 4",
- "u": "8.0"
- },
- "guardsman_tone5": {
- "c": "people",
- "e": "💂🏿",
- "d": "guardsman tone 5",
- "u": "8.0"
- },
- "guitar": {
- "c": "activity",
- "e": "🎸",
- "d": "guitar",
- "u": "6.0"
- },
- "gun": {
- "c": "objects",
- "e": "🔫",
- "d": "pistol",
- "u": "6.0"
- },
- "haircut": {
- "c": "people",
- "e": "💇",
- "d": "haircut",
- "u": "6.0"
- },
- "haircut_tone1": {
- "c": "people",
- "e": "💇🏻",
- "d": "haircut tone 1",
- "u": "8.0"
- },
- "haircut_tone2": {
- "c": "people",
- "e": "💇🏼",
- "d": "haircut tone 2",
- "u": "8.0"
- },
- "haircut_tone3": {
- "c": "people",
- "e": "💇🏽",
- "d": "haircut tone 3",
- "u": "8.0"
- },
- "haircut_tone4": {
- "c": "people",
- "e": "💇🏾",
- "d": "haircut tone 4",
- "u": "8.0"
- },
- "haircut_tone5": {
- "c": "people",
- "e": "💇🏿",
- "d": "haircut tone 5",
- "u": "8.0"
- },
- "hamburger": {
- "c": "food",
- "e": "🍔",
- "d": "hamburger",
- "u": "6.0"
- },
- "hammer": {
- "c": "objects",
- "e": "🔨",
- "d": "hammer",
- "u": "6.0"
- },
- "hammer_pick": {
- "c": "objects",
- "e": "⚒",
- "d": "hammer and pick",
- "u": "4.1"
- },
- "hamster": {
- "c": "nature",
- "e": "🐹",
- "d": "hamster face",
- "u": "6.0"
- },
- "hand_splayed": {
- "c": "people",
- "e": "🖐",
- "d": "raised hand with fingers splayed",
- "u": "7.0"
- },
- "hand_splayed_tone1": {
- "c": "people",
- "e": "🖐🏻",
- "d": "raised hand with fingers splayed tone 1",
- "u": "8.0"
- },
- "hand_splayed_tone2": {
- "c": "people",
- "e": "🖐🏼",
- "d": "raised hand with fingers splayed tone 2",
- "u": "8.0"
- },
- "hand_splayed_tone3": {
- "c": "people",
- "e": "🖐🏽",
- "d": "raised hand with fingers splayed tone 3",
- "u": "8.0"
- },
- "hand_splayed_tone4": {
- "c": "people",
- "e": "🖐🏾",
- "d": "raised hand with fingers splayed tone 4",
- "u": "8.0"
- },
- "hand_splayed_tone5": {
- "c": "people",
- "e": "🖐🏿",
- "d": "raised hand with fingers splayed tone 5",
- "u": "8.0"
- },
- "handbag": {
- "c": "people",
- "e": "👜",
- "d": "handbag",
- "u": "6.0"
- },
- "handball": {
- "c": "activity",
- "e": "🤾",
- "d": "handball",
- "u": "9.0"
- },
- "handball_tone1": {
- "c": "activity",
- "e": "🤾🏻",
- "d": "handball tone 1",
- "u": "9.0"
- },
- "handball_tone2": {
- "c": "activity",
- "e": "🤾🏼",
- "d": "handball tone 2",
- "u": "9.0"
- },
- "handball_tone3": {
- "c": "activity",
- "e": "🤾🏽",
- "d": "handball tone 3",
- "u": "9.0"
- },
- "handball_tone4": {
- "c": "activity",
- "e": "🤾🏾",
- "d": "handball tone 4",
- "u": "9.0"
- },
- "handball_tone5": {
- "c": "activity",
- "e": "🤾🏿",
- "d": "handball tone 5",
- "u": "9.0"
- },
- "handshake": {
- "c": "people",
- "e": "🤝",
- "d": "handshake",
- "u": "9.0"
- },
- "handshake_tone1": {
- "c": "people",
- "e": "🤝🏻",
- "d": "handshake tone 1",
- "u": "9.0"
- },
- "handshake_tone2": {
- "c": "people",
- "e": "🤝🏼",
- "d": "handshake tone 2",
- "u": "9.0"
- },
- "handshake_tone3": {
- "c": "people",
- "e": "🤝🏽",
- "d": "handshake tone 3",
- "u": "9.0"
- },
- "handshake_tone4": {
- "c": "people",
- "e": "🤝🏾",
- "d": "handshake tone 4",
- "u": "9.0"
- },
- "handshake_tone5": {
- "c": "people",
- "e": "🤝🏿",
- "d": "handshake tone 5",
- "u": "9.0"
- },
- "hash": {
- "c": "symbols",
- "e": "#⃣",
- "d": "number sign",
- "u": "3.0"
- },
- "hatched_chick": {
- "c": "nature",
- "e": "🐥",
- "d": "front-facing baby chick",
- "u": "6.0"
- },
- "hatching_chick": {
- "c": "nature",
- "e": "🐣",
- "d": "hatching chick",
- "u": "6.0"
- },
- "head_bandage": {
- "c": "people",
- "e": "🤕",
- "d": "face with head-bandage",
- "u": "8.0"
- },
- "headphones": {
- "c": "activity",
- "e": "🎧",
- "d": "headphone",
- "u": "6.0"
- },
- "hear_no_evil": {
- "c": "nature",
- "e": "🙉",
- "d": "hear-no-evil monkey",
- "u": "6.0"
- },
- "heart": {
- "c": "symbols",
- "e": "❤",
- "d": "heavy black heart",
- "u": "1.1"
- },
- "heart_decoration": {
- "c": "symbols",
- "e": "💟",
- "d": "heart decoration",
- "u": "6.0"
- },
- "heart_exclamation": {
- "c": "symbols",
- "e": "❣",
- "d": "heavy heart exclamation mark ornament",
- "u": "1.1"
- },
- "heart_eyes": {
- "c": "people",
- "e": "😍",
- "d": "smiling face with heart-shaped eyes",
- "u": "6.0"
- },
- "heart_eyes_cat": {
- "c": "people",
- "e": "😻",
- "d": "smiling cat face with heart-shaped eyes",
- "u": "6.0"
- },
- "heartbeat": {
- "c": "symbols",
- "e": "💓",
- "d": "beating heart",
- "u": "6.0"
- },
- "heartpulse": {
- "c": "symbols",
- "e": "💗",
- "d": "growing heart",
- "u": "6.0"
- },
- "hearts": {
- "c": "symbols",
- "e": "♥",
- "d": "black heart suit",
- "u": "1.1"
- },
- "heavy_check_mark": {
- "c": "symbols",
- "e": "✔",
- "d": "heavy check mark",
- "u": "1.1"
- },
- "heavy_division_sign": {
- "c": "symbols",
- "e": "➗",
- "d": "heavy division sign",
- "u": "6.0"
- },
- "heavy_dollar_sign": {
- "c": "symbols",
- "e": "💲",
- "d": "heavy dollar sign",
- "u": "6.0"
- },
- "heavy_minus_sign": {
- "c": "symbols",
- "e": "➖",
- "d": "heavy minus sign",
- "u": "6.0"
- },
- "heavy_multiplication_x": {
- "c": "symbols",
- "e": "✖",
- "d": "heavy multiplication x",
- "u": "1.1"
- },
- "heavy_plus_sign": {
- "c": "symbols",
- "e": "➕",
- "d": "heavy plus sign",
- "u": "6.0"
- },
- "helicopter": {
- "c": "travel",
- "e": "🚁",
- "d": "helicopter",
- "u": "6.0"
- },
- "helmet_with_cross": {
- "c": "people",
- "e": "⛑",
- "d": "helmet with white cross",
- "u": "5.2"
- },
- "herb": {
- "c": "nature",
- "e": "🌿",
- "d": "herb",
- "u": "6.0"
- },
- "hibiscus": {
- "c": "nature",
- "e": "🌺",
- "d": "hibiscus",
- "u": "6.0"
- },
- "high_brightness": {
- "c": "symbols",
- "e": "🔆",
- "d": "high brightness symbol",
- "u": "6.0"
- },
- "high_heel": {
- "c": "people",
- "e": "👠",
- "d": "high-heeled shoe",
- "u": "6.0"
- },
- "hockey": {
- "c": "activity",
- "e": "🏒",
- "d": "ice hockey stick and puck",
- "u": "8.0"
- },
- "hole": {
- "c": "objects",
- "e": "🕳",
- "d": "hole",
- "u": "7.0"
- },
- "homes": {
- "c": "travel",
- "e": "🏘",
- "d": "house buildings",
- "u": "7.0"
- },
- "honey_pot": {
- "c": "food",
- "e": "🍯",
- "d": "honey pot",
- "u": "6.0"
- },
- "horse": {
- "c": "nature",
- "e": "🐴",
- "d": "horse face",
- "u": "6.0"
- },
- "horse_racing": {
- "c": "activity",
- "e": "🏇",
- "d": "horse racing",
- "u": "6.0"
- },
- "horse_racing_tone1": {
- "c": "activity",
- "e": "🏇🏻",
- "d": "horse racing tone 1",
- "u": "8.0"
- },
- "horse_racing_tone2": {
- "c": "activity",
- "e": "🏇🏼",
- "d": "horse racing tone 2",
- "u": "8.0"
- },
- "horse_racing_tone3": {
- "c": "activity",
- "e": "🏇🏽",
- "d": "horse racing tone 3",
- "u": "8.0"
- },
- "horse_racing_tone4": {
- "c": "activity",
- "e": "🏇🏾",
- "d": "horse racing tone 4",
- "u": "8.0"
- },
- "horse_racing_tone5": {
- "c": "activity",
- "e": "🏇🏿",
- "d": "horse racing tone 5",
- "u": "8.0"
- },
- "hospital": {
- "c": "travel",
- "e": "🏥",
- "d": "hospital",
- "u": "6.0"
- },
- "hot_pepper": {
- "c": "food",
- "e": "🌶",
- "d": "hot pepper",
- "u": "7.0"
- },
- "hotdog": {
- "c": "food",
- "e": "🌭",
- "d": "hot dog",
- "u": "8.0"
- },
- "hotel": {
- "c": "travel",
- "e": "🏨",
- "d": "hotel",
- "u": "6.0"
- },
- "hotsprings": {
- "c": "symbols",
- "e": "♨",
- "d": "hot springs",
- "u": "1.1"
- },
- "hourglass": {
- "c": "objects",
- "e": "⌛",
- "d": "hourglass",
- "u": "1.1"
- },
- "hourglass_flowing_sand": {
- "c": "objects",
- "e": "⏳",
- "d": "hourglass with flowing sand",
- "u": "6.0"
- },
- "house": {
- "c": "travel",
- "e": "🏠",
- "d": "house building",
- "u": "6.0"
- },
- "house_abandoned": {
- "c": "travel",
- "e": "🏚",
- "d": "derelict house building",
- "u": "7.0"
- },
- "house_with_garden": {
- "c": "travel",
- "e": "🏡",
- "d": "house with garden",
- "u": "6.0"
- },
- "hugging": {
- "c": "people",
- "e": "🤗",
- "d": "hugging face",
- "u": "8.0"
- },
- "hushed": {
- "c": "people",
- "e": "😯",
- "d": "hushed face",
- "u": "6.1"
- },
- "ice_cream": {
- "c": "food",
- "e": "🍨",
- "d": "ice cream",
- "u": "6.0"
- },
- "ice_skate": {
- "c": "activity",
- "e": "⛸",
- "d": "ice skate",
- "u": "5.2"
- },
- "icecream": {
- "c": "food",
- "e": "🍦",
- "d": "soft ice cream",
- "u": "6.0"
- },
- "id": {
- "c": "symbols",
- "e": "🆔",
- "d": "squared id",
- "u": "6.0"
- },
- "ideograph_advantage": {
- "c": "symbols",
- "e": "🉐",
- "d": "circled ideograph advantage",
- "u": "6.0"
- },
- "imp": {
- "c": "people",
- "e": "👿",
- "d": "imp",
- "u": "6.0"
- },
- "inbox_tray": {
- "c": "objects",
- "e": "📥",
- "d": "inbox tray",
- "u": "6.0"
- },
- "incoming_envelope": {
- "c": "objects",
- "e": "📨",
- "d": "incoming envelope",
- "u": "6.0"
- },
- "information_desk_person": {
- "c": "people",
- "e": "💁",
- "d": "information desk person",
- "u": "6.0"
- },
- "information_desk_person_tone1": {
- "c": "people",
- "e": "💁🏻",
- "d": "information desk person tone 1",
- "u": "8.0"
- },
- "information_desk_person_tone2": {
- "c": "people",
- "e": "💁🏼",
- "d": "information desk person tone 2",
- "u": "8.0"
- },
- "information_desk_person_tone3": {
- "c": "people",
- "e": "💁🏽",
- "d": "information desk person tone 3",
- "u": "8.0"
- },
- "information_desk_person_tone4": {
- "c": "people",
- "e": "💁🏾",
- "d": "information desk person tone 4",
- "u": "8.0"
- },
- "information_desk_person_tone5": {
- "c": "people",
- "e": "💁🏿",
- "d": "information desk person tone 5",
- "u": "8.0"
- },
- "information_source": {
- "c": "symbols",
- "e": "ℹ",
- "d": "information source",
- "u": "3.0"
- },
- "innocent": {
- "c": "people",
- "e": "😇",
- "d": "smiling face with halo",
- "u": "6.0"
- },
- "interrobang": {
- "c": "symbols",
- "e": "⁉",
- "d": "exclamation question mark",
- "u": "3.0"
- },
- "iphone": {
- "c": "objects",
- "e": "📱",
- "d": "mobile phone",
- "u": "6.0"
- },
- "island": {
- "c": "travel",
- "e": "🏝",
- "d": "desert island",
- "u": "7.0"
- },
- "izakaya_lantern": {
- "c": "objects",
- "e": "🏮",
- "d": "izakaya lantern",
- "u": "6.0"
- },
- "jack_o_lantern": {
- "c": "nature",
- "e": "🎃",
- "d": "jack-o-lantern",
- "u": "6.0"
- },
- "japan": {
- "c": "travel",
- "e": "🗾",
- "d": "silhouette of japan",
- "u": "6.0"
- },
- "japanese_castle": {
- "c": "travel",
- "e": "🏯",
- "d": "japanese castle",
- "u": "6.0"
- },
- "japanese_goblin": {
- "c": "people",
- "e": "👺",
- "d": "japanese goblin",
- "u": "6.0"
- },
- "japanese_ogre": {
- "c": "people",
- "e": "👹",
- "d": "japanese ogre",
- "u": "6.0"
- },
- "jeans": {
- "c": "people",
- "e": "👖",
- "d": "jeans",
- "u": "6.0"
- },
- "joy": {
- "c": "people",
- "e": "😂",
- "d": "face with tears of joy",
- "u": "6.0"
- },
- "joy_cat": {
- "c": "people",
- "e": "😹",
- "d": "cat face with tears of joy",
- "u": "6.0"
- },
- "joystick": {
- "c": "objects",
- "e": "🕹",
- "d": "joystick",
- "u": "7.0"
- },
- "juggling": {
- "c": "activity",
- "e": "🤹",
- "d": "juggling",
- "u": "9.0"
- },
- "juggling_tone1": {
- "c": "activity",
- "e": "🤹🏻",
- "d": "juggling tone 1",
- "u": "9.0"
- },
- "juggling_tone2": {
- "c": "activity",
- "e": "🤹🏼",
- "d": "juggling tone 2",
- "u": "9.0"
- },
- "juggling_tone3": {
- "c": "activity",
- "e": "🤹🏽",
- "d": "juggling tone 3",
- "u": "9.0"
- },
- "juggling_tone4": {
- "c": "activity",
- "e": "🤹🏾",
- "d": "juggling tone 4",
- "u": "9.0"
- },
- "juggling_tone5": {
- "c": "activity",
- "e": "🤹🏿",
- "d": "juggling tone 5",
- "u": "9.0"
- },
- "kaaba": {
- "c": "travel",
- "e": "🕋",
- "d": "kaaba",
- "u": "8.0"
- },
- "key": {
- "c": "objects",
- "e": "🔑",
- "d": "key",
- "u": "6.0"
- },
- "key2": {
- "c": "objects",
- "e": "🗝",
- "d": "old key",
- "u": "7.0"
- },
- "keyboard": {
- "c": "objects",
- "e": "⌨",
- "d": "keyboard",
- "u": "1.1"
- },
- "kimono": {
- "c": "people",
- "e": "👘",
- "d": "kimono",
- "u": "6.0"
- },
- "kiss": {
- "c": "people",
- "e": "💋",
- "d": "kiss mark",
- "u": "6.0"
- },
- "kiss_mm": {
- "c": "people",
- "e": "👨‍❤️‍💋‍👨",
- "d": "kiss (man,man)",
- "u": "6.0"
- },
- "kiss_ww": {
- "c": "people",
- "e": "👩‍❤️‍💋‍👩",
- "d": "kiss (woman,woman)",
- "u": "6.0"
- },
- "kissing": {
- "c": "people",
- "e": "😗",
- "d": "kissing face",
- "u": "6.1"
- },
- "kissing_cat": {
- "c": "people",
- "e": "😽",
- "d": "kissing cat face with closed eyes",
- "u": "6.0"
- },
- "kissing_closed_eyes": {
- "c": "people",
- "e": "😚",
- "d": "kissing face with closed eyes",
- "u": "6.0"
- },
- "kissing_heart": {
- "c": "people",
- "e": "😘",
- "d": "face throwing a kiss",
- "u": "6.0"
- },
- "kissing_smiling_eyes": {
- "c": "people",
- "e": "😙",
- "d": "kissing face with smiling eyes",
- "u": "6.1"
- },
- "kiwi": {
- "c": "food",
- "e": "🥝",
- "d": "kiwifruit",
- "u": "9.0"
- },
- "knife": {
- "c": "objects",
- "e": "🔪",
- "d": "hocho",
- "u": "6.0"
- },
- "koala": {
- "c": "nature",
- "e": "🐨",
- "d": "koala",
- "u": "6.0"
- },
- "koko": {
- "c": "symbols",
- "e": "🈁",
- "d": "squared katakana koko",
- "u": "6.0"
- },
- "label": {
- "c": "objects",
- "e": "🏷",
- "d": "label",
- "u": "7.0"
- },
- "large_blue_circle": {
- "c": "symbols",
- "e": "🔵",
- "d": "large blue circle",
- "u": "6.0"
- },
- "large_blue_diamond": {
- "c": "symbols",
- "e": "🔷",
- "d": "large blue diamond",
- "u": "6.0"
- },
- "large_orange_diamond": {
- "c": "symbols",
- "e": "🔶",
- "d": "large orange diamond",
- "u": "6.0"
- },
- "last_quarter_moon": {
- "c": "nature",
- "e": "🌗",
- "d": "last quarter moon symbol",
- "u": "6.0"
- },
- "last_quarter_moon_with_face": {
- "c": "nature",
- "e": "🌜",
- "d": "last quarter moon with face",
- "u": "6.0"
- },
- "laughing": {
- "c": "people",
- "e": "😆",
- "d": "smiling face with open mouth and tightly-closed ey",
- "u": "6.0"
- },
- "leaves": {
- "c": "nature",
- "e": "🍃",
- "d": "leaf fluttering in wind",
- "u": "6.0"
- },
- "ledger": {
- "c": "objects",
- "e": "📒",
- "d": "ledger",
- "u": "6.0"
- },
- "left_facing_fist": {
- "c": "people",
- "e": "🤛",
- "d": "left-facing fist",
- "u": "9.0"
- },
- "left_facing_fist_tone1": {
- "c": "people",
- "e": "🤛🏻",
- "d": "left facing fist tone 1",
- "u": "9.0"
- },
- "left_facing_fist_tone2": {
- "c": "people",
- "e": "🤛🏼",
- "d": "left facing fist tone 2",
- "u": "9.0"
- },
- "left_facing_fist_tone3": {
- "c": "people",
- "e": "🤛🏽",
- "d": "left facing fist tone 3",
- "u": "9.0"
- },
- "left_facing_fist_tone4": {
- "c": "people",
- "e": "🤛🏾",
- "d": "left facing fist tone 4",
- "u": "9.0"
- },
- "left_facing_fist_tone5": {
- "c": "people",
- "e": "🤛🏿",
- "d": "left facing fist tone 5",
- "u": "9.0"
- },
- "left_luggage": {
- "c": "symbols",
- "e": "🛅",
- "d": "left luggage",
- "u": "6.0"
- },
- "left_right_arrow": {
- "c": "symbols",
- "e": "↔",
- "d": "left right arrow",
- "u": "1.1"
- },
- "leftwards_arrow_with_hook": {
- "c": "symbols",
- "e": "↩",
- "d": "leftwards arrow with hook",
- "u": "1.1"
- },
- "lemon": {
- "c": "food",
- "e": "🍋",
- "d": "lemon",
- "u": "6.0"
- },
- "leo": {
- "c": "symbols",
- "e": "♌",
- "d": "leo",
- "u": "1.1"
- },
- "leopard": {
- "c": "nature",
- "e": "🐆",
- "d": "leopard",
- "u": "6.0"
- },
- "level_slider": {
- "c": "objects",
- "e": "🎚",
- "d": "level slider",
- "u": "7.0"
- },
- "levitate": {
- "c": "activity",
- "e": "🕴",
- "d": "man in business suit levitating",
- "u": "7.0"
- },
- "libra": {
- "c": "symbols",
- "e": "♎",
- "d": "libra",
- "u": "1.1"
- },
- "lifter": {
- "c": "activity",
- "e": "🏋",
- "d": "weight lifter",
- "u": "7.0"
- },
- "lifter_tone1": {
- "c": "activity",
- "e": "🏋🏻",
- "d": "weight lifter tone 1",
- "u": "8.0"
- },
- "lifter_tone2": {
- "c": "activity",
- "e": "🏋🏼",
- "d": "weight lifter tone 2",
- "u": "8.0"
- },
- "lifter_tone3": {
- "c": "activity",
- "e": "🏋🏽",
- "d": "weight lifter tone 3",
- "u": "8.0"
- },
- "lifter_tone4": {
- "c": "activity",
- "e": "🏋🏾",
- "d": "weight lifter tone 4",
- "u": "8.0"
- },
- "lifter_tone5": {
- "c": "activity",
- "e": "🏋🏿",
- "d": "weight lifter tone 5",
- "u": "8.0"
- },
- "light_rail": {
- "c": "travel",
- "e": "🚈",
- "d": "light rail",
- "u": "6.0"
- },
- "link": {
- "c": "objects",
- "e": "🔗",
- "d": "link symbol",
- "u": "6.0"
- },
- "lion_face": {
- "c": "nature",
- "e": "🦁",
- "d": "lion face",
- "u": "8.0"
- },
- "lips": {
- "c": "people",
- "e": "👄",
- "d": "mouth",
- "u": "6.0"
- },
- "lipstick": {
- "c": "people",
- "e": "💄",
- "d": "lipstick",
- "u": "6.0"
- },
- "lizard": {
- "c": "nature",
- "e": "🦎",
- "d": "lizard",
- "u": "9.0"
- },
- "lock": {
- "c": "objects",
- "e": "🔒",
- "d": "lock",
- "u": "6.0"
- },
- "lock_with_ink_pen": {
- "c": "objects",
- "e": "🔏",
- "d": "lock with ink pen",
- "u": "6.0"
- },
- "lollipop": {
- "c": "food",
- "e": "🍭",
- "d": "lollipop",
- "u": "6.0"
- },
- "loop": {
- "c": "symbols",
- "e": "➿",
- "d": "double curly loop",
- "u": "6.0"
- },
- "loud_sound": {
- "c": "symbols",
- "e": "🔊",
- "d": "speaker with three sound waves",
- "u": "6.0"
- },
- "loudspeaker": {
- "c": "symbols",
- "e": "📢",
- "d": "public address loudspeaker",
- "u": "6.0"
- },
- "love_hotel": {
- "c": "travel",
- "e": "🏩",
- "d": "love hotel",
- "u": "6.0"
- },
- "love_letter": {
- "c": "objects",
- "e": "💌",
- "d": "love letter",
- "u": "6.0"
- },
- "low_brightness": {
- "c": "symbols",
- "e": "🔅",
- "d": "low brightness symbol",
- "u": "6.0"
- },
- "lying_face": {
- "c": "people",
- "e": "🤥",
- "d": "lying face",
- "u": "9.0"
- },
- "m": {
- "c": "symbols",
- "e": "Ⓜ",
- "d": "circled latin capital letter m",
- "u": "1.1"
- },
- "mag": {
- "c": "objects",
- "e": "🔍",
- "d": "left-pointing magnifying glass",
- "u": "6.0"
- },
- "mag_right": {
- "c": "objects",
- "e": "🔎",
- "d": "right-pointing magnifying glass",
- "u": "6.0"
- },
- "mahjong": {
- "c": "symbols",
- "e": "🀄",
- "d": "mahjong tile red dragon",
- "u": "5.1"
- },
- "mailbox": {
- "c": "objects",
- "e": "📫",
- "d": "closed mailbox with raised flag",
- "u": "6.0"
- },
- "mailbox_closed": {
- "c": "objects",
- "e": "📪",
- "d": "closed mailbox with lowered flag",
- "u": "6.0"
- },
- "mailbox_with_mail": {
- "c": "objects",
- "e": "📬",
- "d": "open mailbox with raised flag",
- "u": "6.0"
- },
- "mailbox_with_no_mail": {
- "c": "objects",
- "e": "📭",
- "d": "open mailbox with lowered flag",
- "u": "6.0"
- },
- "man": {
- "c": "people",
- "e": "👨",
- "d": "man",
- "u": "6.0"
- },
- "man_dancing": {
- "c": "people",
- "e": "🕺",
- "d": "man dancing",
- "u": "9.0"
- },
- "man_dancing_tone1": {
- "c": "activity",
- "e": "🕺🏻",
- "d": "man dancing tone 1",
- "u": "9.0"
- },
- "man_dancing_tone2": {
- "c": "activity",
- "e": "🕺🏼",
- "d": "man dancing tone 2",
- "u": "9.0"
- },
- "man_dancing_tone3": {
- "c": "activity",
- "e": "🕺🏽",
- "d": "man dancing tone 3",
- "u": "9.0"
- },
- "man_dancing_tone4": {
- "c": "activity",
- "e": "🕺🏾",
- "d": "man dancing tone 4",
- "u": "9.0"
- },
- "man_dancing_tone5": {
- "c": "activity",
- "e": "🕺🏿",
- "d": "man dancing tone 5",
- "u": "9.0"
- },
- "man_in_tuxedo": {
- "c": "people",
- "e": "🤵",
- "d": "man in tuxedo",
- "u": "9.0"
- },
- "man_in_tuxedo_tone1": {
- "c": "people",
- "e": "🤵🏻",
- "d": "man in tuxedo tone 1",
- "u": "9.0"
- },
- "man_in_tuxedo_tone2": {
- "c": "people",
- "e": "🤵🏼",
- "d": "man in tuxedo tone 2",
- "u": "9.0"
- },
- "man_in_tuxedo_tone3": {
- "c": "people",
- "e": "🤵🏽",
- "d": "man in tuxedo tone 3",
- "u": "9.0"
- },
- "man_in_tuxedo_tone4": {
- "c": "people",
- "e": "🤵🏾",
- "d": "man in tuxedo tone 4",
- "u": "9.0"
- },
- "man_in_tuxedo_tone5": {
- "c": "people",
- "e": "🤵🏿",
- "d": "man in tuxedo tone 5",
- "u": "9.0"
- },
- "man_tone1": {
- "c": "people",
- "e": "👨🏻",
- "d": "man tone 1",
- "u": "8.0"
- },
- "man_tone2": {
- "c": "people",
- "e": "👨🏼",
- "d": "man tone 2",
- "u": "8.0"
- },
- "man_tone3": {
- "c": "people",
- "e": "👨🏽",
- "d": "man tone 3",
- "u": "8.0"
- },
- "man_tone4": {
- "c": "people",
- "e": "👨🏾",
- "d": "man tone 4",
- "u": "8.0"
- },
- "man_tone5": {
- "c": "people",
- "e": "👨🏿",
- "d": "man tone 5",
- "u": "8.0"
- },
- "man_with_gua_pi_mao": {
- "c": "people",
- "e": "👲",
- "d": "man with gua pi mao",
- "u": "6.0"
- },
- "man_with_gua_pi_mao_tone1": {
- "c": "people",
- "e": "👲🏻",
- "d": "man with gua pi mao tone 1",
- "u": "8.0"
- },
- "man_with_gua_pi_mao_tone2": {
- "c": "people",
- "e": "👲🏼",
- "d": "man with gua pi mao tone 2",
- "u": "8.0"
- },
- "man_with_gua_pi_mao_tone3": {
- "c": "people",
- "e": "👲🏽",
- "d": "man with gua pi mao tone 3",
- "u": "8.0"
- },
- "man_with_gua_pi_mao_tone4": {
- "c": "people",
- "e": "👲🏾",
- "d": "man with gua pi mao tone 4",
- "u": "8.0"
- },
- "man_with_gua_pi_mao_tone5": {
- "c": "people",
- "e": "👲🏿",
- "d": "man with gua pi mao tone 5",
- "u": "8.0"
- },
- "man_with_turban": {
- "c": "people",
- "e": "👳",
- "d": "man with turban",
- "u": "6.0"
- },
- "man_with_turban_tone1": {
- "c": "people",
- "e": "👳🏻",
- "d": "man with turban tone 1",
- "u": "8.0"
- },
- "man_with_turban_tone2": {
- "c": "people",
- "e": "👳🏼",
- "d": "man with turban tone 2",
- "u": "8.0"
- },
- "man_with_turban_tone3": {
- "c": "people",
- "e": "👳🏽",
- "d": "man with turban tone 3",
- "u": "8.0"
- },
- "man_with_turban_tone4": {
- "c": "people",
- "e": "👳🏾",
- "d": "man with turban tone 4",
- "u": "8.0"
- },
- "man_with_turban_tone5": {
- "c": "people",
- "e": "👳🏿",
- "d": "man with turban tone 5",
- "u": "8.0"
- },
- "mans_shoe": {
- "c": "people",
- "e": "👞",
- "d": "mans shoe",
- "u": "6.0"
- },
- "map": {
- "c": "objects",
- "e": "🗺",
- "d": "world map",
- "u": "7.0"
- },
- "maple_leaf": {
- "c": "nature",
- "e": "🍁",
- "d": "maple leaf",
- "u": "6.0"
- },
- "martial_arts_uniform": {
- "c": "activity",
- "e": "🥋",
- "d": "martial arts uniform",
- "u": "9.0"
- },
- "mask": {
- "c": "people",
- "e": "😷",
- "d": "face with medical mask",
- "u": "6.0"
- },
- "massage": {
- "c": "people",
- "e": "💆",
- "d": "face massage",
- "u": "6.0"
- },
- "massage_tone1": {
- "c": "people",
- "e": "💆🏻",
- "d": "face massage tone 1",
- "u": "8.0"
- },
- "massage_tone2": {
- "c": "people",
- "e": "💆🏼",
- "d": "face massage tone 2",
- "u": "8.0"
- },
- "massage_tone3": {
- "c": "people",
- "e": "💆🏽",
- "d": "face massage tone 3",
- "u": "8.0"
- },
- "massage_tone4": {
- "c": "people",
- "e": "💆🏾",
- "d": "face massage tone 4",
- "u": "8.0"
- },
- "massage_tone5": {
- "c": "people",
- "e": "💆🏿",
- "d": "face massage tone 5",
- "u": "8.0"
- },
- "meat_on_bone": {
- "c": "food",
- "e": "🍖",
- "d": "meat on bone",
- "u": "6.0"
- },
- "medal": {
- "c": "activity",
- "e": "🏅",
- "d": "sports medal",
- "u": "7.0"
- },
- "mega": {
- "c": "symbols",
- "e": "📣",
- "d": "cheering megaphone",
- "u": "6.0"
- },
- "melon": {
- "c": "food",
- "e": "🍈",
- "d": "melon",
- "u": "6.0"
- },
- "menorah": {
- "c": "symbols",
- "e": "🕎",
- "d": "menorah with nine branches",
- "u": "8.0"
- },
- "mens": {
- "c": "symbols",
- "e": "🚹",
- "d": "mens symbol",
- "u": "6.0"
- },
- "metal": {
- "c": "people",
- "e": "🤘",
- "d": "sign of the horns",
- "u": "8.0"
- },
- "metal_tone1": {
- "c": "people",
- "e": "🤘🏻",
- "d": "sign of the horns tone 1",
- "u": "8.0"
- },
- "metal_tone2": {
- "c": "people",
- "e": "🤘🏼",
- "d": "sign of the horns tone 2",
- "u": "8.0"
- },
- "metal_tone3": {
- "c": "people",
- "e": "🤘🏽",
- "d": "sign of the horns tone 3",
- "u": "8.0"
- },
- "metal_tone4": {
- "c": "people",
- "e": "🤘🏾",
- "d": "sign of the horns tone 4",
- "u": "8.0"
- },
- "metal_tone5": {
- "c": "people",
- "e": "🤘🏿",
- "d": "sign of the horns tone 5",
- "u": "8.0"
- },
- "metro": {
- "c": "travel",
- "e": "🚇",
- "d": "metro",
- "u": "6.0"
- },
- "microphone": {
- "c": "activity",
- "e": "🎤",
- "d": "microphone",
- "u": "6.0"
- },
- "microphone2": {
- "c": "objects",
- "e": "🎙",
- "d": "studio microphone",
- "u": "7.0"
- },
- "microscope": {
- "c": "objects",
- "e": "🔬",
- "d": "microscope",
- "u": "6.0"
- },
- "middle_finger": {
- "c": "people",
- "e": "🖕",
- "d": "reversed hand with middle finger extended",
- "u": "7.0"
- },
- "middle_finger_tone1": {
- "c": "people",
- "e": "🖕🏻",
- "d": "reversed hand with middle finger extended tone 1",
- "u": "8.0"
- },
- "middle_finger_tone2": {
- "c": "people",
- "e": "🖕🏼",
- "d": "reversed hand with middle finger extended tone 2",
- "u": "8.0"
- },
- "middle_finger_tone3": {
- "c": "people",
- "e": "🖕🏽",
- "d": "reversed hand with middle finger extended tone 3",
- "u": "8.0"
- },
- "middle_finger_tone4": {
- "c": "people",
- "e": "🖕🏾",
- "d": "reversed hand with middle finger extended tone 4",
- "u": "8.0"
- },
- "middle_finger_tone5": {
- "c": "people",
- "e": "🖕🏿",
- "d": "reversed hand with middle finger extended tone 5",
- "u": "8.0"
- },
- "military_medal": {
- "c": "activity",
- "e": "🎖",
- "d": "military medal",
- "u": "7.0"
- },
- "milk": {
- "c": "food",
- "e": "🥛",
- "d": "glass of milk",
- "u": "9.0"
- },
- "milky_way": {
- "c": "travel",
- "e": "🌌",
- "d": "milky way",
- "u": "6.0"
- },
- "minibus": {
- "c": "travel",
- "e": "🚐",
- "d": "minibus",
- "u": "6.0"
- },
- "minidisc": {
- "c": "objects",
- "e": "💽",
- "d": "minidisc",
- "u": "6.0"
- },
- "mobile_phone_off": {
- "c": "symbols",
- "e": "📴",
- "d": "mobile phone off",
- "u": "6.0"
- },
- "money_mouth": {
- "c": "people",
- "e": "🤑",
- "d": "money-mouth face",
- "u": "8.0"
- },
- "money_with_wings": {
- "c": "objects",
- "e": "💸",
- "d": "money with wings",
- "u": "6.0"
- },
- "moneybag": {
- "c": "objects",
- "e": "💰",
- "d": "money bag",
- "u": "6.0"
- },
- "monkey": {
- "c": "nature",
- "e": "🐒",
- "d": "monkey",
- "u": "6.0"
- },
- "monkey_face": {
- "c": "nature",
- "e": "🐵",
- "d": "monkey face",
- "u": "6.0"
- },
- "monorail": {
- "c": "travel",
- "e": "🚝",
- "d": "monorail",
- "u": "6.0"
- },
- "mortar_board": {
- "c": "people",
- "e": "🎓",
- "d": "graduation cap",
- "u": "6.0"
- },
- "mosque": {
- "c": "travel",
- "e": "🕌",
- "d": "mosque",
- "u": "8.0"
- },
- "motor_scooter": {
- "c": "travel",
- "e": "🛵",
- "d": "motor scooter",
- "u": "9.0"
- },
- "motorboat": {
- "c": "travel",
- "e": "🛥",
- "d": "motorboat",
- "u": "7.0"
- },
- "motorcycle": {
- "c": "travel",
- "e": "🏍",
- "d": "racing motorcycle",
- "u": "7.0"
- },
- "motorway": {
- "c": "travel",
- "e": "🛣",
- "d": "motorway",
- "u": "7.0"
- },
- "mount_fuji": {
- "c": "travel",
- "e": "🗻",
- "d": "mount fuji",
- "u": "6.0"
- },
- "mountain": {
- "c": "travel",
- "e": "⛰",
- "d": "mountain",
- "u": "5.2"
- },
- "mountain_bicyclist": {
- "c": "activity",
- "e": "🚵",
- "d": "mountain bicyclist",
- "u": "6.0"
- },
- "mountain_bicyclist_tone1": {
- "c": "activity",
- "e": "🚵🏻",
- "d": "mountain bicyclist tone 1",
- "u": "8.0"
- },
- "mountain_bicyclist_tone2": {
- "c": "activity",
- "e": "🚵🏼",
- "d": "mountain bicyclist tone 2",
- "u": "8.0"
- },
- "mountain_bicyclist_tone3": {
- "c": "activity",
- "e": "🚵🏽",
- "d": "mountain bicyclist tone 3",
- "u": "8.0"
- },
- "mountain_bicyclist_tone4": {
- "c": "activity",
- "e": "🚵🏾",
- "d": "mountain bicyclist tone 4",
- "u": "8.0"
- },
- "mountain_bicyclist_tone5": {
- "c": "activity",
- "e": "🚵🏿",
- "d": "mountain bicyclist tone 5",
- "u": "8.0"
- },
- "mountain_cableway": {
- "c": "travel",
- "e": "🚠",
- "d": "mountain cableway",
- "u": "6.0"
- },
- "mountain_railway": {
- "c": "travel",
- "e": "🚞",
- "d": "mountain railway",
- "u": "6.0"
- },
- "mountain_snow": {
- "c": "travel",
- "e": "🏔",
- "d": "snow capped mountain",
- "u": "7.0"
- },
- "mouse": {
- "c": "nature",
- "e": "🐭",
- "d": "mouse face",
- "u": "6.0"
- },
- "mouse2": {
- "c": "nature",
- "e": "🐁",
- "d": "mouse",
- "u": "6.0"
- },
- "mouse_three_button": {
- "c": "objects",
- "e": "🖱",
- "d": "three button mouse",
- "u": "7.0"
- },
- "movie_camera": {
- "c": "objects",
- "e": "🎥",
- "d": "movie camera",
- "u": "6.0"
- },
- "moyai": {
- "c": "objects",
- "e": "🗿",
- "d": "moyai",
- "u": "6.0"
- },
- "mrs_claus": {
- "c": "people",
- "e": "🤶",
- "d": "mother christmas",
- "u": "9.0"
- },
- "mrs_claus_tone1": {
- "c": "people",
- "e": "🤶🏻",
- "d": "mother christmas tone 1",
- "u": "9.0"
- },
- "mrs_claus_tone2": {
- "c": "people",
- "e": "🤶🏼",
- "d": "mother christmas tone 2",
- "u": "9.0"
- },
- "mrs_claus_tone3": {
- "c": "people",
- "e": "🤶🏽",
- "d": "mother christmas tone 3",
- "u": "9.0"
- },
- "mrs_claus_tone4": {
- "c": "people",
- "e": "🤶🏾",
- "d": "mother christmas tone 4",
- "u": "9.0"
- },
- "mrs_claus_tone5": {
- "c": "people",
- "e": "🤶🏿",
- "d": "mother christmas tone 5",
- "u": "9.0"
- },
- "muscle": {
- "c": "people",
- "e": "💪",
- "d": "flexed biceps",
- "u": "6.0"
- },
- "muscle_tone1": {
- "c": "people",
- "e": "💪🏻",
- "d": "flexed biceps tone 1",
- "u": "8.0"
- },
- "muscle_tone2": {
- "c": "people",
- "e": "💪🏼",
- "d": "flexed biceps tone 2",
- "u": "8.0"
- },
- "muscle_tone3": {
- "c": "people",
- "e": "💪🏽",
- "d": "flexed biceps tone 3",
- "u": "8.0"
- },
- "muscle_tone4": {
- "c": "people",
- "e": "💪🏾",
- "d": "flexed biceps tone 4",
- "u": "8.0"
- },
- "muscle_tone5": {
- "c": "people",
- "e": "💪🏿",
- "d": "flexed biceps tone 5",
- "u": "8.0"
- },
- "mushroom": {
- "c": "nature",
- "e": "🍄",
- "d": "mushroom",
- "u": "6.0"
- },
- "musical_keyboard": {
- "c": "activity",
- "e": "🎹",
- "d": "musical keyboard",
- "u": "6.0"
- },
- "musical_note": {
- "c": "symbols",
- "e": "🎵",
- "d": "musical note",
- "u": "6.0"
- },
- "musical_score": {
- "c": "activity",
- "e": "🎼",
- "d": "musical score",
- "u": "6.0"
- },
- "mute": {
- "c": "symbols",
- "e": "🔇",
- "d": "speaker with cancellation stroke",
- "u": "6.0"
- },
- "nail_care": {
- "c": "people",
- "e": "💅",
- "d": "nail polish",
- "u": "6.0"
- },
- "nail_care_tone1": {
- "c": "people",
- "e": "💅🏻",
- "d": "nail polish tone 1",
- "u": "8.0"
- },
- "nail_care_tone2": {
- "c": "people",
- "e": "💅🏼",
- "d": "nail polish tone 2",
- "u": "8.0"
- },
- "nail_care_tone3": {
- "c": "people",
- "e": "💅🏽",
- "d": "nail polish tone 3",
- "u": "8.0"
- },
- "nail_care_tone4": {
- "c": "people",
- "e": "💅🏾",
- "d": "nail polish tone 4",
- "u": "8.0"
- },
- "nail_care_tone5": {
- "c": "people",
- "e": "💅🏿",
- "d": "nail polish tone 5",
- "u": "8.0"
- },
- "name_badge": {
- "c": "symbols",
- "e": "📛",
- "d": "name badge",
- "u": "6.0"
- },
- "nauseated_face": {
- "c": "people",
- "e": "🤢",
- "d": "nauseated face",
- "u": "9.0"
- },
- "necktie": {
- "c": "people",
- "e": "👔",
- "d": "necktie",
- "u": "6.0"
- },
- "negative_squared_cross_mark": {
- "c": "symbols",
- "e": "❎",
- "d": "negative squared cross mark",
- "u": "6.0"
- },
- "nerd": {
- "c": "people",
- "e": "🤓",
- "d": "nerd face",
- "u": "8.0"
- },
- "neutral_face": {
- "c": "people",
- "e": "😐",
- "d": "neutral face",
- "u": "6.0"
- },
- "new": {
- "c": "symbols",
- "e": "🆕",
- "d": "squared new",
- "u": "6.0"
- },
- "new_moon": {
- "c": "nature",
- "e": "🌑",
- "d": "new moon symbol",
- "u": "6.0"
- },
- "new_moon_with_face": {
- "c": "nature",
- "e": "🌚",
- "d": "new moon with face",
- "u": "6.0"
- },
- "newspaper": {
- "c": "objects",
- "e": "📰",
- "d": "newspaper",
- "u": "6.0"
- },
- "newspaper2": {
- "c": "objects",
- "e": "🗞",
- "d": "rolled-up newspaper",
- "u": "7.0"
- },
- "ng": {
- "c": "symbols",
- "e": "🆖",
- "d": "squared ng",
- "u": "6.0"
- },
- "night_with_stars": {
- "c": "travel",
- "e": "🌃",
- "d": "night with stars",
- "u": "6.0"
- },
- "nine": {
- "c": "symbols",
- "e": "9️⃣",
- "d": "keycap digit nine",
- "u": "3.0"
- },
- "no_bell": {
- "c": "symbols",
- "e": "🔕",
- "d": "bell with cancellation stroke",
- "u": "6.0"
- },
- "no_bicycles": {
- "c": "symbols",
- "e": "🚳",
- "d": "no bicycles",
- "u": "6.0"
- },
- "no_entry": {
- "c": "symbols",
- "e": "⛔",
- "d": "no entry",
- "u": "5.2"
- },
- "no_entry_sign": {
- "c": "symbols",
- "e": "🚫",
- "d": "no entry sign",
- "u": "6.0"
- },
- "no_good": {
- "c": "people",
- "e": "🙅",
- "d": "face with no good gesture",
- "u": "6.0"
- },
- "no_good_tone1": {
- "c": "people",
- "e": "🙅🏻",
- "d": "face with no good gesture tone 1",
- "u": "8.0"
- },
- "no_good_tone2": {
- "c": "people",
- "e": "🙅🏼",
- "d": "face with no good gesture tone 2",
- "u": "8.0"
- },
- "no_good_tone3": {
- "c": "people",
- "e": "🙅🏽",
- "d": "face with no good gesture tone 3",
- "u": "8.0"
- },
- "no_good_tone4": {
- "c": "people",
- "e": "🙅🏾",
- "d": "face with no good gesture tone 4",
- "u": "8.0"
- },
- "no_good_tone5": {
- "c": "people",
- "e": "🙅🏿",
- "d": "face with no good gesture tone 5",
- "u": "8.0"
- },
- "no_mobile_phones": {
- "c": "symbols",
- "e": "📵",
- "d": "no mobile phones",
- "u": "6.0"
- },
- "no_mouth": {
- "c": "people",
- "e": "😶",
- "d": "face without mouth",
- "u": "6.0"
- },
- "no_pedestrians": {
- "c": "symbols",
- "e": "🚷",
- "d": "no pedestrians",
- "u": "6.0"
- },
- "no_smoking": {
- "c": "symbols",
- "e": "🚭",
- "d": "no smoking symbol",
- "u": "6.0"
- },
- "non-potable_water": {
- "c": "symbols",
- "e": "🚱",
- "d": "non-potable water symbol",
- "u": "6.0"
- },
- "nose": {
- "c": "people",
- "e": "👃",
- "d": "nose",
- "u": "6.0"
- },
- "nose_tone1": {
- "c": "people",
- "e": "👃🏻",
- "d": "nose tone 1",
- "u": "8.0"
- },
- "nose_tone2": {
- "c": "people",
- "e": "👃🏼",
- "d": "nose tone 2",
- "u": "8.0"
- },
- "nose_tone3": {
- "c": "people",
- "e": "👃🏽",
- "d": "nose tone 3",
- "u": "8.0"
- },
- "nose_tone4": {
- "c": "people",
- "e": "👃🏾",
- "d": "nose tone 4",
- "u": "8.0"
- },
- "nose_tone5": {
- "c": "people",
- "e": "👃🏿",
- "d": "nose tone 5",
- "u": "8.0"
- },
- "notebook": {
- "c": "objects",
- "e": "📓",
- "d": "notebook",
- "u": "6.0"
- },
- "notebook_with_decorative_cover": {
- "c": "objects",
- "e": "📔",
- "d": "notebook with decorative cover",
- "u": "6.0"
- },
- "notepad_spiral": {
- "c": "objects",
- "e": "🗒",
- "d": "spiral note pad",
- "u": "7.0"
- },
- "notes": {
- "c": "symbols",
- "e": "🎶",
- "d": "multiple musical notes",
- "u": "6.0"
- },
- "nut_and_bolt": {
- "c": "objects",
- "e": "🔩",
- "d": "nut and bolt",
- "u": "6.0"
- },
- "o": {
- "c": "symbols",
- "e": "⭕",
- "d": "heavy large circle",
- "u": "5.2"
- },
- "o2": {
- "c": "symbols",
- "e": "🅾",
- "d": "negative squared latin capital letter o",
- "u": "6.0"
- },
- "ocean": {
- "c": "nature",
- "e": "🌊",
- "d": "water wave",
- "u": "6.0"
- },
- "octagonal_sign": {
- "c": "symbols",
- "e": "🛑",
- "d": "octagonal sign",
- "u": "9.0"
- },
- "octopus": {
- "c": "nature",
- "e": "🐙",
- "d": "octopus",
- "u": "6.0"
- },
- "oden": {
- "c": "food",
- "e": "🍢",
- "d": "oden",
- "u": "6.0"
- },
- "office": {
- "c": "travel",
- "e": "🏢",
- "d": "office building",
- "u": "6.0"
- },
- "oil": {
- "c": "objects",
- "e": "🛢",
- "d": "oil drum",
- "u": "7.0"
- },
- "ok": {
- "c": "symbols",
- "e": "🆗",
- "d": "squared ok",
- "u": "6.0"
- },
- "ok_hand": {
- "c": "people",
- "e": "👌",
- "d": "ok hand sign",
- "u": "6.0"
- },
- "ok_hand_tone1": {
- "c": "people",
- "e": "👌🏻",
- "d": "ok hand sign tone 1",
- "u": "8.0"
- },
- "ok_hand_tone2": {
- "c": "people",
- "e": "👌🏼",
- "d": "ok hand sign tone 2",
- "u": "8.0"
- },
- "ok_hand_tone3": {
- "c": "people",
- "e": "👌🏽",
- "d": "ok hand sign tone 3",
- "u": "8.0"
- },
- "ok_hand_tone4": {
- "c": "people",
- "e": "👌🏾",
- "d": "ok hand sign tone 4",
- "u": "8.0"
- },
- "ok_hand_tone5": {
- "c": "people",
- "e": "👌🏿",
- "d": "ok hand sign tone 5",
- "u": "8.0"
- },
- "ok_woman": {
- "c": "people",
- "e": "🙆",
- "d": "face with ok gesture",
- "u": "6.0"
- },
- "ok_woman_tone1": {
- "c": "people",
- "e": "🙆🏻",
- "d": "face with ok gesture tone1",
- "u": "8.0"
- },
- "ok_woman_tone2": {
- "c": "people",
- "e": "🙆🏼",
- "d": "face with ok gesture tone2",
- "u": "8.0"
- },
- "ok_woman_tone3": {
- "c": "people",
- "e": "🙆🏽",
- "d": "face with ok gesture tone3",
- "u": "8.0"
- },
- "ok_woman_tone4": {
- "c": "people",
- "e": "🙆🏾",
- "d": "face with ok gesture tone4",
- "u": "8.0"
- },
- "ok_woman_tone5": {
- "c": "people",
- "e": "🙆🏿",
- "d": "face with ok gesture tone5",
- "u": "8.0"
- },
- "older_man": {
- "c": "people",
- "e": "👴",
- "d": "older man",
- "u": "6.0"
- },
- "older_man_tone1": {
- "c": "people",
- "e": "👴🏻",
- "d": "older man tone 1",
- "u": "8.0"
- },
- "older_man_tone2": {
- "c": "people",
- "e": "👴🏼",
- "d": "older man tone 2",
- "u": "8.0"
- },
- "older_man_tone3": {
- "c": "people",
- "e": "👴🏽",
- "d": "older man tone 3",
- "u": "8.0"
- },
- "older_man_tone4": {
- "c": "people",
- "e": "👴🏾",
- "d": "older man tone 4",
- "u": "8.0"
- },
- "older_man_tone5": {
- "c": "people",
- "e": "👴🏿",
- "d": "older man tone 5",
- "u": "8.0"
- },
- "older_woman": {
- "c": "people",
- "e": "👵",
- "d": "older woman",
- "u": "6.0"
- },
- "older_woman_tone1": {
- "c": "people",
- "e": "👵🏻",
- "d": "older woman tone 1",
- "u": "8.0"
- },
- "older_woman_tone2": {
- "c": "people",
- "e": "👵🏼",
- "d": "older woman tone 2",
- "u": "8.0"
- },
- "older_woman_tone3": {
- "c": "people",
- "e": "👵🏽",
- "d": "older woman tone 3",
- "u": "8.0"
- },
- "older_woman_tone4": {
- "c": "people",
- "e": "👵🏾",
- "d": "older woman tone 4",
- "u": "8.0"
- },
- "older_woman_tone5": {
- "c": "people",
- "e": "👵🏿",
- "d": "older woman tone 5",
- "u": "8.0"
- },
- "om_symbol": {
- "c": "symbols",
- "e": "🕉",
- "d": "om symbol",
- "u": "7.0"
- },
- "on": {
- "c": "symbols",
- "e": "🔛",
- "d": "on with exclamation mark with left right arrow abo",
- "u": "6.0"
- },
- "oncoming_automobile": {
- "c": "travel",
- "e": "🚘",
- "d": "oncoming automobile",
- "u": "6.0"
- },
- "oncoming_bus": {
- "c": "travel",
- "e": "🚍",
- "d": "oncoming bus",
- "u": "6.0"
- },
- "oncoming_police_car": {
- "c": "travel",
- "e": "🚔",
- "d": "oncoming police car",
- "u": "6.0"
- },
- "oncoming_taxi": {
- "c": "travel",
- "e": "🚖",
- "d": "oncoming taxi",
- "u": "6.0"
- },
- "one": {
- "c": "symbols",
- "e": "1️⃣",
- "d": "keycap digit one",
- "u": "3.0"
- },
- "open_file_folder": {
- "c": "objects",
- "e": "📂",
- "d": "open file folder",
- "u": "6.0"
- },
- "open_hands": {
- "c": "people",
- "e": "👐",
- "d": "open hands sign",
- "u": "6.0"
- },
- "open_hands_tone1": {
- "c": "people",
- "e": "👐🏻",
- "d": "open hands sign tone 1",
- "u": "8.0"
- },
- "open_hands_tone2": {
- "c": "people",
- "e": "👐🏼",
- "d": "open hands sign tone 2",
- "u": "8.0"
- },
- "open_hands_tone3": {
- "c": "people",
- "e": "👐🏽",
- "d": "open hands sign tone 3",
- "u": "8.0"
- },
- "open_hands_tone4": {
- "c": "people",
- "e": "👐🏾",
- "d": "open hands sign tone 4",
- "u": "8.0"
- },
- "open_hands_tone5": {
- "c": "people",
- "e": "👐🏿",
- "d": "open hands sign tone 5",
- "u": "8.0"
- },
- "open_mouth": {
- "c": "people",
- "e": "😮",
- "d": "face with open mouth",
- "u": "6.1"
- },
- "ophiuchus": {
- "c": "symbols",
- "e": "⛎",
- "d": "ophiuchus",
- "u": "6.0"
- },
- "orange_book": {
- "c": "objects",
- "e": "📙",
- "d": "orange book",
- "u": "6.0"
- },
- "orthodox_cross": {
- "c": "symbols",
- "e": "☦",
- "d": "orthodox cross",
- "u": "1.1"
- },
- "outbox_tray": {
- "c": "objects",
- "e": "📤",
- "d": "outbox tray",
- "u": "6.0"
- },
- "owl": {
- "c": "nature",
- "e": "🦉",
- "d": "owl",
- "u": "9.0"
- },
- "ox": {
- "c": "nature",
- "e": "🐂",
- "d": "ox",
- "u": "6.0"
- },
- "package": {
- "c": "objects",
- "e": "📦",
- "d": "package",
- "u": "6.0"
- },
- "page_facing_up": {
- "c": "objects",
- "e": "📄",
- "d": "page facing up",
- "u": "6.0"
- },
- "page_with_curl": {
- "c": "objects",
- "e": "📃",
- "d": "page with curl",
- "u": "6.0"
- },
- "pager": {
- "c": "objects",
- "e": "📟",
- "d": "pager",
- "u": "6.0"
- },
- "paintbrush": {
- "c": "objects",
- "e": "🖌",
- "d": "lower left paintbrush",
- "u": "7.0"
- },
- "palm_tree": {
- "c": "nature",
- "e": "🌴",
- "d": "palm tree",
- "u": "6.0"
- },
- "pancakes": {
- "c": "food",
- "e": "🥞",
- "d": "pancakes",
- "u": "9.0"
- },
- "panda_face": {
- "c": "nature",
- "e": "🐼",
- "d": "panda face",
- "u": "6.0"
- },
- "paperclip": {
- "c": "objects",
- "e": "📎",
- "d": "paperclip",
- "u": "6.0"
- },
- "paperclips": {
- "c": "objects",
- "e": "🖇",
- "d": "linked paperclips",
- "u": "7.0"
- },
- "park": {
- "c": "travel",
- "e": "🏞",
- "d": "national park",
- "u": "7.0"
- },
- "parking": {
- "c": "symbols",
- "e": "🅿",
- "d": "negative squared latin capital letter p",
- "u": "5.2"
- },
- "part_alternation_mark": {
- "c": "symbols",
- "e": "〽",
- "d": "part alternation mark",
- "u": "3.2"
- },
- "partly_sunny": {
- "c": "nature",
- "e": "⛅",
- "d": "sun behind cloud",
- "u": "5.2"
- },
- "passport_control": {
- "c": "symbols",
- "e": "🛂",
- "d": "passport control",
- "u": "6.0"
- },
- "pause_button": {
- "c": "symbols",
- "e": "⏸",
- "d": "double vertical bar",
- "u": "7.0"
- },
- "peace": {
- "c": "symbols",
- "e": "☮",
- "d": "peace symbol",
- "u": "1.1"
- },
- "peach": {
- "c": "food",
- "e": "🍑",
- "d": "peach",
- "u": "6.0"
- },
- "peanuts": {
- "c": "food",
- "e": "🥜",
- "d": "peanuts",
- "u": "9.0"
- },
- "pear": {
- "c": "food",
- "e": "🍐",
- "d": "pear",
- "u": "6.0"
- },
- "pen_ballpoint": {
- "c": "objects",
- "e": "🖊",
- "d": "lower left ballpoint pen",
- "u": "7.0"
- },
- "pen_fountain": {
- "c": "objects",
- "e": "🖋",
- "d": "lower left fountain pen",
- "u": "7.0"
- },
- "pencil": {
- "c": "objects",
- "e": "📝",
- "d": "memo",
- "u": "6.0"
- },
- "pencil2": {
- "c": "objects",
- "e": "✏",
- "d": "pencil",
- "u": "1.1"
- },
- "penguin": {
- "c": "nature",
- "e": "🐧",
- "d": "penguin",
- "u": "6.0"
- },
- "pensive": {
- "c": "people",
- "e": "😔",
- "d": "pensive face",
- "u": "6.0"
- },
- "performing_arts": {
- "c": "activity",
- "e": "🎭",
- "d": "performing arts",
- "u": "6.0"
- },
- "persevere": {
- "c": "people",
- "e": "😣",
- "d": "persevering face",
- "u": "6.0"
- },
- "person_frowning": {
- "c": "people",
- "e": "🙍",
- "d": "person frowning",
- "u": "6.0"
- },
- "person_frowning_tone1": {
- "c": "people",
- "e": "🙍🏻",
- "d": "person frowning tone 1",
- "u": "8.0"
- },
- "person_frowning_tone2": {
- "c": "people",
- "e": "🙍🏼",
- "d": "person frowning tone 2",
- "u": "8.0"
- },
- "person_frowning_tone3": {
- "c": "people",
- "e": "🙍🏽",
- "d": "person frowning tone 3",
- "u": "8.0"
- },
- "person_frowning_tone4": {
- "c": "people",
- "e": "🙍🏾",
- "d": "person frowning tone 4",
- "u": "8.0"
- },
- "person_frowning_tone5": {
- "c": "people",
- "e": "🙍🏿",
- "d": "person frowning tone 5",
- "u": "8.0"
- },
- "person_with_blond_hair": {
- "c": "people",
- "e": "👱",
- "d": "person with blond hair",
- "u": "6.0"
- },
- "person_with_blond_hair_tone1": {
- "c": "people",
- "e": "👱🏻",
- "d": "person with blond hair tone 1",
- "u": "8.0"
- },
- "person_with_blond_hair_tone2": {
- "c": "people",
- "e": "👱🏼",
- "d": "person with blond hair tone 2",
- "u": "8.0"
- },
- "person_with_blond_hair_tone3": {
- "c": "people",
- "e": "👱🏽",
- "d": "person with blond hair tone 3",
- "u": "8.0"
- },
- "person_with_blond_hair_tone4": {
- "c": "people",
- "e": "👱🏾",
- "d": "person with blond hair tone 4",
- "u": "8.0"
- },
- "person_with_blond_hair_tone5": {
- "c": "people",
- "e": "👱🏿",
- "d": "person with blond hair tone 5",
- "u": "8.0"
- },
- "person_with_pouting_face": {
- "c": "people",
- "e": "🙎",
- "d": "person with pouting face",
- "u": "6.0"
- },
- "person_with_pouting_face_tone1": {
- "c": "people",
- "e": "🙎🏻",
- "d": "person with pouting face tone1",
- "u": "8.0"
- },
- "person_with_pouting_face_tone2": {
- "c": "people",
- "e": "🙎🏼",
- "d": "person with pouting face tone2",
- "u": "8.0"
- },
- "person_with_pouting_face_tone3": {
- "c": "people",
- "e": "🙎🏽",
- "d": "person with pouting face tone3",
- "u": "8.0"
- },
- "person_with_pouting_face_tone4": {
- "c": "people",
- "e": "🙎🏾",
- "d": "person with pouting face tone4",
- "u": "8.0"
- },
- "person_with_pouting_face_tone5": {
- "c": "people",
- "e": "🙎🏿",
- "d": "person with pouting face tone5",
- "u": "8.0"
- },
- "pick": {
- "c": "objects",
- "e": "⛏",
- "d": "pick",
- "u": "5.2"
- },
- "pig": {
- "c": "nature",
- "e": "🐷",
- "d": "pig face",
- "u": "6.0"
- },
- "pig2": {
- "c": "nature",
- "e": "🐖",
- "d": "pig",
- "u": "6.0"
- },
- "pig_nose": {
- "c": "nature",
- "e": "🐽",
- "d": "pig nose",
- "u": "6.0"
- },
- "pill": {
- "c": "objects",
- "e": "💊",
- "d": "pill",
- "u": "6.0"
- },
- "pineapple": {
- "c": "food",
- "e": "🍍",
- "d": "pineapple",
- "u": "6.0"
- },
- "ping_pong": {
- "c": "activity",
- "e": "🏓",
- "d": "table tennis paddle and ball",
- "u": "8.0"
- },
- "pisces": {
- "c": "symbols",
- "e": "♓",
- "d": "pisces",
- "u": "1.1"
- },
- "pizza": {
- "c": "food",
- "e": "🍕",
- "d": "slice of pizza",
- "u": "6.0"
- },
- "place_of_worship": {
- "c": "symbols",
- "e": "🛐",
- "d": "place of worship",
- "u": "8.0"
- },
- "play_pause": {
- "c": "symbols",
- "e": "⏯",
- "d": "black right-pointing double triangle with double vertical bar",
- "u": "6.0"
- },
- "point_down": {
- "c": "people",
- "e": "👇",
- "d": "white down pointing backhand index",
- "u": "6.0"
- },
- "point_down_tone1": {
- "c": "people",
- "e": "👇🏻",
- "d": "white down pointing backhand index tone 1",
- "u": "8.0"
- },
- "point_down_tone2": {
- "c": "people",
- "e": "👇🏼",
- "d": "white down pointing backhand index tone 2",
- "u": "8.0"
- },
- "point_down_tone3": {
- "c": "people",
- "e": "👇🏽",
- "d": "white down pointing backhand index tone 3",
- "u": "8.0"
- },
- "point_down_tone4": {
- "c": "people",
- "e": "👇🏾",
- "d": "white down pointing backhand index tone 4",
- "u": "8.0"
- },
- "point_down_tone5": {
- "c": "people",
- "e": "👇🏿",
- "d": "white down pointing backhand index tone 5",
- "u": "8.0"
- },
- "point_left": {
- "c": "people",
- "e": "👈",
- "d": "white left pointing backhand index",
- "u": "6.0"
- },
- "point_left_tone1": {
- "c": "people",
- "e": "👈🏻",
- "d": "white left pointing backhand index tone 1",
- "u": "8.0"
- },
- "point_left_tone2": {
- "c": "people",
- "e": "👈🏼",
- "d": "white left pointing backhand index tone 2",
- "u": "8.0"
- },
- "point_left_tone3": {
- "c": "people",
- "e": "👈🏽",
- "d": "white left pointing backhand index tone 3",
- "u": "8.0"
- },
- "point_left_tone4": {
- "c": "people",
- "e": "👈🏾",
- "d": "white left pointing backhand index tone 4",
- "u": "8.0"
- },
- "point_left_tone5": {
- "c": "people",
- "e": "👈🏿",
- "d": "white left pointing backhand index tone 5",
- "u": "8.0"
- },
- "point_right": {
- "c": "people",
- "e": "👉",
- "d": "white right pointing backhand index",
- "u": "6.0"
- },
- "point_right_tone1": {
- "c": "people",
- "e": "👉🏻",
- "d": "white right pointing backhand index tone 1",
- "u": "8.0"
- },
- "point_right_tone2": {
- "c": "people",
- "e": "👉🏼",
- "d": "white right pointing backhand index tone 2",
- "u": "8.0"
- },
- "point_right_tone3": {
- "c": "people",
- "e": "👉🏽",
- "d": "white right pointing backhand index tone 3",
- "u": "8.0"
- },
- "point_right_tone4": {
- "c": "people",
- "e": "👉🏾",
- "d": "white right pointing backhand index tone 4",
- "u": "8.0"
- },
- "point_right_tone5": {
- "c": "people",
- "e": "👉🏿",
- "d": "white right pointing backhand index tone 5",
- "u": "8.0"
- },
- "point_up": {
- "c": "people",
- "e": "☝",
- "d": "white up pointing index",
- "u": "1.1"
- },
- "point_up_2": {
- "c": "people",
- "e": "👆",
- "d": "white up pointing backhand index",
- "u": "6.0"
- },
- "point_up_2_tone1": {
- "c": "people",
- "e": "👆🏻",
- "d": "white up pointing backhand index tone 1",
- "u": "8.0"
- },
- "point_up_2_tone2": {
- "c": "people",
- "e": "👆🏼",
- "d": "white up pointing backhand index tone 2",
- "u": "8.0"
- },
- "point_up_2_tone3": {
- "c": "people",
- "e": "👆🏽",
- "d": "white up pointing backhand index tone 3",
- "u": "8.0"
- },
- "point_up_2_tone4": {
- "c": "people",
- "e": "👆🏾",
- "d": "white up pointing backhand index tone 4",
- "u": "8.0"
- },
- "point_up_2_tone5": {
- "c": "people",
- "e": "👆🏿",
- "d": "white up pointing backhand index tone 5",
- "u": "8.0"
- },
- "point_up_tone1": {
- "c": "people",
- "e": "☝🏻",
- "d": "white up pointing index tone 1",
- "u": "8.0"
- },
- "point_up_tone2": {
- "c": "people",
- "e": "☝🏼",
- "d": "white up pointing index tone 2",
- "u": "8.0"
- },
- "point_up_tone3": {
- "c": "people",
- "e": "☝🏽",
- "d": "white up pointing index tone 3",
- "u": "8.0"
- },
- "point_up_tone4": {
- "c": "people",
- "e": "☝🏾",
- "d": "white up pointing index tone 4",
- "u": "8.0"
- },
- "point_up_tone5": {
- "c": "people",
- "e": "☝🏿",
- "d": "white up pointing index tone 5",
- "u": "8.0"
- },
- "police_car": {
- "c": "travel",
- "e": "🚓",
- "d": "police car",
- "u": "6.0"
- },
- "poodle": {
- "c": "nature",
- "e": "🐩",
- "d": "poodle",
- "u": "6.0"
- },
- "poop": {
- "c": "people",
- "e": "💩",
- "d": "pile of poo",
- "u": "6.0"
- },
- "popcorn": {
- "c": "food",
- "e": "🍿",
- "d": "popcorn",
- "u": "8.0"
- },
- "post_office": {
- "c": "travel",
- "e": "🏣",
- "d": "japanese post office",
- "u": "6.0"
- },
- "postal_horn": {
- "c": "objects",
- "e": "📯",
- "d": "postal horn",
- "u": "6.0"
- },
- "postbox": {
- "c": "objects",
- "e": "📮",
- "d": "postbox",
- "u": "6.0"
- },
- "potable_water": {
- "c": "symbols",
- "e": "🚰",
- "d": "potable water symbol",
- "u": "6.0"
- },
- "potato": {
- "c": "food",
- "e": "🥔",
- "d": "potato",
- "u": "9.0"
- },
- "pouch": {
- "c": "people",
- "e": "👝",
- "d": "pouch",
- "u": "6.0"
- },
- "poultry_leg": {
- "c": "food",
- "e": "🍗",
- "d": "poultry leg",
- "u": "6.0"
- },
- "pound": {
- "c": "objects",
- "e": "💷",
- "d": "banknote with pound sign",
- "u": "6.0"
- },
- "pouting_cat": {
- "c": "people",
- "e": "😾",
- "d": "pouting cat face",
- "u": "6.0"
- },
- "pray": {
- "c": "people",
- "e": "🙏",
- "d": "person with folded hands",
- "u": "6.0"
- },
- "pray_tone1": {
- "c": "people",
- "e": "🙏🏻",
- "d": "person with folded hands tone 1",
- "u": "8.0"
- },
- "pray_tone2": {
- "c": "people",
- "e": "🙏🏼",
- "d": "person with folded hands tone 2",
- "u": "8.0"
- },
- "pray_tone3": {
- "c": "people",
- "e": "🙏🏽",
- "d": "person with folded hands tone 3",
- "u": "8.0"
- },
- "pray_tone4": {
- "c": "people",
- "e": "🙏🏾",
- "d": "person with folded hands tone 4",
- "u": "8.0"
- },
- "pray_tone5": {
- "c": "people",
- "e": "🙏🏿",
- "d": "person with folded hands tone 5",
- "u": "8.0"
- },
- "prayer_beads": {
- "c": "objects",
- "e": "📿",
- "d": "prayer beads",
- "u": "8.0"
- },
- "pregnant_woman": {
- "c": "people",
- "e": "🤰",
- "d": "pregnant woman",
- "u": "9.0"
- },
- "pregnant_woman_tone1": {
- "c": "people",
- "e": "🤰🏻",
- "d": "pregnant woman tone 1",
- "u": "9.0"
- },
- "pregnant_woman_tone2": {
- "c": "people",
- "e": "🤰🏼",
- "d": "pregnant woman tone 2",
- "u": "9.0"
- },
- "pregnant_woman_tone3": {
- "c": "people",
- "e": "🤰🏽",
- "d": "pregnant woman tone 3",
- "u": "9.0"
- },
- "pregnant_woman_tone4": {
- "c": "people",
- "e": "🤰🏾",
- "d": "pregnant woman tone 4",
- "u": "9.0"
- },
- "pregnant_woman_tone5": {
- "c": "people",
- "e": "🤰🏿",
- "d": "pregnant woman tone 5",
- "u": "9.0"
- },
- "prince": {
- "c": "people",
- "e": "🤴",
- "d": "prince",
- "u": "9.0"
- },
- "prince_tone1": {
- "c": "people",
- "e": "🤴🏻",
- "d": "prince tone 1",
- "u": "9.0"
- },
- "prince_tone2": {
- "c": "people",
- "e": "🤴🏼",
- "d": "prince tone 2",
- "u": "9.0"
- },
- "prince_tone3": {
- "c": "people",
- "e": "🤴🏽",
- "d": "prince tone 3",
- "u": "9.0"
- },
- "prince_tone4": {
- "c": "people",
- "e": "🤴🏾",
- "d": "prince tone 4",
- "u": "9.0"
- },
- "prince_tone5": {
- "c": "people",
- "e": "🤴🏿",
- "d": "prince tone 5",
- "u": "9.0"
- },
- "princess": {
- "c": "people",
- "e": "👸",
- "d": "princess",
- "u": "6.0"
- },
- "princess_tone1": {
- "c": "people",
- "e": "👸🏻",
- "d": "princess tone 1",
- "u": "8.0"
- },
- "princess_tone2": {
- "c": "people",
- "e": "👸🏼",
- "d": "princess tone 2",
- "u": "8.0"
- },
- "princess_tone3": {
- "c": "people",
- "e": "👸🏽",
- "d": "princess tone 3",
- "u": "8.0"
- },
- "princess_tone4": {
- "c": "people",
- "e": "👸🏾",
- "d": "princess tone 4",
- "u": "8.0"
- },
- "princess_tone5": {
- "c": "people",
- "e": "👸🏿",
- "d": "princess tone 5",
- "u": "8.0"
- },
- "printer": {
- "c": "objects",
- "e": "🖨",
- "d": "printer",
- "u": "7.0"
- },
- "projector": {
- "c": "objects",
- "e": "📽",
- "d": "film projector",
- "u": "7.0"
- },
- "punch": {
- "c": "people",
- "e": "👊",
- "d": "fisted hand sign",
- "u": "6.0"
- },
- "punch_tone1": {
- "c": "people",
- "e": "👊🏻",
- "d": "fisted hand sign tone 1",
- "u": "8.0"
- },
- "punch_tone2": {
- "c": "people",
- "e": "👊🏼",
- "d": "fisted hand sign tone 2",
- "u": "8.0"
- },
- "punch_tone3": {
- "c": "people",
- "e": "👊🏽",
- "d": "fisted hand sign tone 3",
- "u": "8.0"
- },
- "punch_tone4": {
- "c": "people",
- "e": "👊🏾",
- "d": "fisted hand sign tone 4",
- "u": "8.0"
- },
- "punch_tone5": {
- "c": "people",
- "e": "👊🏿",
- "d": "fisted hand sign tone 5",
- "u": "8.0"
- },
- "purple_heart": {
- "c": "symbols",
- "e": "💜",
- "d": "purple heart",
- "u": "6.0"
- },
- "purse": {
- "c": "people",
- "e": "👛",
- "d": "purse",
- "u": "6.0"
- },
- "pushpin": {
- "c": "objects",
- "e": "📌",
- "d": "pushpin",
- "u": "6.0"
- },
- "put_litter_in_its_place": {
- "c": "symbols",
- "e": "🚮",
- "d": "put litter in its place symbol",
- "u": "6.0"
- },
- "question": {
- "c": "symbols",
- "e": "❓",
- "d": "black question mark ornament",
- "u": "6.0"
- },
- "rabbit": {
- "c": "nature",
- "e": "🐰",
- "d": "rabbit face",
- "u": "6.0"
- },
- "rabbit2": {
- "c": "nature",
- "e": "🐇",
- "d": "rabbit",
- "u": "6.0"
- },
- "race_car": {
- "c": "travel",
- "e": "🏎",
- "d": "racing car",
- "u": "7.0"
- },
- "racehorse": {
- "c": "nature",
- "e": "🐎",
- "d": "horse",
- "u": "6.0"
- },
- "radio": {
- "c": "objects",
- "e": "📻",
- "d": "radio",
- "u": "6.0"
- },
- "radio_button": {
- "c": "symbols",
- "e": "🔘",
- "d": "radio button",
- "u": "6.0"
- },
- "radioactive": {
- "c": "symbols",
- "e": "☢",
- "d": "radioactive sign",
- "u": "1.1"
- },
- "rage": {
- "c": "people",
- "e": "😡",
- "d": "pouting face",
- "u": "6.0"
- },
- "railway_car": {
- "c": "travel",
- "e": "🚃",
- "d": "railway car",
- "u": "6.0"
- },
- "railway_track": {
- "c": "travel",
- "e": "🛤",
- "d": "railway track",
- "u": "7.0"
- },
- "rainbow": {
- "c": "travel",
- "e": "🌈",
- "d": "rainbow",
- "u": "6.0"
- },
- "raised_back_of_hand": {
- "c": "people",
- "e": "🤚",
- "d": "raised back of hand",
- "u": "9.0"
- },
- "raised_back_of_hand_tone1": {
- "c": "people",
- "e": "🤚🏻",
- "d": "raised back of hand tone 1",
- "u": "9.0"
- },
- "raised_back_of_hand_tone2": {
- "c": "people",
- "e": "🤚🏼",
- "d": "raised back of hand tone 2",
- "u": "9.0"
- },
- "raised_back_of_hand_tone3": {
- "c": "people",
- "e": "🤚🏽",
- "d": "raised back of hand tone 3",
- "u": "9.0"
- },
- "raised_back_of_hand_tone4": {
- "c": "people",
- "e": "🤚🏾",
- "d": "raised back of hand tone 4",
- "u": "9.0"
- },
- "raised_back_of_hand_tone5": {
- "c": "people",
- "e": "🤚🏿",
- "d": "raised back of hand tone 5",
- "u": "9.0"
- },
- "raised_hand": {
- "c": "people",
- "e": "✋",
- "d": "raised hand",
- "u": "6.0"
- },
- "raised_hand_tone1": {
- "c": "people",
- "e": "✋🏻",
- "d": "raised hand tone 1",
- "u": "8.0"
- },
- "raised_hand_tone2": {
- "c": "people",
- "e": "✋🏼",
- "d": "raised hand tone 2",
- "u": "8.0"
- },
- "raised_hand_tone3": {
- "c": "people",
- "e": "✋🏽",
- "d": "raised hand tone 3",
- "u": "8.0"
- },
- "raised_hand_tone4": {
- "c": "people",
- "e": "✋🏾",
- "d": "raised hand tone 4",
- "u": "8.0"
- },
- "raised_hand_tone5": {
- "c": "people",
- "e": "✋🏿",
- "d": "raised hand tone 5",
- "u": "8.0"
- },
- "raised_hands": {
- "c": "people",
- "e": "🙌",
- "d": "person raising both hands in celebration",
- "u": "6.0"
- },
- "raised_hands_tone1": {
- "c": "people",
- "e": "🙌🏻",
- "d": "person raising both hands in celebration tone 1",
- "u": "8.0"
- },
- "raised_hands_tone2": {
- "c": "people",
- "e": "🙌🏼",
- "d": "person raising both hands in celebration tone 2",
- "u": "8.0"
- },
- "raised_hands_tone3": {
- "c": "people",
- "e": "🙌🏽",
- "d": "person raising both hands in celebration tone 3",
- "u": "8.0"
- },
- "raised_hands_tone4": {
- "c": "people",
- "e": "🙌🏾",
- "d": "person raising both hands in celebration tone 4",
- "u": "8.0"
- },
- "raised_hands_tone5": {
- "c": "people",
- "e": "🙌🏿",
- "d": "person raising both hands in celebration tone 5",
- "u": "8.0"
- },
- "raising_hand": {
- "c": "people",
- "e": "🙋",
- "d": "happy person raising one hand",
- "u": "6.0"
- },
- "raising_hand_tone1": {
- "c": "people",
- "e": "🙋🏻",
- "d": "happy person raising one hand tone1",
- "u": "8.0"
- },
- "raising_hand_tone2": {
- "c": "people",
- "e": "🙋🏼",
- "d": "happy person raising one hand tone2",
- "u": "8.0"
- },
- "raising_hand_tone3": {
- "c": "people",
- "e": "🙋🏽",
- "d": "happy person raising one hand tone3",
- "u": "8.0"
- },
- "raising_hand_tone4": {
- "c": "people",
- "e": "🙋🏾",
- "d": "happy person raising one hand tone4",
- "u": "8.0"
- },
- "raising_hand_tone5": {
- "c": "people",
- "e": "🙋🏿",
- "d": "happy person raising one hand tone5",
- "u": "8.0"
- },
- "ram": {
- "c": "nature",
- "e": "🐏",
- "d": "ram",
- "u": "6.0"
- },
- "ramen": {
- "c": "food",
- "e": "🍜",
- "d": "steaming bowl",
- "u": "6.0"
- },
- "rat": {
- "c": "nature",
- "e": "🐀",
- "d": "rat",
- "u": "6.0"
- },
- "record_button": {
- "c": "symbols",
- "e": "⏺",
- "d": "black circle for record",
- "u": "7.0"
- },
- "recycle": {
- "c": "symbols",
- "e": "♻",
- "d": "black universal recycling symbol",
- "u": "3.2"
- },
- "red_car": {
- "c": "travel",
- "e": "🚗",
- "d": "automobile",
- "u": "6.0"
- },
- "red_circle": {
- "c": "symbols",
- "e": "🔴",
- "d": "large red circle",
- "u": "6.0"
- },
- "registered": {
- "c": "symbols",
- "e": "®",
- "d": "registered sign",
- "u": "1.1"
- },
- "relaxed": {
- "c": "people",
- "e": "☺",
- "d": "white smiling face",
- "u": "1.1"
- },
- "relieved": {
- "c": "people",
- "e": "😌",
- "d": "relieved face",
- "u": "6.0"
- },
- "reminder_ribbon": {
- "c": "activity",
- "e": "🎗",
- "d": "reminder ribbon",
- "u": "7.0"
- },
- "repeat": {
- "c": "symbols",
- "e": "🔁",
- "d": "clockwise rightwards and leftwards open circle arr",
- "u": "6.0"
- },
- "repeat_one": {
- "c": "symbols",
- "e": "🔂",
- "d": "clockwise rightwards and leftwards open circle arr",
- "u": "6.0"
- },
- "restroom": {
- "c": "symbols",
- "e": "🚻",
- "d": "restroom",
- "u": "6.0"
- },
- "revolving_hearts": {
- "c": "symbols",
- "e": "💞",
- "d": "revolving hearts",
- "u": "6.0"
- },
- "rewind": {
- "c": "symbols",
- "e": "⏪",
- "d": "black left-pointing double triangle",
- "u": "6.0"
- },
- "rhino": {
- "c": "nature",
- "e": "🦏",
- "d": "rhinoceros",
- "u": "9.0"
- },
- "ribbon": {
- "c": "objects",
- "e": "🎀",
- "d": "ribbon",
- "u": "6.0"
- },
- "rice": {
- "c": "food",
- "e": "🍚",
- "d": "cooked rice",
- "u": "6.0"
- },
- "rice_ball": {
- "c": "food",
- "e": "🍙",
- "d": "rice ball",
- "u": "6.0"
- },
- "rice_cracker": {
- "c": "food",
- "e": "🍘",
- "d": "rice cracker",
- "u": "6.0"
- },
- "rice_scene": {
- "c": "travel",
- "e": "🎑",
- "d": "moon viewing ceremony",
- "u": "6.0"
- },
- "right_facing_fist": {
- "c": "people",
- "e": "🤜",
- "d": "right-facing fist",
- "u": "9.0"
- },
- "right_facing_fist_tone1": {
- "c": "people",
- "e": "🤜🏻",
- "d": "right facing fist tone 1",
- "u": "9.0"
- },
- "right_facing_fist_tone2": {
- "c": "people",
- "e": "🤜🏼",
- "d": "right facing fist tone 2",
- "u": "9.0"
- },
- "right_facing_fist_tone3": {
- "c": "people",
- "e": "🤜🏽",
- "d": "right facing fist tone 3",
- "u": "9.0"
- },
- "right_facing_fist_tone4": {
- "c": "people",
- "e": "🤜🏾",
- "d": "right facing fist tone 4",
- "u": "9.0"
- },
- "right_facing_fist_tone5": {
- "c": "people",
- "e": "🤜🏿",
- "d": "right facing fist tone 5",
- "u": "9.0"
- },
- "ring": {
- "c": "people",
- "e": "💍",
- "d": "ring",
- "u": "6.0"
- },
- "robot": {
- "c": "people",
- "e": "🤖",
- "d": "robot face",
- "u": "8.0"
- },
- "rocket": {
- "c": "travel",
- "e": "🚀",
- "d": "rocket",
- "u": "6.0"
- },
- "rofl": {
- "c": "people",
- "e": "🤣",
- "d": "rolling on the floor laughing",
- "u": "9.0"
- },
- "roller_coaster": {
- "c": "travel",
- "e": "🎢",
- "d": "roller coaster",
- "u": "6.0"
- },
- "rolling_eyes": {
- "c": "people",
- "e": "🙄",
- "d": "face with rolling eyes",
- "u": "8.0"
- },
- "rooster": {
- "c": "nature",
- "e": "🐓",
- "d": "rooster",
- "u": "6.0"
- },
- "rose": {
- "c": "nature",
- "e": "🌹",
- "d": "rose",
- "u": "6.0"
- },
- "rosette": {
- "c": "activity",
- "e": "🏵",
- "d": "rosette",
- "u": "7.0"
- },
- "rotating_light": {
- "c": "travel",
- "e": "🚨",
- "d": "police cars revolving light",
- "u": "6.0"
- },
- "round_pushpin": {
- "c": "objects",
- "e": "📍",
- "d": "round pushpin",
- "u": "6.0"
- },
- "rowboat": {
- "c": "activity",
- "e": "🚣",
- "d": "rowboat",
- "u": "6.0"
- },
- "rowboat_tone1": {
- "c": "activity",
- "e": "🚣🏻",
- "d": "rowboat tone 1",
- "u": "8.0"
- },
- "rowboat_tone2": {
- "c": "activity",
- "e": "🚣🏼",
- "d": "rowboat tone 2",
- "u": "8.0"
- },
- "rowboat_tone3": {
- "c": "activity",
- "e": "🚣🏽",
- "d": "rowboat tone 3",
- "u": "8.0"
- },
- "rowboat_tone4": {
- "c": "activity",
- "e": "🚣🏾",
- "d": "rowboat tone 4",
- "u": "8.0"
- },
- "rowboat_tone5": {
- "c": "activity",
- "e": "🚣🏿",
- "d": "rowboat tone 5",
- "u": "8.0"
- },
- "rugby_football": {
- "c": "activity",
- "e": "🏉",
- "d": "rugby football",
- "u": "6.0"
- },
- "runner": {
- "c": "people",
- "e": "🏃",
- "d": "runner",
- "u": "6.0"
- },
- "runner_tone1": {
- "c": "people",
- "e": "🏃🏻",
- "d": "runner tone 1",
- "u": "8.0"
- },
- "runner_tone2": {
- "c": "people",
- "e": "🏃🏼",
- "d": "runner tone 2",
- "u": "8.0"
- },
- "runner_tone3": {
- "c": "people",
- "e": "🏃🏽",
- "d": "runner tone 3",
- "u": "8.0"
- },
- "runner_tone4": {
- "c": "people",
- "e": "🏃🏾",
- "d": "runner tone 4",
- "u": "8.0"
- },
- "runner_tone5": {
- "c": "people",
- "e": "🏃🏿",
- "d": "runner tone 5",
- "u": "8.0"
- },
- "running_shirt_with_sash": {
- "c": "activity",
- "e": "🎽",
- "d": "running shirt with sash",
- "u": "6.0"
- },
- "sa": {
- "c": "symbols",
- "e": "🈂",
- "d": "squared katakana sa",
- "u": "6.0"
- },
- "sagittarius": {
- "c": "symbols",
- "e": "♐",
- "d": "sagittarius",
- "u": "1.1"
- },
- "sailboat": {
- "c": "travel",
- "e": "⛵",
- "d": "sailboat",
- "u": "5.2"
- },
- "sake": {
- "c": "food",
- "e": "🍶",
- "d": "sake bottle and cup",
- "u": "6.0"
- },
- "salad": {
- "c": "food",
- "e": "🥗",
- "d": "green salad",
- "u": "9.0"
- },
- "sandal": {
- "c": "people",
- "e": "👡",
- "d": "womans sandal",
- "u": "6.0"
- },
- "santa": {
- "c": "people",
- "e": "🎅",
- "d": "father christmas",
- "u": "6.0"
- },
- "santa_tone1": {
- "c": "people",
- "e": "🎅🏻",
- "d": "father christmas tone 1",
- "u": "8.0"
- },
- "santa_tone2": {
- "c": "people",
- "e": "🎅🏼",
- "d": "father christmas tone 2",
- "u": "8.0"
- },
- "santa_tone3": {
- "c": "people",
- "e": "🎅🏽",
- "d": "father christmas tone 3",
- "u": "8.0"
- },
- "santa_tone4": {
- "c": "people",
- "e": "🎅🏾",
- "d": "father christmas tone 4",
- "u": "8.0"
- },
- "santa_tone5": {
- "c": "people",
- "e": "🎅🏿",
- "d": "father christmas tone 5",
- "u": "8.0"
- },
- "satellite": {
- "c": "objects",
- "e": "📡",
- "d": "satellite antenna",
- "u": "6.0"
- },
- "satellite_orbital": {
- "c": "travel",
- "e": "🛰",
- "d": "satellite",
- "u": "7.0"
- },
- "saxophone": {
- "c": "activity",
- "e": "🎷",
- "d": "saxophone",
- "u": "6.0"
- },
- "scales": {
- "c": "objects",
- "e": "⚖",
- "d": "scales",
- "u": "4.1"
- },
- "school": {
- "c": "travel",
- "e": "🏫",
- "d": "school",
- "u": "6.0"
- },
- "school_satchel": {
- "c": "people",
- "e": "🎒",
- "d": "school satchel",
- "u": "6.0"
- },
- "scissors": {
- "c": "objects",
- "e": "✂",
- "d": "black scissors",
- "u": "1.1"
- },
- "scooter": {
- "c": "travel",
- "e": "🛴",
- "d": "scooter",
- "u": "9.0"
- },
- "scorpion": {
- "c": "nature",
- "e": "🦂",
- "d": "scorpion",
- "u": "8.0"
- },
- "scorpius": {
- "c": "symbols",
- "e": "♏",
- "d": "scorpius",
- "u": "1.1"
- },
- "scream": {
- "c": "people",
- "e": "😱",
- "d": "face screaming in fear",
- "u": "6.0"
- },
- "scream_cat": {
- "c": "people",
- "e": "🙀",
- "d": "weary cat face",
- "u": "6.0"
- },
- "scroll": {
- "c": "objects",
- "e": "📜",
- "d": "scroll",
- "u": "6.0"
- },
- "seat": {
- "c": "travel",
- "e": "💺",
- "d": "seat",
- "u": "6.0"
- },
- "second_place": {
- "c": "activity",
- "e": "🥈",
- "d": "second place medal",
- "u": "9.0"
- },
- "secret": {
- "c": "symbols",
- "e": "㊙",
- "d": "circled ideograph secret",
- "u": "1.1"
- },
- "see_no_evil": {
- "c": "nature",
- "e": "🙈",
- "d": "see-no-evil monkey",
- "u": "6.0"
- },
- "seedling": {
- "c": "nature",
- "e": "🌱",
- "d": "seedling",
- "u": "6.0"
- },
- "selfie": {
- "c": "people",
- "e": "🤳",
- "d": "selfie",
- "u": "9.0"
- },
- "selfie_tone1": {
- "c": "people",
- "e": "🤳🏻",
- "d": "selfie tone 1",
- "u": "9.0"
- },
- "selfie_tone2": {
- "c": "people",
- "e": "🤳🏼",
- "d": "selfie tone 2",
- "u": "9.0"
- },
- "selfie_tone3": {
- "c": "people",
- "e": "🤳🏽",
- "d": "selfie tone 3",
- "u": "9.0"
- },
- "selfie_tone4": {
- "c": "people",
- "e": "🤳🏾",
- "d": "selfie tone 4",
- "u": "9.0"
- },
- "selfie_tone5": {
- "c": "people",
- "e": "🤳🏿",
- "d": "selfie tone 5",
- "u": "9.0"
- },
- "seven": {
- "c": "symbols",
- "e": "7️⃣",
- "d": "keycap digit seven",
- "u": "3.0"
- },
- "shallow_pan_of_food": {
- "c": "food",
- "e": "🥘",
- "d": "shallow pan of food",
- "u": "9.0"
- },
- "shamrock": {
- "c": "nature",
- "e": "☘",
- "d": "shamrock",
- "u": "4.1"
- },
- "shark": {
- "c": "nature",
- "e": "🦈",
- "d": "shark",
- "u": "9.0"
- },
- "shaved_ice": {
- "c": "food",
- "e": "🍧",
- "d": "shaved ice",
- "u": "6.0"
- },
- "sheep": {
- "c": "nature",
- "e": "🐑",
- "d": "sheep",
- "u": "6.0"
- },
- "shell": {
- "c": "nature",
- "e": "🐚",
- "d": "spiral shell",
- "u": "6.0"
- },
- "shield": {
- "c": "objects",
- "e": "🛡",
- "d": "shield",
- "u": "7.0"
- },
- "shinto_shrine": {
- "c": "travel",
- "e": "⛩",
- "d": "shinto shrine",
- "u": "5.2"
- },
- "ship": {
- "c": "travel",
- "e": "🚢",
- "d": "ship",
- "u": "6.0"
- },
- "shirt": {
- "c": "people",
- "e": "👕",
- "d": "t-shirt",
- "u": "6.0"
- },
- "shopping_bags": {
- "c": "objects",
- "e": "🛍",
- "d": "shopping bags",
- "u": "7.0"
- },
- "shopping_cart": {
- "c": "objects",
- "e": "🛒",
- "d": "shopping trolley",
- "u": "9.0"
- },
- "shower": {
- "c": "objects",
- "e": "🚿",
- "d": "shower",
- "u": "6.0"
- },
- "shrimp": {
- "c": "nature",
- "e": "🦐",
- "d": "shrimp",
- "u": "9.0"
- },
- "shrug": {
- "c": "people",
- "e": "🤷",
- "d": "shrug",
- "u": "9.0"
- },
- "shrug_tone1": {
- "c": "people",
- "e": "🤷🏻",
- "d": "shrug tone 1",
- "u": "9.0"
- },
- "shrug_tone2": {
- "c": "people",
- "e": "🤷🏼",
- "d": "shrug tone 2",
- "u": "9.0"
- },
- "shrug_tone3": {
- "c": "people",
- "e": "🤷🏽",
- "d": "shrug tone 3",
- "u": "9.0"
- },
- "shrug_tone4": {
- "c": "people",
- "e": "🤷🏾",
- "d": "shrug tone 4",
- "u": "9.0"
- },
- "shrug_tone5": {
- "c": "people",
- "e": "🤷🏿",
- "d": "shrug tone 5",
- "u": "9.0"
- },
- "signal_strength": {
- "c": "symbols",
- "e": "📶",
- "d": "antenna with bars",
- "u": "6.0"
- },
- "six": {
- "c": "symbols",
- "e": "6️⃣",
- "d": "keycap digit six",
- "u": "3.0"
- },
- "six_pointed_star": {
- "c": "symbols",
- "e": "🔯",
- "d": "six pointed star with middle dot",
- "u": "6.0"
- },
- "ski": {
- "c": "activity",
- "e": "🎿",
- "d": "ski and ski boot",
- "u": "6.0"
- },
- "skier": {
- "c": "activity",
- "e": "⛷",
- "d": "skier",
- "u": "5.2"
- },
- "skull": {
- "c": "people",
- "e": "💀",
- "d": "skull",
- "u": "6.0"
- },
- "skull_crossbones": {
- "c": "objects",
- "e": "☠",
- "d": "skull and crossbones",
- "u": "1.1"
- },
- "sleeping": {
- "c": "people",
- "e": "😴",
- "d": "sleeping face",
- "u": "6.1"
- },
- "sleeping_accommodation": {
- "c": "objects",
- "e": "🛌",
- "d": "sleeping accommodation",
- "u": "7.0"
- },
- "sleepy": {
- "c": "people",
- "e": "😪",
- "d": "sleepy face",
- "u": "6.0"
- },
- "slight_frown": {
- "c": "people",
- "e": "🙁",
- "d": "slightly frowning face",
- "u": "7.0"
- },
- "slight_smile": {
- "c": "people",
- "e": "🙂",
- "d": "slightly smiling face",
- "u": "7.0"
- },
- "slot_machine": {
- "c": "activity",
- "e": "🎰",
- "d": "slot machine",
- "u": "6.0"
- },
- "small_blue_diamond": {
- "c": "symbols",
- "e": "🔹",
- "d": "small blue diamond",
- "u": "6.0"
- },
- "small_orange_diamond": {
- "c": "symbols",
- "e": "🔸",
- "d": "small orange diamond",
- "u": "6.0"
- },
- "small_red_triangle": {
- "c": "symbols",
- "e": "🔺",
- "d": "up-pointing red triangle",
- "u": "6.0"
- },
- "small_red_triangle_down": {
- "c": "symbols",
- "e": "🔻",
- "d": "down-pointing red triangle",
- "u": "6.0"
- },
- "smile": {
- "c": "people",
- "e": "😄",
- "d": "smiling face with open mouth and smiling eyes",
- "u": "6.0"
- },
- "smile_cat": {
- "c": "people",
- "e": "😸",
- "d": "grinning cat face with smiling eyes",
- "u": "6.0"
- },
- "smiley": {
- "c": "people",
- "e": "😃",
- "d": "smiling face with open mouth",
- "u": "6.0"
- },
- "smiley_cat": {
- "c": "people",
- "e": "😺",
- "d": "smiling cat face with open mouth",
- "u": "6.0"
- },
- "smiling_imp": {
- "c": "people",
- "e": "😈",
- "d": "smiling face with horns",
- "u": "6.0"
- },
- "smirk": {
- "c": "people",
- "e": "😏",
- "d": "smirking face",
- "u": "6.0"
- },
- "smirk_cat": {
- "c": "people",
- "e": "😼",
- "d": "cat face with wry smile",
- "u": "6.0"
- },
- "smoking": {
- "c": "objects",
- "e": "🚬",
- "d": "smoking symbol",
- "u": "6.0"
- },
- "snail": {
- "c": "nature",
- "e": "🐌",
- "d": "snail",
- "u": "6.0"
- },
- "snake": {
- "c": "nature",
- "e": "🐍",
- "d": "snake",
- "u": "6.0"
- },
- "sneezing_face": {
- "c": "people",
- "e": "🤧",
- "d": "sneezing face",
- "u": "9.0"
- },
- "snowboarder": {
- "c": "activity",
- "e": "🏂",
- "d": "snowboarder",
- "u": "6.0"
- },
- "snowflake": {
- "c": "nature",
- "e": "❄",
- "d": "snowflake",
- "u": "1.1"
- },
- "snowman": {
- "c": "nature",
- "e": "⛄",
- "d": "snowman without snow",
- "u": "5.2"
- },
- "snowman2": {
- "c": "nature",
- "e": "☃",
- "d": "snowman",
- "u": "1.1"
- },
- "sob": {
- "c": "people",
- "e": "😭",
- "d": "loudly crying face",
- "u": "6.0"
- },
- "soccer": {
- "c": "activity",
- "e": "⚽",
- "d": "soccer ball",
- "u": "5.2"
- },
- "soon": {
- "c": "symbols",
- "e": "🔜",
- "d": "soon with rightwards arrow above",
- "u": "6.0"
- },
- "sos": {
- "c": "symbols",
- "e": "🆘",
- "d": "squared sos",
- "u": "6.0"
- },
- "sound": {
- "c": "symbols",
- "e": "🔉",
- "d": "speaker with one sound wave",
- "u": "6.0"
- },
- "space_invader": {
- "c": "activity",
- "e": "👾",
- "d": "alien monster",
- "u": "6.0"
- },
- "spades": {
- "c": "symbols",
- "e": "♠",
- "d": "black spade suit",
- "u": "1.1"
- },
- "spaghetti": {
- "c": "food",
- "e": "🍝",
- "d": "spaghetti",
- "u": "6.0"
- },
- "sparkle": {
- "c": "symbols",
- "e": "❇",
- "d": "sparkle",
- "u": "1.1"
- },
- "sparkler": {
- "c": "travel",
- "e": "🎇",
- "d": "firework sparkler",
- "u": "6.0"
- },
- "sparkles": {
- "c": "nature",
- "e": "✨",
- "d": "sparkles",
- "u": "6.0"
- },
- "sparkling_heart": {
- "c": "symbols",
- "e": "💖",
- "d": "sparkling heart",
- "u": "6.0"
- },
- "speak_no_evil": {
- "c": "nature",
- "e": "🙊",
- "d": "speak-no-evil monkey",
- "u": "6.0"
- },
- "speaker": {
- "c": "symbols",
- "e": "🔈",
- "d": "speaker",
- "u": "6.0"
- },
- "speaking_head": {
- "c": "people",
- "e": "🗣",
- "d": "speaking head in silhouette",
- "u": "7.0"
- },
- "speech_balloon": {
- "c": "symbols",
- "e": "💬",
- "d": "speech balloon",
- "u": "6.0"
- },
- "speech_left": {
- "c": "symbols",
- "e": "🗨",
- "d": "left speech bubble",
- "u": "7.0"
- },
- "speedboat": {
- "c": "travel",
- "e": "🚤",
- "d": "speedboat",
- "u": "6.0"
- },
- "spider": {
- "c": "nature",
- "e": "🕷",
- "d": "spider",
- "u": "7.0"
- },
- "spider_web": {
- "c": "nature",
- "e": "🕸",
- "d": "spider web",
- "u": "7.0"
- },
- "spoon": {
- "c": "food",
- "e": "🥄",
- "d": "spoon",
- "u": "9.0"
- },
- "spy": {
- "c": "people",
- "e": "🕵",
- "d": "sleuth or spy",
- "u": "7.0"
- },
- "spy_tone1": {
- "c": "people",
- "e": "🕵🏻",
- "d": "sleuth or spy tone 1",
- "u": "8.0"
- },
- "spy_tone2": {
- "c": "people",
- "e": "🕵🏼",
- "d": "sleuth or spy tone 2",
- "u": "8.0"
- },
- "spy_tone3": {
- "c": "people",
- "e": "🕵🏽",
- "d": "sleuth or spy tone 3",
- "u": "8.0"
- },
- "spy_tone4": {
- "c": "people",
- "e": "🕵🏾",
- "d": "sleuth or spy tone 4",
- "u": "8.0"
- },
- "spy_tone5": {
- "c": "people",
- "e": "🕵🏿",
- "d": "sleuth or spy tone 5",
- "u": "8.0"
- },
- "squid": {
- "c": "nature",
- "e": "🦑",
- "d": "squid",
- "u": "9.0"
- },
- "stadium": {
- "c": "travel",
- "e": "🏟",
- "d": "stadium",
- "u": "7.0"
- },
- "star": {
- "c": "nature",
- "e": "⭐",
- "d": "white medium star",
- "u": "5.1"
- },
- "star2": {
- "c": "nature",
- "e": "🌟",
- "d": "glowing star",
- "u": "6.0"
- },
- "star_and_crescent": {
- "c": "symbols",
- "e": "☪",
- "d": "star and crescent",
- "u": "1.1"
- },
- "star_of_david": {
- "c": "symbols",
- "e": "✡",
- "d": "star of david",
- "u": "1.1"
- },
- "stars": {
- "c": "travel",
- "e": "🌠",
- "d": "shooting star",
- "u": "6.0"
- },
- "station": {
- "c": "travel",
- "e": "🚉",
- "d": "station",
- "u": "6.0"
- },
- "statue_of_liberty": {
- "c": "travel",
- "e": "🗽",
- "d": "statue of liberty",
- "u": "6.0"
- },
- "steam_locomotive": {
- "c": "travel",
- "e": "🚂",
- "d": "steam locomotive",
- "u": "6.0"
- },
- "stew": {
- "c": "food",
- "e": "🍲",
- "d": "pot of food",
- "u": "6.0"
- },
- "stop_button": {
- "c": "symbols",
- "e": "⏹",
- "d": "black square for stop",
- "u": "7.0"
- },
- "stopwatch": {
- "c": "objects",
- "e": "⏱",
- "d": "stopwatch",
- "u": "6.0"
- },
- "straight_ruler": {
- "c": "objects",
- "e": "📏",
- "d": "straight ruler",
- "u": "6.0"
- },
- "strawberry": {
- "c": "food",
- "e": "🍓",
- "d": "strawberry",
- "u": "6.0"
- },
- "stuck_out_tongue": {
- "c": "people",
- "e": "😛",
- "d": "face with stuck-out tongue",
- "u": "6.1"
- },
- "stuck_out_tongue_closed_eyes": {
- "c": "people",
- "e": "😝",
- "d": "face with stuck-out tongue and tightly-closed eyes",
- "u": "6.0"
- },
- "stuck_out_tongue_winking_eye": {
- "c": "people",
- "e": "😜",
- "d": "face with stuck-out tongue and winking eye",
- "u": "6.0"
- },
- "stuffed_flatbread": {
- "c": "food",
- "e": "🥙",
- "d": "stuffed flatbread",
- "u": "9.0"
- },
- "sun_with_face": {
- "c": "nature",
- "e": "🌞",
- "d": "sun with face",
- "u": "6.0"
- },
- "sunflower": {
- "c": "nature",
- "e": "🌻",
- "d": "sunflower",
- "u": "6.0"
- },
- "sunglasses": {
- "c": "people",
- "e": "😎",
- "d": "smiling face with sunglasses",
- "u": "6.0"
- },
- "sunny": {
- "c": "nature",
- "e": "☀",
- "d": "black sun with rays",
- "u": "1.1"
- },
- "sunrise": {
- "c": "travel",
- "e": "🌅",
- "d": "sunrise",
- "u": "6.0"
- },
- "sunrise_over_mountains": {
- "c": "travel",
- "e": "🌄",
- "d": "sunrise over mountains",
- "u": "6.0"
- },
- "surfer": {
- "c": "activity",
- "e": "🏄",
- "d": "surfer",
- "u": "6.0"
- },
- "surfer_tone1": {
- "c": "activity",
- "e": "🏄🏻",
- "d": "surfer tone 1",
- "u": "8.0"
- },
- "surfer_tone2": {
- "c": "activity",
- "e": "🏄🏼",
- "d": "surfer tone 2",
- "u": "8.0"
- },
- "surfer_tone3": {
- "c": "activity",
- "e": "🏄🏽",
- "d": "surfer tone 3",
- "u": "8.0"
- },
- "surfer_tone4": {
- "c": "activity",
- "e": "🏄🏾",
- "d": "surfer tone 4",
- "u": "8.0"
- },
- "surfer_tone5": {
- "c": "activity",
- "e": "🏄🏿",
- "d": "surfer tone 5",
- "u": "8.0"
- },
- "sushi": {
- "c": "food",
- "e": "🍣",
- "d": "sushi",
- "u": "6.0"
- },
- "suspension_railway": {
- "c": "travel",
- "e": "🚟",
- "d": "suspension railway",
- "u": "6.0"
- },
- "sweat": {
- "c": "people",
- "e": "😓",
- "d": "face with cold sweat",
- "u": "6.0"
- },
- "sweat_drops": {
- "c": "nature",
- "e": "💦",
- "d": "splashing sweat symbol",
- "u": "6.0"
- },
- "sweat_smile": {
- "c": "people",
- "e": "😅",
- "d": "smiling face with open mouth and cold sweat",
- "u": "6.0"
- },
- "sweet_potato": {
- "c": "food",
- "e": "🍠",
- "d": "roasted sweet potato",
- "u": "6.0"
- },
- "swimmer": {
- "c": "activity",
- "e": "🏊",
- "d": "swimmer",
- "u": "6.0"
- },
- "swimmer_tone1": {
- "c": "activity",
- "e": "🏊🏻",
- "d": "swimmer tone 1",
- "u": "8.0"
- },
- "swimmer_tone2": {
- "c": "activity",
- "e": "🏊🏼",
- "d": "swimmer tone 2",
- "u": "8.0"
- },
- "swimmer_tone3": {
- "c": "activity",
- "e": "🏊🏽",
- "d": "swimmer tone 3",
- "u": "8.0"
- },
- "swimmer_tone4": {
- "c": "activity",
- "e": "🏊🏾",
- "d": "swimmer tone 4",
- "u": "8.0"
- },
- "swimmer_tone5": {
- "c": "activity",
- "e": "🏊🏿",
- "d": "swimmer tone 5",
- "u": "8.0"
- },
- "symbols": {
- "c": "symbols",
- "e": "🔣",
- "d": "input symbol for symbols",
- "u": "6.0"
- },
- "synagogue": {
- "c": "travel",
- "e": "🕍",
- "d": "synagogue",
- "u": "8.0"
- },
- "syringe": {
- "c": "objects",
- "e": "💉",
- "d": "syringe",
- "u": "6.0"
- },
- "taco": {
- "c": "food",
- "e": "🌮",
- "d": "taco",
- "u": "8.0"
- },
- "tada": {
- "c": "objects",
- "e": "🎉",
- "d": "party popper",
- "u": "6.0"
- },
- "tanabata_tree": {
- "c": "nature",
- "e": "🎋",
- "d": "tanabata tree",
- "u": "6.0"
- },
- "tangerine": {
- "c": "food",
- "e": "🍊",
- "d": "tangerine",
- "u": "6.0"
- },
- "taurus": {
- "c": "symbols",
- "e": "♉",
- "d": "taurus",
- "u": "1.1"
- },
- "taxi": {
- "c": "travel",
- "e": "🚕",
- "d": "taxi",
- "u": "6.0"
- },
- "tea": {
- "c": "food",
- "e": "🍵",
- "d": "teacup without handle",
- "u": "6.0"
- },
- "telephone": {
- "c": "objects",
- "e": "☎",
- "d": "black telephone",
- "u": "1.1"
- },
- "telephone_receiver": {
- "c": "objects",
- "e": "📞",
- "d": "telephone receiver",
- "u": "6.0"
- },
- "telescope": {
- "c": "objects",
- "e": "🔭",
- "d": "telescope",
- "u": "6.0"
- },
- "ten": {
- "c": "symbols",
- "e": "🔟",
- "d": "keycap ten",
- "u": "6.0"
- },
- "tennis": {
- "c": "activity",
- "e": "🎾",
- "d": "tennis racquet and ball",
- "u": "6.0"
- },
- "tent": {
- "c": "travel",
- "e": "⛺",
- "d": "tent",
- "u": "5.2"
- },
- "thermometer": {
- "c": "objects",
- "e": "🌡",
- "d": "thermometer",
- "u": "7.0"
- },
- "thermometer_face": {
- "c": "people",
- "e": "🤒",
- "d": "face with thermometer",
- "u": "8.0"
- },
- "thinking": {
- "c": "people",
- "e": "🤔",
- "d": "thinking face",
- "u": "8.0"
- },
- "third_place": {
- "c": "activity",
- "e": "🥉",
- "d": "third place medal",
- "u": "9.0"
- },
- "thought_balloon": {
- "c": "symbols",
- "e": "💭",
- "d": "thought balloon",
- "u": "6.0"
- },
- "three": {
- "c": "symbols",
- "e": "3️⃣",
- "d": "keycap digit three",
- "u": "3.0"
- },
- "thumbsdown": {
- "c": "people",
- "e": "👎",
- "d": "thumbs down sign",
- "u": "6.0"
- },
- "thumbsdown_tone1": {
- "c": "people",
- "e": "👎🏻",
- "d": "thumbs down sign tone 1",
- "u": "8.0"
- },
- "thumbsdown_tone2": {
- "c": "people",
- "e": "👎🏼",
- "d": "thumbs down sign tone 2",
- "u": "8.0"
- },
- "thumbsdown_tone3": {
- "c": "people",
- "e": "👎🏽",
- "d": "thumbs down sign tone 3",
- "u": "8.0"
- },
- "thumbsdown_tone4": {
- "c": "people",
- "e": "👎🏾",
- "d": "thumbs down sign tone 4",
- "u": "8.0"
- },
- "thumbsdown_tone5": {
- "c": "people",
- "e": "👎🏿",
- "d": "thumbs down sign tone 5",
- "u": "8.0"
- },
- "thumbsup": {
- "c": "people",
- "e": "👍",
- "d": "thumbs up sign",
- "u": "6.0"
- },
- "thumbsup_tone1": {
- "c": "people",
- "e": "👍🏻",
- "d": "thumbs up sign tone 1",
- "u": "8.0"
- },
- "thumbsup_tone2": {
- "c": "people",
- "e": "👍🏼",
- "d": "thumbs up sign tone 2",
- "u": "8.0"
- },
- "thumbsup_tone3": {
- "c": "people",
- "e": "👍🏽",
- "d": "thumbs up sign tone 3",
- "u": "8.0"
- },
- "thumbsup_tone4": {
- "c": "people",
- "e": "👍🏾",
- "d": "thumbs up sign tone 4",
- "u": "8.0"
- },
- "thumbsup_tone5": {
- "c": "people",
- "e": "👍🏿",
- "d": "thumbs up sign tone 5",
- "u": "8.0"
- },
- "thunder_cloud_rain": {
- "c": "nature",
- "e": "⛈",
- "d": "thunder cloud and rain",
- "u": "5.2"
- },
- "ticket": {
- "c": "activity",
- "e": "🎫",
- "d": "ticket",
- "u": "6.0"
- },
- "tickets": {
- "c": "activity",
- "e": "🎟",
- "d": "admission tickets",
- "u": "7.0"
- },
- "tiger": {
- "c": "nature",
- "e": "🐯",
- "d": "tiger face",
- "u": "6.0"
- },
- "tiger2": {
- "c": "nature",
- "e": "🐅",
- "d": "tiger",
- "u": "6.0"
- },
- "timer": {
- "c": "objects",
- "e": "⏲",
- "d": "timer clock",
- "u": "6.0"
- },
- "tired_face": {
- "c": "people",
- "e": "😫",
- "d": "tired face",
- "u": "6.0"
- },
- "tm": {
- "c": "symbols",
- "e": "™",
- "d": "trade mark sign",
- "u": "1.1"
- },
- "toilet": {
- "c": "objects",
- "e": "🚽",
- "d": "toilet",
- "u": "6.0"
- },
- "tokyo_tower": {
- "c": "travel",
- "e": "🗼",
- "d": "tokyo tower",
- "u": "6.0"
- },
- "tomato": {
- "c": "food",
- "e": "🍅",
- "d": "tomato",
- "u": "6.0"
- },
- "tone1": {
- "c": "modifier",
- "e": "🏻",
- "d": "emoji modifier Fitzpatrick type-1-2",
- "u": "8.0"
- },
- "tone2": {
- "c": "modifier",
- "e": "🏼",
- "d": "emoji modifier Fitzpatrick type-3",
- "u": "8.0"
- },
- "tone3": {
- "c": "modifier",
- "e": "🏽",
- "d": "emoji modifier Fitzpatrick type-4",
- "u": "8.0"
- },
- "tone4": {
- "c": "modifier",
- "e": "🏾",
- "d": "emoji modifier Fitzpatrick type-5",
- "u": "8.0"
- },
- "tone5": {
- "c": "modifier",
- "e": "🏿",
- "d": "emoji modifier Fitzpatrick type-6",
- "u": "8.0"
- },
- "tongue": {
- "c": "people",
- "e": "👅",
- "d": "tongue",
- "u": "6.0"
- },
- "tools": {
- "c": "objects",
- "e": "🛠",
- "d": "hammer and wrench",
- "u": "7.0"
- },
- "top": {
- "c": "symbols",
- "e": "🔝",
- "d": "top with upwards arrow above",
- "u": "6.0"
- },
- "tophat": {
- "c": "people",
- "e": "🎩",
- "d": "top hat",
- "u": "6.0"
- },
- "track_next": {
- "c": "symbols",
- "e": "⏭",
- "d": "black right-pointing double triangle with vertical bar",
- "u": "6.0"
- },
- "track_previous": {
- "c": "symbols",
- "e": "⏮",
- "d": "black left-pointing double triangle with vertical bar",
- "u": "6.0"
- },
- "trackball": {
- "c": "objects",
- "e": "🖲",
- "d": "trackball",
- "u": "7.0"
- },
- "tractor": {
- "c": "travel",
- "e": "🚜",
- "d": "tractor",
- "u": "6.0"
- },
- "traffic_light": {
- "c": "travel",
- "e": "🚥",
- "d": "horizontal traffic light",
- "u": "6.0"
- },
- "train": {
- "c": "travel",
- "e": "🚋",
- "d": "Tram Car",
- "u": "6.0"
- },
- "train2": {
- "c": "travel",
- "e": "🚆",
- "d": "train",
- "u": "6.0"
- },
- "tram": {
- "c": "travel",
- "e": "🚊",
- "d": "tram",
- "u": "6.0"
- },
- "triangular_flag_on_post": {
- "c": "objects",
- "e": "🚩",
- "d": "triangular flag on post",
- "u": "6.0"
- },
- "triangular_ruler": {
- "c": "objects",
- "e": "📐",
- "d": "triangular ruler",
- "u": "6.0"
- },
- "trident": {
- "c": "symbols",
- "e": "🔱",
- "d": "trident emblem",
- "u": "6.0"
- },
- "triumph": {
- "c": "people",
- "e": "😤",
- "d": "face with look of triumph",
- "u": "6.0"
- },
- "trolleybus": {
- "c": "travel",
- "e": "🚎",
- "d": "trolleybus",
- "u": "6.0"
- },
- "trophy": {
- "c": "activity",
- "e": "🏆",
- "d": "trophy",
- "u": "6.0"
- },
- "tropical_drink": {
- "c": "food",
- "e": "🍹",
- "d": "tropical drink",
- "u": "6.0"
- },
- "tropical_fish": {
- "c": "nature",
- "e": "🐠",
- "d": "tropical fish",
- "u": "6.0"
- },
- "truck": {
- "c": "travel",
- "e": "🚚",
- "d": "delivery truck",
- "u": "6.0"
- },
- "trumpet": {
- "c": "activity",
- "e": "🎺",
- "d": "trumpet",
- "u": "6.0"
- },
- "tulip": {
- "c": "nature",
- "e": "🌷",
- "d": "tulip",
- "u": "6.0"
- },
- "tumbler_glass": {
- "c": "food",
- "e": "🥃",
- "d": "tumbler glass",
- "u": "9.0"
- },
- "turkey": {
- "c": "nature",
- "e": "🦃",
- "d": "turkey",
- "u": "8.0"
- },
- "turtle": {
- "c": "nature",
- "e": "🐢",
- "d": "turtle",
- "u": "6.0"
- },
- "tv": {
- "c": "objects",
- "e": "📺",
- "d": "television",
- "u": "6.0"
- },
- "twisted_rightwards_arrows": {
- "c": "symbols",
- "e": "🔀",
- "d": "twisted rightwards arrows",
- "u": "6.0"
- },
- "two": {
- "c": "symbols",
- "e": "2️⃣",
- "d": "keycap digit two",
- "u": "3.0"
- },
- "two_hearts": {
- "c": "symbols",
- "e": "💕",
- "d": "two hearts",
- "u": "6.0"
- },
- "two_men_holding_hands": {
- "c": "people",
- "e": "👬",
- "d": "two men holding hands",
- "u": "6.0"
- },
- "two_women_holding_hands": {
- "c": "people",
- "e": "👭",
- "d": "two women holding hands",
- "u": "6.0"
- },
- "u5272": {
- "c": "symbols",
- "e": "🈹",
- "d": "squared cjk unified ideograph-5272",
- "u": "6.0"
- },
- "u5408": {
- "c": "symbols",
- "e": "🈴",
- "d": "squared cjk unified ideograph-5408",
- "u": "6.0"
- },
- "u55b6": {
- "c": "symbols",
- "e": "🈺",
- "d": "squared cjk unified ideograph-55b6",
- "u": "6.0"
- },
- "u6307": {
- "c": "symbols",
- "e": "🈯",
- "d": "squared cjk unified ideograph-6307",
- "u": "5.2"
- },
- "u6708": {
- "c": "symbols",
- "e": "🈷",
- "d": "squared cjk unified ideograph-6708",
- "u": "6.0"
- },
- "u6709": {
- "c": "symbols",
- "e": "🈶",
- "d": "squared cjk unified ideograph-6709",
- "u": "6.0"
- },
- "u6e80": {
- "c": "symbols",
- "e": "🈵",
- "d": "squared cjk unified ideograph-6e80",
- "u": "6.0"
- },
- "u7121": {
- "c": "symbols",
- "e": "🈚",
- "d": "squared cjk unified ideograph-7121",
- "u": "5.2"
- },
- "u7533": {
- "c": "symbols",
- "e": "🈸",
- "d": "squared cjk unified ideograph-7533",
- "u": "6.0"
- },
- "u7981": {
- "c": "symbols",
- "e": "🈲",
- "d": "squared cjk unified ideograph-7981",
- "u": "6.0"
- },
- "u7a7a": {
- "c": "symbols",
- "e": "🈳",
- "d": "squared cjk unified ideograph-7a7a",
- "u": "6.0"
- },
- "umbrella": {
- "c": "nature",
- "e": "☔",
- "d": "umbrella with rain drops",
- "u": "4.0"
- },
- "umbrella2": {
- "c": "nature",
- "e": "☂",
- "d": "umbrella",
- "u": "1.1"
- },
- "unamused": {
- "c": "people",
- "e": "😒",
- "d": "unamused face",
- "u": "6.0"
- },
- "underage": {
- "c": "symbols",
- "e": "🔞",
- "d": "no one under eighteen symbol",
- "u": "6.0"
- },
- "unicorn": {
- "c": "nature",
- "e": "🦄",
- "d": "unicorn face",
- "u": "8.0"
- },
- "unlock": {
- "c": "objects",
- "e": "🔓",
- "d": "open lock",
- "u": "6.0"
- },
- "up": {
- "c": "symbols",
- "e": "🆙",
- "d": "squared up with exclamation mark",
- "u": "6.0"
- },
- "upside_down": {
- "c": "people",
- "e": "🙃",
- "d": "upside-down face",
- "u": "8.0"
- },
- "urn": {
- "c": "objects",
- "e": "⚱",
- "d": "funeral urn",
- "u": "4.1"
- },
- "v": {
- "c": "people",
- "e": "✌",
- "d": "victory hand",
- "u": "1.1"
- },
- "v_tone1": {
- "c": "people",
- "e": "✌🏻",
- "d": "victory hand tone 1",
- "u": "8.0"
- },
- "v_tone2": {
- "c": "people",
- "e": "✌🏼",
- "d": "victory hand tone 2",
- "u": "8.0"
- },
- "v_tone3": {
- "c": "people",
- "e": "✌🏽",
- "d": "victory hand tone 3",
- "u": "8.0"
- },
- "v_tone4": {
- "c": "people",
- "e": "✌🏾",
- "d": "victory hand tone 4",
- "u": "8.0"
- },
- "v_tone5": {
- "c": "people",
- "e": "✌🏿",
- "d": "victory hand tone 5",
- "u": "8.0"
- },
- "vertical_traffic_light": {
- "c": "travel",
- "e": "🚦",
- "d": "vertical traffic light",
- "u": "6.0"
- },
- "vhs": {
- "c": "objects",
- "e": "📼",
- "d": "videocassette",
- "u": "6.0"
- },
- "vibration_mode": {
- "c": "symbols",
- "e": "📳",
- "d": "vibration mode",
- "u": "6.0"
- },
- "video_camera": {
- "c": "objects",
- "e": "📹",
- "d": "video camera",
- "u": "6.0"
- },
- "video_game": {
- "c": "activity",
- "e": "🎮",
- "d": "video game",
- "u": "6.0"
- },
- "violin": {
- "c": "activity",
- "e": "🎻",
- "d": "violin",
- "u": "6.0"
- },
- "virgo": {
- "c": "symbols",
- "e": "♍",
- "d": "virgo",
- "u": "1.1"
- },
- "volcano": {
- "c": "travel",
- "e": "🌋",
- "d": "volcano",
- "u": "6.0"
- },
- "volleyball": {
- "c": "activity",
- "e": "🏐",
- "d": "volleyball",
- "u": "8.0"
- },
- "vs": {
- "c": "symbols",
- "e": "🆚",
- "d": "squared vs",
- "u": "6.0"
- },
- "vulcan": {
- "c": "people",
- "e": "🖖",
- "d": "raised hand with part between middle and ring fingers",
- "u": "7.0"
- },
- "vulcan_tone1": {
- "c": "people",
- "e": "🖖🏻",
- "d": "raised hand with part between middle and ring fingers tone 1",
- "u": "8.0"
- },
- "vulcan_tone2": {
- "c": "people",
- "e": "🖖🏼",
- "d": "raised hand with part between middle and ring fingers tone 2",
- "u": "8.0"
- },
- "vulcan_tone3": {
- "c": "people",
- "e": "🖖🏽",
- "d": "raised hand with part between middle and ring fingers tone 3",
- "u": "8.0"
- },
- "vulcan_tone4": {
- "c": "people",
- "e": "🖖🏾",
- "d": "raised hand with part between middle and ring fingers tone 4",
- "u": "8.0"
- },
- "vulcan_tone5": {
- "c": "people",
- "e": "🖖🏿",
- "d": "raised hand with part between middle and ring fingers tone 5",
- "u": "8.0"
- },
- "walking": {
- "c": "people",
- "e": "🚶",
- "d": "pedestrian",
- "u": "6.0"
- },
- "walking_tone1": {
- "c": "people",
- "e": "🚶🏻",
- "d": "pedestrian tone 1",
- "u": "8.0"
- },
- "walking_tone2": {
- "c": "people",
- "e": "🚶🏼",
- "d": "pedestrian tone 2",
- "u": "8.0"
- },
- "walking_tone3": {
- "c": "people",
- "e": "🚶🏽",
- "d": "pedestrian tone 3",
- "u": "8.0"
- },
- "walking_tone4": {
- "c": "people",
- "e": "🚶🏾",
- "d": "pedestrian tone 4",
- "u": "8.0"
- },
- "walking_tone5": {
- "c": "people",
- "e": "🚶🏿",
- "d": "pedestrian tone 5",
- "u": "8.0"
- },
- "waning_crescent_moon": {
- "c": "nature",
- "e": "🌘",
- "d": "waning crescent moon symbol",
- "u": "6.0"
- },
- "waning_gibbous_moon": {
- "c": "nature",
- "e": "🌖",
- "d": "waning gibbous moon symbol",
- "u": "6.0"
- },
- "warning": {
- "c": "symbols",
- "e": "⚠",
- "d": "warning sign",
- "u": "4.0"
- },
- "wastebasket": {
- "c": "objects",
- "e": "🗑",
- "d": "wastebasket",
- "u": "7.0"
- },
- "watch": {
- "c": "objects",
- "e": "⌚",
- "d": "watch",
- "u": "1.1"
- },
- "water_buffalo": {
- "c": "nature",
- "e": "🐃",
- "d": "water buffalo",
- "u": "6.0"
- },
- "water_polo": {
- "c": "activity",
- "e": "🤽",
- "d": "water polo",
- "u": "9.0"
- },
- "water_polo_tone1": {
- "c": "activity",
- "e": "🤽🏻",
- "d": "water polo tone 1",
- "u": "9.0"
- },
- "water_polo_tone2": {
- "c": "activity",
- "e": "🤽🏼",
- "d": "water polo tone 2",
- "u": "9.0"
- },
- "water_polo_tone3": {
- "c": "activity",
- "e": "🤽🏽",
- "d": "water polo tone 3",
- "u": "9.0"
- },
- "water_polo_tone4": {
- "c": "activity",
- "e": "🤽🏾",
- "d": "water polo tone 4",
- "u": "9.0"
- },
- "water_polo_tone5": {
- "c": "activity",
- "e": "🤽🏿",
- "d": "water polo tone 5",
- "u": "9.0"
- },
- "watermelon": {
- "c": "food",
- "e": "🍉",
- "d": "watermelon",
- "u": "6.0"
- },
- "wave": {
- "c": "people",
- "e": "👋",
- "d": "waving hand sign",
- "u": "6.0"
- },
- "wave_tone1": {
- "c": "people",
- "e": "👋🏻",
- "d": "waving hand sign tone 1",
- "u": "8.0"
- },
- "wave_tone2": {
- "c": "people",
- "e": "👋🏼",
- "d": "waving hand sign tone 2",
- "u": "8.0"
- },
- "wave_tone3": {
- "c": "people",
- "e": "👋🏽",
- "d": "waving hand sign tone 3",
- "u": "8.0"
- },
- "wave_tone4": {
- "c": "people",
- "e": "👋🏾",
- "d": "waving hand sign tone 4",
- "u": "8.0"
- },
- "wave_tone5": {
- "c": "people",
- "e": "👋🏿",
- "d": "waving hand sign tone 5",
- "u": "8.0"
- },
- "wavy_dash": {
- "c": "symbols",
- "e": "〰",
- "d": "wavy dash",
- "u": "1.1"
- },
- "waxing_crescent_moon": {
- "c": "nature",
- "e": "🌒",
- "d": "waxing crescent moon symbol",
- "u": "6.0"
- },
- "waxing_gibbous_moon": {
- "c": "nature",
- "e": "🌔",
- "d": "waxing gibbous moon symbol",
- "u": "6.0"
- },
- "wc": {
- "c": "symbols",
- "e": "🚾",
- "d": "water closet",
- "u": "6.0"
- },
- "weary": {
- "c": "people",
- "e": "😩",
- "d": "weary face",
- "u": "6.0"
- },
- "wedding": {
- "c": "travel",
- "e": "💒",
- "d": "wedding",
- "u": "6.0"
- },
- "whale": {
- "c": "nature",
- "e": "🐳",
- "d": "spouting whale",
- "u": "6.0"
- },
- "whale2": {
- "c": "nature",
- "e": "🐋",
- "d": "whale",
- "u": "6.0"
- },
- "wheel_of_dharma": {
- "c": "symbols",
- "e": "☸",
- "d": "wheel of dharma",
- "u": "1.1"
- },
- "wheelchair": {
- "c": "symbols",
- "e": "♿",
- "d": "wheelchair symbol",
- "u": "4.1"
- },
- "white_check_mark": {
- "c": "symbols",
- "e": "✅",
- "d": "white heavy check mark",
- "u": "6.0"
- },
- "white_circle": {
- "c": "symbols",
- "e": "⚪",
- "d": "medium white circle",
- "u": "4.1"
- },
- "white_flower": {
- "c": "symbols",
- "e": "💮",
- "d": "white flower",
- "u": "6.0"
- },
- "white_large_square": {
- "c": "symbols",
- "e": "⬜",
- "d": "white large square",
- "u": "5.1"
- },
- "white_medium_small_square": {
- "c": "symbols",
- "e": "◽",
- "d": "white medium small square",
- "u": "3.2"
- },
- "white_medium_square": {
- "c": "symbols",
- "e": "◻",
- "d": "white medium square",
- "u": "3.2"
- },
- "white_small_square": {
- "c": "symbols",
- "e": "▫",
- "d": "white small square",
- "u": "1.1"
- },
- "white_square_button": {
- "c": "symbols",
- "e": "🔳",
- "d": "white square button",
- "u": "6.0"
- },
- "white_sun_cloud": {
- "c": "nature",
- "e": "🌥",
- "d": "white sun behind cloud",
- "u": "7.0"
- },
- "white_sun_rain_cloud": {
- "c": "nature",
- "e": "🌦",
- "d": "white sun behind cloud with rain",
- "u": "7.0"
- },
- "white_sun_small_cloud": {
- "c": "nature",
- "e": "🌤",
- "d": "white sun with small cloud",
- "u": "7.0"
- },
- "wilted_rose": {
- "c": "nature",
- "e": "🥀",
- "d": "wilted flower",
- "u": "9.0"
- },
- "wind_blowing_face": {
- "c": "nature",
- "e": "🌬",
- "d": "wind blowing face",
- "u": "7.0"
- },
- "wind_chime": {
- "c": "objects",
- "e": "🎐",
- "d": "wind chime",
- "u": "6.0"
- },
- "wine_glass": {
- "c": "food",
- "e": "🍷",
- "d": "wine glass",
- "u": "6.0"
- },
- "wink": {
- "c": "people",
- "e": "😉",
- "d": "winking face",
- "u": "6.0"
- },
- "wolf": {
- "c": "nature",
- "e": "🐺",
- "d": "wolf face",
- "u": "6.0"
- },
- "woman": {
- "c": "people",
- "e": "👩",
- "d": "woman",
- "u": "6.0"
- },
- "woman_tone1": {
- "c": "people",
- "e": "👩🏻",
- "d": "woman tone 1",
- "u": "8.0"
- },
- "woman_tone2": {
- "c": "people",
- "e": "👩🏼",
- "d": "woman tone 2",
- "u": "8.0"
- },
- "woman_tone3": {
- "c": "people",
- "e": "👩🏽",
- "d": "woman tone 3",
- "u": "8.0"
- },
- "woman_tone4": {
- "c": "people",
- "e": "👩🏾",
- "d": "woman tone 4",
- "u": "8.0"
- },
- "woman_tone5": {
- "c": "people",
- "e": "👩🏿",
- "d": "woman tone 5",
- "u": "8.0"
- },
- "womans_clothes": {
- "c": "people",
- "e": "👚",
- "d": "womans clothes",
- "u": "6.0"
- },
- "womans_hat": {
- "c": "people",
- "e": "👒",
- "d": "womans hat",
- "u": "6.0"
- },
- "womens": {
- "c": "symbols",
- "e": "🚺",
- "d": "womens symbol",
- "u": "6.0"
- },
- "worried": {
- "c": "people",
- "e": "😟",
- "d": "worried face",
- "u": "6.1"
- },
- "wrench": {
- "c": "objects",
- "e": "🔧",
- "d": "wrench",
- "u": "6.0"
- },
- "wrestlers": {
- "c": "activity",
- "e": "🤼",
- "d": "wrestlers",
- "u": "9.0"
- },
- "wrestlers_tone1": {
- "c": "activity",
- "e": "🤼🏻",
- "d": "wrestlers tone 1",
- "u": "9.0"
- },
- "wrestlers_tone2": {
- "c": "activity",
- "e": "🤼🏼",
- "d": "wrestlers tone 2",
- "u": "9.0"
- },
- "wrestlers_tone3": {
- "c": "activity",
- "e": "🤼🏽",
- "d": "wrestlers tone 3",
- "u": "9.0"
- },
- "wrestlers_tone4": {
- "c": "activity",
- "e": "🤼🏾",
- "d": "wrestlers tone 4",
- "u": "9.0"
- },
- "wrestlers_tone5": {
- "c": "activity",
- "e": "🤼🏿",
- "d": "wrestlers tone 5",
- "u": "9.0"
- },
- "writing_hand": {
- "c": "people",
- "e": "✍",
- "d": "writing hand",
- "u": "1.1"
- },
- "writing_hand_tone1": {
- "c": "people",
- "e": "✍🏻",
- "d": "writing hand tone 1",
- "u": "8.0"
- },
- "writing_hand_tone2": {
- "c": "people",
- "e": "✍🏼",
- "d": "writing hand tone 2",
- "u": "8.0"
- },
- "writing_hand_tone3": {
- "c": "people",
- "e": "✍🏽",
- "d": "writing hand tone 3",
- "u": "8.0"
- },
- "writing_hand_tone4": {
- "c": "people",
- "e": "✍🏾",
- "d": "writing hand tone 4",
- "u": "8.0"
- },
- "writing_hand_tone5": {
- "c": "people",
- "e": "✍🏿",
- "d": "writing hand tone 5",
- "u": "8.0"
- },
- "x": {
- "c": "symbols",
- "e": "❌",
- "d": "cross mark",
- "u": "6.0"
- },
- "yellow_heart": {
- "c": "symbols",
- "e": "💛",
- "d": "yellow heart",
- "u": "6.0"
- },
- "yen": {
- "c": "objects",
- "e": "💴",
- "d": "banknote with yen sign",
- "u": "6.0"
- },
- "yin_yang": {
- "c": "symbols",
- "e": "☯",
- "d": "yin yang",
- "u": "1.1"
- },
- "yum": {
- "c": "people",
- "e": "😋",
- "d": "face savouring delicious food",
- "u": "6.0"
- },
- "zap": {
- "c": "nature",
- "e": "⚡",
- "d": "high voltage sign",
- "u": "4.0"
- },
- "zero": {
- "c": "symbols",
- "e": "0️⃣",
- "d": "keycap digit zero",
- "u": "3.0"
- },
- "zipper_mouth": {
- "c": "people",
- "e": "🤐",
- "d": "zipper-mouth face",
- "u": "8.0"
- },
- "zzz": {
- "c": "people",
- "e": "💤",
- "d": "sleeping symbol",
- "u": "6.0"
- }
-} \ No newline at end of file
diff --git a/qa/Dockerfile b/qa/Dockerfile
index ca7f9accb70..ae3ec2acfdf 100644
--- a/qa/Dockerfile
+++ b/qa/Dockerfile
@@ -30,7 +30,7 @@ RUN wget -q https://download.docker.com/linux/static/stable/x86_64/docker-17.09.
#
RUN curl -sS -L https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list
-RUN apt-get update -q && apt-get install -y google-chrome-stable && apt-get clean
+RUN apt-get update -q && apt-get install -y --allow-unauthenticated google-chrome-stable && apt-get clean
##
# Install chromedriver to make it work with Selenium
diff --git a/qa/README.md b/qa/README.md
index 9517d4f42b4..8efdd8514f1 100644
--- a/qa/README.md
+++ b/qa/README.md
@@ -39,7 +39,9 @@ following call would login to a local [GDK] instance and run all specs in
`qa/specs/features`:
```
-bin/qa Test::Instance::All http://localhost:3000
+# Make sure to install the dependencies first with `bundle install`
+
+bundle exec bin/qa Test::Instance::All http://localhost:3000
```
Note: If you want to run tests requiring SSH against GDK, you
@@ -56,14 +58,14 @@ You can also supply specific tests to run as another parameter. For example, to
run the repository-related specs, you can execute:
```
-bin/qa Test::Instance::All http://localhost -- qa/specs/features/browser_ui/3_create/repository
+bundle exec bin/qa Test::Instance::All http://localhost -- qa/specs/features/browser_ui/3_create/repository
```
Since the arguments would be passed to `rspec`, you could use all `rspec`
options there. For example, passing `--backtrace` and also line number:
```
-bin/qa Test::Instance::All http://localhost -- qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb:6 --backtrace
+bundle exec bin/qa Test::Instance::All http://localhost -- qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb:6 --backtrace
```
Note that the separator `--` is required; all subsequent options will be
@@ -78,7 +80,7 @@ If you need to authenticate as a different user, you can provide the
`GITLAB_USERNAME` and `GITLAB_PASSWORD` environment variables:
```
-GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password bin/qa Test::Instance::All https://gitlab.example.com
+GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password bundle exec bin/qa Test::Instance::All https://gitlab.example.com
```
If your user doesn't have permission to default sandbox group
@@ -86,7 +88,7 @@ If your user doesn't have permission to default sandbox group
`GITLAB_SANDBOX_NAME`:
```
-GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password GITLAB_SANDBOX_NAME=jsmith-qa-sandbox bin/qa Test::Instance::All https://gitlab.example.com
+GITLAB_USERNAME=jsmith GITLAB_PASSWORD=password GITLAB_SANDBOX_NAME=jsmith-qa-sandbox bundle exec bin/qa Test::Instance::All https://gitlab.example.com
```
All [supported environment variables are here](https://gitlab.com/gitlab-org/gitlab-qa/blob/master/docs/what_tests_can_be_run.md#supported-environment-variables).
@@ -121,7 +123,7 @@ tests that are expected to fail while a fix is in progress (similar to how
can be used).
```
-bin/qa Test::Instance::All http://localhost -- --tag quarantine
+bundle exec bin/qa Test::Instance::All http://localhost -- --tag quarantine
```
If `quarantine` is used with other tags, tests will only be run if they have at
@@ -140,7 +142,7 @@ option `--enable-feature FEATURE_FLAG`. For example, to enable the feature flag
that enforces Gitaly request limits, you would use the command:
```
-bin/qa Test::Instance::All http://localhost --enable-feature gitaly_enforce_requests_limits
+bundle exec bin/qa Test::Instance::All http://localhost --enable-feature gitaly_enforce_requests_limits
```
This will instruct the QA framework to enable the `gitaly_enforce_requests_limits`
@@ -153,4 +155,4 @@ flag during a single test, [as you can in unit tests](https://docs.gitlab.com/ee
but [that capability is planned](https://gitlab.com/gitlab-org/quality/team-tasks/issues/77).
Note also that the `--` separator isn't used because `--enable-feature` is a QA
-framework option, not an `rspec` option. \ No newline at end of file
+framework option, not an `rspec` option.
diff --git a/qa/qa/page/project/settings/advanced.rb b/qa/qa/page/project/settings/advanced.rb
index 578f097e2dc..6dffbac5694 100644
--- a/qa/qa/page/project/settings/advanced.rb
+++ b/qa/qa/page/project/settings/advanced.rb
@@ -4,27 +4,21 @@ module QA
module Settings
class Advanced < Page::Base
view 'app/views/projects/edit.html.haml' do
- element :project_path_field, 'text_field :path' # rubocop:disable QA/ElementWithPattern
- element :project_name_field, 'text_field :name' # rubocop:disable QA/ElementWithPattern
- element :rename_project_button, "submit 'Rename project'" # rubocop:disable QA/ElementWithPattern
+ element :project_path_field
+ element :change_path_button
end
- def rename_to(path)
- fill_project_name(path)
+ def update_project_path_to(path)
fill_project_path(path)
- rename_project!
+ click_change_path_button
end
def fill_project_path(path)
- fill_in :project_path, with: path
+ fill_element :project_path_field, path
end
- def fill_project_name(name)
- fill_in :project_name, with: name
- end
-
- def rename_project!
- click_on 'Rename project'
+ def click_change_path_button
+ click_element :change_path_button
end
end
end
diff --git a/qa/qa/page/project/settings/common.rb b/qa/qa/page/project/settings/common.rb
index f3b217677f2..233e681e0df 100644
--- a/qa/qa/page/project/settings/common.rb
+++ b/qa/qa/page/project/settings/common.rb
@@ -4,14 +4,6 @@ module QA
module Settings
module Common
include QA::Page::Settings::Common
-
- def self.included(base)
- base.class_eval do
- view 'app/views/projects/edit.html.haml' do
- element :advanced_settings_expand, "= expanded ? 'Collapse' : 'Expand'" # rubocop:disable QA/ElementWithPattern
- end
- end
- end
end
end
end
diff --git a/qa/qa/page/project/settings/main.rb b/qa/qa/page/project/settings/main.rb
index d8cf1d49dd2..cf464e25ca5 100644
--- a/qa/qa/page/project/settings/main.rb
+++ b/qa/qa/page/project/settings/main.rb
@@ -9,6 +9,24 @@ module QA
element :advanced_settings
end
+ view 'app/views/projects/settings/_general.html.haml' do
+ element :project_name_field
+ element :save_naming_topics_avatar_button
+ end
+
+ def rename_project_to(name)
+ fill_project_name(name)
+ click_save_changes
+ end
+
+ def fill_project_name(name)
+ fill_element :project_name_field, name
+ end
+
+ def click_save_changes
+ click_element :save_naming_topics_avatar_button
+ end
+
def expand_advanced_settings(&block)
expand_section(:advanced_settings) do
Advanced.perform(&block)
diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb
index 7e8b42e286f..f97b0e56ca2 100644
--- a/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb
+++ b/qa/qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
module QA
- context 'Plan' do
+ # Failure issue: https://gitlab.com/gitlab-org/quality/staging/issues/53
+ context 'Plan', :quarantine do
describe 'issue suggestions' do
let(:issue_title) { 'Issue Lists are awesome' }
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb
index 6ca7af8a3af..c7db595284e 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
module QA
- context 'Create' do
+ # Failure issue: https://gitlab.com/gitlab-org/quality/nightly/issues/94
+ context 'Create', :quarantine do
describe 'Merge request creation from fork' do
it 'user forks a project, submits a merge request and maintainer merges it' do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
index f146636c49a..86692623790 100644
--- a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
module QA
- # Failure issue: https://gitlab.com/gitlab-org/quality/staging/issues/31
- context 'Create' do
+ # Failure issue: https://gitlab.com/gitlab-org/quality/nightly/issues/93
+ context 'Create', :quarantine do
describe 'Merge request squashing' do
it 'user squashes commits while merging' do
Runtime::Browser.visit(:gitlab, Page::Main::Login)
diff --git a/qa/spec/specs/runner_spec.rb b/qa/spec/specs/runner_spec.rb
index 741821ddf8c..5c86c102105 100644
--- a/qa/spec/specs/runner_spec.rb
+++ b/qa/spec/specs/runner_spec.rb
@@ -69,7 +69,7 @@ describe QA::Specs::Runner do
subject { described_class.new }
- it 'it includes default args and excludes the skip_signup_disabled tag' do
+ it 'includes default args and excludes the skip_signup_disabled tag' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~skip_signup_disabled', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform
@@ -83,7 +83,7 @@ describe QA::Specs::Runner do
subject { described_class.new }
- it 'it includes default args and excludes the requires_git_protocol_v2 tag' do
+ it 'includes default args and excludes the requires_git_protocol_v2 tag' do
expect_rspec_runner_arguments(['--tag', '~orchestrated', '--tag', '~requires_git_protocol_v2', *described_class::DEFAULT_TEST_PATH_ARGS])
subject.perform
diff --git a/spec/controllers/projects/mirrors_controller_spec.rb b/spec/controllers/projects/mirrors_controller_spec.rb
index f2b73956e8d..3ababe18055 100644
--- a/spec/controllers/projects/mirrors_controller_spec.rb
+++ b/spec/controllers/projects/mirrors_controller_spec.rb
@@ -79,7 +79,7 @@ describe Projects::MirrorsController do
do_put(project, remote_mirrors_attributes: remote_mirror_attributes)
expect(response).to redirect_to(project_settings_repository_path(project, anchor: 'js-push-remote-settings'))
- expect(flash[:alert]).to match(/Only allowed protocols are/)
+ expect(flash[:alert]).to match(/Only allowed schemes are/)
end
it 'does not create a RemoteMirror object' do
diff --git a/spec/factories/services.rb b/spec/factories/services.rb
index 70c34f8640b..0d8c26a2ee9 100644
--- a/spec/factories/services.rb
+++ b/spec/factories/services.rb
@@ -62,4 +62,10 @@ FactoryBot.define do
project_key: 'jira-key'
)
end
+
+ factory :hipchat_service do
+ project
+ type 'HipchatService'
+ token 'test_token'
+ end
end
diff --git a/spec/features/ide/user_opens_merge_request_spec.rb b/spec/features/ide/user_opens_merge_request_spec.rb
new file mode 100644
index 00000000000..185349219a7
--- /dev/null
+++ b/spec/features/ide/user_opens_merge_request_spec.rb
@@ -0,0 +1,21 @@
+require 'spec_helper'
+
+describe 'IDE merge request', :js do
+ let(:merge_request) { create(:merge_request, :with_diffs, :simple, source_project: project) }
+ let(:project) { create(:project, :public, :repository) }
+ let(:user) { project.owner }
+
+ before do
+ sign_in(user)
+
+ visit(merge_request_path(merge_request))
+ end
+
+ it 'user opens merge request' do
+ click_link 'Open in Web IDE'
+
+ wait_for_requests
+
+ expect(page).to have_selector('.monaco-diff-editor')
+ end
+end
diff --git a/spec/features/issues/issue_sidebar_spec.rb b/spec/features/issues/issue_sidebar_spec.rb
index 3050f23c130..321da8f44d7 100644
--- a/spec/features/issues/issue_sidebar_spec.rb
+++ b/spec/features/issues/issue_sidebar_spec.rb
@@ -130,7 +130,7 @@ describe 'Issue Sidebar' do
end
end
- context 'creating a project label', :js do
+ context 'creating a project label', :js, :quarantine do
before do
page.within('.block.labels') do
click_link 'Create project'
diff --git a/spec/features/issues/user_creates_branch_and_merge_request_spec.rb b/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
index 0a006011c89..b69fba0db00 100644
--- a/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
+++ b/spec/features/issues/user_creates_branch_and_merge_request_spec.rb
@@ -29,7 +29,7 @@ describe 'User creates branch and merge request on issue page', :js do
end
# In order to improve tests performance, all UI checks are placed in this test.
- it 'shows elements' do
+ it 'shows elements', :quarantine do
button_create_merge_request = find('.js-create-merge-request')
button_toggle_dropdown = find('.create-mr-dropdown-wrap .dropdown-toggle')
@@ -139,7 +139,7 @@ describe 'User creates branch and merge request on issue page', :js do
visit project_issue_path(project, issue)
end
- it 'disables the create branch button' do
+ it 'disables the create branch button', :quarantine do
expect(page).to have_css('.create-mr-dropdown-wrap .unavailable:not(.hidden)')
expect(page).to have_css('.create-mr-dropdown-wrap .available.hidden', visible: false)
expect(page).to have_content /Related merge requests/
diff --git a/spec/features/issues/user_interacts_with_awards_spec.rb b/spec/features/issues/user_interacts_with_awards_spec.rb
index eaeaa04f50d..d117620a2b1 100644
--- a/spec/features/issues/user_interacts_with_awards_spec.rb
+++ b/spec/features/issues/user_interacts_with_awards_spec.rb
@@ -75,7 +75,7 @@ describe 'User interacts with awards' do
end
end
- it 'shows the list of award emoji categories' do
+ it 'shows the list of award emoji categories', :quarantine do
page.within('.awards') do
page.find('.js-add-award').click
end
diff --git a/spec/features/projects/branches/download_buttons_spec.rb b/spec/features/projects/branches/download_buttons_spec.rb
index 3e75890725e..c8dc72a34ec 100644
--- a/spec/features/projects/branches/download_buttons_spec.rb
+++ b/spec/features/projects/branches/download_buttons_spec.rb
@@ -35,7 +35,7 @@ describe 'Download buttons in branches page' do
it 'shows download artifacts button' do
href = latest_succeeded_project_artifacts_path(project, 'binary-encoding/download', job: 'build')
- expect(page).to have_link build.name, href: href
+ expect(page).to have_link "Download '#{build.name}'", href: href
end
end
end
diff --git a/spec/features/projects/files/download_buttons_spec.rb b/spec/features/projects/files/download_buttons_spec.rb
index 111972a6b00..03cb3530e2b 100644
--- a/spec/features/projects/files/download_buttons_spec.rb
+++ b/spec/features/projects/files/download_buttons_spec.rb
@@ -30,7 +30,7 @@ describe 'Projects > Files > Download buttons in files tree' do
it 'shows download artifacts button' do
href = latest_succeeded_project_artifacts_path(project, "#{project.default_branch}/download", job: 'build')
- expect(page).to have_link build.name, href: href
+ expect(page).to have_link "Download '#{build.name}'", href: href
end
end
end
diff --git a/spec/features/projects/services/disable_triggers_spec.rb b/spec/features/projects/services/disable_triggers_spec.rb
index 65b597da269..1a13fe03a67 100644
--- a/spec/features/projects/services/disable_triggers_spec.rb
+++ b/spec/features/projects/services/disable_triggers_spec.rb
@@ -14,11 +14,10 @@ describe 'Disable individual triggers' do
end
context 'service has multiple supported events' do
- let(:service_name) { 'JIRA' }
+ let(:service_name) { 'HipChat' }
it 'shows trigger checkboxes' do
- event_count = JiraService.supported_events.count
- expect(event_count).to be > 1
+ event_count = HipchatService.supported_events.count
expect(page).to have_content "Trigger"
expect(page).to have_css(checkbox_selector, count: event_count)
diff --git a/spec/features/projects/services/user_activates_hipchat_spec.rb b/spec/features/projects/services/user_activates_hipchat_spec.rb
new file mode 100644
index 00000000000..d6b69a5bd68
--- /dev/null
+++ b/spec/features/projects/services/user_activates_hipchat_spec.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'User activates HipChat' do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+
+ before do
+ project.add_maintainer(user)
+ sign_in(user)
+
+ visit(project_settings_integrations_path(project))
+
+ click_link('HipChat')
+ end
+
+ context 'with standart settings' do
+ it 'activates service' do
+ check('Active')
+ fill_in('Room', with: 'gitlab')
+ fill_in('Token', with: 'verySecret')
+ click_button('Save')
+
+ expect(page).to have_content('HipChat activated.')
+ end
+ end
+
+ context 'with custom settings' do
+ it 'activates service' do
+ check('Active')
+ fill_in('Room', with: 'gitlab_custom')
+ fill_in('Token', with: 'secretCustom')
+ fill_in('Server', with: 'https://chat.example.com')
+ click_button('Save')
+
+ expect(page).to have_content('HipChat activated.')
+ end
+ end
+end
diff --git a/spec/features/projects/services/user_views_services_spec.rb b/spec/features/projects/services/user_views_services_spec.rb
index b0a838a7d2b..e9c8cf0fe34 100644
--- a/spec/features/projects/services/user_views_services_spec.rb
+++ b/spec/features/projects/services/user_views_services_spec.rb
@@ -14,6 +14,7 @@ describe 'User views services' do
it 'shows the list of available services' do
expect(page).to have_content('Project services')
expect(page).to have_content('Campfire')
+ expect(page).to have_content('HipChat')
expect(page).to have_content('Assembla')
expect(page).to have_content('Pushover')
expect(page).to have_content('Atlassian Bamboo')
@@ -21,7 +22,5 @@ describe 'User views services' do
expect(page).to have_content('Asana')
expect(page).to have_content('Irker (IRC gateway)')
expect(page).to have_content('Packagist')
- expect(page).to have_content('Mattermost')
- expect(page).to have_content('Slack')
end
end
diff --git a/spec/features/projects/settings/user_renames_a_project_spec.rb b/spec/features/projects/settings/user_renames_a_project_spec.rb
index 64c9af4b706..d3979b79910 100644
--- a/spec/features/projects/settings/user_renames_a_project_spec.rb
+++ b/spec/features/projects/settings/user_renames_a_project_spec.rb
@@ -9,24 +9,33 @@ describe 'Projects > Settings > User renames a project' do
visit edit_project_path(project)
end
- def rename_project(project, name: nil, path: nil)
- fill_in('project_name', with: name) if name
- fill_in('Path', with: path) if path
- click_button('Rename project')
+ def change_path(project, path)
+ within('.advanced-settings') do
+ fill_in('Path', with: path)
+ click_button('Change path')
+ end
+ project.reload
wait_for_edit_project_page_reload
+ end
+
+ def change_name(project, name)
+ within('.general-settings') do
+ fill_in('Project name', with: name)
+ click_button('Save changes')
+ end
project.reload
+ wait_for_edit_project_page_reload
end
def wait_for_edit_project_page_reload
- expect(find('.project-edit-container')).to have_content('Rename repository')
+ expect(find('.advanced-settings')).to have_content('Change path')
end
context 'with invalid characters' do
- it 'shows errors for invalid project path/name' do
- rename_project(project, name: 'foo&bar', path: 'foo&bar')
- expect(page).to have_field 'Project name', with: 'foo&bar'
+ it 'shows errors for invalid project path' do
+ change_path(project, 'foo&bar')
+
expect(page).to have_field 'Path', with: 'foo&bar'
- expect(page).to have_content "Name can contain only letters, digits, emojis, '_', '.', dash, space. It must start with letter, digit, emoji or '_'."
expect(page).to have_content "Path can contain only letters, digits, '_', '-' and '.'. Cannot start with '-', end in '.git' or end in '.atom'"
end
end
@@ -42,13 +51,13 @@ describe 'Projects > Settings > User renames a project' do
context 'when changing project name' do
it 'renames the repository' do
- rename_project(project, name: 'bar')
+ change_name(project, 'bar')
expect(find('.breadcrumbs')).to have_content(project.name)
end
context 'with emojis' do
it 'shows error for invalid project name' do
- rename_project(project, name: '🚀 foo bar ☁️')
+ change_name(project, '🚀 foo bar ☁️')
expect(page).to have_field 'Project name', with: '🚀 foo bar ☁️'
expect(page).not_to have_content "Name can contain only letters, digits, emojis '_', '.', dash and space. It must start with letter, digit, emoji or '_'."
end
@@ -67,7 +76,7 @@ describe 'Projects > Settings > User renames a project' do
end
it 'the project is accessible via the new path' do
- rename_project(project, path: 'bar')
+ change_path(project, 'bar')
new_path = namespace_project_path(project.namespace, 'bar')
visit new_path
@@ -77,7 +86,7 @@ describe 'Projects > Settings > User renames a project' do
it 'the project is accessible via a redirect from the old path' do
old_path = project_path(project)
- rename_project(project, path: 'bar')
+ change_path(project, 'bar')
new_path = namespace_project_path(project.namespace, 'bar')
visit old_path
@@ -88,7 +97,7 @@ describe 'Projects > Settings > User renames a project' do
context 'and a new project is added with the same path' do
it 'overrides the redirect' do
old_path = project_path(project)
- rename_project(project, path: 'bar')
+ change_path(project, 'bar')
new_project = create(:project, namespace: user.namespace, path: 'gitlabhq', name: 'quz')
visit old_path
diff --git a/spec/features/projects/show/download_buttons_spec.rb b/spec/features/projects/show/download_buttons_spec.rb
index fee5f8001b0..3a2dcc5aa55 100644
--- a/spec/features/projects/show/download_buttons_spec.rb
+++ b/spec/features/projects/show/download_buttons_spec.rb
@@ -35,10 +35,11 @@ describe 'Projects > Show > Download buttons' do
it 'shows download artifacts button' do
href = latest_succeeded_project_artifacts_path(project, "#{project.default_branch}/download", job: 'build')
- expect(page).to have_link build.name, href: href
+ expect(page).to have_link "Download '#{build.name}'", href: href
end
it 'download links have download attribute' do
+ expect(page).to have_selector('a', text: 'Download')
page.all('a', text: 'Download').each do |link|
expect(link[:download]).to eq ''
end
diff --git a/spec/features/projects/tags/download_buttons_spec.rb b/spec/features/projects/tags/download_buttons_spec.rb
index 4c8ec53836a..fbfd8cee7aa 100644
--- a/spec/features/projects/tags/download_buttons_spec.rb
+++ b/spec/features/projects/tags/download_buttons_spec.rb
@@ -36,7 +36,7 @@ describe 'Download buttons in tags page' do
it 'shows download artifacts button' do
href = latest_succeeded_project_artifacts_path(project, "#{tag}/download", job: 'build')
- expect(page).to have_link build.name, href: href
+ expect(page).to have_link "Download '#{build.name}'", href: href
end
end
end
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
index dbf0d427976..ff4e6197746 100644
--- a/spec/features/projects_spec.rb
+++ b/spec/features/projects_spec.rb
@@ -373,6 +373,21 @@ describe 'Project' do
end
end
+ describe 'edit' do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :public) }
+ let(:path) { edit_project_path(project) }
+
+ before do
+ project.add_maintainer(user)
+ sign_in(user)
+ visit path
+ end
+
+ it_behaves_like 'dirty submit form', [{ form: '.js-general-settings-form', input: 'input[name="project[name]"]' },
+ { form: '.qa-merge-request-settings', input: '#project_printing_merge_request_link_enabled' }]
+ end
+
def remove_with_confirm(button_text, confirm_with)
click_button button_text
fill_in 'confirm_name_input', with: confirm_with
diff --git a/spec/fixtures/api/schemas/entities/issue_board.json b/spec/fixtures/api/schemas/entities/issue_board.json
index f7b270ffa8d..7cb65e1f2f5 100644
--- a/spec/fixtures/api/schemas/entities/issue_board.json
+++ b/spec/fixtures/api/schemas/entities/issue_board.json
@@ -9,6 +9,9 @@
"project_id": { "type": "integer" },
"relative_position": { "type": ["integer", "null"] },
"time_estimate": { "type": "integer" },
+ "total_time_spent": { "type": "integer" },
+ "human_time_estimate": { "type": ["string", "null"] },
+ "human_total_time_spent": { "type": ["string", "null"] },
"weight": { "type": ["integer", "null"] },
"project": {
"type": "object",
diff --git a/spec/frontend/.eslintrc.yml b/spec/frontend/.eslintrc.yml
index 0e6ca11c1f8..e78a38d31f5 100644
--- a/spec/frontend/.eslintrc.yml
+++ b/spec/frontend/.eslintrc.yml
@@ -3,6 +3,8 @@ env:
jest/globals: true
plugins:
- jest
+extends:
+ - 'plugin:jest/recommended'
settings:
import/resolver:
jest:
@@ -12,7 +14,3 @@ globals:
loadFixtures: false
preloadFixtures: false
setFixtures: false
-rules:
- jest/no-identical-title: error
- jest/no-focused-tests: error
- jest/no-jasmine-globals: error
diff --git a/spec/frontend/clusters/clusters_bundle_spec.js b/spec/frontend/clusters/clusters_bundle_spec.js
index eea7bd87257..33a35069004 100644
--- a/spec/frontend/clusters/clusters_bundle_spec.js
+++ b/spec/frontend/clusters/clusters_bundle_spec.js
@@ -12,7 +12,7 @@ import { setTestTimeout } from 'helpers/timeout';
import $ from 'jquery';
describe('Clusters', () => {
- setTestTimeout(500);
+ setTestTimeout(1000);
let cluster;
let mock;
diff --git a/spec/frontend/ide/stores/modules/file_templates/mutations_spec.js b/spec/frontend/ide/stores/modules/file_templates/mutations_spec.js
index 8e0e3ae99a1..8e8b7f06ca2 100644
--- a/spec/frontend/ide/stores/modules/file_templates/mutations_spec.js
+++ b/spec/frontend/ide/stores/modules/file_templates/mutations_spec.js
@@ -9,7 +9,7 @@ describe('IDE file templates mutations', () => {
state = createState();
});
- describe(types.REQUEST_TEMPLATE_TYPES, () => {
+ describe(`${types.REQUEST_TEMPLATE_TYPES}`, () => {
it('sets isLoading', () => {
mutations[types.REQUEST_TEMPLATE_TYPES](state);
@@ -17,7 +17,7 @@ describe('IDE file templates mutations', () => {
});
});
- describe(types.RECEIVE_TEMPLATE_TYPES_ERROR, () => {
+ describe(`${types.RECEIVE_TEMPLATE_TYPES_ERROR}`, () => {
it('sets isLoading', () => {
state.isLoading = true;
@@ -27,7 +27,7 @@ describe('IDE file templates mutations', () => {
});
});
- describe(types.RECEIVE_TEMPLATE_TYPES_SUCCESS, () => {
+ describe(`${types.RECEIVE_TEMPLATE_TYPES_SUCCESS}`, () => {
it('sets isLoading to false', () => {
state.isLoading = true;
@@ -43,7 +43,7 @@ describe('IDE file templates mutations', () => {
});
});
- describe(types.SET_SELECTED_TEMPLATE_TYPE, () => {
+ describe(`${types.SET_SELECTED_TEMPLATE_TYPE}`, () => {
it('sets selectedTemplateType', () => {
mutations[types.SET_SELECTED_TEMPLATE_TYPE](state, 'type');
@@ -59,7 +59,7 @@ describe('IDE file templates mutations', () => {
});
});
- describe(types.SET_UPDATE_SUCCESS, () => {
+ describe(`${types.SET_UPDATE_SUCCESS}`, () => {
it('sets updateSuccess', () => {
mutations[types.SET_UPDATE_SUCCESS](state, true);
diff --git a/spec/frontend/ide/stores/mutations/merge_request_spec.js b/spec/frontend/ide/stores/mutations/merge_request_spec.js
index e30ca22022f..afbe6770c0d 100644
--- a/spec/frontend/ide/stores/mutations/merge_request_spec.js
+++ b/spec/frontend/ide/stores/mutations/merge_request_spec.js
@@ -32,6 +32,24 @@ describe('IDE store merge request mutations', () => {
expect(newMr.title).toBe('mr');
expect(newMr.active).toBeTruthy();
});
+
+ it('keeps original data', () => {
+ const versions = ['change'];
+ const mergeRequest = localState.projects.abcproject.mergeRequests[1];
+
+ mergeRequest.versions = versions;
+
+ mutations.SET_MERGE_REQUEST(localState, {
+ projectPath: 'abcproject',
+ mergeRequestId: 1,
+ mergeRequest: {
+ title: ['change'],
+ },
+ });
+
+ expect(mergeRequest.title).toBe('mr');
+ expect(mergeRequest.versions).toEqual(versions);
+ });
});
describe('SET_MERGE_REQUEST_CHANGES', () => {
diff --git a/spec/frontend/import_projects/store/mutations_spec.js b/spec/frontend/import_projects/store/mutations_spec.js
index 8db8e9819ba..505545f7aa5 100644
--- a/spec/frontend/import_projects/store/mutations_spec.js
+++ b/spec/frontend/import_projects/store/mutations_spec.js
@@ -2,7 +2,7 @@ import * as types from '~/import_projects/store/mutation_types';
import mutations from '~/import_projects/store/mutations';
describe('import_projects store mutations', () => {
- describe(types.RECEIVE_IMPORT_SUCCESS, () => {
+ describe(`${types.RECEIVE_IMPORT_SUCCESS}`, () => {
it('removes repoId from reposBeingImported and providerRepos, adds to importedProjects', () => {
const repoId = 1;
const state = {
@@ -20,7 +20,7 @@ describe('import_projects store mutations', () => {
});
});
- describe(types.RECEIVE_JOBS_SUCCESS, () => {
+ describe(`${types.RECEIVE_JOBS_SUCCESS}`, () => {
it('updates importStatus of existing importedProjects', () => {
const repoId = 1;
const state = { importedProjects: [{ id: repoId, importStatus: 'started' }] };
diff --git a/spec/frontend/lib/utils/text_utility_spec.js b/spec/frontend/lib/utils/text_utility_spec.js
index 3f331055a32..17fdbf606b2 100644
--- a/spec/frontend/lib/utils/text_utility_spec.js
+++ b/spec/frontend/lib/utils/text_utility_spec.js
@@ -23,14 +23,6 @@ describe('text_utility', () => {
});
});
- describe('capitalizeFirstCharacter', () => {
- it('returns string with first letter capitalized', () => {
- expect(textUtils.capitalizeFirstCharacter('gitlab')).toEqual('Gitlab');
- expect(textUtils.highCountTrim(105)).toBe('99+');
- expect(textUtils.highCountTrim(100)).toBe('99+');
- });
- });
-
describe('humanize', () => {
it('should remove underscores and uppercase the first letter', () => {
expect(textUtils.humanize('foo_bar')).toEqual('Foo bar');
@@ -63,6 +55,12 @@ describe('text_utility', () => {
});
});
+ describe('capitalizeFirstCharacter', () => {
+ it('returns string with first letter capitalized', () => {
+ expect(textUtils.capitalizeFirstCharacter('gitlab')).toEqual('Gitlab');
+ });
+ });
+
describe('slugifyWithHyphens', () => {
it('should replaces whitespaces with hyphens and convert to lower case', () => {
expect(textUtils.slugifyWithHyphens('My Input String')).toEqual('my-input-string');
diff --git a/spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js b/spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js
index 866d6eb05c6..c8deac1c086 100644
--- a/spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js
+++ b/spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js
@@ -23,7 +23,7 @@ const newLine = {
type: 'new',
};
-describe(SuggestionDiffRow.name, () => {
+describe('SuggestionDiffRow', () => {
let wrapper;
const factory = (options = {}) => {
diff --git a/spec/frontend/vue_shared/components/notes/timeline_entry_item_spec.js b/spec/frontend/vue_shared/components/notes/timeline_entry_item_spec.js
index c15635f2105..be6c58f0683 100644
--- a/spec/frontend/vue_shared/components/notes/timeline_entry_item_spec.js
+++ b/spec/frontend/vue_shared/components/notes/timeline_entry_item_spec.js
@@ -1,7 +1,7 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';
-describe(TimelineEntryItem.name, () => {
+describe(`TimelineEntryItem`, () => {
let wrapper;
const factory = (options = {}) => {
diff --git a/spec/frontend/vuex_shared/modules/modal/mutations_spec.js b/spec/frontend/vuex_shared/modules/modal/mutations_spec.js
index d07f8ba1e65..eaaf196d1ec 100644
--- a/spec/frontend/vuex_shared/modules/modal/mutations_spec.js
+++ b/spec/frontend/vuex_shared/modules/modal/mutations_spec.js
@@ -2,7 +2,7 @@ import mutations from '~/vuex_shared/modules/modal/mutations';
import * as types from '~/vuex_shared/modules/modal/mutation_types';
describe('Vuex ModalModule mutations', () => {
- describe(types.SHOW, () => {
+ describe(`${types.SHOW}`, () => {
it('sets isVisible to true', () => {
const state = {
isVisible: false,
@@ -16,7 +16,7 @@ describe('Vuex ModalModule mutations', () => {
});
});
- describe(types.HIDE, () => {
+ describe(`${types.HIDE}`, () => {
it('sets isVisible to false', () => {
const state = {
isVisible: true,
@@ -30,7 +30,7 @@ describe('Vuex ModalModule mutations', () => {
});
});
- describe(types.OPEN, () => {
+ describe(`${types.OPEN}`, () => {
it('sets data and sets isVisible to true', () => {
const data = { id: 7 };
const state = {
diff --git a/spec/javascripts/awards_handler_spec.js b/spec/javascripts/awards_handler_spec.js
index e10df1b45e7..02200f77ad7 100644
--- a/spec/javascripts/awards_handler_spec.js
+++ b/spec/javascripts/awards_handler_spec.js
@@ -1,16 +1,12 @@
import $ from 'jquery';
import Cookies from 'js-cookie';
-import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
import loadAwardsHandler from '~/awards_handler';
import '~/lib/utils/common_utils';
-import { EMOJI_VERSION } from '~/emoji';
window.gl = window.gl || {};
window.gon = window.gon || {};
let openAndWaitForEmojiMenu;
-let mock;
let awardsHandler = null;
const urlRoot = gon.relative_url_root;
@@ -23,13 +19,8 @@ const lazyAssert = function(done, assertFn) {
};
describe('AwardsHandler', function() {
- const emojiData = getJSONFixture('emojis/emojis.json');
preloadFixtures('snippets/show.html');
-
beforeEach(function(done) {
- mock = new MockAdapter(axios);
- mock.onGet(`/-/emojis/${EMOJI_VERSION}/emojis.json`).reply(200, emojiData);
-
loadFixtures('snippets/show.html');
loadAwardsHandler(true)
.then(obj => {
@@ -62,8 +53,6 @@ describe('AwardsHandler', function() {
// restore original url root value
gon.relative_url_root = urlRoot;
- mock.restore();
-
// Undo what we did to the shared <body>
$('body').removeAttr('data-page');
diff --git a/spec/javascripts/diffs/components/app_spec.js b/spec/javascripts/diffs/components/app_spec.js
index 3ce69bc3c20..1aabf3c2132 100644
--- a/spec/javascripts/diffs/components/app_spec.js
+++ b/spec/javascripts/diffs/components/app_spec.js
@@ -75,6 +75,14 @@ describe('diffs/components/app', () => {
expect(wrapper.contains('.container-limited.limit-container-width')).toBe(false);
});
+ it('does not add container-limiting classes when isFluidLayout', () => {
+ createComponent({ isFluidLayout: true }, ({ state }) => {
+ state.diffs.isParallelView = false;
+ });
+
+ expect(wrapper.contains('.container-limited.limit-container-width')).toBe(false);
+ });
+
it('displays loading icon on loading', () => {
createComponent({}, ({ state }) => {
state.diffs.isLoading = true;
diff --git a/spec/javascripts/emoji_spec.js b/spec/javascripts/emoji_spec.js
index 0ac375145be..3db4d9800f1 100644
--- a/spec/javascripts/emoji_spec.js
+++ b/spec/javascripts/emoji_spec.js
@@ -1,6 +1,4 @@
-import MockAdapter from 'axios-mock-adapter';
-import axios from '~/lib/utils/axios_utils';
-import { initEmojiMap, glEmojiTag, EMOJI_VERSION } from '~/emoji';
+import { glEmojiTag } from '~/emoji';
import isEmojiUnicodeSupported, {
isFlagEmoji,
isRainbowFlagEmoji,
@@ -9,7 +7,6 @@ import isEmojiUnicodeSupported, {
isHorceRacingSkinToneComboEmoji,
isPersonZwjEmoji,
} from '~/emoji/support/is_emoji_unicode_supported';
-import installGlEmojiElement from '~/behaviors/gl_emoji';
const emptySupportMap = {
personZwj: false,
@@ -34,35 +31,34 @@ const emojiFixtureMap = {
bomb: {
name: 'bomb',
moji: '💣',
- uni: '6.0',
+ unicodeVersion: '6.0',
},
construction_worker_tone5: {
name: 'construction_worker_tone5',
moji: '👷🏿',
- uni: '8.0',
+ unicodeVersion: '8.0',
},
five: {
name: 'five',
moji: '5️⃣',
- uni: '3.0',
+ unicodeVersion: '3.0',
},
grey_question: {
name: 'grey_question',
moji: '❔',
- uni: '6.0',
+ unicodeVersion: '6.0',
},
};
function markupToDomElement(markup) {
const div = document.createElement('div');
div.innerHTML = markup;
- document.body.appendChild(div);
return div.firstElementChild;
}
-function testGlEmojiImageFallback(element, name) {
+function testGlEmojiImageFallback(element, name, src) {
expect(element.tagName.toLowerCase()).toBe('img');
- expect(element.getAttribute('src')).toBe(`/-/emojis/${EMOJI_VERSION}/${name}.png`);
+ expect(element.getAttribute('src')).toBe(src);
expect(element.getAttribute('title')).toBe(`:${name}:`);
expect(element.getAttribute('alt')).toBe(`:${name}:`);
}
@@ -72,11 +68,12 @@ const defaults = {
sprite: false,
};
-function testGlEmojiElement(element, name, uni, unicodeMoji, options = {}) {
+function testGlEmojiElement(element, name, unicodeVersion, unicodeMoji, options = {}) {
const opts = Object.assign({}, defaults, options);
expect(element.tagName.toLowerCase()).toBe('gl-emoji');
expect(element.dataset.name).toBe(name);
- expect(element.dataset.uni).toBe(uni);
+ expect(element.dataset.fallbackSrc.length).toBeGreaterThan(0);
+ expect(element.dataset.unicodeVersion).toBe(unicodeVersion);
const fallbackSpriteClass = `emoji-${name}`;
if (opts.sprite) {
@@ -89,7 +86,7 @@ function testGlEmojiElement(element, name, uni, unicodeMoji, options = {}) {
if (opts.forceFallback && !opts.sprite) {
// Check for image fallback
- testGlEmojiImageFallback(element.firstElementChild, name);
+ testGlEmojiImageFallback(element.firstElementChild, name, element.dataset.fallbackSrc);
} else {
// Otherwise make sure things are still unicode text
expect(element.textContent.trim()).toBe(unicodeMoji);
@@ -97,143 +94,101 @@ function testGlEmojiElement(element, name, uni, unicodeMoji, options = {}) {
}
describe('gl_emoji', () => {
- beforeAll(() => {
- installGlEmojiElement();
- });
-
- let mock;
- const emojiData = getJSONFixture('emojis/emojis.json');
-
- beforeEach(function(done) {
- mock = new MockAdapter(axios);
- mock.onGet(`/-/emojis/${EMOJI_VERSION}/emojis.json`).reply(200, emojiData);
-
- initEmojiMap()
- .then(() => {
- done();
- })
- .catch(() => {
- done();
- });
- });
-
- afterEach(function() {
- mock.restore();
- });
-
describe('glEmojiTag', () => {
- it('bomb emoji', done => {
+ it('bomb emoji', () => {
const emojiKey = 'bomb';
const markup = glEmojiTag(emojiFixtureMap[emojiKey].name);
const glEmojiElement = markupToDomElement(markup);
- setTimeout(() => {
- testGlEmojiElement(
- glEmojiElement,
- emojiFixtureMap[emojiKey].name,
- emojiFixtureMap[emojiKey].uni,
- emojiFixtureMap[emojiKey].moji,
- );
- done();
- });
+ testGlEmojiElement(
+ glEmojiElement,
+ emojiFixtureMap[emojiKey].name,
+ emojiFixtureMap[emojiKey].unicodeVersion,
+ emojiFixtureMap[emojiKey].moji,
+ );
});
- it('bomb emoji with image fallback', done => {
+ it('bomb emoji with image fallback', () => {
const emojiKey = 'bomb';
const markup = glEmojiTag(emojiFixtureMap[emojiKey].name, {
forceFallback: true,
});
const glEmojiElement = markupToDomElement(markup);
- setTimeout(() => {
- testGlEmojiElement(
- glEmojiElement,
- emojiFixtureMap[emojiKey].name,
- emojiFixtureMap[emojiKey].uni,
- emojiFixtureMap[emojiKey].moji,
- {
- forceFallback: true,
- },
- );
- done();
- });
+ testGlEmojiElement(
+ glEmojiElement,
+ emojiFixtureMap[emojiKey].name,
+ emojiFixtureMap[emojiKey].unicodeVersion,
+ emojiFixtureMap[emojiKey].moji,
+ {
+ forceFallback: true,
+ },
+ );
});
- it('bomb emoji with sprite fallback readiness', done => {
+ it('bomb emoji with sprite fallback readiness', () => {
const emojiKey = 'bomb';
const markup = glEmojiTag(emojiFixtureMap[emojiKey].name, {
sprite: true,
});
const glEmojiElement = markupToDomElement(markup);
- setTimeout(() => {
- testGlEmojiElement(
- glEmojiElement,
- emojiFixtureMap[emojiKey].name,
- emojiFixtureMap[emojiKey].uni,
- emojiFixtureMap[emojiKey].moji,
- {
- sprite: true,
- },
- );
- done();
- });
+ testGlEmojiElement(
+ glEmojiElement,
+ emojiFixtureMap[emojiKey].name,
+ emojiFixtureMap[emojiKey].unicodeVersion,
+ emojiFixtureMap[emojiKey].moji,
+ {
+ sprite: true,
+ },
+ );
});
- it('bomb emoji with sprite fallback', done => {
+ it('bomb emoji with sprite fallback', () => {
const emojiKey = 'bomb';
const markup = glEmojiTag(emojiFixtureMap[emojiKey].name, {
forceFallback: true,
sprite: true,
});
const glEmojiElement = markupToDomElement(markup);
- setTimeout(() => {
- testGlEmojiElement(
- glEmojiElement,
- emojiFixtureMap[emojiKey].name,
- emojiFixtureMap[emojiKey].uni,
- emojiFixtureMap[emojiKey].moji,
- {
- forceFallback: true,
- sprite: true,
- },
- );
- done();
- });
+ testGlEmojiElement(
+ glEmojiElement,
+ emojiFixtureMap[emojiKey].name,
+ emojiFixtureMap[emojiKey].unicodeVersion,
+ emojiFixtureMap[emojiKey].moji,
+ {
+ forceFallback: true,
+ sprite: true,
+ },
+ );
});
- it('question mark when invalid emoji name given', done => {
+ it('question mark when invalid emoji name given', () => {
const name = 'invalid_emoji';
const emojiKey = 'grey_question';
const markup = glEmojiTag(name);
const glEmojiElement = markupToDomElement(markup);
- setTimeout(() => {
- testGlEmojiElement(
- glEmojiElement,
- emojiFixtureMap[emojiKey].name,
- emojiFixtureMap[emojiKey].uni,
- emojiFixtureMap[emojiKey].moji,
- );
- done();
- });
+ testGlEmojiElement(
+ glEmojiElement,
+ emojiFixtureMap[emojiKey].name,
+ emojiFixtureMap[emojiKey].unicodeVersion,
+ emojiFixtureMap[emojiKey].moji,
+ );
});
- it('question mark with image fallback when invalid emoji name given', done => {
+ it('question mark with image fallback when invalid emoji name given', () => {
const name = 'invalid_emoji';
const emojiKey = 'grey_question';
const markup = glEmojiTag(name, {
forceFallback: true,
});
const glEmojiElement = markupToDomElement(markup);
- setTimeout(() => {
- testGlEmojiElement(
- glEmojiElement,
- emojiFixtureMap[emojiKey].name,
- emojiFixtureMap[emojiKey].uni,
- emojiFixtureMap[emojiKey].moji,
- {
- forceFallback: true,
- },
- );
- done();
- });
+ testGlEmojiElement(
+ glEmojiElement,
+ emojiFixtureMap[emojiKey].name,
+ emojiFixtureMap[emojiKey].unicodeVersion,
+ emojiFixtureMap[emojiKey].moji,
+ {
+ forceFallback: true,
+ },
+ );
});
});
@@ -434,7 +389,7 @@ describe('gl_emoji', () => {
const isSupported = isEmojiUnicodeSupported(
unicodeSupportMap,
emojiFixtureMap[emojiKey].moji,
- emojiFixtureMap[emojiKey].uni,
+ emojiFixtureMap[emojiKey].unicodeVersion,
);
expect(isSupported).toBeTruthy();
@@ -446,7 +401,7 @@ describe('gl_emoji', () => {
const isSupported = isEmojiUnicodeSupported(
unicodeSupportMap,
emojiFixtureMap[emojiKey].moji,
- emojiFixtureMap[emojiKey].uni,
+ emojiFixtureMap[emojiKey].unicodeVersion,
);
expect(isSupported).toBeFalsy();
@@ -460,7 +415,7 @@ describe('gl_emoji', () => {
const isSupported = isEmojiUnicodeSupported(
unicodeSupportMap,
emojiFixtureMap[emojiKey].moji,
- emojiFixtureMap[emojiKey].uni,
+ emojiFixtureMap[emojiKey].unicodeVersion,
);
expect(isSupported).toBeFalsy();
@@ -486,7 +441,7 @@ describe('gl_emoji', () => {
const isSupported = isEmojiUnicodeSupported(
unicodeSupportMap,
emojiFixtureMap[emojiKey].moji,
- emojiFixtureMap[emojiKey].uni,
+ emojiFixtureMap[emojiKey].unicodeVersion,
);
expect(isSupported).toBeFalsy();
@@ -504,7 +459,7 @@ describe('gl_emoji', () => {
const isSupported = isEmojiUnicodeSupported(
unicodeSupportMap,
emojiFixtureMap[emojiKey].moji,
- emojiFixtureMap[emojiKey].uni,
+ emojiFixtureMap[emojiKey].unicodeVersion,
);
expect(isSupported).toBeTruthy();
@@ -522,7 +477,7 @@ describe('gl_emoji', () => {
const isSupported = isEmojiUnicodeSupported(
unicodeSupportMap,
emojiFixtureMap[emojiKey].moji,
- emojiFixtureMap[emojiKey].uni,
+ emojiFixtureMap[emojiKey].unicodeVersion,
);
expect(isSupported).toBeFalsy();
diff --git a/spec/javascripts/fixtures/environments/table.html.haml b/spec/javascripts/fixtures/environments/table.html.haml
deleted file mode 100644
index 59edc0396d2..00000000000
--- a/spec/javascripts/fixtures/environments/table.html.haml
+++ /dev/null
@@ -1,11 +0,0 @@
-%table
- %thead
- %tr
- %th Environment
- %th Last deployment
- %th Job
- %th Commit
- %th
- %th
- %tbody
- %tr#environment-row
diff --git a/spec/javascripts/fixtures/static/environments/table.html b/spec/javascripts/fixtures/static/environments/table.html
new file mode 100644
index 00000000000..417af564ff1
--- /dev/null
+++ b/spec/javascripts/fixtures/static/environments/table.html
@@ -0,0 +1,15 @@
+<table>
+<thead>
+<tr>
+<th>Environment</th>
+<th>Last deployment</th>
+<th>Job</th>
+<th>Commit</th>
+<th></th>
+<th></th>
+</tr>
+</thead>
+<tbody>
+<tr id="environment-row"></tr>
+</tbody>
+</table>
diff --git a/spec/javascripts/fixtures/static_fixtures.rb b/spec/javascripts/fixtures/static_fixtures.rb
deleted file mode 100644
index cb4b90cdca5..00000000000
--- a/spec/javascripts/fixtures/static_fixtures.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'spec_helper'
-
-describe ApplicationController, '(Static JavaScript fixtures)', type: :controller do
- include JavaScriptFixturesHelpers
-
- Dir.glob('{,ee/}spec/javascripts/fixtures/**/*.haml').map do |file_path|
- it "static/#{file_path.sub(%r{\A(ee/)?spec/javascripts/fixtures/}, '').sub(/\.haml\z/, '')}" do |example|
- store_frontend_fixture(render_template(file_path), example.description)
- end
- end
-
- private
-
- def render_template(template_file_name)
- controller = ApplicationController.new
- controller.prepend_view_path(File.dirname(template_file_name))
- controller.render_to_string(template: File.basename(template_file_name), layout: false)
- end
-end
diff --git a/spec/javascripts/notes_spec.js b/spec/javascripts/notes_spec.js
index 3d2c617e479..394e3343be6 100644
--- a/spec/javascripts/notes_spec.js
+++ b/spec/javascripts/notes_spec.js
@@ -670,7 +670,7 @@ describe('Notes', function() {
done();
})
.catch(done.fail);
- });
+ }, 2000);
});
describe('postComment with Slash commands', () => {
diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb
index fdb43d1221a..088f8acf554 100644
--- a/spec/lib/gitlab/git/repository_spec.rb
+++ b/spec/lib/gitlab/git/repository_spec.rb
@@ -152,14 +152,13 @@ describe Gitlab::Git::Repository, :seed_helper do
let(:append_sha) { true }
let(:ref) { 'master' }
let(:format) { nil }
- let(:path) { nil }
let(:expected_extension) { 'tar.gz' }
let(:expected_filename) { "#{expected_prefix}.#{expected_extension}" }
let(:expected_path) { File.join(storage_path, cache_key, expected_filename) }
let(:expected_prefix) { "gitlab-git-test-#{ref}-#{SeedRepo::LastCommit::ID}" }
- subject(:metadata) { repository.archive_metadata(ref, storage_path, 'gitlab-git-test', format, append_sha: append_sha, path: path) }
+ subject(:metadata) { repository.archive_metadata(ref, storage_path, 'gitlab-git-test', format, append_sha: append_sha) }
it 'sets CommitId to the commit SHA' do
expect(metadata['CommitId']).to eq(SeedRepo::LastCommit::ID)
@@ -177,14 +176,6 @@ describe Gitlab::Git::Repository, :seed_helper do
expect(metadata['ArchivePath']).to eq(expected_path)
end
- context 'path is set' do
- let(:path) { 'foo/bar' }
-
- it 'appends the path to the prefix' do
- expect(metadata['ArchivePrefix']).to eq("#{expected_prefix}-foo-bar")
- end
- end
-
context 'append_sha varies archive path and filename' do
where(:append_sha, :ref, :expected_prefix) do
sha = SeedRepo::LastCommit::ID
@@ -531,6 +522,13 @@ describe Gitlab::Git::Repository, :seed_helper do
it 'has valid commit ids as keys' do
expect(subject.keys).to all( match(Commit::COMMIT_SHA_PATTERN) )
end
+
+ it 'does not error when dereferenced_target is nil' do
+ blob_id = repository.blob_at('master', 'README.md').id
+ repository_rugged.tags.create("refs/tags/blob-tag", blob_id)
+
+ expect { subject }.not_to raise_error
+ end
end
describe '#fetch_repository_as_mirror' do
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index ed557ffd4e3..54369ff75f4 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -223,6 +223,7 @@ project:
- packagist_service
- pivotaltracker_service
- prometheus_service
+- hipchat_service
- flowdock_service
- assembla_service
- asana_service
diff --git a/spec/lib/gitlab/import_export/project.json b/spec/lib/gitlab/import_export/project.json
index 773651dd226..4a7accc4c52 100644
--- a/spec/lib/gitlab/import_export/project.json
+++ b/spec/lib/gitlab/import_export/project.json
@@ -6795,6 +6795,28 @@
"wiki_page_events": true
},
{
+ "id": 93,
+ "title": "HipChat",
+ "project_id": 5,
+ "created_at": "2016-06-14T15:01:51.219Z",
+ "updated_at": "2016-06-14T15:01:51.219Z",
+ "active": false,
+ "properties": {
+ "notify_only_broken_pipelines": true
+ },
+ "template": false,
+ "push_events": true,
+ "issues_events": true,
+ "merge_requests_events": true,
+ "tag_push_events": true,
+ "note_events": true,
+ "pipeline_events": true,
+ "type": "HipchatService",
+ "category": "common",
+ "default": false,
+ "wiki_page_events": true
+ },
+ {
"id": 91,
"title": "Flowdock",
"project_id": 5,
diff --git a/spec/lib/gitlab/kubernetes/namespace_spec.rb b/spec/lib/gitlab/kubernetes/namespace_spec.rb
index e1c35c355f4..e91a755aa03 100644
--- a/spec/lib/gitlab/kubernetes/namespace_spec.rb
+++ b/spec/lib/gitlab/kubernetes/namespace_spec.rb
@@ -62,5 +62,32 @@ describe Gitlab::Kubernetes::Namespace do
subject.ensure_exists!
end
+
+ context 'when client errors' do
+ let(:exception) { Kubeclient::HttpError.new(500, 'system failure', nil) }
+
+ before do
+ allow(client).to receive(:get_namespace).with(name).once.and_raise(exception)
+ end
+
+ it 'raises the exception' do
+ expect { subject.ensure_exists! }.to raise_error(exception)
+ end
+
+ it 'logs the error' do
+ expect(subject.send(:logger)).to receive(:error).with(
+ hash_including(
+ exception: 'Kubeclient::HttpError',
+ status_code: 500,
+ namespace: 'a_namespace',
+ class_name: 'Gitlab::Kubernetes::Namespace',
+ event: :failed_to_create_namespace,
+ message: 'system failure'
+ )
+ )
+
+ expect { subject.ensure_exists! }.to raise_error(exception)
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb b/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
index 3d4240fa4ba..8675d8691c8 100644
--- a/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
+++ b/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
@@ -47,12 +47,22 @@ describe Gitlab::LegacyGithubImport::ProjectCreator do
end
context 'when GitHub project is public' do
- it 'sets project visibility to public' do
+ it 'sets project visibility to namespace visibility level' do
repo.private = false
-
project = service.execute
- expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::PUBLIC)
+ expect(project.visibility_level).to eq(namespace.visibility_level)
+ end
+
+ context 'when importing into a user namespace' do
+ subject(:service) { described_class.new(repo, repo.name, user.namespace, user, github_access_token: 'asdffg') }
+
+ it 'sets project visibility to user namespace visibility level' do
+ repo.private = false
+ project = service.execute
+
+ expect(project.visibility_level).to eq(user.namespace.visibility_level)
+ end
end
end
diff --git a/spec/lib/gitlab/path_regex_spec.rb b/spec/lib/gitlab/path_regex_spec.rb
index 71e69a0d418..857862a2abd 100644
--- a/spec/lib/gitlab/path_regex_spec.rb
+++ b/spec/lib/gitlab/path_regex_spec.rb
@@ -107,7 +107,7 @@ describe Gitlab::PathRegex do
git = Gitlab.config.git.bin_path
tracked = `cd #{Rails.root} && #{git} ls-files public`
.split("\n")
- .map { |entry| entry.start_with?('public/-/') ? '-' : entry.gsub('public/', '') }
+ .map { |entry| entry.gsub('public/', '') }
.uniq
tracked + %w(assets uploads)
end
diff --git a/spec/lib/gitlab/url_blocker_spec.rb b/spec/lib/gitlab/url_blocker_spec.rb
index 62970bd8cb6..445a56ab0d8 100644
--- a/spec/lib/gitlab/url_blocker_spec.rb
+++ b/spec/lib/gitlab/url_blocker_spec.rb
@@ -23,10 +23,10 @@ describe Gitlab::UrlBlocker do
expect(described_class.blocked_url?('https://gitlab.com:25/foo/foo.git', ports: ports)).to be true
end
- it 'returns true for bad protocol' do
- expect(described_class.blocked_url?('https://gitlab.com/foo/foo.git', protocols: ['https'])).to be false
+ it 'returns true for bad scheme' do
+ expect(described_class.blocked_url?('https://gitlab.com/foo/foo.git', schemes: ['https'])).to be false
expect(described_class.blocked_url?('https://gitlab.com/foo/foo.git')).to be false
- expect(described_class.blocked_url?('https://gitlab.com/foo/foo.git', protocols: ['http'])).to be true
+ expect(described_class.blocked_url?('https://gitlab.com/foo/foo.git', schemes: ['http'])).to be true
end
it 'returns true for bad protocol on configured web/SSH host and ports' do
diff --git a/spec/lib/gitlab/visibility_level_spec.rb b/spec/lib/gitlab/visibility_level_spec.rb
index 2c1146ceff5..0a170a157fe 100644
--- a/spec/lib/gitlab/visibility_level_spec.rb
+++ b/spec/lib/gitlab/visibility_level_spec.rb
@@ -85,4 +85,12 @@ describe Gitlab::VisibilityLevel do
.to eq(described_class::PRIVATE)
end
end
+
+ describe '.valid_level?' do
+ it 'returns true when visibility is valid' do
+ expect(described_class.valid_level?(described_class::PRIVATE)).to be_truthy
+ expect(described_class.valid_level?(described_class::INTERNAL)).to be_truthy
+ expect(described_class.valid_level?(described_class::PUBLIC)).to be_truthy
+ end
+ end
end
diff --git a/spec/lib/gitlab/workhorse_spec.rb b/spec/lib/gitlab/workhorse_spec.rb
index f8ce399287a..d02d9be5c5c 100644
--- a/spec/lib/gitlab/workhorse_spec.rb
+++ b/spec/lib/gitlab/workhorse_spec.rb
@@ -16,12 +16,20 @@ describe Gitlab::Workhorse do
let(:ref) { 'master' }
let(:format) { 'zip' }
let(:storage_path) { Gitlab.config.gitlab.repository_downloads_path }
- let(:path) { 'some/path' }
- let(:metadata) { repository.archive_metadata(ref, storage_path, format, append_sha: nil, path: path) }
+ let(:base_params) { repository.archive_metadata(ref, storage_path, format, append_sha: nil) }
+ let(:gitaly_params) do
+ base_params.merge(
+ 'GitalyServer' => {
+ 'address' => Gitlab::GitalyClient.address(project.repository_storage),
+ 'token' => Gitlab::GitalyClient.token(project.repository_storage)
+ },
+ 'GitalyRepository' => repository.gitaly_repository.to_h.deep_stringify_keys
+ )
+ end
let(:cache_disabled) { false }
subject do
- described_class.send_git_archive(repository, ref: ref, format: format, append_sha: nil, path: path)
+ described_class.send_git_archive(repository, ref: ref, format: format, append_sha: nil)
end
before do
@@ -33,22 +41,7 @@ describe Gitlab::Workhorse do
expect(key).to eq('Gitlab-Workhorse-Send-Data')
expect(command).to eq('git-archive')
- expect(params).to eq({
- 'GitalyServer' => {
- address: Gitlab::GitalyClient.address(project.repository_storage),
- token: Gitlab::GitalyClient.token(project.repository_storage)
- },
- 'ArchivePath' => metadata['ArchivePath'],
- 'GetArchiveRequest' => Base64.urlsafe_encode64(
- Gitaly::GetArchiveRequest.new(
- repository: repository.gitaly_repository,
- commit_id: metadata['CommitId'],
- prefix: metadata['ArchivePrefix'],
- format: Gitaly::GetArchiveRequest::Format::ZIP,
- path: path
- ).to_proto
- )
- }.deep_stringify_keys)
+ expect(params).to include(gitaly_params)
end
context 'when archive caching is disabled' do
diff --git a/spec/models/project_services/hipchat_service_spec.rb b/spec/models/project_services/hipchat_service_spec.rb
new file mode 100644
index 00000000000..fd9e33c1781
--- /dev/null
+++ b/spec/models/project_services/hipchat_service_spec.rb
@@ -0,0 +1,410 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe HipchatService do
+ describe "Associations" do
+ it { is_expected.to belong_to :project }
+ it { is_expected.to have_one :service_hook }
+ end
+
+ describe 'Validations' do
+ context 'when service is active' do
+ before do
+ subject.active = true
+ end
+
+ it { is_expected.to validate_presence_of(:token) }
+ end
+
+ context 'when service is inactive' do
+ before do
+ subject.active = false
+ end
+
+ it { is_expected.not_to validate_presence_of(:token) }
+ end
+ end
+
+ describe "Execute" do
+ let(:hipchat) { described_class.new }
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
+ let(:api_url) { 'https://hipchat.example.com/v2/room/123456/notification?auth_token=verySecret' }
+ let(:project_name) { project.full_name.gsub(/\s/, '') }
+ let(:token) { 'verySecret' }
+ let(:server_url) { 'https://hipchat.example.com'}
+ let(:push_sample_data) do
+ Gitlab::DataBuilder::Push.build_sample(project, user)
+ end
+
+ before do
+ allow(hipchat).to receive_messages(
+ project_id: project.id,
+ project: project,
+ room: 123456,
+ server: server_url,
+ token: token
+ )
+ WebMock.stub_request(:post, api_url)
+ end
+
+ it 'tests and return errors' do
+ allow(hipchat).to receive(:execute).and_raise(StandardError, 'no such room')
+ result = hipchat.test(push_sample_data)
+
+ expect(result[:success]).to be_falsey
+ expect(result[:result].to_s).to eq('no such room')
+ end
+
+ it 'uses v1 if version is provided' do
+ allow(hipchat).to receive(:api_version).and_return('v1')
+ expect(HipChat::Client).to receive(:new).with(
+ token,
+ api_version: 'v1',
+ server_url: server_url
+ ).and_return(double(:hipchat_service).as_null_object)
+ hipchat.execute(push_sample_data)
+ end
+
+ it 'uses v2 as the version when nothing is provided' do
+ allow(hipchat).to receive(:api_version).and_return('')
+ expect(HipChat::Client).to receive(:new).with(
+ token,
+ api_version: 'v2',
+ server_url: server_url
+ ).and_return(double(:hipchat_service).as_null_object)
+ hipchat.execute(push_sample_data)
+ end
+
+ context 'push events' do
+ it "calls Hipchat API for push events" do
+ hipchat.execute(push_sample_data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+ end
+
+ it "creates a push message" do
+ message = hipchat.send(:create_push_message, push_sample_data)
+
+ push_sample_data[:object_attributes]
+ branch = push_sample_data[:ref].gsub('refs/heads/', '')
+ expect(message).to include("#{user.name} pushed to branch " \
+ "<a href=\"#{project.web_url}/commits/#{branch}\">#{branch}</a> of " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>")
+ end
+ end
+
+ context 'tag_push events' do
+ let(:push_sample_data) do
+ Gitlab::DataBuilder::Push.build(
+ project,
+ user,
+ Gitlab::Git::BLANK_SHA,
+ '1' * 40,
+ 'refs/tags/test',
+ [])
+ end
+
+ it "calls Hipchat API for tag push events" do
+ hipchat.execute(push_sample_data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+ end
+
+ it "creates a tag push message" do
+ message = hipchat.send(:create_push_message, push_sample_data)
+
+ push_sample_data[:object_attributes]
+ expect(message).to eq("#{user.name} pushed new tag " \
+ "<a href=\"#{project.web_url}/commits/test\">test</a> to " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>\n")
+ end
+ end
+
+ context 'issue events' do
+ let(:issue) { create(:issue, title: 'Awesome issue', description: '**please** fix') }
+ let(:issue_service) { Issues::CreateService.new(project, user) }
+ let(:issues_sample_data) { issue_service.hook_data(issue, 'open') }
+
+ it "calls Hipchat API for issue events" do
+ hipchat.execute(issues_sample_data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+ end
+
+ it "creates an issue message" do
+ message = hipchat.send(:create_issue_message, issues_sample_data)
+
+ obj_attr = issues_sample_data[:object_attributes]
+ expect(message).to eq("#{user.name} opened " \
+ "<a href=\"#{obj_attr[:url]}\">issue ##{obj_attr["iid"]}</a> in " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>: " \
+ "<b>Awesome issue</b>" \
+ "<pre><strong>please</strong> fix</pre>")
+ end
+ end
+
+ context 'merge request events' do
+ let(:merge_request) { create(:merge_request, description: '**please** fix', title: 'Awesome merge request', target_project: project, source_project: project) }
+ let(:merge_service) { MergeRequests::CreateService.new(project, user) }
+ let(:merge_sample_data) { merge_service.hook_data(merge_request, 'open') }
+
+ it "calls Hipchat API for merge requests events" do
+ hipchat.execute(merge_sample_data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+ end
+
+ it "creates a merge request message" do
+ message = hipchat.send(:create_merge_request_message,
+ merge_sample_data)
+
+ obj_attr = merge_sample_data[:object_attributes]
+ expect(message).to eq("#{user.name} opened " \
+ "<a href=\"#{obj_attr[:url]}\">merge request !#{obj_attr["iid"]}</a> in " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>: " \
+ "<b>Awesome merge request</b>" \
+ "<pre><strong>please</strong> fix</pre>")
+ end
+ end
+
+ context "Note events" do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository, creator: user) }
+
+ context 'when commit comment event triggered' do
+ let(:commit_note) do
+ create(:note_on_commit, author: user, project: project,
+ commit_id: project.repository.commit.id,
+ note: 'a comment on a commit')
+ end
+
+ it "calls Hipchat API for commit comment events" do
+ data = Gitlab::DataBuilder::Note.build(commit_note, user)
+ hipchat.execute(data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+
+ message = hipchat.send(:create_message, data)
+
+ obj_attr = data[:object_attributes]
+ commit_id = Commit.truncate_sha(data[:commit][:id])
+ title = hipchat.send(:format_title, data[:commit][:message])
+
+ expect(message).to eq("#{user.name} commented on " \
+ "<a href=\"#{obj_attr[:url]}\">commit #{commit_id}</a> in " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>: " \
+ "#{title}" \
+ "<pre>a comment on a commit</pre>")
+ end
+ end
+
+ context 'when merge request comment event triggered' do
+ let(:merge_request) do
+ create(:merge_request, source_project: project,
+ target_project: project)
+ end
+
+ let(:merge_request_note) do
+ create(:note_on_merge_request, noteable: merge_request,
+ project: project,
+ note: "merge request **note**")
+ end
+
+ it "calls Hipchat API for merge request comment events" do
+ data = Gitlab::DataBuilder::Note.build(merge_request_note, user)
+ hipchat.execute(data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+
+ message = hipchat.send(:create_message, data)
+
+ obj_attr = data[:object_attributes]
+ merge_id = data[:merge_request]['iid']
+ title = data[:merge_request]['title']
+
+ expect(message).to eq("#{user.name} commented on " \
+ "<a href=\"#{obj_attr[:url]}\">merge request !#{merge_id}</a> in " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>: " \
+ "<b>#{title}</b>" \
+ "<pre>merge request <strong>note</strong></pre>")
+ end
+ end
+
+ context 'when issue comment event triggered' do
+ let(:issue) { create(:issue, project: project) }
+ let(:issue_note) do
+ create(:note_on_issue, noteable: issue, project: project,
+ note: "issue **note**")
+ end
+
+ it "calls Hipchat API for issue comment events" do
+ data = Gitlab::DataBuilder::Note.build(issue_note, user)
+ hipchat.execute(data)
+
+ message = hipchat.send(:create_message, data)
+
+ obj_attr = data[:object_attributes]
+ issue_id = data[:issue]['iid']
+ title = data[:issue]['title']
+
+ expect(message).to eq("#{user.name} commented on " \
+ "<a href=\"#{obj_attr[:url]}\">issue ##{issue_id}</a> in " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>: " \
+ "<b>#{title}</b>" \
+ "<pre>issue <strong>note</strong></pre>")
+ end
+
+ context 'with confidential issue' do
+ before do
+ issue.update!(confidential: true)
+ end
+
+ it 'calls Hipchat API with issue comment' do
+ data = Gitlab::DataBuilder::Note.build(issue_note, user)
+ hipchat.execute(data)
+
+ message = hipchat.send(:create_message, data)
+
+ expect(message).to include("<pre>issue <strong>note</strong></pre>")
+ end
+ end
+ end
+
+ context 'when snippet comment event triggered' do
+ let(:snippet) { create(:project_snippet, project: project) }
+ let(:snippet_note) do
+ create(:note_on_project_snippet, noteable: snippet,
+ project: project,
+ note: "snippet note")
+ end
+
+ it "calls Hipchat API for snippet comment events" do
+ data = Gitlab::DataBuilder::Note.build(snippet_note, user)
+ hipchat.execute(data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+
+ message = hipchat.send(:create_message, data)
+
+ obj_attr = data[:object_attributes]
+ snippet_id = data[:snippet]['id']
+ title = data[:snippet]['title']
+
+ expect(message).to eq("#{user.name} commented on " \
+ "<a href=\"#{obj_attr[:url]}\">snippet ##{snippet_id}</a> in " \
+ "<a href=\"#{project.web_url}\">#{project_name}</a>: " \
+ "<b>#{title}</b>" \
+ "<pre>snippet note</pre>")
+ end
+ end
+ end
+
+ context 'pipeline events' do
+ let(:pipeline) { create(:ci_empty_pipeline, user: create(:user)) }
+ let(:data) { Gitlab::DataBuilder::Pipeline.build(pipeline) }
+
+ context 'for failed' do
+ before do
+ pipeline.drop
+ end
+
+ it "calls Hipchat API" do
+ hipchat.execute(data)
+
+ expect(WebMock).to have_requested(:post, api_url).once
+ end
+
+ it "creates a build message" do
+ message = hipchat.__send__(:create_pipeline_message, data)
+
+ project_url = project.web_url
+ project_name = project.full_name.gsub(/\s/, '')
+ pipeline_attributes = data[:object_attributes]
+ ref = pipeline_attributes[:ref]
+ ref_type = pipeline_attributes[:tag] ? 'tag' : 'branch'
+ duration = pipeline_attributes[:duration]
+ user_name = data[:user][:name]
+
+ expect(message).to eq("<a href=\"#{project_url}\">#{project_name}</a>: " \
+ "Pipeline <a href=\"#{project_url}/pipelines/#{pipeline.id}\">##{pipeline.id}</a> " \
+ "of <a href=\"#{project_url}/commits/#{ref}\">#{ref}</a> #{ref_type} " \
+ "by #{user_name} failed in #{duration} second(s)")
+ end
+ end
+
+ context 'for succeeded' do
+ before do
+ pipeline.succeed
+ end
+
+ it "calls Hipchat API" do
+ hipchat.notify_only_broken_pipelines = false
+ hipchat.execute(data)
+ expect(WebMock).to have_requested(:post, api_url).once
+ end
+
+ it "notifies only broken" do
+ hipchat.notify_only_broken_pipelines = true
+ hipchat.execute(data)
+ expect(WebMock).not_to have_requested(:post, api_url).once
+ end
+ end
+ end
+
+ context "#message_options" do
+ it "is set to the defaults" do
+ expect(hipchat.__send__(:message_options)).to eq({ notify: false, color: 'yellow' })
+ end
+
+ it "sets notify to true" do
+ allow(hipchat).to receive(:notify).and_return('1')
+
+ expect(hipchat.__send__(:message_options)).to eq({ notify: true, color: 'yellow' })
+ end
+
+ it "sets the color" do
+ allow(hipchat).to receive(:color).and_return('red')
+
+ expect(hipchat.__send__(:message_options)).to eq({ notify: false, color: 'red' })
+ end
+
+ context 'with a successful build' do
+ it 'uses the green color' do
+ data = { object_kind: 'pipeline',
+ object_attributes: { status: 'success' } }
+
+ expect(hipchat.__send__(:message_options, data)).to eq({ notify: false, color: 'green' })
+ end
+ end
+
+ context 'with a failed build' do
+ it 'uses the red color' do
+ data = { object_kind: 'pipeline',
+ object_attributes: { status: 'failed' } }
+
+ expect(hipchat.__send__(:message_options, data)).to eq({ notify: false, color: 'red' })
+ end
+ end
+ end
+ end
+
+ context 'with UrlBlocker' do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
+ let(:hipchat) { create(:hipchat_service, project: project, properties: { room: 'test' }) }
+ let(:push_sample_data) { Gitlab::DataBuilder::Push.build_sample(project, user) }
+
+ describe '#execute' do
+ before do
+ hipchat.server = 'http://localhost:9123'
+ end
+
+ it 'raises UrlBlocker for localhost' do
+ expect(Gitlab::UrlBlocker).to receive(:validate!).and_call_original
+ expect { hipchat.execute(push_sample_data) }.to raise_error(Gitlab::HTTP::BlockedUrlError)
+ end
+ end
+ end
+end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 7222580e115..9f6a0b53281 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -44,6 +44,7 @@ describe Project do
it { is_expected.to have_one(:pipelines_email_service) }
it { is_expected.to have_one(:irker_service) }
it { is_expected.to have_one(:pivotaltracker_service) }
+ it { is_expected.to have_one(:hipchat_service) }
it { is_expected.to have_one(:flowdock_service) }
it { is_expected.to have_one(:assembla_service) }
it { is_expected.to have_one(:slack_slash_commands_service) }
@@ -2722,7 +2723,7 @@ describe Project do
end
describe '#any_lfs_file_locks?', :request_store do
- let!(:project) { create(:project) }
+ set(:project) { create(:project) }
it 'returns false when there are no LFS file locks' do
expect(project.any_lfs_file_locks?).to be_falsey
@@ -3160,53 +3161,6 @@ describe Project do
expect(projects).to eq([public_project])
end
end
-
- context 'with requested visibility levels' do
- set(:internal_project) { create(:project, :internal, :repository) }
- set(:private_project_2) { create(:project, :private) }
-
- context 'with admin user' do
- set(:admin) { create(:admin) }
-
- it 'returns all projects' do
- projects = described_class.all.public_or_visible_to_user(admin, [])
-
- expect(projects).to match_array([public_project, private_project, private_project_2, internal_project])
- end
-
- it 'returns all public and private projects' do
- projects = described_class.all.public_or_visible_to_user(admin, [Gitlab::VisibilityLevel::PUBLIC, Gitlab::VisibilityLevel::PRIVATE])
-
- expect(projects).to match_array([public_project, private_project, private_project_2])
- end
-
- it 'returns all private projects' do
- projects = described_class.all.public_or_visible_to_user(admin, [Gitlab::VisibilityLevel::PRIVATE])
-
- expect(projects).to match_array([private_project, private_project_2])
- end
- end
-
- context 'with regular user' do
- it 'returns authorized projects' do
- projects = described_class.all.public_or_visible_to_user(user, [])
-
- expect(projects).to match_array([public_project, private_project, internal_project])
- end
-
- it "returns user's public and private projects" do
- projects = described_class.all.public_or_visible_to_user(user, [Gitlab::VisibilityLevel::PUBLIC, Gitlab::VisibilityLevel::PRIVATE])
-
- expect(projects).to match_array([public_project, private_project])
- end
-
- it 'returns one private project' do
- projects = described_class.all.public_or_visible_to_user(user, [Gitlab::VisibilityLevel::PRIVATE])
-
- expect(projects).to eq([private_project])
- end
- end
- end
end
describe '.with_feature_available_for_user' do
diff --git a/spec/requests/api/commit_statuses_spec.rb b/spec/requests/api/commit_statuses_spec.rb
index 9388343c392..b5e45f99109 100644
--- a/spec/requests/api/commit_statuses_spec.rb
+++ b/spec/requests/api/commit_statuses_spec.rb
@@ -306,7 +306,22 @@ describe API::CommitStatuses do
it 'responds with bad request status and validation errors' do
expect(response).to have_gitlab_http_status(400)
expect(json_response['message']['target_url'])
- .to include 'is blocked: Only allowed protocols are http, https'
+ .to include 'is blocked: Only allowed schemes are http, https'
+ end
+ end
+
+ context 'when target URL is an unsupported scheme' do
+ before do
+ post api(post_url, developer), params: {
+ state: 'pending',
+ target_url: 'git://example.com'
+ }
+ end
+
+ it 'responds with bad request status and validation errors' do
+ expect(response).to have_gitlab_http_status(400)
+ expect(json_response['message']['target_url'])
+ .to include 'is blocked: Only allowed schemes are http, https'
end
end
end
diff --git a/spec/requests/api/pipelines_spec.rb b/spec/requests/api/pipelines_spec.rb
index 0d46463312b..26158231444 100644
--- a/spec/requests/api/pipelines_spec.rb
+++ b/spec/requests/api/pipelines_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe API::Pipelines do
@@ -493,7 +495,7 @@ describe API::Pipelines do
context 'pipeline created is not created by the developer user' do
let(:api_user) { create(:user) }
- it 'should not return pipeline variables' do
+ it 'does not return pipeline variables' do
subject
expect(response).to have_gitlab_http_status(403)
@@ -502,7 +504,7 @@ describe API::Pipelines do
end
context 'user is not a project member' do
- it 'should not return pipeline variables' do
+ it 'does not return pipeline variables' do
get api("/projects/#{project.id}/pipelines/#{pipeline.id}/variables", non_member)
expect(response).to have_gitlab_http_status(404)
diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb
index 0fdd675aa01..d9023036534 100644
--- a/spec/serializers/pipeline_serializer_spec.rb
+++ b/spec/serializers/pipeline_serializer_spec.rb
@@ -157,7 +157,8 @@ describe PipelineSerializer do
it 'verifies number of queries', :request_store do
recorded = ActiveRecord::QueryRecorder.new { subject }
- expect(recorded.count).to be_within(2).of(31)
+ expected_queries = Gitlab.ee? ? 38 : 31
+ expect(recorded.count).to be_within(2).of(expected_queries)
expect(recorded.cached_count).to eq(0)
end
end
@@ -176,7 +177,8 @@ describe PipelineSerializer do
# pipeline. With the same ref this check is cached but if refs are
# different then there is an extra query per ref
# https://gitlab.com/gitlab-org/gitlab-ce/issues/46368
- expect(recorded.count).to be_within(2).of(38)
+ expected_queries = Gitlab.ee? ? 44 : 38
+ expect(recorded.count).to be_within(2).of(expected_queries)
expect(recorded.cached_count).to eq(0)
end
end
diff --git a/spec/services/ci/retry_build_service_spec.rb b/spec/services/ci/retry_build_service_spec.rb
index 87185891470..17e2b17a499 100644
--- a/spec/services/ci/retry_build_service_spec.rb
+++ b/spec/services/ci/retry_build_service_spec.rb
@@ -35,7 +35,7 @@ describe Ci::RetryBuildService do
commit_id deployment erased_by_id project_id
runner_id tag_taggings taggings tags trigger_request_id
user_id auto_canceled_by_id retried failure_reason
- artifacts_file_store artifacts_metadata_store
+ sourced_pipelines artifacts_file_store artifacts_metadata_store
metadata runner_session trace_chunks].freeze
shared_examples 'build duplication' do
@@ -95,7 +95,8 @@ describe Ci::RetryBuildService do
end
it 'has correct number of known attributes' do
- known_accessors = CLONE_ACCESSORS + REJECT_ACCESSORS + IGNORE_ACCESSORS
+ processed_accessors = CLONE_ACCESSORS + REJECT_ACCESSORS
+ known_accessors = processed_accessors + IGNORE_ACCESSORS
# :tag_list is a special case, this accessor does not exist
# in reflected associations, comes from `act_as_taggable` and
@@ -108,7 +109,8 @@ describe Ci::RetryBuildService do
current_accessors.uniq!
- expect(known_accessors).to contain_exactly(*current_accessors)
+ expect(current_accessors).to include(*processed_accessors)
+ expect(known_accessors).to include(*current_accessors)
end
end
diff --git a/spec/services/groups/create_service_spec.rb b/spec/services/groups/create_service_spec.rb
index fe6a8691ae0..cd061afbfd5 100644
--- a/spec/services/groups/create_service_spec.rb
+++ b/spec/services/groups/create_service_spec.rb
@@ -88,6 +88,17 @@ describe Groups::CreateService, '#execute' do
end
end
+ describe "when visibility level is passed as a string" do
+ let(:service) { described_class.new(user, group_params) }
+ let(:group_params) { { path: 'group_path', visibility: 'public' } }
+
+ it "assigns the correct visibility level" do
+ group = service.execute
+
+ expect(group.visibility_level).to eq(Gitlab::VisibilityLevel::PUBLIC)
+ end
+ end
+
describe 'creating a mattermost team' do
let!(:params) { group_params.merge(create_chat_team: "true") }
let!(:service) { described_class.new(user, params) }
diff --git a/spec/services/merge_requests/push_options_handler_service_spec.rb b/spec/services/merge_requests/push_options_handler_service_spec.rb
index 686b4b49f24..f7a39bb42d5 100644
--- a/spec/services/merge_requests/push_options_handler_service_spec.rb
+++ b/spec/services/merge_requests/push_options_handler_service_spec.rb
@@ -38,7 +38,7 @@ describe MergeRequests::PushOptionsHandlerService do
it 'assigns the MR to the user' do
service.execute
- expect(last_mr.assignee).to eq(user)
+ expect(last_mr.assignees).to contain_exactly(user)
end
context 'when project has been forked' do
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 5ed06df7072..7063ca9ac14 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -269,13 +269,11 @@ describe MergeRequests::RefreshService do
end
end
- context 'push to origin repo source branch when an MR was reopened' do
+ context 'push to origin repo source branch' do
let(:refresh_service) { service.new(@project, @user) }
let(:notification_service) { spy('notification_service') }
before do
- @merge_request.update(state: :reopened)
-
allow(refresh_service).to receive(:execute_hooks)
allow(NotificationService).to receive(:new) { notification_service }
refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb
index 0525899ebfa..15aea97ff29 100644
--- a/spec/services/merge_requests/update_service_spec.rb
+++ b/spec/services/merge_requests/update_service_spec.rb
@@ -405,7 +405,7 @@ describe MergeRequests::UpdateService, :mailer do
end
end
- context 'when the issue is relabeled' do
+ context 'when the merge request is relabeled' do
let!(:non_subscriber) { create(:user) }
let!(:subscriber) { create(:user) { |u| label.toggle_subscription(u, project) } }
diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb
index c450f89c3cb..95a131e8c86 100644
--- a/spec/services/quick_actions/interpret_service_spec.rb
+++ b/spec/services/quick_actions/interpret_service_spec.rb
@@ -529,7 +529,7 @@ describe QuickActions::InterpretService do
let(:issuable) { issue }
end
- it_behaves_like 'assign command' do
+ it_behaves_like 'assign command', :quarantine do
let(:content) { "/assign @#{developer.username} @#{developer2.username}" }
let(:issuable) { merge_request }
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 953cf1519bb..60db3e1bc46 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -100,8 +100,8 @@ RSpec.configure do |config|
config.include PolicyHelpers, type: :policy
if ENV['CI']
- # This includes the first try, i.e. tests will be run 2 times before failing.
- config.default_retry_count = 2
+ # This includes the first try, i.e. tests will be run 4 times before failing.
+ config.default_retry_count = 4
config.reporter.register_listener(
RspecFlaky::Listener.new,
:example_passed,
diff --git a/spec/support/features/discussion_comments_shared_example.rb b/spec/support/features/discussion_comments_shared_example.rb
index 5b79c40f27b..542f533d590 100644
--- a/spec/support/features/discussion_comments_shared_example.rb
+++ b/spec/support/features/discussion_comments_shared_example.rb
@@ -7,7 +7,7 @@ shared_examples 'discussion comments' do |resource_name|
let(:close_selector) { "#{form_selector} .btn-comment-and-close" }
let(:comments_selector) { '.timeline > .note.timeline-entry' }
- it 'clicking "Comment" will post a comment' do
+ it 'clicking "Comment" will post a comment', :quarantine do
expect(page).to have_selector toggle_selector
find("#{form_selector} .note-textarea").send_keys('a')
diff --git a/spec/support/helpers/stub_configuration.rb b/spec/support/helpers/stub_configuration.rb
index cfa9151b2d7..3e507fb133e 100644
--- a/spec/support/helpers/stub_configuration.rb
+++ b/spec/support/helpers/stub_configuration.rb
@@ -120,3 +120,6 @@ module StubConfiguration
end
end
end
+
+require_relative '../../../ee/spec/support/helpers/ee/stub_configuration' if
+ Dir.exist?("#{__dir__}/../../../ee")
diff --git a/spec/support/helpers/stub_object_storage.rb b/spec/support/helpers/stub_object_storage.rb
index 30c8477f16a..d31f9908714 100644
--- a/spec/support/helpers/stub_object_storage.rb
+++ b/spec/support/helpers/stub_object_storage.rb
@@ -73,3 +73,6 @@ module StubObjectStorage
EOS
end
end
+
+require_relative '../../../ee/spec/support/helpers/ee/stub_object_storage' if
+ Dir.exist?("#{__dir__}/../../../ee")
diff --git a/spec/support/shared_examples/dirty_submit_form_shared_examples.rb b/spec/support/shared_examples/dirty_submit_form_shared_examples.rb
index 52a2ee49495..4e45e2921e7 100644
--- a/spec/support/shared_examples/dirty_submit_form_shared_examples.rb
+++ b/spec/support/shared_examples/dirty_submit_form_shared_examples.rb
@@ -1,18 +1,17 @@
shared_examples 'dirty submit form' do |selector_args|
selectors = selector_args.is_a?(Array) ? selector_args : [selector_args]
- def expect_disabled_state(form, submit, is_disabled = true)
+ def expect_disabled_state(form, submit_selector, is_disabled = true)
disabled_selector = is_disabled == true ? '[disabled]' : ':not([disabled])'
- form.find(".js-dirty-submit#{disabled_selector}", match: :first)
-
- expect(submit.disabled?).to be is_disabled
+ form.find("#{submit_selector}#{disabled_selector}")
end
selectors.each do |selector|
it "disables #{selector[:form]} submit until there are changes on #{selector[:input]}", :js do
form = find(selector[:form])
- submit = form.first('.js-dirty-submit')
+ submit_selector = selector[:submit] || 'input[type="submit"]'
+ submit = form.first(submit_selector)
input = form.first(selector[:input])
is_radio = input[:type] == 'radio'
is_checkbox = input[:type] == 'checkbox'
@@ -22,15 +21,14 @@ shared_examples 'dirty submit form' do |selector_args|
original_checkable = input if is_checkbox
expect(submit.disabled?).to be true
- expect(input.checked?).to be false
is_checkable ? input.click : input.set("#{original_value} changes")
- expect_disabled_state(form, submit, false)
+ expect_disabled_state(form, submit_selector, false)
is_checkable ? original_checkable.click : input.set(original_value)
- expect_disabled_state(form, submit)
+ expect_disabled_state(form, submit_selector)
end
end
end
diff --git a/spec/support/shared_examples/services/base_helm_service_shared_examples.rb b/spec/support/shared_examples/services/base_helm_service_shared_examples.rb
index 78a8e49fd76..fa76b95f768 100644
--- a/spec/support/shared_examples/services/base_helm_service_shared_examples.rb
+++ b/spec/support/shared_examples/services/base_helm_service_shared_examples.rb
@@ -20,7 +20,7 @@ shared_examples 'logs kubernetes errors' do
end
it 'logs into kubernetes.log and Sentry' do
- expect(service.send(:logger)).to receive(:error).with(logger_hash)
+ expect(service.send(:logger)).to receive(:error).with(hash_including(logger_hash))
expect(Gitlab::Sentry).to receive(:track_acceptable_exception).with(
error,
diff --git a/spec/support/shared_examples/url_validator_examples.rb b/spec/support/shared_examples/url_validator_examples.rb
index 1f7e2f7ff79..25277ccd9aa 100644
--- a/spec/support/shared_examples/url_validator_examples.rb
+++ b/spec/support/shared_examples/url_validator_examples.rb
@@ -1,15 +1,15 @@
-RSpec.shared_examples 'url validator examples' do |protocols|
+RSpec.shared_examples 'url validator examples' do |schemes|
let(:validator) { described_class.new(attributes: [:link_url], **options) }
let!(:badge) { build(:badge, link_url: 'http://www.example.com') }
- subject { validator.validate_each(badge, :link_url, badge.link_url) }
+ subject { validator.validate(badge) }
- describe '#validates_each' do
+ describe '#validate' do
context 'with no options' do
let(:options) { {} }
- it "allows #{protocols.join(',')} protocols by default" do
- expect(validator.send(:default_options)[:protocols]).to eq protocols
+ it "allows #{schemes.join(',')} schemes by default" do
+ expect(validator.options[:schemes]).to eq schemes
end
it 'checks that the url structure is valid' do
@@ -17,25 +17,25 @@ RSpec.shared_examples 'url validator examples' do |protocols|
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
end
- context 'with protocols' do
- let(:options) { { protocols: %w[http] } }
+ context 'with schemes' do
+ let(:options) { { schemes: %w(http) } }
- it 'allows urls with the defined protocols' do
+ it 'allows urls with the defined schemes' do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
- it 'add error if the url protocol does not match the selected ones' do
+ it 'add error if the url scheme does not match the selected ones' do
badge.link_url = 'https://www.example.com'
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
end
end
diff --git a/spec/validators/url_validator_spec.rb b/spec/validators/addressable_url_validator_spec.rb
index 1bb42382e8a..387e84b2d04 100644
--- a/spec/validators/url_validator_spec.rb
+++ b/spec/validators/addressable_url_validator_spec.rb
@@ -2,11 +2,11 @@
require 'spec_helper'
-describe UrlValidator do
+describe AddressableUrlValidator do
let!(:badge) { build(:badge, link_url: 'http://www.example.com') }
- subject { validator.validate_each(badge, :link_url, badge.link_url) }
+ subject { validator.validate(badge) }
- include_examples 'url validator examples', described_class::DEFAULT_PROTOCOLS
+ include_examples 'url validator examples', described_class::DEFAULT_OPTIONS[:schemes]
describe 'validations' do
include_context 'invalid urls'
@@ -14,13 +14,13 @@ describe UrlValidator do
let(:validator) { described_class.new(attributes: [:link_url]) }
it 'returns error when url is nil' do
- expect(validator.validate_each(badge, :link_url, nil)).to be_nil
- expect(badge.errors.first[1]).to eq 'must be a valid URL'
+ expect(validator.validate_each(badge, :link_url, nil)).to be_falsey
+ expect(badge.errors.first[1]).to eq validator.options.fetch(:message)
end
it 'returns error when url is empty' do
- expect(validator.validate_each(badge, :link_url, '')).to be_nil
- expect(badge.errors.first[1]).to eq 'must be a valid URL'
+ expect(validator.validate_each(badge, :link_url, '')).to be_falsey
+ expect(badge.errors.first[1]).to eq validator.options.fetch(:message)
end
it 'does not allow urls with CR or LF characters' do
@@ -30,6 +30,17 @@ describe UrlValidator do
end
end
end
+
+ it 'provides all arguments to UrlBlock validate' do
+ expect(Gitlab::UrlBlocker)
+ .to receive(:validate!)
+ .with(badge.link_url, described_class::BLOCKER_VALIDATE_OPTIONS)
+ .and_return(true)
+
+ subject
+
+ expect(badge.errors).to be_empty
+ end
end
context 'by default' do
@@ -40,7 +51,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
it 'does not block urls pointing to the local network' do
@@ -48,7 +59,23 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
+ end
+
+ it 'does block nil urls' do
+ badge.link_url = nil
+
+ subject
+
+ expect(badge.errors).to be_present
+ end
+
+ it 'does block blank urls' do
+ badge.link_url = '\n\r \n'
+
+ subject
+
+ expect(badge.errors).to be_present
end
it 'strips urls' do
@@ -67,6 +94,40 @@ describe UrlValidator do
end
end
+ context 'when message is set' do
+ let(:message) { 'is blocked: test message' }
+ let(:validator) { described_class.new(attributes: [:link_url], allow_nil: false, message: message) }
+
+ it 'does block nil url with provided error message' do
+ expect(validator.validate_each(badge, :link_url, nil)).to be_falsey
+ expect(badge.errors.first[1]).to eq message
+ end
+ end
+
+ context 'when allow_nil is set to true' do
+ let(:validator) { described_class.new(attributes: [:link_url], allow_nil: true) }
+
+ it 'does not block nil urls' do
+ badge.link_url = nil
+
+ subject
+
+ expect(badge.errors).to be_empty
+ end
+ end
+
+ context 'when allow_blank is set to true' do
+ let(:validator) { described_class.new(attributes: [:link_url], allow_blank: true) }
+
+ it 'does not block blank urls' do
+ badge.link_url = "\n\r \n"
+
+ subject
+
+ expect(badge.errors).to be_empty
+ end
+ end
+
context 'when allow_localhost is set to false' do
let(:validator) { described_class.new(attributes: [:link_url], allow_localhost: false) }
@@ -75,7 +136,21 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
+ end
+
+ context 'when allow_setting_local_requests is set to true' do
+ it 'does not block urls pointing to localhost' do
+ expect(described_class)
+ .to receive(:allow_setting_local_requests?)
+ .and_return(true)
+
+ badge.link_url = 'https://127.0.0.1'
+
+ subject
+
+ expect(badge.errors).to be_empty
+ end
end
end
@@ -87,7 +162,21 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
+ end
+
+ context 'when allow_setting_local_requests is set to true' do
+ it 'does not block urls pointing to local network' do
+ expect(described_class)
+ .to receive(:allow_setting_local_requests?)
+ .and_return(true)
+
+ badge.link_url = 'https://192.168.1.1'
+
+ subject
+
+ expect(badge.errors).to be_empty
+ end
end
end
@@ -100,7 +189,7 @@ describe UrlValidator do
it 'does not block any port' do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
end
@@ -110,7 +199,7 @@ describe UrlValidator do
it 'blocks urls with a different port' do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
end
end
@@ -127,7 +216,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
end
@@ -139,7 +228,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
end
end
@@ -156,7 +245,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
end
@@ -168,7 +257,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
end
end
@@ -191,7 +280,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
it 'prevents unsafe internal urls' do
@@ -199,7 +288,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
it 'allows safe urls' do
@@ -207,7 +296,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
end
@@ -219,7 +308,7 @@ describe UrlValidator do
subject
- expect(badge.errors.empty?).to be true
+ expect(badge.errors).to be_empty
end
end
end
diff --git a/spec/validators/public_url_validator_spec.rb b/spec/validators/public_url_validator_spec.rb
index 710dd3dc38e..f6364fb1dd5 100644
--- a/spec/validators/public_url_validator_spec.rb
+++ b/spec/validators/public_url_validator_spec.rb
@@ -1,20 +1,20 @@
require 'spec_helper'
describe PublicUrlValidator do
- include_examples 'url validator examples', described_class::DEFAULT_PROTOCOLS
+ include_examples 'url validator examples', AddressableUrlValidator::DEFAULT_OPTIONS[:schemes]
context 'by default' do
let(:validator) { described_class.new(attributes: [:link_url]) }
let!(:badge) { build(:badge, link_url: 'http://www.example.com') }
- subject { validator.validate_each(badge, :link_url, badge.link_url) }
+ subject { validator.validate(badge) }
it 'blocks urls pointing to localhost' do
badge.link_url = 'https://127.0.0.1'
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
it 'blocks urls pointing to the local network' do
@@ -22,7 +22,7 @@ describe PublicUrlValidator do
subject
- expect(badge.errors.empty?).to be false
+ expect(badge.errors).to be_present
end
end
end
diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb
index a3fe8fa4501..39f1beb4efa 100644
--- a/spec/workers/post_receive_spec.rb
+++ b/spec/workers/post_receive_spec.rb
@@ -99,11 +99,21 @@ describe PostReceive do
end
context "gitlab-ci.yml" do
- let(:changes) { "123456 789012 refs/heads/feature\n654321 210987 refs/tags/tag" }
+ let(:changes) do
+ <<-EOF.strip_heredoc
+ 123456 789012 refs/heads/feature
+ 654321 210987 refs/tags/tag
+ 123456 789012 refs/heads/feature2
+ 123458 789013 refs/heads/feature3
+ 123459 789015 refs/heads/feature4
+ EOF
+ end
+
+ let(:changes_count) { changes.lines.count }
subject { described_class.new.perform(gl_repository, key_id, base64_changes) }
- context "creates a Ci::Pipeline for every change" do
+ context "with valid .gitlab-ci.yml" do
before do
stub_ci_pipeline_to_return_yaml_file
@@ -116,7 +126,33 @@ describe PostReceive do
.and_return(true)
end
- it { expect { subject }.to change { Ci::Pipeline.count }.by(2) }
+ context 'when git_push_create_all_pipelines is disabled' do
+ before do
+ stub_feature_flags(git_push_create_all_pipelines: false)
+ end
+
+ it "creates pipeline for branches and tags" do
+ subject
+
+ expect(Ci::Pipeline.pluck(:ref)).to contain_exactly("feature", "tag", "feature2", "feature3")
+ end
+
+ it "creates exactly #{described_class::PIPELINE_PROCESS_LIMIT} pipelines" do
+ expect(changes_count).to be > described_class::PIPELINE_PROCESS_LIMIT
+
+ expect { subject }.to change { Ci::Pipeline.count }.by(described_class::PIPELINE_PROCESS_LIMIT)
+ end
+ end
+
+ context 'when git_push_create_all_pipelines is enabled' do
+ before do
+ stub_feature_flags(git_push_create_all_pipelines: true)
+ end
+
+ it "creates all pipelines" do
+ expect { subject }.to change { Ci::Pipeline.count }.by(changes_count)
+ end
+ end
end
context "does not create a Ci::Pipeline" do
diff --git a/vendor/licenses.csv b/vendor/licenses.csv
index de6e32cb998..0c52cb5a947 100644
--- a/vendor/licenses.csv
+++ b/vendor/licenses.csv
@@ -520,6 +520,7 @@ hashie-forbidden_attributes,0.1.1,MIT
he,1.1.1,MIT
health_check,2.6.0,MIT
highlight.js,9.13.1,New BSD
+hipchat,1.5.2,MIT
hmac-drbg,1.0.1,MIT
hoopy,0.1.4,MIT
html-pipeline,2.8.4,MIT