8000
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 90e51d60536d6..d4dafb2aa0029 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,6 +1,6 @@
| Q | A
| ------------- | ---
-| Branch? | 7.3 for features / 5.4, 6.4, 7.1, and 7.2 for bug fixes
+| Branch? | 7.4 for features / 6.4, 7.2, or 7.3 for bug fixes
| Bug fix? | yes/no
| New feature? | yes/no
| Deprecations? | yes/no
diff --git a/.github/build-packages.php b/.github/build-packages.php
index d69a3c8198ec0..4793b8483d7ed 100644
--- a/.github/build-packages.php
+++ b/.github/build-packages.php
@@ -1,5 +1,15 @@
'__unset' !== $v);
+ }, []);
+
+ return $expandedVersions ?? [];
+}
+
if (3 > $_SERVER['argc']) {
echo "Usage: branch version dir1 dir2 ... dirN\n";
exit(1);
@@ -52,11 +62,13 @@
$packages[$package->name][$package->version] = $package;
- $versions = @file_get_contents('https://repo.packagist.org/p/'.$package->name.'.json') ?: sprintf('{"packages":{"%s":{"%s":%s}}}', $package->name, $package->version, file_get_contents($dir.'/composer.json'));
- $versions = json_decode($versions)->packages->{$package->name};
+ foreach (['.json', '~dev.json'] as $ext) {
+ $versions = @file_get_contents('https://repo.packagist.org/p2/'.$package->name.$ext) ?: '[]';
+ $versions = json_decode($versions, true)['packages'][$package->name] ?? [];
- foreach ($versions as $v => $package) {
- $packages[$package->name] += [$v => $package];
+ foreach (expandComposerMetadata($versions) as $p) {
+ $packages[$package->name] += [$p['version'] => $p];
+ }
}
}
diff --git a/.github/expected-missing-return-types.diff b/.github/expected-missing-return-types.diff
index 30ac60ab98ad7..d838ce9f7c759 100644
--- a/.github/expected-missing-return-types.diff
+++ b/.github/expected-missing-return-types.diff
@@ -177,6 +177,23 @@ diff --git a/src/Symfony/Component/DependencyInjection/Extension/PrependExtensio
- public function prepend(ContainerBuilder $container);
+ public function prepend(ContainerBuilder $container): void;
}
+diff --git a/src/Symfony/Component/Emoji/EmojiTransliterator.php b/src/Symfony/Component/Emoji/EmojiTransliterator.php
+--- a/src/Symfony/Component/Emoji/EmojiTransliterator.php
++++ b/src/Symfony/Component/Emoji/EmojiTransliterator.php
+@@ -88,5 +88,5 @@ final class EmojiTransliterator extends \Transliterator
+ */
+ #[\ReturnTypeWillChange]
+- public function getErrorCode(): int|false
++ public function getErrorCode(): int
+ {
+ return isset($this->transliterator) ? $this->transliterator->getErrorCode() : 0;
+@@ -97,5 +97,5 @@ final class EmojiTransliterator extends \Transliterator
+ */
+ #[\ReturnTypeWillChange]
+- public function getErrorMessage(): string|false
++ public function getErrorMessage(): string
+ {
+ return isset($this->transliterator) ? $this->transliterator->getErrorMessage() : '';
diff --git a/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php b/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
--- a/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
+++ b/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
diff --git a/.github/get-modified-packages.php b/.github/get-modified-packages.php
index 11478cbe935c0..24de414fdd266 100644
--- a/.github/get-modified-packages.php
+++ b/.github/get-modified-packages.php
@@ -22,7 +22,7 @@ function getPackageType(string $packageDir): string
return match (true) {
str_contains($packageDir, 'Symfony/Bridge/') => 'bridge',
str_contains($packageDir, 'Symfony/Bundle/') => 'bundle',
- preg_match('@Symfony/Component/[^/]+/Bridge/@', $packageDir) => 'component_bridge',
+ 1 === preg_match('@Symfony/Component/[^/]+/Bridge/@', $packageDir) => 'component_bridge',
str_contains($packageDir, 'Symfony/Component/') => 'component',
str_contains($packageDir, 'Symfony/Contracts/') => 'contract',
str_ends_with($packageDir, 'Symfony/Contracts') => 'contracts',
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 0265b619c8be6..a2a3f8853882a 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -19,7 +19,7 @@ jobs:
tests:
name: Integration
- runs-on: Ubuntu-20.04
+ runs-on: ubuntu-24.04
strategy:
matrix:
@@ -81,6 +81,26 @@ jobs:
REDIS_MASTER_HOST: redis
REDIS_MASTER_SET: redis_sentinel
REDIS_SENTINEL_QUORUM: 1
+ redis-primary:
+ image: bitnami/redis:latest
+ ports:
+ - 16381:6379
+ env:
+ ALLOW_EMPTY_PASSWORD: "yes"
+ REDIS_REPLICATION_MODE: "master"
+ options: >-
+ --name=redis-primary
+ redis-replica:
+ image: bitnami/redis:latest
+ ports:
+ - 16382:6379
+ env:
+ ALLOW_EMPTY_PASSWORD: "yes"
+ REDIS_REPLICATION_MODE: "slave"
+ REDIS_MASTER_HOST: redis-primary
+ REDIS_MASTER_PORT_NUMBER: "6379"
+ options: >-
+ --name=redis-replica
memcached:
image: memcached:1.6.5
ports:
@@ -152,7 +172,7 @@ jobs:
run: |
echo "::group::apt-get update"
sudo wget -O - https://packages.couchbase.com/clients/c/repos/deb/couchbase.key | sudo apt-key add -
- echo "deb https://packages.couchbase.com/clients/c/repos/deb/ubuntu2004 focal focal/main" | sudo tee /etc/apt/sources.list.d/couchbase.list
+ echo "deb https://packages.couchbase.com/clients/c/repos/deb/ubuntu2404 noble noble/main" | sudo tee /etc/apt/sources.list.d/couchbase.list
sudo apt-get update
echo "::endgroup::"
@@ -239,6 +259,7 @@ jobs:
REDIS_CLUSTER_HOSTS: 'localhost:7000 localhost:7001 localhost:7002 localhost:7003 localhost:7004 localhost:7005'
REDIS_SENTINEL_HOSTS: 'unreachable-host:26379 localhost:26379 localhost:26379'
REDIS_SENTINEL_SERVICE: redis_sentinel
+ REDIS_REPLICATION_HOSTS: 'localhost:16382 localhost:16381'
MESSENGER_REDIS_DSN: redis://127.0.0.1:7006/messages
MESSENGER_AMQP_DSN: amqp://localhost/%2f/messages
MESSENGER_SQS_DSN: "sqs://localhost:4566/messages?sslmode=disable&poll_timeout=0.01"
diff --git a/.github/workflows/intl-data-tests.yml b/.github/workflows/intl-data-tests.yml
index a02bd73ac5b8f..193b3dd1df14d 100644
--- a/.github/workflows/intl-data-tests.yml
+++ b/.github/workflows/intl-data-tests.yml
@@ -36,7 +36,7 @@ permissions:
jobs:
tests:
name: Intl/Emoji data
- runs-on: Ubuntu-20.04
+ runs-on: ubuntu-24.04
steps:
- name: Checkout
diff --git a/.github/workflows/package-tests.yml b/.github/workflows/package-tests.yml
index bc6f8eec683c7..55d1c82e3661a 100644
--- a/.github/workflows/package-tests.yml
+++ b/.github/workflows/package-tests.yml
@@ -11,7 +11,7 @@ permissions:
jobs:
verify:
name: Verify Packages
- runs-on: Ubuntu-20.04
+ runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/.github/workflows/phpunit-bridge.yml b/.github/workflows/phpunit-bridge.yml
index fd169dfae782d..669fad2a3447f 100644
--- a/.github/workflows/phpunit-bridge.yml
+++ b/.github/workflows/phpunit-bridge.yml
@@ -22,7 +22,7 @@ permissions:
jobs:
lint:
name: Lint PhpUnitBridge
- runs-on: Ubuntu-20.04
+ runs-on: ubuntu-24.04
steps:
- name: Checkout
diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml
index a165d0c7dc126..33a5f58b44c6a 100644
--- a/.github/workflows/psalm.yml
+++ b/.github/workflows/psalm.yml
@@ -17,7 +17,7 @@ permissions:
jobs:
psalm:
name: Psalm
- runs-on: Ubuntu-20.04
+ runs-on: ubuntu-24.04
env:
php-version: '8.2'
diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml
index c2929a461dfef..677e6e6a30d91 100644
--- a/.github/workflows/scorecards.yml
+++ b/.github/workflows/scorecards.yml
@@ -6,7 +6,7 @@ on:
schedule:
- cron: '34 4 * * 6'
push:
- branches: [ "7.3" ]
+ branches: [ "7.4" ]
# Declare default permissions as read only.
permissions: read-all
@@ -14,7 +14,7 @@ permissions: read-all
jobs:
analysis:
name: Scorecards analysis
- runs-on: ubuntu-latest
+ runs-on: ubuntu-24.04
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 0e8c7cc123143..b6ec737456821 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -33,10 +33,11 @@ jobs:
mode: low-deps
- php: '8.3'
- php: '8.4'
+ - php: '8.5'
#mode: experimental
fail-fast: false
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-24.04
steps:
- name: Checkout
@@ -91,7 +92,7 @@ jobs:
# Create local composer packages for each patched components and reference them in composer.json files when cross-testing components
if [[ ! "${{ matrix.mode }}" = *-deps ]]; then
- php .github/build-packages.php HEAD^ $SYMFONY_VERSION src/Symfony/Bridge/PhpUnit
+ php .github/build-packages.php HEAD^ $SYMFONY_VERSION src/Symfony/Bridge/PhpUnit
else
echo SYMFONY_DEPRECATIONS_HELPER=weak >> $GITHUB_ENV
cp composer.json composer.json.orig
diff --git a/CHANGELOG-7.1.md b/CHANGELOG-7.1.md
index 747dcf2c9962c..f46dc88b01503 100644
--- a/CHANGELOG-7.1.md
+++ b/CHANGELOG-7.1.md
@@ -7,6 +7,62 @@ in 7.1 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v7.1.0...v7.1.1
+* 7.1.10 (2024-12-31)
+
+ * bug #59304 [PropertyInfo] Remove ``@internal`` from `PropertyReadInfo` and `PropertyWriteInfo` (Dario Guarracino)
+ * bug #59228 [HttpFoundation] Avoid mime type guess with temp files in `BinaryFileResponse` (alexandre-daubois)
+ * bug #59318 [Finder] Fix using `==` as default operator in `DateComparator` (MatTheCat)
+ * bug #59321 [HtmlSanitizer] reject URLs containing whitespaces (xabbuh)
+ * bug #59250 [HttpClient] Fix a typo in NoPrivateNetworkHttpClient (Jontsa)
+ * bug #59103 [Messenger] ensure exception on rollback does not hide previous exception (nikophil)
+ * bug #59226 [FrameworkBundle] require the writer to implement getFormats() in the translation:extract (xabbuh)
+ * bug #59213 [FrameworkBundle] don't require fake notifier transports to be installed as non-dev dependencies (xabbuh)
+ * bug #59066 Fix resolve enum in string type resolver (DavidBadura)
+ * bug #59156 [PropertyInfo] Fix interface handling in PhpStanTypeHelper (mtarld)
+ * bug #59160 [BeanstalkMessenger] Round delay to an integer to avoid deprecation warning (plantas)
+ * bug #59012 [PropertyInfo] Fix interface handling in `PhpStanTypeHelper` (janedbal)
+ * bug #59134 [HttpKernel] Denormalize request data using the csv format when using "#[MapQueryString]" or "#[MapRequestPayload]" (except for content data) (ovidiuenache)
+ * bug #59140 [WebProfilerBundle] fix: white-space in highlighted code (chr-hertel)
+ * bug #59124 [FrameworkBundle] fix: notifier push channel bus abstract arg (raphael-geffroy)
+ * bug #59069 [Console] Fix division by 0 error (Rindula)
+ * bug #59070 [PropertyInfo] evaluate access flags for properties with asymmetric visibility (xabbuh)
+ * bug #59062 [HttpClient] Always set CURLOPT_CUSTOMREQUEST to the correct HTTP method in CurlHttpClient (KurtThiemann)
+ * bug #59023 [HttpClient] Fix streaming and redirecting with NoPrivateNetworkHttpClient (nicolas-grekas)
+
+* 7.1.9 (2024-11-27)
+
+ * bug #59013 [HttpClient] Fix checking for private IPs before connecting (nicolas-grekas)
+ * bug #58562 [HttpClient] Close gracefull when the server closes the connection abruptly (discordier)
+ * bug #59007 [Dotenv] read runtime config from composer.json in debug dotenv command (xabbuh)
+ * bug #58963 [PropertyInfo] Fix write visibility for Asymmetric Visibility and Virtual Properties (xabbuh, pan93412)
+ * bug #58983 [Translation] [Bridge][Lokalise] Fix empty keys array in PUT, DELETE requests causing Lokalise API error (DominicLuidold)
+ * bug #58956 [DoctrineBridge] Fix `Connection::createSchemaManager()` for Doctrine DBAL v2 (neodevcode)
+ * bug #58959 [PropertyInfo] consider write property visibility to decide whether a property is writable (xabbuh)
+ * bug #58964 [TwigBridge] do not add child nodes to EmptyNode instances (xabbuh)
+ * bug #58952 [Cache] silence warnings issued by Redis Sentinel on connection issues (xabbuh)
+ * bug #58859 [AssetMapper] ignore missing directory in `isVendor()` (alexislefebvre)
+ * bug #58917 [OptionsResolver] Allow Union/Intersection Types in Resolved Closures (zanbaldwin)
+ * bug #58822 [DependencyInjection] Fix checking for interfaces in ContainerBuilder::getReflectionClass() (donquixote)
+ * bug #58865 Dynamically fix compatibility with doctrine/data-fixtures v2 (greg0ire)
+ * bug #58921 [HttpKernel] Ensure `HttpCache::getTraceKey()` does not throw exception (lyrixx)
+ * bug #58908 [DoctrineBridge] don't call `EntityManager::initializeObject()` with scalar values (xabbuh)
+ * bug #58938 [Cache] make RelayProxyTrait compatible with relay extension 0.9.0 (xabbuh)
+ * bug #58924 [HttpClient] Fix empty hosts in option "resolve" (nicolas-grekas)
+ * bug #58915 [HttpClient] Fix option "resolve" with IPv6 addresses (nicolas-grekas)
+ * bug #58919 [WebProfilerBundle] Twig deprecations (mazodude)
+ * bug #58914 [HttpClient] Fix option "bindto" with IPv6 addresses (nicolas-grekas)
+ * bug #58870 [Serializer][Validator] prevent failures around not existing TypeInfo classes (xabbuh)
+ * bug #58872 [PropertyInfo][Serializer][Validator] TypeInfo 7.2 compatibility (mtarld)
+ * bug #58875 [HttpClient] Removed body size limit (Carl Julian Sauter)
+ * bug #58866 [Validator] fix compatibility with PHP < 8.2.4 (xabbuh)
+ * bug #58862 [Notifier] Fix GoIpTransport (nicolas-grekas)
+ * bug #58860 [HttpClient] Fix catching some invalid Location headers (nicolas-grekas)
+ * bug #58836 Work around `parse_url()` bug (bis) (nicolas-grekas)
+ * bug #58818 [Messenger] silence PHP warnings issued by `Redis::connect()` (xabbuh)
+ * bug #58828 [PhpUnitBridge] fix dumping tests to skip with data providers (xabbuh)
+ * bug #58842 [Routing] Fix: lost priority when defining hosts in configuration (BeBlood)
+ * bug #58850 [HttpClient] fix PHP 7.2 compatibility (xabbuh)
+
* 7.1.8 (2024-11-13)
* security #cve-2024-50342 [HttpClient] Resolve hostnames in NoPrivateNetworkHttpClient (nicolas-grekas)
diff --git a/CHANGELOG-7.2.md b/CHANGELOG-7.2.md
index b4cfcd1b36e09..d6d188669de42 100644
--- a/CHANGELOG-7.2.md
+++ b/CHANGELOG-7.2.md
@@ -7,6 +7,259 @@ in 7.2 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v7.2.0...v7.2.1
+* 7.2.7 (2025-05-29)
+
+ * bug #60549 [Translation] Add intl-icu fallback for MessageCatalogue metadata (pontus-mp)
+ * bug #60571 [ErrorHandler] Do not transform file to link if it does not exist (lyrixx)
+ * bug #60494 [Messenger] fix: Add argument as integer (overexpOG)
+ * bug #60524 [Notifier] Fix Clicksend transport (BafS)
+ * bug #60478 [Validator] add missing `$extensions` and `$extensionsMessage` to the `Image` constraint (xabbuh)
+ * bug #60484 [PhpUnitBridge] Clean up mocked features only when ``@group`` is present (HypeMC)
+ * bug #60490 [PhpUnitBridge] set path to the PHPUnit autoload file (xabbuh)
+ * bug #60423 [DependencyInjection] Make `DefinitionErrorExceptionPass` consider `IGNORE_ON_UNINITIALIZED_REFERENCE` and `RUNTIME_EXCEPTION_ON_INVALID_REFERENCE` the same (MatTheCat)
+ * bug #60439 [FrameworkBundle] Fix declaring field-attr tags in xml config files (nicolas-grekas)
+ * bug #60428 [DependencyInjection] Fix missing binding for ServiceCollectionInterface when declaring a service subscriber (nicolas-grekas)
+ * bug #60421 [VarExporter] Fixed lazy-loading ghost objects generation with property hooks (cheack)
+ * bug #60266 [Security] Exclude remember_me from default login authenticators (santysisi)
+ * bug #60400 [Config] Fix generated comment for multiline "info" (GromNaN)
+ * bug #60260 [Serializer] Prevent `Cannot traverse an already closed generator` error by materializing Traversable input (santysisi)
+ * bug #60292 [HttpFoundation] Encode path in `X-Accel-Redirect` header (Athorcis)
+ * bug #58643 [SecurityBundle] Use Composer `InstalledVersions` to check if flex is installed (andyexeter)
+ * bug #60275 [DoctrineBridge] Fix UniqueEntityValidator Stringable identifiers (GiuseppeArcuti, wkania)
+ * bug #60293 [Messenger] fix asking users to select an option if `--force` option is used in `messenger:failed:retry` command (W0rma)
+ * bug #60379 [Security] Avoid failing when PersistentRememberMeHandler handles a malformed cookie (Seldaek)
+ * bug #60373 [FrameworkBundle] Ensure `Email` class exists before using it (Kocal)
+ * bug #60365 [FrameworkBundle] ensure that all supported e-mail validation modes can be configured (xabbuh)
+ * bug #60350 [Security][LoginLink] Throw `InvalidLoginLinkException` on invalid parameters (davidszkiba)
+ * bug #60340 [String] fix EmojiTransliterator return type compatibility with PHP 8.5 (xabbuh)
+
+* 7.2.6 (2025-05-02)
+
+ * bug #60288 [VarExporter] dump default value for property hooks if present (xabbuh)
+ * bug #60267 [Contracts] Fix `ServiceMethodsSubscriberTrait` for nullable service (StevenRenaux)
+ * bug #60268 [Contracts] Fix `ServiceSubscriberTrait` for nullable service (StevenRenaux)
+ * bug #60256 [Mailer][Postmark] drop the `Date` header using the API transport (xabbuh)
+ * bug #60258 [VarExporter] Fix: Use correct closure call for property-specific logic in $notByRef (Hakayashii, denjas)
+ * bug #60269 [Notifier] [Discord] Fix value limits (norkunas)
+ * bug #60270 [Validator] [WordCount] Treat 0 as one character word and do not exclude it (sidz)
+ * bug #60248 [Messenger] Revert " Add call to `gc_collect_cycles()` after each message is handled" (jwage)
+ * bug #60236 [String] Support nexus -> nexuses pluralization (KorvinSzanto)
+ * bug #60238 [Lock] read (possible) error from Redis instance where evalSha() was called (xabbuh)
+ * bug #60194 [Workflow] Fix dispatch of entered event when the subject is already in this marking (lyrixx)
+ * bug #60174 [PhpUnitBridge] properly clean up mocked features after tests have run (xabbuh)
+ * bug #60172 [Cache] Fix invalidating on save failures with Array|ApcuAdapter (nicolas-grekas)
+ * bug #60122 [Cache] ArrayAdapter serialization exception clean $expiries (bastien-wink)
+ * bug #60167 [Cache] Fix proxying third party PSR-6 cache items (Dmitry Danilson)
+ * bug #60165 [HttpKernel] Do not ignore enum in controller arguments when it has an `#[Autowire]` attribute (ruudk)
+ * bug #60168 [Console] Correctly convert `SIGSYS` to its name (cs278)
+ * bug #60166 [Security] fix(security): fix OIDC user identifier (vincentchalamon)
+ * bug #60124 [Validator] : fix url validation when punycode is on tld but not on domain (joelwurtz)
+ * bug #60137 [Config] ResourceCheckerConfigCache metadata unserialize emits warning (Colin Michoudet)
+ * bug #60057 [Mailer] Fix `Trying to access array offset on value of type null` error by adding null checking (khushaalan)
+ * bug #60094 [DoctrineBridge] Fix support for entities that leverage native lazy objects (nicolas-grekas)
+ * bug #60094 [DoctrineBridge] Fix support for entities that leverage native lazy objects (nicolas-grekas)
+
+* 7.2.5 (2025-03-28)
+
+ * bug #60054 [Form] Use duplicate_preferred_choices to set value of ChoiceType (aleho)
+ * bug #60026 [Serializer] Fix ObjectNormalizer default context with named serializers (HypeMC)
+ * bug #60030 [Cache][DoctrineBridge][HttpFoundation][Lock][Messenger] use `Table::addPrimaryKeyConstraint()` with Doctrine DBAL 4.3+ (xabbuh)
+ * bug #59844 [TypeInfo] Fix `isSatisfiedBy` not traversing type tree (mtarld)
+ * bug #59858 Update `JsDelivrEsmResolver::IMPORT_REGEX` to support dynamic imports (natepage)
+ * bug #60019 [HttpKernel] Fix `TraceableEventDispatcher` when the `Stopwatch` service has been reset (lyrixx)
+ * bug #59975 [HttpKernel] Only remove `E_WARNING` from error level during kernel init (fritzmg)
+ * bug #59988 [FrameworkBundle] Remove redundant `name` attribute from `default_context` (HypeMC)
+ * bug #59963 [TypeInfo] Fix ``@var`` tag reading for promoted properties (mtarld)
+ * bug #59949 [Process] Use a pipe for stderr in pty mode to avoid mixed output between stdout and stderr (joelwurtz)
+ * bug #59940 [Cache] Fix missing cache data in profiler (dcmbrs)
+ * bug #59965 [VarExporter] Fix support for hooks and asymmetric visibility (nicolas-grekas)
+ * bug #59924 Extract no type ``@param`` annotation with `PhpStanExtractor` (thomasdubuffet)
+ * bug #59908 [Messenger] Reduce keepalive request noise (ro0NL)
+ * bug #59874 [Console] fix progress bar messing output in section when there is an EOL (joelwurtz)
+ * bug #59888 [PhpUnitBridge] don't trigger "internal" deprecations for PHPUnit Stub objects (xabbuh)
+ * bug #59830 [Yaml] drop comments while lexing unquoted strings (xabbuh)
+ * bug #59884 [VarExporter] Fix support for asymmetric visibility (nicolas-grekas)
+ * bug #59881 [VarExporter] Fix support for abstract properties (nicolas-grekas)
+ * bug #59841 [Cache] fix cache data collector on late collect (dcmbrs)
+
+* 7.2.4 (2025-02-26)
+
+ * bug #59198 [Messenger] Filter out non-consumable receivers when registering `ConsumeMessagesCommand` (wazum)
+ * bug #59781 [Mailer] fix multiple transports default injection (fkropfhamer)
+ * bug #59836 [Mailer][Postmark] Set CID for attachments when it exists (IssamRaouf)
+ * bug #59829 [FrameworkBundle] Disable the keys normalization of the CSRF form field attributes (sukei)
+ * bug #59840 Fix PHP warning in GetSetMethodNormalizer when a "set()" method is defined (Pepperoni1337)
+ * bug #59818 [TypeInfo] Fix create union with nullable type (mtarld)
+ * bug #59810 [DependencyInjection] Defer check for circular references instead of skipping them (biozshock)
+ * bug #59811 [Validator] Synchronize IBAN formats (alexandre-daubois)
+ * bug #59796 [Mime] use address for body at `PathHeader` (tinect)
+ * bug #59803 [Semaphore] allow redis cluster/sentinel dsn (smoench)
+ * bug #59779 [DomCrawler] Bug #43921 Check for null parent nodes in the case of orphaned branches (ttk)
+ * bug #59776 [WebProfilerBundle] fix rendering notifier message options (xabbuh)
+ * bug #59769 Enable `JSON_PRESERVE_ZERO_FRACTION` in `jsonRequest` method (raffaelecarelle)
+ * bug #59774 [TwigBridge] Fix compatibility with Twig 3.21 (alexandre-daubois)
+ * bug #59761 [VarExporter] Fix lazy objects with hooked properties (nicolas-grekas)
+ * bug #59763 [HttpClient] Don't send any default content-type when the body is empty (nicolas-grekas)
+ * bug #59747 [Translation] check empty notes (davidvancl)
+ * bug #59751 [Cache] Tests for Redis Replication with cache (DemigodCode)
+ * bug #59752 [BrowserKit] Fix submitting forms with empty file fields (nicolas-grekas)
+ * bug #59742 [Notifier] [BlueSky] Change the value returned as the message ID (javiereguiluz)
+ * bug #59033 [WebProfilerBundle] Fix interception for non conventional redirects (Huluti)
+ * bug #59713 [DependencyInjection] Do not preload functions (biozshock)
+ * bug #59723 [DependencyInjection] Fix cloned lazy services not sharing their dependencies when dumped with PhpDumper (pvandommelen)
+ * bug #59727 [HttpClient] Fix activity tracking leading to negative timeout errors (nicolas-grekas)
+ * bug #59728 [Form][FrameworkBundle] Use auto-configuration to make the default CSRF token id apply only to the app; not to bundles (nicolas-grekas)
+ * bug #59262 [DependencyInjection] Fix env default processor with scalar node (tBibaut)
+ * bug #59699 [Serializer] Handle default context in named Serializer (HypeMC)
+ * bug #59640 [Security] Return null instead of empty username to fix deprecation notice (phasdev)
+ * bug #59661 [Lock] Fix Predis error handling (HypeMC)
+ * bug #59596 [Mime] use `isRendered` method to ensure we can avoid rendering an email twice (walva)
+ * bug #59689 [HttpClient] Fix buffering AsyncResponse with no passthru (nicolas-grekas)
+ * bug #59654 [HttpClient] Fix uploading files > 2GB (nicolas-grekas)
+ * bug #59648 [HttpClient] Fix retrying requests with `Psr18Client` and NTLM connections (nicolas-grekas, ajgarlag)
+ * bug #59681 [TypeInfo] Fix promoted property phpdoc reading (mtarld)
+
+* 7.2.3 (2025-01-29)
+
+ * bug #58889 [Serializer] Handle default context in Serializer (Valmonzo)
+ * bug #59631 [HttpClient] Fix processing a NativeResponse after its client has been reset (Jean-Beru)
+ * bug #59590 [Security] Throw an explicit error when refreshing a token with a null user (alexandre-daubois)
+ * bug #59625 [FrameworkBundle] Add missing `not-compromised-password` entry in XSD (alexandre-daubois)
+ * bug #59610 [Mailer] Ensure TransportExceptionInterface populates stream debug data (bytestream)
+ * bug #59598 [Mime] Fix body validity check in `Email` when using `Message::setBody()` (alexandre-daubois)
+ * bug #59513 [Messenger ] Extract retry delay from nested `RecoverableExceptionInterface` (AydinHassan)
+ * bug #59544 [AssetMapper] Fix CssCompiler matches url in comments (smnandre)
+ * bug #59575 [DoctrineBridge] Add support for doctrine/persistence 4 (greg0ire)
+ * bug #59611 [Mailer][Notifier] Fix channel parameter value to fixed value for Mailer and Notifier Sweego Transports (welcoMattic)
+ * bug #59399 [DomCrawler] Make `ChoiceFormField::isDisabled` return `true` for unchecked disabled checkboxes (MatTheCat)
+ * bug #59581 [Cache] Don't clear system caches on `cache:clear` (nicolas-grekas)
+ * bug #59579 [FrameworkBundle] Fix patching refs to the tmp warmup dir in files generated by optional cache warmers (nicolas-grekas)
+ * bug #59580 [Config] Add missing `json_encode` flags when creating `.meta.json` files (nicolas-grekas)
+ * bug #57459 [PropertyInfo] convert legacy types to TypeInfo types if getType() is not implemented (xabbuh)
+ * bug #59525 [HtmlSanitizer] Fix access to undefined keys in UrlSanitizer (Antoine Beyet)
+ * bug #59538 [VarDumper] fix dumped markup (xabbuh)
+ * bug #59508 [Messenger] [AMQP] Improve AMQP connection issues (AurelienPillevesse)
+ * bug #59501 [Serializer] [ObjectNormalizer] Filter int when using FILTER_BOOL (DjordyKoert)
+ * bug #59515 [FrameworkBundle] Fix wiring ConsoleProfilerListener (nicolas-grekas)
+ * bug #59136 [DependencyInjection] Reset env vars with `kernel.reset` (faizanakram99)
+ * bug #59488 [Lock] Make sure RedisStore will also support Valkey (PatNowak)
+ * bug #59486 [Validator] Update sr_Cyrl 120:This value is not a valid slug. (kaznovac)
+ * bug #59403 [FrameworkBundle][HttpFoundation] Reset Request's formats using the service resetter (nicolas-grekas)
+ * bug #59404 [Mailer] Fix SMTP stream EOF handling on Windows by using feof() (skmedix)
+ * bug #59390 [VarDumper] Fix blank strings display (MatTheCat)
+ * bug #59446 [Routing] Fix configuring a single route's hosts (MatTheCat)
+ * bug #58901 [HttpClient] Ignore RuntimeExceptions thrown when rewinding the PSR-7 created in HttplugWaitLoop::createPsr7Response (KurtThiemann)
+ * bug #59046 [HttpClient] Fix Undefined array key `connection` (PhilETaylor)
+ * bug #59055 [HttpFoundation] Fixed `IpUtils::anonymize` exception when using IPv6 link-local addresses with RFC4007 scoping (jbtronics)
+ * bug #59256 [Mailer] Fix Sendmail memory leak (rch7)
+ * bug #59375 [RemoteEvent][Webhook] fix SendgridPayloadConverter category support (ericabouaf)
+ * bug #59367 [PropertyInfo] Make sure that SerializerExtractor returns null for invalid class metadata (wuchen90)
+ * bug #59376 [RemoteEvent][Webhook] Fix `SendgridRequestParser` and `SendgridPayloadConverter` (ericabouaf)
+ * bug #59381 [Yaml] fix inline notation with inline comment (alexpott)
+ * bug #59352 [Messenger] Fix `TransportMessageIdStamp` not always added (HypeMC)
+ * bug #59185 [DoctrineBridge] Fix compatibility to Doctrine persistence 2.5 in Doctrine Bridge 6.4 to avoid Projects stuck on 6.3 (alexander-schranz)
+ * bug #59245 [PropertyInfo] Fix add missing composer conflict (mtarld)
+ * bug #59292 [WebProfilerBundle] Fix event delegation on links inside toggles (MatTheCat)
+ * bug #59362 [Doctrine][Messenger] Prevents multiple TransportMessageIdStamp being stored in envelope (rtreffler)
+ * bug #59323 [Serializer] Fix exception thrown by `YamlEncoder` (VincentLanglet)
+ * bug #59293 [AssetMapper] Fix JavaScript compiler creates self-referencing imports (smnandre)
+ * bug #59296 [Form] do not render hidden CSRF token forms with autocomplete set to off (xabbuh)
+ * bug #59349 [Yaml] reject inline notations followed by invalid content (xabbuh)
+ * bug #59229 [WebProfilerBundle] fix loading of toolbar stylesheet (alexislefebvre)
+ * bug #59363 [VarDumper] Fix displaying closure's "this" from anonymous classes (nicolas-grekas)
+ * bug #59364 [ErrorHandler] Don't trigger "internal" deprecations for anonymous LazyClosure instances (nicolas-grekas)
+ * bug #59221 [PropertyAccess] Fix compatibility with PHP 8.4 asymmetric visibility (Florian-Merle)
+ * bug #59348 [Lock] Fix predis command error checking (dciprian-petrisor)
+ * bug #59357 [HttpKernel] Don't override existing `LoggerInterface` autowiring alias in `LoggerPass` (nicolas-grekas)
+ * bug #59347 [Security] Fix triggering session tracking from ContextListener (nicolas-grekas)
+ * bug #59146 [Security] Use the session only if it is started when using `SameOriginCsrfTokenManager` (Thibault G)
+ * bug #59188 [HttpClient] Fix `reset()` not called on decorated clients (HypeMC)
+ * bug #59339 [SecurityBundle] Remove outdated guard from security xsd schema (chalasr)
+ * bug #59343 [Security] Adjust parameter order in exception message (Link1515)
+ * bug #59342 [SecurityBundle] Do not pass traceable authenticators to `security.helper` (MatTheCat)
+ * bug #59320 [HttpClient] fix amphp http client v5 unix socket (praswicaksono)
+ * bug #59312 [Yaml] Fix parsing of unquoted strings in Parser::lexUnquotedString() to ignore spaces (Link1515)
+ * bug #59334 [ErrorHandler] [A11y] Simple proposal for color updates on error stack traces against colorblindness (DocFX)
+
+* 7.2.2 (2024-12-31)
+
+ * bug #59304 [PropertyInfo] Remove ``@internal`` from `PropertyReadInfo` and `PropertyWriteInfo` (Dario Guarracino)
+ * bug #59252 [Stopwatch] bug #54854 undefined key error when trying to fetch a mis… (Alex Niedre)
+ * bug #59278 [SecurityBundle] Do not replace authenticators service by their traceable version (MatTheCat)
+ * bug #59228 [HttpFoundation] Avoid mime type guess with temp files in `BinaryFileResponse` (alexandre-daubois)
+ * bug #59318 [Finder] Fix using `==` as default operator in `DateComparator` (MatTheCat)
+ * bug #59321 [HtmlSanitizer] reject URLs containing whitespaces (xabbuh)
+ * bug #59310 [Validator] the "max" option can be zero (xabbuh)
+ * bug #59271 [TypeInfo] Fix PHPDoc resolving of union with mixed (mtarld)
+ * bug #59269 [Security/Csrf] Trust "Referer" at the same level as "Origin" (nicolas-grekas)
+ * bug #59250 [HttpClient] Fix a typo in NoPrivateNetworkHttpClient (Jontsa)
+ * bug #59103 [Messenger] ensure exception on rollback does not hide previous exception (nikophil)
+ * bug #59226 [FrameworkBundle] require the writer to implement getFormats() in the translation:extract (xabbuh)
+ * bug #59213 [FrameworkBundle] don't require fake notifier transports to be installed as non-dev dependencies (xabbuh)
+ * bug #59113 [FrameworkBundle][Translation] fix translation lint compatibility with the `PseudoLocalizationTranslator` (xabbuh)
+ * bug #59060 [Validator] set the violat
8000
ion path only if the `errorPath` option is set (xabbuh)
+ * bug #59066 Fix resolve enum in string type resolver (DavidBadura)
+ * bug #59156 [PropertyInfo] Fix interface handling in PhpStanTypeHelper (mtarld)
+ * bug #59160 [BeanstalkMessenger] Round delay to an integer to avoid deprecation warning (plantas)
+ * bug #59012 [PropertyInfo] Fix interface handling in `PhpStanTypeHelper` (janedbal)
+ * bug #59134 [HttpKernel] Denormalize request data using the csv format when using "#[MapQueryString]" or "#[MapRequestPayload]" (except for content data) (ovidiuenache)
+ * bug #59140 [WebProfilerBundle] fix: white-space in highlighted code (chr-hertel)
+
+* 7.2.1 (2024-12-11)
+
+ * bug #59145 [TypeInfo] Make `Type::nullable` method no-op on every nullable type (mtarld)
+ * bug #59122 [Notifier] fix desktop channel bus abstract arg (raphael-geffroy)
+ * bug #59124 [FrameworkBundle] fix: notifier push channel bus abstract arg (raphael-geffroy)
+ * bug #59069 [Console] Fix division by 0 error (Rindula)
+ * bug #59086 [FrameworkBundle] Make uri_signer lazy and improve error when kernel.secret is empty (nicolas-grekas)
+ * bug #59099 [sendgrid-mailer] Fix null check on region (AUDUL)
+ * bug #59070 [PropertyInfo] evaluate access flags for properties with asymmetric visibility (xabbuh)
+ * bug #59062 [HttpClient] Always set CURLOPT_CUSTOMREQUEST to the correct HTTP method in CurlHttpClient (KurtThiemann)
+ * bug #59059 [TwigBridge] generate conflict-free variable names (xabbuh)
+
+* 7.2.0 (2024-11-29)
+
+ * bug #59023 [HttpClient] Fix streaming and redirecting with NoPrivateNetworkHttpClient (nicolas-grekas)
+ * bug #59014 [Form] Allow integer for the `calendar` option of `DateType` (alexandre-daubois)
+ * bug #59013 [HttpClient] Fix checking for private IPs before connecting (nicolas-grekas)
+ * bug #58562 [HttpClient] Close gracefull when the server closes the connection abruptly (discordier)
+ * bug #59007 [Dotenv] read runtime config from composer.json in debug dotenv command (xabbuh)
+ * bug #58963 [PropertyInfo] Fix write visibility for Asymmetric Visibility and Virtual Properties (xabbuh, pan93412)
+ * bug #58983 [Translation] [Bridge][Lokalise] Fix empty keys array in PUT, DELETE requests causing Lokalise API error (DominicLuidold)
+ * bug #58956 [DoctrineBridge] Fix `Connection::createSchemaManager()` for Doctrine DBAL v2 (neodevcode)
+ * bug #58959 [PropertyInfo] consider write property visibility to decide whether a property is writable (xabbuh)
+ * bug #58964 [TwigBridge] do not add child nodes to EmptyNode instances (xabbuh)
+ * bug #58950 [FrameworkBundle] Revert " Deprecate making `cache.app` adapter taggable" (keulinho)
+ * bug #58952 [Cache] silence warnings issued by Redis Sentinel on connection issues (xabbuh)
+ * bug #58953 [HttpClient] Fix computing stats for PUSH with Amp (nicolas-grekas)
+ * bug #58943 [FrameworkBundle] Revert " Don't auto-register form/csrf when the corresponding components are not installed" (nicolas-grekas)
+ * bug #58937 [FrameworkBundle] Don't auto-register form/csrf when the corresponding components are not installed (nicolas-grekas)
+ * bug #58859 [AssetMapper] ignore missing directory in `isVendor()` (alexislefebvre)
+ * bug #58917 [OptionsResolver] Allow Union/Intersection Types in Resolved Closures (zanbaldwin)
+ * bug #58822 [DependencyInjection] Fix checking for interfaces in ContainerBuilder::getReflectionClass() (donquixote)
+ * bug #58865 Dynamically fix compatibility with doctrine/data-fixtures v2 (greg0ire)
+ * bug #58921 [HttpKernel] Ensure `HttpCache::getTraceKey()` does not throw exception (lyrixx)
+ * bug #58908 [DoctrineBridge] don't call `EntityManager::initializeObject()` with scalar values (xabbuh)
+ * bug #58938 [Cache] make RelayProxyTrait compatible with relay extension 0.9.0 (xabbuh)
+ * bug #58924 [HttpClient] Fix empty hosts in option "resolve" (nicolas-grekas)
+ * bug #58915 [HttpClient] Fix option "resolve" with IPv6 addresses (nicolas-grekas)
+ * bug #58919 [WebProfilerBundle] Twig deprecations (mazodude)
+ * bug #58914 [HttpClient] Fix option "bindto" with IPv6 addresses (nicolas-grekas)
+ * bug #58888 [Mailer][Notifier] Sweego is backing their bridges, thanks to them! (nicolas-grekas)
+ * bug #58885 [PropertyInfo][Serializer][TypeInfo][Validator] TypeInfo 7.1 compatibility (mtarld)
+ * bug #58870 [Serializer][Validator] prevent failures around not existing TypeInfo classes (xabbuh)
+ * bug #58872 [PropertyInfo][Serializer][Validator] TypeInfo 7.2 compatibility (mtarld)
+ * bug #58875 [HttpClient] Removed body size limit (Carl Julian Sauter)
+ * bug #58866 [Validator] fix compatibility with PHP < 8.2.4 (xabbuh)
+ * bug #58862 [Notifier] Fix GoIpTransport (nicolas-grekas)
+ * bug #58860 [HttpClient] Fix catching some invalid Location headers (nicolas-grekas)
+ * bug #58834 [FrameworkBundle] ensure `validator.translation_domain` parameter is always set (xabbuh)
+ * bug #58836 Work around `parse_url()` bug (bis) (nicolas-grekas)
+ * bug #58818 [Messenger] silence PHP warnings issued by `Redis::connect()` (xabbuh)
+ * bug #58828 [PhpUnitBridge] fix dumping tests to skip with data providers (xabbuh)
+ * bug #58842 [Routing] Fix: lost priority when defining hosts in configuration (BeBlood)
+ * bug #58850 [HttpClient] fix PHP 7.2 compatibility (xabbuh)
+
* 7.2.0-RC1 (2024-11-13)
* feature #58852 [TypeInfo] Remove ``@experimental`` tag (mtarld)
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index bcc33dc4892f2..3e7f5ec2b6e78 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -12,15 +12,15 @@ The Symfony Connect username in parenthesis allows to get more information
- Robin Chalas (chalas_r)
- Tobias Schultze (tobion)
- Grégoire Pineau (lyrixx)
- - Thomas Calvet (fancyweb)
- Alexandre Daubois (alexandre-daubois)
+ - Thomas Calvet (fancyweb)
- Christophe Coevoet (stof)
- Wouter de Jong (wouterj)
- Jordi Boggiano (seldaek)
- Maxime Steinhausser (ogizanagi)
- Kévin Dunglas (dunglas)
- - Victor Berchet (victor)
- Javier Eguiluz (javier.eguiluz)
+ - Victor Berchet (victor)
- Ryan Weaver (weaverryan)
- Jérémy DERUSSÉ (jderusse)
- Jules Pietri (heah)
@@ -30,16 +30,16 @@ The Symfony Connect username in parenthesis allows to get more information
- Kris Wallsmith (kriswallsmith)
- Jakub Zalas (jakubzalas)
- Yonel Ceruto (yonelceruto)
+ - HypeMC (hypemc)
- Hugo Hamon (hhamon)
- Tobias Nyholm (tobias)
- - HypeMC (hypemc)
- Jérôme Tamarelle (gromnan)
- - Samuel ROZE (sroze)
- Antoine Lamirault (alamirault)
+ - Samuel ROZE (sroze)
- Pascal Borreli (pborreli)
- Romain Neutron
- - Joseph Bielawski (stloyd)
- Kevin Bond (kbond)
+ - Joseph Bielawski (stloyd)
- Drak (drak)
- Abdellatif Ait boudad (aitboudad)
- Lukas Kahwe Smith (lsmith)
@@ -50,25 +50,27 @@ The Symfony Connect username in parenthesis allows to get more information
- Benjamin Eberlei (beberlei)
- Igor Wiedler
- Jan Schädlich (jschaedl)
+ - Mathias Arlaud (mtarld)
- Mathieu Lechat (mat_the_cat)
+ - Simon André (simonandre)
+ - Vincent Langlet (deviling)
- Matthias Pigulla (mpdude)
- Gabriel Ostrolucký (gadelat)
- - Simon André (simonandre)
- Jonathan Wage (jwage)
- - Vincent Langlet (deviling)
- Valentin Udaltsov (vudaltsov)
- - Mathias Arlaud (mtarld)
- - Alexandre Salomé (alexandresalome)
- Grégoire Paris (greg0ire)
+ - Alexandre Salomé (alexandresalome)
- William DURAND
- ornicar
- Dany Maillard (maidmaid)
- Eriksen Costa
- Diego Saint Esteben (dosten)
+ - Dariusz Ruminski
- stealth35 (stealth35)
- Alexander Mols (asm89)
- Gábor Egyed (1ed)
- Francis Besset (francisbesset)
+ - Mathieu Santostefano (welcomattic)
- Titouan Galopin (tgalopin)
- Pierre du Plessis (pierredup)
- David Maicher (dmaicher)
@@ -77,51 +79,51 @@ The Symfony Connect username in parenthesis allows to get more information
- Iltar van der Berg
- Miha Vrhovnik (mvrhov)
- Gary PEGEOT (gary-p)
- - Mathieu Santostefano (welcomattic)
+ - Alexander Schranz (alexander-schranz)
- Saša Stamenković (umpirsky)
- Allison Guilhem (a_guilhem)
- - Alexander Schranz (alexander-schranz)
- Mathieu Piot (mpiot)
- Vasilij Duško (staff)
- Sarah Khalil (saro0h)
- Laurent VOULLEMIER (lvo)
- Konstantin Kudryashov (everzet)
- Guilhem N (guilhemn)
- - Dariusz Ruminski
- Bilal Amarni (bamarni)
- Eriksen Costa
- Florin Patan (florinpatan)
- Vladimir Reznichenko (kalessil)
- Peter Rehm (rpet)
- Henrik Bjørnskov (henrikbjorn)
- - David Buchmann (dbu)
- Ruud Kamphuis (ruudk)
+ - David Buchmann (dbu)
+ - Tomas Norkūnas (norkunas)
- Andrej Hudec (pulzarraider)
- Jáchym Toušek (enumag)
- - Tomas Norkūnas (norkunas)
+ - Hubert Lenoir (hubert_lenoir)
- Christian Raue
- Eric Clemmons (ericclemmons)
- Denis (yethee)
+ - Alex Pott
- Michel Weimerskirch (mweimerskirch)
- Issei Murasawa (issei_m)
- Arnout Boks (aboks)
- Douglas Greenshields (shieldo)
- Frank A. Fiebig (fafiebig)
- Baldini
- - Alex Pott
- Fran Moreno (franmomu)
+ - Antoine Makdessi (amakdessi)
- Charles Sarrazin (csarrazi)
- Henrik Westphal (snc)
- Dariusz Górecki (canni)
- - Hubert Lenoir (hubert_lenoir)
- Ener-Getick
- - Antoine Makdessi (amakdessi)
- Graham Campbell (graham)
+ - Joel Wurtz (brouznouf)
+ - Massimiliano Arione (garak)
- Tugdual Saunier (tucksaun)
- Lee McDermott
- Brandon Turner
- - Massimiliano Arione (garak)
- Luis Cordova (cordoval)
+ - Phil E. Taylor (philetaylor)
- Konstantin Myakshin (koc)
- Daniel Holmes (dholmes)
- Julien Falque (julienfalque)
@@ -129,10 +131,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Bart van den Burg (burgov)
- Vasilij Dusko | CREATION
- Jordan Alliot (jalliot)
- - Phil E. Taylor (philetaylor)
- Théo FIDRY
- - Joel Wurtz (brouznouf)
- John Wards (johnwards)
+ - Valtteri R (valtzu)
- Yanick Witschi (toflar)
- Antoine Hérault (herzult)
- Konstantin.Myakshin
@@ -148,18 +149,19 @@ The Symfony Connect username in parenthesis allows to get more information
- Jérôme Vasseur (jvasseur)
- Peter Kokot (peterkokot)
- Brice BERNARD (brikou)
+ - Jacob Dreesen (jdreesen)
+ - Nicolas Philippe (nikophil)
- Martin Auswöger
- Michal Piotrowski
- marc.weistroff
- Lars Strojny (lstrojny)
- lenar
- Vladimir Tsykun (vtsykun)
- - Jacob Dreesen (jdreesen)
- Włodzimierz Gajda (gajdaw)
- - Valtteri R (valtzu)
- - Nicolas Philippe (nikophil)
- Javier Spagnoletti (phansys)
- Adrien Brault (adrienbrault)
+ - Florent Morselli (spomky_)
+ - soyuka
- Florian Voutzinos (florianv)
- Teoh Han Hui (teohhanhui)
- Przemysław Bogusz (przemyslaw-bogusz)
@@ -169,16 +171,19 @@ The Symfony Connect username in parenthesis allows to get more information
- Maximilian Beckers (maxbeckers)
- Baptiste Clavié (talus)
- Alexander Schwenn (xelaris)
+ - Maxime Helias (maxhelias)
- Fabien Pennequin (fabienpennequin)
+ - Dāvis Zālītis (k0d3r1s)
- Gordon Franke (gimler)
- Malte Schlüter (maltemaltesich)
- jeremyFreeAgent (jeremyfreeagent)
- Michael Babker (mbabker)
+ - Alexis Lefebvre
+ - Hugo Alliaume (kocal)
+ - Christopher Hertel (chertel)
- Joshua Thijssen
- Vasilij Dusko
- Daniel Wehner (dawehner)
- - Maxime Helias (maxhelias)
- - Dāvis Zālītis (k0d3r1s)
- Robert Schönthal (digitalkaoz)
- Smaine Milianni (ismail1432)
- François-Xavier de Guillebon (de-gui_f)
@@ -193,36 +198,34 @@ The Symfony Connect username in parenthesis allows to get more information
- Jhonny Lidfors (jhonne)
- Juti Noppornpitak (shiroyuki)
- Gregor Harlan (gharlan)
- - Hugo Alliaume (kocal)
- Anthony MARTIN
- Sebastian Hörl (blogsh)
- Tigran Azatyan (tigranazatyan)
- Florent Mata (fmata)
- - Christopher Hertel (chertel)
- Jonathan Scheiber (jmsche)
- Daniel Gomes (danielcsgomes)
- Hidenori Goto (hidenorigoto)
+ - Thomas Landauer (thomas-landauer)
- Arnaud Kleinpeter (nanocom)
- Guilherme Blanco (guilhermeblanco)
+ - David Prévot (taffit)
- Saif Eddin Gmati (azjezz)
- Farhad Safarov (safarov)
- - Alexis Lefebvre
- SpacePossum
- Richard van Laak (rvanlaak)
- Andreas Braun
- Pablo Godel (pgodel)
- Alessandro Chitolina (alekitto)
+ - Jan Rosier (rosier)
- Rafael Dohms (rdohms)
- Roman Martinuk (a2a4)
- - Thomas Landauer (thomas-landauer)
- jwdeitch
- - David Prévot (taffit)
- Jérôme Parmentier (lctrs)
- Ahmed TAILOULOUTE (ahmedtai)
- Simon Berger
- - soyuka
- Jérémy Derussé
- Matthieu Napoli (mnapoli)
+ - Bob van de Vijver (bobvandevijver)
- Tomas Votruba (tomas_votruba)
- Arman Hosseini (arman)
- Sokolov Evgeniy (ewgraf)
@@ -233,16 +236,15 @@ The Symfony Connect username in parenthesis allows to get more information
- George Mponos (gmponos)
- Richard Shank (iampersistent)
- Roland Franssen :)
+ - Fritz Michael Gschwantner (fritzmg)
- Romain Monteil (ker0x)
- Sergey (upyx)
- - Florent Morselli (spomky_)
- Marco Pivetta (ocramius)
- Antonio Pauletich (x-coder264)
- Vincent Touzet (vincenttouzet)
- Fabien Bourigault (fbourigault)
- Olivier Dolbeau (odolbeau)
- Rouven Weßling (realityking)
- - Bob van de Vijver (bobvandevijver)
- Daniel Burger
- Ben Davies (bendavies)
- YaFou
@@ -251,9 +253,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Oleg Voronkovich
- Helmer Aaviksoo
- Alessandro Lai (jean85)
- - Jan Rosier (rosier)
- 77web
- Gocha Ossinkine (ossinkine)
+ - matlec
- Jesse Rushlow (geeshoe)
- Matthieu Ouellette-Vachon (maoueh)
- Michał Pipa (michal.pipa)
@@ -265,17 +267,18 @@ The Symfony Connect username in parenthesis allows to get more information
- Artur Kotyrba
- Wouter J
- Tyson Andre
- - Fritz Michael Gschwantner (fritzmg)
- GDIBass
- Samuel NELA (snela)
- Baptiste Leduc (korbeil)
- Vincent AUBERT (vincent)
+ - Nate Wiebe (natewiebe13)
- Michael Voříšek
- zairig imad (zairigimad)
- Colin O'Dell (colinodell)
- Sébastien Alfaiate (seb33300)
- James Halsall (jaitsu)
- Christian Scheb
+ - Alex Hofbauer (alexhofbauer)
- Mikael Pajunen
- Warnar Boekkooi (boekkooi)
- Justin Hileman (bobthecow)
@@ -293,27 +296,35 @@ The Symfony Connect username in parenthesis allows to get more information
- Richard Miller
- Quynh Xuan Nguyen (seriquynh)
- Victor Bocharsky (bocharsky_bw)
+ - Asis Pattisahusiwa
- Aleksandar Jakovljevic (ajakov)
- Mario A. Alvarez Garcia (nomack84)
- Thomas Rabaix (rande)
- D (denderello)
- DQNEO
- Chi-teck
+ - Marko Kaznovac (kaznovac)
+ - Stiven Llupa (sllupa)
- Andre Rømcke (andrerom)
- Bram Leeda (bram123)
- Patrick Landolt (scube)
- Karoly Gossler (connorhu)
- Timo Bakx (timobakx)
+ - Quentin Devos
- Giorgio Premi
+ - Alan Poulain (alanpoulain)
- Ruben Gonzalez (rubenrua)
- Benjamin Dulau (dbenjamin)
- Markus Fasselt (digilist)
- Denis Brumann (dbrumann)
- mcfedr (mcfedr)
+ - Loick Piera (pyrech)
- Remon van de Kamp
- Mathieu Lemoine (lemoinem)
- Christian Schmidt
- Andreas Hucks (meandmymonkey)
+ - Artem Lopata
+ - Indra Gunawan (indragunawan)
- Noel Guilbert (noel)
- Bastien Jaillot (bastnic)
- Soner Sayakci
@@ -321,22 +332,22 @@ The Symfony Connect username in parenthesis allows to get more information
- Stepan Anchugov (kix)
- bronze1man
- sun (sun)
+ - Filippo Tessarotto (slamdunk)
- Larry Garfield (crell)
- Leo Feyer
- Nikolay Labinskiy (e-moe)
- - Asis Pattisahusiwa
- Martin Schuhfuß (usefulthink)
- apetitpa
+ - wkania
- Guilliam Xavier
- Pierre Minnieur (pminnieur)
- Dominique Bongiraud
- - Stiven Llupa (sllupa)
- Hugo Monteiro (monteiro)
- Dmitrii Poddubnyi (karser)
- Julien Pauli
+ - Jonathan H. Wage
- Michael Lee (zerustech)
- Florian Lonqueu-Brochard (florianlb)
- - Nate Wiebe (natewiebe13)
- Joe Bennett (kralos)
- Leszek Prabucki (l3l0)
- Wojciech Kania
@@ -349,64 +360,63 @@ The Symfony Connect username in parenthesis allows to get more information
- John Kary (johnkary)
- Võ Xuân Tiến (tienvx)
- fd6130 (fdtvui)
+ - Antonio J. García Lagar (ajgarlag)
- Priyadi Iman Nurcahyo (priyadi)
- - Alan Poulain (alanpoulain)
+ - Oleg Andreyev (oleg.andreyev)
- Maciej Malarz (malarzm)
- Marcin Sikoń (marphi)
- Michele Orselli (orso)
+ - Arjen van der Meijden
- Sven Paulus (subsven)
- - Indra Gunawan (indragunawan)
- Peter Kruithof (pkruithof)
- - Alex Hofbauer (alexhofbauer)
- Maxime Veber (nek-)
- Valentine Boineau (valentineboineau)
- Rui Marinho (ruimarinho)
- - Filippo Tessarotto (slamdunk)
- Jeroen Noten (jeroennoten)
- Possum
- Jérémie Augustin (jaugustin)
- Edi Modrić (emodric)
- Pascal Montoya
- - Loick Piera (pyrech)
- Julien Brochet
- François Pluchino (francoispluchino)
+ - W0rma
- Tristan Darricau (tristandsensio)
- Jan Sorgalla (jsor)
- henrikbjorn
- Marcel Beerta (mazen)
+ - Evert Harmeling (evertharmeling)
- Mantis Development
- - Marko Kaznovac (kaznovac)
- Hidde Wieringa (hiddewie)
- dFayet
- Rob Frawley 2nd (robfrawley)
- Renan (renanbr)
- - Jonathan H. Wage
- Nikita Konstantinov (unkind)
- Dariusz
- Daniel Gorgan
- Francois Zaninotto
+ - Aurélien Pillevesse (aurelienpillevesse)
- Daniel Tschinder
- Christian Schmidt
- Alexander Kotynia (olden)
+ - Matthieu Lempereur (mryamous)
- Elnur Abdurrakhimov (elnur)
- Manuel Reinhard (sprain)
- - Antonio J. García Lagar (ajgarlag)
+ - Zan Baldwin (zanbaldwin)
+ - Tim Goudriaan (codedmonkey)
- BoShurik
- - Quentin Devos
- Adam Prager (padam87)
- Benoît Burnichon (bburnichon)
- maxime.steinhausser
- - Oleg Andreyev (oleg.andreyev)
+ - Iker Ibarguren (ikerib)
- Roman Ring (inori)
- Xavier Montaña Carreras (xmontana)
- - Arjen van der Meijden
- Romaric Drigon (romaricdrigon)
- Sylvain Fabre (sylfabre)
- Xavier Perez
- Arjen Brouwer (arjenjb)
- - Artem Lopata
- Patrick McDougle (patrick-mcdougle)
- Arnt Gulbrandsen
+ - Michel Roca (mroca)
- Marc Weistroff (futurecat)
- Michał (bambucha15)
- Danny Berger (dpb587)
@@ -415,10 +425,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Pierre-Yves Lebecq (pylebecq)
- Benjamin Leveque (benji07)
- Jordan Samouh (jordansamouh)
+ - David Badura (davidbadura)
- Sullivan SENECHAL (soullivaneuh)
- Uwe Jäger (uwej711)
- javaDeveloperKid
- - W0rma
+ - Chris Smith (cs278)
- Lynn van der Berg (kjarli)
- Michaël Perrin (michael.perrin)
- Eugene Leonovich (rybakit)
@@ -428,9 +439,9 @@ The Symfony Connect username in parenthesis allows to get more information
- GordonsLondon
- Ray
- Philipp Cordes (corphi)
+ - Fabien S (bafs)
- Chekote
- Thomas Adam
- - Evert Harmeling (evertharmeling)
- Anderson Müller
- jdhoek
- Jurica Vlahoviček (vjurica)
@@ -454,17 +465,15 @@ The Symfony Connect username in parenthesis allows to get more information
- renanbr
- Sébastien Lavoie (lavoiesl)
- Alex Rock (pierstoval)
- - Matthieu Lempereur (mryamous)
- Wodor Wodorski
- Beau Simensen (simensen)
- Magnus Nordlander (magnusnordlander)
- - Tim Goudriaan (codedmonkey)
- Robert Kiss (kepten)
- - Zan Baldwin (zanbaldwin)
- Alexandre Quercia (alquerci)
- Marcos Sánchez
- Emanuele Panzeri (thepanz)
- Zmey
+ - Santiago San Martin (santysisi)
- Kim Hemsø Rasmussen (kimhemsoe)
- Maximilian Reichel (phramz)
- Samaël Villette (samadu61)
@@ -472,10 +481,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Pascal Luna (skalpa)
- Wouter Van Hecke
- Baptiste Lafontaine (magnetik)
- - Iker Ibarguren (ikerib)
- Michael Hirschler (mvhirsch)
- Michael Holm (hollo)
- Robert Meijers
+ - roman joly (eltharin)
- Blanchon Vincent (blanchonvincent)
- Cédric Anne
- Christian Schmidt
@@ -483,14 +492,16 @@ The Symfony Connect username in parenthesis allows to get more information
- Marco Petersen (ocrampete16)
- Bohan Yang (brentybh)
- Vilius Grigaliūnas
- - David Badura (davidbadura)
- - Chris Smith (cs278)
+ - Jordane VASPARD (elementaire)
- Thomas Bisignani (toma)
- Florian Klein (docteurklein)
+ - Pierre Ambroise (dotordu)
+ - Raphaël Geffroy (raphael-geffroy)
- Damien Alexandre (damienalexandre)
- Manuel Kießling (manuelkiessling)
- Alexey Kopytko (sanmai)
- Warxcell (warxcell)
+ - SiD (plbsid)
- Atsuhiro KUBO (iteman)
- rudy onfroy (ronfroy)
- Serkan Yildiz (srknyldz)
@@ -500,7 +511,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Gabor Toth (tgabi333)
- realmfoo
- Joppe De Cuyper (joppedc)
- - Fabien S (bafs)
- Simon Podlipsky (simpod)
- Thomas Tourlourat (armetiz)
- Andrey Esaulov (andremaha)
@@ -509,6 +519,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Ismael Ambrosi (iambrosi)
- Craig Duncan (duncan3dc)
- Emmanuel BORGES
+ - Mathieu Rochette (mathroc)
+ - Karoly Negyesi (chx)
- Aurelijus Valeiša (aurelijus)
- Jan Decavele (jandc)
- Gustavo Piltcher
@@ -534,7 +546,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Ahmed Raafat
- Philippe Segatori
- Thibaut Cheymol (tcheymol)
- - Aurélien Pillevesse (aurelienpillevesse)
+ - Vincent Chalamon
+ - Raffaele Carelle
- Erin Millard
- Matthew Lewinski (lewinski)
- Islam Israfilov (islam93)
@@ -558,6 +571,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Kai Dederichs
- Pavel Kirpitsov (pavel-kirpichyov)
- Artur Eshenbrener
+ - Issam Raouf (iraouf)
- Harm van Tilborg (hvt)
- Thomas Perez (scullwm)
- Gwendolen Lynch
@@ -566,6 +580,7 @@ The Symfony Connect username in parenthesis allows to get more information
- mondrake (mondrake)
- Yaroslav Kiliba
- FORT Pierre-Louis (plfort)
+ - Jan Böhmer
- Terje Bråten
- Gonzalo Vilaseca (gonzalovilaseca)
- Tarmo Leppänen (tarlepp)
@@ -573,6 +588,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Daniel STANCU
- Kristen Gilden
- Robbert Klarenbeek (robbertkl)
+ - Dalibor Karlović
- Hamza Makraz (makraz)
- Eric Masoero (eric-masoero)
- Vitalii Ekert (comrade42)
@@ -581,8 +597,6 @@ The Symfony Connect username in parenthesis allows to get more information
- hossein zolfi (ocean)
- Alexander Menshchikov
- Clément Gautier (clementgautier)
- - roman joly (eltharin)
- - Jordane VASPARD (elementaire)
- James Gilliland (neclimdul)
- Sanpi (sanpi)
- Eduardo Gulias (egulias)
@@ -599,11 +613,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Kirill chEbba Chebunin
- Pol Dellaiera (drupol)
- Alex (aik099)
+ - Kieran Brahney
- Fabien Villepinte
- - SiD (plbsid)
- Greg Thornton (xdissent)
- Alex Bowers
- - Michel Roca (mroca)
+ - Kev
+ - kor3k kor3k (kor3k)
- Costin Bereveanu (schniper)
- Andrii Dembitskyi
- Gasan Guseynov (gassan)
@@ -621,11 +636,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Saif Eddin G
- Endre Fejes
- Tobias Naumann (tna)
- - Mathieu Rochette (mathroc)
- Daniel Beyer
- Ivan Sarastov (isarastov)
- flack (flack)
- Shein Alexey
+ - Link1515
- Joe Lencioni
- Daniel Tschinder
- Diego Agulló (aeoris)
@@ -633,7 +648,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Kai
- Alain Hippolyte (aloneh)
- Grenier Kévin (mcsky_biig)
- - Karoly Negyesi (chx)
- Xavier HAUSHERR
- Albert Jessurum (ajessu)
- Romain Pierre
@@ -649,7 +663,9 @@ The Symfony Connect username in parenthesis allows to get more information
- a.dmitryuk
- Anthon Pang (robocoder)
- Julien Galenski (ruian)
+ - Benjamin Morel
- Ben Scott (bpscott)
+ - Shyim
- Pablo Lozano (arkadis)
- Brian King
- quentin neyrat (qneyrat)
@@ -662,12 +678,15 @@ The Symfony Connect username in parenthesis allows to get more information
- Ahmed Ghanem (ahmedghanem00)
- Valentin Jonovs
- geoffrey
+ - Quentin Dequippe (qdequippe)
- Benoit Galati (benoitgalati)
- Benjamin (yzalis)
- Jeanmonod David (jeanmonod)
- Webnet team (webnet)
+ - Christian Gripp (core23)
- Tobias Bönner
- Nicolas Rigaud
+ - PHAS Developer
- Ben Ramsey (ramsey)
- Berny Cantos (xphere81)
- Antonio Jose Cerezo (ajcerezo)
@@ -677,23 +696,29 @@ The Symfony Connect username in parenthesis allows to get more information
- Lescot Edouard (idetox)
- Dennis Fridrich (dfridrich)
- Mohammad Emran Hasan (phpfour)
+ - Florian Merle (florian-merle)
- Dmitriy Mamontov (mamontovdmitriy)
- Jan Schumann
- Matheo Daninos (mathdns)
- Neil Peyssard (nepey)
- Niklas Fiekas
- Mark Challoner (markchalloner)
+ - Andreas Hennings
- Markus Bachmann (baachi)
- Gunnstein Lye (glye)
- Erkhembayar Gantulga (erheme318)
+ - Yi-Jyun Pan
- Sergey Melesh (sergex)
- Greg Anderson
+ - Arnaud De Abreu (arnaud-deabreu)
- lancergr
- Benjamin Zaslavsky (tiriel)
- Tri Pham (phamuyentri)
- Angelov Dejan (angelov)
- Ivan Nikolaev (destillat)
- Gildas Quéméner (gquemener)
+ - Ioan Ovidiu Enache (ionutenache)
+ - Mokhtar Tlili (sf-djuba)
- Maxim Dovydenok (dovydenok-maxim)
- Laurent Masforné (heisenberg)
- Claude Khedhiri (ck-developer)
@@ -731,17 +756,19 @@ The Symfony Connect username in parenthesis allows to get more information
- Vitaliy Tverdokhlib (vitaliytv)
- Ariel Ferrandini (aferrandini)
- BASAK Semih (itsemih)
- - Jan Böhmer
- Dirk Pahl (dirkaholic)
- Cédric Lombardot (cedriclombardot)
- Jérémy REYNAUD (babeuloula)
+ - Faizan Akram Dar (faizanakram)
- Arkadius Stefanski (arkadius)
+ - Andy Palmer (andyexeter)
- Jonas Flodén (flojon)
- AnneKir
- Tobias Weichart
- Arnaud POINTET (oipnet)
- Tristan Pouliquen
- Miro Michalicka
+ - Hans Mackowiak
- M. Vondano
- Dominik Zogg
- Maximilian Zumbansen
@@ -752,15 +779,18 @@ The Symfony Connect username in parenthesis allows to get more information
- François Dume (franek)
- Jerzy Lekowski (jlekowski)
- Raulnet
+ - Petrisor Ciprian Daniel
- Oleksiy (alexndlm)
- William Arslett (warslett)
- Giso Stallenberg (gisostallenberg)
- Rob Bast
- Roberto Espinoza (respinoza)
+ - Steven RENAUX (steven_renaux)
- Marvin Feldmann (breyndotechse)
- Soufian EZ ZANTAR (soezz)
- Marek Zajac
- Adam Harvey
+ - Klaus Silveira (klaussilveira)
- ilyes kooli (skafandri)
- Anton Bakai
- battye
@@ -772,7 +802,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Patrick Reimers (preimers)
- Brayden Williams (redstar504)
- insekticid
- - Kieran Brahney
- Jérémy M (th3mouk)
- Trent Steel (trsteel88)
- boombatower
@@ -787,6 +816,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Joshua Nye
- Martin Kirilov (wucdbm)
- Koen Reiniers (koenre)
+ - Kurt Thiemann
- Nathan Dench (ndenc2)
- Gijs van Lammeren
- Sebastian Bergmann
@@ -794,9 +824,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Matthew Grasmick
- Miroslav Šustek (sustmi)
- Pablo Díez (pablodip)
- - Kev
- Kevin McBride
- Sergio Santoro
+ - Jonas Elfering
- Philipp Rieber (bicpi)
- Dmitriy Derepko
- Manuel de Ruiter (manuel)
@@ -804,7 +834,6 @@ The Symfony Connect username in parenthesis allows to get more information
- nikos.sotiropoulos
- BENOIT POLASZEK (bpolaszek)
- Eduardo Oliveira (entering)
- - kor3k kor3k (kor3k)
- Oleksii Zhurbytskyi
- Bilge
- Anatoly Pashin (b1rdex)
@@ -821,6 +850,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Jérôme Vieilledent (lolautruche)
- Roman Anasal
- Filip Procházka (fprochazka)
+ - Sergey Panteleev
- Jeroen Thora (bolle)
- Markus Lanthaler (lanthaler)
- Gigino Chianese (sajito)
@@ -837,9 +867,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Andrew Udvare (audvare)
- siganushka (siganushka)
- alexpods
+ - Quentin Schuler (sukei)
- Adam Szaraniec
- Dariusz Ruminski
- - Pierre Ambroise (dotordu)
+ - Bahman Mehrdad (bahman)
- Romain Gautier (mykiwi)
- Matthieu Bontemps
- Erik Trapman
@@ -854,6 +885,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Fabrice Bernhard (fabriceb)
- Matthijs van den Bos (matthijs)
- Markus S. (staabm)
+ - PatNowak
- Bhavinkumar Nakrani (bhavin4u)
- Jaik Dean (jaikdean)
- Krzysztof Piasecki (krzysztek)
@@ -899,6 +931,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Daniel Tiringer
- Lenar Lõhmus
- Ilija Tovilo (ilijatovilo)
+ - Maxime Pinot (maximepinot)
- Sander Toonen (xatoo)
- Zach Badgett (zachbadgett)
- Loïc Faugeron
@@ -908,9 +941,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Markus Staab
- Forfarle (forfarle)
- Johnny Robeson (johnny)
- - Shyim
- Disquedur
- - Benjamin Morel
- Guilherme Ferreira
- Geoffrey Tran (geoff)
- Jannik Zschiesche
@@ -926,12 +957,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Pierre-Emmanuel Tanguy (petanguy)
- Julien Maulny
- Gennadi Janzen
- - Quentin Dequippe (qdequippe)
- johan Vlaar
- Paul Oms
- James Hemery
- wuchen90
- - PHAS Developer
- Wouter van der Loop (toppy-hennie)
- Ninos
- julien57
@@ -949,7 +978,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Franck RANAIVO-HARISOA (franckranaivo)
- Yi-Jyun Pan
- Egor Taranov
- - Andreas Hennings
- Arnaud Frézet
- Philippe Segatori
- Jon Gotlin (jongotlin)
@@ -975,12 +1003,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Noémi Salaün (noemi-salaun)
- Sinan Eldem (sineld)
- Gennady Telegin
- - Yi-Jyun Pan
+ - Benedikt Lenzen (demigodcode)
- ampaze
- Alexandre Dupuy (satchette)
- Michel Hunziker
- Malte Blättermann
- - Arnaud De Abreu (arnaud-deabreu)
+ - Ilya Levin (ilyachase)
- Simeon Kolev (simeon_kolev9)
- Joost van Driel (j92)
- Jonas Elfering
@@ -998,6 +1026,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Åsmund Garfors
- Maxime Douailin
- Jean Pasdeloup
+ - Maxime COLIN (maximecolin)
+ - Loïc Ovigne (oviglo)
- Lorenzo Millucci (lmillucci)
- Javier López (loalf)
- Reinier Kip
@@ -1025,7 +1055,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Rodrigo Aguilera
- Vladimir Varlamov (iamvar)
- Aurimas Niekis (gcds)
- - Vincent Chalamon
- Matthieu Calie (matth--)
- Sem Schidler (xvilo)
- Benjamin Schoch (bschoch)
@@ -1039,10 +1068,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Pierrick VIGNAND (pierrick)
- Alex Bogomazov (alebo)
- aaa2000 (aaa2000)
- - Andy Palmer (andyexeter)
- Andrew Neil Forster (krciga22)
- Stefan Warman (warmans)
- - Faizan Akram Dar (faizanakram)
- Tristan Maindron (tmaindron)
- Behnoush Norouzali (behnoush)
- Marko H. Tamminen (gzumba)
@@ -1064,6 +1091,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Quentin de Longraye (quentinus95)
- Chris Heng (gigablah)
- Mickaël Buliard (mbuliard)
+ - Jan Nedbal
- Cornel Cruceru (amne)
- Richard Bradley
- Jan Walther (janwalther)
@@ -1077,6 +1105,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Kevin SCHNEKENBURGER
- Geordie
- Fabien Salles (blacked)
+ - Tim Düsterhus
- Andreas Erhard (andaris)
- alexpozzi
- Michael Devery (mickadoo)
@@ -1088,6 +1117,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Luca Saba (lucasaba)
- Sascha Grossenbacher (berdir)
- Guillaume Aveline
+ - nathanpage
- Robin Lehrmann
- Szijarto Tamas
- Thomas P
@@ -1144,7 +1174,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Chris Jones (magikid)
- Massimiliano Braglia (massimilianobraglia)
- Thijs-jan Veldhuizen (tjveldhuizen)
- - Petrisor Ciprian Daniel
- Richard Quadling
- James Hudson (mrthehud)
- Raphaëll Roussel
@@ -1156,7 +1185,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Aleksandr Volochnev (exelenz)
- Robin van der Vleuten (robinvdvleuten)
- Grinbergs Reinis (shima5)
- - Klaus Silveira (klaussilveira)
- Michael Piecko (michael.piecko)
- Toni Peric (tperic)
- yclian
@@ -1176,7 +1204,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Gert de Pagter
- Julien DIDIER (juliendidier)
- Ворожцов Максим (myks92)
- - Dalibor Karlović
- Randy Geraads
- Kevin van Sonsbeek (kevin_van_sonsbeek)
- Simo Heinonen (simoheinonen)
@@ -1191,6 +1218,7 @@ The Symfony Connect username in parenthesis allows to get more infor
10000
mation
- Arun Philip
- Pascal Helfenstein
- Jesper Skytte (greew)
+ - NanoSector
- Petar Obradović
- Baldur Rensch (brensch)
- Carl Casbolt (carlcasbolt)
@@ -1208,8 +1236,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Travis Carden (traviscarden)
- mfettig
- Besnik Br
- - Issam Raouf (iraouf)
- Simon Mönch
+ - Valmonzo
- Sherin Bloemendaal
- Jose Gonzalez
- Jonathan (jlslew)
@@ -1217,6 +1245,7 @@ The Symfony Connect username in parenthesis allows to get more information
- aegypius
- Ilia (aliance)
- Christian Stoller (naitsirch)
+ - COMBROUSE Dimitri
- Dave Marshall (davedevelopment)
- Jakub Kulhan (jakubkulhan)
- Paweł Niedzielski (steveb)
@@ -1241,9 +1270,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Thorry84
- Romanavr
- michaelwilliams
- - Raphaël Geffroy (raphael-geffroy)
- Alexandre Parent
- 1emming
+ - Eric Abouaf (neyric)
- Nykopol (nykopol)
- Thibault Richard (t-richard)
- Jordan Deitch
@@ -1262,10 +1291,10 @@ The Symfony Connect username in parenthesis allows to get more information
- shubhalgupta
- Felds Liscia (felds)
- Benjamin Lebon
- - Sergey Panteleev
- Alexander Grimalovsky (flying)
- Andrew Hilobok (hilobok)
- Noah Heck (myesain)
+ - Sébastien JEAN (sebastien76)
- Christian Soronellas (theunic)
- Max Baldanza
- Volodymyr Panivko
@@ -1280,6 +1309,7 @@ The Symfony Connect username in parenthesis allows to get more information
- izzyp
- Jeroen Fiege (fieg)
- Martin (meckhardt)
+ - Wu (wu-agriconomie)
- Marcel Hernandez
- Evan C
- buffcode
@@ -1295,6 +1325,7 @@ The Symfony Connect username in parenthesis allows to get more information
- _sir_kane (waly)
- Olivier Maisonneuve
- Gálik Pál
+ - Bálint Szekeres
- Andrei C. (moldman)
- Mike Meier (mykon)
- Pedro Miguel Maymone de Resende (pedroresende)
@@ -1306,6 +1337,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Kagan Balga (kagan-balga)
- Nikita Nefedov (nikita2206)
- Alex Bacart
+ - StefanoTarditi
- cgonzalez
- hugovms
- Ben
@@ -1324,12 +1356,10 @@ The Symfony Connect username in parenthesis allows to get more information
- James Michael DuPont
- Tinjo Schöni
- Carlos Buenosvinos (carlosbuenosvinos)
- - Christian Gripp (core23)
- Jake (jakesoft)
- Rustam Bakeev (nommyde)
- Vincent CHALAMON
- Ivan Kurnosov
- - Bahman Mehrdad (bahman)
- Christopher Hall (mythmakr)
- Patrick Dawkins (pjcdawkins)
- Paul Kamer (pkamer)
@@ -1342,6 +1372,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Francisco Alvarez (sormes)
- Martin Parsiegla (spea)
- Maxim Tugaev (tugmaks)
+ - ywisax
- Manuel Alejandro Paz Cetina
- Denis Charrier (brucewouaigne)
- Youssef Benhssaien (moghreb)
@@ -1352,7 +1383,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Pierre Vanliefland (pvanliefland)
- Roy Klutman (royklutman)
- Sofiane HADDAG (sofhad)
- - Quentin Schuler (sukei)
- Antoine M
- frost-nzcr4
- Shahriar56
@@ -1362,6 +1392,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Oriol Viñals
- arai
- Achilles Kaloeridis (achilles)
+ - Sébastien Despont (bouillou)
- Laurent Bassin (lbassin)
- Mouad ZIANI (mouadziani)
- Tomasz Ignatiuk
@@ -1394,6 +1425,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Johnny Peck (johnnypeck)
- Jordi Sala Morales (jsala)
- Sander De la Marche (sanderdlm)
+ - skmedix (skmedix)
- Loic Chardonnet
- Ivan Menshykov
- David Romaní
@@ -1418,6 +1450,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Jason Woods
- mwsaz
- bogdan
+ - wanxiangchwng
- Geert De Deckere
- grizlik
- Derek ROTH
@@ -1432,7 +1465,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Dmytro Boiko (eagle)
- Shin Ohno (ganchiku)
- Matthieu Mota (matthieumota)
- - Maxime Pinot (maximepinot)
- Jean-Baptiste GOMOND (mjbgo)
- Jakub Podhorsky (podhy)
- abdul malik ikhsan (samsonasik)
@@ -1447,7 +1479,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Morten Wulff (wulff)
- Kieran
- Don Pinkster
- - Jonas Elfering
- Maksim Muruev
- Emil Einarsson
- 243083df
@@ -1466,7 +1497,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Johnson Page (jwpage)
- Kuba Werłos (kuba)
- Ruben Gonzalez (rubenruateltek)
- - Mokhtar Tlili (sf-djuba)
- Michael Roterman (wtfzdotnet)
- Philipp Keck
- Pavol Tuka
@@ -1482,6 +1512,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Dominik Ulrich
- den
- Gábor Tóth
+ - Bastien THOMAS
- ouardisoft
- Daniel Cestari
- Matt Janssen
@@ -1509,7 +1540,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Rootie
- Sébastien Santoro (dereckson)
- Daniel Alejandro Castro Arellano (lexcast)
+ - Jiří Bok
- Vincent Chalamon
+ - Farhad Hedayatifard
- Alan ZARLI
- Thomas Jarrand
- Baptiste Leduc (bleduc)
@@ -1530,8 +1563,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Guillaume Gammelin
- Valérian Galliat
- Sorin Pop (sorinpop)
+ - Elías Fernández
- d-ph
- Stewart Malik
+ - Frank Schulze (xit)
- Renan Taranto (renan-taranto)
- Ninos Ego
- Samael tomas
@@ -1573,10 +1608,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Jérôme Nadaud (jnadaud)
- Frank Naegler
- Sam Malone
+ - Damien Fernandes
- Ha Phan (haphan)
- Chris Jones (leek)
- neghmurken
- stefan.r
+ - Florian Cellier
- xaav
- Jean-Christophe Cuvelier [Artack]
- Mahmoud Mostafa (mahmoud)
@@ -1600,7 +1637,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Grégoire Hébert (gregoirehebert)
- Franz Wilding (killerpoke)
- Ferenczi Krisztian (fchris82)
- - Ioan Ovidiu Enache (ionutenache)
- Artyum Petrov
- Oleg Golovakhin (doc_tr)
- Guillaume Smolders (guillaumesmo)
@@ -1617,6 +1653,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Michael H. Arieli
- Miloš Milutinović
- Jitendra Adhikari (adhocore)
+ - Kevin Jansen
- Nicolas Martin (cocorambo)
- Tom Panier (neemzy)
- Fred Cox
@@ -1624,6 +1661,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Luciano Mammino (loige)
- LHommet Nicolas (nicolaslh)
- fabios
+ - eRIZ
- Sander Coolen (scoolen)
- Vic D'Elfant (vicdelfant)
- Amirreza Shafaat (amirrezashafaat)
@@ -1631,6 +1669,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Adoni Pavlakis (adoni)
- Nicolas Le Goff (nlegoff)
- Maarten Nusteling (nusje2000)
+ - Peter van Dommelen
- Anne-Sophie Bachelard
- Gordienko Vladislav
- Ahmed EBEN HASSINE (famas23)
@@ -1639,12 +1678,13 @@ The Symfony Connect username in parenthesis allows to get more information
- Chris de Kok
- Eduard Bulava (nonanerz)
- Andreas Kleemann (andesk)
- - Ilya Levin (ilyachase)
- Hubert Moreau (hmoreau)
- Nicolas Appriou
+ - Silas Joisten (silasjoisten)
- Igor Timoshenko (igor.timoshenko)
- Pierre-Emmanuel CAPEL
- Manuele Menozzi
+ - Yevhen Sidelnyk
- “teerasak”
- Anton Babenko (antonbabenko)
- Irmantas Šiupšinskas (irmantas)
@@ -1657,7 +1697,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Nicolas Valverde
- Konstantin S. M. Möllers (ksmmoellers)
- Ken Stanley
- - Raffaele Carelle
- ivan
- Zachary Tong (polyfractal)
- linh
@@ -1674,6 +1713,7 @@ The Symfony Connect username in parenthesis allows to get more information
- hamza
- dantleech
- Kajetan Kołtuniak (kajtii)
+ - Dan (dantleech)
- Sander Goossens (sandergo90)
- Rudy Onfroy
- Tero Alén (tero)
@@ -1690,6 +1730,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Abdiel Carrazana (abdielcs)
- joris
- Vadim Tyukov (vatson)
+ - alanzarli
- Arman
- Gabi Udrescu
- Adamo Crespi (aerendir)
@@ -1713,6 +1754,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Ondřej Frei
- Bruno Rodrigues de Araujo (brunosinister)
- Máximo Cuadros (mcuadros)
+ - Arkalo2
- Jacek Wilczyński (jacekwilczynski)
- Christoph Kappestein
- Camille Baronnet
@@ -1743,11 +1785,13 @@ The Symfony Connect username in parenthesis allows to get more information
- Asil Barkin Elik (asilelik)
- Bhujagendra Ishaya
- Guido Donnari
+ - Jérôme Dumas
- Mert Simsek (mrtsmsk0)
- Lin Clark
- Christophe Meneses (c77men)
- Jeremy David (jeremy.david)
- Andrei O
+ - gr8b
- Michał Marcin Brzuchalski (brzuchal)
- Jordi Rejas
- Troy McCabe
@@ -1779,12 +1823,16 @@ The Symfony Connect username in parenthesis allows to get more information
- Evgeny Anisiforov
- otsch
- TristanPouliquen
+ - Dominic Luidold
- Piotr Antosik (antek88)
- Nacho Martin (nacmartin)
+ - Thomas Bibaut
- Thibaut Chieux
- mwos
+ - Aydin Hassan
- Volker Killesreiter (ol0lll)
- Vedran Mihočinec (v-m-i)
+ - Rafał Treffler
- Sergey Novikov (s12v)
- creiner
- Jan Pintr
@@ -1819,11 +1867,13 @@ The Symfony Connect username in parenthesis allows to get more information
- Philipp Fritsche
- Léon Gersen
- tarlepp
+ - Giuseppe Arcuti
- Dustin Wilson
- Benjamin Paap (benjaminpaap)
- Claus Due (namelesscoder)
- Christian
- Alexandru Patranescu
+ - Sébastien Lévêque (legenyes)
- ju1ius
- Denis Golubovskiy (bukashk0zzz)
- Arkadiusz Rzadkowolski (flies)
@@ -1833,7 +1883,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Mikkel Paulson
- Michał Strzelecki
- Bert Ramakers
- - Hans Mackowiak
- Hugo Fonseca (fonsecas72)
- Marc Duboc (icemad)
- uncaught
@@ -1873,6 +1922,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Kamil Musial
- Lucas Bustamante
- Olaf Klischat
+ - Andrii
- orlovv
- Claude Dioudonnat
- Jonathan Hedstrom
@@ -1918,11 +1968,14 @@ The Symfony Connect username in parenthesis allows to get more information
- Joas Schilling
- Ener-Getick
- Markus Thielen
+ - Peter Trebaticky
- Moza Bogdan (bogdan_moza)
- Viacheslav Sychov
+ - Zuruuh
- Nicolas Sauveur (baishu)
- Helmut Hummel (helhum)
- Matt Brunt
+ - David Vancl
- Carlos Ortega Huetos
- Péter Buri (burci)
- Evgeny Efimov (edefimov)
@@ -1942,7 +1995,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Oleg Sedinkin (akeylimepie)
- Jérémy Jourdin (jjk801)
- BRAMILLE Sébastien (oktapodia)
- - Loïc Ovigne (oviglo)
- Artem Kolesnikov (tyomo4ka)
- Markkus Millend
- Clément
@@ -1958,14 +2010,20 @@ The Symfony Connect username in parenthesis allows to get more information
- rchoquet
- v.shevelev
- rvoisin
+ - Dan Brown
- gitlost
- Taras Girnyk
+ - Simon Mönch
+ - Barthold Bos
- cthulhu
- Andoni Larzabal (andonilarz)
+ - Wolfgang Klinger (wolfgangklingerplan2net)
+ - Staormin
- Dmitry Derepko
- Rémi Leclerc
- Jan Vernarsky
- Ionut Cioflan
+ - John Edmerson Pizarra
- Sergio
- Jonas Hünig
- Mehrdad
@@ -1973,6 +2031,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Eduardo García Sanz (coma)
- Arend Hummeling
- Makdessi Alex
+ - Dmitrii Baranov
- fduch (fduch)
- Juan Miguel Besada Vidal (soutlink)
- Takashi Kanemoto (ttskch)
@@ -2034,6 +2093,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Vladimir Mantulo (mantulo)
- Boullé William (williamboulle)
- Jesper Noordsij
+ - Bart Baaten
- Frederic Godfrin
- Paul Matthews
- aim8604
@@ -2068,6 +2128,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Dalibor Karlović
- Cesar Scur (cesarscur)
- Cyril Vermandé (cyve)
+ - Daniele Orru' (danydev)
- Raul Garcia Canet (juagarc4)
- Sagrario Meneses
- Dmitri Petmanson
@@ -2086,7 +2147,9 @@ The Symfony Connect username in parenthesis allows to get more information
- martkop26
- Raphaël Davaillaud
- Sander Hagen
+ - Alexander Menk
- cilefen (cilefen)
+ - Prasetyo Wicaksono (jowy)
- Mo Di (modi)
- Victor Truhanovich (victor_truhanovich)
- Pablo Schläpfer
@@ -2134,10 +2197,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Tim Ward
- Adiel Cristo (arcristo)
- Christian Flach (cmfcmf)
+ - Dennis Jaschinski (d.jaschinski)
- Fabian Kropfhamer (fabiank)
- Jeffrey Cafferata (jcidnl)
- Junaid Farooq (junaidfarooq)
- Lars Ambrosius Wallenborn (larsborn)
+ - Pavel Starosek (octisher)
- Oriol Mangas Abellan (oriolman)
- Sebastian Göttschkes (sgoettschkes)
- Marcin Nowak
@@ -2147,6 +2212,7 @@ The Symfony Connect username in parenthesis allows to get more information
- omniError
- Zander Baldwin
- László GÖRÖG
+ - djordy
- Kévin Gomez (kevin)
- Mihai Nica (redecs)
- Andrei Igna
@@ -2161,6 +2227,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Maxime THIRY
- Norman Soetbeer
- Ludek Stepan
+ - Benjamin BOUDIER
- Frederik Schwan
- Mark van den Berg
- Aaron Stephens (astephens)
@@ -2191,6 +2258,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Harald Tollefsen
- PabloKowalczyk
- Matthieu
+ - ZiYao54
- Arend-Jan Tetteroo
- Albin Kerouaton
- Sébastien HOUZÉ
@@ -2199,6 +2267,7 @@ The Symfony Connect username in parenthesis allows to get more information
- wivaku
- Markus Reinhold
- Jingyu Wang
+ - es
- steveYeah
- Asrorbek (asrorbek)
- Samy D (dinduks)
@@ -2213,6 +2282,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Alan Scott
- Juanmi Rodriguez Cerón
- twifty
+ - David Szkiba
- Andy Raines
- François Poguet
- Anthony Ferrara
@@ -2231,6 +2301,7 @@ The Symfony Connect username in parenthesis allows to get more information
- xdavidwu
- Benjamin RICHARD
- Raphaël Droz
+ - Vladimir Pakhomchik
- pdommelen
- Eric Stern
- ShiraNai7
@@ -2248,8 +2319,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Ilya Chekalsky
- Ostrzyciel
- George Giannoulopoulos
+ - Thibault G
- Alexander Pasichnik (alex_brizzz)
- - Florian Merle (florian-merle)
+ - Felix Eymonot (hyanda)
- Luis Ramirez (luisdeimos)
- Ilia Sergunin (maranqz)
- Daniel Richter (richtermeister)
@@ -2260,6 +2332,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Willem Verspyck
- Kim Laï Trinh
- Johan de Ruijter
+ - InbarAbraham
- Jason Desrosiers
- m.chwedziak
- marbul
@@ -2276,7 +2349,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Frank Neff (fneff)
- Volodymyr Kupriienko (greeflas)
- Ilya Biryukov (ibiryukov)
+ - Mathieu Ledru (matyo91)
- Roma (memphys)
+ - Jozef Môstka (mostkaj)
- Florian Caron (shalalalala)
- Serhiy Lunak (slunak)
- Wojciech Błoszyk (wbloszyk)
@@ -2305,6 +2380,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Tom Corrigan (tomcorrigan)
- Luis Galeas
- Bogdan Scordaliu
+ - Sven Scholz
- Martin Pärtel
- Daniel Rotter (danrot)
- Frédéric Bouchery (fbouchery)
@@ -2313,6 +2389,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Phillip Look (plook)
- Foxprodev
- Artfaith
+ - Tom Kaminski
- developer-av
- Max Summe
- Ema Panz
@@ -2374,6 +2451,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Ivan Tse
- René Kerner
- Nathaniel Catchpole
+ - Jontsa
+ - Igor Plantaš
- upchuk
- Adrien Samson (adriensamson)
- Samuel Gordalina (gordalina)
@@ -2381,7 +2460,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Nicolas Eeckeloo (neeckeloo)
- Andriy Prokopenko (sleepyboy)
- Dariusz Ruminski
- - Bálint Szekeres
- Starfox64
- Ivo Valchev
- Thomas Hanke
@@ -2392,8 +2470,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Wickex
- tuqqu
- Wojciech Gorczyca
+ - Ahmad Al-Naib
- Neagu Cristian-Doru (cristian-neagu)
- Mathieu Morlon (glutamatt)
+ - NIRAV MUKUNDBHAI PATEL (niravpatel919)
- Owen Gray (otis)
- Rafał Muszyński (rafmus90)
- Sébastien Decrême (sebdec)
@@ -2420,6 +2500,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Serhii Smirnov
- Robert Queck
- Peter Bouwdewijn
+ - Kurt Thiemann
- Martins Eglitis
- Daniil Gentili
- Eduard Morcinek
@@ -2428,6 +2509,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Matěj Humpál
- Kasper Hansen
- Nico Hiort af Ornäs
+ - Eddy
- Amine Matmati
- Kristen Gilden
- caalholm
@@ -2477,21 +2559,26 @@ The Symfony Connect username in parenthesis allows to get more information
- Thomas Ploch
- Victor Prudhomme
- Simon Neidhold
+ - Wouter Ras
+ - Gil Hadad
- Valentin VALCIU
- Jeremiah VALERIE
- Alexandre Beaujour
- Franck Ranaivo-Harisoa
+ - Grégoire Rabasse
- Cas van Dongen
- Patrik Patie Gmitter
- George Yiannoulopoulos
- Yannick Snobbert
- Kevin Dew
- James Cowgill
+ - Žan V. Dragan
- sensio
- Julien Menth (cfjulien)
- Lyubomir Grozdanov (lubo13)
- Nicolas Schwartz (nicoschwartz)
- Tim Jabs (rubinum)
+ - Schvoy Norbert (schvoy)
- Stéphane Seng (stephaneseng)
- Peter Schultz
- Robert Korulczyk
@@ -2499,6 +2586,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Benhssaein Youssef
- Benoit Leveque
- bill moll
+ - chillbram
- Benjamin Bender
- PaoRuby
- Holger Lösken
@@ -2544,6 +2632,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Thomas Beaujean
- alireza
- Michael Bessolov
+ - sauliusnord
- Zdeněk Drahoš
- Dan Harper
- moldcraft
@@ -2560,6 +2649,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Tobias Genberg (lorceroth)
- Michael Simonson (mikes)
- Nicolas Badey (nico-b)
+ - Florent Blaison (orkin)
- Olivier Scherler (oscherler)
- Flo Gleixner (redflo)
- Romain Jacquart (romainjacquart)
@@ -2588,7 +2678,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Tiago Garcia (tiagojsag)
- Artiom
- Jakub Simon
+ - TheMhv
- Eviljeks
+ - Juliano Petronetto
- robin.de.croock
- Brandon Antonio Lorenzo
- Bouke Haarsma
@@ -2597,13 +2689,15 @@ The Symfony Connect username in parenthesis allows to get more information
- Radosław Kowalewski
- Enrico Schultz
- tpetry
+ - Nikita Sklyarov
- JustDylan23
- Juraj Surman
- - ywisax
- Martin Eckhardt
- natechicago
+ - DaikiOnodera
- Victor
- Andreas Allacher
+ - Abdelilah Jabri
- Alexis
- Leonid Terentyev
- Sergei Gorjunov
@@ -2618,9 +2712,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Anton Sukhachev (mrsuh)
- Pavlo Pelekh (pelekh)
- Stefan Kleff (stefanxl)
+ - RichardGuilland
- Marcel Siegert
- ryunosuke
- Bruno BOUTAREL
+ - Athorcis
- John Stevenson
- everyx
- Richard Heine
@@ -2678,10 +2774,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Abdouarrahmane FOUAD (fabdouarrahmane)
- Jakub Janata (janatjak)
- Jm Aribau (jmaribau)
+ - Maciej Paprocki (maciekpaprocki)
- Matthew Foster (mfoster)
- Paul Seiffert (seiffert)
- Vasily Khayrulin (sirian)
- Stas Soroka (stasyan)
+ - Thomas Dubuffet (thomasdubuffet)
- Stefan Hüsges (tronsha)
- Jake Bishop (yakobeyak)
- Dan Blows
@@ -2696,6 +2794,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Andrew Coulton
- Ulugbek Miniyarov
- Jeremy Benoist
+ - Antoine Beyet
- Michal Gebauer
- René Landgrebe
- Phil Davis
@@ -2746,6 +2845,7 @@ The Symfony Connect username in parenthesis allows to get more information
- botbotbot
- tatankat
- Cláudio Cesar
+ - Sven Nolting
- Timon van der Vorm
- nuncanada
- Thierry Marianne
@@ -2775,16 +2875,17 @@ The Symfony Connect username in parenthesis allows to get more information
- Botond Dani (picur)
- Rémi Faivre (rfv)
- Radek Wionczek (rwionczek)
+ - tinect (tinect)
- Nick Stemerdink
- Bernhard Rusch
- David Stone
- Vincent Bouzeran
+ - fabi
- Grayson Koonce
- Ruben Jansen
- Wissame MEKHILEF
- Mihai Stancu
- shreypuranik
- - NanoSector
- Thibaut Salanon
- Romain Dorgueil
- Christopher Parotat
@@ -2870,6 +2971,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Yasmany Cubela Medina (bitgandtter)
- Michał Dąbrowski (defrag)
- Aryel Tupinamba (dfkimera)
+ - Elías (eliasfernandez)
- Hans Höchtl (hhoechtl)
- Simone Fumagalli (hpatoio)
- Brian Graham (incognito)
@@ -2892,6 +2994,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Artem Lopata (bumz)
- Soha Jin
- alex
+ - Alex Niedre
- evgkord
- Roman Orlov
- Simon Ackermann
@@ -2917,7 +3020,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Julien Moulin (lizjulien)
- Raito Akehanareru (raito)
- Mauro Foti (skler)
- - skmedix (skmedix)
- Thibaut Arnoud (thibautarnoud)
- Valmont Pehaut-Pietri (valmonzo)
- Yannick Warnier (ywarnier)
@@ -2957,6 +3059,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Viet Pham
- Alan Bondarchuk
- Pchol
+ - Benjamin Ellis
- Shamimul Alam
- Cyril HERRERA
- dropfen
@@ -2988,6 +3091,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Cyrille Bourgois (cyrilleb)
- Damien Vauchel (damien_vauchel)
- Dmitrii Fedorenko (dmifedorenko)
+ - William Pinaud (docfx)
- Frédéric G. Marand (fgm)
- Freek Van der Herten (freekmurze)
- Luca Genuzio (genuzio)
@@ -3018,6 +3122,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Darryl Hein (xmmedia)
- Vladimir Sadicov (xtech)
- Marcel Berteler
+ - Ruud Seberechts
- sdkawata
- Frederik Schmitt
- Peter van Dommelen
@@ -3055,6 +3160,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Pierre Rineau
- Florian Morello
- Maxim Lovchikov
+ - ivelin vasilev
- adenkejawen
- Florent SEVESTRE (aniki-taicho)
- Ari Pringle (apringle)
@@ -3073,6 +3179,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Ashura
- Götz Gottwald
- Alessandra Lai
+ - timesince
- alangvazq
- Christoph Krapp
- Ernest Hymel
@@ -3154,6 +3261,7 @@ The Symfony Connect username in parenthesis allows to get more information
- dakur
- florian-michael-mast
- tourze
+ - Dario Guarracino
- sam-bee
- Vlad Dumitrache
- wetternest
@@ -3199,6 +3307,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Rosio (ben-rosio)
- Simon Paarlberg (blamh)
- Masao Maeda (brtriver)
+ - Alexander Dmitryuk (coden1)
- Valery Maslov (coderberg)
- Damien Harper (damien.harper)
- Darius Leskauskas (darles)
@@ -3209,6 +3318,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Dominik Hajduk (dominikalp)
- Tomáš Polívka (draczris)
- Dennis Smink (dsmink)
+ - Duncan de Boer (farmer-duck)
- Franz Liedke (franzliedke)
- Gaylord Poillon (gaylord_p)
- gondo (gondo)
@@ -3216,6 +3326,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Grummfy (grummfy)
- Hadrien Cren (hcren)
- Gusakov Nikita (hell0w0rd)
+ - Halil Hakan Karabay (hhkrby)
- Oz (import)
- Jaap van Otterdijk (jaapio)
- Javier Núñez Berrocoso (javiernuber)
@@ -3226,6 +3337,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Kevin Verschaeve (keversc)
- Kevin Herrera (kherge)
- Kubicki Kamil (kubik)
+ - Lauris Binde (laurisb)
- Luis Ramón López López (lrlopez)
- Vladislav Nikolayev (luxemate)
- Martin Mandl (m2mtech)
@@ -3250,7 +3362,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Jimmy Leger (redpanda)
- Ronny López (ronnylt)
- Julius (sakalys)
- - Sébastien JEAN (sebastien76)
- Dmitry (staratel)
- Marcin Szepczynski (szepczynski)
- Tito Miguel Costa (titomiguelcosta)
@@ -3265,11 +3376,13 @@ The Symfony Connect username in parenthesis allows to get more information
- Pavel Barton
- Exploit.cz
- GuillaumeVerdon
+ - Dmitry Danilson
- Marien Fressinaud
- ureimers
- akimsko
- Youpie
- Jason Stephens
+ - Korvin Szanto
- srsbiz
- Taylan Kasap
- Michael Orlitzky
@@ -3300,8 +3413,10 @@ The Symfony Connect username in parenthesis allows to get more information
- Evgeniy Koval
- Lars Moelleken
- dasmfm
+ - Karel Syrový
- Claas Augner
- Mathias Geat
+ - neodevcode
- Angel Fernando Quiroz Campos (angelfqc)
- Arnaud Buathier (arnapou)
- Curtis (ccorliss)
@@ -3347,9 +3462,12 @@ The Symfony Connect username in parenthesis allows to get more information
- jersoe
- Brian Debuire
- Eric Grimois
+ - Christian Schiffler
- Piers Warmers
- Sylvain Lorinet
+ - Pavol Tuka
- klyk50
+ - Colin Michoudet
- jc
- BenjaminBeck
- Aurelijus Rožėnas
@@ -3379,6 +3497,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Philipp
- lol768
- jamogon
+ - Tom Hart
- Vyacheslav Slinko
- Benjamin Laugueux
- guangwu
@@ -3393,6 +3512,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Menno Holtkamp
- Ser5
- Michael Hudson-Doyle
+ - Matthew Burns
- Daniel Bannert
- Karim Miladi
- Michael Genereux
@@ -3430,6 +3550,7 @@ The Symfony Connect username in parenthesis allows to get more information
- brian978
- Michael Schneider
- n-aleha
+ - Richard Čepas
- Talha Zekeriya Durmuş
- Anatol Belski
- Javier
@@ -3438,6 +3559,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Kaipi Yann
- wiseguy1394
- adam-mospan
+ - AUDUL
- Steve Hyde
- AbdelatifAitBara
- nerdgod
@@ -3473,6 +3595,7 @@ The Symfony Connect username in parenthesis allows to get more information
- mieszko4
- Steve Preston
- ibasaw
+ - koyolgecen
- Wojciech Skorodecki
- Kevin Frantz
- Neophy7e
@@ -3482,7 +3605,6 @@ The Symfony Connect username in parenthesis allows to get more information
- andrey-tech
- David Ronchaud
- Chris McGehee
- - Bastien THOMAS
- Shaun Simmons
- Pierre-Louis LAUNAY
- Arseny Razin
@@ -3503,6 +3625,7 @@ The Symfony Connect username in parenthesis allows to get more information
- satalaondrej
- Matthias Dötsch
- jonmldr
+ - Nowfel2501
- Yevgen Kovalienia
- Lebnik
- Shude
@@ -3517,12 +3640,14 @@ The Symfony Connect username in parenthesis allows to get more information
- Thorsten Hallwas
- Brian Freytag
- Arend Hummeling
+ - Joseph FRANCLIN
- Marco Pfeiffer
- Alex Nostadt
- Michael Squires
- Egor Gorbachev
- Julian Krzefski
- Derek Stephen McLean
+ - PatrickRedStar
- Norman Soetbeer
- zorn
- Yuriy Potemkin
@@ -3562,8 +3687,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Michal Čihař
- parhs
- Harry Wiseman
+ - Emilien Escalle
+ - jwaguet
- Diego Campoy
- Oncle Tom
+ - Roland Franssen :)
- Sam Anthony
- Christian Stocker
- Oussama Elgoumri
@@ -3590,18 +3718,19 @@ The Symfony Connect username in parenthesis allows to get more information
- Sean Templeton
- Willem Mouwen
- db306
+ - Bohdan Pliachenko
- Dr. Gianluigi "Zane" Zanettini
- Michaël VEROUX
- Julia
- Lin Lu
- arduanov
- - Valmonzo
- sualko
- Marc Bennewitz
- Fabien
- Martin Komischke
- Yendric
- ADmad
+ - Hugo Posnic
- Nicolas Roudaire
- Marc Jauvin
- Matthias Meyer
@@ -3624,11 +3753,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Bernd Matzner (bmatzner)
- Vladimir Vasilev (bobahvas)
- Anton (bonio)
- - Sébastien Despont (bouillou)
- Bram Tweedegolf (bram_tweedegolf)
- Brandon Kelly (brandonkelly)
- Choong Wei Tjeng (choonge)
- Bermon Clément (chou666)
+ - Chris Shennan (chrisshennan)
- Citia (citia)
- Kousuke Ebihara (co3k)
- Loïc Vernet (coil)
@@ -3661,6 +3790,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Peter Orosz (ill_logical)
- Ilia Lazarev (ilzrv)
- Imangazaliev Muhammad (imangazaliev)
+ - wesign (inscrutable01)
- Arkadiusz Kondas (itcraftsmanpl)
- j0k (j0k)
- joris de wit (jdewit)
@@ -3734,6 +3864,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Julien Sanchez (sumbobyboys)
- Ron Gähler (t-ronx)
- Guillermo Gisinger (t3chn0r)
+ - Tomáš Korec (tomkorec)
- Tom Newby (tomnewbyau)
- Andrew Clark (tqt_andrew_clark)
- Aaron Piotrowski (trowski)
@@ -3771,9 +3902,11 @@ The Symfony Connect username in parenthesis allows to get more information
- damaya
- Kevin Weber
- Alexandru Năstase
+ - Carl Julian Sauter
- Dionysis Arvanitis
- Sergey Fedotov
- Konstantin Scheumann
+ - Josef Hlavatý
- Michael
- fh-github@fholzhauer.de
- rogamoore
@@ -3787,6 +3920,7 @@ The Symfony Connect username in parenthesis allows to get more information
- Romain
- Xavier REN
- Kevin Meijer
+ - Ignacio Alveal
- max
- Alexander Bauer (abauer)
- Ahmad Mayahi (ahmadmayahi)
@@ -3801,7 +3935,6 @@ The Symfony Connect username in parenthesis allows to get more information
- Courcier Marvin (helyakin)
- Henne Van Och (hennevo)
- Jeroen De Dauw (jeroendedauw)
- - Maxime COLIN (maximecolin)
- Muharrem Demirci (mdemirci)
- Evgeny Z (meze)
- Aleksandar Dimitrov (netbull)
diff --git a/README.md b/README.md
index ecac2d733dd13..d63c544916613 100644
--- a/README.md
+++ b/README.md
@@ -17,10 +17,14 @@ Installation
Sponsor
-------
-Symfony 7.1 is [backed][27] by
-- [Rector][29]
-- [JoliCode][30]
-- [Les-Tilleuls.coop][31]
+Symfony 7.2 is [backed][27] by
+- [Sulu][29]
+- [Rector][30]
+
+**Sulu** is the CMS for Symfony developers. It provides pre-built content-management
+features while giving developers the freedom to build, deploy, and maintain custom
+solutions using full-stack Symfony. Sulu is ideal for creating complex websites,
+integrating external tools, and building custom-built solutions.
**Rector** helps successful and growing companies to get the most of the code
they already have. Including upgrading to the latest Symfony LTS. They deliver
@@ -28,15 +32,6 @@ automated refactoring, reduce maintenance costs, speed up feature delivery, and
transform legacy code into a strategic asset. They can handle the dirty work,
so you can focus on the features.
-**JoliCode** is a team of passionate developers and open-source lovers, with a
-strong expertise in PHP & Symfony technologies. They can help you build your
-projects using state-of-the-art practices.
-
-**Les-Tilleuls.coop** is a team of 70+ Symfony experts who can help you design, develop and
-fix your projects. They provide a wide range of professional services including development,
-consulting, coaching, training and audits. They also are highly skilled in JS, Go and DevOps.
-They are a worker cooperative!
-
Help Symfony by [sponsoring][28] its development!
Documentation
@@ -101,6 +96,5 @@ and supported by [Symfony contributors][19].
[26]: https://symfony.com/book
[27]: https://symfony.com/backers
[28]: https://symfony.com/sponsor
-[29]: https://getrector.com
-[30]: https://jolicode.com
-[31]: https://les-tilleuls.coop
+[29]: https://sulu.io
+[30]: https://getrector.com
diff --git a/composer.json b/composer.json
index 49162a3b81f8a..0f9b274fd697c 100644
--- a/composer.json
+++ b/composer.json
@@ -38,7 +38,7 @@
"composer/semver": "^3.0",
"ext-xml": "*",
"doctrine/event-manager": "^2",
- "doctrine/persistence": "^3.1",
+ "doctrine/persistence": "^3.1|^4",
"twig/twig": "^3.12",
"psr/cache": "^2.0|^3.0",
"psr/clock": "^1.0",
diff --git a/phpunit b/phpunit
index 94baca39735ba..dafe2953a0aa6 100755
--- a/phpunit
+++ b/phpunit
@@ -1,10 +1,6 @@
#!/usr/bin/env php
diff --git a/src/Symfony/Bridge/Doctrine/Messenger/DoctrineTransactionMiddleware.php b/src/Symfony/Bridge/Doctrine/Messenger/DoctrineTransactionMiddleware.php
index e4831557f01db..8e10891b0ba74 100644
--- a/src/Symfony/Bridge/Doctrine/Messenger/DoctrineTransactionMiddleware.php
+++ b/src/Symfony/Bridge/Doctrine/Messenger/DoctrineTransactionMiddleware.php
@@ -27,15 +27,17 @@ class DoctrineTransactionMiddleware extends AbstractDoctrineMiddleware
protected function handleForManager(EntityManagerInterface $entityManager, Envelope $envelope, StackInterface $stack): Envelope
{
$entityManager->getConnection()->beginTransaction();
+
+ $success = false;
try {
$envelope = $stack->next()->handle($envelope, $stack);
$entityManager->flush();
$entityManager->getConnection()->commit();
+ $success = true;
+
return $envelope;
} catch (\Throwable $exception) {
- $entityManager->getConnection()->rollBack();
-
if ($exception instanceof HandlerFailedException) {
// Remove all HandledStamp from the envelope so the retry will execute all handlers again.
// When a handler fails, the queries of allegedly successful previous handlers just got rolled back.
@@ -43,6 +45,12 @@ protected function handleForManager(EntityManagerInterface $entityManager, Envel
}
throw $exception;
+ } finally {
+ $connection = $entityManager->getConnection();
+
+ if (!$success && $connection->isTransactionActive()) {
+ $connection->rollBack();
+ }
}
}
}
diff --git a/src/Symfony/Bridge/Doctrine/SchemaListener/AbstractSchemaListener.php b/src/Symfony/Bridge/Doctrine/SchemaListener/AbstractSchemaListener.php
index 6f3410313d00a..cfe07b37da493 100644
--- a/src/Symfony/Bridge/Doctrine/SchemaListener/AbstractSchemaListener.php
+++ b/src/Symfony/Bridge/Doctrine/SchemaListener/AbstractSchemaListener.php
@@ -13,6 +13,9 @@
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Exception\TableNotFoundException;
+use Doctrine\DBAL\Schema\Name\Identifier;
+use Doctrine\DBAL\Schema\Name\UnqualifiedName;
+use Doctrine\DBAL\Schema\PrimaryKeyConstraint;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs;
@@ -30,7 +33,12 @@ protected function getIsSameDatabaseChecker(Connection $connection): \Closure
$table->addColumn('id', Types::INTEGER)
->setAutoincrement(true)
->setNotnull(true);
- $table->setPrimaryKey(['id']);
+
+ if (class_exists(PrimaryKeyConstraint::class)) {
+ $table->addPrimaryKeyConstraint(new PrimaryKeyConstraint(null, [new UnqualifiedName(Identifier::unquoted('id'))], true));
+ } else {
+ $table->setPrimaryKey(['id']);
+ }
$schemaManager->createTable($table);
diff --git a/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php b/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php
index 251b011b5d44e..79cc0f0a31a4d 100644
--- a/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php
+++ b/src/Symfony/Bridge/Doctrine/Security/RememberMe/DoctrineTokenProvider.php
@@ -13,6 +13,9 @@
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\ParameterType;
+use Doctrine\DBAL\Schema\Name\Identifier;
+use Doctrine\DBAL\Schema\Name\UnqualifiedName;
+use Doctrine\DBAL\Schema\PrimaryKeyConstraint;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Types;
use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentToken;
@@ -193,6 +196,11 @@ private function addTableToSchema(Schema $schema): void
$table->addColumn('lastUsed', Types::DATETIME_IMMUTABLE);
$table->addColumn('class', Types::STRING, ['length' => 100]);
$table->addColumn('username', Types::STRING, ['length' => 200]);
- $table->setPrimaryKey(['series']);
+
+ if (class_exists(PrimaryKeyConstraint::class)) {
+ $table->addPrimaryKeyConstraint(new PrimaryKeyConstraint(null, [new UnqualifiedName(Identifier::unquoted('series'))], true));
+ } else {
+ $table->setPrimaryKey(['series']);
+ }
}
}
diff --git a/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php b/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
index c6ddb921f1e21..78b962dfdbcae 100644
--- a/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
+++ b/src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php
@@ -100,6 +100,8 @@ public function refreshUser(UserInterface $user): UserInterface
if ($refreshedUser instanceof Proxy && !$refreshedUser->__isInitialized()) {
$refreshedUser->__load();
+ } elseif (\PHP_VERSION_ID >= 80400 && ($r = new \ReflectionClass($refreshedUser))->isUninitializedLazyObject($refreshedUser)) {
+ $r->initializeLazyObject($refreshedUser);
}
return $refreshedUser;
diff --git a/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php b/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php
index 898631bac842c..0bf8f81755dbd 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/ArgumentResolver/EntityValueResolverTest.php
@@ -487,9 +487,12 @@ private function createRegistry(?ObjectManager $manager = null): ManagerRegistry
->method('getManagerForClass')
->willReturn($manager);
- $registry->expects($this->any())
- ->method('getManager')
- ->willReturn($manager);
+ if (null === $manager) {
+ $registry->method('getManager')
+ ->willThrowException(new \InvalidArgumentException());
+ } else {
+ $registry->method('getManager')->willReturn($manager);
+ }
return $registry;
}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/DoctrineTestHelper.php b/src/Symfony/Bridge/Doctrine/Tests/DoctrineTestHelper.php
index e8d36c892b942..40472ff73ef40 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/DoctrineTestHelper.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/DoctrineTestHelper.php
@@ -47,6 +47,10 @@ public static function createTestEntityManager(?Configuration $config = null): E
$config ??= self::createTestConfiguration();
$eventManager = new EventManager();
+ if (\PHP_VERSION_ID >= 80400 && method_exists($config, 'enableNativeLazyObjects')) {
+ $config->enableNativeLazyObjects(true);
+ }
+
return new EntityManager(DriverManager::getConnection($params, $config, $eventManager), $config, $eventManager);
}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/AssociatedEntityDto.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/AssociatedEntityDto.php
new file mode 100644
index 0000000000000..d6f82f8214846
--- /dev/null
+++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/AssociatedEntityDto.php
@@ -0,0 +1,17 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bridge\Doctrine\Tests\Fixtures;
+
+class AssociatedEntityDto
+{
+ public $singleId;
+}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleAssociationToIntIdEntity.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleAssociationToIntIdEntity.php
index 94becf73b5795..0373417b2c8bb 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleAssociationToIntIdEntity.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleAssociationToIntIdEntity.php
@@ -14,6 +14,7 @@
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Id;
+use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\OneToOne;
#[Entity]
@@ -21,6 +22,7 @@ class SingleAssociationToIntIdEntity
{
public function __construct(
#[Id, OneToOne(cascade: ['ALL'])]
+ #[JoinColumn(nullable: false)]
protected SingleIntIdNoToStringEntity $entity,
#[Column(nullable: true)]
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntity.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntity.php
index 0970dea0669a9..3cebe3fe6e0a9 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntity.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntity.php
@@ -16,7 +16,7 @@
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Id;
-#[Entity]
+#[Entity(repositoryClass: SingleIntIdEntityRepository::class)]
class SingleIntIdEntity
{
#[Column(type: Types::JSON, nullable: true)]
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntityRepository.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntityRepository.php
new file mode 100644
index 0000000000000..597f264099328
--- /dev/null
+++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/SingleIntIdEntityRepository.php
@@ -0,0 +1,24 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bridge\Doctrine\Tests\Fixtures;
+
+use Doctrine\ORM\EntityRepository;
+
+class SingleIntIdEntityRepository extends EntityRepository
+{
+ public $result = null;
+
+ public function findByCustom()
+ {
+ return $this->result;
+ }
+}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/UserUuidNameDto.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/UserUuidNameDto.php
new file mode 100644
index 0000000000000..8c2c60d21ba85
--- /dev/null
+++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/UserUuidNameDto.php
@@ -0,0 +1,24 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bridge\Doctrine\Tests\Fixtures;
+
+use Symfony\Component\Uid\Uuid;
+
+class UserUuidNameDto
+{
+ public function __construct(
+ public ?Uuid $id,
+ public ?string $fullName,
+ public ?string $address,
+ ) {
+ }
+}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/UserUuidNameEntity.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/UserUuidNameEntity.php
new file mode 100644
index 0000000000000..3ac3ead8d201a
--- /dev/null
+++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/UserUuidNameEntity.php
@@ -0,0 +1,29 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bridge\Doctrine\Tests\Fixtures;
+
+use Doctrine\ORM\Mapping\Column;
+use Doctrine\ORM\Mapping\Entity;
+use Doctrine\ORM\Mapping\Id;
+use Symfony\Component\Uid\Uuid;
+
+#[Entity]
+class UserUuidNameEntity
+{
+ public function __construct(
+ #[Id, Column]
+ public ?Uuid $id = null,
+ #[Column(unique: true)]
+ public ?string $fullName = null,
+ ) {
+ }
+}
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineTransactionMiddlewareTest.php b/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineTransactionMiddlewareTest.php
index 977f32e30fa61..05e5dae1b34ac 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineTransactionMiddlewareTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineTransactionMiddlewareTest.php
@@ -56,12 +56,9 @@ public function testMiddlewareWrapsInTransactionAndFlushes()
public function testTransactionIsRolledBackOnException()
{
- $this->connection->expects($this->once())
- ->method('beginTransaction')
- ;
- $this->connection->expects($this->once())
- ->method('rollBack')
- ;
+ $this->connection->expects($this->once())->method('beginTransaction');
+ $this->connection->expects($this->once())->method('isTransactionActive')->willReturn(true);
+ $this->connection->expects($this->once())->method('rollBack');
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Thrown from next middleware.');
@@ -69,6 +66,27 @@ public function testTransactionIsRolledBackOnException()
$this->middleware->handle(new Envelope(new \stdClass()), $this->getThrowingStackMock());
}
+ public function testExceptionInRollBackDoesNotHidePreviousException()
+ {
+ $this->connection->expects($this->once())->method('beginTransaction');
+ $this->connection->expects($this->once())->method('isTransactionActive')->willReturn(true);
+ $this->connection->expects($this->once())->method('rollBack')->willThrowException(new \RuntimeException('Thrown from rollBack.'));
+
+ try {
+ $this->middleware->handle(new Envelope(new \stdClass()), $this->getThrowingStackMock());
+ } catch (\Throwable $exception) {
+ }
+
+ self::assertNotNull($exception);
+ self::assertInstanceOf(\RuntimeException::class, $exception);
+ self::assertSame('Thrown from rollBack.', $exception->getMessage());
+
+ $previous = $exception->getPrevious();
+ self::assertNotNull($previous);
+ self::assertInstanceOf(\RuntimeException::class, $previous);
+ self::assertSame('Thrown from next middleware.', $previous->getMessage());
+ }
+
public function testInvalidEntityManagerThrowsException()
{
$managerRegistry = $this->createMock(ManagerRegistry::class);
diff --git a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineFooType.php b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineFooType.php
index 93e9818f4383c..6619f911ae1e0 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineFooType.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineFooType.php
@@ -41,7 +41,7 @@ public function convertToDatabaseValue($value, AbstractPlatform $platform): ?str
throw new ConversionException(sprintf('Expected "%s", got "%s"', 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\Foo', get_debug_type($value)));
}
- return $foo->bar;
+ return $value->bar;
}
public function convertToPHPValue($value, AbstractPlatform $platform): ?Foo
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderPostgresTest.php b/src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderPostgresTest.php
index e0c897ce23232..53cbbb07a211c 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderPostgresTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderPostgresTest.php
@@ -10,6 +10,7 @@
/**
* @requires extension pdo_pgsql
+ *
* @group integration
*/
class DoctrineTokenProviderPostgresTest extends DoctrineTokenProviderTest
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php b/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
index a89ac84a7a9c1..82bc79f072ecd 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
@@ -11,6 +11,7 @@
namespace Symfony\Bridge\Doctrine\Tests\Security\User;
+use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\SchemaTool;
@@ -219,8 +220,13 @@ public function testRefreshedUserProxyIsLoaded()
$provider = new EntityUserProvider($this->getManager($em), User::class);
$refreshedUser = $provider->refreshUser($user);
- $this->assertInstanceOf(Proxy::class, $refreshedUser);
- $this->assertTrue($refreshedUser->__isInitialized());
+ if (\PHP_VERSION_ID >= 80400 && method_exists(Configuration::class, 'enableNativeLazyObjects')) {
+ $this->assertFalse((new \ReflectionClass(User::class))->isUninitializedLazyObject($refreshedUser));
+ $this->assertSame('user1', $refreshedUser->name);
+ } else {
+ $this->assertInstanceOf(Proxy::class, $refreshedUser);
+ $this->assertTrue($refreshedUser->__isInitialized());
+ }
}
private function getManager($em, $name = null)
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php
index 451046f2ec150..4d7a9b1f78f77 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php
@@ -14,13 +14,12 @@
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\DBAL\Types\Type;
use Doctrine\ORM\EntityRepository;
-use Doctrine\ORM\Mapping\ClassMetadata;
-use Doctrine\ORM\Mapping\ClassMetadataInfo;
use Doctrine\ORM\Tools\SchemaTool;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\ObjectManager;
use PHPUnit\Framework\MockObject\MockObject;
use Symfony\Bridge\Doctrine\Tests\DoctrineTestHelper;
+use Symfony\Bridge\Doctrine\Tests\Fixtures\AssociatedEntityDto;
use Symfony\Bridge\Doctrine\Tests\Fixtures\AssociationEntity;
use Symfony\Bridge\Doctrine\Tests\Fixtures\AssociationEntity2;
use Symfony\Bridge\Doctrine\Tests\Fixtures\CompositeIntIdEntity;
@@ -31,7 +30,6 @@
use Symfony\Bridge\Doctrine\Tests\Fixtures\Dto;
use Symfony\Bridge\Doctrine\Tests\Fixtures\Employee;
use Symfony\Bridge\Doctrine\Tests\Fixtures\HireAnEmployee;
-use Symfony\Bridge\Doctrine\Tests\Fixtures\MockableRepository;
use Symfony\Bridge\Doctrine\Tests\Fixtures\Person;
use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity;
use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdNoToStringEntity;
@@ -43,9 +41,12 @@
use Symfony\Bridge\Doctrine\Tests\Fixtures\UpdateCompositeIntIdEntity;
use Symfony\Bridge\Doctrine\Tests\Fixtures\UpdateCompositeObjectNoToStringIdEntity;
use Symfony\Bridge\Doctrine\Tests\Fixtures\UpdateEmployeeProfile;
+use Symfony\Bridge\Doctrine\Tests\Fixtures\UserUuidNameDto;
+use Symfony\Bridge\Doctrine\Tests\Fixtures\UserUuidNameEntity;
use Symfony\Bridge\Doctrine\Tests\TestRepositoryFactory;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator;
+use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
use Symfony\Component\Validator\Exception\UnexpectedValueException;
use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
@@ -83,59 +84,18 @@ protected function setUp(): void
protected function createRegistryMock($em = null)
{
$registry = $this->createMock(ManagerRegistry::class);
- $registry->expects($this->any())
- ->method('getManager')
- ->with($this->equalTo(self::EM_NAME))
- ->willReturn($em);
- return $registry;
- }
-
- protected function createRepositoryMock(string $className)
- {
- $repositoryMock = $this->getMockBuilder(MockableRepository::class)
- ->disableOriginalConstructor()
- ->onlyMethods(['find', 'findAll', 'findOneBy', 'findBy', 'getClassName', 'findByCustom'])
- ->getMock();
-
- $repositoryMock->method('getClassName')
- ->willReturn($className);
-
- return $repositoryMock;
- }
+ if (null === $em) {
+ $registry->method('getManager')
+ ->with($this->equalTo(self::EM_NAME))
+ ->willThrowException(new \InvalidArgumentException());
+ } else {
+ $registry->method('getManager')
+ ->with($this->equalTo(self::EM_NAME))
+ ->willReturn($em);
+ }
- protected function createEntityManagerMock($repositoryMock)
- {
- $em = $this->createMock(ObjectManager::class);
- $em->expects($this->any())
- ->method('getRepository')
- ->willReturn($repositoryMock)
- ;
-
- $classMetadata = $this->createMock(
- class_exists(ClassMetadataInfo::class) ? ClassMetadataInfo::class : ClassMetadata::class
- );
- $classMetadata
- ->method('getName')
- ->willReturn($repositoryMock->getClassName())
- ;
- $classMetadata
- ->expects($this->any())
- ->method('hasField')
- ->willReturn(true)
- ;
- $refl = $this->createMock(\ReflectionProperty::class);
- $refl
- ->method('getValue')
- ->willReturn(true)
- ;
- $classMetadata->reflFields = ['name' => $refl];
- $em->expects($this->any())
- ->method('getClassMetadata')
- ->willReturn($classMetadata)
- ;
-
- return $em;
+ return $registry;
}
protected function createValidator(): UniqueEntityValidator
@@ -159,6 +119,7 @@ private function createSchema($em)
$em->getClassMetadata(Employee::class),
$em->getClassMetadata(CompositeObjectNoToStringIdEntity::class),
$em->getClassMetadata(SingleIntIdStringWrapperNameEntity::class),
+ $em->getClassMetadata(UserUuidNameEntity::class),
]);
}
@@ -417,13 +378,7 @@ public function testValidateUniquenessWithValidCustomErrorPath()
*/
public function testValidateUniquenessUsingCustomRepositoryMethod(UniqueEntity $constraint)
{
- $repository = $this->createRepositoryMock(SingleIntIdEntity::class);
- $repository->expects($this->once())
- ->method('findByCustom')
- ->willReturn([])
- ;
- $this->em = $this->createEntityManagerMock($repository);
- $this->registry = $this->createRegistryMock($this->em);
+ $this->em->getRepository(SingleIntIdEntity::class)->result = [];
$this->validator = $this->createValidator();
$this->validator->initialize($this->context);
@@ -441,22 +396,12 @@ public function testValidateUniquenessWithUnrewoundArray(UniqueEntity $constrain
{
$entity = new SingleIntIdEntity(1, 'foo');
- $repository = $this->createRepositoryMock(SingleIntIdEntity::class);
- $repository->expects($this->once())
- ->method('findByCustom')
- ->willReturnCallback(
- function () use ($entity) {
- $returnValue = [
- $entity,
- ];
- next($returnValue);
-
- return $returnValue;
- }
- )
- ;
- $this->em = $this->createEntityManagerMock($repository);
- $this->registry = $this->createRegistryMock($this->em);
+ $returnValue = [
+ $entity,
+ ];
+ next($returnValue);
+
+ $this->em->getRepository(SingleIntIdEntity::class)->result = $returnValue;
$this->validator = $this->createValidator();
$this->validator->initialize($this->context);
@@ -489,13 +434,7 @@ public function testValidateResultTypes($entity1, $result)
'repositoryMethod' => 'findByCustom',
]);
- $repository = $this->createRepositoryMock($entity1::class);
- $repository->expects($this->once())
- ->method('findByCustom')
- ->willReturn($result)
- ;
- $this->em = $this->createEntityManagerMock($repository);
- $this->registry = $this->createRegistryMock($this->em);
+ $this->em->getRepository(SingleIntIdEntity::class)->result = $result;
$this->validator = $this->createValidator();
$this->validator->initialize($this->context);
@@ -609,11 +548,42 @@ public function testAssociatedEntityWithNull()
$this->assertNoViolation();
}
- public function testValidateUniquenessWithArrayValue()
+ public function testAssociatedEntityReferencedByPrimaryKey()
{
- $repository = $this->createRepositoryMock(SingleIntIdEntity::class);
- $this->repositoryFactory->setRepository($this->em, SingleIntIdEntity::class, $repository);
+ $this->registry = $this->createRegistryMock($this->em);
+ $this->registry->expects($this->any())
+ ->method('getManagerForClass')
+ ->willReturn($this->em);
+ $this->validator = $this->createValidator();
+ $this->validator->initialize($this->context);
+
+ $entity = new SingleIntIdEntity(1, 'foo');
+ $associated = new AssociationEntity();
+ $associated->single = $entity;
+
+ $this->em->persist($entity);
+ $this->em->persist($associated);
+ $this->em->flush();
+ $dto = new AssociatedEntityDto();
+ $dto->singleId = 1;
+
+ $this->validator->validate($dto, new UniqueEntity(
+ fields: ['singleId' => 'single'],
+ entityClass: AssociationEntity::class,
+ ));
+
+ $this->buildViolation('This value is already used.')
+ ->atPath('property.path.single')
+ ->setParameter('{{ value }}', 1)
+ ->setInvalidValue(1)
+ ->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
+ ->setCause([$associated])
+ ->assertRaised();
+ }
+
+ public function testValidateUniquenessWithArrayValue()
+ {
$constraint = new UniqueEntity([
'message' => 'myMessage',
'fields' => ['phoneNumbers'],
@@ -624,10 +594,7 @@ public function testValidateUniquenessWithArrayValue()
$entity1 = new SingleIntIdEntity(1, 'foo');
$entity1->phoneNumbers[] = 123;
- $repository->expects($this->once())
- ->method('findByCustom')
- ->willReturn([$entity1])
- ;
+ $this->em->getRepository(SingleIntIdEntity::class)->result = $entity1;
$this->em->persist($entity1);
$this->em->flush();
@@ -677,8 +644,6 @@ public function testEntityManagerNullObject()
// no "em" option set
]);
- $this->em = null;
- $this->registry = $this->createRegistryMock($this->em);
$this->validator = $this->createValidator();
$this->validator->initialize($this->context);
@@ -692,14 +657,6 @@ public function testEntityManagerNullObject()
public function testValidateUniquenessOnNullResult()
{
- $repository = $this->createRepositoryMock(SingleIntIdEntity::class);
- $repository
- ->method('find')
- ->willReturn(null)
- ;
-
- $this->em = $this->createEntityManagerMock($repository);
- $this->registry = $this->createRegistryMock($this->em);
$this->validator = $this->createValidator();
$this->validator->initialize($this->context);
@@ -880,13 +837,7 @@ public function testValidateUniquenessWithEmptyIterator($entity, $result)
'repositoryMethod' => 'findByCustom',
]);
- $repository = $this->createRepositoryMock($entity::class);
- $repository->expects($this->once())
- ->method('findByCustom')
- ->willReturn($result)
- ;
- $this->em = $this->createEntityManagerMock($repository);
- $this->registry = $this->createRegistryMock($this->em);
+ $this->em->getRepository(SingleIntIdEntity::class)->result = $result;
$this->validator = $this->createValidator();
$this->validator->initialize($this->context);
@@ -1454,4 +1405,25 @@ public function testEntityManagerNullObjectWhenDTODoctrineStyle()
$this->validator->validate($dto, $constraint);
}
+
+ public function testUuidIdentifierWithSameValueDifferentInstanceDoesNotCauseViolation()
+ {
+ $uuidString = 'ec562e21-1fc8-4e55-8de7-a42389ac75c5';
+ $existingPerson = new UserUuidNameEntity(Uuid::fromString($uuidString), 'Foo Bar');
+ $this->em->persist($existingPerson);
+ $this->em->flush();
+
+ $dto = new UserUuidNameDto(Uuid::fromString($uuidString), 'Foo Bar', '');
+
+ $constraint = new UniqueEntity(
+ fields: ['fullName'],
+ entityClass: UserUuidNameEntity::class,
+ identifierFieldNames: ['id'],
+ em: self::EM_NAME,
+ );
+
+ $this->validator->validate($dto, $constraint);
+
+ $this->assertNoViolation();
+ }
}
diff --git a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php
index c0a1232c59684..4aed1cd3a44c2 100644
--- a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php
+++ b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php
@@ -11,6 +11,7 @@
namespace Symfony\Bridge\Doctrine\Validator\Constraints;
+use Doctrine\ORM\Mapping\ClassMetadata as OrmClassMetadata;
use Doctrine\ORM\Mapping\MappingException as ORMMappingException;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\Mapping\ClassMetadata;
@@ -69,10 +70,10 @@ public function validate(mixed $value, Constraint $constraint): void
$entityClass = $constraint->entityClass ?? $value::class;
if ($constraint->em) {
- $em = $this->registry->getManager($constraint->em);
-
- if (!$em) {
- throw new ConstraintDefinitionException(\sprintf('Object manager "%s" does not exist.', $constraint->em));
+ try {
+ $em = $this->registry->getManager($constraint->em);
+ } catch (\InvalidArgumentException $e) {
+ throw new ConstraintDefinitionException(\sprintf('Object manager "%s" does not exist.', $constraint->em), 0, $e);
}
} else {
$em = $this->registry->getManagerForClass($entityClass);
@@ -196,6 +197,12 @@ public function validate(mixed $value, Constraint $constraint): void
foreach ($constraint->identifierFieldNames as $identifierFieldName) {
$propertyValue = $this->getPropertyValue($entityClass, $identifierFieldName, current($result));
+ if ($fieldValues[$identifierFieldName] instanceof \Stringable) {
+ $fieldValues[$identifierFieldName] = (string) $fieldValues[$identifierFieldName];
+ }
+ if ($propertyValue instanceof \Stringable) {
+ $propertyValue = (string) $propertyValue;
+ }
if ($fieldValues[$identifierFieldName] !== $propertyValue) {
$entityMatched = false;
break;
@@ -287,9 +294,13 @@ private function getFieldValues(mixed $object, ClassMetadata $class, array $fiel
throw new ConstraintDefinitionException(\sprintf('The field "%s" is not a property of class "%s".', $fieldName, $objectClass));
}
- $fieldValues[$entityFieldName] = $isValueEntity && $object instanceof ($class->getName())
- ? $class->reflFields[$fieldName]->getValue($object)
- : $this->getPropertyValue($objectClass, $fieldName, $object);
+ if ($isValueEntity && $object instanceof ($class->getName()) && property_exists(OrmClassMetadata::class, 'propertyAccessors')) {
+ $fieldValues[$entityFieldName] = $class->propertyAccessors[$fieldName]->getValue($object);
+ } elseif ($isValueEntity && $object instanceof ($class->getName())) {
+ $fieldValues[$entityFieldName] = $class->reflFields[$fieldName]->getValue($object);
+ } else {
+ $fieldValues[$entityFieldName] = $this->getPropertyValue($objectClass, $fieldName, $objec
8000
t);
+ }
}
return $fieldValues;
diff --git a/src/Symfony/Bridge/Doctrine/composer.json b/src/Symfony/Bridge/Doctrine/composer.json
index 1ca2abc4b13c4..9d95a8af14ca7 100644
--- a/src/Symfony/Bridge/Doctrine/composer.json
+++ b/src/Symfony/Bridge/Doctrine/composer.json
@@ -18,7 +18,7 @@
"require": {
"php": ">=8.2",
"doctrine/event-manager": "^2",
- "doctrine/persistence": "^3.1",
+ "doctrine/persistence": "^3.1|^4",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
diff --git a/src/Symfony/Bridge/PhpUnit/Extension/DisableClockMockSubscriber.php b/src/Symfony/Bridge/PhpUnit/Extension/DisableClockMockSubscriber.php
deleted file mode 100644
index 885e6ea585e54..0000000000000
--- a/src/Symfony/Bridge/PhpUnit/Extension/DisableClockMockSubscriber.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\PhpUnit\Extension;
-
-use PHPUnit\Event\Code\TestMethod;
-use PHPUnit\Event\Test\Finished;
-use PHPUnit\Event\Test\FinishedSubscriber;
-use PHPUnit\Metadata\Group;
-use Symfony\Bridge\PhpUnit\ClockMock;
-
-/**
- * @internal
- */
-class DisableClockMockSubscriber implements FinishedSubscriber
-{
- public function notify(Finished $event): void
- {
- $test = $event->test();
-
- if (!$test instanceof TestMethod) {
- return;
- }
-
- foreach ($test->metadata() as $metadata) {
- if ($metadata instanceof Group && 'time-sensitive' === $metadata->groupName()) {
- ClockMock::withClockMock(false);
- }
- }
- }
-}
diff --git a/src/Symfony/Bridge/PhpUnit/Extension/DisableDnsMockSubscriber.php b/src/Symfony/Bridge/PhpUnit/Extension/DisableDnsMockSubscriber.php
deleted file mode 100644
index fc3e754d140d5..0000000000000
--- a/src/Symfony/Bridge/PhpUnit/Extension/DisableDnsMockSubscriber.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Bridge\PhpUnit\Extension;
-
-use PHPUnit\Event\Code\TestMethod;
-use PHPUnit\Event\Test\Finished;
-use PHPUnit\Event\Test\FinishedSubscriber;
-use PHPUnit\Metadata\Group;
-use Symfony\Bridge\PhpUnit\DnsMock;
-
-/**
- * @internal
- */
-class DisableDnsMockSubscriber implements FinishedSubscriber
-{
- public function notify(Finished $event): void
- {
- $test = $event->test();
-
- if (!$test instanceof TestMethod) {
- return;
- }
-
- foreach ($test->metadata() as $metadata) {
- if ($metadata instanceof Group && 'dns-sensitive' === $metadata->groupName()) {
- DnsMock::withMockedHosts([]);
- }
- }
- }
-}
diff --git a/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php b/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php
index 1df4f20658905..c6a5a58e871a0 100644
--- a/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php
+++ b/src/Symfony/Bridge/PhpUnit/SymfonyExtension.php
@@ -11,12 +11,21 @@
namespace Symfony\Bridge\PhpUnit;
+use PHPUnit\Event\Code\Test;
+use PHPUnit\Event\Code\TestMethod;
+use PHPUnit\Event\Test\BeforeTestMethodErrored;
+use PHPUnit\Event\Test\BeforeTestMethodErroredSubscriber;
+use PHPUnit\Event\Test\Errored;
+use PHPUnit\Event\Test\ErroredSubscriber;
+use PHPUnit\Event\Test\Finished;
+use PHPUnit\Event\Test\FinishedSubscriber;
+use PHPUnit\Event\Test\Skipped;
+use PHPUnit\Event\Test\SkippedSubscriber;
+use PHPUnit\Metadata\Group;
use PHPUnit\Runner\Extension\Extension;
use PHPUnit\Runner\Extension\Facade;
use PHPUnit\Runner\Extension\ParameterCollection;
use PHPUnit\TextUI\Configuration\Configuration;
-use Symfony\Bridge\PhpUnit\Extension\DisableClockMockSubscriber;
-use Symfony\Bridge\PhpUnit\Extension\DisableDnsMockSubscriber;
use Symfony\Bridge\PhpUnit\Extension\EnableClockMockSubscriber;
use Symfony\Bridge\PhpUnit\Extension\RegisterClockMockSubscriber;
use Symfony\Bridge\PhpUnit\Extension\RegisterDnsMockSubscriber;
@@ -38,7 +47,42 @@ public function bootstrap(Configuration $configuration, Facade $facade, Paramete
$facade->registerSubscriber(new RegisterClockMockSubscriber());
$facade->registerSubscriber(new EnableClockMockSubscriber());
- $facade->registerSubscriber(new DisableClockMockSubscriber());
+ $facade->registerSubscriber(new class implements ErroredSubscriber {
+ public function notify(Errored $event): void
+ {
+ SymfonyExtension::disableClockMock($event->test());
+ SymfonyExtension::disableDnsMock($event->test());
+ }
+ });
+ $facade->registerSubscriber(new class implements FinishedSubscriber {
+ public function notify(Finished $event): void
+ {
+ SymfonyExtension::disableClockMock($event->test());
+ SymfonyExtension::disableDnsMock($event->test());
+ }
+ });
+ $facade->registerSubscriber(new class implements SkippedSubscriber {
+ public function notify(Skipped $event): void
+ {
+ SymfonyExtension::disableClockMock($event->test());
+ SymfonyExtension::disableDnsMock($event->test());
+ }
+ });
+
+ if (interface_exists(BeforeTestMethodErroredSubscriber::class)) {
+ $facade->registerSubscriber(new class implements BeforeTestMethodErroredSubscriber {
+ public function notify(BeforeTestMethodErrored $event): void
+ {
+ if (method_exists($event, 'test')) {
+ SymfonyExtension::disableClockMock($event->test());
+ SymfonyExtension::disableDnsMock($event->test());
+ } else {
+ ClockMock::withClockMock(false);
+ DnsMock::withMockedHosts([]);
+ }
+ }
+ });
+ }
if ($parameters->has('dns-mock-namespaces')) {
foreach (explode(',', $parameters->get('dns-mock-namespaces')) as $namespace) {
@@ -47,6 +91,43 @@ public function bootstrap(Configuration $configuration, Facade $facade, Paramete
}
$facade->registerSubscriber(new RegisterDnsMockSubscriber());
- $facade->registerSubscriber(new DisableDnsMockSubscriber());
+ }
+
+ /**
+ * @internal
+ */
+ public static function disableClockMock(Test $test): void
+ {
+ if (self::hasGroup($test, 'time-sensitive')) {
+ ClockMock::withClockMock(false);
+ }
+ }
+
+ /**
+ * @internal
+ */
+ public static function disableDnsMock(Test $test): void
+ {
+ if (self::hasGroup($test, 'dns-sensitive')) {
+ DnsMock::withMockedHosts([]);
+ }
+ }
+
+ /**
+ * @internal
+ */
+ public static function hasGroup(Test $test, string $groupName): bool
+ {
+ if (!$test instanceof TestMethod) {
+ return false;
+ }
+
+ foreach ($test->metadata() as $metadata) {
+ if ($metadata instanceof Group && $groupName === $metadata->groupName()) {
+ return true;
+ }
+ }
+
+ return false;
}
}
diff --git a/src/Symfony/Bridge/PhpUnit/Tests/Fixtures/symfonyextension/tests/bootstrap.php b/src/Symfony/Bridge/PhpUnit/Tests/Fixtures/symfonyextension/tests/bootstrap.php
index 95dcc78ef026c..608bdd71cc945 100644
--- a/src/Symfony/Bridge/PhpUnit/Tests/Fixtures/symfonyextension/tests/bootstrap.php
+++ b/src/Symfony/Bridge/PhpUnit/Tests/Fixtures/symfonyextension/tests/bootstrap.php
@@ -21,8 +21,6 @@
});
require __DIR__.'/../../../../SymfonyExtension.php';
-require __DIR__.'/../../../../Extension/DisableClockMockSubscriber.php';
-require __DIR__.'/../../../../Extension/DisableDnsMockSubscriber.php';
require __DIR__.'/../../../../Extension/EnableClockMockSubscriber.php';
require __DIR__.'/../../../../Extension/RegisterClockMockSubscriber.php';
require __DIR__.'/../../../../Extension/RegisterDnsMockSubscriber.php';
diff --git a/src/Symfony/Bridge/PhpUnit/Tests/SymfonyExtensionWithManualRegister.php b/src/Symfony/Bridge/PhpUnit/Tests/SymfonyExtensionWithManualRegister.php
new file mode 100644
index 0000000000000..c02d6f1cf64ce
--- /dev/null
+++ b/src/Symfony/Bridge/PhpUnit/Tests/SymfonyExtensionWithManualRegister.php
@@ -0,0 +1,64 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bridge\PhpUnit\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Bridge\PhpUnit\ClockMock;
+use Symfony\Bridge\PhpUnit\DnsMock;
+
+class SymfonyExtensionWithManualRegister extends TestCase
+{
+ public static function setUpBeforeClass(): void
+ {
+ ClockMock::register(self::class);
+ ClockMock::withClockMock(strtotime('2024-05-20 15:30:00'));
+
+ DnsMock::register(self::class);
+ DnsMock::withMockedHosts([
+ 'example.com' => [
+ ['type' => 'A', 'ip' => '1.2.3.4'],
+ ],
+ ]);
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ ClockMock::withClockMock(false);
+ DnsMock::withMockedHosts([]);
+ }
+
+ public function testDate()
+ {
+ self::assertSame('2024-05-20 15:30:00', date('Y-m-d H:i:s'));
+ }
+
+ public function testGetHostByName()
+ {
+ self::assertSame('1.2.3.4', gethostbyname('example.com'));
+ }
+
+ public function testTime()
+ {
+ self::assertSame(1716219000, time());
+ }
+
+ public function testDnsGetRecord()
+ {
+ self::assertSame([[
+ 'host' => 'example.com',
+ 'class' => 'IN',
+ 'ttl' => 1,
+ 'type' => 'A',
+ 'ip' => '1.2.3.4',
+ ]], dns_get_record('example.com'));
+ }
+}
diff --git a/src/Symfony/Bridge/PhpUnit/Tests/symfonyextension.phpt b/src/Symfony/Bridge/PhpUnit/Tests/symfonyextension.phpt
index 2c808c2f5930e..02b0a510e6301 100644
--- a/src/Symfony/Bridge/PhpUnit/Tests/symfonyextension.phpt
+++ b/src/Symfony/Bridge/PhpUnit/Tests/symfonyextension.phpt
@@ -5,6 +5,8 @@ if (!getenv('SYMFONY_PHPUNIT_VERSION') || version_compare(getenv('SYMFONY_PHPUNI
--FILE--
'composer.json',
'COMPOSER_VENDOR_DIR' => 'vendor',
'COMPOSER_BIN_DIR' => 'bin',
+ 'COMPOSER_NO_INTERACTION' => '1',
'SYMFONY_SIMPLE_PHPUNIT_BIN_DIR' => __DIR__,
];
@@ -234,10 +235,10 @@
@copy("$PHPUNIT_VERSION_DIR/phpunit.xsd", 'phpunit.xsd');
chdir("$PHPUNIT_VERSION_DIR");
if ($SYMFONY_PHPUNIT_REMOVE) {
- $passthruOrFail("$COMPOSER remove --no-update --no-interaction ".$SYMFONY_PHPUNIT_REMOVE);
+ $passthruOrFail("$COMPOSER remove --no-update ".$SYMFONY_PHPUNIT_REMOVE);
}
if ($SYMFONY_PHPUNIT_REQUIRE) {
- $passthruOrFail("$COMPOSER require --no-update --no-interaction ".$SYMFONY_PHPUNIT_REQUIRE);
+ $passthruOrFail("$COMPOSER require --no-update ".$SYMFONY_PHPUNIT_REQUIRE);
}
if (5.1 <= $PHPUNIT_VERSION && $PHPUNIT_VERSION < 5.4) {
$passthruOrFail("$COMPOSER require --no-update phpunit/phpunit-mock-objects \"~3.1.0\"");
@@ -386,6 +387,10 @@ class_exists(\SymfonyExcludeListSimplePhpunit::class, false) && PHPUnit\Util\Bla
$cmd .= '%2$s';
}
+if (version_compare($PHPUNIT_VERSION, '11.0', '>=')) {
+ $GLOBALS['_composer_autoload_path'] = "$PHPUNIT_DIR/$PHPUNIT_VERSION_DIR/vendor/autoload.php";
+}
+
if ($components) {
$skippedTests = $_SERVER['SYMFONY_PHPUNIT_SKIPPED_TESTS'] ?? false;
$runningProcs = [];
diff --git a/src/Symfony/Bridge/PhpUnit/bootstrap.php b/src/Symfony/Bridge/PhpUnit/bootstrap.php
index f11b7ab7f4945..50157aec4ad0f 100644
--- a/src/Symfony/Bridge/PhpUnit/bootstrap.php
+++ b/src/Symfony/Bridge/PhpUnit/bootstrap.php
@@ -14,7 +14,11 @@
use Symfony\Bridge\PhpUnit\DeprecationErrorHandler;
// Detect if we need to serialize deprecations to a file.
-if (in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && $file = getenv('SYMFONY_DEPRECATIONS_SERIALIZE')) {
+if (
+ // Skip if we're using PHPUnit >=10
+ !class_exists(PHPUnit\Metadata\Metadata::class)
+ && in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && $file = getenv('SYMFONY_DEPRECATIONS_SERIALIZE')
+) {
DeprecationErrorHandler::collectDeprecations($file);
return;
@@ -46,6 +50,10 @@
}
}
-if ('disabled' !== getenv('SYMFONY_DEPRECATIONS_HELPER')) {
+if (
+ // Skip if we're using PHPUnit >=10
+ !class_exists(PHPUnit\Metadata\Metadata::class, false)
+ && 'disabled' !== getenv('SYMFONY_DEPRECATIONS_HELPER')
+) {
DeprecationErrorHandler::register(getenv('SYMFONY_DEPRECATIONS_HELPER'));
}
diff --git a/src/Symfony/Bridge/PhpUnit/composer.json b/src/Symfony/Bridge/PhpUnit/composer.json
index 1283dfe33a9b0..de9101f796d73 100644
--- a/src/Symfony/Bridge/PhpUnit/composer.json
+++ b/src/Symfony/Bridge/PhpUnit/composer.json
@@ -2,7 +2,9 @@
"name": "symfony/phpunit-bridge",
"type": "symfony-bridge",
"description": "Provides utilities for PHPUnit, especially user deprecation notices management",
- "keywords": [],
+ "keywords": [
+ "testing"
+ ],
"homepage": "https://symfony.com",
"license": "MIT",
"authors": [
diff --git a/src/Symfony/Bridge/Twig/Extension/WebLinkExtension.php b/src/Symfony/Bridge/Twig/Extension/WebLinkExtension.php
index 9eeb305aee36c..b06f0a8cedbe4 100644
--- a/src/Symfony/Bridge/Twig/Extension/WebLinkExtension.php
+++ b/src/Symfony/Bridge/Twig/Extension/WebLinkExtension.php
@@ -44,7 +44,7 @@ public function getFunctions(): array
/**
* Adds a "Link" HTTP header.
*
- * @param string $rel The relation type (e.g. "preload", "prefetch", "prerender" or "dns-prefetch")
+ * @param string $rel The relation type (e.g. "preload", "prefetch", or "dns-prefetch")
* @param array $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
*
* @return string The relation URI
@@ -115,7 +115,11 @@ public function prefetch(string $uri, array $attributes = []): string
}
/**
- * Indicates to the client that it should prerender this resource .
+ * Indicates to the client that it should prerender this resource.
+ *
+ * This feature is deprecated and superseded by the Speculation Rules API.
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/rel/prerender
*
* @param array $attributes The attributes of this link (e.g. "['as' => true]", "['pr' => 0.5]")
*
diff --git a/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php b/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php
index 162f8c5ff4c09..00b7ba00f1996 100644
--- a/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php
+++ b/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php
@@ -43,7 +43,7 @@ public function render(Message $message): void
return;
}
- if (null === $message->getTextTemplate() && null === $message->getHtmlTemplate()) {
+ if ($message->isRendered()) {
// email has already been rendered
return;
}
diff --git a/src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php b/src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
index 9a0ecc9d97781..3b8196fae410e 100644
--- a/src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
+++ b/src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
@@ -21,7 +21,8 @@
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FilterExpression;
use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\Variable\LocalVariable;
+use Twig\Node\Expression\Variable\AssignContextVariable;
+use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
use Twig\Node\Nodes;
@@ -34,7 +35,6 @@
final class TranslationDefaultDomainNodeVisitor implements NodeVisitorInterface
{
private Scope $scope;
- private int $nestingLevel = 0;
public function __construct()
{
@@ -48,22 +48,25 @@ public function enterNode(Node $node, Environment $env): Node
}
if ($node instanceof TransDefaultDomainNode) {
- ++$this->nestingLevel;
-
if ($node->getNode('expr') instanceof ConstantExpression) {
$this->scope->set('domain', $node->getNode('expr'));
return $node;
}
+ if (null === $templateName = $node->getTemplateName()) {
+ throw new \LogicException('Cannot traverse a node without a template name.');
+ }
+
+ $var = '__internal_trans_default_domain'.hash('xxh128', $templateName);
+
if (class_exists(Nodes::class)) {
- $name = new LocalVariable(null, $node->getTemplateLine());
- $this->scope->set('domain', $name);
+ $name = new AssignContextVariable($var, $node->getTemplateLine());
+ $this->scope->set('domain', new ContextVariable($var, $node->getTemplateLine()));
return new SetNode(false, new Nodes([$name]), new Nodes([$node->getNode('expr')]), $node->getTemplateLine());
}
- $var = '__internal_trans_default_domain_'.$this->nestingLevel;
$name = new AssignNameExpression($var, $node->getTemplateLine());
$this->scope->set('domain', new NameExpression($var, $node->getTemplateLine()));
@@ -105,8 +108,6 @@ public function enterNode(Node $node, Environment $env): Node
public function leaveNode(Node $node, Environment $env): ?Node
{
if ($node instanceof TransDefaultDomainNode) {
- --$this->nestingLevel;
-
return null;
}
diff --git a/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig b/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
index 1e421d5f9f5a9..537849faebaa4 100644
--- a/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
+++ b/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
@@ -89,7 +89,7 @@
{{- block('choice_widget_options') -}}
{%- else -%}
- {{ choice_translation_domain is same as(false) ? choice.label : choice.label|trans(choice.labelTranslationParameters, choice_translation_domain) }}
+ {{ choice_translation_domain is same as(false) ? choice.label : choice.label|trans(choice.labelTranslationParameters, choice_translation_domain) }}
{%- endif -%}
{% endfor %}
{%- endblock choice_widget_options -%}
diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/AbstractDivLayoutTestCase.php b/src/Symfony/Bridge/Twig/Tests/Extension/AbstractDivLayoutTestCase.php
index cfa2c5c6475cf..28e8997a12e9f 100644
--- a/src/Symfony/Bridge/Twig/Tests/Extension/AbstractDivLayoutTestCase.php
+++ b/src/Symfony/Bridge/Twig/Tests/Extension/AbstractDivLayoutTestCase.php
@@ -870,6 +870,56 @@ public function testMultipleChoiceExpandedWithLabelsSetFalseByCallable()
);
}
+ public function testSingleChoiceWithoutDuplicatePreferredIsSelected()
+ {
+ $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&d', [
+ 'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c', 'Choice&D' => '&d'],
+ 'preferred_choices' => ['&b', '&d'],
+ 'duplicate_preferred_choices' => false,
+ 'multiple' => false,
+ 'expanded' => false,
+ ]);
+
+ $this->assertWidgetMatchesXpath($form->createView(), ['separator' => '-- sep --'],
+ '/select
+ [@name="name"]
+ [
+ ./option[@value="&d"][@selected="selected"]
+ /following-sibling::option[@disabled="disabled"][.="-- sep --"]
+ /following-sibling::option[@value="&a"][not(@selected)]
+ /following-sibling::option[@value="&c"][not(@selected)]
+ ]
+ [count(./option)=5]
+'
+ );
+ }
+
+ public function testSingleChoiceWithoutDuplicateNotPreferredIsSelected()
+ {
+ $form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', '&d', [
+ 'choices' => ['Choice&A' => '&a', 'Choice&B' => '&b', 'Choice&C' => '&c', 'Choice&D' => '&d'],
+ 'preferred_choices' => ['&b', '&d'],
+ 'duplicate_preferred_choices' => true,
+ 'multiple' => false,
+ 'expanded' => false,
+ ]);
+
+ $this->assertWidgetMatchesXpath($form->createView(), ['separator' => '-- sep --'],
+ '/select
+ [@name="name"]
+ [
+ ./option[@value="&d"][not(@selected)]
+ /following-sibling::option[@disabled="disabled"][.="-- sep --"]
+ /following-sibling::option[@value="&a"][not(@selected)]
+ /following-sibling::option[@value="&b"][not(@selected)]
+ /following-sibling::option[@value="&c"][not(@selected)]
+ /following-sibling::option[@value="&d"][@selected="selected"]
+ ]
+ [count(./option)=7]
+'
+ );
+ }
+
public function testFormEndWithRest()
{
$view = $this->factory->createNamedBuilder('name', 'Symfony\Component\Form\Extension\Core\Type\FormType')
diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php
index d9079b1c7ef17..ccce1de340c02 100644
--- a/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php
+++ b/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php
@@ -80,7 +80,7 @@ public function testGenerateFragmentUri()
]);
$twig->addRuntimeLoader($loader);
- $this->assertSame('/_fragment?_hash=XCg0hX8QzSwik8Xuu9aMXhoCeI4oJOob7lUVacyOtyY%3D&_path=template%3Dfoo.html.twig%26_format%3Dhtml%26_locale%3Den%26_controller%3DSymfony%255CBundle%255CFrameworkBundle%255CController%255CTemplateController%253A%253AtemplateAction', $twig->render('index'));
+ $this->assertMatchesRegularExpression('#/_fragment\?_hash=.+&_path=template%3Dfoo.html.twig%26_format%3Dhtml%26_locale%3Den%26_controller%3DSymfony%255CBundle%255CFrameworkBundle%255CController%255CTemplateController%253A%253AtemplateAction$#', $twig->render('index'));
}
protected function getFragmentHandler($returnOrException): FragmentHandler
diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/TranslationExtensionTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/TranslationExtensionTest.php
index 96f707cdfdf2c..f6dd5f623baee 100644
--- a/src/Symfony/Bridge/Twig/Tests/Extension/TranslationExtensionTest.php
+++ b/src/Symfony/Bridge/Twig/Tests/Extension/TranslationExtensionTest.php
@@ -206,6 +206,68 @@ public function testDefaultTranslationDomainWithNamedArguments()
$this->assertEquals('foo (custom)foo (foo)foo (custom)foo (custom)foo (fr)foo (custom)foo (fr)', trim($template->render([])));
}
+ public function testDefaultTranslationDomainWithExpression()
+ {
+ $templates = [
+ 'index' => '
+ {%- extends "base" %}
+
+ {%- trans_default_domain custom_domain %}
+
+ {%- block content %}
+ {{- "foo"|trans }}
+ {%- endblock %}
+ ',
+
+ 'base' => '
+ {%- block content "" %}
+ ',
+ ];
+
+ $translator = new Translator('en');
+ $translator->addLoader('array', new ArrayLoader());
+ $translator->addResource('array', ['foo' => 'foo (messages)'], 'en');
+ $translator->addResource('array', ['foo' => 'foo (custom)'], 'en', 'custom');
+ $translator->addResource('array', ['foo' => 'foo (foo)'], 'en', 'foo');
+
+ $template = $this->getTemplate($templates, $translator);
+
+ $this->assertEquals('foo (foo)', trim($template->render(['custom_domain' => 'foo'])));
+ }
+
+ public function testDefaultTranslationDomainWithExpressionAndInheritance()
+ {
+ $templates = [
+ 'index' => '
+ {%- extends "base" %}
+
+ {%- trans_default_domain foo_domain %}
+
+ {%- block content %}
+ {{- "foo"|trans }}
+ {%- endblock %}
+ ',
+
+ 'base' => '
+ {%- trans_default_domain custom_domain %}
+
+ {{- "foo"|trans }}
+ {%- block content "" %}
+ {{- "foo"|trans }}
+ ',
+ ];
+
+ $translator = new Translator('en');
+ $translator->addLoader('array', new ArrayLoader());
+ $translator->addResource('array', ['foo' => 'foo (messages)'], 'en');
+ $translator->addResource('array', ['foo' => 'foo (custom)'], 'en', 'custom');
+ $translator->addResource('array', ['foo' => 'foo (foo)'], 'en', 'foo');
+
+ $template = $this->getTemplate($templates, $translator);
+
+ $this->assertEquals('foo (custom)foo (foo)foo (custom)', trim($template->render(['foo_domain' => 'foo', 'custom_domain' => 'custom'])));
+ }
+
private function getTemplate($template, ?TranslatorInterface $translator = null): TemplateWrapper
{
$translator ??= new Translator('en');
diff --git a/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php b/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php
index f5d37e7d45c4e..cce8ee9a68839 100644
--- a/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php
+++ b/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php
@@ -105,10 +105,14 @@ public function testRenderedOnce()
;
$email->textTemplate('text');
+ $this->assertFalse($email->isRendered());
$renderer->render($email);
+ $this->assertTrue($email->isRendered());
+
$this->assertEquals('Text', $email->getTextBody());
$email->text('reset');
+ $this->assertTrue($email->isRendered());
$renderer->render($email);
$this->assertEquals('reset', $email->getTextBody());
diff --git a/src/Symfony/Bridge/Twig/Tests/Node/SearchAndRenderBlockNodeTest.php b/src/Symfony/Bridge/Twig/Tests/Node/SearchAndRenderBlockNodeTest.php
index dc419f5dad227..ab9113acf5c57 100644
--- a/src/Symfony/Bridge/Twig/Tests/Node/SearchAndRenderBlockNodeTest.php
+++ b/src/Symfony/Bridge/Twig/Tests/Node/SearchAndRenderBlockNodeTest.php
@@ -21,6 +21,7 @@
use Twig\Node\Expression\ConditionalExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\NameExpression;
+use Twig\Node\Expression\Ternary\ConditionalTernary;
use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Node\Node;
use Twig\Node\Nodes;
@@ -275,32 +276,32 @@ public function testCompileLabelWithLabelAndAttributes()
public function testCompileLabelWithLabelThatEvaluatesToNull()
{
+ if (class_exists(ConditionalTernary::class)) {
+ $conditional = new ConditionalTernary(
+ // if
+ new ConstantExpression(true, 0),
+ // then
+ new ConstantExpression(null, 0),
+ // else
+ new ConstantExpression(null, 0),
+ 0
+ );
+ } else {
+ $conditional = new ConditionalExpression(
+ // if
+ new ConstantExpression(true, 0),
+ // then
+ new ConstantExpression(null, 0),
+ // else
+ new ConstantExpression(null, 0),
+ 0
+ );
+ }
+
if (class_exists(Nodes::class)) {
- $arguments = new Nodes([
- new ContextVariable('form', 0),
- new ConditionalExpression(
- // if
- new ConstantExpression(true, 0),
- // then
- new ConstantExpression(null, 0),
- // else
- new ConstantExpression(null, 0),
- 0
- ),
- ]);
+ $arguments = new Nodes([new ContextVariable('form', 0), $conditional]);
} else {
- $arguments = new Node([
- new NameExpression('form', 0),
- new ConditionalExpression(
- // if
- new ConstantExpression(true, 0),
- // then
- new ConstantExpression(null, 0),
- // else
- new ConstantExpression(null, 0),
- 0
- ),
- ]);
+ $arguments = new Node([new NameExpression('form', 0), $conditional]);
}
$node = new SearchAndRenderBlockNode(new TwigFunction('form_label'), $arguments, 0);
@@ -322,18 +323,32 @@ public function testCompileLabelWithLabelThatEvaluatesToNull()
public function testCompileLabelWithLabelThatEvaluatesToNullAndAttributes()
{
+ if (class_exists(ConditionalTernary::class)) {
+ $conditional = new ConditionalTernary(
+ // if
+ new ConstantExpression(true, 0),
+ // then
+ new ConstantExpression(null, 0),
+ // else
+ new ConstantExpression(null, 0),
+ 0
+ );
+ } else {
+ $conditional = new ConditionalExpression(
+ // if
+ new ConstantExpression(true, 0),
+ // then
+ new ConstantExpression(null, 0),
+ // else
+ new ConstantExpression(null, 0),
+ 0
+ );
+ }
+
if (class_exists(Nodes::class)) {
$arguments = new Nodes([
new ContextVariable('form', 0),
- new ConditionalExpression(
- // if
- new ConstantExpression(true, 0),
- // then
- new ConstantExpression(null, 0),
- // else
- new ConstantExpression(null, 0),
- 0
- ),
+ $conditional,
new ArrayExpression([
new ConstantExpression('foo', 0),
new ConstantExpress
8000
ion('bar', 0),
@@ -344,12 +359,7 @@ public function testCompileLabelWithLabelThatEvaluatesToNullAndAttributes()
} else {
$arguments = new Node([
new NameExpression('form', 0),
- new ConditionalExpression(
- new ConstantExpression(true, 0),
- new ConstantExpression(null, 0),
- new ConstantExpression(null, 0),
- 0
- ),
+ $conditional,
new ArrayExpression([
new ConstantExpression('foo', 0),
new ConstantExpression('bar', 0),
diff --git a/src/Symfony/Bridge/Twig/Tests/NodeVisitor/TwigNodeProvider.php b/src/Symfony/Bridge/Twig/Tests/NodeVisitor/TwigNodeProvider.php
index a6910855e38b1..64ce92bc04355 100644
--- a/src/Symfony/Bridge/Twig/Tests/NodeVisitor/TwigNodeProvider.php
+++ b/src/Symfony/Bridge/Twig/Tests/NodeVisitor/TwigNodeProvider.php
@@ -14,6 +14,7 @@
use Symfony\Bridge\Twig\Node\TransDefaultDomainNode;
use Symfony\Bridge\Twig\Node\TransNode;
use Twig\Node\BodyNode;
+use Twig\Node\EmptyNode;
use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FilterExpression;
@@ -27,13 +28,15 @@ class TwigNodeProvider
{
public static function getModule($content)
{
+ $emptyNodeExists = class_exists(EmptyNode::class);
+
return new ModuleNode(
new BodyNode([new ConstantExpression($content, 0)]),
null,
- new ArrayExpression([], 0),
- new ArrayExpression([], 0),
- new ArrayExpression([], 0),
- null,
+ $emptyNodeExists ? new EmptyNode() : new ArrayExpression([], 0),
+ $emptyNodeExists ? new EmptyNode() : new ArrayExpression([], 0),
+ $emptyNodeExists ? new EmptyNode() : new ArrayExpression([], 0),
+ $emptyNodeExists ? new EmptyNode() : null,
new Source('', '')
);
}
diff --git a/src/Symfony/Bridge/Twig/TokenParser/DumpTokenParser.php b/src/Symfony/Bridge/Twig/TokenParser/DumpTokenParser.php
index e671f9ba0b7dd..9c12dc23dfba5 100644
--- a/src/Symfony/Bridge/Twig/TokenParser/DumpTokenParser.php
+++ b/src/Symfony/Bridge/Twig/TokenParser/DumpTokenParser.php
@@ -14,6 +14,7 @@
use Symfony\Bridge\Twig\Node\DumpNode;
use Twig\Node\Expression\Variable\LocalVariable;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Token;
use Twig\TokenParser\AbstractTokenParser;
@@ -34,13 +35,28 @@ public function parse(Token $token): Node
{
$values = null;
if (!$this->parser->getStream()->test(Token::BLOCK_END_TYPE)) {
- $values = $this->parser->getExpressionParser()->parseMultitargetExpression();
+ $values = method_exists($this->parser, 'parseExpression') ?
+ $this->parseMultitargetExpression() :
+ $this->parser->getExpressionParser()->parseMultitargetExpression();
}
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
return new DumpNode(class_exists(LocalVariable::class) ? new LocalVariable(null, $token->getLine()) : $this->parser->getVarName(), $values, $token->getLine(), $this->getTag());
}
+ private function parseMultitargetExpression(): Node
+ {
+ $targets = [];
+ while (true) {
+ $targets[] = $this->parser->parseExpression();
+ if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ',')) {
+ break;
+ }
+ }
+
+ return new Nodes($targets);
+ }
+
public function getTag(): string
{
return 'dump';
diff --git a/src/Symfony/Bridge/Twig/TokenParser/FormThemeTokenParser.php b/src/Symfony/Bridge/Twig/TokenParser/FormThemeTokenParser.php
index 413a8f51ed02f..0988eae59846a 100644
--- a/src/Symfony/Bridge/Twig/TokenParser/FormThemeTokenParser.php
+++ b/src/Symfony/Bridge/Twig/TokenParser/FormThemeTokenParser.php
@@ -29,12 +29,16 @@ public function parse(Token $token): Node
$lineno = $token->getLine();
$stream = $this->parser->getStream();
- $form = $this->parser->getExpressionParser()->parseExpression();
+ $parseExpression = method_exists($this->parser, 'parseExpression')
+ ? $this->parser->parseExpression(...)
+ : $this->parser->getExpressionParser()->parseExpression(...);
+
+ $form = $parseExpression();
$only = false;
if ($this->parser->getStream()->test(Token::NAME_TYPE, 'with')) {
$this->parser->getStream()->next();
- $resources = $this->parser->getExpressionParser()->parseExpression();
+ $resources = $parseExpression();
if ($this->parser->getStream()->nextIf(Token::NAME_TYPE, 'only')) {
$only = true;
@@ -42,7 +46,7 @@ public function parse(Token $token): Node
} else {
$resources = new ArrayExpression([], $stream->getCurrent()->getLine());
do {
- $resources->addElement($this->parser->getExpressionParser()->parseExpression());
+ $resources->addElement($parseExpression());
} while (!$stream->test(Token::BLOCK_END_TYPE));
}
diff --git a/src/Symfony/Bridge/Twig/TokenParser/StopwatchTokenParser.php b/src/Symfony/Bridge/Twig/TokenParser/StopwatchTokenParser.php
index ac6baa6d88fa8..d77cbbf4a27de 100644
--- a/src/Symfony/Bridge/Twig/TokenParser/StopwatchTokenParser.php
+++ b/src/Symfony/Bridge/Twig/TokenParser/StopwatchTokenParser.php
@@ -36,7 +36,9 @@ public function parse(Token $token): Node
$stream = $this->parser->getStream();
// {% stopwatch 'bar' %}
- $name = $this->parser->getExpressionParser()->parseExpression();
+ $name = method_exists($this->parser, 'parseExpression') ?
+ $this->parser->parseExpression() :
+ $this->parser->getExpressionParser()->parseExpression();
$stream->expect(Token::BLOCK_END_TYPE);
diff --git a/src/Symfony/Bridge/Twig/TokenParser/TransDefaultDomainTokenParser.php b/src/Symfony/Bridge/Twig/TokenParser/TransDefaultDomainTokenParser.php
index c6d850d07cbf7..a64a2332810e7 100644
--- a/src/Symfony/Bridge/Twig/TokenParser/TransDefaultDomainTokenParser.php
+++ b/src/Symfony/Bridge/Twig/TokenParser/TransDefaultDomainTokenParser.php
@@ -25,7 +25,9 @@ final class TransDefaultDomainTokenParser extends AbstractTokenParser
{
public function parse(Token $token): Node
{
- $expr = $this->parser->getExpressionParser()->parseExpression();
+ $expr = method_exists($this->parser, 'parseExpression') ?
+ $this->parser->parseExpression() :
+ $this->parser->getExpressionParser()->parseExpression();
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
diff --git a/src/Symfony/Bridge/Twig/TokenParser/TransTokenParser.php b/src/Symfony/Bridge/Twig/TokenParser/TransTokenParser.php
index 67b92dd8d55fd..f522356bc6774 100644
--- a/src/Symfony/Bridge/Twig/TokenParser/TransTokenParser.php
+++ b/src/Symfony/Bridge/Twig/TokenParser/TransTokenParser.php
@@ -36,29 +36,33 @@ public function parse(Token $token): Node
$vars = new ArrayExpression([], $lineno);
$domain = null;
$locale = null;
+ $parseExpression = method_exists($this->parser, 'parseExpression')
+ ? $this->parser->parseExpression(...)
+ : $this->parser->getExpressionParser()->parseExpression(...);
+
if (!$stream->test(Token::BLOCK_END_TYPE)) {
if ($stream->test('count')) {
// {% trans count 5 %}
$stream->next();
- $count = $this->parser->getExpressionParser()->parseExpression();
+ $count = $parseExpression();
}
if ($stream->test('with')) {
// {% trans with vars %}
$stream->next();
- $vars = $this->parser->getExpressionParser()->parseExpression();
+ $vars = $parseExpression();
}
if ($stream->test('from')) {
// {% trans from "messages" %}
$stream->next();
- $domain = $this->parser->getExpressionParser()->parseExpression();
+ $domain = $parseExpression();
}
if ($stream->test('into')) {
// {% trans into "fr" %}
$stream->next();
- $locale = $this->parser->getExpressionParser()->parseExpression();
+ $locale = $parseExpression();
} elseif (!$stream->test(Token::BLOCK_END_TYPE)) {
throw new SyntaxError('Unexpected token. Twig was looking for the "with", "from", or "into" keyword.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
}
diff --git a/src/Symfony/Bridge/Twig/composer.json b/src/Symfony/Bridge/Twig/composer.json
index 3af8ccbb7ecce..f0ae491de58a1 100644
--- a/src/Symfony/Bridge/Twig/composer.json
+++ b/src/Symfony/Bridge/Twig/composer.json
@@ -30,7 +30,7 @@
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/emoji": "^7.1",
"symfony/finder": "^6.4|^7.0",
- "symfony/form": "^6.4|^7.0",
+ "symfony/form": "^6.4.20|^7.2.5",
"symfony/html-sanitizer": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/AboutCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/AboutCommand.php
index f4281cd21eef8..4dc86130a8cc5 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/AboutCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/AboutCommand.php
@@ -86,7 +86,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
['Timezone', date_default_timezone_get().' ('.(new \DateTimeImmutable())->format(\DateTimeInterface::W3C).'>)'],
['OPcache', \extension_loaded('Zend OPcache') ? (filter_var(\ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN) ? 'Enabled' : 'Not enabled') : 'Not installed'],
['APCu', \extension_loaded('apcu') ? (filter_var(\ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? 'Enabled' : 'Not enabled') : 'Not installed'],
- ['Xdebug', \extension_loaded('xdebug') ? ($xdebugMode && $xdebugMode !== 'off' ? 'Enabled (' . $xdebugMode . ')' : 'Not enabled') : 'Not installed'],
+ ['Xdebug', \extension_loaded('xdebug') ? ($xdebugMode && 'off' !== $xdebugMode ? 'Enabled (' . $xdebugMode . ')' : 'Not enabled') : 'Not installed'],
];
$io->table([], $rows);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
index 4ef2f5a1d0d56..0e48ead596cca 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
@@ -146,6 +146,16 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}
$this->warmupOptionals($useBuildDir ? $realCacheDir : $warmupDir, $warmupDir, $io);
}
+
+ // fix references to cached files with the real cache directory name
+ $search = [$warmupDir, str_replace('/', '\\/', $warmupDir), str_replace('\\', '\\\\', $warmupDir)];
+ $replace = str_replace('\\', '/', $realBuildDir);
+ foreach (Finder::create()->files()->in($warmupDir) as $file) {
+ $content = str_replace($search, $replace, $this->filesystem->readFile($file), $count);
+ if ($count) {
+ file_put_contents($file, $content);
+ }
+ }
}
if (!$fs->exists($warmupDir.'/'.$containerDir)) {
@@ -227,16 +237,6 @@ private function warmup(string $warmupDir, string $realBuildDir): void
throw new \LogicException('Calling "cache:clear" with a kernel that does not implement "Symfony\Component\HttpKernel\RebootableInterface" is not supported.');
}
$kernel->reboot($warmupDir);
-
- // fix references to cached files with the real cache directory name
- $search = [$warmupDir, str_replace('\\', '\\\\', $warmupDir)];
- $replace = str_replace('\\', '/', $realBuildDir);
- foreach (Finder::create()->files()->in($warmupDir) as $file) {
- $content = str_replace($search, $replace, $this->filesystem->readFile($file), $count);
- if ($count) {
- file_put_contents($file, $content);
- }
- }
}
private function warmupOptionals(string $cacheDir, string $warmupDir, SymfonyStyle $io): void
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
index 46cdca9abf1de..2c5b8291bf189 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
@@ -287,7 +287,9 @@ private function findProperServiceName(InputInterface $input, SymfonyStyle $io,
return $matchingServices[0];
}
- return $io->choice('Select one of the following services to display its information', $matchingServices);
+ natsort($matchingServices);
+
+ return $io->choice('Select one of the following services to display its information', array_values($matchingServices));
}
private function findProperTagName(InputInterface $input, SymfonyStyle $io, ContainerBuilder $container, string $tagName): string
@@ -305,7 +307,9 @@ private function findProperTagName(InputInterface $input, SymfonyStyle $io, Cont
return $matchingTags[0];
}
- return $io->choice('Select one of the following tags to display its information', $matchingTags);
+ natsort($matchingTags);
+
+ return $io->choice('Select one of the following tags to display its information', array_values($matchingTags));
}
private function findServiceIdsContaining(ContainerBuilder $container, string $name, bool $showHidden): array
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
index b26d3f9ad20dd..194d1c50d25d5 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
@@ -62,6 +62,10 @@ public function __construct(
private array $enabledLocales = [],
) {
parent::__construct();
+
+ if (!method_exists($writer, 'getFormats')) {
+ throw new \InvalidArgumentException(sprintf('The writer class "%s" does not implement the "getFormats()" method.', $writer::class));
+ }
}
protected function configure(): void
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationLintCommandPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationLintCommandPass.php
new file mode 100644
index 0000000000000..4756795d1beff
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationLintCommandPass.php
@@ -0,0 +1,33 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
+
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\Translation\TranslatorBagInterface;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+final class TranslationLintCommandPass implements CompilerPassInterface
+{
+ public function process(ContainerBuilder $container): void
+ {
+ if (!$container->hasDefinition('console.command.translation_lint') || !$container->has('translator')) {
+ return;
+ }
+
+ $translatorClass = $container->getParameterBag()->resolveValue($container->findDefinition('translator')->getClass());
+
+ if (!is_subclass_of($translatorClass, TranslatorInterface::class) || !is_subclass_of($translatorClass, TranslatorBagInterface::class)) {
+ $container->removeDefinition('console.command.translation_lint');
+ }
+ }
+}
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationUpdateCommandPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationUpdateCommandPass.php
new file mode 100644
index 0000000000000..7542191d0e83e
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationUpdateCommandPass.php
@@ -0,0 +1,31 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
+
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+
+class TranslationUpdateCommandPass implements CompilerPassInterface
+{
+ public function process(ContainerBuilder $container): void
+ {
+ if (!$container->hasDefinition('console.command.translation_extract')) {
+ return;
+ }
+
+ $translationWriterClass = $container->getParameterBag()->resolveValue($container->findDefinition('translation.writer')->getClass());
+
+ if (!method_exists($translationWriterClass, 'getFormats')) {
+ $container->removeDefinition('console.command.translation_extract');
+ }
+ }
+}
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
index 678698f4d0747..5154393f2769e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
@@ -46,6 +46,7 @@
use Symfony\Component\Translation\Translator;
use Symfony\Component\TypeInfo\Type;
use Symfony\Component\Uid\Factory\UuidFactory;
+use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Validation;
use Symfony\Component\Webhook\Controller\WebhookController;
use Symfony\Component\WebLink\HttpHeaderSerializer;
@@ -250,6 +251,8 @@ private function addFormSection(ArrayNodeDefinition $rootNode, callable $enableI
->scalarNode('field_name')->defaultValue('_token')->end()
->arrayNode('field_attr')
->performNoDeepMerging()
+ ->normalizeKeys(false)
+ ->useAttributeAsKey('name')
->scalarPrototype()->end()
->defaultValue(['data-controller' => 'csrf-protection'])
->end()
@@ -1017,7 +1020,7 @@ private function addValidationSection(ArrayNodeDefinition $rootNode, callable $e
->validate()->castToArray()->end()
->end()
->scalarNode('translation_domain')->defaultValue('validators')->end()
- ->enumNode('email_validation_mode')->values(['html5', 'loose', 'strict'])->defaultValue('html5')->end()
+ ->enumNode('email_validation_mode')->values((class_exists(Email::class) ? Email::VALIDATION_MODES : ['html5-allow-no-tld', 'html5', 'strict']) + ['loose'])->defaultValue('html5')->end()
->arrayNode('mapping')
->addDefaultsIfNotSet()
->fixXmlConfig('path')
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 26cae1f306c8f..3c4e4f9f3a5eb 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -120,6 +120,8 @@
use Symfony\Component\Mime\MimeTypeGuesserInterface;
use Symfony\Component\Mime\MimeTypes;
use Symfony\Component\Notifier\Bridge as NotifierBridge;
+use Symfony\Component\Notifier\Bridge\FakeChat\FakeChatTransportFactory;
+use Symfony\Component\Notifier\Bridge\FakeSms\FakeSmsTransportFactory;
use Symfony\Component\Notifier\ChatterInterface;
use Symfony\Component\Notifier\Notifier;
use Symfony\Component\Notifier\Recipient\Recipient;
@@ -310,10 +312,17 @@ public function load(array $configs, ContainerBuilder $container): void
}
}
+ $emptySecretHint = '"framework.secret" option';
if (isset($config['secret'])) {
$container->setParameter('kernel.secret', $config['secret']);
+ $usedEnvs = [];
+ $container->resolveEnvPlaceholders($config['secret'], null, $usedEnvs);
+
+ if ($usedEnvs) {
+ $emptySecretHint = \sprintf('"%s" env var%s', implode('", "', $usedEnvs), 1 === \count($usedEnvs) ? '' : 's');
+ }
}
- $container->parameterCannotBeEmpty('kernel.secret', 'A non-empty value for the parameter "kernel.secret" is required. Did you forget to configure the "framework.secret" option?');
+ $container->parameterCannotBeEmpty('kernel.secret', 'A non-empty value for the parameter "kernel.secret" is required. Did you forget to configure the '.$emptySecretHint.'?');
$container->setParameter('kernel.http_method_override', $config['http_method_override']);
$container->setParameter('kernel.trust_x_sendfile_type_header', $config['trust_x_sendfile_type_header']);
@@ -606,7 +615,7 @@ public function load(array $configs, ContainerBuilder $container): void
$container->registerForAutoconfiguration(DataCollectorInterface::class)
->addTag('data_collector');
$container->registerForAutoconfiguration(FormTypeInterface::class)
- ->addTag('form.type');
+ ->addTag('form.type', ['csrf_token_id' => '%.form.type_extension.csrf.token_id%']);
$container->registerForAutoconfiguration(FormTypeGuesserInterface::class)
->addTag('form.type_guesser');
$container->registerForAutoconfiguration(FormTypeExtensionInterface::class)
@@ -722,7 +731,7 @@ static function (ChildDefinition $definition, AsPeriodicTask|AsCronTask $attribu
$container->getDefinition('config_cache_factory')->setArguments([]);
}
- if (!$config['disallow_search_engine_index'] ?? false) {
+ if (!$config['disallow_search_engine_index']) {
$container->removeDefinition('disallow_search_engine_index_response_listener');
}
@@ -768,9 +777,7 @@ private function registerFormConfiguration(array $config, ContainerBuilder $cont
$container->setParameter('form.type_extension.csrf.enabled', true);
$container->setParameter('form.type_extension.csrf.field_name', $config['form']['csrf_protection']['field_name']);
$container->setParameter('form.type_extension.csrf.field_attr', $config['form']['csrf_protection']['field_attr']);
-
- $container->getDefinition('form.type_extension.csrf')
- ->replaceArgument(7, $config['form']['csrf_protection']['token_id']);
+ $container->setParameter('.form.type_extension.csrf.token_id', $config['form']['csrf_protection']['token_id']);
} else {
$container->setParameter('form.type_extension.csrf.enabled', false);
}
@@ -1939,24 +1946,14 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
$container->setParameter('serializer.default_context', $defaultContext);
}
- if (!$container->hasDefinition('serializer.normalizer.object')) {
- return;
- }
-
- $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
- $context = $arguments[6] ?? $defaultContext;
-
- if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
- $context += ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
- $container->getDefinition('serializer.normalizer.object')->setArgument(5, null);
+ if ($config['circular_reference_handler'] ?? false) {
+ $container->setParameter('.serializer.circular_reference_handler', $config['circular_reference_handler']);
}
if ($config['max_depth_handler'] ?? false) {
- $context += ['max_depth_handler' => new Reference($config['max_depth_handler'])];
+ $container->setParameter('.serializer.max_depth_handler', $config['max_depth_handler']);
}
- $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
-
$container->getDefinition('serializer.normalizer.property')->setArgument(5, $defaultContext);
$container->setParameter('.serializer.named_serializers', $config['named_serializers'] ?? []);
@@ -2249,13 +2246,17 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
$transportRateLimiterReferences = [];
foreach ($config['transports'] as $name => $transport) {
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';
+ $tags = [
+ 'alias' => $name,
+ 'is_failure_transport' => \in_array($name, $failureTransports, true),
+ ];
+ if (str_starts_with($transport['dsn'], 'sync://')) {
+ $tags['is_consumable'] = false;
+ }
$transportDefinition = (new Definition(TransportInterface::class))
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
->setArguments([$transport['dsn'], $transport['options'] + ['transport_name' => $name], new Reference($serializerId)])
- ->addTag('messenger.receiver', [
- 'alias' => $name,
- 'is_failure_transport' => \in_array($name, $failureTransports, true),
- ])
+ ->addTag('messenger.receiver', $tags)
;
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
$senderAliases[$name] = $transportId;
@@ -2543,11 +2544,13 @@ private function registerHttpClientConfiguration(array $config, ContainerBuilder
->setFactory([ScopingHttpClient::class, 'forBaseUri'])
->setArguments([new Reference('http_client.transport'), $baseUri, $scopeConfig])
->addTag('http_client.client')
+ ->addTag('kernel.reset', ['method' => 'reset', 'on_invalid' => 'ignore'])
;
} else {
$container->register($name, ScopingHttpClient::class)
->setArguments([new Reference('http_client.transport'), [$scope => $scopeConfig], $scope])
->addTag('http_client.client')
+ ->addTag('kernel.reset', ['method' => 'reset', 'on_invalid' => 'ignore'])
;
}
@@ -2657,7 +2660,6 @@ private function registerMailerConfiguration(array $config, ContainerBuilder $co
}
$transports = $config['dsn'] ? ['main' => $config['dsn']] : $config['transports'];
$container->getDefinition('mailer.transports')->setArgument(0, $transports);
- $container->getDefinition('mailer.default_transport')->setArgument(0, current($transports));
$mailer = $container->getDefinition('mailer.mailer');
if (false === $messageBus = $config['message_bus']) {
@@ -2777,7 +2779,7 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
$container->removeDefinition('notifier.channel.email');
}
- foreach (['texter', 'chatter', 'notifier.channel.chat', 'notifier.channel.email', 'notifier.channel.sms'] as $serviceId) {
+ foreach (['texter', 'chatter', 'notifier.channel.chat', 'notifier.channel.email', 'notifier.channel.sms', 'notifier.channel.push', 'notifier.channel.desktop'] as $serviceId) {
if (!$container->hasDefinition($serviceId)) {
continue;
}
@@ -2826,8 +2828,6 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
NotifierBridge\Engagespot\EngagespotTransportFactory::class => 'notifier.transport_factory.engagespot',
NotifierBridge\Esendex\EsendexTransportFactory::class => 'notifier.transport_factory.esendex',
NotifierBridge\Expo\ExpoTransportFactory::class => 'notifier.transport_factory.expo',
- NotifierBridge\FakeChat\FakeChatTransportFactory::class => 'notifier.transport_factory.fake-chat',
- NotifierBridge\FakeSms\FakeSmsTransportFactory::class => 'notifier.transport_factory.fake-sms',
NotifierBridge\Firebase\FirebaseTransportFactory::class => 'notifier.transport_factory.firebase',
NotifierBridge\FortySixElks\FortySixElksTransportFactory::class => 'notifier.transport_factory.forty-six-elks',
NotifierBridge\FreeMobile\FreeMobileTransportFactory::class => 'notifier.transport_factory.free-mobile',
@@ -2915,20 +2915,26 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
$container->removeDefinition($classToServices[NotifierBridge\Mercure\MercureTransportFactory::class]);
}
- if (ContainerBuilder::willBeAvailable('symfony/fake-chat-notifier', NotifierBridge\FakeChat\FakeChatTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'])) {
- $container->getDefinition($classToServices[NotifierBridge\FakeChat\FakeChatTransportFactory::class])
- ->replaceArgument(0, new Reference('mailer'))
- ->replaceArgument(1, new Reference('logger'))
+ // don't use ContainerBuilder::willBeAvailable() as these are not needed in production
+ if (class_exists(FakeChatTransportFactory::class)) {
+ $container->getDefinition('notifier.transport_factory.fake-chat')
+ ->replaceArgument(0, new Reference('mailer', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
+ ->replaceArgument(1, new Reference('logger', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
->addArgument(new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
->addArgument(new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
+ } else {
+ $container->removeDefinition('notifier.transport_factory.fake-chat');
}
- if (ContainerBuilder::willBeAvailable('symfony/fake-sms-notifier', NotifierBridge\FakeSms\FakeSmsTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'])) {
- $container->getDefinition($classToServices[NotifierBridge\FakeSms\FakeSmsTransportFactory::class])
- ->replaceArgument(0, new Reference('mailer'))
- ->replaceArgument(1, new Reference('logger'))
+ // don't use ContainerBuilder::willBeAvailable() as these are not needed in production
+ if (class_exists(FakeSmsTransportFactory::class)) {
+ $container->getDefinition('notifier.transport_factory.fake-sms')
+ ->replaceArgument(0, new Reference('mailer', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
+ ->replaceArgument(1, new Reference('logger', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
->addArgument(new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
->addArgument(new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
+ } else {
+ $container->removeDefinition('notifier.transpor
8000
t_factory.fake-sms');
}
if (ContainerBuilder::willBeAvailable('symfony/bluesky-notifier', NotifierBridge\Bluesky\BlueskyTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier'])) {
diff --git a/src/Symfony/Bundle/FrameworkBundle/EventListener/ConsoleProfilerListener.php b/src/Symfony/Bundle/FrameworkBundle/EventListener/ConsoleProfilerListener.php
index 4a8c9015eefc0..712e2ead3fb2f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/EventListener/ConsoleProfilerListener.php
+++ b/src/Symfony/Bundle/FrameworkBundle/EventListener/ConsoleProfilerListener.php
@@ -38,6 +38,8 @@ final class ConsoleProfilerListener implements EventSubscriberInterface
/** @var \SplObjectStorage */
private \SplObjectStorage $parents;
+ private bool $disabled = false;
+
public function __construct(
private readonly Profiler $profiler,
private readonly RequestStack $requestStack,
@@ -66,7 +68,7 @@ public function initialize(ConsoleCommandEvent $event): void
$input = $event->getInput();
if (!$input->hasOption('profile') || !$input->getOption('profile')) {
- $this->profiler->disable();
+ $this->disabled = true;
return;
}
@@ -92,7 +94,12 @@ public function catch(ConsoleErrorEvent $event): void
public function profile(ConsoleTerminateEvent $event): void
{
- if (!$this->cliMode || !$this->profiler->isEnabled()) {
+ $error = $this->error;
+ $this->error = null;
+
+ if (!$this->cliMode || $this->disabled) {
+ $this->disabled = false;
+
return;
}
@@ -114,8 +121,7 @@ public function profile(ConsoleTerminateEvent $event): void
$request->command->exitCode = $event->getExitCode();
$request->command->interruptedBySignal = $event->getInterruptingSignal();
- $profile = $this->profiler->collect($request, $request->getResponse(), $this->error);
- $this->error = null;
+ $profile = $this->profiler->collect($request, $request->getResponse(), $error);
$this->profiles[$request] = $profile;
if ($this->parents[$request] = $this->requestStack->getParentRequest()) {
diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
index a1eb059bb01ce..e83c4dfe611d1 100644
--- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
+++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
@@ -19,6 +19,8 @@
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RemoveUnusedSessionMarshallingHandlerPass;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TestServiceContainerRealRefPass;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TestServiceContainerWeakRefPass;
+use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationLintCommandPass;
+use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationUpdateCommandPass;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass;
use Symfony\Bundle\FrameworkBundle\DependencyInjection\VirtualRequestStackPass;
use Symfony\Component\Cache\Adapter\ApcuAdapter;
@@ -149,6 +151,8 @@ public function build(ContainerBuilder $container): void
$this->addCompilerPassIfExists($container, AddConstraintValidatorsPass::class);
$this->addCompilerPassIfExists($container, AddValidatorInitializersPass::class);
$this->addCompilerPassIfExists($container, AddConsoleCommandPass::class, PassConfig::TYPE_BEFORE_REMOVING);
+ // must be registered before the AddConsoleCommandPass
+ $container->addCompilerPass(new TranslationLintCommandPass(), PassConfig::TYPE_BEFORE_REMOVING, 10);
// must be registered as late as possible to get access to all Twig paths registered in
// twig.template_iterator definition
$this->addCompilerPassIfExists($container, TranslatorPass::class, PassConfig::TYPE_BEFORE_OPTIMIZATION, -32);
@@ -181,6 +185,7 @@ public function build(ContainerBuilder $container): void
// must be registered after MonologBundle's LoggerChannelPass
$container->addCompilerPass(new ErrorLoggerCompilerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -32);
$container->addCompilerPass(new VirtualRequestStackPass());
+ $container->addCompilerPass(new TranslationUpdateCommandPass(), PassConfig::TYPE_BEFORE_REMOVING);
if ($container->getParameter('kernel.debug')) {
$container->addCompilerPass(new AddDebugLogProcessorPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 2);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.php
index c63d087c864db..a86bb7c60fdcf 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.php
@@ -24,7 +24,7 @@
param('validator.translation_domain'),
service('form.server_params'),
param('form.type_extension.csrf.field_attr'),
- abstract_arg('framework.form.csrf_protection.token_id'),
+ param('.form.type_extension.csrf.token_id'),
])
->tag('form.type_extension')
;
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/http_client.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/http_client.php
index 12a5c01f6bd17..a562c2598ce01 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/http_client.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/http_client.php
@@ -39,6 +39,7 @@
->factory('current')
->args([[service('http_client.transport')]])
->tag('http_client.client')
+ ->tag('kernel.reset', ['method' => 'reset', 'on_invalid' => 'ignore'])
->alias(HttpClientInterface::class, 'http_client')
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php
index 9eb545ca268ea..f1dc560ab76f8 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php
@@ -45,11 +45,7 @@
tagged_iterator('mailer.transport_factory'),
])
- ->set('mailer.default_transport', TransportInterface::class)
- ->factory([service('mailer.transport_factory'), 'fromString'])
- ->args([
- abstract_arg('env(MAILER_DSN)'),
- ])
+ ->alias('mailer.default_transport', 'mailer.transports')
->alias(TransportInterface::class, 'mailer.default_transport')
->set('mailer.messenger.message_handler', MessageHandler::class)
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier.php
index 04fa4ce510a2b..28900ad10d7bd 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier.php
@@ -75,11 +75,17 @@
->tag('notifier.channel', ['channel' => 'email'])
->set('notifier.channel.push', PushChannel::class)
- ->args([service('texter.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
+ ->args([
+ service('texter.transports'),
+ abstract_arg('message bus'),
+ ])
->tag('notifier.channel', ['channel' => 'push'])
->set('notifier.channel.desktop', DesktopChannel::class)
- ->args([service('texter.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
+ ->args([
+ service('texter.transports'),
+ abstract_arg('message bus'),
+ ])
->tag('notifier.channel', ['channel' => 'desktop'])
->set('notifier.monolog_handler', NotifierHandler::class)
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.php
index eaef795977d98..4ae34649b4aaf 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.php
@@ -40,7 +40,7 @@
->set('console_profiler_listener', ConsoleProfilerListener::class)
->args([
- service('profiler'),
+ service('.lazy_profiler'),
service('.virtual_request_stack'),
service('debug.stopwatch'),
param('kernel.runtime_mode.cli'),
@@ -48,6 +48,11 @@
])
->tag('kernel.event_subscriber')
+ ->set('.lazy_profiler', Profiler::class)
+ ->factory('current')
+ ->args([[service('profiler')]])
+ ->lazy()
+
->set('.virtual_request_stack', VirtualRequestStack::class)
->args([service('request_stack')])
->public()
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
index ed7cc744f0464..e99022acf7c45 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
@@ -79,7 +79,7 @@
-
+
@@ -278,6 +278,7 @@
+
@@ -310,6 +311,11 @@
+
+
+
+
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php
index d689d42995ef9..b291f51ac8546 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php
@@ -60,7 +60,7 @@
$container->services()
->set('serializer', Serializer::class)
- ->args([[], []])
+ ->args([[], [], []])
->alias(SerializerInterface::class, 'serializer')
->alias(NormalizerInterface::class, 'serializer')
@@ -129,7 +129,7 @@
service('property_info')->ignoreOnInvalid(),
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
null,
- null,
+ abstract_arg('default context, set in the SerializerPass'),
service('property_info')->ignoreOnInvalid(),
])
->tag('serializer.normalizer', ['built_in' => true, 'priority' => -1000])
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php
index 53856f356d056..e5a86d8f411f5 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.php
@@ -100,6 +100,7 @@ class_exists(WorkflowEvents::class) ? WorkflowEvents::ALIASES : []
->alias(HttpKernelInterface::class, 'http_kernel')
->set('request_stack', RequestStack::class)
+ ->tag('kernel.reset', ['method' => 'resetRequestFormats', 'on_invalid' => 'ignore'])
->public()
->alias(RequestStack::class, 'request_stack')
@@ -157,6 +158,7 @@ class_exists(WorkflowEvents::class) ? WorkflowEvents::ALIASES : []
->args([
new Parameter('kernel.secret'),
])
+ ->lazy()
->alias(UriSigner::class, 'uri_signer')
->set('config_cache_factory', ResourceCheckerConfigCacheFactory::class)
@@ -196,6 +198,7 @@ class_exists(WorkflowEvents::class) ? WorkflowEvents::ALIASES : []
tagged_iterator('container.env_var_loader'),
])
->tag('container.env_var_processor')
+ ->tag('kernel.reset', ['method' => 'reset'])
->set('slugger', AsciiSlugger::class)
->args([
diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/HttpClientAssertionsTrait.php b/src/Symfony/Bundle/FrameworkBundle/Test/HttpClientAssertionsTrait.php
index 9d22a822fb851..4a8afbab4ab98 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Test/HttpClientAssertionsTrait.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Test/HttpClientAssertionsTrait.php
@@ -14,10 +14,9 @@
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
use Symfony\Component\HttpClient\DataCollector\HttpClientDataCollector;
-/*
+/**
* @author Mathieu Santostefano
*/
-
trait HttpClientAssertionsTrait
{
public static function assertHttpClientRequest(string $expectedUrl, string $expectedMethod = 'GET', string|array|null $expectedBody = null, array $expectedHeaders = [], string $httpClientId = 'http_client'): void
diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php
index b2c2eb4d23089..87925f73c9b52 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php
@@ -39,6 +39,14 @@ protected function tearDown(): void
static::$booted = false;
}
+ public static function tearDownAfterClass(): void
+ {
+ static::ensureKernelShutdown();
+ static::$class = null;
+ static::$kernel = null;
+ static::$booted = false;
+ }
+
/**
* @throws \RuntimeException
* @throws \LogicException
diff --git a/src/Symfony/Bundle/FrameworkBundle/Test/NotificationAssertionsTrait.php b/src/Symfony/Bundle/FrameworkBundle/Test/NotificationAssertionsTrait.php
index b68473561eb4d..2c4c5467d4ebd 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Test/NotificationAssertionsTrait.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Test/NotificationAssertionsTrait.php
@@ -17,7 +17,7 @@
use Symfony\Component\Notifier\Message\MessageInterface;
use Symfony\Component\Notifier\Test\Constraint as NotifierConstraint;
-/*
+/**
* @author Smaïne Milianni
*/
trait NotificationAssertionsTrait
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
index 53706d2e05e32..6f3363f3998a0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
@@ -699,6 +699,22 @@ public function testSerializerJsonDetailedErrorMessagesNotSetByDefaultWithDebugD
$this->assertSame([], $config['serializer']['default_context'] ?? []);
}
+ public function testFormCsrfProtectionFieldAttrDoNotNormalizeKeys()
+ {
+ $processor = new Processor();
+ $config = $processor->processConfiguration(new Configuration(false), [
+ [
+ 'form' => [
+ 'csrf_protection' => [
+ 'field_attr' => ['data-example-attr' => 'value'],
+ ],
+ ],
+ ],
+ ]);
+
+ $this->assertSame(['data-example-attr' => 'value'], $config['form']['csrf_protection']['field_attr'] ?? []);
+ }
+
protected static function getBundleDefaultConfig()
{
return [
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/form_csrf_field_attr.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/form_csrf_field_attr.php
new file mode 100644
index 0000000000000..103ee4797a1b8
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/form_csrf_field_attr.php
@@ -0,0 +1,22 @@
+loadFromExtension('framework', [
+ 'annotations' => false,
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ 'php_errors' => ['log' => true],
+ 'csrf_protection' => [
+ 'enabled' => true,
+ ],
+ 'form' => [
+ 'csrf_protection' => [
+ 'field-attr' => [
+ 'data-foo' => 'bar',
+ 'data-bar' => 'baz',
+ ],
+ ],
+ ],
+ 'session' => [
+ 'storage_factory_id' => 'session.storage.factory.native',
+ ],
+]);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_sets_field_name.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_field_attr.xml
similarity index 67%
rename from src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_sets_field_name.xml
rename to src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_field_attr.xml
index 4a05e9d33294e..1889703bec2a9 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_sets_field_name.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_field_attr.xml
@@ -9,7 +9,13 @@
-
+
+
+
+ bar
+ baz
+
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_under_form_sets_field_name.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_under_form_sets_field_name.xml
deleted file mode 100644
index 09ef0ee167eb4..0000000000000
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/form_csrf_under_form_sets_field_name.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/form_csrf_field_attr.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/form_csrf_field_attr.yml
new file mode 100644
index 0000000000000..db519977548c4
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/form_csrf_field_attr.yml
@@ -0,0 +1,16 @@
+framework:
+ annotations: false
+ http_method_override: false
+ handle_all_throwables: true
+ php_errors:
+ log: true
+ csrf_protection:
+ enabled: true
+ form:
+ csrf_protection:
+ enabled: true
+ field_attr:
+ data-foo: bar
+ data-bar: baz
+ session:
+ storage_factory_id: session.storage.factory.native
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
index 798217191e7c0..655f9180eceb2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
@@ -33,6 +33,7 @@
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
use Symfony\Component\DependencyInjection\ChildDefinition;
+use Symfony\Component\DependencyInjection\Compiler\ResolveBindingsPass;
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
use Symfony\Component\DependencyInjection\Compiler\ResolveInstanceofConditionalsPass;
use Symfony\Component\DependencyInjection\Compiler\ResolveTaggedIteratorArgumentPass;
@@ -67,6 +68,7 @@
use Symfony\Component\Notifier\TexterInterface;
use Symfony\Component\PropertyAccess\PropertyAccessor;
use Symfony\Component\Security\Core\AuthenticationEvents;
+use Symfony\Component\Serializer\DependencyInjection\SerializerPass;
use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader;
use Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader;
use Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader;
@@ -1411,6 +1413,17 @@ public function testFormsCanBeEnabledWithoutCsrfProtection()
$this->assertFalse($container->getParameter('form.type_extension.csrf.enabled'));
}
+ public function testFormCsrfFieldAttr()
+ {
+ $container = $this->createContainerFromFile('form_csrf_field_attr');
+
+ $expected = [
+ 'data-foo' => 'bar',
+ 'data-bar' => 'baz',
+ ];
+ $this->assertSame($expected, $container->getParameter('form.type_extension.csrf.field_attr'));
+ }
+
public function testStopwatchEnabledWithDebugModeEnabled()
{
$container = $this->createContainerFromFile('default_config', [
@@ -1447,9 +1460,6 @@ public function testSerializerEnabled()
$this->assertEquals(AttributeLoader::class, $argument[0]->getClass());
$this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.name_converter.metadata_aware')->getArgument(1));
$this->assertEquals(new Reference('property_info', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $container->getDefinition('serializer.normalizer.object')->getArgument(3));
- $this->assertArrayHasKey('circular_reference_handler', $container->getDefinition('serializer.normalizer.object')->getArgument(6));
- $this->assertArrayHasKey('max_depth_handler', $container->getDefinition('serializer.normalizer.object')->getArgument(6));
- $this->assertEquals($container->getDefinition('serializer.normalizer.object')->getArgument(6)['max_depth_handler'], new Reference('my.max.depth.handler'));
}
public function testSerializerWithoutTranslator()
@@ -1547,13 +1557,22 @@ public function testJsonSerializableNormalizerRegistered()
public function testObjectNormalizerRegistered()
{
- $container = $this->createContainerFromFile('full');
+ $container = $this->createContainerFromFile('full', compile: false);
+ $container->addCompilerPass(new SerializerPass());
+ $container->addCompilerPass(new ResolveBindingsPass());
+ $container->compile();
$definition = $container->getDefinition('serializer.normalizer.object');
$tag = $definition->getTag('serializer.normalizer');
$this->assertEquals(ObjectNormalizer::class, $definition->getClass());
$this->assertEquals(-1000, $tag[0]['priority']);
+
+ $this->assertEquals([
+ 'enable_max_depth' => true,
+ 'circular_reference_handler' => new Reference('my.circular.reference.handler'),
+ 'max_depth_handler' => new Reference('my.max.depth.handler'),
+ ], $definition->getArgument(6));
}
public function testConstraintViolationListNormalizerRegistered()
@@ -1950,8 +1969,12 @@ public function testHttpClientDefaultOptions()
];
$this->assertSame([$defaultOptions, 4], $container->getDefinition('http_client.transport')->getArguments());
+ $this->assertTrue($container->getDefinition('http_client')->hasTag('kernel.reset'));
+
$this->assertTrue($container->hasDefinition('foo'), 'should have the "foo" service.');
- $this->assertSame(ScopingHttpClient::class, $container->getDefinition('foo')->getClass());
+ $definition = $container->getDefinition('foo');
+ $this->assertSame(ScopingHttpClient::class, $definition->getClass());
+ $this->assertTrue($definition->hasTag('kernel.reset'));
}
public function testScopedHttpClientWithoutQueryOption()
@@ -2101,8 +2124,7 @@ public function testMailer(string $configFile, array $expectedTransports, array
$this->assertTrue($container->hasAlias('mailer'));
$this->assertTrue($container->hasDefinition('mailer.transports'));
$this->assertSame($expectedTransports, $container->getDefinition('mailer.transports')->getArgument(0));
- $this->assertTrue($container->hasDefinition('mailer.default_transport'));
- $this->assertSame(current($expectedTransports), $container->getDefinition('mailer.default_transport')->getArgument(0));
+ $this->assertTrue($container->hasAlias('mailer.default_transport'));
$this->assertTrue($container->hasDefinition('mailer.envelope_listener'));
$l = $container->getDefinition('mailer.envelope_listener');
$this->assertSame('sender@example.org', $l->getArgument(0));
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
index deac159b6f9b0..ad979a01a96b3 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/PhpFrameworkExtensionTest.php
@@ -17,6 +17,7 @@
use Symfony\Component\DependencyInjection\Exception\LogicException;
use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException;
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
+use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Workflow\Exception\InvalidDefinitionException;
class PhpFrameworkExtensionTest extends FrameworkExtensionTestCase
@@ -265,4 +266,31 @@ public function testRateLimiterIsTagged()
$this->assertSame('first', $container->getDefinition('limiter.first')->getTag('rate_limiter')[0]['name']);
$this->assertSame('second', $container->getDefinition('limiter.second')->getTag('rate_limiter')[0]['name']);
}
+
+ /**
+ * @dataProvider emailValidationModeProvider
+ */
+ public function testValidatorEmailValidationMode(string $mode)
+ {
+ $this->expectNotToPerformAssertions();
+
+ $this->createContainerFromClosure(function (ContainerBuilder $container) use ($mode) {
+ $container->loadFromExtension('framework', [
+ 'annotations' => false,
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ 'php_errors' => ['log' => true],
+ 'validation' => [
+ 'email_validation_mode' => $mode,
+ ],
+ ]);
+ });
+ }
+
+ public static function emailValidationModeProvider()
+ {
+ foreach (Email::VALIDATION_MODES as $mode) {
+ yield [$mode];
+ }
+ }
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/CachePoolsTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/CachePoolsTest.php
index 2608966586a78..23f4a116ef341 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/CachePoolsTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/CachePoolsTest.php
@@ -88,10 +88,6 @@ private function doTestCachePools($options, $adapterClass)
$pool2 = $container->get('cache.pool2');
$pool2->save($item);
- $container->get('cache_clearer.alias')->clear($container->getParameter('kernel.cache_dir'));
- $item = $pool1->getItem($key);
- $this->assertFalse($item->isHit());
-
$item = $pool2->getItem($key);
$this->assertTrue($item->isHit());
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ContainerDebugCommandTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ContainerDebugCommandTest.php
index bb80a448429d5..95dcc36edcc4e 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ContainerDebugCommandTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/ContainerDebugCommandTest.php
@@ -53,7 +53,7 @@ public function testNoDebug()
public function testNoDumpedXML()
{
- static::bootKernel(['test_case' => 'ContainerDebug', 'root_config' => 'config.yml', 'debug' => true, 'debug.container.dump' => false]);
+ static::bootKernel(['test_case' => 'ContainerDebug', 'root_config' => 'no_dump.yml', 'debug' => true]);
$application = new Application(static::$kernel);
$application->setAutoExit(false);
@@ -139,14 +139,18 @@ public function testTagsPartialSearch()
$tester->setInputs(['0']);
$tester->run(['command' => 'debug:container', '--tag' => 'kernel.'], ['decorated' => false]);
- $this->assertStringContainsString('Select one of the following tags to display its information', $tester->getDisplay());
- $this->assertStringContainsString('[0] kernel.event_subscriber', $tester->getDisplay());
- $this->assertStringContainsString('[1] kernel.locale_aware', $tester->getDisplay());
- $this->assertStringContainsString('[2] kernel.cache_warmer', $tester->getDisplay());
- $this->assertStringContainsString('[3] kernel.fragment_renderer', $tester->getDisplay());
- $this->assertStringContainsString('[4] kernel.reset', $tester->getDisplay());
- $this->assertStringContainsString('[5] kernel.cache_clearer', $tester->getDisplay());
- $this->assertStringContainsString('Symfony Container Services Tagged with "kernel.event_subscriber" Tag', $tester->getDisplay());
+ $this->assertStringMatchesFormat(<<getDisplay()
+ );
}
public function testDescribeEnvVars()
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/FragmentTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/FragmentTest.php
index 6d8966a171ba2..48d5c327a3986 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/FragmentTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/FragmentTest.php
@@ -50,6 +50,6 @@ public function testGenerateFragmentUri()
$client = self::createClient(['test_case' => 'Fragment', 'root_config' => 'config.yml', 'debug' => true]);
$client->request('GET', '/fragment_uri');
- $this->assertSame('/_fragment?_hash=CCRGN2D%2FoAJbeGz%2F%2FdoH3bNSPwLCrmwC1zAYCGIKJ0E%3D&_path=_format%3Dhtml%26_locale%3Den%26_controller%3DSymfony%255CBundle%255CFrameworkBundle%255CTests%255CFunctional%255CBundle%255CTestBundle%2
8000
55CController%255CFragmentController%253A%253AindexAction', $client->getResponse()->getContent());
+ $this->assertMatchesRegularExpression('#/_fragment\?_hash=.+&_path=_format%3Dhtml%26_locale%3Den%26_controller%3DSymfony%255CBundle%255CFrameworkBundle%255CTests%255CFunctional%255CBundle%255CTestBundle%255CController%255CFragmentController%253A%253AindexAction$#', $client->getResponse()->getContent());
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/CachePools/default.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/CachePools/default.yml
index c03efedd02bf7..377d3e7852064 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/CachePools/default.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/CachePools/default.yml
@@ -1,7 +1,2 @@
imports:
- { resource: ../config/default.yml }
-
-services:
- cache_clearer.alias:
- alias: cache_clearer
- public: true
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDebug/no_dump.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDebug/no_dump.yml
new file mode 100644
index 0000000000000..a9c709e9a6425
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDebug/no_dump.yml
@@ -0,0 +1,5 @@
+imports:
+ - { resource: config.yml }
+
+parameters:
+ debug.container.dump: false
diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json
index 9b3e7c86ea3ff..6689b61b05990 100644
--- a/src/Symfony/Bundle/FrameworkBundle/composer.json
+++ b/src/Symfony/Bundle/FrameworkBundle/composer.json
@@ -59,7 +59,7 @@
"symfony/scheduler": "^6.4.4|^7.0.4",
"symfony/security-bundle": "^6.4|^7.0",
"symfony/semaphore": "^6.4|^7.0",
- "symfony/serializer": "^7.1",
+ "symfony/serializer": "^7.2.5",
"symfony/stopwatch": "^6.4|^7.0",
"symfony/string": "^6.4|^7.0",
"symfony/translation": "^6.4|^7.0",
@@ -97,7 +97,7 @@
"symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4",
"symfony/security-csrf": "<7.2",
"symfony/security-core": "<6.4",
- "symfony/serializer": "<7.1",
+ "symfony/serializer": "<7.2.5",
"symfony/stopwatch": "<6.4",
"symfony/translation": "<6.4",
"symfony/twig-bridge": "<6.4",
diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php
index 622b853d1d8c6..a07c6b346cfe7 100644
--- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php
+++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php
@@ -11,6 +11,7 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection;
+use Composer\InstalledVersions;
use Symfony\Bridge\Twig\Extension\LogoutUrlExtension;
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\AuthenticatorFactoryInterface;
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\FirewallListenerFactoryInterface;
@@ -61,7 +62,6 @@
use Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticator;
use Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticatorManagerListener;
use Symfony\Component\Security\Http\Event\CheckPassportEvent;
-use Symfony\Flex\Command\InstallRecipesCommand;
/**
* SecurityExtension.
@@ -92,7 +92,7 @@ public function prepend(ContainerBuilder $container): void
public function load(array $configs, ContainerBuilder $container): void
{
if (!array_filter($configs)) {
- $hint = class_exists(InstallRecipesCommand::class) ? 'Try running "composer symfony:recipes:install symfony/security-bundle".' : 'Please define your settings for the "security" config section.';
+ $hint = class_exists(InstalledVersions::class) && InstalledVersions::isInstalled('symfony/flex') ? 'Try running "composer symfony:recipes:install symfony/security-bundle".' : 'Please define your settings for the "security" config section.';
throw new InvalidConfigurationException('The SecurityBundle is enabled but is not configured. '.$hint);
}
@@ -313,13 +313,13 @@ private function createFirewalls(array $config, ContainerBuilder $container): vo
$authenticators[$name] = null;
} else {
$firewallAuthenticatorRefs = [];
- foreach ($firewallAuthenticators as $authenticatorId) {
- $firewallAuthenticatorRefs[$authenticatorId] = new Reference($authenticatorId);
+ foreach ($firewallAuthenticators as $originalAuthenticatorId => $managerAuthenticatorId) {
+ $firewallAuthenticatorRefs[$originalAuthenticatorId] = new Reference($originalAuthenticatorId);
}
$authenticators[$name] = ServiceLocatorTagPass::register($container, $firewallAuthenticatorRefs);
}
$contextId = 'security.firewall.map.context.'.$name;
- $isLazy = !$firewall['stateless'] && (!empty($firewall['anonymous']['lazy']) || $firewall['lazy']);
+ $isLazy = !$firewall['stateless'] && $firewall['lazy'];
$context = new ChildDefinition($isLazy ? 'security.firewall.lazy_context' : 'security.firewall.context');
$context = $container->setDefinition($contextId, $context);
$context
@@ -501,7 +501,7 @@ private function createFirewall(ContainerBuilder $container, string $id, array $
$configuredEntryPoint = $defaultEntryPoint;
// authenticator manager
- $authenticators = array_map(fn ($id) => new Reference($id), $firewallAuthenticationProviders);
+ $authenticators = array_map(fn ($id) => new Reference($id), $firewallAuthenticationProviders, []);
$container
->setDefinition($managerId = 'security.authenticator.manager.'.$id, new ChildDefinition('security.authenticator.manager'))
->replaceArgument(0, $authenticators)
@@ -625,11 +625,11 @@ private function createAuthenticationListeners(ContainerBuilder $container, stri
$authenticators = $factory->createAuthenticator($container, $id, $firewall[$key], $userProvider);
if (\is_array($authenticators)) {
foreach ($authenticators as $authenticator) {
- $authenticationProviders[] = $authenticator;
+ $authenticationProviders[$authenticator] = $authenticator;
$entryPoints[] = $authenticator;
}
} else {
- $authenticationProviders[] = $authenticators;
+ $authenticationProviders[$authenticators] = $authenticators;
$entryPoints[$key] = $authenticators;
}
@@ -643,11 +643,13 @@ private function createAuthenticationListeners(ContainerBuilder $container, stri
}
if ($container->hasDefinition('debug.security.firewall')) {
- foreach ($authenticationProviders as $authenticatorId) {
- $container->register('debug.'.$authenticatorId, TraceableAuthenticator::class)
- ->setDecoratedService($authenticatorId)
- ->setArguments([new Reference('debug.'.$authenticatorId.'.inner')])
+ foreach ($authenticationProviders as &$authenticatorId) {
+ $traceableId = 'debug.'.$authenticatorId;
+ $container
+ ->register($traceableId, TraceableAuthenticator::class)
+ ->setArguments([new Reference($authenticatorId)])
;
+ $authenticatorId = $traceableId;
}
}
@@ -679,7 +681,7 @@ private function getUserProvider(ContainerBuilder $container, string $id, array
return $this->createMissingUserProvider($container, $id, $factoryKey);
}
- if ('remember_me' === $factoryKey || 'anonymous' === $factoryKey) {
+ if ('remember_me' === $factoryKey) {
return 'security.user_providers';
}
diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/schema/security-1.0.xsd b/src/Symfony/Bundle/SecurityBundle/Resources/config/schema/security-1.0.xsd
index ef10635e2ff99..a8623e0b50d84 100644
--- a/src/Symfony/Bundle/SecurityBundle/Resources/config/schema/security-1.0.xsd
+++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/schema/security-1.0.xsd
@@ -137,7 +137,6 @@
-
@@ -254,14 +253,6 @@
-
-
-
-
-
-
-
-
diff --git a/src/Symfony/Bundle/SecurityBundle/Security.php b/src/Symfony/Bundle/SecurityBundle/Security.php
index 915f766f5175b..252fce011b101 100644
--- a/src/Symfony/Bundle/SecurityBundle/Security.php
+++ b/src/Symfony/Bundle/SecurityBundle/Security.php
@@ -158,8 +158,7 @@ private function getAuthenticator(?string $authenticatorName, string $firewallNa
$firewallAuthenticatorLocator = $this->authenticators[$firewallName];
if (!$authenticatorName) {
- $authenticatorIds = array_keys($firewallAuthenticatorLocator->getProvidedServices());
-
+ $authenticatorIds = array_filter(array_keys($firewallAuthenticatorLocator->getProvidedServices()), fn (string $authenticatorId) => $authenticatorId !== \sprintf('security.authenticator.remember_me.%s', $firewallName));
if (!$authenticatorIds) {
throw new LogicException(\sprintf('No authenticator was found for the firewall "%s".', $firewallName));
}
diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php
index 23aa17b9adb57..d0f3549ab8f09 100644
--- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php
+++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php
@@ -20,7 +20,9 @@
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
+use Symfony\Component\DependencyInjection\Compiler\DecoratorServicePass;
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
+use Symfony\Component\DependencyInjection\Compiler\ResolveReferencesToAliasesPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\ExpressionLanguage\Expression;
@@ -900,6 +902,34 @@ public function testCustomHasherWithMigrateFrom()
]);
}
+ public function testAuthenticatorsDecoration()
+ {
+ $container = $this->getRawContainer();
+ $container->setParameter('kernel.debug', true);
+ $container->getCompilerPassConfig()->setOptimizationPasses([
+ new ResolveChildDefinitionsPass(),
+ new DecoratorServicePass(),
+ new ResolveReferencesToAliasesPass(),
+ ]);
+
+ $container->register(TestAuthenticator::class);
+ $container->loadFromExtension('security', [
+ 'firewalls' => ['main' => ['custom_authenticator' => TestAuthenticator::class]],
+ ]);
+ $container->compile();
+
+ /** @var Reference[] $managerAuthenticators */
+ $managerAuthenticators = $container->getDefinition('security.authenticator.manager.main')->getArgument(0);
+ $this->assertCount(1, $managerAuthenticators);
+ $this->assertSame('debug.'.TestAuthenticator::class, (string) reset($managerAuthenticators), 'AuthenticatorManager must be injected traceable authenticators in debug mode.');
+
+ $this->assertTrue($container->hasDefinition(TestAuthenticator::class), 'Original authenticator must still exist in the container so it can be used outside of the AuthenticatorManager’s context.');
+
+ $securityHelperAuthenticatorLocator = $container->getDefinition($container->getDefinition('security.helper')->getArgument(1)['main']);
+ $this->assertArrayHasKey(TestAuthenticator::class, $authenticatorMap = $securityHelperAuthenticatorLocator->getArgument(0), 'When programmatically authenticating a user, authenticators’ name must be their original ID.');
+ $this->assertSame(TestAuthenticator::class, (string) $authenticatorMap[TestAuthenticator::class]->getValues()[0], 'When programmatically authenticating a user, original authenticators must be used.');
+ }
+
protected function getRawContainer()
{
$container = new ContainerBuilder();
diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/SecurityTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/SecurityTest.php
index d4b336b4eaa70..82a444ef10358 100644
--- a/src/Symfony/Bundle/SecurityBundle/Tests/SecurityTest.php
+++ b/src/Symfony/Bundle/SecurityBundle/Tests/SecurityTest.php
@@ -152,7 +152,10 @@ public function testLogin()
$firewallAuthenticatorLocator
->expects($this->once())
->method('getProvidedServices')
- ->willReturn(['security.authenticator.custom.dev' => $authenticator])
+ ->willReturn([
+ 'security.authenticator.custom.dev' => $authenticator,
+ 'security.authenticator.remember_me.main' => $authenticator
+ ])
;
$firewallAuthenticatorLocator
->expects($this->once())
@@ -252,6 +255,49 @@ public function testLoginWithoutRequestContext()
$security->login($user);
}
+ public function testLoginFailsWhenTooManyAuthenticatorsFound()
+ {
+ $request = new Request();
+ $authenticator = $this->createMock(AuthenticatorInterface::class);
+ $requestStack = $this->createMock(RequestStack::class);
+ $firewallMap = $this->createMock(FirewallMap::class);
+ $firewall = new FirewallConfig('main', 'main');
+ $userAuthenticator = $this->createMock(UserAuthenticatorInterface::class);
+ $user = $this->createMock(UserInterface::class);
+ $userChecker = $this->createMock(UserCheckerInterface::class);
+
+ $container = $this->createMock(ContainerInterface::class);
+ $container
+ ->expects($this->atLeastOnce())
+ ->method('get')
+ ->willReturnMap([
+ ['request_stack', $requestStack],
+ ['security.firewall.map', $firewallMap],
+ ['security.authenticator.managers_locator', $this->createContainer('main', $userAuthenticator)],
+ ['security.user_checker_locator', $this->createContainer('main', $userChecker)],
+ ])
+ ;
+
+ $requestStack->expects($this->once())->method('getCurrentRequest')->willReturn($request);
+ $firewallMap->expects($this->once())->method('getFirewallConfig')->willReturn($firewall);
+
+ $firewallAuthenticatorLocator = $this->createMock(ServiceProviderInterface::class);
+ $firewallAuthenticatorLocator
+ ->expects($this->once())
+ ->method('getProvidedServices')
+ ->willReturn([
+ 'security.authenticator.custom.main' => $authenticator,
+ 'security.authenticator.other.main' => $authenticator
+ ])
+ ;
+
+ $security = new Security($container, ['main' => $firewallAuthenticatorLocator]);
+
+ $this->expectException(\LogicException::class);
+ $this->expectExceptionMessage('Too many authenticators were found for the current firewall "main". You must provide an instance of "Symfony\Component\Security\Http\Authenticator\AuthenticatorInterface" to login programmatically. The available authenticators for the firewall "main" are "security.authenticator.custom.main" ,"security.authenticator.other.main');
+ $security->login($user);
+ }
+
public function testLogout()
{
$request = new Request();
diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
index a13421e7ac63f..c51cf309d527b 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
@@ -99,7 +99,7 @@ public function onKernelResponse(ResponseEvent $event): void
return;
}
- if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects && 'html' === $request->getRequestFormat()) {
+ if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects && 'html' === $request->getRequestFormat() && $response->headers->has('Location')) {
if ($request->hasSession() && ($session = $request->getSession())->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) {
// keep current flashes for one more request if using AutoExpireFlashBag
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml b/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml
index 26bbd96455adf..9f45f1b7490ae 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml
@@ -4,7 +4,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
+
web_profiler.controller.profiler::toolbarStylesheetAction
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/notifier.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/notifier.html.twig
index 9de8d216e6d1f..ed363f1d92fe2 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/notifier.html.twig
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/notifier.html.twig
@@ -151,7 +151,7 @@
{%- if message.getOptions() is null %}
{{- '(empty)' }}
{%- else %}
- {{- message.getOptions()|json_encode(constant('JSON_PRETTY_PRINT')) }}
+ {{- message.getOptions().toArray()|json_encode(constant('JSON_PRETTY_PRINT')) }}
{%- endif %}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig
index 597a8095a0af6..d7deaff6bb3b8 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig
@@ -173,6 +173,12 @@
}
toggle.addEventListener('click', (e) => {
+ const toggle = e.currentTarget;
+
+ if (e.target.closest('a, .sf-toggle') !== toggle) {
+ return;
+ }
+
e.preventDefault();
if ('' !== window.getSelection().toString()) {
@@ -180,9 +186,6 @@
return;
}
- /* needed because when the toggle contains HTML contents, user can click */
- /* on any of those elements instead of their parent '.sf-toggle' element */
- const toggle = e.target.closest('.sf-toggle');
const element = document.querySelector(toggle.getAttribute('data-toggle-selector'));
toggle.classList.toggle('sf-toggle-on');
@@ -205,14 +208,6 @@
toggle.innerHTML = currentContent !== altContent ? altContent : originalContent;
});
- /* Prevents from disallowing clicks on links inside toggles */
- const toggleLinks = toggle.querySelectorAll('a');
- toggleLinks.forEach((toggleLink) => {
- toggleLink.addEventListener('click', (e) => {
- e.stopPropagation();
- });
- });
-
toggle.setAttribute('data-processed', 'true');
});
}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/open.css.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/open.css.twig
index af9f0a4ceaba3..55589c2945d88 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/open.css.twig
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/open.css.twig
@@ -40,6 +40,7 @@
#source .source-content ol li {
margin: 0 0 2px 0;
padding-left: 5px;
+ white-space: preserve nowrap;
}
#source .source-content ol li::marker {
color: var(--color-muted);
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
index 3933d30e48dc4..0e0a1e0aae79c 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php
@@ -152,15 +152,15 @@ public function testToolbarStylesheetActionWithProfilerDisabled()
public function testToolbarStylesheetAction()
{
- $urlGenerator = $this->createMock(UrlGeneratorInterface::class);
- $twig = $this->createMock(Environment::class);
- $profiler = $this->createMock(Profiler::class);
+ $kernel = new WebProfilerBundleKernel();
+ $client = new KernelBrowser($kernel);
- $controller = new ProfilerController($urlGenerator, $profiler, $twig, []);
+ $client->request('GET', '/_wdt/styles');
+
+ $response = $client->getResponse();
- $response = $controller->toolbarStylesheetAction();
$this->assertSame(200, $response->getStatusCode());
- $this->assertSame('text/css', $response->headers->get('Content-Type'));
+ $this->assertSame('text/css; charset=UTF-8', $response->headers->get('Content-Type'));
$this->assertSame('max-age=600, private', $response->headers->get('Cache-Control'));
}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php
index 33bf1a32d27f8..cf3c189204301 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php
@@ -63,6 +63,7 @@ public static function getInjectToolbarTests()
public function testHtmlRedirectionIsIntercepted($statusCode)
{
$response = new Response('Some content', $statusCode);
+ $response->headers->set('Location', 'https://example.com/');
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
@@ -76,6 +77,7 @@ public function testHtmlRedirectionIsIntercepted($statusCode)
public function testNonHtmlRedirectionIsNotIntercepted()
{
$response = new Response('Some content', '301');
+ $response->headers->set('Location', 'https://example.com/');
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new ResponseEvent($this->createMock(Kernel::class), new Request([], [], ['_format' => 'json']), HttpKernelInterface::MAIN_REQUEST, $response);
@@ -139,6 +141,7 @@ public function testToolbarIsNotInjectedOnContentDispositionAttachment()
public function testToolbarIsNotInjectedOnRedirection($statusCode)
{
$response = new Response('', $statusCode);
+ $response->headers->set('Location', 'https://example.com/');
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
diff --git a/src/Symfony/Component/AssetMapper/AssetMapperDevServerSubscriber.php b/src/Symfony/Component/AssetMapper/AssetMapperDevServerSubscriber.php
index 5de0fc05b35ce..cbb07add152c5 100644
--- a/src/Symfony/Component/AssetMapper/AssetMapperDevServerSubscriber.php
+++ b/src/Symfony/Component/AssetMapper/AssetMapperDevServerSubscriber.php
@@ -109,7 +109,7 @@ public function __construct(
private readonly ?CacheItemPoolInterface $cacheMapCache = null,
private readonly ?Profiler $profiler = null,
) {
- $this->publicPrefix = rtrim($publicPrefix, '/').'/';
+ $this->publicPrefix = '/'.trim($publicPrefix, '/').'/';
$this->extensionsMap = array_merge(self::EXTENSIONS_MAP, $extensionsMap);
}
diff --git a/src/Symfony/Component/AssetMapper/Compiler/CssAssetUrlCompiler.php b/src/Symfony/Component/AssetMapper/Compiler/CssAssetUrlCompiler.php
index b023fd232a1e6..28b06508a6876 100644
--- a/src/Symfony/Component/AssetMapper/Compiler/CssAssetUrlCompiler.php
+++ b/src/Symfony/Component/AssetMapper/Compiler/CssAssetUrlCompiler.php
@@ -35,7 +35,32 @@ public function __construct(
public function compile(string $content, MappedAsset $asset, AssetMapperInterface $assetMapper): string
{
- return preg_replace_callback(self::ASSET_URL_PATTERN, function ($matches) use ($asset, $assetMapper) {
+ preg_match_all('/\/\*|\*\//', $content, $commentMatches, \PREG_OFFSET_CAPTURE);
+
+ $start = null;
+ $commentBlocks = [];
+ foreach ($commentMatches[0] as $match) {
+ if ('/*' === $match[0]) {
+ $start = $match[1];
+ } elseif ($start) {
+ $commentBlocks[] = [$start, $match[1]];
+ $start = null;
+ }
+ }
+
+ return preg_replace_callback(self::ASSET_URL_PATTERN, function ($matches) use ($asset, $assetMapper, $commentBlocks) {
+ $matchPos = $matches[0][1];
+
+ // Ignore matchs inside comments
+ foreach ($commentBlocks as $block) {
+ if ($matchPos > $block[0]) {
+ if ($matchPos < $block[1]) {
+ return $matches[0][0];
+ }
+ break;
+ }
+ }
+
try {
$resolvedSourcePath = Path::join(\dirname($asset->sourcePath), $matches[1]);
} catch (RuntimeException $e) {
diff --git a/src/Symfony/Component/AssetMapper/Compiler/JavaScriptImportPathCompiler.php b/src/Symfony/Component/AssetMapper/Compiler/JavaScriptImportPathCompiler.php
index 78d056c7577ae..ef78cad44e8fc 100644
--- a/src/Symfony/Component/AssetMapper/Compiler/JavaScriptImportPathCompiler.php
+++ b/src/Symfony/Component/AssetMapper/Compiler/JavaScriptImportPathCompiler.php
@@ -92,6 +92,11 @@ public function compile(string $content, MappedAsset $asset, AssetMapperInterfac
return $fullImportString;
}
+ // Ignore self-referencing import
+ if ($dependentAsset->logicalPath === $asset->logicalPath) {
+ return $fullImportString;
+ }
+
// List as a JavaScript import.
// This will cause the asset to be included in the importmap (for relative imports)
// and will be used to generate the preloads in the importmap.
diff --git a/src/Symfony/Component/AssetMapper/ImportMap/Resolver/JsDelivrEsmResolver.php b/src/Symfony/Component/AssetMapper/ImportMap/Resolver/JsDelivrEsmResolver.php
index f2e4da9b96b49..b88f0e792d44f 100644
--- a/src/Symfony/Component/AssetMapper/ImportMap/Resolver/JsDelivrEsmResolver.php
+++ b/src/Symfony/Component/AssetMapper/ImportMap/Resolver/JsDelivrEsmResolver.php
@@ -28,7 +28,7 @@ final class JsDelivrEsmResolver implements PackageResolverInterface
public const URL_PATTERN_DIST = self::URL_PATTERN_DIST_CSS.'/+esm';
public const URL_PATTERN_ENTRYPOINT = 'https://data.jsdelivr.com/v1/packages/npm/%s@%s/entrypoints';
- public const IMPORT_REGEX = '#(?:import\s*(?:[\w$]+,)?(?:(?:\{[^}]*\}|[\w$]+|\*\s*as\s+[\w$]+)\s*\bfrom\s*)?|export\s*(?:\{[^}]*\}|\*)\s*from\s*)("/npm/((?:@[^/]+/)?[^@]+?)(?:@([^/]+))?((?:/[^/]+)*?)/\+esm")#';
+ public const IMPORT_REGEX = '#(?:import\s*(?:[\w$]+,)?(?:(?:\{[^}]*\}|[\w$]+|\*\s*as\s+[\w$]+)\s*\bfrom\s*)?|export\s*(?:\{[^}]*\}|\*)\s*from\s*|await\simport\()("/npm/((?:@[^/]+/)?[^@]+?)(?:@([^/]+))?((?:/[^/]+)*?)/\+esm")(?:\)*)#';
private const ES_MODULE_SHIMS = 'es-module-shims';
diff --git a/src/Symfony/Component/AssetMapper/Path/PublicAssetsPathResolver.php b/src/Symfony/Component/AssetMapper/Path/PublicAssetsPathResolver.php
index fe839d591a99e..b33abafb0995d 100644
--- a/src/Symfony/Component/AssetMapper/Path/PublicAssetsPathResolver.php
+++ b/src/Symfony/Component/AssetMapper/Path/PublicAssetsPathResolver.php
@@ -18,8 +18,8 @@ class PublicAssetsPathResolver implements PublicAssetsPathResolverInterface
public function __construct(
string $publicPrefix = '/assets/',
) {
- // ensure that the public prefix always ends with a single slash
- $this->publicPrefix = rtrim($publicPrefix, '/').'/';
+ // ensure that the public prefix always starts and ends with a single slash
+ $this->publicPrefix = '/'.trim($publicPrefix, '/').'/';
}
public function resolvePublicPath(string $logicalPath): string
diff --git a/src/Symfony/Component/AssetMapper/Tests/Compiler/CssAssetUrlCompilerTest.php b/src/Symfony/Component/AssetMapper/Tests/Compiler/CssAssetUrlCompilerTest.php
index 999407c81a558..067168b059a71 100644
--- a/src/Symfony/Component/AssetMapper/Tests/Compiler/CssAssetUrlCompilerTest.php
+++ b/src/Symfony/Component/AssetMapper/Tests/Compiler/CssAssetUrlCompilerTest.php
@@ -114,6 +114,36 @@ public static function provideCompileTests(): iterable
'expectedOutput' => 'body { background: url("https://cdn.io/images/bar.png"); }',
'expectedDependencies' => [],
];
+
+ yield 'ignore_comments' => [
+ 'input' => 'body { background: url("images/foo.png"); /* background: url("images/bar.png"); */ }',
+ 'expectedOutput' => 'body { background: url("images/foo.123456.png"); /* background: url("images/bar.png"); */ }',
+ 'expectedDependencies' => ['images/foo.png'],
+ ];
+
+ yield 'ignore_comment_after_rule' => [
+ 'input' => 'body { background: url("images/foo.png"); } /* url("images/need-ignore.png") */',
+ 'expectedOutput' => 'body { backgroun
8000
d: url("images/foo.123456.png"); } /* url("images/need-ignore.png") */',
+ 'expectedDependencies' => ['images/foo.png'],
+ ];
+
+ yield 'ignore_comment_within_rule' => [
+ 'input' => 'body { background: url("images/foo.png") /* url("images/need-ignore.png") */; }',
+ 'expectedOutput' => 'body { background: url("images/foo.123456.png") /* url("images/need-ignore.png") */; }',
+ 'expectedDependencies' => ['images/foo.png'],
+ ];
+
+ yield 'ignore_multiline_comment_after_rule' => [
+ 'input' => 'body {
+ background: url("images/foo.png"); /*
+ url("images/need-ignore.png") */
+ }',
+ 'expectedOutput' => 'body {
+ background: url("images/foo.123456.png"); /*
+ url("images/need-ignore.png") */
+ }',
+ 'expectedDependencies' => ['images/foo.png'],
+ ];
}
public function testCompileFindsRelativeFilesViaSourcePath()
diff --git a/src/Symfony/Component/AssetMapper/Tests/Compiler/JavaScriptImportPathCompilerTest.php b/src/Symfony/Component/AssetMapper/Tests/Compiler/JavaScriptImportPathCompilerTest.php
index 2bb847373d9c5..9b1b2377665b1 100644
--- a/src/Symfony/Component/AssetMapper/Tests/Compiler/JavaScriptImportPathCompilerTest.php
+++ b/src/Symfony/Component/AssetMapper/Tests/Compiler/JavaScriptImportPathCompilerTest.php
@@ -574,6 +574,34 @@ public function testCompileHandlesCircularBareImportAssets()
$this->assertSame($popperAsset->logicalPath, $bootstrapAsset->getJavaScriptImports()[0]->assetLogicalPath);
}
+ public function testCompileIgnoresSelfReferencingBareImportAssets()
+ {
+ $bootstrapAsset = new MappedAsset('foo.js', 'foo.js', 'foo.js');
+
+ $importMapConfigReader = $this->createMock(ImportMapConfigReader::class);
+ $importMapConfigReader->expects($this->once())
+ ->method('findRootImportMapEntry')
+ ->with('foobar')
+ ->willReturn(ImportMapEntry::createRemote('foobar', ImportMapType::JS, 'foo.js', '1.2.3', 'foobar', false));
+ $importMapConfigReader->expects($this->any())
+ ->method('convertPathToFilesystemPath')
+ ->with('foo.js')
+ ->willReturn('foo.js');
+
+ $assetMapper = $this->createMock(AssetMapperInterface::class);
+ $assetMapper->expects($this->once())
+ ->method('getAssetFromSourcePath')
+ ->with('foo.js')
+ ->willReturn($bootstrapAsset);
+
+ $compiler = new JavaScriptImportPathCompiler($importMapConfigReader);
+ $input = 'import { foo } from "foobar";';
+ $compiler->compile($input, $bootstrapAsset, $assetMapper);
+ $this->assertCount(0, $bootstrapAsset->getDependencies());
+ $this->assertCount(0, $bootstrapAsset->getFileDependencies());
+ $this->assertCount(0, $bootstrapAsset->getJavaScriptImports());
+ }
+
/**
* @dataProvider provideMissingImportModeTests
*/
diff --git a/src/Symfony/Component/AssetMapper/Tests/Fixtures/AssetMapperTestAppKernel.php b/src/Symfony/Component/AssetMapper/Tests/Fixtures/AssetMapperTestAppKernel.php
index d8c44a257bdc3..48958274572d3 100644
--- a/src/Symfony/Component/AssetMapper/Tests/Fixtures/AssetMapperTestAppKernel.php
+++ b/src/Symfony/Component/AssetMapper/Tests/Fixtures/AssetMapperTestAppKernel.php
@@ -44,6 +44,7 @@ public function registerContainerConfiguration(LoaderInterface $loader): void
'assets' => null,
'asset_mapper' => [
'paths' => ['dir1', 'dir2', 'non_ascii', 'assets'],
+ 'public_prefix' => 'assets'
],
'test' => true,
]);
diff --git a/src/Symfony/Component/AssetMapper/Tests/ImportMap/Resolver/JsDelivrEsmResolverTest.php b/src/Symfony/Component/AssetMapper/Tests/ImportMap/Resolver/JsDelivrEsmResolverTest.php
index 8b7d82c8c6f06..d9650fd7c29d3 100644
--- a/src/Symfony/Component/AssetMapper/Tests/ImportMap/Resolver/JsDelivrEsmResolverTest.php
+++ b/src/Symfony/Component/AssetMapper/Tests/ImportMap/Resolver/JsDelivrEsmResolverTest.php
@@ -693,6 +693,13 @@ public static function provideImportRegex(): iterable
['jquery', '3.7.0'],
],
];
+
+ yield 'dynamic import with path' => [
+ 'return(await import("/npm/@datadog/browser-rum@6.3.0/esm/boot/startRecording.js/+esm")).startRecording',
+ [
+ ['@datadog/browser-rum/esm/boot/startRecording.js', '6.3.0'],
+ ],
+ ];
}
private static function createRemoteEntry(string $importName, string $version, ImportMapType $type = ImportMapType::JS, ?string $packageSpecifier = null): ImportMapEntry
diff --git a/src/Symfony/Component/AssetMapper/Tests/Path/PublicAssetsPathResolverTest.php b/src/Symfony/Component/AssetMapper/Tests/Path/PublicAssetsPathResolverTest.php
index 2144b98919527..be6ac04156ff6 100644
--- a/src/Symfony/Component/AssetMapper/Tests/Path/PublicAssetsPathResolverTest.php
+++ b/src/Symfony/Component/AssetMapper/Tests/Path/PublicAssetsPathResolverTest.php
@@ -26,7 +26,7 @@ public function testResolvePublicPath()
$this->assertSame('/assets-prefix/foo/bar', $resolver->resolvePublicPath('foo/bar'));
$resolver = new PublicAssetsPathResolver(
- '/assets-prefix', // The trailing slash should be added automatically
+ 'assets-prefix', // The leading and trailing slash should be added automatically
);
$this->assertSame('/assets-prefix/', $resolver->resolvePublicPath(''));
$this->assertSame('/assets-prefix/foo/bar', $resolver->resolvePublicPath('/foo/bar'));
diff --git a/src/Symfony/Component/BrowserKit/AbstractBrowser.php b/src/Symfony/Component/BrowserKit/AbstractBrowser.php
index 9257ef561b05e..1269fcb69e8cb 100644
--- a/src/Symfony/Component/BrowserKit/AbstractBrowser.php
+++ b/src/Symfony/Component/BrowserKit/AbstractBrowser.php
@@ -163,7 +163,7 @@ public function xmlHttpRequest(string $method, string $uri, array $parameters =
*/
public function jsonRequest(string $method, string $uri, array $parameters = [], array $server = [], bool $changeHistory = true): Crawler
{
- $content = json_encode($parameters);
+ $content = json_encode($parameters, \JSON_PRESERVE_ZERO_FRACTION);
$this->setServerParameter('CONTENT_TYPE', 'application/json');
$this->setServerParameter('HTTP_ACCEPT', 'application/json');
diff --git a/src/Symfony/Component/BrowserKit/HttpBrowser.php b/src/Symfony/Component/BrowserKit/HttpBrowser.php
index c143a69e28fd4..4f044421e00e9 100644
--- a/src/Symfony/Component/BrowserKit/HttpBrowser.php
+++ b/src/Symfony/Component/BrowserKit/HttpBrowser.php
@@ -145,10 +145,15 @@ private function getUploadedFiles(array $files): array
}
if (!isset($file['tmp_name'])) {
$uploadedFiles[$name] = $this->getUploadedFiles($file);
+ continue;
}
- if (isset($file['tmp_name'])) {
- $uploadedFiles[$name] = DataPart::fromPath($file['tmp_name'], $file['name']);
+
+ if ('' === $file['tmp_name']) {
+ $uploadedFiles[$name] = new DataPart('', '');
+ continue;
}
+
+ $uploadedFiles[$name] = DataPart::fromPath($file['tmp_name'], $file['name']);
}
return $uploadedFiles;
diff --git a/src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php b/src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php
index ca822e245d6ef..7e759b035f7f0 100644
--- a/src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php
+++ b/src/Symfony/Component/BrowserKit/Tests/AbstractBrowserTest.php
@@ -68,12 +68,12 @@ public function testXmlHttpRequest()
public function testJsonRequest()
{
$client = $this->getBrowser();
- $client->jsonRequest('GET', 'http://example.com/', ['param' => 1], [], true);
+ $client->jsonRequest('GET', 'http://example.com/', ['param' => 1, 'float' => 10.0], [], true);
$this->assertSame('application/json', $client->getRequest()->getServer()['CONTENT_TYPE']);
$this->assertSame('application/json', $client->getRequest()->getServer()['HTTP_ACCEPT']);
$this->assertFalse($client->getServerParameter('CONTENT_TYPE', false));
$this->assertFalse($client->getServerParameter('HTTP_ACCEPT', false));
- $this->assertSame('{"param":1}', $client->getRequest()->getContent());
+ $this->assertSame('{"param":1,"float":10.0}', $client->getRequest()->getContent());
}
public function testGetRequestWithIpAsHttpHost()
diff --git a/src/Symfony/Component/BrowserKit/Tests/HttpBrowserTest.php b/src/Symfony/Component/BrowserKit/Tests/HttpBrowserTest.php
index e1f19b16ce814..3a2547d89f488 100644
--- a/src/Symfony/Component/BrowserKit/Tests/HttpBrowserTest.php
+++ b/src/Symfony/Component/BrowserKit/Tests/HttpBrowserTest.php
@@ -14,6 +14,8 @@
use Symfony\Component\BrowserKit\CookieJar;
use Symfony\Component\BrowserKit\History;
use Symfony\Component\BrowserKit\HttpBrowser;
+use Symfony\Component\HttpClient\MockHttpClient;
+use Symfony\Component\HttpClient\Response\MockResponse;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface;
@@ -208,6 +210,37 @@ public static function forwardSlashesRequestPathProvider()
];
}
+ public function testEmptyUpload()
+ {
+ $client = new MockHttpClient(function ($method, $url, $options) {
+ $this->assertSame('POST', $method);
+ $this->assertSame('http://localhost/', $url);
+ $this->assertStringStartsWith('Content-Type: multipart/form-data; boundary=', $options['normalized_headers']['content-type'][0]);
+
+ $body = '';
+ while ('' !== $data = $options['body'](1024)) {
+ $body .= $data;
+ }
+
+ $expected = <<assertStringMatchesFormat($expected, $body);
+
+ return new MockResponse();
+ });
+
+ $browser = new HttpBrowser($client);
+ $browser->request('POST', '/', [], ['file' => ['tmp_name' => '', 'name' => 'file']]);
+ }
+
private function uploadFile(string $data): string
{
$path = tempnam(sys_get_temp_dir(), 'http');
diff --git a/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php b/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php
index ddb7210057df8..b234909fdadff 100644
--- a/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php
+++ b/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php
@@ -98,19 +98,10 @@ protected function doSave(array $values, int $lifetime): array|bool
return $failed;
}
- try {
- if (false === $failures = apcu_store($values, null, $lifetime)) {
- $failures = $values;
- }
-
- return array_keys($failures);
- } catch (\Throwable $e) {
- if (1 === \count($values)) {
- // Workaround https://github.com/krakjoe/apcu/issues/170
- apcu_delete(array_key_first($values));
- }
-
- throw $e;
+ if (false === $failures = apcu_store($values, null, $lifetime)) {
+ $failures = $values;
}
+
+ return array_keys($failures);
}
}
diff --git a/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php b/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php
index 7b92387742894..8941ae1cdb009 100644
--- a/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php
+++ b/src/Symfony/Component/Cache/Adapter/ArrayAdapter.php
@@ -307,7 +307,9 @@ private function freeze($value, string $key): string|int|float|bool|array|\UnitE
try {
$serialized = serialize($value);
} catch (\Exception $e) {
- unset($this->values[$key], $this->tags[$key]);
+ if (!isset($this->expiries[$key])) {
+ unset($this->values[$key]);
+ }
$type = get_debug_type($value);
$message = \sprintf('Failed to save key "{key}" of type %s: %s', $type, $e->getMessage());
CacheItem::log($this->logger, $message, ['key' => $key, 'exception' => $e, 'cache-adapter' => get_debug_type($this)]);
diff --git a/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php b/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php
index c69c777c993e7..d67464a4fd560 100644
--- a/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php
+++ b/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php
@@ -19,6 +19,9 @@
use Doctrine\DBAL\Exception\TableNotFoundException;
use Doctrine\DBAL\ParameterType;
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
+use Doctrine\DBAL\Schema\Name\Identifier;
+use Doctrine\DBAL\Schema\Name\UnqualifiedName;
+use Doctrine\DBAL\Schema\PrimaryKeyConstraint;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Tools\DsnParser;
use Symfony\Component\Cache\Exception\InvalidArgumentException;
@@ -378,6 +381,11 @@ private function addTableToSchema(Schema $schema): void
$table->addColumn($this->dataCol, 'blob', ['length' => 16777215]);
$table->addColumn($this->lifetimeCol, 'integer', ['unsigned' => true, 'notnull' => false]);
$table->addColumn($this->timeCol, 'integer', ['unsigned' => true]);
- $table->setPrimaryKey([$this->idCol]);
+
+ if (class_exists(PrimaryKeyConstraint::class)) {
+ $table->addPrimaryKeyConstraint(new PrimaryKeyConstraint(null, [new UnqualifiedName(Identifier::unquoted($this->idCol))], true));
+ } else {
+ $table->setPrimaryKey([$this->idCol]);
+ }
}
}
diff --git a/src/Symfony/Component/Cache/CacheItem.php b/src/Symfony/Component/Cache/CacheItem.php
index ec2c0c5c470d6..4ce8e0cd1948a 100644
--- a/src/Symfony/Component/Cache/CacheItem.php
+++ b/src/Symfony/Component/Cache/CacheItem.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\Cache;
+use Psr\Cache\CacheItemInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\Cache\Exception\InvalidArgumentException;
use Symfony\Component\Cache\Exception\LogicException;
@@ -30,7 +31,7 @@ final class CacheItem implements ItemInterface
protected float|int|null $expiry = null;
protected array $metadata = [];
protected array $newMetadata = [];
- protected ?ItemInterface $innerItem = null;
+ protected ?CacheItemInterface $innerItem = null;
protected ?string $poolHash = null;
protected bool $isTaggable = false;
diff --git a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php
index b9bcdaf132572..22a5a0391673f 100644
--- a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php
+++ b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php
@@ -38,15 +38,7 @@ public function addInstance(string $name, TraceableAdapter $instance): void
public function collect(Request $request, Response $response, ?\Throwable $exception = null): void
{
- $empty = ['calls' => [], 'adapters' => [], 'config' => [], 'options' => [], 'statistics' => []];
- $this->data = ['instances' => $empty, 'total' => $empty];
- foreach ($this->instances as $name => $instance) {
- $this->data['instances']['calls'][$name] = $instance->getCalls();
- $this->data['instances']['adapters'][$name] = get_debug_type($instance->getPool());
- }
-
- $this->data['instances']['statistics'] = $this->calculateStatistics();
- $this->data['total']['statistics'] = $this->calculateTotalStatistics();
+ $this->lateCollect();
}
public function reset(): void
@@ -59,6 +51,15 @@ public function reset(): void
public function lateCollect(): void
{
+ $empty = ['calls' => [], 'adapters' => [], 'config' => [], 'options' => [], 'statistics' => []];
+ $this->data = ['instances' => $empty, 'total' => $empty];
+ foreach ($this->instances as $name => $instance) {
+ $this->data['instances']['calls'][$name] = $instance->getCalls();
+ $this->data['instances']['adapters'][$name] = get_debug_type($instance->getPool());
+ }
+
+ $this->data['instances']['statistics'] = $this->calculateStatistics();
+ $this->data['total']['statistics'] = $this->calculateTotalStatistics();
$this->data['instances']['calls'] = $this->cloneVar($this->data['instances']['calls']);
}
diff --git a/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php b/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php
index e62febbcbaa50..b4d77fd74a7a6 100644
--- a/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php
+++ b/src/Symfony/Component/Cache/DependencyInjection/CachePoolPass.php
@@ -194,10 +194,6 @@ public function process(ContainerBuilder $container): void
$clearer->setArgument(0, $pools);
}
$clearer->addTag('cache.pool.clearer');
-
- if ('cache.system_clearer' === $id) {
- $clearer->addTag('kernel.cache_clearer');
- }
}
$allPoolsKeys = array_keys($allPools);
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php b/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php
index da430296bcdcf..031191cabc4b1 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php
@@ -350,6 +350,23 @@ public function testNumericKeysWorkAfterMemoryLeakPrevention()
$this->assertEquals('value-50', $cache->getItem((string) 50)->get());
}
+
+ public function testErrorsDontInvalidate()
+ {
+ if (isset($this->skippedTests[__FUNCTION__])) {
+ $this->markTestSkipped($this->skippedTests[__FUNCTION__]);
+ }
+
+ $cache = $this->createCachePool(0, __FUNCTION__);
+
+ $item = $cache->getItem('foo');
+ $this->assertTrue($cache->save($item->set('bar')));
+ $this->assertTrue($cache->hasItem('foo'));
+
+ $item->set(static fn () => null);
+ $this->assertFalse($cache->save($item));
+ $this->assertSame('bar', $cache->getItem('foo')->get());
+ }
}
class NotUnserializable
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php
index 5bbe4d1d7be13..ada3149d63d3c 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php
@@ -42,6 +42,7 @@ class PhpArrayAdapterTest extends AdapterTestCase
'testSaveDeferredWhenChangingValues' => 'PhpArrayAdapter is read-only.',
'testSaveDeferredOverwrite' => 'PhpArrayAdapter is read-only.',
'testIsHitDeferred' => 'PhpArrayAdapter is read-only.',
+ 'testErrorsDontInvalidate' => 'PhpArrayAdapter is read-only.',
'testExpiresAt' => 'PhpArrayAdapter does not support expiration.',
'testExpiresAtWithNull' => 'PhpArrayAdapter does not support expiration.',
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PredisAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PredisAdapterTest.php
index 5fdd35cafb68c..d9afd85a8e1f6 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/PredisAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/PredisAdapterTest.php
@@ -36,6 +36,8 @@ public function testCreateConnection()
$this->assertInstanceOf(StreamConnection::class, $connection);
$redisHost = explode(':', $redisHost);
+ $connectionParameters = $connection->getParameters()->toArray();
+
$params = [
'scheme' => 'tcp',
'host' => $redisHost[0],
@@ -46,7 +48,12 @@ public function testCreateConnection()
'tcp_nodelay' => true,
'database' => '1',
];
- $this->assertSame($params, $connection->getParameters()->toArray());
+
+ if (isset($connectionParameters['conn_uid'])) {
+ $params['conn_uid'] = $connectionParameters['conn_uid']; // if present, the value cannot be predicted
+ }
+
+ $this->assertSame($params, $connectionParameters);
}
public function testCreateSslConnection()
@@ -60,6 +67,8 @@ public function testCreateSslConnection()
$this->assertInstanceOf(StreamConnection::class, $connection);
$redisHost = explode(':', $redisHost);
+ $connectionParameters = $connection->getParameters()->toArray();
+
$params = [
'scheme' => 'tls',
'host' => $redisHost[0],
@@ -71,7 +80,12 @@ public function testCreateSslConnection()
'tcp_nodelay' => true,
'database' => '1',
];
- $this->assertSame($params, $connection->getParameters()->toArray());
+
+ if (isset($connectionParameters['conn_uid'])) {
+ $params['conn_uid'] = $connectionParameters['conn_uid']; // if present, the value cannot be predicted
+ }
+
+ $this->assertSame($params, $connectionParameters);
}
public function testAclUserPasswordAuth()
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php
new file mode 100644
index 0000000000000..cda92af8c7a6c
--- /dev/null
+++ b/src/Symfony/Component/Cache/Tests/Adapter/PredisRedisReplicationAdapterTest.php
@@ -0,0 +1,29 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Tests\Adapter;
+
+use Symfony\Component\Cache\Adapter\RedisAdapter;
+
+/**
+ * @group integration
+ */
+class PredisRedisReplicationAdapterTest extends AbstractRedisAdapterTestCase
+{
+ public static function setUpBeforeClass(): void
+ {
+ if (!$hosts = getenv('REDIS_REPLICATION_HOSTS')) {
+ self::markTestSkipped('REDIS_REPLICATION_HOSTS env var is not defined.');
+ }
+
+ self::$redis = RedisAdapter::createConnection('redis:?host['.str_replace(' ', ']&host[', $hosts).'][role]=master', ['replication' => 'predis', 'class' => \Predis\Client::class, 'prefix' => 'prefix_']);
+ }
+}
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php
new file mode 100644
index 0000000000000..28af1b5b4e27e
--- /dev/null
+++ b/src/Symfony/Component/Cache/Tests/Adapter/PredisReplicationAdapterTest.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Tests\Adapter;
+
+/**
+ * @group integration
+ */
+class PredisReplicationAdapterTest extends AbstractRedisAdapterTestCase
+{
+ public static function setUpBeforeClass(): void
+ {
+ parent::setUpBeforeClass();
+
+ if (!$hosts = getenv('REDIS_REPLICATION_HOSTS')) {
+ self::markTestSkipped('REDIS_REPLICATION_HOSTS env var is not defined.');
+ }
+
+ $hosts = explode(' ', getenv('REDIS_REPLICATION_HOSTS'));
+ $lastArrayKey = array_key_last($hosts);
+ $hostTable = [];
+ foreach($hosts as $key => $host) {
+ $hostInformation = array_combine(['host', 'port'], explode(':', $host));
+ if($lastArrayKey === $key) {
+ $hostInformation['role'] = 'master';
+ }
+ $hostTable[] = $hostInformation;
+ }
+
+ self::$redis = new \Predis\Client($hostTable, ['replication' => 'predis', 'prefix' => 'prefix_']);
+ }
+}
diff --git a/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php b/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php
index bb102363cf758..cea761f5f99ac 100644
--- a/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php
+++ b/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php
@@ -17,6 +17,7 @@
use Symfony\Component\Cache\DataCollector\CacheDataCollector;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\VarDumper\Cloner\Data;
class CacheDataCollectorTest extends TestCase
{
@@ -104,6 +105,27 @@ public function testCollectBeforeEnd()
$this->assertSame(1, $stats[self::INSTANCE_NAME]['misses'], 'misses');
}
+ public function testLateCollect()
+ {
+ $adapter = new TraceableAdapter(new NullAdapter());
+
+ $collector = new CacheDataCollector();
+ $collector->addInstance(self::INSTANCE_NAME, $adapter);
+
+ $adapter->get('foo', function () use ($collector) {
+ $collector->lateCollect();
+
+ return 123;
+ });
+
+ $stats = $collector->getStatistics();
+ $this->assertGreaterThan(0, $stats[self::INSTANCE_NAME]['time']);
+ $this->assertEquals($stats[self::INSTANCE_NAME]['hits'], 0, 'hits');
+ $this->assertEquals($stats[self::INSTANCE_NAME]['misses'], 1, 'misses');
+ $this->assertEquals($stats[self::INSTANCE_NAME]['calls'], 1, 'calls');
+ $this->assertInstanceOf(Data::class, $collector->getCalls());
+ }
+
private function getCacheDataCollectorStatisticsFromEvents(array $traceableAdapterEvents)
{
$traceableAdapterMock = $this->createMock(TraceableAdapter::class);
diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php
index 87c689209fac6..f6bb9bbe101f1 100644
--- a/src/Symfony/Component/Cache/Traits/RedisTrait.php
+++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php
@@ -17,6 +17,7 @@
use Predis\Connection\Aggregate\ReplicationInterface;
use Predis\Connection\Cluster\ClusterInterface as Predis2ClusterInterface;
use Predis\Connection\Cluster\RedisCluster as Predis2RedisCluster;
+use Predis\Connection\Replication\ReplicationInterface as Predis2ReplicationInterface;
use Predis\Response\ErrorInterface;
use Predis\Response\Status;
use Relay\Relay;
@@ -479,9 +480,16 @@ protected function doClear(string $namespace): bool
$cleared = true;
$hosts = $this->getHosts();
$host = reset($hosts);
- if ($host instanceof \Predis\Client && $host->getConnection() instanceof ReplicationInterface) {
- // Predis supports info command only on the master in replication environments
- $hosts = [$host->getClientFor('master')];
+ if ($host instanceof \Predis\Client) {
+ $connection = $host->getConnection();
+
+ if ($connection instanceof ReplicationInterface) {
+ $hosts = [$host->getClientFor('master')];
+ } elseif ($connection instanceof Predis2ReplicationInterface) {
+ $connection->switchToMaster();
+
+ $hosts = [$host];
+ }
}
foreach ($hosts as $host) {
diff --git a/src/Symfony/Component/Cache/Traits/Relay/MoveTrait.php b/src/Symfony/Component/Cache/Traits/Relay/MoveTrait.php
index 1f1b84c009399..18086f61d68c5 100644
--- a/src/Symfony/Component/Cache/Traits/Relay/MoveTrait.php
+++ b/src/Symfony/Component/Cache/Traits/Relay/MoveTrait.php
@@ -33,12 +33,12 @@ public function lmove($srckey, $dstkey, $srcpos, $dstpos): mixed
*/
trait MoveTrait
{
- public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): \Relay\Relay|false|null|string
+ public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): \Relay\Relay|false|string|null
{
return $this->initializeLazyObject()->blmove(...\func_get_args());
}
- public function lmove($srckey, $dstkey, $srcpos, $dstpos): \Relay\Relay|false|null|string
+ public function lmove($srckey, $dstkey, $srcpos, $dstpos): \Relay\Relay|false|string|null
{
return $this->initializeLazyObject()->lmove(...\func_get_args());
}
diff --git a/src/Symfony/Component/Config/Builder/ConfigBuilderGenerator.php b/src/Symfony/Component/Config/Builder/ConfigBuilderGenerator.php
index 08e91c2d11105..ddd6dbb291051 100644
--- a/src/Symfony/Component/Config/Builder/ConfigBuilderGenerator.php
+++ b/src/Symfony/Component/Config/Builder/ConfigBuilderGenerator.php
@@ -412,39 +412,39 @@ private function getComment(BaseNode $node): string
{
$comment = '';
if ('' !== $info = (string) $node->getInfo()) {
- $comment .= ' * '.$info."\n";
+ $comment .= $info."\n";
}
if (!$node instanceof ArrayNode) {
foreach ((array) ($node->getExample() ?? []) as $example) {
- $comment .= ' * @example '.$example."\n";
+ $comment .= '@example '.$example."\n";
}
if ('' !== $default = $node->getDefaultValue()) {
- $comment .= ' * @default '.(null === $default ? 'null' : var_export($default, true))."\n";
+ $comment .= '@default '.(null === $default ? 'null' : var_export($default, true))."\n";
}
if ($node instanceof EnumNode) {
- $comment .= \sprintf(' * @param ParamConfigurator|%s $value', implode('|', array_unique(array_map(fn ($a) => !$a instanceof \UnitEnum ? var_export($a, true) : '\\'.ltrim(var_export($a, true), '\\'), $node->getValues()))))."\n";
+ $comment .= \sprintf('@param ParamConfigurator|%s $value', implode('|', array_unique(array_map(fn ($a) => !$a instanceof \UnitEnum ? var_export($a, true) : '\\'.ltrim(var_export($a, true), '\\'), $node->getValues()))))."\n";
} else {
$parameterTypes = $this->getParameterTypes($node);
- $comment .= ' * @param ParamConfigurator|'.implode('|', $parameterTypes).' $value'."\n";
+ $comment .= '@param ParamConfigurator|'.implode('|', $parameterTypes).' $value'."\n";
}
} else {
foreach ((array) ($node->getExample() ?? []) as $example) {
- $comment .= ' * @example '.json_encode($example)."\n";
+ $comment .= '@example '.json_encode($example)."\n";
}
if ($node->hasDefaultValue() && [] != $default = $node->getDefaultValue()) {
- $comment .= ' * @default '.json_encode($default)."\n";
+ $comment .= '@default '.json_encode($default)."\n";
}
}
if ($node->isDeprecated()) {
- $comment .= ' * @deprecated '.$node->getDeprecation($node->getName(), $node->getParent()->getName())['message']."\n";
+ $comment .= '@deprecated '.$node->getDeprecation($node->getName(), $node->getParent()->getName())['message']."\n";
}
- return $comment;
+ return $comment ? ' * '.str_replace("\n", "\n * ", rtrim($comment, "\n"))."\n" : '';
}
/**
diff --git a/src/Symfony/Component/Config/ResourceCheckerConfigCache.php b/src/Symfony/Component/Config/ResourceCheckerConfigCache.php
index c201a3dcbf394..955aee7e575ad 100644
--- a/src/Symfony/Component/Config/ResourceCheckerConfigCache.php
+++ b/src/Symfony/Component/Config/ResourceCheckerConfigCache.php
@@ -127,8 +127,8 @@ public function write(string $content, ?array $metadata = null): void
$ser = preg_replace_callback('/;O:(\d+):"/', static fn ($m) => ';O:'.(9 + $m[1]).':"Tracking\\', $ser);
$ser = preg_replace_callback('/s:(\d+):"\0[^\0]++\0/', static fn ($m) => 's:'.($m[1] - \strlen($m[0]) + 6).':"', $ser);
- $ser = unserialize($ser);
- $ser = @json_encode($ser) ?: [];
+ $ser = unserialize($ser, ['allowed_classes' => false]);
+ $ser = @json_encode($ser, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE) ?: [];
8000
$ser = str_replace('"__PHP_Incomplete_Class_Name":"Tracking\\\\', '"@type":"', $ser);
$ser = \sprintf('{"resources":%s}', $ser);
diff --git a/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues.php b/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues.php
index 153af57be9b5b..5c1259c20edd8 100644
--- a/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues.php
+++ b/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues.php
@@ -38,7 +38,13 @@ public function getConfigTreeBuilder(): TreeBuilder
->arrayPrototype()
->fixXmlConfig('option')
->children()
- ->scalarNode('dsn')->end()
+ ->scalarNode('dsn')
+ ->info(<<<'INFO'
+ The DSN to use. This is a required option.
+ The info is used to describe the DSN,
+ it can be multi-line.
+ INFO)
+ ->end()
->scalarNode('serializer')->defaultNull()->end()
->arrayNode('options')
->normalizeKeys(false)
diff --git a/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues/Symfony/Config/NodeInitialValues/Messenger/TransportsConfig.php b/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues/Symfony/Config/NodeInitialValues/Messenger/TransportsConfig.php
index b9d8b48db3556..6a98166eccc94 100644
--- a/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues/Symfony/Config/NodeInitialValues/Messenger/TransportsConfig.php
+++ b/src/Symfony/Component/Config/Tests/Builder/Fixtures/NodeInitialValues/Symfony/Config/NodeInitialValues/Messenger/TransportsConfig.php
@@ -16,6 +16,9 @@ class TransportsConfig
private $_usedProperties = [];
/**
+ * The DSN to use. This is a required option.
+ * The info is used to describe the DSN,
+ * it can be multi-line.
* @default null
* @param ParamConfigurator|mixed $value
* @return $this
diff --git a/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php b/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php
index 3dbbe43346f9b..ff0c96f76855d 100644
--- a/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php
+++ b/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php
@@ -168,6 +168,6 @@ public function testCacheWithCustomMetaFile()
'resource' => __FILE__,
],
],
- ]));
+ ], \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE));
}
}
diff --git a/src/Symfony/Component/Console/Helper/ProgressBar.php b/src/Symfony/Component/Console/Helper/ProgressBar.php
index 2dac1dfa237b7..dc3605ad2fee0 100644
--- a/src/Symfony/Component/Console/Helper/ProgressBar.php
+++ b/src/Symfony/Component/Console/Helper/ProgressBar.php
@@ -229,7 +229,7 @@ public function getEstimated(): float
public function getRemaining(): float
{
- if (!$this->step) {
+ if (0 === $this->step || $this->step === $this->startingStep) {
return 0;
}
@@ -513,12 +513,21 @@ private function overwrite(string $message): void
if ($this->output instanceof ConsoleSectionOutput) {
$messageLines = explode("\n", $this->previousMessage);
$lineCount = \count($messageLines);
+
+ $lastLineWithoutDecoration = Helper::removeDecoration($this->output->getFormatter(), end($messageLines) ?? '');
+
+ // When the last previous line is empty (without formatting) it is already cleared by the section output, so we don't need to clear it again
+ if ('' === $lastLineWithoutDecoration) {
+ --$lineCount;
+ }
+
foreach ($messageLines as $messageLine) {
$messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine));
if ($messageLineLength > $this->terminal->getWidth()) {
$lineCount += floor($messageLineLength / $this->terminal->getWidth());
}
}
+
$this->output->clear($lineCount);
} else {
$lineCount = substr_count($this->previousMessage, "\n");
diff --git a/src/Symfony/Component/Console/SignalRegistry/SignalMap.php b/src/Symfony/Component/Console/SignalRegistry/SignalMap.php
index de419bda79821..2f9aa67c156db 100644
--- a/src/Symfony/Component/Console/SignalRegistry/SignalMap.php
+++ b/src/Symfony/Component/Console/SignalRegistry/SignalMap.php
@@ -27,7 +27,7 @@ public static function getSignalName(int $signal): ?string
if (!isset(self::$map)) {
$r = new \ReflectionExtension('pcntl');
$c = $r->getConstants();
- $map = array_filter($c, fn ($k) => str_starts_with($k, 'SIG') && !str_starts_with($k, 'SIG_'), \ARRAY_FILTER_USE_KEY);
+ $map = array_filter($c, fn ($k) => str_starts_with($k, 'SIG') && !str_starts_with($k, 'SIG_') && 'SIGBABY' !== $k, \ARRAY_FILTER_USE_KEY);
self::$map = array_flip($map);
}
diff --git a/src/Symfony/Component/Console/Tests/ApplicationTest.php b/src/Symfony/Component/Console/Tests/ApplicationTest.php
index 4693535051124..4f6e6cb96cf32 100644
--- a/src/Symfony/Component/Console/Tests/ApplicationTest.php
+++ b/src/Symfony/Component/Console/Tests/ApplicationTest.php
@@ -79,6 +79,7 @@ protected function tearDown(): void
pcntl_signal(\SIGTERM, \SIG_DFL);
pcntl_signal(\SIGUSR1, \SIG_DFL);
pcntl_signal(\SIGUSR2, \SIG_DFL);
+ pcntl_signal(\SIGALRM, \SIG_DFL);
}
}
diff --git a/src/Symfony/Component/Console/Tests/ConsoleEventsTest.php b/src/Symfony/Component/Console/Tests/ConsoleEventsTest.php
index 9c04d2706e8da..408f8c0d35c58 100644
--- a/src/Symfony/Component/Console/Tests/ConsoleEventsTest.php
+++ b/src/Symfony/Component/Console/Tests/ConsoleEventsTest.php
@@ -39,6 +39,7 @@ protected function tearDown(): void
pcntl_signal(\SIGTERM, \SIG_DFL);
pcntl_signal(\SIGUSR1, \SIG_DFL);
pcntl_signal(\SIGUSR2, \SIG_DFL);
+ pcntl_signal(\SIGALRM, \SIG_DFL);
}
}
diff --git a/src/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php b/src/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php
index 88b3e9228a2f2..0df42e738a6f6 100644
--- a/src/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php
+++ b/src/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php
@@ -110,6 +110,16 @@ public function testRegularTimeEstimation()
);
}
+ public function testRegularTimeRemainingWithDifferentStartAtAndCustomDisplay()
+ {
+ $this->expectNotToPerformAssertions();
+
+ ProgressBar::setFormatDefinition('custom', ' %current%/%max% [%bar%] %percent:3s%% %remaining% %estimated%');
+ $bar = new ProgressBar($this->getOutputStream(), 1_200, 0);
+ $bar->setFormat('custom');
+ $bar->start(1_200, 600);
+ }
+
public function testResumedTimeEstimation()
{
$bar = new ProgressBar($output = $this->getOutputStream(), 1_200, 0);
@@ -406,6 +416,81 @@ public function testOverwriteWithSectionOutput()
);
}
+ public function testOverwriteWithSectionOutputAndEol()
+ {
+ $sections = [];
+ $stream = $this->getOutputStream(true);
+ $output = new ConsoleSectionOutput($stream->getStream(), $sections, $stream->getVerbosity(), $stream->isDecorated(), new OutputFormatter());
+
+ $bar = new ProgressBar($output, 50, 0);
+ $bar->setFormat('[%bar%] %percent:3s%%' . PHP_EOL . '%message%' . PHP_EOL);
+ $bar->setMessage('');
+ $bar->start();
+ $bar->display();
+ $bar->setMessage('Doing something...');
+ $bar->advance();
+ $bar->setMessage('Doing something foo...');
+ $bar->advance();
+
+ rewind($output->getStream());
+ $this->assertEquals(escapeshellcmd(
+ '[>---------------------------] 0%'.\PHP_EOL.\PHP_EOL.
+ "\x1b[2A\x1b[0J".'[>---------------------------] 2%'.\PHP_EOL. 'Doing something...' . \PHP_EOL .
+ "\x1b[2A\x1b[0J".'[=>--------------------------] 4%'.\PHP_EOL. 'Doing something foo...' . \PHP_EOL),
+ escapeshellcmd(stream_get_contents($output->getStream()))
+ );
+ }
+
+ public function testOverwriteWithSectionOutputAndEolWithEmptyMessage()
+ {
+ $sections = [];
+ $stream = $this->getOutputStream(true);
+ $output = new ConsoleSectionOutput($stream->getStream(), $sections, $stream->getVerbosity(), $stream->isDecorated(), new OutputFormatter());
+
+ $bar = new ProgressBar($output, 50, 0);
+ $bar->setFormat('[%bar%] %percent:3s%%' . PHP_EOL . '%message%');
+ $bar->setMessage('Start');
+ $bar->start();
+ $bar->display();
+ $bar->setMessage('');
+ $bar->advance();
+ $bar->setMessage('Doing something...');
+ $bar->advance();
+
+ rewind($output->getStream());
+ $this->assertEquals(escapeshellcmd(
+ '[>---------------------------] 0%'.\PHP_EOL.'Start'.\PHP_EOL.
+ "\x1b[2A\x1b[0J".'[>---------------------------] 2%'.\PHP_EOL .
+ "\x1b[1A\x1b[0J".'[=>--------------------------] 4%'.\PHP_EOL. 'Doing something...' . \PHP_EOL),
+ escapeshellcmd(stream_get_contents($output->getStream()))
+ );
+ }
+
+ public function testOverwriteWithSectionOutputAndEolWithEmptyMessageComment()
+ {
+ $sections = [];
+ $stream = $this->getOutputStream(true);
+ $output = new ConsoleSectionOutput($stream->getStream(), $sections, $stream->getVerbosity(), $stream->isDecorated(), new OutputFormatter());
+
+ $bar = new ProgressBar($output, 50, 0);
+ $bar->setFormat('[%bar%] %percent:3s%%' . PHP_EOL . '%message% ');
+ $bar->setMessage('Start');
+ $bar->start();
+ $bar->display();
+ $bar->setMessage('');
+ $bar->advance();
+ $bar->setMessage('Doing something...');
+ $bar->advance();
+
+ rewind($output->getStream());
+ $this->assertEquals(escapeshellcmd(
+ '[>---------------------------] 0%'.\PHP_EOL."\x1b[33mStart\x1b[39m".\PHP_EOL.
+ "\x1b[2A\x1b[0J".'[>---------------------------] 2%'.\PHP_EOL .
+ "\x1b[1A\x1b[0J".'[=>--------------------------] 4%'.\PHP_EOL. "\x1b[33mDoing something...\x1b[39m" . \PHP_EOL),
+ escapeshellcmd(stream_get_contents($output->getStream()))
+ );
+ }
+
public function testOverwriteWithAnsiSectionOutput()
{
// output has 43 visible characters plus 2 invisible ANSI characters
diff --git a/src/Symfony/Component/Console/Tests/SignalRegistry/SignalMapTest.php b/src/Symfony/Component/Console/Tests/SignalRegistry/SignalMapTest.php
index 887c5d7af01c5..3a0c49bb01e21 100644
--- a/src/Symfony/Component/Console/Tests/SignalRegistry/SignalMapTest.php
+++ b/src/Symfony/Component/Console/Tests/SignalRegistry/SignalMapTest.php
@@ -18,14 +18,13 @@ class SignalMapTest extends TestCase
{
/**
* @requires extension pcntl
- *
- * @testWith [2, "SIGINT"]
- * [9, "SIGKILL"]
- * [15, "SIGTERM"]
*/
- public function testSignalExists(int $signal, string $expected)
+ public function testSignalExists()
{
- $this->assertSame($expected, SignalMap::getSignalName($signal));
+ $this->assertSame('SIGINT', SignalMap::getSignalName(\SIGINT));
+ $this->assertSame('SIGKILL', SignalMap::getSignalName(\SIGKILL));
+ $this->assertSame('SIGTERM', SignalMap::getSignalName(\SIGTERM));
+ $this->assertSame('SIGSYS', SignalMap::getSignalName(\SIGSYS));
}
public function testSignalDoesNotExist()
diff --git a/src/Symfony/Component/Console/Tests/SignalRegistry/SignalRegistryTest.php b/src/Symfony/Component/Console/Tests/SignalRegistry/SignalRegistryTest.php
index f997f7c1d8cee..92d500f9ee4e5 100644
--- a/src/Symfony/Component/Console/Tests/SignalRegistry/SignalRegistryTest.php
+++ b/src/Symfony/Component/Console/Tests/SignalRegistry/SignalRegistryTest.php
@@ -27,6 +27,7 @@ protected function tearDown(): void
pcntl_signal(\SIGTERM, \SIG_DFL);
pcntl_signal(\SIGUSR1, \SIG_DFL);
pcntl_signal(\SIGUSR2, \SIG_DFL);
+ pcntl_signal(\SIGALRM, \SIG_DFL);
}
public function testOneCallbackForASignalSignalIsHandled()
diff --git a/src/Symfony/Component/DependencyInjection/Attribute/AsTaggedItem.php b/src/Symfony/Component/DependencyInjection/Attribute/AsTaggedItem.php
index 2e649bdeaaadd..6b1a94dd3dd35 100644
--- a/src/Symfony/Component/DependencyInjection/Attribute/AsTaggedItem.php
+++ b/src/Symfony/Component/DependencyInjection/Attribute/AsTaggedItem.php
@@ -20,8 +20,8 @@
class AsTaggedItem
{
/**
- * @param string|null $index The property or method to use to index the item in the locator
- * @param int|null $priority The priority of the item; the higher the number, the earlier the tagged service will be located in the locator
+ * @param string|null $index The property or method to use to index the item in the iterator/locator
+ * @param int|null $priority The priority of the item; the higher the number, the earlier the tagged service will be located in the iterator/locator
*/
public function __construct(
public ?string $index = null,
diff --git a/src/Symfony/Component/DependencyInjection/Attribute/Autoconfigure.php b/src/Symfony/Component/DependencyInjection/Attribute/Autoconfigure.php
index dc2c84ca29a5e..06513fd903e01 100644
--- a/src/Symfony/Component/DependencyInjection/Attribute/Autoconfigure.php
+++ b/src/Symfony/Component/DependencyInjection/Attribute/Autoconfigure.php
@@ -28,7 +28,7 @@ class Autoconfigure
* @param bool|null $shared Whether to declare the service as shared
* @param bool|null $autowire Whether to declare the service as autowired
* @param array|null $properties The properties to define when creating the service
- * @param array|string|null $configurator A PHP function, reference or an array containing a class/Reference and a method to call after the service is fully initialized
+ * @param array{string, string}|string|null $configurator A PHP function, reference or an array containing a class/reference and a method to call after the service is fully initialized
* @param string|null $constructor The public static method to use to instantiate the service
*/
public function __construct(
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php
index 9b43d6e64aad5..7adb0b4d830e6 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php
@@ -28,6 +28,7 @@ class CheckCircularReferencesPass implements CompilerPassInterface
{
private array $currentPath;
private array $checkedNodes;
+ private array $checkedLazyNodes;
/**
* Checks the ContainerBuilder object for circular references.
@@ -57,22 +58,36 @@ private function checkOutEdges(array $edges): void
$node = $edge->getDestNode();
$id = $node->getId();
- if (empty($this->checkedNodes[$id])) {
- // Don't check circular references for lazy edges
- if (!$node->getValue() || (!$edge->isLazy() && !$edge->isWeak())) {
- $searchKey = array_search($id, $this->currentPath);
- $this->currentPath[] = $id;
+ if (!empty($this->checkedNodes[$id])) {
+ continue;
+ }
+
+ $isLeaf = !!$node->getValue();
+ $isConcrete = !$edge->isLazy() && !$edge->isWeak();
+
+ // Skip already checked lazy services if they are still lazy. Will not gain any new information.
+ if (!empty($this->checkedLazyNodes[$id]) && (!$isLeaf || !$isConcrete)) {
+ continue;
+ }
- if (false !== $searchKey) {
- throw new ServiceCircularReferenceException($id, \array_slice($this->currentPath, $searchKey));
- }
+ // Process concrete references, otherwise defer check circular references for lazy edges.
+ if (!$isLeaf || $isConcrete) {
+ $searchKey = array_search($id, $this->currentPath);
+ $this->currentPath[] = $id;
- $this->checkOutEdges($node->getOutEdges());
+ if (false !== $searchKey) {
+ throw new ServiceCircularReferenceException($id, \array_slice($this->currentPath, $searchKey));
}
+ $this->checkOutEdges($node->getOutEdges());
+
$this->checkedNodes[$id] = true;
- array_pop($this->currentPath);
+ unset($this->checkedLazyNodes[$id]);
+ } else {
+ $this->checkedLazyNodes[$id] = true;
}
+
+ array_pop($this->currentPath);
}
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php b/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php
index 26ab135b1a99c..2d6ad689443e8 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php
@@ -62,7 +62,10 @@ protected function processValue(mixed $value, bool $isRoot = false): mixed
}
if ($value instanceof Reference && $this->currentId !== $targetId = (string) $value) {
- if (ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE === $value->getInvalidBehavior()) {
+ if (
+ ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE === $value->getInvalidBehavior()
+ || ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE === $value->getInvalidBehavior()
+ ) {
$this->sourceReferences[$targetId][$this->currentId] ??= true;
} else {
$this->sourceReferences[$targetId][$this->currentId] = false;
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php
index ddea146fd9e87..de4acb258c3a9 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php
@@ -223,6 +223,8 @@ private function isInlineableDefinition(string $id, Definition $definition): boo
return false;
}
- return $this->container->getDefinition($srcId)->isShared();
+ $srcDefinition = $this->container->getDefinition($srcId);
+
+ return $srcDefinition->isShared() && !$srcDefinition->isLazy();
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.php b/src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.php
index 77a1d7ef8ffc2..e3a4eba275a75 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.php
@@ -87,8 +87,7 @@ private function findAndSortTaggedServices(string|TaggedIteratorArgument $tagNam
if (null === $index && null === $defaultIndex && $defaultPriorityMethod && $class) {
$defaultIndex = PriorityTaggedServiceUtil::getDefault($container, $serviceId, $class, $defaultIndexMethod ?? 'getDefaultName', $tagName, $indexAttribute, $checkTaggedItem);
}
- $decorated = $definition->getTag('container.decorator')[0]['id'] ?? null;
- $index = $index ?? $defaultIndex ?? $defaultIndex = $decorated ?? $serviceId;
+ $index ??= $defaultIndex ??= $definition->getTag('container.decorator')[0]['id'] ?? $serviceId;
$services[] = [$priority, ++$i, $index, $serviceId, $class];
}
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/RegisterServiceSubscribersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/RegisterServiceSubscribersPass.php
index 87470c39894e4..89b822bc53b44 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/RegisterServiceSubscribersPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/RegisterServiceSubscribersPass.php
@@ -20,6 +20,7 @@
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\TypedReference;
use Symfony\Contracts\Service\Attribute\SubscribedService;
+use Symfony\Contracts\Service\ServiceCollectionInterface;
use Symfony\Contracts\Service\ServiceProviderInterface;
use Symfony\Contracts\Service\ServiceSubscriberInterface;
@@ -134,6 +135,7 @@ protected function processValue(mixed $value, bool $isRoot = false): mixed
$value->setBindings([
PsrContainerInterface::class => new BoundArgument($locatorRef, false),
ServiceProviderInterface::class => new BoundArgument($locatorRef, false),
+ ServiceCollectionInterface::class => new BoundArgument($locatorRef, false),
] + $value->getBindings());
return parent::processValue($value);
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ServiceLocatorTagPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ServiceLocatorTagPass.php
index 81c14ac5cc4d0..eedc0f484243c 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/ServiceLocatorTagPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/ServiceLocatorTagPass.php
@@ -54,17 +54,41 @@ protected function processValue(mixed $value, bool $isRoot = false): mixed
$value->setClass(ServiceLocator::class);
}
- $services = $value->getArguments()[0] ?? null;
+ $values = $value->getArguments()[0] ?? null;
+ $services = [];
- if ($services instanceof TaggedIteratorArgument) {
- $services = $this->findAndSortTaggedServices($services, $this->container);
- }
-
- if (!\is_array($services)) {
+ if ($values instanceof TaggedIteratorArgument) {
+ foreach ($this->findAndSortTaggedServices($values, $this->container) as $k => $v) {
+ $services[$k] = new ServiceClosureArgument($v);
+ }
+ } elseif (!\is_array($values)) {
throw new InvalidArgumentException(\sprintf('Invalid definition for service "%s": an array of references is expected as first argument when the "container.service_locator" tag is set.', $this->currentId));
+ } else {
+ $i = 0;
+
+ foreach ($values as $k => $v) {
+ if ($v instanceof ServiceClosureArgument) {
+ $services[$k] = $v;
+ continue;
+ }
+
+ if ($i === $k) {
+ if ($v instanceof Reference) {
+ $k = (string) $v;
+ }
+ ++$i;
+ } elseif (\is_int($k)) {
+ $i = null;
+ }
+
+ $services[$k] = new ServiceClosureArgument($v);
+ }
+ if (\count($services) === $i) {
+ ksort($services);
+ }
}
- $value->setArgument(0, self::map($services));
+ $value->setArgument(0, $services);
$id = '.service_locator.'.ContainerBuilder::hash($value);
@@ -83,8 +107,12 @@ protected function processValue(mixed $value, bool $isRoot = false): mixed
public static function register(ContainerBuilder $container, array $map, ?string $callerId = null): Reference
{
+ foreach ($map as $k => $v) {
+ $map[$k] = new ServiceClosureArgument($v);
+ }
+
$locator = (new Definition(ServiceLocator::class))
- ->addArgument(self::map($map))
+ ->addArgument($map)
->addTag('container.service_locator');
if (null !== $callerId && $container->hasDefinition($callerId)) {
@@ -109,29 +137,4 @@ public static function register(ContainerBuilder $container, array $map, ?string
return new Reference($id);
}
-
- public static function map(array $services): array
- {
- $i = 0;
-
- foreach ($services as $k => $v) {
- if ($v instanceof ServiceClosureArgument) {
- continue;
- }
-
- if ($i === $k) {
- if ($v instanceof Reference) {
- unset($services[$k]);
- $k = (string) $v;
- }
- ++$i;
- } elseif (\is_int($k)) {
- $i = null;
- }
-
- $services[$k] = new ServiceClosureArgument($v);
- }
-
- return $services;
- }
}
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php
index 783080c09edc7..b656cf8d455e8 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/ValidateEnvPlaceholdersPass.php
@@ -46,17 +46,8 @@ public function process(ContainerBuilder $container): void
$defaultBag = new ParameterBag($resolvingBag->all());
$envTypes = $resolvingBag->getProvidedTypes();
foreach ($resolvingBag->getEnvPlaceholders() + $resolvingBag->getUnusedEnvPlaceholders() as $env => $placeholders) {
- $values = [];
- if (false === $i = strpos($env, ':')) {
- $default = $defaultBag->has("env($env)") ? $defaultBag->get("env($env)") : self::TYPE_FIXTURES['string'];
- $defaultType = null !== $default ? get_debug_type($default) : 'string';
- $values[$defaultType] = $default;
- } else {
- $prefix = substr($env, 0, $i);
- foreach ($envTypes[$prefix] ?? ['string'] as $type) {
- $values[$type] = self::TYPE_FIXTURES[$type] ?? null;
- }
- }
+ $values = $this->getPlaceholderValues($env, $defaultBag, $envTypes);
+
foreach ($placeholders as $placeholder) {
BaseNode::setPlaceholder($placeholder, $values);
}
@@ -97,4 +88,50 @@ public function getExtensionConfig(): array
$this->extensionConfig = [];
}
}
+
+ /**
+ * @param array> $envTypes
+ *
+ * @return array
+ */
+ private function getPlaceholderValues(string $env, ParameterBag $defaultBag, array $envTypes): array
+ {
+ if (false === $i = strpos($env, ':')) {
+ [$default, $defaultType] = $this->getParameterDefaultAndDefaultType("env($env)", $defaultBag);
+
+ return [$defaultType => $default];
+ }
+
+ $prefix = substr($env, 0, $i);
+ if ('default' === $prefix) {
+ $parts = explode(':', $env);
+ array_shift($parts); // Remove 'default' prefix
+ $parameter = array_shift($parts); // Retrieve and remove parameter
+
+ [$defaultParameter, $defaultParameterType] = $this->getParameterDefaultAndDefaultType($parameter, $defaultBag);
+
+ return [
+ $defaultParameterType => $defaultParameter,
+ ...$this->getPlaceholderValues(implode(':', $parts), $defaultBag, $envTypes),
+ ];
+ }
+
+ $values = [];
+ foreach ($envTypes[$prefix] ?? ['string'] as $type) {
+ $values[$type] = self::TYPE_FIXTURES[$type] ?? null;
+ }
+
+ return $values;
+ }
+
+ /**
+ * @return array{0: string, 1: string}
+ */
+ private function getParameterDefaultAndDefaultType(string $name, ParameterBag $defaultBag): array
+ {
+ $default = $defaultBag->has($name) ? $defaultBag->get($name) : self::TYPE_FIXTURES['string'];
+ $defaultType = null !== $default ? get_debug_type($default) : 'string';
+
+ return [$default, $defaultType];
+ }
}
diff --git a/src/Symfony/Component/DependencyInjection/Container.php b/src/Symfony/Component/DependencyInjection/Container.php
index e81f47406cf49..84c61f92f7617 100644
--- a/src/Symfony/Component/DependencyInjection/Container.php
+++ b/src/Symfony/Component/DependencyInjection/Container.php
@@ -291,6 +291,14 @@ public function reset(): void
$this->envCache = $this->services = $this->factories = $this->privates = [];
}
+ /**
+ * @internal
+ */
+ public function resetEnvCache(): void
+ {
+ $this->envCache = [];
+ }
+
/**
* Gets all service ids.
*
diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php
index 7389ca6310447..b3fce29da599d 100644
--- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php
+++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php
@@ -791,10 +791,11 @@ public function parameterCannotBeEmpty(string $name, string $message): void
* * The parameter bag is frozen;
* * Extension loading is disabled.
*
- * @param bool $resolveEnvPlaceholders Whether %env()% parameters should be resolved using the current
- * env vars or be replaced by uniquely identifiable placeholders.
- * Set to "true" when you want to use the current ContainerBuilder
- * directly, keep to "false" when the container is dumped instead.
+ * @param bool $resolveEnvPlaceholders Whether %env()% parameters should be resolved at build time using
+ * the current env var values (true), or be resolved at runtime based
+ * on the environment (false). In general, this should be set to "true"
+ * when you want to use the current ContainerBuilder directly, and to
+ * "false" when the container is dumped instead.
*/
public function compile(bool $resolveEnvPlaceholders = false): void
{
diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
index 37793a1ee02a8..ee7e519a0c8aa 100644
--- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
+++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
@@ -338,7 +338,7 @@ class %s extends {$options['class']}
EOF;
foreach ($this->preload as $class) {
- if (!$class || str_contains($class, '$') || \in_array($class, ['int', 'float', 'string', 'bool', 'resource', 'object', 'array', 'null', 'callable', 'iterable', 'mixed', 'void'], true)) {
+ if (!$class || str_contains($class, '$') || \in_array($class, ['int', 'float', 'string', 'bool', 'resource', 'object', 'array', 'null', 'callable', 'iterable', 'mixed', 'void', 'never'], true)) {
continue;
}
if (!(class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false)) || (new \ReflectionClass($class))->isUserDefined()) {
@@ -831,8 +831,7 @@ private function addService(strin
8000
g $id, Definition $definition): array
if ($class = $definition->getClass()) {
$class = $class instanceof Parameter ? '%'.$class.'%' : $this->container->resolveEnvPlaceholders($class);
$return[] = \sprintf(str_starts_with($class, '%') ? '@return object A %1$s instance' : '@return \%s', ltrim($class, '\\'));
- } elseif ($definition->getFactory()) {
- $factory = $definition->getFactory();
+ } elseif ($factory = $definition->getFactory()) {
if (\is_string($factory) && !str_starts_with($factory, '@=')) {
$return[] = \sprintf('@return object An instance returned by %s()', $factory);
} elseif (\is_array($factory) && (\is_string($factory[0]) || $factory[0] instanceof Definition || $factory[0] instanceof Reference)) {
@@ -1152,9 +1151,7 @@ private function addNewInstance(Definition $definition, string $return = '', ?st
$arguments[] = (\is_string($i) ? $i.': ' : '').$this->dumpValue($value);
}
- if (null !== $definition->getFactory()) {
- $callable = $definition->getFactory();
-
+ if ($callable = $definition->getFactory()) {
if ('current' === $callable && [0] === array_keys($definition->getArguments()) && \is_array($value) && [0] === array_keys($value)) {
return $return.$this->dumpValue($value[0]).$tail;
}
@@ -2197,6 +2194,12 @@ private function isSingleUsePrivateNode(ServiceReferenceGraphNode $node): bool
if ($edge->isLazy() || !$value instanceof Definition || !$value->isShared()) {
return false;
}
+
+ // When the source node is a proxy or ghost, it will construct its references only when the node itself is initialized.
+ // Since the node can be cloned before being fully initialized, we do not know how often its references are used.
+ if ($this->getProxyDumper()->isProxyCandidate($value)) {
+ return false;
+ }
$ids[$edge->getSourceNode()->getId()] = true;
}
@@ -2305,7 +2308,6 @@ private function getAutoloadFile(): ?string
private function getClasses(Definition $definition, string $id): array
{
$classes = [];
- $resolve = $this->container->getParameterBag()->resolveValue(...);
while ($definition instanceof Definition) {
foreach ($definition->getTag($this->preloadTags[0]) as $tag) {
@@ -2317,24 +2319,24 @@ private function getClasses(Definition $definition, string $id): array
}
if ($class = $definition->getClass()) {
- $classes[] = trim($resolve($class), '\\');
+ $classes[] = trim($class, '\\');
}
$factory = $definition->getFactory();
+ if (\is_string($factory) && !str_starts_with($factory, '@=') && str_contains($factory, '::')) {
+ $factory = explode('::', $factory);
+ }
+
if (!\is_array($factory)) {
- $factory = [$factory];
+ $definition = $factory;
+ continue;
}
- if (\is_string($factory[0])) {
- $factory[0] = $resolve($factory[0]);
+ $definition = $factory[0] ?? null;
- if (false !== $i = strrpos($factory[0], '::')) {
- $factory[0] = substr($factory[0], 0, $i);
- }
+ if (\is_string($definition)) {
$classes[] = trim($factory[0], '\\');
}
-
- $definition = $factory[0];
}
return $classes;
diff --git a/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
index ec115500bb0cf..d79e7b90408b2 100644
--- a/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
+++ b/src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
@@ -50,18 +50,18 @@ public function dump(array $options = []): string
$this->dumper ??= new YmlDumper();
- return $this->container->resolveEnvPlaceholders($this->addParameters()."\n".$this->addServices());
+ return $this->addParameters()."\n".$this->addServices();
}
private function addService(string $id, Definition $definition): string
{
- $code = " $id:\n";
+ $code = " {$this->dumper->dump($id)}:\n";
if ($class = $definition->getClass()) {
if (str_starts_with($class, '\\')) {
$class = substr($class, 1);
}
- $code .= \sprintf(" class: %s\n", $this->dumper->dump($class));
+ $code .= \sprintf(" class: %s\n", $this->dumper->dump($this->container->resolveEnvPlaceholders($class)));
}
if (!$definition->isPrivate()) {
@@ -87,7 +87,7 @@ private function addService(string $id, Definition $definition): string
}
if ($definition->getFile()) {
- $code .= \sprintf(" file: %s\n", $this->dumper->dump($definition->getFile()));
+ $code .= \sprintf(" file: %s\n", $this->dumper->dump($this->container->resolveEnvPlaceholders($definition->getFile())));
}
if ($definition->isSynthetic()) {
@@ -238,7 +238,7 @@ private function dumpCallable(mixed $callable): mixed
}
}
- return $callable;
+ return $this->container->resolveEnvPlaceholders($callable);
}
/**
@@ -299,7 +299,7 @@ private function dumpValue(mixed $value): mixed
if (\is_array($value)) {
$code = [];
foreach ($value as $k => $v) {
- $code[$k] = $this->dumpValue($v);
+ $code[$this->container->resolveEnvPlaceholders($k)] = $this->dumpValue($v);
}
return $code;
@@ -319,7 +319,7 @@ private function dumpValue(mixed $value): mixed
throw new RuntimeException(\sprintf('Unable to dump a service container if a parameter is an object or a resource, got "%s".', get_debug_type($value)));
}
- return $value;
+ return $this->container->resolveEnvPlaceholders($value);
}
private function getServiceCall(string $id, ?Reference $reference = null): string
@@ -359,7 +359,7 @@ private function prepareParameters(array $parameters, bool $escape = true): arra
$filtered[$key] = $value;
}
- return $escape ? $this->escape($filtered) : $filtered;
+ return $escape ? $this->container->resolveEnvPlaceholders($this->escape($filtered)) : $filtered;
}
private function escape(array $arguments): array
diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php
index c0e4e03ae3934..957dd5c564e9e 100644
--- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php
+++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php
@@ -380,5 +380,9 @@ public function reset(): void
{
$this->loadedVars = [];
$this->loaders = $this->originalLoaders;
+
+ if ($this->container instanceof Container) {
+ $this->container->resetEnvCache();
+ }
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckCircularReferencesPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckCircularReferencesPassTest.php
index c9bcb10878bec..20a0a7b5a8d5a 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckCircularReferencesPassTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/CheckCircularReferencesPassTest.php
@@ -13,9 +13,12 @@
use PHPUnit\Framework\TestCase;
use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
+use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
+use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
use Symfony\Component\DependencyInjection\Compiler\AnalyzeServiceReferencesPass;
use Symfony\Component\DependencyInjection\Compiler\CheckCircularReferencesPass;
use Symfony\Component\DependencyInjection\Compiler\Compiler;
+use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
use Symfony\Component\DependencyInjection\Reference;
@@ -126,6 +129,21 @@ public function testProcessIgnoresLazyServices()
$this->addToAssertionCount(1);
}
+ public function testProcessDefersLazyServices()
+ {
+ $container = new ContainerBuilder();
+
+ $container->register('a')->addArgument(new ServiceLocatorArgument(new TaggedIteratorArgument('tag', needsIndexes: true)));
+ $container->register('b')->addArgument(new Reference('c'))->addTag('tag');
+ $container->register('c')->addArgument(new Reference('b'));
+
+ (new ServiceLocatorTagPass())->process($container);
+
+ $this->expectException(ServiceCircularReferenceException::class);
+
+ $this->process($container);
+ }
+
public function testProcessIgnoresIteratorArguments()
{
$container = new ContainerBuilder();
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/DefinitionErrorExceptionPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/DefinitionErrorExceptionPassTest.php
index 9ab5c27fcf763..5ed7be315114a 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/DefinitionErrorExceptionPassTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/DefinitionErrorExceptionPassTest.php
@@ -64,6 +64,9 @@ public function testSkipNestedErrors()
$container->register('foo', 'stdClass')
->addArgument(new Reference('bar', ContainerBuilder::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE));
+ $container->register('baz', 'stdClass')
+ ->addArgument(new Reference('bar', ContainerBuilder::IGNORE_ON_UNINITIALIZED_REFERENCE));
+
$pass = new DefinitionErrorExceptionPass();
$pass->process($container);
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveAutowireInlineAttributesPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveAutowireInlineAttributesPassTest.php
index 58cb1cd38bb6f..a0d1ec50f415a 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveAutowireInlineAttributesPassTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveAutowireInlineAttributesPassTest.php
@@ -18,7 +18,6 @@
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
use Symfony\Component\DependencyInjection\Compiler\ResolveNamedArgumentsPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Reference;
require_once __DIR__.'/../Fixtures/includes/autowiring_classes.php';
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ServiceLocatorTagPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ServiceLocatorTagPassTest.php
index 812b47c7a6f1f..9a93067756d50 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ServiceLocatorTagPassTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ServiceLocatorTagPassTest.php
@@ -86,6 +86,26 @@ public function testProcessValue()
$this->assertSame(CustomDefinition::class, \get_class($locator('inlines.service')));
}
+ public function testServiceListIsOrdered()
+ {
+ $container = new ContainerBuilder();
+
+ $container->register('bar', CustomDefinition::class);
+ $container->register('baz', CustomDefinition::class);
+
+ $container->register('foo', ServiceLocator::class)
+ ->setArguments([[
+ new Reference('baz'),
+ new Reference('bar'),
+ ]])
+ ->addTag('container.service_locator')
+ ;
+
+ (new ServiceLocatorTagPass())->process($container);
+
+ $this->assertSame(['bar', 'baz'], array_keys($container->getDefinition('foo')->getArgument(0)));
+ }
+
public function testServiceWithKeyOverwritesPreviousInheritedKey()
{
$container = new ContainerBuilder();
@@ -170,6 +190,27 @@ public function testTaggedServices()
$this->assertSame(TestDefinition2::class, $locator('baz')::class);
}
+ public function testTaggedServicesKeysAreKept()
+ {
+ $container = new ContainerBuilder();
+
+ $container->register('bar', TestDefinition1::class)->addTag('test_tag', ['index' => 0]);
+ $container->register('baz', TestDefinition2::class)->addTag('test_tag', ['index' => 1]);
+
+ $container->register('foo', ServiceLocator::class)
+ ->setArguments([new TaggedIteratorArgument('test_tag', 'index', null, true)])
+ ->addTag('container.service_locator')
+ ;
+
+ (new ServiceLocatorTagPass())->process($container);
+
+ /** @var ServiceLocator $locator */
+ $locator = $container->get('foo');
+
+ $this->assertSame(TestDefinition1::class, $locator(0)::class);
+ $this->assertSame(TestDefinition2::class, $locator(1)::class);
+ }
+
public function testIndexedByServiceIdWithDecoration()
{
$container = new ContainerBuilder();
@@ -201,15 +242,33 @@ public function testIndexedByServiceIdWithDecoration()
static::assertInstanceOf(DecoratedService::class, $locator->get(Service::class));
}
- public function testDefinitionOrderIsTheSame()
+ public function testServicesKeysAreKept()
{
$container = new ContainerBuilder();
$container->register('service-1');
$container->register('service-2');
+ $container->register('service-3');
$locator = ServiceLocatorTagPass::register($container, [
- new Reference('service-2'),
new Reference('service-1'),
+ 'service-2' => new Reference('service-2'),
+ 'foo' => new Reference('service-3'),
+ ]);
+ $locator = $container->getDefinition($locator);
+ $factories = $locator->getArguments()[0];
+
+ static::assertSame([0, 'service-2', 'foo'], array_keys($factories));
+ }
+
+ public function testDefinitionOrderIsTheSame()
+ {
+ $container = new ContainerBuilder();
+ $container->register('service-1');
+ $container->register('service-2');
+
+ $locator = ServiceLocatorTagPass::register($container, [
+ 'service-2' => new Reference('service-2'),
+ 'service-1' => new Reference('service-1'),
]);
$locator = $container->getDefinition($locator);
$factories = $locator->getArguments()[0];
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ValidateEnvPlaceholdersPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ValidateEnvPlaceholdersPassTest.php
index 8c5c4cc32323e..17ef87c3fffad 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/ValidateEnvPlaceholdersPassTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/ValidateEnvPlaceholdersPassTest.php
@@ -73,6 +73,36 @@ public function testDefaultEnvWithoutPrefixIsValidatedInConfig()
$this->doProcess($container);
}
+ public function testDefaultProcessorWithScalarNode()
+ {
+ $container = new ContainerBuilder();
+ $container->setParameter('parameter_int', 12134);
+ $container->setParameter('env(FLOATISH)', 4.2);
+ $container->registerExtension($ext = new EnvExtension());
+ $container->prependExtensionConfig('env_extension', $expected = [
+ 'scalar_node' => '%env(default:parameter_int:FLOATISH)%',
+ ]);
+
+ $this->doProcess($container);
+ $this->assertSame($expected, $container->resolveEnvPlaceholders($ext->getConfig()));
+ }
+
+ public function testDefaultProcessorAndAnotherProcessorWithScalarNode()
+ {
+ $this->expectException(InvalidTypeException::class);
+ $this->expectExceptionMessageMatches('/^Invalid type for path "env_extension\.scalar_node"\. Expected one of "bool", "int", "float", "string", but got one of "int", "array"\.$/');
+
+ $container = new ContainerBuilder();
+ $container->setParameter('parameter_int', 12134);
+ $container->setParameter('env(JSON)', '{ "foo": "bar" }');
+ $container->registerExtension($ext = new EnvExtension());
+ $container->prependExtensionConfig('env_extension', [
+ 'scalar_node' => '%env(default:parameter_int:json:JSON)%',
+ ]);
+
+ $this->doProcess($container);
+ }
+
public function testEnvsAreValidatedInConfigWithInvalidPlaceholder()
{
$this->expectException(InvalidTypeException::class);
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php
index 5523c147e049b..95abb70878467 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php
@@ -56,6 +56,8 @@
use Symfony\Component\DependencyInjection\Tests\Compiler\SingleMethodInterface;
use Symfony\Component\DependencyInjection\Tests\Compiler\Wither;
use Symfony\Component\DependencyInjection\Tests\Fixtures\CustomDefinition;
+use Symfony\Component\DependencyInjection\Tests\Fixtures\DependencyContainer;
+use Symfony\Component\DependencyInjection\Tests\Fixtures\DependencyContainerInterface;
use Symfony\Component\DependencyInjection\Tests\Fixtures\FooClassWithEnumAttribute;
use Symfony\Component\DependencyInjection\Tests\Fixtures\FooUnitEnum;
use Symfony\Component\DependencyInjection\Tests\Fixtures\FooWithAbstractArgument;
@@ -1668,6 +1670,59 @@ public function testWitherWithStaticReturnType()
$this->assertInstanceOf(Foo::class, $wither->foo);
}
+ public function testCloningLazyGhostWithDependency()
+ {
+ $container = new ContainerBuilder();
+ $container->register('dependency', \stdClass::class);
+ $container->register(DependencyContainer::class)
+ ->addArgument(new Reference('dependency'))
+ ->setLazy(true)
+ ->setPublic(true);
+
+ $container->compile();
+ $dumper = new PhpDumper($container);
+ $dump = $dumper->dump(['class' => 'Symfony_DI_PhpDumper_Service_CloningLazyGhostWithDependency']);
+ eval('?>'.$dump);
+
+ $container = new \Symfony_DI_PhpDumper_Service_CloningLazyGhostWithDependency();
+
+ $bar = $container->get(DependencyContainer::class);
+ $this->assertInstanceOf(DependencyContainer::class, $bar);
+
+ $first_clone = clone $bar;
+ $second_clone = clone $bar;
+
+ $this->assertSame($first_clone->dependency, $second_clone->dependency);
+ }
+
+ public function testCloningProxyWithDependency()
+ {
+ $container = new ContainerBuilder();
+ $container->register('dependency', \stdClass::class);
+ $container->register(DependencyContainer::class)
+ ->addArgument(new Reference('dependency'))
+ ->setLazy(true)
+ ->addTag('proxy', [
+ 'interface' => DependencyContainerInterface::class,
+ ])
+ ->setPublic(true);
+
+ $container->compile();
+ $dumper = new PhpDumper($container);
+ $dump = $dumper->dump(['class' => 'Symfony_DI_PhpDumper_Service_CloningProxyWithDependency']);
+ eval('?>'.$dump);
+
+ $container = new \Symfony_DI_PhpDumper_Service_CloningProxyWithDependency();
+
+ $bar = $container->get(DependencyContainer::class);
+ $this->assertInstanceOf(DependencyContainerInterface::class, $bar);
+
+ $first_clone = clone $bar;
+ $second_clone = clone $bar;
+
+ $this->assertSame($first_clone->getDependency(), $second_clone->getDependency());
+ }
+
public function testCurrentFactoryInlining()
{
$container = new ContainerBuilder();
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php
index f9ff3fff786a3..3a21d7aa9a9c5 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/YamlDumperTest.php
@@ -215,6 +215,26 @@ public function testDumpNonScalarTags()
$this->assertEquals(file_get_contents(self::$fixturesPath.'/yaml/services_with_array_tags.yml'), $dumper->dump());
}
+ public function testDumpResolvedEnvPlaceholders()
+ {
+ $container = new ContainerBuilder();
+ $container->setParameter('%env(PARAMETER_NAME)%', '%env(PARAMETER_VALUE)%');
+ $container
+ ->register('service', '%env(SERVICE_CLASS)%')
+ ->setFile('%env(SERVICE_FILE)%')
+ ->addArgument('%env(SERVICE_ARGUMENT)%')
+ ->setProperty('%env(SERVICE_PROPERTY_NAME)%', '%env(SERVICE_PROPERTY_VALUE)%')
+ ->addMethodCall('%env(SERVICE_METHOD_NAME)%', ['%env(SERVICE_METHOD_ARGUMENT)%'])
+ ->setFactory('%env(SERVICE_FACTORY)%')
+ ->setConfigurator('%env(SERVICE_CONFIGURATOR)%')
+ ->setPublic(true)
+ ;
+ $container->compile();
+ $dumper = new YamlDumper($container);
+
+ $this->assertEquals(file_get_contents(self::$fixturesPath.'/yaml/container_with_env_placeholders.yml'), $dumper->dump());
+ }
+
private function assertEqualYamlStructure(string $expected, string $yaml, string $message = '')
{
$parser = new Parser();
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/DependencyContainer.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/DependencyContainer.php
new file mode 100644
index 0000000000000..5e222bdf060be
--- /dev/null
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/DependencyContainer.php
@@ -0,0 +1,25 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\DependencyInjection\Tests\Fixtures;
+
+class DependencyContainer implements DependencyContainerInterface
+{
+ public function __construct(
+ public mixed $dependency,
+ ) {
+ }
+
+ public function getDependency(): mixed
+ {
+ return $this->dependency;
+ }
+}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/DependencyContainerInterface.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/DependencyContainerInterface.php
new file mode 100644
index 0000000000000..ed109cad78dcd
--- /dev/null
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/DependencyContainerInterface.php
@@ -0,0 +1,17 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\DependencyInjection\Tests\Fixtures;
+
+interface DependencyContainerInterface
+{
+ public function getDependency(): mixed;
+}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/child.expected.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/child.expected.yml
index 44dbbd571b788..97380f388ca2a 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/child.expected.yml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/child.expected.yml
@@ -11,7 +11,9 @@ services:
- container.decorator: { id: bar, inner: b }
file: file.php
lazy: true
- arguments: [!service { class: Class1 }]
+ arguments: ['@b']
+ b:
+ class: Class1
bar:
alias: foo
public: true
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/from_callable.expected.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/from_callable.expected.yml
index d4dbbbadd48bf..1ab1643af1b48 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/from_callable.expected.yml
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/from_callable.expected.yml
@@ -8,5 +8,7 @@ services:
class: stdClass
public: true
lazy: true
- arguments: [[!service { class: stdClass }, do]]
+ arguments: [['@bar', do]]
factory: [Closure, fromCallable]
+ bar:
+ class: stdClass
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/callable_adapter_consumer.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/callable_adapter_consumer.php
index ccd8d2e0bf63b..216dca434e489 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/callable_adapter_consumer.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/callable_adapter_consumer.php
@@ -50,6 +50,6 @@ public function getRemovedIds(): array
*/
protected static function getBarService($container)
{
- return $container->services['bar'] = new \Symfony\Component\DependencyInjection\Tests\Dumper\CallableAdapterConsumer(new class(fn () => new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo()) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\DependencyInjection\Tests\Compiler\SingleMethodInterface { public function theMethod() { return $this->service->cloneFoo(...\func_get_args()); } });
+ return $container->services['bar'] = new \Symfony\Component\DependencyInjection\Tests\Dumper\CallableAdapterConsumer(new class(fn () => (new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo())) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\DependencyInjection\Tests\Compiler\SingleMethodInterface { public function theMethod() { return $this->service->cloneFoo(...\func_get_args()); } });
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/closure_proxy.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/closure_proxy.php
index 2bef92604d3a9..eaf303c7d068c 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/closure_proxy.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/closure_proxy.php
@@ -55,6 +55,6 @@ protected function createProxy($class, \Closure $factory)
*/
protected static function getClosureProxyService($container, $lazyLoad = true)
{
- return $container->services['closure_proxy'] = new class(fn () => new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo()) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\DependencyInjection\Tests\Compiler\SingleMethodInterface { public function theMethod() { return $this->service->cloneFoo(...\func_get_args()); } };
+ return $container->services['closure_proxy'] = new class(fn () => ($container->privates['foo'] ??= new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo())) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\DependencyInjection\Tests\Compiler\SingleMethodInterface { public function theMethod() { return $this->service->cloneFoo(...\func_get_args()); } };
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/lazy_closure.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/lazy_closure.php
index 0af28f2650147..2bf27779df041 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/lazy_closure.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/lazy_closure.php
@@ -57,7 +57,7 @@ protected function createProxy($class, \Closure $factory)
*/
protected static function getClosure1Service($container, $lazyLoad = true)
{
- return $container->services['closure1'] = (new class(fn () => new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo()) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure { public function cloneFoo(?\stdClass $bar = null): \Symfony\Component\DependencyInjection\Tests\Compiler\Foo { return $this->service->cloneFoo(...\func_get_args()); } })->cloneFoo(...);
+ return $container->services['closure1'] = (new class(fn () => ($container->privates['foo'] ??= new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo())) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure { public function cloneFoo(?\stdClass $bar = null): \Symfony\Component\DependencyInjection\Tests\Compiler\Foo { return $this->service->cloneFoo(...\func_get_args()); } })->cloneFoo(...);
}
/**
@@ -67,6 +67,6 @@ protected static function getClosure1Service($container, $lazyLoad = true)
*/
protected static function getClosure2Service($container, $lazyLoad = true)
{
- return $container->services['closure2'] = (new class(fn () => new \Symfony\Component\DependencyInjection\Tests\Compiler\FooVoid()) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure { public function __invoke(string $name): void { $this->service->__invoke(...\func_get_args()); } })->__invoke(...);
+ return $container->services['closure2'] = (new class(fn () => ($container->privates['foo_void'] ??= new \Symfony\Component\DependencyInjection\Tests\Compiler\FooVoid())) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure { public function __invoke(string $name): void { $this->service->__invoke(...\func_get_args()); } })->__invoke(...);
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_private.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_private.php
index 0a9c519c8e69c..0c234ac3934c3 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_private.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_private.php
@@ -373,15 +373,13 @@ protected static function getManager2Service($container)
*/
protected static function getManager3Service($container, $lazyLoad = true)
{
- $a = ($container->services['listener3'] ?? self::getListener3Service($container));
+ $a = ($container->privates['connection3'] ?? self::getConnection3Service($container));
if (isset($container->services['manager3'])) {
return $container->services['manager3'];
}
- $b = new \stdClass();
- $b->listener = [$a];
- return $container->services['manager3'] = new \stdClass($b);
+ return $container->services['manager3'] = new \stdClass($a);
}
/**
@@ -481,6 +479,34 @@ protected static function getBar6Service($container)
return $container->privates['bar6'] = new \stdClass($a);
}
+ /**
+ * Gets the private 'connection3' shared service.
+ *
+ * @return \stdClass
+ */
+ protected static function getConnection3Service($container)
+ {
+ $container->privates['connection3'] = $instance = new \stdClass();
+
+ $instance->listener = [($container->services['listener3'] ?? self::getListener3Service($container))];
+
+ return $instance;
+ }
+
+ /**
+ * Gets the private 'connection4' shared service.
+ *
+ * @return \stdClass
+ */
+ protected static function getConnection4Service($container)
+ {
+ $container->privates['connection4'] = $instance = new \stdClass();
+
+ $instance->listener = [($container->services['listener4'] ?? self::getListener4Service($container))];
+
+ return $instance;
+ }
+
/**
* Gets the private 'doctrine.listener' shared service.
*
@@ -572,13 +598,13 @@ protected static function getMailerInline_TransportFactory_AmazonService($contai
*/
protected static function getManager4Service($container, $lazyLoad = true)
{
- $a = new \stdClass();
+ $a = ($container->privates['connection4'] ?? self::getConnection4Service($container));
-
8000
$container->privates['manager4'] = $instance = new \stdClass($a);
-
- $a->listener = [($container->services['listener4'] ?? self::getListener4Service($container))];
+ if (isset($container->privates['manager4'])) {
+ return $container->privates['manager4'];
+ }
- return $instance;
+ return $container->privates['manager4'] = new \stdClass($a);
}
/**
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_public.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_public.php
index 2250e860264dc..ae283e556a0da 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_public.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_almost_circular_public.php
@@ -259,7 +259,7 @@ protected static function getDispatcher2Service($container, $lazyLoad = true)
{
$container->services['dispatcher2'] = $instance = new \stdClass();
- $instance->subscriber2 = new \stdClass(($container->services['manager2'] ?? self::getManager2Service($container)));
+ $instance->subscriber2 = ($container->privates['subscriber2'] ?? self::getSubscriber2Service($container));
return $instance;
}
@@ -820,4 +820,20 @@ protected static function getManager4Service($container, $lazyLoad = true)
return $container->privates['manager4'] = new \stdClass($a);
}
+
+ /**
+ * Gets the private 'subscriber2' shared service.
+ *
+ * @return \stdClass
+ */
+ protected static function getSubscriber2Service($container)
+ {
+ $a = ($container->services['manager2'] ?? self::getManager2Service($container));
+
+ if (isset($container->privates['subscriber2'])) {
+ return $container->privates['subscriber2'];
+ }
+
+ return $container->privates['subscriber2'] = new \stdClass($a);
+ }
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy.php
index b2940c88569f4..b9e9164573672 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy.php
@@ -61,7 +61,7 @@ protected static function getWitherService($container, $lazyLoad = true)
$instance = new \Symfony\Component\DependencyInjection\Tests\Compiler\Wither();
- $a = new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo();
+ $a = ($container->privates['Symfony\\Component\\DependencyInjection\\Tests\\Compiler\\Foo'] ??= new \Symfony\Component\DependencyInjection\Tests\Compiler\Foo());
$instance = $instance->withFoo1($a);
$instance = $instance->withFoo2($a);
@@ -76,7 +76,7 @@ class WitherProxy1991f2a extends \Symfony\Component\DependencyInjection\Tests\Co
use \Symfony\Component\VarExporter\LazyProxyTrait;
private const LAZY_OBJECT_PROPERTY_SCOPES = [
- 'foo' => [parent::class, 'foo', null],
+ 'foo' => [parent::class, 'foo', null, 4],
];
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy_non_shared.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy_non_shared.php
index 0df7e0c98e274..d70588f655329 100644
--- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy_non_shared.php
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_wither_lazy_non_shared.php
@@ -78,7 +78,7 @@ class WitherProxyE94fdba extends \Symfony\Component\DependencyInjection\Tests\Co
use \Symfony\Component\VarExporter\LazyProxyTrait;
private const LAZY_OBJECT_PROPERTY_SCOPES = [
- 'foo' => [parent::class, 'foo', null],
+ 'foo' => [parent::class, 'foo', null, 4],
];
}
diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/container_with_env_placeholders.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/container_with_env_placeholders.yml
new file mode 100644
index 0000000000000..46c91130faecd
--- /dev/null
+++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/container_with_env_placeholders.yml
@@ -0,0 +1,19 @@
+parameters:
+ '%env(PARAMETER_NAME)%': '%env(PARAMETER_VALUE)%'
+
+services:
+ service_container:
+ class: Symfony\Component\DependencyInjection\ContainerInterface
+ public: true
+ synthetic: true
+ service:
+ class: '%env(SERVICE_CLASS)%'
+ public: true
+ file: '%env(SERVICE_FILE)%'
+ arguments: ['%env(SERVICE_ARGUMENT)%']
+ properties: { '%env(SERVICE_PROPERTY_NAME)%': '%env(SERVICE_PROPERTY_VALUE)%' }
+ calls:
+ - ['%env(SERVICE_METHOD_NAME)%', ['%env(SERVICE_METHOD_ARGUMENT)%']]
+
+ factory: '%env(SERVICE_FACTORY)%'
+ configurator: '%env(SERVICE_CONFIGURATOR)%'
diff --git a/src/Symfony/Component/DependencyInjection/composer.json b/src/Symfony/Component/DependencyInjection/composer.json
index b5fda9bdeb990..460751088f451 100644
--- a/src/Symfony/Component/DependencyInjection/composer.json
+++ b/src/Symfony/Component/DependencyInjection/composer.json
@@ -20,7 +20,7 @@
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^3.5",
- "symfony/var-exporter": "^6.4|^7.0"
+ "symfony/var-exporter": "^6.4.20|^7.2.5"
},
"require-dev": {
"symfony/yaml": "^6.4|^7.0",
diff --git a/src/Symfony/Component/DomCrawler/Crawler.php b/src/Symfony/Component/DomCrawler/Crawler.php
index 23da2edc43867..e41875e268203 100644
--- a/src/Symfony/Component/DomCrawler/Crawler.php
+++ b/src/Symfony/Component/DomCrawler/Crawler.php
@@ -411,7 +411,7 @@ public function closest(string $selector): ?self
$domNode = $this->getNode(0);
- while (\XML_ELEMENT_NODE === $domNode->nodeType) {
+ while (null !== $domNode && \XML_ELEMENT_NODE === $domNode->nodeType) {
$node = $this->createSubCrawler($domNode);
if ($node->matches($selector)) {
return $node;
diff --git a/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php b/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php
index a486ff2d12a2c..25fba30d9e15a 100644
--- a/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php
+++ b/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php
@@ -45,6 +45,10 @@ public function hasValue(): bool
*/
public function isDisabled(): bool
{
+ if ('checkbox' === $this->type) {
+ return parent::isDisabled();
+ }
+
if (parent::isDisabled() && 'select' === $this->type) {
return true;
}
diff --git a/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php b/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php
index 97b16b9fe6073..5cdbbbf45870d 100644
--- a/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php
+++ b/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php
@@ -1031,6 +1031,29 @@ public function testClosest()
$this->assertNull($notFound);
}
+ public function testClosestWithOrphanedNode()
+ {
+ $html = <<<'HTML'
+
+
+
+
+
+HTML;
+
+ $crawler = $this->createCrawler($this->getDoctype().$html);
+ $foo = $crawler->filter('#foo');
+
+ $fooNode = $foo->getNode(0);
+
+ $fooNode->parentNode->replaceChild($fooNode->ownerDocument->createElement('ol'), $fooNode);
+
+ $body = $foo->closest('body');
+ $this->assertNull($body);
+ }
+
public function testOuterHtml()
{
$html = <<<'HTML'
diff --git a/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php b/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php
index 176ea5927fe1c..5de407344d2f8 100644
--- a/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php
+++ b/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php
@@ -272,6 +272,17 @@ public function testCheckboxWithEmptyBooleanAttribute()
$this->assertEquals('foo', $field->getValue());
}
+ public function testCheckboxIsDisabled()
+ {
+ $node = $this->createNode('input', '', ['type' => 'checkbox', 'name' => 'name', 'disabled' => '']);
+ $field = new ChoiceFormField($node);
+
+ $this->assertTrue($field->isDisabled(), '->isDisabled() returns true when the checkbox is disabled, even if it is not checked');
+
+ $field->tick();
+ $this->assertTrue($field->isDisabled(), '->isDisabled() returns true when the checkbox is disabled, even if it is checked');
+ }
+
public function testTick()
{
$node = $this->createSelectNode(['foo' => false, 'bar' => false]);
diff --git a/src/Symfony/Component/Dotenv/Command/DebugCommand.php b/src/Symfony/Component/Dotenv/Command/DebugCommand.php
index 268330dcf4b0b..5729b94cbd8d8 100644
--- a/src/Symfony/Component/Dotenv/Command/DebugCommand.php
+++ b/src/Symfony/Component/Dotenv/Command/DebugCommand.php
@@ -77,7 +77,19 @@ protected function execute(InputInterface $input, OutputInterface $output): int
return 1;
}
- $filePath = $_SERVER['SYMFONY_DOTENV_PATH'] ?? $this->projectDirectory.\DIRECTORY_SEPARATOR.'.env';
+ if (!$filePath = $_SERVER['SYMFONY_DOTENV_PATH'] ?? null) {
+ $dotenvPath = $this->projectDirectory;
+
+ if (is_file($composerFile = $this->projectDirectory.'/composer.json')) {
+ $runtimeConfig = (json_decode(file_get_contents($composerFile), true))['extra']['runtime'] ?? [];
+
+ if (isset($runtimeConfig['dotenv_path'])) {
+ $dotenvPath = $this->projectDirectory.'/'.$runtimeConfig['dotenv_path'];
+ }
+ }
+
+ $filePath = $dotenvPath.'/.env';
+ }
$envFiles = $this->getEnvFiles($filePath);
$availableFiles = array_filter($envFiles, 'is_file');
diff --git a/src/Symfony/Component/Emoji/EmojiTransliterator.php b/src/Symfony/Component/Emoji/EmojiTransliterator.php
index 03fe1bd61a7d6..67dfe3fb3f56c 100644
--- a/src/Symfony/Component/Emoji/EmojiTransliterator.php
+++ b/src/Symfony/Component/Emoji/EmojiTransliterator.php
@@ -83,14 +83,22 @@ public function createInverse(): self
return self::create($this->id, \Transliterator::REVERSE);
}
+ /**
+ * @return int
+ */
+ #[\ReturnTypeWillChange]
public function getErrorCode(): int|false
{
return isset($this->transliterator) ? $this->transliterator->getErrorCode() : 0;
}
+ /**
+ * @return string
+ */
+ #[\ReturnTypeWillChange]
public function getErrorMessage(): string|false
{
- return isset($this->transliterator) ? $this->transliterator->getErrorMessage() : false;
+ return isset($this->transliterator) ? $this->transliterator->getErrorMessage() : '';
}
public static function listIDs(): array
diff --git a/src/Symfony/Component/Emoji/Resources/bin/Makefile b/src/Symfony/Component/Emoji/Resources/bin/Makefile
index 5ae726c112574..49e9e76e9a414 100644
--- a/src/Symfony/Component/Emoji/Resources/bin/Makefile
+++ b/src/Symfony/Component/Emoji/Resources/bin/Makefile
@@ -4,7 +4,7 @@
update: ## Update sources
@composer update
@curl https://api.github.com/emojis > vendor/github-emojis.json
- @curl https://gitlab.com/gitlab-org/gitlab/-/raw/master/fixtures/emojis/index.json > vendor/gitlab-emojis.json
+ @curl https://gitlab.com/gitlab-org/gitlab/-/raw/master/fixtures/emojis/digests.json > vendor/gitlab-emojis.json
@curl https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json > vendor/slack-emojis.json
@curl -L https://unicode.org/Public/emoji/latest/emoji-test.txt > vendor/emoji-test.txt
diff --git a/src/Symfony/Component/Emoji/Resources/bin/build.php b/src/Symfony/Component/Emoji/Resources/bin/build.php
index 93d8f97f7b87c..0b1475bb32923 100755
--- a/src/Symfony/Component/Emoji/Resources/bin/build.php
+++ b/src/Symfony/Component/Emoji/Resources/bin/build.php
@@ -149,14 +149,10 @@ public static function buildGitlabMaps(array $emojisCodePoints): array
$emojis = json_decode((new Filesystem())->readFile(__DIR__.'/vendor/gitlab-emojis.json'), true, flags: JSON_THROW_ON_ERROR);
$maps = [];
- foreach ($emojis as $emojiItem) {
+ foreach ($emojis as $shortName => $emojiItem) {
$emoji = $emojiItem['moji'];
$emojiPriority = mb_strlen($emoji) << 1;
- $maps[$emojiPriority + 1][$emojiItem['shortname']] = $emoji;
-
- foreach ($emojiItem['aliases'] as $alias) {
- $maps[$emojiPriority][$alias] = $emoji;
- }
+ $maps[$emojiPriority + 1][":$shortName:"] = $emoji;
}
return $maps;
diff --git a/src/Symfony/Component/Emoji/Resources/data/emoji-gitlab.php b/src/Symfony/Component/Emoji/Resources/data/emoji-gitlab.php
index da33e8ecd964b..c303e4fa4cd51 100644
--- a/src/Symfony/Component/Emoji/Resources/data/emoji-gitlab.php
+++ b/src/Symfony/Component/Emoji/Resources/data/emoji-gitlab.php
@@ -1,8 +1,230 @@
':kiss_man_man_dark_skin_tone:',
+ '👨🏿❤️💋👨🏻' => ':kiss_man_man_dark_skin_tone_light_skin_tone:',
+ '👨🏿❤️💋👨🏾' => ':kiss_man_man_dark_skin_tone_medium_dark_skin_tone:',
+ '👨🏿❤️💋👨🏼' => ':kiss_man_man_dark_skin_tone_medium_light_skin_tone:',
+ '👨🏿❤️💋👨🏽' => ':kiss_man_man_dark_skin_tone_medium_skin_tone:',
+ '👨🏻❤️💋👨🏻' => ':kiss_man_man_light_skin_tone:',
+ '👨🏻❤️💋👨🏿' => ':kiss_man_man_light_skin_tone_dark_skin_tone:',
+ '👨🏻❤️💋👨🏾' => ':kiss_man_man_light_skin_tone_medium_dark_skin_tone:',
+ '👨🏻❤️💋👨🏼' => ':kiss_man_man_light_skin_tone_medium_light_skin_tone:',
+ '👨🏻❤️💋👨🏽' => ':kiss_man_man_light_skin_tone_medium_skin_tone:',
+ '👨🏾❤️💋👨🏾' => ':kiss_man_man_medium_dark_skin_tone:',
+ '👨🏾❤️💋👨🏿' => ':kiss_man_man_medium_dark_skin_tone_dark_skin_tone:',
+ '👨🏾❤️💋👨🏻' => ':kiss_man_man_medium_dark_skin_tone_light_skin_tone:',
+ '👨🏾❤️💋👨🏼' => ':kiss_man_man_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👨🏾❤️💋👨🏽' => ':kiss_man_man_medium_dark_skin_tone_medium_skin_tone:',
+ '👨🏼❤️💋👨🏼' => ':kiss_man_man_medium_light_skin_tone:',
+ '👨🏼❤️💋👨🏿' => ':kiss_man_man_medium_light_skin_tone_dark_skin_tone:',
+ '👨🏼❤️💋👨🏻' => ':kiss_man_man_medium_light_skin_tone_light_skin_tone:',
+ '👨🏼❤️💋👨🏾' => ':kiss_man_man_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👨🏼❤️💋👨🏽' => ':kiss_man_man_medium_light_skin_tone_medium_skin_tone:',
+ '👨🏽❤️💋👨🏽' => ':kiss_man_man_medium_skin_tone:',
+ '👨🏽❤️💋👨🏿' => ':kiss_man_man_medium_skin_tone_dark_skin_tone:',
+ '👨🏽❤️💋👨🏻' => ':kiss_man_man_medium_skin_tone_light_skin_tone:',
+ '👨🏽❤️💋👨🏾' => ':kiss_man_man_medium_skin_tone_medium_dark_skin_tone:',
+ '👨🏽❤️💋👨🏼' => ':kiss_man_man_medium_skin_tone_medium_light_skin_tone:',
+ '🧑🏿❤️💋🧑🏻' => ':kiss_person_person_dark_skin_tone_light_skin_tone:',
+ '🧑🏿❤️💋🧑🏾' => ':kiss_person_person_dark_skin_tone_medium_dark_skin_tone:',
+ '🧑🏿❤️💋🧑🏼' => ':kiss_person_person_dark_skin_tone_medium_light_skin_tone:',
+ '🧑🏿❤️💋🧑🏽' => ':kiss_person_person_dark_skin_tone_medium_skin_tone:',
+ '🧑🏻❤️💋🧑🏿' => ':kiss_person_person_light_skin_tone_dark_skin_tone:',
+ '🧑🏻❤️💋🧑🏾' => ':kiss_person_person_light_skin_tone_medium_dark_skin_tone:',
+ '🧑🏻❤️💋🧑🏼' => ':kiss_person_person_light_skin_tone_medium_light_skin_tone:',
+ '🧑🏻❤️💋🧑🏽' => ':kiss_person_person_light_skin_tone_medium_skin_tone:',
+ '🧑🏾❤️💋🧑🏿' => ':kiss_person_person_medium_dark_skin_tone_dark_skin_tone:',
+ '🧑🏾❤️💋🧑🏻' => ':kiss_person_person_medium_dark_skin_tone_light_skin_tone:',
+ '🧑🏾❤️💋🧑🏼' => ':kiss_person_person_medium_dark_skin_tone_medium_light_skin_tone:',
+ '🧑🏾❤️💋🧑🏽' => ':kiss_person_person_medium_dark_skin_tone_medium_skin_tone:',
+ '🧑🏼❤️💋🧑🏿' => ':kiss_person_person_medium_light_skin_tone_dark_skin_tone:',
+ '🧑🏼❤️💋🧑🏻' => ':kiss_person_person_medium_light_skin_tone_light_skin_tone:',
+ '🧑🏼❤️💋🧑🏾' => ':kiss_person_person_medium_light_skin_tone_medium_dark_skin_tone:',
+ '🧑🏼❤️💋🧑🏽' => ':kiss_person_person_medium_light_skin_tone_medium_skin_tone:',
+ '🧑🏽❤️💋🧑🏿' => ':kiss_person_person_medium_skin_tone_dark_skin_tone:',
+ '🧑🏽❤️💋🧑🏻' => ':kiss_person_person_medium_skin_tone_light_skin_tone:',
+ '🧑🏽❤️💋🧑🏾' => ':kiss_person_person_medium_skin_tone_medium_dark_skin_tone:',
+ '🧑🏽❤️💋🧑🏼' => ':kiss_person_person_medium_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️💋👨🏿' => ':kiss_woman_man_dark_skin_tone:',
+ '👩🏿❤️💋👨🏻' => ':kiss_woman_man_dark_skin_tone_light_skin_tone:',
+ '👩🏿❤️💋👨🏾' => ':kiss_woman_man_dark_skin_tone_medium_dark_skin_tone:',
+ '👩🏿❤️💋👨🏼' => ':kiss_woman_man_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️💋👨🏽' => ':kiss_woman_man_dark_skin_tone_medium_skin_tone:',
+ '👩🏻❤️💋👨🏻' => ':kiss_woman_man_light_skin_tone:',
+ '👩🏻❤️💋👨🏿' => ':kiss_woman_man_light_skin_tone_dark_skin_tone:',
+ '👩🏻❤️💋👨🏾' => ':kiss_woman_man_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏻❤️💋👨🏼' => ':kiss_woman_man_light_skin_tone_medium_light_skin_tone:',
+ '👩🏻❤️💋👨🏽' => ':kiss_woman_man_light_skin_tone_medium_skin_tone:',
+ '👩🏾❤️💋👨🏾' => ':kiss_woman_man_medium_dark_skin_tone:',
+ '👩🏾❤️💋👨🏿' => ':kiss_woman_man_medium_dark_skin_tone_dark_skin_tone:',
+ '👩🏾❤️💋👨🏻' => ':kiss_woman_man_medium_dark_skin_tone_light_skin_tone:',
+ '👩🏾❤️💋👨🏼' => ':kiss_woman_man_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏾❤️💋👨🏽' => ':kiss_woman_man_medium_dark_skin_tone_medium_skin_tone:',
+ '👩🏼❤️💋👨🏼' => ':kiss_woman_man_medium_light_skin_tone:',
+ '👩🏼❤️💋👨🏿' => ':kiss_woman_man_medium_light_skin_tone_dark_skin_tone:',
+ '👩🏼❤️💋👨🏻' => ':kiss_woman_man_medium_light_skin_tone_light_skin_tone:',
+ '👩🏼❤️💋👨🏾' => ':kiss_woman_man_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏼❤️💋👨🏽' => ':kiss_woman_man_medium_light_skin_tone_medium_skin_tone:',
+ '👩🏽❤️💋👨🏽' => ':kiss_woman_man_medium_skin_tone:',
+ '👩🏽❤️💋👨🏿' => ':kiss_woman_man_medium_skin_tone_dark_skin_tone:',
+ '👩🏽❤️💋👨🏻' => ':kiss_woman_man_medium_skin_tone_light_skin_tone:',
+ '👩🏽❤️💋👨🏾' => ':kiss_woman_man_medium_skin_tone_medium_dark_skin_tone:',
+ '👩🏽❤️💋👨🏼' => ':kiss_woman_man_medium_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️💋👩🏿' => ':kiss_woman_woman_dark_skin_tone:',
+ '👩🏿❤️💋👩🏻' => ':kiss_woman_woman_dark_skin_tone_light_skin_tone:',
+ '👩🏿❤️💋👩🏾' => ':kiss_woman_woman_dark_skin_tone_medium_dark_skin_tone:',
+ '👩🏿❤️💋👩🏼' => ':kiss_woman_woman_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️💋👩🏽' => ':kiss_woman_woman_dark_skin_tone_medium_skin_tone:',
+ '👩🏻❤️💋👩🏻' => ':kiss_woman_woman_light_skin_tone:',
+ '👩🏻❤️💋👩🏿' => ':kiss_woman_woman_light_skin_tone_dark_skin_tone:',
+ '👩🏻❤️💋👩🏾' => ':kiss_woman_woman_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏻❤️💋👩🏼' => ':kiss_woman_woman_light_skin_tone_medium_light_skin_tone:',
+ '👩🏻❤️💋👩🏽' => ':kiss_woman_woman_light_skin_tone_medium_skin_tone:',
+ '👩🏾❤️💋👩🏾' => ':kiss_woman_woman_medium_dark_skin_tone:',
+ '👩🏾❤️💋👩🏿' => ':kiss_woman_woman_medium_dark_skin_tone_dark_skin_tone:',
+ '👩🏾❤️💋👩🏻' => ':kiss_woman_woman_medium_dark_skin_tone_light_skin_tone:',
+ '👩🏾❤️💋👩🏼' => ':kiss_woman_woman_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏾❤️💋👩🏽' => ':kiss_woman_woman_medium_dark_skin_tone_medium_skin_tone:',
+ '👩🏼❤️💋👩🏼' => ':kiss_woman_woman_medium_light_skin_tone:',
+ '👩🏼❤️💋👩🏿' => ':kiss_woman_woman_medium_light_skin_tone_dark_skin_tone:',
+ '👩🏼❤️💋👩🏻' => ':kiss_woman_woman_medium_light_skin_tone_light_skin_tone:',
+ '👩🏼❤️💋👩🏾' => ':kiss_woman_woman_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏼❤️💋👩🏽' => ':kiss_woman_woman_medium_light_skin_tone_medium_skin_tone:',
+ '👩🏽❤️💋👩🏽' => ':kiss_woman_woman_medium_skin_tone:',
+ '👩🏽❤️💋👩🏿' => ':kiss_woman_woman_medium_skin_tone_dark_skin_tone:',
+ '👩🏽❤️💋👩🏻' => ':kiss_woman_woman_medium_skin_tone_light_skin_tone:',
+ '👩🏽❤️💋👩🏾' => ':kiss_woman_woman_medium_skin_tone_medium_dark_skin_tone:',
+ '👩🏽❤️💋👩🏼' => ':kiss_woman_woman_medium_skin_tone_medium_light_skin_tone:',
+ '👨🏿❤️👨🏿' => ':couple_with_heart_man_man_dark_skin_tone:',
+ '👨🏿❤️👨🏻' => ':couple_with_heart_man_man_dark_skin_tone_light_skin_tone:',
+ '👨🏿❤️👨🏾' => ':couple_with_heart_man_man_dark_skin_tone_medium_dark_skin_tone:',
+ '👨🏿❤️👨🏼' => ':couple_with_heart_man_man_dark_skin_tone_medium_light_skin_tone:',
+ '👨🏿❤️👨🏽' => ':couple_with_heart_man_man_dark_skin_tone_medium_skin_tone:',
+ '👨🏻❤️👨🏻' => ':couple_with_heart_man_man_light_skin_tone:',
+ '👨🏻❤️👨🏿' => ':couple_with_heart_man_man_light_skin_tone_dark_skin_tone:',
+ '👨🏻❤️👨🏾' => ':couple_with_heart_man_man_light_skin_tone_medium_dark_skin_tone:',
+ '👨🏻❤️👨🏼' => ':couple_with_heart_man_man_light_skin_tone_medium_light_skin_tone:',
+ '👨🏻❤️👨🏽' => ':couple_with_heart_man_man_light_skin_tone_medium_skin_tone:',
+ '👨🏾❤️👨🏾' => ':couple_with_heart_man_man_medium_dark_skin_tone:',
+ '👨🏾❤️👨🏿' => ':couple_with_heart_man_man_medium_dark_skin_tone_dark_skin_tone:',
+ '👨🏾❤️👨🏻' => ':couple_with_heart_man_man_medium_dark_skin_tone_light_skin_tone:',
+ '👨🏾❤️👨🏼' => ':couple_with_heart_man_man_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👨🏾❤️👨🏽' => ':couple_with_heart_man_man_medium_dark_skin_tone_medium_skin_tone:',
+ '👨🏼❤️👨🏼' => ':couple_with_heart_man_man_medium_light_skin_tone:',
+ '👨🏼❤️👨🏿' => ':couple_with_heart_man_man_medium_light_skin_tone_dark_skin_tone:',
+ '👨🏼❤️👨🏻' => ':couple_with_heart_man_man_medium_light_skin_tone_light_skin_tone:',
+ '👨🏼❤️👨🏾' => ':couple_with_heart_man_man_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👨🏼❤️👨🏽' => ':couple_with_heart_man_man_medium_light_skin_tone_medium_skin_tone:',
+ '👨🏽❤️👨🏽' => ':couple_with_heart_man_man_medium_skin_tone:',
+ '👨🏽❤️👨🏿' => ':couple_with_heart_man_man_medium_skin_tone_dark_skin_tone:',
+ '👨🏽❤️👨🏻' => ':couple_with_heart_man_man_medium_skin_tone_light_skin_tone:',
+ '👨🏽❤️👨🏾' => ':couple_with_heart_man_man_medium_skin_tone_medium_dark_skin_tone:',
+ '👨🏽❤️👨🏼' => ':couple_with_heart_man_man_medium_skin_tone_medium_light_skin_tone:',
+ '🧑🏿❤️🧑🏻' => ':couple_with_heart_person_person_dark_skin_tone_light_skin_tone:',
+ '🧑🏿❤️🧑🏾' => ':couple_with_heart_person_person_dark_skin_tone_medium_dark_skin_tone:',
+ '🧑🏿❤️🧑🏼' => ':couple_with_heart_person_person_dark_skin_tone_medium_light_skin_tone:',
+ '🧑🏿❤️🧑🏽' => ':couple_with_heart_person_person_dark_skin_tone_medium_skin_tone:',
+ '🧑🏻❤️🧑🏿' => ':couple_with_heart_person_person_light_skin_tone_dark_skin_tone:',
+ '🧑🏻❤️🧑🏾' => ':couple_with_heart_person_person_light_skin_tone_medium_dark_skin_tone:',
+ '🧑🏻❤️🧑🏼' => ':couple_with_heart_person_person_light_skin_tone_medium_light_skin_tone:',
+ '🧑🏻❤️🧑🏽' => ':couple_with_heart_person_person_light_skin_tone_medium_skin_tone:',
+ '🧑🏾❤️🧑🏿' => ':couple_with_heart_person_person_medium_dark_skin_tone_dark_skin_tone:',
+ '🧑🏾❤️🧑🏻' => ':couple_with_heart_person_person_medium_dark_skin_tone_light_skin_tone:',
+ '🧑🏾❤️🧑🏼' => ':couple_with_heart_person_person_medium_dark_skin_tone_medium_light_skin_tone:',
+ '🧑🏾❤️🧑🏽' => ':couple_with_heart_person_person_medium_dark_skin_tone_medium_skin_tone:',
+ '🧑🏼❤️🧑🏿' => ':couple_with_heart_person_person_medium_light_skin_tone_dark_skin_tone:',
+ '🧑🏼❤️🧑🏻' => ':couple_with_heart_person_person_medium_light_skin_tone_light_skin_tone:',
+ '🧑🏼❤️🧑🏾' => ':couple_with_heart_person_person_medium_light_skin_tone_medium_dark_skin_tone:',
+ '🧑🏼❤️🧑🏽' => ':couple_with_heart_person_person_medium_light_skin_tone_medium_skin_tone:',
+ '🧑🏽❤️🧑🏿' => ':couple_with_heart_person_person_medium_skin_tone_dark_skin_tone:',
+ '🧑🏽❤️🧑🏻' => ':couple_with_heart_person_person_medium_skin_tone_light_skin_tone:',
+ '🧑🏽❤️🧑🏾' => ':couple_with_heart_person_person_medium_skin_tone_medium_dark_skin_tone:',
+ '🧑🏽❤️🧑🏼' => ':couple_with_heart_person_person_medium_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️👨🏿' => ':couple_with_heart_woman_man_dark_skin_tone:',
+ '👩🏿❤️👨🏻' => ':couple_with_heart_woman_man_dark_skin_tone_light_skin_tone:',
+ '👩🏿❤️👨🏾' => ':couple_with_heart_woman_man_dark_skin_tone_medium_dark_skin_tone:',
+ '👩🏿❤️👨🏼' => ':couple_with_heart_woman_man_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️👨🏽' => ':couple_with_heart_woman_man_dark_skin_tone_medium_skin_tone:',
+ '👩🏻❤️👨🏻' => ':couple_with_heart_woman_man_light_skin_tone:',
+ '👩🏻❤️👨🏿' => ':couple_with_heart_woman_man_light_skin_tone_dark_skin_tone:',
+ '👩🏻❤️👨🏾' => ':couple_with_heart_woman_man_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏻❤️👨🏼' => ':couple_with_heart_woman_man_light_skin_tone_medium_light_skin_tone:',
+ '👩🏻❤️👨🏽' => ':couple_with_heart_woman_man_light_skin_tone_medium_skin_tone:',
+ '👩🏾❤️👨🏾' => ':couple_with_heart_woman_man_medium_dark_skin_tone:',
+ '👩🏾❤️👨🏿' => ':couple_with_heart_woman_man_medium_dark_skin_tone_dark_skin_tone:',
+ '👩🏾❤️👨🏻' => ':couple_with_heart_woman_man_medium_dark_skin_tone_light_skin_tone:',
+ '👩🏾❤️👨🏼' => ':couple_with_heart_woman_man_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏾❤️👨🏽' => ':couple_with_heart_woman_man_medium_dark_skin_tone_medium_skin_tone:',
+ '👩🏼❤️👨🏼' => ':couple_with_heart_woman_man_medium_light_skin_tone:',
+ '👩🏼❤️👨🏿' => ':couple_with_heart_woman_man_medium_light_skin_tone_dark_skin_tone:',
+ '👩🏼❤️👨🏻' => ':couple_with_heart_woman_man_medium_light_skin_tone_light_skin_tone:',
+ '👩🏼❤️👨🏾' => ':couple_with_heart_woman_man_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏼❤️👨🏽' => ':couple_with_heart_woman_man_medium_light_skin_tone_medium_skin_tone:',
+ '👩🏽❤️👨🏽' => ':couple_with_heart_woman_man_medium_skin_tone:',
+ '👩🏽❤️👨🏿' => ':couple_with_heart_woman_man_medium_skin_tone_dark_skin_tone:',
+ '👩🏽❤️👨🏻' => ':couple_with_heart_woman_man_medium_skin_tone_light_skin_tone:',
+ '👩🏽❤️👨🏾' => ':couple_with_heart_woman_man_medium_skin_tone_medium_dark_skin_tone:',
+ '👩🏽❤️👨🏼' => ':couple_with_heart_woman_man_medium_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️👩🏿' => ':couple_with_heart_woman_woman_dark_skin_tone:',
+ '👩🏿❤️👩🏻' => ':couple_with_heart_woman_woman_dark_skin_tone_light_skin_tone:',
+ '👩🏿❤️👩🏾' => ':couple_with_heart_woman_woman_dark_skin_tone_medium_dark_skin_tone:',
+ '👩🏿❤️👩🏼' => ':couple_with_heart_woman_woman_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏿❤️👩🏽' => ':couple_with_heart_woman_woman_dark_skin_tone_medium_skin_tone:',
+ '👩🏻❤️👩🏻' => ':couple_with_heart_woman_woman_light_skin_tone:',
+ '👩🏻❤️👩🏿' => ':couple_with_heart_woman_woman_light_skin_tone_dark_skin_tone:',
+ '👩🏻❤️👩🏾' => ':couple_with_heart_woman_woman_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏻❤️👩🏼' => ':couple_with_heart_woman_woman_light_skin_tone_medium_light_skin_tone:',
+ '👩🏻❤️👩🏽' => ':couple_with_heart_woman_woman_light_skin_tone_medium_skin_tone:',
+ '👩🏾❤️👩🏾' => ':couple_with_heart_woman_woman_medium_dark_skin_tone:',
+ '👩🏾❤️👩🏿' => ':couple_with_heart_woman_woman_medium_dark_skin_tone_dark_skin_tone:',
+ '👩🏾❤️👩🏻' => ':couple_with_heart_woman_woman_medium_dark_skin_tone_light_skin_tone:',
+ '👩🏾❤️👩🏼' => ':couple_with_heart_woman_woman_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏾❤️👩🏽' => ':couple_with_heart_woman_woman_medium_dark_skin_tone_medium_skin_tone:',
+ '👩🏼❤️👩🏼' => ':couple_with_heart_woman_woman_medium_light_skin_tone:',
+ '👩🏼❤️👩🏿' => ':couple_with_heart_woman_woman_medium_light_skin_tone_dark_skin_tone:',
+ '👩🏼❤️👩🏻' => ':couple_with_heart_woman_woman_medium_light_skin_tone_light_skin_tone:',
+ '👩🏼❤️👩🏾' => ':couple_with_heart_woman_woman_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏼❤️👩🏽' => ':co
ED48
uple_with_heart_woman_woman_medium_light_skin_tone_medium_skin_tone:',
+ '👩🏽❤️👩🏽' => ':couple_with_heart_woman_woman_medium_skin_tone:',
+ '👩🏽❤️👩🏿' => ':couple_with_heart_woman_woman_medium_skin_tone_dark_skin_tone:',
+ '👩🏽❤️👩🏻' => ':couple_with_heart_woman_woman_medium_skin_tone_light_skin_tone:',
+ '👩🏽❤️👩🏾' => ':couple_with_heart_woman_woman_medium_skin_tone_medium_dark_skin_tone:',
+ '👩🏽❤️👩🏼' => ':couple_with_heart_woman_woman_medium_skin_tone_medium_light_skin_tone:',
'👨❤️💋👨' => ':kiss_mm:',
+ '👩❤️💋👨' => ':kiss_woman_man:',
'👩❤️💋👩' => ':kiss_ww:',
+ '🧎🏿♂️➡️' => ':man_kneeling_facing_right_dark_skin_tone:',
+ '🧎🏻♂️➡️' => ':man_kneeling_facing_right_light_skin_tone:',
+ '🧎🏾♂️➡️' => ':man_kneeling_facing_right_medium_dark_skin_tone:',
+ '🧎🏼♂️➡️' => ':man_kneeling_facing_right_medium_light_skin_tone:',
+ '🧎🏽♂️➡️' => ':man_kneeling_facing_right_medium_skin_tone:',
+ '🏃🏿♂️➡️' => ':man_running_facing_right_dark_skin_tone:',
+ '🏃🏻♂️➡️' => ':man_running_facing_right_light_skin_tone:',
+ '🏃🏾♂️➡️' => ':man_running_facing_right_medium_dark_skin_tone:',
+ '🏃🏼♂️➡️' => ':man_running_facing_right_medium_light_skin_tone:',
+ '🏃🏽♂️➡️' => ':man_running_facing_right_medium_skin_tone:',
+ '🚶🏿♂️➡️' => ':man_walking_facing_right_dark_skin_tone:',
+ '🚶🏻♂️➡️' => ':man_walking_facing_right_light_skin_tone:',
+ '🚶🏾♂️➡️' => ':man_walking_facing_right_medium_dark_skin_tone:',
+ '🚶🏼♂️➡️' => ':man_walking_facing_right_medium_light_skin_tone:',
+ '🚶🏽♂️➡️' => ':man_walking_facing_right_medium_skin_tone:',
+ '🧎🏿♀️➡️' => ':woman_kneeling_facing_right_dark_skin_tone:',
+ '🧎🏻♀️➡️' => ':woman_kneeling_facing_right_light_skin_tone:',
+ '🧎🏾♀️➡️' => ':woman_kneeling_facing_right_medium_dark_skin_tone:',
+ '🧎🏼♀️➡️' => ':woman_kneeling_facing_right_medium_light_skin_tone:',
+ '🧎🏽♀️➡️' => ':woman_kneeling_facing_right_medium_skin_tone:',
+ '🏃🏿♀️➡️' => ':woman_running_facing_right_dark_skin_tone:',
+ '🏃🏻♀️➡️' => ':woman_running_facing_right_light_skin_tone:',
+ '🏃🏾♀️➡️' => ':woman_running_facing_right_medium_dark_skin_tone:',
+ '🏃🏼♀️➡️' => ':woman_running_facing_right_medium_light_skin_tone:',
+ '🏃🏽♀️➡️' => ':woman_running_facing_right_medium_skin_tone:',
+ '🚶🏿♀️➡️' => ':woman_walking_facing_right_dark_skin_tone:',
+ '🚶🏻♀️➡️' => ':woman_walking_facing_right_light_skin_tone:',
+ '🚶🏾♀️➡️' => ':woman_walking_facing_right_medium_dark_skin_tone:',
+ '🚶🏼♀️➡️' => ':woman_walking_facing_right_medium_light_skin_tone:',
+ '🚶🏽♀️➡️' => ':woman_walking_facing_right_medium_skin_tone:',
+ '🧑🧑🧒🧒' => ':family_adult_adult_child_child:',
'👨👨👦👦' => ':family_mmbb:',
'👨👨👧👦' => ':family_mmgb:',
'👨👨👧👧' => ':family_mmgg:',
@@ -12,35 +234,1291 @@
'👩👩👦👦' => ':family_wwbb:',
'👩👩👧👦' => ':family_wwgb:',
'👩👩👧👧' => ':family_wwgg:',
+ '🏴' => ':flag_england:',
+ '🏴' => ':flag_scotland:',
+ '🏴' => ':flag_wales:',
+ '👨🏿🦽➡️' => ':man_in_manual_wheelchair_facing_right_dark_skin_tone:',
+ '👨🏻🦽➡️' => ':man_in_manual_wheelchair_facing_right_light_skin_tone:',
+ '👨🏾🦽➡️' => ':man_in_manual_wheelchair_facing_right_medium_dark_skin_tone:',
+ '👨🏼🦽➡️' => ':man_in_manual_wheelchair_facing_right_medium_light_skin_tone:',
+ '👨🏽🦽➡️' => ':man_in_manual_wheelchair_facing_right_medium_skin_tone:',
+ '👨🏿🦼➡️' => ':man_in_motorized_wheelchair_facing_right_dark_skin_tone:',
+ '👨🏻🦼➡️' => ':man_in_motorized_wheelchair_facing_right_light_skin_tone:',
+ '👨🏾🦼➡️' => ':man_in_motorized_wheelchair_facing_right_medium_dark_skin_tone:',
+ '👨🏼🦼➡️' => ':man_in_motorized_wheelchair_facing_right_medium_light_skin_tone:',
+ '👨🏽🦼➡️' => ':man_in_motorized_wheelchair_facing_right_medium_skin_tone:',
+ '🧎♂️➡️' => ':man_kneeling_facing_right:',
+ '🏃♂️➡️' => ':man_running_facing_right:',
+ '🚶♂️➡️' => ':man_walking_facing_right:',
+ '👨🏿🦯➡️' => ':man_with_white_cane_facing_right_dark_skin_tone:',
+ '👨🏻🦯➡️' => ':man_with_white_cane_facing_right_light_skin_tone:',
+ '👨🏾🦯➡️' => ':man_with_white_cane_facing_right_medium_dark_skin_tone:',
+ '👨🏼🦯➡️' => ':man_with_white_cane_facing_right_medium_light_skin_tone:',
+ '👨🏽🦯➡️' => ':man_with_white_cane_facing_right_medium_skin_tone:',
+ '👨🏿🤝👨🏻' => ':men_holding_hands_dark_skin_tone_light_skin_tone:',
+ '👨🏿🤝👨🏾' => ':men_holding_hands_dark_skin_tone_medium_dark_skin_tone:',
+ '👨🏿🤝👨🏼' => ':men_holding_hands_dark_skin_tone_medium_light_skin_tone:',
+ '👨🏿🤝👨🏽' => ':men_holding_hands_dark_skin_tone_medium_skin_tone:',
+ '👨🏻🤝👨🏿' => ':men_holding_hands_light_skin_tone_dark_skin_tone:',
+ '👨🏻🤝👨🏾' => ':men_holding_hands_light_skin_tone_medium_dark_skin_tone:',
+ '👨🏻🤝👨🏼' => ':men_holding_hands_light_skin_tone_medium_light_skin_tone:',
+ '👨🏻🤝👨🏽' => ':men_holding_hands_light_skin_tone_medium_skin_tone:',
+ '👨🏾🤝👨🏿' => ':men_holding_hands_medium_dark_skin_tone_dark_skin_tone:',
+ '👨🏾🤝👨🏻' => ':men_holding_hands_medium_dark_skin_tone_light_skin_tone:',
+ '👨🏾🤝👨🏼' => ':men_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👨🏾🤝👨🏽' => ':men_holding_hands_medium_dark_skin_tone_medium_skin_tone:',
+ '👨🏼🤝👨🏿' => ':men_holding_hands_medium_light_skin_tone_dark_skin_tone:',
+ '👨🏼🤝👨🏻' => ':men_holding_hands_medium_light_skin_tone_light_skin_tone:',
+ '👨🏼🤝👨🏾' => ':men_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👨🏼🤝👨🏽' => ':men_holding_hands_medium_light_skin_tone_medium_skin_tone:',
+ '👨🏽🤝👨🏿' => ':men_holding_hands_medium_skin_tone_dark_skin_tone:',
+ '👨🏽🤝👨🏻' => ':men_holding_hands_medium_skin_tone_light_skin_tone:',
+ '👨🏽🤝👨🏾' => ':men_holding_hands_medium_skin_tone_medium_dark_skin_tone:',
+ '👨🏽🤝👨🏼' => ':men_holding_hands_medium_skin_tone_medium_light_skin_tone:',
+ '🧑🏿🤝🧑🏿' => ':people_holding_hands_dark_skin_tone:',
+ '🧑🏿🤝🧑🏻' => ':people_holding_hands_dark_skin_tone_light_skin_tone:',
+ '🧑🏿🤝🧑🏾' => ':people_holding_hands_dark_skin_tone_medium_dark_skin_tone:',
+ '🧑🏿🤝🧑🏼' => ':people_holding_hands_dark_skin_tone_medium_light_skin_tone:',
+ '🧑🏿🤝🧑🏽' => ':people_holding_hands_dark_skin_tone_medium_skin_tone:',
+ '🧑🏻🤝🧑🏻' => ':people_holding_hands_light_skin_tone:',
+ '🧑🏻🤝🧑🏿' => ':people_holding_hands_light_skin_tone_dark_skin_tone:',
+ '🧑🏻🤝🧑🏾' => ':people_holding_hands_light_skin_tone_medium_dark_skin_tone:',
+ '🧑🏻🤝🧑🏼' => ':people_holding_hands_light_skin_tone_medium_light_skin_tone:',
+ '🧑🏻🤝🧑🏽' => ':people_holding_hands_light_skin_tone_medium_skin_tone:',
+ '🧑🏾🤝🧑🏾' => ':people_holding_hands_medium_dark_skin_tone:',
+ '🧑🏾🤝🧑🏿' => ':people_holding_hands_medium_dark_skin_tone_dark_skin_tone:',
+ '🧑🏾🤝🧑🏻' => ':people_holding_hands_medium_dark_skin_tone_light_skin_tone:',
+ '🧑🏾🤝🧑🏼' => ':people_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:',
+ '🧑🏾🤝🧑🏽' => ':people_holding_hands_medium_dark_skin_tone_medium_skin_tone:',
+ '🧑🏼🤝🧑🏼' => ':people_holding_hands_medium_light_skin_tone:',
+ '🧑🏼🤝🧑🏿' => ':people_holding_hands_medium_light_skin_tone_dark_skin_tone:',
+ '🧑🏼🤝🧑🏻' => ':people_holding_hands_medium_light_skin_tone_light_skin_tone:',
+ '🧑🏼🤝🧑🏾' => ':people_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:',
+ '🧑🏼🤝🧑🏽' => ':people_holding_hands_medium_light_skin_tone_medium_skin_tone:',
+ '🧑🏽🤝🧑🏽' => ':people_holding_hands_medium_skin_tone:',
+ '🧑🏽🤝🧑🏿' => ':people_holding_hands_medium_skin_tone_dark_skin_tone:',
+ '🧑🏽🤝🧑🏻' => ':people_holding_hands_medium_skin_tone_light_skin_tone:',
+ '🧑🏽🤝🧑🏾' => ':people_holding_hands_medium_skin_tone_medium_dark_skin_tone:',
+ '🧑🏽🤝🧑🏼' => ':people_holding_hands_medium_skin_tone_medium_light_skin_tone:',
+ '🧑🏿🦽➡️' => ':person_in_manual_wheelchair_facing_right_dark_skin_tone:',
+ '🧑🏻🦽➡️' => ':person_in_manual_wheelchair_facing_right_light_skin_tone:',
+ '🧑🏾🦽➡️' => ':person_in_manual_wheelchair_facing_right_medium_dark_skin_tone:',
+ '🧑🏼🦽➡️' => ':person_in_manual_wheelchair_facing_right_medium_light_skin_tone:',
+ '🧑🏽🦽➡️' => ':person_in_manual_wheelchair_facing_right_medium_skin_tone:',
+ '🧑🏿🦼➡️' => ':person_in_motorized_wheelchair_facing_right_dark_skin_tone:',
+ '🧑🏻🦼➡️' => ':person_in_motorized_wheelchair_facing_right_light_skin_tone:',
+ '🧑🏾🦼➡️' => ':person_in_motorized_wheelchair_facing_right_medium_dark_skin_tone:',
+ '🧑🏼🦼➡️' => ':person_in_motorized_wheelchair_facing_right_medium_light_skin_tone:',
+ '🧑🏽🦼➡️' => ':person_in_motorized_wheelchair_facing_right_medium_skin_tone:',
+ '🧑🏿🦯➡️' => ':person_with_white_cane_facing_right_dark_skin_tone:',
+ '🧑🏻🦯➡️' => ':person_with_white_cane_facing_right_light_skin_tone:',
+ '🧑🏾🦯➡️' => ':person_with_white_cane_facing_right_medium_dark_skin_tone:',
+ '🧑🏼🦯➡️' => ':person_with_white_cane_facing_right_medium_light_skin_tone:',
+ '🧑🏽🦯➡️' => ':person_with_white_cane_facing_right_medium_skin_tone:',
+ '👩🏿🤝👨🏻' => ':woman_and_man_holding_hands_dark_skin_tone_light_skin_tone:',
+ '👩🏿🤝👨🏾' => ':woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone:',
+ '👩🏿🤝👨🏼' => ':woman_and_man_holding_hands_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏿🤝👨🏽' => ':woman_and_man_holding_hands_dark_skin_tone_medium_skin_tone:',
+ '👩🏻🤝👨🏿' => ':woman_and_man_holding_hands_light_skin_tone_dark_skin_tone:',
+ '👩🏻🤝👨🏾' => ':woman_and_man_holding_hands_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏻🤝👨🏼' => ':woman_and_man_holding_hands_light_skin_tone_medium_light_skin_tone:',
+ '👩🏻🤝👨🏽' => ':woman_and_man_holding_hands_light_skin_tone_medium_skin_tone:',
+ '👩🏾🤝👨🏿' => ':woman_and_man_holding_hands_medium_dark_skin_tone_dark_skin_tone:',
+ '👩🏾🤝👨🏻' => ':woman_and_man_holding_hands_medium_dark_skin_tone_light_skin_tone:',
+ '👩🏾🤝👨🏼' => ':woman_and_man_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏾🤝👨🏽' => ':woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone:',
+ '👩🏼🤝👨🏿' => ':woman_and_man_holding_hands_medium_light_skin_tone_dark_skin_tone:',
+ '👩🏼🤝👨🏻' => ':woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone:',
+ '👩🏼🤝👨🏾' => ':woman_and_man_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏼🤝👨🏽' => ':woman_and_man_holding_hands_medium_light_skin_tone_medium_skin_tone:',
+ '👩🏽🤝👨🏿' => ':woman_and_man_holding_hands_medium_skin_tone_dark_skin_tone:',
+ '👩🏽🤝👨🏻' => ':woman_and_man_holding_hands_medium_skin_tone_light_skin_tone:',
+ '👩🏽🤝👨🏾' => ':woman_and_man_holding_hands_medium_skin_tone_medium_dark_skin_tone:',
+ '👩🏽🤝👨🏼' => ':woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone:',
+ '👩🏿🦽➡️' => ':woman_in_manual_wheelchair_facing_right_dark_skin_tone:',
+ '👩🏻🦽➡️' => ':woman_in_manual_wheelchair_facing_right_light_skin_tone:',
+ '👩🏾🦽➡️' => ':woman_in_manual_wheelchair_facing_right_medium_dark_skin_tone:',
+ '👩🏼🦽➡️' => ':woman_in_manual_wheelchair_facing_right_medium_light_skin_tone:',
+ '👩🏽🦽➡️' => ':woman_in_manual_wheelchair_facing_right_medium_skin_tone:',
+ '👩🏿🦼➡️' => ':woman_in_motorized_wheelchair_facing_right_dark_skin_tone:',
+ '👩🏻🦼➡️' => ':woman_in_motorized_wheelchair_facing_right_light_skin_tone:',
+ '👩🏾🦼➡️' => ':woman_in_motorized_wheelchair_facing_right_medium_dark_skin_tone:',
+ '👩🏼🦼➡️' => ':woman_in_motorized_wheelchair_facing_right_medium_light_skin_tone:',
+ '👩🏽🦼➡️' => ':woman_in_motorized_wheelchair_facing_right_medium_skin_tone:',
+ '🧎♀️➡️' => ':woman_kneeling_facing_right:',
+ '🏃♀️➡️' => ':woman_running_facing_right:',
+ '🚶♀️➡️' => ':woman_walking_facing_right:',
+ '👩🏿🦯➡️' => ':woman_with_white_cane_facing_right_dark_skin_tone:',
+ '👩🏻🦯➡️' => ':woman_with_white_cane_facing_right_light_skin_tone:',
+ '👩🏾🦯➡️' => ':woman_with_white_cane_facing_right_medium_dark_skin_tone:',
+ '👩🏼🦯➡️' => ':woman_with_white_cane_facing_right_medium_light_skin_tone:',
+ '👩🏽🦯➡️' => ':woman_with_white_cane_facing_right_medium_skin_tone:',
+ '👩🏿🤝👩🏻' => ':women_holding_hands_dark_skin_tone_light_skin_tone:',
+ '👩🏿🤝👩🏾' => ':women_holding_hands_dark_skin_tone_medium_dark_skin_tone:',
+ '👩🏿🤝👩🏼' => ':women_holding_hands_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏿🤝👩🏽' => ':women_holding_hands_dark_skin_tone_medium_skin_tone:',
+ '👩🏻🤝👩🏿' => ':women_holding_hands_light_skin_tone_dark_skin_tone:',
+ '👩🏻🤝👩🏾' => ':women_holding_hands_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏻🤝👩🏼' => ':women_holding_hands_light_skin_tone_medium_light_skin_tone:',
+ '👩🏻🤝👩🏽' => ':women_holding_hands_light_skin_tone_medium_skin_tone:',
+ '👩🏾🤝👩🏿' => ':women_holding_hands_medium_dark_skin_tone_dark_skin_tone:',
+ '👩🏾🤝👩🏻' => ':women_holding_hands_medium_dark_skin_tone_light_skin_tone:',
+ '👩🏾🤝👩🏼' => ':women_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:',
+ '👩🏾🤝👩🏽' => ':women_holding_hands_medium_dark_skin_tone_medium_skin_tone:',
+ '👩🏼🤝👩🏿' => ':women_holding_hands_medium_light_skin_tone_dark_skin_tone:',
+ '👩🏼🤝👩🏻' => ':women_holding_hands_medium_light_skin_tone_light_skin_tone:',
+ '👩🏼🤝👩🏾' => ':women_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:',
+ '👩🏼🤝👩🏽' => ':women_holding_hands_medium_light_skin_tone_medium_skin_tone:',
+ '👩🏽🤝👩🏿' => ':women_holding_hands_medium_skin_tone_dark_skin_tone:',
+ '👩🏽🤝👩🏻' => ':women_holding_hands_medium_skin_tone_light_skin_tone:',
+ '👩🏽🤝👩🏾' => ':women_holding_hands_medium_skin_tone_medium_dark_skin_tone:',
+ '👩🏽🤝👩🏼' => ':women_holding_hands_medium_skin_tone_medium_light_skin_tone:',
'👨❤️👨' => ':couple_mm:',
+ '👩❤️👨' => ':couple_with_heart_woman_man:',
'👩❤️👩' => ':couple_ww:',
+ '👨🦽➡️' => ':man_in_manual_wheelchair_facing_right:',
+ '👨🦼➡️' => ':man_in_motorized_wheelchair_facing_right:',
+ '👨🦯➡️' => ':man_with_white_cane_facing_right:',
+ '🧑🦽➡️' => ':person_in_manual_wheelchair_facing_right:',
+ '🧑🦼➡️' => ':person_in_motorized_wheelchair_facing_right:',
+ '🧑🦯➡️' => ':person_with_white_cane_facing_right:',
+ '👩🦽➡️' => ':woman_in_manual_wheelchair_facing_right:',
+ '👩🦼➡️' => ':woman_in_motorized_wheelchair_facing_right:',
+ '👩🦯➡️' => ':woman_with_white_cane_facing_right:',
+ '🧏🏿♂️' => ':deaf_man_dark_skin_tone:',
+ '🧏🏻♂️' => ':deaf_man_light_skin_tone:',
+ '🧏🏾♂️' => ':deaf_man_medium_dark_skin_tone:',
+ '🧏🏼♂️' => ':deaf_man_medium_light_skin_tone:',
+ '🧏🏽♂️' => ':deaf_man_medium_skin_tone:',
+ '🧏🏿♀️' => ':deaf_woman_dark_skin_tone:',
+ '🧏🏻♀️' => ':deaf_woman_light_skin_tone:',
+ '🧏🏾♀️' => ':deaf_woman_medium_dark_skin_tone:',
+ '🧏🏼♀️' => ':deaf_woman_medium_light_skin_tone:',
+ '🧏🏽♀️' => ':deaf_woman_medium_skin_tone:',
+ '👁️🗨️' => ':eye_in_speech_bubble:',
+ '🧑🧑🧒' => ':family_adult_adult_child:',
+ '🧑🧒🧒' => ':family_adult_child_child:',
+ '👨👦👦' => ':family_man_boy_boy:',
+ '👨👧👦' => ':family_man_girl_boy:',
+ '👨👧👧' => ':family_man_girl_girl:',
+ '👨👩👦' => ':family_man_woman_boy:',
'👨👨👦' => ':family_mmb:',
'👨👨👧' => ':family_mmg:',
'👨👩👧' => ':family_mwg:',
+ '👩👦👦' => ':family_woman_boy_boy:',
+ '👩👧👦' => ':family_woman_girl_boy:',
+ '👩👧👧' => ':family_woman_girl_girl:',
'👩👩👦' => ':family_wwb:',
'👩👩👧' => ':family_wwg:',
+ '🫱🏿🫲🏻' => ':handshake_dark_skin_tone_light_skin_tone:',
+ '🫱🏿🫲🏾' => ':handshake_dark_skin_tone_medium_dark_skin_tone:',
+ '🫱🏿🫲🏼' => ':handshake_dark_skin_tone_medium_light_skin_tone:',
+ '🫱🏿🫲🏽' => ':handshake_dark_skin_tone_medium_skin_tone:',
+ '🫱🏻🫲🏿' => ':handshake_light_skin_tone_dark_skin_tone:',
+ '🫱🏻🫲🏾' => ':handshake_light_skin_tone_medium_dark_skin_tone:',
+ '🫱🏻🫲🏼' => ':handshake_light_skin_tone_medium_light_skin_tone:',
+ '🫱🏻🫲🏽' => ':handshake_light_skin_tone_medium_skin_tone:',
+ '🫱🏾🫲🏿' => ':handshake_medium_dark_skin_tone_dark_skin_tone:',
+ '🫱🏾🫲🏻' => ':handshake_medium_dark_skin_tone_light_skin_tone:',
+ '🫱🏾🫲🏼' => ':handshake_medium_dark_skin_tone_medium_light_skin_tone:',
+ '🫱🏾🫲🏽' => ':handshake_medium_dark_skin_tone_medium_skin_tone:',
+ '🫱🏼🫲🏿' => ':handshake_medium_light_skin_tone_dark_skin_tone:',
+ '🫱🏼🫲🏻' => ':handshake_medium_light_skin_tone_light_skin_tone:',
+ '🫱🏼🫲🏾' => ':handshake_medium_light_skin_tone_medium_dark_skin_tone:',
+ '🫱🏼🫲🏽' => ':handshake_medium_light_skin_tone_medium_skin_tone:',
+ '🫱🏽🫲🏿' => ':handshake_medium_skin_tone_dark_skin_tone:',
+ '🫱🏽🫲🏻' => ':handshake_medium_skin_tone_light_skin_tone:',
+ '🫱🏽🫲🏾' => ':handshake_medium_skin_tone_medium_dark_skin_tone:',
+ '🫱🏽🫲🏼' => ':handshake_medium_skin_tone_medium_light_skin_tone:',
+ '🧑🏿⚕️' => ':health_worker_dark_skin_tone:',
+ '🧑🏻⚕️' => ':health_worker_light_skin_tone:',
+ '🧑🏾⚕️' => ':health_worker_medium_dark_skin_tone:',
+ '🧑🏼⚕️' => ':health_worker_medium_light_skin_tone:',
+ '🧑🏽⚕️' => ':health_worker_medium_skin_tone:',
+ '🧑🏿⚖️' => ':judge_dark_skin_tone:',
+ '🧑🏻⚖️' => ':judge_light_skin_tone:',
+ '🧑🏾⚖️' => ':judge_medium_dark_skin_tone:',
+ '🧑🏼⚖️' => ':judge_medium_light_skin_tone:',
+ '🧑🏽⚖️' => ':judge_medium_skin_tone:',
+ '🚴🏿♂️' => ':man_biking_dark_skin_tone:',
+ '🚴🏻♂️' => ':man_biking_light_skin_tone:',
+ '🚴🏾♂️' => ':man_biking_medium_dark_skin_tone:',
+ '🚴🏼♂️' => ':man_biking_medium_light_skin_tone:',
+ '🚴🏽♂️' => ':man_biking_medium_skin_tone:',
+ '⛹️♂️' => ':man_bouncing_ball:',
+ '⛹🏿♂️' => ':man_bouncing_ball_dark_skin_tone:',
+ '⛹🏻♂️' => ':man_bouncing_ball_light_skin_tone:',
+ '⛹🏾♂️' => ':man_bouncing_ball_medium_dark_skin_tone:',
+ '⛹🏼♂️' => ':man_bouncing_ball_medium_light_skin_tone:',
+ '⛹🏽♂️' => ':man_bouncing_ball_medium_skin_tone:',
+ '🙇🏿♂️' => ':man_bowing_dark_skin_tone:',
+ '🙇🏻♂️' => ':man_bowing_light_skin_tone:',
+ '🙇🏾♂️' => ':man_bowing_medium_dark_skin_tone:',
+ '🙇🏼♂️' => ':man_bowing_medium_light_skin_tone:',
+ '🙇🏽♂️' => ':man_bowing_medium_skin_tone:',
+ '🤸🏿♂️' => ':man_cartwheeling_dark_skin_tone:',
+ '🤸🏻♂️' => ':man_cartwheeling_light_skin_tone:',
+ '🤸🏾♂️' => ':man_cartwheeling_medium_dark_skin_tone:',
+ '🤸🏼♂️' => ':man_cartwheeling_medium_light_skin_tone:',
+ '🤸🏽♂️' => ':man_cartwheeling_medium_skin_tone:',
+ '🧗🏿♂️' => ':man_climbing_dark_skin_tone:',
+ '🧗🏻♂️' => ':man_climbing_light_skin_tone:',
+ '🧗🏾♂️' => ':man_climbing_medium_dark_skin_tone:',
+ '🧗🏼♂️' => ':man_climbing_medium_light_skin_tone:',
+ '🧗🏽♂️' => ':man_climbing_medium_skin_tone:',
+ '👷🏿♂️' => ':man_construction_worker_dark_skin_tone:',
+ '👷🏻♂️' => ':man_construction_worker_light_skin_tone:',
+ '👷🏾♂️' => ':man_construction_worker_medium_dark_skin_tone:',
+ '👷🏼♂️' => ':man_construction_worker_medium_light_skin_tone:',
+ '👷🏽♂️' => ':man_construction_worker_medium_skin_tone:',
+ '🧔🏿♂️' => ':man_dark_skin_tone_beard:',
+ '👱🏿♂️' => ':man_dark_skin_tone_blond_hair:',
+ '🕵️♂️' => ':man_detective:',
+ '🕵🏿♂️' => ':man_detective_dark_skin_tone:',
+ '🕵🏻♂️' => ':man_detective_light_skin_tone:',
+ '🕵🏾♂️' => ':man_detective_medium_dark_skin_tone:',
+ '🕵🏼♂️' => ':man_detective_medium_light_skin_tone:',
+ '🕵🏽♂️' => ':man_detective_medium_skin_tone:',
+ '🧝🏿♂️' => ':man_elf_dark_skin_tone:',
+ '🧝🏻♂️' => ':man_elf_light_skin_tone:',
+ '🧝🏾♂️' => ':man_elf_medium_dark_skin_tone:',
+ '🧝🏼♂️' => ':man_elf_medium_light_skin_tone:',
+ '🧝🏽♂️' => ':man_elf_medium_skin_tone:',
+ '🤦🏿♂️' => ':man_facepalming_dark_skin_tone:',
+ '🤦🏻♂️' => ':man_facepalming_light_skin_tone:',
+ '🤦🏾♂️' => ':man_facepalming_medium_dark_skin_tone:',
+ '🤦🏼♂️' => ':man_facepalming_medium_light_skin_tone:',
+ '🤦🏽♂️' => ':man_facepalming_medium_skin_tone:',
+ '🧚🏿♂️' => ':man_fairy_dark_skin_tone:',
+ '🧚🏻♂️' => ':man_fairy_light_skin_tone:',
+ '🧚🏾♂️' => ':man_fairy_medium_dark_skin_tone:',
+ '🧚🏼♂️' => ':man_fairy_medium_light_skin_tone:',
+ '🧚🏽♂️' => ':man_fairy_medium_skin_tone:',
+ '🙍🏿♂️' => ':man_frowning_dark_skin_tone:',
+ '🙍🏻♂️' => ':man_frowning_light_skin_tone:',
+ '🙍🏾♂️' => ':man_frowning_medium_dark_skin_tone:',
+ '🙍🏼♂️' => ':man_frowning_medium_light_skin_tone:',
+ '🙍🏽♂️' => ':man_frowning_medium_skin_tone:',
+ '🙅🏿♂️' => ':man_gesturing_no_dark_skin_tone:',
+ '🙅🏻♂️' => ':man_gesturing_no_light_skin_tone:',
+ '🙅🏾♂️' => ':man_gesturing_no_medium_dark_skin_tone:',
+ '🙅🏼♂️' => ':man_gesturing_no_medium_light_skin_tone:',
+ '🙅🏽♂️' => ':man_gesturing_no_medium_skin_tone:',
+ '🙆🏿♂️' => ':man_gesturing_ok_dark_skin_tone:',
+ '🙆🏻♂️' => ':man_gesturing_ok_light_skin_tone:',
+ '🙆🏾♂️' => ':man_gesturing_ok_medium_dark_skin_tone:',
+ '🙆🏼♂️' => ':man_gesturing_ok_medium_light_skin_tone:',
+ '🙆🏽♂️' => ':man_gesturing_ok_medium_skin_tone:',
+ '💇🏿♂️' => ':man_getting_haircut_dark_skin_tone:',
+ '💇🏻♂️' => ':man_getting_haircut_light_skin_tone:',
+ '💇🏾♂️' => ':man_getting_haircut_medium_dark_skin_tone:',
+ '💇🏼♂️' => ':man_getting_haircut_medium_light_skin_tone:',
+ '💇🏽♂️' => ':man_getting_haircut_medium_skin_tone:',
+ '💆🏿♂️' => ':man_getting_massage_dark_skin_tone:',
+ '💆🏻♂️' => ':man_getting_massage_light_skin_tone:',
+ '💆🏾♂️' => ':man_getting_massage_medium_dark_skin_tone:',
+ '💆🏼♂️' => ':man_getting_massage_medium_light_skin_tone:',
+ '💆🏽♂️' => ':man_getting_massage_medium_skin_tone:',
+ '🏌️♂️' => ':man_golfing:',
+ '🏌🏿♂️' => ':man_golfing_dark_skin_tone:',
+ '🏌🏻♂️' => ':man_golfing_light_skin_tone:',
+ '🏌🏾♂️' => ':man_golfing_medium_dark_skin_tone:',
+ '🏌🏼♂️' => ':man_golfing_medium_light_skin_tone:',
+ '🏌🏽♂️' => ':man_golfing_medium_skin_tone:',
+ '💂🏿♂️' => ':man_guard_dark_skin_tone:',
+ '💂🏻♂️' => ':man_guard_light_skin_tone:',
+ '💂🏾♂️' => ':man_guard_medium_dark_skin_tone:',
+ '💂🏼♂️' => ':man_guard_medium_light_skin_tone:',
+ '💂🏽♂️' => ':man_guard_medium_skin_tone:',
+ '👨🏿⚕️' => ':man_health_worker_dark_skin_tone:',
+ '👨🏻⚕️' => ':man_health_worker_light_skin_tone:',
+ '👨🏾⚕️' => ':man_health_worker_medium_dark_skin_tone:',
+ '👨🏼⚕️' => ':man_health_worker_medium_light_skin_tone:',
+ '👨🏽⚕️' => ':man_health_worker_medium_skin_tone:',
+ '🧘🏿♂️' => ':man_in_lotus_position_dark_skin_tone:',
+ '🧘🏻♂️' => ':man_in_lotus_position_light_skin_tone:',
+ '🧘🏾♂️' => ':man_in_lotus_position_medium_dark_skin_tone:',
+ '🧘🏼♂️' => ':man_in_lotus_position_medium_light_skin_tone:',
+ '🧘🏽♂️' => ':man_in_lotus_position_medium_skin_tone:',
+ '🧖🏿♂️' => ':man_in_steamy_room_dark_skin_tone:',
+ '🧖🏻♂️' => ':man_in_steamy_room_light_skin_tone:',
+ '🧖🏾♂️' => ':man_in_steamy_room_medium_dark_skin_tone:',
+ '🧖🏼♂️' => ':man_in_steamy_room_medium_light_skin_tone:',
+ '🧖🏽♂️' => ':man_in_steamy_room_medium_skin_tone:',
+ '🤵🏿♂️' => ':man_in_tuxedo_dark_skin_tone:',
+ '🤵🏻♂️' => ':man_in_tuxedo_light_skin_tone:',
+ '🤵🏾♂️' => ':man_in_tuxedo_medium_dark_skin_tone:',
+ '🤵🏼♂️' => ':man_in_tuxedo_medium_light_skin_tone:',
+ '🤵🏽♂️' => ':man_in_tuxedo_medium_skin_tone:',
+ '👨🏿⚖️' => ':man_judge_dark_skin_tone:',
+ '👨🏻⚖️' => ':man_judge_light_skin_tone:',
+ '👨🏾⚖️' => ':man_judge_medium_dark_skin_tone:',
+ '👨🏼⚖️' => ':man_judge_medium_light_skin_tone:',
+ '👨🏽⚖️' => ':man_judge_medium_skin_tone:',
+ '🤹🏿♂️' => ':man_juggling_dark_skin_tone:',
+ '🤹🏻♂️' => ':man_juggling_light_skin_tone:',
+ '🤹🏾♂️' => ':man_juggling_medium_dark_skin_tone:',
+ '🤹🏼♂️' => ':man_juggling_medium_light_skin_tone:',
+ '🤹🏽♂️' => ':man_juggling_medium_skin_tone:',
+ '🧎🏿♂️' => ':man_kneeling_dark_skin_tone:',
+ '🧎🏻♂️' => ':man_kneeling_light_skin_tone:',
+ '🧎🏾♂️' => ':man_kneeling_medium_dark_skin_tone:',
+ '🧎🏼♂️' => ':man_kneeling_medium_light_skin_tone:',
+ '🧎🏽♂️' => ':man_kneeling_medium_skin_tone:',
+ '🏋️♂️' => ':man_lifting_weights:',
+ '🏋🏿♂️' => ':man_lifting_weights_dark_skin_tone:',
+ '🏋🏻♂️' => ':man_lifting_weights_light_skin_tone:',
+ '🏋🏾♂️' => ':man_lifting_weights_medium_dark_skin_tone:',
+ '🏋🏼♂️' => ':man_lifting_weights_medium_light_skin_tone:',
+ '🏋🏽♂️' => ':man_lifting_weights_medium_skin_tone:',
+ '🧔🏻♂️' => ':man_light_skin_tone_beard:',
+ '👱🏻♂️' => ':man_light_skin_tone_blond_hair:',
+ '🧙🏿♂️' => ':man_mage_dark_skin_tone:',
+ '🧙🏻♂️' => ':man_mage_light_skin_tone:',
+ '🧙🏾♂️' => ':man_mage_medium_dark_skin_tone:',
+ '🧙🏼♂️' => ':man_mage_medium_light_skin_tone:',
+ '🧙🏽♂️' => ':man_mage_medium_skin_tone:',
+ '🧔🏾♂️' => ':man_medium_dark_skin_tone_beard:',
+ '👱🏾♂️' => ':man_medium_dark_skin_tone_blond_hair:',
+ '🧔🏼♂️' => ':man_medium_light_skin_tone_beard:',
+ '👱🏼♂️' => ':man_medium_light_skin_tone_blond_hair:',
+ '🧔🏽♂️' => ':man_medium_skin_tone_beard:',
+ '👱🏽♂️' => ':man_medium_skin_tone_blond_hair:',
+ '🚵🏿♂️' => ':man_mountain_biking_dark_skin_tone:',
+ '🚵🏻♂️' => ':man_mountain_biking_light_skin_tone:',
+ '🚵🏾♂️' => ':man_mountain_biking_medium_dark_skin_tone:',
+ '🚵🏼♂️' => ':man_mountain_biking_medium_light_skin_tone:',
+ '🚵🏽♂️' => ':man_mountain_biking_medium_skin_tone:',
+ '👨🏿✈️' => ':man_pilot_dark_skin_tone:',
+ '👨🏻✈️' => ':man_pilot_light_skin_tone:',
+ '👨🏾✈️' => ':man_pilot_medium_dark_skin_tone:',
+ '👨🏼✈️' => ':man_pilot_medium_light_skin_tone:',
+ '👨🏽✈️' => ':man_pilot_medium_skin_tone:',
+ '🤾🏿♂️' => ':man_playing_handball_dark_skin_tone:',
+ '🤾🏻♂️' => ':man_playing_handball_light_skin_tone:',
+ '🤾🏾♂️' => ':man_playing_handball_medium_dark_skin_tone:',
+ '🤾🏼♂️' => ':man_playing_handball_medium_light_skin_tone:',
+ '🤾🏽♂️' => ':man_playing_handball_medium_skin_tone:',
+ '🤽🏿♂️' => ':man_playing_water_polo_dark_skin_tone:',
+ '🤽🏻♂️' => ':man_playing_water_polo_light_skin_tone:',
+ '🤽🏾♂️' => ':man_playing_water_polo_medium_dark_skin_tone:',
+ '🤽🏼♂️' => ':man_playing_water_polo_medium_light_skin_tone:',
+ '🤽🏽♂️' => ':man_playing_water_polo_medium_skin_tone:',
+ '👮🏿♂️' => ':man_police_officer_dark_skin_tone:',
+ '👮🏻♂️' => ':man_police_officer_light_skin_tone:',
+ '👮🏾♂️' => ':man_police_officer_medium_dark_skin_tone:',
+ '👮🏼♂️' => ':man_police_officer_medium_light_skin_tone:',
+ '👮🏽♂️' => ':man_police_officer_medium_skin_tone:',
+ '🙎🏿♂️' => ':man_pouting_dark_skin_tone:',
+ '🙎🏻♂️' => ':man_pouting_light_skin_tone:',
+ '🙎🏾♂️' => ':man_pouting_medium_dark_skin_tone:',
+ '🙎🏼♂️' => ':man_pouting_medium_light_skin_tone:',
+ '🙎🏽♂️' => ':man_pouting_medium_skin_tone:',
+ '🙋🏿♂️' => ':man_raising_hand_dark_skin_tone:',
+ '🙋🏻♂️' => ':man_raising_hand_light_skin_tone:',
+ '🙋🏾♂️' => ':man_raising_hand_medium_dark_skin_tone:',
+ '🙋🏼♂️' => ':man_raising_hand_medium_light_skin_tone:',
+ '🙋🏽♂️' => ':man_raising_hand_medium_skin_tone:',
+ '🚣🏿♂️' => ':man_rowing_boat_dark_skin_tone:',
+ '🚣🏻♂️' => ':man_rowing_boat_light_skin_tone:',
+ '🚣🏾♂️' => ':man_rowing_boat_medium_dark_skin_tone:',
+ '🚣🏼♂️' => ':man_rowing_boat_medium_light_skin_tone:',
+ '🚣🏽♂️' => ':man_rowing_boat_medium_skin_tone:',
+ '🏃🏿♂️' => ':man_running_dark_skin_tone:',
+ '🏃🏻♂️' => ':man_running_light_skin_tone:',
+ '🏃🏾♂️' => ':man_running_medium_dark_skin_tone:',
+ '🏃🏼♂️' => ':man_running_medium_light_skin_tone:',
+ '🏃🏽♂️' => ':man_running_medium_skin_tone:',
+ '🤷🏿♂️' => ':man_shrugging_dark_skin_tone:',
+ '🤷🏻♂️' => ':man_shrugging_light_skin_tone:',
+ '🤷🏾♂️' => ':man_shrugging_medium_dark_skin_tone:',
+ '🤷🏼♂️' => ':man_shrugging_medium_light_skin_tone:',
+ '🤷🏽♂️' => ':man_shrugging_medium_skin_tone:',
+ '🧍🏿♂️' => ':man_standing_dark_skin_tone:',
+ '🧍🏻♂️' => ':man_standing_light_skin_tone:',
+ '🧍🏾♂️' => ':man_standing_medium_dark_skin_tone:',
+ '🧍🏼♂️' => ':man_standing_medium_light_skin_tone:',
+ '🧍🏽♂️' => ':man_standing_medium_skin_tone:',
+ '🦸🏿♂️' => ':man_superhero_dark_skin_tone:',
+ '🦸🏻♂️' => ':man_superhero_light_skin_tone:',
+ '🦸🏾♂️' => ':man_superhero_medium_dark_skin_tone:',
+ '🦸🏼♂️' => ':man_superhero_medium_light_skin_tone:',
+ '🦸🏽♂️' => ':man_superhero_medium_skin_tone:',
+ '🦹🏿♂️' => ':man_supervillain_dark_skin_tone:',
+ '🦹🏻♂️' => ':man_supervillain_light_skin_tone:',
+ '🦹🏾♂️' => ':man_supervillain_medium_dark_skin_tone:',
+ '🦹🏼♂️' => ':man_supervillain_medium_light_skin_tone:',
+ '🦹🏽♂️' => ':man_supervillain_medium_skin_tone:',
+ '🏄🏿♂️' => ':man_surfing_dark_skin_tone:',
+ '🏄🏻♂️' => ':man_surfing_light_skin_tone:',
+ '🏄🏾♂️' => ':man_surfing_medium_dark_skin_tone:',
+ '🏄🏼♂️' => ':man_surfing_medium_light_skin_tone:',
+ '🏄🏽♂️' => ':man_surfing_medium_skin_tone:',
+ '🏊🏿♂️' => ':man_swimming_dark_skin_tone:',
+ '🏊🏻♂️' => ':man_swimming_light_skin_tone:',
+ '🏊🏾♂️' => ':man_swimming_medium_dark_skin_tone:',
+ '🏊🏼♂️' => ':man_swimming_medium_light_skin_tone:',
+ '🏊🏽♂️' => ':man_swimming_medium_skin_tone:',
+ '💁🏿♂️' => ':man_tipping_hand_dark_skin_tone:',
+ '💁🏻♂️' => ':man_tipping_hand_light_skin_tone:',
+ '💁🏾♂️' => ':man_tipping_hand_medium_dark_skin_tone:',
+ '💁🏼♂️' => ':man_tipping_hand_medium_light_skin_tone:',
+ '💁🏽♂️' => ':man_tipping_hand_medium_skin_tone:',
+ '🧛🏿♂️' => ':man_vampire_dark_skin_tone:',
+ '🧛🏻♂️' => ':man_vampire_light_skin_tone:',
+ '🧛🏾♂️' => ':man_vampire_medium_dark_skin_tone:',
+ '🧛🏼♂️' => ':man_vampire_medium_light_skin_tone:',
+ '🧛🏽♂️' => ':man_vampire_medium_skin_tone:',
+ '🚶🏿♂️' => ':man_walking_dark_skin_tone:',
+ '🚶🏻♂️' => ':man_walking_light_skin_tone:',
+ '🚶🏾♂️' => ':man_walking_medium_dark_skin_tone:',
+ '🚶🏼♂️' => ':man_walking_medium_light_skin_tone:',
+ '🚶🏽♂️' => ':man_walking_medium_skin_tone:',
+ '👳🏿♂️' => ':man_wearing_turban_dark_skin_tone:',
+ '👳🏻♂️' => ':man_wearing_turban_light_skin_tone:',
+ '👳🏾♂️' => ':man_wearing_turban_medium_dark_skin_tone:',
+ '👳🏼♂️' => ':man_wearing_turban_medium_light_skin_tone:',
+ '👳🏽♂️' => ':man_wearing_turban_medium_skin_tone:',
+ '👰🏿♂️' => ':man_with_veil_dark_skin_tone:',
+ '👰🏻♂️' => ':man_with_veil_light_skin_tone:',
+ '👰🏾♂️' => ':man_with_veil_medium_dark_skin_tone:',
+ '👰🏼♂️' => ':man_with_veil_medium_light_skin_tone:',
+ '👰🏽♂️' => ':man_with_veil_medium_skin_tone:',
+ '🧜🏿♀️' => ':mermaid_dark_skin_tone:',
+ '🧜🏻♀️' => ':mermaid_light_skin_tone:',
+ '🧜🏾♀️' => ':mermaid_medium_dark_skin_tone:',
+ '🧜🏼♀️' => ':mermaid_medium_light_skin_tone:',
+ '🧜🏽♀️' => ':mermaid_medium_skin_tone:',
+ '🧜🏿♂️' => ':merman_dark_skin_tone:',
+ '🧜🏻♂️' => ':merman_light_skin_tone:',
+ '🧜🏾♂️' => ':merman_medium_dark_skin_tone:',
+ '🧜🏼♂️' => ':merman_medium_light_skin_tone:',
+ '🧜🏽♂️' => ':merman_medium_skin_tone:',
+ '🧑🤝🧑' => ':people_holding_hands:',
+ '🧎🏿➡️' => ':person_kneeling_facing_right_dark_skin_tone:',
+ '🧎🏻➡️' => ':person_kneeling_facing_right_light_skin_tone:',
+ '🧎🏾➡️' => ':person_kneeling_facing_right_medium_dark_skin_tone:',
+ '🧎🏼➡️' => ':person_kneeling_facing_right_medium_light_skin_tone:',
+ '🧎🏽➡️' => ':person_kneeling_facing_right_medium_skin_tone:',
+ '🏃🏿➡️' => ':person_running_facing_right_dark_skin_tone:',
+ '🏃🏻➡️' => ':person_running_facing_right_light_skin_tone:',
+ '🏃🏾➡️' => ':person_running_facing_right_medium_dark_skin_tone:',
+ '🏃🏼➡️' => ':person_running_facing_right_medium_light_skin_tone:',
+ '🏃🏽➡️' => ':person_running_facing_right_medium_skin_tone:',
+ '🚶🏿➡️' => ':person_walking_facing_right_dark_skin_tone:',
+ '🚶🏻➡️' => ':person_walking_facing_right_light_skin_tone:',
+ '🚶🏾➡️' => ':person_walking_facing_right_medium_dark_skin_tone:',
+ '🚶🏼➡️' => ':person_walking_facing_right_medium_light_skin_tone:',
+ '🚶🏽➡️' => ':person_walking_facing_right_medium_skin_tone:',
+ '🧑🏿✈️' => ':pilot_dark_skin_tone:',
+ '🧑🏻✈️' => ':pilot_light_skin_tone:',
+ '🧑🏾✈️' => ':pilot_medium_dark_skin_tone:',
+ '🧑🏼✈️' => ':pilot_medium_light_skin_tone:',
+ '🧑🏽✈️' => ':pilot_medium_skin_tone:',
+ '🏳️⚧️' => ':transgender_flag:',
+ '🚴🏿♀️' => ':woman_biking_dark_skin_tone:',
+ '🚴🏻♀️' => ':woman_biking_light_skin_tone:',
+ '🚴🏾♀️' => ':woman_biking_medium_dark_skin_tone:',
+ '🚴🏼♀️' => ':woman_biking_medium_light_skin_tone:',
+ '🚴🏽♀️' => ':woman_biking_medium_skin_tone:',
+ '⛹️♀️' => ':woman_bouncing_ball:',
+ '⛹🏿♀️' => ':woman_bouncing_ball_dark_skin_tone:',
+ '⛹🏻♀️' => ':woman_bouncing_ball_light_skin_tone:',
+ '⛹🏾♀️' => ':woman_bouncing_ball_medium_dark_skin_tone:',
+ '⛹🏼♀️' => ':woman_bouncing_ball_medium_light_skin_tone:',
+ '⛹🏽♀️' => ':woman_bouncing_ball_medium_skin_tone:',
+ '🙇🏿♀️' => ':woman_bowing_dark_skin_tone:',
+ '🙇🏻♀️' => ':woman_bowing_light_skin_tone:',
+ '🙇🏾♀️' => ':woman_bowing_medium_dark_skin_tone:',
+ '🙇🏼♀️' => ':woman_bowing_medium_light_skin_tone:',
+ '🙇🏽♀️' => ':woman_bowing_medium_skin_tone:',
+ '🤸🏿♀️' => ':woman_cartwheeling_dark_skin_tone:',
+ '🤸🏻♀️' => ':woman_cartwheeling_light_skin_tone:',
+ '🤸🏾♀️' => ':woman_cartwheeling_medium_dark_skin_tone:',
+ '🤸🏼♀️' => ':woman_cartwheeling_medium_light_skin_tone:',
+ '🤸🏽♀️' => ':woman_cartwheeling_medium_skin_tone:',
+ '🧗🏿♀️' => ':woman_climbing_dark_skin_tone:',
+ '🧗🏻♀️' => ':woman_climbing_light_skin_tone:',
+ '🧗🏾♀️' => ':woman_climbing_medium_dark_skin_tone:',
+ '🧗🏼♀️' => ':woman_climbing_medium_light_skin_tone:',
+ '🧗🏽♀️' => ':woman_climbing_medium_skin_tone:',
+ '👷🏿♀️' => ':woman_construction_worker_dark_skin_tone:',
+ '👷🏻♀️' => ':woman_construction_worker_light_skin_tone:',
+ '👷🏾♀️' => ':woman_construction_worker_medium_dark_skin_tone:',
+ '👷🏼♀️' => ':woman_construction_worker_medium_light_skin_tone:',
+ '👷🏽♀️' => ':woman_construction_worker_medium_skin_tone:',
+ '🧔🏿♀️' => ':woman_dark_skin_tone_beard:',
+ '👱🏿♀️' => ':woman_dark_skin_tone_blond_hair:',
+ '🕵️♀️' => ':woman_detective:',
+ '🕵🏿♀️' => ':woman_detective_dark_skin_tone:',
+ '🕵🏻♀️' => ':woman_detective_light_skin_tone:',
+ '🕵🏾♀️' => ':woman_detective_medium_dark_skin_tone:',
+ '🕵🏼♀️' => ':woman_detective_medium_light_skin_tone:',
+ '🕵🏽♀️' => ':woman_detective_medium_skin_tone:',
+ '🧝🏿♀️' => ':woman_elf_dark_skin_tone:',
+ '🧝🏻♀️' => ':woman_elf_light_skin_tone:',
+ '🧝🏾♀️' => ':woman_elf_medium_dark_skin_tone:',
+ '🧝🏼♀️' => ':woman_elf_medium_light_skin_tone:',
+ '🧝🏽♀️' => ':woman_elf_medium_skin_tone:',
+ '🤦🏿♀️' => ':woman_facepalming_dark_skin_tone:',
+ '🤦🏻♀️' => ':woman_facepalming_light_skin_tone:',
+ '🤦🏾♀️' => ':woman_facepalming_medium_dark_skin_tone:',
+ '🤦🏼♀️' => ':woman_facepalming_medium_light_skin_tone:',
+ '🤦🏽♀️' => ':woman_facepalming_medium_skin_tone:',
+ '🧚🏿♀️' => ':woman_fairy_dark_skin_tone:',
+ '🧚🏻♀️' => ':woman_fairy_light_skin_tone:',
+ '🧚🏾♀️' => ':woman_fairy_medium_dark_skin_tone:',
+ '🧚🏼♀️' => ':woman_fairy_medium_light_skin_tone:',
+ '🧚🏽♀️' => ':woman_fairy_medium_skin_tone:',
+ '🙍🏿♀️' => ':woman_frowning_dark_skin_tone:',
+ '🙍🏻♀️' => ':woman_frowning_light_skin_tone:',
+ '🙍🏾♀️' => ':woman_frowning_medium_dark_skin_tone:',
+ '🙍🏼♀️' => ':woman_frowning_medium_light_skin_tone:',
+ '🙍🏽♀️' => ':woman_frowning_medium_skin_tone:',
+ '🙅🏿♀️' => ':woman_gesturing_no_dark_skin_tone:',
+ '🙅🏻♀️' => ':woman_gesturing_no_light_skin_tone:',
+ '🙅🏾♀️' => ':woman_gesturing_no_medium_dark_skin_tone:',
+ '🙅🏼♀️' => ':woman_gesturing_no_medium_light_skin_tone:',
+ '🙅🏽♀️' => ':woman_gesturing_no_medium_skin_tone:',
+ '🙆🏿♀️' => ':woman_gesturing_ok_dark_skin_tone:',
+ '🙆🏻♀️' => ':woman_gesturing_ok_light_skin_tone:',
+ '🙆🏾♀️' => ':woman_gesturing_ok_medium_dark_skin_tone:',
+ '🙆🏼♀️' => ':woman_gesturing_ok_medium_light_skin_tone:',
+ '🙆🏽♀️' => ':woman_gesturing_ok_medium_skin_tone:',
+ '💇🏿♀️' => ':woman_getting_haircut_dark_skin_tone:',
+ '💇🏻♀️' => ':woman_getting_haircut_light_skin_tone:',
+ '💇🏾♀️' => ':woman_getting_haircut_medium_dark_skin_tone:',
+ '💇🏼♀️' => ':woman_getting_haircut_medium_light_skin_tone:',
+ '💇🏽♀️' => ':woman_getting_haircut_medium_skin_tone:',
+ '💆🏿♀️' => ':woman_getting_massage_dark_skin_tone:',
+ '💆🏻♀️' => ':woman_getting_massage_light_skin_tone:',
+ '💆🏾♀️' => ':woman_getting_massage_medium_dark_skin_tone:',
+ '💆🏼♀️' => ':woman_getting_massage_medium_light_skin_tone:',
+ '💆🏽♀️' => ':woman_getting_massage_medium_skin_tone:',
+ '🏌️♀️' => ':woman_golfing:',
+ '🏌🏿♀️' => ':woman_golfing_dark_skin_tone:',
+ '🏌🏻♀️' => ':woman_golfing_light_skin_tone:',
+ '🏌🏾♀️' => ':woman_golfing_medium_dark_skin_tone:',
+ '🏌🏼♀️' => ':woman_golfing_medium_light_skin_tone:',
+ '🏌🏽♀️' => ':woman_golfing_medium_skin_tone:',
+ '💂🏿♀️' => ':woman_guard_dark_skin_tone:',
+ '💂🏻♀️' => ':woman_guard_light_skin_tone:',
+ '💂🏾♀️' => ':woman_guard_medium_dark_skin_tone:',
+ '💂🏼♀️' => ':woman_guard_medium_light_skin_tone:',
+ '💂🏽♀️' => ':woman_guard_medium_skin_tone:',
+ '👩🏿⚕️' => ':woman_health_worker_dark_skin_tone:',
+ '👩🏻⚕️' => ':woman_health_worker_light_skin_tone:',
+ '👩🏾⚕️' => ':woman_health_worker_medium_dark_skin_tone:',
+ '👩🏼⚕️' => ':woman_health_worker_medium_light_skin_tone:',
+ '👩🏽⚕️' => ':woman_health_worker_medium_skin_tone:',
+ '🧘🏿♀️' => ':woman_in_lotus_position_dark_skin_tone:',
+ '🧘🏻♀️' => ':woman_in_lotus_position_light_skin_tone:',
+ '🧘🏾♀️' => ':woman_in_lotus_position_medium_dark_skin_tone:',
+ '🧘🏼♀️' => ':woman_in_lotus_position_medium_light_skin_tone:',
+ '🧘🏽♀️' => ':woman_in_lotus_position_medium_skin_tone:',
+ '🧖🏿♀️' => ':woman_in_steamy_room_dark_skin_tone:',
+ '🧖🏻♀️' => ':woman_in_steamy_room_light_skin_tone:',
+ '🧖🏾♀️' => ':woman_in_steamy_room_medium_dark_skin_tone:',
+ '🧖🏼♀️' => ':woman_in_steamy_room_medium_light_skin_tone:',
+ '🧖🏽♀️' => ':woman_in_steamy_room_medium_skin_tone:',
+ '🤵🏿♀️' => ':woman_in_tuxedo_dark_skin_tone:',
+ '🤵🏻♀️' => ':woman_in_tuxedo_light_skin_tone:',
+ '🤵🏾♀️' => ':woman_in_tuxedo_medium_dark_skin_tone:',
+ '🤵🏼♀️' => ':woman_in_tuxedo_medium_light_skin_tone:',
+ '🤵🏽♀️' => ':woman_in_tuxedo_medium_skin_tone:',
+ '👩🏿⚖️' => ':woman_judge_dark_skin_tone:',
+ '👩🏻⚖️' => ':woman_judge_light_skin_tone:',
+ '👩🏾⚖️' => ':woman_judge_medium_dark_skin_tone:',
+ '👩🏼⚖️' => ':woman_judge_medium_light_skin_tone:',
+ '👩🏽⚖️' => ':woman_judge_medium_skin_tone:',
+ '🤹🏿♀️' => ':woman_juggling_dark_skin_tone:',
+ '🤹🏻♀️' => ':woman_juggling_light_skin_tone:',
+ '🤹🏾♀️' => ':woman_juggling_medium_dark_skin_tone:',
+ '🤹🏼♀️' => ':woman_juggling_medium_light_skin_tone:',
+ '🤹🏽♀️' => ':woman_juggling_medium_skin_tone:',
+ '🧎🏿♀️' => ':woman_kneeling_dark_skin_tone:',
+ '🧎🏻♀️' => ':woman_kneeling_light_skin_tone:',
+ '🧎🏾♀️' => ':woman_kneeling_medium_dark_skin_tone:',
+ '🧎🏼♀️' => ':woman_kneeling_medium_light_skin_tone:',
+ '🧎🏽♀️' => ':woman_kneeling_medium_skin_tone:',
+ '🏋️♀️' => ':woman_lifting_weights:',
+ '🏋🏿♀️' => ':woman_lifting_weights_dark_skin_tone:',
+ '🏋🏻♀️' => ':woman_lifting_weights_light_skin_tone:',
+ '🏋🏾♀️' => ':woman_lifting_weights_medium_dark_skin_tone:',
+ '🏋🏼♀️' => ':woman_lifting_weights_medium_light_skin_tone:',
+ '🏋🏽♀️' => ':woman_lifting_weights_medium_skin_tone:',
+ '🧔🏻♀️' => ':woman_light_skin_tone_beard:',
+ '👱🏻♀️' => ':woman_light_skin_tone_blond_hair:',
+ '🧙🏿♀️' => ':woman_mage_dark_skin_tone:',
+ '🧙🏻♀️' => ':woman_mage_light_skin_tone:',
+ '🧙🏾♀️' => ':woman_mage_medium_dark_skin_tone:',
+ '🧙🏼♀️' => ':woman_mage_medium_light_skin_tone:',
+ '🧙🏽♀️' => ':woman_mage_medium_skin_tone:',
+ '🧔🏾♀️' => ':woman_medium_dark_skin_tone_beard:',
+ '👱🏾♀️' => ':woman_medium_dark_skin_tone_blond_hair:',
+ '🧔🏼♀️' => ':woman_medium_light_skin_tone_beard:',
+ '👱🏼♀️' => ':woman_medium_light_skin_tone_blond_hair:',
+ '🧔🏽♀️' => ':woman_medium_skin_tone_beard:',
+ '👱🏽♀️' => ':woman_medium_skin_tone_blond_hair:',
+ '🚵🏿♀️' => ':woman_mountain_biking_dark_skin_tone:',
+ '🚵🏻♀️' => ':woman_mountain_biking_light_skin_tone:',
+ '🚵🏾♀️' => ':woman_mountain_biking_medium_dark_skin_tone:',
+ '🚵🏼♀️' => ':woman_mountain_biking_medium_light_skin_tone:',
+ '🚵🏽♀️' => ':woman_mountain_biking_medium_skin_tone:',
+ '👩🏿✈️' => ':woman_pilot_dark_skin_tone:',
+ '👩🏻✈️' => ':woman_pilot_light_skin_tone:',
+ '👩🏾✈️' => ':woman_pilot_medium_dark_skin_tone:',
+ '👩🏼✈️' => ':woman_pilot_medium_light_skin_tone:',
+ '👩🏽✈️' => ':woman_pilot_medium_skin_tone:',
+ '🤾🏿♀️' => ':woman_playing_handball_dark_skin_tone:',
+ '🤾🏻♀️' => ':woman_playing_handball_light_skin_tone:',
+ '🤾🏾♀️' => ':woman_playing_handball_medium_dark_skin_tone:',
+ '🤾🏼♀️' => ':woman_playing_handball_medium_light_skin_tone:',
+ '🤾🏽♀️' => ':woman_playing_handball_medium_skin_tone:',
+ '🤽🏿♀️' => ':woman_playing_water_polo_dark_skin_tone:',
+ '🤽🏻♀️' => ':woman_playing_water_polo_light_skin_tone:',
+ '🤽🏾♀️' => ':woman_playing_water_polo_medium_dark_skin_tone:',
+ '🤽🏼♀️' => ':woman_playing_water_polo_medium_light_skin_tone:',
+ '🤽🏽♀️' => ':woman_playing_water_polo_medium_skin_tone:',
+ '👮🏿♀️' => ':woman_police_officer_dark_skin_tone:',
+ '👮🏻♀️' => ':woman_police_officer_light_skin_tone:',
+ '👮🏾♀️' => ':woman_police_officer_medium_dark_skin_tone:',
+ '👮🏼♀️' => ':woman_police_officer_medium_light_skin_tone:',
+ '👮🏽♀️' => ':woman_police_officer_medium_skin_tone:',
+ '🙎🏿♀️' => ':woman_pouting_dark_skin_tone:',
+ '🙎🏻♀️' => ':woman_pouting_light_skin_tone:',
+ '🙎🏾♀️' => ':woman_pouting_medium_dark_skin_tone:',
+ '🙎🏼♀️' => ':woman_pouting_medium_light_skin_tone:',
+ '🙎🏽♀️' => ':woman_pouting_medium_skin_tone:',
+ '🙋🏿♀️' => ':woman_raising_hand_dark_skin_tone:',
+ '🙋🏻♀️' => ':woman_raising_hand_light_skin_tone:',
+ '🙋🏾♀️' => ':woman_raising_hand_medium_dark_skin_tone:',
+ '🙋🏼♀️' => ':woman_raising_hand_medium_light_skin_tone:',
+ '🙋🏽♀️' => ':woman_raising_hand_medium_skin_tone:',
+ '🚣🏿♀️' => ':woman_rowing_boat_dark_skin_tone:',
+ '🚣🏻♀️' => ':woman_rowing_boat_light_skin_tone:',
+ '🚣🏾♀️' => ':woman_rowing_boat_medium_dark_skin_tone:',
+ '🚣🏼♀️' => ':woman_rowing_boat_medium_light_skin_tone:',
+ '🚣🏽♀️' => ':woman_rowing_boat_medium_skin_tone:',
+ '🏃🏿♀️' => ':woman_running_dark_skin_tone:',
+ '🏃🏻♀️' => ':woman_running_light_skin_tone:',
+ '🏃🏾♀️' => ':woman_running_medium_dark_skin_tone:',
+ '🏃🏼♀️' => ':woman_running_medium_light_skin_tone:',
+ '🏃🏽♀️' => ':woman_running_medium_skin_tone:',
+ '🤷🏿♀️' => ':woman_shrugging_dark_skin_tone:',
+ '🤷🏻♀️' => ':woman_shrugging_light_skin_tone:',
+ '🤷🏾♀️' => ':woman_shrugging_medium_dark_skin_tone:',
+ '🤷🏼♀️' => ':woman_shrugging_medium_light_skin_tone:',
+ '🤷🏽♀️' => ':woman_shrugging_medium_skin_tone:',
+ '🧍🏿♀️' => ':woman_standing_dark_skin_tone:',
+ '🧍🏻♀️' => ':woman_standing_light_skin_tone:',
+ '🧍🏾♀️' => ':woman_standing_medium_dark_skin_tone:',
+ '🧍🏼♀️' => ':woman_standing_medium_light_skin_tone:',
+ '🧍🏽♀️' => ':woman_standing_medium_skin_tone:',
+ '🦸🏿♀️' => ':woman_superhero_dark_skin_tone:',
+ '🦸🏻♀️' => ':woman_superhero_light_skin_tone:',
+ '🦸🏾♀️' => ':woman_superhero_medium_dark_skin_tone:',
+ '🦸🏼♀️' => ':woman_superhero_medium_light_skin_tone:',
+ '🦸🏽♀️' => ':woman_superhero_medium_skin_tone:',
+ '🦹🏿♀️' => ':woman_supervillain_dark_skin_tone:',
+ '🦹🏻♀️' => ':woman_supervillain_light_skin_tone:',
+ '🦹🏾♀️' => ':woman_supervillain_medium_dark_skin_tone:',
+ '🦹🏼♀️' => ':woman_supervillain_medium_light_skin_tone:',
+ '🦹🏽♀️' => ':woman_supervillain_medium_skin_tone:',
+ '🏄🏿♀️' => ':woman_surfing_dark_skin_tone:',
+ '🏄🏻♀️' => ':woman_surfing_light_skin_tone:',
+ '🏄🏾♀️' => ':woman_surfing_medium_dark_skin_tone:',
+ '🏄🏼♀️' => ':woman_surfing_medium_light_skin_tone:',
+ '🏄🏽♀️' => ':woman_surfing_medium_skin_tone:',
+ '🏊🏿♀️' => ':woman_swimming_dark_skin_tone:',
+ '🏊🏻♀️' => ':woman_swimming_light_skin_tone:',
+ '🏊🏾♀️' => ':woman_swimming_medium_dark_skin_tone:',
+ '🏊🏼♀️' => ':woman_swimming_medium_light_skin_tone:',
+ '🏊🏽♀️' => ':woman_swimming_medium_skin_tone:',
+ '💁🏿♀️' => ':woman_tipping_hand_dark_skin_tone:',
+ '💁🏻♀️' => ':woman_tipping_hand_light_skin_tone:',
+ '💁🏾♀️' => ':woman_tipping_hand_medium_dark_skin_tone:',
+ '💁🏼♀️' => ':woman_tipping_hand_medium_light_skin_tone:',
+ '💁🏽♀️' => ':woman_tipping_hand_medium_skin_tone:',
+ '🧛🏿♀️' => ':woman_vampire_dark_skin_tone:',
+ '🧛🏻♀️' => ':woman_vampire_light_skin_tone:',
+ '🧛🏾♀️' => ':woman_vampire_medium_dark_skin_tone:',
+ '🧛🏼♀️' => ':woman_vampire_medium_light_skin_tone:',
+ '🧛🏽♀️' => ':woman_vampire_medium_skin_tone:',
+ '🚶🏿♀️' => ':woman_walking_dark_skin_tone:',
+ '🚶🏻♀️' => ':woman_walking_light_skin_tone:',
+ '🚶🏾♀️' => ':woman_walking_medium_dark_skin_tone:',
+ '🚶🏼♀️' => ':woman_walking_medium_light_skin_tone:',
+ '🚶🏽♀️' => ':woman_walking_medium_skin_tone:',
+ '👳🏿♀️' => ':woman_wearing_turban_dark_skin_tone:',
+ '👳🏻♀️' => ':woman_wearing_turban_light_skin_tone:',
+ '👳🏾♀️' => ':woman_wearing_turban_medium_dark_skin_tone:',
+ '👳🏼♀️' => ':woman_wearing_turban_medium_light_skin_tone:',
+ '👳🏽♀️' => ':woman_wearing_turban_medium_skin_tone:',
+ '👰🏿♀️' => ':woman_with_veil_dark_skin_tone:',
+ '👰🏻♀️' => ':woman_with_veil_light_skin_tone:',
+ '👰🏾♀️' => ':woman_with_veil_medium_dark_skin_tone:',
+ '👰🏼♀️' => ':woman_with_veil_medium_light_skin_tone:',
+ '👰🏽♀️' => ':woman_with_veil_medium_skin_tone:',
+ '🧑🏿🎨' => ':artist_dark_skin_tone:',
+ '🧑🏻🎨' => ':artist_light_skin_tone:',
+ '🧑🏾🎨' => ':artist_medium_dark_skin_tone:',
+ '🧑🏼🎨' => ':artist_medium_light_skin_tone:',
+ '🧑🏽🎨' => ':artist_medium_skin_tone:',
+ '🧑🏿🚀' => ':astronaut_dark_skin_tone:',
+ '🧑🏻🚀' => ':astronaut_light_skin_tone:',
+ '🧑🏾🚀' => ':astronaut_medium_dark_skin_tone:',
+ '🧑🏼🚀' => ':astronaut_medium_light_skin_tone:',
+ '🧑🏽🚀' => ':astronaut_medium_skin_tone:',
+ '⛓️💥' => ':broken_chain:',
+ '🧑🏿🍳' => ':cook_dark_skin_tone:',
+ '🧑🏻🍳' => ':cook_light_skin_tone:',
+ '🧑🏾🍳' => ':cook_medium_dark_skin_tone:',
+ '🧑🏼🍳' => ':cook_medium_light_skin_tone:',
+ '🧑🏽🍳' => ':cook_medium_skin_tone:',
+ '🧏♂️' => ':deaf_man:',
+ '🧏♀️' => ':deaf_woman:',
+ '😶🌫️' => ':face_in_clouds:',
+ '🧑🏿🏭' => ':factory_worker_dark_skin_tone:',
+ '🧑🏻🏭' => ':factory_worker_light_skin_tone:',
+ '🧑🏾🏭' => ':factory_worker_medium_dark_skin_tone:',
+ '🧑🏼🏭' => ':factory_worker_medium_light_skin_tone:',
+ '🧑🏽🏭' => ':factory_worker_medium_skin_tone:',
+ '🧑🏿🌾' => ':farmer_dark_skin_tone:',
+ '🧑🏻🌾' => ':farmer_light_skin_tone:',
+ '🧑🏾🌾' => ':farmer_medium_dark_skin_tone:',
+ '🧑🏼🌾' => ':farmer_medium_light_skin_tone:',
+ '🧑🏽🌾' => ':farmer_medium_skin_tone:',
+ '🧑🏿🚒' => ':firefighter_dark_skin_tone:',
+ '🧑🏻🚒' => ':firefighter_light_skin_tone:',
+ '🧑🏾🚒' => ':firefighter_medium_dark_skin_tone:',
+ '🧑🏼🚒' => ':firefighter_medium_light_skin_tone:',
+ '🧑🏽🚒' => ':firefighter_medium_skin_tone:',
+ '🏳️🌈' => ':gay_pride_flag:',
+ '🙂↔️' => ':head_shaking_horizontally:',
+ '🙂↕️' => ':head_shaking_vertically:',
+ '🧑⚕️' => ':health_worker:',
+ '❤️🔥' => ':heart_on_fire:',
+ '🧑⚖️' => ':judge:',
+ '👨🏿🎨' => ':man_artist_dark_skin_tone:',
+ '👨🏻🎨' => ':man_artist_light_skin_tone:',
+ '👨🏾🎨' => ':man_artist_medium_dark_skin_tone:',
+ '👨🏼🎨' => ':man_artist_medium_light_skin_tone:',
+ '👨🏽🎨' => ':man_artist_medium_skin_tone:',
+ '👨🏿🚀' => ':man_astronaut_dark_skin_tone:',
+ '👨🏻🚀' => ':man_astronaut_light_skin_tone:',
+ '👨🏾🚀' => ':man_astronaut_medium_dark_skin_tone:',
+ '👨🏼🚀' => ':man_astronaut_medium_light_skin_tone:',
+ '👨🏽🚀' => ':man_astronaut_medium_skin_tone:',
+ '🧔♂️' => ':man_beard:',
+ '🚴♂️' => ':man_biking:',
+ '👱♂️' => ':man_blond_hair:',
+ '🙇♂️' => ':man_bowing:',
+ '🤸♂️' => ':man_cartwheeling:',
+ '🧗♂️' => ':man_climbing:',
+ '👷♂️' => ':man_construction_worker:',
+ '👨🏿🍳' => ':man_cook_dark_skin_tone:',
+ '👨🏻🍳' => ':man_cook_light_skin_tone:',
+ '👨🏾🍳' => ':man_cook_medium_dark_skin_tone:',
+ '👨🏼🍳' => ':man_cook_medium_light_skin_tone:',
+ '👨🏽🍳' => ':man_cook_medium_skin_tone:',
+ '👨🏿🦲' => ':man_dark_skin_tone_bald:',
+ '👨🏿🦱' => ':man_dark_skin_tone_curly_hair:',
+ '👨🏿🦰' => ':man_dark_skin_tone_red_hair:',
+ '👨🏿🦳' => ':man_dark_skin_tone_white_hair:',
+ '🧝♂️' => ':man_elf:',
+ '🤦♂️' => ':man_facepalming:',
+ '👨🏿🏭' => ':man_factory_worker_dark_skin_tone:',
+ '👨🏻🏭' => ':man_factory_worker_light_skin_tone:',
+ '👨🏾🏭' => ':man_factory_worker_medium_dark_skin_tone:',
+ '👨🏼🏭' => ':man_factory_worker_medium_light_skin_tone:',
+
1E80
'👨🏽🏭' => ':man_factory_worker_medium_skin_tone:',
+ '🧚♂️' => ':man_fairy:',
+ '👨🏿🌾' => ':man_farmer_dark_skin_tone:',
+ '👨🏻🌾' => ':man_farmer_light_skin_tone:',
+ '👨🏾🌾' => ':man_farmer_medium_dark_skin_tone:',
+ '👨🏼🌾' => ':man_farmer_medium_light_skin_tone:',
+ '👨🏽🌾' => ':man_farmer_medium_skin_tone:',
+ '👨🏿🍼' => ':man_feeding_baby_dark_skin_tone:',
+ '👨🏻🍼' => ':man_feeding_baby_light_skin_tone:',
+ '👨🏾🍼' => ':man_feeding_baby_medium_dark_skin_tone:',
+ '👨🏼🍼' => ':man_feeding_baby_medium_light_skin_tone:',
+ '👨🏽🍼' => ':man_feeding_baby_medium_skin_tone:',
+ '👨🏿🚒' => ':man_firefighter_dark_skin_tone:',
+ '👨🏻🚒' => ':man_firefighter_light_skin_tone:',
+ '👨🏾🚒' => ':man_firefighter_medium_dark_skin_tone:',
+ '👨🏼🚒' => ':man_firefighter_medium_light_skin_tone:',
+ '👨🏽🚒' => ':man_firefighter_medium_skin_tone:',
+ '🙍♂️' => ':man_frowning:',
+ '🧞♂️' => ':man_genie:',
+ '🙅♂️' => ':man_gesturing_no:',
+ '🙆♂️' => ':man_gesturing_ok:',
+ '💇♂️' => ':man_getting_haircut:',
+ '💆♂️' => ':man_getting_massage:',
+ '💂♂️' => ':man_guard:',
+ '👨⚕️' => ':man_health_worker:',
+ '🧘♂️' => ':man_in_lotus_position:',
+ '👨🏿🦽' => ':man_in_manual_wheelchair_dark_skin_tone:',
+ '👨🏻🦽' => ':man_in_manual_wheelchair_light_skin_tone:',
+ '👨🏾🦽' => ':man_in_manual_wheelchair_medium_dark_skin_tone:',
+ '👨🏼🦽' => ':man_in_manual_wheelchair_medium_light_skin_tone:',
+ '👨🏽🦽' => ':man_in_manual_wheelchair_medium_skin_tone:',
+ '👨🏿🦼' => ':man_in_motorized_wheelchair_dark_skin_tone:',
+ '👨🏻🦼' => ':man_in_motorized_wheelchair_light_skin_tone:',
+ '👨🏾🦼' => ':man_in_motorized_wheelchair_medium_dark_skin_tone:',
+ '👨🏼🦼' => ':man_in_motorized_wheelchair_medium_light_skin_tone:',
+ '👨🏽🦼' => ':man_in_motorized_wheelchair_medium_skin_tone:',
+ '🧖♂️' => ':man_in_steamy_room:',
+ '🤵♂️' => ':man_in_tuxedo:',
+ '👨⚖️' => ':man_judge:',
+ '🤹♂️' => ':man_juggling:',
+ '🧎♂️' => ':man_kneeling:',
+ '👨🏻🦲' => ':man_light_skin_tone_bald:',
+ '👨🏻🦱' => ':man_light_skin_tone_curly_hair:',
+ '👨🏻🦰' => ':man_light_skin_tone_red_hair:',
+ '👨🏻🦳' => ':man_light_skin_tone_white_hair:',
+ '🧙♂️' => ':man_mage:',
+ '👨🏿🔧' => ':man_mechanic_dark_skin_tone:',
+ '👨🏻🔧' => ':man_mechanic_light_skin_tone:',
+ '👨🏾🔧' => ':man_mechanic_medium_dark_skin_tone:',
+ '👨🏼🔧' => ':man_mechanic_medium_light_skin_tone:',
+ '👨🏽🔧' => ':man_mechanic_medium_skin_tone:',
+ '👨🏾🦲' => ':man_medium_dark_skin_tone_bald:',
+ '👨🏾🦱' => ':man_medium_dark_skin_tone_curly_hair:',
+ '👨🏾🦰' => ':man_medium_dark_skin_tone_red_hair:',
+ '👨🏾🦳' => ':man_medium_dark_skin_tone_white_hair:',
+ '👨🏼🦲' => ':man_medium_light_skin_tone_bald:',
+ '👨🏼🦱' => ':man_medium_light_skin_tone_curly_hair:',
+ '👨🏼🦰' => ':man_medium_light_skin_tone_red_hair:',
+ '👨🏼🦳' => ':man_medium_light_skin_tone_white_hair:',
+ '👨🏽🦲' => ':man_medium_skin_tone_bald:',
+ '👨🏽🦱' => ':man_medium_skin_tone_curly_hair:',
+ '👨🏽🦰' => ':man_medium_skin_tone_red_hair:',
+ '👨🏽🦳' => ':man_medium_skin_tone_white_hair:',
+ '🚵♂️' => ':man_mountain_biking:',
+ '👨🏿💼' => ':man_office_worker_dark_skin_tone:',
+ '👨🏻💼' => ':man_office_worker_light_skin_tone:',
+ '👨🏾💼' => ':man_office_worker_medium_dark_skin_tone:',
+ '👨🏼💼' => ':man_office_worker_medium_light_skin_tone:',
+ '👨🏽💼' => ':man_office_worker_medium_skin_tone:',
+ '👨✈️' => ':man_pilot:',
+ '🤾♂️' => ':man_playing_handball:',
+ '🤽♂️' => ':man_playing_water_polo:',
+ '👮♂️' => ':man_police_officer:',
+ '🙎♂️' => ':man_pouting:',
+ '🙋♂️' => ':man_raising_hand:',
+ '🚣♂️' => ':man_rowing_boat:',
+ '🏃♂️' => ':man_running:',
+ '👨🏿🔬' => ':man_scientist_dark_skin_tone:',
+ '👨🏻🔬' => ':man_scientist_light_skin_tone:',
+ '👨🏾🔬' => ':man_scientist_medium_dark_skin_tone:',
+ '👨🏼🔬' => ':man_scientist_medium_light_skin_tone:',
+ '👨🏽🔬' => ':man_scientist_medium_skin_tone:',
+ '🤷♂️' => ':man_shrugging:',
+ '👨🏿🎤' => ':man_singer_dark_skin_tone:',
+ '👨🏻🎤' => ':man_singer_light_skin_tone:',
+ '👨🏾🎤' => ':man_singer_medium_dark_skin_tone:',
+ '👨🏼🎤' => ':man_singer_medium_light_skin_tone:',
+ '👨🏽🎤' => ':man_singer_medium_skin_tone:',
+ '🧍♂️' => ':man_standing:',
+ '👨🏿🎓' => ':man_student_dark_skin_tone:',
+ '👨🏻🎓' => ':man_student_light_skin_tone:',
+ '👨🏾🎓' => ':man_student_medium_dark_skin_tone:',
+ '👨🏼🎓' => ':man_student_medium_light_skin_tone:',
+ '👨🏽🎓' => ':man_student_medium_skin_tone:',
+ '🦸♂️' => ':man_superhero:',
+ '🦹♂️' => ':man_supervillain:',
+ '🏄♂️' => ':man_surfing:',
+ '🏊♂️' => ':man_swimming:',
+ '👨🏿🏫' => ':man_teacher_dark_skin_tone:',
+ '👨🏻🏫' => ':man_teacher_light_skin_tone:',
+ '👨🏾🏫' => ':man_teacher_medium_dark_skin_tone:',
+ '👨🏼🏫' => ':man_teacher_medium_light_skin_tone:',
+ '👨🏽🏫' => ':man_teacher_medium_skin_tone:',
+ '👨🏿💻' => ':man_technologist_dark_skin_tone:',
+ '👨🏻💻' => ':man_technologist_light_skin_tone:',
+ '👨🏾💻' => ':man_technologist_medium_dark_skin_tone:',
+ '👨🏼💻' => ':man_technologist_medium_light_skin_tone:',
+ '👨🏽💻' => ':man_technologist_medium_skin_tone:',
+ '💁♂️' => ':man_tipping_hand:',
+ '🧛♂️' => ':man_vampire:',
+ '🚶♂️' => ':man_walking:',
+ '👳♂️' => ':man_wearing_turban:',
+ '👰♂️' => ':man_with_veil:',
+ '👨🏿🦯' => ':man_with_white_cane_dark_skin_tone:',
+ '👨🏻🦯' => ':man_with_white_cane_light_skin_tone:',
+ '👨🏾🦯' => ':man_with_white_cane_medium_dark_skin_tone:',
+ '👨🏼🦯' => ':man_with_white_cane_medium_light_skin_tone:',
+ '👨🏽🦯' => ':man_with_white_cane_medium_skin_tone:',
+ '🧟♂️' => ':man_zombie:',
+ '🧑🏿🔧' => ':mechanic_dark_skin_tone:',
+ '🧑🏻🔧' => ':mechanic_light_skin_tone:',
+ '🧑🏾🔧' => ':mechanic_medium_dark_skin_tone:',
+ '🧑🏼🔧' => ':mechanic_medium_light_skin_tone:',
+ '🧑🏽🔧' => ':mechanic_medium_skin_tone:',
+ '👯♂️' => ':men_with_bunny_ears:',
+ '🤼♂️' => ':men_wrestling:',
+ '❤️🩹' => ':mending_heart:',
+ '🧜♀️' => ':mermaid:',
+ '🧜♂️' => ':merman:',
+ '🧑🏿🎄' => ':mx_claus_dark_skin_tone:',
+ '🧑🏻🎄' => ':mx_claus_light_skin_tone:',
+ '🧑🏾🎄' => ':mx_claus_medium_dark_skin_tone:',
+ '🧑🏼🎄' => ':mx_claus_medium_light_skin_tone:',
+ '🧑🏽🎄' => ':mx_claus_medium_skin_tone:',
+ '🧑
F438
💼' => ':office_worker_dark_skin_tone:',
+ '🧑🏻💼' => ':office_worker_light_skin_tone:',
+ '🧑🏾💼' => ':office_worker_medium_dark_skin_tone:',
+ '🧑🏼💼' => ':office_worker_medium_light_skin_tone:',
+ '🧑🏽💼' => ':office_worker_medium_skin_tone:',
+ '🧑🏿🦲' => ':person_dark_skin_tone_bald:',
+ '🧑🏿🦱' => ':person_dark_skin_tone_curly_hair:',
+ '🧑🏿🦰' => ':person_dark_skin_tone_red_hair:',
+ '🧑🏿🦳' => ':person_dark_skin_tone_white_hair:',
+ '🧑🏿🍼' => ':person_feeding_baby_dark_skin_tone:',
+ '🧑🏻🍼' => ':person_feeding_baby_light_skin_tone:',
+ '🧑🏾🍼' => ':person_feeding_baby_medium_dark_skin_tone:',
+ '🧑🏼🍼' => ':person_feeding_baby_medium_light_skin_tone:',
+ '🧑🏽🍼' => ':person_feeding_baby_medium_skin_tone:',
+ '🧑🏿🦽' => ':person_in_manual_wheelchair_dark_skin_tone:',
+ '🧑🏻🦽' => ':person_in_manual_wheelchair_light_skin_tone:',
+ '🧑🏾🦽' => ':person_in_manual_wheelchair_medium_dark_skin_tone:',
+ '🧑🏼🦽' => ':person_in_manual_wheelchair_medium_light_skin_tone:',
+ '🧑🏽🦽' => ':person_in_manual_wheelchair_medium_skin_tone:',
+ '🧑🏿🦼' => ':person_in_motorized_wheelchair_dark_skin_tone:',
+ '🧑🏻🦼' => ':person_in_motorized_wheelchair_light_skin_tone:',
+ '🧑🏾🦼' => ':person_in_motorized_wheelchair_medium_dark_skin_tone:',
+ '🧑🏼🦼' => ':person_in_motorized_wheelchair_medium_light_skin_tone:',
+ '🧑🏽🦼' => ':person_in_motorized_wheelchair_medium_skin_tone:',
+ '🧎➡️' => ':person_kneeling_facing_right:',
+ '🧑🏻🦲' => ':person_light_skin_tone_bald:',
+ '🧑🏻🦱' => ':person_light_skin_tone_curly_hair:',
+ '🧑🏻🦰' => ':person_light_skin_tone_red_hair:',
+ '🧑🏻🦳' => ':person_light_skin_tone_white_hair:',
+ '🧑🏾🦲' => ':person_medium_dark_skin_tone_bald:',
+ '🧑🏾🦱' => ':person_medium_dark_skin_tone_curly_hair:',
+ '🧑🏾🦰' => ':person_medium_dark_skin_tone_red_hair:',
+ '🧑🏾🦳' => ':person_medium_dark_skin_tone_white_hair:',
+ '🧑🏼🦲' => ':person_medium_light_skin_tone_bald:',
+ '🧑🏼🦱' => ':person_medium_light_skin_tone_curly_hair:',
+ '🧑🏼🦰' => ':person_medium_light_skin_tone_red_hair:',
+ '🧑🏼🦳' => ':person_medium_light_skin_tone_white_hair:',
+ '🧑🏽🦲' => ':person_medium_skin_tone_bald:',
+ '🧑🏽🦱' => ':person_medium_skin_tone_curly_hair:',
+ '🧑🏽🦰' => ':person_medium_skin_tone_red_hair:',
+ '🧑🏽🦳' => ':person_medium_skin_tone_white_hair:',
+ '🏃➡️' => ':person_running_facing_right:',
+ '🚶➡️' => ':person_walking_facing_right:',
+ '🧑🏿🦯' => ':person_with_white_cane_dark_skin_tone:',
+ '🧑🏻🦯' => ':person_with_white_cane_light_skin_tone:',
+ '🧑🏾🦯' => ':person_with_white_cane_medium_dark_skin_tone:',
+ '🧑🏼🦯' => ':person_with_white_cane_medium_light_skin_tone:',
+ '🧑🏽🦯' => ':person_with_white_cane_medium_skin_tone:',
+ '🧑✈️' => ':pilot:',
+ '🏴☠️' => ':pirate_flag:',
+ '🐻❄️' => ':polar_bear:',
+ '🧑🏿🔬' => ':scientist_dark_skin_tone:',
+ '🧑🏻🔬' => ':scientist_light_skin_tone:',
+ '🧑🏾🔬' => ':scientist_medium_dark_skin_tone:',
+ '🧑🏼🔬' => ':scientist_medium_light_skin_tone:',
+ '🧑🏽🔬' => ':scientist_medium_skin_tone:',
+ '🧑🏿🎤' => ':singer_dark_skin_tone:',
+ '🧑🏻🎤' => ':singer_light_skin_tone:',
+ '🧑🏾🎤' => ':singer_medium_dark_skin_tone:',
+ '🧑🏼🎤' => ':singer_medium_light_skin_tone:',
+ '🧑🏽🎤' => ':singer_medium_skin_tone:',
+ '🧑🏿🎓' => ':student_dark_skin_tone:',
+ '🧑🏻🎓' => ':student_light_skin_tone:',
+ '🧑🏾🎓' => ':student_medium_dark_skin_tone:',
+ '🧑🏼🎓' => ':student_medium_light_skin_tone:',
+ '🧑🏽🎓' => ':student_medium_skin_tone:',
+ '🧑🏿🏫' => ':teacher_dark_skin_tone:',
+ '🧑🏻🏫' => ':teacher_light_skin_tone:',
+ '🧑🏾🏫' => ':teacher_medium_dark_skin_tone:',
+ '🧑🏼🏫' => ':teacher_medium_light_skin_tone:',
+ '🧑🏽🏫' => ':teacher_medium_skin_tone:',
+ '🧑🏿💻' => ':technologist_dark_skin_tone:',
+ '🧑🏻💻' => ':technologist_light_skin_tone:',
+ '🧑🏾💻' => ':technologist_medium_dark_skin_tone:',
+ '🧑🏼💻' => ':technologist_medium_light_skin_tone:',
+ '🧑🏽💻' => ':technologist_medium_skin_tone:',
+ '👩🏿🎨' => ':woman_artist_dark_skin_tone:',
+ '👩🏻🎨' => ':woman_artist_light_skin_tone:',
+ '👩🏾🎨' => ':woman_artist_medium_dark_skin_tone:',
+ '👩🏼🎨' => ':woman_artist_medium_light_skin_tone:',
+ '👩🏽🎨' => ':woman_artist_medium_skin_tone:',
+ '👩🏿🚀' => ':woman_astronaut_dark_skin_tone:',
+ '👩🏻🚀' => ':woman_astronaut_light_skin_tone:',
+ '👩🏾🚀' => ':woman_astronaut_medium_dark_skin_tone:',
+ '👩🏼🚀' => ':woman_astronaut_medium_light_skin_tone:',
+ '👩🏽🚀' => ':woman_astronaut_medium_skin_tone:',
+ '🧔♀️' => ':woman_beard:',
+ '🚴♀️' => ':woman_biking:',
+ '👱♀️' => ':woman_blond_hair:',
+ '🙇♀️' => ':woman_bowing:',
+ '🤸♀️' => ':woman_cartwheeling:',
+ '🧗♀️' => ':woman_climbing:',
+ '👷♀️' => ':woman_construction_worker:',
+ '👩🏿🍳' => ':woman_cook_dark_skin_tone:',
+ '👩🏻🍳' => ':woman_cook_light_skin_tone:',
+ '👩🏾🍳' => ':woman_cook_medium_dark_skin_tone:',
+ '👩🏼🍳' => ':woman_cook_medium_light_skin_tone:',
+ '👩🏽🍳' => ':woman_cook_medium_skin_tone:',
+ '👩🏿🦲' => ':woman_dark_skin_tone_bald:',
+ '👩🏿🦱' => ':woman_dark_skin_tone_curly_hair:',
+ '👩🏿🦰' => ':woman_dark_skin_tone_red_hair:',
+ '👩🏿🦳' => ':woman_dark_skin_tone_white_hair:',
+ '🧝♀️' => ':woman_elf:',
+ '🤦♀️' => ':woman_facepalming:',
+ '👩🏿🏭' => ':woman_factory_worker_dark_skin_tone:',
+ '👩🏻🏭' => ':woman_factory_worker_light_skin_tone:',
+ '👩🏾🏭' => ':woman_factory_worker_medium_dark_skin_tone:',
+ '👩🏼🏭' => ':woman_factory_worker_medium_light_skin_tone:',
+ '👩🏽🏭' => ':woman_factory_worker_medium_skin_tone:',
+ '🧚♀️' => ':woman_fairy:',
+ '👩🏿🌾' => ':woman_farmer_dark_skin_tone:',
+ '👩🏻🌾' => ':woman_farmer_light_skin_tone:',
+ '👩🏾🌾' => ':woman_farmer_medium_dark_skin_tone:',
+ '👩🏼🌾' => ':woman_farmer_medium_light_skin_tone:',
+ '👩🏽🌾' => ':woman_farmer_medium_skin_tone:',
+ '👩🏿🍼' => ':woman_feeding_baby_dark_skin_tone:',
+ '👩🏻🍼' => ':woman_feeding_baby_light_skin_tone:',
+ '👩🏾🍼' => ':woman_feeding_baby_medium_dark_skin_tone:',
+ '👩🏼🍼' => ':woman_feeding_baby_medium_light_skin_tone:',
+ '👩🏽🍼' => ':woman_feeding_baby_medium_skin_tone:',
+ '👩🏿🚒' => ':woman_firefighter_dark_skin_tone:',
+ '👩🏻🚒' => ':woman_firefighter_light_skin_tone:',
+ '👩🏾🚒' => ':woman_firefighter_medium_dark_skin_tone:',
+ '👩🏼🚒' => ':woman_firefighter_medium_light_skin_tone:',
+ '👩🏽🚒' => ':woman_firefighter_medium_skin_tone:',
+ '🙍♀️' => ':woman_frowning:',
+ '🧞♀️' => ':woman_genie:',
+ '🙅♀️' => ':woman_gesturing_no:',
+ '🙆♀️' => ':woman_gesturing_ok:',
+ '💇♀️' => ':woman_getting_haircut:',
+ '💆♀️' => ':woman_getting_massage:',
+ '💂♀️' => ':woman_guard:',
+ '👩⚕️' => ':woman_health_worker:',
+ '🧘♀️' => ':woman_in_lotus_position:',
+ '👩🏿🦽' => ':woman_in_manual_wheelchair_dark_skin_tone:',
+ '👩🏻🦽' => ':woman_in_manual_wheelchair_light_skin_tone:',
+ '👩🏾🦽' => ':woman_in_manual_wheelchair_medium_dark_skin_tone:',
+ '👩🏼🦽' => ':woman_in_manual_wheelchair_medium_light_skin_tone:',
+ '👩🏽🦽' => ':woman_in_manual_wheelchair_medium_skin_tone:',
+ '👩🏿🦼' => ':woman_in_motorized_wheelchair_dark_skin_tone:',
+ '👩🏻🦼' => ':woman_in_motorized_wheelchair_light_skin_tone:',
+ '👩🏾🦼' => ':woman_in_motorized_wheelchair_medium_dark_skin_tone:',
+ '👩🏼🦼' => ':woman_in_motorized_wheelchair_medium_light_skin_tone:',
+ '👩🏽🦼' => ':woman_in_motorized_wheelchair_medium_skin_tone:',
+ '🧖♀️' => ':woman_in_steamy_room:',
+ '🤵♀️' => ':woman_in_tuxedo:',
+ '👩⚖️' => ':woman_judge:',
+ '🤹♀️' => ':woman_juggling:',
+ '🧎♀️' => ':woman_kneeling:',
+ '👩🏻🦲' => ':woman_light_skin_tone_bald:',
+ '👩🏻🦱' => ':woman_light_skin_tone_curly_hair:',
+ '👩🏻🦰' => ':woman_light_skin_tone_red_hair:',
+ '👩🏻🦳' => ':woman_light_skin_tone_white_hair:',
+ '🧙♀️' => ':woman_mage:',
+ '👩🏿🔧' => ':woman_mechanic_dark_skin_tone:',
+ '👩🏻🔧' => ':woman_mechanic_light_skin_tone:',
+ '👩🏾🔧' => ':woman_mechanic_medium_dark_skin_tone:',
+ '👩🏼🔧' => ':woman_mechanic_medium_light_skin_tone:',
+ '👩🏽🔧' => ':woman_mechanic_medium_skin_tone:',
+ '👩🏾🦲' => ':woman_medium_dark_skin_tone_bald:',
+ '👩🏾🦱' => ':woman_medium_dark_skin_tone_curly_hair:',
+ '👩🏾🦰' => ':woman_medium_dark_skin_tone_red_hair:',
+ '👩🏾🦳' => ':woman_medium_dark_skin_tone_white_hair:',
+ '👩🏼🦲' => ':woman_medium_light_skin_tone_bald:',
+ '👩🏼🦱' => ':woman_medium_light_skin_tone_curly_hair:',
+ '👩🏼🦰' => ':woman_medium_light_skin_tone_red_hair:',
+ '👩🏼🦳' => ':woman_medium_light_skin_tone_white_hair:',
+ '👩🏽🦲' => ':woman_medium_skin_tone_bald:',
+ '👩🏽🦱' => ':woman_medium_skin_tone_curly_hair:',
+ '👩🏽🦰' => ':woman_medium_skin_tone_red_hair:',
+ '👩🏽🦳' => ':woman_medium_skin_tone_white_hair:',
+ '🚵♀️' => ':woman_mountain_biking:',
+ '👩🏿💼' => ':woman_office_worker_dark_skin_tone:',
+ '👩🏻💼' => ':woman_office_worker_light_skin_tone:',
+ '👩🏾💼' => ':woman_office_worker_medium_dark_skin_tone:',
+ '👩🏼💼' => ':woman_office_worker_medium_light_skin_tone:',
+ '👩🏽💼' => ':woman_office_worker_medium_skin_tone:',
+ '👩✈️' => ':woman_pilot:',
+ '🤾♀️' => ':woman_playing_handball:',
+ '🤽♀️' => ':woman_playing_water_polo:',
+ '👮♀️' => ':woman_police_officer:',
+ '🙎♀️' => ':woman_pouting:',
+ '🙋♀️' => ':woman_raising_hand:',
+ '🚣♀️' => ':woman_rowing_boat:',
+ '🏃♀️' => ':woman_running:',
+ '👩🏿🔬' => ':woman_scientist_dark_skin_tone:',
+ '👩🏻🔬' => ':woman_scientist_light_skin_tone:',
+ '👩🏾🔬' => ':woman_scientist_medium_dark_skin_tone:',
+ '👩🏼🔬' => ':woman_scientist_medium_light_skin_tone:',
+ '👩🏽🔬' => ':woman_scientist_medium_skin_tone:',
+ '🤷♀️' => ':woman_shrugging:',
+ '👩🏿🎤' => ':woman_singer_dark_skin_tone:',
+ '👩🏻🎤' => ':woman_singer_light_skin_tone:',
+ '👩🏾🎤' => ':woman_singer_medium_dark_skin_tone:',
+ '👩🏼🎤' => ':woman_singer_medium_light_skin_tone:',
+ '👩🏽🎤' => ':woman_singer_medium_skin_tone:',
+ '🧍♀️' => ':woman_standing:',
+ '👩🏿🎓' => ':woman_student_dark_skin_tone:',
+ '👩🏻🎓' => ':woman_student_light_skin_tone:',
+ '👩🏾🎓' => ':woman_student_medium_dark_skin_tone:',
+ '👩🏼🎓' => ':woman_student_medium_light_skin_tone:',
+ '👩🏽🎓' => ':woman_student_medium_skin_tone:',
+ '🦸♀️' => ':woman_superhero:',
+ '🦹♀️' => ':woman_supervillain:',
+ '🏄♀️' => ':woman_surfing:',
+ '🏊♀️' => ':woman_swimming:',
+ '👩🏿🏫' => ':woman_teacher_dark_skin_tone:',
+ '👩🏻🏫' => ':woman_teacher_light_skin_tone:',
+ '👩🏾🏫' => ':woman_teacher_medium_dark_skin_tone:',
+ '👩🏼🏫' => ':woman_teacher_medium_light_skin_tone:',
+ '👩🏽🏫' => ':woman_teacher_medium_skin_tone:',
+ '👩🏿💻' => ':woman_technologist_dark_skin_tone:',
+ '👩🏻💻' => ':woman_technologist_light_skin_tone:',
+ '👩🏾💻' => ':woman_technologist_medium_dark_skin_tone:',
+ '👩🏼💻' => ':woman_technologist_medium_light_skin_tone:',
+ '👩🏽💻' => ':woman_technologist_medium_skin_tone:',
+ '💁♀️' => ':woman_tipping_hand:',
+ '🧛♀️' => ':woman_vampire:',
+ '🚶♀️' => ':woman_walking:',
+ '👳♀️' => ':woman_wearing_turban:',
+ '👰♀️' => ':woman_with_veil:',
+ '👩🏿🦯' => ':woman_with_white_cane_dark_skin_tone:',
+ '👩🏻🦯' => ':woman_with_white_cane_light_skin_tone:',
+ '👩🏾🦯' => ':woman_with_white_cane_medium_dark_skin_tone:',
+ '👩🏼🦯' => ':woman_with_white_cane_medium_light_skin_tone:',
+ '👩🏽🦯' => ':woman_with_white_cane_medium_skin_tone:',
+ '🧟♀️' => ':woman_zombie:',
+ '👯♀️' => ':women_with_bunny_ears:',
+ '🤼♀️' => ':women_wrestling:',
+ '🧑🎨' => ':artist:',
+ '*️⃣' => ':asterisk:',
+ '🧑🚀' => ':astronaut:',
+ '🐦⬛' => ':black_bird:',
+ '🐈⬛' => ':black_cat:',
+ '🍄🟫' => ':brown_mushroom:',
+ '🧑🍳' => ':cook:',
'8️⃣' => ':eight:',
- '👁🗨' => ':eye_in_speech_bubble:',
+ '😮💨' => ':face_exhaling:',
+ '😵💫' => ':face_with_spiral_eyes:',
+ '🧑🏭' => ':factory_worker:',
+ '🧑🧒' => ':family_adult_child:',
+ '👨👦' => ':family_man_boy:',
+ '👨👧' => ':family_man_girl:',
+ '👩👦' => ':family_woman_boy:',
+ '👩👧' => ':family_woman_girl:',
+ '🧑🌾' => ':farmer:',
+ '🧑🚒' => ':firefighter:',
'5️⃣' => ':five:',
'4️⃣' => ':four:',
+ '#️⃣' => ':hash:',
+ '🍋🟩' => ':lime:',
+ '👨🎨' => ':man_artist:',
+ '👨🚀' => ':man_astronaut:',
+ '👨🦲' => ':man_bald:',
+ '👨🍳' => ':man_cook:',
+ '👨🦱' => ':man_curly_hair:',
+ '👨🏭' => ':man_factory_worker:',
+ '👨🌾' => ':man_farmer:',
+ '👨🍼' => ':man_feeding_baby:',
+ '👨🚒' => ':man_firefighter:',
+ '👨🦽' => ':man_in_manual_wheelchair:',
+ '👨🦼' => ':man_in_motorized_wheelchair:',
+ '👨🔧' => ':man_mechanic:',
+ '👨💼' => ':man_office_worker:',
+ '👨🦰' => ':man_red_hair:',
+ '👨🔬' => ':man_scientist:',
+ '👨🎤' => ':man_singer:',
+ '👨🎓' => ':man_student:',
+ '👨🏫' => ':man_teacher:',
+ '👨💻' => ':man_technologist:',
+ '👨🦳' => ':man_white_hair:',
+ '👨🦯' => ':man_with_white_cane:',
+ '🧑🔧' => ':mechanic:',
+ '🧑🎄' => ':mx_claus:',
'9️⃣' => ':nine:',
+ '🧑💼' => ':office_worker:',
'1️⃣' => ':one:',
+ '🧑🦲' => ':person_bald:',
+ '🧑🦱' => ':person_curly_hair:',
+ '🧑🍼' => ':person_feeding_baby:',
+ '🧑🦽' => ':person_in_manual_wheelchair:',
+ '🧑🦼' => ':person_in_motorized_wheelchair:',
+ '🧑🦰' => ':person_red_hair:',
+ '🧑🦳' => ':person_white_hair:',
+ '🧑🦯' => ':person_with_white_cane:',
+ '🐦🔥' => ':phoenix:',
+ '🧑🔬' => ':scientist:',
+ '🐕🦺' => ':service_dog:',
'7️⃣' => ':seven:',
+ '🧑🎤' => ':singer:',
'6️⃣' => ':six:',
+ '🧑🎓' => ':student:',
+ '🧑🏫' => ':teacher:',
+ '🧑💻' => ':technologist:',
'3️⃣' => ':three:',
'2️⃣' => ':two:',
+ '👩🎨' => ':woman_artist:',
+ '👩🚀' => ':woman_astronaut:',
+ '👩🦲' => ':woman_bald:',
+ '👩🍳' => ':woman_cook:',
+ '👩🦱' => ':woman_curly_hair:',
+ '👩🏭' => ':woman_factory_worker:',
+ '👩🌾' => ':woman_farmer:',
+ '👩🍼' => ':woman_feeding_baby:',
+ '👩🚒' => ':woman_firefighter:',
+ '👩🦽' => ':woman_in_manual_wheelchair:',
+ '👩🦼' => ':woman_in_motorized_wheelchair:',
+ '👩🔧' => ':woman_mechanic:',
+ '👩💼' => ':woman_office_worker:',
+ '👩🦰' => ':woman_red_hair:',
+ '👩🔬' => ':woman_scientist:',
+ '👩🎤' => ':woman_singer:',
+ '👩🎓' => ':woman_student:',
+ '👩🏫' => ':woman_teacher:',
+ '👩💻' => ':woman_technologist:',
+ '👩🦳' => ':woman_white_hair:',
+ '👩🦯' => ':woman_with_white_cane:',
'0️⃣' => ':zero:',
+ '🅰️' => ':a:',
+ '✈️' => ':airplane:',
+ '🛩️' => ':airplane_small:',
+ '⚗️' => ':alembic:',
'👼🏻' => ':angel_tone1:',
'👼🏼' => ':angel_tone2:',
'👼🏽' => ':angel_tone3:',
'👼🏾' => ':angel_tone4:',
'👼🏿' => ':angel_tone5:',
- '*⃣' => ':asterisk:',
+ '🗯️' => ':anger_right:',
+ '◀️' => ':arrow_backward:',
+ '⬇️' => ':arrow_down:',
+ '▶️' => ':arrow_forward:',
+ '⤵️' => ':arrow_heading_down:',
+ '⤴️' => ':arrow_heading_up:',
+ '⬅️' => ':arrow_left:',
+ '↙️' => ':arrow_lower_left:',
+ '↘️' => ':arrow_lower_right:',
+ '➡️' => ':arrow_right:',
+ '↪️' => ':arrow_right_hook:',
+ '⬆️' => ':arrow_up:',
+ '↕️' => ':arrow_up_down:',
+ '↖️' => ':arrow_upper_left:',
+ '↗️' => ':arrow_upper_right:',
+ '⚛️' => ':atom:',
+ '🅱️' => ':b:',
'👶🏻' => ':baby_tone1:',
'👶🏼' => ':baby_tone2:',
'👶🏽' => ':baby_tone3:',
'👶🏾' => ':baby_tone4:',
'👶🏿' => ':baby_tone5:',
+ '🗳️' => ':ballot_box:',
+ '☑️' => ':ballot_box_with_check:',
+ '‼️' => ':bangbang:',
+ '⛹️' => ':basketball_player:',
'⛹🏻' => ':basketball_player_tone1:',
'⛹🏼' => ':basketball_player_tone2:',
'⛹🏽' => ':basketball_player_tone3:',
@@ -51,11 +1529,19 @@
'🛀🏽' => ':bath_tone3:',
'🛀🏾' => ':bath_tone4:',
'🛀🏿' => ':bath_tone5:',
+ '🏖️' => ':beach:',
+ '⛱️' => ':beach_umbrella:',
+ '🛏️' => ':bed:',
+ '🛎️' => ':bellhop:',
'🚴🏻' => ':bicyclist_tone1:',
'🚴🏼' => ':bicyclist_tone2:',
'🚴🏽' => ':bicyclist_tone3:',
'🚴🏾' => ':bicyclist_tone4:',
'🚴🏿' => ':bicyclist_tone5:',
+ '☣️' => ':biohazard:',
+ '◼️' => ':black_medium_square:',
+ '✒️' => ':black_nib:',
+ '▪️' => ':black_small_square:',
'🙇🏻' => ':bow_tone1:',
'🙇🏼' => ':bow_tone2:',
'🙇🏽' => ':bow_tone3:',
@@ -66,51 +1552,130 @@
'👦🏽' => ':boy_tone3:',
'👦🏾' => ':boy_tone4:',
'👦🏿' => ':boy_tone5:',
+ '🤱🏿' => ':breast_feeding_dark_skin_tone:',
+ '🤱🏻' => ':breast_feeding_light_skin_tone:',
+ '🤱🏾' => ':breast_feeding_medium_dark_skin_tone:',
+ '🤱🏼' => ':breast_feeding_medium_light_skin_tone:',
+ '🤱🏽' => ':breast_feeding_medium_skin_tone:',
'👰🏻' => ':bride_with_veil_tone1:',
'👰🏼' => ':bride_with_veil_tone2:',
'👰🏽' => ':bride_with_veil_tone3:',
'👰🏾' => ':bride_with_veil_tone4:',
'👰🏿' => ':bride_with_veil_tone5:',
+ '🗓️' => ':calendar_spiral:',
'🤙🏻' => ':call_me_tone1:',
'🤙🏼' => ':call_me_tone2:',
'🤙🏽' => ':call_me_tone3:',
'🤙🏾' => ':call_me_tone4:',
'🤙🏿' => ':call_me_tone5:',
+ '🏕️' => ':camping:',
+ '🕯️' => ':candle:',
+ '🗃️' => ':card_box:',
'🤸🏻' => ':cartwheel_tone1:',
'🤸🏼' => ':cartwheel_tone2:',
'🤸🏽' => ':cartwheel_tone3:',
'🤸🏾' => ':cartwheel_tone4:',
'🤸🏿' => ':cartwheel_tone5:',
+ '⛓️' => ':chains:',
+ '♟️' => ':chess_pawn:',
+ '🧒🏿' => ':child_dark_skin_tone:',
+ '🧒🏻' => ':child_light_skin_tone:',
+ '🧒🏾' => ':child_medium_dark_skin_tone:',
+ '🧒🏼' => ':child_medium_light_skin_tone:',
+ '🧒🏽' => ':child_medium_skin_tone:',
+ '🐿️' => ':chipmunk:',
+ '🏙️' => ':cityscape:',
'👏🏻' => ':clap_tone1:',
'👏🏼' => ':clap_tone2:',
'👏🏽' => ':clap_tone3:',
'👏🏾' => ':clap_tone4:',
'👏🏿' => ':clap_tone5:',
+ '🏛️' => ':classical_building:',
+ '🕰️' => ':clock:',
+ '☁️' => ':cloud:',
+ '🌩️' => ':cloud_lightning:',
+ '🌧️' => ':cloud_rain:',
+ '🌨️' => ':cloud_snow:',
+ '🌪️' => ':cloud_tornado:',
+ '♣️' => ':clubs:',
+ '⚰️' => ':coffin:',
+ '☄️' => ':comet:',
+ '🗜️' => ':compression:',
+ '㊗️' => ':congratulations:',
+ '🏗️' => ':construction_site:',
'👷🏻' => ':construction_worker_tone1:',
'👷🏼' => ':construction_worker_tone2:',
'👷🏽' => ':construction_worker_tone3:',
'👷🏾' => ':construction_worker_tone4:',
'👷🏿' => ':construction_worker_tone5:',
+ '🎛️' => ':control_knobs:',
'👮🏻' => ':cop_tone1:',
'👮🏼' => ':cop_tone2:',
'👮🏽' => ':cop_tone3:',
'👮🏾' => ':cop_tone4:',
'👮🏿' => ':cop_tone5:',
+ '©️' => ':copyright:',
+ '🛋️' => ':couch:',
+ '💑🏿' => ':couple_with_heart_dark_skin_tone:',
+ '💑🏻' => ':couple_with_heart_light_skin_tone:',
+ '💑🏾' => ':couple_with_heart_medium_dark_skin_tone:',
+ '💑🏼' => ':couple_with_heart_medium_light_skin_tone:',
+ '💑🏽' => ':couple_with_heart_medium_skin_tone:',
+ '🖍️' => ':crayon:',
+ '✝️' => ':cross:',
+ '⚔️' => ':crossed_swords:',
+ '🛳️' => ':cruise_ship:',
+ '🗡️' => ':dagger:',
'💃🏻' => ':dancer_tone1:',
'💃🏼' => ':dancer_tone2:',
'💃🏽' => ':dancer_tone3:',
'💃🏾' => ':dancer_tone4:',
'💃🏿' => ':dancer_tone5:',
+ '🕶️' => ':dark_sunglasses:',
+ '🧏🏿' => ':deaf_person_dark_skin_tone:',
+ '🧏🏻' => ':deaf_person_light_skin_tone:',
+ '🧏🏾' => ':deaf_person_medium_dark_skin_tone:',
+ '🧏🏼' => ':deaf_person_medium_light_skin_tone:',
+ '🧏🏽' => ':deaf_person_medium_skin_tone:',
+ '🏜️' => ':desert:',
+ '🖥️' => ':desktop:',
+ '♦️' => ':diamonds:',
+ '🗂️' => ':dividers:',
+ '🕊️' => ':dove:',
'👂🏻' => ':ear_tone1:',
'👂🏼' => ':ear_tone2:',
'👂🏽' => ':ear_tone3:',
'👂🏾' => ':ear_tone4:',
'👂🏿' => ':ear_tone5:',
+ '🦻🏿' => ':ear_with_hearing_aid_dark_skin_tone:',
+ '🦻🏻' => ':ear_with_hearing_aid_light_skin_tone:',
+ '🦻🏾' => ':ear_with_hearing_aid_medium_dark_skin_tone:',
+ '🦻🏼' => ':ear_with_hearing_aid_medium_light_skin_tone:',
+ '🦻🏽' => ':ear_with_hearing_aid_medium_skin_tone:',
+ '✴️' => ':eight_pointed_black_star:',
+ '✳️' => ':eight_spoked_asterisk:',
+ '⏏️' => ':eject:',
+ '🧝🏿' => ':elf_dark_skin_tone:',
+ '🧝🏻' => ':elf_light_skin_tone:',
+ '🧝🏾' => ':elf_medium_dark_skin_tone:',
+ '🧝🏼' => ':elf_medium_light_skin_tone:',
+ '🧝🏽' => ':elf_medium_skin_tone:',
+ '✉️' => ':envelope:',
+ '👁️' => ':eye:',
'🤦🏻' => ':face_palm_tone1:',
'🤦🏼' => ':face_palm_tone2:',
'🤦🏽' => ':face_palm_tone3:',
'🤦🏾' => ':face_palm_tone4:',
'🤦🏿' => ':face_palm_tone5:',
+ '🧚🏿' => ':fairy_dark_skin_tone:',
+ '🧚🏻' => ':fairy_light_skin_tone:',
+ '🧚🏾' => ':fairy_medium_dark_skin_tone:',
+ '🧚🏼' => ':fairy_medium_light_skin_tone:',
+ '🧚🏽' => ':fairy_medium_skin_tone:',
+ '♀️' => ':female_sign:',
+ '⛴️' => ':ferry:',
+ '🗄️' => ':file_cabinet:',
+ '🎞️' => ':film_frames:',
'🤞🏻' => ':fingers_crossed_tone1:',
'🤞🏼' => ':fingers_crossed_tone2:',
'🤞🏽' => ':fingers_crossed_tone3:',
@@ -360,6 +1925,7 @@
'🇺🇦' => ':flag_ua:',
'🇺🇬' => ':flag_ug:',
'🇺🇲' => ':flag_um:',
+ '🇺🇳' => ':flag_united_nations:',
'🇺🇸' => ':flag_us:',
'🇺🇾' => ':flag_uy:',
'🇺🇿' => ':flag_uz:',
@@ -371,6 +1937,7 @@
'🇻🇳' => ':flag_vn:',
'🇻🇺' => ':flag_vu:',
'🇼🇫' => ':flag_wf:',
+ '🏳️' => ':flag_white:',
'🇼🇸' => ':flag_ws:',
'🇽🇰' => ':flag_xk:',
'🇾🇪' => ':flag_ye:',
@@ -378,12 +1945,23 @@
'🇿🇦' => ':flag_za:',
'🇿🇲' => ':flag_zm:',
'🇿🇼' => ':flag_zw:',
- '🏳🌈' => ':gay_pride_flag:',
+ '⚜️' => ':fleur-de-lis:',
+ '🌫️' => ':fog:',
+ '🦶🏿' => ':foot_dark_skin_tone:',
+ '🦶🏻' => ':foot_light_skin_tone:',
+ '🦶🏾' => ':foot_medium_dark_skin_tone:',
+ '🦶🏼' => ':foot_medium_light_skin_tone:',
+ '🦶🏽' => ':foot_medium_skin_tone:',
+ '🍽️' => ':fork_knife_plate:',
+ '🖼️' => ':frame_photo:',
+ '☹️' => ':frowning2:',
+ '⚙️' => ':gear:',
'👧🏻' => ':girl_tone1:',
'👧🏼' => ':girl_tone2:',
'👧🏽' => ':girl_tone3:',
'👧🏾' => ':girl_tone4:',
'👧🏿' => ':girl_tone5:',
+ '🏌️' => ':golfer:',
'💂🏻' => ':guardsman_tone1:',
'💂🏼' => ':guardsman_tone2:',
'💂🏽' => ':guardsman_tone3:',
@@ -394,11 +1972,18 @@
'💇🏽' => ':haircut_tone3:',
'💇🏾' => ':haircut_tone4:',
'💇🏿' => ':haircut_tone5:',
+ '⚒️' => ':hammer_pick:',
+ '🖐️' => ':hand_splayed:',
'🖐🏻' => ':hand_splayed_tone1:',
'🖐🏼' => ':hand_splayed_tone2:',
'🖐🏽' => ':hand_splayed_tone3:',
'🖐🏾' => ':hand_splayed_tone4:',
'🖐🏿' => ':hand_splayed_tone5:',
+ '🫰🏿' => ':hand_with_index_finger_and_thumb_crossed_dark_skin_tone:',
+ '🫰🏻' => ':hand_with_index_finger_and_thumb_crossed_light_skin_tone:',
+ '🫰🏾' => ':hand_with_index_finger_and_thumb_crossed_medium_dark_skin_tone:',
+ '🫰🏼' => ':hand_with_index_finger_and_thumb_crossed_medium_light_skin_tone:',
+ '🫰🏽' => ':hand_with_index_finger_and_thumb_crossed_medium_skin_tone:',
'🤾🏻' => ':handball_tone1:',
'🤾🏼' => ':handball_tone2:',
'🤾🏽' => ':handball_tone3:',
@@ -409,32 +1994,98 @@
'🤝🏽' => ':handshake_tone3:',
'🤝🏾' => ':handshake_tone4:',
'🤝🏿' => ':handshake_tone5:',
- '#⃣' => ':hash:',
+ '❤️' => ':heart:',
+ '❣️' => ':heart_exclamation:',
+ '🫶🏿' => ':heart_hands_dark_skin_tone:',
+ '🫶🏻' => ':heart_hands_light_skin_tone:',
+ '🫶🏾' => ':heart_hands_medium_dark_skin_tone:',
+ '🫶🏼' => ':heart_hands_medium_light_skin_tone:',
+ '🫶🏽' => ':heart_hands_medium_skin_tone:',
+ '♥️' => ':hearts:',
+ '✔️' => ':heavy_check_mark:',
+ '✖️' => ':heavy_multiplication_x:',
+ '⛑️' => ':helmet_with_cross:',
+ '🕳️' => ':hole:',
+ '🏘️' => ':homes:',
'🏇🏻' => ':horse_racing_tone1:',
'🏇🏼' => ':horse_racing_tone2:',
'🏇🏽' => ':horse_racing_tone3:',
'🏇🏾' => ':horse_racing_tone4:',
'🏇🏿' => ':horse_racing_tone5:',
+ '🌶️' => ':hot_pepper:',
+ '♨️' => ':hotsprings:',
+ '🏚️' => ':house_abandoned:',
+ '⛸️' => ':ice_skate:',
+ '🫵🏿' => ':index_pointing_at_the_viewer_dark_skin_tone:',
+ '🫵🏻' => ':index_pointing_at_the_viewer_light_skin_tone:',
+ '🫵🏾' => ':index_pointing_at_the_viewer_medium_dark_skin_tone:',
+ '🫵🏼' => ':index_pointing_at_the_viewer_medium_light_skin_tone:',
+ '🫵🏽' => ':index_pointing_at_the_viewer_medium_skin_tone:',
+ '♾️' => ':infinity:',
'💁🏻' => ':information_desk_person_tone1:',
'💁🏼' => ':information_desk_person_tone2:',
'💁🏽' => ':information_desk_person_tone3:',
'💁🏾' => ':information_desk_person_tone4:',
'💁🏿' => ':information_desk_person_tone5:',
+ 'ℹ️' => ':information_source:',
+ '⁉️' => ':interrobang:',
+ '🏝️' => ':island:',
+ '🕹️' => ':joystick:',
'🤹🏻' => ':juggling_tone1:',
'🤹🏼' => ':juggling_tone2:',
'🤹🏽' => ':juggling_tone3:',
'🤹🏾' => ':juggling_tone4:',
'🤹🏿' => ':juggling_tone5:',
+ '🗝️' => ':key2:',
+ '⌨️' => ':keyboard:',
+ '💏🏿' => ':kiss_dark_skin_tone:',
+ '💏🏻' => ':kiss_light_skin_tone:',
+ '💏🏾' => ':kiss_medium_dark_skin_tone:',
+ '💏🏼' => ':kiss_medium_light_skin_tone:',
+ '💏🏽' => ':kiss_medium_skin_tone:',
+ '🏷️' => ':label:',
'🤛🏻' => ':left_facing_fist_tone1:',
'🤛🏼' => ':left_facing_fist_tone2:',
'🤛🏽' => ':left_facing_fist_tone3:',
'🤛🏾' => ':left_facing_fist_tone4:',
'🤛🏿' => ':left_facing_fist_tone5:',
+ '↔️' => ':left_right_arrow:',
+ '↩️' => ':leftwards_arrow_with_hook:',
+ '🫲🏿' => ':leftwards_hand_dark_skin_tone:',
+ '🫲🏻' => ':leftwards_hand_light_skin_tone:',
+ '🫲🏾' => ':leftwards_hand_medium_dark_skin_tone:',
+ '🫲🏼' => ':leftwards_hand_medium_light_skin_tone:',
+ '🫲🏽' => ':leftwards_hand_medium_skin_tone:',
+ '🫷🏿' => ':leftwards_pushing_hand_dark_skin_tone:',
+ '🫷🏻' => ':leftwards_pushing_hand_light_skin_tone:',
+ '🫷🏾' => ':leftwards_pushing_hand_medium_dark_skin_tone:',
+ '🫷🏼' => ':leftwards_pushing_hand_medium_light_skin_tone:',
+ '🫷🏽' => ':leftwards_pushing_hand_medium_skin_tone:',
+ '🦵🏿' => ':leg_dark_skin_tone:',
+ '🦵🏻' => ':leg_light_skin_tone:',
+ '🦵🏾' => ':leg_medium_dark_skin_tone:',
+ '🦵🏼' => ':leg_medium_light_skin_tone:',
+ '🦵🏽' => ':leg_medium_skin_tone:',
+ '🎚️' => ':level_slider:',
+ '🕴️' => ':levitate:',
+ '🏋️' => ':lifter:',
'🏋🏻' => ':lifter_tone1:',
'🏋🏼' => ':lifter_tone2:',
'🏋🏽' => ':lifter_tone3:',
'🏋🏾' => ':lifter_tone4:',
'🏋🏿' => ':lifter_tone5:',
+ '🤟🏿' => ':love_you_gesture_dark_skin_tone:',
+ '🤟🏻' => ':love_you_gesture_light_skin_tone:',
+ '🤟🏾' => ':love_you_gesture_medium_dark_skin_tone:',
+ '🤟🏼' => ':love_you_gesture_medium_light_skin_tone:',
+ '🤟🏽' => ':love_you_gesture_medium_skin_tone:',
+ 'Ⓜ️' => ':m:',
+ '🧙🏿' => ':mage_dark_skin_tone:',
+ '🧙🏻' => ':mage_light_skin_tone:',
+ '🧙🏾' => ':mage_medium_dark_skin_tone:',
+ '🧙🏼' => ':mage_medium_light_skin_tone:',
+ '🧙🏽' => ':mage_medium_skin_tone:',
+ '♂️' => ':male_sign:',
'🕺🏻' => ':man_dancing_tone1:',
'🕺🏼' => ':man_dancing_tone2:',
'🕺🏽' => ':man_dancing_tone3:',
@@ -460,26 +2111,46 @@
'👳🏽' => ':man_with_turban_tone3:',
'👳🏾' => ':man_with_turban_tone4:',
'👳🏿' => ':man_with_turban_tone5:',
+ '🗺️' => ':map:',
'💆🏻' => ':massage_tone1:',
'💆🏼' => ':massage_tone2:',
'💆🏽' => ':massage_tone3:',
'💆🏾' => ':massage_tone4:',
'💆🏿' => ':massage_tone5:',
+ '⚕️' => ':medical_symbol:',
+ '👬🏿' => ':men_holding_hands_dark_skin_tone:',
+ '👬🏻' => ':men_holding_hands_light_skin_tone:',
+ '👬🏾' => ':men_holding_hands_medium_dark_skin_tone:',
+ '👬🏼' => ':men_holding_hands_medium_light_skin_tone:',
+ '👬🏽' => ':men_holding_hands_medium_skin_tone:',
+ '🧜🏿' => ':merperson_dark_skin_tone:',
+ '🧜🏻' => ':merperson_light_skin_tone:',
+ '🧜🏾' => ':merperson_medium_dark_skin_tone:',
+ '🧜🏼' => ':merperson_medium_light_skin_tone:',
+ '🧜🏽' => ':merperson_medium_skin_tone:',
'🤘🏻' => ':metal_tone1:',
'🤘🏼' => ':metal_tone2:',
'🤘🏽' => ':metal_tone3:',
'🤘🏾' => ':metal_tone4:',
'🤘🏿' => ':metal_tone5:',
+ '🎙️' => ':microphone2:',
'🖕🏻' => ':middle_finger_tone1:',
'🖕🏼' => ':middle_finger_tone2:',
'🖕🏽' => ':middle_finger_tone3:',
'🖕🏾' => ':middle_finger_tone4:',
'🖕🏿' => ':middle_finger_tone5:',
+ '🎖️' => ':military_medal:',
+ '🛥️' => ':motorboat:',
+ '🏍️' => ':motorcycle:',
+ '🛣️' => ':motorway:',
+ '⛰️' => ':mountain:',
'🚵🏻' => ':mountain_bicyclist_tone1:',
'🚵🏼' => ':mountain_bicyclist_tone2:',
'🚵🏽' => ':mountain_bicyclist_tone3:',
'🚵🏾' => ':mountain_bicyclist_tone4:',
'🚵🏿' => ':mountain_bicyclist_tone5:',
+ '🏔️' => ':mountain_snow:',
+ '🖱️' => ':mouse_three_button:',
'🤶🏻' => ':mrs_claus_tone1:',
'🤶🏼' => ':mrs_claus_tone2:',
'🤶🏽' => ':mrs_claus_tone3:',
@@ -495,6 +2166,12 @@
'💅🏽' => ':nail_care_tone3:',
'💅🏾' => ':nail_care_tone4:',
'💅🏿' => ':nail_care_tone5:',
+ '🗞️' => ':newspaper2:',
+ '🥷🏿' => ':ninja_dark_skin_tone:',
+ '🥷🏻' => ':ninja_light_skin_tone:',
+ '🥷🏾' => ':ninja_medium_dark_skin_tone:',
+ '🥷🏼' => ':ninja_medium_light_skin_tone:',
+ '🥷🏽' => ':ninja_medium_skin_tone:',
'🙅🏻' => ':no_good_tone1:',
'🙅🏼' => ':no_good_tone2:',
'🙅🏽' => ':no_good_tone3:',
@@ -505,6 +2182,9 @@
'👃🏽' => ':nose_tone3:',
'👃🏾' => ':nose_tone4:',
'👃🏿' => ':nose_tone5:',
+ '🗒️' => ':notepad_spiral:',
+ '🅾️' => ':o2:',
+ '🛢️' => ':oil:',
'👌🏻' => ':ok_hand_tone1:',
'👌🏼' => ':ok_hand_tone2:',
'👌🏽' => ':ok_hand_tone3:',
@@ -520,31 +2200,130 @@
'👴🏽' => ':older_man_tone3:',
'👴🏾' => ':older_man_tone4:',
'👴🏿' => ':older_man_tone5:',
+ '🧓🏿' => ':older_person_dark_skin_tone:',
+ '🧓🏻' => ':older_person_light_skin_tone:',
+ '🧓🏾' => ':older_person_medium_dark_skin_tone:',
+ '🧓🏼' => ':older_person_medium_light_skin_tone:',
+ '🧓🏽' => ':older_person_medium_skin_tone:',
'👵🏻' => ':older_woman_tone1:',
'👵🏼' => ':older_woman_tone2:',
'👵🏽' => ':older_woman_tone3:',
'👵🏾' => ':older_woman_tone4:',
'👵🏿' => ':older_woman_tone5:',
+ '🕉️' => ':om_symbol:',
'👐🏻' => ':open_hands_tone1:',
'👐🏼' => ':open_hands_tone2:',
'👐🏽' => ':open_hands_tone3:',
'👐🏾' => ':open_hands_tone4:',
'👐🏿' => ':open_hands_tone5:',
+ '☦️' => ':orthodox_cross:',
+ '🖌️' => ':paintbrush:',
+ '🫳🏿' => ':palm_down_hand_dark_skin_tone:',
+ '🫳🏻' => ':palm_down_hand_light_skin_tone:',
+ '🫳🏾' => ':palm_down_hand_medium_dark_skin_tone:',
+ '🫳🏼' => ':palm_down_hand_medium_light_skin_tone:',
+ '🫳🏽' => ':palm_down_hand_medium_skin_tone:',
+ '🫴🏿' => ':palm_up_hand_dark_skin_tone:',
+ '🫴🏻' => ':palm_up_hand_light_skin_tone:',
+ '🫴🏾' => ':palm_up_hand_medium_dark_skin_tone:',
+ '🫴🏼' => ':palm_up_hand_medium_light_skin_tone:',
+ '🫴🏽' => ':palm_up_hand_medium_skin_tone:',
+ '🤲🏿' => ':palms_up_together_dark_skin_tone:',
+ '🤲🏻' => ':palms_up_together_light_skin_tone:',
+ '🤲🏾' => ':palms_up_together_medium_dark_skin_tone:',
+ '🤲🏼' => ':palms_up_together_medium_light_skin_tone:',
+ '🤲🏽' => ':palms_up_together_medium_skin_tone:',
+ '🖇️' => ':paperclips:',
+ '🏞️' => ':park:',
+ '🅿️' => ':parking:',
+ '〽️' => ':part_alternation_mark:',
+ '⏸️' => ':pause_button:',
+ '☮️' => ':peace:',
+ '🖊️' => ':pen_ballpoint:',
+ '🖋️' => ':pen_fountain:',
+ '✏️' => ':pencil2:',
+ '🧗🏿' => ':person_climbing_dark_skin_tone:',
+ '🧗🏻' => ':person_climbing_light_skin_tone:',
+ '🧗🏾' => ':person_climbing_medium_dark_skin_tone:',
+ '🧗🏼' => ':person_climbing_medium_light_skin_tone:',
+ '🧗🏽' => ':person_climbing_medium_skin_tone:',
+ '🧑🏿' => ':person_dark_skin_tone:',
+ '🧔🏿' => ':person_dark_skin_tone_beard:',
'🙍🏻' => ':person_frowning_tone1:',
'🙍🏼' => ':person_frowning_tone2:',
'🙍🏽' => ':person_frowning_tone3:',
'🙍🏾' => ':person_frowning_tone4:',
'🙍🏿' => ':person_frowning_tone5:',
+ '🏌🏿' => ':person_golfing_dark_skin_tone:',
+ '🏌🏻' => ':person_golfing_light_skin_tone:',
+ '🏌🏾' => ':person_golfing_medium_dark_skin_tone:',
+ '🏌🏼' => ':person_golfing_medium_light_skin_tone:',
+ '🏌🏽' => ':person_golfing_medium_skin_tone:',
+ '🛌🏿' => ':person_in_bed_dark_skin_tone:',
+ '🛌🏻' => ':person_in_bed_light_skin_tone:',
+ '🛌🏾' => ':person_in_bed_medium_dark_skin_tone:',
+ '🛌🏼' => ':person_in_bed_medium_light_skin_tone:',
+ '🛌🏽' => ':person_in_bed_medium_skin_tone:',
+ '🧘🏿' => ':person_in_lotus_position_dark_skin_tone:',
+ '🧘🏻' => ':person_in_lotus_position_light_skin_tone:',
+ '🧘🏾' => ':person_in_lotus_position_medium_dark_skin_tone:',
+ '🧘🏼' => ':person_in_lotus_position_medium_light_skin_tone:',
+ '🧘🏽' => ':person_in_lotus_position_medium_skin_tone:',
+ '🧖🏿' => ':person_in_steamy_room_dark_skin_tone:',
+ '🧖🏻' => ':person_in_steamy_room_light_skin_tone:',
+ '🧖🏾' => ':person_in_steamy_room_medium_dark_skin_tone:',
+ '🧖🏼' => ':person_in_steamy_room_medium_light_skin_tone:',
+ '🧖🏽' => ':person_in_steamy_room_medium_skin_tone:',
+ '🕴🏿' => ':person_in_suit_levitating_dark_skin_tone:',
+ '🕴🏻' => ':person_in_suit_levitating_light_skin_tone:',
+ '🕴🏾' => ':person_in_suit_levitating_medium_dark_skin_tone:',
+ '🕴🏼' => ':person_in_suit_levitating_medium_light_skin_tone:',
+ '🕴🏽' => ':person_in_suit_levitating_medium_skin_tone:',
+ '🧎🏿' => ':person_kneeling_dark_skin_tone:',
+ '🧎🏻' => ':person_kneeling_light_skin_tone:',
+ '🧎🏾' => ':person_kneeling_medium_dark_skin_tone:',
+ '🧎🏼' => ':person_kneeling_medium_light_skin_tone:',
+ '🧎🏽' => ':person_kneeling_medium_skin_tone:',
+ '🧑🏻' => ':person_light_skin_tone:',
+ '🧔🏻' => ':person_light_skin_tone_beard:',
+ '🧑🏾' => ':person_medium_dark_skin_tone:',
+ '🧔🏾' => ':person_medium_dark_skin_tone_beard:',
+ '🧑🏼' => ':person_medium_light_skin_tone:',
+ '🧔🏼' => ':person_medium_light_skin_tone_beard:',
+ '🧑🏽' => ':person_medium_skin_tone:',
+ '🧔🏽' => ':person_medium_skin_tone_beard:',
+ '🧍🏿' => ':person_standing_dark_skin_tone:',
+ '🧍🏻' => ':person_standing_light_skin_tone:',
+ '🧍🏾' => ':person_standing_medium_dark_skin_tone:',
+ '🧍🏼' => ':person_standing_medium_light_skin_tone:',
+ '🧍🏽' => ':person_standing_medium_skin_tone:',
'👱🏻' => ':person_with_blond_hair_tone1:',
'👱🏼' => ':person_with_blond_hair_tone2:',
'👱🏽' => ':person_with_blond_hair_tone3:',
'👱🏾' => ':person_with_blond_hair_tone4:',
'👱🏿' => ':person_with_blond_hair_tone5:',
+ '🫅🏿' => ':person_with_crown_dark_skin_tone:',
+ '🫅🏻' => ':person_with_crown_light_skin_tone:',
+ '🫅🏾' => ':person_with_crown_medium_dark_skin_tone:',
+ '🫅🏼' => ':person_with_crown_medium_light_skin_tone:',
+ '🫅🏽' => ':person_with_crown_medium_skin_tone:',
'🙎🏻' => ':person_with_pouting_face_tone1:',
'🙎🏼' => ':person_with_pouting_face_tone2:',
'🙎🏽' => ':person_with_pouting_face_tone3:',
'🙎🏾' => ':person_with_pouting_face_tone4:',
'🙎🏿' => ':person_with_pouting_face_tone5:',
+ '⛏️' => ':pick:',
+ '🤌🏿' => ':pinched_fingers_dark_skin_tone:',
+ '🤌🏻' => ':pinched_fingers_light_skin_tone:',
+ '🤌🏾' => ':pinched_fingers_medium_dark_skin_tone:',
+ '🤌🏼' => ':pinched_fingers_medium_light_skin_tone:',
+ '🤌🏽' => ':pinched_fingers_medium_skin_tone:',
+ '🤏🏿' => ':pinching_hand_dark_skin_tone:',
+ '🤏🏻' => ':pinching_hand_light_skin_tone:',
+ '🤏🏾' => ':pinching_hand_medium_dark_skin_tone:',
+ '🤏🏼' => ':pinching_hand_medium_light_skin_tone:',
+ '🤏🏽' => ':pinching_hand_medium_skin_tone:',
+ '⏯️' => ':play_pause:',
'👇🏻' => ':point_down_tone1:',
'👇🏼' => ':point_down_tone2:',
'👇🏽' => ':point_down_tone3:',
@@ -560,6 +2339,7 @@
'👉🏽' => ':point_right_tone3:',
'👉🏾' => ':point_right_tone4:',
'👉🏿' => ':point_right_tone5:',
+ '☝️' => ':point_up:',
'👆🏻' => ':point_up_2_tone1:',
'👆🏼' => ':point_up_2_tone2:',
'👆🏽' => ':point_up_2_tone3:',
@@ -575,6 +2355,16 @@
'🙏🏽' => ':pray_tone3:',
'🙏🏾' => ':pray_tone4:',
'🙏🏿' => ':pray_tone5:',
+ '🫃🏿' => ':pregnant_man_dark_skin_tone:',
+ '🫃🏻' => ':pregnant_man_light_skin_tone:',
+ '🫃🏾' => ':pregnant_man_medium_dark_skin_tone:',
+ '🫃🏼' => ':pregnant_man_medium_light_skin_tone:',
+ '🫃🏽' => ':pregnant_man_medium_skin_tone:',
+ '🫄🏿' => ':pregnant_person_dark_skin_tone:',
+ '🫄🏻' => ':pregnant_person_light_skin_tone:',
+ '🫄🏾' => ':pregnant_person_medium_dark_skin_tone:',
+ '🫄🏼' => ':pregnant_person_medium_light_skin_tone:',
+ '🫄🏽' => ':pregnant_person_medium_skin_tone:',
'🤰🏻' => ':pregnant_woman_tone1:',
'🤰🏼' => ':pregnant_woman_tone2:',
'🤰🏽' => ':pregnant_woman_tone3:',
@@ -590,11 +2380,16 @@
'👸🏽' => ':princess_tone3:',
'👸🏾' => ':princess_tone4:',
'👸🏿' => ':princess_tone5:',
+ '🖨️' => ':printer:',
+ '📽️' => ':projector:',
'👊🏻' => ':punch_tone1:',
'👊🏼' => ':punch_tone2:',
'👊🏽' => ':punch_tone3:',
'👊🏾' => ':punch_tone4:',
'👊🏿' => ':punch_tone5:',
+ '🏎️' => ':race_car:',
+ '☢️' => ':radioactive:',
+ '🛤️' => ':railway_track:',
'🤚🏻' => ':raised_back_of_hand_tone1:',
'🤚🏼' => ':raised_back_of_hand_tone2:',
'🤚🏽' => ':raised_back_of_hand_tone3:',
@@ -615,11 +2410,27 @@
'🙋🏽' => ':raising_hand_tone3:',
'🙋🏾' => ':raising_hand_tone4:',
'🙋🏿' => ':raising_hand_tone5:',
+ '⏺️' => ':record_button:',
+ '♻️' => ':recycle:',
+ '®️' => ':registered:',
+ '☺️' => ':relaxed:',
+ '🎗️' => ':reminder_ribbon:',
'🤜🏻' => ':right_facing_fist_tone1:',
'🤜🏼' => ':right_facing_fist_tone2:',
'🤜🏽' => ':right_facing_fist_tone3:',
'🤜🏾' => ':right_facing_fist_tone4:',
'🤜🏿' => ':right_facing_fist_tone5:',
+ '🫱🏿' => ':rightwards_hand_dark_skin_tone:',
+ '🫱🏻' => ':rightwards_hand_light_skin_tone:',
+ '🫱🏾' => ':rightwards_hand_medium_dark_skin_tone:',
+ '🫱🏼' => ':rightwards_hand_medium_light_skin_tone:',
+ '🫱🏽' => ':rightwards_hand_medium_skin_tone:',
+ '🫸🏿' => ':rightwards_pushing_hand_dark_skin_tone:',
+ '🫸🏻' => ':rightwards_pushing_hand_light_skin_tone:',
+ '🫸🏾' => ':rightwards_pushing_hand_medium_dark_skin_tone:',
+ '🫸🏼' => ':rightwards_pushing_hand_medium_light_skin_tone:',
+ '🫸🏽' => ':rightwards_pushing_hand_medium_skin_tone:',
+ '🏵️' => ':rosette:',
'🚣🏻' => ':rowboat_tone1:',
'🚣🏼' => ':rowboat_tone2:',
'🚣🏽' => ':rowboat_tone3:',
@@ -630,26 +2441,67 @@
'🏃🏽' => ':runner_tone3:',
'🏃🏾' => ':runner_tone4:',
'🏃🏿' => ':runner_tone5:',
+ '🈂️' => ':sa:',
'🎅🏻' => ':santa_tone1:',
'🎅🏼' => ':santa_tone2:',
'🎅🏽' => ':santa_tone3:',
'🎅🏾' => ':santa_tone4:',
'🎅🏿' => ':santa_tone5:',
+ '🛰️' => ':satellite_orbital:',
+ '⚖️' => ':scales:',
+ '✂️' => ':scissors:',
+ '㊙️' => ':secret:',
'🤳🏻' => ':selfie_tone1:',
'🤳🏼' => ':selfie_tone2:',
'🤳🏽' => ':selfie_tone3:',
'🤳🏾' => ':selfie_tone4:',
'🤳🏿' => ':selfie_tone5:',
+ '☘️' => ':shamrock:',
+ '🛡️' => ':shield:',
+ '⛩️' => ':shinto_shrine:',
+ '🛍️' => ':shopping_bags:',
'🤷🏻' => ':shrug_tone1:',
'🤷🏼' => ':shrug_tone2:',
'🤷🏽' => ':shrug_tone3:',
'🤷🏾' => ':shrug_tone4:',
'🤷🏿' => ':shrug_tone5:',
+ '⛷️' => ':skier:',
+ '☠️' => ':skull_crossbones:',
+ '🏂🏿' => ':snowboarder_dark_skin_tone:',
+ '🏂🏻' => ':snowboarder_light_skin_tone:',
+ '🏂🏾' => ':snowboarder_medium_dark_skin_tone:',
+ '🏂🏼' => ':snowboarder_medium_light_skin_tone:',
+ '🏂🏽' => ':snowboarder_medium_skin_tone:',
+ '❄️' => ':snowflake:',
+ '☃️' => ':snowman2:',
+ '♠️' => ':spades:',
+ '❇️' => ':sparkle:',
+ '🗣️' => ':speaking_head:',
+ '🗨️' => ':speech_left:',
+ '🕷️' => ':spider:',
+ '🕸️' => ':spider_web:',
+ '🕵️' => ':spy:',
'🕵🏻' => ':spy_tone1:',
'🕵🏼' => ':spy_tone2:',
'🕵🏽' => ':spy_tone3:',
'🕵🏾' => ':spy_tone4:',
'🕵🏿' => ':spy_tone5:',
+ '🏟️' => ':stadium:',
+ '☪️' => ':star_and_crescent:',
+ '✡️' => ':star_of_david:',
+ '⏹️' => ':stop_button:',
+ '⏱️' => ':stopwatch:',
+ '☀️' => ':sunny:',
+ '🦸🏿' => ':superhero_dark_skin_tone:',
+ '🦸🏻' => ':superhero_light_skin_tone:',
+ '🦸🏾' => ':superhero_medium_dark_skin_tone:',
+ '🦸🏼' => ':superhero_medium_light_skin_tone:',
+ '🦸🏽' => ':superhero_medium_skin_tone:',
+ '🦹🏿' => ':supervillain_dark_skin_tone:',
+ '🦹🏻' => ':supervillain_light_skin_tone:',
+ '🦹🏾' => ':supervillain_medium_dark_skin_tone:',
+ '🦹🏼' => ':supervillain_medium_light_skin_tone:',
+ '🦹🏽' => ':supervillain_medium_skin_tone:',
'🏄🏻' => ':surfer_tone1:',
'🏄🏼' => ':surfer_tone2:',
'🏄🏽' => ':surfer_tone3:',
@@ -660,6 +2512,8 @@
'🏊🏽' => ':swimmer_tone3:',
'🏊🏾' => ':swimmer_tone4:',
'🏊🏿' => ':swimmer_tone5:',
+ '☎️' => ':telephone:',
+ '🌡️' => ':thermometer:',
'👎🏻' => ':thumbsdown_tone1:',
'👎🏼' => ':thumbsdown_tone2:',
'👎🏽' => ':thumbsdown_tone3:',
@@ -670,11 +2524,29 @@
'👍🏽' => ':thumbsup_tone3:',
'👍🏾' => ':thumbsup_tone4:',
'👍🏿' => ':thumbsup_tone5:',
+ '⛈️' => ':thunder_cloud_rain:',
+ '🎟️' => ':tickets:',
+ '⏲️' => ':timer:',
+ '™️' => ':tm:',
+ '🛠️' => ':tools:',
+ '⏭️' => ':track_next:',
+ '⏮️' => ':track_previous:',
+ '🖲️' => ':trackball:',
+ '⚧️' => ':transgender_symbol:',
+ '🈷️' => ':u6708:',
+ '☂️' => ':umbrella2:',
+ '⚱️' => ':urn:',
+ '✌️' => ':v:',
'✌🏻' => ':v_tone1:',
'✌🏼' => ':v_tone2:',
'✌🏽' => ':v_tone3:',
'✌🏾' => ':v_tone4:',
'✌🏿' => ':v_tone5:',
+ '🧛🏿' => ':vampire_dark_skin_tone:',
+ '🧛🏻' => ':vampire_light_skin_tone:',
+ '🧛🏾' => ':vampire_medium_dark_skin_tone:',
+ '🧛🏼' => ':vampire_medium_light_skin_tone:',
+ '🧛🏽' => ':vampire_medium_skin_tone:',
'🖖🏻' => ':vulcan_tone1:',
'🖖🏼' => ':vulcan_tone2:',
'🖖🏽' => ':vulcan_tone3:',
@@ -685,6 +2557,8 @@
'🚶🏽' => ':walking_tone3:',
'🚶🏾' => ':walking_tone4:',
'🚶🏿' => ':walking_tone5:',
+ '⚠️' => ':warning:',
+ '🗑️' => ':wastebasket:',
'🤽🏻' => ':water_polo_tone1:',
'🤽🏼' => ':water_polo_tone2:',
'🤽🏽' => ':water_polo_tone3:',
@@ -695,67 +2569,72 @@
'👋🏽' => ':wave_tone3:',
'👋🏾' => ':wave_tone4:',
'👋🏿' => ':wave_tone5:',
+ '〰️' => ':wavy_dash:',
+ '☸️' => ':wheel_of_dharma:',
+ '◻️' => ':white_medium_square:',
+ '▫️' => ':white_small_square:',
+ '🌥️' => ':white_sun_cloud:',
+ '🌦️' => ':white_sun_rain_cloud:',
+ '🌤️' => ':white_sun_small_cloud:',
+ '🌬️' => ':wind_blowing_face:',
+ '👫🏿' => ':woman_and_man_holding_hands_dark_skin_tone:',
+ '👫🏻' => ':woman_and_man_holding_hands_light_skin_tone:',
+ '👫🏾' => ':woman_and_man_holding_hands_medium_dark_skin_tone:',
+ '👫🏼' => ':woman_and_man_holding_hands_medium_light_skin_tone:',
+ '👫🏽' => ':woman_and_man_holding_hands_medium_skin_tone:',
'👩🏻' => ':woman_tone1:',
'👩🏼' => ':woman_tone2:',
'👩🏽' => ':woman_tone3:',
'👩🏾' => ':woman_tone4:',
'👩🏿' => ':woman_tone5:',
- '🤼🏻' => ':wrestlers_tone1:',
- '🤼🏼' => ':wrestlers_tone2:',
- '🤼🏽' => ':wrestlers_tone3:',
- '🤼🏾' => ':wrestlers_tone4:',
- '🤼🏿' => ':wrestlers_tone5:',
+ '🧕🏿' => ':woman_with_headscarf_dark_skin_tone:',
+ '🧕🏻' => ':woman_with_headscarf_light_skin_tone:',
+ '🧕🏾' => ':woman_with_headscarf_medium_dark_skin_tone:',
+ '🧕🏼' => ':woman_with_headscarf_medium_light_skin_tone:',
+ '🧕🏽' => ':woman_with_headscarf_medium_skin_tone:',
+ '👭🏿' => ':women_holding_hands_dark_skin_tone:',
+ '👭🏻' => ':women_holding_hands_light_skin_tone:',
+ '👭🏾' => ':women_holding_hands_medium_dark_skin_tone:',
+ '👭🏼' => ':women_holding_hands_medium_light_skin_tone:',
+ '👭🏽' => ':women_holding_hands_medium_skin_tone:',
+ '✍️' => ':writing_hand:',
'✍🏻' => ':writing_hand_tone1:',
'✍🏼' => ':writing_hand_tone2:',
'✍🏽' => ':writing_hand_tone3:',
'✍🏾' => ':writing_hand_tone4:',
'✍🏿' => ':writing_hand_tone5:',
+ '☯️' => ':yin_yang:',
'🎱' => ':8ball:',
'💯' => ':100:',
'🔢' => ':1234:',
- '🅰' => ':a:',
'🆎' => ':ab:',
+ '🧮' => ':abacus:',
'🔤' => ':abc:',
'🔡' => ':abcd:',
'🉑' => ':accept:',
+ '🪗' => ':accordion:',
+ '🩹' => ':adhesive_bandage:',
'🚡' => ':aerial_tramway:',
- '✈' => ':airplane:',
'🛬' => ':airplane_arriving:',
'🛫' => ':airplane_departure:',
- '🛩' => ':airplane_small:',
'⏰' => ':alarm_clock:',
- '⚗' => ':alembic:',
'👽' => ':alien:',
'🚑' => ':ambulance:',
'🏺' => ':amphora:',
+ '🫀' => ':anatomical_heart:',
'⚓' => ':anchor:',
'👼' => ':angel:',
'💢' => ':anger:',
- '🗯' => ':anger_right:',
'😠' => ':angry:',
'😧' => ':anguished:',
'🐜' => ':ant:',
'🍎' => ':apple:',
'♒' => ':aquarius:',
'♈' => ':aries:',
- '◀' => ':arrow_backward:',
'⏬' => ':arrow_double_down:',
'⏫' => ':arrow_double_up:',
- '⬇' => ':arrow_down:',
'🔽' => ':arrow_down_small:',
- '▶' => ':arrow_forward:',
- '⤵' => ':arrow_heading_down:',
- '⤴' => ':arrow_heading_up:',
- '⬅' => ':arrow_left:',
- '↙' => ':arrow_lower_left:',
- '↘' => ':arrow_lower_right:',
- '➡' => ':arrow_right:',
- '↪' => ':arrow_right_hook:',
- '⬆' => ':arrow_up:',
- '↕' => ':arrow_up_down:',
'🔼' => ':arrow_up_small:',
- '↖' => ':arrow_upper_left:',
- '↗' => ':arrow_upper_right:',
'🔃' => ':arrows_clockwise:',
'🔄' => ':arrows_counterclockwise:',
'🎨' => ':art:',
@@ -763,85 +2642,103 @@
'😲' => ':astonished:',
'👟' => ':athletic_shoe:',
'🏧' => ':atm:',
- '⚛' => ':atom:',
+ '🛺' => ':auto_rickshaw:',
'🥑' => ':avocado:',
- '🅱' => ':b:',
+ '🪓' => ':axe:',
'👶' => ':baby:',
'🍼' => ':baby_bottle:',
'🐤' => ':baby_chick:',
'🚼' => ':baby_symbol:',
'🔙' => ':back:',
'🥓' => ':bacon:',
+ '🦡' => ':badger:',
'🏸' => ':badminton:',
+ '🥯' => ':bagel:',
'🛄' => ':baggage_claim:',
+ '🦲' => ':bald:',
+ '🩰' => ':ballet_shoes:',
'🎈' => ':balloon:',
- '🗳' => ':ballot_box:',
- '☑' => ':ballot_box_with_check:',
'🎍' => ':bamboo:',
'🍌' => ':banana:',
- '‼' => ':bangbang:',
+ '🪕' => ':banjo:',
'🏦' => ':bank:',
'📊' => ':bar_chart:',
'💈' => ':barber:',
'⚾' => ':baseball:',
+ '🧺' => ':basket:',
'🏀' => ':basketball:',
- '⛹' => ':basketball_player:',
'🦇' => ':bat:',
'🛀' => ':bath:',
'🛁' => ':bathtub:',
'🔋' => ':battery:',
- '🏖' => ':beach:',
- '⛱' => ':beach_umbrella:',
+ '🫘' => ':beans:',
'🐻' => ':bear:',
- '🛏' => ':bed:',
+ '🦫' => ':beaver:',
'🐝' => ':bee:',
'🍺' => ':beer:',
'🍻' => ':beers:',
'🐞' => ':beetle:',
'🔰' => ':beginner:',
'🔔' => ':bell:',
- '🛎' => ':bellhop:',
+ '🫑' => ':bell_pepper:',
'🍱' => ':bento:',
+ '🧃' => ':beverage_box:',
'🚴' => ':bicyclist:',
'🚲' => ':bike:',
'👙' => ':bikini:',
- '☣' => ':biohazard:',
+ '🧢' => ':billed_cap:',
'🐦' => ':bird:',
'🎂' => ':birthday:',
+ '🦬' => ':bison:',
+ '🫦' => ':biting_lip:',
'⚫' => ':black_circle:',
'🖤' => ':black_heart:',
'🃏' => ':black_joker:',
'⬛' => ':black_large_square:',
'◾' => ':black_medium_small_square:',
- '◼' => ':black_medium_square:',
- '✒' => ':black_nib:',
- '▪' => ':black_small_square:',
'🔲' => ':black_square_button:',
'🌼' => ':blossom:',
'🐡' => ':blowfish:',
'📘' => ':blue_book:',
'🚙' => ':blue_car:',
'💙' => ':blue_heart:',
+ '🟦' => ':blue_square:',
+ '🫐' => ':blueberries:',
'😊' => ':blush:',
'🐗' => ':boar:',
'💣' => ':bomb:',
+ '🦴' => ':bone:',
'📖' => ':book:',
'🔖' => ':bookmark:',
'📑' => ':bookmark_tabs:',
'📚' => ':books:',
'💥' => ':boom:',
+ '🪃' => ':boomerang:',
'👢' => ':boot:',
'💐' => ':bouquet:',
'🙇' => ':bow:',
'🏹' => ':bow_and_arrow:',
+ '🥣' => ':bowl_with_spoon:',
'🎳' => ':bowling:',
'🥊' => ':boxing_glove:',
'👦' => ':boy:',
+ '🧠' => ':brain:',
'🍞' => ':bread:',
+ '🤱' => ':breast_feeding:',
+ '🧱' => ':brick:',
'👰' => ':bride_with_veil:',
'🌉' => ':bridge_at_night:',
'💼' => ':briefcase:',
+ '🩲' => ':briefs:',
+ '🥦' => ':broccoli:',
'💔' => ':broken_heart:',
+ '🧹' => ':broom:',
+ '🟤' => ':brown_circle:',
+ '🤎' => ':brown_heart:',
+ '🟫' => ':brown_square:',
+ '🧋' => ':bubble_tea:',
+ '🫧' => ':bubbles:',
+ '🪣' => ':bucket:',
'🐛' => ':bug:',
'💡' => ':bulb:',
'🚅' => ':bullettrain_front:',
@@ -851,32 +2748,31 @@
'🚏' => ':busstop:',
'👤' => ':bust_in_silhouette:',
'👥' => ':busts_in_silhouette:',
+ '🧈' => ':butter:',
'🦋' => ':butterfly:',
'🌵' => ':cactus:',
'🍰' => ':cake:',
'📆' => ':calendar:',
- '🗓' => ':calendar_spiral:',
'🤙' => ':call_me:',
'📲' => ':calling:',
'🐫' => ':camel:',
'📷' => ':camera:',
'📸' => ':camera_with_flash:',
- '🏕' => ':camping:',
'♋' => ':cancer:',
- '🕯' => ':candle:',
'🍬' => ':candy:',
+ '🥫' => ':canned_food:',
'🛶' => ':canoe:',
'🔠' => ':capital_abcd:',
'♑' => ':capricorn:',
- '🗃' => ':card_box:',
'📇' => ':card_index:',
'🎠' => ':carousel_horse:',
+ '🪚' => ':carpentry_saw:',
'🥕' => ':carrot:',
'🤸' => ':cartwheel:',
'🐱' => ':cat:',
'🐈' => ':cat2:',
'💿' => ':cd:',
- '⛓' => ':chains:',
+ '🪑' => ':chair:',
'🍾' => ':champagne:',
'🥂' => ':champagne_glass:',
'💹' => ':chart:',
@@ -888,22 +2784,20 @@
'🌸' => ':cherry_blossom:',
'🌰' => ':chestnut:',
'🐔' => ':chicken:',
+ '🧒' => ':child:',
'🚸' => ':children_crossing:',
- '🐿' => ':chipmunk:',
'🍫' => ':chocolate_bar:',
+ '🥢' => ':chopsticks:',
'🎄' => ':christmas_tree:',
'⛪' => ':church:',
'🎦' => ':cinema:',
'🎪' => ':circus_tent:',
'🌆' => ':city_dusk:',
'🌇' => ':city_sunset:',
- '🏙' => ':cityscape:',
'🆑' => ':cl:',
'👏' => ':clap:',
'🎬' => ':clapper:',
- '🏛' => ':classical_building:',
'📋' => ':clipboard:',
- '🕰' => ':clock:',
'🕐' => ':clock1:',
'🕑' => ':clock2:',
'🕒' => ':clock3:',
@@ -931,36 +2825,29 @@
'📕' => ':closed_book:',
'🔐' => ':closed_lock_with_key:',
'🌂' => ':closed_umbrella:',
- '☁' => ':cloud:',
- '🌩' => ':cloud_lightning:',
- '🌧' => ':cloud_rain:',
- '🌨' => ':cloud_snow:',
- '🌪' => ':cloud_tornado:',
'🤡' => ':clown:',
- '♣' => ':clubs:',
+ '🧥' => ':coat:',
+ '🪳' => ':cockroach:',
'🍸' => ':cocktail:',
+ '🥥' => ':coconut:',
'☕' => ':coffee:',
- '⚰' => ':coffin:',
+ '🪙' => ':coin:',
+ '🥶' => ':cold_face:',
'😰' => ':cold_sweat:',
- '☄' => ':comet:',
- '🗜' => ':compression:',
+ '🧭' => ':compass:',
'💻' => ':computer:',
'🎊' => ':confetti_ball:',
'😖' => ':confounded:',
'😕' => ':confused:',
- '㊗' => ':congratulations:',
'🚧' => ':construction:',
- '🏗' => ':construction_site:',
'👷' => ':construction_worker:',
- '🎛' => ':control_knobs:',
'🏪' => ':convenience_store:',
'🍪' => ':cookie:',
'🍳' => ':cooking:',
'🆒' => ':cool:',
'👮' => ':cop:',
- '©' => ':copyright:',
+ '🪸' => ':coral:',
'🌽' => ':corn:',
- '🛋' => ':couch:',
'👫' => ':couple:',
'💑' => ':couple_with_heart:',
'💏' => ':couplekiss:',
@@ -968,110 +2855,126 @@
'🐄' => ':cow2:',
'🤠' => ':cowboy:',
'🦀' => ':crab:',
- '🖍' => ':crayon:',
'💳' => ':credit_card:',
'🌙' => ':crescent_moon:',
'🏏' => ':cricket:',
'🐊' => ':crocodile:',
'🥐' => ':croissant:',
- '✝' => ':cross:',
'🎌' => ':crossed_flags:',
- '⚔' => ':crossed_swords:',
'👑' => ':crown:',
- '🛳' => ':cruise_ship:',
+ '🩼' => ':crutch:',
'😢' => ':cry:',
'😿' => ':crying_cat_face:',
'🔮' => ':crystal_ball:',
'🥒' => ':cucumber:',
+ '🥤' => ':cup_with_straw:',
+ '🧁' => ':cupcake:',
'💘' => ':cupid:',
+ '🥌' => ':curling_stone:',
+ '🦱' => ':curly_hair:',
'➰' => ':curly_loop:',
'💱' => ':currency_exchange:',
'🍛' => ':curry:',
'🍮' => ':custard:',
'🛃' => ':customs:',
+ '🥩' => ':cut_of_meat:',
'🌀' => ':cyclone:',
- '🗡' => ':dagger:',
'💃' => ':dancer:',
'👯' => ':dancers:',
'🍡' => ':dango:',
- '🕶' => ':dark_sunglasses:',
'🎯' => ':dart:',
'💨' => ':dash:',
'📅' => ':date:',
+ '🧏' => ':deaf_person:',
'🌳' => ':deciduous_tree:',
'🦌' => ':deer:',
'🏬' => ':department_store:',
- '🏜' => ':desert:',
- '🖥' => ':desktop:',
'💠' => ':diamond_shape_with_a_dot_inside:',
- '♦' => ':diamonds:',
'😞' => ':disappointed:',
'😥' => ':disappointed_relieved:',
- '🗂' => ':dividers:',
+ '🥸' => ':disguised_face:',
+ '🤿' => ':diving_mask:',
+ '🪔' => ':diya_lamp:',
'💫' => ':dizzy:',
'😵' => ':dizzy_face:',
+ '🧬' => ':dna:',
'🚯' => ':do_not_litter:',
+ '🦤' => ':dodo:',
'🐶' => ':dog:',
'🐕' => ':dog2:',
'💵' => ':dollar:',
'🎎' => ':dolls:',
'🐬' => ':dolphin:',
+ '🫏' => ':donkey:',
'🚪' => ':door:',
+ '🫥' => ':dotted_line_face:',
'🍩' => ':doughnut:',
- '🕊' => ':dove:',
'🐉' => ':dragon:',
'🐲' => ':dragon_face:',
'👗' => ':dress:',
'🐪' => ':dromedary_camel:',
'🤤' => ':drooling_face:',
+ '🩸' => ':drop_of_blood:',
'💧' => ':droplet:',
'🥁' => ':drum:',
'🦆' => ':duck:',
+ '🥟' => ':dumpling:',
'📀' => ':dvd:',
'📧' => ':e-mail:',
'🦅' => ':eagle:',
'👂' => ':ear:',
'🌾' => ':ear_of_rice:',
+ '🦻' => ':ear_with_hearing_aid:',
'🌍' => ':earth_africa:',
'🌎' => ':earth_americas:',
'🌏' => ':earth_asia:',
'🥚' => ':egg:',
'🍆' => ':eggplant:',
- '✴' => ':eight_pointed_black_star:',
- '✳' => ':eight_spoked_asterisk:',
- '⏏' => ':eject:',
'🔌' => ':electric_plug:',
10000
'🐘' => ':elephant:',
+ '🛗' => ':elevator:',
+ '🧝' => ':elf:',
+ '🪹' => ':empty_nest:',
'🔚' => ':end:',
- '✉' => ':envelope:',
'📩' => ':envelope_with_arrow:',
'💶' => ':euro:',
'🏰' => ':european_castle:',
'🏤' => ':european_post_office:',
'🌲' => ':evergreen_tree:',
'❗' => ':exclamation:',
+ '🤯' => ':exploding_head:',
'😑' => ':expressionless:',
- '👁' => ':eye:',
'👓' => ':eyeglasses:',
'👀' => ':eyes:',
+ '🥹' => ':face_holding_back_tears:',
'🤦' => ':face_palm:',
+ '🤮' => ':face_vomiting:',
+ '🫤' => ':face_with_diagonal_mouth:',
+ '🤭' => ':face_with_hand_over_mouth:',
+ '🧐' => ':face_with_monocle:',
+ '🫢' => ':face_with_open_eyes_and_hand_over_mouth:',
+ '🫣' => ':face_with_peeking_eye:',
+ '🤨' => ':face_with_raised_eyebrow:',
+ '🤬' => ':face_with_symbols_on_mouth:',
'🏭' => ':factory:',
+ '🧚' => ':fairy:',
+ '🧆' => ':falafel:',
'🍂' => ':fallen_leaf:',
'👪' => ':family:',
'⏩' => ':fast_forward:',
'📠' => ':fax:',
'😨' => ':fearful:',
+ '🪶' => ':feather:',
'🐾' => ':feet:',
'🤺' => ':fencer:',
'🎡' => ':ferris_wheel:',
- '⛴' => ':ferry:',
'🏑' => ':field_hockey:',
- '🗄' => ':file_cabinet:',
'📁' => ':file_folder:',
- '🎞' => ':film_frames:',
'🤞' => ':fingers_crossed:',
'🔥' => ':fire:',
'🚒' => ':fire_engine:',
+ '🧯' => ':fire_extinguisher:',
+ '🧨' => ':firecracker:',
'🎆' => ':fireworks:',
'🥇' => ':first_place:',
'🌓' => ':first_quarter_moon:',
@@ -1081,65 +2984,80 @@
'🎣' => ':fishing_pole_and_fish:',
'✊' => ':fist:',
'🏴' => ':flag_black:',
- '🏳' => ':flag_white:',
'🎏' => ':flags:',
+ '🦩' => ':flamingo:',
'🔦' => ':flashlight:',
- '⚜' => ':fleur-de-lis:',
+ '🥿' => ':flat_shoe:',
+ '🫓' => ':flatbread:',
'💾' => ':floppy_disk:',
'🎴' => ':flower_playing_cards:',
'😳' => ':flushed:',
- '🌫' => ':fog:',
+ '🪈' => ':flute:',
+ '🪰' => ':fly:',
+ '🥏' => ':flying_disc:',
+ '🛸' => ':flying_saucer:',
'🌁' => ':foggy:',
+ '🪭' => ':folding_hand_fan:',
+ '🫕' => ':fondue:',
+ '🦶' => ':foot:',
'🏈' => ':football:',
'👣' => ':footprints:',
'🍴' => ':fork_and_knife:',
- '🍽' => ':fork_knife_plate:',
+ '🥠' => ':fortune_cookie:',
'⛲' => ':fountain:',
'🍀' => ':four_leaf_clover:',
'🦊' => ':fox:',
- '🖼' => ':frame_photo:',
'🆓' => ':free:',
'🥖' => ':french_bread:',
'🍤' => ':fried_shrimp:',
'🍟' => ':fries:',
'🐸' => ':frog:',
'😦' => ':frowning:',
- '☹' => ':frowning2:',
'⛽' => ':fuelpump:',
'🌕' => ':full_moon:',
'🌝' => ':full_moon_with_face:',
'🎲' => ':game_die:',
- '⚙' => ':gear:',
+ '🧄' => ':garlic:',
'💎' => ':gem:',
'♊' => ':gemini:',
+ '🧞' => ':genie:',
'👻' => ':ghost:',
'🎁' => ':gift:',
'💝' => ':gift_heart:',
+ '🫚' => ':ginger_root:',
+ '🦒' => ':giraffe:',
'👧' => ':girl:',
'🌐' => ':globe_with_meridians:',
+ '🧤' => ':gloves:',
'🥅' => ':goal:',
'🐐' => ':goat:',
+ '🥽' => ':goggles:',
'⛳' => ':golf:',
- '🏌' => ':golfer:',
+ '🪿' => ':goose:',
'🦍' => ':gorilla:',
'🍇' => ':grapes:',
'🍏' => ':green_apple:',
'📗' => ':green_book:',
+ '🟢' => ':green_circle:',
'💚' => ':green_heart:',
+ '🟩' => ':green_square:',
'❕' => ':grey_exclamation:',
+ '🩶' => ':grey_heart:',
'❔' => ':grey_question:',
'😬' => ':grimacing:',
'😁' => ':grin:',
'😀' => ':grinning:',
'💂' => ':guardsman:',
+ '🦮' => ':guide_dog:',
'🎸' => ':guitar:',
'🔫' => ':gun:',
+ '🪮' => ':hair_pick:',
'💇' => ':haircut:',
'🍔' => ':hamburger:',
'🔨' => ':hammer:',
- '⚒' => ':hammer_pick:',
+ '🪬' => ':hamsa:',
'🐹' => ':hamster:',
- '🖐' => ':hand_splayed:',
+ '🫰' => ':hand_with_index_finger_and_thumb_crossed:',
'👜' => ':handbag:',
'🤾' => ':handball:',
'🤝' => ':handshake:',
@@ -1147,74 +3065,74 @@
'🐣' => ':hatching_chick:',
'🤕' => ':head_bandage:',
'🎧' => ':headphones:',
+ '🪦' => ':headstone:',
'🙉' => ':hear_no_evil:',
- '❤' => ':heart:',
'💟' => ':heart_decoration:',
- '❣' => ':heart_exclamation:',
'😍' => ':heart_eyes:',
'😻' => ':heart_eyes_cat:',
+ '🫶' => ':heart_hands:',
'💓' => ':heartbeat:',
'💗' => ':heartpulse:',
- '♥' => ':hearts:',
- '✔' => ':heavy_check_mark:',
'➗' => ':heavy_division_sign:',
'💲' => ':heavy_dollar_sign:',
+ '🟰' => ':heavy_equals_sign:',
'➖' => ':heavy_minus_sign:',
- '✖' => ':heavy_multiplication_x:',
'➕' => ':heavy_plus_sign:',
+ '🦔' => ':hedgehog:',
'🚁' => ':helicopter:',
- '⛑' => ':helmet_with_cross:',
'🌿' => ':herb:',
'🌺' => ':hibiscus:',
'🔆' => ':high_brightness:',
'👠' => ':high_heel:',
+ '🥾' => ':hiking_boot:',
+ '🛕' => ':hindu_temple:',
+ '🦛' => ':hippopotamus:',
'🏒' => ':hockey:',
- '🕳' => ':hole:',
- '🏘' => ':homes:',
'🍯' => ':honey_pot:',
+ '🪝' => ':hook:',
'🐴' => ':horse:',
'🏇' => ':horse_racing:',
'🏥' => ':hospital:',
- '🌶' => ':hot_pepper:',
+ '🥵' => ':hot_face:',
'🌭' => ':hotdog:',
'🏨' => ':hotel:',
- '♨' => ':hotsprings:',
'⌛' => ':hourglass:',
'⏳' => ':hourglass_flowing_sand:',
'🏠' => ':house:',
- '🏚' => ':house_abandoned:',
'🏡' => ':house_with_garden:',
'🤗' => ':hugging:',
'😯' => ':hushed:',
+ '🛖' => ':hut:',
+ '🪻' => ':hyacinth:',
+ '🧊' => ':ice:',
'🍨' => ':ice_cream:',
- '⛸' => ':ice_skate:',
'🍦' => ':icecream:',
'🆔' => ':id:',
+ '🪪' => ':identification_card:',
'🉐' => ':ideograph_advantage:',
'👿' => ':imp:',
'📥' => ':inbox_tray:',
'📨' => ':incoming_envelope:',
+ '🫵' => ':index_pointing_at_the_viewer:',
'💁' => ':information_desk_person:',
- 'ℹ' => ':information_source:',
'😇' => ':innocent:',
- '⁉' => ':interrobang:',
'📱' => ':iphone:',
- '🏝' => ':island:',
'🏮' => ':izakaya_lantern:',
'🎃' => ':jack_o_lantern:',
'🗾' => ':japan:',
'🏯' => ':japanese_castle:',
'👺' => ':japanese_goblin:',
'👹' => ':japanese_ogre:',
+ '🫙' => ':jar:',
'👖' => ':jeans:',
+ '🪼' => ':jellyfish:',
'😂' => ':joy:',
'😹' => ':joy_cat:',
- '🕹' => ':joystick:',
'🤹' => ':juggling:',
'🕋' => ':kaaba:',
+ '🦘' => ':kangaroo:',
'🔑' => ':key:',
- '🗝' => ':key2:',
- '⌨' => ':keyboard:',
+ '🪯' => ':khanda:',
'👘' => ':kimono:',
'💋' => ':kiss:',
'😗' => ':kissing:',
@@ -1222,82 +3140,106 @@
'😚' => ':kissing_closed_eyes:',
'😘' => ':kissing_heart:',
'😙' => ':kissing_smiling_eyes:',
+ '🪁' => ':kite:',
'🥝' => ':kiwi:',
'🔪' => ':knife:',
+ '🪢' => ':knot:',
'🐨' => ':koala:',
'🈁' => ':koko:',
- '🏷' => ':label:',
+ '🥼' => ':lab_coat:',
+ '🥍' => ':lacrosse:',
+ '🪜' => ':ladder:',
'🔵' => ':large_blue_circle:',
'🔷' => ':large_blue_diamond:',
'🔶' => ':large_orange_diamond:',
'🌗' => ':last_quarter_moon:',
'🌜' => ':last_quarter_moon_with_face:',
'😆' => ':laughing:',
+ '🥬' => ':leafy_green:',
'🍃' => ':leaves:',
'📒' => ':ledger:',
'🤛' => ':left_facing_fist:',
'🛅' => ':left_luggage:',
- '↔' => ':left_right_arrow:',
- '↩' => ':leftwards_arrow_with_hook:',
+ '🫲' => ':leftwards_hand:',
+ '🫷' => ':leftwards_pushing_hand:',
+ '🦵' => ':leg:',
'🍋' => ':lemon:',
'♌' => ':leo:',
'🐆' => ':leopard:',
- '🎚' => ':level_slider:',
- '🕴' => ':levitate:',
'♎' => ':libra:',
- '🏋' => ':lifter:',
+ '🩵' => ':light_blue_heart:',
'🚈' => ':light_rail:',
'🔗' => ':link:',
'🦁' => ':lion_face:',
'👄' => ':lips:',
'💄' => ':lipstick:',
'🦎' => ':lizard:',
+ '🦙' => ':llama:',
+ '🦞' => ':lobster:',
'🔒' => ':lock:',
'🔏' => ':lock_with_ink_pen:',
'🍭' => ':lollipop:',
+ '🪘' => ':long_drum:',
'➿' => ':loop:',
+ '🧴' => ':lotion_bottle:',
+ '🪷' => ':lotus:',
'🔊' => ':loud_sound:',
'📢' => ':loudspeaker:',
'🏩' => ':love_hotel:',
'💌' => ':love_letter:',
+ '🤟' => ':love_you_gesture:',
+ '🪫' => ':low_battery:',
'🔅' => ':low_brightness:',
+ '🧳' => ':luggage:',
+ '🫁' => ':lungs:',
'🤥' => ':lying_face:',
- 'Ⓜ' => ':m:',
'🔍' => ':mag:',
'🔎' => ':mag_right:',
+ '🧙' => ':mage:',
+ '🪄' => ':magic_wand:',
+ '🧲' => ':magnet:',
'🀄' => ':mahjong:',
'📫' => ':mailbox:',
'📪' => ':mailbox_closed:',
'📬' => ':mailbox_with_mail:',
'📭' => ':mailbox_with_no_mail:',
+ '🦣' => ':mammoth:',
'👨' => ':man:',
'🕺' => ':man_dancing:',
- '🤵' => ':man_in_tuxedo:',
'👲' => ':man_with_gua_pi_mao:',
'👳' => ':man_with_turban:',
+ '🥭' => ':mango:',
'👞' => ':mans_shoe:',
- '🗺' => ':map:',
+ '🦽' => ':manual_wheelchair:',
'🍁' => ':maple_leaf:',
+ '🪇' => ':maracas:',
'🥋' => ':martial_arts_uniform:',
'😷' => ':mask:',
'💆' => ':massage:',
+ '🧉' => ':mate:',
'🍖' => ':meat_on_bone:',
+ '🦾' => ':mechanical_arm:',
+ '🦿' => ':mechanical_leg:',
'🏅' => ':medal:',
'📣' => ':mega:',
'🍈' => ':melon:',
+ '🫠' => ':melting_face:',
'🕎' => ':menorah:',
'🚹' => ':mens:',
+ '🧜' => ':merperson:',
'🤘' => ':metal:',
'🚇' => ':metro:',
+ '🦠' => ':microbe:',
'🎤' => ':microphone:',
- '🎙' => ':microphone2:',
'🔬' => ':microscope:',
'🖕' => ':middle_finger:',
- '🎖' => ':military_medal:',
+ '🪖' => ':military_helmet:',
'🥛' => ':milk:',
'🌌' => ':milky_way:',
'🚐' => ':minibus:',
'💽' => ':minidisc:',
+ '🪞' => ':mirror:',
+ '🪩' => ':mirror_ball:',
'📴' => ':mobile_phone_off:',
'🤑' => ':money_mouth:',
'💸' => ':money_with_wings:',
@@ -1305,21 +3247,20 @@
'🐒' => ':monkey:',
'🐵' => ':monkey_face:',
'🚝' => ':monorail:',
+ '🥮' => ':moon_cake:',
+ '🫎' => ':moose:',
'🎓' => ':mortar_board:',
'🕌' => ':mosque:',
+ '🦟' => ':mosquito:',
'🛵' => ':motor_scooter:',
- '🛥' => ':motorboat:',
- '🏍' => ':motorcycle:',
- '🛣' => ':motorway:',
+ '🦼' => ':motorized_wheelchair:',
'🗻' => ':mount_fuji:',
- '⛰' => ':mountain:',
'🚵' => ':mountain_bicyclist:',
'🚠' => ':mountain_cableway:',
'🚞' => ':mountain_railway:',
- '🏔' => ':mountain_snow:',
'🐭' => ':mouse:',
'🐁' => ':mouse2:',
- '🖱' => ':mouse_three_button:',
+ '🪤' => ':mouse_trap:',
'🎥' => ':movie_camera:',
'🗿' => ':moyai:',
'🤶' => ':mrs_claus:',
@@ -1332,17 +3273,20 @@
'💅' => ':nail_care:',
'📛' => ':name_badge:',
'🤢' => ':nauseated_face:',
+ '🧿' => ':nazar_amulet:',
'👔' => ':necktie:',
'❎' => ':negative_squared_cross_mark:',
'🤓' => ':nerd:',
+ '🪺' => ':nest_with_eggs:',
+ '🪆' => ':nesting_dolls:',
'😐' => ':neutral_face:',
'🆕' => ':new:',
'🌑' => ':new_moon:',
'🌚' => ':new_moon_with_face:',
'📰' => ':newspaper:',
- '🗞' => ':newspaper2:',
'🆖' => ':ng:',
'🌃' => ':night_with_stars:',
+ '🥷' => ':ninja:',
'🔕' => ':no_bell:',
'🚳' => ':no_bicycles:',
'⛔' => ':no_entry:',
@@ -1356,83 +3300,103 @@
'👃' => ':nose:',
'📓' => ':notebook:',
'📔' => ':notebook_with_decorative_cover:',
- '🗒' => ':notepad_spiral:',
'🎶' => ':notes:',
'🔩' => ':nut_and_bolt:',
'⭕' => ':o:',
- '🅾' => ':o2:',
'🌊' => ':ocean:',
'🛑' => ':octagonal_sign:',
'🐙' => ':octopus:',
'🍢' => ':oden:',
'🏢' => ':office:',
- '🛢' => ':oil:',
'🆗' => ':ok:',
'👌' => ':ok_hand:',
'🙆' => ':ok_woman:',
'👴' => ':older_man:',
+ '🧓' => ':older_person:',
'👵' => ':older_woman:',
- '🕉' => ':om_symbol:',
+ '🫒' => ':olive:',
'🔛' => ':on:',
'🚘' => ':oncoming_automobile:',
'🚍' => ':oncoming_bus:',
'🚔' => ':oncoming_police_car:',
'🚖' => ':oncoming_taxi:',
+ '🩱' => ':one_piece_swimsuit:',
+ '🧅' => ':onion:',
'📂' => ':open_file_folder:',
'👐' => ':open_hands:',
'😮' => ':open_mouth:',
'⛎' => ':ophiuchus:',
'📙' => ':orange_book:',
- '☦' => ':orthodox_cross:',
+ '🟠' => ':orange_circle:',
+ '🧡' => ':orange_heart:',
+ '🟧' => ':orange_square:',
+ '🦧' => ':orangutan:',
+ '🦦' => ':otter:',
'📤' => ':outbox_tray:',
'🦉' => ':owl:',
'🐂' => ':ox:',
+ '🦪' => ':oyster:',
'📦' => ':package:',
'📄' => ':page_facing_up:',
'📃' => ':page_with_curl:',
'📟' => ':pager:',
- '🖌' => ':paintbrush:',
+ '🫳' => ':palm_down_hand:',
'🌴' => ':palm_tree:',
+ '🫴' => ':palm_up_hand:',
+ '🤲' => ':palms_up_together:',
'🥞' => ':pancakes:',
'🐼' => ':panda_face:',
'📎' => ':paperclip:',
- '🖇' => ':paperclips:',
- '🏞' => ':park:',
- '🅿' => ':parking:',
- '〽' => ':part_alternation_mark:',
+ '🪂' => ':parachute:',
+ '🦜' => ':parrot:',
'⛅' => ':partly_sunny:',
+ '🥳' => ':partying_face:',
'🛂' => ':passport_control:',
- '⏸' => ':pause_button:',
- '☮' => ':peace:',
+ '🫛' => ':pea_pod:',
'🍑' => ':peach:',
+ '🦚' => ':peacock:',
'🥜' => ':peanuts:',
'🍐' => ':pear:',
- '🖊' => ':pen_ballpoint:',
- '🖋' => ':pen_fountain:',
'📝' => ':pencil:',
- '✏' => ':pencil2:',
'🐧' => ':penguin:',
'😔' => ':pensive:',
+ '🫂' => ':people_hugging:',
'🎭' => ':performing_arts:',
'😣' => ':persevere:',
+ '🧑' => ':person:',
+ '🧔' => ':person_beard:',
+ '🧗' => ':person_climbing:',
'🙍' => ':person_frowning:',
+ '🧘' => ':person_in_lotus_position:',
+ '🧖' => ':person_in_steamy_room:',
+ '🧎' => ':person_kneeling:',
+ '🧍' => ':person_standing:',
'👱' => ':person_with_blond_hair:',
+ '🫅' => ':person_with_crown:',
'🙎' => ':person_with_pouting_face:',
- '⛏' => ':pick:',
+ '🧫' => ':petri_dish:',
+ '🛻' => ':pickup_truck:',
+ '🥧' => ':pie:',
'🐷' => ':pig:',
'🐖' => ':pig2:',
'🐽' => ':pig_nose:',
'💊' => ':pill:',
+ '🪅' => ':pinata:',
+ '🤌' => ':pinched_fingers:',
+ '🤏' => ':pinching_hand:',
'🍍' => ':pineapple:',
'🏓' => ':ping_pong:',
+ '🩷' => ':pink_heart:',
'♓' => ':pisces:',
'🍕' => ':pizza:',
+ '🪧' => ':placard:',
'🛐' => ':place_of_worship:',
- '⏯' => ':play_pause:',
+ '🛝' => ':playground_slide:',
+ '🥺' => ':pleading_face:',
+ '🪠' => ':plunger:',
'👇' => ':point_down:',
'👈' => ':point_left:',
'👉' => ':point_right:',
- '☝' => ':point_up:',
'👆' => ':point_up_2:',
'🚓' => ':police_car:',
'🐩' => ':poodle:',
@@ -1443,33 +3407,37 @@
'📮' => ':postbox:',
'🚰' => ':potable_water:',
'🥔' => ':potato:',
+ '🪴' => ':potted_plant:',
'👝' => ':pouch:',
'🍗' => ':poultry_leg:',
'💷' => ':pound:',
+ '🫗' => ':pouring_liquid:',
'😾' => ':pouting_cat:',
'🙏' => ':pray:',
'📿' => ':prayer_beads:',
+ '🫃' => ':pregnant_man:',
+ '🫄' => ':pregnant_person:',
'🤰' => ':pregnant_woman:',
+ '🥨' => ':pretzel:',
'🤴' => ':prince:',
'👸' => ':princess:',
- '🖨' => ':printer:',
- '📽' => ':projector:',
'👊' => ':punch:',
+ '🟣' => ':purple_circle:',
'💜' => ':purple_heart:',
+ '🟪' => ':purple_square:',
'👛' => ':purse:',
'📌' => ':pushpin:',
'🚮' => ':put_litter_in_its_place:',
+ '🧩' => ':puzzle_piece:',
'❓' => ':question:',
'🐰' => ':rabbit:',
'🐇' => ':rabbit2:',
- '🏎' => ':race_car:',
+ '🦝' => ':raccoon:',
'🐎' => ':racehorse:',
'📻' => ':radio:',
'🔘' => ':radio_button:',
- '☢' => ':radioactive:',
'😡' => ':rage:',
'🚃' => ':railway_car:',
- '🛤' => ':railway_track:',
'🌈' => ':rainbow:',
'🤚' => ':raised_back_of_hand:',
'✋' => ':raised_hand:',
@@ -1478,14 +3446,14 @@
'🐏' => ':ram:',
'🍜' => ':ramen:',
'🐀' => ':rat:',
- '⏺' => ':record_button:',
- '♻' => ':recycle:',
+ '🪒' => ':razor:',
+ '🧾' => ':receipt:',
'🚗' => ':red_car:',
'🔴' => ':red_circle:',
- '®' => ':registered:',
- '☺' => ':relaxed:',
+ '🧧' => ':red_envelope:',
+ '🦰' => ':red_hair:',
+ '🟥' => ':red_square:',
'😌' => ':relieved:',
- '🎗' => ':reminder_ribbon:',
'🔁' => ':repeat:',
'🔂' => ':repeat_one:',
'🚻' => ':restroom:',
@@ -1498,74 +3466,87 @@
'🍘' => ':rice_cracker:',
'🎑' => ':rice_scene:',
'🤜' => ':right_facing_fist:',
+ '🫱' => ':rightwards_hand:',
+ '🫸' => ':rightwards_pushing_hand:',
'💍' => ':ring:',
+ '🛟' => ':ring_buoy:',
+ '🪐' => ':ringed_planet:',
'🤖' => ':robot:',
+ '🪨' => ':rock:',
'🚀' => ':rocket:',
'🤣' => ':rofl:',
+ '🧻' => ':roll_of_paper:',
'🎢' => ':roller_coaster:',
+ '🛼' => ':roller_skate:',
'🙄' => ':rolling_eyes:',
'🐓' => ':rooster:',
'🌹' => ':rose:',
- '🏵' => ':rosette:',
'🚨' => ':rotating_light:',
'📍' => ':round_pushpin:',
'🚣' => ':rowboat:',
'🏉' => ':rugby_football:',
'🏃' => ':runner:',
'🎽' => ':running_shirt_with_sash:',
- '🈂' => ':sa:',
+ '🧷' => ':safety_pin:',
+ '🦺' => ':safety_vest:',
'♐' => ':sagittarius:',
'⛵' => ':sailboat:',
'🍶' => ':sake:',
'🥗' => ':salad:',
+ '🧂' => ':salt:',
+ '🫡' => ':saluting_face:',
'👡' => ':sandal:',
+ '🥪' => ':sandwich:',
'🎅' => ':santa:',
+ '🥻' => ':sari:',
'📡' => ':satellite:',
- '🛰' => ':satellite_orbital:',
+ '🦕' => ':sauropod:',
'🎷' => ':saxophone:',
- '⚖' => ':scales:',
+ '🧣' => ':scarf:',
'🏫' => ':school:',
'🎒' => ':school_satchel:',
- '✂' => ':scissors:',
'🛴' => ':scooter:',
'🦂' => ':scorpion:',
'♏' => ':scorpius:',
'😱' => ':scream:',
'🙀' => ':scream_cat:',
+ '🪛' => ':screwdriver:',
'📜' => ':scroll:',
+ '🦭' => ':seal:',
'💺' => ':seat:',
'🥈' => ':second_place:',
- '㊙' => ':secret:',
'🙈' => ':see_no_evil:',
'🌱' => ':seedling:',
'🤳' => ':selfie:',
+ '🪡' => ':sewing_needle:',
+ '🫨' => ':shaking_face:',
'🥘' => ':shallow_pan_of_food:',
- '☘' => ':shamrock:',
'🦈' => ':shark:',
'🍧' => ':shaved_ice:',
'🐑' => ':sheep:',
'🐚' => ':shell:',
- '🛡' => ':shield:',
- '⛩' => ':shinto_shrine:',
'🚢' => ':ship:',
'👕' => ':shirt:',
- '🛍' => ':shopping_bags:',
'🛒' => ':shopping_cart:',
+ '🩳' => ':shorts:',
'🚿' => ':shower:',
'🦐' => ':shrimp:',
'🤷' => ':shrug:',
+ '🤫' => ':shushing_face:',
'📶' => ':signal_strength:',
'🔯' => ':six_pointed_star:',
+ '🛹' => ':skateboard:',
'🎿' => ':ski:',
- '⛷' => ':skier:',
'💀' => ':skull:',
- '☠' => ':skull_crossbones:',
+ '🦨' => ':skunk:',
+ '🛷' => ':sled:',
'😴' => ':sleeping:',
'🛌' => ':sleeping_accommodation:',
'😪' => ':sleepy:',
'🙁' => ':slight_frown:',
'🙂' => ':slight_smile:',
'🎰' => ':slot_machine:',
+ '🦥' => ':sloth:',
'🔹' => ':small_blue_diamond:',
'🔸' => ':small_orange_diamond:',
'🔺' => ':small_red_triangle:',
@@ -1574,6 +3555,8 @@
'😸' => ':smile_cat:',
'😃' => ':smiley:',
'😺' => ':smiley_cat:',
+ '🥰' => ':smiling_face_with_hearts:',
+ '🥲' => ':smiling_face_with_tear:',
'😈' => ':smiling_imp:',
'😏' => ':smirk:',
'😼' => ':smirk_cat:',
@@ -1582,44 +3565,36 @@
'🐍' => ':snake:',
'🤧' => ':sneezing_face:',
'🏂' => ':snowboarder:',
- '❄' => ':snowflake:',
'⛄' => ':snowman:',
- '☃' => ':snowman2:',
+ '🧼' => ':soap:',
'😭' => ':sob:',
'⚽' => ':soccer:',
+ '🧦' => ':socks:',
+ '🥎' => ':softball:',
'🔜' => ':soon:',
'🆘' => ':sos:',
'🔉' => ':sound:',
'👾' => ':space_invader:',
- '♠' => ':spades:',
'🍝' => ':spaghetti:',
- '❇' => ':sparkle:',
'🎇' => ':sparkler:',
'✨' => ':sparkles:',
'💖' => ':sparkling_heart:',
'🙊' => ':speak_no_evil:',
'🔈' => ':speaker:',
- '🗣' => ':speaking_head:',
'💬' => ':speech_balloon:',
- '🗨' => ':speech_left:',
'🚤' => ':speedboat:',
- '🕷' => ':spider:',
- '🕸' => ':spider_web:',
+ '🧽' => ':sponge:',
'🥄' => ':spoon:',
- '🕵' => ':spy:',
'🦑' => ':squid:',
- '🏟' => ':stadium:',
'⭐' => ':star:',
'🌟' => ':star2:',
- '☪' => ':star_and_crescent:',
- '✡' => ':star_of_david:',
+ '🤩' => ':star_struck:',
'🌠' => ':stars:',
'🚉' => ':station:',
'🗽' => ':statue_of_liberty:',
'🚂' => ':steam_locomotive:',
+ '🩺' => ':stethoscope:',
'🍲' => ':stew:',
- '⏹' => ':stop_button:',
- '⏱' => ':stopwatch:',
'📏' => ':straight_ruler:',
'🍓' => ':strawberry:',
'😛' => ':stuck_out_tongue:',
@@ -1629,12 +3604,14 @@
'🌞' => ':sun_with_face:',
'🌻' => ':sunflower:',
'😎' => ':sunglasses:',
- '☀' => ':sunny:',
'🌅' => ':sunrise:',
'🌄' => ':sunrise_over_mountains:',
+ '🦸' => ':superhero:',
+ '🦹' => ':supervillain:',
'🏄' => ':surfer:',
'🍣' => ':sushi:',
'🚟' => ':suspension_railway:',
+ '🦢' => ':swan:',
'😓' => ':sweat:',
'💦' => ':sweat_drops:',
'😅' => ':sweat_smile:',
@@ -1643,34 +3620,36 @@
'🔣' => ':symbols:',
'🕍' => ':synagogue:',
'💉' => ':syringe:',
+ '🦖' => ':t_rex:',
'🌮' => ':taco:',
'🎉' => ':tada:',
+ '🥡' => ':takeout_box:',
+ '🫔' => ':tamale:',
'🎋' => ':tanabata_tree:',
'🍊' => ':tangerine:',
'♉' => ':taurus:',
'🚕' => ':taxi:',
'🍵' => ':tea:',
- '☎' => ':telephone:',
+ '🫖' => ':teapot:',
+ '🧸' => ':teddy_bear:',
'📞' => ':telephone_receiver:',
'🔭' => ':telescope:',
'🔟' => ':ten:',
'🎾' => ':tennis:',
'⛺' => ':tent:',
- '🌡' => ':thermometer:',
+ '🧪' => ':test_tube:',
'🤒' => ':thermometer_face:',
'🤔' => ':thinking:',
'🥉' => ':third_place:',
+ '🩴' => ':thong_sandal:',
'💭' => ':thought_balloon:',
+ '🧵' => ':thread:',
'👎' => ':thumbsdown:',
'👍' => ':thumbsup:',
- '⛈' => ':thunder_cloud_rain:',
'🎫' => ':ticket:',
- '🎟' => ':tickets:',
'🐯' => ':tiger:',
'🐅' => ':tiger2:',
- '⏲' => ':timer:',
'😫' => ':tired_face:',
- '™' => ':tm:',
'🚽' => ':toilet:',
'🗼' => ':tokyo_tower:',
'🍅' => ':tomato:',
@@ -1680,12 +3659,11 @@
'🏾' => ':tone4:',
'🏿' => ':tone5:',
'👅' => ':tongue:',
- '🛠' => ':tools:',
+ '🧰' => ':toolbox:',
+ '🦷' => ':tooth:',
+ '🪥' => ':toothbrush:',
'🔝' => ':top:',
'🎩' => ':tophat:',
- '⏭' => ':track_next:',
- '⏮' => ':track_previous:',
- '🖲' => ':trackball:',
'🚜' => ':tractor:',
'🚥' => ':traffic_light:',
'🚋' => ':train:',
@@ -1695,6 +3673,7 @@
'📐' => ':triangular_ruler:',
'🔱' => ':trident:',
'😤' => ':triumph:',
+ '🧌' => ':troll:',
'🚎' => ':trolleybus:',
'🏆' => ':trophy:',
'🍹' => ':tropical_drink:',
@@ -1716,21 +3695,18 @@
'🈹' => ':u5272:',
'🈴' => ':u5408:',
'🈯' => ':u6307:',
- '🈷' => ':u6708:',
'🈶' => ':u6709:',
'🈚' => ':u7121:',
'🈸' => ':u7533:',
'🈲' => ':u7981:',
'☔' => ':umbrella:',
- '☂' => ':umbrella2:',
'😒' => ':unamused:',
'🔞' => ':underage:',
'🦄' => ':unicorn:',
'🔓' => ':unlock:',
'🆙' => ':up:',
'🙃' => ':upside_down:',
- '⚱' => ':urn:',
- '✌' => ':v:',
+ '🧛' => ':vampire:',
'🚦' => ':vertical_traffic_light:',
'📼' => ':vhs:',
'📳' => ':vibration_mode:',
@@ -1742,17 +3718,15 @@
'🏐' => ':volleyball:',
'🆚' => ':vs:',
'🖖' => ':vulcan:',
+ '🧇' => ':waffle:',
'🚶' => ':walking:',
'🌘' => ':waning_crescent_moon:',
'🌖' => ':waning_gibbous_moon:',
- '⚠' => ':warning:',
- '🗑' => ':wastebasket:',
'⌚' => ':watch:',
'🐃' => ':water_buffalo:',
'🤽' => ':water_polo:',
'🍉' => ':watermelon:',
'👋' => ':wave:',
- '〰' => ':wavy_dash:',
'🌒' => ':waxing_crescent_moon:',
'🌔' => ':waxing_gibbous_moon:',
'🚾' => ':wc:',
@@ -1760,39 +3734,50 @@
'💒' => ':wedding:',
'🐳' => ':whale:',
'🐋' => ':whale2:',
- '☸' => ':wheel_of_dharma:',
+ '🛞' => ':wheel:',
'♿' => ':wheelchair:',
+ '🦯' => ':white_cane:',
'✅' => ':white_check_mark:',
'⚪' => ':white_circle:',
'💮' => ':white_flower:',
+ '🦳' => ':white_hair:',
+ '🤍' => ':white_heart:',
'⬜' => ':white_large_square:',
'◽' => ':white_medium_small_square:',
- '◻' => ':white_medium_square:',
- '▫' => ':white_small_square:',
'🔳' => ':white_square_button:',
- '🌥' => ':white_sun_cloud:',
- '🌦' => ':white_sun_rain_cloud:',
- '🌤' => ':white_sun_small_cloud:',
'🥀' => ':wilted_rose:',
- '🌬' => ':wind_blowing_face:',
'🎐' => ':wind_chime:',
+ '🪟' => ':window:',
'🍷' => ':wine_glass:',
+ '🪽' => ':wing:',
'😉' => ':wink:',
+ '🛜' => ':wireless:',
'🐺' => ':wolf:',
'👩' => ':woman:',
+ '🧕' => ':woman_with_headscarf:',
'👚' => ':womans_clothes:',
'👒' => ':womans_hat:',
'🚺' => ':womens:',
+ '🪵' => ':wood:',
+ '🥴' => ':woozy_face:',
+ '🪱' => ':worm:',
'😟' => ':worried:',
'🔧' => ':wrench:',
'🤼' => ':wrestlers:',
- '✍' => ':writing_hand:',
'❌' => ':x:',
+ '🩻' => ':x_ray:',
+ '🧶' => ':yarn:',
+ '🥱' => ':yawning_face:',
+ '🟡' => ':yellow_circle:',
'💛' => ':yellow_heart:',
+ '🟨' => ':yellow_square:',
'💴' => ':yen:',
- '☯' => ':yin_yang:',
+ '🪀' => ':yo_yo:',
'😋' => ':yum:',
+ '🤪' => ':zany_face:',
'⚡' => ':zap:',
+ '🦓' => ':zebra:',
'🤐' => ':zipper_mouth:',
+ '🧟' => ':zombie:',
'💤' => ':zzz:',
];
diff --git a/src/Symfony/Component/Emoji/Resources/data/emoji-text.php b/src/Symfony/Component/Emoji/Resources/data/emoji-text.php
index 6173fd4edbb7b..217df8e8350f1 100644
--- a/src/Symfony/Component/Emoji/Resources/data/emoji-text.php
+++ b/src/Symfony/Component/Emoji/Resources/data/emoji-text.php
@@ -1,9 +1,229 @@
':kiss-man-man-dark-skin-tone:',
+ '👨🏿❤️💋👨🏻' => ':kiss-man-man-dark-skin-tone-light-skin-tone:',
+ '👨🏿❤️💋👨🏾' => ':kiss-man-man-dark-skin-tone-medium-dark-skin-tone:',
+ '👨🏿❤️💋👨🏼' => ':kiss-man-man-dark-skin-tone-medium-light-skin-tone:',
+ '👨🏿❤️💋👨🏽' => ':kiss-man-man-dark-skin-tone-medium-skin-tone:',
+ '👨🏻❤️💋👨🏻' => ':kiss-man-man-light-skin-tone:',
+ '👨🏻❤️💋👨🏿' => ':kiss-man-man-light-skin-tone-dark-skin-tone:',
+ '👨🏻❤️💋👨🏾' => ':kiss-man-man-light-skin-tone-medium-dark-skin-tone:',
+ '👨🏻❤️💋👨🏼' => ':kiss-man-man-light-skin-tone-medium-light-skin-tone:',
+ '👨🏻❤️💋👨🏽' => ':kiss-man-man-light-skin-tone-medium-skin-tone:',
+ '👨🏾❤️💋👨🏾' => ':kiss-man-man-medium-dark-skin-tone:',
+ '👨🏾❤️💋👨🏿' => ':kiss-man-man-medium-dark-skin-tone-dark-skin-tone:',
+ '👨🏾❤️💋👨🏻' => ':kiss-man-man-medium-dark-skin-tone-light-skin-tone:',
+ '👨🏾❤️💋👨🏼' => ':kiss-man-man-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👨🏾❤️💋👨🏽' => ':kiss-man-man-medium-dark-skin-tone-medium-skin-tone:',
+ '👨🏼❤️💋👨🏼' => ':kiss-man-man-medium-light-skin-tone:',
+ '👨🏼❤️💋👨🏿' => ':kiss-man-man-medium-light-skin-tone-dark-skin-tone:',
+ '👨🏼❤️💋👨🏻' => ':kiss-man-man-medium-light-skin-tone-light-skin-tone:',
+ '👨🏼❤️💋👨🏾' => ':kiss-man-man-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👨🏼❤️💋👨🏽' => ':kiss-man-man-medium-light-skin-tone-medium-skin-tone:',
+ '👨🏽❤️💋👨🏽' => ':kiss-man-man-medium-skin-tone:',
+ '👨🏽❤️💋👨🏿' => ':kiss-man-man-medium-skin-tone-dark-skin-tone:',
+ '👨🏽❤️💋👨🏻' => ':kiss-man-man-medium-skin-tone-light-skin-tone:',
+ '👨🏽❤️💋👨🏾' => ':kiss-man-man-medium-skin-tone-medium-dark-skin-tone:',
+ '👨🏽❤️💋👨🏼' => ':kiss-man-man-medium-skin-tone-medium-light-skin-tone:',
+ '🧑🏿❤️💋🧑🏻' => ':kiss-person-person-dark-skin-tone-light-skin-tone:',
+ '🧑🏿❤️💋🧑🏾' => ':kiss-person-person-dark-skin-tone-medium-dark-skin-tone:',
+ '🧑🏿❤️💋🧑🏼' => ':kiss-person-person-dark-skin-tone-medium-light-skin-tone:',
+ '🧑🏿❤️💋🧑🏽' => ':kiss-person-person-dark-skin-tone-medium-skin-tone:',
+ '🧑🏻❤️💋🧑🏿' => ':kiss-person-person-light-skin-tone-dark-skin-tone:',
+ '🧑🏻❤️💋🧑🏾' => ':kiss-person-person-light-skin-tone-medium-dark-skin-tone:',
+ '🧑🏻❤️💋🧑🏼' => ':kiss-person-person-light-skin-tone-medium-light-skin-tone:',
+ '🧑🏻❤️💋🧑🏽' => ':kiss-person-person-light-skin-tone-medium-skin-tone:',
+ '🧑🏾❤️💋🧑🏿' => ':kiss-person-person-medium-dark-skin-tone-dark-skin-tone:',
+ '🧑🏾❤️💋🧑🏻' => ':kiss-person-person-medium-dark-skin-tone-light-skin-tone:',
+ '🧑🏾❤️💋🧑🏼' => ':kiss-person-person-medium-dark-skin-tone-medium-light-skin-tone:',
+ '🧑🏾❤️💋🧑🏽' => ':kiss-person-person-medium-dark-skin-tone-medium-skin-tone:',
+ '🧑🏼❤️💋🧑🏿' => ':kiss-person-person-medium-light-skin-tone-dark-skin-tone:',
+ '🧑🏼❤️💋🧑🏻' => ':kiss-person-person-medium-light-skin-tone-light-skin-tone:',
+ '🧑🏼❤️💋🧑🏾' => ':kiss-person-person-medium-light-skin-tone-medium-dark-skin-tone:',
+ '🧑🏼❤️💋🧑🏽' => ':kiss-person-person-medium-light-skin-tone-medium-skin-tone:',
+ '🧑🏽❤️💋🧑🏿' => ':kiss-person-person-medium-skin-tone-dark-skin-tone:',
+ '🧑🏽❤️💋🧑🏻' => ':kiss-person-person-medium-skin-tone-light-skin-tone:',
+ '🧑🏽❤️💋🧑🏾' => ':kiss-person-person-medium-skin-tone-medium-dark-skin-tone:',
+ '🧑🏽❤️💋🧑🏼' => ':kiss-person-person-medium-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️💋👨🏿' => ':kiss-woman-man-dark-skin-tone:',
+ '👩🏿❤️💋👨🏻' => ':kiss-woman-man-dark-skin-tone-light-skin-tone:',
+ '👩🏿❤️💋👨🏾' => ':kiss-woman-man-dark-skin-tone-medium-dark-skin-tone:',
+ '👩🏿❤️💋👨🏼' => ':kiss-woman-man-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️💋👨🏽' => ':kiss-woman-man-dark-skin-tone-medium-skin-tone:',
+ '👩🏻❤️💋👨🏻' => ':kiss-woman-man-light-skin-tone:',
+ '👩🏻❤️💋👨🏿' => ':kiss-woman-man-light-skin-tone-dark-skin-tone:',
+ '👩🏻❤️💋👨🏾' => ':kiss-woman-man-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏻❤️💋👨🏼' => ':kiss-woman-man-light-skin-tone-medium-light-skin-tone:',
+ '👩🏻❤️💋👨🏽' => ':kiss-woman-man-light-skin-tone-medium-skin-tone:',
+ '👩🏾❤️💋👨🏾' => ':kiss-woman-man-medium-dark-skin-tone:',
+ '👩🏾❤️💋👨🏿' => ':kiss-woman-man-medium-dark-skin-tone-dark-skin-tone:',
+ '👩🏾❤️💋👨🏻' => ':kiss-woman-man-medium-dark-skin-tone-light-skin-tone:',
+ '👩🏾❤️💋👨🏼' => ':kiss-woman-man-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏾❤️💋👨🏽' => ':kiss-woman-man-medium-dark-skin-tone-medium-skin-tone:',
+ '👩🏼❤️💋👨🏼' => ':kiss-woman-man-medium-light-skin-tone:',
+ '👩🏼❤️💋👨🏿' => ':kiss-woman-man-medium-light-skin-tone-dark-skin-tone:',
+ '👩🏼❤️💋👨🏻' => ':kiss-woman-man-medium-light-skin-tone-light-skin-tone:',
+ '👩🏼❤️💋👨🏾' => ':kiss-woman-man-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏼❤️💋👨🏽' => ':kiss-woman-man-medium-light-skin-tone-medium-skin-tone:',
+ '👩🏽❤️💋👨🏽' => ':kiss-woman-man-medium-skin-tone:',
+ '👩🏽❤️💋👨🏿' => ':kiss-woman-man-medium-skin-tone-dark-skin-tone:',
+ '👩🏽❤️💋👨🏻' => ':kiss-woman-man-medium-skin-tone-light-skin-tone:',
+ '👩🏽❤️💋👨🏾' => ':kiss-woman-man-medium-skin-tone-medium-dark-skin-tone:',
+ '👩🏽❤️💋👨🏼' => ':kiss-woman-man-medium-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️💋👩🏿' => ':kiss-woman-woman-dark-skin-tone:',
+ '👩🏿❤️💋👩🏻' => ':kiss-woman-woman-dark-skin-tone-light-skin-tone:',
+ '👩🏿❤️💋👩🏾' => ':kiss-woman-woman-dark-skin-tone-medium-dark-skin-tone:',
+ '👩🏿❤️💋👩🏼' => ':kiss-woman-woman-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️💋👩🏽' => ':kiss-woman-woman-dark-skin-tone-medium-skin-tone:',
+ '👩🏻❤️💋👩🏻' => ':kiss-woman-woman-light-skin-tone:',
+ '👩🏻❤️💋👩🏿' => ':kiss-woman-woman-light-skin-tone-dark-skin-tone:',
+ '👩🏻❤️💋👩🏾' => ':kiss-woman-woman-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏻❤️💋👩🏼' => ':kiss-woman-woman-light-skin-tone-medium-light-skin-tone:',
+ '👩🏻❤️💋👩🏽' => ':kiss-woman-woman-light-skin-tone-medium-skin-tone:',
+ '👩🏾❤️💋👩🏾' => ':kiss-woman-woman-medium-dark-skin-tone:',
+ '👩🏾❤️💋👩🏿' => ':kiss-woman-woman-medium-dark-skin-tone-dark-skin-tone:',
+ '👩🏾❤️💋👩🏻' => ':kiss-woman-woman-medium-dark-skin-tone-light-skin-tone:',
+ '👩🏾❤️💋👩🏼' => ':kiss-woman-woman-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏾❤️💋👩🏽' => ':kiss-woman-woman-medium-dark-skin-tone-medium-skin-tone:',
+ '👩🏼❤️💋👩🏼' => ':kiss-woman-woman-medium-light-skin-tone:',
+ '👩🏼❤️💋👩🏿' => ':kiss-woman-woman-medium-light-skin-tone-dark-skin-tone:',
+ '👩🏼❤️💋👩🏻' => ':kiss-woman-woman-medium-light-skin-tone-light-skin-tone:',
+ '👩🏼❤️💋👩🏾' => ':kiss-woman-woman-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏼❤️💋👩🏽' => ':kiss-woman-woman-medium-light-skin-tone-medium-skin-tone:',
+ '👩🏽❤️💋👩🏽' => ':kiss-woman-woman-medium-skin-tone:',
+ '👩🏽❤️💋👩🏿' => ':kiss-woman-woman-medium-skin-tone-dark-skin-tone:',
+ '👩🏽❤️💋👩🏻' => ':kiss-woman-woman-medium-skin-tone-light-skin-tone:',
+ '👩🏽❤️💋👩🏾' => ':kiss-woman-woman-medium-skin-tone-medium-dark-skin-tone:',
+ '👩🏽❤️💋👩🏼' => ':kiss-woman-woman-medium-skin-tone-medium-light-skin-tone:',
+ '👨🏿❤️👨🏿' => ':couple-with-heart-man-man-dark-skin-tone:',
+ '👨🏿❤️👨🏻' => ':couple-with-heart-man-man-dark-skin-tone-light-skin-tone:',
+ '👨🏿❤️👨🏾' => ':couple-with-heart-man-man-dark-skin-tone-medium-dark-skin-tone:',
+ '👨🏿❤️👨🏼' => ':couple-with-heart-man-man-dark-skin-tone-medium-light-skin-tone:',
+ '👨🏿❤️👨🏽' => ':couple-with-heart-man-man-dark-skin-tone-medium-skin-tone:',
+ '👨🏻❤️👨🏻' => ':couple-with-heart-man-man-light-skin-tone:',
+ '👨🏻❤️👨🏿' => ':couple-with-heart-man-man-light-skin-tone-dark-skin-tone:',
+ '👨🏻❤️👨🏾' => ':couple-with-heart-man-man-light-skin-tone-medium-dark-skin-tone:',
+ '👨🏻❤️👨🏼' => ':couple-with-heart-man-man-light-skin-tone-medium-light-skin-tone:',
+ '👨🏻❤️👨🏽' => ':couple-with-heart-man-man-light-skin-tone-medium-skin-tone:',
+ '👨🏾❤️👨🏾' => ':couple-with-heart-man-man-medium-dark-skin-tone:',
+ '👨🏾❤️👨🏿' => ':couple-with-heart-man-man-medium-dark-skin-tone-dark-skin-tone:',
+ '👨🏾❤️👨🏻' => ':couple-with-heart-man-man-medium-dark-skin-tone-light-skin-tone:',
+ '👨🏾❤️👨🏼' => ':couple-with-heart-man-man-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👨🏾❤️👨🏽' => ':couple-with-heart-man-man-medium-dark-skin-tone-medium-skin-tone:',
+ '👨🏼❤️👨🏼' => ':couple-with-heart-man-man-medium-light-skin-tone:',
+ '👨🏼❤️👨🏿' => ':couple-with-heart-man-man-medium-light-skin-tone-dark-skin-tone:',
+ '👨🏼❤️👨🏻' => ':couple-with-heart-man-man-medium-light-skin-tone-light-skin-tone:',
+ '👨🏼❤️👨🏾' => ':couple-with-heart-man-man-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👨🏼❤️👨🏽' => ':couple-with-heart-man-man-medium-light-skin-tone-medium-skin-tone:',
+ '👨🏽❤️👨🏽' => ':couple-with-heart-man-man-medium-skin-tone:',
+ '👨🏽❤️👨🏿' => ':couple-with-heart-man-man-medium-skin-tone-dark-skin-tone:',
+ '👨🏽❤️👨🏻' => ':couple-with-heart-man-man-medium-skin-tone-light-skin-tone:',
+ '👨🏽❤️👨🏾' => ':couple-with-heart-man-man-medium-skin-tone-medium-dark-skin-tone:',
+ '👨🏽❤️👨🏼' => ':couple-with-heart-man-man-medium-skin-tone-medium-light-skin-tone:',
+ '🧑🏿❤️🧑🏻' => ':couple-with-heart-person-person-dark-skin-tone-light-skin-tone:',
+ '🧑🏿❤️🧑🏾' => ':couple-with-heart-person-person-dark-skin-tone-medium-dark-skin-tone:',
+ '🧑🏿❤️🧑🏼' => ':couple-with-heart-person-person-dark-skin-tone-medium-light-skin-tone:',
+ '🧑🏿❤️🧑🏽' => ':couple-with-heart-person-person-dark-skin-tone-medium-skin-tone:',
+ '🧑🏻❤️🧑🏿' => ':couple-with-heart-person-person-light-skin-tone-dark-skin-tone:',
+ '🧑🏻❤️🧑🏾' => ':couple-with-heart-person-person-light-skin-tone-medium-dark-skin-tone:',
+ '🧑🏻❤️🧑🏼' => ':couple-with-heart-person-person-light-skin-tone-medium-light-skin-tone:',
+ '🧑🏻❤️🧑🏽' => ':couple-with-heart-person-person-light-skin-tone-medium-skin-tone:',
+ '🧑🏾❤️🧑🏿' => ':couple-with-heart-person-person-medium-dark-skin-tone-dark-skin-tone:',
+ '🧑🏾❤️🧑🏻' => ':couple-with-heart-person-person-medium-dark-skin-tone-light-skin-tone:',
+ '🧑🏾❤️🧑🏼' => ':couple-with-heart-person-person-medium-dark-skin-tone-medium-light-skin-tone:',
+ '🧑🏾❤️🧑🏽' => ':couple-with-heart-person-person-medium-dark-skin-tone-medium-skin-tone:',
+ '🧑🏼❤️🧑🏿' => ':couple-with-heart-person-person-medium-light-skin-tone-dark-skin-tone:',
+ '🧑🏼❤️🧑🏻' => ':couple-with-heart-person-person-medium-light-skin-tone-light-skin-tone:',
+ '🧑🏼❤️🧑🏾' => ':couple-with-heart-person-person-medium-light-skin-tone-medium-dark-skin-tone:',
+ '🧑🏼❤️🧑🏽' => ':couple-with-heart-person-person-medium-light-skin-tone-medium-skin-tone:',
+ '🧑🏽❤️🧑🏿' => ':couple-with-heart-person-person-medium-skin-tone-dark-skin-tone:',
+ '🧑🏽❤️🧑🏻' => ':couple-with-heart-person-person-medium-skin-tone-light-skin-tone:',
+ '🧑🏽❤️🧑🏾' => ':couple-with-heart-person-person-medium-skin-tone-medium-dark-skin-tone:',
+ '🧑🏽❤️🧑🏼' => ':couple-with-heart-person-person-medium-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️👨🏿' => ':couple-with-heart-woman-man-dark-skin-tone:',
+ '👩🏿❤️👨🏻' => ':couple-with-heart-woman-man-dark-skin-tone-light-skin-tone:',
+ '👩🏿❤️👨🏾' => ':couple-with-heart-woman-man-dark-skin-tone-medium-dark-skin-tone:',
+ '👩🏿❤️👨🏼' => ':couple-with-heart-woman-man-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️👨🏽' => ':couple-with-heart-woman-man-dark-skin-tone-medium-skin-tone:',
+ '👩🏻❤️👨🏻' => ':couple-with-heart-woman-man-light-skin-tone:',
+ '👩🏻❤️👨🏿' => ':couple-with-heart-woman-man-light-skin-tone-dark-skin-tone:',
+ '👩🏻❤️👨🏾' => ':couple-with-heart-woman-man-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏻❤️👨🏼' => ':couple-with-heart-woman-man-light-skin-tone-medium-light-skin-tone:',
+ '👩🏻❤️👨🏽' => ':couple-with-heart-woman-man-light-skin-tone-medium-skin-tone:',
+ '👩🏾❤️👨🏾' => ':couple-with-heart-woman-man-medium-dark-skin-tone:',
+ '👩🏾❤️👨🏿' => ':couple-with-heart-woman-man-medium-dark-skin-tone-dark-skin-tone:',
+ '👩🏾❤️👨🏻' => ':couple-with-heart-woman-man-medium-dark-skin-tone-light-skin-tone:',
+ '👩🏾❤️👨🏼' => ':couple-with-heart-woman-man-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏾❤️👨🏽' => ':couple-with-heart-woman-man-medium-dark-skin-tone-medium-skin-tone:',
+ '👩🏼❤️👨🏼' => ':couple-with-heart-woman-man-medium-light-skin-tone:',
+ '👩🏼❤️👨🏿' => ':couple-with-heart-woman-man-medium-light-skin-tone-dark-skin-tone:',
+ '👩🏼❤️👨🏻' => ':couple-with-heart-woman-man-medium-light-skin-tone-light-skin-tone:',
+ '👩🏼❤️👨🏾' => ':couple-with-heart-woman-man-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏼❤️👨🏽' => ':couple-with-heart-woman-man-medium-light-skin-tone-medium-skin-tone:',
+ '👩🏽❤️👨🏽' => ':couple-with-heart-woman-man-medium-skin-tone:',
+ '👩🏽❤️👨🏿' => ':couple-with-heart-woman-man-medium-skin-tone-dark-skin-tone:',
+ '👩🏽❤️👨🏻' => ':couple-with-heart-woman-man-medium-skin-tone-light-skin-tone:',
+ '👩🏽❤️👨🏾' => ':couple-with-heart-woman-man-medium-skin-tone-medium-dark-skin-tone:',
+ '👩🏽❤️👨🏼' => ':couple-with-heart-woman-man-medium-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️👩🏿' => ':couple-with-heart-woman-woman-dark-skin-tone:',
+ '👩🏿❤️👩🏻' => ':couple-with-heart-woman-woman-dark-skin-tone-light-skin-tone:',
+ '👩🏿❤️👩🏾' => ':couple-with-heart-woman-woman-dark-skin-tone-medium-dark-skin-tone:',
+ '👩🏿❤️👩🏼' => ':couple-with-heart-woman-woman-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏿❤️👩🏽' => ':couple-with-heart-woman-woman-dark-skin-tone-medium-skin-tone:',
+ '👩🏻❤️👩🏻' => ':couple-with-heart-woman-woman-light-skin-tone:',
+ '👩🏻❤️👩🏿' => ':couple-with-heart-woman-woman-light-skin-tone-dark-skin-tone:',
+ '👩🏻❤️👩🏾' => ':couple-with-heart-woman-woman-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏻❤️👩🏼' => ':couple-with-heart-woman-woman-light-skin-tone-medium-light-skin-tone:',
+ '👩🏻❤️👩🏽' => ':couple-with-heart-woman-woman-light-skin-tone-medium-skin-tone:',
+ '👩🏾❤️👩🏾' => ':couple-with-heart-woman-woman-medium-dark-skin-tone:',
+ '👩🏾❤️👩🏿' => ':couple-with-heart-woman-woman-medium-dark-skin-tone-dark-skin-tone:',
+ '👩🏾❤️👩🏻' => ':couple-with-heart-woman-woman-medium-dark-skin-tone-light-skin-tone:',
+ '👩🏾❤️👩🏼' => ':couple-with-heart-woman-woman-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏾❤️👩🏽' => ':couple-with-heart-woman-woman-medium-dark-skin-tone-medium-skin-tone:',
+ '👩🏼❤️👩🏼' => ':couple-with-heart-woman-woman-medium-light-skin-tone:',
+ '👩🏼❤️👩🏿' => ':couple-with-heart-woman-woman-medium-light-skin-tone-dark-skin-tone:',
+ '👩🏼❤️👩🏻' => ':couple-with-heart-woman-woman-medium-light-skin-tone-light-skin-tone:',
+ '👩🏼❤️👩🏾' => ':couple-with-heart-woman-woman-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏼❤️👩🏽' => ':couple-with-heart-woman-woman-medium-light-skin-tone-medium-skin-tone:',
+ '👩🏽❤️👩🏽' => ':couple-with-heart-woman-woman-medium-skin-tone:',
+ '👩🏽❤️👩🏿' => ':couple-with-heart-woman-woman-medium-skin-tone-dark-skin-tone:',
+ '👩🏽❤️👩🏻' => ':couple-with-heart-woman-woman-medium-skin-tone-light-skin-tone:',
+ '👩🏽❤️👩🏾' => ':couple-with-heart-woman-woman-medium-skin-tone-medium-dark-skin-tone:',
+ '👩🏽❤️👩🏼' => ':couple-with-heart-woman-woman-medium-skin-tone-medium-light-skin-tone:',
'👨❤️💋👨' => ':man-kiss-man:',
- '👩❤️💋👩' => ':woman-kiss-woman:',
'👩❤️💋👨' => ':woman-kiss-man:',
+ '👩❤️💋👩' => ':woman-kiss-woman:',
+ '🧎🏿♂️➡️' => ':man-kneeling-facing-right-dark-skin-tone:',
+ '🧎🏻♂️➡️' => ':man-kneeling-facing-right-light-skin-tone:',
+ '🧎🏾♂️➡️' => ':man-kneeling-facing-right-medium-dark-skin-tone:',
+ '🧎🏼♂️➡️' => ':man-kneeling-facing-right-medium-light-skin-tone:',
+ '🧎🏽♂️➡️' => ':man-kneeling-facing-right-medium-skin-tone:',
+ '🏃🏿♂️➡️' => ':man-running-facing-right-dark-skin-tone:',
+ '🏃🏻♂️➡️' => ':man-running-facing-right-light-skin-tone:',
+ '🏃🏾♂️➡️' => ':man-running-facing-right-medium-dark-skin-tone:',
+ '🏃🏼♂️➡️' => ':man-running-facing-right-medium-light-skin-tone:',
+ '🏃🏽♂️➡️' => ':man-running-facing-right-medium-skin-tone:',
+ '🚶🏿♂️➡️' => ':man-walking-facing-right-dark-skin-tone:',
+ '🚶🏻♂️➡️' => ':man-walking-facing-right-light-skin-tone:',
+ '🚶🏾♂️➡️' => ':man-walking-facing-right-medium-dark-skin-tone:',
+ '🚶🏼♂️➡️' => ':man-walking-facing-right-medium-light-skin-tone:',
+ '🚶🏽♂️➡️' => ':man-walking-facing-right-medium-skin-tone:',
+ '🧎🏿♀️➡️' => ':woman-kneeling-facing-right-dark-skin-tone:',
+ '🧎🏻♀️➡️' => ':woman-kneeling-facing-right-light-skin-tone:',
+ '🧎🏾♀️➡️' => ':woman-kneeling-facing-right-medium-dark-skin-tone:',
+ '🧎🏼♀️➡️' => ':woman-kneeling-facing-right-medium-light-skin-tone:',
+ '🧎🏽♀️➡️' => ':woman-kneeling-facing-right-medium-skin-tone:',
+ '🏃🏿♀️➡️' => ':woman-running-facing-right-dark-skin-tone:',
+ '🏃🏻♀️➡️' => ':woman-running-facing-right-light-skin-tone:',
+ '🏃🏾♀️➡️' => ':woman-running-facing-right-medium-dark-skin-tone:',
+ '🏃🏼♀️➡️' => ':woman-running-facing-right-medium-light-skin-tone:',
+ '🏃🏽♀️➡️' => ':woman-running-facing-right-medium-skin-tone:',
+ '🚶🏿♀️➡️' => ':woman-walking-facing-right-dark-skin-tone:',
+ '🚶🏻♀️➡️' => ':woman-walking-facing-right-light-skin-tone:',
+ '🚶🏾♀️➡️' => ':woman-walking-facing-right-medium-dark-skin-tone:',
+ '🚶🏼♀️➡️' => ':woman-walking-facing-right-medium-light-skin-tone:',
+ '🚶🏽♀️➡️' => ':woman-walking-facing-right-medium-skin-tone:',
'👨❤💋👨' => ':couplekiss-man-man:',
'👩❤💋👨' => ':couplekiss-man-woman:',
'👩❤💋👩' => ':couplekiss-woman-woman:',
@@ -20,13 +240,144 @@
'👩👩👧👧' => ':woman-woman-girl-girl:',
'🏴' => ':scotland:',
'🏴' => ':wales:',
+ '👨🏿🦽➡️' => ':man-in-manual-wheelchair-facing-right-dark-skin-tone:',
+ '👨🏻🦽➡️' => ':man-in-manual-wheelchair-facing-right-light-skin-tone:',
+ '👨🏾🦽➡️' => ':man-in-manual-wheelchair-facing-right-medium-dark-skin-tone:',
+ '👨🏼🦽➡️' => ':man-in-manual-wheelchair-facing-right-medium-light-skin-tone:',
+ '👨🏽🦽➡️' => ':man-in-manual-wheelchair-facing-right-medium-skin-tone:',
+ '👨🏿🦼➡️' => ':man-in-motorized-wheelchair-facing-right-dark-skin-tone:',
+ '👨🏻🦼➡️' => ':man-in-motorized-wheelchair-facing-right-light-skin-tone:',
+ '👨🏾🦼➡️' => ':man-in-motorized-wheelchair-facing-right-medium-dark-skin-tone:',
+ '👨🏼🦼➡️' => ':man-in-motorized-wheelchair-facing-right-medium-light-skin-tone:',
+ '👨🏽🦼➡️' => ':man-in-motorized-wheelchair-facing-right-medium-skin-tone:',
'🧎♂️➡️' => ':man-kneeling-facing-right:',
'🏃♂️➡️' => ':man-running-facing-right:',
'🚶♂️➡️' => ':man-walking-facing-right:',
+ '👨🏿🦯➡️' => ':man-with-white-cane-facing-right-dark-skin-tone:',
+ '👨🏻🦯➡️' => ':man-with-white-cane-facing-right-light-skin-tone:',
+ '👨🏾🦯➡️' => ':man-with-white-cane-facing-right-medium-dark-skin-tone:',
+ '👨🏼🦯➡️' => ':man-with-white-cane-facing-right-medium-light-skin-tone:',
+ '👨🏽🦯➡️' => ':man-with-white-cane-facing-right-medium-skin-tone:',
+ '👨🏿🤝👨🏻' => ':men-holding-hands-dark-skin-tone-light-skin-tone:',
+ '👨🏿🤝👨🏾' => ':men-holding-hands-dark-skin-tone-medium-dark-skin-tone:',
+ '👨🏿🤝👨🏼' => ':men-holding-hands-dark-skin-tone-medium-light-skin-tone:',
+ '👨🏿🤝👨🏽' => ':men-holding-hands-dark-skin-tone-medium-skin-tone:',
+ '👨🏻🤝👨🏿' => ':men-holding-hands-light-skin-tone-dark-skin-tone:',
+ '👨🏻🤝👨🏾' => ':men-holding-hands-light-skin-tone-medium-dark-skin-tone:',
+ '👨🏻🤝👨🏼' => ':men-holding-hands-light-skin-tone-medium-light-skin-tone:',
+ '👨🏻🤝👨🏽' => ':men-holding-hands-light-skin-tone-medium-skin-tone:',
+ '👨🏾🤝👨🏿' => ':men-holding-hands-medium-dark-skin-tone-dark-skin-tone:',
+ '👨🏾🤝👨🏻' => ':men-holding-hands-medium-dark-skin-tone-light-skin-tone:',
+ '👨🏾🤝👨🏼' => ':men-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👨🏾🤝👨🏽' => ':men-holding-hands-medium-dark-skin-tone-medium-skin-tone:',
+ '👨🏼🤝👨🏿' => ':men-holding-hands-medium-light-skin-tone-dark-skin-tone:',
+ '👨🏼🤝👨🏻' => ':men-holding-hands-medium-light-skin-tone-light-skin-tone:',
+ '👨🏼🤝👨🏾' => ':men-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👨🏼🤝👨🏽' => ':men-holding-hands-medium-light-skin-tone-medium-skin-tone:',
+ '👨🏽🤝👨🏿' => ':men-holding-hands-medium-skin-tone-dark-skin-tone:',
+ '👨🏽🤝👨🏻' => ':men-holding-hands-medium-skin-tone-light-skin-tone:',
+ '👨🏽🤝👨🏾' => ':men-holding-hands-medium-skin-tone-medium-dark-skin-tone:',
+ '👨🏽🤝👨🏼' => ':men-holding-hands-medium-skin-tone-medium-light-skin-tone:',
+ '🧑🏿🤝🧑🏿' => ':people-holding-hands-dark-skin-tone:',
+ '🧑🏿🤝🧑🏻' => ':people-holding-hands-dark-skin-tone-light-skin-tone:',
+ '🧑🏿🤝🧑🏾' => ':people-holding-hands-dark-skin-tone-medium-dark-skin-tone:',
+ '🧑🏿🤝🧑🏼' => ':people-holding-hands-dark-skin-tone-medium-light-skin-tone:',
+ '🧑🏿🤝🧑🏽' => ':people-holding-hands-dark-skin-tone-medium-skin-tone:',
+ '🧑🏻🤝🧑🏻' => ':people-holding-hands-light-skin-tone:',
+ '🧑🏻🤝🧑🏿' => ':people-holding-hands-light-skin-tone-dark-skin-tone:',
+ '🧑🏻🤝🧑🏾' => ':people-holding-hands-light-skin-tone-medium-dark-skin-tone:',
+ '🧑🏻🤝🧑🏼' => ':people-holding-hands-light-skin-tone-medium-light-skin-tone:',
+ '🧑🏻🤝🧑🏽' => ':people-holding-hands-light-skin-tone-medium-skin-tone:',
+ '🧑🏾🤝🧑🏾' => ':people-holding-hands-medium-dark-skin-tone:',
+ '🧑🏾🤝🧑🏿' => ':people-holding-hands-medium-dark-skin-tone-dark-skin-tone:',
+ '🧑🏾🤝🧑🏻' => ':people-holding-hands-medium-dark-skin-tone-light-skin-tone:',
+ '🧑🏾🤝🧑🏼' => ':people-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:',
+ '🧑🏾🤝🧑🏽' => ':people-holding-hands-medium-dark-skin-tone-medium-skin-tone:',
+ '🧑🏼🤝🧑🏼' => ':people-holding-hands-medium-light-skin-tone:',
+ '🧑🏼🤝🧑🏿' => ':people-holding-hands-medium-light-skin-tone-dark-skin-tone:',
+ '🧑🏼🤝🧑🏻' => ':people-holding-hands-medium-light-skin-tone-light-skin-tone:',
+ '🧑🏼🤝🧑🏾' => ':people-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:',
+ '🧑🏼🤝🧑🏽' => ':people-holding-hands-medium-light-skin-tone-medium-skin-tone:',
+ '🧑🏽🤝🧑🏽' => ':people-holding-hands-medium-skin-tone:',
+ '🧑🏽🤝🧑🏿' => ':people-holding-hands-medium-skin-tone-dark-skin-tone:',
+ '🧑🏽🤝🧑🏻' => ':people-holding-hands-medium-skin-tone-light-skin-tone:',
+ '🧑🏽🤝🧑🏾' => ':people-holding-hands-medium-skin-tone-medium-dark-skin-tone:',
+ '🧑🏽🤝🧑🏼' => ':people-holding-hands-medium-skin-tone-medium-light-skin-tone:',
+ '🧑🏿🦽➡️' => ':person-in-manual-wheelchair-facing-right-dark-skin-tone:',
+ '🧑🏻🦽➡️' => ':person-in-manual-wheelchair-facing-right-light-skin-tone:',
+ '🧑🏾🦽➡️' => ':person-in-manual-wheelchair-facing-right-medium-dark-skin-tone:',
+ '🧑🏼🦽➡️' => ':person-in-manual-wheelchair-facing-right-medium-light-skin-tone:',
+ '🧑🏽🦽➡️' => ':person-in-manual-wheelchair-facing-right-medium-skin-tone:',
+ '🧑🏿🦼➡️' => ':person-in-motorized-wheelchair-facing-right-dark-skin-tone:',
+ '🧑🏻🦼➡️' => ':person-in-motorized-wheelchair-facing-right-light-skin-tone:',
+ '🧑🏾🦼➡️' => ':person-in-motorized-wheelchair-facing-right-medium-dark-skin-tone:',
+ '🧑🏼🦼➡️' => ':person-in-motorized-wheelchair-facing-right-medium-light-skin-tone:',
+ '🧑🏽🦼➡️' => ':person-in-motorized-wheelchair-facing-right-medium-skin-tone:',
+ '🧑🏿🦯➡️' => ':person-with-white-cane-facing-right-dark-skin-tone:',
+ '🧑🏻🦯➡️' => ':person-with-white-cane-facing-right-light-skin-tone:',
+ '🧑🏾🦯➡️' => ':person-with-white-cane-facing-right-medium-dark-skin-tone:',
+ '🧑🏼🦯➡️' => ':person-with-white-cane-facing-right-medium-light-skin-tone:',
+ '🧑🏽🦯➡️' => ':person-with-white-cane-facing-right-medium-skin-tone:',
+ '👩🏿🤝👨🏻' => ':woman-and-man-holding-hands-dark-skin-tone-light-skin-tone:',
+ '👩🏿🤝👨🏾' => ':woman-and-man-holding-hands-dark-skin-tone-medium-dark-skin-tone:',
+ '👩🏿🤝👨🏼' => ':woman-and-man-holding-hands-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏿🤝👨🏽' => ':woman-and-man-holding-hands-dark-skin-tone-medium-skin-tone:',
+ '👩🏻🤝👨🏿' => ':woman-and-man-holding-hands-light-skin-tone-dark-skin-tone:',
+ '👩🏻🤝👨🏾' => ':woman-and-man-holding-hands-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏻🤝👨🏼' => ':woman-and-man-holding-hands-light-skin-tone-medium-light-skin-tone:',
+ '👩🏻🤝👨🏽' => ':woman-and-man-holding-hands-light-skin-tone-medium-skin-tone:',
+ '👩🏾🤝👨🏿' => ':woman-and-man-holding-hands-medium-dark-skin-tone-dark-skin-tone:',
+ '👩🏾🤝👨🏻' => ':woman-and-man-holding-hands-medium-dark-skin-tone-light-skin-tone:',
+ '👩🏾🤝👨🏼' => ':woman-and-man-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏾🤝👨🏽' => ':woman-and-man-holding-hands-medium-dark-skin-tone-medium-skin-tone:',
+ '👩🏼🤝👨🏿' => ':woman-and-man-holding-hands-medium-light-skin-tone-dark-skin-tone:',
+ '👩🏼🤝👨🏻' => ':woman-and-man-holding-hands-medium-light-skin-tone-light-skin-tone:',
+ '👩🏼🤝👨🏾' => ':woman-and-man-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏼🤝👨🏽' => ':woman-and-man-holding-hands-medium-light-skin-tone-medium-skin-tone:',
+ '👩🏽🤝👨🏿' => ':woman-and-man-holding-hands-medium-skin-tone-dark-skin-tone:',
+ '👩🏽🤝👨🏻' => ':woman-and-man-holding-hands-medium-skin-tone-light-skin-tone:',
+ '👩🏽🤝👨🏾' => ':woman-and-man-holding-hands-medium-skin-tone-medium-dark-skin-tone:',
+ '👩🏽🤝👨🏼' => ':woman-and-man-holding-hands-medium-skin-tone-medium-light-skin-tone:',
+ '👩🏿🦽➡️' => ':woman-in-manual-wheelchair-facing-right-dark-skin-tone:',
+ '👩🏻🦽➡️' => ':woman-in-manual-wheelchair-facing-right-light-skin-tone:',
+ '👩🏾🦽➡️' => ':woman-in-manual-wheelchair-facing-right-medium-dark-skin-tone:',
+ '👩🏼🦽➡️' => ':woman-in-manual-wheelchair-facing-right-medium-light-skin-tone:',
+ '👩🏽🦽➡️' => ':woman-in-manual-wheelchair-facing-right-medium-skin-tone:',
+ '👩🏿🦼➡️' => ':woman-in-motorized-wheelchair-facing-right-dark-skin-tone:',
+ '👩🏻🦼➡️' => ':woman-in-motorized-wheelchair-facing-right-light-skin-tone:',
+ '👩🏾🦼➡️' => ':woman-in-motorized-wheelchair-facing-right-medium-dark-skin-tone:',
+ '👩🏼🦼➡️' => ':woman-in-motorized-wheelchair-facing-right-medium-light-skin-tone:',
+ '👩🏽🦼➡️' => ':woman-in-motorized-wheelchair-facing-right-medium-skin-tone:',
'🧎♀️➡️' => ':woman-kneeling-facing-right:',
'🏃♀️➡️' => ':woman-running-facing-right:',
'🚶♀️➡️' => ':woman-walking-facing-right:',
+ '👩🏿🦯➡️' => ':woman-with-white-cane-facing-right-dark-skin-tone:',
+ '👩🏻🦯➡️' => ':woman-with-white-cane-facing-right-light-skin-tone:',
+ '👩🏾🦯➡️' => ':woman-with-white-cane-facing-right-medium-dark-skin-tone:',
+ '👩🏼🦯➡️' => ':woman-with-white-cane-facing-right-medium-light-skin-tone:',
+ '👩🏽🦯➡️' => ':woman-with-white-cane-facing-right-medium-skin-tone:',
+ '👩🏿🤝👩🏻' => ':women-holding-hands-dark-skin-tone-light-skin-tone:',
+ '👩🏿🤝👩🏾' => ':women-holding-hands-dark-skin-tone-medium-dark-skin-tone:',
+ '👩🏿🤝👩🏼' => ':women-holding-hands-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏿🤝👩🏽' => ':women-holding-hands-dark-skin-tone-medium-skin-tone:',
+ '👩🏻🤝👩🏿' => ':women-holding-hands-light-skin-tone-dark-skin-tone:',
+ '👩🏻🤝👩🏾' => ':women-holding-hands-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏻🤝👩🏼' => ':women-holding-hands-light-skin-tone-medium-light-skin-tone:',
+ '👩🏻🤝👩🏽' => ':women-holding-hands-light-skin-tone-medium-skin-tone:',
+ '👩🏾🤝👩🏿' => ':women-holding-hands-medium-dark-skin-tone-dark-skin-tone:',
+ '👩🏾🤝👩🏻' => ':women-holding-hands-medium-dark-skin-tone-light-skin-tone:',
+ '👩🏾🤝👩🏼' => ':women-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:',
+ '👩🏾🤝👩🏽' => ':women-holding-hands-medium-dark-skin-tone-medium-skin-tone:',
+ '👩🏼🤝👩🏿' => ':women-holding-hands-medium-light-skin-tone-dark-skin-tone:',
+ '👩🏼🤝👩🏻' => ':women-holding-hands-medium-light-skin-tone-light-skin-tone:',
+ '👩🏼🤝👩🏾' => ':women-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:',
+ '👩🏼🤝👩🏽' => ':women-holding-hands-medium-light-skin-tone-medium-skin-tone:',
+ '👩🏽🤝👩🏿' => ':women-holding-hands-medium-skin-tone-dark-skin-tone:',
+ '👩🏽🤝👩🏻' => ':women-holding-hands-medium-skin-tone-light-skin-tone:',
+ '👩🏽🤝👩🏾' => ':women-holding-hands-medium-skin-tone-medium-dark-skin-tone:',
+ '👩🏽🤝👩🏼' => ':women-holding-hands-medium-skin-tone-medium-light-skin-tone:',
'👨❤️👨' => ':man-heart-man:',
+ '👩❤️👨' => ':woman-heart-man:',
'👩❤️👩' => ':woman-heart-woman:',
'👨🦽➡️' => ':man-in-manual-wheelchair-facing-right:',
'👨🦼➡️' => ':man-in-motorized-wheelchair-facing-right:',
@@ -34,13 +385,22 @@
'🧑🦽➡️' => ':person-in-manual-wheelchair-facing-right:',
'🧑🦼➡️' => ':person-in-motorized-wheelchair-facing-right:',
'🧑🦯➡️' => ':person-with-white-cane-facing-right:',
- '👩❤️👨' => ':woman-heart-man:',
'👩🦽➡
10000
' => ':woman-in-manual-wheelchair-facing-right:',
'👩🦼➡️' => ':woman-in-motorized-wheelchair-facing-right:',
'👩🦯➡️' => ':woman-with-white-cane-facing-right:',
'👨❤👨' => ':couple-with-heart-man-man:',
'👩❤👨' => ':couple-with-heart-woman-man:',
'👩❤👩' => ':couple-with-heart-woman-woman:',
+ '🧏🏿♂️' => ':deaf-man-dark-skin-tone:',
+ '🧏🏻♂️' => ':deaf-man-light-skin-tone:',
+ '🧏🏾♂️' => ':deaf-man-medium-dark-skin-tone:',
+ '🧏🏼♂️' => ':deaf-man-medium-light-skin-tone:',
+ '🧏🏽♂️' => ':deaf-man-medium-skin-tone:',
+ '🧏🏿♀️' => ':deaf-woman-dark-skin-tone:',
+ '🧏🏻♀️' => ':deaf-woman-light-skin-tone:',
+ '🧏🏾♀️' => ':deaf-woman-medium-dark-skin-tone:',
+ '🧏🏼♀️' => ':deaf-woman-medium-light-skin-tone:',
+ '🧏🏽♀️' => ':deaf-woman-medium-skin-tone:',
'👁️🗨️' => ':eye-in-speech-bubble:',
'🧑🧑🧒' => ':family-adult-adult-child:',
'🧑🧒🧒' => ':family-adult-child-child:',
@@ -56,136 +416,997 @@
'👩👧👧' => ':woman-girl-girl:',
'👩👩👦' => ':woman-woman-boy:',
'👩👩👧' => ':woman-woman-girl:',
- '🕵️♀️' => ':female-detective:',
- '🕵️♂️' => ':male-detective:',
+ '🕵️♀️' => ':woman-detective:',
+ '🫱🏿🫲🏻' => ':handshake-dark-skin-tone-light-skin-tone:',
+ '🫱🏿🫲🏾' => ':handshake-dark-skin-tone-medium-dark-skin-tone:',
+ '🫱🏿🫲🏼' => ':handshake-dark-skin-tone-medium-light-skin-tone:',
+ '🫱🏿🫲🏽' => ':handshake-dark-skin-tone-medium-skin-tone:',
+ '🫱🏻🫲🏿' => ':handshake-light-skin-tone-dark-skin-tone:',
+ '🫱🏻🫲🏾' => ':handshake-light-skin-tone-medium-dark-skin-tone:',
+ '🫱🏻🫲🏼' => ':handshake-light-skin-tone-medium-light-skin-tone:',
+ '🫱🏻🫲🏽' => ':handshake-light-skin-tone-medium-skin-tone:',
+ '🫱🏾🫲🏿' => ':handshake-medium-dark-skin-tone-dark-skin-tone:',
+ '🫱🏾🫲🏻' => ':handshake-medium-dark-skin-tone-light-skin-tone:',
+ '🫱🏾🫲🏼' => ':handshake-medium-dark-skin-tone-medium-light-skin-tone:',
+ '🫱🏾🫲🏽' => ':handshake-medium-dark-skin-tone-medium-skin-tone:',
+ '🫱🏼🫲🏿' => ':handshake-medium-light-skin-tone-dark-skin-tone:',
+ '🫱🏼🫲🏻' => ':handshake-medium-light-skin-tone-light-skin-tone:',
+ '🫱🏼🫲🏾' => ':handshake-medium-light-skin-tone-medium-dark-skin-tone:',
+ '🫱🏼🫲🏽' => ':handshake-medium-light-skin-tone-medium-skin-tone:',
+ '🫱🏽🫲🏿' => ':handshake-medium-skin-tone-dark-skin-tone:',
+ '🫱🏽🫲🏻' => ':handshake-medium-skin-tone-light-skin-tone:',
+ '🫱🏽🫲🏾' => ':handshake-medium-skin-tone-medium-dark-skin-tone:',
+ '🫱🏽🫲🏼' => ':handshake-medium-skin-tone-medium-light-skin-tone:',
+ '🧑🏿⚕️' => ':health-worker-dark-skin-tone:',
+ '🧑🏻⚕️' => ':health-worker-light-skin-tone:',
+ '🧑🏾⚕️' => ':health-worker-medium-dark-skin-tone:',
+ '🧑🏼⚕️' => ':health-worker-medium-light-skin-tone:',
+ '🧑🏽⚕️' => ':health-worker-medium-skin-tone:',
+ '🧑🏿⚖️' => ':judge-dark-skin-tone:',
+ '🧑🏻⚖️' => ':judge-light-skin-tone:',
+ '🧑🏾⚖️' => ':judge-medium-dark-skin-tone:',
+ '🧑🏼⚖️' => ':judge-medium-light-skin-tone:',
+ '🧑🏽⚖️' => ':judge-medium-skin-tone:',
+ '🕵️♂️' => ':man-detective:',
+ '🚴🏿♂️' => ':man-biking-dark-skin-tone:',
+ '🚴🏻♂️' => ':man-biking-light-skin-tone:',
+ '🚴🏾♂️' => ':man-biking-medium-dark-skin-tone:',
+ '🚴🏼♂️' => ':man-biking-medium-light-skin-tone:',
+ '🚴🏽♂️' => ':man-biking-medium-skin-tone:',
'⛹️♂️' => ':man-bouncing-ball:',
+ '⛹🏿♂️' => ':man-bouncing-ball-dark-skin-tone:',
+ '⛹🏻♂️' => ':man-bouncing-ball-light-skin-tone:',
+ '⛹🏾♂️' => ':man-bouncing-ball-medium-dark-skin-tone:',
+ '⛹🏼♂️' => ':man-bouncing-ball-medium-light-skin-tone:',
+ '⛹🏽♂️' => ':man-bouncing-ball-medium-skin-tone:',
+ '🙇🏿♂️' => ':man-bowing-dark-skin-tone:',
+ '🙇🏻♂️' => ':man-bowing-light-skin-tone:',
+ '🙇🏾♂️' => ':man-bowing-medium-dark-skin-tone:',
+ '🙇🏼♂️' => ':man-bowing-medium-light-skin-tone:',
+ '🙇🏽♂️' => ':man-bowing-medium-skin-tone:',
+ '🤸🏿♂️' => ':man-cartwheeling-dark-skin-tone:',
+ '🤸🏻♂️' => ':man-cartwheeling-light-skin-tone:',
+ '🤸🏾♂️' => ':man-cartwheeling-medium-dark-skin-tone:',
+ '🤸🏼♂️' => ':man-cartwheeling-medium-light-skin-tone:',
+ '🤸🏽♂️' => ':man-cartwheeling-medium-skin-tone:',
+ '🧗🏿♂️' => ':man-climbing-dark-skin-tone:',
+ '🧗🏻♂️' => ':man-climbing-light-skin-tone:',
+ '🧗🏾♂️' => ':man-climbing-medium-dark-skin-tone:',
+ '🧗🏼♂️' => ':man-climbing-medium-light-skin-tone:',
+ '🧗🏽♂️' => ':man-climbing-medium-skin-tone:',
+ '👷🏿♂️' => ':man-construction-worker-dark-skin-tone:',
+ '👷🏻♂️' => ':man-construction-worker-light-skin-tone:',
+ '👷🏾♂️' => ':man-construction-worker-medium-dark-skin-tone:',
+ '👷🏼♂️' => ':man-construction-worker-medium-light-skin-tone:',
+ '👷🏽♂️' => ':man-construction-worker-medium-skin-tone:',
+ '🧔🏿♂️' => ':man-dark-skin-tone-beard:',
+ '👱🏿♂️' => ':man-dark-skin-tone-blond-hair:',
+ '🕵🏿♂️' => ':man-detective-dark-skin-tone:',
+ '🕵🏻♂️' => ':man-detective-light-skin-tone:',
+ '🕵🏾♂️' => ':man-detective-medium-dark-skin-tone:',
+ '🕵🏼♂️' => ':man-detective-medium-light-skin-tone:',
+ '🕵🏽♂️' => ':man-detective-medium-skin-tone:',
+ '🧝🏿♂️' => ':man-elf-dark-skin-tone:',
+ '🧝🏻♂️' => ':man-elf-light-skin-tone:',
+ '🧝🏾♂️' => ':man-elf-medium-dark-skin-tone:',
+ '🧝🏼♂️' => ':man-elf-medium-light-skin-tone:',
+ '🧝🏽♂️' => ':man-elf-medium-skin-tone:',
+ '🤦🏿♂️' => ':man-facepalming-dark-skin-tone:',
+ '🤦🏻♂️' => ':man-facepalming-light-skin-tone:',
+ '🤦🏾♂️' => ':man-facepalming-medium-dark-skin-tone:',
+ '🤦🏼♂️' => ':man-facepalming-medium-light-skin-tone:',
+ '🤦🏽♂️' => ':man-facepalming-medium-skin-tone:',
+ '🧚🏿♂️' => ':man-fairy-dark-skin-tone:',
+ '🧚🏻♂️' => ':man-fairy-light-skin-tone:',
+ '🧚🏾♂️' => ':man-fairy-medium-dark-skin-tone:',
+ '🧚🏼♂️' => ':man-fairy-medium-light-skin-tone:',
+ '🧚🏽♂️' => ':man-fairy-medium-skin-tone:',
+ '🙍🏿♂️' => ':man-frowning-dark-skin-tone:',
+ '🙍🏻♂️' => ':man-frowning-light-skin-tone:',
+ '🙍🏾♂️' => ':man-frowning-medium-dark-skin-tone:',
+ '🙍🏼♂️' => ':man-frowning-medium-light-skin-tone:',
+ '🙍🏽♂️' => ':man-frowning-medium-skin-tone:',
+ '🙅🏿♂️' => ':man-gesturing-no-dark-skin-tone:',
+ '🙅🏻♂️' => ':man-gesturing-no-light-skin-tone:',
+ '🙅🏾♂️' => ':man-gesturing-no-medium-dark-skin-tone:',
+ '🙅🏼♂️' => ':man-gesturing-no-medium-light-skin-tone:',
+ '🙅🏽♂️' => ':man-gesturing-no-medium-skin-tone:',
+ '🙆🏿♂️' => ':man-gesturing-ok-dark-skin-tone:',
+ '🙆🏻♂️' => ':man-gesturing-ok-light-skin-tone:',
+ '🙆🏾♂️' => ':man-gesturing-ok-medium-dark-skin-tone:',
+ '🙆🏼♂️' => ':man-gesturing-ok-medium-light-skin-tone:',
+ '🙆🏽♂️' => ':man-gesturing-ok-medium-skin-tone:',
+ '💇🏿♂️' => ':man-getting-haircut-dark-skin-tone:',
+ '💇🏻♂️' => ':man-getting-haircut-light-skin-tone:',
+ '💇🏾♂️' => ':man-getting-haircut-medium-dark-skin-tone:',
+ '💇🏼♂️' => ':man-getting-haircut-medium-light-skin-tone:',
+ '💇🏽♂️' => ':man-getting-haircut-medium-skin-tone:',
+ '💆🏿♂️' => ':man-getting-massage-dark-skin-tone:',
+ '💆🏻♂️' => ':man-getting-massage-light-skin-tone:',
+ '💆🏾♂️' => ':man-getting-massage-medium-dark-skin-tone:',
+ '💆🏼♂️' => ':man-getting-massage-medium-light-skin-tone:',
+ '💆🏽♂️' => ':man-getting-massage-medium-skin-tone:',
'🏌️♂️' => ':man-golfing:',
+ '🏌🏿♂️' => ':man-golfing-dark-skin-tone:',
+ '🏌🏻♂️' => ':man-golfing-light-skin-tone:',
+ '🏌🏾♂️' => ':man-golfing-medium-dark-skin-tone:',
+ '🏌🏼♂️' => ':man-golfing-medium-light-skin-tone:',
+ '🏌🏽♂️' => ':man-golfing-medium-skin-tone:',
+ '💂🏿♂️' => ':man-guard-dark-skin-tone:',
+ '💂🏻♂️' => ':man-guard-light-skin-tone:',
+ '💂🏾♂️' => ':man-guard-medium-dark-skin-tone:',
+ '💂🏼♂️' => ':man-guard-medium-light-skin-tone:',
+ '💂🏽♂️' => ':man-guard-medium-skin-tone:',
+ '👨🏿⚕️' => ':man-health-worker-dark-skin-tone:',
+ '👨🏻⚕️' => ':man-health-worker-light-skin-tone:',
+ '👨🏾⚕️' => ':man-health-worker-medium-dark-skin-tone:',
+ '👨🏼⚕️' => ':man-health-worker-medium-light-skin-tone:',
+ '👨🏽⚕️' => ':man-health-worker-medium-skin-tone:',
+ '🧘🏿♂️' => ':man-in-lotus-position-dark-skin-tone:',
+ '🧘🏻♂️' => ':man-in-lotus-position-light-skin-tone:',
+ '🧘🏾♂️' => ':man-in-lotus-position-medium-dark-skin-tone:',
+ '🧘🏼♂️' => ':man-in-lotus-position-medium-light-skin-tone:',
+ '🧘🏽♂️' => ':man-in-lotus-position-medium-skin-tone:',
+ '🧖🏿♂️' => ':man-in-steamy-room-dark-skin-tone:',
+ '🧖🏻♂️' => ':man-in-steamy-room-light-skin-tone:',
+ '🧖🏾♂️' => ':man-in-steamy-room-medium-dark-skin-tone:',
+ '🧖🏼♂️' => ':man-in-steamy-room-medium-light-skin-tone:',
+ '🧖🏽♂️' => ':man-in-steamy-room-medium-skin-tone:',
+ '🤵🏿♂️' => ':man-in-tuxedo-dark-skin-tone:',
+ '🤵🏻♂️' => ':man-in-tuxedo-light-skin-tone:',
+ '🤵🏾♂️' => ':man-in-tuxedo-medium-dark-skin-tone:',
+ '🤵🏼♂️' => ':man-in-tuxedo-medium-light-skin-tone:',
+ '🤵🏽♂️' => ':man-in-tuxedo-medium-skin-tone:',
+ '👨🏿⚖️' => ':man-judge-dark-skin-tone:',
+ '👨🏻⚖️' => ':man-judge-light-skin-tone:',
+ '👨🏾⚖️' => ':man-judge-medium-dark-skin-tone:',
+ '👨🏼⚖️' => ':man-judge-medium-light-skin-tone:',
+ '👨🏽⚖️' => ':man-judge-medium-skin-tone:',
+ '🤹🏿♂️' => ':man-juggling-dark-skin-tone:',
+ '🤹🏻♂️' => ':man-juggling-light-skin-tone:',
+ '🤹🏾♂️' => ':man-juggling-medium-dark-skin-tone:',
+ '🤹🏼♂️' => ':man-juggling-medium-light-skin-tone:',
+ '🤹🏽♂️' => ':man-juggling-medium-skin-tone:',
+ '🧎🏿♂️' => ':man-kneeling-dark-skin-tone:',
+ '🧎🏻♂️' => ':man-kneeling-light-skin-tone:',
+ '🧎🏾♂️' => ':man-kneeling-medium-dark-skin-tone:',
+ '🧎🏼♂️' => ':man-kneeling-medium-light-skin-tone:',
+ '🧎🏽♂️' => ':man-kneeling-medium-skin-tone:',
'🏋️♂️' => ':man-lifting-weights:',
+ '🏋🏿♂️' => ':man-lifting-weights-dark-skin-tone:',
+ '🏋🏻♂️' => ':man-lifting-weights-light-skin-tone:',
+ '🏋🏾♂️' => ':man-lifting-weights-medium-dark-skin-tone:',
+ '🏋🏼♂️' => ':man-lifting-weights-medium-light-skin-tone:',
+ '🏋🏽♂️' => ':man-lifting-weights-medium-skin-tone:',
+ '🧔🏻♂️' => ':man-light-skin-tone-beard:',
+ '👱🏻♂️' => ':man-light-skin-tone-blond-hair:',
+ '🧙🏿♂️' => ':man-mage-dark-skin-tone:',
+ '🧙🏻♂️' => ':man-mage-light-skin-tone:',
+ '🧙🏾♂️' => ':man-mage-medium-dark-skin-tone:',
+ '🧙🏼♂️' => ':man-mage-medium-light-skin-tone:',
+ '🧙🏽♂️' => ':man-mage-medium-skin-tone:',
+ '🧔🏾♂️' => ':man-medium-dark-skin-tone-beard:',
+ '👱🏾♂️' => ':man-medium-dark-skin-tone-blond-hair:',
+ '🧔🏼♂️' => ':man-medium-light-skin-tone-beard:',
+ '👱🏼♂️' => ':man-medium-light-skin-tone-blond-hair:',
+ '🧔🏽♂️' => ':man-medium-skin-tone-beard:',
+ '👱🏽♂️' => ':man-medium-skin-tone-blond-hair:',
+ '🚵🏿♂️' => ':man-mountain-biking-dark-skin-tone:',
+ '🚵🏻♂️' => ':man-mountain-biking-light-skin-tone:',
+ '🚵🏾♂️' => ':man-mountain-biking-medium-dark-skin-tone:',
+ '🚵🏼♂️' => ':man-mountain-biking-medium-light-skin-tone:',
+ '🚵🏽♂️' => ':man-mountain-biking-medium-skin-tone:',
+ '👨🏿✈️' => ':man-pilot-dark-skin-tone:',
+ '👨🏻✈️' => ':man-pilot-light-skin-tone:',
+ '👨🏾✈️' => ':man-pilot-medium-dark-skin-tone:',
+ '👨🏼✈️' => ':man-pilot-medium-light-skin-tone:',
+ '👨🏽✈️' => ':man-pilot-medium-skin-tone:',
+ '🤾🏿♂️' => ':man-playing-handball-dark-skin-tone:',
+ '🤾🏻♂️' => ':man-playing-handball-light-skin-tone:',
+ '🤾🏾♂️' => ':man-playing-handball-medium-dark-skin-tone:',
+ '🤾🏼♂️' => ':man-playing-handball-medium-light-skin-tone:',
+ '🤾🏽♂️' => ':man-playing-handball-medium-skin-tone:',
+ '🤽🏿♂️' => ':man-playing-water-polo-dark-skin-tone:',
+ '🤽🏻♂️' => ':man-playing-water-polo-light-skin-tone:',
+ '🤽🏾♂️' => ':man-playing-water-polo-medium-dark-skin-tone:',
+ '🤽🏼♂️' => ':man-playing-water-polo-medium-light-skin-tone:',
+ '🤽🏽♂️' => ':man-playing-water-polo-medium-skin-tone:',
+ '👮🏿♂️' => ':man-police-officer-dark-skin-tone:',
+ '👮🏻♂️' => ':man-police-officer-light-skin-tone:',
+ '👮🏾♂️' => ':man-police-officer-medium-dark-skin-tone:',
+ '👮🏼♂️' => ':man-police-officer-medium-light-skin-tone:',
+ '👮🏽♂️' => ':man-police-officer-medium-skin-tone:',
+ '🙎🏿♂️' => ':man-pouting-dark-skin-tone:',
+ '🙎🏻♂️' => ':man-pouting-light-skin-tone:',
+ '🙎🏾♂️' => ':man-pouting-medium-dark-skin-tone:',
+ '🙎🏼♂️' => ':man-pouting-medium-light-skin-tone:',
+ '🙎🏽♂️' => ':man-pouting-medium-skin-tone:',
+ '🙋🏿♂️' => ':man-raising-hand-dark-skin-tone:',
+ '🙋🏻♂️' => ':man-raising-hand-light-skin-tone:',
+ '🙋🏾♂️' => ':man-raising-hand-medium-dark-skin-tone:',
+ '🙋🏼♂️' => ':man-raising-hand-medium-light-skin-tone:',
+ '🙋🏽♂️' => ':man-raising-hand-medium-skin-tone:',
+ '🚣🏿♂️' => ':man-rowing-boat-dark-skin-tone:',
+ '🚣🏻♂️' => ':man-rowing-boat-light-skin-tone:',
+ '🚣🏾♂️' => ':man-rowing-boat-medium-dark-skin-tone:',
+ '🚣🏼♂️' => ':man-rowing-boat-medium-light-skin-tone:',
+ '🚣🏽♂️' => ':man-rowing-boat-medium-skin-tone:',
+ '🏃🏿♂️' => ':man-running-dark-skin-tone:',
+ '🏃🏻♂️' => ':man-running-light-skin-tone:',
+ '🏃🏾♂️' => ':man-running-medium-dark-skin-tone:',
+ '🏃🏼♂️' => ':man-running-medium-light-skin-tone:',
+ '🏃🏽♂️' => ':man-running-medium-skin-tone:',
+ '🤷🏿♂️' => ':man-shrugging-dark-skin-tone:',
+ '🤷🏻♂️' => ':man-shrugging-light-skin-tone:',
+ '🤷🏾♂️' => ':man-shrugging-medium-dark-skin-tone:',
+ '🤷🏼♂️' => ':man-shrugging-medium-light-skin-tone:',
+ '🤷🏽♂️' => ':man-shrugging-medium-skin-tone:',
+ '🧍🏿♂️' => ':man-standing-dark-skin-tone:',
+ '🧍🏻♂️' => ':man-standing-light-skin-tone:',
+ '🧍🏾♂️' => ':man-standing-medium-dark-skin-tone:',
+ '🧍🏼♂️' => ':man-standing-medium-light-skin-tone:',
+ '🧍🏽♂️' => ':man-standing-medium-skin-tone:',
+ '🦸🏿♂️' => ':man-superhero-dark-skin-tone:',
+ '🦸🏻♂️' => ':man-superhero-light-skin-tone:',
+ '🦸🏾♂️' => ':man-superhero-medium-dark-skin-tone:',
+ '🦸🏼♂️' => ':man-superhero-medium-light-skin-tone:',
+ '🦸🏽♂️' => ':man-superhero-medium-skin-tone:',
+ '🦹🏿♂️' => ':man-supervillain-dark-skin-tone:',
+ '🦹🏻♂️' => ':man-supervillain-light-skin-tone:',
+ '🦹🏾♂️' => ':man-supervillain-medium-dark-skin-tone:',
+ '🦹🏼♂️' => ':man-supervillain-medium-light-skin-tone:',
+ '🦹🏽♂️' => ':man-supervillain-medium-skin-tone:',
+ '🏄🏿♂️' => ':man-surfing-dark-skin-tone:',
+ '🏄🏻♂️' => ':man-surfing-light-skin-tone:',
+ '🏄🏾♂️' => ':man-surfing-medium-dark-skin-tone:',
+ '🏄🏼♂️' => ':man-surfing-medium-light-skin-tone:',
+ '🏄🏽♂️' => ':man-surfing-medium-skin-tone:',
+ '🏊🏿♂️' => ':man-swimming-dark-skin-tone:',
+ '🏊🏻♂️' => ':man-swimming-light-skin-tone:',
+ '🏊🏾♂️' => ':man-swimming-medium-dark-skin-tone:',
+ '🏊🏼♂️' => ':man-swimming-medium-light-skin-tone:',
+ '🏊🏽♂️' => ':man-swimming-medium-skin-tone:',
+ '💁🏿♂️' => ':man-tipping-hand-dark-skin-tone:',
+ '💁🏻♂️' => ':man-tipping-hand-light-skin-tone:',
+ '💁🏾♂️' => ':man-tipping-hand-medium-dark-skin-tone:',
+ '💁🏼♂️' => ':man-tipping-hand-medium-light-skin-tone:',
+ '💁🏽♂️' => ':man-tipping-hand-medium-skin-tone:',
+ '🧛🏿♂️' => ':man-vampire-dark-skin-tone:',
+ '🧛🏻♂️' => ':man-vampire-light-skin-tone:',
+ '🧛🏾♂️' => ':man-vampire-medium-dark-skin-tone:',
+ '🧛🏼♂️' => ':man-vampire-medium-light-skin-tone:',
+ '🧛🏽♂️' => ':man-vampire-medium-skin-tone:',
+ '🚶🏿♂️' => ':man-walking-dark-skin-tone:',
+ '🚶🏻♂️' => ':man-walking-light-skin-tone:',
+ '🚶🏾♂️' => ':man-walking-medium-dark-skin-tone:',
+ '🚶🏼♂️' => ':man-walking-medium-light-skin-tone:',
+ '🚶🏽♂️' => ':man-walking-medium-skin-tone:',
+ '👳🏿♂️' => ':man-wearing-turban-dark-skin-tone:',
+ '👳🏻♂️' => ':man-wearing-turban-light-skin-tone:',
+ '👳🏾♂️' => ':man-wearing-turban-medium-dark-skin-tone:',
+ '👳🏼♂️' => ':man-wearing-turban-medium-light-skin-tone:',
+ '👳🏽♂️' => ':man-wearing-turban-medium-skin-tone:',
+ '👰🏿♂️' => ':man-with-veil-dark-skin-tone:',
+ '👰🏻♂️' => ':man-with-veil-light-skin-tone:',
+ '👰🏾♂️' => ':man-with-veil-medium-dark-skin-tone:',
+ '👰🏼♂️' => ':man-with-veil-medium-light-skin-tone:',
+ '👰🏽♂️' => ':man-with-veil-medium-skin-tone:',
+ '🧜🏿♀️' => ':mermaid-dark-skin-tone:',
+ '🧜🏻♀️' => ':mermaid-light-skin-tone:',
+ '🧜🏾♀️' => ':mermaid-medium-dark-skin-tone:',
+ '🧜🏼♀️' => ':mermaid-medium-light-skin-tone:',
+ '🧜🏽♀️' => ':mermaid-medium-skin-tone:',
+ '🧜🏿♂️' => ':merman-dark-skin-tone:',
+ '🧜🏻♂️' => ':merman-light-skin-tone:',
+ '🧜🏾♂️' => ':merman-medium-dark-skin-tone:',
+ '🧜🏼♂️' => ':merman-medium-light-skin-tone:',
+ '🧜🏽♂️' => ':merman-medium-skin-tone:',
'🧑🤝🧑' => ':people-holding-hands:',
+ '🧎🏿➡️' => ':person-kneeling-facing-right-dark-skin-tone:',
+ '🧎🏻➡️' => ':person-kneeling-facing-right-light-skin-tone:',
+ '🧎🏾➡️' => ':person-kneeling-facing-right-medium-dark-skin-tone:',
+ '🧎🏼➡️' => ':person-kneeling-facing-right-medium-light-skin-tone:',
+ '🧎🏽➡️' => ':person-kneeling-facing-right-medium-skin-tone:',
+ '🏃🏿➡️' => ':person-running-facing-right-dark-skin-tone:',
+ '🏃🏻➡️' => ':person-running-facing-right-light-skin-tone:',
+ '🏃🏾➡️' => ':person-running-facing-right-medium-dark-skin-tone:',
+ '🏃🏼➡️' => ':person-running-facing-right-medium-light-skin-tone:',
+ '🏃🏽➡️' => ':person-running-facing-right-medium-skin-tone:',
+ '🚶🏿➡️' => ':person-walking-facing-right-dark-skin-tone:',
+ '🚶🏻➡️' => ':person-walking-facing-right-light-skin-tone:',
+ '🚶🏾➡️' => ':person-walking-facing-right-medium-dark-skin-tone:',
+ '🚶🏼➡️' => ':person-walking-facing-right-medium-light-skin-tone:',
+ '🚶🏽➡️' => ':person-walking-facing-right-medium-skin-tone:',
+ '🧑🏿✈️' => ':pilot-dark-skin-tone:',
+ '🧑🏻✈️' => ':pilot-light-skin-tone:',
+ '🧑🏾✈️' => ':pilot-medium-dark-skin-tone:',
+ '🧑🏼✈️' => ':pilot-medium-light-skin-tone:',
+ '🧑🏽✈️' => ':pilot-medium-skin-tone:',
'🏳️⚧️' => ':transgender-flag:',
+ '🚴🏿♀️' => ':woman-biking-dark-skin-tone:',
+ '🚴🏻♀️' => ':woman-biking-light-skin-tone:',
+ '🚴🏾♀️' => ':woman-biking-medium-dark-skin-tone:',
+ '🚴🏼♀️' => ':woman-biking-medium-light-skin-tone:',
+ '🚴🏽♀️' => ':woman-biking-medium-skin-tone:',
'⛹️♀️' => ':woman-bouncing-ball:',
+ '⛹🏿♀️' => ':woman-bouncing-ball-dark-skin-tone:',
+ '⛹🏻♀️' => ':woman-bouncing-ball-light-skin-tone:',
+ '⛹🏾♀️' => ':woman-bouncing-ball-medium-dark-skin-tone:',
+ '⛹🏼♀️' => ':woman-bouncing-ball-medium-light-skin-tone:',
+ '⛹🏽♀️' => ':woman-bouncing-ball-medium-skin-tone:',
+ '🙇🏿♀️' => ':woman-bowing-dark-skin-tone:',
+ '🙇🏻♀️' => ':woman-bowing-light-skin-tone:',
+ '🙇🏾♀️' => ':woman-bowing-medium-dark-skin-tone:',
+ '🙇🏼♀️' => ':woman-bowing-medium-light-skin-tone:',
+ '🙇🏽♀️' => ':woman-bowing-medium-skin-tone:',
+ '🤸🏿♀️' => ':woman-cartwheeling-dark-skin-tone:',
+ '🤸🏻♀️' => ':woman-cartwheeling-light-skin-tone:',
+ '🤸🏾♀️' => ':woman-cartwheeling-medium-dark-skin-tone:',
+ '🤸🏼♀️' => ':woman-cartwheeling-medium-light-skin-tone:',
+ '🤸🏽♀️' => ':woman-cartwheeling-medium-skin-tone:',
+ '🧗🏿♀️' => ':woman-climbing-dark-skin-tone:',
+ '🧗🏻♀️' => ':woman-climbing-light-skin-tone:',
+ '🧗🏾♀️' => ':woman-climbing-medium-dark-skin-tone:',
+ '🧗🏼♀️' => ':woman-climbing-medium-light-skin-tone:',
+ '🧗🏽♀️' => ':woman-climbing-medium-skin-tone:',
+ '👷🏿♀️' => ':woman-construction-worker-dark-skin-tone:',
+ '👷🏻♀️' => ':woman-construction-worker-light-skin-tone:',
+ '👷🏾♀️' => ':woman-construction-worker-medium-dark-skin-tone:',
+ '👷🏼♀️' => ':woman-construction-worker-medium-light-skin-tone:',
+ '👷🏽♀️' => ':woman-construction-worker-medium-skin-tone:',
+ '🧔🏿♀️' => ':woman-dark-skin-tone-beard:',
+ '👱🏿♀️' => ':woman-dark-skin-tone-blond-hair:',
+ '🕵🏿♀️' => ':woman-detective-dark-skin-tone:',
+ '🕵🏻♀️' => ':woman-detective-light-skin-tone:',
+ '🕵🏾♀️' => ':woman-detective-medium-dark-skin-tone:',
+ '🕵🏼♀️' => ':woman-detective-medium-light-skin-tone:',
+ '🕵🏽♀️' => ':woman-detective-medium-skin-tone:',
+ '🧝🏿♀️' => ':woman-elf-dark-skin-tone:',
+ '🧝🏻♀️' => ':woman-elf-light-skin-tone:',
+ '🧝🏾♀️' => ':woman-elf-medium-dark-skin-tone:',
+ '🧝🏼♀️' => ':woman-elf-medium-light-skin-tone:',
+ '🧝🏽♀️' => ':woman-elf-medium-skin-tone:',
+ '🤦🏿♀️' => ':woman-facepalming-dark-skin-tone:',
+ '🤦🏻♀️' => ':woman-facepalming-light-skin-tone:',
+ '🤦🏾♀️' => ':woman-facepalming-medium-dark-skin-tone:',
+ '🤦🏼♀️' => ':woman-facepalming-medium-light-skin-tone:',
+ '🤦🏽♀️' => ':woman-facepalming-medium-skin-tone:',
+ '🧚🏿♀️' => ':woman-fairy-dark-skin-tone:',
+ '🧚🏻♀️' => ':woman-fairy-light-skin-tone:',
+ '🧚🏾♀️' => ':woman-fairy-medium-dark-skin-tone:',
+ '🧚🏼♀️' => ':woman-fairy-medium-light-skin-tone:',
+ '🧚🏽♀️' => ':woman-fairy-medium-skin-tone:',
+ '🙍🏿♀️' => ':woman-frowning-dark-skin-tone:',
+ '🙍🏻♀️' => ':woman-frowning-light-skin-tone:',
+ '🙍🏾♀️' => ':woman-frowning-medium-dark-skin-tone:',
+ '🙍🏼♀️' => ':woman-frowning-medium-light-skin-tone:',
+ '🙍🏽♀️' => ':woman-frowning-medium-skin-tone:',
+ '🙅🏿♀️' => ':woman-gesturing-no-dark-skin-tone:',
+ '🙅🏻♀️' => ':woman-gesturing-no-light-skin-tone:',
+ '🙅🏾♀️' => ':woman-gesturing-no-medium-dark-skin-tone:',
+ '🙅🏼♀️' => ':woman-gesturing-no-medium-light-skin-tone:',
+ '🙅🏽♀️' => ':woman-gesturing-no-medium-skin-tone:',
+ '🙆🏿♀️' => ':woman-gesturing-ok-dark-skin-tone:',
+ '🙆🏻♀️' => ':woman-gesturing-ok-light-skin-tone:',
+ '🙆🏾♀️' => ':woman-gesturing-ok-medium-dark-skin-tone:',
+ '🙆🏼♀️' => ':woman-gesturing-ok-medium-light-skin-tone:',
+ '🙆🏽♀️' => ':woman-gesturing-ok-medium-skin-tone:',
+ '💇🏿♀️' => ':woman-getting-haircut-dark-skin-tone:',
+ '💇🏻♀️' => ':woman-getting-haircut-light-skin-tone:',
+ '💇🏾♀️' => ':woman-getting-haircut-medium-dark-skin-tone:',
+ '💇🏼♀️' => ':woman-getting-haircut-medium-light-skin-tone:',
+ '💇🏽♀️' => ':woman-getting-haircut-medium-skin-tone:',
+ '💆🏿♀️' => ':woman-getting-massage-dark-skin-tone:',
+ '💆🏻♀️' => ':woman-getting-massage-light-skin-tone:',
+ '💆🏾♀️' => ':woman-getting-massage-medium-dark-skin-tone:',
+ '💆🏼♀️' => ':woman-getting-massage-medium-light-skin-tone:',
+ '💆🏽♀️' => ':woman-getting-massage-medium-skin-tone:',
'🏌️♀️' => ':woman-golfing:',
+ '🏌🏿♀️' => ':woman-golfing-dark-skin-tone:',
+ '🏌🏻♀️' => ':woman-golfing-light-skin-tone:',
+ '🏌🏾♀️' => ':woman-golfing-medium-dark-skin-tone:',
+ '🏌🏼♀️' => ':woman-golfing-medium-light-skin-tone:',
+ '🏌🏽♀️' => ':woman-golfing-medium-skin-tone:',
+ '💂🏿♀️' => ':woman-guard-dark-skin-tone:',
+ '💂🏻♀️' => ':woman-guard-light-skin-tone:',
+ '💂🏾♀️' => ':woman-guard-medium-dark-skin-tone:',
+ '💂🏼♀️' => ':woman-guard-medium-light-skin-tone:',
+ '💂🏽♀️' => ':woman-guard-medium-skin-tone:',
+ '👩🏿⚕️' => ':woman-health-worker-dark-skin-tone:',
+ '👩🏻⚕️' => ':woman-health-worker-light-skin-tone:',
+ '👩🏾⚕️' => ':woman-health-worker-medium-dark-skin-tone:',
+ '👩🏼⚕️' => ':woman-health-worker-medium-light-skin-tone:',
+ '👩🏽⚕️' => ':woman-health-worker-medium-skin-tone:',
+ '🧘🏿♀️' => ':woman-in-lotus-position-dark-skin-tone:',
+ '🧘🏻♀️' => ':woman-in-lotus-position-light-skin-tone:',
+ '🧘🏾♀️' => ':woman-in-lotus-position-medium-dark-skin-tone:',
+ '🧘🏼♀️' => ':woman-in-lotus-position-medium-light-skin-tone:',
+ '🧘🏽♀️' => ':woman-in-lotus-position-medium-skin-tone:',
+ '🧖🏿♀️' => ':woman-in-steamy-room-dark-skin-tone:',
+ '🧖🏻♀️' => ':woman-in-steamy-room-light-skin-tone:',
+ '🧖🏾♀️' => ':woman-in-steamy-room-medium-dark-skin-tone:',
+ '🧖🏼♀️' => ':woman-in-steamy-room-medium-light-skin-tone:',
+ '🧖🏽♀️' => ':woman-in-steamy-room-medium-skin-tone:',
+ '🤵🏿♀️' => ':woman-in-tuxedo-dark-skin-tone:',
+ '🤵🏻♀️' => ':woman-in-tuxedo-light-skin-tone:',
+ '🤵🏾♀️' => ':woman-in-tuxedo-medium-dark-skin-tone:',
+ '🤵🏼♀️' => ':woman-in-tuxedo-medium-light-skin-tone:',
+ '🤵🏽♀️' => ':woman-in-tuxedo-medium-skin-tone:',
+ '👩🏿⚖️' => ':woman-judge-dark-skin-tone:',
+ '👩🏻⚖️' => ':woman-judge-light-skin-tone:',
+ '👩🏾⚖️' => ':woman-judge-medium-dark-skin-tone:',
+ '👩🏼⚖️' => ':woman-judge-medium-light-skin-tone:',
+ '👩🏽⚖️' => ':woman-judge-medium-skin-tone:',
+ '🤹🏿♀️' => ':woman-juggling-dark-skin-tone:',
+ '🤹🏻♀️' => ':woman-juggling-light-skin-tone:',
+ '🤹🏾♀️' => ':woman-juggling-medium-dark-skin-tone:',
+ '🤹🏼♀️' => ':woman-juggling-medium-light-skin-tone:',
+ '🤹🏽♀️' => ':woman-juggling-medium-skin-tone:',
+ '🧎🏿♀️' => ':woman-kneeling-dark-skin-tone:',
+ '🧎🏻♀️' => ':woman-kneeling-light-skin-tone:',
+ '🧎🏾♀️' => ':woman-kneeling-medium-dark-skin-tone:',
+ '🧎🏼♀️' => ':woman-kneeling-medium-light-skin-tone:',
+ '🧎🏽♀️' => ':woman-kneeling-medium-skin-tone:',
'🏋️♀️' => ':woman-lifting-weights:',
- '👱♂️' => ':blond-haired-man:',
- '👱♀️' => ':blond-haired-woman:',
+ '🏋🏿♀️' => ':woman-lifting-weights-dark-skin-tone:',
+ '🏋🏻♀️' => ':woman-lifting-weights-light-skin-tone:',
+ '🏋🏾♀️' => ':woman-lifting-weights-medium-dark-skin-tone:',
+ '🏋🏼♀️' => ':woman-lifting-weights-medium-light-skin-tone:',
+ '🏋🏽♀️' => ':woman-lifting-weights-medium-skin-tone:',
+ '🧔🏻♀️' => ':woman-light-skin-tone-beard:',
+ '👱🏻♀️' => ':woman-light-skin-tone-blond-hair:',
+ '🧙🏿♀️' => ':woman-mage-dark-skin-tone:',
+ '🧙🏻♀️' => ':woman-mage-light-skin-tone:',
+ '🧙🏾♀️' => ':woman-mage-medium-dark-skin-tone:',
+ '🧙🏼♀️' => ':woman-mage-medium-light-skin-tone:',
+ '🧙🏽♀️' => ':woman-mage-medium-skin-tone:',
+ '🧔🏾♀️' => ':woman-medium-dark-skin-tone-beard:',
+ '👱🏾♀️' => ':woman-medium-dark-skin-tone-blond-hair:',
+ '🧔🏼♀️' => ':woman-medium-light-skin-tone-beard:',
+ '👱🏼♀️' => ':woman-medium-light-skin-tone-blond-hair:',
+ '🧔🏽♀️' => ':woman-medium-skin-tone-beard:',
+ '👱🏽♀️' => ':woman-medium-skin-tone-blond-hair:',
+ '🚵🏿♀️' => ':woman-mountain-biking-dark-skin-tone:',
+ '🚵🏻♀️' => ':woman-mountain-biking-light-skin-tone:',
+ '🚵🏾♀️' => ':woman-mountain-biking-medium-dark-skin-tone:',
+ '🚵🏼♀️' => ':woman-mountain-biking-medium-light-skin-tone:',
+ '🚵🏽♀️' => ':woman-mountain-biking-medium-skin-tone:',
+ '👩🏿✈️' => ':woman-pilot-dark-skin-tone:',
+ '👩🏻✈️' => ':woman-pilot-light-skin-tone:',
+ '👩🏾✈️' => ':woman-pilot-medium-dark-skin-tone:',
+ '👩🏼✈️' => ':woman-pilot-medium-light-skin-tone:',
+ '👩🏽✈️' => ':woman-pilot-medium-skin-tone:',
+ '🤾🏿♀️' => ':woman-playing-handball-dark-skin-tone:',
+ '🤾🏻♀️' => ':woman-playing-handball-light-skin-tone:',
+ '🤾🏾♀️' => ':woman-playing-handball-medium-dark-skin-tone:',
+ '🤾🏼♀️' => ':woman-playing-handball-medium-light-skin-tone:',
+ '🤾🏽♀️' => ':woman-playing-handball-medium-skin-tone:',
+ '🤽🏿♀️' => ':woman-playing-water-polo-dark-skin-tone:',
+ '🤽🏻♀️' => ':woman-playing-water-polo-light-skin-tone:',
+ '🤽🏾♀️' => ':woman-playing-water-polo-medium-dark-skin-tone:',
+ '🤽🏼♀️' => ':woman-playing-water-polo-medium-light-skin-tone:',
+ '🤽🏽♀️' => ':woman-playing-water-polo-medium-skin-tone:',
+ '👮🏿♀️' => ':woman-police-officer-dark-skin-tone:',
+ '👮🏻♀️' => ':woman-police-officer-light-skin-tone:',
+ '👮🏾♀️' => ':woman-police-officer-medium-dark-skin-tone:',
+ '👮🏼♀️' => ':woman-police-officer-medium-light-skin-tone:',
+ '👮🏽♀️' => ':woman-police-officer-medium-skin-tone:',
+ '🙎🏿♀️' => ':woman-pouting-dark-skin-tone:',
+ '🙎🏻♀️' => ':woman-pouting-light-skin-tone:',
+ '🙎🏾♀️' => ':woman-pouting-medium-dark-skin-tone:',
+ '🙎🏼♀️' => ':woman-pouting-medium-light-skin-tone:',
+ '🙎🏽♀️' => ':woman-pouting-medium-skin-tone:',
+ '🙋🏿♀️' => ':woman-raising-hand-dark-skin-tone:',
+ '🙋🏻♀️' => ':woman-raising-hand-light-skin-tone:',
+ '🙋🏾♀️' => ':woman-raising-hand-medium-dark-skin-tone:',
+ '🙋🏼♀️' => ':woman-raising-hand-medium-light-skin-tone:',
+ '🙋🏽♀️' => ':woman-raising-hand-medium-skin-tone:',
+ '🚣🏿♀️' => ':woman-rowing-boat-dark-skin-tone:',
+ '🚣🏻♀️' => ':woman-rowing-boat-light-skin-tone:',
+ '🚣🏾♀️' => ':woman-rowing-boat-medium-dark-skin-tone:',
+ '🚣🏼♀️' => ':woman-rowing-boat-medium-light-skin-tone:',
+ '🚣🏽♀️' => ':woman-rowing-boat-medium-skin-tone:',
+ '🏃🏿♀️' => ':woman-running-dark-skin-tone:',
+ '🏃🏻♀️' => ':woman-running-light-skin-tone:',
+ '🏃🏾♀️' => ':woman-running-medium-dark-skin-tone:',
+ '🏃🏼♀️' => ':woman-running-medium-light-skin-tone:',
+ '🏃🏽♀️' => ':woman-running-medium-skin-tone:',
+ '🤷🏿♀️' => ':woman-shrugging-dark-skin-tone:',
+ '🤷🏻♀️' => ':woman-shrugging-light-skin-tone:',
+ '🤷🏾♀️' => ':woman-shrugging-medium-dark-skin-tone:',
+ '🤷🏼♀️' => ':woman-shrugging-medium-light-skin-tone:',
+ '🤷🏽♀️' => ':woman-shrugging-medium-skin-tone:',
+ '🧍🏿♀️' => ':woman-standing-dark-skin-tone:',
+ '🧍🏻♀️' => ':woman-standing-light-skin-tone:',
+ '🧍🏾♀️' => ':woman-standing-medium-dark-skin-tone:',
+ '🧍🏼♀️' => ':woman-standing-medium-light-skin-tone:',
+ '🧍🏽♀️' => ':woman-standing-medium-skin-tone:',
+ '🦸🏿♀️' => ':woman-superhero-dark-skin-tone:',
+ '🦸🏻♀️' => ':woman-superhero-light-skin-tone:',
+ '🦸🏾♀️' => ':woman-superhero-medium-dark-skin-tone:',
+ '🦸🏼♀️' => ':woman-superhero-medium-light-skin-tone:',
+ '🦸🏽♀️' => ':woman-superhero-medium-skin-tone:',
+ '🦹🏿♀️' => ':woman-supervillain-dark-skin-tone:',
+ '🦹🏻♀️' => ':woman-supervillain-light-skin-tone:',
+ '🦹🏾♀️' => ':woman-supervillain-medium-dark-skin-tone:',
+ '🦹🏼♀️' => ':woman-supervillain-medium-light-skin-tone:',
+ '🦹🏽♀️' => ':woman-supervillain-medium-skin-tone:',
+ '🏄🏿♀️' => ':woman-surfing-dark-skin-tone:',
+ '🏄🏻♀️' => ':woman-surfing-light-skin-tone:',
+ '🏄🏾♀️' => ':woman-surfing-medium-dark-skin-tone:',
+ '🏄🏼♀️' => ':woman-surfing-medium-light-skin-tone:',
+ '🏄🏽♀️' => ':woman-surfing-medium-skin-tone:',
+ '🏊🏿♀️' => ':woman-swimming-dark-skin-tone:',
+ '🏊🏻♀️' => ':woman-swimming-light-skin-tone:',
+ '🏊🏾♀️' => ':woman-swimming-medium-dark-skin-tone:',
+ '🏊🏼♀️' => ':woman-swimming-medium-light-skin-tone:',
+ '🏊🏽♀️' => ':woman-swimming-medium-skin-tone:',
+ '💁🏿♀️' => ':woman-tipping-hand-dark-skin-tone:',
+ '💁🏻♀️' => ':woman-tipping-hand-light-skin-tone:',
+ '💁🏾♀️' => ':woman-tipping-hand-medium-dark-skin-tone:',
+ '💁🏼♀️' => ':woman-tipping-hand-medium-light-skin-tone:',
+ '💁🏽♀️' => ':woman-tipping-hand-medium-skin-tone:',
+ '🧛🏿♀️' => ':woman-vampire-dark-skin-tone:',
+ '🧛🏻♀️' => ':woman-vampire-light-skin-tone:',
+ '🧛🏾♀️' => ':woman-vampire-medium-dark-skin-tone:',
+ '🧛🏼♀️' => ':woman-vampire-medium-light-skin-tone:',
+ '🧛🏽♀️' => ':woman-vampire-medium-skin-tone:',
+ '🚶🏿♀️' => ':woman-walking-dark-skin-tone:',
+ '🚶🏻♀️' => ':woman-walking-light-skin-tone:',
+ '🚶🏾♀️' => ':woman-walking-medium-dark-skin-tone:',
+ '🚶🏼♀️' => ':woman-walking-medium-light-skin-tone:',
+ '🚶🏽♀️' => ':woman-walking-medium-skin-tone:',
+ '👳🏿♀️' => ':woman-wearing-turban-dark-skin-tone:',
+ '👳🏻♀️' => ':woman-wearing-turban-light-skin-tone:',
+ '👳🏾♀️' => ':woman-wearing-turban-medium-dark-skin-tone:',
+ '👳🏼♀️' => ':woman-wearing-turban-medium-light-skin-tone:',
+ '👳🏽♀️' => ':woman-wearing-turban-medium-skin-tone:',
+ '👰🏿♀️' => ':woman-with-veil-dark-skin-tone:',
+ '👰🏻♀️' => ':woman-with-veil-light-skin-tone:',
+ '👰🏾♀️' => ':woman-with-veil-medium-dark-skin-tone:',
+ '👰🏼♀️' => ':woman-with-veil-medium-light-skin-tone:',
+ '👰🏽♀️' => ':woman-with-veil-medium-skin-tone:',
+ '🧑🏿🎨' => ':artist-dark-skin-tone:',
+ '🧑🏻🎨' => ':artist-light-skin-tone:',
+ '🧑🏾🎨' => ':artist-medium-dark-skin-tone:',
+ '🧑🏼🎨' => ':artist-medium-light-skin-tone:',
+ '🧑🏽🎨' => ':artist-medium-skin-tone:',
+ '🧑🏿🚀' => ':astronaut-dark-skin-tone:',
+ '🧑🏻🚀' => ':astronaut-light-skin-tone:',
+ '🧑🏾🚀' => ':astronaut-medium-dark-skin-tone:',
+ '🧑🏼🚀' => ':astronaut-medium-light-skin-tone:',
+ '🧑🏽🚀' => ':astronaut-medium-skin-tone:',
+ '👱♂️' => ':man-blond-hair:',
+ '👱♀️' => ':woman-blond-hair:',
'⛓️💥' => ':broken-chain:',
+ '🧑🏿🍳' => ':cook-dark-skin-tone:',
+ '🧑🏻🍳' => ':cook-light-skin-tone:',
+ '🧑🏾🍳' => ':cook-medium-dark-skin-tone:',
+ '🧑🏼🍳' => ':cook-medium-light-skin-tone:',
+ '🧑🏽🍳' => ':cook-medium-skin-tone:',
'🧏♂️' => ':deaf-man:',
'🧏♀️' => ':deaf-woman:',
'😶🌫️' => ':face-in-clouds:',
- '👷♀️' => ':female-construction-worker:',
- '👩⚕️' => ':female-doctor:',
- '🧝♀️' => ':female-elf:',
- '🧚♀️' => ':female-fairy:',
- '🧞♀️' => ':female-genie:',
- '💂♀️' => ':female-guard:',
- '👩⚖️' => ':female-judge:',
- '🧙♀️' => ':female-mage:',
- '👩✈️' => ':female-pilot:',
- '👮♀️' => ':female-police-officer:',
- '🦸♀️' => ':female-superhero:',
- '🦹♀️' => ':female-supervillain:',
- '🧛♀️' => ':female-vampire:',
- '🧟♀️' => ':female-zombie:',
+ '🧑🏿🏭' => ':factory-worker-dark-skin-tone:',
+ '🧑🏻🏭' => ':factory-worker-light-skin-tone:',
+ '🧑🏾🏭' => ':factory-worker-medium-dark-skin-tone:',
+ '🧑🏼🏭' => ':factory-worker-medium-light-skin-tone:',
+ '🧑🏽🏭' => ':factory-worker-medium-skin-tone:',
+ '🧑🏿🌾' => ':farmer-dark-skin-tone:',
+ '🧑🏻🌾' => ':farmer-light-skin-tone:',
+ '🧑🏾🌾' => ':farmer-medium-dark-skin-tone:',
+ '🧑🏼🌾' => ':farmer-medium-light-skin-tone:',
+ '🧑🏽🌾' => ':farmer-medium-skin-tone:',
+ '👷♀️' => ':woman-construction-worker:',
+ '👩⚕️' => ':woman-health-worker:',
+ '🧝♀️' => ':woman-elf:',
+ '🧚♀️' => ':woman-fairy:',
+ '🧞♀️' => ':woman-genie:',
+ '💂♀️' => ':woman-guard:',
+ '👩⚖️' => ':woman-judge:',
+ '🧙♀️' => ':woman-mage:',
+ '👩✈️' => ':woman-pilot:',
+ '👮♀️' => ':woman-police-officer:',
+ '🦸♀️' => ':woman-superhero:',
+ '🦹♀️' => ':woman-supervillain:',
+ '🧛♀️' => ':woman-vampire:',
+ '🧟♀️' => ':woman-zombie:',
+ '🧑🏿🚒' => ':firefighter-dark-skin-tone:',
+ '🧑🏻🚒' => ':firefighter-light-skin-tone:',
+ '🧑🏾🚒' => ':firefighter-medium-dark-skin-tone:',
+ '🧑🏼🚒' => ':firefighter-medium-light-skin-tone:',
+ '🧑🏽🚒' => ':firefighter-medium-skin-tone:',
+ '🏳️🌈' => ':rainbow-flag:',
'🙂↔️' => ':head-shaking-horizontally:',
'🙂↕️' => ':head-shaking-vertically:',
'🧑⚕️' => ':health-worker:',
'❤️🔥' => ':heart-on-fire:',
'🧑⚖️' => ':judge:',
- '👷♂️' => ':male-construction-worker:',
- '👨⚕️' => ':male-doctor:',
- '🧝♂️' => ':male-elf:',
- '🧚♂️' => ':male-fairy:',
- '🧞♂️' => ':male-genie:',
- '💂♂️' => ':male-guard:',
- '👨⚖️' => ':male-judge:',
- '🧙♂️' => ':male-mage:',
- '👨✈️' => ':male-pilot:',
- '👮♂️' => ':male-police-officer:',
- '🦸♂️' => ':male-superhero:',
- '🦹♂️' => ':male-supervillain:',
- '🧛♂️' => ':male-vampire:',
- '🧟♂️' => ':male-zombie:',
+ '👷♂️' => ':man-construction-worker:',
+ '👨⚕️' => ':man-health-worker:',
+ '🧝♂️' => ':man-elf:',
+ '🧚♂️' => ':man-fairy:',
+ '🧞♂️' => ':man-genie:',
+ '💂♂️' => ':man-guard:',
+ '👨⚖️' => ':man-judge:',
+ '🧙♂️' => ':man-mage:',
+ '👨✈️' => ':man-pilot:',
+ '👮♂️' => ':man-police-officer:',
+ '🦸♂️' => ':man-superhero:',
+ '🦹♂️' => ':man-supervillain:',
+ '🧛♂️' => ':man-vampire:',
+ '🧟♂️' => ':man-zombie:',
+ '👨🏿🎨' => ':man-artist-dark-skin-tone:',
+ '👨🏻🎨' => ':man-artist-light-skin-tone:',
+ '👨🏾🎨' => ':man-artist-medium-dark-skin-tone:',
+ '👨🏼🎨' => ':man-artist-medium-light-skin-tone:',
+ '👨🏽🎨' => ':man-artist-medium-skin-tone:',
+ '👨🏿🚀' => ':man-astronaut-dark-skin-tone:',
+ '👨🏻🚀' => ':man-astronaut-light-skin-tone:',
+ '👨🏾🚀' => ':man-astronaut-medium-dark-skin-tone:',
+ '👨🏼🚀' => ':man-astronaut-medium-light-skin-tone:',
+ '👨🏽🚀' => ':man-astronaut-medium-skin-tone:',
+ '🧔♂️' => ':man-with-beard:',
'🚴♂️' => ':man-biking:',
'🙇♂️' => ':man-bowing:',
'🤸♂️' => ':man-cartwheeling:',
'🧗♂️' => ':man-climbing:',
+ '👨🏿🍳' => ':man-cook-dark-skin-tone:',
+ '👨🏻🍳' => ':man-cook-light-skin-tone:',
+ '👨🏾🍳' => ':man-cook-medium-dark-skin-tone:',
+ '👨🏼🍳' => ':man-cook-medium-light-skin-tone:',
+ '👨🏽🍳' => ':man-cook-medium-skin-tone:',
+ '👨🏿🦲' => ':man-dark-skin-tone-bald:',
+ '👨🏿🦱' => ':man-dark-skin-tone-curly-hair:',
+ '👨🏿🦰' => ':man-dark-skin-tone-red-hair:',
+ '👨🏿🦳' => ':man-dark-skin-tone-white-hair:',
'🤦♂️' => ':man-facepalming:',
+ '👨🏿🏭' => ':man-factory-worker-dark-skin-tone:',
+ '👨🏻🏭' => ':man-factory-worker-light-skin-tone:',
+ '👨🏾🏭' => ':man-factory-worker-medium-dark-skin-tone:',
+ '👨🏼🏭' => ':man-factory-worker-medium-light-skin-tone:',
+ '👨🏽🏭' => ':man-factory-worker-medium-skin-tone:',
+ '👨🏿🌾' => ':man-farmer-dark-skin-tone:',
+ '👨🏻🌾' => ':man-farmer-light-skin-tone:',
+ '👨🏾🌾' => ':man-farmer-medium-dark-skin-tone:',
+ '👨🏼🌾' => ':man-farmer-medium-light-skin-tone:',
+ '👨🏽🌾' => ':man-farmer-medium-skin-tone:',
+ '👨🏿🍼' => ':man-feeding-baby-dark-skin-tone:',
+ '👨🏻🍼' => ':man-feeding-baby-light-skin-tone:',
+ '👨🏾🍼' => ':man-feeding-baby-medium-dark-skin-tone:',
+ '👨🏼🍼' => ':man-feeding-baby-medium-light-skin-tone:',
+ '👨🏽🍼' => ':man-feeding-baby-medium-skin-tone:',
+ '👨🏿🚒' => ':man-firefighter-dark-skin-tone:',
+ '👨🏻🚒' => ':man-firefighter-light-skin-tone:',
+ '👨🏾🚒' => ':man-firefighter-medium-dark-skin-tone:',
+ '👨🏼🚒' => ':man-firefighter-medium-light-skin-tone:',
+ '👨🏽🚒' => ':man-firefighter-medium-skin-tone:',
'🙍♂️' => ':man-frowning:',
'🙅♂️' => ':man-gesturing-no:',
'🙆♂️' => ':man-gesturing-ok:',
'💇♂️' => ':man-getting-haircut:',
'💆♂️' => ':man-getting-massage:',
'🧘♂️' => ':man-in-lotus-position:',
+ '👨🏿🦽' => ':man-in-manual-wheelchair-dark-skin-tone:',
+ '👨🏻🦽' => ':man-in-manual-wheelchair-light-skin-tone:',
+ '👨🏾🦽' => ':man-in-manual-wheelchair-medium-dark-skin-tone:',
+ '👨🏼🦽' => ':man-in-manual-wheelchair-medium-light-skin-tone:',
+ '👨🏽🦽' => ':man-in-manual-wheelchair-medium-skin-tone:',
+ '👨🏿🦼' => ':man-in-motorized-wheelchair-dark-skin-tone:',
+ '👨🏻🦼' => ':man-in-motorized-wheelchair-light-skin-tone:',
+ '👨🏾🦼' => ':man-in-motorized-wheelchair-medium-dark-skin-tone:',
+ '👨🏼🦼' => ':man-in-motorized-wheelchair-medium-light-skin-tone:',
+ '👨🏽🦼' => ':man-in-motorized-wheelchair-medium-skin-tone:',
'🧖♂️' => ':man-in-steamy-room:',
'🤵♂️' => ':man-in-tuxedo:',
'🤹♂️' => ':man-juggling:',
'🧎♂️' => ':man-kneeling:',
+ '👨🏻🦲' => ':man-light-skin-tone-bald:',
+ '👨🏻🦱' => ':man-light-skin-tone-curly-hair:',
+ '👨🏻🦰' => ':man-light-skin-tone-red-hair:',
+ '👨🏻🦳' => ':man-light-skin-tone-white-hair:',
+ '👨🏿🔧' => ':man-mechanic-dark-skin-tone:',
+ '👨🏻🔧' => ':man-mechanic-light-skin-tone:',
+ '👨🏾🔧' => ':man-mechanic-medium-dark-skin-tone:',
+ '👨🏼🔧' => ':man-mechanic-medium-light-skin-tone:',
+ '👨🏽🔧' => ':man-mechanic-medium-skin-tone:',
+ '👨🏾🦲' => ':man-medium-dark-skin-tone-bald:',
+ '👨🏾🦱' => ':man-medium-dark-skin-tone-curly-hair:',
+ '👨🏾🦰' => ':man-medium-dark-skin-tone-red-hair:',
+ '👨🏾🦳' => ':man-medium-dark-skin-tone-white-hair:',
+ '👨🏼🦲' => ':man-medium-light-skin-tone-bald:',
+ '👨🏼🦱' => ':man-medium-light-skin-tone-curly-hair:',
+ '👨🏼🦰' => ':man-medium-light-skin-tone-red-hair:',
+ '👨🏼🦳' => ':man-medium-light-skin-tone-white-hair:',
+ '👨🏽🦲' => ':man-medium-skin-tone-bald:',
+ '👨🏽🦱' => ':man-medium-skin-tone-curly-hair:',
+ '👨🏽🦰' => ':man-medium-skin-tone-red-hair:',
+ '👨🏽🦳' => ':man-medium-skin-tone-white-hair:',
'🚵♂️' => ':man-mountain-biking:',
+ '👨🏿💼' => ':man-office-worker-dark-skin-tone:',
+ '👨🏻💼' => ':man-office-worker-light-skin-tone:',
+ '👨🏾💼' => ':man-office-worker-medium-dark-skin-tone:',
+ '👨🏼💼' => ':man-office-worker-medium-light-skin-tone:',
+ '👨🏽💼' => ':man-office-worker-medium-skin-tone:',
'🤾♂️' => ':man-playing-handball:',
'🤽♂️' => ':man-playing-water-polo:',
'🙎♂️' => ':man-pouting:',
'🙋♂️' => ':man-raising-hand:',
'🚣♂️' => ':man-rowing-boat:',
'🏃♂️' => ':man-running:',
+ '👨🏿🔬' => ':man-scientist-dark-skin-tone:',
+ '👨🏻🔬' => ':man-scientist-light-skin-tone:',
+ '👨🏾🔬' => ':man-scientist-medium-dark-skin-tone:',
+ '👨🏼🔬' => ':man-scientist-medium-light-skin-tone:',
+ '👨🏽🔬' => ':man-scientist-medium-skin-tone:',
'🤷♂️' => ':man-shrugging:',
+ '👨🏿🎤' => ':man-singer-dark-skin-tone:',
+ '👨🏻🎤' => ':man-singer-light-skin-tone:',
+ '👨🏾🎤' => ':man-singer-medium-dark-skin-tone:',
+ '👨🏼🎤' => ':man-singer-medium-light-skin-tone:',
+ '👨🏽🎤' => ':man-singer-medium-skin-tone:',
'🧍♂️' => ':man-standing:',
+ '👨🏿🎓' => ':man-student-dark-skin-tone:',
+ '👨🏻🎓' => ':man-student-light-skin-tone:',
+ '👨🏾🎓' => ':man-student-medium-dark-skin-tone:',
+ '👨🏼🎓' => ':man-student-medium-light-skin-tone:',
+ '👨🏽🎓' => ':man-student-medium-skin-tone:',
'🏄♂️' => ':man-surfing:',
'🏊♂️' => ':man-swimming:',
+ '👨🏿🏫' => ':man-teacher-dark-skin-tone:',
+ '👨🏻🏫' => ':man-teacher-light-skin-tone:',
+ '👨🏾🏫' => ':man-teacher-medium-dark-skin-tone:',
+ '👨🏼🏫' => ':man-teacher-medium-light-skin-tone:',
+ '👨🏽🏫' => ':man-teacher-medium-skin-tone:',
+ '👨🏿💻' => ':man-technologist-dark-skin-tone:',
+ '👨🏻💻' => ':man-technologist-light-skin-tone:',
+ '👨🏾💻' => ':man-technologist-medium-dark-skin-tone:',
+ '👨🏼💻' => ':man-technologist-medium-light-skin-tone:',
+ '👨🏽💻' => ':man-technologist-medium-skin-tone:',
'💁♂️' => ':man-tipping-hand:',
'🚶♂️' => ':man-walking:',
'👳♂️' => ':man-wearing-turban:',
- '🧔♂️' => ':man-with-beard:',
'👰♂️' => ':man-with-veil:',
- '🤼♂️' => ':man-wrestling:',
+ '👨🏿🦯' => ':man-with-white-cane-dark-skin-tone:',
+ '👨🏻🦯' => ':man-with-white-cane-light-skin-tone:',
+ '👨🏾🦯' => ':man-with-white-cane-medium-dark-skin-tone:',
+ '👨🏼🦯' => ':man-with-white-cane-medium-light-skin-tone:',
+ '👨🏽🦯' => ':man-with-white-cane-medium-skin-tone:',
+ '🤼♂️' => ':men-wrestling:',
+ '🧑🏿🔧' => ':mechanic-dark-skin-tone:',
+ '🧑🏻🔧' => ':mechanic-light-skin-tone:',
+ '🧑🏾🔧' => ':mechanic-medium-dark-skin-tone:',
+ '🧑🏼🔧' => ':mechanic-medium-light-skin-tone:',
+ '🧑🏽🔧' => ':mechanic-medium-skin-tone:',
'👯♂️' => ':men-with-bunny-ears-partying:',
'❤️🩹' => ':mending-heart:',
'🧜♀️' => ':mermaid:',
'🧜♂️' => ':merman:',
+ '🧑🏿🎄' => ':mx-claus-dark-skin-tone:',
+ '🧑🏻🎄' => ':mx-claus-light-skin-tone:',
+ '🧑🏾🎄' => ':mx-claus-medium-dark-skin-tone:',
+ '🧑🏼🎄' => ':mx-claus-medium-light-skin-tone:',
+ '🧑🏽🎄' => ':mx-claus-medium-skin-tone:',
+ '🧑🏿💼' => ':office-worker-dark-skin-tone:',
+ '🧑🏻💼' => ':office-worker-light-skin-tone:',
+ '🧑🏾💼' => ':office-worker-medium-dark-skin-tone:',
+ '🧑🏼💼' => ':office-worker-medium-light-skin-tone:',
+ '🧑🏽💼' => ':office-worker-medium-skin-tone:',
+ '🧑🏿🦲' => ':person-dark-skin-tone-bald:',
+ '🧑🏿🦱' => ':person-dark-skin-tone-curly-hair:',
+ '🧑🏿🦰' => ':person-dark-skin-tone-red-hair:',
+ '🧑🏿🦳' => ':person-dark-skin-tone-white-hair:',
+ '🧑🏿🍼' => ':person-feeding-baby-dark-skin-tone:',
+ '🧑🏻🍼' => ':person-feeding-baby-light-skin-tone:',
+ '🧑🏾🍼' => ':person-feeding-baby-medium-dark-skin-tone:',
+ '🧑🏼🍼' => ':person-feeding-baby-medium-light-skin-tone:',
+ '🧑🏽🍼' => ':person-feeding-baby-medium-skin-tone:',
+ '🧑🏿🦽' => ':person-in-manual-wheelchair-dark-skin-tone:',
+ '🧑🏻🦽' => ':person-in-manual-wheelchair-light-skin-tone:',
+ '🧑🏾🦽' => ':person-in-manual-wheelchair-medium-dark-skin-tone:',
+ '🧑🏼🦽' => ':person-in-manual-wheelchair-medium-light-skin-tone:',
+ '🧑🏽🦽' => ':person-in-manual-wheelchair-medium-skin-tone:',
+ '🧑🏿🦼' => ':person-in-motorized-wheelchair-dark-skin-tone:',
+ '🧑🏻🦼' => ':person-in-motorized-wheelchair-light-skin-tone:',
+ '🧑🏾🦼' => ':person-in-motorized-wheelchair-medium-dark-skin-tone:',
+ '🧑🏼🦼' => ':person-in-motorized-wheelchair-medium-light-skin-tone:',
+ '🧑🏽🦼' => ':person-in-motorized-wheelchair-medium-skin-tone:',
'🧎➡️' => ':person-kneeling-facing-right:',
+ '🧑🏻🦲' => ':person-light-skin-tone-bald:',
+ '🧑🏻🦱' => ':person-light-skin-tone-curly-hair:',
+ '🧑🏻🦰' => ':person-light-skin-tone-red-hair:',
+ '🧑🏻🦳' => ':person-light-skin-tone-white-hair:',
+ '🧑🏾🦲' => ':person-medium-dark-skin-tone-bald:',
+ '🧑🏾🦱' => ':person-medium-dark-skin-tone-curly-hair:',
+ '🧑🏾🦰' => ':person-medium-dark-skin-tone-red-hair:',
+ '🧑🏾🦳' => ':person-medium-dark-skin-tone-white-hair:',
+ '🧑🏼🦲' => ':person-medium-light-skin-tone-bald:',
+ '🧑🏼🦱' => ':person-medium-light-skin-tone-curly-hair:',
+ '🧑🏼🦰' => ':person-medium-light-skin-tone-red-hair:',
+ '🧑🏼🦳' => ':person-medium-light-skin-tone-white-hair:',
+ '🧑🏽🦲' => ':person-medium-skin-tone-bald:',
+ '🧑🏽🦱' => ':person-medium-skin-tone-curly-hair:',
+ '🧑🏽🦰' => ':person-medium-skin-tone-red-hair:',
+ '🧑🏽🦳' => ':person-medium-skin-tone-white-hair:',
'🏃➡️' => ':person-running-facing-right:',
'🚶➡️' => ':person-walking-facing-right:',
+ '🧑🏿🦯' => ':person-with-white-cane-dark-skin-tone:',
+ '🧑🏻🦯' => ':person-with-white-cane-light-skin-tone:',
+ '🧑🏾🦯' => ':person-with-white-cane-medium-dark-skin-tone:',
+ '🧑🏼🦯' => ':person-with-white-cane-medium-light-skin-tone:',
+ '🧑🏽🦯' => ':person-with-white-cane-medium-skin-tone:',
'🧑✈️' => ':pilot:',
'🏴☠️' => ':pirate-flag:',
'🐻❄️' => ':polar-bear:',
- '🏳️🌈' => ':rainbow-flag:',
+ '🧑🏿🔬' => ':scientist-dark-skin-tone:',
+ '🧑🏻🔬' => ':scientist-light-skin-tone:',
+ '🧑🏾🔬' => ':scientist-medium-dark-skin-tone:',
+ '🧑🏼🔬' => ':scientist-medium-light-skin-tone:',
+ '🧑🏽🔬' => ':scientist-medium-skin-tone:',
+ '🧑🏿🎤' => ':singer-dark-skin-tone:',
+ '🧑🏻🎤' => ':singer-light-skin-tone:',
+ '🧑🏾🎤' => ':singer-medium-dark-skin-tone:',
+ '🧑🏼🎤' => ':singer-medium-light-skin-tone:',
+ '🧑🏽🎤' => ':singer-medium-skin-tone:',
+ '🧑🏿🎓' => ':student-dark-skin-tone:',
+ '🧑🏻🎓' => ':student-light-skin-tone:',
+ '🧑🏾🎓' => ':student-medium-dark-skin-tone:',
+ '🧑🏼🎓' => ':student-medium-light-skin-tone:',
+ '🧑🏽🎓' => ':student-medium-skin-tone:',
+ '🧑🏿🏫' => ':teacher-dark-skin-tone:',
+ '🧑🏻🏫' => ':teacher-light-skin-tone:',
+ '🧑🏾🏫' => ':teacher-medium-dark-skin-tone:',
+ '🧑🏼🏫' => ':teacher-medium-light-skin-tone:',
+ '🧑🏽🏫' => ':teacher-medium-skin-tone:',
+ '🧑🏿💻' => ':technologist-dark-skin-tone:',
+ '🧑🏻💻' => ':technologist-light-skin-tone:',
+ '🧑🏾💻' => ':technologist-medium-dark-skin-tone:',
+ '🧑🏼💻' => ':technologist-medium-light-skin-tone:',
+ '🧑🏽💻' => ':technologist-medium-skin-tone:',
+ '👩🏿🎨' => ':woman-artist-dark-skin-tone:',
+ '👩🏻🎨' => ':woman-artist-light-skin-tone:',
+ '👩🏾🎨' => ':woman-artist-medium-dark-skin-tone:',
+ '👩🏼🎨' => ':woman-artist-medium-light-skin-tone:',
+ '👩🏽🎨' => ':woman-artist-medium-skin-tone:',
+ '👩🏿🚀' => ':woman-astronaut-dark-skin-tone:',
+ '👩🏻🚀' => ':woman-astronaut-light-skin-tone:',
+ '👩🏾🚀' => ':woman-astronaut-medium-dark-skin-tone:',
+ '👩🏼🚀' => ':woman-astronaut-medium-light-skin-tone:',
+ '👩🏽🚀' => ':woman-astronaut-medium-skin-tone:',
+ '🧔♀️' => ':woman-with-beard:',
'🚴♀️' => ':woman-biking:',
'🙇♀️' => ':woman-bowing:',
'🤸♀️' => ':woman-cartwheeling:',
'🧗♀️' => ':woman-climbing:',
+ '👩🏿🍳' => ':woman-cook-dark-skin-tone:',
+ '👩🏻🍳' => ':woman-cook-light-skin-tone:',
+ '👩🏾🍳' => ':woman-cook-medium-dark-skin-tone:',
+ '👩🏼🍳' => ':woman-cook-medium-light-skin-tone:',
+ '👩🏽🍳' => ':woman-cook-medium-skin-tone:',
+ '👩🏿🦲' => ':woman-dark-skin-tone-bald:',
+ '👩🏿🦱' => ':woman-dark-skin-tone-curly-hair:',
+ '👩🏿🦰' => ':woman-dark-skin-tone-red-hair:',
+ '👩🏿🦳' => ':woman-dark-skin-tone-white-hair:',
'🤦♀️' => ':woman-facepalming:',
+ '👩🏿🏭' => ':woman-factory-worker-dark-skin-tone:',
+ '👩🏻🏭' => ':woman-factory-worker-light-skin-tone:',
+ '👩🏾🏭' => ':woman-factory-worker-medium-dark-skin-tone:',
+ '👩🏼🏭' => ':woman-factory-worker-medium-light-skin-tone:',
+ '👩🏽🏭' => ':woman-factory-worker-medium-skin-tone:',
+ '👩🏿🌾' => ':woman-farmer-dark-skin-tone:',
+ '👩🏻🌾' => ':woman-farmer-light-skin-tone:',
+ '👩🏾🌾' => ':woman-farmer-medium-dark-skin-tone:',
+ '👩🏼🌾' => ':woman-farmer-medium-light-skin-tone:',
+ '👩🏽🌾' => ':woman-farmer-medium-skin-tone:',
+ '👩🏿🍼' => ':woman-feeding-baby-dark-skin-tone:',
+ '👩🏻🍼' => ':woman-feeding-baby-light-skin-tone:',
+ '👩🏾🍼' => ':woman-feeding-baby-medium-dark-skin-tone:',
+ '👩🏼🍼' => ':woman-feeding-baby-medium-light-skin-tone:',
+ '👩🏽🍼' => ':woman-feeding-baby-medium-skin-tone:',
+ '👩🏿🚒' => ':woman-firefighter-dark-skin-tone:',
+ '👩🏻🚒' => ':woman-firefighter-light-skin-tone:',
+ '👩🏾🚒' => ':woman-firefighter-medium-dark-skin-tone:',
+ '👩🏼🚒' => ':woman-firefighter-medium-light-skin-tone:',
+ '👩🏽🚒' => ':woman-firefighter-medium-skin-tone:',
'🙍♀️' => ':woman-frowning:',
'🙅♀️' => ':woman-gesturing-no:',
'🙆♀️' => ':woman-gesturing-ok:',
'💇♀️' => ':woman-getting-haircut:',
'💆♀️' => ':woman-getting-massage:',
'🧘♀️' => ':woman-in-lotus-position:',
+ '👩🏿🦽' => ':woman-in-manual-wheelchair-dark-skin-tone:',
+ '👩🏻🦽' => ':woman-in-manual-wheelchair-light-skin-tone:',
+ '👩🏾🦽' => ':woman-in-manual-wheelchair-medium-dark-skin-tone:',
+ '👩🏼🦽' => ':woman-in-manual-wheelchair-medium-light-skin-tone:',
+ '👩🏽🦽' => ':woman-in-manual-wheelchair-medium-skin-tone:',
+ '👩🏿🦼' => ':woman-in-motorized-wheelchair-dark-skin-tone:',
+ '👩🏻🦼' => ':woman-in-motorized-wheelchair-light-skin-tone:',
+ '👩🏾🦼' => ':woman-in-motorized-wheelchair-medium-dark-skin-tone:',
+ '👩🏼🦼' => ':woman-in-motorized-wheelchair-medium-light-skin-tone:',
+ '👩🏽🦼' => ':woman-in-motorized-wheelchair-medium-skin-tone:',
'🧖♀️' => ':woman-in-steamy-room:',
'🤵♀️' => ':woman-in-tuxedo:',
'🤹♀️' => ':woman-juggling:',
'🧎♀️' => ':woman-kneeling:',
+ '👩🏻🦲' => ':woman-light-skin-tone-bald:',
+ '👩🏻🦱' => ':woman-light-skin-tone-curly-hair:',
+ '👩🏻🦰' => ':woman-light-skin-tone-red-hair:',
+ '👩🏻🦳' => ':woman-light-skin-tone-white-hair:',
+ '👩🏿🔧' => ':woman-mechanic-dark-skin-tone:',
+ '👩🏻🔧' => ':woman-mechanic-light-skin-tone:',
+ '👩🏾🔧' => ':woman-mechanic-medium-dark-skin-tone:',
+ '👩🏼🔧' => ':woman-mechanic-medium-light-skin-tone:',
+ '👩🏽🔧' => ':woman-mechanic-medium-skin-tone:',
+ '👩🏾🦲' => ':woman-medium-dark-skin-tone-bald:',
+ '👩🏾🦱' => ':woman-medium-dark-skin-tone-curly-hair:',
+ '👩🏾🦰' => ':woman-medium-dark-skin-tone-red-hair:',
+ '👩🏾🦳' => ':woman-medium-dark-skin-tone-white-hair:',
+ '👩🏼🦲' => ':woman-medium-light-skin-tone-bald:',
+ '👩🏼🦱' => ':woman-medium-light-skin-tone-curly-hair:',
+ '👩🏼🦰' => ':woman-medium-light-skin-tone-red-hair:',
+ '👩🏼🦳' => ':woman-medium-light-skin-tone-white-hair:',
+ '👩🏽🦲' => ':woman-medium-skin-tone-bald:',
+ '👩🏽🦱' => ':woman-medium-skin-tone-curly-hair:',
+ '👩🏽🦰' => ':woman-medium-skin-tone-red-hair:',
+ '👩🏽🦳' => ':woman-medium-skin-tone-white-hair:',
'🚵♀️' => ':woman-mountain-biking:',
+ '👩🏿💼' => ':woman-office-worker-dark-skin-tone:',
+ '👩🏻💼' => ':woman-office-worker-light-skin-tone:',
+ '👩🏾💼' => ':woman-office-worker-medium-dark-skin-tone:',
+ '👩🏼💼' => ':woman-office-worker-medium-light-skin-tone:',
+ '👩🏽💼' => ':woman-office-worker-medium-skin-tone:',
'🤾♀️' => ':woman-playing-handball:',
'🤽♀️' => ':woman-playing-water-polo:',
'🙎♀️' => ':woman-pouting:',
'🙋♀️' => ':woman-raising-hand:',
'🚣♀️' => ':woman-rowing-boat:',
'🏃♀️' => ':woman-running:',
+ '👩🏿🔬' => ':woman-scientist-dark-skin-tone:',
+ '👩🏻🔬' => ':woman-scientist-light-skin-tone:',
+ '👩🏾🔬' => ':woman-scientist-medium-dark-skin-tone:',
+ '👩🏼🔬' => ':woman-scientist-medium-light-skin-tone:',
+ '👩🏽🔬' => ':woman-scientist-medium-skin-tone:',
'🤷♀️' => ':woman-shrugging:',
+ '👩🏿🎤' => ':woman-singer-dark-skin-tone:',
+ '👩🏻🎤' => ':woman-singer-light-skin-tone:',
+ '👩🏾🎤' => ':woman-singer-medium-dark-skin-tone:',
+ '👩🏼🎤' => ':woman-singer-medium-light-skin-tone:',
+ '👩🏽🎤' => ':woman-singer-medium-skin-tone:',
'🧍♀️' => ':woman-standing:',
+ '👩🏿🎓' => ':woman-student-dark-skin-tone:',
+ '👩🏻🎓' => ':woman-student-light-skin-tone:',
+ '👩🏾🎓' => ':woman-student-medium-dark-skin-tone:',
+ '👩🏼🎓' => ':woman-student-medium-light-skin-tone:',
+ '👩🏽🎓' => ':woman-student-medium-skin-tone:',
'🏄♀️' => ':woman-surfing:',
'🏊♀️' => ':woman-swimming:',
+ '👩🏿🏫' => ':woman-teacher-dark-skin-tone:',
+ '👩🏻🏫' => ':woman-teacher-light-skin-tone:',
+ '👩🏾🏫' => ':woman-teacher-medium-dark-skin-tone:',
+ '👩🏼🏫' => ':woman-teacher-medium-light-skin-tone:',
+ '👩🏽🏫' => ':woman-teacher-medium-skin-tone:',
+ '👩🏿💻' => ':woman-technologist-dark-skin-tone:',
+ '👩🏻💻' => ':woman-technologist-light-skin-tone:',
+ '👩🏾💻' => ':woman-technologist-medium-dark-skin-tone:',
+ '👩🏼💻' => ':woman-technologist-medium-light-skin-tone:',
+ '👩🏽💻' => ':woman-technologist-medium-skin-tone:',
'💁♀️' => ':woman-tipping-hand:',
'🚶♀️' => ':wo
7802
man-walking:',
'👳♀️' => ':woman-wearing-turban:',
- '🧔♀️' => ':woman-with-beard:',
'👰♀️' => ':woman-with-veil:',
- '🤼♀️' => ':woman-wrestling:',
+ '👩🏿🦯' => ':woman-with-white-cane-dark-skin-tone:',
+ '👩🏻🦯' => ':woman-with-white-cane-light-skin-tone:',
+ '👩🏾🦯' => ':woman-with-white-cane-medium-dark-skin-tone:',
+ '👩🏼🦯' => ':woman-with-white-cane-medium-light-skin-tone:',
+ '👩🏽🦯' => ':woman-with-white-cane-medium-skin-tone:',
+ '🤼♀️' => ':women-wrestling:',
'👯♀️' => ':women-with-bunny-ears-partying:',
'🧑🎨' => ':artist:',
+ '*️⃣' => ':keycap-star:',
'🧑🚀' => ':astronaut:',
- '👨🦲' => ':bald-man:',
+ '👨🦲' => ':man-bald:',
'🧑🦲' => ':person-bald:',
- '👩🦲' => ':bald-woman:',
+ '👩🦲' => ':woman-bald:',
'⛹♂' => ':bouncing-ball-man:',
'⛹♀' => ':bouncing-ball-woman:',
'🚴♂' => ':biking-man:',
@@ -203,9 +1424,9 @@
'👷♂' => ':construction-worker-man:',
'👷♀' => ':construction-worker-woman:',
'🧑🍳' => ':cook:',
- '👨🦱' => ':curly-haired-man:',
+ '👨🦱' => ':man-curly-hair:',
'🧑🦱' => ':person-curly-hair:',
- '👩🦱' => ':curly-haired-woman:',
+ '👩🦱' => ':woman-curly-hair:',
'👯♂' => ':dancing-men:',
'👯♀' => ':dancing-women:',
'🧏♂' => ':deaf-man:',
@@ -257,7 +1478,6 @@
'🧑⚕' => ':health-worker:',
'❤🔥' => ':heart-on-fire:',
'🧑⚖' => ':judge:',
- '*️⃣' => ':keycap-star:',
'🧎♂' => ':kneeling-man:',
'🧎♀' => ':kneeling-woman:',
'🍋🟩' => ':lime:',
@@ -292,8 +1512,10 @@
'👨✈' => ':man-pilot:',
'🤾♂' => ':man-playing-handball:',
'🤽♂' => ':man-playing-water-polo:',
+ '👨🦰' => ':red-haired-man:',
'🤷♂' => ':man-shrugging:',
- '👨🦯' => ':man-with-probing-cane:',
+ '👨🦳' => ':white-haired-man:',
+ '👨🦯' => ':man-with-white-cane:',
'👳♂' => ':man-with-turban:',
'👰♂' => ':man-with-veil:',
'💆♂' => ':massage-man:',
@@ -318,7 +1540,7 @@
'🧑🦼' => ':person-in-motorized-wheelchair:',
'🧑🦰' => ':red-haired-person:',
'🧑🦳' => ':white-haired-person:',
- '🧑🦯' => ':person-with-probing-cane:',
+ '🧑🦯' => ':person-with-white-cane:',
'🐦🔥' => ':phoenix:',
'🧑✈' => ':pilot:',
'🏴☠' => ':pirate-flag:',
@@ -330,8 +1552,7 @@
'🏳🌈' => ':rainbow-flag:',
'🙋♂' => ':raising-hand-man:',
'🙋♀' => ':raising-hand-woman:',
- '👨🦰' => ':red-haired-man:',
- '👩🦰' => ':red-haired-woman:',
+ '👩🦰' => ':woman-red-hair:',
'🚣♂' => ':rowing-man:',
'🚣♀' => ':rowing-woman:',
'🏃♂' => ':running-man:',
@@ -367,8 +1588,7 @@
'🚶♀' => ':walking-woman:',
'🏋♂' => ':weight-lifting-man:',
'🏋♀' => ':weight-lifting-woman:',
- '👨🦳' => ':white-haired-man:',
- '👩🦳' => ':white-haired-woman:',
+ '👩🦳' => ':woman-white-hair:',
'🧔♀' => ':woman-beard:',
'🤸♀' => ':woman-cartwheeling:',
'🤦♀' => ':woman-facepalming:',
@@ -383,16 +1603,17 @@
'🤾♀' => ':woman-playing-handball:',
'🤽♀' => ':woman-playing-water-polo:',
'🤷♀' => ':woman-shrugging:',
- '👩🦯' => ':woman-with-probing-cane:',
+ '👩🦯' => ':woman-with-white-cane:',
'👳♀' => ':woman-with-turban:',
'🤼♀' => ':women-wrestling:',
'0️⃣' => ':zero:',
'🧟♂' => ':zombie-man:',
'🧟♀' => ':zombie-woman:',
'🅰️' => ':a:',
- '🎟️' => ':admission-tickets:',
+ '🎟️' => ':tickets:',
'🇦🇫' => ':flag-af:',
'✈️' => ':airplane:',
+ '🛩️' => ':small-airplane:',
'🇦🇽' => ':flag-ax:',
'🇦🇱' => ':flag-al:',
'⚗️' => ':alembic:',
@@ -404,6 +1625,7 @@
'👼🏽' => ':angel-tone3:',
'👼🏾' => ':angel-tone4:',
'👼🏿' => ':angel-tone5:',
+ '🗯️' => ':right-anger-bubble:',
'🇦🇴' => ':flag-ao:',
'🇦🇮' => ':flag-ai:',
'🇦🇶' => ':flag-aq:',
@@ -444,7 +1666,8 @@
'‼️' => ':bangbang:',
'🇧🇩' => ':flag-bd:',
'🇧🇧' => ':flag-bb:',
- '🌥️' => ':barely-sunny:',
+ '🌥️' => ':white-sun-cloud:',
+ '⛹️' => ':person-with-ball:',
'⛹🏻' => ':basketball-player-tone1:',
'⛹🏼' => ':basketball-player-tone2:',
'⛹🏽' => ':basketball-player-tone3:',
@@ -456,6 +1679,7 @@
'🛀🏾' => ':bath-tone4:',
'🛀🏿' => ':bath-tone5:',
'🏖️' => ':beach-with-umbrella:',
+ '⛱️' => ':umbrella-on-ground:',
'🛏️' => ':bed:',
'🇧🇾' => ':flag-by:',
'🇧🇪' => ':flag-be:',
@@ -470,14 +1694,14 @@
'🚴🏾' => ':bicyclist-tone4:',
'🚴🏿' => ':bicyclist-tone5:',
'☣️' => ':biohazard-sign:',
- '⏺️' => ':black-circle-for-record:',
- '⏮️' => ':black-left-pointing-double-triangle-with-vertical-bar:',
+ '⏺️' => ':record-button:',
+ '⏮️' => ':track-previous:',
'◼️' => ':black-medium-square:',
'✒️' => ':black-nib:',
- '⏭️' => ':black-right-pointing-double-triangle-with-vertical-bar:',
- '⏯️' => ':black-right-pointing-triangle-with-double-vertical-bar:',
+ '⏭️' => ':track-next:',
+ '⏯️' => ':play-pause:',
'▪️' => ':black-small-square:',
- '⏹️' => ':black-square-for-stop:',
+ '⏹️' => ':stop-button:',
'🇧🇴' => ':flag-bo:',
'🇧🇦' => ':flag-ba:',
'🇧🇼' => ':flag-bw:',
@@ -493,6 +1717,11 @@
'👦🏾' => ':boy-tone4:',
'👦🏿' => ':boy-tone5:',
'🇧🇷' => ':flag-br:',
+ '🤱🏿' => ':breast-feeding-dark-skin-tone:',
+ '🤱🏻' => ':breast-feeding-light-skin-tone:',
+ '🤱🏾' => ':breast-feeding-medium-dark-skin-tone:',
+ '🤱🏼' => ':breast-feeding-medium-light-skin-tone:',
+ '🤱🏽' => ':breast-feeding-medium-skin-tone:',
'👰🏻' => ':bride-with-veil-tone1:',
'👰🏼' => ':bride-with-veil-tone2:',
'👰🏽' => ':bride-with-veil-tone3:',
@@ -501,10 +1730,11 @@
'🇮🇴' => ':flag-io:',
'🇻🇬' => ':flag-vg:',
'🇧🇳' => ':flag-bn:',
- '🏗️' => ':building-construction:',
+ '🏗️' => ':construction-site:',
'🇧🇬' => ':flag-bg:',
'🇧🇫' => ':flag-bf:',
'🇧🇮' => ':flag-bi:',
+ '🗓️' => ':spiral-calendar-pad:',
'🤙🏻' => ':call-me-tone1:',
'🤙🏼' => ':call-me-tone2:',
'🤙🏽' => ':call-me-tone3:',
@@ -518,7 +1748,7 @@
'🕯️' => ':candle:',
'🇨🇻' => ':flag-cv:',
'🗃️' => ':card-file-box:',
- '🗂️' => ':card-index-dividers:',
+ '🗂️' => ':dividers:',
'🇧🇶' => ':flag-bq:',
'🤸🏻' => ':cartwheel-tone1:',
'🤸🏼' => ':cartwheel-tone2:',
@@ -531,6 +1761,11 @@
'🇹🇩' => ':flag-td:',
'⛓️' => ':chains:',
'♟️' => ':chess-pawn:',
+ '🧒🏿' => ':child-dark-skin-tone:',
+ '🧒🏻' => ':child-light-skin-tone:',
+ '🧒🏾' => ':child-medium-dark-skin-tone:',
+ '🧒🏼' => ':child-medium-light-skin-tone:',
+ '🧒🏽' => ':child-medium-skin-tone:',
'🇨🇱' => ':flag-cl:',
'🐿️' => ':chipmunk:',
'🇨🇽' => ':flag-cx:',
@@ -542,7 +1777,12 @@
'👏🏿' => ':clap-tone5:',
'🏛️' => ':classical-building:',
'🇨🇵' => ':flag-cp:',
+ '🕰️' => ':mantelpiece-clock:',
'☁️' => ':cloud:',
+ '🌩️' => ':lightning:',
+ '🌧️' => ':rain-cloud:',
+ '🌨️' => ':snow-cloud:',
+ '🌪️' => ':tornado:',
'♣️' => ':clubs:',
'🇨🇳' => ':flag-cn:',
'🇨🇨' => ':flag-cc:',
@@ -570,8 +1810,16 @@
'🇨🇷' => ':flag-cr:',
'🇨🇮' => ':flag-ci:',
'🛋️' => ':couch-and-lamp:',
+ '💑🏿' => ':couple-with-heart-dark-skin-tone:',
+ '💑🏻' => ':couple-with-heart-light-skin-tone:',
+ '💑🏾' => ':couple-with-heart-medium-dark-skin-tone:',
+ '💑🏼' => ':couple-with-heart-medium-light-skin-tone:',
+ '💑🏽' => ':couple-with-heart-medium-skin-tone:',
+ '🖍️' => ':lower-left-crayon:',
'🇭🇷' => ':flag-hr:',
+ '✝️' => ':latin-cross:',
'⚔️' => ':crossed-swords:',
+ '🛳️' => ':passenger-ship:',
'🇨🇺' => ':flag-cu:',
'🇨🇼' => ':flag-cw:',
'🇨🇾' => ':flag-cy:',
@@ -584,23 +1832,33 @@
'💃🏿' => ':dancer-tone5:',
'🕶️' => ':dark-sunglasses:',
'🇩🇪' => ':flag-de:',
+ '🧏🏿' => ':deaf-person-dark-skin-tone:',
+ '🧏🏻' => ':deaf-person-light-skin-tone:',
+ '🧏🏾' => ':deaf-person-medium-dark-skin-tone:',
+ '🧏🏼' => ':deaf-person-medium-light-skin-tone:',
+ '🧏🏽' => ':deaf-person-medium-skin-tone:',
'🇩🇰' => ':flag-dk:',
- '🏚️' => ':derelict-house-building:',
+ '🏚️' => ':house-abandoned:',
'🏜️' => ':desert:',
- '🏝️' => ':desert-island:',
+ '🏝️' => ':island:',
'🖥️' => ':desktop-computer:',
'♦️' => ':diamonds:',
'🇩🇬' => ':flag-dg:',
'🇩🇯' => ':flag-dj:',
'🇩🇲' => ':flag-dm:',
'🇩🇴' => ':flag-do:',
- '⏸️' => ':double-vertical-bar:',
+ '⏸️' => ':pause-button:',
'🕊️' => ':dove-of-peace:',
'👂🏻' => ':ear-tone1:',
'👂🏼' => ':ear-tone2:',
'👂🏽' => ':ear-tone3:',
'👂🏾' => ':ear-tone4:',
'👂🏿' => ':ear-tone5:',
+ '🦻🏿' => ':ear-with-hearing-aid-dark-skin-tone:',
+ '🦻🏻' => ':ear-with-hearing-aid-light-skin-tone:',
+ '🦻🏾' => ':ear-with-hearing-aid-medium-dark-skin-tone:',
+ '🦻🏼' => ':ear-with-hearing-aid-medium-light-skin-tone:',
+ '🦻🏽' => ':ear-with-hearing-aid-medium-skin-tone:',
'🇪🇨' => ':flag-ec:',
'🇪🇬' => ':flag-eg:',
'8⃣' => ':eight:',
@@ -608,7 +1866,12 @@
'✳️' => ':eight-spoked-asterisk:',
'⏏️' => ':eject:',
'🇸🇻' => ':flag-sv:',
- '✉️' => ':email:',
+ '🧝🏿' => ':elf-dark-skin-tone:',
+ '🧝🏻' => ':elf-light-skin-tone:',
+ '🧝🏾' => ':elf-medium-dark-skin-tone:',
+ '🧝🏼' => ':elf-medium-light-skin-tone:',
+ '🧝🏽' => ':elf-medium-skin-tone:',
+ '✉️' => ':envelope:',
'🇬🇶' => ':flag-gq:',
'🇪🇷' => ':flag-er:',
'🇪🇸' => ':flag-es:',
@@ -621,6 +1884,11 @@
'🤦🏽' => ':face-palm-tone3:',
'🤦🏾' => ':face-palm-tone4:',
'🤦🏿' => ':face-palm-tone5:',
+ '🧚🏿' => ':fairy-dark-skin-tone:',
+ '🧚🏻' => ':fairy-light-skin-tone:',
+ '🧚🏾' => ':fairy-medium-dark-skin-tone:',
+ '🧚🏼' => ':fairy-medium-light-skin-tone:',
+ '🧚🏽' => ':fairy-medium-skin-tone:',
'🇫🇰' => ':flag-fk:',
'🇫🇴' => ':flag-fo:',
'♀️' => ':female-sign:',
@@ -628,7 +1896,7 @@
'🇫🇯' => ':flag-fj:',
'🗄️' => ':file-cabinet:',
'🎞️' => ':film-frames:',
- '📽️' => ':film-projector:',
+ '📽️' => ':projector:',
'🤞🏻' => ':fingers-crossed-tone1:',
'🤞🏼' => ':fingers-crossed-tone2:',
'🤞🏽' => ':fingers-crossed-tone3:',
@@ -808,6 +2076,7 @@
'🇻🇳' => ':vietnam:',
'🇻🇺' => ':vanuatu:',
'🇼🇫' => ':wallis-futuna:',
+ '🏳️' => ':waving-white-flag:',
'🇼🇸' => ':samoa:',
'🇽🇰' => ':kosovo:',
'🇾🇪' => ':yemen:',
@@ -817,10 +2086,16 @@
'🇿🇼' => ':zimbabwe:',
'⚜️' => ':fleur-de-lis:',
'🌫️' => ':fog:',
+ '🦶🏿' => ':foot-dark-skin-tone:',
+ '🦶🏻' => ':foot-light-skin-tone:',
+ '🦶🏾' => ':foot-medium-dark-skin-tone:',
+ '🦶🏼' => ':foot-medium-light-skin-tone:',
+ '🦶🏽' => ':foot-medium-skin-tone:',
+ '🍽️' => ':knife-fork-plate:',
'4⃣' => ':four:',
'🖼️' => ':frame-with-picture:',
- '⚱️' => ':funeral-urn:',
- '🏳🌈' => ':gay-pride-flag:',
+ '☹️' => ':white-frowning-face:',
+ '⚱️' => ':urn:',
'⚙️' => ':gear:',
'👧🏻' => ':girl-tone1:',
'👧🏼' => ':girl-tone2:',
@@ -838,13 +2113,19 @@
'💇🏽' => ':haircut-tone3:',
'💇🏾' => ':haircut-tone4:',
'💇🏿' => ':haircut-tone5:',
- '⚒️' => ':hammer-and-pick:',
- '🛠️' => ':hammer-and-wrench:',
+ '⚒️' => ':hammer-pick:',
+ '🛠️' => ':tools:',
+ '🖐️' => ':raised-hand-with-fingers-splayed:',
'🖐🏻' => ':hand-splayed-tone1:',
'🖐🏼' => ':hand-splayed-tone2:',
'🖐🏽' => ':hand-splayed-tone3:',
'🖐🏾' => ':hand-splayed-tone4:',
'🖐🏿' => ':hand-splayed-tone5:',
+ '🫰🏿' => ':hand-with-index-finger-and-thumb-crossed-dark-skin-tone:',
+ '🫰🏻' => ':hand-with-index-finger-and-thumb-crossed-light-skin-tone:',
+ '🫰🏾' => ':hand-with-index-finger-and-thumb-crossed-medium-dark-skin-tone:',
+ '🫰🏼' => ':hand-with-index-finger-and-thumb-crossed-medium-light-skin-tone:',
+ '🫰🏽' => ':hand-with-index-finger-and-thumb-crossed-medium-skin-tone:',
'🤾🏻' => ':handball-tone1:',
'🤾🏼' => ':handball-tone2:',
'🤾🏽' => ':handball-tone3:',
@@ -857,12 +2138,18 @@
'🤝🏿' => ':handshake-tone5:',
'#⃣' => ':hash:',
'❤️' => ':heart:',
+ '❣️' => ':heavy-heart-exclamation-mark-ornament:',
+ '🫶🏿' => ':heart-hands-dark-skin-tone:',
+ '🫶🏻' => ':heart-hands-light-skin-tone:',
+ '🫶🏾' => ':heart-hands-medium-dark-skin-tone:',
+ '🫶🏼' => ':heart-hands-medium-light-skin-tone:',
+ '🫶🏽' => ':heart-hands-medium-skin-tone:',
'♥️' => ':hearts:',
'✔️' => ':heavy-check-mark:',
- '❣️' => ':heavy-heart-exclamation-mark-ornament:',
'✖️' => ':heavy-multiplication-x:',
'⛑️' => ':helmet-with-white-cross:',
'🕳️' => ':hole:',
+ '🏘️' => ':house-buildings:',
'🏇🏻' => ':horse-racing-tone1:',
'🏇🏼' => ':horse-racing-tone2:',
'🏇🏽' => ':horse-racing-tone3:',
@@ -870,8 +2157,12 @@
'🏇🏿' => ':horse-racing-tone5:',
'🌶️' => ':hot-pepper:',
'♨️' => ':hotsprings:',
- '🏘️' => ':house-buildings:',
'⛸️' => ':ice-skate:',
+ '🫵🏿' => ':index-pointing-at-the-viewer-dark-skin-tone:',
+ '🫵🏻' => ':index-pointing-at-the-viewer-light-skin-tone:',
+ '🫵🏾' => ':index-pointing-at-the-viewer-medium-dark-skin-tone:',
+ '🫵🏼' => ':index-pointing-at-the-viewer-medium-light-skin-tone:',
+ '🫵🏽' => ':index-pointing-at-the-viewer-medium-skin-tone:',
'♾️' => ':infinity:',
'💁🏻' => ':information-desk-person-tone1:',
'💁🏼' => ':information-desk-person-tone2:',
@@ -886,38 +2177,66 @@
'🤹🏽' => ':juggling-tone3:',
'🤹🏾' => ':juggling-tone4:',
'🤹🏿' => ':juggling-tone5:',
+ '🗝️' => ':old-key:',
'⌨️' => ':keyboard:',
- '🍽️' => ':knife-fork-plate:',
+ '💏🏿' => ':kiss-dark-skin-tone:',
+ '💏🏻' => ':kiss-light-skin-tone:',
+ '💏🏾' => ':kiss-medium-dark-skin-tone:',
+ '💏🏼' => ':kiss-medium-light-skin-tone:',
+ '💏🏽' => ':kiss-medium-skin-tone:',
'🏷️' => ':label:',
- '✝️' => ':latin-cross:',
'🤛🏻' => ':left-facing-fist-tone1:',
'🤛🏼' => ':left-facing-fist-tone2:',
'🤛🏽' => ':left-facing-fist-tone3:',
'🤛🏾' => ':left-facing-fist-tone4:',
'🤛🏿' => ':left-facing-fist-tone5:',
'↔️' => ':left-right-arrow:',
- '🗨️' => ':left-speech-bubble:',
+ '🗨️' => ':speech-left:',
'↩️' => ':leftwards-arrow-with-hook:',
+ '🫲🏿' => ':leftwards-hand-dark-skin-tone:',
+ '🫲🏻' => ':leftwards-hand-light-skin-tone:',
+ '🫲🏾' => ':leftwards-hand-medium-dark-skin-tone:',
+ '🫲🏼' => ':leftwards-hand-medium-light-skin-tone:',
+ '🫲🏽' => ':leftwards-hand-medium-skin-tone:',
+ '🫷🏿' => ':leftwards-pushing-hand-dark-skin-tone:',
+ '🫷🏻' => ':leftwards-pushing-hand-light-skin-tone:',
+ '🫷🏾' => ':leftwards-pushing-hand-medium-dark-skin-tone:',
+ '🫷🏼' => ':leftwards-pushing-hand-medium-light-skin-tone:',
+ '🫷🏽' => ':leftwards-pushing-hand-medium-skin-tone:',
+ '🦵🏿' => ':leg-dark-skin-tone:',
+ '🦵🏻' => ':leg-light-skin-tone:',
+ '🦵🏾' => ':leg-medium-dark-skin-tone:',
+ '🦵🏼' => ':leg-medium-light-skin-tone:',
+ '🦵🏽' => ':leg-medium-skin-tone:',
'🎚️' => ':level-slider:',
+ '🕴️' => ':man-in-business-suit-levitating:',
+ '🏋️' => ':weight-lifter:',
'🏋🏻' => ':lifter-tone1:',
'🏋🏼' => ':lifter-tone2:',
'🏋🏽' => ':lifter-tone3:',
'🏋🏾' => ':lifter-tone4:',
'🏋🏿' => ':lifter-tone5:',
- '🌩️' => ':lightning:',
- '🖇️' => ':linked-paperclips:',
- '🖊️' => ':lower-left-ballpoint-pen:',
- '🖍️' => ':lower-left-crayon:',
- '🖋️' => ':lower-left-fountain-pen:',
- '🖌️' => ':lower-left-paintbrush:',
+ '🖇️' => ':paperclips:',
+ '🤟🏿' => ':love-you-gesture-dark-skin-tone:',
+ '🤟🏻' => ':love-you-gesture-light-skin-tone:',
+ '🤟🏾' => ':love-you-gesture-medium-dark-skin-tone:',
+ '🤟🏼' => ':love-you-gesture-medium-light-skin-tone:',
+ '🤟🏽' => ':love-you-gesture-medium-skin-tone:',
+ '🖊️' => ':pen-ballpoint:',
+ '🖋️' => ':pen-fountain:',
+ '🖌️' => ':paintbrush:',
'Ⓜ️' => ':m:',
+ '🧙🏿' => ':mage-dark-skin-tone:',
+ '🧙🏻' => ':mage-light-skin-tone:',
+ '🧙🏾' => ':mage-medium-dark-skin-tone:',
+ '🧙🏼' => ':mage-medium-light-skin-tone:',
+ '🧙🏽' => ':mage-medium-skin-tone:',
'♂️' => ':male-sign:',
'🕺🏻' => ':man-dancing-tone1:',
'🕺🏼' => ':man-dancing-tone2:',
'🕺🏽' => ':man-dancing-tone3:',
'🕺🏾' => ':man-dancing-tone4:',
'🕺🏿' => ':man-dancing-tone5:',
- '🕴️' => ':man-in-business-suit-levitating:',
'🤵🏻' => ':man-in-tuxedo-tone1:',
'🤵🏼' => ':man-in-tuxedo-tone2:',
'🤵🏽' => ':man-in-tuxedo-tone3:',
@@ -938,26 +2257,38 @@
'👳🏽' => ':man-with-turban-tone3:',
'👳🏾' => ':man-with-turban-tone4:',
'👳🏿' => ':man-with-turban-tone5:',
- '🕰️' => ':mantelpiece-clock:',
+ '🗺️' => ':world-map:',
'💆🏻' => ':massage-tone1:',
'💆🏼' => ':massage-tone2:',
'💆🏽' => ':massage-tone3:',
'💆🏾' => ':massage-tone4:',
'💆🏿' => ':massage-tone5:',
- '🎖️' => ':medal:',
+ '🎖️' => ':military-medal:',
'⚕️' => ':medical-symbol:',
+ '👬🏿' => ':men-holding-hands-dark-skin-tone:',
+ '👬🏻' => ':men-holding-hands-light-skin-tone:',
+ '👬🏾' => ':men-holding-hands-medium-dark-skin-tone:',
+ '👬🏼' => ':men-holding-hands-medium-light-skin-tone:',
+ '👬🏽' => ':men-holding-hands-medium-skin-tone:',
+ '🧜🏿' => ':merperson-dark-skin-tone:',
+ '🧜🏻' => ':merperson-light-skin-tone:',
+ '🧜🏾' => ':merperson-medium-dark-skin-tone:',
+ '🧜🏼' => ':merperson-medium-light-skin-tone:',
+ '🧜🏽' => ':merperson-medium-skin-tone:',
'🤘🏻' => ':metal-tone1:',
'🤘🏼' => ':metal-tone2:',
'🤘🏽' => ':metal-tone3:',
'🤘🏾' => ':metal-tone4:',
'🤘🏿' => ':metal-tone5:',
+ '🎙️' => ':studio-microphone:',
'🖕🏻' => ':middle-finger-tone1:',
'🖕🏼' => ':middle-finger-tone2:',
'🖕🏽' => ':middle-finger-tone3:',
'🖕🏾' => ':middle-finger-tone4:',
'🖕🏿' => ':middle-finger-tone5:',
- '🌤️' => ':mostly-sunny:',
- '🛥️' => ':motor-boat:',
+ '🌤️' => ':white-sun-small-cloud:',
+ '🛥️' => ':motorboat:',
+ '🏍️' => ':racing-motorcycle:',
'🛣️' => ':motorway:',
'⛰️' => ':mountain:',
'🚵🏻' => ':mountain-bicyclist-tone1:',
@@ -965,6 +2296,8 @@
'🚵🏽' => ':mountain-bicyclist-tone3:',
'🚵🏾' => ':mountain-bicyclist-tone4:',
'🚵🏿' => ':mountain-bicyclist-tone5:',
+ '🏔️' => ':snow-capped-mountain:',
+ '🖱️' => ':three-button-mouse:',
'🤶🏻' => ':mrs-claus-tone1:',
'🤶🏼' => ':mrs-claus-tone2:',
'🤶🏽' => ':mrs-claus-tone3:',
@@ -980,8 +2313,14 @@
'💅🏽' => ':nail-care-tone3:',
'💅🏾' => ':nail-care-tone4:',
'💅🏿' => ':nail-care-tone5:',
- '🏞️' => ':national-park:',
+ '🏞️' => ':park:',
+ '🗞️' => ':rolled-up-newspaper:',
'9⃣' => ':nine:',
+ '🥷🏿' => ':ninja-dark-skin-tone:',
+ '🥷🏻' => ':ninja-light-skin-tone:',
+ '🥷🏾' => ':ninja-medium-dark-skin-tone:',
+ '🥷🏼' => ':ninja-medium-light-skin-tone:',
+ '🥷🏽' => ':ninja-medium-skin-tone:',
'🙅🏻' => ':no-good-tone1:',
'🙅🏼' => ':no-good-tone2:',
'🙅🏽' => ':no-good-tone3:',
@@ -992,6 +2331,7 @@
'👃🏽' => ':nose-tone3:',
'👃🏾' => ':nose-tone4:',
'👃🏿' => ':nose-tone5:',
+ '🗒️' => ':spiral-note-pad:',
'🅾️' => ':o2:',
'🛢️' => ':oil-drum:',
'👌🏻' => ':ok-hand-tone1:',
@@ -1004,12 +2344,16 @@
'🙆🏽' => ':ok-woman-tone3:',
'🙆🏾' => ':ok-woman-tone4:',
'🙆🏿' => ':ok-woman-tone5:',
- '🗝️' => ':old-key:',
'👴🏻' => ':older-man-tone1:',
'👴🏼' => ':older-man-tone2:',
'👴🏽' => ':older-man-tone3:',
'👴🏾' => ':older-man-tone4:',
'👴🏿' => ':older-man-tone5:',
+ '🧓🏿' => ':older-person-dark-skin-tone:',
+ '🧓🏻' => ':older-person-light-skin-tone:',
+ '🧓🏾' => ':older-person-medium-dark-skin-tone:',
+ '🧓🏼' => ':older-person-medium-light-skin-tone:',
+ '🧓🏽' => ':older-person-medium-skin-tone:',
'👵🏻' => ':older-woman-tone1:',
'👵🏼' => ':older-woman-tone2:',
'👵🏽' => ':older-woman-tone3:',
@@ -1023,30 +2367,108 @@
'👐🏾' => ':open-hands-tone4:',
'👐🏿' => ':open-hands-tone5:',
'☦️' => ':orthodox-cross:',
+ '🫳🏿' => ':palm-down-hand-dark-skin-tone:',
+ '🫳🏻' => ':palm-down-hand-light-skin-tone:',
+ '🫳🏾' => ':palm-down-hand-medium-dark-skin-tone:',
+ '🫳🏼' => ':palm-down-hand-medium-light-skin-tone:',
+ '🫳🏽' => ':palm-down-hand-medium-skin-tone:',
+ '🫴🏿' => ':palm-up-hand-dark-skin-tone:',
+ '🫴🏻' => ':palm-up-hand-light-skin-tone:',
+ '🫴🏾' => ':palm-up-hand-medium-dark-skin-tone:',
+ '🫴🏼' => ':palm-up-hand-medium-light-skin-tone:',
+ '🫴🏽' => ':palm-up-hand-medium-skin-tone:',
+ '🤲🏿' => ':palms-up-together-dark-skin-tone:',
+ '🤲🏻' => ':palms-up-together-light-skin-tone:',
+ '🤲🏾' => ':palms-up-together-medium-dark-skin-tone:',
+ '🤲🏼' => ':palms-up-together-medium-light-skin-tone:',
+ '🤲🏽' => ':palms-up-together-medium-skin-tone:',
'🅿️' => ':parking:',
'〽️' => ':part-alternation-mark:',
- '🌦️' => ':partly-sunny-rain:',
- '🛳️' => ':passenger-ship:',
+ '🌦️' => ':white-sun-rain-cloud:',
'☮️' => ':peace-symbol:',
'✏️' => ':pencil2:',
+ '🧗🏿' => ':person-climbing-dark-skin-tone:',
+ '🧗🏻' => ':person-climbing-light-skin-tone:',
+ '🧗🏾' => ':person-climbing-medium-dark-skin-tone:',
+ '🧗🏼' => ':person-climbing-medium-light-skin-tone:',
+ '🧗🏽' => ':person-climbing-medium-skin-tone:',
+ '🧑🏿' => ':person-dark-skin-tone:',
+ '🧔🏿' => ':person-dark-skin-tone-beard:',
'🙍🏻' => ':person-frowning-tone1:',
'🙍🏼' => ':person-frowning-tone2:',
'🙍🏽' => ':person-frowning-tone3:',
'🙍🏾' => ':person-frowning-tone4:',
'🙍🏿' => ':person-frowning-tone5:',
- '⛹️' => ':person-with-ball:',
+ '🏌🏿' => ':person-golfing-dark-skin-tone:',
+ '🏌🏻' => ':person-golfing-light-skin-tone:',
+ '🏌🏾' => ':person-golfing-medium-dark-skin-tone:',
+ '🏌🏼' => ':person-golfing-medium-light-skin-tone:',
+ '🏌🏽' => ':person-golfing-medium-skin-tone:',
+ '🛌🏿' => ':person-in-bed-dark-skin-tone:',
+ '🛌🏻' => ':person-in-bed-light-skin-tone:',
+ '🛌🏾' => ':person-in-bed-medium-dark-skin-tone:',
+ '🛌🏼' => ':person-in-bed-medium-light-skin-tone:',
+ '🛌🏽' => ':person-in-bed-medium-skin-tone:',
+ '🧘🏿' => ':person-in-lotus-position-dark-skin-tone:',
+ '🧘🏻' => ':person-in-lotus-position-light-skin-tone:',
+ '🧘🏾' => ':person-in-lotus-position-medium-dark-skin-tone:',
+ '🧘🏼' => ':person-in-lotus-position-medium-light-skin-tone:',
+ '🧘🏽' => ':person-in-lotus-position-medium-skin-tone:',
+ '🧖🏿' => ':person-in-steamy-room-dark-skin-tone:',
+ '🧖🏻' => ':person-in-steamy-room-light-skin-tone:',
+ '🧖🏾' => ':person-in-steamy-room-medium-dark-skin-tone:',
+ '🧖🏼' => ':person-in-steamy-room-medium-light-skin-tone:',
+ '🧖🏽' => ':person-in-steamy-room-medium-skin-tone:',
+ '🕴🏿' => ':person-in-suit-levitating-dark-skin-tone:',
+ '🕴🏻' => ':person-in-suit-levitating-light-skin-tone:',
+ '🕴🏾' => ':person-in-suit-levitating-medium-dark-skin-tone:',
+ '🕴🏼' => ':person-in-suit-levitating-medium-light-skin-tone:',
+ '🕴🏽' => ':person-in-suit-levitating-medium-skin-tone:',
+ '🧎🏿' => ':person-kneeling-dark-skin-tone:',
+ '🧎🏻' => ':person-kneeling-light-skin-tone:',
+ '🧎🏾' => ':person-kneeling-medium-dark-skin-tone:',
+ '🧎🏼' => ':person-kneeling-medium-light-skin-tone:',
+ '🧎🏽' => ':person-kneeling-medium-skin-tone:',
+ '🧑🏻' => ':person-light-skin-tone:',
+ '🧔🏻' => ':person-light-skin-tone-beard:',
+ '🧑🏾' => ':person-medium-dark-skin-tone:',
+ '🧔🏾' => ':person-medium-dark-skin-tone-beard:',
+ '🧑🏼' => ':person-medium-light-skin-tone:',
+ '🧔🏼' => ':person-medium-light-skin-tone-beard:',
+ '🧑🏽' => ':person-medium-skin-tone:',
+ '🧔🏽' => ':person-medium-skin-tone-beard:',
+ '🧍🏿' => ':person-standing-dark-skin-tone:',
+ '🧍🏻' => ':person-standing-light-skin-tone:',
+ '🧍🏾' => ':person-standing-medium-dark-skin-tone:',
+ '🧍🏼' => ':person-standing-medium-light-skin-tone:',
+ '🧍🏽' => ':person-standing-medium-skin-tone:',
'👱🏻' => ':person-with-blond-hair-tone1:',
'👱🏼' => ':person-with-blond-hair-tone2:',
'👱🏽' => ':person-with-blond-hair-tone3:',
'👱🏾' => ':person-with-blond-hair-tone4:',
'👱🏿' => ':person-with-blond-hair-tone5:',
+ '🫅🏿' => ':person-with-crown-dark-skin-tone:',
+ '🫅🏻' => ':person-with-crown-light-skin-tone:',
+ '🫅🏾' => ':person-with-crown-medium-dark-skin-tone:',
+ '🫅🏼' => ':person-with-crown-medium-light-skin-tone:',
+ '🫅🏽' => ':person-with-crown-medium-skin-tone:',
'🙎🏻' => ':person-with-pouting-face-tone1:',
'🙎🏼' => ':person-with-pouting-face-tone2:',
'🙎🏽' => ':person-with-pouting-face-tone3:',
'🙎🏾' => ':person-with-pouting-face-tone4:',
'🙎🏿' => ':person-with-pouting-face-tone5:',
- '☎️' => ':phone:',
+ '☎️' => ':telephone:',
'⛏️' => ':pick:',
+ '🤌🏿' => ':pinched-fingers-dark-skin-tone:',
+ '🤌🏻' => ':pinched-fingers-light-skin-tone:',
+ '🤌🏾' => ':pinched-fingers-medium-dark-skin-tone:',
+ '🤌🏼' => ':pinched-fingers-medium-light-skin-tone:',
+ '🤌🏽' => ':pinched-fingers-medium-skin-tone:',
+ '🤏🏿' => ':pinching-hand-dark-skin-tone:',
+ '🤏🏻' => ':pinching-hand-light-skin-tone:',
+ '🤏🏾' => ':pinching-hand-medium-dark-skin-tone:',
+ '🤏🏼' => ':pinching-hand-medium-light-skin-tone:',
+ '🤏🏽' => ':pinching-hand-medium-skin-tone:',
'👇🏻' => ':point-down-tone1:',
'👇🏼' => ':point-down-tone2:',
'👇🏽' => ':point-down-tone3:',
@@ -1078,6 +2500,16 @@
'🙏🏽' => ':pray-tone3:',
'🙏🏾' => ':pray-tone4:',
'🙏🏿' => ':pray-tone5:',
+ '🫃🏿' => ':pregnant-man-dark-skin-tone:',
+ '🫃🏻' => ':pregnant-man-light-skin-tone:',
+ '🫃🏾' => ':pregnant-man-medium-dark-skin-tone:',
+ '🫃🏼' => ':pregnant-man-medium-light-skin-tone:',
+ '🫃🏽' => ':pregnant-man-medium-skin-tone:',
+ '🫄🏿' => ':pregnant-person-dark-skin-tone:',
+ '🫄🏻' => ':pregnant-person-light-skin-tone:',
+ '🫄🏾' => ':pregnant-person-medium-dark-skin-tone:',
+ '🫄🏼' => ':pregnant-person-medium-light-skin-tone:',
+ '🫄🏽' => ':pregnant-person-medium-skin-tone:',
'🤰🏻' => ':pregnant-woman-tone1:',
'🤰🏼' => ':pregnant-woman-tone2:',
'🤰🏽' => ':pregnant-woman-tone3:',
@@ -1100,10 +2532,8 @@
'👊🏾' => ':punch-tone4:',
'👊🏿' => ':punch-tone5:',
'🏎️' => ':racing-car:',
- '🏍️' => ':racing-motorcycle:',
'☢️' => ':radioactive-sign:',
'🛤️' => ':railway-track:',
- '🌧️' => ':rain-cloud:',
'🤚🏻' => ':raised-back-of-hand-tone1:',
'🤚🏼' => ':raised-back-of-hand-tone2:',
'🤚🏽' => ':raised-back-of-hand-tone3:',
@@ -1114,7 +2544,6 @@
'✋🏽' => ':raised-hand-tone3:',
'✋🏾' => ':raised-hand-tone4:',
'✋🏿' => ':raised-hand-tone5:',
- '🖐️' => ':raised-hand-with-fingers-splayed:',
'🙌🏻' => ':raised-hands-tone1:',
'🙌🏼' => ':raised-hands-tone2:',
'🙌🏽' => ':raised-hands-tone3:',
@@ -1129,13 +2558,21 @@
'®️' => ':registered:',
'☺️' => ':relaxed:',
'🎗️' => ':reminder-ribbon:',
- '🗯️' => ':right-anger-bubble:',
'🤜🏻' => ':right-facing-fist-tone1:',
'🤜🏼' => ':ri
93C6
ght-facing-fist-tone2:',
'🤜🏽' => ':right-facing-fist-tone3:',
'🤜🏾' => ':right-facing-fist-tone4:',
'🤜🏿' => ':right-facing-fist-tone5:',
- '🗞️' => ':rolled-up-newspaper:',
+ '🫱🏿' => ':rightwards-hand-dark-skin-tone:',
+ '🫱🏻' => ':rightwards-hand-light-skin-tone:',
+ '🫱🏾' => ':rightwards-hand-medium-dark-skin-tone:',
+ '🫱🏼' => ':rightwards-hand-medium-light-skin-tone:',
+ '🫱🏽' => ':rightwards-hand-medium-skin-tone:',
+ '🫸🏿' => ':rightwards-pushing-hand-dark-skin-tone:',
+ '🫸🏻' => ':rightwards-pushing-hand-light-skin-tone:',
+ '🫸🏾' => ':rightwards-pushing-hand-medium-dark-skin-tone:',
+ '🫸🏼' => ':rightwards-pushing-hand-medium-light-skin-tone:',
+ '🫸🏽' => ':rightwards-pushing-hand-medium-skin-tone:',
'🏵️' => ':rosette:',
'🚣🏻' => ':rowboat-tone1:',
'🚣🏼' => ':rowboat-tone2:',
@@ -1153,7 +2590,7 @@
'🎅🏽' => ':santa-tone3:',
'🎅🏾' => ':santa-tone4:',
'🎅🏿' => ':santa-tone5:',
- '🛰️' => ':satellite:',
+ '🛰️' => ':satellite-orbital:',
'⚖️' => ':scales:',
'✂️' => ':scissors:',
'㊙️' => ':secret:',
@@ -1174,20 +2611,20 @@
'🤷🏿' => ':shrug-tone5:',
'6⃣' => ':six:',
'⛷️' => ':skier:',
- '☠️' => ':skull-and-crossbones:',
- '🕵️' => ':sleuth-or-spy:',
- '🛩️' => ':small-airplane:',
- '🏔️' => ':snow-capped-mountain:',
- '🌨️' => ':snow-cloud:',
+ '☠️' => ':skull-crossbones:',
+ '🕵️' => ':spy:',
+ '🏂🏿' => ':snowboarder-dark-skin-tone:',
+ '🏂🏻' => ':snowboarder-light-skin-tone:',
+ '🏂🏾' => ':snowboarder-medium-dark-skin-tone:',
+ '🏂🏼' => ':snowboarder-medium-light-skin-tone:',
+ '🏂🏽' => ':snowboarder-medium-skin-tone:',
'❄️' => ':snowflake:',
- '☃️' => ':snowman:',
+ '☃️' => ':snowman2:',
'♠️' => ':spades:',
'❇️' => ':sparkle:',
'🗣️' => ':speaking-head-in-silhouette:',
'🕷️' => ':spider:',
'🕸️' => ':spider-web:',
- '🗓️' => ':spiral-calendar-pad:',
- '🗒️' => ':spiral-note-pad:',
'🕵🏻' => ':spy-tone1:',
'🕵🏼' => ':spy-tone2:',
'🕵🏽' => ':spy-tone3:',
@@ -1197,8 +2634,17 @@
'☪️' => ':star-and-crescent:',
'✡️' => ':star-of-david:',
'⏱️' => ':stopwatch:',
- '🎙️' => ':studio-microphone:',
'☀️' => ':sunny:',
+ '🦸🏿' => ':superhero-dark-skin-tone:',
+ '🦸🏻' => ':superhero-light-skin-tone:',
+ '🦸🏾' => ':superhero-medium-dark-skin-tone:',
+ '🦸🏼' => ':superhero-medium-light-skin-tone:',
+ '🦸🏽' => ':superhero-medium-skin-tone:',
+ '🦹🏿' => ':supervillain-dark-skin-tone:',
+ '🦹🏻' => ':supervillain-light-skin-tone:',
+ '🦹🏾' => ':supervillain-medium-dark-skin-tone:',
+ '🦹🏼' => ':supervillain-medium-light-skin-tone:',
+ '🦹🏽' => ':supervillain-medium-skin-tone:',
'🏄🏻' => ':surfer-tone1:',
'🏄🏼' => ':surfer-tone2:',
'🏄🏽' => ':surfer-tone3:',
@@ -1211,7 +2657,6 @@
'🏊🏿' => ':swimmer-tone5:',
'🌡️' => ':thermometer:',
'3⃣' => ':three:',
- '🖱️' => ':three-button-mouse:',
'👎🏻' => ':thumbsdown-tone1:',
'👎🏼' => ':thumbsdown-tone2:',
'👎🏽' => ':thumbsdown-tone3:',
@@ -1222,22 +2667,25 @@
'👍🏽' => ':thumbsup-tone3:',
'👍🏾' => ':thumbsup-tone4:',
'👍🏿' => ':thumbsup-tone5:',
- '⛈️' => ':thunder-cloud-and-rain:',
+ '⛈️' => ':thunder-cloud-rain:',
'⏲️' => ':timer-clock:',
'™️' => ':tm:',
- '🌪️' => ':tornado:',
'🖲️' => ':trackball:',
'⚧️' => ':transgender-symbol:',
'2⃣' => ':two:',
'🈷️' => ':u6708:',
- '☂️' => ':umbrella:',
- '⛱️' => ':umbrella-on-ground:',
+ '☂️' => ':umbrella2:',
'✌️' => ':v:',
'✌🏻' => ':v-tone1:',
'✌🏼' => ':v-tone2:',
'✌🏽' => ':v-tone3:',
'✌🏾' => ':v-tone4:',
'✌🏿' => ':v-tone5:',
+ '🧛🏿' => ':vampire-dark-skin-tone:',
+ '🧛🏻' => ':vampire-light-skin-tone:',
+ '🧛🏾' => ':vampire-medium-dark-skin-tone:',
+ '🧛🏼' => ':vampire-medium-light-skin-tone:',
+ '🧛🏽' => ':vampire-medium-skin-tone:',
'🖖🏻' => ':vulcan-tone1:',
'🖖🏼' => ':vulcan-tone2:',
'🖖🏽' => ':vulcan-tone3:',
@@ -1260,25 +2708,31 @@
'👋🏽' => ':wave-tone3:',
'👋🏾' => ':wave-tone4:',
'👋🏿' => ':wave-tone5:',
- '🏳️' => ':waving-white-flag:',
'〰️' => ':wavy-dash:',
- '🏋️' => ':weight-lifter:',
'☸️' => ':wheel-of-dharma:',
- '☹️' => ':white-frowning-face:',
'◻️' => ':white-medium-square:',
'▫️' => ':white-small-square:',
'🌬️' => ':wind-blowing-face:',
+ '👫🏿' => ':woman-and-man-holding-hands-dark-skin-tone:',
+ '👫🏻' => ':woman-and-man-holding-hands-light-skin-tone:',
+ '👫🏾' => ':woman-and-man-holding-hands-medium-dark-skin-tone:',
+ '👫🏼' => ':woman-and-man-holding-hands-medium-light-skin-tone:',
+ '👫🏽' => ':woman-and-man-holding-hands-medium-skin-tone:',
'👩🏻' => ':woman-tone1:',
'👩🏼' => ':woman-tone2:',
'👩🏽' => ':woman-tone3:',
'👩🏾' => ':woman-tone4:',
'👩🏿' => ':woman-tone5:',
- '🗺️' => ':world-map:',
- '🤼🏻' => ':wrestlers-tone1:',
- '🤼🏼' => ':wrestlers-tone2:',
- '🤼🏽' => ':wrestlers-tone3:',
- '🤼🏾' => ':wrestlers-tone4:',
- '🤼🏿' => ':wrestlers-tone5:',
+ '🧕🏿' => ':woman-with-headscarf-dark-skin-tone:',
+ '🧕🏻' => ':woman-with-headscarf-light-skin-tone:',
+ '🧕🏾' => ':woman-with-headscarf-medium-dark-skin-tone:',
+ '🧕🏼' => ':woman-with-headscarf-medium-light-skin-tone:',
+ '🧕🏽' => ':woman-with-headscarf-medium-skin-tone:',
+ '👭🏿' => ':women-holding-hands-dark-skin-tone:',
+ '👭🏻' => ':women-holding-hands-light-skin-tone:',
+ '👭🏾' => ':women-holding-hands-medium-dark-skin-tone:',
+ '👭🏼' => ':women-holding-hands-medium-light-skin-tone:',
+ '👭🏽' => ':women-holding-hands-medium-skin-tone:',
'✍️' => ':writing-hand:',
'✍🏻' => ':writing-hand-tone1:',
'✍🏼' => ':writing-hand-tone2:',
@@ -1303,12 +2757,11 @@
'🉑' => ':accept:',
'🪗' => ':accordion:',
'🩹' => ':adhesive-bandage:',
- '🧑' => ':adult:',
+ '🧑' => ':person:',
'🚡' => ':aerial-tramway:',
'✈' => ':airplane:',
'🛬' => ':flight-arrival:',
'🛫' => ':flight-departure:',
- '🛩' => ':small-airplane:',
'⏰' => ':alarm-clock:',
'⚗' => ':alembic:',
'👽' => ':alien:',
@@ -1318,7 +2771,6 @@
'⚓' => ':anchor:',
'👼' => ':angel:',
'💢' => ':anger:',
- '🗯' => ':right-anger-bubble:',
'😠' => ':angry:',
'😧' => ':anguished:',
'🐜' => ':ant:',
@@ -1347,7 +2799,7 @@
'🔄' => ':arrows-counterclockwise:',
'🎨' => ':art:',
'🚛' => ':articulated-lorry:',
- '🛰' => ':satellite-orbital:',
+ '🛰' => ':artificial-satellite:',
'😲' => ':astonished:',
'👟' => ':athletic-shoe:',
'🏧' => ':atm:',
@@ -1367,7 +2819,8 @@
'🥯' => ':bagel:',
'🛄' => ':baggage-claim:',
'🥖' => ':french-bread:',
- '⚖' => ':scales:',
+ '⚖' => ':balance-scale:',
+ '🦲' => ':bald:',
'🩰' => ':ballet-shoes:',
'🎈' => ':balloon:',
'🗳' => ':ballot-box:',
@@ -1382,7 +2835,6 @@
'⚾' => ':baseball:',
'🧺' => ':basket:',
'🏀' => ':basketball:',
- '⛹' => ':bouncing-ball-person:',
'🦇' => ':bat:',
'🛀' => ':bath:',
'🛁' => ':bathtub:',
@@ -1390,7 +2842,7 @@
'🏖' => ':beach-umbrella:',
'🫘' => ':beans:',
'🐻' => ':bear:',
- '🧔' => ':bearded-person:',
+ '🧔' => ':person-beard:',
'🦫' => ':beaver:',
'🛏' => ':bed:',
'🐝' => ':honeybee:',
@@ -1442,6 +2894,7 @@
'💥' => ':collision:',
'🪃' => ':boomerang:',
'👢' => ':boot:',
+ '⛹' => ':bouncing-ball-person:',
'💐' => ':bouquet:',
'🙇' => ':bow:',
'🏹' => ':bow-and-arrow:',
@@ -1467,13 +2920,13 @@
'🫧' => ':bubbles:',
'🪣' => ':bucket:',
'🐛' => ':bug:',
- '🏗' => ':construction-site:',
+ '🏗' => ':building-construction:',
'💡' => ':bulb:',
'🚅' => ':bullettrain-front:',
'🚄' => ':bullettrain-side:',
'🌯' => ':burrito:',
'🚌' => ':bus:',
- '🕴' => ':levitate:',
+ '🕴' => ':business-suit-levitating:',
'🚏' => ':busstop:',
'👤' => ':bust-in-silhouette:',
'👥' => ':busts-in-silhouette:',
@@ -1482,7 +2935,6 @@
'🌵' => ':cactus:',
'🍰' => ':cake:',
'📆' => ':calendar:',
- '🗓' => ':spiral-calendar:',
'🤙' => ':call-me-hand:',
'📲' => ':calling:',
'🐫' => ':camel:',
@@ -1499,7 +2951,7 @@
'🚗' => ':red-car:',
'🗃' => ':card-file-box:',
'📇' => ':card-index:',
- '🗂' => ':dividers:',
+ '🗂' => ':card-index-dividers:',
'🎠' => ':carousel-horse:',
'🪚' => ':carpentry-saw:',
'🥕' => ':carrot:',
@@ -1534,13 +2986,12 @@
'🌇' => ':city-sunrise:',
'🏙' => ':cityscape:',
'🆑' => ':cl:',
- '🗜' => ':compression:',
+ '🗜' => ':clamp:',
'👏' => ':clap:',
'🎬' => ':clapper:',
'🏛' => ':classical-building:',
'🧗' => ':person-climbing:',
'📋' => ':clipboard:',
- '🕰' => ':mantelpiece-clock:',
'🕐' => ':clock1:',
'🕑' => ':clock2:',
'🕒' => ':clock3:',
@@ -1570,10 +3021,9 @@
'🌂' => ':closed-umbrella:',
'☁' => ':cloud:',
'🌩' => ':cloud-with-lightning:',
+ '⛈' => ':cloud-with-lightning-and-rain:',
'🌧' => ':cloud-with-rain:',
'🌨' => ':cloud-with-snow:',
- '🌪' => ':tornado:',
- '⛈' => ':thunder-cloud-rain:',
'🤡' => ':clown-face:',
'♣' => ':clubs:',
'🧥' => ':coat:',
@@ -1588,7 +3038,7 @@
'☄' => ':comet:',
'🧭' => ':compass:',
'💻' => ':computer:',
- '🖱' => ':mouse-three-button:',
+ '🖱' => ':computer-mouse:',
'🎊' => ':confetti-ball:',
'😖' => ':confounded:',
'😕' => ':confused:',
@@ -1619,12 +3069,10 @@
'🏏' => ':cricket-game:',
'🐊' => ':crocodile:',
'🥐' => ':croissant:',
- '✝' => ':latin-cross:',
'🤞' => ':fingers-crossed:',
'🎌' => ':crossed-flags:',
'⚔' => ':crossed-swords:',
'👑' => ':crown:',
- '🛳' => ':passenger-ship:',
'🩼' => ':crutch:',
'😢' => ':cry:',
'😿' => ':crying-cat-face:',
@@ -1634,6 +3082,7 @@
'🧁' => ':cupcake:',
'💘' => ':cupid:',
'🥌' => ':curling-stone:',
+ '🦱' => ':curly-hair:',
'➰' => ':curly-loop:',
'💱' => ':currency-exchange:',
'🍛' => ':curry:',
@@ -1654,11 +3103,11 @@
'🌳' => ':deciduous-tree:',
'🦌' => ':deer:',
'🏬' => ':department-store:',
- '🏚' => ':house-abandoned:',
+ '🏚' => ':derelict-house:',
'🏜' => ':desert:',
- '🏝' => ':island:',
+ '🏝' => ':desert-island:',
'🖥' => ':desktop-computer:',
- '🕵' => ':spy:',
+ '🕵' => ':detective:',
'💠' => ':diamond-shape-with-a-dot-inside:',
'♦' => ':diamonds:',
'😞' => ':disappointed:',
@@ -1753,8 +3202,8 @@
'🏑' => ':field-hockey-stick-and-ball:',
'🗄' => ':file-cabinet:',
'📁' => ':file-folder:',
+ '📽' => ':film-projector:',
'🎞' => ':film-strip:',
- '📽' => ':projector:',
'🔥' => ':fire:',
'🚒' => ':fire-engine:',
'🧯' => ':fire-extinguisher:',
@@ -1768,7 +3217,6 @@
'✊' => ':fist-raised:',
'🤛' => ':left-facing-fist:',
'🤜' => ':right-facing-fist:',
- '🏳' => ':white-flag:',
'🎏' => ':flags:',
'🦩' => ':flamingo:',
'🔦' => ':flashlight:',
@@ -1790,10 +3238,9 @@
'🏈' => ':football:',
'👣' => ':footprints:',
'🍴' => ':fork-and-knife:',
- '🍽' => ':plate-with-cutlery:',
'🥠' => ':fortune-cookie:',
'⛲' => ':fountain:',
- '🖋' => ':pen-fountain:',
+ '🖋' => ':fountain-pen:',
'🍀' => ':four-leaf-clover:',
'🦊' => ':fox-face:',
'🖼' => ':framed-picture:',
@@ -1802,13 +3249,13 @@
'🍟' => ':fries:',
'🐸' => ':frog:',
'😦' => ':frowning:',
- '☹' => ':frowning2:',
+ '☹' => ':frowning-face:',
'🙍' => ':person-frowning:',
'🖕' => ':middle-finger:',
'⛽' => ':fuelpump:',
'🌕' => ':full-moon:',
'🌝' => ':full-moon-with-face:',
- '⚱' => ':urn:',
+ '⚱' => ':funeral-urn:',
'🎲' => ':game-die:',
'🧄' => ':garlic:',
'⚙' => ':gear:',
@@ -1852,12 +3299,11 @@
'💇' => ':haircut:',
'🍔' => ':hamburger:',
'🔨' => ':hammer:',
- '⚒' => ':hammer-pick:',
- '🛠' => ':tools:',
+ '⚒' => ':hammer-and-pick:',
+ '🛠' => ':hammer-and-wrench:',
'🪬' => ':hamsa:',
'🐹' => ':hamster:',
'✋' => ':raised-hand:',
- '🖐' => ':raised-hand-with-fingers-splayed:',
'🫰' => ':hand-with-index-finger-and-thumb-crossed:',
'👜' => ':handbag:',
'🤾' => ':handball-person:',
@@ -1870,7 +3316,6 @@
'🙉' => ':hear-no-evil:',
'❤' => ':heart:',
'💟' => ':heart-decoration:',
- '❣' => ':heavy-heart-exclamation:',
'😍' => ':heart-eyes:',
'😻' => ':heart-eyes-cat:',
'🫶' => ':heart-hands:',
@@ -1881,12 +3326,12 @@
'➗' => ':heavy-division-sign:',
'💲' => ':heavy-dollar-sign:',
'🟰' => ':heavy-equals-sign:',
+ '❣' => ':heavy-heart-exclamation:',
'➖' => ':heavy-minus-sign:',
'✖' => ':heavy-multiplication-x:',
'➕' => ':heavy-plus-sign:',
'🦔' => ':hedgehog:',
'🚁' => ':helicopter:',
- '⛑' => ':rescue-worker-helmet:',
'🌿' => ':herb:',
'🌺' => ':hibiscus:',
'🔆' => ':high-brightness:',
@@ -1897,7 +3342,6 @@
'🔪' => ':knife:',
'🏒' => ':ice-hockey-stick-and-puck:',
'🕳' => ':hole:',
- '🏘' => ':houses:',
'🍯' => ':honey-pot:',
'🪝' => ':hook:',
'🐴' => ':horse:',
@@ -1912,13 +3356,14 @@
'⏳' => ':hourglass-flowing-sand:',
'🏠' => ':house:',
'🏡' => ':house-with-garden:',
+ '🏘' => ':houses:',
'🤗' => ':hugs:',
'😯' => ':hushed:',
'🛖' => ':hut:',
'🪻' => ':hyacinth:',
'🤟' => ':love-you-gesture:',
- '🍨' => ':ice-cream:',
'🧊' => ':ice-cube:',
+ '🍨' => ':ice-cream:',
'⛸' => ':ice-skate:',
'🍦' => ':icecream:',
'🆔' => ':id:',
@@ -1943,7 +3388,7 @@
'🫙' => ':jar:',
'👖' => ':jeans:',
'🪼' => ':jellyfish:',
- '🧩' => ':jigsaw:',
+ '🧩' => ':puzzle-piece:',
'😂' => ':joy:',
'😹' => ':joy-cat:',
'🕹' => ':joystick:',
@@ -1951,7 +3396,6 @@
'🕋' => ':kaaba:',
'🦘' => ':kangaroo:',
'🔑' => ':key:',
- '🗝' => ':old-key:',
'⌨' => ':keyboard:',
'🔟' => ':ten:',
'🪯' => ':khanda:',
@@ -1965,7 +3409,7 @@
'😙' => ':kissing-smiling-eyes:',
'🪁' => ':kite:',
'🥝' => ':kiwifruit:',
- '🧎' => ':kneeling-person:',
+ '🧎' => ':person-kneeling:',
'🪢' => ':knot:',
'🐨' => ':koala:',
'🈁' => ':koko:',
@@ -1986,13 +3430,14 @@
'🟨' => ':yellow-square:',
'🌗' => ':last-quarter-moon:',
'🌜' => ':last-quarter-moon-with-face:',
+ '✝' => ':latin-cross:',
'😆' => ':satisfied:',
'🥬' => ':leafy-green:',
'🍃' => ':leaves:',
'📒' => ':ledger:',
'🛅' => ':left-luggage:',
'↔' => ':left-right-arrow:',
- '🗨' => ':speech-left:',
+ '🗨' => ':left-speech-bubble:',
'↩' => ':leftwards-arrow-with-hook:',
'🫲' => ':leftwards-hand:',
'🫷' => ':leftwards-pushing-hand:',
@@ -2002,7 +3447,6 @@
'🐆' => ':leopard:',
'🎚' => ':level-slider:',
'♎' => ':libra:',
- '🏋' => ':weight-lifting:',
'🩵' => ':light-blue-heart:',
'🚈' => ':light-rail:',
'🔗' => ':link:',
@@ -2044,14 +3488,13 @@
'🦣' => ':mammoth:',
'👨' => ':man:',
'🕺' => ':man-dancing:',
- '🤵' => ':person-in-tuxedo:',
'👲' => ':man-with-gua-pi-mao:',
'👳' => ':person-with-turban:',
'🍊' => ':tangerine:',
'🥭' => ':mango:',
'👞' => ':shoe:',
+ '🕰' => ':mantelpiece-clock:',
'🦽' => ':manual-wheelchair:',
- '🗺' => ':world-map:',
'🍁' => ':maple-leaf:',
'🪇' => ':maracas:',
'🥋' => ':martial-arts-uniform:',
@@ -2062,7 +3505,7 @@
'🦾' => ':mechanical-arm:',
'🦿' => ':mechanical-leg:',
'🏅' => ':sports-medal:',
- '🎖' => ':military-medal:',
+ '🎖' => ':medal-military:',
'⚕' => ':medical-symbol:',
'📣' => ':mega:',
'🍈' => ':melon:',
@@ -2075,7 +3518,6 @@
'🚇' => ':metro:',
'🦠' => ':microbe:',
'🎤' => ':microphone:',
- '🎙' => ':studio-microphone:',
'🔬' => ':microscope:',
'🪖' => ':military-helmet:',
'🌌' => ':milky-way:',
@@ -2096,7 +3538,7 @@
'🎓' => ':mortar-board:',
'🕌' => ':mosque:',
'🦟' => ':mosquito:',
- '🛥' => ':motorboat:',
+ '🛥' => ':motor-boat:',
'🛵' => ':motor-scooter:',
'🏍' => ':motorcycle:',
'🦼' => ':motorized-wheelchair:',
@@ -2121,7 +3563,7 @@
'🔇' => ':mute:',
'💅' => ':nail-care:',
'📛' => ':name-badge:',
- '🏞' => ':park:',
+ '🏞' => ':national-park:',
'🤢' => ':nauseated-face:',
'🧿' => ':nazar-amulet:',
'👔' => ':necktie:',
@@ -2134,8 +3576,8 @@
'🌑' => ':new-moon:',
'🌚' => ':new-moon-with-face:',
'📰' => ':newspaper:',
- '🗞' => ':newspaper2:',
- '⏭' => ':track-next:',
+ '🗞' => ':newspaper-roll:',
+ '⏭' => ':next-track-button:',
'🆖' => ':ng:',
'🌃' => ':night-with-stars:',
'🥷' => ':ninja:',
@@ -2152,7 +3594,6 @@
'👃' => ':nose:',
'📓' => ':notebook:',
'📔' => ':notebook-with-decorative-cover:',
- '🗒' => ':spiral-notepad:',
'🎶' => ':notes:',
'🔩' => ':nut-and-bolt:',
'⭕' => ':o:',
@@ -2166,11 +3607,12 @@
'🆗' => ':ok:',
'👌' => ':ok-hand:',
'🙆' => ':ok-woman:',
- '🧓' => ':older-adult:',
+ '🗝' => ':old-key:',
+ '🧓' => ':older-person:',
'👴' => ':older-man:',
'👵' => ':older-woman:',
'🫒' => ':olive:',
- '🕉' => ':om-symbol:',
+ '🕉' => ':om:',
'🔛' => ':on:',
'🚘' => ':oncoming-automobile:',
'🚍' => ':oncoming-bus:',
@@ -2181,7 +3623,7 @@
'📂' => ':open-file-folder:',
'👐' => ':open-hands:',
'😮' => ':open-mouth:',
- '☂' => ':umbrella2:',
+ '☂' => ':open-umbrella:',
'⛎' => ':ophiuchus:',
'📙' => ':orange-book:',
'🧡' => ':orange-heart:',
@@ -2212,6 +3654,7 @@
'〽' => ':part-alternation-mark:',
'⛅' => ':partly-sunny:',
'🥳' => ':partying-face:',
+ '🛳' => ':passenger-ship:',
'🛂' => ':passport-control:',
'⏸' => ':pause-button:',
'🫛' => ':pea-pod:',
@@ -2220,7 +3663,7 @@
'🦚' => ':peacock:',
'🥜' => ':peanuts:',
'🍐' => ':pear:',
- '🖊' => ':pen-ballpoint:',
+ '🖊' => ':pen:',
'✏' => ':pencil2:',
'🐧' => ':penguin:',
'😔' => ':pensive:',
@@ -2228,6 +3671,8 @@
'🎭' => ':performing-arts:',
'😣' => ':persevere:',
'🧖' => ':sauna-person:',
+ '🤵' => ':person-in-tuxedo:',
+ '🧍' => ':standing-person:',
'🫅' => ':person-with-crown:',
'🧕' => ':woman-with-headscarf:',
'🙎' => ':pouting-face:',
@@ -2250,7 +3695,8 @@
'🍕' => ':pizza:',
'🪧' => ':placard:',
'🛐' => ':place-of-worship:',
- '⏯' => ':play-pause:',
+ '🍽' => ':plate-with-cutlery:',
+ '⏯' => ':play-or-pause-button:',
'🛝' => ':playground-slide:',
'🥺' => ':pleading-face:',
'🪠' => ':plunger:',
@@ -2280,11 +3726,11 @@
'🫄' => ':pregnant-person:',
'🤰' => ':pregnant-woman:',
'🥨' => ':pretzel:',
- '⏮' => ':track-previous:',
+ '⏮' => ':previous-track-button:',
'🤴' => ':prince:',
'👸' => ':princess:',
'🖨' => ':printer:',
- '🦯' => ':probing-cane:',
+ '🦯' => ':white-cane:',
'💜' => ':purple-heart:',
'👛' => ':purse:',
'📌' => ':pushpin:',
@@ -2293,8 +3739,8 @@
'🐰' => ':rabbit:',
'🐇' => ':rabbit2:',
'🦝' => ':raccoon:',
- '🏎' => ':racing-car:',
'🐎' => ':racehorse:',
+ '🏎' => ':racing-car:',
'📻' => ':radio:',
'🔘' => ':radio-button:',
'☢' => ':radioactive:',
@@ -2302,6 +3748,7 @@
'🛤' => ':railway-track:',
'🌈' => ':rainbow:',
'🤚' => ':raised-back-of-hand:',
+ '🖐' => ':raised-hand-with-fingers-splayed:',
'🙌' => ':raised-hands:',
'🙋' => ':raising-hand:',
'🐏' => ':ram:',
@@ -2313,12 +3760,14 @@
'♻' => ':recycle:',
'🔴' => ':red-circle:',
'🧧' => ':red-envelope:',
+ '🦰' => ':red-hair:',
'®' => ':registered:',
'☺' => ':relaxed:',
'😌' => ':relieved:',
'🎗' => ':reminder-ribbon:',
'🔁' => ':repeat:',
'🔂' => ':repeat-one:',
+ '⛑' => ':rescue-worker-helmet:',
'🚻' => ':restroom:',
'💞' => ':revolving-hearts:',
'⏪' => ':rewind:',
@@ -2328,6 +3777,7 @@
'🍙' => ':rice-ball:',
'🍘' => ':rice-cracker:',
'🎑' => ':rice-scene:',
+ '🗯' => ':right-anger-bubble:',
'🫱' => ':rightwards-hand:',
'🫸' => ':rightwards-pushing-hand:',
'💍' => ':ring:',
@@ -2391,7 +3841,7 @@
'⛩' => ':shinto-shrine:',
'🚢' => ':ship:',
'👕' => ':tshirt:',
- '🛍' => ':shopping-bags:',
+ '🛍' => ':shopping:',
'🛒' => ':shopping-trolley:',
'🩳' => ':shorts:',
'🚿' => ':shower:',
@@ -2409,7 +3859,7 @@
'🏾' => ':tone4:',
'🏿' => ':tone5:',
'💀' => ':skull:',
- '☠' => ':skull-crossbones:',
+ '☠' => ':skull-and-crossbones:',
'🦨' => ':skunk:',
'🛷' => ':sled:',
'😴' => ':sleeping:',
@@ -2419,6 +3869,7 @@
'🙂' => ':slightly-smiling-face:',
'🎰' => ':slot-machine:',
'🦥' => ':sloth:',
+ '🛩' => ':small-airplane:',
'🔹' => ':small-blue-diamond:',
'🔸' => ':small-orange-diamond:',
'🔺' => ':small-red-triangle:',
@@ -2439,7 +3890,7 @@
'🏂' => ':snowboarder:',
'❄' => ':snowflake:',
'⛄' => ':snowman-without-snow:',
- '☃' => ':snowman2:',
+ '☃' => ':snowman-with-snow:',
'🧼' => ':soap:',
'😭' => ':sob:',
'⚽' => ':soccer:',
@@ -2462,12 +3913,13 @@
'🚤' => ':speedboat:',
'🕷' => ':spider:',
'🕸' => ':spider-web:',
+ '🗓' => ':spiral-calendar:',
+ '🗒' => ':spiral-notepad:',
'🖖' => ':vulcan-salute:',
'🧽' => ':sponge:',
'🥄' => ':spoon:',
'🦑' => ':squid:',
'🏟' => ':stadium:',
- '🧍' => ':standing-person:',
'⭐' => ':star:',
'☪' => ':star-and-crescent:',
'✡' => ':star-of-david:',
@@ -2486,10 +3938,11 @@
'😛' => ':stuck-out-tongue:',
'😝' => ':stuck-out-tongue-closed-eyes:',
'😜' => ':stuck-out-tongue-winking-eye:',
+ '🎙' => ':studio-microphone:',
'🥙' => ':stuffed-flatbread:',
- '🌥' => ':white-sun-cloud:',
- '🌦' => ':white-sun-rain-cloud:',
- '🌤' => ':white-sun-small-cloud:',
+ '🌥' => ':sun-behind-large-cloud:',
+ '🌦' => ':sun-behind-rain-cloud:',
+ '🌤' => ':sun-behind-small-cloud:',
'🌞' => ':sun-with-face:',
'🌻' => ':sunflower:',
'😎' => ':sunglasses:',
@@ -2547,6 +4000,7 @@
'🪥' => ':toothbrush:',
'🔝' => ':top:',
'🎩' => ':tophat:',
+ '🌪' => ':tornado:',
'🖲' => ':trackball:',
'🚜' => ':tractor:',
'🚥' => ':traffic-light:',
@@ -2620,6 +4074,7 @@
'🚾' => ':wc:',
'😩' => ':weary:',
'💒' => ':wedding:',
+ '🏋' => ':weight-lifting:',
'🐳' => ':whale:',
'🐋' => ':whale2:',
'🛞' => ':wheel:',
@@ -2627,7 +4082,9 @@
'♿' => ':wheelchair:',
'✅' => ':white-check-mark:',
'⚪' => ':white-circle:',
+ '🏳' => ':white-flag:',
'💮' => ':white-flower:',
+ '🦳' => ':white-hair:',
'🤍' => ':white-heart:',
'⬜' => ':white-large-square:',
'◽' => ':white-medium-small-square:',
@@ -2635,8 +4092,8 @@
'▫' => ':white-small-square:',
'🔳' => ':white-square-button:',
'🥀' => ':wilted-rose:',
- '🌬' => ':wind-face:',
'🎐' => ':wind-chime:',
+ '🌬' => ':wind-face:',
'🪟' => ':window:',
'🍷' => ':wine-glass:',
'🪽' => ':wing:',
@@ -2649,6 +4106,7 @@
'🚺' => ':womens:',
'🪵' => ':wood:',
'🥴' => ':woozy-face:',
+ '🗺' => ':world-map:',
'🪱' => ':worm:',
'😟' => ':worried:',
'🔧' => ':wrench:',
diff --git a/src/Symfony/Component/Emoji/Resources/data/gitlab-emoji.php b/src/Symfony/Component/Emoji/Resources/data/gitlab-emoji.php
index 972f40abb9d13..3ef1c90e235f1 100644
--- a/src/Symfony/Component/Emoji/Resources/data/gitlab-emoji.php
+++ b/src/Symfony/Component/Emoji/Resources/data/gitlab-emoji.php
@@ -1,207 +1,37 @@
'👍',
- ':-1:' => '👎',
- ':admission_tickets:' => '🎟',
- ':anguished:' => '😧',
- ':archery:' => '🏹',
- ':atom_symbol:' => '⚛',
- ':back_of_hand:' => '🤚',
- ':baguette_bread:' => '🥖',
- ':ballot_box_with_ballot:' => '🗳',
- ':beach_with_umbrella:' => '🏖',
- ':bellhop_bell:' => '🛎',
- ':biohazard_sign:' => '☣',
- ':bottle_with_popping_cork:' => '🍾',
- ':boxing_gloves:' => '🥊',
- ':building_construction:' => '🏗',
- ':call_me_hand:' => '🤙',
- ':card_file_box:' => '🗃',
- ':card_index_dividers:' => '🗂',
- ':cheese_wedge:' => '🧀',
- ':city_sunrise:' => '🌇',
- ':clinking_glass:' => '🥂',
- ':cloud_with_lightning:' => '🌩',
- ':cloud_with_rain:' => '🌧',
- ':cloud_with_snow:' => '🌨',
- ':cloud_with_tornado:' => '🌪',
- ':clown_face:' => '🤡',
- ':couch_and_lamp:' => '🛋',
- ':cricket_bat_ball:' => '🏏',
- ':dagger_knife:' => '🗡',
- ':derelict_house_building:' => '🏚',
- ':desert_island:' => '🏝',
- ':desktop_computer:' => '🖥',
- ':double_vertical_bar:' => '⏸',
- ':dove_of_peace:' => '🕊',
- ':drool:' => '🤤',
- ':drum_with_drumsticks:' => '🥁',
- ':eject_symbol:' => '⏏',
- ':email:' => '📧',
- ':expecting_woman:' => '🤰',
- ':face_with_cowboy_hat:' => '🤠',
- ':face_with_head_bandage:' => '🤕',
- ':face_with_rolling_eyes:' => '🙄',
- ':face_with_thermometer:' => '🤒',
- ':facepalm:' => '🤦',
- ':fencing:' => '🤺',
- ':film_projector:' => '📽',
- ':first_place_medal:' => '🥇',
- ':flame:' => '🔥',
- ':fork_and_knife_with_plate:' => '🍽',
- ':fox_face:' => '🦊',
- ':frame_with_picture:' => '🖼',
- ':funeral_urn:' => '⚱',
- ':glass_of_milk:' => '🥛',
- ':goal_net:' => '🥅',
- ':grandma:' => '👵',
- ':green_salad:' => '🥗',
- ':hammer_and_pick:' => '⚒',
- ':hammer_and_wrench:' => '🛠',
- ':hand_with_index_and_middle_finger_crossed:' => '🤞',
- ':hankey:' => '💩',
- ':heavy_heart_exclamation_mark_ornament:' => '❣',
- ':helmet_with_white_cross:' => '⛑',
- ':hot_dog:' => '🌭',
- ':house_buildings:' => '🏘',
- ':hugging_face:' => '🤗',
- ':juggler:' => '🤹',
- ':karate_uniform:' => '🥋',
- ':kayak:' => '🛶',
- ':kiwifruit:' => '🥝',
- ':latin_cross:' => '✝',
- ':left_fist:' => '🤛',
- ':left_speech_bubble:' => '🗨',
- ':liar:' => '🤥',
- ':linked_paperclips:' => '🖇',
- ':lion:' => '🦁',
- ':lower_left_ballpoint_pen:' => '🖊',
- ':lower_left_crayon:' => '🖍',
- ':lower_left_fountain_pen:' => '🖋',
- ':lower_left_paintbrush:' => '🖌',
- ':male_dancer:' => '🕺',
- ':man_in_business_suit_levitating:' => '🕴',
- ':mantlepiece_clock:' => '🕰',
- ':memo:' => '📝',
- ':money_mouth_face:' => '🤑',
- ':mother_christmas:' => '🤶',
- ':motorbike:' => '🛵',
- ':national_park:' => '🏞',
- ':nerd_face:' => '🤓',
- ':next_track:' => '⏭',
- ':oil_drum:' => '🛢',
- ':old_key:' => '🗝',
- ':paella:' => '🥘',
- ':passenger_ship:' => '🛳',
- ':peace_symbol:' => '☮',
- ':person_doing_cartwheel:' => '🤸',
- ':person_with_ball:' => '⛹',
- ':poo:' => '💩',
- ':previous_track:' => '⏮',
- ':racing_car:' => '🏎',
- ':racing_motorcycle:' => '🏍',
- ':radioactive_sign:' => '☢',
- ':railroad_track:' => '🛤',
- ':raised_hand_with_fingers_splayed:' => '🖐',
- ':raised_hand_with_part_between_middle_and_ring_fingers:' => '🖖',
- ':reversed_hand_with_middle_finger_extended:' => '🖕',
- ':rhinoceros:' => '🦏',
- ':right_anger_bubble:' => '🗯',
- ':right_fist:' => '🤜',
- ':robot_face:' => '🤖',
- ':rolled_up_newspaper:' => '🗞',
- ':rolling_on_the_floor_laughing:' => '🤣',
- ':satisfied:' => '😆',
- ':second_place_medal:' => '🥈',
- ':shaking_hands:' => '🤝',
- ':shelled_peanut:' => '🥜',
- ':shit:' => '💩',
- ':shopping_trolley:' => '🛒',
- ':sick:' => '🤢',
- ':sign_of_the_horns:' => '🤘',
- ':skeleton:' => '💀',
- ':skull_and_crossbones:' => '☠',
- ':sleuth_or_spy:' => '🕵',
- ':slightly_frowning_face:' => '🙁',
- ':slightly_smiling_face:' => '🙂',
- ':small_airplane:' => '🛩',
- ':sneeze:' => '🤧',
- ':snow_capped_mountain:' => '🏔',
- ':speaking_head_in_silhouette:' => '🗣',
- ':spiral_calendar_pad:' => '🗓',
- ':spiral_note_pad:' => '🗒',
- ':sports_medal:' => '🏅',
- ':stop_sign:' => '🛑',
- ':studio_microphone:' => '🎙',
- ':stuffed_pita:' => '🥙',
- ':table_tennis:' => '🏓',
- ':thinking_face:' => '🤔',
- ':third_place_medal:' => '🥉',
- ':three_button_mouse:' => '🖱',
- ':thunder_cloud_and_rain:' => '⛈',
- ':timer_clock:' => '⏲',
- ':umbrella_on_ground:' => '⛱',
- ':unicorn_face:' => '🦄',
- ':upside_down_face:' => '🙃',
- ':waving_black_flag:' => '🏴',
- ':waving_white_flag:' => '🏳',
- ':weight_lifter:' => '🏋',
- ':whisky:' => '🥃',
- ':white_frowning_face:' => '☹',
- ':white_sun_behind_cloud:' => '🌥',
- ':white_sun_behind_cloud_with_rain:' => '🌦',
- ':white_sun_with_small_cloud:' => '🌤',
- ':wilted_flower:' => '🥀',
- ':world_map:' => '🗺',
- ':worship_symbol:' => '🛐',
- ':wrestling:' => '🤼',
- ':zipper_mouth_face:' => '🤐',
':8ball:' => '🎱',
':100:' => '💯',
':1234:' => '🔢',
- ':a:' => '🅰',
':ab:' => '🆎',
+ ':abacus:' => '🧮',
':abc:' => '🔤',
':abcd:' => '🔡',
':accept:' => '🉑',
+ ':accordion:' => '🪗',
+ ':adhesive_bandage:' => '🩹',
':aerial_tramway:' => '🚡',
- ':airplane:' => '✈',
':airplane_arriving:' => '🛬',
':airplane_departure:' => '🛫',
- ':airplane_small:' => '🛩',
':alarm_clock:' => '⏰',
- ':alembic:' => '⚗',
':alien:' => '👽',
':ambulance:' => '🚑',
':amphora:' => '🏺',
+ ':anatomical_heart:' => '🫀',
':anchor:' => '⚓',
':angel:' => '👼',
':anger:' => '💢',
- ':anger_right:' => '🗯',
':angry:' => '😠',
+ ':anguished:' => '😧',
':ant:' => '🐜',
':apple:' => '🍎',
':aquarius:' => '♒',
':aries:' => '♈',
- ':arrow_backward:' => '◀',
':arrow_double_down:' => '⏬',
':arrow_double_up:' => '⏫',
- ':arrow_down:' => '⬇',
':arrow_down_small:' => '🔽',
- ':arrow_forward:' => '▶',
- ':arrow_heading_down:' => '⤵',
- ':arrow_heading_up:' => '⤴',
- ':arrow_left:' => '⬅',
- ':arrow_lower_left:' => '↙',
- ':arrow_lower_right:' => '↘',
- ':arrow_right:' => '➡',
- ':arrow_right_hook:' => '↪',
- ':arrow_up:' => '⬆',
- ':arrow_up_down:' => '↕',
':arrow_up_small:' => '🔼',
- ':arrow_upper_left:' => '↖',
- ':arrow_upper_right:' => '↗',
':arrows_clockwise:' => '🔃',
':arrows_counterclockwise:' => '🔄',
':art:' => '🎨',
@@ -209,85 +39,103 @@
':astonished:' => '😲',
':athletic_shoe:' => '👟',
':atm:' => '🏧',
- ':atom:' => '⚛',
+ ':auto_rickshaw:' => '🛺',
':avocado:' => '🥑',
- ':b:' => '🅱',
+ ':axe:' => '🪓',
':baby:' => '👶',
':baby_bottle:' => '🍼',
':baby_chick:' => '🐤',
':baby_symbol:' => '🚼',
':back:' => '🔙',
':bacon:' => '🥓',
+ ':badger:' => '🦡',
':badminton:' => '🏸',
+ ':bagel:' => '🥯',
':baggage_claim:' => '🛄',
+ ':bald:' => '🦲',
+ ':ballet_shoes:' => '🩰',
':balloon:' => '🎈',
- ':ballot_box:' => '🗳',
- ':ballot_box_with_check:' => '☑',
':bamboo:' => '🎍',
':banana:' => '🍌',
- ':bangbang:' => '‼',
+ ':banjo:' => '🪕',
':bank:' => '🏦',
':bar_chart:' => '📊',
':barber:' => '💈',
':baseball:' => '⚾',
+ ':basket:' => '🧺',
':basketball:' => '🏀',
- ':basketball_player:' => '⛹',
':bat:' => '🦇',
':bath:' => '🛀',
':bathtub:' => '🛁',
':battery:' => '🔋',
- ':beach:' => '🏖',
- ':beach_umbrella:' => '⛱',
+ ':beans:' => '🫘',
':bear:' => '🐻',
- ':bed:' => '🛏',
+ ':beaver:' => '🦫',
':bee:' => '🐝',
':beer:' => '🍺',
':beers:' => '🍻',
':beetle:' => '🐞',
':beginner:' => '🔰',
':bell:' => '🔔',
- ':bellhop:' => '🛎',
+ ':bell_pepper:' => '🫑',
':bento:' => '🍱',
+ ':beverage_box:' => '🧃',
':bicyclist:' => '🚴',
':bike:' => '🚲',
':bikini:' => '👙',
- ':biohazard:' => '☣',
+ ':billed_cap:' => '🧢',
':bird:' => '🐦',
':birthday:' => '🎂',
+ ':bison:' => '🦬',
+ ':biting_lip:' => '🫦',
':black_circle:' => '⚫',
':black_heart:' => '🖤',
':black_joker:' => '🃏',
':black_large_square:' => '⬛',
':black_medium_small_square:' => '◾',
- ':black_medium_square:' => '◼',
- ':black_nib:' => '✒',
- ':black_small_square:' => '▪',
':black_square_button:' => '🔲',
':blossom:' => '🌼',
':blowfish:' => '🐡',
':blue_book:' => '📘',
':blue_car:' => '🚙',
':blue_heart:' => '💙',
+ ':blue_square:' => '🟦',
+ ':blueberries:' => '🫐',
':blush:' => '😊',
':boar:' => '🐗',
':bomb:' => '💣',
+ ':bone:' => '🦴',
':book:' => '📖',
':bookmark:' => '🔖',
':bookmark_tabs:' => '📑',
':books:' => '📚',
':boom:' => '💥',
+ ':boomerang:' => '🪃',
':boot:' => '👢',
':bouquet:' => '💐',
':bow:' => '🙇',
':bow_and_arrow:' => '🏹',
+ ':bowl_with_spoon:' => '🥣',
':bowling:' => '🎳',
':boxing_glove:' => '🥊',
':boy:' => '👦',
+ ':brain:' => '🧠',
':bread:' => '🍞',
+ ':breast_feeding:' => '🤱',
+ ':brick:' => '🧱',
':bride_with_veil:' => '👰',
':bridge_at_night:' => '🌉',
':briefcase:' => '💼',
+ ':briefs:' => '🩲',
+ ':broccoli:' => '🥦',
':broken_heart:' => '💔',
+ ':broom:' => '🧹',
+ ':brown_circle:' => '🟤',
+ ':brown_heart:' => '🤎',
+ ':brown_square:' => '🟫',
+ ':bubble_tea:' => '🧋',
+ ':bubbles:' => '🫧',
+ ':bucket:' => '🪣',
':bug:' => '🐛',
':bulb:' => '💡',
':bullettrain_front:' => '🚅',
@@ -297,32 +145,31 @@
':busstop:' => '🚏',
':bust_in_silhouette:' => '👤',
':busts_in_silhouette:' => '👥',
+ ':butter:' => '🧈',
':butterfly:' => '🦋',
':cactus:' => '🌵',
':cake:' => '🍰',
':calendar:' => '📆',
- ':calendar_spiral:' => '🗓',
':call_me:' => '🤙',
':calling:' => '📲',
':camel:' => '🐫',
':camera:' => '📷',
':camera_with_flash:' => '📸',
- ':camping:' => '🏕',
':cancer:' => '♋',
- ':candle:' => '🕯',
':candy:' => '🍬',
+ ':canned_food:' => '🥫',
':canoe:' => '🛶',
':capital_abcd:' => '🔠',
':capricorn:' => '♑',
- ':card_box:' => '🗃',
':card_index:' => '📇',
':carousel_horse:' => '🎠',
+ ':carpentry_saw:' => '🪚',
':carrot:' => '🥕',
':cartwheel:' => '🤸',
':cat:' => '🐱',
':cat2:' => '🐈',
':cd:' => '💿',
- ':chains:' => '⛓',
+ ':chair:' => '🪑',
':champagne:' => '🍾',
':champagne_glass:' => '🥂',
':chart:' => '💹',
@@ -334,22 +181,20 @@
':cherry_blossom:' => '🌸',
':chest
F438
nut:' => '🌰',
':chicken:' => '🐔',
+ ':child:' => '🧒',
':children_crossing:' => '🚸',
- ':chipmunk:' => '🐿',
':chocolate_bar:' => '🍫',
+ ':chopsticks:' => '🥢',
':christmas_tree:' => '🎄',
':church:' => '⛪',
':cinema:' => '🎦',
':circus_tent:' => '🎪',
':city_dusk:' => '🌆',
':city_sunset:' => '🌇',
- ':cityscape:' => '🏙',
':cl:' => '🆑',
':clap:' => '👏',
':clapper:' => '🎬',
- ':classical_building:' => '🏛',
':clipboard:' => '📋',
- ':clock:' => '🕰',
':clock1:' => '🕐',
':clock2:' => '🕑',
':clock3:' => '🕒',
@@ -377,36 +222,29 @@
':closed_book:' => '📕',
':closed_lock_with_key:' => '🔐',
':closed_umbrella:' => '🌂',
- ':cloud:' => '☁',
- ':cloud_lightning:' => '🌩',
- ':cloud_rain:' => '🌧',
- ':cloud_snow:' => '🌨',
- ':cloud_tornado:' => '🌪',
':clown:' => '🤡',
- ':clubs:' => '♣',
+ ':coat:' => '🧥',
+ ':cockroach:' => '🪳',
':cocktail:' => '🍸',
+ ':coconut:' => '🥥',
':coffee:' => '☕',
- ':coffin:' => '⚰',
+ ':coin:' => '🪙',
+ ':cold_face:' => '🥶',
':cold_sweat:' => '😰',
- ':comet:' => '☄',
- ':compression:' => '🗜',
+ ':compass:' => '🧭',
':computer:' => '💻',
':confetti_ball:' => '🎊',
':confounded:' => '😖',
':confused:' => '😕',
- ':congratulations:' => '㊗',
':construction:' => '🚧',
- ':construction_site:' => '🏗',
':construction_worker:' => '👷',
- ':control_knobs:' => '🎛',
':convenience_store:' => '🏪',
':cookie:' => '🍪',
':cooking:' => '🍳',
':cool:' => '🆒',
':cop:' => '👮',
- ':copyright:' => '©',
+ ':coral:' => '🪸',
':corn:' => '🌽',
- ':couch:' => '🛋',
':couple:' => '👫',
':couple_with_heart:' => '💑',
':couplekiss:' => '💏',
@@ -414,110 +252,126 @@
':cow2:' => '🐄',
':cowboy:' => '🤠',
':crab:' => '🦀',
- ':crayon:' => '🖍',
':credit_card:' => '💳',
':crescent_moon:' => '🌙',
':cricket:' => '🏏',
':crocodile:' => '🐊',
':croissant:' => '🥐',
- ':cross:' => '✝',
':crossed_flags:' => '🎌',
- ':crossed_swords:' => '⚔',
':crown:' => '👑',
- ':cruise_ship:' => '🛳',
+ ':crutch:' => '🩼',
':cry:' => '😢',
':crying_cat_face:' => '😿',
':crystal_ball:' => '🔮',
':cucumber:' => '🥒',
+ ':cup_with_straw:' => '🥤',
+ ':cupcake:' => '🧁',
':cupid:' => '💘',
+ ':curling_stone:' => '🥌',
+ ':curly_hair:' => '🦱',
':curly_loop:' => '➰',
':currency_exchange:' => '💱',
':curry:' => '🍛',
':custard:' => '🍮',
':customs:' => '🛃',
+ ':cut_of_meat:' => '🥩',
':cyclone:' => '🌀',
- ':dagger:' => '🗡',
':dancer:' => '💃',
':dancers:' => '👯',
':dango:' => '🍡',
- ':dark_sunglasses:' => '🕶',
':dart:' => '🎯',
':dash:' => '💨',
':date:' => '📅',
+ ':deaf_person:' => '🧏',
':deciduous_tree:' => '🌳',
':deer:' => '🦌',
':department_store:' => '🏬',
- ':desert:' => '🏜',
- ':desktop:' => '🖥',
':diamond_shape_with_a_dot_inside:' => '💠',
- ':diamonds:' => '♦',
':disappointed:' => '😞',
':disappointed_relieved:' => '😥',
- ':dividers:' => '🗂',
+ ':disguised_face:' => '🥸',
+ ':diving_mask:' => '🤿',
+ ':diya_lamp:' => '🪔',
':dizzy:' => '💫',
':dizzy_face:' => '😵',
+ ':dna:' => '🧬',
':do_not_litter:' => '🚯',
+ ':dodo:' => '🦤',
':dog:' => '🐶',
':dog2:' => '🐕',
':dollar:' => '💵',
':dolls:' => '🎎',
':dolphin:' => '🐬',
+ ':donkey:' => '🫏',
':door:' => '🚪',
+ ':dotted_line_face:' => '🫥',
':doughnut:' => '🍩',
- ':dove:' => '🕊',
':dragon:' => '🐉',
':dragon_face:' => '🐲',
':dress:' => '👗',
':dromedary_camel:' => '🐪',
':drooling_face:' => '🤤',
+ ':drop_of_blood:' => '🩸',
':droplet:' => '💧',
':drum:' => '🥁',
':duck:' => '🦆',
+ ':dumpling:' => '🥟',
':dvd:' => '📀',
':e-mail:' => '📧',
':eagle:' => '🦅',
':ear:' => '👂',
':ear_of_rice:' => '🌾',
+ ':ear_with_hearing_aid:' => '🦻',
':earth_africa:' => '🌍',
':earth_americas:' => '🌎',
':earth_asia:' => '🌏',
':egg:' => '🥚',
':eggplant:' => '🍆',
- ':eight_pointed_black_star:' => '✴',
- ':eight_spoked_asterisk:' => '✳',
- ':eject:' => '⏏',
':electric_plug:' => '🔌',
':elephant:' => '🐘',
+ ':elevator:' => '🛗',
+ ':elf:' => '🧝',
+ ':empty_nest:' => '🪹',
':end:' => '🔚',
- ':envelope:' => '✉',
':envelope_with_arrow:' => '📩',
':euro:' => '💶',
':european_castle:' => '🏰',
':european_post_office:' => '🏤',
':evergreen_tree:' => '🌲',
':exclamation:' => '❗',
+ ':exploding_head:' => '🤯',
':expressionless:' => '😑',
- ':eye:' => '👁',
':eyeglasses:' => '👓',
':eyes:' => '👀',
+ ':face_holding_back_tears:' => '🥹',
':face_palm:' => '🤦',
+ ':face_vomiting:' => '🤮',
+ ':face_with_diagonal_mouth:' => '🫤',
+ ':face_with_hand_over_mouth:' => '🤭',
+ ':face_with_monocle:' => '🧐',
+ ':face_with_open_eyes_and_hand_over_mouth:' => '🫢',
+ ':face_with_peeking_eye:' => '🫣',
+ ':face_with_raised_eyebrow:' => '🤨',
+ ':face_with_symbols_on_mouth:' => '🤬',
':factory:' => '🏭',
+ ':fairy:' => '🧚',
+ ':falafel:' => '🧆',
':fallen_leaf:' => '🍂',
':family:' => '👪',
':fast_forward:' => '⏩',
':fax:' => '📠',
':fearful:' => '😨',
+ ':feather:' => '🪶',
':feet:' => '🐾',
':fencer:' => '🤺',
':ferris_wheel:' => '🎡',
- ':ferry:' => '⛴',
':field_hockey:' => '🏑',
- ':file_cabinet:' => '🗄',
':file_folder:' => '📁',
- ':film_frames:' => '🎞',
':fingers_crossed:' => '🤞',
':fire:' => '🔥',
':fire_engine:' => '🚒',
+ ':fire_extinguisher:' => '🧯',
+ ':firecracker:' => '🧨',
':fireworks:' => '🎆',
':first_place:' => '🥇',
':first_quarter_moon:' => '🌓',
@@ -527,65 +381,80 @@
':fishing_pole_and_fish:' => '🎣',
':fist:' => '✊',
':flag_black:' => '🏴',
- ':flag_white:' => '🏳',
':flags:' => '🎏',
+ ':flamingo:' => '🦩',
':flashlight:' => '🔦',
- ':fleur-de-lis:' => '⚜',
+ ':flat_shoe:' => '🥿',
+ ':flatbread:' => '🫓',
':floppy_disk:' => '💾',
':flower_playing_cards:' => '🎴',
':flushed:' => '😳',
- ':fog:' => '🌫',
+ ':flute:' => '🪈',
+ ':fly:' => '🪰',
+ ':flying_disc:' => '🥏',
+ ':flying_saucer:' => '🛸',
':foggy:' => '🌁',
+ ':folding_hand_fan:' => '🪭',
+ ':fondue:' => '🫕',
+ ':foot:' => '🦶',
':football:' => '🏈',
':footprints:' => '👣',
':fork_and_knife:' => '🍴',
- ':fork_knife_plate:' => '🍽',
+ ':fortune_cookie:' => '🥠',
':fountain:' => '⛲',
':four_leaf_clover:' => '🍀',
':fox:' => '🦊',
- ':frame_photo:' => '🖼',
':free:' => '🆓',
':french_bread:' => '🥖',
':fried_shrimp:' => '🍤',
':fries:' => '🍟',
':frog:' => '🐸',
':frowning:' => '😦',
- ':frowning2:' => '☹',
':fuelpump:' => '⛽',
':full_moon:' => '🌕',
':full_moon_with_face:' => '🌝',
':game_die:' => '🎲',
- ':gear:' => '⚙',
+ ':garlic:' => '🧄',
':gem:' => '💎',
':gemini:' => '♊',
+ ':genie:' => '🧞',
':ghost:' => '👻',
':gift:' => '🎁',
':gift_heart:' => '💝',
+ ':ginger_root:' => '🫚',
+ ':giraffe:' => '🦒',
':girl:' => '👧',
':globe_with_meridians:' => '🌐',
+ ':gloves:' => '🧤',
':goal:' => '🥅',
':goat:' => '🐐',
+ ':goggles:' => '🥽',
':golf:' => '⛳',
- ':golfer:' => '🏌',
+ ':goose:' => '🪿',
':gorilla:' => '🦍',
':grapes:' => '🍇',
':green_apple:' => '🍏',
':green_book:' => '📗',
+ ':green_circle:' => '🟢',
':green_heart:' => '💚',
+ ':green_square:' => '🟩',
':grey_exclamation:' => '❕',
+ ':grey_heart:' => '🩶',
':grey_question:' => '❔',
':grimacing:' => '😬',
':grin:' => '😁',
':grinning:' => '😀',
':guardsman:' => '💂',
+ ':guide_dog:' => '🦮',
':guitar:' => '🎸',
':gun:' => '🔫',
+ ':hair_pick:' => '🪮',
':haircut:' => '💇',
':hamburger:' => '🍔',
':hammer:' => '🔨',
- ':hammer_pick:' => '⚒',
+ ':hamsa:' => '🪬',
':hamster:' => '🐹',
- ':hand_splayed:' => '🖐',
+ ':hand_with_index_finger_and_thumb_crossed:' => '🫰',
':handbag:' => '👜',
':handball:' => '🤾',
':handshake:' => '🤝',
@@ -593,74 +462,74 @@
':hatching_chick:' => '🐣',
':head_bandage:' => '🤕',
':headphones:' => '🎧',
+ ':headstone:' => '🪦',
':hear_no_evil:' => '🙉',
- ':heart:' => '❤',
':heart_decoration:' => '💟',
- ':heart_exclamation:' => '❣',
':heart_eyes:' => '😍',
':heart_eyes_cat:' => '😻',
+ ':heart_hands:' => '🫶',
':heartbeat:' => '💓',
':heartpulse:' => '💗',
- ':hearts:' => '♥',
- ':heavy_check_mark:' => '✔',
':heavy_division_sign:' => '➗',
':heavy_dollar_sign:' => '💲',
+ ':heavy_equals_sign:' => '🟰',
':heavy_minus_sign:' => '➖',
- ':heavy_multiplication_x:' => '✖',
':heavy_plus_sign:' => '➕',
+ ':hedgehog:' => '🦔',
':helicopter:' => '🚁',
- ':helmet_with_cross:' => '⛑',
':herb:' => '🌿',
':hibiscus:' => '🌺',
':high_brightness:' => '🔆',
':high_heel:' => '👠',
+ ':hiking_boot:' => '🥾',
+ ':hindu_temple:' => '🛕',
+ ':hippopotamus:' => '🦛',
':hockey:' => '🏒',
- ':hole:' => '🕳',
- ':homes:' => '🏘',
':honey_pot:' => '🍯',
+ ':hook:' => '🪝',
':horse:' => '🐴',
':horse_racing:' => '🏇',
':hospital:' => '🏥',
- ':hot_pepper:' => '🌶',
+ ':hot_face:' => '🥵',
':hotdog:' => '🌭',
':hotel:' => '🏨',
- ':hotsprings:' => '♨',
':hourglass:' => '⌛',
':hourglass_flowing_sand:' => '⏳',
':house:' => '🏠',
- ':house_abandoned:' => '🏚',
':house_with_garden:' => '🏡',
':hugging:' => '🤗',
':hushed:' => '😯',
+ ':hut:' => '🛖',
+ ':hyacinth:' => '🪻',
+ ':ice:' => '🧊',
':ice_cream:' => '🍨',
- ':ice_skate:' => '⛸',
':icecream:' => '🍦',
':id:' => '🆔',
+ ':identification_card:' => '🪪',
':ideograph_advantage:' => '🉐',
':imp:' => '👿',
':inbox_tray:' => '📥',
':incoming_envelope:' => '📨',
+ ':index_pointing_at_the_viewer:' => '🫵',
':information_desk_person:' => '💁',
- ':information_source:' => 'ℹ',
':innocent:' => '😇',
- ':interrobang:' => '⁉',
':iphone:' => '📱',
- ':island:' => '🏝',
':izakaya_lantern:' => '🏮',
':jack_o_lantern:' => '🎃',
':japan:' => '🗾',
':japanese_castle:' => '🏯',
':japanese_goblin:' => '👺',
':japanese_ogre:' => '👹',
+ ':jar:' => '🫙',
':jeans:' => '👖',
+ ':jellyfish:' => '🪼',
':joy:' => '😂',
':joy_cat:' => '😹',
- ':joystick:' => '🕹',
':juggling:' => '🤹',
':kaaba:' => '🕋',
+ ':kangaroo:' => '🦘',
':key:' => '🔑',
- ':key2:' => '🗝',
- ':keyboard:' => '⌨',
+ ':khanda:' => '🪯',
':kimono:' => '👘',
':kiss:' => '💋',
':kissing:' => '😗',
@@ -668,82 +537,106 @@
':kissing_closed_eyes:' => '😚',
':kissing_heart:' => '😘',
':kissing_smiling_eyes:' => '😙',
+ ':kite:' => '🪁',
':kiwi:' => '🥝',
':knife:' => '🔪',
+ ':knot:' => '🪢',
':koala:' => '🐨',
':koko:' => '🈁',
- ':label:' => '🏷',
+ ':lab_coat:' => '🥼',
+ ':lacrosse:' => '🥍',
+ ':ladder:' => '🪜',
':large_blue_circle:' => '🔵',
':large_blue_diamond:' => '🔷',
':large_orange_diamond:' => '🔶',
':last_quarter_moon:' => '🌗',
':last_quarter_moon_with_face:' => '🌜',
':laughing:' => '😆',
+ ':leafy_green:' => '🥬',
':leaves:' => '🍃',
':ledger:' => '📒',
':left_facing_fist:' => '🤛',
':left_luggage:' => '🛅',
- ':left_right_arrow:' => '↔',
- ':leftwards_arrow_with_hook:' => '↩',
+ ':leftwards_hand:' => '🫲',
+ ':leftwards_pushing_hand:' => '🫷',
+ ':leg:' => '🦵',
':lemon:' => '🍋',
':leo:' => '♌',
':leopard:' => '🐆',
- ':level_slider:' => '🎚',
- ':levitate:' => '🕴',
':libra:' => '♎',
- ':lifter:' => '🏋',
+ ':light_blue_heart:' => '🩵',
':light_rail:' => '🚈',
':link:' => '🔗',
':lion_face:' => '🦁',
':lips:' => '👄',
':lipstick:' => '💄',
':lizard:' => '🦎',
+ ':llama:' => '🦙',
+ ':lobster:' => '🦞',
':lock:' => '🔒',
':lock_with_ink_pen:' => '🔏',
':lollipop:' => '🍭',
+ ':long_drum:' => '🪘',
':loop:' => '➿',
+ ':lotion_bottle:' => '🧴',
+ ':lotus:' => '🪷',
':loud_sound:' => '🔊',
':loudspeaker:' => '📢',
':love_hotel:' => '🏩',
':love_letter:' => '💌',
+ ':love_you_gesture:' => '🤟',
+ ':low_battery:' => '🪫',
':low_brightness:' => '🔅',
+ ':luggage:' => '🧳',
+ ':lungs:' => '🫁',
':lying_face:' => '🤥',
- ':m:' => 'Ⓜ',
':mag:' => '🔍',
':mag_right:' => '🔎',
+ ':mage:' => '🧙',
+ ':magic_wand:' => '🪄',
+ ':magnet:' => '🧲',
':mahjong:' => '🀄',
':mailbox:' => '📫',
':mailbox_closed:' => '📪',
':mailbox_with_mail:' => '📬',
':mailbox_with_no_mail:' => '📭',
+ ':mammoth:' => '🦣',
':man:' => '👨',
':man_dancing:' => '🕺',
- ':man_in_tuxedo:' => '🤵',
':man_with_gua_pi_mao:' => '👲',
':man_with_turban:' => '👳',
+ ':mango:' => '🥭',
':mans_shoe:' => '👞',
- ':map:' => '🗺',
+ ':manual_wheelchair:' => '🦽',
':maple_leaf:' => '🍁',
+ ':maracas:' => '🪇',
':martial_arts_uniform:' => '🥋',
':mask:' => '😷',
':massage:' => '💆',
+ ':mate:' => '🧉',
':meat_on_bone:' => '🍖',
+ ':mechanical_arm:' => '🦾',
+ ':mechanical_leg:' => '🦿',
':medal:' => '🏅',
':mega:' => '📣',
':melon:' => '🍈',
+ ':melting_face:' => '🫠',
':menorah:' => '🕎',
':mens:' => '🚹',
+ ':merperson:' => '🧜',
':metal:' => '🤘',
':metro:' => '🚇',
+ ':microbe:' => '🦠',
':microphone:' => '🎤',
- ':microphone2:' => '🎙',
':microscope:' => '🔬',
':middle_finger:' => '🖕',
- ':military_medal:' => '🎖',
+ ':military_helmet:' => '🪖',
':milk:' => '🥛',
':milky_way:' => '🌌',
':minibus:' => '🚐',
':minidisc:' => '💽',
+ ':mirror:' => '🪞',
+ ':mirror_ball:' => '🪩',
':mobile_phone_off:' => '📴',
':money_mouth:' => '🤑',
':money_with_wings:' => '💸',
@@ -751,21 +644,20 @@
':monkey:' => '🐒',
':monkey_face:' => '🐵',
':monorail:' => '🚝',
+ ':moon_cake:' => '🥮',
+ ':moose:' => '🫎',
':mortar_board:' => '🎓',
':mosque:' => '🕌',
+ ':mosquito:' => '🦟',
':motor_scooter:' => '🛵',
- ':motorboat:' => '🛥',
- ':motorcycle:' => '🏍',
- ':motorway:' => '🛣',
+ ':motorized_wheelchair:' => '🦼',
':mount_fuji:' => '🗻',
- ':mountain:' => '⛰',
':mountain_bicyclist:' => '🚵',
':mountain_cableway:' => '🚠',
':mountain_railway:' => '🚞',
- ':mountain_snow:' => '🏔',
':mouse:' => '🐭',
':mouse2:' => '🐁',
- ':mouse_three_button:' => '🖱',
+ ':mouse_trap:' => '🪤',
':movie_camera:' => '🎥',
':moyai:' => '🗿',
':mrs_claus:' => '🤶',
@@ -778,17 +670,20 @@
':nail_care:' => '💅',
':name_badge:' => '📛',
':nauseated_face:' => '🤢',
+ ':nazar_amulet:' => '🧿',
':necktie:' => '👔',
':negative_squared_cross_mark:' => '❎',
':nerd:' => '🤓',
+ ':nest_with_eggs:' => '🪺',
+ ':nesting_dolls:' => '🪆',
':neutral_face:' => '😐',
':new:' => '🆕',
':new_moon:' => '🌑',
':new_moon_with_face:' => '🌚',
':newspaper:' => '📰',
- ':newspaper2:' => '🗞',
':ng:' => '🆖',
':night_with_stars:' => '🌃',
+ ':ninja:' => '🥷',
':no_bell:' => '🔕',
':no_bicycles:' => '🚳',
':no_entry:' => '⛔',
@@ -802,83 +697,103 @@
':nose:' => '👃',
':notebook:' => '📓',
':notebook_with_decorative_cover:' => '📔',
- ':notepad_spiral:' => '🗒',
':notes:' => '🎶',
':nut_and_bolt:' => '🔩',
':o:' => '⭕',
- ':o2:' => '🅾',
':ocean:' => '🌊',
':octagonal_sign:' => '🛑',
':octopus:' => '🐙',
':oden:' => '🍢',
':office:' => '🏢',
- ':oil:' => '🛢',
':ok:' => '🆗',
':ok_hand:' => '👌',
':ok_woman:' => '🙆',
':older_man:' => '👴',
+ ':older_person:' => '🧓',
':older_woman:' => '👵',
- ':om_symbol:' => '🕉',
+ ':olive:' => '🫒',
':on:' => '🔛',
':oncoming_automobile:' => '🚘',
':oncoming_bus:' => '🚍',
':oncoming_police_car:' => '🚔',
':oncoming_taxi:' => '🚖',
+ ':one_piece_swimsuit:' => '🩱',
+ ':onion:' => '🧅',
':open_file_folder:' => '📂',
':open_hands:' => '👐',
':open_mouth:' => '😮',
':ophiuchus:' => '⛎',
':orange_book:' => '📙',
- ':orthodox_cross:' => '☦',
+ ':orange_circle:' => '🟠',
+ ':orange_heart:' => '🧡',
+ ':orange_square:' => '🟧',
+ ':orangutan:' => '🦧',
+ ':otter:' => '🦦',
':outbox_tray:' => '📤',
':owl:' => '🦉',
':ox:' => '🐂',
+ ':oyster:' => '🦪',
':package:' => '📦',
':page_facing_up:' => '📄',
':page_with_curl:' => '📃',
':pager:' => '📟',
- ':paintbrush:' => '🖌',
+ ':palm_down_hand:' => '🫳',
':palm_tree:' => '🌴',
+ ':palm_up_hand:' => '🫴',
+ ':palms_up_together:' => '🤲',
':pancakes:' => '🥞',
':panda_face:' => '🐼',
':paperclip:' => '📎',
- ':paperclips:' => '🖇',
- ':park:' => '🏞',
- ':parking:' => '🅿',
- ':part_alternation_mark:' => '〽',
+ ':parachute:' => '🪂',
+ ':parrot:' => '🦜',
':partly_sunny:' => '⛅',
+ ':partying_face:' => '🥳',
':passport_control:' => '🛂',
- ':pause_button:' => '⏸',
- ':peace:' => '☮',
+ ':pea_pod:' => '🫛',
':peach:' => '🍑',
+ ':peacock:' => '🦚',
':peanuts:' => '🥜',
':pear:' => '🍐',
- ':pen_ballpoint:' => '🖊',
- ':pen_fountain:' => '🖋',
':pencil:' => '📝',
- ':pencil2:' => '✏',
':penguin:' => '🐧',
':pensive:' => '😔',
+ ':people_hugging:' => '🫂',
':performing_arts:' => '🎭',
':persevere:' => '😣',
+ ':person:' => '🧑',
+ ':person_beard:' => '🧔',
+ ':person_climbing:' => '🧗',
':person_frowning:' => '🙍',
+ ':person_in_lotus_position:' => '🧘',
+ ':person_in_steamy_room:' => '🧖',
+ ':person_kneeling:' => '🧎',
+ ':person_standing:' => '🧍',
':person_with_blond_hair:' => '👱',
+ ':person_with_crown:' => '🫅',
':person_with_pouting_face:' => '🙎',
- ':pick:' => '⛏',
+ ':petri_dish:' => '🧫',
+ ':pickup_truck:' => '🛻',
+ ':pie:' => '🥧',
':pig:' => '🐷',
':pig2:' => '🐖',
':pig_nose:' => '🐽',
':pill:' => '💊',
+ ':pinata:' => '🪅',
+ ':pinched_fingers:' => '🤌',
+ ':pinching_hand:' => '🤏',
':pineapple:' => '🍍',
':ping_pong:' => '🏓',
+ ':pink_heart:' => '🩷',
':pisces:' => '♓',
':pizza:' => '🍕',
+ ':placard:' => '🪧',
':place_of_worship:' => '🛐',
- ':play_pause:' => '⏯',
+ ':playground_slide:' => '🛝',
+ ':pleading_face:' => '🥺',
+ ':plunger:' => '🪠',
':point_down:' => '👇',
':point_left:' => '👈',
':point_right:' => '👉',
- ':point_up:' => '☝',
':point_up_2:' => '👆',
':police_car:' => '🚓',
':poodle:' => '🐩',
@@ -889,33 +804,37 @@
':postbox:' => '📮',
':potable_water:' => '🚰',
':potato:' => '🥔',
+ ':potted_plant:' => '🪴',
':pouch:' => '👝',
':poultry_leg:' => '🍗',
':pound:' => '💷',
+ ':pouring_liquid:' => '🫗',
':pouting_cat:' => '😾',
':pray:' => '🙏',
':prayer_beads:' => '📿',
+ ':pregnant_man:' => '🫃',
+ ':pregnant_person:' => '🫄',
':pregnant_woman:' => '🤰',
+ ':pretzel:' => '🥨',
':prince:' => '🤴',
':princess:' => '👸',
- ':printer:' => '🖨',
- ':projector:' => '📽',
':punch:' => '👊',
+ ':purple_circle:' => '🟣',
':purple_heart:' => '💜',
+ ':purple_square:' => '🟪',
':purse:' => '👛',
':pushpin:' => '📌',
':put_litter_in_its_place:' => '🚮',
+ ':puzzle_piece:' => '🧩',
':question:' => '❓',
':rabbit:' => '🐰',
':rabbit2:' => '🐇',
- ':race_car:' => '🏎',
+ ':raccoon:' => '🦝',
':racehorse:' => '🐎',
':radio:' => '📻',
':radio_button:' => '🔘',
- ':radioactive:' => '☢',
':rage:' => '😡',
':railway_car:' => '🚃',
- ':railway_track:' => '🛤',
':rainbow:' => '🌈',
':raised_back_of_hand:' => '🤚',
':raised_hand:' => '✋',
@@ -924,14 +843,14 @@
':ram:' => '🐏',
':ramen:' => '🍜',
':rat:' => '🐀',
- ':record_button:' => '⏺',
- ':recycle:' => '♻',
+ ':razor:' => '🪒',
+ ':receipt:' => '🧾',
':red_car:' => '🚗',
':red_circle:' => '🔴',
- ':registered:' => '®',
- ':relaxed:' => '☺',
+ ':red_envelope:' => '🧧',
+ ':red_hair:' => '🦰',
+ ':red_square:' => '🟥',
':relieved:' => '😌',
- ':reminder_ribbon:' => '🎗',
':repeat:' => '🔁',
':repeat_one:' => '🔂',
':restroom:' => '🚻',
@@ -944,74 +863,87 @@
':rice_cracker:' => '🍘',
':rice_scene:' => '🎑',
':right_facing_fist:' => '🤜',
+ ':rightwards_hand:' => '🫱',
+ ':rightwards_pushing_hand:' => '🫸',
':ring:' => '💍',
+ ':ring_buoy:' => '🛟',
+ ':ringed_planet:' => '🪐',
':robot:' => '🤖',
+ ':rock:' => '🪨',
':rocket:' => '🚀',
':rofl:' => '🤣',
+ ':roll_of_paper:' => '🧻',
':roller_coaster:' => '🎢',
+ ':roller_skate:' => '🛼',
':rolling_eyes:' => '🙄',
':rooster:' => '🐓',
':rose:' => '🌹',
- ':rosette:' => '🏵',
':rotating_light:' => '🚨',
':round_pushpin:' => '📍',
':rowboat:' => '🚣',
':rugby_football:' => '🏉',
':runner:' => '🏃',
':running_shirt_with_sash:' => '🎽',
- ':sa:' => '🈂',
+ ':safety_pin:' => '🧷',
+ ':safety_vest:' => '🦺',
':sagittarius:' => '♐',
':sailboat:' => '⛵',
':sake:' => '🍶',
':salad:' => '🥗',
+ ':salt:' => '🧂',
+ ':saluting_face:' => '🫡',
':sandal:' => '👡',
+ ':sandwich:' => '🥪',
':santa:' => '🎅',
+ ':sari:' => '🥻',
':satellite:' => '📡',
- ':satellite_orbital:' => '🛰',
+ ':sauropod:' => '🦕',
':saxophone:' => '🎷',
- ':scales:' => '⚖',
+ ':scarf:' => '🧣',
':school:' => '🏫',
':school_satchel:' => '🎒',
- ':scissors:' => '✂',
':scooter:' => '🛴',
':scorpion:' => '🦂',
':scorpius:' => '♏',
':scream:' => '😱',
':scream_cat:' => '🙀',
+ ':screwdriver:' => '🪛',
':scroll:' => '📜',
+ ':seal:' => '🦭',
':seat:' => '💺',
':second_place:' => '🥈',
- ':secret:' => '㊙',
':see_no_evil:' => '🙈',
':seedling:' => '🌱',
':selfie:' => '🤳',
+ ':sewing_needle:' => '🪡',
+ ':shaking_face:' => '🫨',
':shallow_pan_of_food:' => '🥘',
- ':shamrock:' => '☘',
':shark:' => '🦈',
':shaved_ice:' => '🍧',
':sheep:' => '🐑',
':shell:' => '🐚',
- ':shield:' => '🛡',
- ':shinto_shrine:' => '⛩',
':ship:' => '🚢',
':shirt:' => '👕',
- ':shopping_bags:' => '🛍',
':shopping_cart:' => '🛒',
+ ':shorts:' => '🩳',
':shower:' => '🚿',
':shrimp:' => '🦐',
':shrug:' => '🤷',
+ ':shushing_face:' => '🤫',
':signal_strength:' => '📶',
':six_pointed_star:' => '🔯',
+ ':skateboard:' => '🛹',
':ski:' => '🎿',
- ':skier:' => '⛷',
':skull:' => '💀',
- ':skull_crossbones:' => '☠',
+ ':skunk:' => '🦨',
+ ':sled:' => '🛷',
':sleeping:' => '😴',
':sleeping_accommodation:' => '🛌',
':sleepy:' => '😪',
':slight_frown:' => '🙁',
':slight_smile:' => '🙂',
':slot_machine:' => '🎰',
+ ':sloth:' => '🦥',
':small_blue_diamond:' => '🔹',
':small_orange_diamond:' => '🔸',
':small_red_triangle:' => '🔺',
@@ -1020,6 +952,8 @@
':smile_cat:' => '😸',
':smiley:' => '😃',
':smiley_cat:' => '😺',
+ ':smiling_face_with_hearts:' => '🥰',
+ ':smiling_face_with_tear:' => '🥲',
':smiling_imp:' => '😈',
':smirk:' => '😏',
':smirk_cat:' => '😼',
@@ -1028,44 +962,36 @@
':snake:' => '🐍',
':sneezing_face:' => '🤧',
':snowboarder:' => '🏂',
- ':snowflake:' => '❄',
':snowman:' => '⛄',
- ':snowman2:' => '☃',
+ ':soap:' => '🧼',
':sob:' => '😭',
':soccer:' => '⚽',
+ ':socks:' => '🧦',
+ ':softball:' => '🥎',
':soon:' => '🔜',
':sos:' => '🆘',
':sound:' => '🔉',
':space_invader:' => '👾',
- ':spades:' => '♠',
':spaghetti:' => '🍝',
- ':sparkle:' => '❇',
':sparkler:' => '🎇',
':sparkles:' => '✨',
':sparkling_heart:' => '💖',
':speak_no_evil:' => '🙊',
':speaker:' => '🔈',
- ':speaking_head:' => '🗣',
':speech_balloon:' => '💬',
- ':speech_left:' => '🗨',
':speedboat:' => '🚤',
- ':spider:' => '🕷',
- ':spider_web:' => '🕸',
+ ':sponge:' => '🧽',
':spoon:' => '🥄',
- ':spy:' => '🕵',
':squid:' => '🦑',
- ':stadium:' => '🏟',
':star:' => '⭐',
':star2:' => '🌟',
- ':star_and_crescent:' => '☪',
- ':star_of_david:' => '✡',
+ ':star_struck:' => '🤩',
':stars:' => '🌠',
':station:' => '🚉',
':statue_of_liberty:' => '🗽',
':steam_locomotive:' => '🚂',
+ ':stethoscope:' => '🩺',
':stew:' => '🍲',
- ':stop_button:' => '⏹',
- ':stopwatch:' => '⏱',
':straight_ruler:' => '📏',
':strawberry:' => '🍓',
':stuck_out_tongue:' => '😛',
@@ -1075,12 +1001,14 @@
':sun_with_face:' => '🌞',
':sunflower:' => '🌻',
':sunglasses:' => '😎',
- ':sunny:' => '☀',
':sunrise:' => '🌅',
':sunrise_over_mountains:' => '🌄',
+ ':superhero:' => '🦸',
+ ':supervillain:' => '🦹',
':surfer:' => '🏄',
':sushi:' => '🍣',
':suspension_railway:' => '🚟',
+ ':swan:' => '🦢',
':sweat:' => '😓',
':sweat_drops:' => '💦',
':sweat_smile:' => '😅',
@@ -1089,34 +1017,36 @@
':symbols:' => '🔣',
':synagogue:' => '🕍',
':syringe:' => '💉',
+ ':t_rex:' => '🦖',
':taco:' => '🌮',
':tada:' => '🎉',
+ ':takeout_box:' => '🥡',
+ ':tamale:' => '🫔',
':tanabata_tree:' => '🎋',
':tangerine:' => '🍊',
':taurus:' => '♉',
':taxi:' => '🚕',
':tea:' => '🍵',
- ':telephone:' => '☎',
+ ':teapot:' => '🫖',
+ ':teddy_bear:' => '🧸',
':telephone_receiver:' => '📞',
':telescope:' => '🔭',
':ten:' => '🔟',
':tennis:' => '🎾',
':tent:' => '⛺',
- ':thermometer:' => '🌡',
+ ':test_tube:' => '🧪',
':thermometer_face:' => '🤒',
':thinking:' => '🤔',
':third_place:' => '🥉',
+ ':thong_sandal:' => '🩴',
':thought_balloon:' => '💭',
+ ':thread:' => '🧵',
':thumbsdown:' => '👎',
':thumbsup:' => '👍',
- ':thunder_cloud_rain:' => '⛈',
':ticket:' => '🎫',
- ':tickets:' => '🎟',
':tiger:' => '🐯',
':tiger2:' => '🐅',
- ':timer:' => '⏲',
':tired_face:' => '😫',
- ':tm:' => '™',
':toilet:' => '🚽',
':tokyo_tower:' => '🗼',
':tomato:' => '🍅',
@@ -1126,12 +1056,11 @@
':tone4:' => '🏾',
':tone5:' => '🏿',
':tongue:' => '👅',
- ':tools:' => '🛠',
+ ':toolbox:' => '🧰',
+ ':tooth:' => '🦷',
+ ':toothbrush:' => '🪥',
':top:' => '🔝',
':tophat:' => '🎩',
- ':track_next:' => '⏭',
- ':track_previous:' => '⏮',
- ':trackball:' => '🖲',
':tractor:' => '🚜',
':traffic_light:' => '🚥',
':train:' => '🚋',
@@ -1141,6 +1070,7 @@
':triangular_ruler:' => '📐',
':trident:' => '🔱',
':triumph:' => '😤',
+ ':troll:' => '🧌',
':trolleybus:' => '🚎',
':trophy:' => '🏆',
':tropical_drink:' => '🍹',
@@ -1162,21 +1092,18 @@
':u5272:' => '🈹',
':u5408:' => '🈴',
':u6307:' => '🈯',
- ':u6708:' => '🈷',
':u6709:' => '🈶',
':u7121:' => '🈚',
':u7533:' => '🈸',
':u7981:' => '🈲',
':umbrella:' => '☔',
- ':umbrella2:' => '☂',
':unamused:' => '😒',
':underage:' => '🔞',
':unicorn:' => '🦄',
':unlock:' => '🔓',
':up:' => '🆙',
':upside_down:' => '🙃',
- ':urn:' => '⚱',
- ':v:' => '✌',
+ ':vampire:' => '🧛',
':vertical_traffic_light:' => '🚦',
':vhs:' => '📼',
':vibration_mode:' => '📳',
@@ -1188,17 +1115,15 @@
':volleyball:' => '🏐',
':vs:' => '🆚',
':vulcan:' => '🖖',
+ ':waffle:' => '🧇',
':walking:' => '🚶',
':waning_crescent_moon:' => '🌘',
':waning_gibbous_moon:' => '🌖',
- ':warning:' => '⚠',
- ':wastebasket:' => '🗑',
':watch:' => '⌚',
':water_buffalo:' => '🐃',
':water_polo:' => '🤽',
':watermelon:' => '🍉',
':wave:' => '👋',
- ':wavy_dash:' => '〰',
':waxing_crescent_moon:' => '🌒',
':waxing_gibbous_moon:' => '🌔',
':wc:' => '🚾',
@@ -1206,432 +1131,87 @@
':wedding:' => '💒',
':whale:' => '🐳',
':whale2:' => '🐋',
- ':wheel_of_dharma:' => '☸',
+ ':wheel:' => '🛞',
':wheelchair:' => '♿',
+ ':white_cane:' => '🦯',
':white_check_mark:' => '✅',
':white_circle:' => '⚪',
':white_flower:' => '💮',
+ ':white_hair:' => '🦳',
+ ':white_heart:' => '🤍',
':white_large_square:' => '⬜',
':white_medium_small_square:' => '◽',
- ':white_medium_square:' => '◻',
- ':white_small_square:' => '▫',
':white_square_button:' => '🔳',
- ':white_sun_cloud:' => '🌥',
- ':white_sun_rain_cloud:' => '🌦',
- ':white_sun_small_cloud:' => '🌤',
':wilted_rose:' => '🥀',
- ':wind_blowing_face:' => '🌬',
':wind_chime:' => '🎐',
+ ':window:' => '🪟',
':wine_glass:' => '🍷',
+ ':wing:' => '🪽',
':wink:' => '😉',
+ ':wireless:' => '🛜',
':wolf:' => '🐺',
':woman:' => '👩',
+ ':woman_with_headscarf:' => '🧕',
':womans_clothes:' => '👚',
':womans_hat:' => '👒',
':womens:' => '🚺',
+ ':wood:' => '🪵',
+ ':woozy_face:' => '🥴',
+ ':worm:' => '🪱',
':worried:' => '😟',
':wrench:' => '🔧',
':wrestlers:' => '🤼',
- ':writing_hand:' => '✍',
':x:' => '❌',
+ ':x_ray:' => '🩻',
+ ':yarn:' => '🧶',
+ ':yawning_face:' => '🥱',
+ ':yellow_circle:' => '🟡',
':yellow_heart:' => '💛',
+ ':yellow_square:' => '🟨',
':yen:' => '💴',
- ':yin_yang:' => '☯',
+ ':yo_yo:' => '🪀',
':yum:' => '😋',
+ ':zany_face:' => '🤪',
':zap:' => '⚡',
+ ':zebra:' => '🦓',
':zipper_mouth:' => '🤐',
+ ':zombie:' => '🧟',
':zzz:' => '💤',
- ':+1_tone1:' => '👍🏻',
- ':+1_tone2:' => '👍🏼',
- ':+1_tone3:' => '👍🏽',
- ':+1_tone4:' => '👍🏾',
- ':+1_tone5:' => '👍🏿',
- ':-1_tone1:' => '👎🏻',
- ':-1_tone2:' => '👎🏼',
- ':-1_tone3:' => '👎🏽',
- ':-1_tone4:' => '👎🏾',
- ':-1_tone5:' => '👎🏿',
- ':ac:' => '🇦🇨',
- ':ad:' => '🇦🇩',
- ':ae:' => '🇦🇪',
- ':af:' => '🇦🇫',
- ':ag:' => '🇦🇬',
- ':ai:' => '🇦🇮',
- ':al:' => '🇦🇱',
- ':am:' => '🇦🇲',
- ':ao:' => '🇦🇴',
- ':aq:' => '🇦🇶',
- ':ar:' => '🇦🇷',
- ':as:' => '🇦🇸',
- ':at:' => '🇦🇹',
- ':au:' => '🇦🇺',
- ':aw:' => '🇦🇼',
- ':ax:' => '🇦🇽',
- ':az:' => '🇦🇿',
- ':ba:' => '🇧🇦',
- ':back_of_hand_tone1:' => '🤚🏻',
- ':back_of_hand_tone2:' => '🤚🏼',
- ':back_of_hand_tone3:' => '🤚🏽',
- ':back_of_hand_tone4:' => '🤚🏾',
- ':back_of_hand_tone5:' => '🤚🏿',
- ':bb:' => '🇧🇧',
- ':bd:' => '🇧🇩',
- ':be:' => '🇧🇪',
- ':bf:' => '🇧🇫',
- ':bg:' => '🇧🇬',
- ':bh:' => '🇧🇭',
- ':bi:' => '🇧🇮',
- ':bj:' => '🇧🇯',
- ':bl:' => '🇧🇱',
- ':bm:' => '🇧🇲',
- ':bn:' => '🇧🇳',
- ':bo:' => '🇧🇴',
- ':bq:' => '🇧🇶',
- ':br:' => '🇧🇷',
- ':bs:' => '🇧🇸',
- ':bt:' => '🇧🇹',
- ':bv:' => '🇧🇻',
- ':bw:' => '🇧🇼',
- ':by:' => '🇧🇾',
- ':bz:' => '🇧🇿',
- ':ca:' => '🇨🇦',
- ':call_me_hand_tone1:' => '🤙🏻',
- ':call_me_hand_tone2:' => '🤙🏼',
- ':call_me_hand_tone3:' => '🤙🏽',
- ':call_me_hand_tone4:' => '🤙🏾',
- ':call_me_hand_tone5:' => '🤙🏿',
- ':cc:' => '🇨🇨',
- ':cf:' => '🇨🇫',
- ':cg:' => '🇨🇬',
- ':ch:' => '🇨🇭',
- ':chile:' => '🇨🇱',
- ':ci:' => '🇨🇮',
- ':ck:' => '🇨🇰',
- ':cm:' => '🇨🇲',
- ':cn:' => '🇨🇳',
- ':co:' => '🇨🇴',
- ':congo:' => '🇨🇩',
- ':cp:' => '🇨🇵',
- ':cr:' => '🇨🇷',
- ':cu:' => '🇨🇺',
- ':cv:' => '🇨🇻',
- ':cw:' => '🇨🇼',
- ':cx:' => '🇨🇽',
- ':cy:' => '🇨🇾',
- ':cz:' => '🇨🇿',
- ':de:' => '🇩🇪',
- ':dg:' => '🇩🇬',
- ':dj:' => '🇩🇯',
- ':dk:' => '🇩🇰',
- ':dm:' => '🇩🇲',
- ':do:' => '🇩🇴',
- ':dz:' => '🇩🇿',
- ':ea:' => '🇪🇦',
- ':ec:' => '🇪🇨',
- ':ee:' => '🇪🇪',
- ':eg:' => '🇪🇬',
- ':eh:' => '🇪🇭',
- ':er:' => '🇪🇷',
- ':es:' => '🇪🇸',
- ':et:' => '🇪🇹',
- ':eu:' => '🇪🇺',
- ':expecting_woman_tone1:' => '🤰🏻',
- ':expecting_woman_tone2:' => '🤰🏼',
- ':expecting_woman_tone3:' => '🤰🏽',
- ':expecting_woman_tone4:' => '🤰🏾',
- ':expecting_woman_tone5:' => '🤰🏿',
- ':facepalm_tone1:' => '🤦🏻',
- ':facepalm_tone2:' => '🤦🏼',
- ':facepalm_tone3:' => '🤦🏽',
- ':facepalm_tone4:' => '🤦🏾',
- ':facepalm_tone5:' => '🤦🏿',
- ':fi:' => '🇫🇮',
- ':fj:' => '🇫🇯',
- ':fk:' => '🇫🇰',
- ':fm:' => '🇫🇲',
- ':fo:' => '🇫🇴',
- ':fr:' => '🇫🇷',
- ':ga:' => '🇬🇦',
- ':gb:' => '🇬🇧',
- ':gd:' => '🇬🇩',
- ':ge:' => '🇬🇪',
- ':gf:' => '🇬🇫',
- ':gg:' => '🇬🇬',
- ':gh:' => '🇬🇭',
- ':gi:' => '🇬🇮',
- ':gl:' => '🇬🇱',
- ':gm:' => '🇬🇲',
- ':gn:' => '🇬🇳',
- ':gp:' => '🇬🇵',
- ':gq:' => '🇬🇶',
- ':gr:' => '🇬🇷',
- ':grandma_tone1:' => '👵🏻',
- ':grandma_tone2:' => '👵🏼',
- ':grandma_tone3:' => '👵🏽',
- ':grandma_tone4:' => '👵🏾',
- ':grandma_tone5:' => '👵🏿',
- ':gs:' => '🇬🇸',
- ':gt:' => '🇬🇹',
- ':gu:' => '🇬🇺',
- ':gw:' => '🇬🇼',
- ':gy:' => '🇬🇾',
- ':hand_with_index_and_middle_fingers_crossed_tone1:' => '🤞🏻',
- ':hand_with_index_and_middle_fingers_crossed_tone2:' => '🤞🏼',
- ':hand_with_index_and_middle_fingers_crossed_tone3:' => '🤞🏽',
- ':hand_with_index_and_middle_fingers_crossed_tone4:' => '🤞🏾',
- ':hand_with_index_and_middle_fingers_crossed_tone5:' => '🤞🏿',
- ':hk:' => '🇭🇰',
- ':hm:' => '🇭🇲',
- ':hn:' => '🇭🇳',
- ':hr:' => '🇭🇷',
- ':ht:' => '🇭🇹',
- ':hu:' => '🇭🇺',
- ':ic:' => '🇮🇨',
- ':ie:' => '🇮🇪',
- ':il:' => '🇮🇱',
- ':im:' => '🇮🇲',
- ':in:' => '🇮🇳',
- ':indonesia:' => '🇮🇩',
- ':io:' => '🇮🇴',
- ':iq:' => '🇮🇶',
- ':ir:' => '🇮🇷',
- ':is:' => '🇮🇸',
- ':it:' => '🇮🇹',
- ':je:' => '🇯🇪',
- ':jm:' => '🇯🇲',
- ':jo:' => '🇯🇴',
- ':jp:' => '🇯🇵',
- ':juggler_tone1:' => '🤹🏻',
- ':juggler_tone2:' => '🤹🏼',
- ':juggler_tone3:' => '🤹🏽',
- ':juggler_tone4:' => '🤹🏾',
- ':juggler_tone5:' => '🤹🏿',
- ':ke:' => '🇰🇪',
- ':keycap_asterisk:' => '*⃣',
- ':kg:' => '🇰🇬',
- ':kh:' => '🇰🇭',
- ':ki:' => '🇰🇮',
- ':km:' => '🇰🇲',
- ':kn:' => '🇰🇳',
- ':kp:' => '🇰🇵',
- ':kr:' => '🇰🇷',
- ':kw:' => '🇰🇼',
- ':ky:' => '🇰🇾',
- ':kz:' => '🇰🇿',
- ':la:' => '🇱🇦',
- ':lb:' => '🇱🇧',
- ':lc:' => '🇱🇨',
- ':left_fist_tone1:' => '🤛🏻',
- ':left_fist_tone2:' => '🤛🏼',
- ':left_fist_tone3:' => '🤛🏽',
- ':left_fist_tone4:' => '🤛🏾',
- ':left_fist_tone5:' => '🤛🏿',
- ':li:' => '🇱🇮',
- ':lk:' => '🇱🇰',
- ':lr:' => '🇱🇷',
- ':ls:' => '🇱🇸',
- ':lt:' => '🇱🇹',
- ':lu:' => '🇱🇺',
- ':lv:' => '🇱🇻',
- ':ly:' => '🇱🇾',
- ':ma:' => '🇲🇦',
- ':male_dancer_tone1:' => '🕺🏻',
- ':male_dancer_tone2:' => '🕺🏼',
- ':male_dancer_tone3:' => '🕺🏽',
- ':male_dancer_tone4:' => '🕺🏾',
- ':male_dancer_tone5:' => '🕺🏿',
- ':mc:' => '🇲🇨',
- ':md:' => '🇲🇩',
- ':me:' => '🇲🇪',
- ':mf:' => '🇲🇫',
- ':mg:' => '🇲🇬',
- ':mh:' => '🇲🇭',
- ':mk:' => '🇲🇰',
- ':ml:' => '🇲🇱',
- ':mm:' => '🇲🇲',
- ':mn:' => '🇲🇳',
- ':mo:' => '🇲🇴',
- ':mother_christmas_tone1:' => '🤶🏻',
- ':mother_christmas_tone2:' => '🤶🏼',
- ':mother_christmas_tone3:' => '🤶🏽',
- ':mother_christmas_tone4:' => '🤶🏾',
- ':mother_christmas_tone5:' => '🤶🏿',
- ':mp:' => '🇲🇵',
- ':mq:' => '🇲🇶',
- ':mr:' => '🇲🇷',
- ':ms:' => '🇲🇸',
- ':mt:' => '🇲🇹',
- ':mu:' => '🇲🇺',
- ':mv:' => '🇲🇻',
- ':mw:' => '🇲🇼',
- ':mx:' => '🇲🇽',
- ':my:' => '🇲🇾',
- ':mz:' => '🇲🇿',
- ':na:' => '🇳🇦',
- ':nc:' => '🇳🇨',
- ':ne:' => '🇳🇪',
- ':nf:' => '🇳🇫',
- ':ni:' => '🇳🇮',
- ':nigeria:' => '🇳🇬',
- ':nl:' => '🇳🇱',
- ':no:' => '🇳🇴',
- ':np:' => '🇳🇵',
- ':nr:' => '🇳🇷',
- ':nu:' => '🇳🇺',
- ':nz:' => '🇳🇿',
- ':om:' => '🇴🇲',
- ':pa:' => '🇵🇦',
- ':pe:' => '🇵🇪',
- ':person_doing_cartwheel_tone1:' => '🤸🏻',
- ':person_doing_cartwheel_tone2:' => '🤸🏼',
- ':person_doing_cartwheel_tone3:' => '🤸🏽',
- ':person_doing_cartwheel_tone4:' => '🤸🏾',
- ':person_doing_cartwheel_tone5:' => '🤸🏿',
- ':person_with_ball_tone1:' => '⛹🏻',
- ':person_with_ball_tone2:' => '⛹🏼',
- ':person_with_ball_tone3:' => '⛹🏽',
- ':person_with_ball_tone4:' => '⛹🏾',
- ':person_with_ball_tone5:' => '⛹🏿',
- ':pf:' => '🇵🇫',
- ':pg:' => '🇵🇬',
- ':ph:' => '🇵🇭',
- ':pk:' => '🇵🇰',
- ':pl:' => '🇵🇱',
- ':pm:' => '🇵🇲',
- ':pn:' => '🇵🇳',
- ':pr:' => '🇵🇷',
- ':ps:' => '🇵🇸',
- ':pt:' => '🇵🇹',
- ':pw:' => '🇵🇼',
- ':py:' => '🇵🇾',
- ':qa:' => '🇶🇦',
- ':rainbow_flag:' => '🏳🌈',
- ':raised_hand_with_fingers_splayed_tone1:' => '🖐🏻',
- ':raised_hand_with_fingers_splayed_tone2:' => '🖐🏼',
- ':raised_hand_with_fingers_splayed_tone3:' => '🖐🏽',
- ':raised_hand_with_fingers_splayed_tone4:' => '🖐🏾',
- ':raised_hand_with_fingers_splayed_tone5:' => '🖐🏿',
- ':raised_hand_with_part_between_middle_and_ring_fingers_tone1:' => '🖖🏻',
- ':raised_hand_with_part_between_middle_and_ring_fingers_tone2:' => '🖖🏼',
- ':raised_hand_with_part_between_middle_and_ring_fingers_tone3:' => '🖖🏽',
- ':raised_hand_with_part_between_middle_and_ring_fingers_tone4:' => '🖖🏾',
- ':raised_hand_with_part_between_middle_and_ring_fingers_tone5:' => '🖖🏿',
- ':re:' => '🇷🇪',
- ':reversed_hand_with_middle_finger_extended_tone1:' => '🖕🏻',
- ':reversed_hand_with_middle_finger_extended_tone2:' => '🖕🏼',
- ':reversed_hand_with_middle_finger_extended_tone3:' => '🖕🏽',
- ':reversed_hand_with_middle_finger_extended_tone4:' => '🖕🏾',
- ':reversed_hand_with_middle_finger_extended_tone5:' => '🖕🏿',
- ':right_fist_tone1:' => '🤜🏻',
- ':right_fist_tone2:' => '🤜🏼',
- ':right_fist_tone3:' => '🤜🏽',
- ':right_fist_tone4:' => '🤜🏾',
- ':right_fist_tone5:' => '🤜🏿',
- ':ro:' => '🇷🇴',
- ':rs:' => '🇷🇸',
- ':ru:' => '🇷🇺',
- ':rw:' => '🇷🇼',
- ':saudi:' => '🇸🇦',
- ':saudiarabia:' => '🇸🇦',
- ':sb:' => '🇸🇧',
- ':sc:' => '🇸🇨',
- ':sd:' => '🇸🇩',
- ':se:' => '🇸🇪',
- ':sg:' => '🇸🇬',
- ':sh:' => '🇸🇭',
- ':shaking_hands_tone1:' => '🤝🏻',
- ':shaking_hands_tone2:' => '🤝🏼',
- ':shaking_hands_tone3:' => '🤝🏽',
- ':shaking_hands_tone4:' => '🤝🏾',
- ':shaking_hands_tone5:' => '🤝🏿',
- ':si:' => '🇸🇮',
- ':sign_of_the_horns_tone1:' => '🤘🏻',
- ':sign_of_the_horns_tone2:' => '🤘🏼',
- ':sign_of_the_horns_tone3:' => '🤘🏽',
- ':sign_of_the_horns_tone4:' => '🤘🏾',
- ':sign_of_the_horns_tone5:' => '🤘🏿',
- ':sj:' => '🇸🇯',
- ':sk:' => '🇸🇰',
- ':sl:' => '🇸🇱',
- ':sleuth_or_spy_tone1:' => '🕵🏻',
- ':sleuth_or_spy_tone2:' => '🕵🏼',
- ':sleuth_or_spy_tone3:' => '🕵🏽',
- ':sleuth_or_spy_tone4:' => '🕵🏾',
- ':sleuth_or_spy_tone5:' => '🕵🏿',
- ':sm:' => '🇸🇲',
- ':sn:' => '🇸🇳',
- ':so:' => '🇸🇴',
- ':sr:' => '🇸🇷',
- ':ss:' => '🇸🇸',
- ':st:' => '🇸🇹',
- ':sv:' => '🇸🇻',
- ':sx:' => '🇸🇽',
- ':sy:' => '🇸🇾',
- ':sz:' => '🇸🇿',
- ':ta:' => '🇹🇦',
- ':tc:' => '🇹🇨',
- ':td:' => '🇹🇩',
- ':tf:' => '🇹🇫',
- ':tg:' => '🇹🇬',
- ':th:' => '🇹🇭',
- ':tj:' => '🇹🇯',
- ':tk:' => '🇹🇰',
- ':tl:' => '🇹🇱',
- ':tn:' => '🇹🇳',
- ':to:' => '🇹🇴',
- ':tr:' => '🇹🇷',
- ':tt:' => '🇹🇹',
- ':turkmenistan:' => '🇹🇲',
- ':tuvalu:' => '🇹🇻',
- ':tuxedo_tone1:' => '🤵🏻',
- ':tuxedo_tone2:' => '🤵🏼',
- ':tuxedo_tone3:' => '🤵🏽',
- ':tuxedo_tone4:' => '🤵🏾',
- ':tuxedo_tone5:' => '🤵🏿',
- ':tw:' => '🇹🇼',
- ':tz:' => '🇹🇿',
- ':ua:' => '🇺🇦',
- ':ug:' => '🇺🇬',
- ':um:' => '🇺🇲',
- ':us:' => '🇺🇸',
- ':uy:' => '🇺🇾',
- ':uz:' => '🇺🇿',
- ':va:' => '🇻🇦',
- ':vc:' => '🇻🇨',
- ':ve:' => '🇻🇪',
- ':vg:' => '🇻🇬',
- ':vi:' => '🇻🇮',
- ':vn:' => '🇻🇳',
- ':vu:' => '🇻🇺',
- ':weight_lifter_tone1:' => '🏋🏻',
- ':weight_lifter_tone2:' => '🏋🏼',
- ':weight_lifter_tone3:' => '🏋🏽',
- ':weight_lifter_tone4:' => '🏋🏾',
- ':weight_lifter_tone5:' => '🏋🏿',
- ':wf:' => '🇼🇫',
- ':wrestling_tone1:' => '🤼🏻',
- ':wrestling_tone2:' => '🤼🏼',
- ':wrestling_tone3:' => '🤼🏽',
- ':wrestling_tone4:' => '🤼🏾',
- ':wrestling_tone5:' => '🤼🏿',
- ':ws:' => '🇼🇸',
- ':xk:' => '🇽🇰',
- ':ye:' => '🇾🇪',
- ':yt:' => '🇾🇹',
- ':za:' => '🇿🇦',
- ':zm:' => '🇿🇲',
- ':zw:' => '🇿🇼',
+ ':a:' => '🅰️',
+ ':airplane:' => '✈️',
+ ':airplane_small:' => '🛩️',
+ ':alembic:' => '⚗️',
':angel_tone1:' => '👼🏻',
':angel_tone2:' => '👼🏼',
':angel_tone3:' => '👼🏽',
':angel_tone4:' => '👼🏾',
':angel_tone5:' => '👼🏿',
- ':asterisk:' => '*⃣',
+ ':anger_right:' => '🗯️',
+ ':arrow_backward:' => '◀️',
+ ':arrow_down:' => '⬇️',
+ ':arrow_forward:' => '▶️',
+ ':arrow_heading_down:' => '⤵️',
+ ':arrow_heading_up:' => '⤴️',
+ ':arrow_left:' => '⬅️',
+ ':arrow_lower_left:' => '↙️',
+ ':arrow_lower_right:' => '↘️',
+ ':arrow_right:' => '➡️',
+ ':arrow_right_hook:' => '↪️',
+ ':arrow_up:' => '⬆️',
+ ':arrow_up_down:' => '↕️',
+ ':arrow_upper_left:' => '↖️',
+ ':arrow_upper_right:' => '↗️',
+ ':atom:' => '⚛️',
+ ':b:' => '🅱️',
':baby_tone1:' => '👶🏻',
':baby_tone2:' => '👶🏼',
':baby_tone3:' => '👶🏽',
':baby_tone4:' => '👶🏾',
':baby_tone5:' => '👶🏿',
+ ':ballot_box:' => '🗳️',
+ ':ballot_box_with_check:' => '☑️',
+ ':bangbang:' => '‼️',
+ ':basketball_player:' => '⛹️',
':basketball_player_tone1:' => '⛹🏻',
':basketball_player_tone2:' => '⛹🏼',
':basketball_player_tone3:' => '⛹🏽',
@@ -1642,11 +1222,19 @@
':bath_tone3:' => '🛀🏽',
':bath_tone4:' => '🛀🏾',
':bath_tone5:' => '🛀🏿',
+ ':beach:' => '🏖️',
+ ':beach_umbrella:' => '⛱️',
+ ':bed:' => '🛏️',
+ ':bellhop:' => '🛎️',
':bicyclist_tone1:' => '🚴🏻',
':bicyclist_tone2:' => '🚴🏼',
':bicyclist_tone3:' => '🚴🏽',
':bicyclist_tone4:' => '🚴🏾',
':bicyclist_tone5:' => '🚴🏿',
+ ':biohazard:' => '☣️',
+ ':black_medium_square:' => '◼️',
+ ':black_nib:' => '✒️',
+ ':black_small_square:' => '▪️',
':bow_tone1:' => '🙇🏻',
':bow_tone2:' => '🙇🏼',
':bow_tone3:' => '🙇🏽',
@@ -1657,51 +1245,130 @@
':boy_tone3:' => '👦🏽',
':boy_tone4:' => '👦🏾',
':boy_tone5:' => '👦🏿',
+ ':breast_feeding_dark_skin_tone:' => '🤱🏿',
+ ':breast_feeding_light_skin_tone:' => '🤱🏻',
+ ':breast_feeding_medium_dark_skin_tone:' => '🤱🏾',
+ ':breast_feeding_medium_light_skin_tone:' => '🤱🏼',
+ ':breast_feeding_medium_skin_tone:' => '🤱🏽',
':bride_with_veil_tone1:' => '👰🏻',
':bride_with_veil_tone2:' => '👰🏼',
':bride_with_veil_tone3:' => '👰🏽',
':bride_with_veil_tone4:' => '👰🏾',
':bride_with_veil_tone5:' => '👰🏿',
+ ':calendar_spiral:' => '🗓️',
':call_me_tone1:' => '🤙🏻',
':call_me_tone2:' => '🤙🏼',
':call_me_tone3:' => '🤙🏽',
':call_me_tone4:' => '🤙🏾',
':call_me_tone5:' => '🤙🏿',
+ ':camping:' => '🏕️',
+ ':candle:' => '🕯️',
+ ':card_box:' => '🗃️',
':cartwheel_tone1:' => '🤸🏻',
':cartwheel_tone2:' => '🤸🏼',
':cartwheel_tone3:' => '🤸🏽',
':cartwheel_tone4:' => '🤸🏾',
':cartwheel_tone5:' => '🤸🏿',
+ ':chains:' => '⛓️',
+ ':chess_pawn:' => '♟️',
+ ':child_dark_skin_tone:' => '🧒🏿',
+ ':child_light_skin_tone:' => '🧒🏻',
+ ':child_medium_dark_skin_tone:' => '🧒🏾',
+ ':child_medium_light_skin_tone:' => '🧒🏼',
+ ':child_medium_skin_tone:' => '🧒🏽',
+ ':chipmunk:' => '🐿️',
+ ':cityscape:' => '🏙️',
':clap_tone1:' => '👏🏻',
':clap_tone2:' => '👏🏼',
':clap_tone3:' => '👏🏽',
':clap_tone4:' => '👏🏾',
':clap_tone5:' => '👏🏿',
+ ':classical_building:' => '🏛️',
+ ':clock:' => '🕰️',
+ ':cloud:' => '☁️',
+ ':cloud_lightning:' => '🌩️',
+ ':cloud_rain:' => '🌧️',
+ ':cloud_snow:' => '🌨️',
+ ':cloud_tornado:' => '🌪️',
+ ':clubs:' => '♣️',
+ ':coffin:' => '⚰️',
+ ':comet:' => '☄️',
+ ':compression:' => '🗜️',
+ ':congratulations:' => '㊗️',
+ ':construction_site:' => '🏗️',
':construction_worker_tone1:' => '👷🏻',
':construction_worker_tone2:' => '👷🏼',
':construction_worker_tone3:' => '👷🏽',
':construction_worker_tone4:' => '👷🏾',
':construction_worker_tone5:' => '👷🏿',
+ ':control_knobs:' => '🎛️',
':cop_tone1:' => '👮🏻',
':cop_tone2:' => '👮🏼',
':cop_tone3:' => '👮🏽',
':cop_tone4:' => '👮🏾',
':cop_tone5:' => '👮🏿',
+ ':copyright:' => '©️',
+ ':couch:' => '🛋️',
+ ':couple_with_heart_dark_skin_tone:' => '💑🏿',
+ ':couple_with_heart_light_skin_tone:' => '💑🏻',
+ ':couple_with_heart_medium_dark_skin_tone:' => '💑🏾',
+ ':couple_with_heart_medium_light_skin_tone:' => '💑🏼',
+ ':couple_with_heart_medium_skin_tone:' => '💑🏽',
+ ':crayon:' => '🖍️',
+ ':cross:' => '✝️',
+ ':crossed_swords:' => '⚔️',
+ ':cruise_ship:' => '🛳️',
+ ':dagger:' => '🗡️',
':dancer_tone1:' => '💃🏻',
':dancer_tone2:' => '💃🏼',
':dancer_tone3:' => '💃🏽',
':dancer_tone4:' => '💃🏾',
':dancer_tone5:' => '💃🏿',
+ ':dark_sunglasses:' => '🕶️',
+ ':deaf_person_dark_skin_tone:' => '🧏🏿',
+ ':deaf_person_light_skin_tone:' => '🧏🏻',
+ ':deaf_person_medium_dark_skin_tone:' => '🧏🏾',
+ ':deaf_person_medium_light_skin_tone:' => '🧏🏼',
+ ':deaf_person_medium_skin_tone:' => '🧏🏽',
+ ':desert:' => '🏜️',
+ ':desktop:' => '🖥️',
+ ':diamonds:' => '♦️',
+ ':dividers:' => '🗂️',
+ ':dove:' => '🕊️',
':ear_tone1:' => '👂🏻',
':ear_tone2:' => '👂🏼',
':ear_tone3:' => '👂🏽',
':ear_tone4:' => '👂🏾',
':ear_tone5:' => '👂🏿',
+ ':ear_with_hearing_aid_dark_skin_tone:' => '🦻🏿',
+ ':ear_with_hearing_aid_light_skin_tone:' => '🦻🏻',
+ ':ear_with_hearing_aid_medium_dark_skin_tone:' => '🦻🏾',
+ ':ear_with_hearing_aid_medium_light_skin_tone:' => '🦻🏼',
+ ':ear_with_hearing_aid_medium_skin_tone:' => '🦻🏽',
+ ':eight_pointed_black_star:' => '✴️',
+ ':eight_spoked_asterisk:' => '✳️',
+ ':eject:' => '⏏️',
+ ':elf_dark_skin_tone:' => '🧝🏿',
+ ':elf_light_skin_tone:' => '🧝🏻',
+ ':elf_medium_dark_skin_tone:' => '🧝🏾',
+ ':elf_medium_light_skin_tone:' => '🧝🏼',
+ ':elf_medium_skin_tone:' => '🧝🏽',
+ ':envelope:' => '✉️',
+ ':eye:' => '👁️',
':face_palm_tone1:' => '🤦🏻',
':face_palm_tone2:' => '🤦🏼',
':face_palm_tone3:' => '🤦🏽',
':face_palm_tone4:' => '🤦🏾',
':face_palm_tone5:' => '🤦🏿',
+ ':fairy_dark_skin_tone:' => '🧚🏿',
+ ':fairy_light_skin_tone:' => '🧚🏻',
+ ':fairy_medium_dark_skin_tone:' => '🧚🏾',
+ ':fairy_medium_light_skin_tone:' => '🧚🏼',
+ ':fairy_medium_skin_tone:' => '🧚🏽',
+ ':female_sign:' => '♀️',
+ ':ferry:' => '⛴️',
+ ':file_cabinet:' => '🗄️',
+ ':film_frames:' => '🎞️',
':fingers_crossed_tone1:' => '🤞🏻',
':fingers_crossed_tone2:' => '🤞🏼',
':fingers_crossed_tone3:' => '🤞🏽',
@@ -1951,6 +1618,7 @@
':flag_ua:' => '🇺🇦',
':flag_ug:' => '🇺🇬',
':flag_um:' => '🇺🇲',
+ ':flag_united_nations:' => '🇺🇳',
':flag_us:' => '🇺🇸',
':flag_uy:' => '🇺🇾',
':flag_uz:' => '🇺🇿',
@@ -1962,6 +1630,7 @@
':flag_vn:' => '🇻🇳',
':flag_vu:' => '🇻🇺',
':flag_wf:' => '🇼🇫',
+ ':flag_white:' => '🏳️',
':flag_ws:' => '🇼🇸',
':flag_xk:' => '🇽🇰',
':flag_ye:' => '🇾🇪',
@@ -1969,12 +1638,23 @@
':flag_za:' => '🇿🇦',
':flag_zm:' => '🇿🇲',
':flag_zw:' => '🇿🇼',
- ':gay_pride_flag:' => '🏳🌈',
+ ':fleur-de-lis:' => '⚜️',
+ ':fog:' => '🌫️',
+ ':foot_dark_skin_tone:' => '🦶🏿',
+ ':foot_light_skin_tone:' => '🦶🏻',
+ ':foot_medium_dark_skin_tone:' => '🦶🏾',
+ ':foot_medium_light_skin_tone:' => '🦶🏼',
+ ':foot_medium_skin_tone:' => '🦶🏽',
+ ':fork_knife_plate:' => '🍽️',
+ ':frame_photo:' => '🖼️',
+ ':frowning2:' => '☹️',
+ ':gear:' => '⚙️',
':girl_tone1:' => '👧🏻',
':girl_tone2:' => '👧🏼',
':girl_tone3:' => '👧🏽',
':girl_tone4:' => '👧🏾',
':girl_tone5:' => '👧🏿',
+ ':golfer:' => '🏌️',
':guardsman_tone1:' => '💂🏻',
':guardsman_tone2:' => '💂🏼',
':guardsman_tone3:' => '💂🏽',
@@ -1985,11 +1665,18 @@
':haircut_tone3:' => '💇🏽',
':haircut_tone4:' => '💇🏾',
':haircut_tone5:' => '💇🏿',
+ ':hammer_pick:' => '⚒️',
+ ':hand_splayed:' => '🖐️',
':hand_splayed_tone1:' => '🖐🏻',
':hand_splayed_tone2:' => '🖐🏼',
':hand_splayed_tone3:' => '🖐🏽',
':hand_splayed_tone4:' => '🖐🏾',
':hand_splayed_tone5:' => '🖐🏿',
+ ':hand_with_index_finger_and_thumb_crossed_dark_skin_tone:' => '🫰🏿',
+ ':hand_with_index_finger_and_thumb_crossed_light_skin_tone:' => '🫰🏻',
+ ':hand_with_index_finger_and_thumb_crossed_medium_dark_skin_tone:' => '🫰🏾',
+ ':hand_with_index_finger_and_thumb_crossed_medium_light_skin_tone:' => '🫰🏼',
+ ':hand_with_index_finger_and_thumb_crossed_medium_skin_tone:' => '🫰🏽',
':handball_tone1:' => '🤾🏻',
':handball_tone2:' => '🤾🏼',
':handball_tone3:' => '🤾🏽',
@@ -2000,32 +1687,98 @@
':handshake_tone3:' => '🤝🏽',
':handshake_tone4:' => '🤝🏾',
':handshake_tone5:' => '🤝🏿',
- ':hash:' => '#⃣',
+ ':heart:' => '❤️',
+ ':heart_exclamation:' => '❣️',
+ ':heart_hands_dark_skin_tone:' => '🫶🏿',
+ ':heart_hands_light_skin_tone:' => '🫶🏻',
+ ':heart_hands_medium_dark_skin_tone:' => '🫶🏾',
+ ':heart_hands_medium_light_skin_tone:' => '🫶🏼',
+ ':heart_hands_medium_skin_tone:' => '🫶🏽',
+ ':hearts:' => '♥️',
+ ':heavy_check_mark:' => '✔️',
+ ':heavy_multiplication_x:' => '✖️',
+ ':helmet_with_cross:' => '⛑️',
+ ':hole:' => '🕳️',
+ ':homes:' => '🏘️',
':horse_racing_tone1:' => '🏇🏻',
':horse_racing_tone2:' => '🏇🏼',
':horse_racing_tone3:' => '🏇🏽',
':horse_racing_tone4:' => '🏇🏾',
':horse_racing_tone5:' => '🏇🏿',
+ ':hot_pepper:' => '🌶️',
+ ':hotsprings:' => '♨️',
+ ':house_abandoned:' => '🏚️',
+ ':ice_skate:' => '⛸️',
+ ':index_pointing_at_the_viewer_dark_skin_tone:' => '🫵🏿',
+ ':index_pointing_at_the_viewer_light_skin_tone:' => '🫵🏻',
+ ':index_pointing_at_the_viewer_medium_dark_skin_tone:' => '🫵🏾',
+ ':index_pointing_at_the_viewer_medium_light_skin_tone:' => '🫵🏼',
+ ':index_pointing_at_the_viewer_medium_skin_tone:' => '🫵🏽',
+ ':infinity:' => '♾️',
':information_desk_person_tone1:' => '💁🏻',
':information_desk_person_tone2:' => '💁🏼',
':information_desk_person_tone3:' => '💁🏽',
':information_desk_person_tone4:' => '💁🏾',
':information_desk_person_tone5:' => '💁🏿',
+ ':information_source:' => 'ℹ️',
+ ':interrobang:' => '⁉️',
+ ':island:' => '🏝️',
+ ':joystick:' => '🕹️',
':juggling_tone1:' => '🤹🏻',
':juggling_tone2:' => '🤹🏼',
':juggling_tone3:' => '🤹🏽',
':juggling_tone4:' => '🤹🏾',
':juggling_tone5:' => '🤹🏿',
+ ':key2:' => '🗝️',
+ ':keyboard:' => '⌨️',
+ ':kiss_dark_skin_tone:' => '💏🏿',
+ ':kiss_light_skin_tone:' => '💏🏻',
+ ':kiss_medium_dark_skin_tone:' => '💏🏾',
+ ':kiss_medium_light_skin_tone:' => '💏🏼',
+ ':kiss_medium_skin_tone:' => '💏🏽',
+ ':label:' => '🏷️',
':left_facing_fist_tone1:' => '🤛🏻',
':left_facing_fist_tone2:' => '🤛🏼',
':left_facing_fist_tone3:' => '🤛🏽',
':left_facing_fist_tone4:' => '🤛🏾',
':left_facing_fist_tone5:' => '🤛🏿',
+ ':left_right_arrow:' => '↔️',
+ ':leftwards_arrow_with_hook:' => '↩️',
+ ':leftwards_hand_dark_skin_tone:' => '🫲🏿',
+ ':leftwards_hand_light_skin_tone:' => '🫲🏻',
+ ':leftwards_hand_medium_dark_skin_tone:' => '🫲🏾',
+ ':leftwards_hand_medium_light_skin_tone:' => '🫲🏼',
+ ':leftwards_hand_medium_skin_tone:' => '🫲🏽',
+ ':leftwards_pushing_hand_dark_skin_tone:' => '🫷🏿',
+ ':leftwards_pushing_hand_light_skin_tone:' => '🫷🏻',
+ ':leftwards_pushing_hand_medium_dark_skin_tone:' => '🫷🏾',
+ ':leftwards_pushing_hand_medium_light_skin_tone:' => '🫷🏼',
+ ':leftwards_pushing_hand_medium_skin_tone:' => '🫷🏽',
+ ':leg_dark_skin_tone:' => '🦵🏿',
+ ':leg_light_skin_tone:' => '🦵🏻',
+ ':leg_medium_dark_skin_tone:' => '🦵🏾',
+ ':leg_medium_light_skin_tone:' => '🦵🏼',
+ ':leg_medium_skin_tone:' => '🦵🏽',
+ ':level_slider:' => '🎚️',
+ ':levitate:' => '🕴️',
+ ':lifter:' => '🏋️',
':lifter_tone1:' => '🏋🏻',
':lifter_tone2:' => '🏋🏼',
':lifter_tone3:' => '🏋🏽',
':lifter_tone4:' => '🏋🏾',
':lifter_tone5:' => '🏋🏿',
+ ':love_you_gesture_dark_skin_tone:' => '🤟🏿',
+ ':love_you_gesture_light_skin_tone:' => '🤟🏻',
+ ':love_you_gesture_medium_dark_skin_tone:' => '🤟🏾',
+ ':love_you_gesture_medium_light_skin_tone:' => '🤟🏼',
+ ':love_you_gesture_medium_skin_tone:' => '🤟🏽',
+ ':m:' => 'Ⓜ️',
+ ':mage_dark_skin_tone:' => '🧙🏿',
+ ':mage_light_skin_tone:' => '🧙🏻',
+ ':mage_medium_dark_skin_tone:' => '🧙🏾',
+ ':mage_medium_light_skin_tone:' => '🧙🏼',
+ ':mage_medium_skin_tone:' => '🧙🏽',
+ ':male_sign:' => '♂️',
':man_dancing_tone1:' => '🕺🏻',
':man_dancing_tone2:' => '🕺🏼',
':man_dancing_tone3:' => '🕺🏽',
@@ -2051,26 +1804,46 @@
':man_with_turban_tone3:' => '👳🏽',
':man_with_turban_tone4:' => '👳🏾',
':man_with_turban_tone5:' => '👳🏿',
+ ':map:' => '🗺️',
':massage_tone1:' => '💆🏻',
':massage_tone2:' => '💆🏼',
':massage_tone3:' => '💆🏽',
':massage_tone4:' => '💆🏾',
':massage_tone5:' => '💆🏿',
+ ':medical_symbol:' => '⚕️',
+ ':men_holding_hands_dark_skin_tone:' => '👬🏿',
+ ':men_holding_hands_light_skin_tone:' => '👬🏻',
+ ':men_holding_hands_medium_dark_skin_tone:' => '👬🏾',
+ ':men_holding_hands_medium_light_skin_tone:' => '👬🏼',
+ ':men_holding_hands_medium_skin_tone:' => '👬🏽',
+ ':merperson_dark_skin_tone:' => '🧜🏿',
+ ':merperson_light_skin_tone:' => '🧜🏻',
+ ':merperson_medium_dark_skin_tone:' => '🧜🏾',
+ ':merperson_medium_light_skin_tone:' => '🧜🏼',
+ ':merperson_medium_skin_tone:' => '🧜🏽',
':metal_tone1:' => '🤘🏻',
':metal_tone2:' => '🤘🏼',
':metal_tone3:' => '🤘🏽',
':metal_tone4:' => '🤘🏾',
':metal_tone5:' => '🤘🏿',
+ ':microphone2:' => '🎙️',
':middle_finger_tone1:' => '🖕🏻',
':middle_finger_tone2:' => '🖕🏼',
':middle_finger_tone3:' => '🖕🏽',
':middle_finger_tone4:' => '🖕🏾',
':middle_finger_tone5:' => '🖕🏿',
+ ':military_medal:' => '🎖️',
+ ':motorboat:' => '🛥️',
+ ':motorcycle:' => '🏍️',
+ ':motorway:' => '🛣️',
+ ':mountain:' => '⛰️',
':mountain_bicyclist_tone1:' => '🚵🏻',
':mountain_bicyclist_tone2:' => '🚵🏼',
':mountain_bicyclist_tone3:' => '🚵🏽',
':mountain_bicyclist_tone4:' => '🚵🏾',
':mountain_bicyclist_tone5:' => '🚵🏿',
+ ':mountain_snow:' => '🏔️',
+ ':mouse_three_button:' => '🖱️',
':mrs_claus_tone1:' => '🤶🏻',
':mrs_claus_tone2:' => '🤶🏼',
':mrs_claus_tone3:' => '🤶🏽',
@@ -2086,6 +1859,12 @@
':nail_care_tone3:' => '💅🏽',
':nail_care_tone4:' => '💅🏾',
':nail_care_tone5:' => '💅🏿',
+ ':newspaper2:' => '🗞️',
+ ':ninja_dark_skin_tone:' => '🥷🏿',
+
10000
':ninja_light_skin_tone:' => '🥷🏻',
+ ':ninja_medium_dark_skin_tone:' => '🥷🏾',
+ ':ninja_medium_light_skin_tone:' => '🥷🏼',
+ ':ninja_medium_skin_tone:' => '🥷🏽',
':no_good_tone1:' => '🙅🏻',
':no_good_tone2:' => '🙅🏼',
':no_good_tone3:' => '🙅🏽',
@@ -2096,6 +1875,9 @@
':nose_tone3:' => '👃🏽',
':nose_tone4:' => '👃🏾',
':nose_tone5:' => '👃🏿',
+ ':notepad_spiral:' => '🗒️',
+ ':o2:' => '🅾️',
+ ':oil:' => '🛢️',
':ok_hand_tone1:' => '👌🏻',
':ok_hand_tone2:' => '👌🏼',
':ok_hand_tone3:' => '👌🏽',
@@ -2111,31 +1893,130 @@
':older_man_tone3:' => '👴🏽',
':older_man_tone4:' => '👴🏾',
':older_man_tone5:' => '👴🏿',
+ ':older_person_dark_skin_tone:' => '🧓🏿',
+ ':older_person_light_skin_tone:' => '🧓🏻',
+ ':older_person_medium_dark_skin_tone:' => '🧓🏾',
+ ':older_person_medium_light_skin_tone:' => '🧓🏼',
+ ':older_person_medium_skin_tone:' => '🧓🏽',
':older_woman_tone1:' => '👵🏻',
':older_woman_tone2:' => '👵🏼',
':older_woman_tone3:' => '👵🏽',
':older_woman_tone4:' => '👵🏾',
':older_woman_tone5:' => '👵🏿',
+ ':om_symbol:' => '🕉️',
':open_hands_tone1:' => '👐🏻',
':open_hands_tone2:' => '👐🏼',
':open_hands_tone3:' => '👐🏽',
':open_hands_tone4:' => '👐🏾',
':open_hands_tone5:' => '👐🏿',
+ ':orthodox_cross:' => '☦️',
+ ':paintbrush:' => '🖌️',
+ ':palm_down_hand_dark_skin_tone:' => '🫳🏿',
+ ':palm_down_hand_light_skin_tone:' => '🫳🏻',
+ ':palm_down_hand_medium_dark_skin_tone:' => '🫳🏾',
+ ':palm_down_hand_medium_light_skin_tone:' => '🫳🏼',
+ ':palm_down_hand_medium_skin_tone:' => '🫳🏽',
+ ':palm_up_hand_dark_skin_tone:' => '🫴🏿',
+ ':palm_up_hand_light_skin_tone:' => '🫴🏻',
+ ':palm_up_hand_medium_dark_skin_tone:' => '🫴🏾',
+ ':palm_up_hand_medium_light_skin_tone:' => '🫴🏼',
+ ':palm_up_hand_medium_skin_tone:' => '🫴🏽',
+ ':palms_up_together_dark_skin_tone:' => '🤲🏿',
+ ':palms_up_together_light_skin_tone:' => '🤲🏻',
+ ':palms_up_together_medium_dark_skin_tone:' => '🤲🏾',
+ ':palms_up_together_medium_light_skin_tone:' => '🤲🏼',
+ ':palms_up_together_medium_skin_tone:' => '🤲🏽',
+ ':paperclips:' => '🖇️',
+ ':park:' => '🏞️',
+ ':parking:' => '🅿️',
+ ':part_alternation_mark:' => '〽️',
+ ':pause_button:' => '⏸️',
+ ':peace:' => '☮️',
+ ':pen_ballpoint:' => '🖊️',
+ ':pen_fountain:' => '🖋️',
+ ':pencil2:' => '✏️',
+ ':person_climbing_dark_skin_tone:' => '🧗🏿',
+ ':person_climbing_light_skin_tone:' => '🧗🏻',
+ ':person_climbing_medium_dark_skin_tone:' => '🧗🏾',
+ ':person_climbing_medium_light_skin_tone:' => '🧗🏼',
+ ':person_climbing_medium_skin_tone:' => '🧗🏽',
+ ':person_dark_skin_tone:' => '🧑🏿',
+ ':person_dark_skin_tone_beard:' => '🧔🏿',
':person_frowning_tone1:' => '🙍🏻',
':person_frowning_tone2:' => '🙍🏼',
':person_frowning_tone3:' => '🙍🏽',
':person_frowning_tone4:' => '🙍🏾',
':person_frowning_tone5:' => '🙍🏿',
+ ':person_golfing_dark_skin_tone:' => '🏌🏿',
+ ':person_golfing_light_skin_tone:' => '🏌🏻',
+ ':person_golfing_medium_dark_skin_tone:' => '🏌🏾',
+ ':person_golfing_medium_light_skin_tone:' => '🏌🏼',
+ ':person_golfing_medium_skin_tone:' => '🏌🏽',
+ ':person_in_bed_dark_skin_tone:' => '🛌🏿',
+ ':person_in_bed_light_skin_tone:' => '🛌🏻',
+ ':person_in_bed_medium_dark_skin_tone:' => '🛌🏾',
+ ':person_in_bed_medium_light_skin_tone:' => '🛌🏼',
+ ':person_in_bed_medium_skin_tone:' => '🛌🏽',
+ ':person_in_lotus_position_dark_skin_tone:' => '🧘🏿',
+ ':person_in_lotus_position_light_skin_tone:' => '🧘🏻',
+ ':person_in_lotus_position_medium_dark_skin_tone:' => '🧘🏾',
+ ':person_in_lotus_position_medium_light_skin_tone:' => '🧘🏼',
+ ':person_in_lotus_position_medium_skin_tone:' => '🧘🏽',
+ ':person_in_steamy_room_dark_skin_tone:' => '🧖🏿',
+ ':person_in_steamy_room_light_skin_tone:' => '🧖🏻',
+ ':person_in_steamy_room_medium_dark_skin_tone:' => '🧖🏾',
+ ':person_in_steamy_room_medium_light_skin_tone:' => '🧖🏼',
+ ':person_in_steamy_room_medium_skin_tone:' => '🧖🏽',
+ ':person_in_suit_levitating_dark_skin_tone:' => '🕴🏿',
+ ':person_in_suit_levitating_light_skin_tone:' => '🕴🏻',
+ ':person_in_suit_levitating_medium_dark_skin_tone:' => '🕴🏾',
+ ':person_in_suit_levitating_medium_light_skin_tone:' => '🕴🏼',
+ ':person_in_suit_levitating_medium_skin_tone:' => '🕴🏽',
+ ':person_kneeling_dark_skin_tone:' => '🧎🏿',
+ ':person_kneeling_light_skin_tone:' => '🧎🏻',
+ ':person_kneeling_medium_dark_skin_tone:' => '🧎🏾',
+ ':person_kneeling_medium_light_skin_tone:' => '🧎🏼',
+ ':person_kneeling_medium_skin_tone:' => '🧎🏽',
+ ':person_light_skin_tone:' => '🧑🏻',
+ ':person_light_skin_tone_beard:' => '🧔🏻',
+ ':person_medium_dark_skin_tone:' => '🧑🏾',
+ ':person_medium_dark_skin_tone_beard:' => '🧔🏾',
+ ':person_medium_light_skin_tone:' => '🧑🏼',
+ ':person_medium_light_skin_tone_beard:' => '🧔🏼',
+ ':person_medium_skin_tone:' => '🧑🏽',
+ ':person_medium_skin_tone_beard:' => '🧔🏽',
+ ':person_standing_dark_skin_tone:' => '🧍🏿',
+ ':person_standing_light_skin_tone:' => '🧍🏻',
+ ':person_standing_medium_dark_skin_tone:' => '🧍🏾',
+ ':person_standing_medium_light_skin_tone:' => '🧍🏼',
+ ':person_standing_medium_skin_tone:' => '🧍🏽',
':person_with_blond_hair_tone1:' => '👱🏻',
':person_with_blond_hair_tone2:' => '👱🏼',
':person_with_blond_hair_tone3:' => '👱🏽',
':person_with_blond_hair_tone4:' => '👱🏾',
':person_with_blond_hair_tone5:' => '👱🏿',
+ ':person_with_crown_dark_skin_tone:' => '🫅🏿',
+ ':person_with_crown_light_skin_tone:' => '🫅🏻',
+ ':person_with_crown_medium_dark_skin_tone:' => '🫅🏾',
+ ':person_with_crown_medium_light_skin_tone:' => '🫅🏼',
+ ':person_with_crown_medium_skin_tone:' => '🫅🏽',
':person_with_pouting_face_tone1:' => '🙎🏻',
':person_with_pouting_face_tone2:' => '🙎🏼',
':person_with_pouting_face_tone3:' => '🙎🏽',
':person_with_pouting_face_tone4:' => '🙎🏾',
':person_with_pouting_face_tone5:' => '🙎🏿',
+ ':pick:' => '⛏️',
+ ':pinched_fingers_dark_skin_tone:' => '🤌🏿',
+ ':pinched_fingers_light_skin_tone:' => '🤌🏻',
+ ':pinched_fingers_medium_dark_skin_tone:' => '🤌🏾',
+ ':pinched_fingers_medium_light_skin_tone:' => '🤌🏼',
+ ':pinched_fingers_medium_skin_tone:' => '🤌🏽',
+ ':pinching_hand_dark_skin_tone:' => '🤏🏿',
+ ':pinching_hand_light_skin_tone:' => '🤏🏻',
+ ':pinching_hand_medium_dark_skin_tone:' => '🤏🏾',
+ ':pinching_hand_medium_light_skin_tone:' => '🤏🏼',
+ ':pinching_hand_medium_skin_tone:' => '🤏🏽',
+ ':play_pause:' => '⏯️',
':point_down_tone1:' => '👇🏻',
':point_down_tone2:' => '👇🏼',
':point_down_tone3:' => '👇🏽',
@@ -2151,6 +2032,7 @@
':point_right_tone3:' => '👉🏽',
':point_right_tone4:' => '👉🏾',
':point_right_tone5:' => '👉🏿',
+ ':point_up:' => '☝️',
':point_up_2_tone1:' => '👆🏻',
':point_up_2_tone2:' => '👆🏼',
':point_up_2_tone3:' => '👆🏽',
@@ -2166,6 +2048,16 @@
':pray_tone3:' => '🙏🏽',
':pray_tone4:' => '🙏🏾',
':pray_tone5:' => '🙏🏿',
+ ':pregnant_man_dark_skin_tone:' => '🫃🏿',
+ ':pregnant_man_light_skin_tone:' => '🫃🏻',
+ ':pregnant_man_medium_dark_skin_tone:' => '🫃🏾',
+ ':pregnant_man_medium_light_skin_tone:' => '🫃🏼',
+ ':pregnant_man_medium_skin_tone:' => '🫃🏽',
+ ':pregnant_person_dark_skin_tone:' => '🫄🏿',
+ ':pregnant_person_light_skin_tone:' => '🫄🏻',
+ ':pregnant_person_medium_dark_skin_tone:' => '🫄🏾',
+ ':pregnant_person_medium_light_skin_tone:' => '🫄🏼',
+ ':pregnant_person_medium_skin_tone:' => '🫄🏽',
':pregnant_woman_tone1:' => '🤰🏻',
':pregnant_woman_tone2:' => '🤰🏼',
':pregnant_woman_tone3:' => '🤰🏽',
@@ -2181,11 +2073,16 @@
':princess_tone3:' => '👸🏽',
':princess_tone4:' => '👸🏾',
':princess_tone5:' => '👸🏿',
+ ':printer:' => '🖨️',
+ ':projector:' => '📽️',
':punch_tone1:' => '👊🏻',
':punch_tone2:' => '👊🏼',
':punch_tone3:' => '👊🏽',
':punch_tone4:' => '👊🏾',
':punch_tone5:' => '👊🏿',
+ ':race_car:' => '🏎️',
+ ':radioactive:' => '☢️',
+ ':railway_track:' => '🛤️',
':raised_back_of_hand_tone1:' => '🤚🏻',
':raised_back_of_hand_tone2:' => '🤚🏼',
':raised_back_of_hand_tone3:' => '🤚🏽',
@@ -2206,11 +2103,27 @@
':raising_hand_tone3:' => '🙋🏽',
':raising_hand_tone4:' => '🙋🏾',
':raising_hand_tone5:' => '🙋🏿',
+ ':record_button:' => '⏺️',
+ ':recycle:' => '♻️',
+ ':registered:' => '®️',
+ ':relaxed:' => '☺️',
+ ':reminder_ribbon:' => '🎗️',
':right_facing_fist_tone1:' => '🤜🏻',
':right_facing_fist_tone2:' => '🤜🏼',
':right_facing_fist_tone3:' => '🤜🏽',
':right_facing_fist_tone4:' => '🤜🏾',
':right_facing_fist_tone5:' => '🤜🏿',
+ ':rightwards_hand_dark_skin_tone:' => '🫱🏿',
+ ':rightwards_hand_light_skin_tone:' => '🫱🏻',
+ ':rightwards_hand_medium_dark_skin_tone:' => '🫱🏾',
+ ':rightwards_hand_medium_light_skin_tone:' => '🫱🏼',
+ ':rightwards_hand_medium_skin_tone:' => '🫱🏽',
+ ':rightwards_pushing_hand_dark_skin_tone:' => '🫸🏿',
+ ':rightwards_pushing_hand_light_skin_tone:' => '🫸🏻',
+ ':rightwards_pushing_hand_medium_dark_skin_tone:' => '🫸🏾',
+ ':rightwards_pushing_hand_medium_light_skin_tone:' => '🫸🏼',
+ ':rightwards_pushing_hand_medium_skin_tone:' => '🫸🏽',
+ ':rosette:' => '🏵️',
':rowboat_tone1:' => '🚣🏻',
':rowboat_tone2:' => '🚣🏼',
':rowboat_tone3:' => '🚣🏽',
@@ -2221,26 +2134,67 @@
':runner_tone3:' => '🏃🏽',
':runner_tone4:' => '🏃🏾',
':runner_tone5:' => '🏃🏿',
+ ':sa:' => '🈂️',
':santa_tone1:' => '🎅🏻',
':santa_tone2:' => '🎅🏼',
':santa_tone3:' => '🎅🏽',
':santa_tone4:' => '🎅🏾',
':santa_tone5:' => '🎅🏿',
+ ':satellite_orbital:' => '🛰️',
+ ':scales:' => '⚖️',
+ ':scissors:' => '✂️',
+ ':secret:' => '㊙️',
':selfie_tone1:' => '🤳🏻',
':selfie_tone2:' => '🤳🏼',
':selfie_tone3:' => '🤳🏽',
':selfie_tone4:' => '🤳🏾',
':selfie_tone5:' => '🤳🏿',
+ ':shamrock:' => '☘️',
+ ':shield:' => '🛡️',
+ ':shinto_shrine:' => '⛩️',
+ ':shopping_bags:' => '🛍️',
':shrug_tone1:' => '🤷🏻',
':shrug_tone2:' => '🤷🏼',
':shrug_tone3:' => '🤷🏽',
':shrug_tone4:' => '🤷🏾',
':shrug_tone5:' => '🤷🏿',
+ ':skier:' => '⛷️',
+ ':skull_crossbones:' => '☠️',
+ ':snowboarder_dark_skin_tone:' => '🏂🏿',
+ ':snowboarder_light_skin_tone:' => '🏂🏻',
+ ':snowboarder_medium_dark_skin_tone:' => '🏂🏾',
+ ':snowboarder_medium_light_skin_tone:' => '🏂🏼',
+ ':snowboarder_medium_skin_tone:' => '🏂🏽',
+ ':snowflake:' => '❄️',
+ ':snowman2:' => '☃️',
+ ':spades:' => '♠️',
+ ':sparkle:' => '❇️',
+ ':speaking_head:' => '🗣️',
+ ':speech_left:' => '🗨️',
+ ':spider:' => '🕷️',
+ ':spider_web:' => '🕸️',
+ ':spy:' => '🕵️',
':spy_tone1:' => '🕵🏻',
':spy_tone2:' => '🕵🏼',
':spy_tone3:' => '🕵🏽',
':spy_tone4:' => '🕵🏾',
':spy_tone5:' => '🕵🏿',
+ ':stadium:' => '🏟️',
+ ':star_and_crescent:' => '☪️',
+ ':star_of_david:' => '✡️',
+ ':stop_button:' => '⏹️',
+ ':stopwatch:' => '⏱️',
+ ':sunny:' => '☀️',
+ ':superhero_dark_skin_tone:' => '🦸🏿',
+ ':superhero_light_skin_tone:' => '🦸🏻',
+ ':superhero_medium_dark_skin_tone:' => '🦸🏾',
+ ':superhero_medium_light_skin_tone:' => '🦸🏼',
+ ':superhero_medium_skin_tone:' => '🦸🏽',
+ ':supervillain_dark_skin_tone:' => '🦹🏿',
+ ':supervillain_light_skin_tone:' => '🦹🏻',
+ ':supervillain_medium_dark_skin_tone:' => '🦹🏾',
+ ':supervillain_medium_light_skin_tone:' => '🦹🏼',
+ ':supervillain_medium_skin_tone:' => '🦹🏽',
':surfer_tone1:' => '🏄🏻',
':surfer_tone2:' => '🏄🏼',
':surfer_tone3:' => '🏄🏽',
@@ -2251,6 +2205,8 @@
':swimmer_tone3:' => '🏊🏽',
':swimmer_tone4:' => '🏊🏾',
':swimmer_tone5:' => '🏊🏿',
+ ':telephone:' => '☎️',
+ ':thermometer:' => '🌡️',
':thumbsdown_tone1:' => '👎🏻',
':thumbsdown_tone2:' => '👎🏼',
':thumbsdown_tone3:' => '👎🏽',
@@ -2261,11 +2217,29 @@
':thumbsup_tone3:' => '👍🏽',
':thumbsup_tone4:' => '👍🏾',
':thumbsup_tone5:' => '👍🏿',
+ ':thunder_cloud_rain:' => '⛈️',
+ ':tickets:' => '🎟️',
+ ':timer:' => '⏲️',
+ ':tm:' => '™️',
+ ':tools:' => '🛠️',
+ ':track_next:' => '⏭️',
+ ':track_previous:' => '⏮️',
+ ':trackball:' => '🖲️',
+ ':transgender_symbol:' => '⚧️',
+ ':u6708:' => '🈷️',
+ ':umbrella2:' => '☂️',
+ ':urn:' => '⚱️',
+ ':v:' => '✌️',
':v_tone1:' => '✌🏻',
':v_tone2:' => '✌🏼',
':v_tone3:' => '✌🏽',
':v_tone4:' => '✌🏾',
':v_tone5:' => '✌🏿',
+ ':vampire_dark_skin_tone:' => '🧛🏿',
+ ':vampire_light_skin_tone:' => '🧛🏻',
+ ':vampire_medium_dark_skin_tone:' => '🧛🏾',
+ ':vampire_medium_light_skin_tone:' => '🧛🏼',
+ ':vampire_medium_skin_tone:' => '🧛🏽',
':vulcan_tone1:' => '🖖🏻',
':vulcan_tone2:' => '🖖🏼',
':vulcan_tone3:' => '🖖🏽',
@@ -2276,6 +2250,8 @@
':walking_tone3:' => '🚶🏽',
':walking_tone4:' => '🚶🏾',
':walking_tone5:' => '🚶🏿',
+ ':warning:' => '⚠️',
+ ':wastebasket:' => '🗑️',
':water_polo_tone1:' => '🤽🏻',
':water_polo_tone2:' => '🤽🏼',
':water_polo_tone3:' => '🤽🏽',
@@ -2286,41 +2262,1153 @@
':wave_tone3:' => '👋🏽',
':wave_tone4:' => '👋🏾',
':wave_tone5:' => '👋🏿',
+ ':wavy_dash:' => '〰️',
+ ':wheel_of_dharma:' => '☸️',
+ ':white_medium_square:' => '◻️',
+ ':white_small_square:' => '▫️',
+ ':white_sun_cloud:' => '🌥️',
+ ':white_sun_rain_cloud:' => '🌦️',
+ ':white_sun_small_cloud:' => '🌤️',
+ ':wind_blowing_face:' => '🌬️',
+ ':woman_and_man_holding_hands_dark_skin_tone:' => '👫🏿',
+ ':woman_and_man_holding_hands_light_skin_tone:' => '👫🏻',
+ ':woman_and_man_holding_hands_medium_dark_skin_tone:' => '👫🏾',
+ ':woman_and_man_holding_hands_medium_light_skin_tone:' => '👫🏼',
+ ':woman_and_man_holding_hands_medium_skin_tone:' => '👫🏽',
':woman_tone1:' => '👩🏻',
':woman_tone2:' => '👩🏼',
':woman_tone3:' => '👩🏽',
':woman_tone4:' => '👩🏾',
':woman_tone5:' => '👩🏿',
- ':wrestlers_tone1:' => '🤼🏻',
- ':wrestlers_tone2:' => '🤼🏼',
- ':wrestlers_tone3:' => '🤼🏽',
- ':wrestlers_tone4:' => '🤼🏾',
- ':wrestlers_tone5:' => '🤼🏿',
+ ':woman_with_headscarf_dark_skin_tone:' => '🧕🏿',
+ ':woman_with_headscarf_light_skin_tone:' => '🧕🏻',
+ ':woman_with_headscarf_medium_dark_skin_tone:' => '🧕🏾',
+ ':woman_with_headscarf_medium_light_skin_tone:' => '🧕🏼',
+ ':woman_with_headscarf_medium_skin_tone:' => '🧕🏽',
+ ':women_holding_hands_dark_skin_tone:' => '👭🏿',
+ ':women_holding_hands_light_skin_tone:' => '👭🏻',
+ ':women_holding_hands_medium_dark_skin_tone:' => '👭🏾',
+ ':women_holding_hands_medium_light_skin_tone:' => '👭🏼',
+ ':women_holding_hands_medium_skin_tone:' => '👭🏽',
+ ':writing_hand:' => '✍️',
':writing_hand_tone1:' => '✍🏻',
':writing_hand_tone2:' => '✍🏼',
':writing_hand_tone3:' => '✍🏽',
':writing_hand_tone4:' => '✍🏾',
':writing_hand_tone5:' => '✍🏿',
+ ':yin_yang:' => '☯️',
+ ':artist:' => '🧑🎨',
+ ':asterisk:' => '*️⃣',
+ ':astronaut:' => '🧑🚀',
+ ':black_bird:' => '🐦⬛',
+ ':black_cat:' => '🐈⬛',
+ ':brown_mushroom:' => '🍄🟫',
+ ':cook:' => '🧑🍳',
':eight:' => '8️⃣',
- ':eye_in_speech_bubble:' => '👁🗨',
+ ':face_exhaling:' => '😮💨',
+ ':face_with_spiral_eyes:' => '😵💫',
+ ':factory_worker:' => '🧑🏭',
+ ':family_adult_child:' => '🧑🧒',
+ ':family_man_boy:' => '👨👦',
+ ':family_man_girl:' => '👨👧',
+ ':family_woman_boy:' => '👩👦',
+ ':family_woman_girl:' => '👩👧',
+ ':farmer:' => '🧑🌾',
+ ':firefighter:' => '🧑🚒',
':five:' => '5️⃣',
':four:' => '4️⃣',
+ ':hash:' => '#️⃣',
+ ':lime:' => '🍋🟩',
+ ':man_artist:' => '👨🎨',
+ ':man_astronaut:' => '👨🚀',
+ ':man_bald:' => '👨🦲',
+ ':man_cook:' => '👨🍳',
+ ':man_curly_hair:' => '👨🦱',
+ ':man_factory_worker:' => '👨🏭',
+ ':man_farmer:' => '👨🌾',
+ ':man_feeding_baby:' => '👨🍼',
+ ':man_firefighter:' => '👨🚒',
+ ':man_in_manual_wheelchair:' => '👨🦽',
+ ':man_in_motorized_wheelchair:' => '👨🦼',
+ ':man_mechanic:' => '👨🔧',
+ ':man_office_worker:' => '👨💼',
+ ':man_red_hair:' => '👨🦰',
+ ':man_scientist:' => '👨🔬',
+ ':man_singer:' => '👨🎤',
+ ':man_student:' => '👨🎓',
+ ':man_teacher:' => '👨🏫',
+ ':man_technologist:' => '👨💻',
+ ':man_white_hair:' => '👨🦳',
+ ':man_with_white_cane:' => '👨🦯',
+ ':mechanic:' => '🧑🔧',
+ ':mx_claus:' => '🧑🎄',
':nine:' => '9️⃣',
+ ':office_worker:' => '🧑💼',
':one:' => '1️⃣',
+ ':person_bald:' => '🧑🦲',
+ ':person_curly_hair:' => '🧑🦱',
+ ':person_feeding_baby:' => '🧑🍼',
+ ':person_in_manual_wheelchair:' => '🧑🦽',
+ ':person_in_motorized_wheelchair:' => '🧑🦼',
+ ':person_red_hair:' => '🧑🦰',
+ ':person_white_hair:' => '🧑🦳',
+ ':person_with_white_cane:' => '🧑🦯',
+ ':phoenix:' => '🐦🔥',
+ ':scientist:' => '🧑🔬',
+ ':service_dog:' => '🐕🦺',
':seven:' => '7️⃣',
+ ':singer:' => '🧑🎤',
':six:' => '6️⃣',
+ ':student:' => '🧑🎓',
+ ':teacher:' => '🧑🏫',
+ ':technologist:' => '🧑💻',
':three:' => '3️⃣',
':two:' => '2️⃣',
+ ':woman_artist:' => '👩🎨',
+ ':woman_astronaut:' => '👩🚀',
+ ':woman_bald:' => '👩🦲',
+ ':woman_cook:' => '👩🍳',
+ ':woman_curly_hair:' => '👩🦱',
+ ':woman_factory_worker:' => '👩🏭',
+ ':woman_farmer:' => '👩🌾',
+ ':woman_feeding_baby:' => '👩🍼',
+ ':woman_firefighter:' => '👩🚒',
+ ':woman_in_manual_wheelchair:' => '👩🦽',
+ ':woman_in_motorized_wheelchair:' => '👩🦼',
+ ':woman_mechanic:' => '👩🔧',
+ ':woman_office_worker:' => '👩💼',
+ ':woman_red_hair:' => '👩🦰',
+ ':woman_scientist:' => '👩🔬',
+ ':woman_singer:' => '👩🎤',
+ ':woman_student:' => '👩🎓',
+ ':woman_teacher:' => '👩🏫',
+ ':woman_technologist:' => '👩💻',
+ ':woman_white_hair:' => '👩🦳',
+ ':woman_with_white_cane:' => '👩🦯',
':zero:' => '0️⃣',
+ ':artist_dark_skin_tone:' => '🧑🏿🎨',
+ ':artist_light_skin_tone:' => '🧑🏻🎨',
+ ':artist_medium_dark_skin_tone:' => '🧑🏾🎨',
+ ':artist_medium_light_skin_tone:' => '🧑🏼🎨',
+ ':artist_medium_skin_tone:' => '🧑🏽🎨',
+ ':astronaut_dark_skin_tone:' => '🧑🏿🚀',
+ ':astronaut_light_skin_tone:' => '🧑🏻🚀',
+ ':astronaut_medium_dark_skin_tone:' => '🧑🏾🚀',
+ ':astronaut_medium_light_skin_tone:' => '🧑🏼🚀',
+ ':astronaut_medium_skin_tone:' => '🧑🏽🚀',
+ ':broken_chain:' => '⛓️💥',
+ ':cook_dark_skin_tone:' => '🧑🏿🍳',
+ ':cook_light_skin_tone:' => '🧑🏻🍳',
+ ':cook_medium_dark_skin_tone:' => '🧑🏾🍳',
+ ':cook_medium_light_skin_tone:' => '🧑🏼🍳',
+ ':cook_medium_skin_tone:' => '🧑🏽🍳',
+ ':deaf_man:' => '🧏♂️',
+ ':deaf_woman:' => '🧏♀️',
+ ':face_in_clouds:' => '😶🌫️',
+ ':factory_worker_dark_skin_tone:' => '🧑🏿🏭',
+ ':factory_worker_light_skin_tone:' => '🧑🏻🏭',
+ ':factory_worker_medium_dark_skin_tone:' => '🧑🏾🏭',
+ ':factory_worker_medium_light_skin_tone:' => '🧑🏼🏭',
+ ':factory_worker_medium_skin_tone:' => '🧑🏽🏭',
+ ':farmer_dark_skin_tone:' => '🧑🏿🌾',
+ ':farmer_light_skin_tone:' => '🧑🏻🌾',
+ ':farmer_medium_dark_skin_tone:' => '🧑🏾🌾',
+ ':farmer_medium_light_skin_tone:' => '🧑🏼🌾',
+ ':farmer_medium_skin_tone:' => '🧑🏽🌾',
+ ':firefighter_dark_skin_tone:' => '🧑🏿🚒',
+ ':firefighter_light_skin_tone:' => '🧑🏻🚒',
+ ':firefighter_medium_dark_skin_tone:' => '🧑🏾🚒',
+ ':firefighter_medium_light_skin_tone:' => '🧑🏼🚒',
+ ':firefighter_medium_skin_tone:' => '🧑🏽🚒',
+ ':gay_pride_flag:' => '🏳️🌈',
+ ':head_shaking_horizontally:' => '🙂↔️',
+ ':head_shaking_vertically:' => '🙂↕️',
+ ':health_worker:' => '🧑⚕️',
+ ':heart_on_fire:' => '❤️🔥',
+ ':judge:' => '🧑⚖️',
+ ':man_artist_dark_skin_tone:' => '👨🏿🎨',
+ ':man_artist_light_skin_tone:' => '👨🏻🎨',
+ ':man_artist_medium_dark_skin_tone:' => '👨🏾🎨',
+ ':man_artist_medium_light_skin_tone:' => '👨🏼🎨',
+ ':man_artist_medium_skin_tone:' => '👨🏽🎨',
+ ':man_astronaut_dark_skin_tone:' => '👨🏿🚀',
+ ':man_astronaut_light_skin_tone:' => '👨🏻🚀',
+ ':man_astronaut_medium_dark_skin_tone:' => '👨🏾🚀',
+ ':man_astronaut_medium_light_skin_tone:' => '👨🏼🚀',
+ ':man_astronaut_medium_skin_tone:' => '👨🏽🚀',
+ ':man_beard:' => '🧔♂️',
+ ':man_biking:' => '🚴♂️',
+ ':man_blond_hair:' => '👱♂️',
+ ':man_bowing:' => '🙇♂️',
+ ':man_cartwheeling:' => '🤸♂️',
+ ':man_climbing:' => '🧗♂️',
+ ':man_construction_worker:' => '👷♂️',
+ ':man_cook_dark_skin_tone:' => '👨🏿🍳',
+ ':man_cook_light_skin_tone:' => '👨🏻🍳',
+ ':man_cook_medium_dark_skin_tone:' => '👨🏾🍳',
+ ':man_cook_medium_light_skin_tone:' => '👨🏼🍳',
+ ':man_cook_medium_skin_tone:' => '👨🏽🍳',
+ ':man_dark_skin_tone_bald:' => '👨🏿🦲',
+ ':man_dark_skin_tone_curly_hair:' => '👨🏿🦱',
+ ':man_dark_skin_tone_red_hair:' => '👨🏿🦰',
+ ':man_dark_skin_tone_white_hair:' => '👨🏿🦳',
+ ':man_elf:' => '🧝♂️',
+ ':man_facepalming:' => '🤦♂️',
+ ':man_factory_worker_dark_skin_tone:' => '👨🏿🏭',
+ ':man_factory_worker_light_skin_tone:' => '👨🏻🏭',
+ ':man_factory_worker_medium_dark_skin_tone:' => '👨🏾🏭',
+ ':man_factory_worker_medium_light_skin_tone:' => '👨🏼🏭',
+ ':man_factory_worker_medium_skin_tone:' => '👨🏽🏭',
+ ':man_fairy:' => '🧚♂️',
+ ':man_farmer_dark_skin_tone:' => '👨🏿🌾',
+ ':man_farmer_light_skin_tone:' => '👨🏻🌾',
+ ':man_farmer_medium_dark_skin_tone:' => '👨🏾🌾',
+ ':man_farmer_medium_light_skin_tone:' => '👨🏼🌾',
+ ':man_farmer_medium_skin_tone:' => '👨🏽🌾',
+ ':man_feeding_baby_dark_skin_tone:' => '👨🏿🍼',
+ ':man_feeding_baby_light_skin_tone:' => '👨🏻🍼',
+ ':man_feeding_baby_medium_dark_skin_tone:' => '👨🏾🍼',
+ ':man_feeding_baby_medium_light_skin_tone:' => '👨🏼🍼',
+ ':man_feeding_baby_medium_skin_tone:' => '👨🏽🍼',
+ ':man_firefighter_dark_skin_tone:' => '👨🏿🚒',
+ ':man_firefighter_light_skin_tone:' => '👨🏻🚒',
+ ':man_firefighter_medium_dark_skin_tone:' => '👨🏾🚒',
+ ':man_firefighter_medium_light_skin_tone:' => '👨🏼🚒',
+ ':man_firefighter_medium_skin_tone:' => '👨🏽🚒',
+ ':man_frowning:' => '🙍♂️',
+ ':man_genie:' => '🧞♂️',
+ ':man_gesturing_no:' => '🙅♂️',
+ ':man_gesturing_ok:' => '🙆♂️',
+ ':man_getting_haircut:' => '💇♂️',
+ ':man_getting_massage:' => '💆♂️',
+ ':man_guard:' => '💂♂️',
+ ':man_health_worker:' => '👨⚕️',
+ ':man_in_lotus_position:' => '🧘♂️',
+ ':man_in_manual_wheelchair_dark_skin_tone:' => '👨🏿🦽',
+ ':man_in_manual_wheelchair_light_skin_tone:' => '👨🏻🦽',
+ ':man_in_manual_wheelchair_medium_dark_skin_tone:' => '👨🏾🦽',
+ ':man_in_manual_wheelchair_medium_light_skin_tone:' => '👨🏼🦽',
+ ':man_in_manual_wheelchair_medium_skin_tone:' => '👨🏽🦽',
+ ':man_in_motorized_wheelchair_dark_skin_tone:' => '👨🏿🦼',
+ ':man_in_motorized_wheelchair_light_skin_tone:' => '👨🏻🦼',
+ ':man_in_motorized_wheelchair_medium_dark_skin_tone:' => '👨🏾🦼',
+ ':man_in_motorized_wheelchair_medium_light_skin_tone:' => '👨🏼🦼',
+ ':man_in_motorized_wheelchair_medium_skin_tone:' => '👨🏽🦼',
+ ':man_in_steamy_room:' => '🧖♂️',
+ ':man_in_tuxedo:' => '🤵♂️',
+ ':man_judge:' => '👨⚖️',
+ ':man_juggling:' => '🤹♂️',
+ ':man_kneeling:' => '🧎♂️',
+ ':man_light_skin_tone_bald:' => '👨🏻🦲',
+ ':man_light_skin_tone_curly_hair:' => '👨🏻🦱',
+ ':man_light_skin_tone_red_hair:' => '👨🏻🦰',
+ ':man_light_skin_tone_white_hair:' => '👨🏻🦳',
+ ':man_mage:' => '🧙♂️',
+ ':man_mechanic_dark_skin_tone:' => '👨🏿🔧',
+ ':man_mechanic_light_skin_tone:' => '👨🏻🔧',
+ ':man_mechanic_medium_dark_skin_tone:' => '👨🏾🔧',
+ ':man_mechanic_medium_light_skin_tone:' => '👨🏼🔧',
+ ':man_mechanic_medium_skin_tone:' => '👨🏽🔧',
+ ':man_medium_dark_skin_tone_bald:' => '👨🏾🦲',
+ ':man_medium_dark_skin_tone_curly_hair:' => '👨🏾🦱',
+ ':man_medium_dark_skin_tone_red_hair:' => '👨🏾🦰',
+ ':man_medium_dark_skin_tone_white_hair:' => '👨🏾🦳',
+ ':man_medium_light_skin_tone_bald:' => '👨🏼🦲',
+ ':man_medium_light_skin_tone_curly_hair:' => '👨🏼🦱',
+ ':man_medium_light_skin_tone_red_hair:' => '👨🏼🦰',
+ ':man_medium_light_skin_tone_white_hair:' => '👨🏼🦳',
+ ':man_medium_skin_tone_bald:' => '👨🏽🦲',
+ ':man_medium_skin_tone_curly_hair:' => '👨🏽🦱',
+ ':man_medium_skin_tone_red_hair:' => '👨🏽🦰',
+ ':man_medium_skin_tone_white_hair:' => '👨🏽🦳',
+ ':man_mountain_biking:' => '🚵♂️',
+ ':man_office_worker_dark_skin_tone:' => '👨🏿💼',
+ ':man_office_worker_light_skin_tone:' => '👨🏻💼',
+ ':man_office_worker_medium_dark_skin_tone:' => '👨🏾💼',
+ ':man_office_worker_medium_light_skin_tone:' => '👨🏼💼',
+ ':man_office_worker_medium_skin_tone:' => '👨🏽💼',
+ ':man_pilot:' => '👨✈️',
+ ':man_playing_handball:' => '🤾♂️',
+ ':man_playing_water_polo:' => '🤽♂️',
+ ':man_police_officer:' => '👮♂️',
+ ':man_pouting:' => '🙎♂️',
+ ':man_raising_hand:' => '🙋♂️',
+ ':man_rowing_boat:' => '🚣♂️',
+ ':man_running:' => '🏃♂️',
+ ':man_scientist_dark_skin_tone:' => '👨🏿🔬',
+ ':man_scientist_light_skin_tone:' => '👨🏻🔬',
+ ':man_scientist_medium_dark_skin_tone:' => '👨🏾🔬',
+ ':man_scientist_medium_light_skin_tone:' => '👨🏼🔬',
+ ':man_scientist_medium_skin_tone:' => '👨🏽🔬',
+ ':man_shrugging:' => '🤷♂️',
+ ':man_singer_dark_skin_tone:' => '👨🏿🎤',
+ ':man_singer_light_skin_tone:' => '👨🏻🎤',
+ ':man_singer_medium_dark_skin_tone:' => '👨🏾🎤',
+ ':man_singer_medium_light_skin_tone:' => '👨🏼🎤',
+ ':man_singer_medium_skin_tone:' => '👨🏽🎤',
+ ':man_standing:' => '🧍♂️',
+ ':man_student_dark_skin_tone:' => '👨🏿🎓',
+ ':man_student_light_skin_tone:' => '👨🏻🎓',
+ ':man_student_medium_dark_skin_tone:' => '👨🏾🎓',
+ ':man_student_medium_light_skin_tone:' => '👨🏼🎓',
+ ':man_student_medium_skin_tone:' => '👨🏽🎓',
+ ':man_superhero:' => '🦸♂️',
+ ':man_supervillain:' => '🦹♂️',
+ ':man_surfing:' => '🏄♂️',
+ ':man_swimming:' => '🏊♂️',
+ ':man_teacher_dark_skin_tone:' => '👨🏿🏫',
+ ':man_teacher_light_skin_tone:' => '👨🏻🏫',
+ ':man_teacher_medium_dark_skin_tone:' => '👨🏾🏫',
+ ':man_teacher_medium_light_skin_tone:' => '👨🏼🏫',
+ ':man_teacher_medium_skin_tone:' => '👨🏽🏫',
+ ':man_technologist_dark_skin_tone:' => '👨🏿💻',
+ ':man_technologist_light_skin_tone:' => '👨🏻💻',
+ ':man_technologist_medium_dark_skin_tone:' => '👨🏾💻',
+ ':man_technologist_medium_light_skin_tone:' => '👨🏼💻',
+ ':man_technologist_medium_skin_tone:' => '👨🏽💻',
+ ':man_tipping_hand:' => '💁♂️',
+ ':man_vampire:' => '🧛♂️',
+ ':man_walking:' => '🚶♂️',
+ ':man_wearing_turban:' => '👳♂️',
+ ':man_with_veil:' => '👰♂️',
+ ':man_with_white_cane_dark_skin_tone:' => '👨🏿🦯',
+ ':man_with_white_cane_light_skin_tone:' => '👨🏻🦯',
+ ':man_with_white_cane_medium_dark_skin_tone:' => '👨🏾🦯',
+ ':man_with_white_cane_medium_light_skin_tone:' => '👨🏼🦯',
+ ':man_with_white_cane_medium_skin_tone:' => '👨🏽🦯',
+ ':man_zombie:' => '🧟♂️',
+ ':mechanic_dark_skin_tone:' => '🧑🏿🔧',
+ ':mechanic_light_skin_tone:' => '🧑🏻🔧',
+ ':mechanic_medium_dark_skin_tone:' => '🧑🏾🔧',
+ ':mechanic_medium_light_skin_tone:' => '🧑🏼🔧',
+ ':mechanic_medium_skin_tone:' => '🧑🏽🔧',
+ ':men_with_bunny_ears:' => '👯♂️',
+ ':men_wrestling:' => '🤼♂️',
+ ':mending_heart:' => '❤️🩹',
+ ':mermaid:' => '🧜♀️',
+ ':merman:' => '🧜♂️',
+ ':mx_claus_dark_skin_tone:' => '🧑🏿🎄',
+ ':mx_claus_light_skin_tone:' => '🧑🏻🎄',
+ ':mx_claus_medium_dark_skin_tone:' => '🧑🏾🎄',
+ ':mx_claus_medium_light_skin_tone:' => '🧑🏼🎄',
+ ':mx_claus_medium_skin_tone:' => '🧑🏽🎄',
+ ':office_worker_dark_skin_tone:' => '🧑🏿💼',
+ ':office_worker_light_skin_tone:' => '🧑🏻💼',
+ ':office_worker_medium_dark_skin_tone:' => '🧑🏾💼',
+ ':office_worker_medium_light_skin_tone:' => '🧑🏼💼',
+ ':office_worker_medium_skin_tone:' => '🧑🏽💼',
+ ':person_dark_skin_tone_bald:' => '🧑🏿🦲',
+ ':person_dark_skin_tone_curly_hair:' => '🧑🏿🦱',
+ ':person_dark_skin_tone_red_hair:' => '🧑🏿🦰',
+ ':person_dark_skin_tone_white_hair:' => '🧑🏿🦳',
+ ':person_feeding_baby_dark_skin_tone:' => '🧑🏿🍼',
+ ':person_feeding_baby_light_skin_tone:' => '🧑🏻🍼',
+ ':person_feeding_baby_medium_dark_skin_tone:' => '🧑🏾🍼',
+ ':person_feeding_baby_medium_light_skin_tone:' => '🧑🏼🍼',
+ ':person_feeding_baby_medium_skin_tone:' => '🧑🏽🍼',
+ ':person_in_manual_wheelchair_dark_skin_tone:' => '🧑🏿🦽',
+ ':person_in_manual_wheelchair_light_skin_tone:' => '🧑🏻🦽',
+ ':person_in_manual_wheelchair_medium_dark_skin_tone:' => '🧑🏾🦽',
+ ':person_in_manual_wheelchair_medium_light_skin_tone:' => '🧑🏼🦽',
+ ':person_in_manual_wheelchair_medium_skin_tone:' => '🧑🏽🦽',
+ ':person_in_motorized_wheelchair_dark_skin_tone:' => '🧑🏿🦼',
+ ':person_in_motorized_wheelchair_light_skin_tone:' => '🧑🏻🦼',
+ ':person_in_motorized_wheelchair_medium_dark_skin_tone:' => '🧑🏾🦼',
+ ':person_in_motorized_wheelchair_medium_light_skin_tone:' => '🧑🏼🦼',
+ ':person_in_motorized_wheelchair_medium_skin_tone:' => '🧑🏽🦼',
+ ':person_kneeling_facing_right:' => '🧎➡️',
+ ':person_light_skin_tone_bald:' => '🧑🏻🦲',
+ ':person_light_skin_tone_curly_hair:' => '🧑🏻🦱',
+ ':person_light_skin_tone_red_hair:' => '🧑🏻🦰',
+ ':person_light_skin_tone_white_hair:' => '🧑🏻🦳',
+ ':person_medium_dark_skin_tone_bald:' => '🧑🏾🦲',
+ ':person_medium_dark_skin_tone_curly_hair:' => '🧑🏾🦱',
+ ':person_medium_dark_skin_tone_red_hair:' => '🧑🏾🦰',
+ ':person_medium_dark_skin_tone_white_hair:' => '🧑🏾🦳',
+ ':person_medium_light_skin_tone_bald:' => '🧑🏼🦲',
+ ':person_medium_light_skin_tone_curly_hair:' => '🧑🏼🦱',
+ ':person_medium_light_skin_tone_red_hair:' => '🧑🏼🦰',
+ ':person_medium_light_skin_tone_white_hair:' => '🧑🏼🦳',
+ ':person_medium_skin_tone_bald:' => '🧑🏽🦲',
+ ':person_medium_skin_tone_curly_hair:' => '🧑🏽🦱',
+ ':person_medium_skin_tone_red_hair:' => '🧑🏽🦰',
+ ':person_medium_skin_tone_white_hair:' => '🧑🏽🦳',
+ ':person_running_facing_right:' => '🏃➡️',
+ ':person_walking_facing_right:' => '🚶➡️',
+ ':person_with_white_cane_dark_skin_tone:' => '🧑🏿🦯',
+ ':person_with_white_cane_light_skin_tone:' => '🧑🏻🦯',
+ ':person_with_white_cane_medium_dark_skin_tone:' => '🧑🏾🦯',
+ ':person_with_white_cane_medium_light_skin_tone:' => '🧑🏼🦯',
+ ':person_with_white_cane_medium_skin_tone:' => '🧑🏽🦯',
+ ':pilot:' => '🧑✈️',
+ ':pirate_flag:' => '🏴☠️',
+ ':polar_bear:' => '🐻❄️',
+ ':scientist_dark_skin_tone:' => '🧑🏿🔬',
+ ':scientist_light_skin_tone:' => '🧑🏻🔬',
+ ':scientist_medium_dark_skin_tone:' => '🧑🏾🔬',
+ ':scientist_medium_light_skin_tone:' => '🧑🏼🔬',
+ ':scientist_medium_skin_tone:' => '🧑🏽🔬',
+ ':singer_dark_skin_tone:' => '🧑🏿🎤',
+ ':singer_light_skin_tone:' => '🧑🏻🎤',
+ ':singer_medium_dark_skin_tone:' => '🧑🏾🎤',
+ ':singer_medium_light_skin_tone:' => '🧑🏼🎤',
+ ':singer_medium_skin_tone:' => '🧑🏽🎤',
+ ':student_dark_skin_tone:' => '🧑🏿🎓',
+ ':student_light_skin_tone:' => '🧑🏻🎓',
+ ':student_medium_dark_skin_tone:' => '🧑🏾🎓',
+ ':student_medium_light_skin_tone:' => '🧑🏼🎓',
+ ':student_medium_skin_tone:' => '🧑🏽🎓',
+ ':teacher_dark_skin_tone:' => '🧑🏿🏫',
+ ':teacher_light_skin_tone:' => '🧑🏻🏫',
+ ':teacher_medium_dark_skin_tone:' => '🧑🏾🏫',
+ ':teacher_medium_light_skin_tone:' => '🧑🏼🏫',
+ ':teacher_medium_skin_tone:' => '🧑🏽🏫',
+ ':technologist_dark_skin_tone:' => '🧑🏿💻',
+ ':technologist_light_skin_tone:' => '🧑🏻💻',
+ ':technologist_medium_dark_skin_tone:' => '🧑🏾💻',
+ ':technologist_medium_light_skin_tone:' => '🧑🏼💻',
+ ':technologist_medium_skin_tone:' => '🧑🏽💻',
+ ':woman_artist_dark_skin_tone:' => '👩🏿🎨',
+ ':woman_artist_light_skin_tone:' => '👩🏻🎨',
+ ':woman_artist_medium_dark_skin_tone:' => '👩🏾🎨',
+ ':woman_artist_medium_light_skin_tone:' => '👩🏼🎨',
+ ':woman_artist_medium_skin_tone:' => '👩🏽🎨',
+ ':woman_astronaut_dark_skin_tone:' => '👩🏿🚀',
+ ':woman_astronaut_light_skin_tone:' => '👩🏻🚀',
+ ':woman_astronaut_medium_dark_skin_tone:' => '👩🏾🚀',
+ ':woman_astronaut_medium_light_skin_tone:' => '👩🏼🚀',
+ ':woman_astronaut_medium_skin_tone:' => '👩🏽🚀',
+ ':woman_beard:' => '🧔♀️',
+ ':woman_biking:' => '🚴♀️',
+ ':woman_blond_hair:' => '👱♀️',
+ ':woman_bowing:' => '🙇♀️',
+ ':woman_cartwheeling:' => '🤸♀️',
+ ':woman_climbing:' => '🧗♀️',
+ ':woman_construction_worker:' => '👷♀️',
+ ':woman_cook_dark_skin_tone:' => '👩🏿🍳',
+ ':woman_cook_light_skin_tone:' => '👩🏻🍳',
+ ':woman_cook_medium_dark_skin_tone:' => '👩🏾🍳',
+ ':woman_cook_medium_light_skin_tone:' => '👩🏼🍳',
+ ':woman_cook_medium_skin_tone:' => '👩🏽🍳',
+ ':woman_dark_skin_tone_bald:' => '👩🏿🦲',
+ ':woman_dark_skin_tone_curly_hair:' => '👩🏿🦱',
+ ':woman_dark_skin_tone_red_hair:' => '👩🏿🦰',
+ ':woman_dark_skin_tone_white_hair:' => '👩🏿🦳',
+ ':woman_elf:' => '🧝♀️',
+ ':woman_facepalming:' => '🤦♀️',
+ ':woman_factory_worker_dark_skin_tone:' => '👩🏿🏭',
+ ':woman_factory_worker_light_skin_tone:' => '👩🏻🏭',
+ ':woman_factory_worker_medium_dark_skin_tone:' => '👩🏾🏭',
+ ':woman_factory_worker_medium_light_skin_tone:' => '👩🏼🏭',
+ ':woman_factory_worker_medium_skin_tone:' => '👩🏽🏭',
+ ':woman_fairy:' => '🧚♀️',
+ ':woman_farmer_dark_skin_tone:' => '👩🏿🌾',
+ ':woman_farmer_light_skin_tone:' => '👩🏻🌾',
+ ':woman_farmer_medium_dark_skin_tone:' => '👩🏾🌾',
+ ':woman_farmer_medium_light_skin_tone:' => '👩🏼🌾',
+ ':woman_farmer_medium_skin_tone:' => '👩🏽🌾',
+ ':woman_feeding_baby_dark_skin_tone:' => '👩🏿🍼',
+ ':woman_feeding_baby_light_skin_tone:' => '👩🏻🍼',
+ ':woman_feeding_baby_medium_dark_skin_tone:' => '👩🏾🍼',
+ ':woman_feeding_baby_medium_light_skin_tone:' => '👩🏼🍼',
+ ':woman_feeding_baby_medium_skin_tone:' => '👩🏽🍼',
+ ':woman_firefighter_dark_skin_tone:' => '👩🏿🚒',
+ ':woman_firefighter_light_skin_tone:' => '👩🏻🚒',
+ ':woman_firefighter_medium_dark_skin_tone:' => '👩🏾🚒',
+ ':woman_firefighter_medium_light_skin_tone:' => '👩🏼🚒',
+ ':woman_firefighter_medium_skin_tone:' => '👩🏽🚒',
+ ':woman_frowning:' => '🙍♀️',
+ ':woman_genie:' => '🧞♀️',
+ ':woman_gesturing_no:' => '🙅♀️',
+ ':woman_gesturing_ok:' => '🙆♀️',
+ ':woman_getting_haircut:' => '💇♀️',
+ ':woman_getting_massage:' => '💆♀️',
+ ':woman_guard:' => '💂♀️',
+ ':woman_health_worker:' => '👩⚕️',
+ ':woman_in_lotus_position:' => '🧘♀️',
+ ':woman_in_manual_wheelchair_dark_skin_tone:' => '👩🏿🦽',
+ ':woman_in_manual_wheelchair_light_skin_tone:' => '👩🏻🦽',
+ ':woman_in_manual_wheelchair_medium_dark_skin_tone:' => '👩🏾🦽',
+ ':woman_in_manual_wheelchair_medium_light_skin_tone:' => '👩🏼🦽',
+ ':woman_in_manual_wheelchair_medium_skin_tone:' => '👩🏽🦽',
+ ':woman_in_motorized_wheelchair_dark_skin_tone:' => '👩🏿🦼',
+ ':woman_in_motorized_wheelchair_light_skin_tone:' => '👩🏻🦼',
+ ':woman_in_motorized_wheelchair_medium_dark_skin_tone:' => '👩🏾🦼',
+ ':woman_in_motorized_wheelchair_medium_light_skin_tone:' => '👩🏼🦼',
+ ':woman_in_motorized_wheelchair_medium_skin_tone:' => '👩🏽🦼',
+ ':woman_in_steamy_room:' => '🧖♀️',
+ ':woman_in_tuxedo:' => '🤵♀️',
+ ':woman_judge:' => '👩⚖️',
+ ':woman_juggling:' => '🤹♀️',
+ ':woman_kneeling:' => '🧎♀️',
+ ':woman_light_skin_tone_bald:' => '👩🏻🦲',
+ ':woman_light_skin_tone_curly_hair:' => '👩🏻🦱',
+ ':woman_light_skin_tone_red_hair:' => '👩🏻🦰',
+ ':woman_light_skin_tone_white_hair:' => '👩🏻🦳',
+ ':woman_mage:' => '🧙♀️',
+ ':woman_mechanic_dark_skin_tone:' => '👩🏿🔧',
+ ':woman_mechanic_light_skin_tone:' => '👩🏻🔧',
+ ':woman_mechanic_medium_dark_skin_tone:' => '👩🏾🔧',
+ ':woman_mechanic_medium_light_skin_tone:' => '👩🏼🔧',
+ ':woman_mechanic_medium_skin_tone:' => '👩🏽🔧',
+ ':woman_medium_dark_skin_tone_bald:' => '👩🏾🦲',
+ ':woman_medium_dark_skin_tone_curly_hair:' => '👩🏾🦱',
+ ':woman_medium_dark_skin_tone_red_hair:' => '👩🏾🦰',
+ ':woman_medium_dark_skin_tone_white_hair:' => '👩🏾🦳',
+ ':woman_medium_light_skin_tone_bald:' => '👩🏼🦲',
+ ':woman_medium_light_skin_tone_curly_hair:' => '👩🏼🦱',
+ ':woman_medium_light_skin_tone_red_hair:' => '👩🏼🦰',
+ ':woman_medium_light_skin_tone_white_hair:' => '👩🏼🦳',
+ ':woman_medium_skin_tone_bald:' => '👩🏽🦲',
+ ':woman_medium_skin_tone_curly_hair:' => '👩🏽🦱',
+ ':woman_medium_skin_tone_red_hair:' => '👩🏽🦰',
+ ':woman_medium_skin_tone_white_hair:' => '👩🏽🦳',
+ ':woman_mountain_biking:' => '🚵♀️',
+ ':woman_office_worker_dark_skin_tone:' => '👩🏿💼',
+ ':woman_office_worker_light_skin_tone:' => '👩🏻💼',
+ ':woman_office_worker_medium_dark_skin_tone:' => '👩🏾💼',
+ ':woman_office_worker_medium_light_skin_tone:' => '👩🏼💼',
+ ':woman_office_worker_medium_skin_tone:' => '👩🏽💼',
+ ':woman_pilot:' => '👩✈️',
+ ':woman_playing_handball:' => '🤾♀️',
+ ':woman_playing_water_polo:' => '🤽♀️',
+ ':woman_police_officer:' => '👮♀️',
+ ':woman_pouting:' => '🙎♀️',
+ ':woman_raising_hand:' => '🙋♀️',
+ ':woman_rowing_boat:' => '🚣♀️',
+ ':woman_running:' => '🏃♀️',
+ ':woman_scientist_dark_skin_tone:' => '👩🏿🔬',
+ ':woman_scientist_light_skin_tone:' => '👩🏻🔬',
+ ':woman_scientist_medium_dark_skin_tone:' => '👩🏾🔬',
+ ':woman_scientist_medium_light_skin_tone:' => '👩🏼🔬',
+ ':woman_scientist_medium_skin_tone:' => '👩🏽🔬',
+ ':woman_shrugging:' => '🤷♀️',
+ ':woman_singer_dark_skin_tone:' => '👩🏿🎤',
+ ':woman_singer_light_skin_tone:' => '👩🏻🎤',
+ ':woman_singer_medium_dark_skin_tone:' => '👩🏾🎤',
+ ':woman_singer_medium_light_skin_tone:' => '👩🏼🎤',
+ ':woman_singer_medium_skin_tone:' => '👩🏽🎤',
+ ':woman_standing:' => '🧍♀️',
+ ':woman_student_dark_skin_tone:' => '👩🏿🎓',
+ ':woman_student_light_skin_tone:' => '👩🏻🎓',
+ ':woman_student_medium_dark_skin_tone:' => '👩🏾🎓',
+ ':woman_student_medium_light_skin_tone:' => '👩🏼🎓',
+ ':woman_student_medium_skin_tone:' => '👩🏽🎓',
+ ':woman_superhero:' => '🦸♀️',
+ ':woman_supervillain:' => '🦹♀️',
+ ':woman_surfing:' => '🏄♀️',
+ ':woman_swimming:' => '🏊♀️',
+ ':woman_teacher_dark_skin_tone:' => '👩🏿🏫',
+ ':woman_teacher_light_skin_tone:' => '👩🏻🏫',
+ ':woman_teacher_medium_dark_skin_tone:' => '👩🏾🏫',
+ ':woman_teacher_medium_light_skin_tone:' => '👩🏼🏫',
+ ':woman_teacher_medium_skin_tone:' => '👩🏽🏫',
+ ':woman_technologist_dark_skin_tone:' => '👩🏿💻',
+ ':woman_technologist_light_skin_tone:' => '👩🏻💻',
+ ':woman_technologist_medium_dark_skin_tone:' => '👩🏾💻',
+ ':woman_technologist_medium_light_skin_tone:' => '👩🏼💻',
+ ':woman_technologist_medium_skin_tone:' => '👩🏽💻',
+ ':woman_tipping_hand:' => '💁♀️',
+ ':woman_vampire:' => '🧛♀️',
+ ':woman_walking:' => '🚶♀️',
+ ':woman_wearing_turban:' => '👳♀️',
+ ':woman_with_veil:' => '👰♀️',
+ ':woman_with_white_cane_dark_skin_tone:' => '👩🏿🦯',
+ ':woman_with_white_cane_light_skin_tone:' => '👩🏻🦯',
+ ':woman_with_white_cane_medium_dark_skin_tone:' => '👩🏾🦯',
+ ':woman_with_white_cane_medium_light_skin_tone:' => '👩🏼🦯',
+ ':woman_with_white_cane_medium_skin_tone:' => '👩🏽🦯',
+ ':woman_zombie:' => '🧟♀️',
+ ':women_with_bunny_ears:' => '👯♀️',
+ ':women_wrestling:' => '🤼♀️',
+ ':deaf_man_dark_skin_tone:' => '🧏🏿♂️',
+ ':deaf_man_light_skin_tone:' => '🧏🏻♂️',
+ ':deaf_man_medium_dark_skin_tone:' => '🧏🏾♂️',
+ ':deaf_man_medium_light_skin_tone:' => '🧏🏼♂️',
+ ':deaf_man_medium_skin_tone:' => '🧏🏽♂️',
+ ':deaf_woman_dark_skin_tone:' => '🧏🏿♀️',
+ ':deaf_woman_light_skin_tone:' => '🧏🏻♀️',
+ ':deaf_woman_medium_dark_skin_tone:' => '🧏🏾♀️',
+ ':deaf_woman_medium_light_skin_tone:' => '🧏🏼♀️',
+ ':deaf_woman_medium_skin_tone:' => '🧏🏽♀️',
+ ':eye_in_speech_bubble:' => '👁️🗨️',
+ ':family_adult_adult_child:' => '🧑🧑🧒',
+ ':family_adult_child_child:' => '🧑🧒🧒',
+ ':family_man_boy_boy:' => '👨👦👦',
+ ':family_man_girl_boy:' => '👨👧👦',
+ ':family_man_girl_girl:' => '👨👧👧',
+ ':family_man_woman_boy:' => '👨👩👦',
':family_mmb:' => '👨👨👦',
':family_mmg:' => '👨👨👧',
':family_mwg:' => '👨👩👧',
+ ':family_woman_boy_boy:' => '👩👦👦',
+ ':family_woman_girl_boy:' => '👩👧👦',
+ ':family_woman_girl_girl:' => '👩👧👧',
':family_wwb:' => '👩👩👦',
':family_wwg:' => '👩👩👧',
- ':couple_with_heart_mm:' => '👨❤️👨',
- ':couple_with_heart_ww:' => '👩❤️👩',
+ ':handshake_dark_skin_tone_light_skin_tone:' => '🫱🏿🫲🏻',
+ ':handshake_dark_skin_tone_medium_dark_skin_tone:' => '🫱🏿🫲🏾',
+ ':handshake_dark_skin_tone_medium_light_skin_tone:' => '🫱🏿🫲🏼',
+ ':handshake_dark_skin_tone_medium_skin_tone:' => '🫱🏿🫲🏽',
+ ':handshake_light_skin_tone_dark_skin_tone:' => '🫱🏻🫲🏿',
+ ':handshake_light_skin_tone_medium_dark_skin_tone:' => '🫱🏻🫲🏾',
+ ':handshake_light_skin_tone_medium_light_skin_tone:' => '🫱🏻🫲🏼',
+ ':handshake_light_skin_tone_medium_skin_tone:' => '🫱🏻🫲🏽',
+ ':handshake_medium_dark_skin_tone_dark_skin_tone:' => '🫱🏾🫲🏿',
+ ':handshake_medium_dark_skin_tone_light_skin_tone:' => '🫱🏾🫲🏻',
+ ':handshake_medium_dark_skin_tone_medium_light_skin_tone:' => '🫱🏾🫲🏼',
+ ':handshake_medium_dark_skin_tone_medium_skin_tone:' => '🫱🏾🫲🏽',
+ ':handshake_medium_light_skin_tone_dark_skin_tone:' => '🫱🏼🫲🏿',
+ ':handshake_medium_light_skin_tone_light_skin_tone:' => '🫱🏼🫲🏻',
+ ':handshake_medium_light_skin_tone_medium_dark_skin_tone:' => '🫱🏼🫲🏾',
+ ':handshake_medium_light_skin_tone_medium_skin_tone:' => '🫱🏼🫲🏽',
+ ':handshake_medium_skin_tone_dark_skin_tone:' => '🫱🏽🫲🏿',
+ ':handshake_medium_skin_tone_light_skin_tone:' => '🫱🏽🫲🏻',
+ ':handshake_medium_skin_tone_medium_dark_skin_tone:' => '🫱🏽🫲🏾',
+ ':handshake_medium_skin_tone_medium_light_skin_tone:' => '🫱🏽🫲🏼',
+ ':health_worker_dark_skin_tone:' => '🧑🏿⚕️',
+ ':health_worker_light_skin_tone:' => '🧑🏻⚕️',
+ ':health_worker_medium_dark_skin_tone:' => '🧑🏾⚕️',
+ ':health_worker_medium_light_skin_tone:' => '🧑🏼⚕️',
+ ':health_worker_medium_skin_tone:' => '🧑🏽⚕️',
+ ':judge_dark_skin_tone:' => '🧑🏿⚖️',
+ ':judge_light_skin_tone:' => '🧑🏻⚖️',
+ ':judge_medium_dark_skin_tone:' => '🧑🏾⚖️',
+ ':judge_medium_light_skin_tone:' => '🧑🏼⚖️',
+ ':judge_medium_skin_tone:' => '🧑🏽⚖️',
+ ':man_biking_dark_skin_tone:' => '🚴🏿♂️',
+ ':man_biking_light_skin_tone:' => '🚴🏻♂️',
+ ':man_biking_medium_dark_skin_tone:' => '🚴🏾♂️',
+ ':man_biking_medium_light_skin_tone:' => '🚴🏼♂️',
+ ':man_biking_medium_skin_tone:' => '🚴🏽♂️',
+ ':man_bouncing_ball:' => '⛹️♂️',
+ ':man_bouncing_ball_dark_skin_tone:' => '⛹🏿♂️',
+ ':man_bouncing_ball_light_skin_tone:' => '⛹🏻♂️',
+ ':man_bouncing_ball_medium_dark_skin_tone:' => '⛹🏾♂️',
+ ':man_bouncing_ball_medium_light_skin_tone:' => '⛹🏼♂️',
+ ':man_bouncing_ball_medium_skin_tone:' => '⛹🏽♂️',
+ ':man_bowing_dark_skin_tone:' => '🙇🏿♂️',
+ ':man_bowing_light_skin_tone:' => '🙇🏻♂️',
+ ':man_bowing_medium_dark_skin_tone:' => '🙇🏾♂️',
+ ':man_bowing_medium_light_skin_tone:' => '🙇🏼♂️',
+ ':man_bowing_medium_skin_tone:' => '🙇🏽♂️',
+ ':man_cartwheeling_dark_skin_tone:' => '🤸🏿♂️',
+ ':man_cartwheeling_light_skin_tone:' => '🤸🏻♂️',
+ ':man_cartwheeling_medium_dark_skin_tone:' => '🤸🏾♂️',
+ ':man_cartwheeling_medium_light_skin_tone:' => '🤸🏼♂️',
+ ':man_cartwheeling_medium_skin_tone:' => '🤸🏽♂️',
+ ':man_climbing_dark_skin_tone:' => '🧗🏿♂️',
+ ':man_climbing_light_skin_tone:' => '🧗🏻♂️',
+ ':man_climbing_medium_dark_skin_tone:' => '🧗🏾♂️',
+ ':man_climbing_medium_light_skin_tone:' => '🧗🏼♂️',
+ ':man_climbing_medium_skin_tone:' => '🧗🏽♂️',
+ ':man_construction_worker_dark_skin_tone:' => '👷🏿♂️',
+ ':man_construction_worker_light_skin_tone:' => '👷🏻♂️',
+ ':man_construction_worker_medium_dark_skin_tone:' => '👷🏾♂️',
+ ':man_construction_worker_medium_light_skin_tone:' => '👷🏼♂️',
+ ':man_construction_worker_medium_skin_tone:' => '👷🏽♂️',
+ ':man_dark_skin_tone_beard:' => '🧔🏿♂️',
+ ':man_dark_skin_tone_blond_hair:' => '👱🏿♂️',
+ ':man_detective:' => '🕵️♂️',
+ ':man_detective_dark_skin_tone:' => '🕵🏿♂️',
+ ':man_detective_light_skin_tone:' => '🕵🏻♂️',
+ ':man_detective_medium_dark_skin_tone:' => '🕵🏾♂️',
+ ':man_detective_medium_light_skin_tone:' => '🕵🏼♂️',
+ ':man_detective_medium_skin_tone:' => '🕵🏽♂️',
+ ':man_elf_dark_skin_tone:' => '🧝🏿♂️',
+ ':man_elf_light_skin_tone:' => '🧝🏻♂️',
+ ':man_elf_medium_dark_skin_tone:' => '🧝🏾♂️',
+ ':man_elf_medium_light_skin_tone:' => '🧝🏼♂️',
+ ':man_elf_medium_skin_tone:' => '🧝🏽♂️',
+ ':man_facepalming_dark_skin_tone:' => '🤦🏿♂️',
+ ':man_facepalming_light_skin_tone:' => '🤦🏻♂️',
+ ':man_facepalming_medium_dark_skin_tone:' => '🤦🏾♂️',
+ ':man_facepalming_medium_light_skin_tone:' => '🤦🏼♂️',
+ ':man_facepalming_medium_skin_tone:' => '🤦🏽♂️',
+ ':man_fairy_dark_skin_tone:' => '🧚🏿♂️',
+ ':man_fairy_light_skin_tone:' => '🧚🏻♂️',
+ ':man_fairy_medium_dark_skin_tone:' => '🧚🏾♂️',
+ ':man_fairy_medium_light_skin_tone:' => '🧚🏼♂️',
+ ':man_fairy_medium_skin_tone:' => '🧚🏽♂️',
+ ':man_frowning_dark_skin_tone:' => '🙍🏿♂️',
+ ':man_frowning_light_skin_tone:' => '🙍🏻♂️',
+ ':man_frowning_medium_dark_skin_tone:' => '🙍🏾♂️',
+ ':man_frowning_medium_light_skin_tone:' => '🙍🏼♂️',
+ ':man_frowning_medium_skin_tone:' => '🙍🏽♂️',
+ ':man_gesturing_no_dark_skin_tone:' => '🙅🏿♂️',
+ ':man_gesturing_no_light_skin_tone:' => '🙅🏻♂️',
+ ':man_gesturing_no_medium_dark_skin_tone:' => '🙅🏾♂️',
+ ':man_gesturing_no_medium_light_skin_tone:' => '🙅🏼♂️',
+ ':man_gesturing_no_medium_skin_tone:' => '🙅🏽♂️',
+ ':man_gesturing_ok_dark_skin_tone:' => '🙆🏿♂️',
+ ':man_gesturing_ok_light_skin_tone:' => '🙆🏻♂️',
+ ':man_gesturing_ok_medium_dark_skin_tone:' => '🙆🏾♂️',
+ ':man_gesturing_ok_medium_light_skin_tone:' => '🙆🏼♂️',
+ ':man_gesturing_ok_medium_skin_tone:' => '🙆🏽♂️',
+ ':man_getting_haircut_dark_skin_tone:' => '💇🏿♂️',
+ ':man_getting_haircut_light_skin_tone:' => '💇🏻♂️',
+ ':man_getting_haircut_medium_dark_skin_tone:' => '💇🏾♂️',
+ ':man_getting_haircut_medium_light_skin_tone:' => '💇🏼♂️',
+ ':man_getting_haircut_medium_skin_tone:' => '💇🏽♂️',
+ ':man_getting_massage_dark_skin_tone:' => '💆🏿♂️',
+ ':man_getting_massage_light_skin_tone:' => '💆🏻♂️',
+ ':man_getting_massage_medium_dark_skin_tone:' => '💆🏾♂️',
+ ':man_getting_massage_medium_light_skin_tone:' => '💆🏼♂️',
+ ':man_getting_massage_medium_skin_tone:' => '💆🏽♂️',
+ ':man_golfing:' => '🏌️♂️',
+ ':man_golfing_dark_skin_tone:' => '🏌🏿♂️',
+ ':man_golfing_light_skin_tone:' => '🏌🏻♂️',
+ ':man_golfing_medium_dark_skin_tone:' => '🏌🏾♂️',
+ ':man_golfing_medium_light_skin_tone:' => '🏌🏼♂️',
+ ':man_golfing_medium_skin_tone:' => '🏌🏽♂️',
+ ':man_guard_dark_skin_tone:' => '💂🏿♂️',
+ ':man_guard_light_skin_tone:' => '💂🏻♂️',
+ ':man_guard_medium_dark_skin_tone:' => '💂🏾♂️',
+ ':man_guard_medium_light_skin_tone:' => '💂🏼♂️',
+ ':man_guard_medium_skin_tone:' => '💂🏽♂️',
+ ':man_health_worker_dark_skin_tone:' => '👨🏿⚕️',
+ ':man_health_worker_light_skin_tone:' => '👨🏻⚕️',
+ ':man_health_worker_medium_dark_skin_tone:' => '👨🏾⚕️',
+ ':man_health_worker_medium_light_skin_tone:' => '👨🏼⚕️',
+ ':man_health_worker_medium_skin_tone:' => '👨🏽⚕️',
+ ':man_in_lotus_position_dark_skin_tone:' => '🧘🏿♂️',
+ ':man_in_lotus_position_light_skin_tone:' => '🧘🏻♂️',
+ ':man_in_lotus_position_medium_dark_skin_tone:' => '🧘🏾♂️',
+ ':man_in_lotus_position_medium_light_skin_tone:' => '🧘🏼♂️',
+ ':man_in_lotus_position_medium_skin_tone:' => '🧘🏽♂️',
+ ':man_in_steamy_room_dark_skin_tone:' => '🧖🏿♂️',
+ ':man_in_steamy_room_light_skin_tone:' => '🧖🏻♂️',
+ ':man_in_steamy_room_medium_dark_skin_tone:' => '🧖🏾♂️',
+ ':man_in_steamy_room_medium_light_skin_tone:' => '🧖🏼♂️',
+ ':man_in_steamy_room_medium_skin_tone:' => '🧖🏽♂️',
+ ':man_in_tuxedo_dark_skin_tone:' => '🤵🏿♂️',
+ ':man_in_tuxedo_light_skin_tone:' => '🤵🏻♂️',
+ ':man_in_tuxedo_medium_dark_skin_tone:' => '🤵🏾♂️',
+ ':man_in_tuxedo_medium_light_skin_tone:' => '🤵🏼♂️',
+ ':man_in_tuxedo_medium_skin_tone:' => '🤵🏽♂️',
+ ':man_judge_dark_skin_tone:' => '👨🏿⚖️',
+ ':man_judge_light_skin_tone:' => '👨🏻⚖️',
+ ':man_judge_medium_dark_skin_tone:' => '👨🏾⚖️',
+ ':man_judge_medium_light_skin_tone:' => '👨🏼⚖️',
+ ':man_judge_medium_skin_tone:' => '👨🏽⚖️',
+ ':man_juggling_dark_skin_tone:' => '🤹🏿♂️',
+ ':man_juggling_light_skin_tone:' => '🤹🏻♂️',
+ ':man_juggling_medium_dark_skin_tone:' => '🤹🏾♂️',
+ ':man_juggling_medium_light_skin_tone:' => '🤹🏼♂️',
+ ':man_juggling_medium_skin_tone:' => '🤹🏽♂️',
+ ':man_kneeling_dark_skin_tone:' => '🧎🏿♂️',
+ ':man_kneeling_light_skin_tone:' => '🧎🏻♂️',
+ ':man_kneeling_medium_dark_skin_tone:' => '🧎🏾♂️',
+ ':man_kneeling_medium_light_skin_tone:' => '🧎🏼♂️',
+ ':man_kneeling_medium_skin_tone:' => '🧎🏽♂️',
+ ':man_lifting_weights:' => '🏋️♂️',
+ ':man_lifting_weights_dark_skin_tone:' => '🏋🏿♂️',
+ ':man_lifting_weights_light_skin_tone:' => '🏋🏻♂️',
+ ':man_lifting_weights_medium_dark_skin_tone:' => '🏋🏾♂️',
+ ':man_lifting_weights_medium_light_skin_tone:' => '🏋🏼♂️',
+ ':man_lifting_weights_medium_skin_tone:' => '🏋🏽♂️',
+ ':man_light_skin_tone_beard:' => '🧔🏻♂️',
+ ':man_light_skin_tone_blond_hair:' => '👱🏻♂️',
+ ':man_mage_dark_skin_tone:' => '🧙🏿♂️',
+ ':man_mage_light_skin_tone:' => '🧙🏻♂️',
+ ':man_mage_medium_dark_skin_tone:' => '🧙🏾♂️',
+ ':man_mage_medium_light_skin_tone:' => '🧙🏼♂️',
+ ':man_mage_medium_skin_tone:' => '🧙🏽♂️',
+ ':man_medium_dark_skin_tone_beard:' => '🧔🏾♂️',
+ ':man_medium_dark_skin_tone_blond_hair:' => '👱🏾♂️',
+ ':man_medium_light_skin_tone_beard:' => '🧔🏼♂️',
+ ':man_medium_light_skin_tone_blond_hair:' => '👱🏼♂️',
+ ':man_medium_skin_tone_beard:' => '🧔🏽♂️',
+ ':man_medium_skin_tone_blond_hair:' => '👱🏽♂️',
+ ':man_mountain_biking_dark_skin_tone:' => '🚵🏿♂️',
+ ':man_mountain_biking_light_skin_tone:' => '🚵🏻♂️',
+ ':man_mountain_biking_medium_dark_skin_tone:' => '🚵🏾♂️',
+ ':man_mountain_biking_medium_light_skin_tone:' => '🚵🏼♂️',
+ ':man_mountain_biking_medium_skin_tone:' => '🚵🏽♂️',
+ ':man_pilot_dark_skin_tone:' => '👨🏿✈️',
+ ':man_pilot_light_skin_tone:' => '👨🏻✈️',
+ ':man_pilot_medium_dark_skin_tone:' => '👨🏾✈️',
+ ':man_pilot_medium_light_skin_tone:' => '👨🏼✈️',
+ ':man_pilot_medium_skin_tone:' => '👨🏽✈️',
+ ':man_playing_handball_dark_skin_tone:' => '🤾🏿♂️',
+ ':man_playing_handball_light_skin_tone:' => '🤾🏻♂️',
+ ':man_playing_handball_medium_dark_skin_tone:' => '🤾🏾♂️',
+ ':man_playing_handball_medium_light_skin_tone:' => '🤾🏼♂️',
+ ':man_playing_handball_medium_skin_tone:' => '🤾🏽♂️',
+ ':man_playing_water_polo_dark_skin_tone:' => '🤽🏿♂️',
+ ':man_playing_water_polo_light_skin_tone:' => '🤽🏻♂️',
+ ':man_playing_water_polo_medium_dark_skin_tone:' => '🤽🏾♂️',
+ ':man_playing_water_polo_medium_light_skin_tone:' => '🤽🏼♂️',
+ ':man_playing_water_polo_medium_skin_tone:' => '🤽🏽♂️',
+ ':man_police_officer_dark_skin_tone:' => '👮🏿♂️',
+ ':man_police_officer_light_skin_tone:' => '👮🏻♂️',
+ ':man_police_officer_medium_dark_skin_tone:' => '👮🏾♂️',
+ ':man_police_officer_medium_light_skin_tone:' => '👮🏼♂️',
+ ':man_police_officer_medium_skin_tone:' => '👮🏽♂️',
+ ':man_pouting_dark_skin_tone:' => '🙎🏿♂️',
+ ':man_pouting_light_skin_tone:' => '🙎🏻♂️',
+ ':man_pouting_medium_dark_skin_tone:' => '🙎🏾♂️',
+ ':man_pouting_medium_light_skin_tone:' => '🙎🏼♂️',
+ ':man_pouting_medium_skin_tone:' => '🙎🏽♂️',
+ ':man_raising_hand_dark_skin_tone:' => '🙋🏿♂️',
+ ':man_raising_hand_light_skin_tone:' => '🙋🏻♂️',
+ ':man_raising_hand_medium_dark_skin_tone:' => '🙋🏾♂️',
+ ':man_raising_hand_medium_light_skin_tone:' => '🙋🏼♂️',
+ ':man_raising_hand_medium_skin_tone:' => '🙋🏽♂️',
+ ':man_rowing_boat_dark_skin_tone:' => '🚣🏿♂️',
+ ':man_rowing_boat_light_skin_tone:' => '🚣🏻♂️',
+ ':man_rowing_boat_medium_dark_skin_tone:' => '🚣🏾♂️',
+ ':man_rowing_boat_medium_light_skin_tone:' => '🚣🏼♂️',
+ ':man_rowing_boat_medium_skin_tone:' => '🚣🏽♂️',
+ ':man_running_dark_skin_tone:' => '🏃🏿♂️',
+ ':man_running_light_skin_tone:' => '🏃🏻♂️',
+ ':man_running_medium_dark_skin_tone:' => '🏃🏾♂️',
+ ':man_running_medium_light_skin_tone:' => '🏃🏼♂️',
+ ':man_running_medium_skin_tone:' => '🏃🏽♂️',
+ ':man_shrugging_dark_skin_tone:' => '🤷🏿♂️',
+ ':man_shrugging_light_skin_tone:' => '🤷🏻♂️',
+ ':man_shrugging_medium_dark_skin_tone:' => '🤷🏾♂️',
+ ':man_shrugging_medium_light_skin_tone:' => '🤷🏼♂️',
+ ':man_shrugging_medium_skin_tone:' => '🤷🏽♂️',
+ ':man_standing_dark_skin_tone:' => '🧍🏿♂️',
+ ':man_standing_light_skin_tone:' => '🧍🏻♂️',
+ ':man_standing_medium_dark_skin_tone:' => '🧍🏾♂️',
+ ':man_standing_medium_light_skin_tone:' => '🧍🏼♂️',
+ ':man_standing_medium_skin_tone:' => '🧍🏽♂️',
+ ':man_superhero_dark_skin_tone:' => '🦸🏿♂️',
+ ':man_superhero_light_skin_tone:' => '🦸🏻♂️',
+ ':man_superhero_medium_dark_skin_tone:' => '🦸🏾♂️',
+ ':man_superhero_medium_light_skin_tone:' => '🦸🏼♂️',
+ ':man_superhero_medium_skin_tone:' => '🦸🏽♂️',
+ ':man_supervillain_dark_skin_tone:' => '🦹🏿♂️',
+ ':man_supervillain_light_skin_tone:' => '🦹🏻♂️',
+ ':man_supervillain_medium_dark_skin_tone:' => '🦹🏾♂️',
+ ':man_supervillain_medium_light_skin_tone:' => '🦹🏼♂️',
+ ':man_supervillain_medium_skin_tone:' => '🦹🏽♂️',
+ ':man_surfing_dark_skin_tone:' => '🏄🏿♂️',
+ ':man_surfing_light_skin_tone:' => '🏄🏻♂️',
+ ':man_surfing_medium_dark_skin_tone:' => '🏄🏾♂️',
+ ':man_surfing_medium_light_skin_tone:' => '🏄🏼♂️',
+ ':man_surfing_medium_skin_tone:' => '🏄🏽♂️',
+ ':man_swimming_dark_skin_tone:' => '🏊🏿♂️',
+ ':man_swimming_light_skin_tone:' => '🏊🏻♂️',
+ ':man_swimming_medium_dark_skin_tone:' => '🏊🏾♂️',
+ ':man_swimming_medium_light_skin_tone:' => '🏊🏼♂️',
+ ':man_swimming_medium_skin_tone:' => '🏊🏽♂️',
+ ':man_tipping_hand_dark_skin_tone:' => '💁🏿♂️',
+ ':man_tipping_hand_light_skin_tone:' => '💁🏻♂️',
+ ':man_tipping_hand_medium_dark_skin_tone:' => '💁🏾♂️',
+ ':man_tipping_hand_medium_light_skin_tone:' => '💁🏼♂️',
+ ':man_tipping_hand_medium_skin_tone:' => '💁🏽♂️',
+ ':man_vampire_dark_skin_tone:' => '🧛🏿♂️',
+ ':man_vampire_light_skin_tone:' => '🧛🏻♂️',
+ ':man_vampire_medium_dark_skin_tone:' => '🧛🏾♂️',
+ ':man_vampire_medium_light_skin_tone:' => '🧛🏼♂️',
+
10000
':man_vampire_medium_skin_tone:' => '🧛🏽♂️',
+ ':man_walking_dark_skin_tone:' => '🚶🏿♂️',
+ ':man_walking_light_skin_tone:' => '🚶🏻♂️',
+ ':man_walking_medium_dark_skin_tone:' => '🚶🏾♂️',
+ ':man_walking_medium_light_skin_tone:' => '🚶🏼♂️',
+ ':man_walking_medium_skin_tone:' => '🚶🏽♂️',
+ ':man_wearing_turban_dark_skin_tone:' => '👳🏿♂️',
+ ':man_wearing_turban_light_skin_tone:' => '👳🏻♂️',
+ ':man_wearing_turban_medium_dark_skin_tone:' => '👳🏾♂️',
+ ':man_wearing_turban_medium_light_skin_tone:' => '👳🏼♂️',
+ ':man_wearing_turban_medium_skin_tone:' => '👳🏽♂️',
+ ':man_with_veil_dark_skin_tone:' => '👰🏿♂️',
+ ':man_with_veil_light_skin_tone:' => '👰🏻♂️',
+ ':man_with_veil_medium_dark_skin_tone:' => '👰🏾♂️',
+ ':man_with_veil_medium_light_skin_tone:' => '👰🏼♂️',
+ ':man_with_veil_medium_skin_tone:' => '👰🏽♂️',
+ ':mermaid_dark_skin_tone:' => '🧜🏿♀️',
+ ':mermaid_light_skin_tone:' => '🧜🏻♀️',
+ ':mermaid_medium_dark_skin_tone:' => '🧜🏾♀️',
+ ':mermaid_medium_light_skin_tone:' => '🧜🏼♀️',
+ ':mermaid_medium_skin_tone:' => '🧜🏽♀️',
+ ':merman_dark_skin_tone:' => '🧜🏿♂️',
+ ':merman_light_skin_tone:' => '🧜🏻♂️',
+ ':merman_medium_dark_skin_tone:' => '🧜🏾♂️',
+ ':merman_medium_light_skin_tone:' => '🧜🏼♂️',
+ ':merman_medium_skin_tone:' => '🧜🏽♂️',
+ ':people_holding_hands:' => '🧑🤝🧑',
+ ':person_kneeling_facing_right_dark_skin_tone:' => '🧎🏿➡️',
+ ':person_kneeling_facing_right_light_skin_tone:' => '🧎🏻➡️',
+ ':person_kneeling_facing_right_medium_dark_skin_tone:' => '🧎🏾➡️',
+ ':person_kneeling_facing_right_medium_light_skin_tone:' => '🧎🏼➡️',
+ ':person_kneeling_facing_right_medium_skin_tone:' => '🧎🏽➡️',
+ ':person_running_facing_right_dark_skin_tone:' => '🏃🏿➡️',
+ ':person_running_facing_right_light_skin_tone:' => '🏃🏻➡️',
+ ':person_running_facing_right_medium_dark_skin_tone:' => '🏃🏾➡️',
+ ':person_running_facing_right_medium_light_skin_tone:' => '🏃🏼➡️',
+ ':person_running_facing_right_medium_skin_tone:' => '🏃🏽➡️',
+ ':person_walking_facing_right_dark_skin_tone:' => '🚶🏿➡️',
+ ':person_walking_facing_right_light_skin_tone:' => '🚶🏻➡️',
+ ':person_walking_facing_right_medium_dark_skin_tone:' => '🚶🏾➡️',
+ ':person_walking_facing_right_medium_light_skin_tone:' => '🚶🏼➡️',
+ ':person_walking_facing_right_medium_skin_tone:' => '🚶🏽➡️',
+ ':pilot_dark_skin_tone:' => '🧑🏿✈️',
+ ':pilot_light_skin_tone:' => '🧑🏻✈️',
+ ':pilot_medium_dark_skin_tone:' => '🧑🏾✈️',
+ ':pilot_medium_light_skin_tone:' => '🧑🏼✈️',
+ ':pilot_medium_skin_tone:' => '🧑🏽✈️',
+ ':transgender_flag:' => '🏳️⚧️',
+ ':woman_biking_dark_skin_tone:' => '🚴🏿♀️',
+ ':woman_biking_light_skin_tone:' => '🚴🏻♀️',
+ ':woman_biking_medium_dark_skin_tone:' => '🚴🏾♀️',
+ ':woman_biking_medium_light_skin_tone:' => '🚴🏼♀️',
+ ':woman_biking_medium_skin_tone:' => '🚴🏽♀️',
+ ':woman_bouncing_ball:' => '⛹️♀️',
+ ':woman_bouncing_ball_dark_skin_tone:' => '⛹🏿♀️',
+ ':woman_bouncing_ball_light_skin_tone:' => '⛹🏻♀️',
+ ':woman_bouncing_ball_medium_dark_skin_tone:' => '⛹🏾♀️',
+ ':woman_bouncing_ball_medium_light_skin_tone:' => '⛹🏼♀️',
+ ':woman_bouncing_ball_medium_skin_tone:' => '⛹🏽♀️',
+ ':woman_bowing_dark_skin_tone:' => '🙇🏿♀️',
+ ':woman_bowing_light_skin_tone:' => '🙇🏻♀️',
+ ':woman_bowing_medium_dark_skin_tone:' => '🙇🏾♀️',
+ ':woman_bowing_medium_light_skin_tone:' => '🙇🏼♀️',
+ ':woman_bowing_medium_skin_tone:' => '🙇🏽♀️',
+ ':woman_cartwheeling_dark_skin_tone:' => '🤸🏿♀️',
+ ':woman_cartwheeling_light_skin_tone:' => '🤸🏻♀️',
+ ':woman_cartwheeling_medium_dark_skin_tone:' => '🤸🏾♀️',
+ ':woman_cartwheeling_medium_light_skin_tone:' => '🤸🏼♀️',
+ ':woman_cartwheeling_medium_skin_tone:' => '🤸🏽♀️',
+ ':woman_climbing_dark_skin_tone:' => '🧗🏿♀️',
+ ':woman_climbing_light_skin_tone:' => '🧗🏻♀️',
+ ':woman_climbing_medium_dark_skin_tone:' => '🧗🏾♀️',
+ ':woman_climbing_medium_light_skin_tone:' => '🧗🏼♀️',
+ ':woman_climbing_medium_skin_tone:' => '🧗🏽♀️',
+ ':woman_construction_worker_dark_skin_tone:' => '👷🏿♀️',
+ ':woman_construction_worker_light_skin_tone:' => '👷🏻♀️',
+ ':woman_construction_worker_medium_dark_skin_tone:' => '👷🏾♀️',
+ ':woman_construction_worker_medium_light_skin_tone:' => '👷🏼♀️',
+ ':woman_construction_worker_medium_skin_tone:' => '👷🏽♀️',
+ ':woman_dark_skin_tone_beard:' => '🧔🏿♀️',
+ ':woman_dark_skin_tone_blond_hair:' => '👱🏿♀️',
+ ':woman_detective:' => '🕵️♀️',
+ ':woman_detective_dark_skin_tone:' => '🕵🏿♀️',
+ ':woman_detective_light_skin_tone:' => '🕵🏻♀️',
+ ':woman_detective_medium_dark_skin_tone:' => '🕵🏾♀️',
+ ':woman_detective_medium_light_skin_tone:' => '🕵🏼♀️',
+ ':woman_detective_medium_skin_tone:' => '🕵🏽♀️',
+ ':woman_elf_dark_skin_tone:' => '🧝🏿♀️',
+ ':woman_elf_light_skin_tone:' => '🧝🏻♀️',
+ ':woman_elf_medium_dark_skin_tone:' => '🧝🏾♀️',
+ ':woman_elf_medium_light_skin_tone:' => '🧝🏼♀️',
+ ':woman_elf_medium_skin_tone:' => '🧝🏽♀️',
+ ':woman_facepalming_dark_skin_tone:' => '🤦🏿♀️',
+ ':woman_facepalming_light_skin_tone:' => '🤦🏻♀️',
+ ':woman_facepalming_medium_dark_skin_tone:' => '🤦🏾♀️',
+ ':woman_facepalming_medium_light_skin_tone:' => '🤦🏼♀️',
+ ':woman_facepalming_medium_skin_tone:' => '🤦🏽♀️',
+ ':woman_fairy_dark_skin_tone:' => '🧚🏿♀️',
+ ':woman_fairy_light_skin_tone:' => '🧚🏻♀️',
+ ':woman_fairy_medium_dark_skin_tone:' => '🧚🏾♀️',
+ ':woman_fairy_medium_light_skin_tone:' => '🧚🏼♀️',
+ ':woman_fairy_medium_skin_tone:' => '🧚🏽♀️',
+ ':woman_frowning_dark_skin_tone:' => '🙍🏿♀️',
+ ':woman_frowning_light_skin_tone:' => '🙍🏻♀️',
+ ':woman_frowning_medium_dark_skin_tone:' => '🙍🏾♀️',
+ ':woman_frowning_medium_light_skin_tone:' => '🙍🏼♀️',
+ ':woman_frowning_medium_skin_tone:' => '🙍🏽♀️',
+ ':woman_gesturing_no_dark_skin_tone:' => '🙅🏿♀️',
+ ':woman_gesturing_no_light_skin_tone:' => '🙅🏻♀️',
+ ':woman_gesturing_no_medium_dark_skin_tone:' => '🙅🏾♀️',
+ ':woman_gesturing_no_medium_light_skin_tone:' => '🙅🏼♀️',
+ ':woman_gesturing_no_medium_skin_tone:' => '🙅🏽♀️',
+ ':woman_gesturing_ok_dark_skin_tone:' => '🙆🏿♀️',
+ ':woman_gesturing_ok_light_skin_tone:' => '🙆🏻♀️',
+ ':woman_gesturing_ok_medium_dark_skin_tone:' => '🙆🏾♀️',
+ ':woman_gesturing_ok_medium_light_skin_tone:' => '🙆🏼♀️',
+ ':woman_gesturing_ok_medium_skin_tone:' => '🙆🏽♀️',
+ ':woman_getting_haircut_dark_skin_tone:' => '💇🏿♀️',
+ ':woman_getting_haircut_light_skin_tone:' => '💇🏻♀️',
+ ':woman_getting_haircut_medium_dark_skin_tone:' => '💇🏾♀️',
+ ':woman_getting_haircut_medium_light_skin_tone:' => '💇🏼♀️',
+ ':woman_getting_haircut_medium_skin_tone:' => '💇🏽♀️',
+ ':woman_getting_massage_dark_skin_tone:' => '💆🏿♀️',
+ ':woman_getting_massage_light_skin_tone:' => '💆🏻♀️',
+ ':woman_getting_massage_medium_dark_skin_tone:' => '💆🏾♀️',
+ ':woman_getting_massage_medium_light_skin_tone:' => '💆🏼♀️',
+ ':woman_getting_massage_medium_skin_tone:' => '💆🏽♀️',
+ ':woman_golfing:' => '🏌️♀️',
+ ':woman_golfing_dark_skin_tone:' => '🏌🏿♀️',
+ ':woman_golfing_light_skin_tone:' => '🏌🏻♀️',
+ ':woman_golfing_medium_dark_skin_tone:' => '🏌🏾♀️',
+ ':woman_golfing_medium_light_skin_tone:' => '🏌🏼♀️',
+ ':woman_golfing_medium_skin_tone:' => '🏌🏽♀️',
+ ':woman_guard_dark_skin_tone:' => '💂🏿♀️',
+ ':woman_guard_light_skin_tone:' => '💂🏻♀️',
+ ':woman_guard_medium_dark_skin_tone:' => '💂🏾♀️',
+ ':woman_guard_medium_light_skin_tone:' => '💂🏼♀️',
+ ':woman_guard_medium_skin_tone:' => '💂🏽♀️',
+ ':woman_health_worker_dark_skin_tone:' => '👩🏿⚕️',
+ ':woman_health_worker_light_skin_tone:' => '👩🏻⚕️',
+ ':woman_health_worker_medium_dark_skin_tone:' => '👩🏾⚕️',
+ ':woman_health_worker_medium_light_skin_tone:' => '👩🏼⚕️',
+ ':woman_health_worker_medium_skin_tone:' => '👩🏽⚕️',
+ ':woman_in_lotus_position_dark_skin_tone:' => '🧘🏿♀️',
+ ':woman_in_lotus_position_light_skin_tone:' => '🧘🏻♀️',
+ ':woman_in_lotus_position_medium_dark_skin_tone:' => '🧘🏾♀️',
+ ':woman_in_lotus_position_medium_light_skin_tone:' => '🧘🏼♀️',
+ ':woman_in_lotus_position_medium_skin_tone:' => '🧘🏽♀️',
+ ':woman_in_steamy_room_dark_skin_tone:' => '🧖🏿♀️',
+ ':woman_in_steamy_room_light_skin_tone:' => '🧖🏻♀️',
+ ':woman_in_steamy_room_medium_dark_skin_tone:' => '🧖🏾♀️',
+ ':woman_in_steamy_room_medium_light_skin_tone:' => '🧖🏼♀️',
+ ':woman_in_steamy_room_medium_skin_tone:' => '🧖🏽♀️',
+ ':woman_in_tuxedo_dark_skin_tone:' => '🤵🏿♀️',
+ ':woman_in_tuxedo_light_skin_tone:' => '🤵🏻♀️',
+ ':woman_in_tuxedo_medium_dark_skin_tone:' => '🤵🏾♀️',
+ ':woman_in_tuxedo_medium_light_skin_tone:' => '🤵🏼♀️',
+ ':woman_in_tuxedo_medium_skin_tone:' => '🤵🏽♀️',
+ ':woman_judge_dark_skin_tone:' => '👩🏿⚖️',
+ ':woman_judge_light_skin_tone:' => '👩🏻⚖️',
+ ':woman_judge_medium_dark_skin_tone:' => '👩🏾⚖️',
+ ':woman_judge_medium_light_skin_tone:' => '👩🏼⚖️',
+ ':woman_judge_medium_skin_tone:' => '👩🏽⚖️',
+ ':woman_juggling_dark_skin_tone:' => '🤹🏿♀️',
+ ':woman_juggling_light_skin_tone:' => '🤹🏻♀️',
+ ':woman_juggling_medium_dark_skin_tone:' => '🤹🏾♀️',
+ ':woman_juggling_medium_light_skin_tone:' => '🤹🏼♀️',
+ ':woman_juggling_medium_skin_tone:' => '🤹🏽♀️',
+ ':woman_kneeling_dark_skin_tone:' => '🧎🏿♀️',
+ ':woman_kneeling_light_skin_tone:' => '🧎🏻♀️',
+ ':woman_kneeling_medium_dark_skin_tone:' => '🧎🏾♀️',
+ ':woman_kneeling_medium_light_skin_tone:' => '🧎🏼♀️',
+ ':woman_kneeling_medium_skin_tone:' => '🧎🏽♀️',
+ ':woman_lifting_weights:' => '🏋️♀️',
+ ':woman_lifting_weights_dark_skin_tone:' => '🏋🏿♀️',
+ ':woman_lifting_weights_light_skin_tone:' => '🏋🏻♀️',
+ ':woman_lifting_weights_medium_dark_skin_tone:' => '🏋🏾♀️',
+ ':woman_lifting_weights_medium_light_skin_tone:' => '🏋🏼♀️',
+ ':woman_lifting_weights_medium_skin_tone:' => '🏋🏽♀️',
+ ':woman_light_skin_tone_beard:' => '🧔🏻♀️',
+ ':woman_light_skin_tone_blond_hair:' => '👱🏻♀️',
+ ':woman_mage_dark_skin_tone:' => '🧙🏿♀️',
+ ':woman_mage_light_skin_tone:' => '🧙🏻♀️',
+ ':woman_mage_medium_dark_skin_tone:' => '🧙🏾♀️',
+ ':woman_mage_medium_light_skin_tone:' => '🧙🏼♀️',
+ ':woman_mage_medium_skin_tone:' => '🧙🏽♀️',
+ ':woman_medium_dark_skin_tone_beard:' => '🧔🏾♀️',
+ ':woman_medium_dark_skin_tone_blond_hair:' => '👱🏾♀️',
+ ':woman_medium_light_skin_tone_beard:' => '🧔🏼♀️',
+ ':woman_medium_light_skin_tone_blond_hair:' => '👱🏼♀️',
+ ':woman_medium_skin_tone_beard:' => '🧔🏽♀️',
+ ':woman_medium_skin_tone_blond_hair:' => '👱🏽♀️',
+ ':woman_mountain_biking_dark_skin_tone:' => '🚵🏿♀️',
+ ':woman_mountain_biking_light_skin_tone:' => '🚵🏻♀️',
+ ':woman_mountain_biking_medium_dark_skin_tone:' => '🚵🏾♀️',
+ ':woman_mountain_biking_medium_light_skin_tone:' => '🚵🏼♀️',
+ ':woman_mountain_biking_medium_skin_tone:' => '🚵🏽♀️',
+ ':woman_pilot_dark_skin_tone:' => '👩🏿✈️',
+ ':woman_pilot_light_skin_tone:' => '👩🏻✈️',
+ ':woman_pilot_medium_dark_skin_tone:' => '👩🏾✈️',
+ ':woman_pilot_medium_light_skin_tone:' => '👩🏼✈️',
+ ':woman_pilot_medium_skin_tone:' => '👩🏽✈️',
+ ':woman_playing_handball_dark_skin_tone:' => '🤾🏿♀️',
+ ':woman_playing_handball_light_skin_tone:' => '🤾🏻♀️',
+ ':woman_playing_handball_medium_dark_skin_tone:' => '🤾🏾♀️',
+ ':woman_playing_handball_medium_light_skin_tone:' => '🤾🏼♀️',
+ ':woman_playing_handball_medium_skin_tone:' => '🤾🏽♀️',
+ ':woman_playing_water_polo_dark_skin_tone:' => '🤽🏿♀️',
+ ':woman_playing_water_polo_light_skin_tone:' => '🤽🏻♀️',
+ ':woman_playing_water_polo_medium_dark_skin_tone:' => '🤽🏾♀️',
+ ':woman_playing_water_polo_medium_light_skin_tone:' => '🤽🏼♀️',
+ ':woman_playing_water_polo_medium_skin_tone:' => '🤽🏽♀️',
+ ':woman_police_officer_dark_skin_tone:' => '👮🏿♀️',
+ ':woman_police_officer_light_skin_tone:' => '👮🏻♀️',
+ ':woman_police_officer_medium_dark_skin_tone:' => '👮🏾♀️',
+ ':woman_police_officer_medium_light_skin_tone:' => '👮🏼♀️',
+ ':woman_police_officer_medium_skin_tone:' => '👮🏽♀️',
+ ':woman_pouting_dark_skin_tone:' => '🙎🏿♀️',
+ ':woman_pouting_light_skin_tone:' => '🙎🏻♀️',
+ ':woman_pouting_medium_dark_skin_tone:' => '🙎🏾♀️',
+ ':woman_pouting_medium_light_skin_tone:' => '🙎🏼♀️',
+ ':woman_pouting_medium_skin_tone:' => '🙎🏽♀️',
+ ':woman_raising_hand_dark_skin_tone:' => '🙋🏿♀️',
+ ':woman_raising_hand_light_skin_tone:' => '🙋🏻♀️',
+ ':woman_raising_hand_medium_dark_skin_tone:' => '🙋🏾♀️',
+ ':woman_raising_hand_medium_light_skin_tone:' => '🙋🏼♀️',
+ ':woman_raising_hand_medium_skin_tone:' => '🙋🏽♀️',
+ ':woman_rowing_boat_dark_skin_tone:' => '🚣🏿♀️',
+ ':woman_rowing_boat_light_skin_tone:' => '🚣🏻♀️',
+ ':woman_rowing_boat_medium_dark_skin_tone:' => '🚣🏾♀️',
+ ':woman_rowing_boat_medium_light_skin_tone:' => '🚣🏼♀️',
+ ':woman_rowing_boat_medium_skin_tone:' => '🚣🏽♀️',
+ ':woman_running_dark_skin_tone:' => '🏃🏿♀️',
+ ':woman_running_light_skin_tone:' => '🏃🏻♀️',
+ ':woman_running_medium_dark_skin_tone:' => '🏃🏾♀️',
+ ':woman_running_medium_light_skin_tone:' => '🏃🏼♀️',
+ ':woman_running_medium_skin_tone:' => '🏃🏽♀️',
+ ':woman_shrugging_dark_skin_tone:' => '🤷🏿♀️',
+ ':woman_shrugging_light_skin_tone:' => '🤷🏻♀️',
+ ':woman_shrugging_medium_dark_skin_tone:' => '🤷🏾♀️',
+ ':woman_shrugging_medium_light_skin_tone:' => '🤷🏼♀️',
+ ':woman_shrugging_medium_skin_tone:' => '🤷🏽♀️',
+ ':woman_standing_dark_skin_tone:' => '🧍🏿♀️',
+ ':woman_standing_light_skin_tone:' => '🧍🏻♀️',
+ ':woman_standing_medium_dark_skin_tone:' => '🧍🏾♀️',
+ ':woman_standing_medium_light_skin_tone:' => '🧍🏼♀️',
+ ':woman_standing_medium_skin_tone:' => '🧍🏽♀️',
+ ':woman_superhero_dark_skin_tone:' => '🦸🏿♀️',
+ ':woman_superhero_light_skin_tone:' => '🦸🏻♀️',
+ ':woman_superhero_medium_dark_skin_tone:' => '🦸🏾♀️',
+ ':woman_superhero_medium_light_skin_tone:' => '🦸🏼♀️',
+ ':woman_superhero_medium_skin_tone:' => '🦸🏽♀️',
+ ':woman_supervillain_dark_skin_tone:' => '🦹🏿♀️',
+ ':woman_supervillain_light_skin_tone:' => '🦹🏻♀️',
+ ':woman_supervillain_medium_dark_skin_tone:' => '🦹🏾♀️',
+ ':woman_supervillain_medium_light_skin_tone:' => '🦹🏼♀️',
+ ':woman_supervillain_medium_skin_tone:' => '🦹🏽♀️',
+ ':woman_surfing_dark_skin_tone:' => '🏄🏿♀️',
+ ':woman_surfing_light_skin_tone:' => '🏄🏻♀️',
+ ':woman_surfing_medium_dark_skin_tone:' => '🏄🏾♀️',
+ ':woman_surfing_medium_light_skin_tone:' => '🏄🏼♀️',
+ ':woman_surfing_medium_skin_tone:' => '🏄🏽♀️',
+ ':woman_swimming_dark_skin_tone:' => '🏊🏿♀️',
+ ':woman_swimming_light_skin_tone:' => '🏊🏻♀️',
+ ':woman_swimming_medium_dark_skin_tone:' => '🏊🏾♀️',
+ ':woman_swimming_medium_light_skin_tone:' => '🏊🏼♀️',
+ ':woman_swimming_medium_skin_tone:' => '🏊🏽♀️',
+ ':woman_tipping_hand_dark_skin_tone:' => '💁🏿♀️',
+ ':woman_tipping_hand_light_skin_tone:' => '💁🏻♀️',
+ ':woman_tipping_hand_medium_dark_skin_tone:' => '💁🏾♀️',
+ ':woman_tipping_hand_medium_light_skin_tone:' => '💁🏼♀️',
+ ':woman_tipping_hand_medium_skin_tone:' => '💁🏽♀️',
+ ':woman_vampire_dark_skin_tone:' => '🧛🏿♀️',
+ ':woman_vampire_light_skin_tone:' => '🧛🏻♀️',
+ ':woman_vampire_medium_dark_skin_tone:' => '🧛🏾♀️',
+ ':woman_vampire_medium_light_skin_tone:' => '🧛🏼♀️',
+ ':woman_vampire_medium_skin_tone:' => '🧛🏽♀️',
+ ':woman_walking_dark_skin_tone:' => '🚶🏿♀️',
+ ':woman_walking_light_skin_tone:' => '🚶🏻♀️',
+ ':woman_walking_medium_dark_skin_tone:' => '🚶🏾♀️',
+ ':woman_walking_medium_light_skin_tone:' => '🚶🏼♀️',
+ ':woman_walking_medium_skin_tone:' => '🚶🏽♀️',
+ ':woman_wearing_turban_dark_skin_tone:' => '👳🏿♀️',
+ ':woman_wearing_turban_light_skin_tone:' => '👳🏻♀️',
+ ':woman_wearing_turban_medium_dark_skin_tone:' => '👳🏾♀️',
+ ':woman_wearing_turban_medium_light_skin_tone:' => '👳🏼♀️',
+ ':woman_wearing_turban_medium_skin_tone:' => '👳🏽♀️',
+ ':woman_with_veil_dark_skin_tone:' => '👰🏿♀️',
+ ':woman_with_veil_light_skin_tone:' => '👰🏻♀️',
+ ':woman_with_veil_medium_dark_skin_tone:' => '👰🏾♀️',
+ ':woman_with_veil_medium_light_skin_tone:' => '👰🏼♀️',
+ ':woman_with_veil_medium_skin_tone:' => '👰🏽♀️',
':couple_mm:' => '👨❤️👨',
+ ':couple_with_heart_woman_man:' => '👩❤️👨',
':couple_ww:' => '👩❤️👩',
+ ':man_in_manual_wheelchair_facing_right:' => '👨🦽➡️',
+ ':man_in_motorized_wheelchair_facing_right:' => '👨🦼➡️',
+ ':man_with_white_cane_facing_right:' => '👨🦯➡️',
+ ':person_in_manual_wheelchair_facing_right:' => '🧑🦽➡️',
+ ':person_in_motorized_wheelchair_facing_right:' => '🧑🦼➡️',
+ ':person_with_white_cane_facing_right:' => '🧑🦯➡️',
+ ':woman_in_manual_wheelchair_facing_right:' => '👩🦽➡️',
+ ':woman_in_motorized_wheelchair_facing_right:' => '👩🦼➡️',
+ ':woman_with_white_cane_facing_right:' => '👩🦯➡️',
+ ':family_adult_adult_child_child:' => '🧑🧑🧒🧒',
':family_mmbb:' => '👨👨👦👦',
':family_mmgb:' => '👨👨👧👦',
':family_mmgg:' => '👨👨👧👧',
@@ -2330,8 +3418,366 @@
':family_wwbb:' => '👩👩👦👦',
':family_wwgb:' => '👩👩👧👦',
':family_wwgg:' => '👩👩👧👧',
- ':couplekiss_mm:' => '👨❤️💋👨',
- ':couplekiss_ww:' => '👩❤️💋👩',
+ ':flag_england:' => '🏴',
+ ':flag_scotland:' => '🏴',
+ ':flag_wales:' => '🏴',
+ ':man_in_manual_wheelchair_facing_right_dark_skin_tone:' => '👨🏿🦽➡️',
+ ':man_in_manual_wheelchair_facing_right_light_skin_tone:' => '👨🏻🦽➡️',
+ ':man_in_manual_wheelchair_facing_right_medium_dark_skin_tone:' => '👨🏾🦽➡️',
+ ':man_in_manual_wheelchair_facing_right_medium_light_skin_tone:' => '👨🏼🦽➡️',
+ ':man_in_manual_wheelchair_facing_right_medium_skin_tone:' => '👨🏽🦽➡️',
+ ':man_in_motorized_wheelchair_facing_right_dark_skin_tone:' => '👨🏿🦼➡️',
+ ':man_in_motorized_wheelchair_facing_right_light_skin_tone:' => '👨🏻🦼➡️',
+ ':man_in_motorized_wheelchair_facing_right_medium_dark_skin_tone:' => '👨🏾🦼➡️',
+ ':man_in_motorized_wheelchair_facing_right_medium_light_skin_tone:' => '👨🏼🦼➡️',
+ ':man_in_motorized_wheelchair_facing_right_medium_skin_tone:' => '👨🏽🦼➡️',
+ ':man_kneeling_facing_right:' => '🧎♂️➡️',
+ ':man_running_facing_right:' => '🏃♂️➡️',
+ ':man_walking_facing_right:' => '🚶♂️➡️',
+ ':man_with_white_cane_facing_right_dark_skin_tone:' => '👨🏿🦯➡️',
+ ':man_with_white_cane_facing_right_light_skin_tone:' => '👨🏻🦯➡️',
+ ':man_with_white_cane_facing_right_medium_dark_skin_tone:' => '👨🏾🦯➡️',
+ ':man_with_white_cane_facing_right_medium_light_skin_tone:' => '👨🏼🦯➡️',
+ ':man_with_white_cane_facing_right_medium_skin_tone:' => '👨🏽🦯➡️',
+ ':men_holding_hands_dark_skin_tone_light_skin_tone:' => '👨🏿🤝👨🏻',
+ ':men_holding_hands_dark_skin_tone_medium_dark_skin_tone:' => '👨🏿🤝👨🏾',
+ ':men_holding_hands_dark_skin_tone_medium_light_skin_tone:' => '👨🏿🤝👨🏼',
+ ':men_holding_hands_dark_skin_tone_medium_skin_tone:' => '👨🏿🤝👨🏽',
+ ':men_holding_hands_light_skin_tone_dark_skin_tone:' => '👨🏻🤝👨🏿',
+ ':men_holding_hands_light_skin_tone_medium_dark_skin_tone:' => '👨🏻🤝👨🏾',
+ ':men_holding_hands_light_skin_tone_medium_light_skin_tone:' => '👨🏻🤝👨🏼',
+ ':men_holding_hands_light_skin_tone_medium_skin_tone:' => '👨🏻🤝👨🏽',
+ ':men_holding_hands_medium_dark_skin_tone_dark_skin_tone:' => '👨🏾🤝👨🏿',
+ ':men_holding_hands_medium_dark_skin_tone_light_skin_tone:' => '👨🏾🤝👨🏻',
+ ':men_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:' => '👨🏾🤝👨🏼',
+ ':men_holding_hands_medium_dark_skin_tone_medium_skin_tone:' => '👨🏾🤝👨🏽',
+ ':men_holding_hands_medium_light_skin_tone_dark_skin_tone:' => '👨🏼🤝👨🏿',
+ ':men_holding_hands_medium_light_skin_tone_light_skin_tone:' => '👨🏼🤝👨🏻',
+ ':men_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:' => '👨🏼🤝👨🏾',
+ ':men_holding_hands_medium_light_skin_tone_medium_skin_tone:' => '👨🏼🤝👨🏽',
+ ':men_holding_hands_medium_skin_tone_dark_skin_tone:' => '👨🏽🤝👨🏿',
+ ':men_holding_hands_medium_skin_tone_light_skin_tone:' => '👨🏽🤝👨🏻',
+ ':men_holding_hands_medium_skin_tone_medium_dark_skin_tone:' => '👨🏽🤝👨🏾',
+ ':men_holding_hands_medium_skin_tone_medium_light_skin_tone:' => '👨🏽🤝👨🏼',
+ ':people_holding_hands_dark_skin_tone:' => '🧑🏿🤝🧑🏿',
+ ':people_holding_hands_dark_skin_tone_light_skin_tone:' => '🧑🏿🤝🧑🏻',
+ ':people_holding_hands_dark_skin_tone_medium_dark_skin_tone:' => '🧑🏿🤝🧑🏾',
+ ':people_holding_hands_dark_skin_tone_medium_light_skin_tone:' => '🧑🏿🤝🧑🏼',
+ ':people_holding_hands_dark_skin_tone_medium_skin_tone:' => '🧑🏿🤝🧑🏽',
+ ':people_holding_hands_light_skin_tone:' => '🧑🏻🤝🧑🏻',
+ ':people_holding_hands_light_skin_tone_dark_skin_tone:' => '🧑🏻🤝🧑🏿',
+ ':people_holding_hands_light_skin_tone_medium_dark_skin_tone:' => '🧑🏻🤝🧑🏾',
+ ':people_holding_hands_light_skin_tone_medium_light_skin_tone:' => '🧑🏻🤝🧑🏼',
+ ':people_holding_hands_light_skin_tone_medium_skin_tone:' => '🧑🏻🤝🧑🏽',
+ ':people_holding_hands_medium_dark_skin_tone:' => '🧑🏾🤝🧑🏾',
+ ':people_holding_hands_medium_dark_skin_tone_dark_skin_tone:' => '🧑🏾🤝🧑🏿',
+ ':people_holding_hands_medium_dark_skin_tone_light_skin_tone:' => '🧑🏾🤝🧑🏻',
+ ':people_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:' => '🧑🏾🤝🧑🏼',
+ ':people_holding_hands_medium_dark_skin_tone_medium_skin_tone:' => '🧑🏾🤝🧑🏽',
+ ':people_holding_hands_medium_light_skin_tone:' => '🧑🏼🤝🧑🏼',
+ ':people_holding_hands_medium_light_skin_tone_dark_skin_tone:' => '🧑🏼🤝🧑🏿',
+ ':people_holding_hands_medium_light_skin_tone_light_skin_tone:' => '🧑🏼🤝🧑🏻',
+ ':people_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:' => '🧑🏼🤝🧑🏾',
+ ':people_holding_hands_medium_light_skin_tone_medium_skin_tone:' => '🧑🏼🤝🧑🏽',
+ ':people_holding_hands_medium_skin_tone:' => '🧑🏽🤝🧑🏽',
+ ':people_holding_hands_medium_skin_tone_dark_skin_tone:' => '🧑🏽🤝🧑🏿',
+ ':people_holding_hands_medium_skin_tone_light_skin_tone:' => '🧑🏽🤝🧑🏻',
+ ':people_holding_hands_medium_skin_tone_medium_dark_skin_tone:' => '🧑🏽🤝🧑🏾',
+ ':people_holding_hands_medium_skin_tone_medium_light_skin_tone:' => '🧑🏽🤝🧑🏼',
+ ':person_in_manual_wheelchair_facing_right_dark_skin_tone:' => '🧑🏿🦽➡️',
+ ':person_in_manual_wheelchair_facing_right_light_skin_tone:' => '🧑🏻🦽➡️',
+ ':person_in_manual_wheelchair_facing_right_medium_dark_skin_tone:' => '🧑🏾🦽➡️',
+ ':person_in_manual_wheelchair_facing_right_medium_light_skin_tone:' => '🧑🏼🦽➡️',
+ ':person_in_manual_wheelchair_facing_right_medium_skin_tone:' => '🧑🏽🦽➡️',
+ ':person_in_motorized_wheelchair_facing_right_dark_skin_tone:' => '🧑🏿🦼➡️',
+ ':person_in_motorized_wheelchair_facing_right_light_skin_tone:' => '🧑🏻🦼➡️',
+ ':person_in_motorized_wheelchair_facing_right_medium_dark_skin_tone:' => '🧑🏾🦼➡️',
+ ':person_in_motorized_wheelchair_facing_right_medium_light_skin_tone:' => '🧑🏼🦼➡️',
+ ':person_in_motorized_wheelchair_facing_right_medium_skin_tone:' => '🧑🏽🦼➡️',
+ ':person_with_white_cane_facing_right_dark_skin_tone:' => '🧑🏿🦯➡️',
+ ':person_with_white_cane_facing_right_light_skin_tone:' => '🧑🏻🦯➡️',
+ ':person_with_white_cane_facing_right_medium_dark_skin_tone:' => '🧑🏾🦯➡️',
+ ':person_with_white_cane_facing_right_medium_light_skin_tone:' => '🧑🏼🦯➡️',
+ ':person_with_white_cane_facing_right_medium_skin_tone:' => '🧑🏽🦯➡️',
+ ':woman_and_man_holding_hands_dark_skin_tone_light_skin_tone:' => '👩🏿🤝👨🏻',
+ ':woman_and_man_holding_hands_dark_skin_tone_medium_dark_skin_tone:' => '👩🏿🤝👨🏾',
+ ':woman_and_man_holding_hands_dark_skin_tone_medium_light_skin_tone:' => '👩🏿🤝👨🏼',
+ ':woman_and_man_holding_hands_dark_skin_tone_medium_skin_tone:' => '👩🏿🤝👨🏽',
+ ':woman_and_man_holding_hands_light_skin_tone_dark_skin_tone:' => '👩🏻🤝👨🏿',
+ ':woman_and_man_holding_hands_light_skin_tone_medium_dark_skin_tone:' => '👩🏻🤝👨🏾',
+ ':woman_and_man_holding_hands_light_skin_tone_medium_light_skin_tone:' => '👩🏻🤝👨🏼',
+ ':woman_and_man_holding_hands_light_skin_tone_medium_skin_tone:' => '👩🏻🤝👨🏽',
+ ':woman_and_man_holding_hands_medium_dark_skin_tone_dark_skin_tone:' => '👩🏾🤝👨🏿',
+ ':woman_and_man_holding_hands_medium_dark_skin_tone_light_skin_tone:' => '👩🏾🤝👨🏻',
+ ':woman_and_man_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:' => '👩🏾🤝👨🏼',
+ ':woman_and_man_holding_hands_medium_dark_skin_tone_medium_skin_tone:' => '👩🏾🤝👨🏽',
+ ':woman_and_man_holding_hands_medium_light_skin_tone_dark_skin_tone:' => '👩🏼🤝👨🏿',
+ ':woman_and_man_holding_hands_medium_light_skin_tone_light_skin_tone:' => '👩🏼🤝👨🏻',
+ ':woman_and_man_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:' => '👩🏼🤝👨🏾',
+ ':woman_and_man_holding_hands_medium_light_skin_tone_medium_skin_tone:' => '👩🏼🤝👨🏽',
+ ':woman_and_man_holding_hands_medium_skin_tone_dark_skin_tone:' => '👩🏽🤝👨🏿',
+ ':woman_and_man_holding_hands_medium_skin_tone_light_skin_tone:' => '👩🏽🤝👨🏻',
+ ':woman_and_man_holding_hands_medium_skin_tone_medium_dark_skin_tone:' => '👩🏽🤝👨🏾',
+ ':woman_and_man_holding_hands_medium_skin_tone_medium_light_skin_tone:' => '👩🏽🤝👨🏼',
+ ':woman_in_manual_wheelchair_facing_right_dark_skin_tone:' => '👩🏿🦽➡️',
+ ':woman_in_manual_wheelchair_facing_right_light_skin_tone:' => '👩🏻🦽➡️',
+ ':woman_in_manual_wheelchair_facing_right_medium_dark_skin_tone:' => '👩🏾🦽➡️',
+ ':woman_in_manual_wheelchair_facing_right_medium_light_skin_tone:' => '👩🏼🦽➡️',
+ ':woman_in_manual_wheelchair_facing_right_medium_skin_tone:' => '👩🏽🦽➡️',
+ ':woman_in_motorized_wheelchair_facing_right_dark_skin_tone:' => '👩🏿🦼➡️',
+ ':woman_in_motorized_wheelchair_facing_right_light_skin_tone:' => '👩🏻🦼➡️',
+ ':woman_in_motorized_wheelchair_facing_right_medium_dark_skin_tone:' => '👩🏾🦼➡️',
+ ':woman_in_motorized_wheelchair_facing_right_medium_light_skin_tone:' => '👩🏼🦼➡️',
+ ':woman_in_motorized_wheelchair_facing_right_medium_skin_tone:' => '👩🏽🦼➡️',
+ ':woman_kneeling_facing_right:' => '🧎♀️➡️',
+ ':woman_running_facing_right:' => '🏃♀️➡️',
+ ':woman_walking_facing_right:' => '🚶♀️➡️',
+ ':woman_with_white_cane_facing_right_dark_skin_tone:' => '👩🏿🦯➡️',
+ ':woman_with_white_cane_facing_right_light_skin_tone:' => '👩🏻🦯➡️',
+ ':woman_with_white_cane_facing_right_medium_dark_skin_tone:' => '👩🏾🦯➡️',
+ ':woman_with_white_cane_facing_right_medium_light_skin_tone:' => '👩🏼🦯➡️',
+ ':woman_with_white_cane_facing_right_medium_skin_tone:' => '👩🏽🦯➡️',
+ ':women_holding_hands_dark_skin_tone_light_skin_tone:' => '👩🏿🤝👩🏻',
+ ':women_holding_hands_dark_skin_tone_medium_dark_skin_tone:' => '👩🏿🤝👩🏾',
+ ':women_holding_hands_dark_skin_tone_medium_light_skin_tone:' => '👩🏿🤝👩🏼',
+ ':women_holding_hands_dark_skin_tone_medium_skin_tone:' => '👩🏿🤝👩🏽',
+ ':women_holding_hands_light_skin_tone_dark_skin_tone:' => '👩🏻🤝👩🏿',
+ ':women_holding_hands_light_skin_tone_medium_dark_skin_tone:' => '👩🏻🤝👩🏾',
+ ':women_holding_hands_light_skin_tone_medium_light_skin_tone:' => '👩🏻🤝👩🏼',
+ ':women_holding_hands_light_skin_tone_medium_skin_tone:' => '👩🏻🤝👩🏽',
+ ':women_holding_hands_medium_dark_skin_tone_dark_skin_tone:' => '👩🏾🤝👩🏿',
+ ':women_holding_hands_medium_dark_skin_tone_light_skin_tone:' => '👩🏾🤝👩🏻',
+ ':women_holding_hands_medium_dark_skin_tone_medium_light_skin_tone:' => '👩🏾🤝👩🏼',
+ ':women_holding_hands_medium_dark_skin_tone_medium_skin_tone:' => '👩🏾🤝👩🏽',
+ ':women_holding_hands_medium_light_skin_tone_dark_skin_tone:' => '👩🏼🤝👩🏿',
+ ':women_holding_hands_medium_light_skin_tone_light_skin_tone:' => '👩🏼🤝👩🏻',
+ ':women_holding_hands_medium_light_skin_tone_medium_dark_skin_tone:' => '👩🏼🤝👩🏾',
+ ':women_holding_hands_medium_light_skin_tone_medium_skin_tone:' => '👩🏼🤝👩🏽',
+ ':women_holding_hands_medium_skin_tone_dark_skin_tone:' => '👩🏽🤝👩🏿',
+ ':women_holding_hands_medium_skin_tone_light_skin_tone:' => '👩🏽🤝👩🏻',
+ ':women_holding_hands_medium_skin_tone_medium_dark_skin_tone:' => '👩🏽🤝👩🏾',
+ ':women_holding_hands_medium_skin_tone_medium_light_skin_tone:' => '👩🏽🤝👩🏼',
+ ':couple_with_heart_man_man_dark_skin_tone:' => '👨🏿❤️👨🏿',
+ ':couple_with_heart_man_man_dark_skin_tone_light_skin_tone:' => '👨🏿❤️👨🏻',
+ ':couple_with_heart_man_man_dark_skin_tone_medium_dark_skin_tone:' => '👨🏿❤️👨🏾',
+ ':couple_with_heart_man_man_dark_skin_tone_medium_light_skin_tone:' => '👨🏿❤️👨🏼',
+ ':couple_with_heart_man_man_dark_skin_tone_medium_skin_tone:' => '👨🏿❤️👨🏽',
+ ':couple_with_heart_man_man_light_skin_tone:' => '👨🏻❤️👨🏻',
+ ':couple_with_heart_man_man_light_skin_tone_dark_skin_tone:' => '👨🏻❤️👨🏿',
+ ':couple_with_heart_man_man_light_skin_tone_medium_dark_skin_tone:' => '👨🏻❤️👨🏾',
+ ':couple_with_heart_man_man_light_skin_tone_medium_light_skin_tone:' => '👨🏻❤️👨🏼',
+ ':couple_with_heart_man_man_light_skin_tone_medium_skin_tone:' => '👨🏻❤️👨🏽',
+ ':couple_with_heart_man_man_medium_dark_skin_tone:' => '👨🏾❤️👨🏾',
+ ':couple_with_heart_man_man_medium_dark_skin_tone_dark_skin_tone:' => '👨🏾❤️👨🏿',
+ ':couple_with_heart_man_man_medium_dark_skin_tone_light_skin_tone:' => '👨🏾❤️👨🏻',
+ ':couple_with_heart_man_man_medium_dark_skin_tone_medium_light_skin_tone:' => '👨🏾❤️👨🏼',
+ ':couple_with_heart_man_man_medium_dark_skin_tone_medium_skin_tone:' => '👨🏾❤️👨🏽',
+ ':couple_with_heart_man_man_medium_light_skin_tone:' => '👨🏼❤️👨🏼',
+ ':couple_with_heart_man_man_medium_light_skin_tone_dark_skin_tone:' => '👨🏼❤️👨🏿',
+ ':couple_with_heart_man_man_medium_light_skin_tone_light_skin_tone:' => '👨🏼❤️👨🏻',
+ ':couple_with_heart_man_man_medium_light_skin_tone_medium_dark_skin_tone:' => '👨🏼❤️👨🏾',
+ ':couple_with_heart_man_man_medium_light_skin_tone_medium_skin_tone:' => '👨🏼❤️👨🏽',
+ ':couple_with_heart_man_man_medium_skin_tone:' => '👨🏽❤️👨🏽',
+ ':couple_with_heart_man_man_medium_skin_tone_dark_skin_tone:' => '👨🏽❤️👨🏿',
+ ':couple_with_heart_man_man_medium_skin_tone_light_skin_tone:' => '👨🏽❤️👨🏻',
+ ':couple_with_heart_man_man_medium_skin_tone_medium_dark_skin_tone:' => '👨🏽❤️👨🏾',
+ ':couple_with_heart_man_man_medium_skin_tone_medium_light_skin_tone:' => '👨🏽❤️👨🏼',
+ ':couple_with_heart_person_person_dark_skin_tone_light_skin_tone:' => '🧑🏿❤️🧑🏻',
+ ':couple_with_heart_person_person_dark_skin_tone_medium_dark_skin_tone:' => '🧑🏿❤️🧑🏾',
+ ':couple_with_heart_person_person_dark_skin_tone_medium_light_skin_tone:' => '🧑🏿❤️🧑🏼',
+ ':couple_with_heart_person_person_dark_skin_tone_medium_skin_tone:' => '🧑🏿❤️🧑🏽',
+ ':couple_with_heart_person_person_light_skin_tone_dark_skin_tone:' => '🧑🏻❤️🧑🏿',
+ ':couple_with_heart_person_person_light_skin_tone_medium_dark_skin_tone:' => '🧑🏻❤️🧑🏾',
+ ':couple_with_heart_person_person_light_skin_tone_medium_light_skin_tone:' => '🧑🏻❤️🧑🏼',
+ ':couple_with_heart_person_person_light_skin_tone_medium_skin_tone:' => '🧑🏻❤️🧑🏽',
+ ':couple_with_heart_person_person_medium_dark_skin_tone_dark_skin_tone:' => '🧑🏾❤️🧑🏿',
+ ':couple_with_heart_person_person_medium_dark_skin_tone_light_skin_tone:' => '🧑🏾❤️🧑🏻',
+ ':couple_with_heart_person_person_medium_dark_skin_tone_medium_light_skin_tone:' => '🧑🏾❤️🧑🏼',
+ ':couple_with_heart_person_person_medium_dark_skin_tone_medium_skin_tone:' => '🧑🏾❤️🧑🏽',
+ ':couple_with_heart_person_person_medium_light_skin_tone_dark_skin_tone:' => '🧑🏼❤️🧑🏿',
+ ':couple_with_heart_person_person_medium_light_skin_tone_light_skin_tone:' => '🧑🏼❤️🧑🏻',
+ ':couple_with_heart_person_person_medium_light_skin_tone_medium_dark_skin_tone:' => '🧑🏼❤️🧑🏾',
+ ':couple_with_heart_person_person_medium_light_skin_tone_medium_skin_tone:' => '🧑🏼❤️🧑🏽',
+ ':couple_with_heart_person_person_medium_skin_tone_dark_skin_tone:' => '🧑🏽❤️🧑🏿',
+ ':couple_with_heart_person_person_medium_skin_tone_light_skin_tone:' => '🧑🏽❤️🧑🏻',
+ ':couple_with_heart_person_person_medium_skin_tone_medium_dark_skin_tone:' => '🧑🏽❤️🧑🏾',
+ ':couple_with_heart_person_person_medium_skin_tone_medium_light_skin_tone:' => '🧑🏽❤️🧑🏼',
+ ':couple_with_heart_woman_man_dark_skin_tone:' => '👩🏿❤️👨🏿',
+ ':couple_with_heart_woman_man_dark_skin_tone_light_skin_tone:' => '👩🏿❤️👨🏻',
+ ':couple_with_heart_woman_man_dark_skin_tone_medium_dark_skin_tone:' => '👩🏿❤️👨🏾',
+ ':couple_with_heart_woman_man_dark_skin_tone_medium_light_skin_tone:' => '👩🏿❤️👨🏼',
+ ':couple_with_heart_woman_man_dark_skin_tone_medium_skin_tone:' => '👩🏿❤️👨🏽',
+ ':couple_with_heart_woman_man_light_skin_tone:' => '👩🏻❤️👨🏻',
+ ':couple_with_heart_woman_man_light_skin_tone_dark_skin_tone:' => '👩🏻❤️👨🏿',
+ ':couple_with_heart_woman_man_light_skin_tone_medium_dark_skin_tone:' => '👩🏻❤️👨🏾',
+ ':couple_with_heart_woman_man_light_skin_tone_medium_light_skin_tone:' => '👩🏻❤️👨🏼',
+ ':couple_with_heart_woman_man_light_skin_tone_medium_skin_tone:' => '👩🏻❤️👨🏽',
+ ':couple_with_heart_woman_man_medium_dark_skin_tone:' => '👩🏾❤️👨🏾',
+ ':couple_with_heart_woman_man_medium_dark_skin_tone_dark_skin_tone:' => '👩🏾❤️👨🏿',
+ ':couple_with_heart_woman_man_medium_dark_skin_tone_light_skin_tone:' => '👩🏾❤️👨🏻',
+ ':couple_with_heart_woman_man_medium_dark_skin_tone_medium_light_skin_tone:' => '👩🏾❤️👨🏼',
+ ':couple_with_heart_woman_man_medium_dark_skin_tone_medium_skin_tone:' => '👩🏾❤️👨🏽',
+ ':couple_with_heart_woman_man_medium_light_skin_tone:' => '👩🏼❤️👨🏼',
+ ':couple_with_heart_woman_man_medium_light_skin_tone_dark_skin_tone:' => '👩🏼❤️👨🏿',
+ ':couple_with_heart_woman_man_medium_light_skin_tone_light_skin_tone:' => '👩🏼❤️👨🏻',
+ ':couple_with_heart_woman_man_medium_light_skin_tone_medium_dark_skin_tone:' => '👩🏼❤️👨🏾',
+ ':couple_with_heart_woman_man_medium_light_skin_tone_medium_skin_tone:' => '👩🏼❤️👨🏽',
+ ':couple_with_heart_woman_man_medium_skin_tone:' => '👩🏽❤️👨🏽',
+ ':couple_with_heart_woman_man_medium_skin_tone_dark_skin_tone:' => '👩🏽❤️👨🏿',
+ ':couple_with_heart_woman_man_medium_skin_tone_light_skin_tone:' => '👩🏽❤️👨🏻',
+ ':couple_with_heart_woman_man_medium_skin_tone_medium_dark_skin_tone:' => '👩🏽❤️👨🏾',
+ ':couple_with_heart_woman_man_medium_skin_tone_medium_light_skin_tone:' => '👩🏽❤️👨🏼',
+ ':couple_with_heart_woman_woman_dark_skin_tone:' => '👩🏿❤️👩🏿',
+ ':couple_with_heart_woman_woman_dark_skin_tone_light_skin_tone:' => '👩🏿❤️👩🏻',
+ ':couple_with_heart_woman_woman_dark_skin_tone_medium_dark_skin_tone:' => '👩🏿❤️👩🏾',
+ ':couple_with_heart_woman_woman_dark_skin_tone_medium_light_skin_tone:' => '👩🏿❤️👩🏼',
+ ':couple_with_heart_woman_woman_dark_skin_tone_medium_skin_tone:' => '👩🏿❤️👩🏽',
+ ':couple_with_heart_woman_woman_light_skin_tone:' => '👩🏻❤️👩🏻',
+ ':couple_with_heart_woman_woman_light_skin_tone_dark_skin_tone:' => '👩🏻❤️👩🏿',
+ ':couple_with_heart_woman_woman_light_skin_tone_medium_dark_skin_tone:' => '👩🏻❤️👩🏾',
+ ':couple_with_heart_woman_woman_light_skin_tone_medium_light_skin_tone:' => '👩🏻❤️👩🏼',
+ ':couple_with_heart_woman_woman_light_skin_tone_medium_skin_tone:' => '👩🏻❤️👩🏽',
+ ':couple_with_heart_woman_woman_medium_dark_skin_tone:' => '👩🏾❤️👩🏾',
+ ':couple_with_heart_woman_woman_medium_dark_skin_tone_dark_skin_tone:' => '👩🏾❤️👩🏿',
+ ':couple_with_heart_woman_woman_medium_dark_skin_tone_light_skin_tone:' => '👩🏾❤️👩🏻',
+ ':couple_with_heart_woman_woman_medium_dark_skin_tone_medium_light_skin_tone:' => '👩🏾❤️👩🏼',
+ ':couple_with_heart_woman_woman_medium_dark_skin_tone_medium_skin_tone:' => '👩🏾❤️👩🏽',
+ ':couple_with_heart_woman_woman_medium_light_skin_tone:' => '👩🏼❤️👩🏼',
+ ':couple_with_heart_woman_woman_medium_light_skin_tone_dark_skin_tone:' => '👩🏼❤️👩🏿',
+ ':couple_with_heart_woman_woman_medium_light_skin_tone_light_skin_tone:' => '👩🏼❤️👩🏻',
+ ':couple_with_heart_woman_woman_medium_light_skin_tone_medium_dark_skin_tone:' => '👩🏼❤️👩🏾',
+ ':couple_with_heart_woman_woman_medium_light_skin_tone_medium_skin_tone:' => '👩🏼❤️👩🏽',
+ ':couple_with_heart_woman_woman_medium_skin_tone:' => '👩🏽❤️👩🏽',
+ ':couple_with_heart_woman_woman_medium_skin_tone_dark_skin_tone:' => '👩🏽❤️👩🏿',
+ ':couple_with_heart_woman_woman_medium_skin_tone_light_skin_tone:' => '👩🏽❤️👩🏻',
+ ':couple_with_heart_woman_woman_medium_skin_tone_medium_dark_skin_tone:' => '👩🏽❤️👩🏾',
+ ':couple_with_heart_woman_woman_medium_skin_tone_medium_light_skin_tone:' => '👩🏽❤️👩🏼',
':kiss_mm:' => '👨❤️💋👨',
+ ':kiss_woman_man:' => '👩❤️💋👨',
':kiss_ww:' => '👩❤️💋👩',
+ ':man_kneeling_facing_right_dark_skin_tone:' => '🧎🏿♂️➡️',
+ ':man_kneeling_facing_right_light_skin_tone:' => '🧎🏻♂️➡️',
+ ':man_kneeling_facing_right_medium_dark_skin_tone:' => '🧎🏾♂️➡️',
+ ':man_kneeling_facing_right_medium_light_skin_tone:' => '🧎🏼♂️➡️',
+ ':man_kneeling_facing_right_medium_skin_tone:' => '🧎🏽♂️➡️',
+ ':man_running_facing_right_dark_skin_tone:' => '🏃🏿♂️➡️',
+ ':man_running_facing_right_light_skin_tone:' => '🏃🏻♂️➡️',
+ ':man_running_facing_right_medium_dark_skin_tone:' => '🏃🏾♂️➡️',
+ ':man_running_facing_right_medium_light_skin_tone:' => '🏃🏼♂️➡️',
+ ':man_running_facing_right_medium_skin_tone:' => '🏃🏽♂️➡️',
+ ':man_walking_facing_right_dark_skin_tone:' => '🚶🏿♂️➡️',
+ ':man_walking_facing_right_light_skin_tone:' => '🚶🏻♂️➡️',
+ ':man_walking_facing_right_medium_dark_skin_tone:' => '🚶🏾♂️➡️',
+ ':man_walking_facing_right_medium_light_skin_tone:' => '🚶🏼♂️➡️',
+ ':man_walking_facing_right_medium_skin_tone:' => '🚶🏽♂️➡️',
+ ':woman_kneeling_facing_right_dark_skin_tone:' => '🧎🏿♀️➡️',
+ ':woman_kneeling_facing_right_light_skin_tone:' => '🧎🏻♀️➡️',
+ ':woman_kneeling_facing_right_medium_dark_skin_tone:' => '🧎🏾♀️➡️',
+ ':woman_kneeling_facing_right_medium_light_skin_tone:' => '🧎🏼♀️➡️',
+ ':woman_kneeling_facing_right_medium_skin_tone:' => '🧎🏽♀️➡️',
+ ':woman_running_facing_right_dark_skin_tone:' => '🏃🏿♀️➡️',
+ ':woman_running_facing_right_light_skin_tone:' => '🏃🏻♀️➡️',
+ ':woman_running_facing_right_medium_dark_skin_tone:' => '🏃🏾♀️➡️',
+ ':woman_running_facing_right_medium_light_skin_tone:' => '🏃🏼♀️➡️',
+ ':woman_running_facing_right_medium_skin_tone:' => '🏃🏽♀️➡️',
+ ':woman_walking_facing_right_dark_skin_tone:' => '🚶🏿♀️➡️',
+ ':woman_walking_facing_right_light_skin_tone:' => '🚶🏻♀️➡️',
+ ':woman_walking_facing_right_medium_dark_skin_tone:' => '🚶🏾♀️➡️',
+ ':woman_walking_facing_right_medium_light_skin_tone:' => '🚶🏼♀️➡️',
+ ':woman_walking_facing_right_medium_skin_tone:' => '🚶🏽♀️➡️',
+ ':kiss_man_man_dark_skin_tone:' => '👨🏿❤️💋👨🏿',
+ ':kiss_man_man_dark_skin_tone_light_skin_tone:' => '👨🏿❤️💋👨🏻',
+ ':kiss_man_man_dark_skin_tone_medium_dark_skin_tone:' => '👨🏿❤️💋👨🏾',
+ ':kiss_man_man_dark_skin_tone_medium_light_skin_tone:' => '👨🏿❤️💋👨🏼',
+ ':kiss_man_man_dark_skin_tone_medium_skin_tone:' => '👨🏿❤️💋👨🏽',
+ ':kiss_man_man_light_skin_tone:' => '👨🏻❤️💋👨🏻',
+ ':kiss_man_man_light_skin_tone_dark_skin_tone:' => '👨🏻❤️💋👨🏿',
+ ':kiss_man_man_light_skin_tone_medium_dark_skin_tone:' => '👨🏻❤️💋👨🏾',
+ ':kiss_man_man_light_skin_tone_medium_light_skin_tone:' => '👨🏻❤️💋👨🏼',
+ ':kiss_man_man_light_skin_tone_medium_skin_tone:' => '👨🏻❤️💋👨🏽',
+ ':kiss_man_man_medium_dark_skin_tone:' => '👨🏾❤️💋👨🏾',
+ ':kiss_man_man_medium_dark_skin_tone_dark_skin_tone:' => '👨🏾❤️💋👨🏿',
+ ':kiss_man_man_medium_dark_skin_tone_light_skin_tone:' => '👨🏾❤️💋👨🏻',
+ ':kiss_man_man_medium_dark_skin_tone_medium_light_skin_tone:' => '👨🏾❤️💋👨🏼',
+ ':kiss_man_man_medium_dark_skin_tone_medium_skin_tone:' => '👨🏾❤️💋👨🏽',
+ ':kiss_man_man_medium_light_skin_tone:' => '👨🏼❤️💋👨🏼',
+ ':kiss_man_man_medium_light_skin_tone_dark_skin_tone:' => '👨🏼❤️💋👨🏿',
+ ':kiss_man_man_medium_light_skin_tone_light_skin_tone:' => '👨🏼❤️💋👨🏻',
+ ':kiss_man_man_medium_light_skin_tone_medium_dark_skin_tone:' => '👨🏼❤️💋👨🏾',
+ ':kiss_man_man_medium_light_skin_tone_medium_skin_tone:' => '👨🏼❤️💋👨🏽',
+ ':kiss_man_man_medium_skin_tone:' => '👨🏽❤️💋👨🏽',
+ ':kiss_man_man_medium_skin_tone_dark_skin_tone:' => '👨🏽❤️💋👨🏿',
+ ':kiss_man_man_medium_skin_tone_light_skin_tone:' => '👨🏽❤️💋👨🏻',
+ ':kiss_man_man_medium_skin_tone_medium_dark_skin_tone:' => '👨🏽❤️💋👨🏾',
+ ':kiss_man_man_medium_skin_tone_medium_light_skin_tone:' => '👨🏽❤️💋👨🏼',
+ ':kiss_person_person_dark_skin_tone_light_skin_tone:' => '🧑🏿❤️💋🧑🏻',
+ ':kiss_person_person_dark_skin_tone_medium_dark_skin_tone:' => '🧑🏿❤️💋🧑🏾',
+ ':kiss_person_person_dark_skin_tone_medium_light_skin_tone:' => '🧑🏿❤️💋🧑🏼',
+ ':kiss_person_person_dark_skin_tone_medium_skin_tone:' => '🧑🏿❤️💋🧑🏽',
+ ':kiss_person_person_light_skin_tone_dark_skin_tone:' => '🧑🏻❤️💋🧑🏿',
+ ':kiss_person_person_light_skin_tone_medium_dark_skin_tone:' => '🧑🏻❤️💋🧑🏾',
+ ':kiss_person_person_light_skin_tone_medium_light_skin_tone:' => '🧑🏻❤️💋🧑🏼',
+ ':kiss_person_person_light_skin_tone_medium_skin_tone:' => '🧑🏻❤️💋🧑🏽',
+ ':kiss_person_person_medium_dark_skin_tone_dark_skin_tone:' => '🧑🏾❤️💋🧑🏿',
+ ':kiss_person_person_medium_dark_skin_tone_light_skin_tone:' => '🧑🏾❤️💋🧑🏻',
+ ':kiss_person_person_medium_dark_skin_tone_medium_light_skin_tone:' => '🧑🏾❤️💋🧑🏼',
+ ':kiss_person_person_medium_dark_skin_tone_medium_skin_tone:' => '🧑🏾❤️💋🧑🏽',
+ ':kiss_person_person_medium_light_skin_tone_dark_skin_tone:' => '🧑🏼❤️💋🧑🏿',
+ ':kiss_person_person_medium_light_skin_tone_light_skin_tone:' => '🧑🏼❤️💋🧑🏻',
+ ':kiss_person_person_medium_light_skin_tone_medium_dark_skin_tone:' => '🧑🏼❤️💋🧑🏾',
+ ':kiss_person_person_medium_light_skin_tone_medium_skin_tone:' => '🧑🏼❤️💋🧑🏽',
+ ':kiss_person_person_medium_skin_tone_dark_skin_tone:' => '🧑🏽❤️💋🧑🏿',
+ ':kiss_person_person_medium_skin_tone_light_skin_tone:' => '🧑🏽❤️💋🧑🏻',
+ ':kiss_person_person_medium_skin_tone_medium_dark_skin_tone:' => '🧑🏽❤️💋🧑🏾',
+ ':kiss_person_person_medium_skin_tone_medium_light_skin_tone:' => '🧑🏽❤️💋🧑🏼',
+ ':kiss_woman_man_dark_skin_tone:' => '👩🏿❤️💋👨🏿',
+ ':kiss_woman_man_dark_skin_tone_light_skin_tone:' => '👩🏿❤️💋👨🏻',
+ ':kiss_woman_man_dark_skin_tone_medium_dark_skin_tone:' => '👩🏿❤️💋👨🏾',
+ ':kiss_woman_man_dark_skin_tone_medium_light_skin_tone:' => '👩🏿❤️💋👨🏼',
+ ':kiss_woman_man_dark_skin_tone_medium_skin_tone:' => '👩🏿❤️💋👨🏽',
+ ':kiss_woman_man_light_skin_tone:' => '👩🏻❤️💋👨🏻',
+ ':kiss_woman_man_light_skin_tone_dark_skin_tone:' => '👩🏻❤️💋👨🏿',
+ ':kiss_woman_man_light_skin_tone_medium_dark_skin_tone:' => '👩🏻❤️💋👨🏾',
+ ':kiss_woman_man_light_skin_tone_medium_light_skin_tone:' => '👩🏻❤️💋👨🏼',
+ ':kiss_woman_man_light_skin_tone_medium_skin_tone:' => '👩🏻❤️💋👨🏽',
+ ':kiss_woman_man_medium_dark_skin_tone:' => '👩🏾❤️💋👨🏾',
+ ':kiss_woman_man_medium_dark_skin_tone_dark_skin_tone:' => '👩🏾❤️💋👨🏿',
+ ':kiss_woman_man_medium_dark_skin_tone_light_skin_tone:' => '👩🏾❤️💋👨🏻',
+ ':kiss_woman_man_medium_dark_skin_tone_medium_light_skin_tone:' => '👩🏾❤️💋👨🏼',
+ ':kiss_woman_man_medium_dark_skin_tone_medium_skin_tone:' => '👩🏾❤️💋👨🏽',
+ ':kiss_woman_man_medium_light_skin_tone:' => '👩🏼❤️💋👨🏼',
+ ':kiss_woman_man_medium_light_skin_tone_dark_skin_tone:' => '👩🏼❤️💋👨🏿',
+ ':kiss_woman_man_medium_light_skin_tone_light_skin_tone:' => '👩🏼❤️💋👨🏻',
+ ':kiss_woman_man_medium_light_skin_tone_medium_dark_skin_tone:' => '👩🏼❤️💋👨🏾',
+ ':kiss_woman_man_medium_light_skin_tone_medium_skin_tone:' => '👩🏼❤️💋👨🏽',
+ ':kiss_woman_man_medium_skin_tone:' => '👩🏽❤️💋👨🏽',
+ ':kiss_woman_man_medium_skin_tone_dark_skin_tone:' => '👩🏽❤️💋👨🏿',
+ ':kiss_woman_man_medium_skin_tone_light_skin_tone:' => '👩🏽❤️💋👨🏻',
+ ':kiss_woman_man_medium_skin_tone_medium_dark_skin_tone:' => '👩🏽❤️💋👨🏾',
+ ':kiss_woman_man_medium_skin_tone_medium_light_skin_tone:' => '👩🏽❤️💋👨🏼',
+ ':kiss_woman_woman_dark_skin_tone:' => '👩🏿❤️💋👩🏿',
+ ':kiss_woman_woman_dark_skin_tone_light_skin_tone:' => '👩🏿❤️💋👩🏻',
+ ':kiss_woman_woman_dark_skin_tone_medium_dark_skin_tone:' => '👩🏿❤️💋👩🏾',
+ ':kiss_woman_woman_dark_skin_tone_medium_light_skin_tone:' => '👩🏿❤️💋👩🏼',
+ ':kiss_woman_woman_dark_skin_tone_medium_skin_tone:' => '👩🏿❤️💋👩🏽',
+ ':kiss_woman_woman_light_skin_tone:' => '👩🏻❤️💋👩🏻',
+ ':kiss_woman_woman_light_skin_tone_dark_skin_tone:' => '👩🏻❤️💋👩🏿',
+ ':kiss_woman_woman_light_skin_tone_medium_dark_skin_tone:' => '👩🏻❤️💋👩🏾',
+ ':kiss_woman_woman_light_skin_tone_medium_light_skin_tone:' => '👩🏻❤️💋👩🏼',
+ ':kiss_woman_woman_light_skin_tone_medium_skin_tone:' => '👩🏻❤️💋👩🏽',
+ ':kiss_woman_woman_medium_dark_skin_tone:' => '👩🏾❤️💋👩🏾',
+ ':kiss_woman_woman_medium_dark_skin_tone_dark_skin_tone:' => '👩🏾❤️💋👩🏿',
+ ':kiss_woman_woman_medium_dark_skin_tone_light_skin_tone:' => '👩🏾❤️💋👩🏻',
+ ':kiss_woman_woman_medium_dark_skin_tone_medium_light_skin_tone:' => '👩🏾❤️💋👩🏼',
+ ':kiss_woman_woman_medium_dark_skin_tone_medium_skin_tone:' => '👩🏾❤️💋👩🏽',
+ ':kiss_woman_woman_medium_light_skin_tone:' => '👩🏼❤️💋👩🏼',
+ ':kiss_woman_woman_medium_light_skin_tone_dark_skin_tone:' => '👩🏼❤️💋👩🏿',
+ ':kiss_woman_woman_medium_light_skin_tone_light_skin_tone:' => '👩🏼❤️💋👩🏻',
+ ':kiss_woman_woman_medium_light_skin_tone_medium_dark_skin_tone:' => '👩🏼❤️💋👩🏾',
+ ':kiss_woman_woman_medium_light_skin_tone_medium_skin_tone:' => '👩🏼❤️💋👩🏽',
+ ':kiss_woman_woman_medium_skin_tone:' => '👩🏽❤️💋👩🏽',
+ ':kiss_woman_woman_medium_skin_tone_dark_skin_tone:' => '👩🏽❤️💋👩🏿',
+ ':kiss_woman_woman_medium_skin_tone_light_skin_tone:' => '👩🏽❤️💋👩🏻',
+ ':kiss_woman_woman_medium_skin_tone_medium_dark_skin_tone:' => '👩🏽❤️💋👩🏾',
+ ':kiss_woman_woman_medium_skin_tone_medium_light_skin_tone:' => '👩🏽❤️💋👩🏼',
];
diff --git a/src/Symfony/Component/Emoji/Resources/data/text-emoji.php b/src/Symfony/Component/Emoji/Resources/data/text-emoji.php
index 0161bc4a5ff26..d41a28ea28d78 100644
--- a/src/Symfony/Component/Emoji/Resources/data/text-emoji.php
+++ b/src/Symfony/Component/Emoji/Resources/data/text-emoji.php
@@ -13,7 +13,6 @@
':accept:' => '🉑',
':accordion:' => '🪗',
':adhesive-bandage:' => '🩹',
- ':admission-tickets:' => '🎟️',
':adult:' => '🧑',
':aerial-tramway:' => '🚡',
':airplane-arriving:' => '🛬',
@@ -31,7 +30,6 @@
':ant:' => '🐜',
':apple:' => '🍎',
':aquarius:' => '♒',
- ':archery:' => '🏹',
':aries:' => '♈',
':arrow-double-down:' => '⏬',
':arrow-double-up:' => '⏫',
@@ -44,7 +42,6 @@
':astonished:' => '😲',
':athletic-shoe:' => '👟',
':atm:' => '🏧',
- ':atom-symbol:' => '⚛️',
':auto-rickshaw:' => '🛺',
':avocado:' => '🥑',
':axe:' => '🪓',
@@ -53,7 +50,6 @@
':baby-chick:' => '🐤',
':baby-symbol:' => '🚼',
':back:' => '🔙',
- ':back-of-hand:' => '🤚',
':bacon:' => '🥓',
':badger:' => '🦡',
':badminton-racquet-and-shuttlecock:' => '🏸',
@@ -62,7 +58,6 @@
':baguette-bread:' => '🥖',
':ballet-shoes:' => '🩰',
':balloon:' => '🎈',
- ':ballot-box-with-ballot:' => '🗳️',
':bamboo:' => '🎍',
':banana:' => '🍌',
':banjo:' => '🪕',
@@ -76,7 +71,6 @@
':bath:' => '🛀',
':bathtub:' => '🛁',
':battery:' => '🔋',
- ':beach-with-umbrella:' => '🏖️',
':beans:' => '🫘',
':bear:' => '🐻',
':bearded-person:' => '🧔',
@@ -88,14 +82,12 @@
':beginner:' => '🔰',
':bell:' => '🔔',
':bell-pepper:' => '🫑',
- ':bellhop-bell:' => '🛎️',
':bento:' => '🍱',
':beverage-box:' => '🧃',
':bicyclist:' => '🚴',
':bike:' => '🚲',
':bikini:' => '👙',
':billed-cap:' => '🧢',
- ':biohazard-sign:' => '☣️',
':bird:' => '🐦',
':birthday:' => '🎂',
':bison:' => '🦬',
@@ -124,14 +116,12 @@
':boom:' => '💥',
':boomerang:' => '🪃',
':boot:' => '👢',
- ':bottle-with-popping-cork:' => '🍾',
':bouquet:' => '💐',
':bow:' => '🙇',
':bow-and-arrow:' => '🏹',
':bowl-with-spoon:' => '🥣',
':bowling:' => '🎳',
':boxing-glove:' => '🥊',
- ':boxing-gloves:' => '🥊',
':boy:' => '👦',
':brain:' => '🧠',
':bread:' => '🍞',
@@ -149,7 +139,6 @@
':bubbles:' => '🫧',
':bucket:' => '🪣',
':bug:' => '🐛',
- ':building-construction:' => '🏗️',
':bulb:' => '💡',
':bullettrain-front:' => '🚅',
':bullettrain-side:' => '🚄',
@@ -175,9 +164,7 @@
':capital-abcd:' => '🔠',
':capricorn:' => '♑',
':car:' => '🚗',
- ':card-file-box:' => '🗃️',
':card-index:' => '📇',
- ':card-index-dividers:' => '🗂️',
':carousel-horse:' => '🎠',
':carpentry-saw:' => '🪚',
':carrot:' => '🥕',
@@ -208,7 +195,6 @@
':cl:' => '🆑',
':clap:' => '👏',
':clapper:' => '🎬',
- ':clinking-glass:' => '🥂',
':clinking-glasses:' => '🥂',
':clipboard:' => '📋',
':clock1:' => '🕐',
@@ -238,10 +224,6 @@
':closed-book:' => '📕',
':closed-lock-with-key:' => '🔐',
':closed-umbrella:' => '🌂',
- ':cloud-with-lightning:' => '🌩',
- ':cloud-with-rain:' => '🌧',
- ':cloud-with-snow:' => '🌨',
- ':cloud-with-tornado:' => '🌪',
':clown-face:' => '🤡',
':coat:' => '🧥',
':cockroach:' => '🪳',
@@ -266,7 +248,6 @@
':cop:' => '👮',
':coral:' => '🪸',
':corn:' => '🌽',
- ':couch-and-lamp:' => '🛋️',
':couple:' => '👫',
':couple-with-heart:' => '💑',
':couplekiss:' => '💏',
@@ -277,7 +258,6 @@
':crescent-moon:' => '🌙',
':cricket:' => '🦗',
':cricket-bat-and-ball:' => '🏏',
- ':cricket-bat-ball:' => '🏏',
':crocodile:' => '🐊',
':croissant:' => '🥐',
':crossed-fingers:' => '🤞',
@@ -299,7 +279,6 @@
':customs:' => '🛃',
':cut-of-meat:' => '🥩',
':cyclone:' => '🌀',
- ':dagger-knife:' => '🗡️',
':dancer:' => '💃',
':dancers:' => '👯',
':dango:' => '🍡',
@@ -310,9 +289,6 @@
':deciduous-tree:' => '🌳',
':deer:' => '🦌',
':department-store:' => '🏬',
- ':derelict-house-building:' => '🏚️',
- ':desert-island:' => '🏝️',
- ':desktop-computer:' => '🖥️',
':diamond-shape-with-a-dot-inside:' => '💠',
':disappointed:' => '😞',
':disappointed-relieved:' => '😥',
@@ -332,14 +308,11 @@
':donkey:' => '🫏',
':door:' => '🚪',
':dotted-line-face:' => '🫥',
- ':double-vertical-bar:' => '⏸️',
':doughnut:' => '🍩',
- ':dove-of-peace:' => '🕊️',
':dragon:' => '🐉',
':dragon-face:' => '🐲',
':dress:' => '👗',
':dromedary-camel:' => '🐪',
- ':drool:' => '🤤',
':drooling-face:' => '🤤',
':drop-of-blood:' => '🩸',
':droplet:' => '💧',
@@ -357,12 +330,10 @@
':earth-asia:' => '🌏',
':egg:' => '🥚',
':eggplant:' => '🍆',
- ':eject-symbol:' => '⏏',
':electric-plug:' => '🔌',
':elephant:' => '🐘',
':elevator:' => '🛗',
':elf:' => '🧝',
- ':email:' => '✉️',
':empty-nest:' => '🪹',
':end:' => '🔚',
':envelope-with-arrow:' => '📩',
@@ -371,7 +342,6 @@
':european-post-office:' => '🏤',
':evergreen-tree:' => '🌲',
':exclamation:' => '❗',
- ':expecting-woman:' => '🤰',
':exploding-head:' => '🤯',
':expressionless:' => '😑',
':eyeglasses:' => '👓',
@@ -393,7 +363,6 @@
':face-with-rolling-eyes:' => '🙄',
':face-with-symbols-on-mouth:' => '🤬',
':face-with-thermometer:' => '🤒',
- ':facepalm:' => '🤦',
':facepunch:' => '👊',
':factory:' => '🏭',
':fairy:' => '🧚',
@@ -406,11 +375,9 @@
':feather:' => '🪶',
':feet:' => '🐾',
':fencer:' => '🤺',
- ':fencing:' => '🤺',
':ferris-wheel:' => '🎡',
':field-hockey-stick-and-ball:' => '🏑',
':file-folder:' => '📁',
- ':film-projector:' => '📽️',
':fire:' => '🔥',
':fire-engine:' => '🚒',
':fire-extinguisher:' => '🧯',
@@ -424,7 +391,6 @@
':fishing-pole-and-fish:' => '🎣',
':fist:' => '✊',
':flags:' => '🎏',
- ':flame:' => '🔥',
':flamingo:' => '🦩',
':flashlight:' => '🔦',
':flatbread:' => '🫓',
@@ -443,12 +409,10 @@
':football:' => '🏈',
':footprints:' => '👣',
':fork-and-knife:' => '🍴',
- ':fork-and-knife-with-plate:' => '🍽',
':fortune-cookie:' => '🥠',
':fountain:' => '⛲',
':four-leaf-clover:' => '🍀',
':fox-face:' => '🦊',
- ':frame-with-picture:' => '🖼️',
':free:' => '🆓',
':fried-egg:' => '🍳',
':fried-shrimp:' => '🍤',
@@ -458,7 +422,6 @@
':fuelpump:' => '⛽',
':full-moon:' => '🌕',
':full-moon-with-face:' => '🌝',
- ':funeral-urn:' => '⚱️',
':game-die:' => '🎲',
':garlic:' => '🧄',
':gem:' => '💎',
@@ -479,7 +442,6 @@
':golf:' => '⛳',
':goose:' => '🪿',
':gorilla:' => '🦍',
- ':grandma:' => '👵',
':grapes:' => '🍇',
':green-apple:' => '🍏',
':green-book:' => '📗',
@@ -501,12 +463,9 @@
':haircut:' => '💇',
':hamburger:' => '🍔',
':hammer:' => '🔨',
- ':hammer-and-pick:' => '⚒️',
- ':hammer-and-wrench:' => '🛠️',
':hamsa:' => '🪬',
':hamster:' => '🐹',
':hand:' => '✋',
- ':hand-with-index-and-middle-finger-crossed:' => '🤞',
':hand-with-index-and-middle-fingers-crossed:' => '🤞',
':hand-with-index-finger-and-thumb-crossed:' => '🫰',
':handbag:' => '👜',
@@ -528,12 +487,10 @@
':heavy-dollar-sign:' => '💲',
':heavy-equals-sign:' => '🟰',
':heavy-exclamation-mark:' => '❗',
- ':heavy-hea
10000
rt-exclamation-mark-ornament:' => '❣️',
':heavy-minus-sign:' => '➖',
':heavy-plus-sign:' => '➕',
':hedgehog:' => '🦔',
':helicopter:' => '🚁',
- ':helmet-with-white-cross:' => '⛑️',
':herb:' => '🌿',
':hibiscus:' => '🌺',
':high-brightness:' => '🔆',
@@ -548,14 +505,12 @@
':horse:' => '🐴',
':horse-racing:' => '🏇',
':hospital:' => '🏥',
- ':hot-dog:' => '🌭',
':hot-face:' => '🥵',
':hotdog:' => '🌭',
':hotel:' => '🏨',
':hourglass:' => '⌛',
':hourglass-flowing-sand:' => '⏳',
':house:' => '🏠',
- ':house-buildings:' => '🏘️',
':house-with-garden:' => '🏡',
':hugging-face:' => '🤗',
':hushed:' => '😯',
@@ -588,12 +543,9 @@
':jigsaw:' => '🧩',
':joy:' => '😂',
':joy-cat:' => '😹',
- ':juggler:' => '🤹',
':juggling:' => '🤹',
':kaaba:' => '🕋',
':kangaroo:' => '🦘',
- ':karate-uniform:' => '🥋',
- ':kayak:' => '🛶',
':key:' => '🔑',
':keycap-ten:' => '🔟',
':khanda:' => '🪯',
@@ -634,28 +586,22 @@
':large-yellow-square:' => '🟨',
':last-quarter-moon:' => '🌗',
':last-quarter-moon-with-face:' => '🌜',
- ':latin-cross:' => '✝️',
':laughing:' => '😆',
':leafy-green:' => '🥬',
':leaves:' => '🍃',
':ledger:' => '📒',
':left-facing-fist:' => '🤛',
- ':left-fist:' => '🤛',
':left-luggage:' => '🛅',
- ':left-speech-bubble:' => '🗨️',
':leftwards-hand:' => '🫲',
':leftwards-pushing-hand:' => '🫷',
':leg:' => '🦵',
':lemon:' => '🍋',
':leo:' => '♌',
':leopard:' => '🐆',
- ':liar:' => '🤥',
':libra:' => '♎',
':light-blue-heart:' => '🩵',
':light-rail:' => '🚈',
':link:' => '🔗',
- ':linked-paperclips:' => '🖇️',
- ':lion:' => '🦁',
':lion-face:' => '🦁',
':lips:' => '👄',
':lipstick:' => '💄',
@@ -675,10 +621,6 @@
':love-letter:' => '💌',
':low-battery:' => '🪫',
':low-brightness:' => '🔅',
- ':lower-left-ballpoint-pen:' => '🖊️',
- ':lower-left-crayon:' => '🖍️',
- ':lower-left-fountain-pen:' => '🖋️',
- ':lower-left-paintbrush:' => '🖌️',
':luggage:' => '🧳',
':lungs:' => '🫁',
':lying-face:' => '🤥',
@@ -692,17 +634,14 @@
':mailbox-closed:' => '📪',
':mailbox-with-mail:' => '📬',
':mailbox-with-no-mail:' => '📭',
- ':male-dancer:' => '🕺',
':mammoth:' => '🦣',
':man:' => '👨',
':man-and-woman-holding-hands:' => '👫',
':man-dancing:' => '🕺',
- ':man-in-business-suit-levitating:' => '🕴️',
':man-with-gua-pi-mao:' => '👲',
':man-with-turban:' => '👳♂',
':mango:' => '🥭',
':mans-shoe:' => '👞',
- ':mantlepiece-clock:' => '🕰',
':manual-wheelchair:' => '🦽',
':maple-leaf:' => '🍁',
':maracas:' => '🪇',
@@ -747,7 +686,6 @@
':mosquito:' => '🦟',
':mother-christmas:' => '🤶',
':motor-scooter:' => '🛵',
- ':motorbike:' => '🛵',
':motorized-wheelchair:' => '🦼',
':mount-fuji:' => '🗻',
':mountain-bicyclist:' => '🚵',
@@ -767,7 +705,6 @@
':mute:' => '🔇',
':nail-care:' => '💅',
':name-badge:' => '📛',
- ':national-park:' => '🏞️',
':nauseated-face:' => '🤢',
':nazar-amulet:' => '🧿',
':necktie:' => '👔',
@@ -780,7 +717,6 @@
':new-moon:' => '🌑',
':new-moon-with-face:' => '🌚',
':newspaper:' => '📰',
- ':next-track:' => '⏭',
':ng:' => '🆖',
':night-with-stars:' => '🌃',
':ninja:' => '🥷',
@@ -805,11 +741,9 @@
':octopus:' => '🐙',
':oden:' => '🍢',
':office:' => '🏢',
- ':oil-drum:' => '🛢️',
':ok:' => '🆗',
':ok-hand:' => '👌',
':ok-woman:' => '🙆♀',
- ':old-key:' => '🗝️',
':older-adult:' => '🧓',
':older-man:' => '👴',
':older-woman:' => '👵',
@@ -835,7 +769,6 @@
':ox:' => '🐂',
':oyster:' => '🦪',
':package:' => '📦',
- ':paella:' => '🥘',
':page-facing-up:' => '📄',
':page-with-curl:' => '📃',
':pager:' => '📟',
@@ -850,11 +783,9 @@
':parrot:' => '🦜',
':partly-sunny:' => '⛅',
':partying-face:' => '🥳',
- ':passenger-ship:' => '🛳️',
':passport-control:' => '🛂',
':paw-prints:' => '🐾',
':pea-pod:' => '🫛',
- ':peace-symbol:' => '☮️',
':peach:' => '🍑',
':peacock:' => '🦚',
':peanuts:' => '🥜',
@@ -871,7 +802,6 @@
':person-in-lotus-position:' => '🧘',
':person-in-steamy-room:' => '🧖',
':person-in-tuxedo:' => '🤵',
- ':person-with-ball:' => '⛹️',
':person-with-blond-hair:' => '👱',
':person-with-crown:' => '🫅',
':person-with-headscarf:' => '🧕',
@@ -900,7 +830,6 @@
':point-right:' => '👉',
':point-up-2:' => '👆',
':police-car:' => '🚓',
- ':poo:' => '💩',
':poodle:' => '🐩',
':poop:' => '💩',
':popcorn:' => '🍿',
@@ -921,7 +850,6 @@
':pregnant-person:' => '🫄',
':pregnant-woman:' => '🤰',
':pretzel:' => '🥨',
- ':previous-track:' => '⏮',
':prince:' => '🤴',
':princess:' => '👸',
':probing-cane:' => '🦯',
@@ -935,19 +863,13 @@
':rabbit2:' => '🐇',
':raccoon:' => '🦝',
':racehorse:' => '🐎',
- ':racing-car:' => '🏎️',
- ':racing-motorcycle:' => '🏍️',
':radio:' => '📻',
':radio-button:' => '🔘',
- ':radioactive-sign:' => '☢️',
':rage:' => '😡',
- ':railroad-track:' => '🛤',
':railway-car:' => '🚃',
':rainbow:' => '🌈',
':raised-back-of-hand:' => '🤚',
':raised-hand:' => '✋',
- ':raised-hand-with-fingers-splayed:' => '🖐️',
- ':raised-hand-with-part-between-middle-and-ring-fingers:' => '🖖',
':raised-hands:' => '🙌',
':raising-hand:' => '🙋',
':ram:' => '🐏',
@@ -971,9 +893,7 @@
':rice-ball:' => '🍙',
':rice-cracker:' => '🍘',
':rice-scene:' => '🎑',
- ':right-anger-bubble:' => '🗯️',
':right-facing-fist:' => '🤜',
- ':right-fist:' => '🤜',
':rightwards-hand:' => '🫱',
':rightwards-pushing-hand:' => '🫸',
':ring:' => '💍',
@@ -983,7 +903,6 @@
':rock:' => '🪨',
':rocket:' => '🚀',
':roll-of-paper:' => '🧻',
- ':rolled-up-newspaper:' => '🗞️',
':roller-coaster:' => '🎢',
':roller-skate:' => '🛼',
':rolling-on-the-floor-laughing:' => '🤣',
@@ -1030,13 +949,11 @@
':serious-face-with-symbols-covering-mouth:' => '🤬',
':sewing-needle:' => '🪡',
':shaking-face:' => '🫨',
- ':shaking-hands:' => '🤝',
':shallow-pan-of-food:' => '🥘',
':shark:' => '🦈',
':shaved-ice:' => '🍧',
':sheep:' => '🐑',
':shell:' => '🐚',
- ':shelled-peanut:' => '🥜',
':ship:' => '🚢',
':shirt:' => '👕',
':shit:' => '💩',
@@ -1048,12 +965,10 @@
':shrimp:' => '🦐',
':shrug:' => '🤷',
':shushing-face:' => '🤫',
- ':sick:' => '🤢',
':sign-of-the-horns:' => '🤘',
':signal-strength:' => '📶',
':six-pointed-star:' => '🔯',
':skateboard:' => '🛹',
- ':skeleton:' => '💀',
':ski:' => '🎿',
':skin-tone-2:' => '🏻',
':skin-tone-3:' => '🏼',
@@ -1061,18 +976,15 @@
':skin-tone-5:' => '🏾',
':skin-tone-6:' => '🏿',
':skull:' => '💀',
- ':skull-and-crossbones:' => '☠️',
':skunk:' => '🦨',
':sled:' => '🛷',
':sleeping:' => '😴',
':sleeping-accommodation:' => '🛌',
':sleepy:' => '😪',
- ':sleuth-or-spy:' => '🕵️',
':slightly-frowning-face:' => '🙁',
':slightly-smiling-face:' => '🙂',
':slot-machine:' => '🎰',
':sloth:' => '🦥',
- ':small-airplane:' => '🛩️',
':small-blue-diamond:' => '🔹',
':small-orange-diamond:' => '🔸',
':small-red-triangle:' => '🔺',
@@ -1090,9 +1002,7 @@
':smoking:' => '🚬',
':snail:' => '🐌',
':snake:' => '🐍',
- ':sneeze:' => '🤧',
':sneezing-face:' => '🤧',
- ':snow-capped-mountain:' => '🏔️',
':snowboarder:' => '🏂',
':snowman-without-snow:' => '⛄',
':soap:' => '🧼',
@@ -1110,11 +1020,8 @@
':sparkling-heart:' => '💖',
':speak-no-evil:' => '🙊',
':speaker:' => '🔈',
- ':speaking-head-in-silhouette:' => '🗣️',
':speech-balloon:' => '💬',
':speedboat:' => '🚤',
- ':spiral-calendar-pad:' => '🗓️',
- ':spiral-note-pad:' => '🗒️',
':spock-hand:' => '🖖',
':sponge:' => '🧽',
':spoon:' => '🥄',
@@ -1130,15 +1037,12 @@
':steam-locomotive:' => '🚂',
':stethoscope:' => '🩺',
':stew:' => '🍲',
- ':stop-sign:' => '🛑',
':straight-ruler:' => '📏',
':strawberry:' => '🍓',
':stuck-out-tongue:' => '😛',
':stuck-out-tongue-closed-eyes:' => '😝',
':stuck-out-tongue-winking-eye:' => '😜',
- ':studio-microphone:' => '🎙️',
':stuffed-flatbread:' => '🥙',
- ':stuffed-pita:' => '🥙',
':sun-with-face:' => '🌞',
':sunflower:' => '🌻',
':sunglasses:' => '😎',
@@ -1159,7 +1063,6 @@
':synagogue:' => '🕍',
':syringe:' => '💉',
':t-rex:' => '🦖',
- ':table-tennis:' => '🏓',
':table-tennis-paddle-and-ball:' => '🏓',
':taco:' => '🌮',
':tada:' => '🎉',
@@ -1183,14 +1086,11 @@
':thong-sandal:' => '🩴',
':thought-balloon:' => '💭',
':thread:' => '🧵',
- ':three-button-mouse:' => '🖱️',
':thumbsdown:' => '👎',
':thumbsup:' => '👍',
- ':thunder-cloud-and-rain:' => '⛈️',
':ticket:' => '🎫',
':tiger:' => '🐯',
':tiger2:' => '🐅',
- ':timer-clock:' => '⏲️',
':tired-face:' => '😫',
':toilet:' => '🚽',
':tokyo-tower:' => '🗼',
@@ -1237,7 +1137,6 @@
':u7121:' => '🈚',
':u7533:' => '🈸',
':u7981:' => '🈲',
- ':umbrella-on-ground:' => '⛱️',
':umbrella-with-rain-drops:' => '☔',
':unamused:' => '😒',
':underage:' => '🔞',
@@ -1266,29 +1165,22 @@
':watermelon:' => '🍉',
':wave:' => '👋',
':waving-black-flag:' => '🏴',
- ':waving-white-flag:' => '🏳️',
':waxing-crescent-moon:' => '🌒',
':waxing-gibbous-moon:' => '🌔',
':wc:' => '🚾',
':weary:' => '😩',
':wedding:' => '💒',
- ':weight-lifter:' => '🏋️',
':whale:' => '🐳',
':whale2:' => '🐋',
':wheel:' => '🛞',
':wheelchair:' => '♿',
- ':whisky:' => '🥃',
':white-check-mark:' => '✅',
':white-circle:' => '⚪',
':white-flower:' => '💮',
- ':white-frowning-face:' => '☹️',
':white-heart:' => '🤍',
':white-large-square:' => '⬜',
':white-medium-small-square:' => '◽',
':white-square-button:' => '🔳',
- ':white-sun-behind-cloud:' => '🌥',
- ':white-sun-behind-cloud-with-rain:' => '🌦',
- ':white-sun-with-small-cloud:' => '🌤',
':wilted-flower:' => '🥀',
':wind-chime:' => '🎐',
':window:' => '🪟',
@@ -1306,13 +1198,10 @@
':womens:' => '🚺',
':wood:' => '🪵',
':woozy-face:' => '🥴',
- ':world-map:' => '🗺️',
':worm:' => '🪱',
':worried:' => '😟',
- ':worship-symbol:' => '🛐',
':wrench:' => '🔧',
':wrestlers:' => '🤼',
- ':wrestling:' => '🤼',
':x:' => '❌',
':x-ray:' => '🩻',
':yarn:' => '🧶',
@@ -1332,9 +1221,7 @@
':3rd-place-medal:' => '🥉',
':a:' => '🅰️',
':airplane:' => '✈️',
- ':airplane-small:' => '🛩',
':alembic:' => '⚗️',
- ':anger-right:' => '🗯',
':arrow-backward:' => '◀️',
':arrow-down:' => '⬇️',
':arrow-forward:' => '▶️',
@@ -1350,19 +1237,18 @@
':arrow-upper-left:' => '↖️',
':arrow-upper-right:' => '↗️',
':artificial-satellite:' => '🛰',
- ':atom:' => '⚛',
+ ':atom-symbol:' => '⚛️',
':b:' => '🅱️',
':badminton:' => '🏸',
':balance-scale:' => '⚖',
- ':ballot-box:' => '🗳',
+ ':bald:' => '🦲',
+ ':ballot-box:' => '🗳️',
':ballot-box-with-check:' => '☑️',
':bangbang:' => '‼️',
- ':basketball-player:' => '⛹',
- ':beach:' => '🏖',
- ':beach-umbrella:' => '🏖',
+ ':beach-umbrella:' => '⛱️',
':bed:' => '🛏️',
- ':bellhop:' => '🛎',
- ':biohazard:' => '☣',
+ ':bellhop-bell:' => '🛎️',
+ ':biohazard:' => '☣️',
':black-flag:' => '🏴',
':black-medium-square:' => '◼️',
':black-nib:' => '✒️',
@@ -1370,15 +1256,17 @@
':blond-haired-person:' => '👱',
':blue-square:' => '🟦',
':bouncing-ball-person:' => '⛹',
+ ':brick:' => '🧱',
':brown-circle:' => '🟤',
':brown-square:' => '🟫',
+ ':building-construction:' => '🏗️',
':business-suit-levitating:' => '🕴',
- ':calendar-spiral:' => '🗓',
':call-me:' => '🤙',
':camera-flash:' => '📸',
':camping:' => '🏕️',
':candle:' => '🕯️',
- ':card-box:' => '🗃',
+ ':card-file-box:' => '🗃️',
+ ':card-index-dividers:' => '🗂️',
':cartwheel:' => '🤸',
':cartwheeling:' => '🤸',
':chains:' => '⛓️',
@@ -1391,53 +1279,49 @@
':clamp:' => '🗜',
':classical-building:' => '🏛️',
':climbing:' => '🧗',
- ':clock:' => '🕰',
':cloud:' => '☁️',
- ':cloud-lightning:' => '🌩',
- ':cloud-rain:' => '🌧',
- ':cloud-snow:' => '🌨',
- ':cloud-tornado:' => '🌪',
+ ':cloud-with-lightning:' => '🌩',
':cloud-with-lightning-and-rain:' => '⛈',
+ ':cloud-with-rain:' => '🌧',
+ ':cloud-with-snow:' => '🌨',
':clown:' => '🤡',
':clubs:' => '♣️',
':coffin:' => '⚰️',
':comet:' => '☄️',
- ':compression:' => '🗜️',
':computer-mouse:' => '🖱',
':congratulations:' => '㊗️',
- ':construction-site:' => '🏗',
':control-knobs:' => '🎛️',
':copyright:' => '©️',
- ':couch:' => '🛋',
+ ':couch-and-lamp:' => '🛋️',
':cowboy:' => '🤠',
':cowboy-hat-face:' => '🤠',
- ':crayon:' => '🖍',
+ ':crayon:' => '🖍️',
':cricket-game:' => '🏏',
- ':cross:' => '✝',
':crossed-swords:' => '⚔️',
- ':cruise-ship:' => '🛳',
+ ':curly-hair:' => '🦱',
':cursing-face:' => '🤬',
- ':dagger:' => '🗡',
+ ':dagger:' => '🗡️',
':dark-sunglasses:' => '🕶️',
':derelict-house:' => '🏚',
':desert:' => '🏜️',
- ':desktop:' => '🖥',
+ ':desert-island:' => '🏝️',
+ ':desktop-computer:' => '🖥️',
':detective:' => '🕵',
':diamonds:' => '♦️',
- ':dividers:' => '🗂',
- ':dove:' => '🕊',
+ ':dove:' => '🕊️',
':drum:' => '🥁',
':eight-pointed-black-star:' => '✴️',
':eight-spoked-asterisk:' => '✳️',
- ':eject:' => '⏏️',
':eject-button:' => '⏏',
+ ':email:' => '✉️',
':envelope:' => '✉️',
':eye:' => '👁️',
+ ':facepalm:' => '🤦',
':female-sign:' => '♀️',
':ferry:' => '⛴️',
':field-hockey:' => '🏑',
':file-cabinet:' => '🗄️',
- ':film-frames:' => '🎞️',
+ ':film-projector:' => '📽️',
':film-strip:' => '🎞',
':fingers-crossed:' => '🤞',
':first-place:' => '🥇',
@@ -1446,78 +1330,68 @@
':fist-raised:' => '✊',
':fist-right:' => '🤜',
':flag-black:' => '🏴',
- ':flag-white:' => '🏳',
':flat-shoe:' => '🥿',
':fleur-de-lis:' => '⚜️',
':flight-arrival:' => '🛬',
':flight-departure:' => '🛫',
':fog:' => '🌫️',
- ':fork-knife-plate:' => '🍽',
':fountain-pen:' => '🖋',
':fox:' => '🦊',
- ':frame-photo:' => '🖼',
':framed-picture:' => '🖼',
':french-bread:' => '🥖',
':frowning-face:' => '☹',
':frowning-person:' => '🙍',
- ':frowning2:' => '☹',
':fu:' => '🖕',
+ ':funeral-urn:' => '⚱️',
':gear:' => '⚙️',
':giraffe:' => '🦒',
':goal:' => '🥅',
- ':golfer:' => '🏌️',
':golfing:' => '🏌',
':green-circle:' => '🟢',
':green-square:' => '🟩',
':guard:' => '💂',
- ':hammer-pick:' => '⚒',
+ ':hammer-and-pick:' => '⚒️',
+ ':hammer-and-wrench:' => '🛠️',
':hand-over-mouth:' => '🤭',
- ':hand-splayed:' => '🖐',
':handball-person:' => '🤾',
':head-bandage:' => '🤕',
':heart:' => '❤️',
- ':heart-exclamation:' => '❣',
':hearts:' => '♥️',
':heavy-check-mark:' => '✔️',
':heavy-heart-exclamation:' => '❣',
':heavy-multiplication-x:' => '✖️',
- ':helmet-with-cross:' => '⛑',
':hockey:' => '🏒',
':hole:' => '🕳️',
- ':homes:' => '🏘',
':hot-pepper:' => '🌶️',
':hotsprings:' => '♨️',
- ':house-abandoned:' => '🏚',
':houses:' => '🏘',
':hugging:' => '🤗',
':hugs:' => '🤗',
+ ':ice:' => '🧊',
':ice-hockey:' => '🏒',
':ice-skate:' => '⛸️',
':infinity:' => '♾️',
':information-source:' => 'ℹ️',
':interrobang:' => '⁉️',
- ':island:' => '🏝',
':joystick:' => '🕹️',
':juggling-person:' => '🤹',
- ':key2:' => '🗝',
':keyboard:' => '⌨️',
':kick-scooter:' => '🛴',
':kiwi:' => '🥝',
':kiwi-fruit:' => '🥝',
':label:' => '🏷️',
+ ':latin-cross:' => '✝️',
':left-right-arrow:' => '↔️',
+ ':left-speech-bubble:' => '🗨️',
':leftwards-arrow-with-hook:' => '↩️',
':level-slider:' => '🎚️',
- ':levitate:' => '🕴',
- ':lifter:' => '🏋',
+ ':lion:' => '🦁',
':lotus-position:' => '🧘',
':love-you-gesture:' => '🤟',
':m:' => 'Ⓜ️',
':male-sign:' => '♂️',
- ':man-in-tuxedo:' => '🤵♂️',
':mandarin:' => '🍊',
':mantelpiece-clock:' => '🕰️',
- ':map:' => '🗺',
':mate:' => '🧉',
':medal:' => '🎖️',
':medal-military:' => '🎖',
@@ -1525,47 +1399,45 @@
':medical-symbol:' => '⚕️',
':menorah:' => '🕎',
':metal:' => '🤘',
- ':microphone2:' => '🎙',
- ':military-medal:' => '🎖',
':milk:' => '🥛',
':milk-glass:' => '🥛',
':money-mouth:' => '🤑',
':monocle-face:' => '🧐',
':motor-boat:' => '🛥️',
- ':motorboat:' => '🛥',
- ':motorcycle:' => '🏍',
+ ':motorcycle:' => '🏍️',
':motorway:' => '🛣️',
':mountain:' => '⛰️',
- ':mountain-snow:' => '🏔',
- ':mouse-three-button:' => '🖱',
+ ':mountain-snow:' => '🏔️',
+ ':national-park:' => '🏞️',
':nerd:' => '🤓',
':newspaper-roll:' => '🗞',
- ':newspaper2:' => '🗞',
':next-track-button:' => '⏭',
- ':notepad-spiral:' => '🗒',
':o2:' => '🅾️',
- ':oil:' => '🛢',
+ ':oil-drum:' => '🛢️',
':ok-person:' => '🙆',
- ':om:' => '🇴🇲',
- ':om-symbol:' => '🕉️',
+ ':old-key:' => '🗝️',
+ ':older-person:' => '🧓',
+ ':om:' => '🕉',
':open-umbrella:' => '☂',
':orange:' => '🍊',
':orange-circle:' => '🟠',
':orange-square:' => '🟧',
':orthodox-cross:' => '☦️',
- ':paintbrush:' => '🖌',
- ':paperclips:' => '🖇',
+ ':paintbrush:' => '🖌️',
+ ':paperclips:' => '🖇️',
':parasol-on-ground:' => '⛱',
- ':park:' => '🏞',
':parking:' => '🅿️',
':part-alternation-mark:' => '〽️',
- ':pause-button:' => '⏸',
- ':peace:' => '☮',
+ ':passenger-ship:' => '🛳️',
+ ':pause-button:' => '⏸️',
+ ':peace-symbol:' => '☮️',
':pen:' => '🖊',
- ':pen-ballpoint:' => '🖊',
- ':pen-fountain:' => '🖋',
':pencil2:' => '✏️',
+ ':person:' => '🧑',
+ ':person-beard:' => '🧔',
':person-fencing:' => '🤺',
+ ':person-kneeling:' => '🧎',
+ ':person-standing:' => '🧍',
':person-with-turban:' => '👳',
':person-with-veil:' => '👰',
':phone:' => '☎️',
@@ -1573,28 +1445,30 @@
':ping-pong:' => '🏓',
':plate-with-cutlery:' => '🍽',
':play-or-pause-button:' => '⏯',
- ':play-pause:' => '⏯',
':point-up:' => '☝️',
':police-officer:' => '👮',
':pout:' => '😡',
':pouting-face:' => '🙎',
':previous-track-button:' => '⏮',
':printer:' => '🖨️',
- ':projector:' => '📽',
':purple-circle:' => '🟣',
':purple-square:' => '🟪',
- ':race-car:' => '🏎',
- ':radioactive:' => '☢',
+ ':puzzle-piece:' => '🧩',
+ ':racing-car:' => '🏎️',
+ ':radioactive:' => '☢️',
':railway-track:' => '🛤️',
':raised-eyebrow:' => '🤨',
- ':record-button:' => '⏺',
+ ':raised-hand-with-fingers-splayed:' => '🖐️',
+ ':record-button:' => '⏺️',
':recycle:' => '♻️',
+ ':red-hair:' => '🦰',
':red-square:' => '🟥',
':registered:' => '®️',
':relaxed:' => '☺️',
':reminder-ribbon:' => '🎗️',
':rescue-worker-helmet:' => '⛑',
':rhino:' => '🦏',
+ ':right-anger-bubble:' => '🗯️',
':robot:' => '🤖',
':rofl:' => '🤣',
':roll-eyes:' => '🙄',
@@ -1603,9 +1477,7 @@
':sa:' => '🈂️',
':salad:' => '🥗',
':satellite:' => '🛰️',
- ':satellite-orbital:' => '🛰',
':sauna-person:' => '🧖',
- ':scales:' => '⚖️',
':scissors:' => '✂️',
':second-place:' => '🥈',
':secret:' => '㊙️',
@@ -1613,32 +1485,32 @@
':shield:' => '🛡️',
':shinto-shrine:' => '⛩️',
':shopping:' => '🛍',
- ':shopping-bags:' => '🛍️',
':shopping-cart:' => '🛒',
':skier:' => '⛷️',
- ':skull-crossbones:' => '☠',
+ ':skull-and-crossbones:' => '☠️',
':sleeping-bed:' => '🛌',
':slight-frown:' => '🙁',
':slight-smile:' => '🙂',
+ ':small-airplane:' => '🛩️',
+ ':smiling-face-with-hearts:' => '🥰',
':smiling-face-with-three-hearts:' => '🥰',
':snowflake:' => '❄️',
':snowman:' => '☃️',
':snowman-with-snow:' => '☃',
- ':snowman2:' => '☃',
':spades:' => '♠️',
':sparkle:' => '❇️',
- ':speaking-head:' => '🗣',
- ':speech-left:' => '🗨',
+ ':speaking-head:' => '🗣️',
':spider:' => '🕷️',
':spider-web:' => '🕸️',
':spiral-calendar:' => '🗓',
':spiral-notepad:' => '🗒',
- ':spy:' => '🕵',
':stadium:' => '🏟️',
':star-and-crescent:' => '☪️',
':star-of-david:' => '✡️',
- ':stop-button:' => '⏹',
+ ':stop-button:' => '⏹️',
+ ':stop-sign:' => '🛑',
':stopwatch:' => '⏱️',
+ ':studio-microphone:' => '🎙️',
':sun-behind-large-cloud:' => '🌥',
':sun-behind-rain-cloud:' => '🌦️',
':sun-behind-small-cloud:' => '🌤',
@@ -1650,9 +1522,8 @@
':thermometer-face:' => '🤒',
':thinking:' => '🤔',
':third-place:' => '🥉',
- ':thunder-cloud-rain:' => '⛈',
- ':tickets:' => '🎟',
- ':timer:' => '⏲',
+ ':tickets:' => '🎟️',
+ ':timer-clock:' => '⏲️',
':tipping-hand-person:' => '💁',
':tm:' => '™️',
':tone1:' => '🏻',
@@ -1660,18 +1531,13 @@
':tone3:' => '🏽',
':tone4:' => '🏾',
':tone5:' => '🏿',
- ':tools:' => '🛠',
':tornado:' => '🌪️',
- ':track-next:' => '⏭',
- ':track-previous:' => '⏮',
':trackball:' => '🖲️',
':transgender-symbol:' => '⚧️',
':u6708:' => '🈷️',
':umbrella:' => '☂️',
- ':umbrella2:' => '☂',
':unicorn:' => '🦄',
':upside-down:' => '🙃',
- ':urn:' => '⚱',
':v:' => '✌️',
':vomiting-face:' => '🤮',
':vulcan:' => '🖖',
@@ -1681,136 +1547,43 @@
':wavy-dash:' => '〰️',
':weight-lifting:' => '🏋',
':wheel-of-dharma:' => '☸️',
+ ':white-cane:' => '🦯',
':white-flag:' => '🏳',
+ ':white-hair:' => '🦳',
':white-medium-square:' => '◻️',
':white-small-square:' => '▫️',
- ':white-sun-cloud:' => '🌥',
- ':white-sun-rain-cloud:' => '🌦',
- ':white-sun-small-cloud:' => '🌤',
':wilted-rose:' => '🥀',
- ':wind-blowing-face:' => '🌬️',
':wind-face:' => '🌬',
':woman-dancing:' => '💃',
':woman-with-headscarf:' => '🧕',
+ ':world-map:' => '🗺️',
+ ':wrestling:' => '🤼',
':writing-hand:' => '✍️',
':yellow-circle:' => '🟡',
':yellow-square:' => '🟨',
':yin-yang:' => '☯️',
':zebra:' => '🦓',
':zipper-mouth:' => '🤐',
- ':+1-tone1:' => '👍🏻',
- ':+1-tone2:' => '👍🏼',
- ':+1-tone3:' => '👍🏽',
- ':+1-tone4:' => '👍🏾',
- ':+1-tone5:' => '👍🏿',
- ':-1-tone1:' => '👎🏻',
- ':-1-tone2:' => '👎🏼',
- ':-1-tone3:' => '👎🏽',
- ':-1-tone4:' => '👎🏾',
- ':-1-tone5:' => '👎🏿',
- ':ac:' => '🇦🇨',
- ':ad:' => '🇦🇩',
- ':ae:' => '🇦🇪',
- ':af:' => '🇦🇫',
- ':ag:' => '🇦🇬',
- ':ai:' => '🇦🇮',
- ':al:' => '🇦🇱',
- ':am:' => '🇦🇲',
- ':ao:' => '🇦🇴',
- ':aq:' => '🇦🇶',
- ':ar:' => '🇦🇷',
- ':as:' => '🇦🇸',
- ':at:' => '🇦🇹',
- ':au:' => '🇦🇺',
- ':aw:' => '🇦🇼',
- ':ax:' => '🇦🇽',
- ':az:' => '🇦🇿',
- ':ba:' => '🇧🇦',
- ':back-of-hand-tone1:' => '🤚🏻',
- ':back-of-hand-tone2:' => '🤚🏼',
- ':back-of-hand-tone3:' => '🤚🏽',
- ':back-of-hand-tone4:' => '🤚🏾',
- ':back-of-hand-tone5:' => '🤚🏿',
+ ':admission-tickets:' => '🎟️',
+ ':ballot-box-with-ballot:' => '🗳️',
':barely-sunny:' => '🌥️',
- ':bb:' => '🇧🇧',
- ':bd:' => '🇧🇩',
- ':be:' => '🇧🇪',
- ':bf:' => '🇧🇫',
- ':bg:' => '🇧🇬',
- ':bh:' => '🇧🇭',
- ':bi:' => '🇧🇮',
- ':bj:' => '🇧🇯',
- ':bl:' => '🇧🇱',
+ ':beach-with-umbrella:' => '🏖️',
+ ':biohazard-sign:' => '☣️',
':black-circle-for-record:' => '⏺️',
':black-left-pointing-double-triangle-with-vertical-bar:' => '⏮️',
':black-right-pointing-double-triangle-with-vertical-bar:' => '⏭️',
':black-right-pointing-triangle-with-double-vertical-bar:' => '⏯️',
':black-square-for-stop:' => '⏹️',
- ':bm:' => '🇧🇲',
- ':bn:' => '🇧🇳',
- ':bo:' => '🇧🇴',
- ':bq:' => '🇧🇶',
- ':br:' => '🇧🇷',
- ':bs:' => '🇧🇸',
- ':bt:' => '🇧🇹',
- ':bv:' => '🇧🇻',
- ':bw:' => '🇧🇼',
- ':by:' => '🇧🇾',
- ':bz:' => '🇧🇿',
- ':ca:' => '🇨🇦',
- ':call-me-hand-tone1:' => '🤙🏻',
- ':call-me-hand-tone2:' => '🤙🏼',
- ':call-me-hand-tone3:' => '🤙🏽',
- ':call-me-hand-tone4:' => '🤙🏾',
- ':call-me-hand-tone5:' => '🤙🏿',
- ':cc:' => '🇨🇨',
- ':cf:' => '🇨🇫',
- ':cg:' => '🇨🇬',
- ':ch:' => '🇨🇭',
- ':chile:' => '🇨🇱',
- ':ci:' => '🇨🇮',
- ':ck:' => '🇨🇰',
- ':cm:' => '🇨🇲',
':cn:' => '🇨🇳',
- ':co:' => '🇨🇴',
- ':congo:' => '🇨🇩',
- ':cp:' => '🇨🇵',
- ':cr:' => '🇨🇷',
- ':cu:' => '🇨🇺',
- ':cv:' => '🇨🇻',
- ':cw:' => '🇨🇼',
- ':cx:' => '🇨🇽',
- ':cy:' => '🇨🇾',
- ':cz:' => '🇨🇿',
+ ':compression:' => '🗜️',
+ ':dagger-knife:' => '🗡️',
':de:' => '🇩🇪',
- ':dg:' => '🇩🇬',
- ':dj:' => '🇩🇯',
- ':dk:' => '🇩🇰',
- ':dm:' => '🇩🇲',
- ':do:' => '🇩🇴',
- ':dz:' => '🇩🇿',
- ':ea:' => '🇪🇦',
- ':ec:' => '🇪🇨',
- ':ee:' => '🇪🇪',
- ':eg:' => '🇪🇬',
- ':eh:' => '🇪🇭',
- ':er:' => '🇪🇷',
+ ':derelict-house-building:' => '🏚️',
+ ':double-vertical-bar:' => '⏸️',
+ ':dove-of-peace:' => '🕊️',
+ ':eject:' => '⏏️',
':es:' => '🇪🇸',
- ':et:' => '🇪🇹',
- ':eu:' => '🇪🇺',
- ':expecting-woman-tone1:' => '🤰🏻',
- ':expecting-woman-tone2:' => '🤰🏼',
- ':expecting-woman-tone3:' => '🤰🏽',
- ':expecting-woman-tone4:' => '🤰🏾',
- ':expecting-woman-tone5:' => '🤰🏿',
- ':facepalm-tone1:' => '🤦🏻',
- ':facepalm-tone2:' => '🤦🏼',
- ':facepalm-tone3:' => '🤦🏽',
- ':facepalm-tone4:' => '🤦🏾',
- ':facepalm-tone5:' => '🤦🏿',
- ':fi:' => '🇫🇮',
- ':fj:' => '🇫🇯',
- ':fk:' => '🇫🇰',
+ ':film-frames:' => '🎞️',
':flag-ac:' => '🇦🇨',
':flag-ad:' => '🇦🇩',
':flag-ae:' => '🇦🇪',
@@ -2069,291 +1842,57 @@
':flag-za:' => '🇿🇦',
':flag-zm:' => '🇿🇲',
':flag-zw:' => '🇿🇼',
- ':fm:' => '🇫🇲',
- ':fo:' => '🇫🇴',
':fr:' => '🇫🇷',
- ':ga:' => '🇬🇦',
+ ':frame-with-picture:' => '🖼️',
':gb:' => '🇬🇧',
- ':gd:' => '🇬🇩',
- ':ge:' => '🇬🇪',
- ':gf:' => '🇬🇫',
- ':gg:' => '🇬🇬',
- ':gh:' => '🇬🇭',
- ':gi:' => '🇬🇮',
- ':gl:' => '🇬🇱',
- ':gm:' => '🇬🇲',
- ':gn:' => '🇬🇳',
- ':gp:' => '🇬🇵',
- ':gq:' => '🇬🇶',
- ':gr:' => '🇬🇷',
- ':grandma-tone1:' => '👵🏻',
- ':grandma-tone2:' => '👵🏼',
- ':grandma-tone3:' => '👵🏽',
- ':grandma-tone4:' => '👵🏾',
- ':grandma-tone5:' => '👵🏿',
- ':gs:' => '🇬🇸',
- ':gt:' => '🇬🇹',
- ':gu:' => '🇬🇺',
- ':gw:' => '🇬🇼',
- ':gy:' => '🇬🇾',
- ':hand-with-index-and-middle-fingers-crossed-tone1:' => '🤞🏻',
- ':hand-with-index-and-middle-fingers-crossed-tone2:' => '🤞🏼',
- ':hand-with-index-and-middle-fingers-crossed-tone3:' => '🤞🏽',
- ':hand-with-index-and-middle-fingers-crossed-tone4:' => '🤞🏾',
- ':hand-with-index-and-middle-fingers-crossed-tone5:' => '🤞🏿',
- ':hk:' => '🇭🇰',
- ':hm:' => '🇭🇲',
- ':hn:' => '🇭🇳',
- ':hr:' => '🇭🇷',
- ':ht:' => '🇭🇹',
- ':hu:' => '🇭🇺',
- ':ic:' => '🇮🇨',
- ':ie:' => '🇮🇪',
- ':il:' => '🇮🇱',
- ':im:' => '🇮🇲',
- ':in:' => '🇮🇳',
- ':indonesia:' => '🇮🇩',
- ':io:' => '🇮🇴',
- ':iq:' => '🇮🇶',
- ':ir:' => '🇮🇷',
- ':is:' => '🇮🇸',
+ ':golfer:' => '🏌️',
+ ':heavy-heart-exclamation-mark-ornament:' => '❣️',
+ ':helmet-with-white-cross:' => '⛑️',
+ ':house-buildings:' => '🏘️',
':it:' => '🇮🇹',
- ':je:' => '🇯🇪',
- ':jm:' => '🇯🇲',
- ':jo:' => '🇯🇴',
':jp:' => '🇯🇵',
- ':juggler-tone1:' => '🤹🏻',
- ':juggler-tone2:' => '🤹🏼',
- ':juggler-tone3:' => '🤹🏽',
- ':juggler-tone4:' => '🤹🏾',
- ':juggler-tone5:' => '🤹🏿',
- ':ke:' => '🇰🇪',
- ':keycap-asterisk:' => '*⃣',
- ':kg:' => '🇰🇬',
- ':kh:' => '🇰🇭',
- ':ki:' => '🇰🇮',
- ':km:' => '🇰🇲',
- ':kn:' => '🇰🇳',
':knife-fork-plate:' => '🍽️',
- ':kp:' => '🇰🇵',
':kr:' => '🇰🇷',
- ':kw:' => '🇰🇼',
- ':ky:' => '🇰🇾',
- ':kz:' => '🇰🇿',
- ':la:' => '🇱🇦',
- ':lb:' => '🇱🇧',
- ':lc:' => '🇱🇨',
- ':left-fist-tone1:' => '🤛🏻',
- ':left-fist-tone2:' => '🤛🏼',
- ':left-fist-tone3:' => '🤛🏽',
- ':left-fist-tone4:' => '🤛🏾',
- ':left-fist-tone5:' => '🤛🏿',
- ':li:' => '🇱🇮',
':lightning:' => '🌩️',
':lightning-cloud:' => '🌩️',
- ':lk:' => '🇱🇰',
- ':lr:' => '🇱🇷',
- ':ls:' => '🇱🇸',
- ':lt:' => '🇱🇹',
- ':lu:' => '🇱🇺',
- ':lv:' => '🇱🇻',
- ':ly:' => '🇱🇾',
- ':ma:' => '🇲🇦',
- ':male-dancer-tone1:' => '🕺🏻',
- ':male-dancer-tone2:' => '🕺🏼',
- ':male-dancer-tone3:' => '🕺🏽',
- ':male-dancer-tone4:' => '🕺🏾',
- ':male-dancer-tone5:' => '🕺🏿',
- ':mc:' => '🇲🇨',
- ':md:' => '🇲🇩',
- ':me:' => '🇲🇪',
- ':mf:' => '🇲🇫',
- ':mg:' => '🇲🇬',
- ':mh:' => '🇲🇭',
- ':mk:' => '🇲🇰',
- ':ml:' => '🇲🇱',
- ':mm:' => '🇲🇲',
- ':mn:' => '🇲🇳',
- ':mo:' => '🇲🇴',
+ ':linked-paperclips:' => '🖇️',
+ ':lower-left-ballpoint-pen:' => '🖊️',
+ ':lower-left-crayon:' => '🖍️',
+ ':lower-left-fountain-pen:' => '🖋️',
+ ':lower-left-paintbrush:' => '🖌️',
+ ':man-in-business-suit-levitating:' => '🕴️',
':mostly-sunny:' => '🌤️',
- ':mother-christmas-tone1:' => '🤶🏻',
- ':mother-christmas-tone2:' => '🤶🏼',
- ':mother-christmas-tone3:' => '🤶🏽',
- ':mother-christmas-tone4:' => '🤶🏾',
- ':mother-christmas-tone5:' => '🤶🏿',
- ':mp:' => '🇲🇵',
- ':mq:' => '🇲🇶',
- ':mr:' => '🇲🇷',
- ':ms:' => '🇲🇸',
- ':mt:' => '🇲🇹',
- ':mu:' => '🇲🇺',
- ':mv:' => '🇲🇻',
- ':mw:' => '🇲🇼',
- ':mx:' => '🇲🇽',
- ':my:' => '🇲🇾',
- ':mz:' => '🇲🇿',
- ':na:' => '🇳🇦',
- ':nc:' => '🇳🇨',
- ':ne:' => '🇳🇪',
- ':nf:' => '🇳🇫',
- ':ni:' => '🇳🇮',
- ':nigeria:' => '🇳🇬',
- ':nl:' => '🇳🇱',
- ':no:' => '🇳🇴',
- ':np:' => '🇳🇵',
- ':nr:' => '🇳🇷',
- ':nu:' => '🇳🇺',
- ':nz:' => '🇳🇿',
- ':pa:' => '🇵🇦',
+ ':om-symbol:' => '🕉️',
':partly-sunny-rain:' => '🌦️',
- ':pe:' => '🇵🇪',
- ':person-doing-cartwheel-tone1:' => '🤸🏻',
- ':person-doing-cartwheel-tone2:' => '🤸🏼',
- ':person-doing-cartwheel-tone3:' => '🤸🏽',
- ':person-doing-cartwheel-tone4:' => '🤸🏾',
- ':person-doing-cartwheel-tone5:' => '🤸🏿',
- ':person-with-ball-tone1:' => '⛹🏻',
- ':person-with-ball-tone2:' => '⛹🏼',
- ':person-with-ball-tone3:' => '⛹🏽',
- ':person-with-ball-tone4:' => '⛹🏾',
- ':person-with-ball-tone5:' => '⛹🏿',
- ':pf:' => '🇵🇫',
- ':pg:' => '🇵🇬',
- ':ph:' => '🇵🇭',
- ':pk:' => '🇵🇰',
- ':pl:' => '🇵🇱',
- ':pm:' => '🇵🇲',
- ':pn:' => '🇵🇳',
- ':pr:' => '🇵🇷',
- ':ps:' => '🇵🇸',
- ':pt:' => '🇵🇹',
- ':pw:' => '🇵🇼',
- ':py:' => '🇵🇾',
- ':qa:' => '🇶🇦',
+ ':person-with-ball:' => '⛹️',
+ ':racing-motorcycle:' => '🏍️',
+ ':radioactive-sign:' => '☢️',
':rain-cloud:' => '🌧️',
- ':rainbow-flag:' => '🏳️🌈',
- ':raised-hand-with-fingers-splayed-tone1:' => '🖐🏻',
- ':raised-hand-with-fingers-splayed-tone2:' => '🖐🏼',
- ':raised-hand-with-fingers-splayed-tone3:' => '🖐🏽',
- ':raised-hand-with-fingers-splayed-tone4:' => '🖐🏾',
- ':raised-hand-with-fingers-splayed-tone5:' => '🖐🏿',
- ':raised-hand-with-part-between-middle-and-ring-fingers-tone1:' => '🖖🏻',
- ':raised-hand-with-part-between-middle-and-ring-fingers-tone2:' => '🖖🏼',
- ':raised-hand-with-part-between-middle-and-ring-fingers-tone3:' => '🖖🏽',
- ':raised-hand-with-part-between-middle-and-ring-fingers-tone4:' => '🖖🏾',
- ':raised-hand-with-part-between-middle-and-ring-fingers-tone5:' => '🖖🏿',
- ':re:' => '🇷🇪',
- ':reversed-hand-with-middle-finger-extended-tone1:' => '🖕🏻',
- ':reversed-hand-with-middle-finger-extended-tone2:' => '🖕🏼',
- ':reversed-hand-with-middle-finger-extended-tone3:' => '🖕🏽',
- ':reversed-hand-with-middle-finger-extended-tone4:' => '🖕🏾',
- ':reversed-hand-with-middle-finger-extended-tone5:' => '🖕🏿',
- ':right-fist-tone1:' => '🤜🏻',
- ':right-fist-tone2:' => '🤜🏼',
- ':right-fist-tone3:' => '🤜🏽',
- ':right-fist-tone4:' => '🤜🏾',
- ':right-fist-tone5:' => '🤜🏿',
- ':ro:' => '🇷🇴',
- ':rs:' => '🇷🇸',
+ ':rolled-up-newspaper:' => '🗞️',
':ru:' => '🇷🇺',
- ':rw:' => '🇷🇼',
- ':saudi:' => '🇸🇦',
- ':saudiarabia:' => '🇸🇦',
- ':sb:' => '🇸🇧',
- ':sc:' => '🇸🇨',
- ':sd:' => '🇸🇩',
- ':se:' => '🇸🇪',
- ':sg:' => '🇸🇬',
- ':sh:' => '🇸🇭',
- ':shaking-hands-tone1:' => '🤝🏻',
- ':shaking-hands-tone2:' => '🤝🏼',
- ':shaking-hands-tone3:' => '🤝🏽',
- ':shaking-hands-tone4:' => '🤝🏾',
- ':shaking-hands-tone5:' => '🤝🏿',
- ':si:' => '🇸🇮',
- ':sign-of-the-horns-tone1:' => '🤘🏻',
- ':sign-of-the-horns-tone2:' => '🤘🏼',
- ':sign-of-the-horns-tone3:' => '🤘🏽',
- ':sign-of-the-horns-tone4:' => '🤘🏾',
- ':sign-of-the-horns-tone5:' => '🤘🏿',
- ':sj:' => '🇸🇯',
- ':sk:' => '🇸🇰',
- ':sl:' => '🇸🇱',
- ':sleuth-or-spy-tone1:' => '🕵🏻',
- ':sleuth-or-spy-tone2:' => '🕵🏼',
- ':sleuth-or-spy-tone3:' => '🕵🏽',
- ':sleuth-or-spy-tone4:' => '🕵🏾',
- ':sleuth-or-spy-tone5:' => '🕵🏿',
- ':sm:' => '🇸🇲',
- ':sn:' => '🇸🇳',
+ ':scales:' => '⚖️',
+ ':shopping-bags:' => '🛍️',
+ ':sleuth-or-spy:' => '🕵️',
+ ':snow-capped-mountain:' => '🏔️',
':snow-cloud:' => '🌨️',
- ':so:' => '🇸🇴',
- ':sr:' => '🇸🇷',
- ':ss:' => '🇸🇸',
- ':st:' => '🇸🇹',
+ ':speaking-head-in-silhouette:' => '🗣️',
+ ':spiral-calendar-pad:' => '🗓️',
+ ':spiral-note-pad:' => '🗒️',
':staff-of-aesculapius:' => '⚕️',
':sun-behind-cloud:' => '🌥️',
':sun-small-cloud:' => '🌤️',
- ':sv:' => '🇸🇻',
- ':sx:' => '🇸🇽',
- ':sy:' => '🇸🇾',
- ':sz:' => '🇸🇿',
- ':ta:' => '🇹🇦',
- ':tc:' => '🇹🇨',
- ':td:' => '🇹🇩',
- ':tf:' => '🇹🇫',
- ':tg:' => '🇹🇬',
- ':th:' => '🇹🇭',
- ':tj:' => '🇹🇯',
- ':tk:' => '🇹🇰',
- ':tl:' => '🇹🇱',
- ':tn:' => '🇹🇳',
- ':to:' => '🇹🇴',
+ ':three-button-mouse:' => '🖱️',
+ ':thunder-cloud-and-rain:' => '⛈️',
':tornado-cloud:' => '🌪️',
- ':tr:' => '🇹🇷',
- ':tt:' => '🇹🇹',
- ':turkmenistan:' => '🇹🇲',
- ':tuvalu:' => '🇹🇻',
- ':tuxedo-tone1:' => '🤵🏻',
- ':tuxedo-tone2:' => '🤵🏼',
- ':tuxedo-tone3:' => '🤵🏽',
- ':tuxedo-tone4:' => '🤵🏾',
- ':tuxedo-tone5:' => '🤵🏿',
- ':tw:' => '🇹🇼',
- ':tz:' => '🇹🇿',
- ':ua:' => '🇺🇦',
- ':ug:' => '🇺🇬',
':uk:' => '🇬🇧',
- ':um:' => '🇺🇲',
+ ':umbrella-on-ground:' => '⛱️',
':us:' => '🇺🇸',
- ':uy:' => '🇺🇾',
- ':uz:' => '🇺🇿',
- ':va:' => '🇻🇦',
- ':vc:' => '🇻🇨',
- ':ve:' => '🇻🇪',
- ':vg:' => '🇻🇬',
- ':vi:' => '🇻🇮',
- ':vn:' => '🇻🇳',
- ':vu:' => '🇻🇺',
- ':weight-lifter-tone1:' => '🏋🏻',
- ':weight-lifter-tone2:' => '🏋🏼',
- ':weight-lifter-tone3:' => '🏋🏽',
- ':weight-lifter-tone4:' => '🏋🏾',
- ':weight-lifter-tone5:' => '🏋🏿',
- ':wf:' => '🇼🇫',
- ':wrestling-tone1:' => '🤼🏻',
- ':wrestling-tone2:' => '🤼🏼',
- ':wrestling-tone3:' => '🤼🏽',
- ':wrestling-tone4:' => '🤼🏾',
- ':wrestling-tone5:' => '🤼🏿',
- ':ws:' => '🇼🇸',
- ':xk:' => '🇽🇰',
- ':ye:' => '🇾🇪',
- ':yt:' => '🇾🇹',
- ':za:' => '🇿🇦',
- ':zm:' => '🇿🇲',
- ':zw:' => '🇿🇼',
+ ':waving-white-flag:' => '🏳️',
+ ':weight-lifter:' => '🏋️',
+ ':white-frowning-face:' => '☹️',
+ ':wind-blowing-face:' => '🌬️',
':afghanistan:' => '🇦🇫',
+ ':airplane-small:' => '🛩️',
':aland-islands:' => '🇦🇽',
':albania:' => '🇦🇱',
':algeria:' => '🇩🇿',
@@ -2364,6 +1903,7 @@
':angel-tone3:' => '👼🏽',
':angel-tone4:' => '👼🏾',
':angel-tone5:' => '👼🏿',
+ ':anger-right:' => '🗯️',
':angola:' => '🇦🇴',
':anguilla:' => '🇦🇮',
':antarctica:' => '🇦🇶',
@@ -2372,7 +1912,8 @@
':armenia:' => '🇦🇲',
':aruba:' => '🇦🇼',
':ascension-island:' => '🇦🇨',
- ':asterisk:' => '*⃣',
+ ':asterisk:' => '*️⃣',
+ ':atom:' => '⚛️',
':australia:' => '🇦🇺',
':austria:' => '🇦🇹',
':azerbaijan:' => '🇦🇿',
@@ -2385,6 +1926,7 @@
':bahrain:' => '🇧🇭',
':bangladesh:' => '🇧🇩',
':barbados:' => '🇧🇧',
+ ':basketball-player:' => '⛹️',
':basketball-player-tone1:' => '⛹🏻',
':basketball-player-tone2:' => '⛹🏼',
':basketball-player-tone3:' => '⛹🏽',
@@ -2395,9 +1937,11 @@
':bath-tone3:' => '🛀🏽',
':bath-tone4:' => '🛀🏾',
':bath-tone5:' => '🛀🏿',
+ ':beach:' => '🏖️',
':belarus:' => '🇧🇾',
':belgium:' => '🇧🇪',
':belize:' => '🇧🇿',
+ ':bellhop:' => '🛎️',
':benin:' => '🇧🇯',
':bermuda:' => '🇧🇲',
':bhutan:' => '🇧🇹',
@@ -2421,6 +1965,11 @@
':boy-tone4:' => '👦🏾',
':boy-tone5:' => '👦🏿',
':brazil:' => '🇧🇷',
+ ':breast-feeding-dark-skin-tone:' => '🤱🏿',
+ ':breast-feeding-light-skin-tone:' => '🤱🏻',
+ ':breast-feeding-medium-dark-skin-tone:' => '🤱🏾',
+ ':breast-feeding-medium-light-skin-tone:' => '🤱🏼',
+ ':breast-feeding-medium-skin-tone:' => '🤱🏽',
':bride-with-veil-tone1:' => '👰🏻',
':bride-with-veil-tone2:' => '👰🏼',
':bride-with-veil-tone3:' => '👰🏽',
@@ -2432,6 +1981,7 @@
':bulgaria:' => '🇧🇬',
':burkina-faso:' => '🇧🇫',
':burundi:' => '🇧🇮',
+ ':calendar-spiral:' => '🗓️',
':call-me-tone1:' => '🤙🏻',
':call-me-tone2:' => '🤙🏼',
':call-me-tone3:' => '🤙🏽',
@@ -2442,6 +1992,7 @@
':canada:' => '🇨🇦',
':canary-islands:' => '🇮🇨',
':cape-verde:' => '🇨🇻',
+ ':card-box:' => '🗃️',
':caribbean-netherlands:' => '🇧🇶',
':cartwheel-tone1:' => '🤸🏻',
':cartwheel-tone2:' => '🤸🏼',
@@ -2452,6 +2003,12 @@
':central-african-republic:' => '🇨🇫',
':ceuta-melilla:' => '🇪🇦',
':chad:' => '🇹🇩',
+ ':child-dark-skin-tone:' => '🧒🏿',
+ ':child-light-skin-tone:' => '🧒🏻',
+ ':child-medium-dark-skin-tone:' => '🧒🏾',
+ ':child-medium-light-skin-tone:' => '🧒🏼',
+ ':child-medium-skin-tone:' => '🧒🏽',
+ ':chile:' => '🇨🇱',
':christmas-island:' => '🇨🇽',
':clap-tone1:' => '👏🏻',
':clap-tone2:' => '👏🏼',
@@ -2459,11 +2016,17 @@
':clap-tone4:' => '👏🏾',
':clap-tone5:' => '👏🏿',
':clipperton-island:' => '🇨🇵',
+ ':clock:' => '🕰️',
+ ':cloud-lightning:' => '🌩️',
+ ':cloud-rain:' => '🌧️',
+ ':cloud-snow:' => '🌨️',
+ ':cloud-tornado:' => '🌪️',
':cocos-islands:' => '🇨🇨',
':colombia:' => '🇨🇴',
':comoros:' => '🇰🇲',
':congo-brazzaville:' => '🇨🇬',
':congo-kinshasa:' => '🇨🇩',
+ ':construction-site:' => '🏗️',
':construction-worker-tone1:' => '👷🏻',
':construction-worker-tone2:' => '👷🏼',
':construction-worker-tone3:' => '👷🏽',
@@ -2477,7 +2040,15 @@
':cop-tone5:' => '👮🏿',
':costa-rica:' => '🇨🇷',
':cote-divoire:' => '🇨🇮',
+ ':couch:' => '🛋️',
+ ':couple-with-heart-dark-skin-tone:' => '💑🏿',
+ ':couple-with-heart-light-skin-tone:' => '💑🏻',
+ ':couple-with-heart-medium-dark-skin-tone:' => '💑🏾',
+ ':couple-with-heart-medium-light-skin-tone:' => '💑🏼',
+ ':couple-with-heart-medium-skin-tone:' => '💑🏽',
':croatia:' => '🇭🇷',
+ ':cross:' => '✝️',
+ ':cruise-ship:' => '🛳️',
':cuba:' => '🇨🇺',
':curacao:' => '🇨🇼',
':cyprus:' => '🇨🇾',
@@ -2487,8 +2058,15 @@
':dancer-tone3:' => '💃🏽',
':dancer-tone4:' => '💃🏾',
':dancer-tone5:' => '💃🏿',
+ ':deaf-person-dark-skin-tone:' => '🧏🏿',
+ ':deaf-person-light-skin-tone:' => '🧏🏻',
+ ':deaf-person-medium-dark-skin-tone:' => '🧏🏾',
+ ':deaf-person-medium-light-skin-tone:' => '🧏🏼',
+ ':deaf-person-medium-skin-tone:' => '🧏🏽',
':denmark:' => '🇩🇰',
+ ':desktop:' => '🖥️',
':diego-garcia:' => '🇩🇬',
+ ':dividers:' => '🗂️',
':djibouti:' => '🇩🇯',
':dominica:' => '🇩🇲',
':dominican-republic:' => '🇩🇴',
@@ -2497,20 +2075,36 @@
':ear-tone3:' => '👂🏽',
':ear-tone4:' => '👂🏾',
':ear-tone5:' => '👂🏿',
+ ':ear-with-hearing-aid-dark-skin-tone:' => '🦻🏿',
+ ':ear-with-hearing-aid-light-skin-tone:' => '🦻🏻',
+ ':ear-with-hearing-aid-medium-dark-skin-tone:' => '🦻🏾',
+ ':ear-with-hearing-aid-medium-light-skin-tone:' => '🦻🏼',
+ ':ear-with-hearing-aid-medium-skin-tone:' => '🦻🏽',
':ecuador:' => '🇪🇨',
':egypt:' => '🇪🇬',
':eight:' => '8️⃣',
':el-salvador:' => '🇸🇻',
+ ':elf-dark-skin-tone:' => '🧝🏿',
+ ':elf-light-skin-tone:' => '🧝🏻',
+ ':elf-medium-dark-skin-tone:' => '🧝🏾',
+ ':elf-medium-light-skin-tone:' => '🧝🏼',
+ ':elf-medium-skin-tone:' => '🧝🏽',
':equatorial-guinea:' => '🇬🇶',
':eritrea:' => '🇪🇷',
':estonia:' => '🇪🇪',
':ethiopia:' => '🇪🇹',
+ ':eu:' => '🇪🇺',
':european-union:' => '🇪🇺',
':face-palm-tone1:' => '🤦🏻',
':face-palm-tone2:' => '🤦🏼',
':face-palm-tone3:' => '🤦🏽',
':face-palm-tone4:' => '🤦🏾',
':face-palm-tone5:' => '🤦🏿',
+ ':fairy-dark-skin-tone:' => '🧚🏿',
+ ':fairy-light-skin-tone:' => '🧚🏻',
+ ':fairy-medium-dark-skin-tone:' => '🧚🏾',
+ ':fairy-medium-light-skin-tone:' => '🧚🏼',
+ ':fairy-medium-skin-tone:' => '🧚🏽',
':falkland-islands:' => '🇫🇰',
':faroe-islands:' => '🇫🇴',
':fiji:' => '🇫🇯',
@@ -2526,13 +2120,22 @@
':fist-tone4:' => '✊🏾',
':fist-tone5:' => '✊🏿',
':five:' => '5️⃣',
+ ':flag-united-nations:' => '🇺🇳',
+ ':flag-white:' => '🏳️',
+ ':foot-dark-skin-tone:' => '🦶🏿',
+ ':foot-light-skin-tone:' => '🦶🏻',
+ ':foot-medium-dark-skin-tone:' => '🦶🏾',
+ ':foot-medium-light-skin-tone:' => '🦶🏼',
+ ':foot-medium-skin-tone:' => '🦶🏽',
+ ':fork-knife-plate:' => '🍽️',
':four:' => '4️⃣',
+ ':frame-photo:' => '🖼️',
':french-guiana:' => '🇬🇫',
':french-polynesia:' => '🇵🇫',
':french-southern-territories:' => '🇹🇫',
+ ':frowning2:' => '☹️',
':gabon:' => '🇬🇦',
':gambia:' => '🇬🇲',
- ':gay-pride-flag:' => '🏳🌈',
':georgia:' => '🇬🇪',
':ghana:' => '🇬🇭',
':gibraltar:' => '🇬🇮',
@@ -2562,11 +2165,18 @@
':haircut-tone4:' => '💇🏾',
':haircut-tone5:' => '💇🏿',
':haiti:' => '🇭🇹',
+ ':hammer-pick:' => '⚒️',
+ ':hand-splayed:' => '🖐️',
':hand-splayed-tone1:' => '🖐🏻',
':hand-splayed-tone2:' => '🖐🏼',
':hand-splayed-tone3:' => '🖐🏽',
':hand-splayed-tone4:' => '🖐🏾',
':hand-splayed-tone5:' => '🖐🏿',
+ ':hand-with-index-finger-and-thumb-crossed-dark-skin-tone:' => '🫰🏿',
+ ':hand-with-index-finger-and-thumb-crossed-light-skin-tone:' => '🫰🏻',
+ ':hand-with-index-finger-and-thumb-crossed-medium-dark-skin-tone:' => '🫰🏾',
+ ':hand-with-index-finger-and-thumb-crossed-medium-light-skin-tone:' => '🫰🏼',
+ ':hand-with-index-finger-and-thumb-crossed-medium-skin-tone:' => '🫰🏽',
':handball-tone1:' => '🤾🏻',
':handball-tone2:' => '🤾🏼',
':handball-tone3:' => '🤾🏽',
@@ -2579,6 +2189,14 @@
':handshake-tone5:' => '🤝🏿',
':hash:' => '#️⃣',
':heard-mcdonald-islands:' => '🇭🇲',
+ ':heart-exclamation:' => '❣️',
+ ':heart-hands-dark-skin-tone:' => '🫶🏿',
+ ':heart-hands-light-skin-tone:' => '🫶🏻',
+ ':heart-hands-medium-dark-skin-tone:' => '🫶🏾',
+ ':heart-hands-medium-light-skin-tone:' => '🫶🏼',
+ ':heart-hands-medium-skin-tone:' => '🫶🏽',
+ ':helmet-with-cross:' => '⛑️',
+ ':homes:' => '🏘️',
':honduras:' => '🇭🇳',
':hong-kong:' => '🇭🇰',
':horse-racing-tone1:' => '🏇🏻',
@@ -2586,9 +2204,16 @@
':horse-racing-tone3:' => '🏇🏽',
':horse-racing-tone4:' => '🏇🏾',
':horse-racing-tone5:' => '🏇🏿',
+ ':house-abandoned:' => '🏚️',
':hungary:' => '🇭🇺',
':iceland:' => '🇮🇸',
+ ':index-pointing-at-the-viewer-dark-skin-tone:' => '🫵🏿',
+ ':index-pointing-at-the-viewer-light-skin-tone:' => '🫵🏻',
+ ':index-pointing-at-the-viewer-medium-dark-skin-tone:' => '🫵🏾',
+ ':index-pointing-at-the-viewer-medium-light-skin-tone:' => '🫵🏼',
+ ':index-pointing-at-the-viewer-medium-skin-tone:' => '🫵🏽',
':india:' => '🇮🇳',
+ ':indonesia:' => '🇮🇩',
':information-desk-person-tone1:' => '💁🏻',
':information-desk-person-tone2:' => '💁🏼',
':information-desk-person-tone3:' => '💁🏽',
@@ -2597,6 +2222,7 @@
':iran:' => '🇮🇷',
':iraq:' => '🇮🇶',
':ireland:' => '🇮🇪',
+ ':island:' => '🏝️',
':isle-of-man:' => '🇮🇲',
':israel:' => '🇮🇱',
':jamaica:' => '🇯🇲',
@@ -2609,7 +2235,13 @@
':juggling-tone5:' => '🤹🏿',
':kazakhstan:' => '🇰🇿',
':kenya:' => '🇰🇪',
+ ':key2:' => '🗝️',
':kiribati:' => '🇰🇮',
+ ':kiss-dark-skin-tone:' => '💏🏿',
+ ':kiss-light-skin-tone:' => '💏🏻',
+ ':kiss-medium-dark-skin-tone:' => '💏🏾',
+ ':kiss-medium-light-skin-tone:' => '💏🏼',
+ ':kiss-medium-skin-tone:' => '💏🏽',
':kosovo:' => '🇽🇰',
':kuwait:' => '🇰🇼',
':kyrgyzstan:' => '🇰🇬',
@@ -2621,20 +2253,47 @@
':left-facing-fist-tone3:' => '🤛🏽',
':left-facing-fist-tone4:' => '🤛🏾',
':left-facing-fist-tone5:' => '🤛🏿',
+ ':leftwards-hand-dark-skin-tone:' => '🫲🏿',
+ ':leftwards-hand-light-skin-tone:' => '🫲🏻',
+ ':leftwards-hand-medium-dark-skin-tone:' => '🫲🏾',
+ ':leftwards-hand-medium-light-skin-tone:' => '🫲🏼',
+ ':leftwards-hand-medium-skin-tone:' => '🫲🏽',
+ ':leftwards-pushing-hand-dark-skin-tone:' => '🫷🏿',
+ ':leftwards-pushing-hand-light-skin-tone:' => '🫷🏻',
+ ':leftwards-pushing-hand-medium-dark-skin-tone:' => '🫷🏾',
+ ':leftwards-pushing-hand-medium-light-skin-tone:' => '🫷🏼',
+ ':leftwards-pushing-hand-medium-skin-tone:' => '🫷🏽',
+ ':leg-dark-skin-tone:' => '🦵🏿',
+ ':leg-light-skin-tone:' => '🦵🏻',
+ ':leg-medium-dark-skin-tone:' => '🦵🏾',
+ ':leg-medium-light-skin-tone:' => '🦵🏼',
+ ':leg-medium-skin-tone:' => '🦵🏽',
':lesotho:' => '🇱🇸',
+ ':levitate:' => '🕴️',
':liberia:' => '🇱🇷',
':libya:' => '🇱🇾',
':liechtenstein:' => '🇱🇮',
+ ':lifter:' => '🏋️',
':lifter-tone1:' => '🏋🏻',
':lifter-tone2:' => '🏋🏼',
':lifter-tone3:' => '🏋🏽',
':lifter-tone4:' => '🏋🏾',
':lifter-tone5:' => '🏋🏿',
':lithuania:' => '🇱🇹',
+ ':love-you-gesture-dark-skin-tone:' => '🤟🏿',
+ ':love-you-gesture-light-skin-tone:' => '🤟🏻',
+ ':love-you-gesture-medium-dark-skin-tone:' => '🤟🏾',
+ ':love-you-gesture-medium-light-skin-tone:' => '🤟🏼',
+ ':love-you-gesture-medium-skin-tone:' => '🤟🏽',
':luxembourg:' => '🇱🇺',
':macau:' => '🇲🇴',
':macedonia:' => '🇲🇰',
':madagascar:' => '🇲🇬',
+ ':mage-dark-skin-tone:' => '🧙🏿',
+ ':mage-light-skin-tone:' => '🧙🏻',
+ ':mage-medium-dark-skin-tone:' => '🧙🏾',
+ ':mage-medium-light-skin-tone:' => '🧙🏼',
+ ':mage-medium-skin-tone:' => '🧙🏽',
':malawi:' => '🇲🇼',
':malaysia:' => '🇲🇾',
':maldives:' => '🇲🇻',
@@ -2665,6 +2324,7 @@
':man-with-turban-tone3:' => '👳🏽',
':man-with-turban-tone4:' => '👳🏾',
':man-with-turban-tone5:' => '👳🏿',
+ ':map:' => '🗺️',
':marshall-islands:' => '🇲🇭',
':martinique:' => '🇲🇶',
':massage-tone1:' => '💆🏻',
@@ -2675,6 +2335,16 @@
':mauritania:' => '🇲🇷',
':mauritius:' => '🇲🇺',
':mayotte:' => '🇾🇹',
+ ':men-holding-hands-dark-skin-tone:' => '👬🏿',
+ ':men-holding-hands-light-skin-tone:' => '👬🏻',
+ ':men-holding-hands-medium-dark-skin-tone:' => '👬🏾',
+ ':men-holding-hands-medium-light-skin-tone:' => '👬🏼',
+ ':men-holding-hands-medium-skin-tone:' => '👬🏽',
+ ':merperson-dark-skin-tone:' => '🧜🏿',
+ ':merperson-light-skin-tone:' => '🧜🏻',
+ ':merperson-medium-dark-skin-tone:' => '🧜🏾',
+ ':merperson-medium-light-skin-tone:' => '🧜🏼',
+ ':merperson-medium-skin-tone:' => '🧜🏽',
':metal-tone1:' => '🤘🏻',
':metal-tone2:' => '🤘🏼',
':metal-tone3:' => '🤘🏽',
@@ -2682,22 +2352,26 @@
':metal-tone5:' => '🤘🏿',
':mexico:' => '🇲🇽',
':micronesia:' => '🇫🇲',
+ ':microphone2:' => '🎙️',
':middle-finger-tone1:' => '🖕🏻',
':middle-finger-tone2:' => '🖕🏼',
':middle-finger-tone3:' => '🖕🏽',
':middle-finger-tone4:' => '🖕🏾',
':middle-finger-tone5:' => '🖕🏿',
+ ':military-medal:' => '🎖️',
':moldova:' => '🇲🇩',
':monaco:' => '🇲🇨',
':mongolia:' => '🇲🇳',
':montenegro:' => '🇲🇪',
':montserrat:' => '🇲🇸',
':morocco:' => '🇲🇦',
+ ':motorboat:' => '🛥️',
':mountain-bicyclist-tone1:' => '🚵🏻',
':mountain-bicyclist-tone2:' => '🚵🏼',
':mountain-bicyclist-tone3:' => '🚵🏽',
':mountain-bicyclist-tone4:' => '🚵🏾',
':mountain-bicyclist-tone5:' => '🚵🏿',
+ ':mouse-three-button:' => '🖱️',
':mozambique:' => '🇲🇿',
':mrs-claus-tone1:' => '🤶🏻',
':mrs-claus-tone2:' => '🤶🏼',
@@ -2721,9 +2395,16 @@
':netherlands:' => '🇳🇱',
':new-caledonia:' => '🇳🇨',
':new-zealand:' => '🇳🇿',
+ ':newspaper2:' => '🗞️',
':nicaragua:' => '🇳🇮',
':niger:' => '🇳🇪',
+ ':nigeria:' => '🇳🇬',
':nine:' => '9️⃣',
+ ':ninja-dark-skin-tone:' => '🥷🏿',
+ ':ninja-light-skin-tone:' => '🥷🏻',
+ ':ninja-medium-dark-skin-tone:' => '🥷🏾',
+ ':ninja-medium-light-skin-tone:' => '🥷🏼',
+ ':ninja-medium-skin-tone:' => '🥷🏽',
':niue:' => '🇳🇺',
':no-good-tone1:' => '🙅🏻',
':no-good-tone2:' => '🙅🏼',
@@ -2739,6 +2420,8 @@
':nose-tone3:' => '👃🏽',
':nose-tone4:' => '👃🏾',
':nose-tone5:' => '👃🏿',
+ ':notepad-spiral:' => '🗒️',
+ ':oil:' => '🛢️',
':ok-hand-tone1:' => '👌🏻',
':ok-hand-tone2:' => '👌🏼',
':ok-hand-tone3:' => '👌🏽',
@@ -2754,6 +2437,11 @@
':older-man-tone3:' => '👴🏽',
':older-man-tone4:' => '👴🏾',
':older-man-tone5:' => '👴🏿',
+ ':older-person-dark-skin-tone:' => '🧓🏿',
+ ':older-person-light-skin-tone:' => '🧓🏻',
+ ':older-person-medium-dark-skin-tone:' => '🧓🏾',
+ ':older-person-medium-light-skin-tone:' => '🧓🏼',
+ ':older-person-medium-skin-tone:' => '🧓🏽',
':older-woman-tone1:' => '👵🏻',
':older-woman-tone2:' => '👵🏼',
':older-woman-tone3:' => '👵🏽',
@@ -2769,19 +2457,93 @@
':pakistan:' => '🇵🇰',
':palau:' => '🇵🇼',
':palestinian-territories:' => '🇵🇸',
+ ':palm-down-hand-dark-skin-tone:' => '🫳🏿',
+ ':palm-down-hand-light-skin-tone:' => '🫳🏻',
+ ':palm-down-hand-medium-dark-skin-tone:' => '🫳🏾',
+ ':palm-down-hand-medium-light-skin-tone:' => '🫳🏼',
+ ':palm-down-hand-medium-skin-tone:' => '🫳🏽',
+ ':palm-up-hand-dark-skin-tone:' => '🫴🏿',
+ ':palm-up-hand-light-skin-tone:' => '🫴🏻',
+ ':palm-up-hand-medium-dark-skin-tone:' => '🫴🏾',
+ ':palm-up-hand-medium-light-skin-tone:' => '🫴🏼',
+ ':palm-up-hand-medium-skin-tone:' => '🫴🏽',
+ ':palms-up-together-dark-skin-tone:' => '🤲🏿',
+ ':palms-up-together-light-skin-tone:' => '🤲🏻',
+ ':palms-up-together-medium-dark-skin-tone:' => '🤲🏾',
+ ':palms-up-together-medium-light-skin-tone:' => '🤲🏼',
+ ':palms-up-together-medium-skin-tone:' => '🤲🏽',
':panama:' => '🇵🇦',
':papua-new-guinea:' => '🇵🇬',
':paraguay:' => '🇵🇾',
+ ':park:' => '🏞️',
+ ':peace:' => '☮️',
+ ':pen-ballpoint:' => '🖊️',
+ ':pen-fountain:' => '🖋️',
+ ':person-climbing-dark-skin-tone:' => '🧗🏿',
+ ':person-climbing-light-skin-tone:' => '🧗🏻',
+ ':person-climbing-medium-dark-skin-tone:' => '🧗🏾',
+ ':person-climbing-medium-light-skin-tone:' => '🧗🏼',
+ ':person-climbing-medium-skin-tone:' => '🧗🏽',
+ ':person-dark-skin-tone:' => '🧑🏿',
+ ':person-dark-skin-tone-beard:' => '🧔🏿',
':person-frowning-tone1:' => '🙍🏻',
':person-frowning-tone2:' => '🙍🏼',
':person-frowning-tone3:' => '🙍🏽',
':person-frowning-tone4:' => '🙍🏾',
':person-frowning-tone5:' => '🙍🏿',
+ ':person-golfing-dark-skin-tone:' => '🏌🏿',
+ ':person-golfing-light-skin-tone:' => '🏌🏻',
+ ':person-golfing-medium-dark-skin-tone:' => '🏌🏾',
+ ':person-golfing-medium-light-skin-tone:' => '🏌🏼',
+ ':person-golfing-medium-skin-tone:' => '🏌🏽',
+ ':person-in-bed-dark-skin-tone:' => '🛌🏿',
+ ':person-in-bed-light-skin-tone:' => '🛌🏻',
+ ':person-in-bed-medium-dark-skin-tone:' => '🛌🏾',
+ ':person-in-bed-medium-light-skin-tone:' => '🛌🏼',
+ ':person-in-bed-medium-skin-tone:' => '🛌🏽',
+ ':person-in-lotus-position-dark-skin-tone:' => '🧘🏿',
+ ':person-in-lotus-position-light-skin-tone:' => '🧘🏻',
+ ':person-in-lotus-position-medium-dark-skin-tone:' => '🧘🏾',
+ ':person-in-lotus-position-medium-light-skin-tone:' => '🧘🏼',
+ ':person-in-lotus-position-medium-skin-tone:' => '🧘🏽',
+ ':person-in-steamy-room-dark-skin-tone:' => '🧖🏿',
+ ':person-in-steamy-room-light-skin-tone:' => '🧖🏻',
+ ':person-in-steamy-room-medium-dark-skin-tone:' => '🧖🏾',
+ ':person-in-steamy-room-medium-light-skin-tone:' => '🧖🏼',
+ ':person-in-steamy-room-medium-skin-tone:' => '🧖🏽',
+ ':person-in-suit-levitating-dark-skin-tone:' => '🕴🏿',
+ ':person-in-suit-levitating-light-skin-tone:' => '🕴🏻',
+ ':person-in-suit-levitating-medium-dark-skin-tone:' => '🕴🏾',
+ ':person-in-suit-levitating-medium-light-skin-tone:' => '🕴🏼',
+ ':person-in-suit-levitating-medium-skin-tone:' => '🕴🏽',
+ ':person-kneeling-dark-skin-tone:' => '🧎🏿',
+ ':person-kneeling-light-skin-tone:' => '🧎🏻',
+ ':person-kneeling-medium-dark-skin-tone:' => '🧎🏾',
+ ':person-kneeling-medium-light-skin-tone:' => '🧎🏼',
+ ':person-kneeling-medium-skin-tone:' => '🧎🏽',
+ ':person-light-skin-tone:' => '🧑🏻',
+ ':person-light-skin-tone-beard:' => '🧔🏻',
+ ':person-medium-dark-skin-tone:' => '🧑🏾',
+ ':person-medium-dark-skin-tone-beard:' => '🧔🏾',
+ ':person-medium-light-skin-tone:' => '🧑🏼',
+ ':person-medium-light-skin-tone-beard:' => '🧔🏼',
+ ':person-medium-skin-tone:' => '🧑🏽',
+ ':person-medium-skin-tone-beard:' => '🧔🏽',
+ ':person-standing-dark-skin-tone:' => '🧍🏿',
+ ':person-standing-light-skin-tone:' => '🧍🏻',
+ ':person-standing-medium-dark-skin-tone:' => '🧍🏾',
+ ':person-standing-medium-light-skin-tone:' => '🧍🏼',
+ ':person-standing-medium-skin-tone:' => '🧍🏽',
':person-with-blond-hair-tone1:' => '👱🏻',
':person-with-blond-hair-tone2:' => '👱🏼',
':person-with-blond-hair-tone3:' => '👱🏽',
':person-with-blond-hair-tone4:' => '👱🏾',
':person-with-blond-hair-tone5:' => '👱🏿',
+ ':person-with-crown-dark-skin-tone:' => '🫅🏿',
+ ':person-with-crown-light-skin-tone:' => '🫅🏻',
+ ':person-with-crown-medium-dark-skin-tone:' => '🫅🏾',
+ ':person-with-crown-medium-light-skin-tone:' => '🫅🏼',
+ ':person-with-crown-medium-skin-tone:' => '🫅🏽',
':person-with-pouting-face-tone1:' => '🙎🏻',
':person-with-pouting-face-tone2:' => '🙎🏼',
':person-with-pouting-face-tone3:' => '🙎🏽',
@@ -2789,7 +2551,18 @@
':person-with-pouting-face-tone5:' => '🙎🏿',
':peru:' => '🇵🇪',
':philippines:' => '🇵🇭',
+ ':pinched-fingers-dark-skin-tone:' => '🤌🏿',
+ ':pinched-fingers-light-skin-tone:' => '🤌🏻',
+ ':pinched-fingers-medium-dark-skin-tone:' => '🤌🏾',
+ ':pinched-fingers-medium-light-skin-tone:' => '🤌🏼',
+ ':pinched-fingers-medium-skin-tone:' => '🤌🏽',
+ ':pinching-hand-dark-skin-tone:' => '🤏🏿',
+ ':pinching-hand-light-skin-tone:' => '🤏🏻',
+ ':pinching-hand-medium-dark-skin-tone:' => '🤏🏾',
+ ':pinching-hand-medium-light-skin-tone:' => '🤏🏼',
+ ':pinching-hand-medium-skin-tone:' => '🤏🏽',
':pitcairn-islands:' => '🇵🇳',
+ ':play-pause:' => '⏯️',
':point-down-tone1:' => '👇🏻',
':point-down-tone2:' => '👇🏼',
':point-down-tone3:' => '👇🏽',
@@ -2822,6 +2595,16 @@
':pray-tone3:' => '🙏🏽',
':pray-tone4:' => '🙏🏾',
':pray-tone5:' => '🙏🏿',
+ ':pregnant-man-dark-skin-tone:' => '🫃🏿',
+ ':pregnant-man-light-skin-tone:' => '🫃🏻',
+ ':pregnant-man-medium-dark-skin-tone:' => '🫃🏾',
+ ':pregnant-man-medium-light-skin-tone:' => '🫃🏼',
+ ':pregnant-man-medium-skin-tone:' => '🫃🏽',
+ ':pregnant-person-dark-skin-tone:' => '🫄🏿',
+ ':pregnant-person-light-skin-tone:' => '🫄🏻',
+ ':pregnant-person-medium-dark-skin-tone:' => '🫄🏾',
+ ':pregnant-person-medium-light-skin-tone:' => '🫄🏼',
+ ':pregnant-person-medium-skin-tone:' => '🫄🏽',
':pregnant-woman-tone1:' => '🤰🏻',
':pregnant-woman-tone2:' => '🤰🏼',
':pregnant-woman-tone3:' => '🤰🏽',
@@ -2837,6 +2620,7 @@
':princess-tone3:' => '👸🏽',
':princess-tone4:' => '👸🏾',
':princess-tone5:' => '👸🏿',
+ ':projector:' => '📽️',
':puerto-rico:' => '🇵🇷',
':punch-tone1:' => '👊🏻',
':punch-tone2:' => '👊🏼',
@@ -2844,6 +2628,7 @@
':punch-tone4:' => '👊🏾',
':punch-tone5:' => '👊🏿',
':qatar:' => '🇶🇦',
+ ':race-car:' => '🏎️',
':raised-back-of-hand-tone1:' => '🤚🏻',
':raised-back-of-hand-tone2:' => '🤚🏼',
':raised-back-of-hand-tone3:' => '🤚🏽',
@@ -2870,6 +2655,16 @@
':right-facing-fist-tone3:' => '🤜🏽',
':right-facing-fist-tone4:' => '🤜🏾',
':right-facing-fist-tone5:' => '🤜🏿',
+ ':rightwards-hand-dark-skin-tone:' => '🫱🏿',
+ ':rightwards-hand-light-skin-tone:' => '🫱🏻',
+ ':rightwards-hand-medium-dark-skin-tone:' => '🫱🏾',
+ ':rightwards-hand-medium-light-skin-tone:' => '🫱🏼',
+ ':rightwards-hand-medium-skin-tone:' => '🫱🏽',
+ ':rightwards-pushing-hand-dark-skin-tone:' => '🫸🏿',
+ ':rightwards-pushing-hand-light-skin-tone:' => '🫸🏻',
+ ':rightwards-pushing-hand-medium-dark-skin-tone:' => '🫸🏾',
+ ':rightwards-pushing-hand-medium-light-skin-tone:' => '🫸
10000
',
+ ':rightwards-pushing-hand-medium-skin-tone:' => '🫸🏽',
':romania:' => '🇷🇴',
':rowboat-tone1:' => '🚣🏻',
':rowboat-tone2:' => '🚣🏼',
@@ -2890,6 +2685,7 @@
':santa-tone4:' => '🎅🏾',
':santa-tone5:' => '🎅🏿',
':sao-tome-principe:' => '🇸🇹',
+ ':satellite-orbital:' => '🛰️',
':saudi-arabia:' => '🇸🇦',
':selfie-tone1:' => '🤳🏻',
':selfie-tone2:' => '🤳🏼',
@@ -2909,13 +2705,22 @@
':singapore:' => '🇸🇬',
':sint-maarten:' => '🇸🇽',
':six:' => '6️⃣',
+ ':skull-crossbones:' => '☠️',
':slovakia:' => '🇸🇰',
':slovenia:' => '🇸🇮',
+ ':snowboarder-dark-skin-tone:' => '🏂🏿',
+ ':snowboarder-light-skin-tone:' => '🏂🏻',
+ ':snowboarder-medium-dark-skin-tone:' => '🏂🏾',
+ ':snowboarder-medium-light-skin-tone:' => '🏂🏼',
+ ':snowboarder-medium-skin-tone:' => '🏂🏽',
+ ':snowman2:' => '☃️',
':solomon-islands:' => '🇸🇧',
':somalia:' => '🇸🇴',
':south-africa:' => '🇿🇦',
':south-georgia-south-sandwich-islands:' => '🇬🇸',
':south-sudan:' => '🇸🇸',
+ ':speech-left:' => '🗨️',
+ ':spy:' => '🕵️',
':spy-tone1:' => '🕵🏻',
':spy-tone2:' => '🕵🏼',
':spy-tone3:' => '🕵🏽',
@@ -2930,6 +2735,16 @@
':st-pierre-miquelon:' => '🇵🇲',
':st-vincent-grenadines:' => '🇻🇨',
':sudan:' => '🇸🇩',
+ ':superhero-dark-skin-tone:' => '🦸🏿',
+ ':superhero-light-skin-tone:' => '🦸🏻',
+ ':superhero-medium-dark-skin-tone:' => '🦸🏾',
+ ':superhero-medium-light-skin-tone:' => '🦸🏼',
+ ':superhero-medium-skin-tone:' => '🦸🏽',
+ ':supervillain-dark-skin-tone:' => '🦹🏿',
+ ':supervillain-light-skin-tone:' => '🦹🏻',
+ ':supervillain-medium-dark-skin-tone:' => '🦹🏾',
+ ':supervillain-medium-light-skin-tone:' => '🦹🏼',
+ ':supervillain-medium-skin-tone:' => '🦹🏽',
':surfer-tone1:' => '🏄🏻',
':surfer-tone2:' => '🏄🏼',
':surfer-tone3:' => '🏄🏽',
@@ -2961,19 +2776,29 @@
':thumbsup-tone3:' => '👍🏽',
':thumbsup-tone4:' => '👍🏾',
':thumbsup-tone5:' => '👍🏿',
+ ':thunder-cloud-rain:' => '⛈️',
+ ':timer:' => '⏲️',
':timor-leste:' => '🇹🇱',
':togo:' => '🇹🇬',
':tokelau:' => '🇹🇰',
':tonga:' => '🇹🇴',
+ ':tools:' => '🛠️',
+ ':tr:' => '🇹🇷',
+ ':track-next:' => '⏭️',
+ ':track-previous:' => '⏮️',
':trinidad-tobago:' => '🇹🇹',
':tristan-da-cunha:' => '🇹🇦',
':tunisia:' => '🇹🇳',
+ ':turkmenistan:' => '🇹🇲',
':turks-caicos-islands:' => '🇹🇨',
+ ':tuvalu:' => '🇹🇻',
':two:' => '2️⃣',
':uganda:' => '🇺🇬',
':ukraine:' => '🇺🇦',
+ ':umbrella2:' => '☂️',
':united-arab-emirates:' => '🇦🇪',
':united-nations:' => '🇺🇳',
+ ':urn:' => '⚱️',
':uruguay:' => '🇺🇾',
':us-outlying-islands:' => '🇺🇲',
':us-virgin-islands:' => '🇻🇮',
@@ -2983,6 +2808,11 @@
':v-tone3:' => '✌🏽',
':v-tone4:' => '✌🏾',
':v-tone5:' => '✌🏿',
+ ':vampire-dark-skin-tone:' => '🧛🏿',
+ ':vampire-light-skin-tone:' => '🧛🏻',
+ ':vampire-medium-dark-skin-tone:' => '🧛🏾',
+ ':vampire-medium-light-skin-tone:' => '🧛🏼',
+ ':vampire-medium-skin-tone:' => '🧛🏽',
':vanuatu:' => '🇻🇺',
':vatican-city:' => '🇻🇦',
':venezuela:' => '🇻🇪',
@@ -3009,16 +2839,29 @@
':wave-tone4:' => '👋🏾',
':wave-tone5:' => '👋🏿',
':western-sahara:' => '🇪🇭',
+ ':white-sun-cloud:' => '🌥️',
+ ':white-sun-rain-cloud:' => '🌦️',
+ ':white-sun-small-cloud:' => '🌤️',
+ ':woman-and-man-holding-hands-dark-skin-tone:' => '👫🏿',
+ ':woman-and-man-holding-hands-light-skin-tone:' => '👫🏻',
+ ':woman-and-man-holding-hands-medium-dark-skin-tone:' => '👫🏾',
+ ':woman-and-man-holding-hands-medium-light-skin-tone:' => '👫🏼',
+ ':woman-and-man-holding-hands-medium-skin-tone:' => '👫🏽',
':woman-tone1:' => '👩🏻',
':woman-tone2:' => '👩🏼',
':woman-tone3:' => '👩🏽',
':woman-tone4:' => '👩🏾',
':woman-tone5:' => '👩🏿',
- ':wrestlers-tone1:' => '🤼🏻',
- ':wrestlers-tone2:' => '🤼🏼',
- ':wrestlers-tone3:' => '🤼🏽',
- ':wrestlers-tone4:' => '🤼🏾',
- ':wrestlers-tone5:' => '🤼🏿',
+ ':woman-with-headscarf-dark-skin-tone:' => '🧕🏿',
+ ':woman-with-headscarf-light-skin-tone:' => '🧕🏻',
+ ':woman-with-headscarf-medium-dark-skin-tone:' => '🧕🏾',
+ ':woman-with-headscarf-medium-light-skin-tone:' => '🧕🏼',
+ ':woman-with-headscarf-medium-skin-tone:' => '🧕🏽',
+ ':women-holding-hands-dark-skin-tone:' => '👭🏿',
+ ':women-holding-hands-light-skin-tone:' => '👭🏻',
+ ':women-holding-hands-medium-dark-skin-tone:' => '👭🏾',
+ ':women-holding-hands-medium-light-skin-tone:' => '👭🏼',
+ ':women-holding-hands-medium-skin-tone:' => '👭🏽',
':writing-hand-tone1:' => '✍🏻',
':writing-hand-tone2:' => '✍🏼',
':writing-hand-tone3:' => '✍🏽',
@@ -3127,7 +2970,6 @@
':deaf-woman:' => '🧏♀️',
':elf-man:' => '🧝♂',
':elf-woman:' => '🧝♀',
- ':eye-in-speech-bubble:' => '👁️🗨️',
':eye-speech-bubble:' => '👁🗨',
':face-in-clouds:' => '😶🌫️',
':fairy-man:' => '🧚♂',
@@ -3158,31 +3000,37 @@
':male-detective:' => '🕵️♂️',
':man-artist:' => '👨🎨',
':man-astronaut:' => '👨🚀',
- ':man-beard:' => '🧔♂',
+ ':man-bald:' => '👨🦲',
+ ':man-beard:' => '🧔♂️',
':man-cartwheeling:' => '🤸♂️',
':man-cook:' => '👨🍳',
+ ':man-curly-hair:' => '👨🦱',
':man-facepalming:' => '🤦♂️',
':man-factory-worker:' => '👨🏭',
':man-farmer:' => '👨🌾',
':man-firefighter:' => '👨🚒',
- ':man-health-worker:' => '👨⚕',
- ':man-judge:' => '👨⚖',
+ ':man-health-worker:' => '👨⚕️',
+ ':man-in-tuxedo:' => '🤵♂️',
+ ':man-judge:' => '👨⚖️',
':man-juggling:' => '🤹♂️',
':man-mechanic:' => '👨🔧',
':man-office-worker:' => '👨💼',
- ':man-pilot:' => '👨✈',
+ ':man-pilot:' => '👨✈️',
':man-playing-handball:' => '🤾♂️',
':man-playing-water-polo:' => '🤽♂️',
+ ':man-red-hair:' => '👨🦰',
':man-scientist:' => '👨🔬',
':man-shrugging:' => '🤷♂️',
':man-singer:' => '👨🎤',
':man-student:' => '👨🎓',
':man-teacher:' => '👨🏫',
':man-technologist:' => '👨💻',
+ ':man-white-hair:' => '👨🦳',
':man-with-veil:' => '👰♂️',
+ ':man-with-white-cane:' => '👨🦯',
':massage-man:' => '💆♂',
':massage-woman:' => '💆♀',
- ':men-wrestling:' => '🤼♂',
+ ':men-wrestling:' => '🤼♂️',
':mending-heart:' => '❤️🩹',
':mermaid:' => '🧜♀️',
':merman:' => '🧜♂️',
@@ -3197,6 +3045,7 @@
':person-curly-hair:' => '🧑🦱',
':person-red-hair:' => '🧑🦰',
':person-white-hair:' => '🧑🦳',
+ ':person-with-white-cane:' => '🧑🦯',
':pilot:' => '🧑✈️',
':pirate-flag:' => '🏴☠️',
':polar-bear:' => '🐻❄️',
@@ -3204,6 +3053,7 @@
':policewoman:' => '👮♀',
':pouting-man:' => '🙎♂',
':pouting-woman:' => '🙎♀',
+ ':rainbow-flag:' => '🏳️🌈',
':raising-hand-man:' => '🙋♂',
':raising-hand-woman:' => '🙋♀',
':rowing-man:' => '🚣♂',
@@ -3235,31 +3085,36 @@
':weight-lifting-woman:' => '🏋♀',
':woman-artist:' => '👩🎨',
':woman-astronaut:' => '👩🚀',
- ':woman-beard:' => '🧔♀',
+ ':woman-bald:' => '👩🦲',
+ ':woman-beard:' => '🧔♀️',
':woman-cartwheeling:' => '🤸♀️',
':woman-cook:' => '👩🍳',
+ ':woman-curly-hair:' => '👩🦱',
':woman-facepalming:' => '🤦♀️',
':woman-factory-worker:' => '👩🏭',
':woman-farmer:' => '👩🌾',
':woman-firefighter:' => '👩🚒',
- ':woman-health-worker:' => '👩⚕',
+ ':woman-health-worker:' => '👩⚕️',
':woman-in-tuxedo:' => '🤵♀️',
- ':woman-judge:' => '👩⚖',
+ ':woman-judge:' => '👩⚖️',
':woman-juggling:' => '🤹♀️',
':woman-mechanic:' => '👩🔧',
':woman-office-worker:' => '👩💼',
- ':woman-pilot:' => '👩✈',
+ ':woman-pilot:' => '👩✈️',
':woman-playing-handball:' => '🤾♀️',
':woman-playing-water-polo:' => '🤽♀️',
+ ':woman-red-hair:' => '👩🦰',
':woman-scientist:' => '👩🔬',
':woman-shrugging:' => '🤷♀️',
':woman-singer:' => '👩🎤',
':woman-student:' => '👩🎓',
':woman-teacher:' => '👩🏫',
':woman-technologist:' => '👩💻',
+ ':woman-white-hair:' => '👩🦳',
':woman-with-turban:' => '👳♀',
':woman-with-veil:' => '👰♀️',
- ':women-wrestling:' => '🤼♀',
+ ':woman-with-white-cane:' => '👩🦯',
+ ':women-wrestling:' => '🤼♀️',
':zombie-man:' => '🧟♂',
':zombie-woman:' => '🧟♀',
':broken-chain:' => '⛓️💥',
@@ -3348,6 +3203,354 @@
':woman-with-bunny-ears-partying:' => '👯♀️',
':woman-wrestling:' => '🤼♀️',
':women-with-bunny-ears-partying:' => '👯♀️',
+ ':artist-dark-skin-tone:' => '🧑🏿🎨',
+ ':artist-light-skin-tone:' => '🧑🏻🎨',
+ ':artist-medium-dark-skin-tone:' => '🧑🏾🎨',
+ ':artist-medium-light-skin-tone:' => '🧑🏼🎨',
+ ':artist-medium-skin-tone:' => '🧑🏽🎨',
+ ':astronaut-dark-skin-tone:' => '🧑🏿🚀',
+ ':astronaut-light-skin-tone:' => '🧑🏻🚀',
+ ':astronaut-medium-dark-skin-tone:' => '🧑🏾🚀',
+ ':astronaut-medium-light-skin-tone:' => '🧑🏼🚀',
+ ':astronaut-medium-skin-tone:' => '🧑🏽🚀',
+ ':cook-dark-skin-tone:' => '🧑🏿🍳',
+ ':cook-light-skin-tone:' => '🧑🏻🍳',
+ ':cook-medium-dark-skin-tone:' => '🧑🏾🍳',
+ ':cook-medium-light-skin-tone:' => '🧑🏼🍳',
+ ':cook-medium-skin-tone:' => '🧑🏽🍳',
+ ':factory-worker-dark-skin-tone:' => '🧑🏿🏭',
+ ':factory-worker-light-skin-tone:' => '🧑🏻🏭',
+ ':factory-worker-medium-dark-skin-tone:' => '🧑🏾🏭',
+ ':factory-worker-medium-light-skin-tone:' => '🧑🏼🏭',
+ ':factory-worker-medium-skin-tone:' => '🧑🏽🏭',
+ ':farmer-dark-skin-tone:' => '🧑🏿🌾',
+ ':farmer-light-skin-tone:' => '🧑🏻🌾',
+ ':farmer-medium-dark-skin-tone:' => '🧑🏾🌾',
+ ':farmer-medium-light-skin-tone:' => '🧑🏼🌾',
+ ':farmer-medium-skin-tone:' => '🧑🏽🌾',
+ ':firefighter-dark-skin-tone:' => '🧑🏿🚒',
+ ':firefighter-light-skin-tone:' => '🧑🏻🚒',
+ ':firefighter-medium-dark-skin-tone:' => '🧑🏾🚒',
+ ':firefighter-medium-light-skin-tone:' => '🧑🏼🚒',
+ ':firefighter-medium-skin-tone:' => '🧑🏽🚒',
+ ':gay-pride-flag:' => '🏳️🌈',
+ ':man-artist-dark-skin-tone:' => '👨🏿🎨',
+ ':man-artist-light-skin-tone:' => '👨🏻🎨',
+ ':man-artist-medium-dark-skin-tone:' => '👨🏾🎨',
+ ':man-artist-medium-light-skin-tone:' => '👨🏼🎨',
+ ':man-artist-medium-skin-tone:' => '👨🏽🎨',
+ ':man-astronaut-dark-skin-tone:' => '👨🏿🚀',
+ ':man-astronaut-light-skin-tone:' => '👨🏻🚀',
+ ':man-astronaut-medium-dark-skin-tone:' => '👨🏾🚀',
+ ':man-astronaut-medium-light-skin-tone:' => '👨🏼🚀',
+ ':man-astronaut-medium-skin-tone:' => '👨🏽🚀',
+ ':man-blond-hair:' => '👱♂️',
+ ':man-construction-worker:' => '👷♂️',
+ ':man-cook-dark-skin-tone:' => '👨🏿🍳',
+ ':man-cook-light-skin-tone:' => '👨🏻🍳',
+ ':man-cook-medium-dark-skin-tone:' => '👨🏾🍳',
+ ':man-cook-medium-light-skin-tone:' => '👨🏼🍳',
+ ':man-cook-medium-skin-tone:' => '👨🏽🍳',
+ ':man-dark-skin-tone-bald:' => '👨🏿🦲',
+ ':man-dark-skin-tone-curly-hair:' => '👨🏿🦱',
+ ':man-dark-skin-tone-red-hair:' => '👨🏿🦰',
+ ':man-dark-skin-tone-white-hair:' => '👨🏿🦳',
+ ':man-elf:' => '🧝♂️',
+ ':man-factory-worker-dark-skin-tone:' => '👨🏿🏭',
+ ':man-factory-worker-light-skin-tone:' => '👨🏻🏭',
+ ':man-factory-worker-medium-dark-skin-tone:' => '👨🏾🏭',
+ ':man-factory-worker-medium-light-skin-tone:' => '👨🏼🏭',
+ ':man-factory-worker-medium-skin-tone:' => '👨🏽🏭',
+ ':man-fairy:' => '🧚♂️',
+ ':man-farmer-dark-skin-tone:' => '👨🏿🌾',
+ ':man-farmer-light-skin-tone:' => '👨🏻🌾',
+ ':man-farmer-medium-dark-skin-tone:' => '👨🏾🌾',
+ ':man-farmer-medium-light-skin-tone:' => '👨🏼🌾',
+ ':man-farmer-medium-skin-tone:' => '👨🏽🌾',
+ ':man-feeding-baby-dark-skin-tone:' => '👨🏿🍼',
+ ':man-feeding-baby-light-skin-tone:' => '👨🏻🍼',
+ ':man-feeding-baby-medium-dark-skin-tone:' => '👨🏾🍼',
+ ':man-feeding-baby-medium-light-skin-tone:' => '👨🏼🍼',
+ ':man-feeding-baby-medium-skin-tone:' => '👨🏽🍼',
+ ':man-firefighter-dark-skin-tone:' => '👨🏿🚒',
+ ':man-firefighter-light-skin-tone:' => '👨🏻🚒',
+ ':man-firefighter-medium-dark-skin-tone:' => '👨🏾🚒',
+ ':man-firefighter-medium-light-skin-tone:' => '👨🏼🚒',
+ ':man-firefighter-medium-skin-tone:' => '👨🏽🚒',
+ ':man-genie:' => '🧞♂️',
+ ':man-guard:' => '💂♂️',
+ ':man-in-manual-wheelchair-dark-skin-tone:' => '👨🏿🦽',
+ ':man-in-manual-wheelchair-light-skin-tone:' => '👨🏻🦽',
+ ':man-in-manual-wheelchair-medium-dark-skin-tone:' => '👨🏾🦽',
+ ':man-in-manual-wheelchair-medium-light-skin-tone:' => '👨🏼🦽',
+ ':man-in-manual-wheelchair-medium-skin-tone:' => '👨🏽🦽',
+ ':man-in-motorized-wheelchair-dark-skin-tone:' => '👨🏿🦼',
+ ':man-in-motorized-wheelchair-light-skin-tone:' => '👨🏻🦼',
+ ':man-in-motorized-wheelchair-medium-dark-skin-tone:' => '👨🏾🦼',
+ ':man-in-motorized-wheelchair-medium-light-skin-tone:' => '👨🏼🦼',
+ ':man-in-motorized-wheelchair-medium-skin-tone:' => '👨🏽🦼',
+ ':man-light-skin-tone-bald:' => '👨🏻🦲',
+ ':man-light-skin-tone-curly-hair:' => '👨🏻🦱',
+ ':man-light-skin-tone-red-hair:' => '👨🏻🦰',
+ ':man-light-skin-tone-white-hair:' => '👨🏻🦳',
+ ':man-mage:' => '🧙♂️',
+ ':man-mechanic-dark-skin-tone:' => '👨🏿🔧',
+ ':man-mechanic-light-skin-tone:' => '👨🏻🔧',
+ ':man-mechanic-medium-dark-skin-tone:' => '👨🏾🔧',
+ ':man-mechanic-medium-light-skin-tone:' => '👨🏼🔧',
+ ':man-mechanic-medium-skin-tone:' => '👨🏽🔧',
+ ':man-medium-dark-skin-tone-bald:' => '👨🏾🦲',
+ ':man-medium-dark-skin-tone-curly-hair:' => '👨🏾🦱',
+ ':man-medium-dark-skin-tone-red-hair:' => '👨🏾🦰',
+ ':man-medium-dark-skin-tone-white-hair:' => '👨🏾🦳',
+ ':man-medium-light-skin-tone-bald:' => '👨🏼🦲',
+ ':man-medium-light-skin-tone-curly-hair:' => '👨🏼🦱',
+ ':man-medium-light-skin-tone-red-hair:' => '👨🏼🦰',
+ ':man-medium-light-skin-tone-white-hair:' => '👨🏼🦳',
+ ':man-medium-skin-tone-bald:' => '👨🏽🦲',
+ ':man-medium-skin-tone-curly-hair:' => '👨🏽🦱',
+ ':man-medium-skin-tone-red-hair:' => '👨🏽🦰',
+ ':man-medium-skin-tone-white-hair:' => '👨🏽🦳',
+ ':man-office-worker-dark-skin-tone:' => '👨🏿💼',
+ ':man-office-worker-light-skin-tone:' => '👨🏻💼',
+ ':man-office-worker-medium-dark-skin-tone:' => '👨🏾💼',
+ ':man-office-worker-medium-light-skin-tone:' => '👨🏼💼',
+ ':man-office-worker-medium-skin-tone:' => '👨🏽💼',
+ ':man-police-officer:' => '👮♂️',
+ ':man-scientist-dark-skin-tone:' => '👨🏿🔬',
+ ':man-scientist-light-skin-tone:' => '👨🏻🔬',
+ ':man-scientist-medium-dark-skin-tone:' => '👨🏾🔬',
+ ':man-scientist-medium-light-skin-tone:' => '👨🏼🔬',
+ ':man-scientist-medium-skin-tone:' => '👨🏽🔬',
+ ':man-singer-dark-skin-tone:' => '👨🏿🎤',
+ ':man-singer-light-skin-tone:' => '👨🏻🎤',
+ ':man-singer-medium-dark-skin-tone:' => '👨🏾🎤',
+ ':man-singer-medium-light-skin-tone:' => '👨🏼🎤',
+ ':man-singer-medium-skin-tone:' => '👨🏽🎤',
+ ':man-student-dark-skin-tone:' => '👨🏿🎓',
+ ':man-student-light-skin-tone:' => '👨🏻🎓',
+ ':man-student-medium-dark-skin-tone:' => '👨🏾🎓',
+ ':man-student-medium-light-skin-tone:' => '👨🏼🎓',
+ ':man-student-medium-skin-tone:' => '👨🏽🎓',
+ ':man-superhero:' => '🦸♂️',
+ ':man-supervillain:' => '🦹♂️',
+ ':man-teacher-dark-skin-tone:' => '👨🏿🏫',
+ ':man-teacher-light-skin-tone:' => '👨🏻🏫',
+ ':man-teacher-medium-dark-skin-tone:' => '👨🏾🏫',
+ ':man-teacher-medium-light-skin-tone:' => '👨🏼🏫',
+ ':man-teacher-medium-skin-tone:' => '👨🏽🏫',
+ ':man-technologist-dark-skin-tone:' => '👨🏿💻',
+ ':man-technologist-light-skin-tone:' => '👨🏻💻',
+ ':man-technologist-medium-dark-skin-tone:' => '👨🏾💻',
+ ':man-technologist-medium-light-skin-tone:' => '👨🏼💻',
+ ':man-technologist-medium-skin-tone:' => '👨🏽💻',
+ ':man-vampire:' => '🧛♂️',
+ ':man-with-white-cane-dark-skin-tone:' => '👨🏿🦯',
+ ':man-with-white-cane-light-skin-tone:' => '👨🏻🦯',
+ ':man-with-white-cane-medium-dark-skin-tone:' => '👨🏾🦯',
+ ':man-with-white-cane-medium-light-skin-tone:' => '👨🏼🦯',
+ ':man-with-white-cane-medium-skin-tone:' => '👨🏽🦯',
+ ':man-zombie:' => '🧟♂️',
+ ':mechanic-dark-skin-tone:' => '🧑🏿🔧',
+ ':mechanic-light-skin-tone:' => '🧑🏻🔧',
+ ':mechanic-medium-dark-skin-tone:' => '🧑🏾🔧',
+ ':mechanic-medium-light-skin-tone:' => '🧑🏼🔧',
+ ':mechanic-medium-skin-tone:' => '🧑🏽🔧',
+ ':men-with-bunny-ears:' => '👯♂️',
+ ':mx-claus-dark-skin-tone:' => '🧑🏿🎄',
+ ':mx-claus-light-skin-tone:' => '🧑🏻🎄',
+ ':mx-claus-medium-dark-skin-tone:' => '🧑🏾🎄',
+ ':mx-claus-medium-light-skin-tone:' => '🧑🏼🎄',
+ ':mx-claus-medium-skin-tone:' => '🧑🏽🎄',
+ ':office-worker-dark-skin-tone:' => '🧑🏿💼',
+ ':office-worker-light-skin-tone:' => '🧑🏻💼',
+ ':office-worker-medium-dark-skin-tone:' => '🧑🏾💼',
+ ':office-worker-medium-light-skin-tone:' => '🧑🏼💼',
+ ':office-worker-medium-skin-tone:' => '🧑🏽💼',
+ ':person-dark-skin-tone-bald:' => '🧑🏿🦲',
+ ':person-dark-skin-tone-curly-hair:' => '🧑🏿🦱',
+ ':person-dark-skin-tone-red-hair:' => '🧑🏿🦰',
+ ':person-dark-skin-tone-white-hair:' => '🧑🏿🦳',
+ ':person-feeding-baby-dark-skin-tone:' => '🧑🏿🍼',
+ ':person-feeding-baby-light-skin-tone:' => '🧑🏻🍼',
+ ':person-feeding-baby-medium-dark-skin-tone:' => '🧑🏾🍼',
+ ':person-feeding-baby-medium-light-skin-tone:' => '🧑🏼🍼',
+ ':person-feeding-baby-medium-skin-tone:' => '🧑🏽🍼',
+ ':person-in-manual-wheelchair-dark-skin-tone:' => '🧑🏿🦽',
+ ':person-in-manual-wheelchair-light-skin-tone:' => '🧑🏻🦽',
+ ':person-in-manual-wheelchair-medium-dark-skin-tone:' => '🧑🏾🦽',
+ ':person-in-manual-wheelchair-medium-light-skin-tone:' => '🧑🏼🦽',
+ ':person-in-manual-wheelchair-medium-skin-tone:' => '🧑🏽🦽',
+ ':person-in-motorized-wheelchair-dark-skin-tone:' => '🧑🏿🦼',
+ ':person-in-motorized-wheelchair-light-skin-tone:' => '🧑🏻🦼',
+ ':person-in-motorized-wheelchair-medium-dark-skin-tone:' => '🧑🏾🦼',
+ ':person-in-motorized-wheelchair-medium-light-skin-tone:' => '🧑🏼🦼',
+ ':person-in-motorized-wheelchair-medium-skin-tone:' => '🧑🏽🦼',
+ ':person-light-skin-tone-bald:' => '🧑🏻🦲',
+ ':person-light-skin-tone-curly-hair:' => '🧑🏻🦱',
+ ':person-light-skin-tone-red-hair:' => '🧑🏻🦰',
+ ':person-light-skin-tone-white-hair:' => '🧑🏻🦳',
+ ':person-medium-dark-skin-tone-bald:' => '🧑🏾🦲',
+ ':person-medium-dark-skin-tone-curly-hair:' => '🧑🏾🦱',
+ ':person-medium-dark-skin-tone-red-hair:' => '🧑🏾🦰',
+ ':person-medium-dark-skin-tone-white-hair:' => '🧑🏾🦳',
+ ':person-medium-light-skin-tone-bald:' => '🧑🏼🦲',
+ ':person-medium-light-skin-tone-curly-hair:' => '🧑🏼🦱',
+ ':person-medium-light-skin-tone-red-hair:' => '🧑🏼🦰',
+ ':person-medium-light-skin-tone-white-hair:' => '🧑🏼🦳',
+ ':person-medium-skin-tone-bald:' => '🧑🏽🦲',
+ ':person-medium-skin-tone-curly-hair:' => '🧑🏽🦱',
+ ':person-medium-skin-tone-red-hair:' => '🧑🏽🦰',
+ ':person-medium-skin-tone-white-hair:' => '🧑🏽🦳',
+ ':person-with-white-cane-dark-skin-tone:' => '🧑🏿🦯',
+ ':person-with-white-cane-light-skin-tone:' => '🧑🏻🦯',
+ ':person-with-white-cane-medium-dark-skin-tone:' => '🧑🏾🦯',
+ ':person-with-white-cane-medium-light-skin-tone:' => '🧑🏼🦯',
+ ':person-with-white-cane-medium-skin-tone:' => '🧑🏽🦯',
+ ':scientist-dark-skin-tone:' => '🧑🏿🔬',
+ ':scientist-light-skin-tone:' => '🧑🏻🔬',
+ ':scientist-medium-dark-skin-tone:' => '🧑🏾🔬',
+ ':scientist-medium-light-skin-tone:' => '🧑🏼🔬',
+ ':scientist-medium-skin-tone:' => '🧑🏽🔬',
+ ':singer-dark-skin-tone:' => '🧑🏿🎤',
+ ':singer-light-skin-tone:' => '🧑🏻🎤',
+ ':singer-medium-dark-skin-tone:' => '🧑🏾🎤',
+ ':singer-medium-light-skin-tone:' => '🧑🏼🎤',
+ ':singer-medium-skin-tone:' => '🧑🏽🎤',
+ ':student-dark-skin-tone:' => '🧑🏿🎓',
+ ':student-light-skin-tone:' => '🧑🏻🎓',
+ ':student-medium-dark-skin-tone:' => '🧑🏾🎓',
+ ':student-medium-light-skin-tone:' => '🧑🏼🎓',
+ ':student-medium-skin-tone:' => '🧑🏽🎓',
+ ':teacher-dark-skin-tone:' => '🧑🏿🏫',
+ ':teacher-light-skin-tone:' => '🧑🏻🏫',
+ ':teacher-medium-dark-skin-tone:' => '🧑🏾🏫',
+ ':teacher-medium-light-skin-tone:' => '🧑🏼🏫',
+ ':teacher-medium-skin-tone:' => '🧑🏽🏫',
+ ':technologist-dark-skin-tone:' => '🧑🏿💻',
+ ':technologist-light-skin-tone:' => '🧑🏻💻',
+ ':technologist-medium-dark-skin-tone:' => '🧑🏾💻',
+ ':technologist-medium-light-skin-tone:' => '🧑🏼💻',
+ ':technologist-medium-skin-tone:' => '🧑🏽💻',
+ ':woman-artist-dark-skin-tone:' => '👩🏿🎨',
+ ':woman-artist-light-skin-tone:' => '👩🏻🎨',
+ ':woman-artist-medium-dark-skin-tone:' => '👩🏾🎨',
+ ':woman-artist-medium-light-skin-tone:' => '👩🏼🎨',
+ ':woman-artist-medium-skin-tone:' => '👩🏽🎨',
+ ':woman-astronaut-dark-skin-tone:' => '👩🏿🚀',
+ ':woman-astronaut-light-skin-tone:' => '👩🏻🚀',
+ ':woman-astronaut-medium-dark-skin-tone:' => '👩🏾🚀',
+ ':woman-astronaut-medium-light-skin-tone:' => '👩🏼🚀',
+ ':woman-astronaut-medium-skin-tone:' => '👩🏽🚀',
+ ':woman-blond-hair:' => '👱♀️',
+ ':woman-construction-worker:' => '👷♀️',
+ ':woman-cook-dark-skin-tone:' => '👩🏿🍳',
+ ':woman-cook-light-skin-tone:' => '👩🏻🍳',
+ ':woman-cook-medium-dark-skin-tone:' => '👩🏾🍳',
+ ':woman-cook-medium-light-skin-tone:' => '👩🏼🍳',
+ ':woman-cook-medium-skin-tone:' => '👩🏽🍳',
+ ':woman-dark-skin-tone-bald:' => '👩🏿🦲',
+ ':woman-dark-skin-tone-curly-hair:' => '👩🏿🦱',
+ ':woman-dark-skin-tone-red-hair:' => '👩🏿🦰',
+ ':woman-dark-skin-tone-white-hair:' => '👩🏿🦳',
+ ':woman-elf:' => '🧝♀️',
+ ':woman-factory-worker-dark-skin-tone:' => '👩🏿🏭',
+ ':woman-factory-worker-light-skin-tone:' => '👩🏻🏭',
+ ':woman-factory-worker-medium-dark-skin-tone:' => '👩🏾🏭',
+ ':woman-factory-worker-medium-light-skin-tone:' => '👩🏼🏭',
+ ':woman-factory-worker-medium-skin-tone:' => '👩🏽🏭',
+ ':woman-fairy:' => '🧚♀️',
+ ':woman-farmer-dark-skin-tone:' => '👩🏿🌾',
+ ':woman-farmer-light-skin-tone:' => '👩🏻🌾',
+ ':woman-farmer-medium-dark-skin-tone:' => '👩🏾🌾',
+ ':woman-farmer-medium-light-skin-tone:' => '👩🏼🌾',
+ ':woman-farmer-medium-skin-tone:' => '👩🏽🌾',
+ ':woman-feeding-baby-dark-skin-tone:' => '👩🏿🍼',
+ ':woman-feeding-baby-light-skin-tone:' => '👩🏻🍼',
+ ':woman-feeding-baby-medium-dark-skin-tone:' => '👩🏾🍼',
+ ':woman-feeding-baby-medium-light-skin-tone:' => '👩🏼🍼',
+ ':woman-feeding-baby-medium-skin-tone:' => '👩🏽🍼',
+ ':woman-firefighter-dark-skin-tone:' => '👩🏿🚒',
+ ':woman-firefighter-light-skin-tone:' => '👩🏻🚒',
+ ':woman-firefighter-medium-dark-skin-tone:' => '👩🏾🚒',
+ ':woman-firefighter-medium-light-skin-tone:' => '👩🏼🚒',
+ ':woman-firefighter-medium-skin-tone:' => '👩🏽🚒',
+ ':woman-genie:' => '🧞♀️',
+ ':woman-guard:' => '💂♀️',
+ ':woman-in-manual-wheelchair-dark-skin-tone:' => '👩🏿🦽',
+ ':woman-in-manual-wheelchair-light-skin-tone:' => '👩🏻🦽',
+ ':woman-in-manual-wheelchair-medium-dark-skin-tone:' => '👩🏾🦽',
+ ':woman-in-manual-wheelchair-medium-light-skin-tone:' => '👩🏼🦽',
+ ':woman-in-manual-wheelchair-medium-skin-tone:' => '👩🏽🦽',
+ ':woman-in-motorized-wheelchair-dark-skin-tone:' => '👩🏿🦼',
+ ':woman-in-motorized-wheelchair-light-skin-tone:' => '👩🏻🦼',
+ ':woman-in-motorized-wheelchair-medium-dark-skin-tone:' => '👩🏾🦼',
+ ':woman-in-motorized-wheelchair-medium-light-skin-tone:' => '👩🏼🦼',
+ ':woman-in-motorized-wheelchair-medium-skin-tone:' => '👩🏽🦼',
+ ':woman-light-skin-tone-bald:' => '👩🏻🦲',
+ ':woman-light-skin-tone-curly-hair:' => '👩🏻🦱',
+ ':woman-light-skin-tone-red-hair:' => '👩🏻🦰',
+ ':woman-light-skin-tone-white-hair:' => '👩🏻🦳',
+ ':woman-mage:' => '🧙♀️',
+ ':woman-mechanic-dark-skin-tone:' => '👩🏿🔧',
+ ':woman-mechanic-light-skin-tone:' => '👩🏻🔧',
+ ':woman-mechanic-medium-dark-skin-tone:' => '👩🏾🔧',
+ ':woman-mechanic-medium-light-skin-tone:' => '👩🏼🔧',
+ ':woman-mechanic-medium-skin-tone:' => '👩🏽🔧',
+ ':woman-medium-dark-skin-tone-bald:' => '👩🏾🦲',
+ ':woman-medium-dark-skin-tone-curly-hair:' => '👩🏾🦱',
+ ':woman-medium-dark-skin-tone-red-hair:' => '👩🏾🦰',
+ ':woman-medium-dark-skin-tone-white-hair:' => '👩🏾🦳',
+ ':woman-medium-light-skin-tone-bald:' => '👩🏼🦲',
+ ':woman-medium-light-skin-tone-curly-hair:' => '👩🏼🦱',
+ ':woman-medium-light-skin-tone-red-hair:' => '👩🏼🦰',
+ ':woman-medium-light-skin-tone-white-hair:' => '👩🏼🦳',
+ ':woman-medium-skin-tone-bald:' => '👩🏽🦲',
+ ':woman-medium-skin-tone-curly-hair:' => '👩🏽🦱',
+ ':woman-medium-skin-tone-red-hair:' => '👩🏽🦰',
+ ':woman-medium-skin-tone-white-hair:' => '👩🏽🦳',
+ ':woman-office-worker-dark-skin-tone:' => '👩🏿💼',
+ ':woman-office-worker-light-skin-tone:' => '👩🏻💼',
+ ':woman-office-worker-medium-dark-skin-tone:' => '👩🏾💼',
+ ':woman-office-worker-medium-light-skin-tone:' => '👩🏼💼',
+ ':woman-office-worker-medium-skin-tone:' => '👩🏽💼',
+ ':woman-police-officer:' => '👮♀️',
+ ':woman-scientist-dark-skin-tone:' => '👩🏿🔬',
+ ':woman-scientist-light-skin-tone:' => '👩🏻🔬',
+ ':woman-scientist-medium-dark-skin-tone:' => '👩🏾🔬',
+ ':woman-scientist-medium-light-skin-tone:' => '👩🏼🔬',
+ ':woman-scientist-medium-skin-tone:' => '👩🏽🔬',
+ ':woman-singer-dark-skin-tone:' => '👩🏿🎤',
+ ':woman-singer-light-skin-tone:' => '👩🏻🎤',
+ ':woman-singer-medium-dark-skin-tone:' => '👩🏾🎤',
+ ':woman-singer-medium-light-skin-tone:' => '👩🏼🎤',
+ ':woman-singer-medium-skin-tone:' => '👩🏽🎤',
+ ':woman-student-dark-skin-tone:' => '👩🏿🎓',
+ ':woman-student-light-skin-tone:' => '👩🏻🎓',
+ ':woman-student-medium-dark-skin-tone:' => '👩🏾🎓',
+ ':woman-student-medium-light-skin-tone:' => '👩🏼🎓',
+ ':woman-student-medium-skin-tone:' => '👩🏽🎓',
+ ':woman-superhero:' => '🦸♀️',
+ ':woman-supervillain:' => '🦹♀️',
+ ':woman-teacher-dark-skin-tone:' => '👩🏿🏫',
+ ':woman-teacher-light-skin-tone:' => '👩🏻🏫',
+ ':woman-teacher-medium-dark-skin-tone:' => '👩🏾🏫',
+ ':woman-teacher-medium-light-skin-tone:' => '👩🏼🏫',
+ ':woman-teacher-medium-skin-tone:' => '👩🏽🏫',
+ ':woman-technologist-dark-skin-tone:' => '👩🏿💻',
+ ':woman-technologist-light-skin-tone:' => '👩🏻💻',
+ ':woman-technologist-medium-dark-skin-tone:' => '👩🏾💻',
+ ':woman-technologist-medium-light-skin-tone:' => '👩🏼💻',
+ ':woman-technologist-medium-skin-tone:' => '👩🏽💻',
+ ':woman-vampire:' => '🧛♀️',
+ ':woman-with-white-cane-dark-skin-tone:' => '👩🏿🦯',
+ ':woman-with-white-cane-light-skin-tone:' => '👩🏻🦯',
+ ':woman-with-white-cane-medium-dark-skin-tone:' => '👩🏾🦯',
+ ':woman-with-white-cane-medium-light-skin-tone:' => '👩🏼🦯',
+ ':woman-with-white-cane-medium-skin-tone:' => '👩🏽🦯',
+ ':woman-zombie:' => '🧟♀️',
+ ':women-with-bunny-ears:' => '👯♀️',
+ ':eye-in-speech-bubble:' => '👁️🗨️',
':family-adult-adult-child:' => '🧑🧑🧒',
':family-adult-child-child:' => '🧑🧒🧒',
':man-bouncing-ball:' => '⛹️♂️',
@@ -3370,8 +3573,18 @@
':woman-woman-boy:' => '👩👩👦',
':woman-woman-girl:' => '👩👩👧',
':couple-with-heart-man-man:' => '👨❤👨',
- ':couple-with-heart-woman-man:' => '👩❤👨',
+ ':couple-with-heart-woman-man:' => '👩❤️👨',
':couple-with-heart-woman-woman:' => '👩❤👩',
+ ':deaf-man-dark-skin-tone:' => '🧏🏿♂️',
+ ':deaf-man-light-skin-tone:' => '🧏🏻♂️',
+ ':deaf-man-medium-dark-skin-tone:' => '🧏🏾♂️',
+ ':deaf-man-medium-light-skin-tone:' => '🧏🏼♂️',
+ ':deaf-man-medium-skin-tone:' => '🧏🏽♂️',
+ ':deaf-woman-dark-skin-tone:' => '🧏🏿♀️',
+ ':deaf-woman-light-skin-tone:' => '🧏🏻♀️',
+ ':deaf-woman-medium-dark-skin-tone:' => '🧏🏾♀️',
+ ':deaf-woman-medium-light-skin-tone:' => '🧏🏼♀️',
+ ':deaf-woman-medium-skin-tone:' => '🧏🏽♀️',
':family-man-boy-boy:' => '👨👦👦',
':family-man-girl-boy:' => '👨👧👦',
':family-man-girl-girl:' => '👨👧👧',
@@ -3389,8 +3602,548 @@
':family-woman-woman-girl:' => '👩👩👧',
':family-wwb:' => '👩👩👦',
':family-wwg:' => '👩👩👧',
- ':couple-with-heart-mm:' => '👨❤️👨',
- ':couple-with-heart-ww:' => '👩❤️👩',
+ ':handshake-dark-skin-tone-light-skin-tone:' => '🫱🏿🫲🏻',
+ ':handshake-dark-skin-tone-medium-dark-skin-tone:' => '🫱🏿🫲🏾',
+ ':handshake-dark-skin-tone-medium-light-skin-tone:' => '🫱🏿🫲🏼',
+ ':handshake-dark-skin-tone-medium-skin-tone:' => '🫱🏿🫲🏽',
+ ':handshake-light-skin-tone-dark-skin-tone:' => '🫱🏻🫲🏿',
+ ':handshake-light-skin-tone-medium-dark-skin-tone:' => '🫱🏻🫲🏾',
+ ':handshake-light-skin-tone-medium-light-skin-tone:' => '🫱🏻🫲🏼',
+ ':handshake-light-skin-tone-medium-skin-tone:' => '🫱🏻🫲🏽',
+ ':handshake-medium-dark-skin-tone-dark-skin-tone:' => '🫱🏾🫲🏿',
+ ':handshake-medium-dark-skin-tone-light-skin-tone:' => '🫱🏾🫲🏻',
+ ':handshake-medium-dark-skin-tone-medium-light-skin-tone:' => '🫱🏾🫲🏼',
+ ':handshake-medium-dark-skin-tone-medium-skin-tone:' => '🫱🏾🫲🏽',
+ ':handshake-medium-light-skin-tone-dark-skin-tone:' => '🫱🏼🫲🏿',
+ ':handshake-medium-light-skin-tone-light-skin-tone:' => '🫱🏼🫲🏻',
+ ':handshake-medium-light-skin-tone-medium-dark-skin-tone:' => '🫱🏼🫲🏾',
+ ':handshake-medium-light-skin-tone-medium-skin-tone:' => '🫱🏼🫲🏽',
+ ':handshake-medium-skin-tone-dark-skin-tone:' => '🫱🏽🫲🏿',
+ ':handshake-medium-skin-tone-light-skin-tone:' => '🫱🏽🫲🏻',
+ ':handshake-medium-skin-tone-medium-dark-skin-tone:' => '🫱🏽🫲🏾',
+ ':handshake-medium-skin-tone-medium-light-skin-tone:' => '🫱🏽🫲🏼',
+ ':health-worker-dark-skin-tone:' => '🧑🏿⚕️',
+ ':health-worker-light-skin-tone:' => '🧑🏻⚕️',
+ ':health-worker-medium-dark-skin-tone:' => '🧑🏾⚕️',
+ ':health-worker-medium-light-skin-tone:' => '🧑🏼⚕️',
+ ':health-worker-medium-skin-tone:' => '🧑🏽⚕️',
+ ':judge-dark-skin-tone:' => '🧑🏿⚖️',
+ ':judge-light-skin-tone:' => '🧑🏻⚖️',
+ ':judge-medium-dark-skin-tone:' => '🧑🏾⚖️',
+ ':judge-medium-light-skin-tone:' => '🧑🏼⚖️',
+ ':judge-medium-skin-tone:' => '🧑🏽⚖️',
+ ':man-biking-dark-skin-tone:' => '🚴🏿♂️',
+ ':man-biking-light-skin-tone:' => '🚴🏻♂️',
+ ':man-biking-medium-dark-skin-tone:' => '🚴🏾♂️',
+ ':man-biking-medium-light-skin-tone:' => '🚴🏼♂️',
+ ':man-biking-medium-skin-tone:' => '🚴🏽♂️',
+ ':man-bouncing-ball-dark-skin-tone:' => '⛹🏿♂️',
+ ':man-bouncing-ball-light-skin-tone:' => '⛹🏻♂️',
+ ':man-bouncing-ball-medium-dark-skin-tone:' => '⛹🏾♂️',
+ ':man-bouncing-ball-medium-light-skin-tone:' => '⛹🏼♂️',
+ ':man-bouncing-ball-medium-skin-tone:' => '⛹🏽♂️',
+ ':man-bowing-dark-skin-tone:' => '🙇🏿♂️',
+ ':man-bowing-light-skin-tone:' => '🙇🏻♂️',
+ ':man-bowing-medium-dark-skin-tone:' => '🙇🏾♂️',
+ ':man-bowing-medium-light-skin-tone:' => '🙇🏼♂️',
+ ':man-bowing-medium-skin-tone:' => '🙇🏽♂️',
+ ':man-cartwheeling-dark-skin-tone:' => '🤸🏿♂️',
+ ':man-cartwheeling-light-skin-tone:' => '🤸🏻♂️',
+ ':man-cartwheeling-medium-dark-skin-tone:' => '🤸🏾♂️',
+ ':man-cartwheeling-medium-light-skin-tone:' => '🤸🏼♂️',
+ ':man-cartwheeling-medium-skin-tone:' => '🤸🏽♂️',
+ ':man-climbing-dark-skin-tone:' => '🧗🏿♂️',
+ ':man-climbing-light-skin-tone:' => '🧗🏻♂️',
+ ':man-climbing-medium-dark-skin-tone:' => '🧗🏾♂️',
+ ':man-climbing-medium-light-skin-tone:' => '🧗🏼♂️',
+ ':man-climbing-medium-skin-tone:' => '🧗🏽♂️',
+ ':man-construction-worker-dark-skin-tone:' => '👷🏿♂️',
+ ':man-construction-worker-light-skin-tone:' => '👷🏻♂️',
+ ':man-construction-worker-medium-dark-skin-tone:' => '👷🏾♂️',
+ ':man-construction-worker-medium-light-skin-tone:' => '👷🏼♂️',
+ ':man-construction-worker-medium-skin-tone:' => '👷🏽♂️',
+ ':man-dark-skin-tone-beard:' => '🧔🏿♂️',
+ ':man-dark-skin-tone-blond-hair:' => '👱🏿♂️',
+ ':man-detective:' => '🕵️♂️',
+ ':man-detective-dark-skin-tone:' => '🕵🏿♂️',
+ ':man-detective-light-skin-tone:' => '🕵🏻♂️',
+ ':man-detective-medium-dark-skin-tone:' => '🕵🏾♂️',
+ ':man-detective-medium-light-skin-tone:' => '🕵🏼♂️',
+ ':man-detective-medium-skin-tone:' => '🕵🏽♂️',
+ ':man-elf-dark-skin-tone:' => '🧝🏿♂️',
+ ':man-elf-light-skin-tone:' => '🧝🏻♂️',
+ ':man-elf-medium-dark-skin-tone:' => '🧝🏾♂️',
+ ':man-elf-medium-light-skin-tone:' => '🧝🏼♂️',
+ ':man-elf-medium-skin-tone:' => '🧝🏽♂️',
+ ':man-facepalming-dark-skin-tone:' => '🤦🏿♂️',
+ ':man-facepalming-light-skin-tone:' => '🤦🏻♂️',
+ ':man-facepalming-medium-dark-skin-tone:' => '🤦🏾♂️',
+ ':man-facepalming-medium-light-skin-tone:' => '🤦🏼♂️',
+ ':man-facepalming-medium-skin-tone:' => '🤦🏽♂️',
+ ':man-fairy-dark-skin-tone:' => '🧚🏿♂️',
+ ':man-fairy-light-skin-tone:' => '🧚🏻♂️',
+ ':man-fairy-medium-dark-skin-tone:' => '🧚🏾♂️',
+ ':man-fairy-medium-light-skin-tone:' => '🧚🏼♂️',
+ ':man-fairy-medium-skin-tone:' => '🧚🏽♂️',
+ ':man-frowning-dark-skin-tone:' => '🙍🏿♂️',
+ ':man-frowning-light-skin-tone:' => '🙍🏻♂️',
+ ':man-frowning-medium-dark-skin-tone:' => '🙍🏾♂️',
+ ':man-frowning-medium-light-skin-tone:' => '🙍🏼♂️',
+ ':man-frowning-medium-skin-tone:' => '🙍🏽♂️',
+ ':man-gesturing-no-dark-skin-tone:' => '🙅🏿♂️',
+ ':man-gesturing-no-light-skin-tone:' => '🙅🏻♂️',
+ ':man-gesturing-no-medium-dark-skin-tone:' => '🙅🏾♂️',
+ ':man-gesturing-no-medium-light-skin-tone:' => '🙅🏼♂️',
+ ':man-gesturing-no-medium-skin-tone:' => '🙅🏽♂️',
+ ':man-gesturing-ok-dark-skin-tone:' => '🙆🏿♂️',
+ ':man-gesturing-ok-light-skin-tone:' => '🙆🏻♂️',
+ ':man-gesturing-ok-medium-dark-skin-tone:' => '🙆🏾♂️',
+ ':man-gesturing-ok-medium-light-skin-tone:' => '🙆🏼♂️',
+ ':man-gesturing-ok-medium-skin-tone:' => '🙆🏽♂️',
+ ':man-getting-haircut-dark-skin-tone:' => '💇🏿♂️',
+ ':man-getting-haircut-light-skin-tone:' => '💇🏻♂️',
+ ':man-getting-haircut-medium-dark-skin-tone:' => '💇🏾♂️',
+ ':man-getting-haircut-medium-light-skin-tone:' => '💇🏼♂️',
+ ':man-getting-haircut-medium-skin-tone:' => '💇🏽♂️',
+ ':man-getting-massage-dark-skin-tone:' => '💆🏿♂️',
+ ':man-getting-massage-light-skin-tone:' => '💆🏻♂️',
+ ':man-getting-massage-medium-dark-skin-tone:' => '💆🏾♂️',
+ ':man-getting-massage-medium-light-skin-tone:' => '💆🏼♂️',
+ ':man-getting-massage-medium-skin-tone:' => '💆🏽♂️',
+ ':man-golfing-dark-skin-tone:' => '🏌🏿♂️',
+ ':man-golfing-light-skin-tone:' => '🏌🏻♂️',
+ ':man-golfing-medium-dark-skin-tone:' => '🏌🏾♂️',
+ ':man-golfing-medium-light-skin-tone:' => '🏌🏼♂️',
+ ':man-golfing-medium-skin-tone:' => '🏌🏽♂️',
+ ':man-guard-dark-skin-tone:' => '💂🏿♂️',
+ ':man-guard-light-skin-tone:' => '💂🏻♂️',
+ ':man-guard-medium-dark-skin-tone:' => '💂🏾♂️',
+ ':man-guard-medium-light-skin-tone:' => '💂🏼♂️',
+ ':man-guard-medium-skin-tone:' => '💂🏽♂️',
+ ':man-health-worker-dark-skin-tone:' => '👨🏿⚕️',
+ ':man-health-worker-light-skin-tone:' => '👨🏻⚕️',
+ ':man-health-worker-medium-dark-skin-tone:' => '👨🏾⚕️',
+ ':man-health-worker-medium-light-skin-tone:' => '👨🏼⚕️',
+ ':man-health-worker-medium-skin-tone:' => '👨🏽⚕️',
+ ':man-in-lotus-position-dark-skin-tone:' => '🧘🏿♂️',
+ ':man-in-lotus-position-light-skin-tone:' => '🧘🏻♂️',
+ ':man-in-lotus-position-medium-dark-skin-tone:' => '🧘🏾♂️',
+ ':man-in-lotus-position-medium-light-skin-tone:' => '🧘🏼♂️',
+ ':man-in-lotus-position-medium-skin-tone:' => '🧘🏽♂️',
+ ':man-in-steamy-room-dark-skin-tone:' => '🧖🏿♂️',
+ ':man-in-steamy-room-light-skin-tone:' => '🧖🏻♂️',
+ ':man-in-steamy-room-medium-dark-skin-tone:' => '🧖🏾♂️',
+ ':man-in-steamy-room-medium-light-skin-tone:' => '🧖🏼♂️',
+ ':man-in-steamy-room-medium-skin-tone:' => '🧖🏽♂️',
+ ':man-in-tuxedo-dark-skin-tone:' => '🤵🏿♂️',
+ ':man-in-tuxedo-light-skin-tone:' => '🤵🏻♂️',
+ ':man-in-tuxedo-medium-dark-skin-tone:' => '🤵🏾♂️',
+ ':man-in-tuxedo-medium-light-skin-tone:' => '🤵🏼♂️',
+ ':man-in-tuxedo-medium-skin-tone:' => '🤵🏽♂️',
+ ':man-judge-dark-skin-tone:' => '👨🏿⚖️',
+ ':man-judge-light-skin-tone:' => '👨🏻⚖️',
+ ':man-judge-medium-dark-skin-tone:' => '👨🏾⚖️',
+ ':man-judge-medium-light-skin-tone:' => '👨🏼⚖️',
+ ':man-judge-medium-skin-tone:' => '👨🏽⚖️',
+ ':man-juggling-dark-skin-tone:' => '🤹🏿♂️',
+ ':man-juggling-light-skin-tone:' => '🤹🏻♂️',
+ ':man-juggling-medium-dark-skin-tone:' => '🤹🏾♂️',
+ ':man-juggling-medium-light-skin-tone:' => '🤹🏼♂️',
+ ':man-juggling-medium-skin-tone:' => '🤹🏽♂️',
+ ':man-kneeling-dark-skin-tone:' => '🧎🏿♂️',
+ ':man-kneeling-light-skin-tone:' => '🧎🏻♂️',
+ ':man-kneeling-medium-dark-skin-tone:' => '🧎🏾♂️',
+ ':man-kneeling-medium-light-skin-tone:' => '🧎🏼♂️',
+ ':man-kneeling-medium-skin-tone:' => '🧎🏽♂️',
+ ':man-lifting-weights-dark-skin-tone:' => '🏋🏿♂️',
+ ':man-lifting-weights-light-skin-tone:' => '🏋🏻♂️',
+ ':man-lifting-weights-medium-dark-skin-tone:' => '🏋🏾♂️',
+ ':man-lifting-weights-medium-light-skin-tone:' => '🏋🏼♂️',
+ ':man-lifting-weights-medium-skin-tone:' => '🏋🏽♂️',
+ ':man-light-skin-tone-beard:' => '🧔🏻♂️',
+ ':man-light-skin-tone-blond-hair:' => '👱🏻♂️',
+ ':man-mage-dark-skin-tone:' => '🧙🏿♂️',
+ ':man-mage-light-skin-tone:' => '🧙🏻♂️',
+ ':man-mage-medium-dark-skin-tone:' => '🧙🏾♂️',
+ ':man-mage-medium-light-skin-tone:' => '🧙🏼♂️',
+ ':man-mage-medium-skin-tone:' => '🧙🏽♂️',
+ ':man-medium-dark-skin-tone-beard:' => '🧔🏾♂️',
+ ':man-medium-dark-skin-tone-blond-hair:' => '👱🏾♂️',
+ ':man-medium-light-skin-tone-beard:' => '🧔🏼♂️',
+ ':man-medium-light-skin-tone-blond-hair:' => '👱🏼♂️',
+ ':man-medium-skin-tone-beard:' => '🧔🏽♂️',
+ ':man-medium-skin-tone-blond-hair:' => '👱🏽♂️',
+ ':man-mountain-biking-dark-skin-tone:' => '🚵🏿♂️',
+ ':man-mountain-biking-light-skin-tone:' => '🚵🏻♂️',
+ ':man-mountain-biking-medium-dark-skin-tone:' => '🚵🏾♂️',
+ ':man-mountain-biking-medium-light-skin-tone:' => '🚵🏼♂️',
+ ':man-mountain-biking-medium-skin-tone:' => '🚵🏽♂️',
+ ':man-pilot-dark-skin-tone:' => '👨🏿✈️',
+ ':man-pilot-light-skin-tone:' => '👨🏻✈️',
+ ':man-pilot-medium-dark-skin-tone:' => '👨🏾✈️',
+ ':man-pilot-medium-light-skin-tone:' => '👨🏼✈️',
+ ':man-pilot-medium-skin-tone:' => '👨🏽✈️',
+ ':man-playing-handball-dark-skin-tone:' => '🤾🏿♂️',
+ ':man-playing-handball-light-skin-tone:' => '🤾🏻♂️',
+ ':man-playing-handball-medium-dark-skin-tone:' => '🤾🏾♂️',
+ ':man-playing-handball-medium-light-skin-tone:' => '🤾🏼♂️',
+ ':man-playing-handball-medium-skin-tone:' => '🤾🏽♂️',
+ ':man-playing-water-polo-dark-skin-tone:' => '🤽🏿♂️',
+ ':man-playing-water-polo-light-skin-tone:' => '🤽🏻♂️',
+ ':man-playing-water-polo-medium-dark-skin-tone:' => '🤽🏾♂️',
+ ':man-playing-water-polo-medium-light-skin-tone:' => '🤽🏼♂️',
+ ':man-playing-water-polo-medium-skin-tone:' => '🤽🏽♂️',
+ ':man-police-officer-dark-skin-tone:' => '👮🏿♂️',
+ ':man-police-officer-light-skin-tone:' => '👮🏻♂️',
+ ':man-police-officer-medium-dark-skin-tone:' => '👮🏾♂️',
+ ':man-police-officer-medium-light-skin-tone:' => '👮🏼♂️',
+ ':man-police-officer-medium-skin-tone:' => '👮🏽♂️',
+ ':man-pouting-dark-skin-tone:' => '🙎🏿♂️',
+ ':man-pouting-light-skin-tone:' => '🙎🏻♂️',
+ ':man-pouting-medium-dark-skin-tone:' => '🙎🏾♂️',
+ ':man-pouting-medium-light-skin-tone:' => '🙎🏼♂️',
+ ':man-pouting-medium-skin-tone:' => '🙎🏽♂️',
+ ':man-raising-hand-dark-skin-tone:' => '🙋🏿♂️',
+ ':man-raising-hand-light-skin-tone:' => '🙋🏻♂️',
+ ':man-raising-hand-medium-dark-skin-tone:' => '🙋🏾♂️',
+ ':man-raising-hand-medium-light-skin-tone:' => '🙋🏼♂️',
+ ':man-raising-hand-medium-skin-tone:' => '🙋🏽♂️',
+ ':man-rowing-boat-dark-skin-tone:' => '🚣🏿♂️',
+ ':man-rowing-boat-light-skin-tone:' => '🚣🏻♂️',
+ ':man-rowing-boat-medium-dark-skin-tone:' => '🚣🏾♂️',
+ ':man-rowing-boat-medium-light-skin-tone:' => '🚣🏼♂️',
+ ':man-rowing-boat-medium-skin-tone:' => '🚣🏽♂️',
+ ':man-running-dark-skin-tone:' => '🏃🏿♂️',
+ ':man-running-light-skin-tone:' => '🏃🏻♂️',
+ ':man-running-medium-dark-skin-tone:' => '🏃🏾♂️',
+ ':man-running-medium-light-skin-tone:' => '🏃🏼♂️',
+ ':man-running-medium-skin-tone:' => '🏃🏽♂️',
+ ':man-shrugging-dark-skin-tone:' => '🤷🏿♂️',
+ ':man-shrugging-light-skin-tone:' => '🤷🏻♂️',
+ ':man-shrugging-medium-dark-skin-tone:' => '🤷🏾♂️',
+ ':man-shrugging-medium-light-skin-tone:' => '🤷🏼♂️',
+ ':man-shrugging-medium-skin-tone:' => '🤷🏽♂️',
+ ':man-standing-dark-skin-tone:' => '🧍🏿♂️',
+ ':man-standing-light-skin-tone:' => '🧍🏻♂️',
+ ':man-standing-medium-dark-skin-tone:' => '🧍🏾♂️',
+ ':man-standing-medium-light-skin-tone:' => '🧍🏼♂️',
+ ':man-standing-medium-skin-tone:' => '🧍🏽♂️',
+ ':man-superhero-dark-skin-tone:' => '🦸🏿♂️',
+ ':man-superhero-light-skin-tone:' => '🦸🏻♂️',
+ ':man-superhero-medium-dark-skin-tone:' => '🦸🏾♂️',
+ ':man-superhero-medium-light-skin-tone:' => '🦸🏼♂️',
+ ':man-superhero-medium-skin-tone:' => '🦸🏽♂️',
+ ':man-supervillain-dark-skin-tone:' => '🦹🏿♂️',
+ ':man-supervillain-light-skin-tone:' => '🦹🏻♂️',
+ ':man-supervillain-medium-dark-skin-tone:' => '🦹🏾♂️',
+ ':man-supervillain-medium-light-skin-tone:' => '🦹🏼♂️',
+ ':man-supervillain-medium-skin-tone:' => '🦹🏽♂️',
+ ':man-surfing-dark-skin-tone:' => '🏄🏿♂️',
+ ':man-surfing-light-skin-tone:' => '🏄🏻♂️',
+ ':man-surfing-medium-dark-skin-tone:' => '🏄🏾♂️',
+ ':man-surfing-medium-light-skin-tone:' => '🏄🏼♂️',
+ ':man-surfing-medium-skin-tone:' => '🏄🏽♂️',
+ ':man-swimming-dark-skin-tone:' => '🏊🏿♂️',
+ ':man-swimming-light-skin-tone:' => '🏊🏻♂️',
+ ':man-swimming-medium-dark-skin-tone:' => '🏊🏾♂️',
+ ':man-swimming-medium-light-skin-tone:' => '🏊🏼♂️',
+ ':man-swimming-medium-skin-tone:' => '🏊🏽♂️',
+ ':man-tipping-hand-dark-skin-tone:' => '💁🏿♂️',
+ ':man-tipping-hand-light-skin-tone:' => '💁🏻♂️',
+ ':man-tipping-hand-medium-dark-skin-tone:' => '💁🏾♂️',
+ ':man-tipping-hand-medium-light-skin-tone:' => '💁🏼♂️',
+ ':man-tipping-hand-medium-skin-tone:' => '💁🏽♂️',
+ ':man-vampire-dark-skin-tone:' => '🧛🏿♂️',
+ ':man-vampire-light-skin-tone:' => '🧛🏻♂️',
+ ':man-vampire-medium-dark-skin-tone:' => '🧛🏾♂️',
+ ':man-vampire-medium-light-skin-tone:' => '🧛🏼♂️',
+ ':man-vampire-medium-skin-tone:' => '🧛🏽♂️',
+ ':man-walking-dark-skin-tone:' => '🚶🏿♂️',
+ ':man-walking-light-skin-tone:' => '🚶🏻♂️',
+ ':man-walking-medium-dark-skin-tone:' => '🚶🏾♂️',
+ ':man-walking-medium-light-skin-tone:' => '🚶🏼♂️',
+ ':man-walking-medium-skin-tone:' => '🚶🏽♂️',
+ ':man-wearing-turban-dark-skin-tone:' => '👳🏿♂️',
+ ':man-wearing-turban-light-skin-tone:' => '👳🏻♂️',
+ ':man-wearing-turban-medium-dark-skin-tone:' => '👳🏾♂️',
+ ':man-wearing-turban-medium-light-skin-tone:' => '👳🏼♂️',
+ ':man-wearing-turban-medium-skin-tone:' => '👳🏽♂️',
+ ':man-with-veil-dark-skin-tone:' => '👰🏿♂️',
+ ':man-with-veil-light-skin-tone:' => '👰🏻♂️',
+ ':man-with-veil-medium-dark-skin-tone:' => '👰🏾♂️',
+ ':man-with-veil-medium-light-skin-tone:' => '👰🏼♂️',
+ ':man-with-veil-medium-skin-tone:' => '👰🏽♂️',
+ ':mermaid-dark-skin-tone:' => '🧜🏿♀️',
+ ':mermaid-light-skin-tone:' => '🧜🏻♀️',
+ ':mermaid-medium-dark-skin-tone:' => '🧜🏾♀️',
+ ':mermaid-medium-light-skin-tone:' => '🧜🏼♀️',
+ ':mermaid-medium-skin-tone:' => '🧜🏽♀️',
+ ':merman-dark-skin-tone:' => '🧜🏿♂️',
+ ':merman-light-skin-tone:' => '🧜🏻♂️',
+ ':merman-medium-dark-skin-tone:' => '🧜🏾♂️',
+ ':merman-medium-light-skin-tone:' => '🧜🏼♂️',
+ ':merman-medium-skin-tone:' => '🧜🏽♂️',
+ ':person-kneeling-facing-right-dark-skin-tone:' => '🧎🏿➡️',
+ ':person-kneeling-facing-right-light-skin-tone:' => '🧎🏻➡️',
+ ':person-kneeling-facing-right-medium-dark-skin-tone:' => '🧎🏾➡️',
+ ':person-kneeling-facing-right-medium-light-skin-tone:' => '🧎🏼➡️',
+ ':person-kneeling-facing-right-medium-skin-tone:' => '🧎🏽➡️',
+ ':person-running-facing-right-dark-skin-tone:' => '🏃🏿➡️',
+ ':person-running-facing-right-light-skin-tone:' => '🏃🏻➡️',
+ ':person-running-facing-right-medium-dark-skin-tone:' => '🏃🏾➡️',
+ ':person-running-facing-right-medium-light-skin-tone:' => '🏃🏼➡️',
+ ':person-running-facing-right-medium-skin-tone:' => '🏃🏽➡️',
+ ':person-walking-facing-right-dark-skin-tone:' => '🚶🏿➡️',
+ ':person-walking-facing-right-light-skin-tone:' => '🚶🏻➡️',
+ ':person-walking-facing-right-medium-dark-skin-tone:' => '🚶🏾➡️',
+ ':person-walking-facing-right-medium-light-skin-tone:' => '🚶🏼➡️',
+ ':person-walking-facing-right-medium-skin-tone:' => '🚶🏽➡️',
+ ':pilot-dark-skin-tone:' => '🧑🏿✈️',
+ ':pilot-light-skin-tone:' => '🧑🏻✈️',
+ ':pilot-medium-dark-skin-tone:' => '🧑🏾✈️',
+ ':pilot-medium-light-skin-tone:' => '🧑🏼✈️',
+ ':pilot-medium-skin-tone:' => '🧑🏽✈️',
+ ':woman-biking-dark-skin-tone:' => '🚴🏿♀️',
+ ':woman-biking-light-skin-tone:' => '🚴🏻♀️',
+ ':woman-biking-medium-dark-skin-tone:' => '🚴🏾♀️',
+ ':woman-biking-medium-light-skin-tone:' => '🚴🏼♀️',
+ ':woman-biking-medium-skin-tone:' => '🚴🏽♀️',
+ ':woman-bouncing-ball-dark-skin-tone:' => '⛹🏿♀️',
+ ':woman-bouncing-ball-light-skin-tone:' => '⛹🏻♀️',
+ ':woman-bouncing-ball-medium-dark-skin-tone:' => '⛹🏾♀️',
+ ':woman-bouncing-ball-medium-light-skin-tone:' => '⛹🏼♀️',
+ ':woman-bouncing-ball-medium-skin-tone:' => '⛹🏽♀️',
+ ':woman-bowing-dark-skin-tone:' => '🙇🏿♀️',
+ ':woman-bowing-light-skin-tone:' => '🙇🏻♀️',
+ ':woman-bowing-medium-dark-skin-tone:' => '🙇🏾♀️',
+ ':woman-bowing-medium-light-skin-tone:' => '🙇🏼♀️',
+ ':woman-bowing-medium-skin-tone:' => '🙇🏽♀️',
+ ':woman-cartwheeling-dark-skin-tone:' => '🤸🏿♀️',
+ ':woman-cartwheeling-light-skin-tone:' => '🤸🏻♀️',
+ ':woman-cartwheeling-medium-dark-skin-tone:' => '🤸🏾♀️',
+ ':woman-cartwheeling-medium-light-skin-tone:' => '🤸🏼♀️',
+ ':woman-cartwheeling-medium-skin-tone:' => '🤸🏽♀️',
+ ':woman-climbing-dark-skin-tone:' => '🧗🏿♀️',
+ ':woman-climbing-light-skin-tone:' => '🧗🏻♀️',
+ ':woman-climbing-medium-dark-skin-tone:' => '🧗🏾♀️',
+ ':woman-climbing-medium-light-skin-tone:' => '🧗🏼♀️',
+ ':woman-climbing-medium-skin-tone:' => '🧗🏽♀️',
+ ':woman-construction-worker-dark-skin-tone:' => '👷🏿♀️',
+ ':woman-construction-worker-light-skin-tone:' => '👷🏻♀️',
+ ':woman-construction-worker-medium-dark-skin-tone:' => '👷🏾♀️',
+ ':woman-construction-worker-medium-light-skin-tone:' => '👷🏼♀️',
+ ':woman-construction-worker-medium-skin-tone:' => '👷🏽♀️',
+ ':woman-dark-skin-tone-beard:' => '🧔🏿♀️',
+ ':woman-dark-skin-tone-blond-hair:' => '👱🏿♀️',
+ ':woman-detective:' => '🕵️♀️',
+ ':woman-detective-dark-skin-tone:' => '🕵🏿♀️',
+ ':woman-detective-light-skin-tone:' => '🕵🏻♀️',
+ ':woman-detective-medium-dark-skin-tone:' => '🕵🏾♀️',
+ ':woman-detective-medium-light-skin-tone:' => '🕵🏼♀️',
+ ':woman-detective-medium-skin-tone:' => '🕵🏽♀️',
+ ':woman-elf-dark-skin-tone:' => '🧝🏿♀️',
+ ':woman-elf-light-skin-tone:' => '🧝🏻♀️',
+ ':woman-elf-medium-dark-skin-tone:' => '🧝🏾♀️',
+ ':woman-elf-medium-light-skin-tone:' => '🧝🏼♀️',
+ ':woman-elf-medium-skin-tone:' => '🧝🏽♀️',
+ ':woman-facepalming-dark-skin-tone:' => '🤦🏿♀️',
+ ':woman-facepalming-light-skin-tone:' => '🤦🏻♀️',
+ ':woman-facepalming-medium-dark-skin-tone:' => '🤦🏾♀️',
+ ':woman-facepalming-medium-light-skin-tone:' => '🤦🏼♀️',
+ ':woman-facepalming-medium-skin-tone:' => '🤦🏽♀️',
+ ':woman-fairy-dark-skin-tone:' => '🧚🏿♀️',
+ ':woman-fairy-light-skin-tone:' => '🧚🏻♀️',
+ ':woman-fairy-medium-dark-skin-tone:' => '🧚🏾♀️',
+ ':woman-fairy-medium-light-skin-tone:' => '🧚🏼♀️',
+ ':woman-fairy-medium-skin-tone:' => '🧚🏽♀️',
+ ':woman-frowning-dark-skin-tone:' => '🙍🏿♀️',
+ ':woman-frowning-light-skin-tone:' => '🙍🏻♀️',
+ ':woman-frowning-medium-dark-skin-tone:' => '🙍🏾♀️',
+ ':woman-frowning-medium-light-skin-tone:' => '🙍🏼♀️',
+ ':woman-frowning-medium-skin-tone:' => '🙍🏽♀️',
+ ':woman-gesturing-no-dark-skin-tone:' => '🙅🏿♀️',
+ ':woman-gesturing-no-light-skin-tone:' => '🙅🏻♀️',
+ ':woman-gesturing-no-medium-dark-skin-tone:' => '🙅🏾♀️',
+ ':woman-gesturing-no-medium-light-skin-tone:' => '🙅🏼♀️',
+ ':woman-gesturing-no-medium-skin-tone:' => '🙅🏽♀️',
+ ':woman-gesturing-ok-dark-skin-tone:' => '🙆🏿♀️',
+ ':woman-gesturing-ok-light-skin-tone:' => '🙆🏻♀️',
+ ':woman-gesturing-ok-medium-dark-skin-tone:' => '🙆🏾♀️',
+ ':woman-gesturing-ok-medium-light-skin-tone:' => '🙆🏼♀️',
+ ':woman-gesturing-ok-medium-skin-tone:' => '🙆🏽♀️',
+ ':woman-getting-haircut-dark-skin-tone:' => '💇🏿♀️',
+ ':woman-getting-haircut-light-skin-tone:' => '💇🏻♀️',
+ ':woman-getting-haircut-medium-dark-skin-tone:' => '💇🏾♀️',
+ ':woman-getting-haircut-medium-light-skin-tone:' => '💇🏼♀️',
+ ':woman-getting-haircut-medium-skin-tone:' => '💇🏽♀️',
+ ':woman-getting-massage-dark-skin-tone:' => '💆🏿♀️',
+ ':woman-getting-massage-light-skin-tone:' => '💆🏻♀️',
+ ':woman-getting-massage-medium-dark-skin-tone:' => '💆🏾♀️',
+ ':woman-getting-massage-medium-light-skin-tone:' => '💆🏼♀️',
+ ':woman-getting-massage-medium-skin-tone:' => '💆🏽♀️',
+ ':woman-golfing-dark-skin-tone:' => '🏌🏿♀️',
+ ':woman-golfing-light-skin-tone:' => '🏌🏻♀️',
+ ':woman-golfing-medium-dark-skin-tone:' => '🏌🏾♀️',
+ ':woman-golfing-medium-light-skin-tone:' => '🏌🏼♀️',
+ ':woman-golfing-medium-skin-tone:' => '🏌🏽♀️',
+ ':woman-guard-dark-skin-tone:' => '💂🏿♀️',
+ ':woman-guard-light-skin-tone:' => '💂🏻♀️',
+ ':woman-guard-medium-dark-skin-tone:' => '💂🏾♀️',
+ ':woman-guard-medium-light-skin-tone:' => '💂🏼♀️',
+ ':woman-guard-medium-skin-tone:' => '💂🏽♀️',
+ ':woman-health-worker-dark-skin-tone:' => '👩🏿⚕️',
+ ':woman-health-worker-light-skin-tone:' => '👩🏻⚕️',
+ ':woman-health-worker-medium-dark-skin-tone:' => '👩🏾⚕️',
+ ':woman-health-worker-medium-light-skin-tone:' => '👩🏼⚕️',
+ ':woman-health-worker-medium-skin-tone:' => '👩🏽⚕️',
+ ':woman-in-lotus-position-dark-skin-tone:' => '🧘🏿♀️',
+ ':woman-in-lotus-position-light-skin-tone:' => '🧘🏻♀️',
+ ':woman-in-lotus-position-medium-dark-skin-tone:' => '🧘🏾♀️',
+ ':woman-in-lotus-position-medium-light-skin-tone:' => '🧘🏼♀️',
+ ':woman-in-lotus-position-medium-skin-tone:' => '🧘🏽♀️',
+ ':woman-in-steamy-room-dark-skin-tone:' => '🧖🏿♀️',
+ ':woman-in-steamy-room-light-skin-tone:' => '🧖🏻♀️',
+ ':woman-in-steamy-room-medium-dark-skin-tone:' => '🧖🏾♀️',
+ ':woman-in-steamy-room-medium-light-skin-tone:' => '🧖🏼♀️',
+ ':woman-in-steamy-room-medium-skin-tone:' => '🧖🏽♀️',
+ ':woman-in-tuxedo-dark-skin-tone:' => '🤵🏿♀️',
+ ':woman-in-tuxedo-light-skin-tone:' => '🤵🏻♀️',
+ ':woman-in-tuxedo-medium-dark-skin-tone:' => '🤵🏾♀️',
+ ':woman-in-tuxedo-medium-light-skin-tone:' => '🤵🏼♀️',
+ ':woman-in-tuxedo-medium-skin-tone:' => '🤵🏽♀️',
+ ':woman-judge-dark-skin-tone:' => '👩🏿⚖️',
+ ':woman-judge-light-skin-tone:' => '👩🏻⚖️',
+ ':woman-judge-medium-dark-skin-tone:' => '👩🏾⚖️',
+ ':woman-judge-medium-light-skin-tone:' => '👩🏼⚖️',
+ ':woman-judge-medium-skin-tone:' => '👩🏽⚖️',
+ ':woman-juggling-dark-skin-tone:' => '🤹🏿♀️',
+ ':woman-juggling-light-skin-tone:' => '🤹🏻♀️',
+ ':woman-juggling-medium-dark-skin-tone:' => '🤹🏾♀️',
+ ':woman-juggling-medium-light-skin-tone:' => '🤹🏼♀️',
+ ':woman-juggling-medium-skin-tone:' => '🤹🏽♀️',
+ ':woman-kneeling-dark-skin-tone:' => '🧎🏿♀️',
+ ':woman-kneeling-light-skin-tone:' => '🧎🏻♀️',
+ ':woman-kneeling-medium-dark-skin-tone:' => '🧎🏾♀️',
+ ':woman-kneeling-medium-light-skin-tone:' => '🧎🏼♀️',
+ ':woman-kneeling-medium-skin-tone:' => '🧎🏽♀️',
+ ':woman-lifting-weights-dark-skin-tone:' => '🏋🏿♀️',
+ ':woman-lifting-weights-light-skin-tone:' => '🏋🏻♀️',
+ ':woman-lifting-weights-medium-dark-skin-tone:' => '🏋🏾♀️',
+ ':woman-lifting-weights-medium-light-skin-tone:' => '🏋🏼♀️',
+ ':woman-lifting-weights-medium-skin-tone:' => '🏋🏽♀️',
+ ':woman-light-skin-tone-beard:' => '🧔🏻♀️',
+ ':woman-light-skin-tone-blond-hair:' => '👱🏻♀️',
+ ':woman-mage-dark-skin-tone:' => '🧙🏿♀️',
+ ':woman-mage-light-skin-tone:' => '🧙🏻♀️',
+ ':woman-mage-medium-dark-skin-tone:' => '🧙🏾♀️',
+ ':woman-mage-medium-light-skin-tone:' => '🧙🏼♀️',
+ ':woman-mage-medium-skin-tone:' => '🧙🏽♀️',
+ ':woman-medium-dark-skin-tone-beard:' => '🧔🏾♀️',
+ ':woman-medium-dark-skin-tone-blond-hair:' => '👱🏾♀️',
+ ':woman-medium-light-skin-tone-beard:' => '🧔🏼♀️',
+ ':woman-medium-light-skin-tone-blond-hair:' => '👱🏼♀️',
+ ':woman-medium-skin-tone-beard:' => '🧔🏽♀️',
+ ':woman-medium-skin-tone-blond-hair:' => '👱🏽♀️',
+ ':woman-mountain-biking-dark-skin-tone:' => '🚵🏿♀️',
+ ':woman-mountain-biking-light-skin-tone:' => '🚵🏻♀️',
+ ':woman-mountain-biking-medium-dark-skin-tone:' => '🚵🏾♀️',
+ ':woman-mountain-biking-medium-light-skin-tone:' => '🚵🏼♀️',
+ ':woman-mountain-biking-medium-skin-tone:' => '🚵🏽♀️',
+ ':woman-pilot-dark-skin-tone:' => '👩🏿✈️',
+ ':woman-pilot-light-skin-tone:' => '👩🏻✈️',
+ ':woman-pilot-medium-dark-skin-tone:' => '👩🏾✈️',
+ ':woman-pilot-medium-light-skin-tone:' => '👩🏼✈️',
+ ':woman-pilot-medium-skin-tone:' => '👩🏽✈️',
+ ':woman-playing-handball-dark-skin-tone:' => '🤾🏿♀️',
+ ':woman-playing-handball-light-skin-tone:' => '🤾🏻♀️',
+ ':woman-playing-handball-medium-dark-skin-tone:' => '🤾🏾♀️',
+ ':woman-playing-handball-medium-light-skin-tone:' => '🤾🏼♀️',
+ ':woman-playing-handball-medium-skin-tone:' => '🤾🏽♀️',
+ ':woman-playing-water-polo-dark-skin-tone:' => '🤽🏿♀️',
+ ':woman-playing-water-polo-light-skin-tone:' => '🤽🏻♀️',
+ ':woman-playing-water-polo-medium-dark-skin-tone:' => '🤽🏾♀️',
+ ':woman-playing-water-polo-medium-light-skin-tone:' => '🤽🏼♀️',
+ ':woman-playing-water-polo-medium-skin-tone:' => '🤽🏽♀️',
+ ':woman-police-officer-dark-skin-tone:' => '👮🏿♀️',
+ ':woman-police-officer-light-skin-tone:' => '👮🏻♀️',
+ ':woman-police-officer-medium-dark-skin-tone:' => '👮🏾♀️',
+ ':woman-police-officer-medium-light-skin-tone:' => '👮🏼♀️',
+ ':woman-police-officer-medium-skin-tone:' => '👮🏽♀️',
+ ':woman-pouti
17AE
ng-dark-skin-tone:' => '🙎🏿♀️',
+ ':woman-pouting-light-skin-tone:' => '🙎🏻♀️',
+ ':woman-pouting-medium-dark-skin-tone:' => '🙎🏾♀️',
+ ':woman-pouting-medium-light-skin-tone:' => '🙎🏼♀️',
+ ':woman-pouting-medium-skin-tone:' => '🙎🏽♀️',
+ ':woman-raising-hand-dark-skin-tone:' => '🙋🏿♀️',
+ ':woman-raising-hand-light-skin-tone:' => '🙋🏻♀️',
+ ':woman-raising-hand-medium-dark-skin-tone:' => '🙋🏾♀️',
+ ':woman-raising-hand-medium-light-skin-tone:' => '🙋🏼♀️',
+ ':woman-raising-hand-medium-skin-tone:' => '🙋🏽♀️',
+ ':woman-rowing-boat-dark-skin-tone:' => '🚣🏿♀️',
+ ':woman-rowing-boat-light-skin-tone:' => '🚣🏻♀️',
+ ':woman-rowing-boat-medium-dark-skin-tone:' => '🚣🏾♀️',
+ ':woman-rowing-boat-medium-light-skin-tone:' => '🚣🏼♀️',
+ ':woman-rowing-boat-medium-skin-tone:' => '🚣🏽♀️',
+ ':woman-running-dark-skin-tone:' => '🏃🏿♀️',
+ ':woman-running-light-skin-tone:' => '🏃🏻♀️',
+ ':woman-running-medium-dark-skin-tone:' => '🏃🏾♀️',
+ ':woman-running-medium-light-skin-tone:' => '🏃🏼♀️',
+ ':woman-running-medium-skin-tone:' => '🏃🏽♀️',
+ ':woman-shrugging-dark-skin-tone:' => '🤷🏿♀️',
+ ':woman-shrugging-light-skin-tone:' => '🤷🏻♀️',
+ ':woman-shrugging-medium-dark-skin-tone:' => '🤷🏾♀️',
+ ':woman-shrugging-medium-light-skin-tone:' => '🤷🏼♀️',
+ ':woman-shrugging-medium-skin-tone:' => '🤷🏽♀️',
+ ':woman-standing-dark-skin-tone:' => '🧍🏿♀️',
+ ':woman-standing-light-skin-tone:' => '🧍🏻♀️',
+ ':woman-standing-medium-dark-skin-tone:' => '🧍🏾♀️',
+ ':woman-standing-medium-light-skin-tone:' => '🧍🏼♀️',
+ ':woman-standing-medium-skin-tone:' => '🧍🏽♀️',
+ ':woman-superhero-dark-skin-tone:' => '🦸🏿♀️',
+ ':woman-superhero-light-skin-tone:' => '🦸🏻♀️',
+ ':woman-superhero-medium-dark-skin-tone:' => '🦸🏾♀️',
+ ':woman-superhero-medium-light-skin-tone:' => '🦸🏼♀️',
+ ':woman-superhero-medium-skin-tone:' => '🦸🏽♀️',
+ ':woman-supervillain-dark-skin-tone:' => '🦹🏿♀️',
+ ':woman-supervillain-light-skin-tone:' => '🦹🏻♀️',
+ ':woman-supervillain-medium-dark-skin-tone:' => '🦹🏾♀️',
+ ':woman-supervillain-medium-light-skin-tone:' => '🦹🏼♀️',
+ ':woman-supervillain-medium-skin-tone:' => '🦹🏽♀️',
+ ':woman-surfing-dark-skin-tone:' => '🏄🏿♀️',
+ ':woman-surfing-light-skin-tone:' => '🏄🏻♀️',
+ ':woman-surfing-medium-dark-skin-tone:' => '🏄🏾♀️',
+ ':woman-surfing-medium-light-skin-tone:' => '🏄🏼♀️',
+ ':woman-surfing-medium-skin-tone:' => '🏄🏽♀️',
+ ':woman-swimming-dark-skin-tone:' => '🏊🏿♀️',
+ ':woman-swimming-light-skin-tone:' => '🏊🏻♀️',
+ ':woman-swimming-medium-dark-skin-tone:' => '🏊🏾♀️',
+ ':woman-swimming-medium-light-skin-tone:' => '🏊🏼♀️',
+ ':woman-swimming-medium-skin-tone:' => '🏊🏽♀️',
+ ':woman-tipping-hand-dark-skin-tone:' => '💁🏿♀️',
+ ':woman-tipping-hand-light-skin-tone:' => '💁🏻♀️',
+ ':woman-tipping-hand-medium-dark-skin-tone:' => '💁🏾♀️',
+ ':woman-tipping-hand-medium-light-skin-tone:' => '💁🏼♀️',
+ ':woman-tipping-hand-medium-skin-tone:' => '💁🏽♀️',
+ ':woman-vampire-dark-skin-tone:' => '🧛🏿♀️',
+ ':woman-vampire-light-skin-tone:' => '🧛🏻♀️',
+ ':woman-vampire-medium-dark-skin-tone:' => '🧛🏾♀️',
+ ':woman-vampire-medium-light-skin-tone:' => '🧛🏼♀️',
+ ':woman-vampire-medium-skin-tone:' => '🧛🏽♀️',
+ ':woman-walking-dark-skin-tone:' => '🚶🏿♀️',
+ ':woman-walking-light-skin-tone:' => '🚶🏻♀️',
+ ':woman-walking-medium-dark-skin-tone:' => '🚶🏾♀️',
+ ':woman-walking-medium-light-skin-tone:' => '🚶🏼♀️',
+ ':woman-walking-medium-skin-tone:' => '🚶🏽♀️',
+ ':woman-wearing-turban-dark-skin-tone:' => '👳🏿♀️',
+ ':woman-wearing-turban-light-skin-tone:' => '👳🏻♀️',
+ ':woman-wearing-turban-medium-dark-skin-tone:' => '👳🏾♀️',
+ ':woman-wearing-turban-medium-light-skin-tone:' => '👳🏼♀️',
+ ':woman-wearing-turban-medium-skin-tone:' => '👳🏽♀️',
+ ':woman-with-veil-dark-skin-tone:' => '👰🏿♀️',
+ ':woman-with-veil-light-skin-tone:' => '👰🏻♀️',
+ ':woman-with-veil-medium-dark-skin-tone:' => '👰🏾♀️',
+ ':woman-with-veil-medium-light-skin-tone:' => '👰🏼♀️',
+ ':woman-with-veil-medium-skin-tone:' => '👰🏽♀️',
':man-heart-man:' => '👨❤️👨',
':man-in-manual-wheelchair-facing-right:' => '👨🦽➡️',
':man-in-motorized-wheelchair-facing-right:' => '👨🦼➡️',
@@ -3446,13 +4199,362 @@
':family-wwbb:' => '👩👩👦👦',
':family-wwgb:' => '👩👩👧👦',
':family-wwgg:' => '👩👩👧👧',
+ ':man-in-manual-wheelchair-facing-right-dark-skin-tone:' => '👨🏿🦽➡️',
+ ':man-in-manual-wheelchair-facing-right-light-skin-tone:' => '👨🏻🦽➡️',
+ ':man-in-manual-wheelchair-facing-right-medium-dark-skin-tone:' => '👨🏾🦽➡️',
+ ':man-in-manual-wheelchair-facing-right-medium-light-skin-tone:' => '👨🏼🦽➡️',
+ ':man-in-manual-wheelchair-facing-right-medium-skin-tone:' => '👨🏽🦽➡️',
+ ':man-in-motorized-wheelchair-facing-right-dark-skin-tone:' => '👨🏿🦼➡️',
+ ':man-in-motorized-wh
F41A
eelchair-facing-right-light-skin-tone:' => '👨🏻🦼➡️',
+ ':man-in-motorized-wheelchair-facing-right-medium-dark-skin-tone:' => '👨🏾🦼➡️',
+ ':man-in-motorized-wheelchair-facing-right-medium-light-skin-tone:' => '👨🏼🦼➡️',
+ ':man-in-motorized-wheelchair-facing-right-medium-skin-tone:' => '👨🏽🦼➡️',
+ ':man-with-white-cane-facing-right-dark-skin-tone:' => '👨🏿🦯➡️',
+ ':man-with-white-cane-facing-right-light-skin-tone:' => '👨🏻🦯➡️',
+ ':man-with-white-cane-facing-right-medium-dark-skin-tone:' => '👨🏾🦯➡️',
+ ':man-with-white-cane-facing-right-medium-light-skin-tone:' => '👨🏼🦯➡️',
+ ':man-with-white-cane-facing-right-medium-skin-tone:' => '👨🏽🦯➡️',
+ ':men-holding-hands-dark-skin-tone-light-skin-tone:' => '👨🏿🤝👨🏻',
+ ':men-holding-hands-dark-skin-tone-medium-dark-skin-tone:' => '👨🏿🤝👨🏾',
+ ':men-holding-hands-dark-skin-tone-medium-light-skin-tone:' => '👨🏿🤝👨🏼',
+ ':men-holding-hands-dark-skin-tone-medium-skin-tone:' => '👨🏿🤝👨🏽',
+ ':men-holding-hands-light-skin-tone-dark-skin-tone:' => '👨🏻🤝👨🏿',
+ ':men-holding-hands-light-skin-tone-medium-dark-skin-tone:' => '👨🏻🤝👨🏾',
+ ':men-holding-hands-light-skin-tone-medium-light-skin-tone:' => '👨🏻🤝👨🏼',
+ ':men-holding-hands-light-skin-tone-medium-skin-tone:' => '👨🏻🤝👨🏽',
+ ':men-holding-hands-medium-dark-skin-tone-dark-skin-tone:' => '👨🏾🤝👨🏿',
+ ':men-holding-hands-medium-dark-skin-tone-light-skin-tone:' => '👨🏾🤝👨🏻',
+ ':men-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:' => '👨🏾🤝👨🏼',
+ ':men-holding-hands-medium-dark-skin-tone-medium-skin-tone:' => '👨🏾🤝👨🏽',
+ ':men-holding-hands-medium-light-skin-tone-dark-skin-tone:' => '👨🏼🤝👨🏿',
+ ':men-holding-hands-medium-light-skin-tone-light-skin-tone:' => '👨🏼🤝👨🏻',
+ ':men-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:' => '👨🏼🤝👨🏾',
+ ':men-holding-hands-medium-light-skin-tone-medium-skin-tone:' => '👨🏼🤝👨🏽',
+ ':men-holding-hands-medium-skin-tone-dark-skin-tone:' => '👨🏽🤝👨🏿',
+ ':men-holding-hands-medium-skin-tone-light-skin-tone:' => '👨🏽🤝👨🏻',
+ ':men-holding-hands-medium-skin-tone-medium-dark-skin-tone:' => '👨🏽🤝👨🏾',
+ ':men-holding-hands-medium-skin-tone-medium-light-skin-tone:' => '👨🏽🤝👨🏼',
+ ':people-holding-hands-dark-skin-tone:' => '🧑🏿🤝🧑🏿',
+ ':people-holding-hands-dark-skin-tone-light-skin-tone:' => '🧑🏿🤝🧑🏻',
+ ':people-holding-hands-dark-skin-tone-medium-dark-skin-tone:' => '🧑🏿🤝🧑🏾',
+ ':people-holding-hands-dark-skin-tone-medium-light-skin-tone:' => '🧑🏿🤝🧑🏼',
+ ':people-holding-hands-dark-skin-tone-medium-skin-tone:' => '🧑🏿🤝🧑🏽',
+ ':people-holding-hands-light-skin-tone:' => '🧑🏻🤝🧑🏻',
+ ':people-holding-hands-light-skin-tone-dark-skin-tone:' => '🧑🏻🤝🧑🏿',
+ ':people-holding-hands-light-skin-tone-medium-dark-skin-tone:' => '🧑🏻🤝🧑🏾',
+ ':people-holding-hands-light-skin-tone-medium-light-skin-tone:' => '🧑🏻🤝🧑🏼',
+ ':people-holding-hands-light-skin-tone-medium-skin-tone:' => '🧑🏻🤝🧑🏽',
+ ':people-holding-hands-medium-dark-skin-tone:' => '🧑🏾🤝🧑🏾',
+ ':people-holding-hands-medium-dark-skin-tone-dark-skin-tone:' => '🧑🏾🤝🧑🏿',
+ ':people-holding-hands-medium-dark-skin-tone-light-skin-tone:' => '🧑🏾🤝🧑🏻',
+ ':people-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:' => '🧑🏾🤝🧑🏼',
+ ':people-holding-hands-medium-dark-skin-tone-medium-skin-tone:' => '🧑🏾🤝🧑🏽',
+ ':people-holding-hands-medium-light-skin-tone:' => '🧑🏼🤝🧑🏼',
+ ':people-holding-hands-medium-light-skin-tone-dark-skin-tone:' => '🧑🏼🤝🧑🏿',
+ ':people-holding-hands-medium-light-skin-tone-light-skin-tone:' => '🧑🏼🤝🧑🏻',
+ ':people-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:' => '🧑🏼🤝🧑🏾',
+ ':people-holding-hands-medium-light-skin-tone-medium-skin-tone:' => '🧑🏼🤝🧑🏽',
+ ':people-holding-hands-medium-skin-tone:' => '🧑🏽🤝🧑🏽',
+ ':people-holding-hands-medium-skin-tone-dark-skin-tone:' => '🧑🏽🤝🧑🏿',
+ ':people-holding-hands-medium-skin-tone-light-skin-tone:' => '🧑🏽🤝🧑🏻',
+ ':people-holding-hands-medium-skin-tone-medium-dark-skin-tone:' => '🧑🏽🤝🧑🏾',
+ ':people-holding-hands-medium-skin-tone-medium-light-skin-tone:' => '🧑🏽🤝🧑🏼',
+ ':person-in-manual-wheelchair-facing-right-dark-skin-tone:' => '🧑🏿🦽➡️',
+ ':person-in-manual-wheelchair-facing-right-light-skin-tone:' => '🧑🏻🦽➡️',
+ ':person-in-manual-wheelchair-facing-right-medium-dark-skin-tone:' => '🧑🏾🦽➡️',
+ ':person-in-manual-wheelchair-facing-right-medium-light-skin-tone:' => '🧑🏼🦽➡️',
+ ':person-in-manual-wheelchair-facing-right-medium-skin-tone:' => '🧑🏽🦽➡️',
+ ':person-in-motorized-wheelchair-facing-right-dark-skin-tone:' => '🧑🏿🦼➡️',
+ ':person-in-motorized-wheelchair-facing-right-light-skin-tone:' => '🧑🏻🦼➡️',
+ ':person-in-motorized-wheelchair-facing-right-medium-dark-skin-tone:' => '🧑🏾🦼➡️',
+ ':person-in-motorized-wheelchair-facing-right-medium-light-skin-tone:' => '🧑🏼🦼➡️',
+ ':person-in-motorized-wheelchair-facing-right-medium-skin-tone:' => '🧑🏽🦼➡️',
+ ':person-with-white-cane-facing-right-dark-skin-tone:' => '🧑🏿🦯➡️',
+ ':person-with-white-cane-facing-right-light-skin-tone:' => '🧑🏻🦯➡️',
+ ':person-with-white-cane-facing-right-medium-dark-skin-tone:' => '🧑🏾🦯➡️',
+ ':person-with-white-cane-facing-right-medium-light-skin-tone:' => '🧑🏼🦯➡️',
+ ':person-with-white-cane-facing-right-medium-skin-tone:' => '🧑🏽🦯➡️',
':scotland:' => '🏴',
':wales:' => '🏴',
- ':couplekiss-mm:' => '👨❤️💋👨',
- ':couplekiss-ww:' => '👩❤️💋👩',
+ ':woman-and-man-holding-hands-dark-skin-tone-light-skin-tone:' => '👩🏿🤝👨🏻',
+ ':woman-and-man-holding-hands-dark-skin-tone-medium-dark-skin-tone:' => '👩🏿🤝👨🏾',
+ ':woman-and-man-holding-hands-dark-skin-tone-medium-light-skin-tone:' => '👩🏿🤝👨🏼',
+ ':woman-and-man-holding-hands-dark-skin-tone-medium-skin-tone:' => '👩🏿🤝👨🏽',
+ ':woman-and-man-holding-hands-light-skin-tone-dark-skin-tone:' => '👩🏻🤝👨🏿',
+ ':woman-and-man-holding-hands-light-skin-tone-medium-dark-skin-tone:' => '👩🏻🤝👨🏾',
+ ':woman-and-man-holding-hands-light-skin-tone-medium-light-skin-tone:' => '👩🏻🤝👨🏼',
+ ':woman-and-man-holding-hands-light-skin-tone-medium-skin-tone:' => '👩🏻🤝👨🏽',
+ ':woman-and-man-holding-hands-medium-dark-skin-tone-dark-skin-tone:' => '👩🏾🤝👨🏿',
+ ':woman-and-man-holding-hands-medium-dark-skin-tone-light-skin-tone:' => '👩🏾🤝👨🏻',
+ ':woman-and-man-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:' => '👩🏾🤝👨🏼',
+ ':woman-and-man-holding-hands-medium-dark-skin-tone-medium-skin-tone:' => '👩🏾🤝👨🏽',
+ ':woman-and-man-holding-hands-medium-light-skin-tone-dark-skin-tone:' => '👩🏼🤝👨🏿',
+ ':woman-and-man-holding-hands-medium-light-skin-tone-light-skin-tone:' => '👩🏼🤝👨🏻',
+ ':woman-and-man-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:' => '👩🏼🤝👨🏾',
+ ':woman-and-man-holding-hands-medium-light-skin-tone-medium-skin-tone:' => '👩🏼🤝👨🏽',
+ ':woman-and-man-holding-hands-medium-skin-tone-dark-skin-tone:' => '👩🏽🤝👨🏿',
+ ':woman-and-man-holding-hands-medium-skin-tone-light-skin-tone:' => '👩🏽🤝👨🏻',
+ ':woman-and-man-holding-hands-medium-skin-tone-medium-dark-skin-tone:' => '👩🏽🤝👨🏾',
+ ':woman-and-man-holding-hands-medium-skin-tone-medium-light-skin-tone:' => '👩🏽🤝👨🏼',
+ ':woman-in-manual-wheelchair-facing-right-dark-skin-tone:' => '👩🏿🦽➡️',
+ ':woman-in-manual-wheelchair-facing-right-light-skin-tone:' => '👩🏻🦽➡️',
+ ':woman-in-manual-wheelchair-facing-right-medium-dark-skin-tone:' => '👩🏾🦽➡️',
+ ':woman-in-manual-wheelchair-facing-right-medium-light-skin-tone:' => '👩🏼🦽➡️',
+ ':woman-in-manual-wheelchair-facing-right-medium-skin-tone:' => '👩🏽🦽➡️',
+ ':woman-in-motorized-wheelchair-facing-right-dark-skin-tone:' => '👩🏿🦼➡️',
+ ':woman-in-motorized-wheelchair-facing-right-light-skin-tone:' => '👩🏻🦼➡️',
+ ':woman-in-motorized-wheelchair-facing-right-medium-dark-skin-tone:' => '👩🏾🦼➡️',
+ ':woman-in-motorized-wheelchair-facing-right-medium-light-skin-tone:' => '👩🏼🦼➡️',
+ ':woman-in-motorized-wheelchair-facing-right-medium-skin-tone:' => '👩🏽🦼➡️',
+ ':woman-with-white-cane-facing-right-dark-skin-tone:' => '👩🏿🦯➡️',
+ ':woman-with-white-cane-facing-right-light-skin-tone:' => '👩🏻🦯➡️',
+ ':woman-with-white-cane-facing-right-medium-dark-skin-tone:' => '👩🏾🦯➡️',
+ ':woman-with-white-cane-facing-right-medium-light-skin-tone:' => '👩🏼🦯➡️',
+ ':woman-with-white-cane-facing-right-medium-skin-tone:' => '👩🏽🦯➡️',
+ ':women-holding-hands-dark-skin-tone-light-skin-tone:' => '👩🏿🤝👩🏻',
+ ':women-holding-hands-dark-skin-tone-medium-dark-skin-tone:' => '👩🏿🤝👩🏾',
+ ':women-holding-hands-dark-skin-tone-medium-light-skin-tone:' => '👩🏿🤝👩🏼',
+ ':women-holding-hands-dark-skin-tone-medium-skin-tone:' => '👩🏿🤝👩🏽',
+ ':women-holding-hands-light-skin-tone-dark-skin-tone:' => '👩🏻🤝👩🏿',
+ ':women-holding-hands-light-skin-tone-medium-dark-skin-tone:' => '👩🏻🤝👩🏾',
+ ':women-holding-hands-light-skin-tone-medium-light-skin-tone:' => '👩🏻🤝👩🏼',
+ ':women-holding-hands-light-skin-tone-medium-skin-tone:' => '👩🏻🤝👩🏽',
+ ':women-holding-hands-medium-dark-skin-tone-dark-skin-tone:' => '👩🏾🤝👩🏿',
+ ':women-holding-hands-medium-dark-skin-tone-light-skin-tone:' => '👩🏾🤝👩🏻',
+ ':women-holding-hands-medium-dark-skin-tone-medium-light-skin-tone:' => '👩🏾🤝👩🏼',
+ ':women-holding-hands-medium-dark-skin-tone-medium-skin-tone:' => '👩🏾🤝👩🏽',
+ ':women-holding-hands-medium-light-skin-tone-dark-skin-tone:' => '👩🏼🤝👩🏿',
+ ':women-holding-hands-medium-light-skin-tone-light-skin-tone:' => '👩🏼🤝👩🏻',
+ ':women-holding-hands-medium-light-skin-tone-medium-dark-skin-tone:' => '👩🏼🤝👩🏾',
+ ':women-holding-hands-medium-light-skin-tone-medium-skin-tone:' => '👩🏼🤝👩🏽',
+ ':women-holding-hands-medium-skin-tone-dark-skin-tone:' => '👩🏽🤝👩🏿',
+ ':women-holding-hands-medium-skin-tone-light-skin-tone:' => '👩🏽🤝👩🏻',
+ ':women-holding-hands-medium-skin-tone-medium-dark-skin-tone:' => '👩🏽🤝👩🏾',
+ ':women-holding-hands-medium-skin-tone-medium-light-skin-tone:' => '👩🏽🤝👩🏼',
':man-kiss-man:' => '👨❤️💋👨',
':woman-kiss-man:' => '👩❤️💋👨',
':woman-kiss-woman:' => '👩❤️💋👩',
+ ':couple-with-heart-man-man-dark-skin-tone:' => '👨🏿❤️👨🏿',
+ ':couple-with-heart-man-man-dark-skin-tone-light-skin-tone:' => '👨🏿❤️👨🏻',
+ ':couple-with-heart-man-man-dark-skin-tone-medium-dark-skin-tone:' => '👨🏿❤️👨🏾',
+ ':couple-with-heart-man-man-dark-skin-tone-medium-light-skin-tone:' => '👨🏿❤️👨🏼',
+ ':couple-with-heart-man-man-dark-skin-tone-medium-skin-tone:' => '👨🏿❤️👨🏽',
+ ':couple-with-heart-man-man-light-skin-tone:' => '👨🏻❤️👨🏻',
+ ':couple-with-heart-man-man-light-skin-tone-dark-skin-tone:' => '👨🏻❤️👨🏿',
+ ':couple-with-heart-man-man-light-skin-tone-medium-dark-skin-tone:' => '👨🏻❤️👨🏾',
+ ':couple-with-heart-man-man-light-skin-tone-medium-light-skin-tone:' => '👨🏻❤️👨🏼',
+ ':couple-with-heart-man-man-light-skin-tone-medium-skin-tone:' => '👨🏻❤️👨🏽',
+ ':couple-with-heart-man-man-medium-dark-skin-tone:' => '👨🏾❤️👨🏾',
+ ':couple-with-heart-man-man-medium-dark-skin-tone-dark-skin-tone:' => '👨🏾❤️👨🏿',
+ ':couple-with-heart-man-man-medium-dark-skin-tone-light-skin-tone:' => '👨🏾❤️👨🏻',
+ ':couple-with-heart-man-man-medium-dark-skin-tone-medium-light-skin-tone:' => '👨🏾❤️👨🏼',
+ ':couple-with-heart-man-man-medium-dark-skin-tone-medium-skin-tone:' => '👨🏾❤️👨🏽',
+ ':couple-with-heart-man-man-medium-light-skin-tone:' => '👨🏼❤️👨🏼',
+ ':couple-with-heart-man-man-medium-light-skin-tone-dark-skin-tone:' => '👨🏼❤️👨🏿',
+ ':couple-with-heart-man-man-medium-light-skin-tone-light-skin-tone:' => '👨🏼❤️👨🏻',
+ ':couple-with-heart-man-man-medium-light-skin-tone-medium-dark-skin-tone:' => '👨🏼❤️👨🏾',
+ ':couple-with-heart-man-man-medium-light-skin-tone-medium-skin-tone:' => '👨🏼❤️👨🏽',
+ ':couple-with-heart-man-man-medium-skin-tone:' => '👨🏽❤️👨🏽',
+ ':couple-with-heart-man-man-medium-skin-tone-dark-skin-tone:' => '👨🏽❤️👨🏿',
+ ':couple-with-heart-man-man-medium-skin-tone-light-skin-tone:' => '👨🏽❤️👨🏻',
+ ':couple-with-heart-man-man-medium-skin-tone-medium-dark-skin-tone:' => '👨🏽❤️👨🏾',
+ ':couple-with-heart-man-man-medium-skin-tone-medium-light-skin-tone:' => '👨🏽❤️👨🏼',
+ ':couple-with-heart-person-person-dark-skin-tone-light-skin-tone:' => '🧑🏿❤️🧑🏻',
+ ':couple-with-heart-person-person-dark-skin-tone-medium-dark-skin-tone:' => '🧑🏿❤️🧑🏾',
+ ':couple-with-heart-person-person-dark-skin-tone-medium-light-skin-tone:' => '🧑🏿❤️🧑🏼',
+ ':couple-with-heart-person-person-dark-skin-tone-medium-skin-tone:' => '🧑🏿❤️🧑🏽',
+ ':couple-with-heart-person-person-light-skin-tone-dark-skin-tone:' => '🧑🏻❤️🧑🏿',
+ ':couple-with-heart-person-person-light-skin-tone-medium-dark-skin-tone:' => '🧑🏻❤️🧑🏾',
+ ':couple-with-heart-person-person-light-skin-tone-medium-light-skin-tone:' => '🧑🏻❤️🧑🏼',
+ ':couple-with-heart-person-person-light-skin-tone-medium-skin-tone:' => '🧑🏻❤️🧑🏽',
+ ':couple-with-heart-person-person-medium-dark-skin-tone-dark-skin-tone:' => '🧑🏾❤️🧑🏿',
+ ':couple-with-heart-person-person-medium-dark-skin-tone-light-skin-tone:' => '🧑🏾❤️🧑🏻',
+ ':couple-with-heart-person-person-medium-dark-skin-tone-medium-light-skin-tone:' => '🧑🏾❤️🧑🏼',
+ ':couple-with-heart-person-person-medium-dark-skin-tone-medium-skin-tone:' => '🧑🏾❤️🧑🏽',
+ ':couple-with-heart-person-person-medium-light-skin-tone-dark-skin-tone:' => '🧑🏼❤️🧑🏿',
+ ':couple-with-heart-person-person-medium-light-skin-tone-light-skin-tone:' => '🧑🏼❤️🧑🏻',
+ ':couple-with-heart-person-person-medium-light-skin-tone-medium-dark-skin-tone:' => '🧑🏼❤️🧑🏾',
+ ':couple-with-heart-person-person-medium-light-skin-tone-medium-skin-tone:' => '🧑🏼❤️🧑🏽',
+ ':couple-with-heart-person-person-medium-skin-tone-dark-skin-tone:' => '🧑🏽❤️🧑🏿',
+ ':couple-with-heart-person-person-medium-skin-tone-light-skin-tone:' => '🧑🏽❤️🧑🏻',
+ ':couple-with-heart-person-person-medium-skin-tone-medium-dark-skin-tone:' => '🧑🏽❤️🧑🏾',
+ ':couple-with-heart-person-person-medium-skin-tone-medium-light-skin-tone:' => '🧑🏽❤️🧑🏼',
+ ':couple-with-heart-woman-man-dark-skin-tone:' => '👩🏿❤️👨🏿',
+ ':couple-with-heart-woman-man-dark-skin-tone-light-skin-tone:' => '👩🏿❤️👨🏻',
+ ':couple-with-heart-woman-man-dark-skin-tone-medium-dark-skin-tone:' => '👩🏿❤️👨🏾',
+ ':couple-with-heart-woman-man-dark-skin-tone-medium-light-skin-tone:' => '👩🏿❤️👨🏼',
+ ':couple-with-heart-woman-man-dark-skin-tone-medium-skin-tone:' => '👩🏿❤️👨🏽',
+ ':couple-with-heart-woman-man-light-skin-tone:' => '👩🏻❤️👨🏻',
+ ':couple-with-heart-woman-man-light-skin-tone-dark-skin-tone:' => '👩🏻❤️👨🏿',
+ ':couple-with-heart-woman-man-light-skin-tone-medium-dark-skin-tone:' => '👩🏻❤️👨🏾',
+ ':couple-with-heart-woman-man-light-skin-tone-medium-light-skin-tone:' => '👩🏻❤️👨🏼',
+ ':couple-with-heart-woman-man-light-skin-tone-medium-skin-tone:' => '👩🏻❤️👨🏽',
+ ':couple-with-heart-woman-man-medium-dark-skin-tone:' => '👩🏾❤️👨🏾',
+ ':couple-with-heart-woman-man-medium-dark-skin-tone-dark-skin-tone:' => '👩🏾❤️👨🏿',
+ ':couple-with-heart-woman-man-medium-dark-skin-tone-light-skin-tone:' => '👩🏾❤️👨🏻',
+ ':couple-with-heart-woman-man-medium-dark-skin-tone-medium-light-skin-tone:' => '👩🏾❤️👨🏼',
+ ':couple-with-heart-woman-man-medium-dark-skin-tone-medium-skin-tone:' => '👩🏾❤️👨🏽',
+ ':couple-with-heart-woman-man-medium-light-skin-tone:' => '👩🏼❤️👨🏼',
+ ':couple-with-heart-woman-man-medium-light-skin-tone-dark-skin-tone:' => '👩🏼❤️👨🏿',
+ ':couple-with-heart-woman-man-medium-light-skin-tone-light-skin-tone:' => '👩🏼❤️👨🏻',
+ ':couple-with-heart-woman-man-medium-light-skin-tone-medium-dark-skin-tone:' => '👩🏼❤️👨🏾',
+ ':couple-with-heart-woman-man-medium-light-skin-tone-medium-skin-tone:' => '👩🏼❤️👨🏽',
+ ':couple-with-heart-woman-man-medium-skin-tone:' => '👩🏽❤️👨🏽',
+ ':couple-with-heart-woman-man-medium-skin-tone-dark-skin-tone:' => '👩🏽❤️👨🏿',
+ ':couple-with-heart-woman-man-medium-skin-tone-light-skin-tone:' => '👩🏽❤️👨🏻',
+ ':couple-with-heart-woman-man-medium-skin-tone-medium-dark-skin-tone:' => '👩🏽❤️👨🏾',
+ ':couple-with-heart-woman-man-medium-skin-tone-medium-light-skin-tone:' => '👩🏽❤️👨🏼',
+ ':couple-with-heart-woman-woman-dark-skin-tone:' => '👩🏿❤️👩🏿',
+ ':couple-with-heart-woman-woman-dark-skin-tone-light-skin-tone:' => '👩🏿❤️👩🏻',
+ ':couple-with-heart-woman-woman-dark-skin-tone-medium-dark-skin-tone:' => '👩🏿❤️👩🏾',
+ ':couple-with-heart-woman-woman-dark-skin-tone-medium-light-skin-tone:' => '👩🏿❤️👩🏼',
+ ':couple-with-heart-woman-woman-dark-skin-tone-medium-skin-tone:' => '👩🏿❤️👩🏽',
+ ':couple-with-heart-woman-woman-light-skin-tone:' => '👩🏻❤️👩🏻',
+ ':couple-with-heart-woman-woman-light-skin-tone-dark-skin-tone:' => '👩🏻❤️👩🏿',
+ ':couple-with-heart-woman-woman-light-skin-tone-medium-dark-skin-tone:' => '👩🏻❤️👩🏾',
+ ':couple-with-heart-woman-woman-light-skin-tone-medium-light-skin-tone:' => '👩🏻❤️👩🏼',
+ ':couple-with-heart-woman-woman-light-skin-tone-medium-skin-tone:' => '👩🏻❤️👩🏽',
+ ':couple-with-heart-woman-woman-medium-dark-skin-tone:' => '👩🏾❤️👩🏾',
+ ':couple-with-heart-woman-woman-medium-dark-skin-tone-dark-skin-tone:' => '👩🏾❤️👩🏿',
+ ':couple-with-heart-woman-woman-medium-dark-skin-tone-light-skin-tone:' => '👩🏾❤️👩🏻',
+ ':couple-with-heart-woman-woman-medium-dark-skin-tone-medium-light-skin-tone:' => '👩🏾❤️👩🏼',
+ ':couple-with-heart-woman-woman-medium-dark-skin-tone-medium-skin-tone:' => '👩🏾❤️👩🏽',
+ ':couple-with-heart-woman-woman-medium-light-skin-tone:' => '👩🏼❤️👩🏼',
+ ':couple-with-heart-woman-woman-medium-light-skin-tone-dark-skin-tone:' => '👩🏼❤️👩🏿',
+ ':couple-with-heart-woman-woman-medium-light-skin-tone-light-skin-tone:' => '👩🏼❤️👩🏻',
+ ':couple-with-heart-woman-woman-medium-light-skin-tone-medium-dark-skin-tone:' => '👩🏼❤️👩🏾',
+ ':couple-with-heart-woman-woman-medium-light-skin-tone-medium-skin-tone:' => '👩🏼❤️👩🏽',
+ ':couple-with-heart-woman-woman-medium-skin-tone:' => '👩🏽❤️👩🏽',
+ ':couple-with-heart-woman-woman-medium-skin-tone-dark-skin-tone:' => '👩🏽❤️👩🏿',
+ ':couple-with-heart-woman-woman-medium-skin-tone-light-skin-tone:' => '👩🏽❤️👩🏻',
+ ':couple-with-heart-woman-woman-medium-skin-tone-medium-dark-skin-tone:' => '👩🏽❤️👩🏾',
+ ':couple-with-heart-woman-woman-medium-skin-tone-medium-light-skin-tone:' => '👩🏽❤️👩🏼',
':kiss-mm:' => '👨❤️💋👨',
+ ':kiss-woman-man:' => '👩❤️💋👨',
':kiss-ww:' => '👩❤️💋👩',
+ ':man-kneeling-facing-right-dark-skin-tone:' => '🧎🏿♂️➡️',
+ ':man-kneeling-facing-right-light-skin-tone:' => '🧎🏻♂️➡️',
+ ':man-kneeling-facing-right-medium-dark-skin-tone:' => '🧎🏾♂️➡️',
+ ':man-kneeling-facing-right-medium-light-skin-tone:' => '🧎🏼♂️➡️',
+ ':man-kneeling-facing-right-medium-skin-tone:' => '🧎🏽♂️➡️',
+ ':man-running-facing-right-dark-skin-tone:' => '🏃🏿♂️➡️',
+ ':man-running-facing-right-light-skin-tone:' => '🏃🏻♂️➡️',
+ ':man-running-facing-right-medium-dark-skin-tone:' => '🏃🏾♂️➡️',
+ ':man-running-facing-right-medium-light-skin-tone:' => '🏃🏼♂️➡️',
+ ':man-running-facing-right-medium-skin-tone:' => '🏃🏽♂️➡️',
+ ':man-walking-facing-right-dark-skin-tone:' => '🚶🏿♂️➡️',
+ ':man-walking-facing-right-light-skin-tone:' => '🚶🏻♂️➡️',
+ ':man-walking-facing-right-medium-dark-skin-tone:' => '🚶🏾♂️➡️',
+ ':man-walking-facing-right-medium-light-skin-tone:' => '🚶🏼♂️➡️',
+ ':man-walking-facing-right-medium-skin-tone:' => '🚶🏽♂️➡️',
+ ':woman-kneeling-facing-right-dark-skin-tone:' => '🧎🏿♀️➡️',
+ ':woman-kneeling-facing-right-light-skin-tone:' => '🧎🏻♀️➡️',
+ ':woman-kneeling-facing-right-medium-dark-skin-tone:' => '🧎🏾♀️➡️',
+ ':woman-kneeling-facing-right-medium-light-skin-tone:' => '🧎🏼♀️➡️',
+ ':woman-kneeling-facing-right-medium-skin-tone:' => '🧎🏽♀️➡️',
+ ':woman-running-facing-right-dark-skin-tone:' => '🏃🏿♀️➡️',
+ ':woman-running-facing-right-light-skin-tone:' => '🏃🏻♀️➡️',
+ ':woman-running-facing-right-medium-dark-skin-tone:' => '🏃🏾♀️➡️',
+ ':woman-running-facing-right-medium-light-skin-tone:' => '🏃🏼♀️➡️',
+ ':woman-running-facing-right-medium-skin-tone:' => '🏃🏽♀️➡️',
+ ':woman-walking-facing-right-dark-skin-tone:' => '🚶🏿♀️➡️',
+ ':woman-walking-facing-right-light-skin-tone:' => '🚶🏻♀️➡️',
+ ':woman-walking-facing-right-medium-dark-skin-tone:' => '🚶🏾♀️➡️',
+ ':woman-walking-facing-right-medium-light-skin-tone:' => '🚶🏼♀️➡️',
+ ':woman-walking-facing-right-medium-skin-tone:' => '🚶🏽♀️➡️',
+ ':kiss-man-man-dark-skin-tone:' => '👨🏿❤️💋👨🏿',
+ ':kiss-man-man-dark-skin-tone-light-skin-tone:' => '👨🏿❤️💋👨🏻',
+ ':kiss-man-man-dark-skin-tone-medium-dark-skin-tone:' => '👨🏿❤️💋👨🏾',
+ ':kiss-man-man-dark-skin-tone-medium-light-skin-tone:' => '👨🏿❤️💋👨🏼',
+ ':kiss-man-man-dark-skin-tone-medium-skin-tone:' => '👨🏿❤️💋👨🏽',
+ ':kiss-man-man-light-skin-tone:' => '👨🏻❤️💋👨🏻',
+ ':kiss-man-man-light-skin-tone-dark-skin-tone:' => '👨🏻❤️💋👨🏿',
+ ':kiss-man-man-light-skin-tone-medium-dark-skin-tone:' => '👨🏻❤️💋👨🏾',
+ ':kiss-man-man-light-skin-tone-medium-light-skin-tone:' => '👨🏻❤️💋👨🏼',
+ ':kiss-man-man-light-skin-tone-medium-skin-tone:' => '👨🏻❤️💋👨🏽',
+ ':kiss-man-man-medium-dark-skin-tone:' => '👨🏾❤️💋👨🏾',
+ ':kiss-man-man-medium-dark-skin-tone-dark-skin-tone:' => '👨🏾❤️💋👨🏿',
+ ':kiss-man-man-medium-dark-skin-tone-light-skin-tone:' => '👨🏾❤️💋👨🏻',
+ ':kiss-man-man-medium-dark-skin-tone-medium-light-skin-tone:' => '👨🏾❤️💋👨🏼',
+ ':kiss-man-man-medium-dark-skin-tone-medium-skin-tone:' => '👨🏾❤️💋👨🏽',
+ ':kiss-man-man-medium-light-skin-tone:' => '👨🏼❤️💋👨🏼',
+ ':kiss-man-man-medium-light-skin-tone-dark-skin-tone:' => '👨🏼❤️💋👨🏿',
+ ':kiss-man-man-medium-light-skin-tone-light-skin-tone:' => '👨🏼❤️💋👨🏻',
+ ':kiss-man-man-medium-light-skin-tone-medium-dark-skin-tone:' => '👨🏼❤️💋👨🏾',
+ ':kiss-man-man-medium-light-skin-tone-medium-skin-tone:' => '👨🏼❤️💋👨🏽',
+ ':kiss-man-man-medium-skin-tone:' => '👨🏽❤️💋👨🏽',
+ ':kiss-man-man-medium-skin-tone-dark-skin-tone:' => '👨🏽❤️💋👨🏿',
+ ':kiss-man-man-medium-skin-tone-light-skin-tone:' => '👨🏽❤️💋👨🏻',
+ ':kiss-man-man-medium-skin-tone-medium-dark-skin-tone:' => '👨🏽❤️💋👨🏾',
+ ':kiss-man-man-medium-skin-tone-medium-light-skin-tone:' => '👨🏽❤️💋👨🏼',
+ ':kiss-person-person-dark-skin-tone-light-skin-tone:' => '🧑🏿❤️💋🧑🏻',
+ ':kiss-person-person-dark-skin-tone-medium-dark-skin-tone:' => '🧑🏿❤️💋🧑🏾',
+ ':kiss-person-person-dark-skin-tone-medium-light-skin-tone:' => '🧑🏿❤️💋🧑🏼',
+ ':kiss-person-person-dark-skin-tone-medium-skin-tone:' => '🧑🏿❤️💋🧑🏽',
+ ':kiss-person-person-light-skin-tone-dark-skin-tone:' => '🧑🏻❤️💋🧑🏿',
+ ':kiss-person-person-light-skin-tone-medium-dark-skin-tone:' => '🧑🏻❤️💋🧑🏾',
+ ':kiss-person-person-light-skin-tone-medium-light-skin-tone:' => '🧑🏻❤️💋🧑🏼',
+ ':kiss-person-person-light-skin-tone-medium-skin-tone:' => '🧑🏻❤️💋🧑🏽',
+ ':kiss-person-person-medium-dark-skin-tone-dark-skin-tone:' => '🧑🏾❤️💋🧑🏿',
+ ':kiss-person-person-medium-dark-skin-tone-light-skin-tone:' => '🧑🏾❤️💋🧑🏻',
+ ':kiss-person-person-medium-dark-skin-tone-medium-light-skin-tone:' => '🧑🏾❤️💋🧑🏼',
+ ':kiss-person-person-medium-dark-skin-tone-medium-skin-tone:' => '🧑🏾❤️💋🧑🏽',
+ ':kiss-person-person-medium-light-skin-tone-dark-skin-tone:' => '🧑🏼❤️💋🧑🏿',
+ ':kiss-person-person-medium-light-skin-tone-light-skin-tone:' => '🧑🏼❤️💋🧑🏻',
+ ':kiss-person-person-medium-light-skin-tone-medium-dark-skin-tone:' => '🧑🏼❤️💋🧑🏾',
+ ':kiss-person-person-medium-light-skin-tone-medium-skin-tone:' => '🧑🏼❤️💋🧑🏽',
+ ':kiss-person-person-medium-skin-tone-dark-skin-tone:' => '🧑🏽❤️💋🧑🏿',
+ ':kiss-person-person-medium-skin-tone-light-skin-tone:' => '🧑🏽❤️💋🧑🏻',
+ ':kiss-person-person-medium-skin-tone-medium-dark-skin-tone:' => '🧑🏽❤️💋🧑🏾',
+ ':kiss-person-person-medium-skin-tone-medium-light-skin-tone:' => '🧑🏽❤️💋🧑🏼',
+ ':kiss-woman-man-dark-skin-tone:' => '👩🏿❤️💋👨🏿',
+ ':kiss-woman-man-dark-skin-tone-light-skin-tone:' => '👩🏿❤️💋👨🏻',
+ ':kiss-woman-man-dark-skin-tone-medium-dark-skin-tone:' => '👩🏿❤️💋👨🏾',
+ ':kiss-woman-man-dark-skin-tone-medium-light-skin-tone:' => '👩🏿❤️💋👨🏼',
+ ':kiss-woman-man-dark-skin-tone-medium-skin-tone:' => '👩🏿❤️💋👨🏽',
+ ':kiss-woman-man-light-skin-tone:' => '👩🏻❤️💋👨🏻',
+ ':kiss-woman-man-light-skin-tone-dark-skin-tone:' => '👩🏻❤️💋👨🏿',
+ ':kiss-woman-man-light-skin-tone-medium-dark-skin-tone:' => '👩🏻❤️💋👨🏾',
+ ':kiss-woman-man-light-skin-tone-medium-light-skin-tone:' => '👩🏻❤️💋👨🏼',
+ ':kiss-woman-man-light-skin-tone-medium-skin-tone:' => '👩🏻❤️💋👨🏽',
+ ':kiss-woman-man-medium-dark-skin-tone:' => '👩🏾❤️💋👨🏾',
+ ':kiss-woman-man-medium-dark-skin-tone-dark-skin-tone:' => '👩🏾❤️💋👨🏿',
+ ':kiss-woman-man-medium-dark-skin-tone-light-skin-tone:' => '👩🏾❤️💋👨🏻',
+ ':kiss-woman-man-medium-dark-skin-tone-medium-light-skin-tone:' => '👩🏾❤️💋👨🏼',
+ ':kiss-woman-man-medium-dark-skin-tone-medium-skin-tone:' => '👩🏾❤️💋👨🏽',
+ ':kiss-woman-man-medium-light-skin-tone:' => '👩🏼❤️💋👨🏼',
+ ':kiss-woman-man-medium-light-skin-tone-dark-skin-tone:' => '👩🏼❤️💋👨🏿',
+ ':kiss-woman-man-medium-light-skin-tone-light-skin-tone:' => '👩🏼❤️💋👨🏻',
+ ':kiss-woman-man-medium-light-skin-tone-medium-dark-skin-tone:' => '👩🏼❤️💋👨🏾',
+ ':kiss-woman-man-medium-light-skin-tone-medium-skin-tone:' => '👩🏼❤️💋👨🏽',
+ ':kiss-woman-man-medium-skin-tone:' => '👩🏽❤️💋👨🏽',
+ ':kiss-woman-man-medium-skin-tone-dark-skin-tone:' => '👩🏽❤️💋👨🏿',
+ ':kiss-woman-man-medium-skin-tone-light-skin-tone:' => '👩🏽❤️💋👨🏻',
+ ':kiss-woman-man-medium-skin-tone-medium-dark-skin-tone:' => '👩🏽❤️💋👨🏾',
+ ':kiss-woman-man-medium-skin-tone-medium-light-skin-tone:' => '👩🏽❤️💋👨🏼',
+ ':kiss-woman-woman-dark-skin-tone:' => '👩🏿❤️💋👩🏿',
+ ':kiss-woman-woman-dark-skin-tone-light-skin-tone:' => '👩🏿❤️💋👩🏻',
+ ':kiss-woman-woman-dark-skin-tone-medium-dark-skin-tone:' => '👩🏿❤️💋👩🏾',
+ ':kiss-woman-woman-dark-skin-tone-medium-light-skin-tone:' => '👩🏿❤️💋👩🏼',
+ ':kiss-woman-woman-dark-skin-tone-medium-skin-tone:' => '👩🏿❤️💋👩🏽',
+ ':kiss-woman-woman-light-skin-tone:' => '👩🏻❤️💋👩🏻',
+ ':kiss-woman-woman-light-skin-tone-dark-skin-tone:' => '👩🏻❤️💋👩🏿',
+ ':kiss-woman-woman-light-skin-tone-medium-dark-skin-tone:' => '👩🏻❤️💋👩🏾',
+ ':kiss-woman-woman-light-skin-tone-medium-light-skin-tone:' => '👩🏻❤️💋👩🏼',
+ ':kiss-woman-woman-light-skin-tone-medium-skin-tone:' => '👩🏻❤️💋👩🏽',
+ ':kiss-woman-woman-medium-dark-skin-tone:' => '👩🏾❤️💋👩🏾',
+ ':kiss-woman-woman-medium-dark-skin-tone-dark-skin-tone:' => '👩🏾❤️💋👩🏿',
+ ':kiss-woman-woman-medium-dark-skin-tone-light-skin-tone:' => '👩🏾❤️💋👩🏻',
+ ':kiss-woman-woman-medium-dark-skin-tone-medium-light-skin-tone:' => '👩🏾❤️💋👩🏼',
+ ':kiss-woman-woman-medium-dark-skin-tone-medium-skin-tone:' => '👩🏾❤️💋👩🏽',
+ ':kiss-woman-woman-medium-light-skin-tone:' => '👩🏼❤️💋👩🏼',
+ ':kiss-woman-woman-medium-light-skin-tone-dark-skin-tone:' => '👩🏼❤️💋👩🏿',
+ ':kiss-woman-woman-medium-light-skin-tone-light-skin-tone:' => '👩🏼❤️💋👩🏻',
+ ':kiss-woman-woman-medium-light-skin-tone-medium-dark-skin-tone:' => '👩🏼❤️💋👩🏾',
+ ':kiss-woman-woman-medium-light-skin-tone-medium-skin-tone:' => '👩🏼❤️💋👩🏽',
+ ':kiss-woman-woman-medium-skin-tone:' => '👩🏽❤️💋👩🏽',
+ ':kiss-woman-woman-medium-skin-tone-dark-skin-tone:' => '👩🏽❤️💋👩🏿',
+ ':kiss-woman-woman-medium-skin-tone-light-skin-tone:' => '👩🏽❤️💋👩🏻',
+ ':kiss-woman-woman-medium-skin-tone-medium-dark-skin-tone:' => '👩🏽❤️💋👩🏾',
+ ':kiss-woman-woman-medium-skin-tone-medium-light-skin-tone:' => '👩🏽❤️💋👩🏼',
];
diff --git a/src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php b/src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php
index 0bdbf51ed36d5..1dacfe9917742 100644
--- a/src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php
+++ b/src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php
@@ -206,6 +206,6 @@ public function testGetErrorMessageWithUninitializedTransliterator()
{
$transliterator = EmojiTransliterator::create('emoji-en');
- $this->assertFalse($transliterator->getErrorMessage());
+ $this->assertSame('', $transliterator->getErrorMessage());
}
}
diff --git a/src/Symfony/Component/ErrorHandler/DebugClassLoader.php b/src/Symfony/Component/ErrorHandler/DebugClassLoader.php
index b4709ad47f068..3a2ef4fb7d525 100644
--- a/src/Symfony/Component/ErrorHandler/DebugClassLoader.php
+++ b/src/Symfony/Component/ErrorHandler/DebugClassLoader.php
@@ -18,8 +18,10 @@
use Phake\IMock;
use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
use PHPUnit\Framework\MockObject\MockObject;
+use PHPUnit\Framework\MockObject\Stub;
use Prophecy\Prophecy\ProphecySubjectInterface;
use ProxyManager\Proxy\ProxyInterface;
+use Symfony\Component\DependencyInjection\Argument\LazyClosure;
use Symfony\Component\ErrorHandler\Internal\TentativeTypes;
use Symfony\Component\VarExporter\LazyObjectInterface;
@@ -256,6 +258,7 @@ public static function checkClasses(): bool
for (; $i < \count($symbols); ++$i) {
if (!is_subclass_of($symbols[$i], MockObject::class)
+ && !is_subclass_of($symbols[$i], Stub::class)
&& !is_subclass_of($symbols[$i], ProphecySubjectInterface::class)
&& !is_subclass_of($symbols[$i], Proxy::class)
&& !is_subclass_of($symbols[$i], ProxyInterface::class)
@@ -263,6 +266,7 @@ public static function checkClasses(): bool
&& !is_subclass_of($symbols[$i], LegacyProxy::class)
&& !is_subclass_of($symbols[$i], MockInterface::class)
&& !is_subclass_of($symbols[$i], IMock::class)
+ && !(is_subclass_of($symbols[$i], LazyClosure::class) && str_contains($symbols[$i], "@anonymous\0"))
) {
$loader->checkClass($symbols[$i]);
}
diff --git a/src/Symfony/Component/ErrorHandler/ErrorRenderer/HtmlErrorRenderer.php b/src/Symfony/Component/ErrorHandler/ErrorRenderer/HtmlErrorRenderer.php
index d0d1246a1ddbd..7bd9a083e53a4 100644
--- a/src/Symfony/Component/ErrorHandler/ErrorRenderer/HtmlErrorRenderer.php
+++ b/src/Symfony/Component/ErrorHandler/ErrorRenderer/HtmlErrorRenderer.php
@@ -233,6 +233,10 @@ private function formatFile(string $file, int $line, ?string $text = null): stri
$text .= ' at line '.$line;
}
+ if (!file_exists($file)) {
+ return $text;
+ }
+
$link = $this->fileLinkFormat->format($file, $line);
return \sprintf('%s ', $this->escape($link), $text);
diff --git a/src/Symfony/Component/ErrorHandler/Resources/assets/css/exception.css b/src/Symfony/Component/ErrorHandler/Resources/assets/css/exception.css
index b40c58db7c87f..6fbe7c0267152 100644
--- a/src/Symfony/Component/ErrorHandler/Resources/assets/css/exception.css
+++ b/src/Symfony/Component/ErrorHandler/Resources/assets/css/exception.css
@@ -57,7 +57,7 @@
--page-background: #36393e;
--color-text: #e0e0e0;
--color-muted: #777;
- --color-error: #d43934;
+ --color-error: #f76864;
--tab-background: #404040;
--tab-border-color: #737373;
--tab-active-border-color: #171717;
@@ -80,7 +80,7 @@
--metric-unit-color: #999;
--metric-label-background: #777;
--metric-label-color: #e0e0e0;
- --trace-selected-background: #71663acc;
+ --trace-selected-background: #5d5227cc;
--table-border: #444;
--table-background: #333;
--table-header: #555;
@@ -92,7 +92,7 @@
--background-error: #b0413e;
--highlight-comment: #dedede;
--highlight-default: var(--base-6);
- --highlight-keyword: #ff413c;
+ --highlight-keyword: #de8986;
--highlight-string: #70a6fd;
--base-0: #2e3136;
--base-1: #444;
diff --git a/src/Symfony/Component/ErrorHandler/Resources/assets/js/exception.js b/src/Symfony/Component/ErrorHandler/Resources/assets/js/exception.js
index 22ce675dfb7d2..89c0083348afb 100644
--- a/src/Symfony/Component/ErrorHandler/Resources/assets/js/exception.js
+++ b/src/Symfony/Component/ErrorHandler/Resources/assets/js/exception.js
@@ -145,19 +145,17 @@
}
addEventListener(toggles[i], 'click', function(e) {
- e.preventDefault();
+ var toggle = e.currentTarget;
- if ('' !== window.getSelection().toString()) {
- /* Don't do anything on text selection */
+ if (e.target.closest('a, span[data-clipboard-text], .sf-toggle') !== toggle) {
return;
}
- var toggle = e.target || e.srcElement;
+ e.preventDefault();
- /* needed because when the toggle contains HTML contents, user can click */
- /* on any of those elements instead of their parent '.sf-toggle' element */
- while (!hasClass(toggle, 'sf-toggle')) {
- toggle = toggle.parentNode;
+ if ('' !== window.getSelection().toString()) {
+ /* Don't do anything on text selection */
+ return;
}
var element = document.querySelector(toggle.getAttribute('data-toggle-selector'));
@@ -182,22 +180,6 @@
toggle.innerHTML = currentContent !== altContent ? altContent : originalContent;
});
- /* Prevents from disallowing clicks on links inside toggles */
- var toggleLinks = toggles[i].querySelectorAll('a');
- for (var j = 0; j < toggleLinks.length; j++) {
- addEventListener(toggleLinks[j], 'click', function(e) {
- e.stopPropagation();
- });
- }
-
- /* Prevents from disallowing clicks on "copy to clipboard" elements inside toggles */
- var copyToClipboardElements = toggles[i].querySelectorAll('span[data-clipboard-text]');
- for (var k = 0; k < copyToClipboardElements.length; k++) {
- addEventListener(copyToClipboardElements[k], 'click', function(e) {
- e.stopPropagation();
- });
- }
-
toggles[i].setAttribute('data-processed', 'true');
}
})();
diff --git a/src/Symfony/Component/ErrorHandler/Tests/phpt/fatal_with_nested_handlers.phpt b/src/Symfony/Component/ErrorHandler/Tests/phpt/fatal_with_nested_handlers.phpt
index cfb10d03dafdd..80a7645770a62 100644
--- a/src/Symfony/Component/ErrorHandler/Tests/phpt/fatal_with_nested_handlers.phpt
+++ b/src/Symfony/Component/ErrorHandler/Tests/phpt/fatal_with_nested_handlers.phpt
@@ -24,7 +24,7 @@ var_dump([
$eHandler[0]->setExceptionHandler('print_r');
if (true) {
- class Broken implements \JsonSerializable
+ class Broken implements \Iterator
{
}
}
@@ -37,17 +37,17 @@ array(1) {
}
object(Symfony\Component\ErrorHandler\Error\FatalError)#%d (%d) {
["message":protected]=>
- string(186) "Error: Class Symfony\Component\ErrorHandler\Broken contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (JsonSerializable::jsonSerialize)"
+ string(209) "Error: Class Symfony\Component\ErrorHandler\Broken contains 5 abstract methods and must therefore be declared abstract or implement the remaining methods (Iterator::current, Iterator::next, Iterator::key, ...)"
%a
["error":"Symfony\Component\ErrorHandler\Error\FatalError":private]=>
- array(4) {
+ array(%d) {
["type"]=>
int(1)
["message"]=>
- string(179) "Class Symfony\Component\ErrorHandler\Broken contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (JsonSerializable::jsonSerialize)"
+ string(202) "Class Symfony\Component\ErrorHandler\Broken contains 5 abstract methods and must therefore be declared abstract or implement the remaining methods (Iterator::current, Iterator::next, Iterator::key, ...)"
["file"]=>
string(%d) "%s"
["line"]=>
- int(%d)
+ int(%d)%A
}
}
diff --git a/src/Symfony/Component/Finder/Comparator/DateComparator.php b/src/Symfony/Component/Finder/Comparator/DateComparator.php
index f3538aaea9566..bcf93cfb6a523 100644
--- a/src/Symfony/Component/Finder/Comparator/DateComparator.php
+++ b/src/Symfony/Component/Finder/Comparator/DateComparator.php
@@ -36,7 +36,7 @@ public function __construct(string $test)
throw new \InvalidArgumentException(\sprintf('"%s" is not a valid date.', $matches[2]));
}
- $operator = $matches[1] ?? '==';
+ $operator = $matches[1] ?: '==';
if ('since' === $operator || 'after' === $operator) {
$operator = '>';
}
diff --git a/src/Symfony/Component/Finder/Tests/Comparator/DateComparatorTest.php b/src/Symfony/Component/Finder/Tests/Comparator/DateComparatorTest.php
index 47bcc4838bd26..e50b713062638 100644
--- a/src/Symfony/Component/Finder/Tests/Comparator/DateComparatorTest.php
+++ b/src/Symfony/Component/Finder/Tests/Comparator/DateComparatorTest.php
@@ -59,6 +59,7 @@ public static function getTestData()
['after 2005-10-10', [strtotime('2005-10-15')], [strtotime('2005-10-09')]],
['since 2005-10-10', [strtotime('2005-10-15')], [strtotime('2005-10-09')]],
['!= 2005-10-10', [strtotime('2005-10-11')], [strtotime('2005-10-10')]],
+ ['2005-10-10', [strtotime('2005-10-10')], [strtotime('2005-10-11')]],
];
}
}
diff --git a/src/Symfony/Component/Form/DependencyInjection/FormPass.php b/src/Symfony/Component/Form/DependencyInjection/FormPass.php
index 1d2b2a87e5c42..bec1782d40995 100644
--- a/src/Symfony/Component/Form/DependencyInjection/FormPass.php
+++ b/src/Symfony/Component/Form/DependencyInjection/FormPass.php
@@ -47,6 +47,7 @@ private function processFormTypes(ContainerBuilder $container): Reference
// Get service locator argument
$servicesMap = [];
$namespaces = ['Symfony\Component\Form\Extension\Core\Type' => true];
+ $csrfTokenIds = [];
// Builds an array with fully-qualified type class names as keys and service IDs as values
foreach ($container->findTaggedServiceIds('form.type', true) as $serviceId => $tag) {
@@ -54,6 +55,10 @@ private function processFormTypes(ContainerBuilder $container): Reference
$serviceDefinition = $container->getDefinition($serviceId);
$servicesMap[$formType = $serviceDefinition->getClass()] = new Reference($serviceId);
$namespaces[substr($formType, 0, strrpos($formType, '\\'))] = true;
+
+ if (isset($tag[0]['csrf_token_id'])) {
+ $csrfTokenIds[$formType] = $tag[0]['csrf_token_id'];
+ }
}
if ($container->hasDefinition('console.command.form_debug')) {
@@ -62,6 +67,14 @@ private function processFormTypes(ContainerBuilder $container): Reference
$commandDefinition->setArgument(2, array_keys($servicesMap));
}
+ if ($csrfTokenIds && $container->hasDefinition('form.type_extension.csrf')) {
+ $csrfExtension = $container->getDefinition('form.type_extension.csrf');
+
+ if (8 <= \count($csrfExtension->getArguments())) {
+ $csrfExtension->replaceArgument(7, $csrfTokenIds);
+ }
+ }
+
return ServiceLocatorTagPass::register($container, $servicesMap);
}
diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php
index b03f8da4444fe..496c48bc12c9a 100644
--- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php
+++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformer.php
@@ -39,14 +39,14 @@ public function __construct(
/**
* Transforms a normalized format into a localized money string.
*
- * @param int|float|null $value Normalized number
+ * @param int|float|string|null $value Normalized number
*
* @throws TransformationFailedException if the given value is not numeric or
* if the value cannot be transformed
*/
public function transform(mixed $value): string
{
- if (null !== $value && 1 !== $this->divisor) {
+ if (null !== $value && '' !== $value && 1 !== $this->divisor) {
if (!is_numeric($value)) {
throw new TransformationFailedException('Expected a numeric.');
}
diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php
index 3020dd1483c28..ffcbc1feee6d7 100644
--- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php
+++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php
@@ -41,14 +41,14 @@ public function __construct(
/**
* Transforms a number type into localized number.
*
- * @param int|float|null $value Number value
+ * @param int|float|string|null $value Number value
*
* @throws TransformationFailedException if the given value is not numeric
* or if the value cannot be transformed
*/
public function transform(mixed $value): string
{
- if (null === $value) {
+ if (null === $value || '' === $value) {
return '';
}
diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
index 35a3175924ed4..fc083ee40d516 100644
--- a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
+++ b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
@@ -275,6 +275,8 @@ public function buildView(FormView $view, FormInterface $form, array $options):
public function finishView(FormView $view, FormInterface $form, array $options): void
{
+ $view->vars['duplicate_preferred_choices'] = $options['duplicate_preferred_choices'];
+
if ($options['expanded']) {
// Radio buttons should have the same name as the parent
$childName = $view->vars['full_name'];
diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php
index e4aee6e8dee8e..36b430e144b58 100644
--- a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php
+++ b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php
@@ -313,7 +313,7 @@ public function configureOptions(OptionsResolver $resolver): void
$resolver->setAllowedTypes('months', 'array');
$resolver->setAllowedTypes('days', 'array');
$resolver->setAllowedTypes('input_format', 'string');
- $resolver->setAllowedTypes('calendar', ['null', \IntlCalendar::class]);
+ $resolver->setAllowedTypes('calendar', ['null', 'int', \IntlCalendar::class]);
$resolver->setInfo('calendar', 'The calendar to use for formatting and parsing the date. The value should be an instance of \IntlCalendar. By default, the Gregorian calendar with the default locale is used.');
diff --git a/src/Symfony/Component/Form/Extension/Core/Type/WeekType.php b/src/Symfony/Component/Form/Extension/Core/Type/WeekType.php
index aea4a6c564889..c4827604e5f0c 100644
--- a/src/Symfony/Component/Form/Extension/Core/Type/WeekType.php
+++ b/src/Symfony/Component/Form/Extension/Core/Type/WeekType.php
@@ -39,7 +39,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
} else {
$yearOptions = $weekOptions = [
'error_bubbling' => true,
- 'empty_data' => '',
];
// when the form is compound the entries of the array are ignored in favor of children data
// so we need to handle the cascade setting here
diff --git a/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php b/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php
index 10367ae5ffe65..a12b9a41ee292 100644
--- a/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php
+++ b/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php
@@ -37,7 +37,7 @@ public function __construct(
private ?string $translationDomain = null,
private ?ServerParams $serverParams = null,
private array $fieldAttr = [],
- private ?string $defaultTokenId = null,
+ private string|array|null $defaultTokenId = null,
) {
}
@@ -50,11 +50,17 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
return;
}
+ $csrfTokenId = $options['csrf_token_id']
+ ?: $this->defaultTokenId[$builder->getType()->getInnerType()::class]
+ ?? $builder->getName()
+ ?: $builder->getType()->getInnerType()::class;
+ $builder->setAttribute('csrf_token_id', $csrfTokenId);
+
$builder
->addEventSubscriber(new CsrfValidationListener(
$options['csrf_field_name'],
$options['csrf_token_manager'],
- $options['csrf_token_id'] ?: ($builder->getName() ?: $builder->getType()->getInnerType()::class),
+ $csrfTokenId,
$options['csrf_message'],
$this->translator,
$this->translationDomain,
@@ -70,13 +76,13 @@ public function finishView(FormView $view, FormInterface $form, array $options):
{
if ($options['csrf_protection'] && !$view->parent && $options['compound']) {
$factory = $form->getConfig()->getFormFactory();
- $tokenId = $options['csrf_token_id'] ?: ($form->getName() ?: $form->getConfig()->getType()->getInnerType()::class);
+ $tokenId = $form->getConfig()->getAttribute('csrf_token_id');
$data = (string) $options['csrf_token_manager']->getToken($tokenId);
$csrfForm = $factory->createNamed($options['csrf_field_name'], HiddenType::class, $data, [
'block_prefix' => 'csrf_token',
'mapped' => false,
- 'attr' => $this->fieldAttr + ['autocomplete' => 'off'],
+ 'attr' => $this->fieldAttr,
]);
$view->children[$options['csrf_field_name']] = $csrfForm->createView($view);
@@ -85,9 +91,11 @@ public function finishView(FormView $view, FormInterface $form, array $options):
public function configureOptions(OptionsResolver $resolver): void
{
- if ($defaultTokenId = $this->defaultTokenId) {
+ if (\is_string($defaultTokenId = $this->defaultTokenId) && $defaultTokenId) {
$defaultTokenManager = $this->defaultTokenManager;
$defaultTokenId = static fn (Options $options) => $options['csrf_token_manager'] === $defaultTokenManager ? $defaultTokenId : null;
+ } else {
+ $defaultTokenId = null;
}
$resolver->setDefaults([
diff --git a/src/Symfony/Component/Form/Resources/translations/validators.es.xlf b/src/Symfony/Component/Form/Resources/translations/validators.es.xlf
index 301e2b33f7ed3..a9989737c33eb 100644
--- a/src/Symfony/Component/Form/Resources/translations/validators.es.xlf
+++ b/src/Symfony/Component/Form/Resources/translations/validators.es.xlf
@@ -52,7 +52,7 @@
Please enter a valid date.
- Por favor, ingrese una fecha valida.
+ Por favor, ingrese una fecha válida.
Please select a valid file.
diff --git a/src/Symfony/Component/Form/Resources/translations/validators.pt.xlf b/src/Symfony/Component/Form/Resources/translations/validators.pt.xlf
index 755108f357f5a..673e79f420223 100644
--- a/src/Symfony/Component/Form/Resources/translations/validators.pt.xlf
+++ b/src/Symfony/Component/Form/Resources/translations/validators.pt.xlf
@@ -24,7 +24,7 @@
The selected choice is invalid.
- A escolha seleccionada é inválida.
+ A escolha selecionada é inválida.
The collection is invalid.
diff --git a/src/Symfony/Component/Form/Tests/DependencyInjection/FormPassTest.php b/src/Symfony/Component/Form/Tests/DependencyInjection/FormPassTest.php
index e9a7b50346032..f0ccd3f095fb0 100644
--- a/src/Symfony/Component/Form/Tests/DependencyInjection/FormPassTest.php
+++ b/src/Symfony/Component/Form/Tests/DependencyInjection/FormPassTest.php
@@ -21,6 +21,7 @@
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Command\DebugCommand;
use Symfony\Component\Form\DependencyInjection\FormPass;
+use Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension;
use Symfony\Component\Form\FormRegistry;
/**
@@ -95,6 +96,25 @@ public function testAddTaggedTypesToDebugCommand()
);
}
+ public function testAddTaggedTypesToCsrfTypeExtension()
+ {
+ $container = $this->createContainerBuilder();
+
+ $container->register('form.registry', FormRegistry::class);
+ $container->register('form.type_extension.csrf', FormTypeCsrfExtension::class)
+ ->setArguments([null, true, '_token', null, 'validator.translation_domain', null, [], null])
+ ->setPublic(true);
+
+ $container->setDefinition('form.extension', $this->createExtensionDefinition());
+ $container->register('my.type1', __CLASS__.'_Type1')->addTag('form.type', ['csrf_token_id' => 'the_token_id']);
+ $container->register('my.type2', __CLASS__.'_Type2')->addTag('form.type');
+
+ $container->compile();
+
+ $csrfDefinition = $container->getDefinition('form.type_extension.csrf');
+ $this->assertSame([__CLASS__.'_Type1' => 'the_token_id'], $csrfDefinition->getArgument(7));
+ }
+
/**
* @dataProvider addTaggedTypeExtensionsDataProvider
*/
diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php
index 2be154bc814dd..b9906c236ab3c 100644
--- a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php
+++ b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php
@@ -16,6 +16,7 @@
use Symfony\Component\Form\Extension\Core\DataTransformer\BaseDateTimeTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer;
use Symfony\Component\Form\Tests\Extension\Core\DataTransformer\Traits\DateTimeEqualsTrait;
+use Symfony\Component\Intl\Intl;
use Symfony\Component\Intl\Util\IntlTestHelper;
class DateTimeToLocalizedStringTransformerTest extends BaseDateTimeTransformerTestCase
@@ -235,6 +236,10 @@ public function testReverseTransformFullTime()
public function testReverseTransformFromDifferentLocale()
{
+ if (version_compare(Intl::getIcuVersion(), '71.1', '>')) {
+ $this->markTestSkipped('ICU version 71.1 or lower is required.');
+ }
+
\Locale::setDefault('en_US');
$transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC');
diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php
index e5733ad96abb5..689c6f0d4da32 100644
--- a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php
+++ b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/MoneyToLocalizedStringTransformerTest.php
@@ -54,6 +54,13 @@ public function testTransformExpectsNumeric()
$transformer->transform('abcd');
}
+ public function testTransformEmptyString()
+ {
+ $transformer = new MoneyToLocalizedStringTransformer(null, null, null, 100);
+
+ $this->assertSame('', $transformer->transform(''));
+ }
+
public function testTransformEmpty()
{
$transformer = new MoneyToLocalizedStringTransformer();
diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php
index 37448db51030a..c0344b9f232ea 100644
--- a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php
+++ b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php
@@ -49,6 +49,7 @@ public static function provideTransformations()
{
return [
[null, '', 'de_AT'],
+ ['', '', 'de_AT'],
[1, '1', 'de_AT'],
[1.5, '1,5', 'de_AT'],
[1234.5, '1234,5', 'de_AT'],
diff --git a/src/Symfony/Component/Form/Tests/Fixtures/TestExtension.php b/src/Symfony/Component/Form/Tests/Fixtures/TestExtension.php
index 44725a69c71a5..2704ee5303ad2 100644
--- a/src/Symfony/Component/Form/Tests/Fixtures/TestExtension.php
+++ b/src/Symfony/Component/Form/Tests/Fixtures/TestExtension.php
@@ -34,7 +34,7 @@ public function addType(FormTypeInterface $type)
public function getType($name): FormTypeInterface
{
- return $this->types[$name] ?? null;
+ return $this->types[$name];
}
public function hasType($name): bool
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-attribute-allow-list.json b/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-attribute-allow-list.json
new file mode 100644
index 0000000000000..1b7bee611fe4a
--- /dev/null
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-attribute-allow-list.json
@@ -0,0 +1,213 @@
+[
+ "abbr",
+ "accept",
+ "accept-charset",
+ "accesskey",
+ "action",
+ "align",
+ "alink",
+ "allow",
+ "allowfu
F438
llscreen",
+ "allowpaymentrequest",
+ "alt",
+ "anchor",
+ "archive",
+ "as",
+ "async",
+ "autocapitalize",
+ "autocomplete",
+ "autocorrect",
+ "autofocus",
+ "autopictureinpicture",
+ "autoplay",
+ "axis",
+ "background",
+ "behavior",
+ "bgcolor",
+ "border",
+ "bordercolor",
+ "capture",
+ "cellpadding",
+ "cellspacing",
+ "challenge",
+ "char",
+ "charoff",
+ "charset",
+ "checked",
+ "cite",
+ "class",
+ "classid",
+ "clear",
+ "code",
+ "codebase",
+ "codetype",
+ "color",
+ "cols",
+ "colspan",
+ "compact",
+ "content",
+ "contenteditable",
+ "controls",
+ "controlslist",
+ "conversiondestination",
+ "coords",
+ "crossorigin",
+ "csp",
+ "data",
+ "datetime",
+ "declare",
+ "decoding",
+ "default",
+ "defer",
+ "dir",
+ "direction",
+ "dirname",
+ "disabled",
+ "disablepictureinpicture",
+ "disableremoteplayback",
+ "disallowdocumentaccess",
+ "download",
+ "draggable",
+ "elementtiming",
+ "enctype",
+ "end",
+ "enterkeyhint",
+ "event",
+ "exportparts",
+ "face",
+ "for",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "frame",
+ "frameborder",
+ "headers",
+ "height",
+ "hidden",
+ "high",
+ "href",
+ "hreflang",
+ "hreftranslate",
+ "hspace",
+ "http-equiv",
+ "id",
+ "imagesizes",
+ "imagesrcset",
+ "importance",
+ "impressiondata",
+ "impressionexpiry",
+ "incremental",
+ "inert",
+ "inputmode",
+ "integrity",
+ "invisible",
+ "is",
+ "ismap",
+ "keytype",
+ "kind",
+ "label",
+ "lang",
+ "language",
+ "latencyhint",
+ "leftmargin",
+ "link",
+ "list",
+ "loading",
+ "longdesc",
+ "loop",
+ "low",
+ "lowsrc",
+ "manifest",
+ "marginheight",
+ "marginwidth",
+ "max",
+ "maxlength",
+ "mayscript",
+ "media",
+ "method",
+ "min",
+ "minlength",
+ "multiple",
+ "muted",
+ "name",
+ "nohref",
+ "nomodule",
+ "nonce",
+ "noresize",
+ "noshade",
+ "novalidate",
+ "nowrap",
+ "object",
+ "open",
+ "optimum",
+ "part",
+ "pattern",
+ "ping",
+ "placeholder",
+ "playsinline",
+ "policy",
+ "poster",
+ "preload",
+ "pseudo",
+ "readonly",
+ "referrerpolicy",
+ "rel",
+ "reportingorigin",
+ "required",
+ "resources",
+ "rev",
+ "reversed",
+ "role",
+ "rows",
+ "rowspan",
+ "rules",
+ "sandbox",
+ "scheme",
+ "scope",
+ "scopes",
+ "scrollamount",
+ "scrolldelay",
+ "scrolling",
+ "select",
+ "selected",
+ "shadowroot",
+ "shadowrootdelegatesfocus",
+ "shape",
+ "size",
+ "sizes",
+ "slot",
+ "span",
+ "spellcheck",
+ "src",
+ "srcdoc",
+ "srclang",
+ "srcset",
+ "standby",
+ "start",
+ "step",
+ "style",
+ "summary",
+ "tabindex",
+ "target",
+ "text",
+ "title",
+ "topmargin",
+ "translate",
+ "truespeed",
+ "trusttoken",
+ "type",
+ "usemap",
+ "valign",
+ "value",
+ "valuetype",
+ "version",
+ "virtualkeyboardpolicy",
+ "vlink",
+ "vspace",
+ "webkitdirectory",
+ "width",
+ "wrap"
+]
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-element-allow-list.json b/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-element-allow-list.json
new file mode 100644
index 0000000000000..cf470cd3f8507
--- /dev/null
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/Fixtures/baseline-element-allow-list.json
@@ -0,0 +1,130 @@
+[
+ "a",
+ "abbr",
+ "acronym",
+ "address",
+ "area",
+ "article",
+ "aside",
+ "audio",
+ "b",
+ "basefont",
+ "bdi",
+ "bdo",
+ "bgsound",
+ "big",
+ "blockquote",
+ "body",
+ "br",
+ "button",
+ "canvas",
+ "caption",
+ "center",
+ "cite",
+ "code",
+ "col",
+ "colgroup",
+ "command",
+ "data",
+ "datalist",
+ "dd",
+ "del",
+ "details",
+ "dfn",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "em",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "font",
+ "footer",
+ "form",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hgroup",
+ "hr",
+ "html",
+ "i",
+ "image",
+ "img",
+ "input",
+ "ins",
+ "kbd",
+ "keygen",
+ "label",
+ "layer",
+ "legend",
+ "li",
+ "link",
+ "listing",
+ "main",
+ "map",
+ "mark",
+ "marquee",
+ "menu",
+ "meta",
+ "meter",
+ "nav",
+ "nobr",
+ "ol",
+ "optgroup",
+ "option",
+ "output",
+ "p",
+ "picture",
+ "plaintext",
+ "popup",
+ "portal",
+ "pre",
+ "progress",
+ "q",
+ "rb",
+ "rp",
+ "rt",
+ "rtc",
+ "ruby",
+ "s",
+ "samp",
+ "section",
+ "select",
+ "selectmenu",
+ "slot",
+ "small",
+ "source",
+ "span",
+ "strike",
+ "strong",
+ "style",
+ "sub",
+ "summary",
+ "sup",
+ "table",
+ "tbody",
+ "td",
+ "template",
+ "textarea",
+ "tfoot",
+ "th",
+ "thead",
+ "time",
+ "title",
+ "tr",
+ "track",
+ "tt",
+ "u",
+ "ul",
+ "var",
+ "video",
+ "wbr",
+ "xmp"
+]
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/Reference/W3CReferenceTest.php b/src/Symfony/Component/HtmlSanitizer/Tests/Reference/W3CReferenceTest.php
index 6cb67c2b0849b..51a4a7d9a21c0 100644
--- a/src/Symfony/Component/HtmlSanitizer/Tests/Reference/W3CReferenceTest.php
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/Reference/W3CReferenceTest.php
@@ -16,39 +16,24 @@
/**
* Check that the W3CReference class is up to date with the standard resources.
- *
- * @see https://github.com/WICG/sanitizer-api/blob/main/resources
*/
class W3CReferenceTest extends TestCase
{
- private const STANDARD_RESOURCES = [
- 'elements' => 'https://raw.githubusercontent.com/WICG/sanitizer-api/main/resources/baseline-element-allow-list.json',
- 'attributes' => 'https://raw.githubusercontent.com/WICG/sanitizer-api/main/resources/baseline-attribute-allow-list.json',
- ];
-
public function testElements()
{
- if (!\in_array('https', stream_get_wrappers(), true)) {
- $this->markTestSkipped('"https" stream wrapper is not enabled.');
- }
-
$referenceElements = array_values(array_merge(array_keys(W3CReference::HEAD_ELEMENTS), array_keys(W3CReference::BODY_ELEMENTS)));
sort($referenceElements);
$this->assertSame(
- $this->getResourceData(self::STANDARD_RESOURCES['elements']),
+ $this->getResourceData(__DIR__.'/../Fixtures/baseline-element-allow-list.json'),
$referenceElements
);
}
public function testAttributes()
{
- if (!\in_array('https', stream_get_wrappers(), true)) {
- $this->markTestSkipped('"https" stream wrapper is not enabled.');
- }
-
$this->assertSame(
- $this->getResourceData(self::STANDARD_RESOURCES['attributes']),
+ $this->getResourceData(__DIR__.'/../Fixtures/baseline-attribute-allow-list.json'),
array_keys(W3CReference::ATTRIBUTES)
);
}
@@ -56,7 +41,7 @@ public function testAttributes()
private function getResourceData(string $resource): array
{
return json_decode(
- file_get_contents($resource, false, stream_context_create(['ssl' => ['verify_peer' => false, 'verify_peer_name' => false]])),
+ file_get_contents($resource),
true,
512,
\JSON_THROW_ON_ERROR
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php b/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php
index fe0e0d39cd9d9..391895024e456 100644
--- a/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php
@@ -274,6 +274,15 @@ public static function provideSanitize(): iterable
'expected' => null,
];
+ yield [
+ 'input' => 'https://trusted.com/link.php',
+ 'allowedSchemes' => ['http', 'https'],
+ 'allowedHosts' => ['subdomain.trusted.com', 'trusted.com'],
+ 'forceHttps' => false,
+ 'allowRelative' => false,
+ 'expected' => 'https://trusted.com/link.php',
+ ];
+
// Allow relative
yield [
'input' => '/link.php',
@@ -358,10 +367,10 @@ public static function provideParse(): iterable
'non-special://:@untrusted.com/x' => ['scheme' => 'non-special', 'host' => 'untrusted.com'],
'http:foo.com' => ['scheme' => 'http', 'host' => null],
" :foo.com \n" => null,
- ' foo.com ' => ['scheme' => null, 'host' => null],
+ ' foo.com ' => null,
'a: foo.com' => null,
- 'http://f:21/ b ? d # e ' => ['scheme' => 'http', 'host' => 'f'],
- 'lolscheme:x x#x x' => ['scheme' => 'lolscheme', 'host' => null],
+ 'http://f:21/ b ? d # e ' => null,
+ 'lolscheme:x x#x x' => null,
'http://f:/c' => ['scheme' => 'http', 'host' => 'f'],
'http://f:0/c' => ['scheme' => 'http', 'host' => 'f'],
'http://f:00000000000000/c' => ['scheme' => 'http', 'host' => 'f'],
@@ -434,7 +443,7 @@ public static function provideParse(): iterable
'javascript:example.com/' => ['scheme' => 'javascript', 'host' => null],
'mailto:example.com/' => ['scheme' => 'mailto', 'host' => null],
'/a/b/c' => ['scheme' => null, 'host' => null],
- '/a/ /c' => ['scheme' => null, 'host' => null],
+ '/a/ /c' => null,
'/a%2fc' => ['scheme' => null, 'host' => null],
'/a/%2f/c' => ['scheme' => null, 'host' => null],
'#β' => ['scheme' => null, 'host' => null],
@@ -495,10 +504,10 @@ public static function provideParse(): iterable
'http://example.com/你好你好' => ['scheme' => 'http', 'host' => 'example.com'],
'http://example.com/‥/foo' => ['scheme' => 'http', 'host' => 'example.com'],
"http://example.com/\u{feff}/foo" => ['scheme' => 'http', 'host' => 'example.com'],
- "http://example.com\u{002f}\u{202e}\u{002f}\u{0066}\u{006f}\u{006f}\u{002f}\u{202d}\u{002f}\u{0062}\u{0061}\u{0072}\u{0027}\u{0020}" => ['scheme' => 'http', 'host' => 'example.com'],
+ "http://example.com\u{002f}\u{202e}\u{002f}\u{0066}\u{006f}\u{006f}\u{002f}\u{202d}\u{002f}\u{0062}\u{0061}\u{0072}\u{0027}\u{0020}" => null,
'http://www.google.com/foo?bar=baz#' => ['scheme' => 'http', 'host' => 'www.google.com'],
- 'http://www.google.com/foo?bar=baz# »' => ['scheme' => 'http', 'host' => 'www.google.com'],
- 'data:test# »' => ['scheme' => 'data', 'host' => null],
+ 'http://www.google.com/foo?bar=baz# »' => null,
+ 'data:test# »' => null,
'http://www.google.com' => ['scheme' => 'http', 'host' => 'www.google.com'],
'http://192.0x00A80001' => ['scheme' => 'http', 'host' => '192.0x00A80001'],
'http://www/foo%2Ehtml' => ['scheme' => 'http', 'host' => 'www'],
@@ -559,8 +568,8 @@ public static function provideParse(): iterable
'http://你好你好' => ['scheme' => 'http', 'host' => '你好你好'],
'https://faß.ExAmPlE/' => ['scheme' => 'https', 'host' => 'faß.ExAmPlE'],
'sc://faß.ExAmPlE/' => ['scheme' => 'sc', 'host' => 'faß.ExAmPlE'],
- 'http://%30%78%63%30%2e%30%32%35%30.01' => ['scheme' => 'http', 'host' => '%30%78%63%30%2e%30%32%35%30.01'],
- 'http://%30%78%63%30%2e%30%32%35%30.01%2e' => ['scheme' => 'http', 'host' => '%30%78%63%30%2e%30%32%35%30.01%2e'],
+ 'http://%30%78%63%30%2e%30%32%35%30.01' => null,
+ 'http://%30%78%63%30%2e%30%32%35%30.01%2e' => null,
'http://0Xc0.0250.01' => ['scheme' => 'http', 'host' => '0Xc0.0250.01'],
'http://./' => ['scheme' => 'http', 'host' => '.'],
'http://../' => ['scheme' => 'http', 'host' => '..'],
@@ -680,7 +689,7 @@ public static function provideParse(): iterable
'urn:ietf:rfc:2648' => ['scheme' => 'urn', 'host' => null],
'tag:joe@example.org,2001:foo/bar' => ['scheme' => 'tag', 'host' => null],
'non-special://%E2%80%A0/' => ['scheme' => 'non-special', 'host' => '%E2%80%A0'],
- 'non-special://H%4fSt/path' => ['scheme' => 'non-special', 'host' => 'H%4fSt'],
+ 'non-special://H%4fSt/path' => null,
'non-special://[1:2:0:0:5:0:0:0]/' => ['scheme' => 'non-special', 'host' => '[1:2:0:0:5:0:0:0]'],
'non-special://[1:2:0:0:0:0:0:3]/' => ['scheme' => 'non-special', 'host' => '[1:2:0:0:0:0:0:3]'],
'non-special://[1:2::3]:80/' => ['scheme' => 'non-special', 'host' => '[1:2::3]'],
@@ -706,11 +715,11 @@ public static function provideParse(): iterable
'test-a-colon-slash-slash-b.html' => ['scheme' => null, 'host' => null],
'http://example.org/test?a#bc' => ['scheme' => 'http', 'host' => 'example.org'],
'http:\\/\\/f:b\\/c' => ['scheme' => 'http', 'host' => null],
- 'http:\\/\\/f: \\/c' => ['scheme' => 'http', 'host' => null],
+ 'http:\\/\\/f: \\/c' => null,
'http:\\/\\/f:fifty-two\\/c' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/f:999999\\/c' => ['scheme' => 'http', 'host' => null],
'non-special:\\/\\/f:999999\\/c' => ['scheme' => 'non-special', 'host' => null],
- 'http:\\/\\/f: 21 \\/ b ? d # e ' => ['scheme' => 'http', 'host' => null],
+ 'http:\\/\\/f: 21 \\/ b ? d # e ' => null,
'http:\\/\\/[1::2]:3:4' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/2001::1' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/2001::1]' => ['scheme' => 'http', 'host' => null],
@@ -734,8 +743,8 @@ public static function provideParse(): iterable
'http:@:www.example.com' => ['scheme' => 'http', 'host' => null],
'http:\\/@:www.example.com' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/@:www.example.com' => ['scheme' => 'http', 'host' => null],
- 'http:\\/\\/example example.com' => ['scheme' => 'http', 'host' => null],
- 'http:\\/\\/Goo%20 goo%7C|.com' => ['scheme' => 'http', 'host' => null],
+ 'http:\\/\\/example example.com' => null,
+ 'http:\\/\\/Goo%20 goo%7C|.com' => null,
'http:\\/\\/[]' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/[:]' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/GOO\\u00a0\\u3000goo.com' => ['scheme' => 'http', 'host' => null],
@@ -752,8 +761,8 @@ public static function provideParse(): iterable
'http:\\/\\/hello%00' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/192.168.0.257' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/%3g%78%63%30%2e%30%32%35%30%2E.01' => ['scheme' => 'http', 'host' => null],
- 'http:\\/\\/192.168.0.1 hello' => ['scheme' => 'http', 'host' => null],
- 'https:\\/\\/x x:12' => ['scheme' => 'https', 'host' => null],
+ 'http:\\/\\/192.168.0.1 hello' => null,
+ 'https:\\/\\/x x:12' => null,
'http:\\/\\/[www.google.com]\\/' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/[google.com]' => ['scheme' => 'http', 'host' => null],
'http:\\/\\/[::1.2.3.4x]' => ['scheme' => 'http', 'host' => null],
@@ -763,7 +772,7 @@ public static function provideParse(): iterable
'..\\/i' => ['scheme' => null, 'host' => null],
'\\/i' => ['scheme' => null, 'host' => null],
'sc:\\/\\/\\u0000\\/' => ['scheme' => 'sc', 'host' => null],
- 'sc:\\/\\/ \\/' => ['scheme' => 'sc', 'host' => null],
+ 'sc:\\/\\/ \\/' => null,
'sc:\\/\\/@\\/' => ['scheme' => 'sc', 'host' => null],
'sc:\\/\\/te@s:t@\\/' => ['scheme' => 'sc', 'host' => null],
'sc:\\/\\/:\\/' => ['scheme' => 'sc', 'host' => null],
diff --git a/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php b/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php
index a806981de770f..9920ecd88da4a 100644
--- a/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php
+++ b/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php
@@ -94,7 +94,17 @@ public static function parse(string $url): ?array
}
try {
- return UriString::parse($url);
+ $parsedUrl = UriString::parse($url);
+
+ if (preg_match('/\s/', $url)) {
+ return null;
+ }
+
+ if (isset($parsedUrl['host']) && self::decodeUnreservedCharacters($parsedUrl['host']) !== $parsedUrl['host']) {
+ return null;
+ }
+
+ return $parsedUrl;
} catch (SyntaxError) {
return null;
}
@@ -126,11 +136,23 @@ private static function matchAllowedHostParts(array $uriParts, array $trustedPar
{
// Check each chunk of the domain is valid
foreach ($trustedParts as $key => $trustedPart) {
- if ($uriParts[$key] !== $trustedPart) {
+ if (!array_key_exists($key, $uriParts) || $uriParts[$key] !== $trustedPart) {
return false;
}
}
return true;
}
+
+ /**
+ * Implementation borrowed from League\Uri\Encoder::decodeUnreservedCharacters().
+ */
+ private static function decodeUnreservedCharacters(string $host): string
+ {
+ return preg_replace_callback(
+ ',%(2[1-9A-Fa-f]|[3-7][0-9A-Fa-f]|61|62|64|65|66|7[AB]|5F),',
+ static fn (array $matches): string => rawurldecode($matches[0]),
+ $host
+ );
+ }
}
diff --git a/src/Symfony/Component/HttpClient/CurlHttpClient.php b/src/Symfony/Component/HttpClient/CurlHttpClient.php
index 88feb64caef81..244d8803541fa 100644
--- a/src/Symfony/Component/HttpClient/CurlHttpClient.php
+++ b/src/Symfony/Component/HttpClient/CurlHttpClient.php
@@ -197,13 +197,12 @@ public function request(string $method, string $url, array $options = []): Respo
$curlopts[\CURLOPT_RESOLVE] = $resolve;
}
+ $curlopts[\CURLOPT_CUSTOMREQUEST] = $method;
if ('POST' === $method) {
// Use CURLOPT_POST to have browser-like POST-to-GET redirects for 301, 302 and 303
$curlopts[\CURLOPT_POST] = true;
} elseif ('HEAD' === $method) {
$curlopts[\CURLOPT_NOBODY] = true;
- } else {
- $curlopts[\CURLOPT_CUSTOMREQUEST] = $method;
}
if ('\\' !== \DIRECTORY_SEPARATOR && $options['timeout'] < 1) {
@@ -237,8 +236,12 @@ public function request(string $method, string $url, array $options = []): Respo
}
if (!\is_string($body)) {
+ if (isset($options['auth_ntlm'])) {
+ $curlopts[\CURLOPT_FORBID_REUSE] = true; // Reusing NTLM connections requires seeking capability, which only string bodies support
+ }
+
if (\is_resource($body)) {
- $curlopts[\CURLOPT_INFILE] = $body;
+ $curlopts[\CURLOPT_READDATA] = $body;
} else {
$curlopts[\CURLOPT_READFUNCTION] = static function ($ch, $fd, $length) use ($body) {
static $eof = false;
@@ -317,6 +320,9 @@ public function request(string $method, string $url, array $options = []): Respo
}
foreach ($curlopts as $opt => $value) {
+ if (\PHP_INT_SIZE === 8 && \defined('CURLOPT_INFILESIZE_LARGE') && \CURLOPT_INFILESIZE === $opt && $value >= 1 << 31) {
+ $opt = \CURLOPT_INFILESIZE_LARGE;
+ }
if (null !== $value && !curl_setopt($ch, $opt, $value) && \CURLOPT_CERTINFO !== $opt && (!\defined('CURLOPT_HEADEROPT') || \CURLOPT_HEADEROPT !== $opt)) {
$constantName = $this->findConstantName($opt);
throw new TransportException(\sprintf('Curl option "%s" is not supported.', $constantName ?? $opt));
@@ -473,7 +479,7 @@ private function validateExtraCurlOptions(array $options): void
\CURLOPT_RESOLVE => 'resolve',
\CURLOPT_NOSIGNAL => 'timeout',
\CURLOPT_HTTPHEADER => 'headers',
- \CURLOPT_INFILE => 'body',
+ \CURLOPT_READDATA => 'body',
\CURLOPT_READFUNCTION => 'body',
\CURLOPT_INFILESIZE => 'body',
\CURLOPT_POSTFIELDS => 'body',
diff --git a/src/Symfony/Component/HttpClient/HttpClientTrait.php b/src/Symfony/Component/HttpClient/HttpClientTrait.php
index 9709e0c68858e..07f257a7edb94 100644
--- a/src/Symfony/Component/HttpClient/HttpClientTrait.php
+++ b/src/Symfony/Component/HttpClient/HttpClientTrait.php
@@ -355,9 +355,11 @@ private static function normalizeBody($body, array &$normalizedHeaders = [])
}
});
- $body = http_build_query($body, '', '&');
+ if ('' === $body = http_build_query($body, '', '&')) {
+ return '';
+ }
- if ('' === $body || !$streams && !str_contains($normalizedHeaders['content-type'][0] ?? '', 'multipart/form-data')) {
+ if (!$streams && !str_contains($normalizedHeaders['content-type'][0] ?? '', 'multipart/form-data')) {
if (!str_contains($normalizedHeaders['content-type'][0] ?? '', 'application/x-www-form-urlencoded')) {
$normalizedHeaders['content-type'] = ['Content-Type: application/x-www-form-urlencoded'];
}
diff --git a/src/Symfony/Component/HttpClient/HttplugClient.php b/src/Symfony/Component/HttpClient/HttplugClient.php
index 3048b10bd0331..dad01dcc89c8e 100644
--- a/src/Symfony/Component/HttpClient/HttplugClient.php
+++ b/src/Symfony/Component/HttpClient/HttplugClient.php
@@ -224,19 +224,44 @@ private function sendPsr7Request(RequestInterface $request, ?bool $buffer = null
{
try {
$body = $request->getBody();
+ $headers = $request->getHeaders();
- if ($body->isSeekable()) {
- $body->seek(0);
+ $size = $request->getHeader('content-length')[0] ?? -1;
+ if (0 > $size && 0 < $size = $body->getSize() ?? -1) {
+ $headers['Content-Length'] = [$size];
}
- $headers = $request->getHeaders();
- if (!$request->hasHeader('content-length') && 0 <= $size = $body->getSize() ?? -1) {
- $headers['Content-Length'] = [$size];
+ if (0 === $size) {
+ $body = '';
+ } elseif (0 < $size && $size < 1 << 21) {
+ if ($body->isSeekable()) {
+ try {
+ $body->seek(0);
+ } catch (\RuntimeException) {
+ // ignore
+ }
+ }
+
+ $body = $body->getContents();
+ } else {
+ $body = static function (int $size) use ($body) {
+ if ($body->isSeekable()) {
+ try {
+ $body->seek(0);
+ } catch (\RuntimeException) {
+ // ignore
+ }
+ }
+
+ while (!$body->eof()) {
+ yield $body->read($size);
+ }
+ };
}
$options = [
'headers' => $headers,
- 'body' => static fn (int $size) => $body->read($size),
+ 'body' => $body,
'buffer' => $buffer,
];
diff --git a/src/Symfony/Component/HttpClient/Internal/AmpClientStateV5.php b/src/Symfony/Component/HttpClient/Internal/AmpClientStateV5.php
index 76b0c660681c9..f1ee284a456cb 100644
--- a/src/Symfony/Component/HttpClient/Internal/AmpClientStateV5.php
+++ b/src/Symfony/Component/HttpClient/Internal/AmpClientStateV5.php
@@ -28,6 +28,7 @@
use Amp\Socket\ClientTlsContext;
use Amp\Socket\ConnectContext;
use Amp\Socket\DnsSocketConnector;
+use Amp\Socket\InternetAddress;
use Amp\Socket\Socket;
use Amp\Socket\SocketAddress;
use Amp\Socket\SocketConnector;
@@ -160,7 +161,7 @@ public function connect(SocketAddress|string $uri, ?ConnectContext $context = nu
if ($options['proxy']) {
$proxyUrl = parse_url($options['proxy']['url']);
- $proxySocket = new SocketAddress($proxyUrl['host'], $proxyUrl['port']);
+ $proxySocket = new InternetAddress($proxyUrl['host'], $proxyUrl['port']);
$proxyHeaders = $options['proxy']['auth'] ? ['Proxy-Authorization' => $options['proxy']['auth']] : [];
if ('ssl' === $proxyUrl['scheme']) {
diff --git a/src/Symfony/Component/HttpClient/Internal/AmpListenerV5.php b/src/Symfony/Component/HttpClient/Internal/AmpListenerV5.php
index fe5d36e492747..92dcba836fa25 100644
--- a/src/Symfony/Component/HttpClient/Internal/AmpListenerV5.php
+++ b/src/Symfony/Component/HttpClient/Internal/AmpListenerV5.php
@@ -18,6 +18,7 @@
use Amp\Http\Client\NetworkInterceptor;
use Amp\Http\Client\Request;
use Amp\Http\Client\Response;
+use Amp\Socket\InternetAddress;
use Symfony\Component\HttpClient\Exception\TransportException;
/**
@@ -67,13 +68,17 @@ public function connectionAcquired(Request $request, Connection $connection, int
public function requestHeaderStart(Request $request, Stream $stream): void
{
$host = $stream->getRemoteAddress()->toString();
+ if ($stream->getRemoteAddress() instanceof InternetAddress) {
+ $host = $stream->getRemoteAddress()->getAddress();
+ $this->info['primary_port'] = $stream->getRemoteAddress()->getPort();
+ }
+
$this->info['primary_ip'] = $host;
if (str_contains($host, ':')) {
$host = '['.$host.']';
}
- $this->info['primary_port'] = $stream->getRemoteAddress()->getPort();
$this->info['pretransfer_time'] = microtime(true) - $this->info['start_time'];
$this->info['debug'] .= \sprintf("* Connected to %s (%s) port %d\n", $request->getUri()->getHost(), $host, $this->info['primary_port']);
diff --git a/src/Symfony/Component/HttpClient/Internal/HttplugWaitLoop.php b/src/Symfony/Component/HttpClient/Internal/HttplugWaitLoop.php
index aa172b89b160d..36c4efca660e0 100644
--- a/src/Symfony/Component/HttpClient/Internal/HttplugWaitLoop.php
+++ b/src/Symfony/Component/HttpClient/Internal/HttplugWaitLoop.php
@@ -140,7 +140,11 @@ public static function createPsr7Response(ResponseFactoryInterface $responseFact
}
if ($body->isSeekable()) {
- $body->seek(0);
+ try {
+ $body->seek(0);
+ } catch (\RuntimeException) {
+ // ignore
+ }
}
return $psrResponse->withBody($body);
diff --git a/src/Symfony/Component/HttpClient/NativeHttpClient.php b/src/Symfony/Component/HttpClient/NativeHttpClient.php
index 1c37a7bec4a41..da01191d4a016 100644
--- a/src/Symfony/Component/HttpClient/NativeHttpClient.php
+++ b/src/Symfony/Component/HttpClient/NativeHttpClient.php
@@ -140,22 +140,13 @@ public function request(string $method, string $url, array $options = []): Respo
if ($onProgress = $options['on_progress']) {
$maxDuration = 0 < $options['max_duration'] ? $options['max_duration'] : \INF;
- $multi = $this->multi;
- $resolve = static function (string $host, ?string $ip = null) use ($multi): ?string {
- if (null !== $ip) {
- $multi->dnsCache[$host] = $ip;
- }
-
- return $multi->dnsCache[$host] ?? null;
- };
- $onProgress = static function (...$progress) use ($onProgress, &$info, $maxDuration, $resolve) {
+ $onProgress = static function (...$progress) use ($onProgress, &$info, $maxDuration) {
if ($info['total_time'] >= $maxDuration) {
throw new TransportException(\sprintf('Max duration was reached for "%s".', implode('', $info['url'])));
}
$progressInfo = $info;
$progressInfo['url'] = implode('', $info['url']);
- $progressInfo['resolve'] = $resolve;
unset($progressInfo['size_body']);
// Memoize the last progress to ease calling the callback periodically when no network transfer happens
diff --git a/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php b/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php
index 9209378b39cff..4fe93645b1b4c 100644
--- a/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php
+++ b/src/Symfony/Component/HttpClient/NoPrivateNetworkHttpClient.php
@@ -13,85 +13,150 @@
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
-use Symfony\Component\HttpClient\Exception\InvalidArgumentException;
use Symfony\Component\HttpClient\Exception\TransportException;
+use Symfony\Component\HttpClient\Response\AsyncContext;
+use Symfony\Component\HttpClient\Response\AsyncResponse;
use Symfony\Component\HttpFoundation\IpUtils;
+use Symfony\Contracts\HttpClient\ChunkInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface;
-use Symfony\Contracts\HttpClient\ResponseStreamInterface;
use Symfony\Contracts\Service\ResetInterface;
/**
* Decorator that blocks requests to private networks by default.
*
* @author Hallison Boaventura
+ * @author Nicolas Grekas
*/
final class NoPrivateNetworkHttpClient implements HttpClientInterface, LoggerAwareInterface, ResetInterface
{
use HttpClientTrait;
+ use AsyncDecoratorTrait;
+
+ private array $defaultOptions = self::OPTIONS_DEFAULTS;
+ private HttpClientInterface $client;
+ private array|null $subnets;
+ private int $ipFlags;
+ private \ArrayObject $dnsCache;
/**
- * @param string|array|null $subnets String or array of subnets using CIDR notation that will be used by IpUtils.
+ * @param string|array|null $subnets String or array of subnets using CIDR notation that should be considered private.
* If null is passed, the standard private subnets will be used.
*/
- public function __construct(
- private HttpClientInterface $client,
- private string|array|null $subnets = null,
- ) {
+ public function __construct(HttpClientInterface $client, string|array|null $subnets = null)
+ {
if (!class_exists(IpUtils::class)) {
throw new \LogicException(\sprintf('You cannot use "%s" if the HttpFoundation component is not installed. Try running "composer require symfony/http-foundation".', __CLASS__));
}
+
+ if (null === $subnets) {
+ $ipFlags = \FILTER_FLAG_IPV4 | \FILTER_FLAG_IPV6;
+ } else {
+ $ipFlags = 0;
+ foreach ((array) $subnets as $subnet) {
+ $ipFlags |= str_contains($subnet, ':') ? \FILTER_FLAG_IPV6 : \FILTER_FLAG_IPV4;
+ }
+ }
+
+ if (!\defined('STREAM_PF_INET6')) {
+ $ipFlags &= ~\FILTER_FLAG_IPV6;
+ }
+
+ $this->client = $client;
+ $this->subnets = null !== $subnets ? (array) $subnets : null;
+ $this->ipFlags = $ipFlags;
+ $this->dnsCache = new \ArrayObject();
}
public function request(string $method, string $url, array $options = []): ResponseInterface
{
- $onProgress = $options['on_progress'] ?? null;
- if (null !== $onProgress && !\is_callable($onProgress)) {
- throw new InvalidArgumentException(\sprintf('Option "on_progress" must be callable, "%s" given.', get_debug_type($onProgress)));
- }
+ [$url, $options] = self::prepareRequest($method, $url, $options, $this->defaultOptions, true);
+
+ $redirectHeaders = parse_url($url['authority']);
+ $host = $redirectHeaders['host'];
+ $url = implode('', $url);
+ $dnsCache = $this->dnsCache;
+
+ $ip = self::dnsResolve($dnsCache, $host, $this->ipFlags, $options);
+ self::ipCheck($ip, $this->subnets, $this->ipFlags, $host, $url);
+ $onProgress = $options['on_progress'] ?? null;
$subnets = $this->subnets;
+ $ipFlags = $this->ipFlags;
- $options['on_progress'] = static function (int $dlNow, int $dlSize, array $info) use ($onProgress, $subnets): void {
- static $lastUrl = '';
+ $options['on_progress'] = static function (int $dlNow, int $dlSize, array $info) use ($onProgress, $subnets, $ipFlags): void {
static $lastPrimaryIp = '';
- if ($info['url'] !== $lastUrl) {
- $host = parse_url($info['url'], PHP_URL_HOST) ?: '';
- $resolve = $info['resolve'] ?? static function () { return null; };
+ if (!\in_array($info['primary_ip'] ?? '', ['', $lastPrimaryIp], true)) {
+ self::ipCheck($info['primary_ip'], $subnets, $ipFlags, null, $info['url']);
+ $lastPrimaryIp = $info['primary_ip'];
+ }
- if (($ip = trim($host, '[]'))
- && !filter_var($ip, \FILTER_VALIDATE_IP)
- && !($ip = $resolve($host))
- && $ip = @(gethostbynamel($host)[0] ?? dns_get_record($host, \DNS_AAAA)[0]['ipv6'] ?? null)
- ) {
- $resolve($host, $ip);
- }
+ null !== $onProgress && $onProgress($dlNow, $dlSize, $info);
+ };
- if ($ip && IpUtils::checkIp($ip, $subnets ?? IpUtils::PRIVATE_SUBNETS)) {
- throw new TransportException(sprintf('Host "%s" is blocked for "%s".', $host, $info['url']));
- }
+ if (0 >= $maxRedirects = $options['max_redirects']) {
+ return new AsyncResponse($this->client, $method, $url, $options);
+ }
+
+ $options['max_redirects'] = 0;
+ $redirectHeaders['with_auth'] = $redirectHeaders['no_auth'] = $options['headers'];
+
+ if (isset($options['normalized_headers']['host']) || isset($options['normalized_headers']['authorization']) || isset($options['normalized_headers']['cookie'])) {
+ $redirectHeaders['no_auth'] = array_filter($redirectHeaders['no_auth'], static function ($h) {
+ return 0 !== stripos($h, 'Host:') && 0 !== stripos($h, 'Authorization:') && 0 !== stripos($h, 'Cookie:');
+ });
+ }
+
+ return new AsyncResponse($this->client, $method, $url, $options, static function (ChunkInterface $chunk, AsyncContext $context) use (&$method, &$options, $maxRedirects, &$redirectHeaders, $subnets, $ipFlags, $dnsCache): \Generator {
+ if (null !== $chunk->getError() || $chunk->isTimeout() || !$chunk->isFirst()) {
+ yield $chunk;
- $lastUrl = $info['url'];
+ return;
}
- if ($info['primary_ip'] !== $lastPrimaryIp) {
- if ($info['primary_ip'] && IpUtils::checkIp($info['primary_ip'], $subnets ?? IpUtils::PRIVATE_SUBNETS)) {
- throw new TransportException(\sprintf('IP "%s" is blocked for "%s".', $info['primary_ip'], $info['url']));
- }
+ $statusCode = $context->getStatusCode();
- $lastPrimaryIp = $info['primary_ip'];
+ if ($statusCode < 300 || 400 <= $statusCode || null === $url = $context->getInfo('redirect_url')) {
+ $context->passthru();
+
+ yield $chunk;
+
+ return;
}
- null !== $onProgress && $onProgress($dlNow, $dlSize, $info);
- };
+ $host = parse_url($url, \PHP_URL_HOST);
+ $ip = self::dnsResolve($dnsCache, $host, $ipFlags, $options);
+ self::ipCheck($ip, $subnets, $ipFlags, $host, $url);
+
+ // Do like curl and browsers: turn POST to GET on 301, 302 and 303
+ if (303 === $statusCode || 'POST' === $method && \in_array($statusCode, [301, 302], true)) {
+ $method = 'HEAD' === $method ? 'HEAD' : 'GET';
+ unset($options['body'], $options['json']);
+
+ if (isset($options['normalized_headers']['content-length']) || isset($options['normalized_headers']['content-type']) || isset($options['normalized_headers']['transfer-encoding'])) {
+ $filterContentHeaders = static function ($h) {
+ return 0 !== stripos($h, 'Content-Length:') && 0 !== stripos($h, 'Content-Type:') && 0 !== stripos($h, 'Transfer-Encoding:');
+ };
+ $options['headers'] = array_filter($options['headers'], $filterContentHeaders);
+ $redirectHeaders['no_auth'] = array_filter($redirectHeaders['no_auth'], $filterContentHeaders);
+ $redirectHeaders['with_auth'] = array_filter($redirectHeaders['with_auth'], $filterContentHeaders);
+ }
+ }
- return $this->client->request($method, $url, $options);
- }
+ // Authorization and Cookie headers MUST NOT follow except for the initial host name
+ $port = parse_url($url, \PHP_URL_PORT);
+ $options['headers'] = $redirectHeaders['host'] === $host && ($redirectHeaders['port'] ?? null) === $port ? $redirectHeaders['with_auth'] : $redirectHeaders['no_auth'];
- public function stream(ResponseInterface|iterable $responses, ?float $timeout = null): ResponseStreamInterface
- {
- return $this->client->stream($responses, $timeout);
+ static $redirectCount = 0;
+ $context->setInfo('redirect_count', ++$redirectCount);
+
+ $context->replaceRequest($method, $url, $options);
+
+ if ($redirectCount >= $maxRedirects) {
+ $context->passthru();
+ }
+ });
}
/**
@@ -110,14 +175,73 @@ public function withOptions(array $options): static
{
$clone = clone $this;
$clone->client = $this->client->withOptions($options);
+ $clone->defaultOptions = self::mergeDefaultOptions($options, $this->defaultOptions);
return $clone;
}
public function reset(): void
{
+ $this->dnsCache->exchangeArray([]);
+
if ($this->client instanceof ResetInterface) {
$this->client->reset();
}
}
+
+ private static function dnsResolve(\ArrayObject $dnsCache, string $host, int $ipFlags, array &$options): string
+ {
+ if ($ip = filter_var(trim($host, '[]'), \FILTER_VALIDATE_IP) ?: $options['resolve'][$host] ?? false) {
+ return $ip;
+ }
+
+ if ($dnsCache->offsetExists($host)) {
+ return $dnsCache[$host];
+ }
+
+ if ((\FILTER_FLAG_IPV4 & $ipFlags) && $ip = gethostbynamel($host)) {
+ return $options['resolve'][$host] = $dnsCache[$host] = $ip[0];
+ }
+
+ if (!(\FILTER_FLAG_IPV6 & $ipFlags)) {
+ return $host;
+ }
+
+ if ($ip = dns_get_record($host, \DNS_AAAA)) {
+ $ip = $ip[0]['ipv6'];
+ } elseif (extension_loaded('sockets')) {
+ if (!$info = socket_addrinfo_lookup($host, 0, ['ai_socktype' => \SOCK_STREAM, 'ai_family' => \AF_INET6])) {
+ return $host;
+ }
+
+ $ip = socket_addrinfo_explain($info[0])['ai_addr']['sin6_addr'];
+ } elseif ('localhost' === $host || 'localhost.' === $host) {
+ $ip = '::1';
+ } else {
+ return $host;
+ }
+
+ return $options['resolve'][$host] = $dnsCache[$host] = $ip;
+ }
+
+ private static function ipCheck(string $ip, ?array $subnets, int $ipFlags, ?string $host, string $url): void
+ {
+ if (null === $subnets) {
+ // Quick check, but not reliable enough, see https://github.com/php/php-src/issues/16944
+ $ipFlags |= \FILTER_FLAG_NO_PRIV_RANGE | \FILTER_FLAG_NO_RES_RANGE;
+ }
+
+ if (false !== filter_var($ip, \FILTER_VALIDATE_IP, $ipFlags) && !IpUtils::checkIp($ip, $subnets ?? IpUtils::PRIVATE_SUBNETS)) {
+ return;
+ }
+
+ if (null !== $host) {
+ $type = 'Host';
+ } else {
+ $host = $ip;
+ $type = 'IP';
+ }
+
+ throw new TransportException($type.\sprintf(' "%s" is blocked for "%s".', $host, $url));
+ }
}
diff --git a/src/Symfony/Component/HttpClient/Psr18Client.php b/src/Symfony/Component/HttpClient/Psr18Client.php
index 0c6d365a9564d..5ab4a8d3ce41d 100644
--- a/src/Symfony/Component/HttpClient/Psr18Client.php
+++ b/src/Symfony/Component/HttpClient/Psr18Client.php
@@ -88,19 +88,44 @@ public function sendRequest(RequestInterface $request): ResponseInterface
{
try {
$body = $request->getBody();
+ $headers = $request->getHeaders();
- if ($body->isSeekable()) {
- $body->seek(0);
+ $size = $request->getHeader('content-length')[0] ?? -1;
+ if (0 > $size && 0 < $size = $body->getSize() ?? -1) {
+ $headers['Content-Length'] = [$size];
}
- $headers = $request->getHeaders();
- if (!$request->hasHeader('content-length') && 0 <= $size = $body->getSize() ?? -1) {
- $headers['Content-Length'] = [$size];
+ if (0 === $size) {
+ $body = '';
+ } elseif (0 < $size && $size < 1 << 21) {
+ if ($body->isSeekable()) {
+ try {
+ $body->seek(0);
+ } catch (\RuntimeException) {
+ // ignore
+ }
+ }
+
+ $body = $body->getContents();
+ } else {
+ $body = static function (int $size) use ($body) {
+ if ($body->isSeekable()) {
+ try {
+ $body->seek(0);
+ } catch (\RuntimeException) {
+ // ignore
+ }
+ }
+
+ while (!$body->eof()) {
+ yield $body->read($size);
+ }
+ };
}
$options = [
'headers' => $headers,
- 'body' => static fn (int $size) => $body->read($size),
+ 'body' => $body,
];
if ('1.0' === $request->getProtocolVersion()) {
@@ -141,7 +166,11 @@ public function createStream(string $content = ''): StreamInterface
$stream = $this->streamFactory->createStream($content);
if ($stream->isSeekable()) {
- $stream->seek(0);
+ try {
+ $stream->seek(0);
+ } catch (\RuntimeException) {
+ // ignore
+ }
}
return $stream;
diff --git a/src/Symfony/Component/HttpClient/Response/AmpResponseV4.php b/src/Symfony/Component/HttpClient/Response/AmpResponseV4.php
index e689bfb239fa5..31ea22d0a63bf 100644
--- a/src/Symfony/Component/HttpClient/Response/AmpResponseV4.php
+++ b/src/Symfony/Component/HttpClient/Response/AmpResponseV4.php
@@ -90,17 +90,9 @@ public function __construct(
$info['max_duration'] = $options['max_duration'];
$info['debug'] = '';
- $resolve = static function (string $host, ?string $ip = null) use ($multi): ?string {
- if (null !== $ip) {
- $multi->dnsCache[$host] = $ip;
- }
-
- return $multi->dnsCache[$host] ?? null;
- };
$onProgress = $options['on_progress'] ?? static function () {};
- $onProgress = $this->onProgress = static function () use (&$info, $onProgress, $resolve) {
+ $onProgress = $this->onProgress = static function () use (&$info, $onProgress) {
$info['total_time'] = microtime(true) - $info['start_time'];
- $info['resolve'] = $resolve;
$onProgress((int) $info['size_download'], ((int) (1 + $info['download_content_length']) ?: 1) - 1, (array) $info);
};
@@ -189,19 +181,17 @@ private static function schedule(self $response, array &$runningResponses): void
/**
* @param AmpClientStateV4 $multi
*/
- private static function perform(ClientState $multi, ?array &$responses = null): void
+ private static function perform(ClientState $multi, ?array $responses = null): void
{
- if ($responses) {
- foreach ($responses as $response) {
- try {
- if ($response->info['start_time']) {
- $response->info['total_time'] = microtime(true) - $response->info['start_time'];
- ($response->onProgress)();
- }
- } catch (\Throwable $e) {
- $multi->handlesActivity[$response->id][] = null;
- $multi->handlesActivity[$response->id][] = $e;
+ foreach ($responses ?? [] as $response) {
+ try {
+ if ($response->info['start_time']) {
+ $response->info['total_time'] = microtime(true) - $response->info['start_time'];
+ ($response->onProgress)();
}
+ } catch (\Throwable $e) {
+ $multi->handlesActivity[$response->id][] = null;
+ $multi->handlesActivity[$response->id][] = $e;
}
}
}
diff --git a/src/Symfony/Component/HttpClient/Response/AmpResponseV5.php b/src/Symfony/Component/HttpClient/Response/AmpResponseV5.php
index 5a2377a4980c4..8f56c76a41033 100644
--- a/src/Symfony/Component/HttpClient/Response/AmpResponseV5.php
+++ b/src/Symfony/Component/HttpClient/Response/AmpResponseV5.php
@@ -89,17 +89,9 @@ public function __construct(
$info['max_duration'] = $options['max_duration'];
$info['debug'] = '';
- $resolve = static function (string $host, ?string $ip = null) use ($multi): ?string {
- if (null !== $ip) {
- $multi->dnsCache[$host] = $ip;
- }
-
- return $multi->dnsCache[$host] ?? null;
- };
$onProgress = $options['on_progress'] ?? static function () {};
- $onProgress = $this->onProgress = static function () use (&$info, $onProgress, $resolve) {
+ $onProgress = $this->onProgress = static function () use (&$info, $onProgress) {
$info['total_time'] = microtime(true) - $info['start_time'];
- $info['resolve'] = $resolve;
$onProgress((int) $info['size_download'], ((int) (1 + $info['download_content_length']) ?: 1) - 1, (array) $info);
};
@@ -170,7 +162,7 @@ private static function schedule(self $response, array &$runningResponses): void
/**
* @param AmpClientStateV5 $multi
*/
- private static function perform(ClientState $multi, ?array &$responses = null): void
+ private static function perform(ClientState $multi, ?array $responses = null): void
{
if ($responses) {
foreach ($responses as $response) {
diff --git a/src/Symfony/Component/HttpClient/Response/AsyncResponse.php b/src/Symfony/Component/HttpClient/Response/AsyncResponse.php
index faf96a7ae49b7..30083369d5935 100644
--- a/src/Symfony/Component/HttpClient/Response/AsyncResponse.php
+++ b/src/Symfony/Component/HttpClient/Response/AsyncResponse.php
@@ -12,7 +12,6 @@
namespace Symfony\Component\HttpClient\Response;
use Symfony\Component\HttpClient\Chunk\ErrorChunk;
-use Symfony\Component\HttpClient\Chunk\FirstChunk;
use Symfony\Component\HttpClient\Chunk\LastChunk;
use Symfony\Component\HttpClient\Exception\TransportException;
use Symfony\Contracts\HttpClient\ChunkInterface;
@@ -245,7 +244,7 @@ public static function stream(iterable $responses, ?float $timeout = null, ?stri
$wrappedResponses[] = $r->response;
if ($r->stream) {
- yield from self::passthruStream($response = $r->response, $r, new FirstChunk(), $asyncMap);
+ yield from self::passthruStream($response = $r->response, $r, $asyncMap, new LastChunk());
if (!isset($asyncMap[$response])) {
array_pop($wrappedResponses);
@@ -276,15 +275,9 @@ public static function stream(iterable $responses, ?float $timeout = null, ?stri
}
if (!$r->passthru) {
- if (null !== $chunk->getError() || $chunk->isLast()) {
- unset($asyncMap[$response]);
- } elseif (null !== $r->content && '' !== ($content = $chunk->getContent()) && \strlen($content) !== fwrite($r->content, $content)) {
- $chunk = new ErrorChunk($r->offset, new TransportException(\sprintf('Failed writing %d bytes to the response buffer.', \strlen($content))));
- $r->info['error'] = $chunk->getError();
- $r->response->cancel();
- }
+ $r->stream = (static fn () => yield $chunk)();
+ yield from self::passthruStream($response, $r, $asyncMap);
- yield $r => $chunk;
continue;
}
@@ -347,13 +340,13 @@ private static function passthru(HttpClientInterface $client, self $r, ChunkInte
}
$r->stream = $stream;
- yield from self::passthruStream($response, $r, null, $asyncMap);
+ yield from self::passthruStream($response, $r, $asyncMap);
}
/**
* @param \SplObjectStorage|null $asyncMap
*/
- private static function passthruStream(ResponseInterface $response, self $r, ?ChunkInterface $chunk, ?\SplObjectStorage $asyncMap): \Generator
+ private static function passthruStream(ResponseInterface $response, self $r, ?\SplObjectStorage $asyncMap, ?ChunkInterface $chunk = null): \Generator
{
while (true) {
try {
diff --git a/src/Symfony/Component/HttpClient/Response/CurlResponse.php b/src/Symfony/Component/HttpClient/Response/CurlResponse.php
index 8005df79b53cd..e35132d41cccc 100644
--- a/src/Symfony/Component/HttpClient/Response/CurlResponse.php
+++ b/src/Symfony/Component/HttpClient/Response/CurlResponse.php
@@ -122,20 +122,13 @@ public function __construct(
curl_pause($ch, \CURLPAUSE_CONT);
if ($onProgress = $options['on_progress']) {
- $resolve = static function (string $host, ?string $ip = null) use ($multi): ?string {
- if (null !== $ip) {
- $multi->dnsCache->hostnames[$host] = $ip;
- }
-
- return $multi->dnsCache->hostnames[$host] ?? null;
- };
$url = isset($info['url']) ? ['url' => $info['url']] : [];
curl_setopt($ch, \CURLOPT_NOPROGRESS, false);
- curl_setopt($ch, \CURLOPT_PROGRESSFUNCTION, static function ($ch, $dlSize, $dlNow) use ($onProgress, &$info, $url, $multi, $debugBuffer, $resolve) {
+ curl_setopt($ch, \CURLOPT_PROGRESSFUNCTION, static function ($ch, $dlSize, $dlNow) use ($onProgress, &$info, $url, $multi, $debugBuffer) {
try {
rewind($debugBuffer);
$debug = ['debug' => stream_get_contents($debugBuffer)];
- $onProgress($dlNow, $dlSize, $url + curl_getinfo($ch) + $info + $debug + ['resolve' => $resolve]);
+ $onProgress($dlNow, $dlSize, $url + curl_getinfo($ch) + $info + $debug);
} catch (\Throwable $e) {
$multi->handlesActivity[(int) $ch][] = null;
$multi->handlesActivity[(int) $ch][] = $e;
@@ -276,11 +269,11 @@ private static function schedule(self $response, array &$runningResponses): void
/**
* @param CurlClientState $multi
*/
- private static function perform(ClientState $multi, ?array &$responses = null): void
+ private static function perform(ClientState $multi, ?array $responses = null): void
{
if ($multi->performing) {
if ($responses) {
- $response = current($responses);
+ $response = $responses[array_key_first($responses)];
$multi->handlesActivity[(int) $response->handle][] = null;
$multi->handlesActivity[(int) $response->handle][] = new TransportException(\sprintf('Userland callback cannot use the client nor the response while processing "%s".', curl_getinfo($response->handle, \CURLINFO_EFFECTIVE_URL)));
}
@@ -323,7 +316,16 @@ private static function perform(ClientState $multi, ?array &$responses = null):
}
$multi->handlesActivity[$id][] = null;
- $multi->handlesActivity[$id][] = \in_array($result, [\CURLE_OK, \CURLE_TOO_MANY_REDIRECTS], true) || '_0' === $waitFor || curl_getinfo($ch, \CURLINFO_SIZE_DOWNLOAD) === curl_getinfo($ch, \CURLINFO_CONTENT_LENGTH_DOWNLOAD) ? null : new TransportException(ucfirst(curl_error($ch) ?: curl_strerror($result)).\sprintf(' for "%s".', curl_getinfo($ch, \CURLINFO_EFFECTIVE_URL)));
+ $multi->handlesActivity[$id][] = \in_array($result, [\CURLE_OK, \CURLE_TOO_MANY_REDIRECTS], true)
+ || '_0' === $waitFor
+ || curl_getinfo($ch, \CURLINFO_SIZE_DOWNLOAD) === curl_getinfo($ch, \CURLINFO_CONTENT_LENGTH_DOWNLOAD)
+ || ('C' === $waitFor[0]
+ && 'OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0' === curl_error($ch)
+ && -1.0 === curl_getinfo($ch, \CURLINFO_CONTENT_LENGTH_DOWNLOAD)
+ && \in_array('close', array_map('strtolower', $responses[$id]->headers['connection'] ?? []), true)
+ )
+ ? null
+ : new TransportException(ucfirst(curl_error($ch) ?: curl_strerror($result)).\sprintf(' for "%s".', curl_getinfo($ch, \CURLINFO_EFFECTIVE_URL)));
}
} finally {
$multi->performing = false;
diff --git a/src/Symfony/Component/HttpClient/Response/MockResponse.php b/src/Symfony/Component/HttpClient/Response/MockResponse.php
index 6c681962283a3..15988330b44cf 100644
--- a/src/Symfony/Component/HttpClient/Response/MockResponse.php
+++ b/src/Symfony/Component/HttpClient/Response/MockResponse.php
@@ -176,7 +176,7 @@ protected static function schedule(self $response, array &$runningResponses): vo
$runningResponses[0][1][$response->id] = $response;
}
- protected static function perform(ClientState $multi, array &$responses): void
+ protected static function perform(ClientState $multi, array $responses): void
{
foreach ($responses as $response) {
$id = $response->id;
diff --git a/src/Symfony/Component/HttpClient/Response/NativeResponse.php b/src/Symfony/Component/HttpClient/Response/NativeResponse.php
index 0a7654d9628ba..6d63085c832be 100644
--- a/src/Symfony/Component/HttpClient/Response/NativeResponse.php
+++ b/src/Symfony/Component/HttpClient/Response/NativeResponse.php
@@ -80,7 +80,7 @@ public function __construct(
};
$this->canary = new Canary(static function () use ($multi, $id) {
- if (null !== ($host = $multi->openHandles[$id][6] ?? null) && 0 >= --$multi->hosts[$host]) {
+ if (null !== ($host = $multi->openHandles[$id][6] ?? null) && isset($multi->hosts[$host]) && 0 >= --$multi->hosts[$host]) {
unset($multi->hosts[$host]);
}
unset($multi->openHandles[$id], $multi->handlesActivity[$id]);
@@ -229,7 +229,7 @@ private static function schedule(self $response, array &$runningResponses): void
/**
* @param NativeClientState $multi
*/
- private static function perform(ClientState $multi, ?array &$responses = null): void
+ private static function perform(ClientState $multi, ?array $responses = null): void
{
foreach ($multi->openHandles as $i => [$pauseExpiry, $h, $buffer, $onProgress]) {
if ($pauseExpiry) {
@@ -303,7 +303,7 @@ private static function perform(ClientState $multi, ?array &$responses = null):
$multi->handlesActivity[$i][] = null;
$multi->handlesActivity[$i][] = $e;
- if (null !== ($host = $multi->openHandles[$i][6] ?? null) && 0 >= --$multi->hosts[$host]) {
+ if (null !== ($host = $multi->openHandles[$i][6] ?? null) && isset($multi->hosts[$host]) && 0 >= --$multi->hosts[$host]) {
unset($multi->hosts[$host]);
}
unset($multi->openHandles[$i]);
diff --git a/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php b/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php
index 314b391776816..1d6f941c5b9b3 100644
--- a/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php
+++ b/src/Symfony/Component/HttpClient/Response/TransportResponseTrait.php
@@ -92,7 +92,7 @@ abstract protected static function schedule(self $response, array &$runningRespo
/**
* Performs all pending non-blocking operations.
*/
- abstract protected static function perform(ClientState $multi, array &$responses): void;
+ abstract protected static function perform(ClientState $multi, array $responses): void;
/**
* Waits for network activity.
@@ -150,10 +150,15 @@ public static function stream(iterable $responses, ?float $timeout = null): \Gen
$lastActivity = hrtime(true) / 1E9;
$elapsedTimeout = 0;
- if ($fromLastTimeout = 0.0 === $timeout && '-0' === (string) $timeout) {
- $timeout = null;
- } elseif ($fromLastTimeout = 0 > $timeout) {
- $timeout = -$timeout;
+ if ((0.0 === $timeout && '-0' === (string) $timeout) || 0 > $timeout) {
+ $timeout = $timeout ? -$timeout : null;
+
+ /** @var ClientState $multi */
+ foreach ($runningResponses as [$multi]) {
+ if (null !== $multi->lastTimeout) {
+ $elapsedTimeout = max($elapsedTimeout, $lastActivity - $multi->lastTimeout);
+ }
+ }
}
while (true) {
@@ -162,8 +167,7 @@ public static function stream(iterable $responses, ?float $timeout = null): \Gen
$timeoutMin = $timeout ?? \INF;
/** @var ClientState $multi */
- foreach ($runningResponses as $i => [$multi]) {
- $responses = &$runningResponses[$i][1];
+ foreach ($runningResponses as $i => [$multi, &$responses]) {
self::perform($multi, $responses);
foreach ($responses as $j => $response) {
@@ -171,26 +175,25 @@ public static function stream(iterable $responses, ?float $timeout = null): \Gen
$timeoutMin = min($timeoutMin, $response->timeout, 1);
$chunk = false;
- if ($fromLastTimeout && null !== $multi->lastTimeout) {
- $elapsedTimeout = hrtime(true) / 1E9 - $multi->lastTimeout;
- }
-
if (isset($multi->handlesActivity[$j])) {
$multi->lastTimeout = null;
+ $elapsedTimeout = 0;
} elseif (!isset($multi->openHandles[$j])) {
+ $hasActivity = true;
unset($responses[$j]);
continue;
} elseif ($elapsedTimeout >= $timeoutMax) {
$multi->handlesActivity[$j] = [new ErrorChunk($response->offset, \sprintf('Idle timeout reached for "%s".', $response->getInfo('url')))];
$multi->lastTimeout ??= $lastActivity;
+ $elapsedTimeout = $timeoutMax;
} else {
continue;
}
- while ($multi->handlesActivity[$j] ?? false) {
- $hasActivity = true;
- $elapsedTimeout = 0;
+ $lastActivity = null;
+ $hasActivity = true;
+ while ($multi->handlesActivity[$j] ?? false) {
if (\is_string($chunk = array_shift($multi->handlesActivity[$j]))) {
if (null !== $response->inflate && false === $chunk = @inflate_add($response->inflate, $chunk)) {
$multi->handlesActivity[$j] = [null, new TransportException(\sprintf('Error while processing content unencoding for "%s".', $response->getInfo('url')))];
@@ -227,7 +230,6 @@ public static function stream(iterable $responses, ?float $timeout = null): \Gen
}
} elseif ($chunk instanceof ErrorChunk) {
unset($responses[$j]);
- $elapsedTimeout = $timeoutMax;
} elseif ($chunk instanceof FirstChunk) {
if ($response->logger) {
$info = $response->getInfo();
@@ -278,10 +280,12 @@ public static function stream(iterable $responses, ?float $timeout = null): \Gen
if ($chunk instanceof ErrorChunk && !$chunk->didThrow()) {
// Ensure transport exceptions are always thrown
$chunk->getContent();
+ throw new \LogicException('A transport exception should have been thrown.');
}
}
if (!$responses) {
+ $hasActivity = true;
unset($runningResponses[$i]);
}
@@ -295,7 +299,7 @@ public static function stream(iterable $responses, ?float $timeout = null): \Gen
}
if ($hasActivity) {
- $lastActivity = hrtime(true) / 1E9;
+ $lastActivity ??= hrtime(true) / 1E9;
continue;
}
diff --git a/src/Symfon
10000
y/Component/HttpClient/Tests/AmpHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php
index e17b45a0ce185..d03693694a746 100644
--- a/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/AmpHttpClientTest.php
@@ -14,6 +14,9 @@
use Symfony\Component\HttpClient\AmpHttpClient;
use Symfony\Contracts\HttpClient\HttpClientInterface;
+/**
+ * @group dns-sensitive
+ */
class AmpHttpClientTest extends HttpClientTestCase
{
protected function getHttpClient(string $testCase): HttpClientInterface
diff --git a/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php b/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php
index 1096a9ec1ca61..b3cb83bf371c3 100644
--- a/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/AsyncDecoratorTraitTest.php
@@ -231,6 +231,20 @@ public function testBufferPurePassthru()
$this->assertStringContainsString('SERVER_PROTOCOL', $response->getContent());
$this->assertStringContainsString('HTTP_HOST', $response->getContent());
+
+ $client = new class(parent::getHttpClient(__FUNCTION__)) implements HttpClientInterface {
+ use AsyncDecoratorTrait;
+
+ public function request(string $method, string $url, array $options = []): ResponseInterface
+ {
+ return new AsyncResponse($this->client, $method, $url, $options);
+ }
+ };
+
+ $response = $client->request('GET', 'http://localhost:8057/');
+
+ $this->assertStringContainsString('SERVER_PROTOCOL', $response->getContent());
+ $this->assertStringContainsString('HTTP_HOST', $response->getContent());
}
public function testRetryTimeout()
diff --git a/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php
index 765cdcd2ab39e..a18b253203092 100644
--- a/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php
@@ -17,6 +17,8 @@
/**
* @requires extension curl
+ *
+ * @group dns-sensitive
*/
class CurlHttpClientTest extends HttpClientTestCase
{
diff --git a/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php b/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php
index ae915e788a487..b57ea826849a9 100644
--- a/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/DataCollector/HttpClientDataCollectorTest.php
@@ -24,11 +24,6 @@ public static function setUpBeforeClass(): void
TestHttpServer::start();
}
- public static function tearDownAfterClass(): void
- {
- TestHttpServer::stop();
- }
-
public function testItCollectsRequestCount()
{
$httpClient1 = $this->httpClientThatHasTracedRequests([
diff --git a/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php b/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php
index db80869579973..d733a098f3347 100644
--- a/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php
+++ b/src/Symfony/Component/HttpClient/Tests/HttpClientTestCase.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\HttpClient\Tests;
+use Symfony\Bridge\PhpUnit\DnsMock;
use Symfony\Component\HttpClient\Exception\ClientException;
use Symfony\Component\HttpClient\Exception\InvalidArgumentException;
use Symfony\Component\HttpClient\Exception\TransportException;
@@ -490,6 +491,105 @@ public function testNoPrivateNetworkWithResolve()
$client->request('GET', 'http://symfony.com', ['resolve' => ['symfony.com' => '127.0.0.1']]);
}
+ public function testNoPrivateNetworkWithResolveAndRedirect()
+ {
+ DnsMock::withMockedHosts([
+ 'localhost' => [
+ [
+ 'host' => 'localhost',
+ 'class' => 'IN',
+ 'ttl' => 15,
+ 'type' => 'A',
+ 'ip' => '127.0.0.1',
+ ],
+ ],
+ 'symfony.com' => [
+ [
+ 'host' => 'symfony.com',
+ 'class' => 'IN',
+ 'ttl' => 15,
+ 'type' => 'A',
+ 'ip' => '10.0.0.1',
+ ],
+ ],
+ ]);
+
+ $client = $this->getHttpClient(__FUNCTION__);
+ $client = new NoPrivateNetworkHttpClient($client, '10.0.0.1/32');
+
+ $this->expectException(TransportException::class);
+ $this->expectExceptionMessage('Host "symfony.com" is blocked');
+
+ $client->request('GET', 'http://localhost:8057/302?location=https://symfony.com/');
+ }
+
+ public function testNoPrivateNetwork304()
+ {
+ $client = $this->getHttpClient(__FUNCTION__);
+ $client = new NoPrivateNetworkHttpClient($client, '104.26.14.6/32');
+ $response = $client->request('GET', 'http://localhost:8057/304', [
+ 'headers' => ['If-Match' => '"abc"'],
+ 'buffer' => false,
+ ]);
+
+ $this->assertSame(304, $response->getStatusCode());
+ $this->assertSame('', $response->getContent(false));
+ }
+
+ public function testNoPrivateNetwork302()
+ {
+ $client = $this->getHttpClient(__FUNCTION__);
+ $client = new NoPrivateNetworkHttpClient($client, '104.26.14.6/32');
+ $response = $client->request('GET', 'http://localhost:8057/302/relative');
+
+ $body = $response->toArray();
+
+ $this->assertSame('/', $body['REQUEST_URI']);
+ $this->assertNull($response->getInfo('redirect_url'));
+
+ $response = $client->request('GET', 'http://localhost:8057/302/relative', [
+ 'max_redirects' => 0,
+ ]);
+
+ $this->assertSame(302, $response->getStatusCode());
+ $this->assertSame('http://localhost:8057/', $response->getInfo('redirect_url'));
+ }
+
+ public function testNoPrivateNetworkStream()
+ {
+ $client = $this->getHttpClient(__FUNCTION__);
+
+ $response = $client->request('GET', 'http://localhost:8057');
+ $client = new NoPrivateNetworkHttpClient($client, '104.26.14.6/32');
+
+ $response = $client->request('GET', 'http://localhost:8057');
+ $chunks = $client->stream($response);
+ $result = [];
+
+ foreach ($chunks as $r => $chunk) {
+ if ($chunk->isTimeout()) {
+ $result[] = 't';
+ } elseif ($chunk->isLast()) {
+ $result[] = 'l';
+ } elseif ($chunk->isFirst()) {
+ $result[] = 'f';
+ }
+ }
+
+ $this->assertSame($response, $r);
+ $this->assertSame(['f', 'l'], $result);
+
+ $chunk = null;
+ $i = 0;
+
+ foreach ($client->stream($response) as $chunk) {
+ ++$i;
+ }
+
+ $this->assertSame(1, $i);
+ $this->assertTrue($chunk->isLast());
+ }
+
public function testNoRedirectWithInvalidLocation()
{
$client = $this->getHttpClient(__FUNCTION__);
@@ -556,4 +656,81 @@ public function testDefaultContentType()
$this->assertSame(['abc' => 'def', 'content-type' => 'application/json', 'REQUEST_METHOD' => 'POST'], $response->toArray());
}
+
+ public function testHeadRequestWithClosureBody()
+ {
+ $p = TestHttpServer::start(8067);
+
+ try {
+ $client = $this->getHttpClient(__FUNCTION__);
+
+ $response = $client->request('HEAD', 'http://localhost:8057/head', [
+ 'body' => fn () => '',
+ ]);
+ $headers = $response->getHeaders();
+ } finally {
+ $p->stop();
+ }
+
+ $this->assertArrayHasKey('x-request-vars', $headers);
+
+ $vars = json_decode($headers['x-request-vars'][0], true);
+ $this->assertIsArray($vars);
+ $this->assertSame('HEAD', $vars['REQUEST_METHOD']);
+ }
+
+ /**
+ * @testWith [301]
+ * [302]
+ * [303]
+ */
+ public function testPostToGetRedirect(int $status)
+ {
+ $p = TestHttpServer::start(8067);
+
+ try {
+ $client = $this->getHttpClient(__FUNCTION__);
+
+ $response = $client->request('POST', 'http://localhost:8057/custom?status=' . $status . '&headers[]=Location%3A%20%2F');
+ $body = $response->toArray();
+ } finally {
+ $p->stop();
+ }
+
+ $this->assertSame('GET', $body['REQUEST_METHOD']);
+ $this->assertSame('/', $body['REQUEST_URI']);
+ }
+
+ public function testResponseCanBeProcessedAfterClientReset()
+ {
+ $client = $this->getHttpClient(__FUNCTION__);
+ $response = $client->request('GET', 'http://127.0.0.1:8057/timeout-body');
+ $stream = $client->stream($response);
+
+ $response->getStatusCode();
+ $client->reset();
+ $stream->current();
+
+ $this->addToAssertionCount(1);
+ }
+
+ public function testUnixSocket()
+ {
+ if (!file_exists('/var/run/docker.sock')) {
+ $this->markTestSkipped('Docker socket not found.');
+ }
+
+ $client = $this->getHttpClient(__FUNCTION__)
+ ->withOptions([
+ 'base_uri' => 'http://docker',
+ 'bindto' => '/run/docker.sock',
+ ]);
+
+ $response = $client->request('GET', '/info');
+
+ $this->assertSame(200, $response->getStatusCode());
+
+ $info = $response->getInfo();
+ $this->assertSame('/run/docker.sock', $info['primary_ip']);
+ }
}
diff --git a/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php b/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php
index f5f6d8ddcf9be..b500c9548ebb0 100644
--- a/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/HttplugClientTest.php
@@ -32,11 +32,6 @@ public static function setUpBeforeClass(): void
TestHttpServer::start();
}
- public static function tearDownAfterClass(): void
- {
- TestHttpServer::stop();
- }
-
/**
* @requires function ob_gzhandler
*/
diff --git a/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php
index 1e6351476a04e..76969a3238c39 100644
--- a/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/MockHttpClientTest.php
@@ -505,6 +505,11 @@ public function testHttp2PushVulcainWithUnusedResponse()
$this->markTestSkipped('MockHttpClient doesn\'t support HTTP/2 PUSH.');
}
+ public function testUnixSocket()
+ {
+ $this->markTestSkipped('MockHttpClient doesn\'t support binding to unix sockets.');
+ }
+
public function testChangeResponseFactory()
{
/* @var MockHttpClient $client */
diff --git a/src/Symfony/Component/HttpClient/Tests/NativeHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/NativeHttpClientTest.php
index 3250b5013763b..435b92129f4e4 100644
--- a/src/Symfony/Component/HttpClient/Tests/NativeHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/NativeHttpClientTest.php
@@ -14,6 +14,9 @@
use Symfony\Component\HttpClient\NativeHttpClient;
use Symfony\Contracts\HttpClient\HttpClientInterface;
+/**
+ * @group dns-sensitive
+ */
class NativeHttpClientTest extends HttpClientTestCase
{
protected function getHttpClient(string $testCase): HttpClientInterface
@@ -45,4 +48,9 @@ public function testHttp2PushVulcainWithUnusedResponse()
{
$this->markTestSkipped('NativeHttpClient doesn\'t support HTTP/2.');
}
+
+ public function testUnixSocket()
+ {
+ $this->markTestSkipped('NativeHttpClient doesn\'t support binding to unix sockets.');
+ }
}
diff --git a/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php
index 290ffec5e9176..ddd83c4960cb0 100644
--- a/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/NoPrivateNetworkHttpClientTest.php
@@ -12,17 +12,16 @@
namespace Symfony\Component\HttpClient\Tests;
use PHPUnit\Framework\TestCase;
+use Symfony\Bridge\PhpUnit\DnsMock;
use Symfony\Component\HttpClient\Exception\InvalidArgumentException;
use Symfony\Component\HttpClient\Exception\TransportException;
use Symfony\Component\HttpClient\MockHttpClient;
use Symfony\Component\HttpClient\NoPrivateNetworkHttpClient;
use Symfony\Component\HttpClient\Response\MockResponse;
-use Symfony\Contracts\HttpClient\HttpClientInterface;
-use Symfony\Contracts\HttpClient\ResponseInterface;
class NoPrivateNetworkHttpClientTest extends TestCase
{
- public static function getExcludeData(): array
+ public static function getExcludeIpData(): array
{
return [
// private
@@ -51,24 +50,44 @@ public static function getExcludeData(): array
['104.26.14.6', '104.26.14.0/24', true],
['2606:4700:20::681a:e06', null, false],
['2606:4700:20::681a:e06', '2606:4700:20::/43', true],
+ ];
+ }
- // no ipv4/ipv6 at all
- ['2606:4700:20::681a:e06', '::/0', true],
- ['104.26.14.6', '0.0.0.0/0', true],
+ public static function getExcludeHostData(): iterable
+ {
+ yield from self::getExcludeIpData();
- // weird scenarios (e.g.: when trying to match ipv4 address on ipv6 subnet)
- ['10.0.0.1', 'fc00::/7', false],
- ['fc00::1', '10.0.0.0/8', false],
- ];
+ // no ipv4/ipv6 at all
+ yield ['2606:4700:20::681a:e06', '::/0', true];
+ yield ['104.26.14.6', '0.0.0.0/0', true];
+
+ // weird scenarios (e.g.: when trying to match ipv4 address on ipv6 subnet)
+ yield ['10.0.0.1', 'fc00::/7', true];
+ yield ['fc00::1', '10.0.0.0/8', true];
}
/**
- * @dataProvider getExcludeData
+ * @dataProvider getExcludeIpData
+ *
+ * @group dns-sensitive
*/
public function testExcludeByIp(string $ipAddr, $subnets, bool $mustThrow)
{
+ $host = strtr($ipAddr, '.:', '--');
+ DnsMock::withMockedHosts([
+ $host => [
+ str_contains($ipAddr, ':') ? [
+ 'type' => 'AAAA',
+ 'ipv6' => '3706:5700:20::ac43:4826',
+ ] : [
+ 'type' => 'A',
+ 'ip' => '105.26.14.6',
+ ],
+ ],
+ ]);
+
$content = 'foo';
- $url = \sprintf('http://%s/', strtr($ipAddr, '.:', '--'));
+ $url = \sprintf('http://%s/', $host);
if ($mustThrow) {
$this->expectException(TransportException::class);
@@ -86,12 +105,26 @@ public function testExcludeByIp(string $ipAddr, $subnets, bool $mustThrow)
}
/**
- * @dataProvider getExcludeData
+ * @dataProvider getExcludeHostData
+ *
+ * @group dns-sensitive
*/
public function testExcludeByHost(string $ipAddr, $subnets, bool $mustThrow)
{
+ $host = strtr($ipAddr, '.:', '--');
+ DnsMock::withMockedHosts([
+ $host => [
+ str_contains($ipAddr, ':') ? [
+ 'type' => 'AAAA',
+ 'ipv6' => $ipAddr,
+ ] : [
+ 'type' => 'A',
+ 'ip' => $ipAddr,
+ ],
+ ],
+ ]);
+
$content = 'foo';
- $host = str_contains($ipAddr, ':') ? \sprintf('[%s]', $ipAddr) : $ipAddr;
$url = \sprintf('http://%s/', $host);
if ($mustThrow) {
@@ -142,6 +175,27 @@ public function testNonCallableOnProgressCallback()
$client->request('GET', $url, ['on_progress' => $customCallback]);
}
+ public function testHeadersArePassedOnRedirect()
+ {
+ $ipAddr = '104.26.14.6';
+ $url = sprintf('http://%s/', $ipAddr);
+ $content = 'foo';
+
+ $callback = function ($method, $url, $options) use ($content): MockResponse {
+ $this->assertArrayHasKey('headers', $options);
+ $this->assertNotContains('content-type: application/json', $options['headers']);
+ $this->assertContains('foo: bar', $options['headers']);
+ return new MockResponse($content);
+ };
+ $responses = [
+ new MockResponse('', ['http_code' => 302, 'redirect_url' => 'http://104.26.14.7']),
+ $callback,
+ ];
+ $client = new NoPrivateNetworkHttpClient(new MockHttpClient($responses));
+ $response = $client->request('POST', $url, ['headers' => ['foo' => 'bar', 'content-type' => 'application/json']]);
+ $this->assertEquals($content, $response->getContent());
+ }
+
private function getMockHttpClient(string $ipAddr, string $content)
{
return new MockHttpClient(new MockResponse($content, ['primary_ip' => $ipAddr]));
diff --git a/src/Symfony/Component/HttpClient/Tests/Psr18ClientTest.php b/src/Symfony/Component/HttpClient/Tests/Psr18ClientTest.php
index 65b7f5b3f6794..bf49535ae3e66 100644
--- a/src/Symfony/Component/HttpClient/Tests/Psr18ClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/Psr18ClientTest.php
@@ -28,11 +28,6 @@ public static function setUpBeforeClass(): void
TestHttpServer::start();
}
- public static function tearDownAfterClass(): void
- {
- TestHttpServer::stop();
- }
-
/**
* @requires function ob_gzhandler
*/
diff --git a/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php
index 1a79ef522c4c8..6d61e93eff0d8 100644
--- a/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/RetryableHttpClientTest.php
@@ -27,11 +27,6 @@
class RetryableHttpClientTest extends TestCase
{
- public static function tearDownAfterClass(): void
- {
- TestHttpServer::stop();
- }
-
public function testRetryOnError()
{
$client = new RetryableHttpClient(
diff --git a/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php
index b6a2c03c8f7a3..cf437a653bd76 100644
--- a/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/TraceableHttpClientTest.php
@@ -29,11 +29,6 @@ public static function setUpBeforeClass(): void
TestHttpServer::start();
}
- public static function tearDownAfterClass(): void
- {
- TestHttpServer::stop();
- }
-
public function testItTracesRequest()
{
$httpClient = $this->createMock(HttpClientInterface::class);
diff --git a/src/Symfony/Component/HttpClient/composer.json b/src/Symfony/Component/HttpClient/composer.json
index f294e7a577902..7ca008fd01f13 100644
--- a/src/Symfony/Component/HttpClient/composer.json
+++ b/src/Symfony/Component/HttpClient/composer.json
@@ -25,7 +25,7 @@
"php": ">=8.2",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-client-contracts": "~3.4.3|^3.5.1",
+ "symfony/http-client-contracts": "~3.4.4|^3.5.2",
"symfony/service-contracts": "^2.5|^3"
},
"require-dev": {
diff --git a/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php b/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php
index 6eddd6c287c85..a7358183bd461 100644
--- a/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php
+++ b/src/Symfony/Component/HttpFoundation/BinaryFileResponse.php
@@ -189,7 +189,12 @@ public function prepare(Request $request): static
}
if (!$this->headers->has('Content-Type')) {
- $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream');
+ $mimeType = null;
+ if (!$this->tempFileObject) {
+ $mimeType = $this->file->getMimeType();
+ }
+
+ $this->headers->set('Content-Type', $mimeType ?: 'application/octet-stream');
}
parent::prepare($request);
@@ -232,7 +237,7 @@ public function prepare(Request $request): static
$path = $location.substr($path, \strlen($pathPrefix));
// Only set X-Accel-Redirect header if a valid URI can be produced
// as nginx does not serve arbitrary file paths.
- $this->headers->set($type, $path);
+ $this->headers->set($type, rawurlencode($path));
$this->maxlen = 0;
break;
}
diff --git a/src/Symfony/Component/HttpFoundation/IpUtils.php b/src/Symfony/Component/HttpFoundation/IpUtils.php
index 5e1e29c9585f0..11a43238b4601 100644
--- a/src/Symfony/Component/HttpFoundation/IpUtils.php
+++ b/src/Symfony/Component/HttpFoundation/IpUtils.php
@@ -196,6 +196,16 @@ public static function anonymize(string $ip/* , int $v4Bytes = 1, int $v6Bytes =
throw new \InvalidArgumentException('Cannot anonymize more than 4 bytes for IPv4 and 16 bytes for IPv6.');
}
+ /**
+ * If the IP contains a % symbol, then it is a local-link address with scoping according to RFC 4007
+ * In that case, we only care about the part before the % symbol, as the following functions, can only work with
+ * the IP address itself. As the scope can leak information (containing interface name), we do not want to
+ * include it in our anonymized IP data.
+ */
+ if (str_contains($ip, '%')) {
+ $ip = substr($ip, 0, strpos($ip, '%'));
+ }
+
$wrappedIPv6 = false;
if (str_starts_with($ip, '[') && str_ends_with($ip, ']')) {
$wrappedIPv6 = true;
diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php
index db78105cc83cf..5ee07ecbde3bd 100644
--- a/src/Symfony/Component/HttpFoundation/Request.php
+++ b/src/Symfony/Component/HttpFoundation/Request.php
@@ -1384,7 +1384,7 @@ public function isMethodCacheable(): bool
public function getProtocolVersion(): ?string
{
if ($this->isFromTrustedProxy()) {
- preg_match('~^(HTTP/)?([1-9]\.[0-9]) ~', $this->headers->get('Via') ?? '', $matches);
+ preg_match('~^(HTTP/)?([1-9]\.[0-9])\b~', $this->headers->get('Via') ?? '', $matches);
if ($matches) {
return 'HTTP/'.$matches[2];
diff --git a/src/Symfony/Component/HttpFoundation/RequestStack.php b/src/Symfony/Component/HttpFoundation/RequestStack.php
index c358ea68c3a60..153bd9ad797fb 100644
--- a/src/Symfony/Component/HttpFoundation/RequestStack.php
+++ b/src/Symfony/Component/HttpFoundation/RequestStack.php
@@ -114,4 +114,11 @@ public function getSession(): SessionInterface
throw new SessionNotFoundException();
}
+
+ public function resetRequestFormats(): void
+ {
+ static $resetRequestFormats;
+ $resetRequestFormats ??= \Closure::bind(static fn () => self::$formats = null, null, Request::class);
+ $resetRequestFormats();
+ }
}
diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php
index f08471e9b9130..e2fb4f129a124 100644
--- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php
+++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php
@@ -11,6 +11,9 @@
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
+use Doctrine\DBAL\Schema\Name\Identifier;
+use Doctrine\DBAL\Schema\Name\UnqualifiedName;
+use Doctrine\DBAL\Schema\PrimaryKeyConstraint;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Types;
@@ -224,7 +227,13 @@ public function configureSchema(Schema $schema, ?\Closure $isSameDatabase = null
default:
throw new \DomainException(\sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver));
}
- $table->setPrimaryKey([$this->idCol]);
+
+ if (class_exists(PrimaryKeyConstraint::class)) {
+ $table->addPrimaryKeyConstraint(new PrimaryKeyConstraint(null, [new UnqualifiedName(Identifier::unquoted($this->idCol))], true));
+ } else {
+ $table->setPrimaryKey([$this->idCol]);
+ }
+
$table->addIndex([$this->lifetimeCol], $this->lifetimeCol.'_idx');
}
diff --git a/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php
index 2951cdb514471..7627cd5ec492a 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php
@@ -314,7 +314,15 @@ public function testXAccelMapping($realpath, $mapping, $virtual)
$property->setValue($response, $file);
$response->prepare($request);
- $this->assertEquals($virtual, $response->headers->get('X-Accel-Redirect'));
+ $header = $response->headers->get('X-Accel-Redirect');
+
+ if ($virtual) {
+ // Making sure the path doesn't contain characters unsupported by nginx
+ $this->assertMatchesRegularExpression('/^([^?%]|%[0-9A-F]{2})*$/', $header);
+ $header = rawurldecode($header);
+ }
+
+ $this->assertEquals($virtual, $header);
}
public function testDeleteFileAfterSend()
@@ -361,6 +369,7 @@ public static function getSampleXAccelMappings()
['/home/Foo/bar.txt', '/var/www/=/files/,/home/Foo/=/baz/', '/baz/bar.txt'],
['/home/Foo/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', '/baz/bar.txt'],
['/tmp/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', null],
+ ['/var/www/var/www/files/foo%.txt', '/var/www/=/files/', '/files/var/www/files/foo%.txt'],
];
}
@@ -468,4 +477,15 @@ public function testSetChunkSizeTooSmall()
$response->setChunkSize(0);
}
+
+ public function testCreateFromTemporaryFileWithoutMimeType()
+ {
+ $file = new \SplTempFileObject();
+ $file->fwrite('foo,bar');
+
+ $response = new BinaryFileResponse($file);
+ $response->prepare(new Request());
+
+ $this->assertSame('application/octet-stream', $response->headers->get('Content-Type'));
+ }
}
diff --git a/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php
index 36eb9ead54313..d23f17f712450 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/InputBagTest.php
@@ -71,7 +71,7 @@ public function __toString(): string
$this->assertSame('foo', $bag->getString('unknown', 'foo'), '->getString() returns the default if a parameter is not defined');
$this->assertSame('1', $bag->getString('bool_true'), '->getString() returns "1" if a parameter is true');
$this->assertSame('', $bag->getString('bool_false', 'foo'), '->getString() returns an empty empty string if a parameter is false');
- $this->assertSame('strval', $bag->getString('stringable'), '->getString() gets a value of a stringable paramater as string');
+ $this->assertSame('strval', $bag->getString('stringable'), '->getString() gets a value of a stringable parameter as string');
}
public function testGetStringExceptionWithArray()
diff --git a/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php b/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php
index 95044106ba0e6..5ed3e7b22bcf4 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/IpUtilsTest.php
@@ -147,6 +147,7 @@ public static function anonymizedIpData()
['[2a01:198::3]', '[2a01:198::]'],
['::ffff:123.234.235.236', '::ffff:123.234.235.0'], // IPv4-mapped IPv6 addresses
['::123.234.235.236', '::123.234.235.0'], // deprecated IPv4-compatible IPv6 address
+ ['fe80::1fc4:15d8:78db:2319%enp4s0', 'fe80::'], // IPv6 link-local with RFC4007 scoping
];
}
diff --git a/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php
index ac2b4da5a428e..018e1820d2ea6 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php
@@ -219,7 +219,7 @@ public function __toString(): string
$this->assertSame('foo', $bag->getString('unknown', 'foo'), '->getString() returns the default if a parameter is not defined');
$this->assertSame('1', $bag->getString('bool_true'), '->getString() returns "1" if a parameter is true');
$this->assertSame('', $bag->getString('bool_false', 'foo'), '->getString() returns an empty empty string if a parameter is false');
- $this->assertSame('strval', $bag->getString('stringable'), '->getString() gets a value of a stringable paramater as string');
+ $this->assertSame('strval', $bag->getString('stringable'), '->getString() gets a value of a stringable parameter as string');
}
public function testGetStringExceptionWithArray()
diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestStackTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestStackTest.php
index 6fba27589c2b0..f97efe4804abe 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/RequestStackTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/RequestStackTest.php
@@ -74,4 +74,18 @@ public function testGetParentRequest()
$requestStack->push($secondSubRequest);
$this->assertSame($firstSubRequest, $requestStack->getParentRequest());
}
+
+ public function testResetRequestFormats()
+ {
+ $requestStack = new RequestStack();
+
+ $request = Request::create('/foo');
+ $request->setFormat('foo', ['application/foo']);
+
+ $this->assertSame(['application/foo'], $request->getMimeTypes('foo'));
+
+ $requestStack->resetRequestFormats();
+
+ $this->assertSame([], $request->getMimeTypes('foo'));
+ }
}
diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php
index d5a41390e1b5d..220702a1d2990 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php
@@ -589,7 +589,6 @@ public function testGetUri()
$server['REDIRECT_QUERY_STRING'] = 'query=string';
$server['REDIRECT_URL'] = '/path/info';
- $server['SCRIPT_NAME'] = '/index.php';
$server['QUERY_STRING'] = 'query=string';
$server['REQUEST_URI'] = '/path/info?toto=test&1=1';
$server['SCRIPT_NAME'] = '/index.php';
@@ -716,7 +715,6 @@ public function testGetUriForPath()
$server['REDIRECT_QUERY_STRING'] = 'query=string';
$server['REDIRECT_URL'] = '/path/info';
- $server['SCRIPT_NAME'] = '/index.php';
$server['QUERY_STRING'] = 'query=string';
$server['REQUEST_URI'] = '/path/info?toto=test&1=1';
$server['SCRIPT_NAME'] = '/index.php';
@@ -2419,6 +2417,8 @@ public static function protocolVersionProvider()
'trusted with via and protocol name' => ['HTTP/2.0', true, 'HTTP/1.0 fred, HTTP/1.1 nowhere.com (Apache/1.1)', 'HTTP/1.0'],
'trusted with broken via' => ['HTTP/2.0', true, 'HTTP/1^0 foo', 'HTTP/2.0'],
'trusted with partially-broken via' => ['HTTP/2.0', true, '1.0 fred, foo', 'HTTP/1.0'],
+ 'trusted with simple via' => ['HTTP/2.0', true, 'HTTP/1.0', 'HTTP/1.0'],
+ 'trusted with only version via' => ['HTTP/2.0', true, '1.0', 'HTTP/1.0'],
];
}
diff --git a/src/Symfony/Component/HttpKernel/Attribute/MapQueryParameter.php b/src/Symfony/Component/HttpKernel/Attribute/MapQueryParameter.php
index 5b147b8143700..ec9bf57726075 100644
--- a/src/Symfony/Component/HttpKernel/Attribute/MapQueryParameter.php
+++ b/src/Symfony/Component/HttpKernel/Attribute/MapQueryParameter.php
@@ -25,7 +25,7 @@
final class MapQueryParameter extends ValueResolver
{
/**
- * @see https://php.net/filter.filters.validate for filter, flags and options
+ * @see https://php.net/manual/filter.constants for filter, flags and options
*
* @param string|null $name The name of the query parameter; if null, the name of the argument in the controller will be used
* @param (FILTER_VALIDATE_*)|(FILTER_SANITIZE_*)|null $filter The filter to pass to "filter_var()"
diff --git a/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php b/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php
index 1f0ff7cc0f053..a196250e8b23b 100644
--- a/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php
+++ b/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php
@@ -46,11 +46,9 @@
class RequestPayloadValueResolver implements ValueResolverInterface, EventSubscriberInterface
{
/**
- * @see \Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer::DISABLE_TYPE_ENFORCEMENT
* @see DenormalizerInterface::COLLECT_DENORMALIZATION_ERRORS
*/
private const CONTEXT_DENORMALIZE = [
- 'disable_type_enforcement' => true,
'collect_denormalization_errors' => true,
];
@@ -190,7 +188,7 @@ private function mapQueryString(Request $request, ArgumentMetadata $argument, Ma
return null;
}
- return $this->serializer->denormalize($data, $argument->getType(), null, $attribute->serializationContext + self::CONTEXT_DENORMALIZE + ['filter_bool' => true]);
+ return $this->serializer->denormalize($data, $argument->getType(), 'csv', $attribute->serializationContext + self::CONTEXT_DENORMALIZE + ['filter_bool' => true]);
}
private function mapRequestPayload(Request $request, ArgumentMetadata $argument, MapRequestPayload $attribute): object|array|null
@@ -210,7 +208,7 @@ private function mapRequestPayload(Request $request, ArgumentMetadata $argument,
}
if ($data = $request->request->all()) {
- return $this->serializer->denormalize($data, $type, null, $attribute->serializationContext + self::CONTEXT_DENORMALIZE + ('form' === $format ? ['filter_bool' => true] : []));
+ return $this->serializer->denormalize($data, $type, 'csv', $attribute->serializationContext + self::CONTEXT_DENORMALIZE + ('form' === $format ? ['filter_bool' => true] : []));
}
if ('' === ($data = $request->getContent()) && ($argument->isNullable() || $argument->hasDefaultValue())) {
diff --git a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php
index 747a495036d17..8713dcf1e55d9 100644
--- a/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php
+++ b/src/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php
@@ -57,7 +57,7 @@ public function collect(Request $request, Response $response, ?\Throwable $excep
'php_intl_locale' => class_exists(\Locale::class, false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a',
'php_timezone' => date_default_timezone_get(),
'xdebug_enabled' => \extension_loaded('xdebug'),
- 'xdebug_status' => \extension_loaded('xdebug') ? ($xdebugMode && $xdebugMode !== 'off' ? 'Enabled (' . $xdebugMode . ')' : 'Not enabled') : 'Not installed',
+ 'xdebug_status' => \extension_loaded('xdebug') ? ($xdebugMode && 'off' !== $xdebugMode ? 'Enabled (' . $xdebugMode . ')' : 'Not enabled') : 'Not installed',
'apcu_enabled' => \extension_loaded('apcu') && filter_var(\ini_get('apc.enabled'), \FILTER_VALIDATE_BOOL),
'apcu_status' => \extension_loaded('apcu') ? (filter_var(\ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? 'Enabled' : 'Not enabled') : 'Not installed',
'zend_opcache_enabled' => \extension_loaded('Zend OPcache') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOL),
diff --git a/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php b/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
index 9c4f4981a5bba..beca6bfb149a1 100644
--- a/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
+++ b/src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
@@ -66,7 +66,11 @@ protected function afterDispatch(string $eventName, object $event): void
if (null === $sectionId) {
break;
}
- $this->stopwatch->stopSection($sectionId);
+ try {
+ $this->stopwatch->stopSection($sectionId);
+ } catch (\LogicException) {
+ // The stop watch service might have been reset in the meantime
+ }
break;
case KernelEvents::TERMINATE:
// In the special case described in the `preDispatch` method above, the `$token` section
diff --git a/src/Symfony/Component/HttpKernel/DependencyInjection/LoggerPass.php b/src/Symfony/Component/HttpKernel/DependencyInjection/LoggerPass.php
index 2cc75950fd6d5..7566d7358cf34 100644
--- a/src/Symfony/Component/HttpKernel/DependencyInjection/LoggerPass.php
+++ b/src/Symfony/Component/HttpKernel/DependencyInjection/LoggerPass.php
@@ -27,7 +27,9 @@ class LoggerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container): void
{
- $container->setAlias(LoggerInterface::class, 'logger');
+ if (!$container->has(LoggerInterface::class)) {
+ $container->setAlias(LoggerInterface::class, 'logger');
+ }
if ($container->has('logger')) {
return;
diff --git a/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
index d473a2e6b04a7..6e9e3fd4ac8ee 100644
--- a/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
+++ b/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
@@ -157,7 +157,7 @@ public function process(ContainerBuilder $container): void
continue;
} elseif (!$autowire || (!($autowireAttributes ??= $p->getAttributes(Autowire::class, \ReflectionAttribute::IS_INSTANCEOF)) && (!$type || '\\' !== $target[0]))) {
continue;
- } elseif (is_subclass_of($type, \UnitEnum::class)) {
+ } elseif (!$autowireAttributes && is_subclass_of($type, \UnitEnum::class)) {
// do not attempt to register enum typed arguments if not already present in bindings
continue;
} elseif (!$p->allowsNull()) {
diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php
index 7e8b002079c10..8948fc7533e96 100644
--- a/src/Symfony/Component/HttpKernel/Kernel.php
+++ b/src/Symfony/Component/HttpKernel/Kernel.php
@@ -73,11 +73,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
*/
private static array $freshCache = [];
- public const VERSION = '7.2.0-DEV';
- public const VERSION_ID = 70200;
+ public const VERSION = '7.2.8-DEV';
+ public const VERSION_ID = 70208;
public const MAJOR_VERSION = 7;
public const MINOR_VERSION = 2;
- public const RELEASE_VERSION = 0;
+ public const RELEASE_VERSION = 8;
public const EXTRA_VERSION = 'DEV';
public const END_OF_MAINTENANCE = '07/2025';
@@ -399,7 +399,8 @@ protected function initializeContainer(): void
$cachePath = $cache->getPath();
// Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
- $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
+ $errorLevel = error_reporting();
+ error_reporting($errorLevel & ~\E_WARNING);
try {
if (is_file($cachePath) && \is_object($this->container = include $cachePath)
diff --git a/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestPayloadValueResolverTest.php b/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestPayloadValueResolverTest.php
index 8b26767f9ea94..8ed4adfe00567 100644
--- a/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestPayloadValueResolverTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestPayloadValueResolverTest.php
@@ -22,6 +22,7 @@
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NearMissValueResolverException;
use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Exception\NotNormalizableValueException;
@@ -395,6 +396,38 @@ public function testQueryStringValidationPassed()
$this->assertEquals([$payload], $event->getArguments());
}
+ public function testQueryStringParameterTypeMismatch()
+ {
+ $query = ['price' => 'not a float'];
+
+ $normalizer = new ObjectNormalizer(null, null, null, new ReflectionExtractor());
+ $serializer = new Serializer([$normalizer], ['json' => new JsonEncoder()]);
+
+ $validator = $this->createMock(ValidatorInterface::class);
+ $validator->expects($this->never())->method('validate');
+
+ $resolver = new RequestPayloadValueResolver($serializer, $validator);
+
+ $argument = new ArgumentMetadata('invalid', RequestPayload::class, false, false, null, false, [
+ MapQueryString::class => new MapQueryString(),
+ ]);
+
+ $request = Request::create('/', 'GET', $query);
+
+ $kernel = $this->createMock(HttpKernelInterface::class);
+ $arguments = $resolver->resolve($request, $argument);
+ $event = new ControllerArgumentsEvent($kernel, function () {}, $arguments, $request, HttpKernelInterface::MAIN_REQUEST);
+
+ try {
+ $resolver->onKernelControllerArguments($event);
+ $this->fail(sprintf('Expected "%s" to be thrown.', HttpException::class));
+ } catch (HttpException $e) {
+ $validationFailedException = $e->getPrevious();
+ $this->assertInstanceOf(ValidationFailedException::class, $validationFailedException);
+ $this->assertSame('This value should be of type float.', $validationFailedException->getViolations()[0]->getMessage());
+ }
+ }
+
public function testRequestInputValidationPassed()
{
$input = ['price' => '50'];
@@ -457,6 +490,38 @@ public function testRequestArrayDenormalization()
$this->assertEquals([$payload], $event->getArguments());
}
+ public function testRequestInputTypeMismatch()
+ {
+ $input = ['price' => 'not a float'];
+
+ $normalizer = new ObjectNormalizer(null, null, null, new ReflectionExtractor());
+ $serializer = new Serializer([$normalizer], ['json' => new JsonEncoder()]);
+
+ $validator = $this->createMock(ValidatorInterface::class);
+ $validator->expects($this->never())->method('validate');
+
+ $resolver = new RequestPayloadValueResolver($serializer, $validator);
+
+ $argument = new ArgumentMetadata('invalid', RequestPayload::class, false, false, null, false, [
+ MapRequestPayload::class => new MapRequestPayload(),
+ ]);
+
+ $request = Request::create('/', 'POST', $input);
+
+ $kernel = $this->createMock(HttpKernelInterface::class);
+ $arguments = $resolver->resolve($request, $argument);
+ $event = new ControllerArgumentsEvent($kernel, function () {}, $arguments, $request, HttpKernelInterface::MAIN_REQUEST);
+
+ try {
+ $resolver->onKernelControllerArguments($event);
+ $this->fail(sprintf('Expected "%s" to be thrown.', HttpException::class));
+ } catch (HttpException $e) {
+ $validationFailedException = $e->getPrevious();
+ $this->assertInstanceOf(ValidationFailedException::class, $validationFailedException);
+ $this->assertSame('This value should be of type float.', $validationFailedException->getViolations()[0]->getMessage());
+ }
+ }
+
public function testItThrowsOnMissingAttributeType()
{
$serializer = new Serializer();
diff --git a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/LoggerPassTest.php b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/LoggerPassTest.php
index cb504877cdc44..33227e49cbc7f 100644
--- a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/LoggerPassTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/LoggerPassTest.php
@@ -53,4 +53,15 @@ public function testRegisterLogger()
$this->assertSame(Logger::class, $definition->getClass());
$this->assertFalse($definition->isPublic());
}
+
+ public function testAutowiringAliasIsPreserved()
+ {
+ $container = new ContainerBuilder();
+ $container->setParameter('kernel.debug', false);
+ $container->setAlias(LoggerInterface::class, 'my_logger');
+
+ (new LoggerPass())->process($container);
+
+ $this->assertSame('my_logger', (string) $container->getAlias(LoggerInterface::class));
+ }
}
diff --git a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
index 02b5df6512c5b..af6d49d29c10e 100644
--- a/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
@@ -503,13 +503,14 @@ public function testAutowireAttribute()
$locator = $container->get($locatorId)->get('foo::fooAction');
- $this->assertCount(9, $locator->getProvidedServices());
+ $this->assertCount(10, $locator->getProvidedServices());
$this->assertInstanceOf(\stdClass::class, $locator->get('service1'));
$this->assertSame('foo/bar', $locator->get('value'));
$this->assertSame('foo', $locator->get('expression'));
$this->assertInstanceOf(\stdClass::class, $locator->get('serviceAsValue'));
$this->assertInstanceOf(\stdClass::class, $locator->get('expressionAsValue'));
$this->assertSame('bar', $locator->get('rawValue'));
+ $this->stringContains('Symfony_Component_HttpKernel_Tests_Fixtures_Suit_APP_SUIT', $locator->get('suit'));
$this->assertSame('@bar', $locator->get('escapedRawValue'));
$this->assertSame('foo', $locator->get('customAutowire'));
$this->assertInstanceOf(FooInterface::class, $autowireCallable = $locator->get('autowireCallable'));
@@ -752,6 +753,8 @@ public function fooAction(
\stdClass $expressionAsValue,
#[Autowire('bar')]
string $rawValue,
+ #[Autowire(env: 'enum:\Symfony\Component\HttpKernel\Tests\Fixtures\Suit:APP_SUIT')]
+ Suit $suit,
#[Autowire('@@bar')]
string $escapedRawValue,
#[CustomAutowire('some.parameter')]
diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/EsiFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/EsiFragmentRendererTest.php
index fa9885d2753cd..43c740ee12b98 100644
--- a/src/Symfony/Component/HttpKernel/Tests/Fragment/EsiFragmentRendererTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/EsiFragmentRendererTest.php
@@ -60,8 +60,8 @@ public function testRenderControllerReference()
$reference = new ControllerReference('main_controller', [], []);
$altReference = new ControllerReference('alt_controller', [], []);
- $this->assertEquals(
- '',
+ $this->assertMatchesRegularExpression(
+ '#^$#',
$strategy->render($reference, $request, ['alt' => $altReference])->getContent()
);
}
@@ -78,8 +78,8 @@ public function testRenderControllerReferenceWithAbsoluteUri()
$reference = new ControllerReference('main_controller', [], []);
$altReference = new ControllerReference('alt_controller', [], []);
- $this->assertSame(
- '',
+ $this->assertMatchesRegularExpression(
+ '#^$#',
$strategy->render($reference, $request, ['alt' => $altReference, 'absolute_uri' => true])->getContent()
);
}
diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php
index f74887ade36f4..8e4b59e5feeb9 100644
--- a/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php
@@ -32,7 +32,7 @@ public function testRenderWithControllerAndSigner()
{
$strategy = new HIncludeFragmentRenderer(null, new UriSigner('foo'));
- $this->assertEquals(' ', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent());
+ $this->assertMatchesRegularExpression('#^ $#', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent());
}
public function testRenderWithUri()
diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/SsiFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/SsiFragmentRendererTest.php
index 4af00f9f75137..7fd04c5a5b0b7 100644
--- a/src/Symfony/Component/HttpKernel/Tests/Fragment/SsiFragmentRendererTest.php
+++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/SsiFragmentRendererTest.php
@@ -51,8 +51,8 @@ public function testRenderControllerReference()
$reference = new ControllerReference('main_controller', [], []);
$altReference = new ControllerReference('alt_controller', [], []);
- $this->assertEquals(
- '',
+ $this->assertMatchesRegularExpression(
+ '{^$}',
$strategy->render($reference, $request, ['alt' => $altReference])->getContent()
);
}
@@ -69,8 +69,8 @@ public function testRenderControllerReferenceWithAbsoluteUri()
$reference = new ControllerReference('main_controller', [], []);
$altReference = new ControllerReference('alt_controller', [], []);
- $this->assertSame(
- '',
+ $this->assertMatchesRegularExpression(
+ '{^$}',
$strategy->render($reference, $request, ['alt' => $altReference, 'absolute_uri' => true])->getContent()
);
}
diff --git a/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php b/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php
index 745e074157974..5d484edacc1b7 100644
--- a/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php
+++ b/src/Symfony/Component/Intl/Data/Generator/RegionDataGenerator.php
@@ -160,7 +160,7 @@ protected function generateDataForMeta(BundleEntryReaderInterface $reader, strin
$alpha3ToAlpha2 = array_flip($alpha2ToAlpha3);
asort($alpha3ToAlpha2);
- $alpha2ToNumeric = $this->generateAlpha2ToNumericMapping($metadataBundle);
+ $alpha2ToNumeric = $this->generateAlpha2ToNumericMapping(array_flip($this->regionCodes), $metadataBundle);
$numericToAlpha2 = [];
foreach ($alpha2ToNumeric as $alpha2 => $numeric) {
// Add underscore prefix to force keys with leading zeros to remain as string keys.
@@ -231,7 +231,7 @@ private function generateAlpha2ToAlpha3Mapping(array $countries, ArrayAccessible
return $alpha2ToAlpha3;
}
- private function generateAlpha2ToNumericMapping(ArrayAccessibleResourceBundle $metadataBundle): array
+ private function generateAlpha2ToNumericMapping(array $countries, ArrayAccessibleResourceBundle $metadataBundle): array
{
$aliases = iterator_to_array($metadataBundle['alias']['territory']);
@@ -250,6 +250,10 @@ private function generateAlpha2ToNumericMapping(ArrayAccessibleResourceBundle $m
continue;
}
+ if (!isset($countries[$data['replacement']])) {
+ continue;
+ }
+
if ('deprecated' === $data['reason']) {
continue;
}
diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/en_NO.php b/src/Symfony/Component/Intl/Resources/data/currencies/en_NO.php
new file mode 100644
index 0000000000000..dc28340678e53
--- /dev/null
+++ b/src/Symfony/Component/Intl/Resources/data/currencies/en_NO.php
@@ -0,0 +1,10 @@
+ [
+ 'NOK' => [
+ 'kr',
+ 'Norwegian Krone',
+ ],
+ ],
+];
diff --git a/src/Symfony/Component/Intl/Resources/data/git-info.txt b/src/Symfony/Component/Intl/Resources/data/git-info.txt
index 544ed3b9bd16c..79792d95115f2 100644
--- a/src/Symfony/Component/Intl/Resources/data/git-info.txt
+++ b/src/Symfony/Component/Intl/Resources/data/git-info.txt
@@ -2,6 +2,6 @@ Git information
===============
URL: https://github.com/unicode-org/icu.git
-Revision: 8eca245c7484ac6cc179e3e5f7c1ea7680810f39
-Author: Rahul Pandey
-Date: 2024-10-21T16:21:38+05:30
+Revision: 457157a92aa053e632cc7fcfd0e12f8a943b2d11
+Author: Mihai Nita
+Date: 2025-03-10T19:11:46+00:00
diff --git a/src/Symfony/Component/Intl/Resources/data/languages/en.php b/src/Symfony/Component/Intl/Resources/data/languages/en.php
index 007037355de05..51cccde39b1f2 100644
--- a/src/Symfony/Component/Intl/Resources/data/languages/en.php
+++ b/src/Symfony/Component/Intl/Resources/data/languages/en.php
@@ -127,7 +127,6 @@
'csw' => 'Swampy Cree',
'cu' => 'Church Slavic',
'cv' => 'Chuvash',
- 'cwd' => 'Woods Cree',
'cy' => 'Welsh',
'da' => 'Danish',
'dak' => 'Dakota',
@@ -217,7 +216,6 @@
'hak' => 'Hakka Chinese',
'haw' => 'Hawaiian',
'hax' => 'Southern Haida',
- 'hdn' => 'Northern Haida',
'he' => 'Hebrew',
'hi' => 'Hindi',
'hif' => 'Fiji Hindi',
@@ -243,7 +241,6 @@
'ig' => 'Igbo',
'ii' => 'Sichuan Yi',
'ik' => 'Inupiaq',
- 'ike' => 'Eastern Canadian Inuktitut',
'ikt' => 'Western Canadian Inuktitut',
'ilo' => 'Iloko',
'inh' => 'Ingush',
@@ -426,7 +423,6 @@
'oj' => 'Ojibwa',
'ojb' => 'Northwestern Ojibwa',
'ojc' => 'Central Ojibwa',
- 'ojg' => 'Eastern Ojibwa',
'ojs' => 'Oji-Cree',
'ojw' => 'Western Ojibwa',
'oka' => 'Okanagan',
diff --git a/src/Symfony/Component/Intl/Resources/data/languages/fi.php b/src/Symfony/Component/Intl/Resources/data/languages/fi.php
index 2def41ef102d6..5a8726d1eeb3b 100644
--- a/src/Symfony/Component/Intl/Resources/data/languages/fi.php
+++ b/src/Symfony/Component/Intl/Resources/data/languages/fi.php
@@ -14,7 +14,6 @@
'afh' => 'afrihili',
'agq' => 'aghem',
'ain' => 'ainu',
- 'ajp' => 'urduni',
'ak' => 'akan',
'akk' => 'akkadi',
'akz' => 'alabama',
@@ -26,6 +25,7 @@
'ang' => 'muinaisenglanti',
'ann' => 'obolo',
'anp' => 'angika',
+ 'apc' => 'urduni',
'ar' => 'arabia',
'arc' => 'valtakunnanaramea',
'arn' => 'mapudungun',
diff --git a/src/Symfony/Component/Intl/Resources/data/languages/meta.php b/src/Symfony/Component/Intl/Resources/data/languages/meta.php
index 7874969d3f968..764905aa1dcd3 100644
--- a/src/Symfony/Component/Intl/Resources/data/languages/meta.php
+++ b/src/Symfony/Component/Intl/Resources/data/languages/meta.php
@@ -14,7 +14,6 @@
'afh',
'agq',
'ain',
- 'ajp',
'ak',
'akk',
'akz',
@@ -129,7 +128,6 @@
'csw',
'cu',
'cv',
- 'cwd',
'cy',
'da',
'dak',
@@ -219,7 +217,6 @@
'hak',
'haw',
'hax',
- 'hdn',
'he',
'hi',
'hif',
@@ -245,7 +242,6 @@
'ig',
'ii',
'ik',
- 'ike',
'ikt',
'ilo',
'inh',
@@ -430,7 +426,6 @@
'oj',
'ojb',
'ojc',
- 'ojg',
'ojs',
'ojw',
'oka',
@@ -657,7 +652,6 @@
'afr',
'agq',
'ain',
- 'ajp',
'aka',
'akk',
'akz',
@@ -775,7 +769,6 @@
'crs',
'csb',
'csw',
- 'cwd',
'cym',
'dak',
'dan',
@@ -866,7 +859,6 @@
'haw',
'hax',
'hbs',
- 'hdn',
'heb',
'her',
'hif',
@@ -888,7 +880,6 @@
'ibo',
'ido',
'iii',
- 'ike',
'ikt',
'iku',
'ile',
@@ -1076,7 +1067,6 @@
'oci',
'ojb',
'ojc',
- 'ojg',
'oji',
'ojs',
'ojw',
diff --git a/src/Symfony/Component/Intl/Resources/data/languages/nl.php b/src/Symfony/Component/Intl/Resources/data/languages/nl.php
index 9f9e5de5ad8a1..5d2d48d4a65cd 100644
--- a/src/Symfony/Component/Intl/Resources/data/languages/nl.php
+++ b/src/Symfony/Component/Intl/Resources/data/languages/nl.php
@@ -14,7 +14,6 @@
'afh' => 'Afrihili',
'agq' => 'Aghem',
'ain' => 'Aino',
- 'ajp' => 'Zuid-Levantijns-Arabisch',
'ak' => 'Akan',
'akk' => 'Akkadisch',
'akz' => 'Alabama',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/af.php b/src/Symfony/Component/Intl/Resources/data/locales/af.php
index af7e5f0433167..953b57d43622d 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/af.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/af.php
@@ -121,29 +121,35 @@
'en_CM' => 'Engels (Kameroen)',
'en_CX' => 'Engels (Kerseiland)',
'en_CY' => 'Engels (Siprus)',
+ 'en_CZ' => 'Engels (Tsjeggië)',
'en_DE' => 'Engels (Duitsland)',
'en_DK' => 'Engels (Denemarke)',
'en_DM' => 'Engels (Dominica)',
'en_ER' => 'Engels (Eritrea)',
+ 'en_ES' => 'Engels (Spanje)',
'en_FI' => 'Engels (Finland)',
'en_FJ' => 'Engels (Fidji)',
'en_FK' => 'Engels (Falklandeilande)',
'en_FM' => 'Engels (Mikronesië)',
+ 'en_FR' => 'Engels (Frankryk)',
'en_GB' => 'Engels (Verenigde Koninkryk)',
'en_GD' => 'Engels (Grenada)',
'en_GG' => 'Engels (Guernsey)',
'en_GH' => 'Engels (Ghana)',
'en_GI' => 'Engels (Gibraltar)',
'en_GM' => 'Engels (Gambië)',
+ 'en_GS' => 'Engels (Suid-Georgië en die Suidelike Sandwicheilande)',
'en_GU' => 'Engels (Guam)',
'en_GY' => 'Engels (Guyana)',
'en_HK' => 'Engels (Hongkong SAS China)',
+ 'en_HU' => 'Engels (Hongarye)',
'en_ID' => 'Engels (Indonesië)',
'en_IE' => 'Engels (Ierland)',
'en_IL' => 'Engels (Israel)',
'en_IM' => 'Engels (Eiland Man)',
'en_IN' => 'Engels (Indië)',
'en_IO' => 'Engels (Brits-Indiese Oseaangebied)',
+ 'en_IT' => 'Engels (Italië)',
'en_JE' => 'Engels (Jersey)',
'en_JM' => 'Engels (Jamaika)',
'en_KE' => 'Engels (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Engels (Norfolkeiland)',
'en_NG' => 'Engels (Nigerië)',
'en_NL' => 'Engels (Nederland)',
+ 'en_NO' => 'Engels (Noorweë)',
'en_NR' => 'Engels (Nauru)',
'en_NU' => 'Engels (Niue)',
'en_NZ' => 'Engels (Nieu-Seeland)',
'en_PG' => 'Engels (Papoea-Nieu-Guinee)',
'en_PH' => 'Engels (Filippyne)',
'en_PK' => 'Engels (Pakistan)',
+ 'en_PL' => 'Engels (Pole)',
'en_PN' => 'Engels (Pitcairneilande)',
'en_PR' => 'Engels (Puerto Rico)',
+ 'en_PT' => 'Engels (Portugal)',
'en_PW' => 'Engels (Palau)',
+ 'en_RO' => 'Engels (Roemenië)',
'en_RW' => 'Engels (Rwanda)',
'en_SB' => 'Engels (Salomonseilande)',
'en_SC' => 'Engels (Seychelle)',
@@ -184,6 +194,7 @@
'en_SG' => 'Engels (Singapoer)',
'en_SH' => 'Engels (Sint Helena)',
'en_SI' => 'Engels (Slowenië)',
+ 'en_SK' => 'Engels (Slowakye)',
'en_SL' => 'Engels (Sierra Leone)',
'en_SS' => 'Engels (Suid-Soedan)',
'en_SX' => 'Engels (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ak.php b/src/Symfony/Component/Intl/Resources/data/locales/ak.php
index 5818fcbaf5fe7..de90104f6d07d 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ak.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ak.php
@@ -109,29 +109,35 @@
'en_CM' => 'Borɔfo (Kamɛrun)',
'en_CX' => 'Borɔfo (Buronya Supɔ)',
'en_CY' => 'Borɔfo (Saeprɔso)',
+ 'en_CZ' => 'Borɔfo (Kyɛk)',
'en_DE' => 'Borɔfo (Gyaaman)',
'en_DK' => 'Borɔfo (Dɛnmak)',
'en_DM' => 'Borɔfo (Dɔmeneka)',
'en_ER' => 'Borɔfo (Ɛritrea)',
+ 'en_ES' => 'Borɔfo (Spain)',
'en_FI' => 'Borɔfo (Finland)',
'en_FJ' => 'Borɔfo (Figyi)',
'en_FK' => 'Borɔfo (Fɔkman Aeland)',
'en_FM' => 'Borɔfo (Maekronehyia)',
+ 'en_FR' => 'Borɔfo (Franse)',
'en_GB' => 'Borɔfo (UK)',
'en_GD' => 'Borɔfo (Grenada)',
'en_GG' => 'Borɔfo (Guɛnse)',
'en_GH' => 'Borɔfo (Gaana)',
'en_GI' => 'Borɔfo (Gyebralta)',
'en_GM' => 'Borɔfo (Gambia)',
+ 'en_GS' => 'Borɔfo (Gyɔɔgyia Anaafoɔ ne Sandwich Aeland Anaafoɔ)',
'en_GU' => 'Borɔfo (Guam)',
'en_GY' => 'Borɔfo (Gayana)',
'en_HK' => 'Borɔfo (Hɔnkɔn Kyaena)',
+ 'en_HU' => 'Borɔfo (Hangari)',
'en_ID' => 'Borɔfo (Indɔnehyia)',
'en_IE' => 'Borɔfo (Aereland)',
'en_IL' => 'Borɔfo (Israe)',
'en_IM' => 'Borɔfo (Isle of Man)',
'en_IN' => 'Borɔfo (India)',
'en_IO' => 'Borɔfo (Britenfo Man Wɔ India Po No Mu)',
+ 'en_IT' => 'Borɔfo (Itali)',
'en_JE' => 'Borɔfo (Gyɛsi)',
'en_JM' => 'Borɔfo (Gyameka)',
'en_KE' => 'Borɔfo (Kenya)',
@@ -155,15 +161,19 @@
'en_NF' => 'Borɔfo (Norfold Supɔ)',
'en_NG' => 'Borɔfo (Naegyeria)',
'en_NL' => 'Borɔfo (Nɛdɛland)',
+ 'en_NO' => 'Borɔfo (Nɔɔwe)',
'en_NR' => 'Borɔfo (Naworu)',
'en_NU' => 'Borɔfo (Niyu)',
'en_NZ' => 'Borɔfo (Ziland Foforo)',
'en_PG' => 'Borɔfo (Papua Gini Foforɔ)',
'en_PH' => 'Borɔfo (Filipin)',
'en_PK' => 'Borɔfo (Pakistan)',
+ 'en_PL' => 'Borɔfo (Pɔland)',
'en_PN' => 'Borɔfo (Pitkaan Nsupɔ)',
'en_PR' => 'Borɔ
10000
fo (Puɛto Riko)',
+ 'en_PT' => 'Borɔfo (Pɔtugal)',
'en_PW' => 'Borɔfo (Palau)',
+ 'en_RO' => 'Borɔfo (Romenia)',
'en_RW' => 'Borɔfo (Rewanda)',
'en_SB' => 'Borɔfo (Solomɔn Aeland)',
'en_SC' => 'Borɔfo (Seyhyɛl)',
@@ -172,6 +182,7 @@
'en_SG' => 'Borɔfo (Singapɔ)',
'en_SH' => 'Borɔfo (Saint Helena)',
'en_SI' => 'Borɔfo (Slovinia)',
+ 'en_SK' => 'Borɔfo (Slovakia)',
'en_SL' => 'Borɔfo (Sɛra Liɔn)',
'en_SS' => 'Borɔfo (Sudan Anaafoɔ)',
'en_SX' => 'Borɔfo (Sint Maaten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/am.php b/src/Symfony/Component/Intl/Resources/data/locales/am.php
index 1ad535f46e81e..beb9399a7465a 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/am.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/am.php
@@ -121,29 +121,35 @@
'en_CM' => 'እንግሊዝኛ (ካሜሩን)',
'en_CX' => 'እንግሊዝኛ (ክሪስማስ ደሴት)',
'en_CY' => 'እንግሊዝኛ (ሳይፕረስ)',
+ 'en_CZ' => 'እንግሊዝኛ (ቼቺያ)',
'en_DE' => 'እንግሊዝኛ (ጀርመን)',
'en_DK' => 'እንግሊዝኛ (ዴንማርክ)',
'en_DM' => 'እንግሊዝኛ (ዶሚኒካ)',
'en_ER' => 'እንግሊዝኛ (ኤርትራ)',
+ 'en_ES' => 'እንግሊዝኛ (ስፔን)',
'en_FI' => 'እንግሊዝኛ (ፊንላንድ)',
'en_FJ' => 'እንግሊዝኛ (ፊጂ)',
'en_FK' => 'እንግሊዝኛ (የፎክላንድ ደሴቶች)',
'en_FM' => 'እንግሊዝኛ (ማይክሮኔዢያ)',
+ 'en_FR' => 'እንግሊዝኛ (ፈረንሳይ)',
'en_GB' => 'እንግሊዝኛ (ዩናይትድ ኪንግደም)',
'en_GD' => 'እንግሊዝኛ (ግሬናዳ)',
'en_GG' => 'እንግሊዝኛ (ጉርነሲ)',
'en_GH' => 'እንግሊዝኛ (ጋና)',
'en_GI' => 'እንግሊዝኛ (ጂብራልተር)',
'en_GM' => 'እንግሊዝኛ (ጋምቢያ)',
+ 'en_GS' => 'እንግሊዝኛ (ደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶች)',
'en_GU' => 'እንግሊዝኛ (ጉዋም)',
'en_GY' => 'እንግሊዝኛ (ጉያና)',
'en_HK' => 'እንግሊዝኛ (ሆንግ ኮንግ ልዩ የአስተዳደር ክልል ቻይና)',
+ 'en_HU' => 'እንግሊዝኛ (ሀንጋሪ)',
'en_ID' => 'እንግሊዝኛ (ኢንዶኔዢያ)',
'en_IE' => 'እንግሊዝኛ (አየርላንድ)',
'en_IL' => 'እንግሊዝኛ (እስራኤል)',
'en_IM' => 'እንግሊዝኛ (አይል ኦፍ ማን)',
'en_IN' => 'እንግሊዝኛ (ህንድ)',
'en_IO' => 'እንግሊዝኛ (የብሪታኒያ ህንድ ውቂያኖስ ግዛት)',
+ 'en_IT' => 'እንግሊዝኛ (ጣሊያን)',
'en_JE' => 'እንግሊዝኛ (ጀርዚ)',
'en_JM' => 'እንግሊዝኛ (ጃማይካ)',
'en_KE' => 'እንግሊዝኛ (ኬንያ)',
@@ -167,15 +173,19 @@
'en_NF' => 'እንግሊዝኛ (ኖርፎልክ ደሴት)',
'en_NG' => 'እንግሊዝኛ (ናይጄሪያ)',
'en_NL' => 'እንግሊዝኛ (ኔዘርላንድ)',
+ 'en_NO' => 'እንግሊዝኛ (ኖርዌይ)',
'en_NR' => 'እንግሊዝኛ (ናኡሩ)',
'en_NU' => 'እንግሊዝኛ (ኒዌ)',
'en_NZ' => 'እንግሊዝኛ (ኒው ዚላንድ)',
'en_PG' => 'እንግሊዝኛ (ፓፑዋ ኒው ጊኒ)',
'en_PH' => 'እንግሊዝኛ (ፊሊፒንስ)',
'en_PK' => 'እንግሊዝኛ (ፓኪስታን)',
+ 'en_PL' => 'እንግሊዝኛ (ፖላንድ)',
'en_PN' => 'እንግሊዝኛ (ፒትካኢርን ደሴቶች)',
'en_PR' => 'እንግሊዝኛ (ፑዌርቶ ሪኮ)',
+ 'en_PT' => 'እንግሊዝኛ (ፖርቱጋል)',
'en_PW' => 'እንግሊዝኛ (ፓላው)',
+ 'en_RO' => 'እንግሊዝኛ (ሮሜኒያ)',
'en_RW' => 'እንግሊዝኛ (ሩዋንዳ)',
'en_SB' => 'እንግሊዝኛ (ሰለሞን ደሴቶች)',
'en_SC' => 'እንግሊዝኛ (ሲሼልስ)',
@@ -184,6 +194,7 @@
'en_SG' => 'እንግሊዝኛ (ሲንጋፖር)',
'en_SH' => 'እንግሊዝኛ (ሴንት ሄለና)',
'en_SI' => 'እንግሊዝኛ (ስሎቬኒያ)',
+ 'en_SK' => 'እንግሊዝኛ (ስሎቫኪያ)',
'en_SL' => 'እንግሊዝኛ (ሴራሊዮን)',
'en_SS' => 'እንግሊዝኛ (ደቡብ ሱዳን)',
'en_SX' => 'እንግሊዝኛ (ሲንት ማርተን)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ar.php b/src/Symfony/Component/Intl/Resources/data/locales/ar.php
index 8d51b9638bdfc..fe5b49cc01747 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ar.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ar.php
@@ -121,29 +121,35 @@
'en_CM' => 'الإنجليزية (الكاميرون)',
'en_CX' => 'الإنجليزية (جزيرة كريسماس)',
'en_CY' => 'الإنجليزية (قبرص)',
+ 'en_CZ' => 'الإنجليزية (التشيك)',
'en_DE' => 'الإنجليزية (ألمانيا)',
'en_DK' => 'الإنجليزية (الدانمرك)',
'en_DM' => 'الإنجليزية (دومينيكا)',
'en_ER' => 'الإنجليزية (إريتريا)',
+ 'en_ES' => 'الإنجليزية (إسبانيا)',
'en_FI' => 'الإنجليزية (فنلندا)',
'en_FJ' => 'الإنجليزية (فيجي)',
'en_FK' => 'الإنجليزية (جزر فوكلاند)',
'en_FM' => 'الإنجليزية (ميكرونيزيا)',
+ 'en_FR' => 'الإنجليزية (فرنسا)',
'en_GB' => 'الإنجليزية (المملكة المتحدة)',
'en_GD' => 'الإنجليزية (غرينادا)',
'en_GG' => 'الإنجليزية (غيرنزي)',
'en_GH' => 'الإنجليزية (غانا)',
'en_GI' => 'الإنجليزية (جبل طارق)',
'en_GM' => 'الإنجليزية (غامبيا)',
+ 'en_GS' => 'الإنجليزية (جورجيا الجنوبية وجزر ساندويتش الجنوبية)',
'en_GU' => 'الإنجليزية (غوام)',
'en_GY' => 'الإنجليزية (غيانا)',
'en_HK' => 'الإنجليزية (هونغ كونغ الصينية [منطقة إدارية خاصة])',
+ 'en_HU' => 'الإنجليزية (هنغاريا)',
'en_ID' => 'الإنجليزية (إندونيسيا)',
'en_IE' => 'الإنجليزية (أيرلندا)',
'en_IL' => 'الإنجليزية (إسرائيل)',
'en_IM' => 'الإنجليزية (جزيرة مان)',
'en_IN' => 'الإنجليزية (الهند)',
'en_IO' => 'الإنجليزية (الإقليم البريطاني في المحيط الهندي)',
+ 'en_IT' => 'الإنجليزية (إيطاليا)',
'en_JE' => 'الإنجليزية (جيرسي)',
'en_JM' => 'الإنجليزية (جامايكا)',
'en_KE' => 'الإنجليزية (كينيا)',
@@ -167,15 +173,19 @@
'en_NF' => 'الإنجليزية (جزيرة نورفولك)',
'en_NG' => 'الإنجليزية (نيجيريا)',
'en_NL' => 'الإنجليزية (هولندا)',
+ 'en_NO' => 'الإنجليزية (النرويج)',
'en_NR' => 'الإنجليزية (ناورو)',
'en_NU' => 'الإنجليزية (نيوي)',
'en_NZ' => 'الإنجليزية (نيوزيلندا)',
'en_PG' => 'الإنجليزية (بابوا غينيا الجديدة)',
'en_PH' => 'الإنجليزية (الفلبين)',
'en_PK' => 'الإنجليزية (باكستان)',
+ 'en_PL' => 'الإنجليزية (بولندا)',
'en_PN' => 'الإنجليزية (جزر بيتكيرن)',
'en_PR' => 'الإنجليزية (بورتوريكو)',
+ 'en_PT' => 'الإنجليزية (البرتغال)',
'en_PW' => 'الإنجليزية (بالاو)',
+ 'en_RO' => 'الإنجليزية (رومانيا)',
'en_RW' => 'الإنجليزية (رواندا)',
'en_SB' => 'الإنجليزية (جزر سليمان)',
'en_SC' => 'الإنجليزية (سيشل)',
@@ -184,6 +194,7 @@
'en_SG' => 'الإنجليزية (سنغافورة)',
'en_SH' => 'الإنجليزية (سانت هيلينا)',
'en_SI' => 'الإنجليزية (سلوفينيا)',
+ 'en_SK' => 'الإنجليزية (سلوفاكيا)',
'en_SL' => 'الإنجليزية (سيراليون)',
'en_SS' => 'الإنجليزية (جنوب السودان)',
'en_SX' => 'الإنجليزية (سانت مارتن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/as.php b/src/Symfony/Component/Intl/Resources/data/locales/as.php
index 1480243c08c6e..800506d9a78d6 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/as.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/as.php
@@ -121,29 +121,35 @@
'en_CM' => 'ইংৰাজী (কেমেৰুণ)',
'en_CX' => 'ইংৰাজী (খ্ৰীষ্টমাছ দ্বীপ)',
'en_CY' => 'ইংৰাজী (চাইপ্ৰাছ)',
+ 'en_CZ' => 'ইংৰাজী (চিজেচিয়া)',
'en_DE' => 'ইংৰাজী (জাৰ্মানী)',
'en_DK' => 'ইংৰাজী (ডেনমাৰ্ক)',
'en_DM' => 'ইংৰাজী (ড’মিনিকা)',
'en_ER' => 'ইংৰাজী (এৰিত্ৰিয়া)',
+ 'en_ES' => 'ইংৰাজী (স্পেইন)',
'en_FI' => 'ইংৰাজী (ফিনলেণ্ড)',
'en_FJ' => 'ইংৰাজী (ফিজি)',
'en_FK' => 'ইংৰাজী (ফকলেণ্ড দ্বীপপুঞ্জ)',
'en_FM' => 'ইংৰাজী (মাইক্ৰোনেচিয়া)',
+ 'en_FR' => 'ইংৰাজী (ফ্ৰান্স)',
'en_GB' => 'ইংৰাজী (সংযুক্ত ৰাজ্য)',
'en_GD' => 'ইংৰাজী (গ্ৰেনাডা)',
'en_GG' => 'ইংৰাজী (গোৰেনচি)',
'en_GH' => 'ইংৰাজী (ঘানা)',
'en_GI' => 'ইংৰাজী (জিব্ৰাল্টৰ)',
'en_GM' => 'ইংৰাজী (গাম্বিয়া)',
+ 'en_GS' => 'ইংৰাজী (দক্ষিণ জৰ্জিয়া আৰু দক্ষিণ চেণ্ডৱিচ দ্বীপপুঞ্জ)',
'en_GU' => 'ইংৰাজী (গুৱাম)',
'en_GY' => 'ইংৰাজী (গায়ানা)',
'en_HK' => 'ইংৰাজী (হং কং এছ. এ. আৰ. চীন)',
+ 'en_HU' => 'ইংৰাজী (হাংগেৰী)',
'en_ID' => 'ইংৰাজী (ইণ্ডোনেচিয়া)',
'en_IE' => 'ইংৰাজী (আয়াৰলেণ্ড)',
'en_IL' => 'ইংৰাজী (ইজৰাইল)',
'en_IM' => 'ইংৰাজী (আইল অফ মেন)',
'en_IN' => 'ইংৰাজী (ভাৰত)',
'en_IO' => 'ইংৰাজী (ব্ৰিটিছ ইণ্ডিয়ান অ’চন টেৰিট’ৰি)',
+ 'en_IT' => 'ইংৰাজী (ইটালি)',
'en_JE' => 'ইংৰাজী (জাৰ্চি)',
'en_JM' => 'ইংৰাজী (জামাইকা)',
'en_KE' => 'ইংৰাজী (কেনিয়া)',
@@ -167,15 +173,19 @@
'en_NF' => 'ইংৰাজী (ন’ৰফ’ক দ্বীপ)',
'en_NG' => 'ইংৰাজী (নাইজেৰিয়া)',
'en_NL' => 'ইংৰাজী (নেডাৰলেণ্ড)',
+ 'en_NO' => 'ইংৰাজী (নৰৱে)',
'en_NR' => 'ইংৰাজী (নাউৰু)',
'en_NU' => 'ইংৰাজী (নিউ)',
'en_NZ' => 'ইংৰাজী (নিউজিলেণ্ড)',
'en_PG' => 'ইংৰাজী (পাপুৱা নিউ গিনি)',
'en_PH' => 'ইংৰাজী (ফিলিপাইনছ)',
'en_PK' => 'ইংৰাজী (পাকিস্তান)',
+ 'en_PL' => 'ইংৰাজী (পোলেণ্ড)',
'en_PN' => 'ইংৰাজী (পিটকেইৰ্ণ দ্বীপপুঞ্জ)',
'en_PR' => 'ইংৰাজী (পুৱেৰ্টো ৰিকো)',
+ 'en_PT' => 'ইংৰাজী (পৰ্তুগাল)',
'en_PW' => 'ইংৰাজী (পালাউ)',
+ 'en_RO' => 'ইংৰাজী (ৰোমানিয়া)',
'en_RW' => 'ইংৰাজী (ৰোৱাণ্ডা)',
'en_SB' => 'ইংৰাজী (চোলোমোন দ্বীপপুঞ্জ)',
'en_SC' => 'ইংৰাজী (ছিচিলিছ)',
@@ -184,6 +194,7 @@
'en_SG' => 'ইংৰাজী (ছিংগাপুৰ)',
'en_SH' => 'ইংৰাজী (ছেইণ্ট হেলেনা)',
'en_SI' => 'ইংৰাজী (শ্লোভেনিয়া)',
+ 'en_SK' => 'ইংৰাজী (শ্লোভাকিয়া)',
'en_SL' => 'ইংৰাজী (চিয়েৰা লিঅ’ন)',
'en_SS' => 'ইংৰাজী (দক্ষিণ চুডান)',
'en_SX' => 'ইংৰাজী (চিণ্ট মাৰ্টেন)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/az.php b/src/Symfony/Component/Intl/Resources/data/locales/az.php
index 869262233ffbb..6e7d9e635edf1 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/az.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/az.php
@@ -121,29 +121,35 @@
'en_CM' => 'ingilis (Kamerun)',
'en_CX' => 'ingilis (Milad adası)',
'en_CY' => 'ingilis (Kipr)',
+ 'en_CZ' => 'ingilis (Çexiya)',
'en_DE' => 'ingilis (Almaniya)',
'en_DK' => 'ingilis (Danimarka)',
'en_DM' => 'ingilis (Dominika)',
'en_ER' => 'ingilis (Eritreya)',
+ 'en_ES' => 'ingilis (İspaniya)',
'en_FI' => 'ingilis (Finlandiya)',
'en_FJ' => 'ingilis (Fici)',
'en_FK' => 'ingilis (Folklend adaları)',
'en_FM' => 'ingilis (Mikroneziya)',
+ 'en_FR' => 'ingilis (Fransa)',
'en_GB' => 'ingilis (Birləşmiş Krallıq)',
'en_GD' => 'ingilis (Qrenada)',
'en_GG' => 'ingilis (Gernsi)',
'en_GH' => 'ingilis (Qana)',
'en_GI' => 'ingilis (Cəbəllütariq)',
'en_GM' => 'ingilis (Qambiya)',
+ 'en_GS' => 'ingilis (Cənubi Corciya və Cənubi Sendviç adaları)',
'en_GU' => 'ingilis (Quam)',
'en_GY' => 'ingilis (Qayana)',
'en_HK' => 'ingilis (Honq Konq Xüsusi İnzibati Rayonu Çin)',
+ 'en_HU' => 'ingilis (Macarıstan)',
'en_ID' => 'ingilis (İndoneziya)',
'en_IE' => 'ingilis (İrlandiya)',
'en_IL' => 'ingilis (İsrail)',
'en_IM' => 'ingilis (Men adası)',
'en_IN' => 'ingilis (Hindistan)',
'en_IO' => 'ingilis (Britaniyanın Hind Okeanı Ərazisi)',
+ 'en_IT' => 'ingilis (İtaliya)',
'en_JE' => 'ingilis (Cersi)',
'en_JM' => 'ingilis (Yamayka)',
'en_KE' => 'ingilis (Keniya)',
@@ -167,15 +173,19 @@
'en_NF' => 'ingilis (Norfolk adası)',
'en_NG' => 'ingilis (Nigeriya)',
'en_NL' => 'ingilis (Niderland)',
+ 'en_NO' => 'ingilis (Norveç)',
'en_NR' => 'ingilis (Nauru)',
'en_NU' => 'ingilis (Niue)',
'en_NZ' => 'ingilis (Yeni Zelandiya)',
'en_PG' => 'ingilis (Papua-Yeni Qvineya)',
'en_PH' => 'ingilis (Filippin)',
'en_PK' => 'ingilis (Pakistan)',
+ 'en_PL' => 'ingilis (Polşa)',
'en_PN' => 'ingilis (Pitkern adaları)',
'en_PR' => 'ingilis (Puerto Riko)',
+ 'en_PT' => 'ingilis (Portuqaliya)',
'en_PW' => 'ingilis (Palau)',
+ 'en_RO' => 'ingilis (Rumıniya)',
'en_RW' => 'ingilis (Ruanda)',
'en_SB' => 'ingilis (Solomon adaları)',
'en_SC' => 'ingilis (Seyşel adaları)',
@@ -184,6 +194,7 @@
'en_SG' => 'ingilis (Sinqapur)',
'en_SH' => 'ingilis (Müqəddəs Yelena)',
'en_SI' => 'ingilis (Sloveniya)',
+ 'en_SK' => 'ingilis (Slovakiya)',
'en_SL' => 'ingilis (Syerra-Leone)',
'en_SS' => 'ingilis (Cənubi Sudan)',
'en_SX' => 'ingilis (Sint-Marten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/az_Cyrl.php b/src/Symfony/Component/Intl/Resources/data/locales/az_Cyrl.php
index f134cf28121b3..c9a118160f581 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/az_Cyrl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/az_Cyrl.php
@@ -121,29 +121,35 @@
'en_CM' => 'инҝилис (Камерун)',
'en_CX' => 'инҝилис (Милад адасы)',
'en_CY' => 'инҝилис (Кипр)',
+ 'en_CZ' => 'инҝилис (Чехија)',
'en_DE' => 'инҝилис (Алманија)',
'en_DK' => 'инҝилис (Данимарка)',
'en_DM' => 'инҝилис (Доминика)',
'en_ER' => 'инҝилис (Еритреја)',
+ 'en_ES' => 'инҝилис (Испанија)',
'en_FI' => 'инҝилис (Финландија)',
'en_FJ' => 'инҝилис (Фиҹи)',
'en_FK' => 'инҝилис (Фолкленд адалары)',
'en_FM' => 'инҝилис (Микронезија)',
+ 'en_FR' => 'инҝилис (Франса)',
'en_GB' => 'инҝилис (Бирләшмиш Краллыг)',
'en_GD' => 'инҝилис (Гренада)',
'en_GG' => 'инҝилис (Ҝернси)',
'en_GH' => 'инҝилис (Гана)',
'en_GI' => 'инҝилис (Ҹәбәллүтариг)',
'en_GM' => 'инҝилис (Гамбија)',
+ 'en_GS' => 'инҝилис (Ҹәнуби Ҹорҹија вә Ҹәнуби Сендвич адалары)',
'en_GU' => 'инҝилис (Гуам)',
'en_GY' => 'инҝилис (Гајана)',
'en_HK' => 'инҝилис (Һонк Конг Хүсуси Инзибати Әрази Чин)',
+ 'en_HU' => 'инҝилис (Маҹарыстан)',
'en_ID' => 'инҝилис (Индонезија)',
'en_IE' => 'инҝилис (Ирландија)',
'en_IL' => 'инҝилис (Исраил)',
'en_IM' => 'инҝилис (Мен адасы)',
'en_IN' => 'инҝилис (Һиндистан)',
'en_IO' => 'инҝилис (Britaniyanın Hind Okeanı Ərazisi)',
+ 'en_IT' => 'инҝилис (Италија)',
'en_JE' => 'инҝилис (Ҹерси)',
'en_JM' => 'инҝилис (Јамајка)',
'en_KE' => 'инҝилис (Кенија)',
@@ -167,15 +173,19 @@
'en_NF' => 'инҝилис (Норфолк адасы)',
'en_NG' => 'инҝилис (Ниҝерија)',
'en_NL' => 'инҝилис (Нидерланд)',
+ 'en_NO' => 'инҝилис (Норвеч)',
'en_NR' => 'инҝилис (Науру)',
'en_NU' => 'инҝилис (Ниуе)',
'en_NZ' => 'инҝилис (Јени Зеландија)',
'en_PG' => 'инҝилис (Папуа-Јени Гвинеја)',
'en_PH' => 'инҝилис (Филиппин)',
'en_PK' => 'инҝилис (Пакистан)',
+ 'en_PL' => 'инҝилис (Полша)',
'en_PN' => 'инҝилис (Питкерн адалары)',
'en_PR' => 'инҝилис (Пуерто Рико)',
+ 'en_PT' => 'инҝилис (Португалија)',
'en_PW' => 'инҝилис (Палау)',
+ 'en_RO' => 'инҝилис (Румынија)',
'en_RW' => 'инҝилис (Руанда)',
'en_SB' => 'инҝилис (Соломон адалары)',
'en_SC' => 'инҝилис (Сејшел адалары)',
@@ -184,6 +194,7 @@
'en_SG' => 'инҝилис (Сингапур)',
'en_SH' => 'инҝилис (Мүгәддәс Јелена)',
'en_SI' => 'инҝилис (Словенија)',
+ 'en_SK' => 'инҝилис (Словакија)',
'en_SL' => 'инҝилис (Сјерра-Леоне)',
'en_SS' => 'инҝилис (Ҹәнуби Судан)',
'en_SX' => 'инҝилис (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/be.php b/src/Symfony/Component/Intl/Resources/data/locales/be.php
index 3cfa30b6305e5..66d07aa118847 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/be.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/be.php
@@ -121,29 +121,35 @@
'en_CM' => 'англійская (Камерун)',
'en_CX' => 'англійская (Востраў Каляд)',
'en_CY' => 'англійская (Кіпр)',
+ 'en_CZ' => 'англійская (Чэхія)',
'en_DE' => 'англійская (Германія)',
'en_DK' => 'англійская (Данія)',
'en_DM' => 'англійская (Дамініка)',
'en_ER' => 'англійская (Эрытрэя)',
+ 'en_ES' => 'англійская (Іспанія)',
'en_FI' => 'англійская (Фінляндыя)',
'en_FJ' => 'англійская (Фіджы)',
'en_FK' => 'англійская (Фалклендскія астравы)',
'en_FM' => 'англійская (Мікранезія)',
+ 'en_FR' => 'англійская (Францыя)',
'en_GB' => 'англійская (Вялікабрытанія)',
'en_GD' => 'англійская (Грэнада)',
'en_GG' => 'англійская (Гернсі)',
'en_GH' => 'англійская (Гана)',
'en_GI' => 'англійская (Гібралтар)',
'en_GM' => 'англійская (Гамбія)',
+ 'en_GS' => 'англійская (Паўднёвая Георгія і Паўднёвыя Сандвічавы астравы)',
'en_GU' => 'англійская (Гуам)',
'en_GY' => 'англійская (Гаяна)',
'en_HK' => 'англійская (Ганконг, САР [Кітай])',
+ 'en_HU' => 'англійская (Венгрыя)',
'en_ID' => 'англійская (Інданезія)',
'en_IE' => 'англійская (Ірландыя)',
'en_IL' => 'англійская (Ізраіль)',
'en_IM' => 'англійская (Востраў Мэн)',
'en_IN' => 'англійская (Індыя)',
'en_IO' => 'англійская (Брытанская тэрыторыя ў Індыйскім акіяне)',
+ 'en_IT' => 'англійская (Італія)',
'en_JE' => 'англійская (Джэрсі)',
'en_JM' => 'англійская (Ямайка)',
'en_KE' => 'англійская (Кенія)',
@@ -167,15 +173,19 @@
'en_NF' => 'англійская (Востраў Норфалк)',
'en_NG' => 'англійская (Нігерыя)',
'en_NL' => 'англійская (Нідэрланды)',
+ 'en_NO' => 'англійская (Нарвегія)',
'en_NR' => 'англійская (Науру)',
'en_NU' => 'англійская (Ніуэ)',
'en_NZ' => 'англійская (Новая Зеландыя)',
'en_PG' => 'англійская (Папуа-Новая Гвінея)',
'en_PH' => 'англійская (Філіпіны)',
'en_PK' => 'англійская (Пакістан)',
+ 'en_PL' => 'англійская (Польшча)',
'en_PN' => 'англійская (Астравы Піткэрн)',
'en_PR' => 'англійская (Пуэрта-Рыка)',
+ 'en_PT' => 'англійская (Партугалія)',
'en_PW' => 'англійская (Палау)',
+ 'en_RO' => 'англійская (Румынія)',
'en_RW' => 'англійская (Руанда)',
'en_SB' => 'англійская (Саламонавы астравы)',
'en_SC' => 'англійская (Сейшэльскія астравы)',
@@ -184,6 +194,7 @@
'en_SG' => 'англійская (Сінгапур)',
'en_SH' => 'англійская (Востраў Святой Алены)',
'en_SI' => 'англійская (Славенія)',
+ 'en_SK' => 'англійская (Славакія)',
'en_SL' => 'англійская (Сьера-Леонэ)',
'en_SS' => 'англійская (Паўднёвы Судан)',
'en_SX' => 'англійская (Сінт-Мартэн)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/bg.php b/src/Symfony/Component/Intl/Resources/data/locales/bg.php
index bf6ad279de4b0..fe56f842b8bdd 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/bg.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/bg.php
@@ -121,29 +121,35 @@
'en_CM' => 'английски (Камерун)',
'en_CX' => 'английски (остров Рождество)',
'en_CY' => 'английски (Кипър)',
+ 'en_CZ' => 'английски (Чехия)',
'en_DE' => 'английски (Германия)',
'en_DK' => 'английски (Дания)',
'en_DM' => 'английски (Доминика)',
'en_ER' => 'английски (Еритрея)',
+ 'en_ES' => 'английски (Испания)',
'en_FI' => 'английски (Финландия)',
'en_FJ' => 'английски (Фиджи)',
'en_FK' => 'английски (Фолкландски острови)',
'en_FM' => 'английски (Микронезия)',
+ 'en_FR' => 'английски (Франция)',
'en_GB' => 'английски (Обединеното кралство)',
'en_GD' => 'английски (Гренада)',
'en_GG' => 'английски (Гърнзи)',
'en_GH' => 'английски (Гана)',
'en_GI' => 'английски (Гибралтар)',
'en_GM' => 'английски (Гамбия)',
+ 'en_GS' => 'английски (Южна Джорджия и Южни Сандвичеви острови)',
'en_GU' => 'английски (Гуам)',
'en_GY' => 'английски (Гаяна)',
'en_HK' => 'английски (Хонконг, САР на Китай)',
+ 'en_HU' => 'английски (Унгария)',
'en_ID' => 'английски (Индонезия)',
'en_IE' => 'английски (Ирландия)',
'en_IL' => 'английски (Израел)',
'en_IM' => 'английски (остров Ман)',
'en_IN' => 'английски (Индия)',
'en_IO' => 'английски (Британска територия в Индийския океан)',
+ 'en_IT' => 'английски (Италия)',
'en_JE' => 'английски (Джърси)',
'en_JM' => 'английски (Ямайка)',
'en_KE' => 'английски (Кения)',
@@ -167,15 +173,19 @@
'en_NF' => 'английски (остров Норфолк)',
'en_NG' => 'английски (Нигерия)',
'en_NL' => 'английски (Нидерландия)',
+ 'en_NO' => 'английски (Норвегия)',
'en_NR' => 'английски (Науру)',
'en_NU' => 'английски (Ниуе)',
'en_NZ' => 'английски (Нова Зеландия)',
'en_PG' => 'английски (Папуа-Нова Гвинея)',
'en_PH' => 'английски (Филипини)',
'en_PK' => 'английски (Пакистан)',
+ 'en_PL' => 'английски (Полша)',
'en_PN' => 'английски (Острови Питкерн)',
'en_PR' => 'английски (Пуерто Рико)',
+ 'en_PT' => 'английски (Португалия)',
'en_PW' => 'английски (Палау)',
+ 'en_RO' => 'английски (Румъния)',
'en_RW' => 'английски (Руанда)',
'en_SB' => 'английски (Соломонови острови)',
'en_SC' => 'английски (Сейшели)',
@@ -184,6 +194,7 @@
'en_SG' => 'английски (Сингапур)',
'en_SH' => 'английски (Света Елена)',
'en_SI' => 'английски (Словения)',
+ 'en_SK' => 'английски (Словакия)',
'en_SL' => 'английски (Сиера Леоне)',
'en_SS' => 'английски (Южен Судан)',
'en_SX' => 'английски (Синт Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/bm.php b/src/Symfony/Component/Intl/Resources/data/locales/bm.php
index a3152b9f657f4..2757567cbfabd 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/bm.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/bm.php
@@ -73,14 +73,17 @@
'en_CK' => 'angilɛkan (Kuki Gun)',
'en_CM' => 'angilɛkan (Kameruni)',
'en_CY' => 'angilɛkan (Cipri)',
+ 'en_CZ' => 'angilɛkan (Ceki republiki)',
'en_DE' => 'angilɛkan (Alimaɲi)',
'en_DK' => 'angilɛkan (Danemarki)',
'en_DM' => 'angilɛkan (Dɔminiki)',
'en_ER' => 'angilɛkan (Eritere)',
+ 'en_ES' => 'angilɛkan (Esipaɲi)',
'en_FI' => 'angilɛkan (Finilandi)',
'en_FJ' => 'angilɛkan (Fiji)',
'en_FK' => 'angilɛkan (Maluwini Gun)',
'en_FM' => 'angilɛkan (Mikironesi)',
+ 'en_FR' => 'angilɛkan (Faransi)',
'en_GB' => 'angilɛkan (Angilɛtɛri)',
'en_GD' => 'angilɛkan (Granadi)',
'en_GH' => 'angilɛkan (Gana)',
@@ -88,10 +91,12 @@
'en_GM' => 'angilɛkan (Ganbi)',
'en_GU' => 'angilɛkan (Gwam)',
'en_GY' => 'angilɛkan (Gwiyana)',
+ 'en_HU' => 'angilɛkan (Hɔngri)',
'en_ID' => 'angilɛkan (Ɛndonezi)',
'en_IE' => 'angilɛkan (Irilandi)',
'en_IL' => 'angilɛkan (Isirayeli)',
'en_IN' => 'angilɛkan (Ɛndujamana)',
+ 'en_IT' => 'angilɛkan (Itali)',
'en_JM' => 'angilɛkan (Zamayiki)',
'en_KE' => 'angilɛkan (Keniya)',
'en_KI' => 'angilɛkan (Kiribati)',
@@ -113,15 +118,19 @@
'en_NF' => 'angilɛkan (Nɔrofoliki Gun)',
'en_NG' => 'angilɛkan (Nizeriya)',
'en_NL' => 'angilɛkan (Peyiba)',
+ 'en_NO' => 'angilɛkan (Nɔriwɛzi)',
'en_NR' => 'angilɛkan (Nawuru)',
'en_NU' => 'angilɛkan (Nyuwe)',
'en_NZ' => 'angilɛkan (Zelandi Koura)',
'en_PG' => 'angilɛkan (Papuwasi-Gine-Koura)',
'en_PH' => 'angilɛkan (Filipini)',
'en_PK' => 'angilɛkan (Pakisitaŋ)',
+ 'en_PL' => 'angilɛkan (Poloɲi)',
'en_PN' => 'angilɛkan (Pitikarini)',
'en_PR' => 'angilɛkan (Pɔrotoriko)',
+ 'en_PT' => 'angilɛkan (Pɔritigali)',
'en_PW' => 'angilɛkan (Palawu)',
+ 'en_RO' => 'angilɛkan (Rumani)',
'en_RW' => 'angilɛkan (Ruwanda)',
'en_SB' => 'angilɛkan (Salomo Gun)',
'en_SC' => 'angilɛkan (Sesɛli)',
@@ -130,6 +139,7 @@
'en_SG' => 'angilɛkan (Sɛngapuri)',
'en_SH' => 'angilɛkan (Ɛlɛni Senu)',
'en_SI' => 'angilɛkan (Sloveni)',
+ 'en_SK' => 'angilɛkan (Slowaki)',
'en_SL' => 'angilɛkan (Siyera Lewɔni)',
'en_SZ' => 'angilɛkan (Swazilandi)',
'en_TC' => 'angilɛkan (Turiki Gun ni Kayiki)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/bn.php b/src/Symfony/Component/Intl/Resources/data/locales/bn.php
index 643dab3898ae7..a7e77f5e3a154 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/bn.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/bn.php
@@ -121,29 +121,35 @@
'en_CM' => 'ইংরেজি (ক্যামেরুন)',
'en_CX' => 'ইংরেজি (ক্রিসমাস দ্বীপ)',
'en_CY' => 'ইংরেজি (সাইপ্রাস)',
+ 'en_CZ' => 'ইংরেজি (চেকিয়া)',
'en_DE' => 'ইংরেজি (জার্মানি)',
'en_DK' => 'ইংরেজি (ডেনমার্ক)',
'en_DM' => 'ইংরেজি (ডোমিনিকা)',
'en_ER' => 'ইংরেজি (ইরিত্রিয়া)',
+ 'en_ES' => 'ইংরেজি (স্পেন)',
'en_FI' => 'ইংরেজি (ফিনল্যান্ড)',
'en_FJ' => 'ইংরেজি (ফিজি)',
'en_FK' => 'ইংরেজি (ফকল্যান্ড দ্বীপপুঞ্জ)',
'en_FM' => 'ইংরেজি (মাইক্রোনেশিয়া)',
+ 'en_FR' => 'ইংরেজি (ফ্রান্স)',
'en_GB' => 'ইংরেজি (যুক্তরাজ্য)',
'en_GD' => 'ইংরেজি (গ্রেনাডা)',
'en_GG' => 'ইংরেজি (গার্নসি)',
'en_GH' => 'ইংরেজি (ঘানা)',
'en_GI' => 'ইংরেজি (জিব্রাল্টার)',
'en_GM' => 'ইংরেজি (গাম্বিয়া)',
+ 'en_GS' => 'ইংরেজি (দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জ)',
'en_GU' => 'ইংরেজি (গুয়াম)',
'en_GY' => 'ইংরেজি (গিয়ানা)',
'en_HK' => 'ইংরেজি (হংকং এসএআর চীনা)',
+ 'en_HU' => 'ইংরেজি (হাঙ্গেরি)',
'en_ID' => 'ইংরেজি (ইন্দোনেশিয়া)',
'en_IE' => 'ইংরেজি (আয়ারল্যান্ড)',
'en_IL' => 'ইংরেজি (ইজরায়েল)',
'en_IM' => 'ইংরেজি (আইল অফ ম্যান)',
'en_IN' => 'ইংরেজি (ভারত)',
'en_IO' => 'ইংরেজি (ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল)',
+ 'en_IT' => 'ইংরেজি (ইতালি)',
'en_JE' => 'ইংরেজি (জার্সি)',
'en_JM' => 'ইংরেজি (জামাইকা)',
'en_KE' => 'ইংরেজি (কেনিয়া)',
@@ -167,15 +173,19 @@
'en_NF' => 'ইংরেজি (নরফোক দ্বীপ)',
'en_NG' => 'ইংরেজি (নাইজেরিয়া)',
'en_NL' => 'ইংরেজি (নেদারল্যান্ডস)',
+ 'en_NO' => 'ইংরেজি (নরওয়ে)',
'en_NR' => 'ইংরেজি (নাউরু)',
'en_NU' => 'ইংরেজি (নিউয়ে)',
'en_NZ' => 'ইংরেজি (নিউজিল্যান্ড)',
'en_PG' => 'ইংরেজি (পাপুয়া নিউ গিনি)',
'en_PH' => 'ইংরেজি (ফিলিপাইন)',
'en_PK' => 'ইংরেজি (পাকিস্তান)',
+ 'en_PL' => 'ইংরেজি (পোল্যান্ড)',
'en_PN' => 'ইংরেজি (পিটকেয়ার্ন দ্বীপপুঞ্জ)',
'en_PR' => 'ইংরেজি (পুয়ের্তো রিকো)',
+ 'en_PT' => 'ইংরেজি (পর্তুগাল)',
'en_PW' => 'ইংরেজি (পালাউ)',
+ 'en_RO' => 'ইংরেজি (রোমানিয়া)',
'en_RW' => 'ইংরেজি (রুয়ান্ডা)',
'en_SB' => 'ইংরেজি (সলোমন দ্বীপপুঞ্জ)',
'en_SC' => 'ইংরেজি (সিসিলি)',
@@ -184,6 +194,7 @@
'en_SG' => 'ইংরেজি (সিঙ্গাপুর)',
'en_SH' => 'ইংরেজি (সেন্ট হেলেনা)',
'en_SI' => 'ইংরেজি (স্লোভানিয়া)',
+ 'en_SK' => 'ইংরেজি (স্লোভাকিয়া)',
'en_SL' => 'ইংরেজি (সিয়েরা লিওন)',
'en_SS' => 'ইংরেজি (দক্ষিণ সুদান)',
'en_SX' => 'ইংরেজি (সিন্ট মার্টেন)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/bo.php b/src/Symfony/Component/Intl/Resources/data/locales/bo.php
index fbb237f85ebd7..b49025d46068d 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/bo.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/bo.php
@@ -11,6 +11,7 @@
'en_DE' => 'དབྱིན་ཇིའི་སྐད། (འཇར་མན་)',
'en_GB' => 'དབྱིན་ཇིའི་སྐད། (དབྱིན་ཇི་)',
'en_IN' => 'དབྱིན་ཇིའི་སྐད། (རྒྱ་གར་)',
+ 'en_IT' => 'དབྱིན་ཇིའི་སྐད། (ཨི་ཀྲར་ལི་)',
'en_US' => 'དབྱིན་ཇིའི་སྐད། (ཨ་མེ་རི་ཀ།)',
'hi' => 'ཧིན་དི',
'hi_IN' => 'ཧིན་དི (རྒྱ་གར་)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/br.php b/src/Symfony/Component/Intl/Resources/data/locales/br.php
index 622c379235e6d..d1946f05fb7c3 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/br.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/br.php
@@ -121,28 +121,34 @@
'en_CM' => 'saozneg (Kameroun)',
'en_CX' => 'saozneg (Enez Christmas)',
'en_CY' => 'saozneg (Kiprenez)',
+ 'en_CZ' => 'saozneg (Tchekia)',
'en_DE' => 'saozneg (Alamagn)',
'en_DK' => 'saozneg (Danmark)',
'en_DM' => 'saozneg (Dominica)',
'en_ER' => 'saozneg (Eritrea)',
+ 'en_ES' => 'saozneg (Spagn)',
'en_FI' => 'saozneg (Finland)',
'en_FJ' => 'saozneg (Fidji)',
'en_FK' => 'saozneg (Inizi Falkland)',
'en_FM' => 'saozneg (Mikronezia)',
+ 'en_FR' => 'saozneg (Frañs)',
'en_GB' => 'saozneg (Rouantelezh-Unanet)',
'en_GD' => 'saozneg (Grenada)',
'en_GG' => 'saozneg (Gwernenez)',
'en_GH' => 'saozneg (Ghana)',
'en_GI' => 'saozneg (Jibraltar)',
'en_GM' => 'saozneg (Gambia)',
+ 'en_GS' => 'saozneg (Inizi Georgia ar Su hag Inizi Sandwich ar Su)',
'en_GU' => 'saozneg (Guam)',
'en_GY' => 'saozneg (Guyana)',
'en_HK' => 'saozneg (Hong Kong RMD Sina)',
+ 'en_HU' => 'saozneg (Hungaria)',
'en_ID' => 'saozneg (Indonezia)',
'en_IE' => 'saozneg (Iwerzhon)',
'en_IL' => 'saozneg (Israel)',
'en_IM' => 'saozneg (Enez Vanav)',
'en_IN' => 'saozneg (India)',
+ 'en_IT' => 'saozneg (Italia)',
'en_JE' => 'saozneg (Jerzenez)',
'en_JM' => 'saozneg (Jamaika)',
'en_KE' => 'saozneg (Kenya)',
@@ -166,15 +172,19 @@
'en_NF' => 'saozneg (Enez Norfolk)',
'en_NG' => 'saozneg (Nigeria)',
'en_NL' => 'saozneg (Izelvroioù)',
+ 'en_NO' => 'saozneg (Norvegia)',
'en_NR' => 'saozneg (Nauru)',
'en_NU' => 'saozneg (Niue)',
'en_NZ' => 'saozneg (Zeland-Nevez)',
'en_PG' => 'saozneg (Papoua Ginea-Nevez)',
'en_PH' => 'saozneg (Filipinez)',
'en_PK' => 'saozneg (Pakistan)',
+ 'en_PL' => 'saozneg (Polonia)',
'en_PN' => 'saozneg (Enez Pitcairn)',
'en_PR' => 'saozneg (Puerto Rico)',
+ 'en_PT' => 'saozneg (Portugal)',
'en_PW' => 'saozneg (Palau)',
+ 'en_RO' => 'saozneg (Roumania)',
'en_RW' => 'saozneg (Rwanda)',
'en_SB' => 'saozneg (Inizi Salomon)',
'en_SC' => 'saozneg (Sechelez)',
@@ -183,6 +193,7 @@
'en_SG' => 'saozneg (Singapour)',
'en_SH' => 'saozneg (Saint-Helena)',
'en_SI' => 'saozneg (Slovenia)',
+ 'en_SK' => 'saozneg (Slovakia)',
'en_SL' => 'saozneg (Sierra Leone)',
'en_SS' => 'saozneg (Susoudan)',
'en_SX' => 'saozneg (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/bs.php b/src/Symfony/Component/Intl/Resources/data/locales/bs.php
index 8f692af3df42d..fca844d600263 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/bs.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/bs.php
@@ -121,29 +121,35 @@
'en_CM' => 'engleski (Kamerun)',
'en_CX' => 'engleski (Božićno ostrvo)',
'en_CY' => 'engleski (Kipar)',
+ 'en_CZ' => 'engleski (Češka)',
'en_DE' => 'engleski (Njemačka)',
'en_DK' => 'engleski (Danska)',
'en_DM' => 'engleski (Dominika)',
'en_ER' => 'engleski (Eritreja)',
+ 'en_ES' => 'engleski (Španija)',
'en_FI' => 'engleski (Finska)',
'en_FJ' => 'engleski (Fidži)',
'en_FK' => 'engleski (Folklandska ostrva)',
'en_FM' => 'engleski (Mikronezija)',
+ 'en_FR' => 'engleski (Francuska)',
'en_GB' => 'engleski (Ujedinjeno Kraljevstvo)',
'en_GD' => 'engleski (Grenada)',
'en_GG' => 'engleski (Guernsey)',
'en_GH' => 'engleski (Gana)',
'en_GI' => 'engleski (Gibraltar)',
'en_GM' => 'engleski (Gambija)',
+ 'en_GS' => 'engleski (Južna Džordžija i Južna Sendvič ostrva)',
'en_GU' => 'engleski (Guam)',
'en_GY' => 'engleski (Gvajana)',
'en_HK' => 'engleski (Hong Kong [SAR Kina])',
+ 'en_HU' => 'engleski (Mađarska)',
'en_ID' => 'engleski (Indonezija)',
'en_IE' => 'engleski (Irska)',
'en_IL' => 'engleski (Izrael)',
'en_IM' => 'engleski (Ostrvo Man)',
'en_IN' => 'engleski (Indija)',
'en_IO' => 'engleski (Britanska Teritorija u Indijskom Okeanu)',
+ 'en_IT' => 'engleski (Italija)',
'en_JE' => 'engleski (Jersey)',
'en_JM' => 'engleski (Jamajka)',
'en_KE' => 'engleski (Kenija)',
@@ -167,15 +173,19 @@
'en_NF' => 'engleski (Ostrvo Norfolk)',
'en_NG' => 'engleski (Nigerija)',
'en_NL' => 'engleski (Nizozemska)',
+ 'en_NO' => 'engleski (Norveška)',
'en_NR' => 'engleski (Nauru)',
'en_NU' => 'engleski (Niue)',
'en_NZ' => 'engleski (Novi Zeland)',
'en_PG' => 'engleski (Papua Nova Gvineja)',
'en_PH' => 'engleski (Filipini)',
'en_PK' => 'engleski (Pakistan)',
+ 'en_PL' => 'engleski (Poljska)',
'en_PN' => 'engleski (Pitkernska Ostrva)',
'en_PR' => 'engleski (Porto Riko)',
+ 'en_PT' => 'engleski (Portugal)',
'en_PW' => 'engleski (Palau)',
+ 'en_RO' => 'engleski (Rumunija)',
'en_RW' => 'engleski (Ruanda)',
'en_SB' => 'engleski (Solomonska Ostrva)',
'en_SC' => 'engleski (Sejšeli)',
@@ -184,6 +194,7 @@
'en_SG' => 'engleski (Singapur)',
'en_SH' => 'engleski (Sveta Helena)',
'en_SI' => 'engleski (Slovenija)',
+ 'en_SK' => 'engleski (Slovačka)',
'en_SL' => 'engleski (Sijera Leone)',
'en_SS' => 'engleski (Južni Sudan)',
'en_SX' => 'engleski (Sint Marten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/bs_Cyrl.php b/src/Symfony/Component/Intl/Resources/data/locales/bs_Cyrl.php
index 7b08a3a5e0b95..d71c3ac1fd361 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/bs_Cyrl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/bs_Cyrl.php
@@ -121,29 +121,35 @@
'en_CM' => 'енглески (Камерун)',
'en_CX' => 'енглески (Божићно острво)',
'en_CY' => 'енглески (Кипар)',
+ 'en_CZ' => 'енглески (Чешка)',
'en_DE' => 'енглески (Њемачка)',
'en_DK' => 'енглески (Данска)',
'en_DM' => 'енглески (Доминика)',
'en_ER' => 'енглески (Еритреја)',
+ 'en_ES' => 'енглески (Шпанија)',
'en_FI' => 'енглески (Финска)',
'en_FJ' => 'енглески (Фиџи)',
'en_FK' => 'енглески (Фокландска Острва)',
'en_FM' => 'енглески (Микронезија)',
+ 'en_FR' => 'енглески (Француска)',
'en_GB' => 'енглески (Уједињено Краљевство)',
'en_GD' => 'енглески (Гренада)',
'en_GG' => 'енглески (Гернзи)',
'en_GH' => 'енглески (Гана)',
'en_GI' => 'енглески (Гибралтар)',
'en_GM' => 'енглески (Гамбија)',
+ 'en_GS' => 'енглески (Јужна Џорџија и Јужна Сендвичка Острва)',
'en_GU' => 'енглески (Гуам)',
'en_GY' => 'енглески (Гвајана)',
'en_HK' => 'енглески (Хонг Конг С. А. Р.)',
+ 'en_HU' => 'енглески (Мађарска)',
'en_ID' => 'енглески (Индонезија)',
'en_IE' => 'енглески (Ирска)',
'en_IL' => 'енглески (Израел)',
'en_IM' => 'енглески (Острво Мен)',
'en_IN' => 'енглески (Индија)',
'en_IO' => 'енглески (Британска територија у Индијском океану)',
+ 'en_IT' => 'енглески (Италија)',
'en_JE' => 'енглески (Џерзи)',
'en_JM' => 'енглески (Јамајка)',
'en_KE' => 'енглески (Кенија)',
@@ -167,15 +173,19 @@
'en_NF' => 'енглески (Острво Норфолк)',
'en_NG' => 'енглески (Нигерија)',
'en_NL' => 'енглески (Холандија)',
+ 'en_NO' => 'енглески (Норвешка)',
'en_NR' => 'енглески (Науру)',
'en_NU' => 'енглески (Ниуе)',
'en_NZ' => 'енглески (Нови Зеланд)',
'en_PG' => 'енглески (Папуа Нова Гвинеја)',
'en_PH' => 'енглески (Филипини)',
'en_PK' => 'енглески (Пакистан)',
+ 'en_PL' => 'енглески (Пољска)',
'en_PN' => 'енглески (Питкерн)',
'en_PR' => 'енглески (Порторико)',
+ 'en_PT' => 'енглески (Португал)',
'en_PW' => 'енглески (Палау)',
+ 'en_RO' => 'енглески (Румунија)',
'en_RW' => 'енглески (Руанда)',
'en_SB' => 'енглески (Соломонска Острва)',
'en_SC' => 'енглески (Сејшели)',
@@ -184,6 +194,7 @@
'en_SG' => 'енглески (Сингапур)',
'en_SH' => 'енглески (Света Хелена)',
'en_SI' => 'енглески (Словенија)',
+ 'en_SK' => 'енглески (Словачка)',
'en_SL' => 'енглески (Сијера Леоне)',
'en_SS' => 'енглески (Јужни Судан)',
'en_SX' => 'енглески (Свети Мартин [Холандија])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ca.php b/src/Symfony/Component/Intl/Resources/data/locales/ca.php
index 2642eabe5c318..a97fa374d1d54 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ca.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ca.php
@@ -121,29 +121,35 @@
'en_CM' => 'anglès (Camerun)',
'en_CX' => 'anglès (Illa Christmas)',
'en_CY' => 'anglès (Xipre)',
+ 'en_CZ' => 'anglès (Txèquia)',
'en_DE' => 'anglès (Alemanya)',
'en_DK' => 'anglès (Dinamarca)',
'en_DM' => 'anglès (Dominica)',
'en_ER' => 'anglès (Eritrea)',
+ 'en_ES' => 'anglès (Espanya)',
'en_FI' => 'anglès (Finlàndia)',
'en_FJ' => 'anglès (Fiji)',
'en_FK' => 'anglès (Illes Falkland)',
'en_FM' => 'anglès (Micronèsia)',
+ 'en_FR' => 'anglès (França)',
'en_GB' => 'anglès (Regne Unit)',
'en_GD' => 'anglès (Grenada)',
'en_GG' => 'anglès (Guernsey)',
'en_GH' => 'anglès (Ghana)',
'en_GI' => 'anglès (Gibraltar)',
'en_GM' => 'anglès (Gàmbia)',
+ 'en_GS' => 'anglès (Illes Geòrgia del Sud i Sandwich del Sud)',
'en_GU' => 'anglès (Guam)',
'en_GY' => 'anglès (Guyana)',
'en_HK' => 'anglès (Hong Kong [RAE Xina])',
+ 'en_HU' => 'anglès (Hongria)',
'en_ID' => 'anglès (Indonèsia)',
'en_IE' => 'anglès (Irlanda)',
'en_IL' => 'anglès (Israel)',
'en_IM' => 'anglès (Illa de Man)',
'en_IN' => 'anglès (Índia)',
'en_IO' => 'anglès (Territori Britànic de l’Oceà Índic)',
+ 'en_IT' => 'anglès (Itàlia)',
'en_JE' => 'anglès (Jersey)',
'en_JM' => 'anglès (Jamaica)',
'en_KE' => 'anglès (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'anglès (Illa Norfolk)',
'en_NG' => 'anglès (Nigèria)',
'en_NL' => 'anglès (Països Baixos)',
+ 'en_NO' => 'anglès (Noruega)',
'en_NR' => 'anglès (Nauru)',
'en_NU' => 'anglès (Niue)',
'en_NZ' => 'anglès (Nova Zelanda)',
'en_PG' => 'anglès (Papua Nova Guinea)',
'en_PH' => 'anglès (Filipines)',
'en_PK' => 'anglès (Pakistan)',
+ 'en_PL' => 'anglès (Polònia)',
'en_PN' => 'anglès (Illes Pitcairn)',
'en_PR' => 'anglès (Puerto Rico)',
+ 'en_PT' => 'anglès (Portugal)',
'en_PW' => 'anglès (Palau)',
+ 'en_RO' => 'anglès (Romania)',
'en_RW' => 'anglès (Ruanda)',
'en_SB' => 'anglès (Illes Salomó)',
'en_SC' => 'anglès (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'anglès (Singapur)',
'en_SH' => 'anglès (Santa Helena)',
'en_SI' => 'anglès (Eslovènia)',
+ 'en_SK' => 'anglès (Eslovàquia)',
'en_SL' => 'anglès (Sierra Leone)',
'en_SS' => 'anglès (Sudan del Sud)',
'en_SX' => 'anglès (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ce.php b/src/Symfony/Component/Intl/Resources/data/locales/ce.php
index 10bd3b6a2b58a..85e234c29a7d6 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ce.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ce.php
@@ -121,28 +121,34 @@
'en_CM' => 'ингалсан (Камерун)',
'en_CX' => 'ингалсан (ГӀайре ӏиса пайхӏамар вина де)',
'en_CY' => 'ингалсан (Кипр)',
+ 'en_CZ' => 'ингалсан (Чехи)',
'en_DE' => 'ингалсан (Германи)',
'en_DK' => 'ингалсан (Дани)',
'en_DM' => 'ингалсан (Доминика)',
'en_ER' => 'ингалсан (Эритрей)',
+ 'en_ES' => 'ингалсан (Испани)',
'en_FI' => 'ингалсан (Финлянди)',
'en_FJ' => 'ингалсан (Фиджи)',
'en_FK' => 'ингалсан (Фолклендан гӀайренаш)',
'en_FM' => 'ингалсан (Микронезин Федеративни штаташ)',
+ 'en_FR' => 'ингалсан (Франци)',
'en_GB' => 'ингалсан (Йоккха Британи)',
'en_GD' => 'ингалсан (Гренада)',
'en_GG' => 'ингалсан (Гернси)',
'en_GH' => 'ингалсан (Гана)',
'en_GI' => 'ингалсан (Гибралтар)',
'en_GM' => 'ингалсан (Гамби)',
+ 'en_GS' => 'ингалсан (Къилба Джорджи а, Къилба Гавайн гӀайренаш а)',
'en_GU' => 'ингалсан (Гуам)',
'en_GY' => 'ингалсан (Гайана)',
'en_HK' => 'ингалсан (Гонконг [ша-къаьстина кӀошт])',
+ 'en_HU' => 'ингалсан (Венгри)',
'en_ID' => 'ингалсан (Индонези)',
'en_IE' => 'ингалсан (Ирланди)',
'en_IL' => 'ингалсан (Израиль)',
'en_IM' => 'ингалсан (Мэн гӀайре)',
'en_IN' => 'ингалсан (ХӀинди)',
+ 'en_IT' => 'ингалсан (Итали)',
'en_JE' => 'ингалсан (Джерси)',
'en_JM' => 'ингалсан (Ямайка)',
'en_KE' => 'ингалсан (Кени)',
@@ -166,15 +172,19 @@
'en_NF' => 'ингалсан (Норфолк гӀайре)',
'en_NG' => 'ингалсан (Нигери)',
'en_NL' => 'ингалсан (Нидерландаш)',
+ 'en_NO' => 'ингалсан (Норвеги)',
'en_NR' => 'ингалсан (Науру)',
'en_NU' => 'ингалсан (Ниуэ)',
'en_NZ' => 'ингалсан (Керла Зеланди)',
'en_PG' => 'ингалсан (Папуа — Керла Гвиней)',
'en_PH' => 'ингалсан (Филиппинаш)',
'en_PK' => 'ингалсан (Пакистан)',
+ 'en_PL' => 'ингалсан (Польша)',
'en_PN' => 'ингалсан (Питкэрн гӀайренаш)',
'en_PR' => 'ингалсан (Пуэрто-Рико)',
+ 'en_PT' => 'ингалсан (Португали)',
'en_PW' => 'ингалсан (Палау)',
+ 'en_RO' => 'ингалсан (Румыни)',
'en_RW' => 'ингалсан (Руанда)',
'en_SB' => 'ингалсан (Соломонан гӀайренаш)',
'en_SC' => 'ингалсан (Сейшелан гӀайренаш)',
@@ -183,6 +193,7 @@
'en_SG' => 'ингалсан (Сингапур)',
'en_SH' => 'ингалсан (Сийлахьчу Еленин гӀайре)',
'en_SI' => 'ингалсан (Словени)',
+ 'en_SK' => 'ингалсан (Словаки)',
'en_SL' => 'ингалсан (Сьерра- Леоне)',
'en_SS' => 'ингалсан (Къилба Судан)',
'en_SX' => 'ингалсан (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/cs.php b/src/Symfony/Component/Intl/Resources/data/locales/cs.php
index 9f54d93893508..d775712243a39 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/cs.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/cs.php
@@ -121,29 +121,35 @@
'en_CM' => 'angličtina (Kamerun)',
'en_CX' => 'angličtina (Vánoční ostrov)',
'en_CY' => 'angličtina (Kypr)',
+ 'en_CZ' => 'angličtina (Česko)',
'en_DE' => 'angličtina (Německo)',
'en_DK' => 'angličtina (Dánsko)',
'en_DM' => 'angličtina (Dominika)',
'en_ER' => 'angličtina (Eritrea)',
+ 'en_ES' => 'angličtina (Španělsko)',
'en_FI' => 'angličtina (Finsko)',
'en_FJ' => 'angličtina (Fidži)',
'en_FK' => 'angličtina (Falklandské ostrovy)',
'en_FM' => 'angličtina (Mikronésie)',
+ 'en_FR' => 'angličtina (Francie)',
'en_GB' => 'angličtina (Spojené království)',
'en_GD' => 'angličtina (Grenada)',
'en_GG' => 'angličtina (Guernsey)',
'en_GH' => 'angličtina (Ghana)',
'en_GI' => 'angličtina (Gibraltar)',
'en_GM' => 'angličtina (Gambie)',
+ 'en_GS' => 'angličtina (Jižní Georgie a Jižní Sandwichovy ostrovy)',
'en_GU' => 'angličtina (Guam)',
'en_GY' => 'angličtina (Guyana)',
'en_HK' => 'angličtina (Hongkong – ZAO Číny)',
+ 'en_HU' => 'angličtina (Maďarsko)',
'en_ID' => 'angličtina (Indonésie)',
'en_IE' => 'angličtina (Irsko)',
'en_IL' => 'angličtina (Izrael)',
'en_IM' => 'angličtina (Ostrov Man)',
'en_IN' => 'angličtina (Indie)',
'en_IO' => 'angličtina (Britské indickooceánské území)',
+ 'en_IT' => 'angličtina (Itálie)',
'en_JE' => 'angličtina (Jersey)',
'en_JM' => 'angličtina (Jamajka)',
'en_KE' => 'angličtina (Keňa)',
@@ -167,15 +173,19 @@
'en_NF' => 'angličtina (Norfolk)',
'en_NG' => 'angličtina (Nigérie)',
'en_NL' => 'angličtina (Nizozemsko)',
+ 'en_NO' => 'angličtina (Norsko)',
'en_NR' => 'angličtina (Nauru)',
'en_NU' => 'angličtina (Niue)',
'en_NZ' => 'angličtina (Nový Zéland)',
'en_PG' => 'angličtina (Papua-Nová Guinea)',
'en_PH' => 'angličtina (Filipíny)',
'en_PK' => 'angličtina (Pákistán)',
+ 'en_PL' => 'angličtina (Polsko)',
'en_PN' => 'angličtina (Pitcairnovy ostrovy)',
'en_PR' => 'angličtina (Portoriko)',
+ 'en_PT' => 'angličtina (Portugalsko)',
'en_PW' => 'angličtina (Palau)',
+ 'en_RO' => 'angličtina (Rumunsko)',
'en_RW' => 'angličtina (Rwanda)',
'en_SB' => 'angličtina (Šalamounovy ostrovy)',
'en_SC' => 'angličtina (Seychely)',
@@ -184,6 +194,7 @@
'en_SG' => 'angličtina (Singapur)',
'en_SH' => 'angličtina (Svatá Helena)',
'en_SI' => 'angličtina (Slovinsko)',
+ 'en_SK' => 'angličtina (Slovensko)',
'en_SL' => 'angličtina (Sierra Leone)',
'en_SS' => 'angličtina (Jižní Súdán)',
'en_SX' => 'angličtina (Svatý Martin [Nizozemsko])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/cv.php b/src/Symfony/Component/Intl/Resources/data/locales/cv.php
index cbf34ec6b4eee..94717b2b22b93 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/cv.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/cv.php
@@ -67,28 +67,34 @@
'en_CM' => 'акӑлчан (Камерун)',
'en_CX' => 'акӑлчан (Раштав утравӗ)',
'en_CY' => 'акӑлчан (Кипр)',
+ 'en_CZ' => 'акӑлчан (Чехи)',
'en_DE' => 'акӑлчан (Германи)',
'en_DK' => 'акӑлчан (Дани)',
'en_DM' => 'акӑлчан (Доминика)',
'en_ER' => 'акӑлчан (Эритрей)',
+ 'en_ES' => 'акӑлчан (Испани)',
'en_FI' => 'акӑлчан (Финлянди)',
'en_FJ' => 'акӑлчан (Фиджи)',
'en_FK' => 'акӑлчан (Фолкленд утравӗсем)',
'en_FM' => 'акӑлчан (Микронези)',
+ 'en_FR' => 'акӑлчан (Франци)',
'en_GB' => 'акӑлчан (Аслӑ Британи)',
'en_GD' => 'акӑлчан (Гренада)',
'en_GG' => 'акӑлчан (Гернси)',
'en_GH' => 'акӑлчан (Гана)',
'en_GI' => 'акӑлчан (Гибралтар)',
'en_GM' => 'акӑлчан (Гамби)',
+ 'en_GS' => 'акӑлчан (Кӑнтӑр Георги тата Сандвичев утравӗсем)',
'en_GU' => 'акӑлчан (Гуам)',
'en_GY' => 'акӑлчан (Гайана)',
'en_HK' => 'акӑлчан (Гонконг [САР])',
+ 'en_HU' => 'акӑлчан (Венгри)',
'en_ID' => 'акӑлчан (Индонези)',
'en_IE' => 'акӑлчан (Ирланди)',
'en_IL' => 'акӑлчан (Израиль)',
'en_IM' => 'акӑлчан (Мэн утравӗ)',
'en_IN' => 'акӑлчан (Инди)',
+ 'en_IT' => 'акӑлчан (Итали)',
'en_JE' => 'акӑлчан (Джерси)',
'en_JM' => 'акӑлчан (Ямайка)',
'en_KE' => 'акӑлчан (Кени)',
@@ -112,15 +118,19 @@
'en_NF' => 'акӑлчан (Норфолк утравӗ)',
'en_NG' => 'акӑлчан (Нигери)',
'en_NL' => 'акӑлчан (Нидерланд)',
+ 'en_NO' => 'акӑлчан (Норвеги)',
'en_NR' => 'акӑлчан (Науру)',
'en_NU' => 'акӑлчан (Ниуэ)',
'en_NZ' => 'акӑлчан (Ҫӗнӗ Зеланди)',
'en_PG' => 'акӑлчан (Папуа — Ҫӗнӗ Гвиней)',
'en_PH' => 'акӑлчан (Филиппинсем)',
'en_PK' => 'акӑлчан (Пакистан)',
+ 'en_PL' => 'акӑлчан (Польша)',
'en_PN' => 'акӑлчан (Питкэрн утравӗсем)',
'en_PR' => 'акӑлчан (Пуэрто-Рико)',
+ 'en_PT' => 'акӑлчан (Португали)',
'en_PW' => 'акӑлчан (Палау)',
+ 'en_RO' => 'акӑлчан (Румыни)',
'en_RW' => 'акӑлчан (Руанда)',
'en_SB' => 'акӑлчан (Соломон утравӗсем)',
'en_SC' => 'акӑлчан (Сейшел утравӗсем)',
@@ -129,6 +139,7 @@
'en_SG' => 'акӑлчан (Сингапур)',
'en_SH' => 'акӑлчан (Сӑваплӑ Елена утравӗ)',
'en_SI' => 'акӑлчан (Словени)',
+ 'en_SK' => 'акӑлчан (Словаки)',
'en_SL' => 'акӑлчан (Сьерра-Леоне)',
'en_SS' => 'акӑлчан (Кӑнтӑр Судан)',
'en_SX' => 'акӑлчан (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/cy.php b/src/Symfony/Component/Intl/Resources/data/locales/cy.php
index 565b768f39f86..7122d9a45f1af 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/cy.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/cy.php
@@ -121,29 +121,35 @@
'en_CM' => 'Saesneg (Camerŵn)',
'en_CX' => 'Saesneg (Ynys y Nadolig)',
'en_CY' => 'Saesneg (Cyprus)',
+ 'en_CZ' => 'Saesneg (Tsiecia)',
'en_DE' => 'Saesneg (Yr Almaen)',
'en_DK' => 'Saesneg (Denmarc)',
'en_DM' => 'Saesneg (Dominica)',
'en_ER' => 'Saesneg (Eritrea)',
+ 'en_ES' => 'Saesneg (Sbaen)',
'en_FI' => 'Saesneg (Y Ffindir)',
'en_FJ' => 'Saesneg (Fiji)',
'en_FK' => 'Saesneg (Ynysoedd y Falkland/Malvinas)',
'en_FM' => 'Saesneg (Micronesia)',
+ 'en_FR' => 'Saesneg (Ffrainc)',
'en_GB' => 'Saesneg (Y Deyrnas Unedig)',
'en_GD' => 'Saesneg (Grenada)',
'en_GG' => 'Saesneg (Ynys y Garn)',
'en_GH' => 'Saesneg (Ghana)',
'en_GI' => 'Saesneg (Gibraltar)',
'en_GM' => 'Saesneg (Gambia)',
+ 'en_GS' => 'Saesneg (De Georgia ac Ynysoedd Sandwich y De)',
'en_GU' => 'Saesneg (Guam)',
'en_GY' => 'Saesneg (Guyana)',
'en_HK' => 'Saesneg (Hong Kong SAR Tsieina)',
+ 'en_HU' => 'Saesneg (Hwngari)',
'en_ID' => 'Saesneg (Indonesia)',
'en_IE' => 'Saesneg (Iwerddon)',
'en_IL' => 'Saesneg (Israel)',
'en_IM' => 'Saesneg (Ynys Manaw)',
'en_IN' => 'Saesneg (India)',
'en_IO' => 'Saesneg (Tiriogaeth Brydeinig Cefnfor India)',
+ 'en_IT' => 'Saesneg (Yr Eidal)',
'en_JE' => 'Saesneg (Jersey)',
'en_JM' => 'Saesneg (Jamaica)',
'en_KE' => 'Saesneg (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Saesneg (Ynys Norfolk)',
'en_NG' => 'Saesneg (Nigeria)',
'en_NL' => 'Saesneg (Yr Iseldiroedd)',
+ 'en_NO' => 'Saesneg (Norwy)',
'en_NR' => 'Saesneg (Nauru)',
'en_NU' => 'Saesneg (Niue)',
'en_NZ' => 'Saesneg (Seland Newydd)',
'en_PG' => 'Saesneg (Papua Guinea Newydd)',
'en_PH' => 'Saesneg (Y Philipinau)',
10000
'en_PK' => 'Saesneg (Pakistan)',
+ 'en_PL' => 'Saesneg (Gwlad Pwyl)',
'en_PN' => 'Saesneg (Ynysoedd Pitcairn)',
'en_PR' => 'Saesneg (Puerto Rico)',
+ 'en_PT' => 'Saesneg (Portiwgal)',
'en_PW' => 'Saesneg (Palau)',
+ 'en_RO' => 'Saesneg (Rwmania)',
'en_RW' => 'Saesneg (Rwanda)',
'en_SB' => 'Saesneg (Ynysoedd Solomon)',
'en_SC' => 'Saesneg (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Saesneg (Singapore)',
'en_SH' => 'Saesneg (Saint Helena)',
'en_SI' => 'Saesneg (Slofenia)',
+ 'en_SK' => 'Saesneg (Slofacia)',
'en_SL' => 'Saesneg (Sierra Leone)',
'en_SS' => 'Saesneg (De Swdan)',
'en_SX' => 'Saesneg (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/da.php b/src/Symfony/Component/Intl/Resources/data/locales/da.php
index 43883daeddcf0..4840d59622c77 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/da.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/da.php
@@ -121,29 +121,35 @@
'en_CM' => 'engelsk (Cameroun)',
'en_CX' => 'engelsk (Juleøen)',
'en_CY' => 'engelsk (Cypern)',
+ 'en_CZ' => 'engelsk (Tjekkiet)',
'en_DE' => 'engelsk (Tyskland)',
'en_DK' => 'engelsk (Danmark)',
'en_DM' => 'engelsk (Dominica)',
'en_ER' => 'engelsk (Eritrea)',
+ 'en_ES' => 'engelsk (Spanien)',
'en_FI' => 'engelsk (Finland)',
'en_FJ' => 'engelsk (Fiji)',
'en_FK' => 'engelsk (Falklandsøerne)',
'en_FM' => 'engelsk (Mikronesien)',
+ 'en_FR' => 'engelsk (Frankrig)',
'en_GB' => 'engelsk (Storbritannien)',
'en_GD' => 'engelsk (Grenada)',
'en_GG' => 'engelsk (Guernsey)',
'en_GH' => 'engelsk (Ghana)',
'en_GI' => 'engelsk (Gibraltar)',
'en_GM' => 'engelsk (Gambia)',
+ 'en_GS' => 'engelsk (South Georgia og De Sydlige Sandwichøer)',
'en_GU' => 'engelsk (Guam)',
'en_GY' => 'engelsk (Guyana)',
'en_HK' => 'engelsk (SAR Hongkong)',
+ 'en_HU' => 'engelsk (Ungarn)',
'en_ID' => 'engelsk (Indonesien)',
'en_IE' => 'engelsk (Irland)',
'en_IL' => 'engelsk (Israel)',
'en_IM' => 'engelsk (Isle of Man)',
'en_IN' => 'engelsk (Indien)',
'en_IO' => 'engelsk (Det Britiske Territorium i Det Indiske Ocean)',
+ 'en_IT' => 'engelsk (Italien)',
'en_JE' => 'engelsk (Jersey)',
'en_JM' => 'engelsk (Jamaica)',
'en_KE' => 'engelsk (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'engelsk (Norfolk Island)',
'en_NG' => 'engelsk (Nigeria)',
'en_NL' => 'engelsk (Nederlandene)',
+ 'en_NO' => 'engelsk (Norge)',
'en_NR' => 'engelsk (Nauru)',
'en_NU' => 'engelsk (Niue)',
'en_NZ' => 'engelsk (New Zealand)',
'en_PG' => 'engelsk (Papua Ny Guinea)',
'en_PH' => 'engelsk (Filippinerne)',
'en_PK' => 'engelsk (Pakistan)',
+ 'en_PL' => 'engelsk (Polen)',
'en_PN' => 'engelsk (Pitcairn)',
'en_PR' => 'engelsk (Puerto Rico)',
+ 'en_PT' => 'engelsk (Portugal)',
'en_PW' => 'engelsk (Palau)',
+ 'en_RO' => 'engelsk (Rumænien)',
'en_RW' => 'engelsk (Rwanda)',
'en_SB' => 'engelsk (Salomonøerne)',
'en_SC' => 'engelsk (Seychellerne)',
@@ -184,6 +194,7 @@
'en_SG' => 'engelsk (Singapore)',
'en_SH' => 'engelsk (St. Helena)',
'en_SI' => 'engelsk (Slovenien)',
+ 'en_SK' => 'engelsk (Slovakiet)',
'en_SL' => 'engelsk (Sierra Leone)',
'en_SS' => 'engelsk (Sydsudan)',
'en_SX' => 'engelsk (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/de.php b/src/Symfony/Component/Intl/Resources/data/locales/de.php
index 2b92bd6d0454c..538fc989c977c 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/de.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/de.php
@@ -121,29 +121,35 @@
'en_CM' => 'Englisch (Kamerun)',
'en_CX' => 'Englisch (Weihnachtsinsel)',
'en_CY' => 'Englisch (Zypern)',
+ 'en_CZ' => 'Englisch (Tschechien)',
'en_DE' => 'Englisch (Deutschland)',
'en_DK' => 'Englisch (Dänemark)',
'en_DM' => 'Englisch (Dominica)',
'en_ER' => 'Englisch (Eritrea)',
+ 'en_ES' => 'Englisch (Spanien)',
'en_FI' => 'Englisch (Finnland)',
'en_FJ' => 'Englisch (Fidschi)',
'en_FK' => 'Englisch (Falklandinseln)',
'en_FM' => 'Englisch (Mikronesien)',
+ 'en_FR' => 'Englisch (Frankreich)',
'en_GB' => 'Englisch (Vereinigtes Königreich)',
'en_GD' => 'Englisch (Grenada)',
'en_GG' => 'Englisch (Guernsey)',
'en_GH' => 'Englisch (Ghana)',
'en_GI' => 'Englisch (Gibraltar)',
'en_GM' => 'Englisch (Gambia)',
+ 'en_GS' => 'Englisch (Südgeorgien und die Südlichen Sandwichinseln)',
'en_GU' => 'Englisch (Guam)',
'en_GY' => 'Englisch (Guyana)',
'en_HK' => 'Englisch (Sonderverwaltungsregion Hongkong)',
+ 'en_HU' => 'Englisch (Ungarn)',
'en_ID' => 'Englisch (Indonesien)',
'en_IE' => 'Englisch (Irland)',
'en_IL' => 'Englisch (Israel)',
'en_IM' => 'Englisch (Isle of Man)',
'en_IN' => 'Englisch (Indien)',
'en_IO' => 'Englisch (Britisches Territorium im Indischen Ozean)',
+ 'en_IT' => 'Englisch (Italien)',
'en_JE' => 'Englisch (Jersey)',
'en_JM' => 'Englisch (Jamaika)',
'en_KE' => 'Englisch (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Englisch (Norfolkinsel)',
'en_NG' => 'Englisch (Nigeria)',
'en_NL' => 'Englisch (Niederlande)',
+ 'en_NO' => 'Englisch (Norwegen)',
'en_NR' => 'Englisch (Nauru)',
'en_NU' => 'Englisch (Niue)',
'en_NZ' => 'Englisch (Neuseeland)',
'en_PG' => 'Englisch (Papua-Neuguinea)',
'en_PH' => 'Englisch (Philippinen)',
'en_PK' => 'Englisch (Pakistan)',
+ 'en_PL' => 'Englisch (Polen)',
'en_PN' => 'Englisch (Pitcairninseln)',
'en_PR' => 'Englisch (Puerto Rico)',
+ 'en_PT' => 'Englisch (Portugal)',
'en_PW' => 'Englisch (Palau)',
+ 'en_RO' => 'Englisch (Rumänien)',
'en_RW' => 'Englisch (Ruanda)',
'en_SB' => 'Englisch (Salomonen)',
'en_SC' => 'Englisch (Seychellen)',
@@ -184,6 +194,7 @@
'en_SG' => 'Englisch (Singapur)',
'en_SH' => 'Englisch (St. Helena)',
'en_SI' => 'Englisch (Slowenien)',
+ 'en_SK' => 'Englisch (Slowakei)',
'en_SL' => 'Englisch (Sierra Leone)',
'en_SS' => 'Englisch (Südsudan)',
'en_SX' => 'Englisch (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/dz.php b/src/Symfony/Component/Intl/Resources/data/locales/dz.php
index 1d72a3a0d48bc..6d14bbb965595 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/dz.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/dz.php
@@ -108,28 +108,34 @@
'en_CM' => 'ཨིང་ལིཤ་ཁ། (ཀེ་མ་རུན།)',
'en_CX' => 'ཨིང་ལིཤ་ཁ། (ཁི་རིསྟ་མེས་མཚོ་གླིང།)',
'en_CY' => 'ཨིང་ལིཤ་ཁ། (སཱའི་པྲས།)',
+ 'en_CZ' => 'ཨིང་ལིཤ་ཁ། (ཅེཀ་ རི་པབ་ལིཀ།)',
'en_DE' => 'ཨིང་ལིཤ་ཁ། (ཇཱར་མ་ནི།)',
'en_DK' => 'ཨིང་ལིཤ་ཁ། (ཌེན་མཱཀ།)',
'en_DM' => 'ཨིང་ལིཤ་ཁ། (ཌོ་མི་ནི་ཀ།)',
'en_ER' => 'ཨིང་ལིཤ་ཁ། (ཨེ་རི་ཊྲེ་ཡ།)',
+ 'en_ES' => 'ཨིང་ལིཤ་ཁ། (ཨིས་པེན།)',
'en_FI' => 'ཨིང་ལིཤ་ཁ། (ཕིན་ལེནཌ།)',
'en_FJ' => 'ཨིང་ལིཤ་ཁ། (ཕི་ཇི།)',
'en_FK' => 'ཨིང་ལིཤ་ཁ། (ཕལྐ་ལནྜ་གླིང་ཚོམ།)',
'en_FM' => 'ཨིང་ལིཤ་ཁ། (མའི་ཀྲོ་ནི་ཤི་ཡ།)',
+ 'en_FR' => 'ཨིང་ལིཤ་ཁ། (ཕྲཱནས།)',
'en_GB' => 'ཨིང་ལིཤ་ཁ། (ཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམ།)',
'en_GD' => 'ཨིང་ལིཤ་ཁ། (གྲྀ་ན་ཌ།)',
'en_GG' => 'ཨིང་ལིཤ་ཁ། (གུ་ཨེརྣ་སི།)',
'en_GH' => 'ཨིང་ལིཤ་ཁ། (གྷ་ན།)',
'en_GI' => 'ཨིང་ལིཤ་ཁ། (ཇིབ་རཱལ་ཊར།)',
'en_GM' => 'ཨིང་ལིཤ་ཁ། (གྷེམ་བི་ཡ།)',
+ 'en_GS' => 'ཨིང་ལིཤ་ཁ། (སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ྄་ཝིཅ་གླིང་ཚོམ།)',
'en_GU' => 'ཨིང་ལིཤ་ཁ། (གུ་འམ་ མཚོ་གླིང།)',
'en_GY' => 'ཨིང་ལིཤ་ཁ། (གྷ་ཡ་ན།)',
'en_HK' => 'ཨིང་ལིཤ་ཁ། (ཧོང་ཀོང་ཅཱའི་ན།)',
+ 'en_HU' => 'ཨིང་ལིཤ་ཁ། (ཧཱང་གྷ་རི།)',
'en_ID' => 'ཨིང་ལིཤ་ཁ། (ཨིན་ཌོ་ནེ་ཤི་ཡ།)',
'en_IE' => 'ཨིང་ལིཤ་ཁ། (ཨཱ་ཡ་ལེནཌ།)',
'en_IL' => 'ཨིང་ལིཤ་ཁ། (ཨིས་ར་ཡེལ།)',
'en_IM' => 'ཨིང་ལིཤ་ཁ། (ཨ་ཡུལ་ ཨོཕ་ མཱན།)',
'en_IN' => 'ཨིང་ལིཤ་ཁ། (རྒྱ་གར།)',
+ 'en_IT' => 'ཨིང་ལིཤ་ཁ། (ཨི་ཊ་ལི།)',
'en_JE' => 'ཨིང་ལིཤ་ཁ། (ཇེར་སི།)',
'en_JM' => 'ཨིང་ལིཤ་ཁ། (ཇཱ་མཻ་ཀ།)',
'en_KE' => 'ཨིང་ལིཤ་ཁ། (ཀེན་ཡ།)',
@@ -153,15 +159,19 @@
'en_NF' => 'ཨིང་ལིཤ་ཁ། (ནོར་ཕོལཀ་མཚོ་གླིང༌།)',
'en_NG' => 'ཨིང་ལིཤ་ཁ། (ནཱའི་ཇི་རི་ཡ།)',
'en_NL' => 'ཨིང་ལིཤ་ཁ། (ནེ་དར་ལནཌས྄།)',
+ 'en_NO' => 'ཨིང་ལིཤ་ཁ། (ནོར་ཝེ།)',
'en_NR' => 'ཨིང་ལིཤ་ཁ། (ནའུ་རུ་།)',
'en_NU' => 'ཨིང་ལིཤ་ཁ། (ནི་ཨུ་ཨཻ།)',
'en_NZ' => 'ཨིང་ལིཤ་ཁ། (ནིའུ་ཛི་ལེནཌ།)',
'en_PG' => 'ཨིང་ལིཤ་ཁ། (པ་པུ་ ནིའུ་གི་ནི།)',
'en_PH' => 'ཨིང་ལིཤ་ཁ། (ཕི་ལི་པིནས།)',
'en_PK' => 'ཨིང་ལིཤ་ཁ། (པ་ཀི་སཏཱན།)',
+ 'en_PL' => 'ཨིང་ལིཤ་ཁ། (པོ་ལེནཌ།)',
'en_PN' => 'ཨིང་ལིཤ་ཁ། (པིཊ་ཀེ་ཡེརན་གླིང་ཚོམ།)',
'en_PR' => 'ཨིང་ལིཤ་ཁ། (པུ་འེར་ཊོ་རི་ཁོ།)',
+ 'en_PT' => 'ཨིང་ལིཤ་ཁ། (པོར་ཅུ་གཱལ།)',
'en_PW' => 'ཨིང་ལིཤ་ཁ། (པ་ལའུ།)',
+ 'en_RO' => 'ཨིང་ལིཤ་ཁ། (རོ་མེ་ནི་ཡ།)',
'en_RW' => 'ཨིང་ལིཤ་ཁ། (རུ་ཝན་ཌ།)',
'en_SB' => 'ཨིང་ལིཤ་ཁ། (སོ་ལོ་མོན་ གླིང་ཚོམ།)',
'en_SC' => 'ཨིང་ལིཤ་ཁ། (སེ་ཤཱལས།)',
@@ -170,6 +180,7 @@
'en_SG' => 'ཨིང་ལིཤ་ཁ། (སིང་ག་པོར།)',
'en_SH' => 'ཨིང་ལིཤ་ཁ། (སེནཊ་ ཧེ་ལི་ན།)',
'en_SI' => 'ཨིང་ལིཤ་ཁ། (སུ་ལོ་བི་ནི་ཡ།)',
+ 'en_SK' => 'ཨིང་ལིཤ་ཁ། (སུ་ལོ་བཱ་ཀི་ཡ།)',
'en_SL' => 'ཨིང་ལིཤ་ཁ། (སི་ར་ ལི་འོན།)',
'en_SS' => 'ཨིང་ལིཤ་ཁ། (སཱའུཐ་ སུ་ཌཱན།)',
'en_SX' => 'ཨིང་ལིཤ་ཁ། (སིནཊ་ མཱར་ཊེན།)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ee.php b/src/Symfony/Component/Intl/Resources/data/locales/ee.php
index 06bfd269580e6..11f8d3a8665ef 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ee.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ee.php
@@ -116,28 +116,34 @@
'en_CM' => 'iŋlisigbe (Kamerun nutome)',
'en_CX' => 'iŋlisigbe (Kristmas ƒudomekpo nutome)',
'en_CY' => 'iŋlisigbe (Saiprus nutome)',
+ 'en_CZ' => 'iŋlisigbe (Tsɛk repɔblik nutome)',
'en_DE' => 'iŋlisigbe (Germania nutome)',
'en_DK' => 'iŋlisigbe (Denmark nutome)',
'en_DM' => 'iŋlisigbe (Dominika nutome)',
'en_ER' => 'iŋlisigbe (Eritrea nutome)',
+ 'en_ES' => 'iŋlisigbe (Spain nutome)',
'en_FI' => 'iŋlisigbe (Finland nutome)',
'en_FJ' => 'iŋlisigbe (Fidzi nutome)',
'en_FK' => 'iŋlisigbe (Falkland ƒudomekpowo nutome)',
'en_FM' => 'iŋlisigbe (Mikronesia nutome)',
+ 'en_FR' => 'iŋlisigbe (France nutome)',
'en_GB' => 'iŋlisigbe (United Kingdom nutome)',
'en_GD' => 'iŋlisigbe (Grenada nutome)',
'en_GG' => 'iŋlisigbe (Guernse nutome)',
'en_GH' => 'iŋlisigbe (Ghana nutome)',
'en_GI' => 'iŋlisigbe (Gibraltar nutome)',
'en_GM' => 'iŋlisigbe (Gambia nutome)',
+ 'en_GS' => 'iŋlisigbe (Anyiehe Georgia kple Anyiehe Sandwich ƒudomekpowo nutome)',
'en_GU' => 'iŋlisigbe (Guam nutome)',
'en_GY' => 'iŋlisigbe (Guyanadu)',
'en_HK' => 'iŋlisigbe (Hɔng Kɔng SAR Tsaina nutome)',
+ 'en_HU' => 'iŋlisigbe (Hungari nutome)',
'en_ID' => 'iŋlisigbe (Indonesia nutome)',
'en_IE' => 'iŋlisigbe (Ireland nutome)',
'en_IL' => 'iŋlisigbe (Israel nutome)',
'en_IM' => 'iŋlisigbe (Aisle of Man nutome)',
'en_IN' => 'iŋlisigbe (India nutome)',
+ 'en_IT' => 'iŋlisigbe (Italia nutome)',
'en_JE' => 'iŋlisigbe (Dzɛse nutome)',
'en_JM' => 'iŋlisigbe (Dzamaika nutome)',
'en_KE' => 'iŋlisigbe (Kenya nutome)',
@@ -161,15 +167,19 @@
'en_NF' => 'iŋlisigbe (Norfolk ƒudomekpo nutome)',
'en_NG' => 'iŋlisigbe (Nigeria nutome)',
'en_NL' => 'iŋlisigbe (Netherlands nutome)',
+ 'en_NO' => 'iŋlisigbe (Norway nutome)',
'en_NR' => 'iŋlisigbe (Nauru nutome)',
'en_NU' => 'iŋlisigbe (Niue nutome)',
'en_NZ' => 'iŋlisigbe (New Zealand nutome)',
'en_PG' => 'iŋlisigbe (Papua New Gini nutome)',
'en_PH' => 'iŋlisigbe (Filipini nutome)',
'en_PK' => 'iŋlisigbe (Pakistan nutome)',
+ 'en_PL' => 'iŋlisigbe (Poland nutome)',
'en_PN' => 'iŋlisigbe (Pitkairn ƒudomekpo nutome)',
'en_PR' => 'iŋlisigbe (Puerto Riko nutome)',
+ 'en_PT' => 'iŋlisigbe (Portugal nutome)',
'en_PW' => 'iŋlisigbe (Palau nutome)',
+ 'en_RO' => 'iŋlisigbe (Romania nutome)',
'en_RW' => 'iŋlisigbe (Rwanda nutome)',
'en_SB' => 'iŋlisigbe (Solomon ƒudomekpowo nutome)',
'en_SC' => 'iŋlisigbe (Seshɛls nutome)',
@@ -178,6 +188,7 @@
'en_SG' => 'iŋlisigbe (Singapɔr nutome)',
'en_SH' => 'iŋlisigbe (Saint Helena nutome)',
'en_SI' => 'iŋlisigbe (Slovenia nutome)',
+ 'en_SK' => 'iŋlisigbe (Slovakia nutome)',
'en_SL' => 'iŋlisigbe (Sierra Leone nutome)',
'en_SZ' => 'iŋlisigbe (Swaziland nutome)',
'en_TC' => 'iŋlisigbe (Tɛks kple Kaikos ƒudomekpowo nutome)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/el.php b/src/Symfony/Component/Intl/Resources/data/locales/el.php
index f7321ff73213d..5fc8cd47235ae 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/el.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/el.php
@@ -121,29 +121,35 @@
'en_CM' => 'Αγγλικά (Καμερούν)',
'en_CX' => 'Αγγλικά (Νήσος των Χριστουγέννων)',
'en_CY' => 'Αγγλικά (Κύπρος)',
+ 'en_CZ' => 'Αγγλικά (Τσεχία)',
'en_DE' => 'Αγγλικά (Γερμανία)',
'en_DK' => 'Αγγλικά (Δανία)',
'en_DM' => 'Αγγλικά (Ντομίνικα)',
'en_ER' => 'Αγγλικά (Ερυθραία)',
+ 'en_ES' => 'Αγγλικά (Ισπανία)',
'en_FI' => 'Αγγλικά (Φινλανδία)',
'en_FJ' => 'Αγγλικά (Φίτζι)',
'en_FK' => 'Αγγλικά (Νήσοι Φόκλαντ)',
'en_FM' => 'Αγγλικά (Μικρονησία)',
+ 'en_FR' => 'Αγγλικά (Γαλλία)',
'en_GB' => 'Αγγλικά (Ηνωμένο Βασίλειο)',
'en_GD' => 'Αγγλικά (Γρενάδα)',
'en_GG' => 'Αγγλικά (Γκέρνζι)',
'en_GH' => 'Αγγλικά (Γκάνα)',
'en_GI' => 'Αγγλικά (Γιβραλτάρ)',
'en_GM' => 'Αγγλικά (Γκάμπια)',
+ 'en_GS' => 'Αγγλικά (Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς)',
'en_GU' => 'Αγγλικά (Γκουάμ)',
'en_GY' => 'Αγγλικά (Γουιάνα)',
'en_HK' => 'Αγγλικά (Χονγκ Κονγκ ΕΔΠ Κίνας)',
+ 'en_HU' => 'Αγγλικά (Ουγγαρία)',
'en_ID' => 'Αγγλικά (Ινδονησία)',
'en_IE' => 'Αγγλικά (Ιρλανδία)',
'en_IL' => 'Αγγλικά (Ισραήλ)',
'en_IM' => 'Αγγλικά (Νήσος του Μαν)',
'en_IN' => 'Αγγλικά (Ινδία)',
'en_IO' => 'Αγγλικά (Βρετανικά Εδάφη Ινδικού Ωκεανού)',
+ 'en_IT' => 'Αγγλικά (Ιταλία)',
'en_JE' => 'Αγγλικά (Τζέρζι)',
'en_JM' => 'Αγγλικά (Τζαμάικα)',
'en_KE' => 'Αγγλικά (Κένυα)',
@@ -167,15 +173,19 @@
'en_NF' => 'Αγγλικά (Νήσος Νόρφολκ)',
'en_NG' => 'Αγγλικά (Νιγηρία)',
'en_NL' => 'Αγγλικά (Κάτω Χώρες)',
+ 'en_NO' => 'Αγγλικά (Νορβηγία)',
'en_NR' => 'Αγγλικά (Ναουρού)',
'en_NU' => 'Αγγλικά (Νιούε)',
'en_NZ' => 'Αγγλικά (Νέα Ζηλανδία)',
'en_PG' => 'Αγγλικά (Παπούα Νέα Γουινέα)',
'en_PH' => 'Αγγλικά (Φιλιππίνες)',
'en_PK' => 'Αγγλικά (Πακιστάν)',
+ 'en_PL' => 'Αγγλικά (Πολωνία)',
'en_PN' => 'Αγγλικά (Νήσοι Πίτκερν)',
'en_PR' => 'Αγγλικά (Πουέρτο Ρίκο)',
+ 'en_PT' => 'Αγγλικά (Πορτογαλία)',
'en_PW' => 'Αγγλικά (Παλάου)',
+ 'en_RO' => 'Αγγλικά (Ρουμανία)',
'en_RW' => 'Αγγλικά (Ρουάντα)',
'en_SB' => 'Αγγλικά (Νήσοι Σολομώντος)',
'en_SC' => 'Αγγλικά (Σεϋχέλλες)',
@@ -184,6 +194,7 @@
'en_SG' => 'Αγγλικά (Σιγκαπούρη)',
'en_SH' => 'Αγγλικά (Αγία Ελένη)',
'en_SI' => 'Αγγλικά (Σλοβενία)',
+ 'en_SK' => 'Αγγλικά (Σλοβακία)',
'en_SL' => 'Αγγλικά (Σιέρα Λεόνε)',
'en_SS' => 'Αγγλικά (Νότιο Σουδάν)',
'en_SX' => 'Αγγλικά (Άγιος Μαρτίνος [Ολλανδικό τμήμα])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/en.php b/src/Symfony/Component/Intl/Resources/data/locales/en.php
index 3814a240bdba7..1959ed8ab2948 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/en.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/en.php
@@ -121,29 +121,35 @@
'en_CM' => 'English (Cameroon)',
'en_CX' => 'English (Christmas Island)',
'en_CY' => 'English (Cyprus)',
+ 'en_CZ' => 'English (Czechia)',
'en_DE' => 'English (Germany)',
'en_DK' => 'English (Denmark)',
'en_DM' => 'English (Dominica)',
'en_ER' => 'English (Eritrea)',
+ 'en_ES' => 'English (Spain)',
'en_FI' => 'English (Finland)',
'en_FJ' => 'English (Fiji)',
'en_FK' => 'English (Falkland Islands)',
'en_FM' => 'English (Micronesia)',
+ 'en_FR' => 'English (France)',
'en_GB' => 'English (United Kingdom)',
'en_GD' => 'English (Grenada)',
'en_GG' => 'English (Guernsey)',
'en_GH' => 'English (Ghana)',
'en_GI' => 'English (Gibraltar)',
'en_GM' => 'English (Gambia)',
+ 'en_GS' => 'English (South Georgia & South Sandwich Islands)',
'en_GU' => 'English (Guam)',
'en_GY' => 'English (Guyana)',
'en_HK' => 'English (Hong Kong SAR China)',
+ 'en_HU' => 'English (Hungary)',
'en_ID' => 'English (Indonesia)',
'en_IE' => 'English (Ireland)',
'en_IL' => 'English (Israel)',
'en_IM' => 'English (Isle of Man)',
'en_IN' => 'English (India)',
'en_IO' => 'English (British Indian Ocean Territory)',
+ 'en_IT' => 'English (Italy)',
'en_JE' => 'English (Jersey)',
'en_JM' => 'English (Jamaica)',
'en_KE' => 'English (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'English (Norfolk Island)',
'en_NG' => 'English (Nigeria)',
'en_NL' => 'English (Netherlands)',
+ 'en_NO' => 'English (Norway)',
'en_NR' => 'English (Nauru)',
'en_NU' => 'English (Niue)',
'en_NZ' => 'English (New Zealand)',
'en_PG' => 'English (Papua New Guinea)',
'en_PH' => 'English (Philippines)',
'en_PK' => 'English (Pakistan)',
+ 'en_PL' => 'English (Poland)',
'en_PN' => 'English (Pitcairn Islands)',
'en_PR' => 'English (Puerto Rico)',
+ 'en_PT' => 'English (Portugal)',
'en_PW' => 'English (Palau)',
+ 'en_RO' => 'English (Romania)',
'en_RW' => 'English (Rwanda)',
'en_SB' => 'English (Solomon Islands)',
'en_SC' => 'English (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'English (Singapore)',
'en_SH' => 'English (St. Helena)',
'en_SI' => 'English (Slovenia)',
+ 'en_SK' => 'English (Slovakia)',
'en_SL' => 'English (Sierra Leone)',
'en_SS' => 'English (South Sudan)',
'en_SX' => 'English (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/en_CA.php b/src/Symfony/Component/Intl/Resources/data/locales/en_CA.php
index e09f86450c562..500888fb75e93 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/en_CA.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/en_CA.php
@@ -10,6 +10,7 @@
'bs_Cyrl_BA' => 'Bosnian (Cyrillic, Bosnia and Herzegovina)',
'bs_Latn_BA' => 'Bosnian (Latin, Bosnia and Herzegovina)',
'en_AG' => 'English (Antigua and Barbuda)',
+ 'en_GS' => 'English (South Georgia and South Sandwich Islands)',
'en_KN' => 'English (Saint Kitts and Nevis)',
'en_LC' => 'English (Saint Lucia)',
'en_SH' => 'English (Saint Helena)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/eo.php b/src/Symfony/Component/Intl/Resources/data/locales/eo.php
index 6ecc2fbd1dec6..0f6bbfbc66337 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/eo.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/eo.php
@@ -100,24 +100,30 @@
'en_CK' => 'angla (Kukinsuloj)',
'en_CM' => 'angla (Kameruno)',
'en_CY' => 'angla (Kipro)',
+ 'en_CZ' => 'angla (Ĉeĥujo)',
'en_DE' => 'angla (Germanujo)',
'en_DK' => 'angla (Danujo)',
'en_DM' => 'angla (Dominiko)',
'en_ER' => 'angla (Eritreo)',
+ 'en_ES' => 'angla (Hispanujo)',
'en_FI' => 'angla (Finnlando)',
'en_FJ' => 'angla (Fiĝoj)',
'en_FM' => 'angla (Mikronezio)',
+ 'en_FR' => 'angla (Francujo)',
'en_GB' => 'angla (Unuiĝinta Reĝlando)',
'en_GD' => 'angla (Grenado)',
'en_GH' => 'angla (Ganao)',
'en_GI' => 'angla (Ĝibraltaro)',
'en_GM' => 'angla (Gambio)',
+ 'en_GS' => 'angla (Sud-Georgio kaj Sud-Sandviĉinsuloj)',
'en_GU' => 'angla (Gvamo)',
'en_GY' => 'angla (Gujano)',
+ 'en_HU' => 'angla (Hungarujo)',
'en_ID' => 'angla (Indonezio)',
'en_IE' => 'angla (Irlando)',
'en_IL' => 'angla (Israelo)',
'en_IN' => 'angla (Hindujo)',
+ 'en_IT' => 'angla (Italujo)',
'en_JM' => 'angla (Jamajko)',
'en_KE' => 'angla (Kenjo)',
'en_KI' => 'angla (Kiribato)',
@@ -138,15 +144,19 @@
'en_NF' => 'angla (Norfolkinsulo)',
'en_NG' => 'angla (Niĝerio)',
'en_NL' => 'angla (Nederlando)',
+ 'en_NO' => 'angla (Norvegujo)',
'en_NR' => 'angla (Nauro)',
'en_NU' => 'angla (Niuo)',
'en_NZ' => 'angla (Nov-Zelando)',
'en_PG' => 'angla (Papuo-Nov-Gvineo)',
'en_PH' => 'angla (Filipinoj)',
'en_PK' => 'angla (Pakistano)',
+ 'en_PL' => 'angla (Pollando)',
'en_PN' => 'angla (Pitkarna Insulo)',
'en_PR' => 'angla (Puertoriko)',
+ 'en_PT' => 'angla (Portugalujo)',
'en_PW' => 'angla (Palaŭo)',
+ 'en_RO' => 'angla (Rumanujo)',
'en_RW' => 'angla (Ruando)',
'en_SB' => 'angla (Salomonoj)',
'en_SC' => 'angla (Sejŝeloj)',
@@ -155,6 +165,7 @@
'en_SG' => 'angla (Singapuro)',
'en_SH' => 'angla (Sankta Heleno)',
'en_SI' => 'angla (Slovenujo)',
+ 'en_SK' => 'angla (Slovakujo)',
'en_SL' => 'angla (Sieraleono)',
'en_SZ' => 'angla (Svazilando)',
'en_TO' => 'angla (Tongo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/es.php b/src/Symfony/Component/Intl/Resources/data/locales/es.php
index 82c3ab0b165e8..0cf4c47dbb392 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/es.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/es.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglés (Camerún)',
'en_CX' => 'inglés (Isla de Navidad)',
'en_CY' => 'inglés (Chipre)',
+ 'en_CZ' => 'inglés (Chequia)',
'en_DE' => 'inglés (Alemania)',
'en_DK' => 'inglés (Dinamarca)',
'en_DM' => 'inglés (Dominica)',
'en_ER' => 'inglés (Eritrea)',
+ 'en_ES' => 'inglés (España)',
'en_FI' => 'inglés (Finlandia)',
'en_FJ' => 'inglés (Fiyi)',
'en_FK' => 'inglés (Islas Malvinas)',
'en_FM' => 'inglés (Micronesia)',
+ 'en_FR' => 'inglés (Francia)',
'en_GB' => 'inglés (Reino Unido)',
'en_GD' => 'inglés (Granada)',
'en_GG' => 'inglés (Guernesey)',
'en_GH' => 'inglés (Ghana)',
'en_GI' => 'inglés (Gibraltar)',
'en_GM' => 'inglés (Gambia)',
+ 'en_GS' => 'inglés (Islas Georgia del Sur y Sandwich del Sur)',
'en_GU' => 'inglés (Guam)',
'en_GY' => 'inglés (Guyana)',
'en_HK' => 'inglés (RAE de Hong Kong [China])',
+ 'en_HU' => 'inglés (Hungría)',
'en_ID' => 'inglés (Indonesia)',
'en_IE' => 'inglés (Irlanda)',
'en_IL' => 'inglés (Israel)',
'en_IM' => 'inglés (Isla de Man)',
'en_IN' => 'inglés (India)',
'en_IO' => 'inglés (Territorio Británico del Océano Índico)',
+ 'en_IT' => 'inglés (Italia)',
'en_JE' => 'inglés (Jersey)',
'en_JM' => 'inglés (Jamaica)',
'en_KE' => 'inglés (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglés (Isla Norfolk)',
'en_NG' => 'inglés (Nigeria)',
'en_NL' => 'inglés (Países Bajos)',
+ 'en_NO' => 'inglés (Noruega)',
'en_NR' => 'inglés (Nauru)',
'en_NU' => 'inglés (Niue)',
'en_NZ' => 'inglés (Nueva Zelanda)',
'en_PG' => 'inglés (Papúa Nueva Guinea)',
'en_PH' => 'inglés (Filipinas)',
'en_PK' => 'inglés (Pakistán)',
+ 'en_PL' => 'inglés (Polonia)',
'en_PN' => 'inglés (Islas Pitcairn)',
'en_PR' => 'inglés (Puerto Rico)',
+ 'en_PT' => 'inglés (Portugal)',
'en_PW' => 'inglés (Palaos)',
+ 'en_RO' => 'inglés (Rumanía)',
'en_RW' => 'inglés (Ruanda)',
'en_SB' => 'inglés (Islas Salomón)',
'en_SC' => 'inglés (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglés (Singapur)',
'en_SH' => 'inglés (Santa Elena)',
'en_SI' => 'inglés (Eslovenia)',
+ 'en_SK' => 'inglés (Eslovaquia)',
'en_SL' => 'inglés (Sierra Leona)',
'en_SS' => 'inglés (Sudán del Sur)',
'en_SX' => 'inglés (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/es_419.php b/src/Symfony/Component/Intl/Resources/data/locales/es_419.php
index f8448321f193e..b1d8f6d91e8ee 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/es_419.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/es_419.php
@@ -11,6 +11,8 @@
'bs_Latn' => 'bosnio (latín)',
'bs_Latn_BA' => 'bosnio (latín, Bosnia-Herzegovina)',
'en_001' => 'inglés (mundo)',
+ 'en_GS' => 'inglés (Islas Georgia del Sur y Sándwich del Sur)',
+ 'en_RO' => 'inglés (Rumania)',
'en_UM' => 'inglés (Islas Ultramarinas de EE.UU.)',
'eo_001' => 'esperanto (mundo)',
'eu' => 'vasco',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/et.php b/src/Symfony/Component/Intl/Resources/data/locales/et.php
index e3454e02679dc..6753a81917486 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/et.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/et.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglise (Kamerun)',
'en_CX' => 'inglise (Jõulusaar)',
'en_CY' => 'inglise (Küpros)',
+ 'en_CZ' => 'inglise (Tšehhi)',
'en_DE' => 'inglise (Saksamaa)',
'en_DK' => 'inglise (Taani)',
'en_DM' => 'inglise (Dominica)',
'en_ER' => 'inglise (Eritrea)',
+ 'en_ES' => 'inglise (Hispaania)',
'en_FI' => 'inglise (Soome)',
'en_FJ' => 'inglise (Fidži)',
'en_FK' => 'inglise (Falklandi saared)',
'en_FM' => 'inglise (Mikroneesia)',
+ 'en_FR' => 'inglise (Prantsusmaa)',
'en_GB' => 'inglise (Ühendkuningriik)',
'en_GD' => 'inglise (Grenada)',
'en_GG' => 'inglise (Guernsey)',
'en_GH' => 'inglise (Ghana)',
'en_GI' => 'inglise (Gibraltar)',
'en_GM' => 'inglise (Gambia)',
+ 'en_GS' => 'inglise (Lõuna-Georgia ja Lõuna-Sandwichi saared)',
'en_GU' => 'inglise (Guam)',
'en_GY' => 'inglise (Guyana)',
'en_HK' => 'inglise (Hongkongi erihalduspiirkond)',
+ 'en_HU' => 'inglise (Ungari)',
'en_ID' => 'inglise (Indoneesia)',
'en_IE' => 'inglise (Iirimaa)',
'en_IL' => 'inglise (Iisrael)',
'en_IM' => 'inglise (Mani saar)',
'en_IN' => 'inglise (India)',
'en_IO' => 'inglise (Briti India ookeani ala)',
+ 'en_IT' => 'inglise (Itaalia)',
'en_JE' => 'inglise (Jersey)',
'en_JM' => 'inglise (Jamaica)',
'en_KE' => 'inglise (Keenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglise (Norfolk)',
'en_NG' => 'inglise (Nigeeria)',
'en_NL' => 'inglise (Holland)',
+ 'en_NO' => 'inglise (Norra)',
'en_NR' => 'inglise (Nauru)',
'en_NU' => 'inglise (Niue)',
'en_NZ' => 'inglise (Uus-Meremaa)',
'en_PG' => 'inglise (Paapua Uus-Guinea)',
'en_PH' => 'inglise (Filipiinid)',
'en_PK' => 'inglise (Pakistan)',
+ 'en_PL' => 'inglise (Poola)',
'en_PN' => 'inglise (Pitcairni saared)',
'en_PR' => 'inglise (Puerto Rico)',
+ 'en_PT' => 'inglise (Portugal)',
'en_PW' => 'inglise (Belau)',
+ 'en_RO' => 'inglise (Rumeenia)',
'en_RW' => 'inglise (Rwanda)',
'en_SB' => 'inglise (Saalomoni Saared)',
'en_SC' => 'inglise (Seišellid)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglise (Singapur)',
'en_SH' => 'inglise (Saint Helena)',
'en_SI' => 'inglise (Sloveenia)',
+ 'en_SK' => 'inglise (Slovakkia)',
'en_SL' => 'inglise (Sierra Leone)',
'en_SS' => 'inglise (Lõuna-Sudaan)',
'en_SX' => 'inglise (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/eu.php b/src/Symfony/Component/Intl/Resources/data/locales/eu.php
index 9f97dec3c1ba0..a41ea496d6849 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/eu.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/eu.php
@@ -121,29 +121,35 @@
'en_CM' => 'ingelesa (Kamerun)',
'en_CX' => 'ingelesa (Christmas uhartea)',
'en_CY' => 'ingelesa (Zipre)',
+ 'en_CZ' => 'ingelesa (Txekia)',
'en_DE' => 'ingelesa (Alemania)',
'en_DK' => 'ingelesa (Danimarka)',
'en_DM' => 'ingelesa (Dominika)',
'en_ER' => 'ingelesa (Eritrea)',
+ 'en_ES' => 'ingelesa (Espainia)',
'en_FI' => 'ingelesa (Finlandia)',
'en_FJ' => 'ingelesa (Fiji)',
'en_FK' => 'ingelesa (Falklandak)',
'en_FM' => 'ingelesa (Mikronesia)',
+ 'en_FR' => 'ingelesa (Frantzia)',
'en_GB' => 'ingelesa (Erresuma Batua)',
'en_GD' => 'ingelesa (Grenada)',
'en_GG' => 'ingelesa (Guernesey)',
'en_GH' => 'ingelesa (Ghana)',
'en_GI' => 'ingelesa (Gibraltar)',
'en_GM' => 'ingelesa (Gambia)',
+ 'en_GS' => 'ingelesa (Hegoaldeko Georgia eta Hegoaldeko Sandwich uharteak)',
'en_GU' => 'ingelesa (Guam)',
'en_GY' => 'ingelesa (Guyana)',
'en_HK' => 'ingelesa (Hong Kong Txinako AEB)',
+ 'en_HU' => 'ingelesa (Hungaria)',
'en_ID' => 'ingelesa (Indonesia)',
'en_IE' => 'ingelesa (Irlanda)',
'en_IL' => 'ingelesa (Israel)',
'en_IM' => 'ingelesa (Man uhartea)',
'en_IN' => 'ingelesa (India)',
'en_IO' => 'ingelesa (Indiako Ozeanoko lurralde britainiarra)',
+ 'en_IT' => 'ingelesa (Italia)',
'en_JE' => 'ingelesa (Jersey)',
'en_JM' => 'ingelesa (Jamaika)',
'en_KE' => 'ingelesa (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'ingelesa (Norfolk uhartea)',
'en_NG' => 'ingelesa (Nigeria)',
'en_NL' => 'ingelesa (Herbehereak)',
+ 'en_NO' => 'ingelesa (Norvegia)',
'en_NR' => 'ingelesa (Nauru)',
'en_NU' => 'ingelesa (Niue)',
'en_NZ' => 'ingelesa (Zeelanda Berria)',
'en_PG' => 'ingelesa (Papua Ginea Berria)',
'en_PH' => 'ingelesa (Filipinak)',
'en_PK' => 'ingelesa (Pakistan)',
+ 'en_PL' => 'ingelesa (Polonia)',
'en_PN' => 'ingelesa (Pitcairn uharteak)',
'en_PR' => 'ingelesa (Puerto Rico)',
+ 'en_PT' => 'ingelesa (Portugal)',
'en_PW' => 'ingelesa (Palau)',
+ 'en_RO' => 'ingelesa (Errumania)',
'en_RW' => 'ingelesa (Ruanda)',
'en_SB' => 'ingelesa (Salomon Uharteak)',
'en_SC' => 'ingelesa (Seychelleak)',
@@ -184,6 +194,7 @@
'en_SG' => 'ingelesa (Singapur)',
'en_SH' => 'ingelesa (Santa Helena)',
'en_SI' => 'ingelesa (Eslovenia)',
+ 'en_SK' => 'ingelesa (Eslovakia)',
'en_SL' => 'ingelesa (Sierra Leona)',
'en_SS' => 'ingelesa (Hego Sudan)',
'en_SX' => 'ingelesa (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fa.php b/src/Symfony/Component/Intl/Resources/data/locales/fa.php
index 339f3e6d51b09..339e0aef9143b 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fa.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fa.php
@@ -121,29 +121,35 @@
'en_CM' => 'انگلیسی (کامرون)',
'en_CX' => 'انگلیسی (جزیرهٔ کریسمس)',
'en_CY' => 'انگلیسی (قبرس)',
+ 'en_CZ' => 'انگلیسی (چک)',
'en_DE' => 'انگلیسی (آلمان)',
'en_DK' => 'انگلیسی (دانمارک)',
'en_DM' => 'انگلیسی (دومینیکا)',
'en_ER' => 'انگلیسی (اریتره)',
+ 'en_ES' => 'انگلیسی (اسپانیا)',
'en_FI' => 'انگلیسی (فنلاند)',
'en_FJ' => 'انگلیسی (فیجی)',
'en_FK' => 'انگلیسی (جزایر فالکلند)',
'en_FM' => 'انگلیسی (میکرونزی)',
+ 'en_FR' => 'انگلیسی (فرانسه)',
'en_GB' => 'انگلیسی (بریتانیا)',
'en_GD' => 'انگلیسی (گرنادا)',
'en_GG' => 'انگلیسی (گرنزی)',
'en_GH' => 'انگلیسی (غنا)',
'en_GI' => 'انگلیسی (جبلالطارق)',
'en_GM' => 'انگلیسی (گامبیا)',
+ 'en_GS' => 'انگلیسی (جورجیای جنوبی و جزایر ساندویچ جنوبی)',
'en_GU' => 'انگلیسی (گوام)',
'en_GY' => 'انگلیسی (گویان)',
'en_HK' => 'انگلیسی (هنگکنگ، منطقهٔ ویژهٔ اداری چین)',
+ 'en_HU' => 'انگلیسی (مجارستان)',
'en_ID' => 'انگلیسی (اندونزی)',
'en_IE' => 'انگلیسی (ایرلند)',
'en_IL' => 'انگلیسی (اسرائیل)',
'en_IM' => 'انگلیسی (جزیرهٔ من)',
'en_IN' => 'انگلیسی (هند)',
'en_IO' => 'انگلیسی (قلمرو بریتانیا در اقیانوس هند)',
+ 'en_IT' => 'انگلیسی (ایتالیا)',
'en_JE' => 'انگلیسی (جرزی)',
'en_JM' => 'انگلیسی (جامائیکا)',
'en_KE' => 'انگلیسی (کنیا)',
@@ -167,15 +173,19 @@
'en_NF' => 'انگلیسی (جزیرهٔ نورفولک)',
'en_NG' => 'انگلیسی (نیجریه)',
'en_NL' => 'انگلیسی (هلند)',
+ 'en_NO' => 'انگلیسی (نروژ)',
'en_NR' => 'انگلیسی (نائورو)',
'en_NU' => 'انگلیسی (نیوئه)',
'en_NZ' => 'انگلیسی (نیوزیلند)',
'en_PG' => 'انگلیسی (پاپوا گینهٔ نو)',
'en_PH' => 'انگلیسی (فیلیپین)',
'en_PK' => 'انگلیسی (پاکستان)',
+ 'en_PL' => 'انگلیسی (لهستان)',
'en_PN' => 'انگلیسی (جزایر پیتکرن)',
'en_PR' => 'انگلیسی (پورتوریکو)',
+ 'en_PT' => 'انگلیسی (پرتغال)',
'en_PW' => 'انگلیسی (پالائو)',
+ 'en_RO' => 'انگلیسی (رومانی)',
'en_RW' => 'انگلیسی (رواندا)',
'en_SB' => 'انگلیسی (جزایر سلیمان)',
'en_SC' => 'انگلیسی (سیشل)',
@@ -184,6 +194,7 @@
'en_SG' => 'انگلیسی (سنگاپور)',
'en_SH' => 'انگلیسی (سنت هلن)',
'en_SI' => 'انگلیسی (اسلوونی)',
+ 'en_SK' => 'انگلیسی (اسلواکی)',
'en_SL' => 'انگلیسی (سیرالئون)',
'en_SS' => 'انگلیسی (سودان جنوبی)',
'en_SX' => 'انگلیسی (سنت مارتن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fa_AF.php b/src/Symfony/Component/Intl/Resources/data/locales/fa_AF.php
index e36883e079732..b3f0d5329b103 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fa_AF.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fa_AF.php
@@ -33,6 +33,7 @@
'en_CH' => 'انگلیسی (سویس)',
'en_DK' => 'انگلیسی (دنمارک)',
'en_ER' => 'انگلیسی (اریتریا)',
+ 'en_ES' => 'انگلیسی (هسپانیه)',
'en_FI' => 'انگلیسی (فنلند)',
'en_FM' => 'انگلیسی (میکرونزیا)',
'en_GD' => 'انگلیسی (گرینادا)',
@@ -48,11 +49,16 @@
'en_MY' => 'انگلیسی (مالیزیا)',
'en_NG' => 'انگلیسی (نیجریا)',
'en_NL' => 'انگلیسی (هالند)',
+ 'en_NO' => 'انگلیسی (ناروی)',
'en_NZ' => 'انگلیسی (زیلاند جدید)',
'en_PG' => 'انگلیسی (پاپوا نیو گینیا)',
+ 'en_PL' => 'انگلیسی (پولند)',
+ 'en_PT' => 'انگلیسی (پرتگال)',
+ 'en_RO' => 'انگلیسی (رومانیا)',
'en_SE' => 'انگلیسی (سویدن)',
'en_SG' => 'انگلیسی (سینگاپور)',
'en_SI' => 'انگلیسی (سلونیا)',
+ 'en_SK' => 'انگلیسی (سلواکیا)',
'en_SL' => 'انگلیسی (سیرالیون)',
'en_UG' => 'انگلیسی (یوگاندا)',
'en_VC' => 'انگلیسی (سنت وینسنت و گرنادینها)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ff.php b/src/Symfony/Component/Intl/Resources/data/locales/ff.php
index e293b629555ba..bc2daf64702c3 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ff.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ff.php
@@ -71,14 +71,17 @@
'en_CK' => 'Engeleere (Duuɗe Kuuk)',
'en_CM' => 'Engeleere (Kameruun)',
'en_CY' => 'Engeleere (Siipar)',
+ 'en_CZ' => 'Engeleere (Ndenndaandi Cek)',
'en_DE' => 'Engeleere (Almaañ)',
'en_DK' => 'Engeleere (Danmark)',
'en_DM' => 'Engeleere (Dominika)',
'en_ER' => 'Engeleere (Eriteree)',
+ 'en_ES' => 'Engeleere (Espaañ)',
'en_FI' => 'Engeleere (Fenland)',
'en_FJ' => 'Engeleere (Fijji)',
'en_FK' => 'Engeleere (Duuɗe Falkland)',
'en_FM' => 'Engeleere (Mikoronesii)',
+ 'en_FR' => 'Engeleere (Farayse)',
'en_GB' => 'Engeleere (Laamateeri Rentundi)',
'en_GD' => 'Engeleere (Garnaad)',
'en_GH' => 'Engeleere (Ganaa)',
@@ -86,10 +89,12 @@
'en_GM' => 'Engeleere (Gammbi)',
'en_GU' => 'Engeleere (Guwam)',
'en_GY' => 'Engeleere (Giyaan)',
+ 'en_HU' => 'Engeleere (Onngiri)',
'en_ID' => 'Engeleere (Enndonesii)',
'en_IE' => 'Engeleere (Irlannda)',
'en_IL' => 'Engeleere (Israa’iila)',
'en_IN' => 'Engeleere (Enndo)',
+ 'en_IT' => 'Engeleere (Itali)',
'en_JM' => 'Engeleere (Jamayka)',
'en_KE' => 'Engeleere (Keñaa)',
'en_KI' => 'Engeleere (Kiribari)',
@@ -111,15 +116,19 @@
'en_NF' => 'Engeleere (Duuɗe Norfolk)',
'en_NG' => 'Engeleere (Nijeriyaa)',
'en_NL' => 'Engeleere (Nederlannda)',
+ 'en_NO' => 'Engeleere (Norwees)',
'en_NR' => 'Engeleere (Nawuru)',
'en_NU' => 'Engeleere (Niuwe)',
'en_NZ' => 'Engeleere (Nuwel Selannda)',
'en_PG' => 'Engeleere (Papuwaa Nuwel Gine)',
'en_PH' => 'Engeleere (Filipiin)',
'en_PK' => 'Engeleere (Pakistaan)',
+ 'en_PL' => 'Engeleere (Poloñ)',
'en_PN' => 'Engeleere (Pitkern)',
'en_PR' => 'Engeleere (Porto Rikoo)',
+ 'en_PT' => 'Engeleere (Purtugaal)',
'en_PW' => 'Engeleere (Palawu)',
+ 'en_RO' => 'Engeleere (Rumanii)',
'en_RW' => 'Engeleere (Ruwanndaa)',
'en_SB' => 'Engeleere (Duuɗe Solomon)',
'en_SC' => 'Engeleere (Seysel)',
@@ -128,6 +137,7 @@
'en_SG' => 'Engeleere (Sinngapuur)',
'en_SH' => 'Engeleere (Sent Helen)',
'en_SI' => 'Engeleere (Slowenii)',
+ 'en_SK' => 'Engeleere (Slowakii)',
'en_SL' => 'Engeleere (Seraa liyon)',
'en_SZ' => 'Engeleere (Swaasilannda)',
'en_TC' => 'Engeleere (Duuɗe Turke e Keikoos)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ff_Adlm.php b/src/Symfony/Component/Intl/Resources/data/locales/ff_Adlm.php
index df93ce158e14f..f781ba89e03f4 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ff_Adlm.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ff_Adlm.php
@@ -121,28 +121,34 @@
'en_CM' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤑𞤢𞤥𞤢𞤪𞤵𞥅𞤲)',
'en_CX' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤑𞤭𞤪𞤧𞤭𞤥𞤢𞥄𞤧)',
'en_CY' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤑𞤵𞤦𞤪𞤵𞥅𞤧)',
+ 'en_CZ' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤕𞤫𞥅𞤳𞤭𞤴𞤢𞥄)',
'en_DE' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤔𞤫𞤪𞤥𞤢𞤲𞤭𞥅)',
'en_DK' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤁𞤢𞤲𞤵𞤥𞤢𞤪𞤳)',
'en_DM' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤁𞤮𞤥𞤭𞤲𞤭𞤳𞤢𞥄)',
'en_ER' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤉𞤪𞤭𞥅𞤼𞤫𞤪𞤫)',
+ 'en_ES' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤉𞤧𞤨𞤢𞤻𞤢𞥄)',
'en_FI' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤊𞤭𞤲𞤤𞤢𞤲𞤣)',
'en_FJ' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤊𞤭𞤶𞤭𞥅)',
'en_FK' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤊𞤢𞤤𞤳𞤵𞤤𞤢𞤲𞤣)',
'en_FM' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤃𞤭𞤳𞤪𞤮𞤲𞤫𞥅𞤧𞤭𞤴𞤢)',
+ 'en_FR' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤊𞤢𞤪𞤢𞤲𞤧𞤭)',
'en_GB' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤁𞤫𞤲𞤼𞤢𞤤 𞤐𞤺𞤫𞤯𞤵𞥅𞤪𞤭)',
'en_GD' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤘𞤢𞤪𞤲𞤢𞤣𞤢𞥄)',
'en_GG' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤘𞤢𞤪𞤲𞤫𞤧𞤭𞥅)',
'en_GH' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤘𞤢𞤲𞤢)',
'en_GI' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤔𞤭𞤦𞤪𞤢𞤤𞤼𞤢𞥄)',
'en_GM' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤘𞤢𞤥𞤦𞤭𞤴𞤢)',
+ 'en_GS' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤔𞤮𞤪𞤶𞤭𞤴𞤢 & 𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤐𞤢𞤲𞥆𞤢𞥄𞤲𞤺𞤫 𞤅𞤢𞤲𞤣𞤵𞤱𞤭𞥅𞤷)',
'en_GU' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤘𞤵𞤱𞤢𞥄𞤥)',
'en_GY' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤘𞤢𞤴𞤢𞤲𞤢𞥄)',
'en_HK' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤖𞤂𞤀 𞤕𞤢𞤴𞤲𞤢 𞤫 𞤖𞤮𞤲𞤺 𞤑𞤮𞤲𞤺)',
+ 'en_HU' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤖𞤢𞤲𞤺𞤢𞤪𞤭𞤴𞤢𞥄)',
'en_ID' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤋𞤲𞤣𞤮𞤲𞤭𞥅𞤧𞤴𞤢)',
'en_IE' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤋𞤪𞤤𞤢𞤲𞤣)',
'en_IL' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤋𞤧𞤪𞤢𞥄𞤴𞤭𞥅𞤤)',
'en_IM' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤃𞤫𞥅𞤲)',
'en_IN' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤋𞤲𞤣𞤭𞤴𞤢)',
+ 'en_IT' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤋𞤼𞤢𞤤𞤭𞥅)',
'en_JE' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤔𞤫𞤪𞤧𞤭𞥅)',
'en_JM' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤔𞤢𞤥𞤢𞤴𞤳𞤢𞥄)',
'en_KE' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤑𞤫𞤲𞤭𞤴𞤢𞥄)',
@@ -166,15 +172,19 @@
'en_NF' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤐𞤮𞤪𞤬𞤮𞤤𞤳𞤵)',
'en_NG' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤐𞤢𞤶𞤫𞤪𞤭𞤴𞤢𞥄)',
'en_NL' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤖𞤮𞤤𞤢𞤲𞤣𞤭𞤴𞤢𞥄)',
+ 'en_NO' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤐𞤮𞤪𞤺𞤫𞤴𞤢𞥄)',
'en_NR' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤐𞤢𞤱𞤪𞤵)',
'en_NU' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤐𞤵𞥅𞤱𞤭)',
'en_NZ' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤐𞤫𞤱 𞤟𞤫𞤤𞤢𞤲𞤣)',
'en_PG' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤆𞤢𞤨𞤵𞤱𞤢 𞤘𞤭𞤲𞤫 𞤖𞤫𞤧𞤮)',
'en_PH' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤊𞤭𞤤𞤭𞤨𞤭𞥅𞤲)',
'en_PK' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤆𞤢𞤳𞤭𞤧𞤼𞤢𞥄𞤲)',
+ 'en_PL' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤆𞤮𞤤𞤢𞤲𞤣)',
'en_PN' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤆𞤭𞤼𞤳𞤭𞥅𞤪𞤲𞤵)',
'en_PR' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤆𞤮𞤪𞤼𞤮 𞤈𞤭𞤳𞤮𞥅)',
+ 'en_PT' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤆𞤮𞥅𞤪𞤼𞤵𞤺𞤢𞥄𞤤)',
'en_PW' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤆𞤢𞤤𞤢𞤱)',
+ 'en_RO' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤈𞤵𞤥𞤢𞥄𞤲𞤭𞤴𞤢)',
'en_RW' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤈𞤵𞤱𞤢𞤲𞤣𞤢𞥄)',
'en_SB' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤕𞤵𞤪𞤭𞥅𞤶𞤫 𞤅𞤵𞤤𞤢𞤴𞤥𞤢𞥄𞤲)',
'en_SC' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤫𞤴𞤭𞤧𞤫𞤤)',
@@ -183,6 +193,7 @@
'en_SG' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤭𞤲𞤺𞤢𞤨𞤵𞥅𞤪)',
'en_SH' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤫𞤲-𞤖𞤫𞤤𞤫𞤲𞤢𞥄)',
'en_SI' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤵𞤤𞤮𞤾𞤫𞤲𞤭𞤴𞤢𞥄)',
+ 'en_SK' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤵𞤤𞤮𞤾𞤢𞥄𞤳𞤭𞤴𞤢)',
'en_SL' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤢𞤪𞤢𞤤𞤮𞤲)',
'en_SS' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤵𞤣𞤢𞥄𞤲 𞤂𞤫𞤧𞤤𞤫𞤴𞤪𞤭)',
'en_SX' => '𞤉𞤲𞤺𞤭𞤤𞤫𞥅𞤪𞤫 (𞤅𞤫𞤲𞤼𞤵 𞤃𞤢𞥄𞤪𞤼𞤫𞤲)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fi.php b/src/Symfony/Component/Intl/Resources/data/locales/fi.php
index 335dea38d3d16..87edf319575c4 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fi.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fi.php
@@ -121,29 +121,35 @@
'en_CM' => 'englanti (Kamerun)',
'en_CX' => 'englanti (Joulusaari)',
'en_CY' => 'englanti (Kypros)',
+ 'en_CZ' => 'englanti (Tšekki)',
'en_DE' => 'englanti (Saksa)',
'en_DK' => 'englanti (Tanska)',
'en_DM' => 'englanti (Dominica)',
'en_ER' => 'englanti (Eritrea)',
+ 'en_ES' => 'englanti (Espanja)',
'en_FI' => 'englanti (Suomi)',
'en_FJ' => 'englanti (Fidži)',
'en_FK' => 'englanti (Falklandinsaaret)',
'en_FM' => 'englanti (Mikronesia)',
+ 'en_FR' => 'englanti (Ranska)',
'en_GB' => 'englanti (Iso-Britannia)',
'en_GD' => 'englanti (Grenada)',
'en_GG' => 'englanti (Guernsey)',
'en_GH' => 'englanti (Ghana)',
'en_GI' => 'englanti (Gibraltar)',
'en_GM' => 'englanti (Gambia)',
+ 'en_GS' => 'englanti (Etelä-Georgia ja Eteläiset Sandwichinsaaret)',
'en_GU' => 'englanti (Guam)',
'en_GY' => 'englanti (Guyana)',
'en_HK' => 'englanti (Hongkong – Kiinan erityishallintoalue)',
+ 'en_HU' => 'englanti (Unkari)',
'en_ID' => 'englanti (Indonesia)',
'en_IE' => 'englanti (Irlanti)',
'en_IL' => 'englanti (Israel)',
'en_IM' => 'englanti (Mansaari)',
'en_IN' => 'englanti (Intia)',
'en_IO' => 'englanti (Brittiläinen Intian valtameren alue)',
+ 'en_IT' => 'englanti (Italia)',
'en_JE' => 'englanti (Jersey)',
'en_JM' => 'englanti (Jamaika)',
'en_KE' => 'englanti (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'englanti (Norfolkinsaari)',
'en_NG' => 'englanti (Nigeria)',
'en_NL' => 'englanti (Alankomaat)',
+ 'en_NO' => 'englanti (Norja)',
'en_NR' => 'englanti (Nauru)',
'en_NU' => 'englanti (Niue)',
'en_NZ' => 'englanti (Uusi-Seelanti)',
'en_PG' => 'englanti (Papua-Uusi-Guinea)',
'en_PH' => 'englanti (Filippiinit)',
'en_PK' => 'englanti (Pakistan)',
+ 'en_PL' => 'englanti (Puola)',
'en_PN' => 'englanti (Pitcairn)',
'en_PR' => 'englanti (Puerto Rico)',
+ 'en_PT' => 'englanti (Portugali)',
'en_PW' => 'englanti (Palau)',
+ 'en_RO' => 'englanti (Romania)',
'en_RW' => 'englanti (Ruanda)',
'en_SB' => 'englanti (Salomonsaaret)',
'en_SC' => 'englanti (Seychellit)',
@@ -184,6 +194,7 @@
'en_SG' => 'englanti (Singapore)',
'en_SH' => 'englanti (Saint Helena)',
'en_SI' => 'englanti (Slovenia)',
+ 'en_SK' => 'englanti (Slovakia)',
'en_SL' => 'englanti (Sierra Leone)',
'en_SS' => 'englanti (Etelä-Sudan)',
'en_SX' => 'englanti (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fo.php b/src/Symfony/Component/Intl/Resources/data/locales/fo.php
index 03274cf697a83..46296ee0138b5 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fo.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fo.php
@@ -121,29 +121,35 @@
'en_CM' => 'enskt (Kamerun)',
'en_CX' => 'enskt (Jólaoyggjin)',
'en_CY' => 'enskt (Kýpros)',
+ 'en_CZ' => 'enskt (Kekkia)',
'en_DE' => 'enskt (Týskland)',
'en_DK' => 'enskt (Danmark)',
'en_DM' => 'enskt (Dominika)',
'en_ER' => 'enskt (Eritrea)',
+ 'en_ES' => 'enskt (Spania)',
'en_FI' => 'enskt (Finnland)',
'en_FJ' => 'enskt (Fiji)',
'en_FK' => 'enskt (Falklandsoyggjar)',
'en_FM' => 'enskt (Mikronesiasamveldið)',
+ 'en_FR' => 'enskt (Frakland)',
'en_GB' => 'enskt (Stórabretland)',
'en_GD' => 'enskt (Grenada)',
'en_GG' => 'enskt (Guernsey)',
'en_GH' => 'enskt (Gana)',
'en_GI' => 'enskt (Gibraltar)',
'en_GM' => 'enskt (Gambia)',
+ 'en_GS' => 'enskt (Suðurgeorgia og Suðursandwichoyggjar)',
'en_GU' => 'enskt (Guam)',
'en_GY' => 'enskt (Gujana)',
'en_HK' => 'enskt (Hong Kong SAR Kina)',
+ 'en_HU' => 'enskt (Ungarn)',
'en_ID' => 'enskt (Indonesia)',
'en_IE' => 'enskt (Írland)',
'en_IL' => 'enskt (Ísrael)',
'en_IM' => 'enskt (Isle of Man)',
'en_IN' => 'enskt (India)',
'en_IO' => 'enskt (Stóra Bretlands Indiahavoyggjar)',
+ 'en_IT' => 'enskt (Italia)',
'en_JE' => 'enskt (Jersey)',
'en_JM' => 'enskt (Jamaika)',
'en_KE' => 'enskt (Kenja)',
@@ -167,15 +173,19 @@
'en_NF' => 'enskt (Norfolksoyggj)',
'en_NG' => 'enskt (Nigeria)',
'en_NL' => 'enskt (Niðurlond)',
+ 'en_NO' => 'enskt (Noreg)',
'en_NR' => 'enskt (Nauru)',
'en_NU' => 'enskt (Niue)',
'en_NZ' => 'enskt (Nýsæland)',
'en_PG' => 'enskt (Papua Nýguinea)',
'en_PH' => 'enskt (Filipsoyggjar)',
'en_PK' => 'enskt (Pakistan)',
+ 'en_PL' => 'enskt (Pólland)',
'en_PN' => 'enskt (Pitcairnoyggjar)',
'en_PR' => 'enskt (Puerto Riko)',
+ 'en_PT' => 'enskt (Portugal)',
'en_PW' => 'enskt (Palau)',
+ 'en_RO' => 'enskt (Rumenia)',
'en_RW' => 'enskt (Ruanda)',
'en_SB' => 'enskt (Salomonoyggjar)',
'en_SC' => 'enskt (Seyskelloyggjar)',
@@ -184,6 +194,7 @@
'en_SG' => 'enskt (Singapor)',
'en_SH' => 'enskt (St. Helena)',
'en_SI' => 'enskt (Slovenia)',
+ 'en_SK' => 'enskt (Slovakia)',
'en_SL' => 'enskt (Sierra Leona)',
'en_SS' => 'enskt (Suðursudan)',
'en_SX' => 'enskt (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fr.php b/src/Symfony/Component/Intl/Resources/data/locales/fr.php
index 4442ae3ed0843..3fcf77327defc 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fr.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fr.php
@@ -121,29 +121,35 @@
'en_CM' => 'anglais (Cameroun)',
'en_CX' => 'anglais (Île Christmas)',
'en_CY' => 'anglais (Chypre)',
+ 'en_CZ' => 'anglais (Tchéquie)',
'en_DE' => 'anglais (Allemagne)',
'en_DK' => 'anglais (Danemark)',
'en_DM' => 'anglais (Dominique)',
'en_ER' => 'anglais (Érythrée)',
+ 'en_ES' => 'anglais (Espagne)',
'en_FI' => 'anglais (Finlande)',
'en_FJ' => 'anglais (Fidji)',
'en_FK' => 'anglais (Îles Malouines)',
'en_FM' => 'anglais (Micronésie)',
+ 'en_FR' => 'anglais (France)',
'en_GB' => 'anglais (Royaume-Uni)',
'en_GD' => 'anglais (Grenade)',
'en_GG' => 'anglais (Guernesey)',
'en_GH' => 'anglais (Ghana)',
'en_GI' => 'anglais (Gibraltar)',
'en_GM' => 'anglais (Gambie)',
+ 'en_GS' => 'anglais (Géorgie du Sud-et-les Îles Sandwich du Sud)',
'en_GU' => 'anglais (Guam)',
'en_GY' => 'anglais (Guyana)',
'en_HK' => 'anglais (R.A.S. chinoise de Hong Kong)',
+ 'en_HU' => 'anglais (Hongrie)',
'en_ID' => 'anglais (Indonésie)',
'en_IE' => 'anglais (Irlande)',
'en_IL' => 'anglais (Israël)',
'en_IM' => 'anglais (Île de Man)',
'en_IN' => 'anglais (Inde)',
'en_IO' => 'anglais (Territoire britannique de l’océan Indien)',
+ 'en_IT' => 'anglais (Italie)',
'en_JE' => 'anglais (Jersey)',
'en_JM' => 'anglais (Jamaïque)',
'en_KE' => 'anglais (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'anglais (Île Norfolk)',
'en_NG' => 'anglais (Nigeria)',
'en_NL' => 'anglais (Pays-Bas)',
+ 'en_NO' => 'anglais (Norvège)',
'en_NR' => 'anglais (Nauru)',
'en_NU' => 'anglais (Niue)',
'en_NZ' => 'anglais (Nouvelle-Zélande)',
'en_PG' => 'anglais (Papouasie-Nouvelle-Guinée)',
'en_PH' => 'anglais (Philippines)',
'en_PK' => 'anglais (Pakistan)',
+ 'en_PL' => 'anglais (Pologne)',
'en_PN' => 'anglais (Îles Pitcairn)',
'en_PR' => 'anglais (Porto Rico)',
+ 'en_PT' => 'anglais (Portugal)',
'en_PW' => 'anglais (Palaos)',
+ 'en_RO' => 'anglais (Roumanie)',
'en_RW' => 'anglais (Rwanda)',
'en_SB' => 'anglais (Îles Salomon)',
'en_SC' => 'anglais (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'anglais (Singapour)',
'en_SH' => 'anglais (Sainte-Hélène)',
'en_SI' => 'anglais (Slovénie)',
+ 'en_SK' => 'anglais (Slovaquie)',
'en_SL' => 'anglais (Sierra Leone)',
'en_SS' => 'anglais (Soudan du Sud)',
'en_SX' => 'anglais (Saint-Martin [partie néerlandaise])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fr_BE.php b/src/Symfony/Component/Intl/Resources/data/locales/fr_BE.php
index 3908ce29760c2..089c0ef10a00f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fr_BE.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fr_BE.php
@@ -2,6 +2,7 @@
return [
'Names' => [
+ 'en_GS' => 'anglais (Îles Géorgie du Sud et Sandwich du Sud)',
'gu' => 'gujarati',
'gu_IN' => 'gujarati (Inde)',
],
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/fy.php b/src/Symfony/Component/Intl/Resources/data/locales/fy.php
index e6e7cb12ce076..51c66b10e6c2b 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/fy.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/fy.php
@@ -121,28 +121,34 @@
'en_CM' => 'Ingelsk (Kameroen)',
'en_CX' => 'Ingelsk (Krysteilan)',
'en_CY' => 'Ingelsk (Syprus)',
+ 'en_CZ' => 'Ingelsk (Tsjechje)',
'en_DE' => 'Ingelsk (Dútslân)',
'en_DK' => 'Ingelsk (Denemarken)',
'en_DM' => 'Ingelsk (Dominika)',
'en_ER' => 'Ingelsk (Eritrea)',
+ 'en_ES' => 'Ingelsk (Spanje)',
'en_FI' => 'Ingelsk (Finlân)',
'en_FJ' => 'Ingelsk (Fiji)',
'en_FK' => 'Ingelsk (Falklâneilannen)',
'en_FM' => 'Ingelsk (Micronesië)',
+ 'en_FR' => 'Ingelsk (Frankrijk)',
'en_GB' => 'Ingelsk (Verenigd Koninkrijk)',
'en_GD' => 'Ingelsk (Grenada)',
'en_GG' => 'Ingelsk (Guernsey)',
'en_GH' => 'Ingelsk (Ghana)',
'en_GI' => 'Ingelsk (Gibraltar)',
'en_GM' => 'Ingelsk (Gambia)',
+ 'en_GS' => 'Ingelsk (Sûd-Georgia en Sûdlike Sandwicheilannen)',
'en_GU' => 'Ingelsk (Guam)',
'en_GY' => 'Ingelsk (Guyana)',
'en_HK' => 'Ingelsk (Hongkong SAR van Sina)',
+ 'en_HU' => 'Ingelsk (Hongarije)',
'en_ID' => 'Ingelsk (Yndonesië)',
'en_IE' => 'Ingelsk (Ierlân)',
'en_IL' => 'Ingelsk (Israël)',
'en_IM' => 'Ingelsk (Isle of Man)',
'en_IN' => 'Ingelsk (India)',
+ 'en_IT' => 'Ingelsk (Italië)',
'en_JE' => 'Ingelsk (Jersey)',
'en_JM' => 'Ingelsk (Jamaica)',
'en_KE' => 'Ingelsk (Kenia)',
@@ -166,15 +172,19 @@
'en_NF' => 'Ingelsk (Norfolkeilân)',
'en_NG' => 'Ingelsk (Nigeria)',
'en_NL' => 'Ingelsk (Nederlân)',
+ 'en_NO' => 'Ingelsk (Noarwegen)',
'en_NR' => 'Ingelsk (Nauru)',
'en_NU' => 'Ingelsk (Niue)',
'en_NZ' => 'Ingelsk (Nij-Seelân)',
'en_PG' => 'Ingelsk (Papoea-Nij-Guinea)',
'en_PH' => 'Ingelsk (Filipijnen)',
'en_PK' => 'Ingelsk (Pakistan)',
+ 'en_PL' => 'Ingelsk (Polen)',
'en_PN' => 'Ingelsk (Pitcairneilannen)',
'en_PR' => 'Ingelsk (Puerto Rico)',
+ 'en_PT' => 'Ingelsk (Portugal)',
'en_PW' => 'Ingelsk (Palau)',
+ 'en_RO' => 'Ingelsk (Roemenië)',
'en_RW' => 'Ingelsk (Rwanda)',
'en_SB' => 'Ingelsk (Salomonseilannen)',
'en_SC' => 'Ingelsk (Seychellen)',
@@ -183,6 +193,7 @@
'en_SG' => 'Ingelsk (Singapore)',
'en_SH' => 'Ingelsk (Sint-Helena)',
'en_SI' => 'Ingelsk (Slovenië)',
+ 'en_SK' => 'Ingelsk (Slowakije)',
'en_SL' => 'Ingelsk (Sierra Leone)',
'en_SS' => 'Ingelsk (Sûd-Soedan)',
'en_SX' => 'Ingelsk (Sint-Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ga.php b/src/Symfony/Component/Intl/Resources/data/locales/ga.php
index c5420242efbea..bbf1b4ea482cf 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ga.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ga.php
@@ -121,29 +121,35 @@
'en_CM' => 'Béarla (Camarún)',
'en_CX' => 'Béarla (Oileán na Nollag)',
'en_CY' => 'Béarla (an Chipir)',
+ 'en_CZ' => 'Béarla (an tSeicia)',
'en_DE' => 'Béarla (an Ghearmáin)',
'en_DK' => 'Béarla (an Danmhairg)',
'en_DM' => 'Béarla (Doiminice)',
'en_ER' => 'Béarla (an Eiritré)',
+ 'en_ES' => 'Béarla (an Spáinn)',
'en_FI' => 'Béarla (an Fhionlainn)',
'en_FJ' => 'Béarla (Fidsí)',
'en_FK' => 'Béarla (Oileáin Fháclainne)',
'en_FM' => 'Béarla (an Mhicrinéis)',
+ 'en_FR' => 'Béarla (an Fhrainc)',
'en_GB' => 'Béarla (an Ríocht Aontaithe)',
'en_GD' => 'Béarla (Greanáda)',
'en_GG' => 'Béarla (Geansaí)',
'en_GH' => 'Béarla (Gána)',
'en_GI' => 'Béarla (Giobráltar)',
'en_GM' => 'Béarla (An Ghaimbia)',
+ 'en_GS' => 'Béarla (An tSeoirsia Theas agus Oileáin Sandwich Theas)',
'en_GU' => 'Béarla (Guam)',
10000
'en_GY' => 'Béarla (An Ghuáin)',
'en_HK' => 'Béarla (Sainréigiún Riaracháin Hong Cong, Daonphoblacht na Síne)',
+ 'en_HU' => 'Béarla (an Ungáir)',
'en_ID' => 'Béarla (an Indinéis)',
'en_IE' => 'Béarla (Éire)',
'en_IL' => 'Béarla (Iosrael)',
'en_IM' => 'Béarla (Oileán Mhanann)',
'en_IN' => 'Béarla (an India)',
'en_IO' => 'Béarla (Críoch Aigéan Indiach na Breataine)',
+ 'en_IT' => 'Béarla (an Iodáil)',
'en_JE' => 'Béarla (Geirsí)',
'en_JM' => 'Béarla (Iamáice)',
'en_KE' => 'Béarla (an Chéinia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Béarla (Oileán Norfolk)',
'en_NG' => 'Béarla (An Nigéir)',
'en_NL' => 'Béarla (an Ísiltír)',
+ 'en_NO' => 'Béarla (an Iorua)',
'en_NR' => 'Béarla (Nárú)',
'en_NU' => 'Béarla (Niue)',
'en_NZ' => 'Béarla (an Nua-Shéalainn)',
'en_PG' => 'Béarla (Nua-Ghuine Phapua)',
'en_PH' => 'Béarla (Na hOileáin Fhilipíneacha)',
'en_PK' => 'Béarla (an Phacastáin)',
+ 'en_PL' => 'Béarla (an Pholainn)',
'en_PN' => 'Béarla (Oileáin Pitcairn)',
'en_PR' => 'Béarla (Pórtó Ríce)',
+ 'en_PT' => 'Béarla (an Phortaingéil)',
'en_PW' => 'Béarla (Oileáin Palau)',
+ 'en_RO' => 'Béarla (an Rómáin)',
'en_RW' => 'Béarla (Ruanda)',
'en_SB' => 'Béarla (Oileáin Sholaimh)',
'en_SC' => 'Béarla (na Séiséil)',
@@ -184,6 +194,7 @@
'en_SG' => 'Béarla (Singeapór)',
'en_SH' => 'Béarla (San Héilin)',
'en_SI' => 'Béarla (an tSlóivéin)',
+ 'en_SK' => 'Béarla (an tSlóvaic)',
'en_SL' => 'Béarla (Siarra Leon)',
'en_SS' => 'Béarla (an tSúdáin Theas)',
'en_SX' => 'Béarla (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/gd.php b/src/Symfony/Component/Intl/Resources/data/locales/gd.php
index 5e463796c2b93..af5ddafb21e41 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/gd.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/gd.php
@@ -121,29 +121,35 @@
'en_CM' => 'Beurla (Camarun)',
'en_CX' => 'Beurla (Eilean na Nollaig)',
'en_CY' => 'Beurla (Cìopras)',
+ 'en_CZ' => 'Beurla (An t-Seic)',
'en_DE' => 'Beurla (A’ Ghearmailt)',
'en_DK' => 'Beurla (An Danmhairg)',
'en_DM' => 'Beurla (Doiminicea)',
'en_ER' => 'Beurla (Eartra)',
+ 'en_ES' => 'Beurla (An Spàinnt)',
'en_FI' => 'Beurla (An Fhionnlann)',
'en_FJ' => 'Beurla (Fìdi)',
'en_FK' => 'Beurla (Na h-Eileanan Fàclannach)',
'en_FM' => 'Beurla (Na Meanbh-eileanan)',
+ 'en_FR' => 'Beurla (An Fhraing)',
'en_GB' => 'Beurla (An Rìoghachd Aonaichte)',
'en_GD' => 'Beurla (Greanàda)',
'en_GG' => 'Beurla (Geàrnsaidh)',
'en_GH' => 'Beurla (Gàna)',
'en_GI' => 'Beurla (Diobraltar)',
'en_GM' => 'Beurla (A’ Ghaimbia)',
+ 'en_GS' => 'Beurla (Seòirsea a Deas is na h-Eileanan Sandwich a Deas)',
'en_GU' => 'Beurla (Guam)',
'en_GY' => 'Beurla (Guidheàna)',
'en_HK' => 'Beurla (Hong Kong SAR na Sìne)',
+ 'en_HU' => 'Beurla (An Ungair)',
'en_ID' => 'Beurla (Na h-Innd-innse)',
'en_IE' => 'Beurla (Èirinn)',
'en_IL' => 'Beurla (Iosrael)',
'en_IM' => 'Beurla (Eilean Mhanainn)',
'en_IN' => 'Beurla (Na h-Innseachan)',
'en_IO' => 'Beurla (Ranntair Breatannach Cuan nan Innseachan)',
+ 'en_IT' => 'Beurla (An Eadailt)',
'en_JE' => 'Beurla (Deàrsaidh)',
'en_JM' => 'Beurla (Diameuga)',
'en_KE' => 'Beurla (Ceinia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Beurla (Eilean Norfolk)',
'en_NG' => 'Beurla (Nigèiria)',
'en_NL' => 'Beurla (Na Tìrean Ìsle)',
+ 'en_NO' => 'Beurla (Nirribhidh)',
'en_NR' => 'Beurla (Nabhru)',
'en_NU' => 'Beurla (Niue)',
'en_NZ' => 'Beurla (Sealainn Nuadh)',
'en_PG' => 'Beurla (Gini Nuadh Phaputhach)',
'en_PH' => 'Beurla (Na h-Eileanan Filipineach)',
'en_PK' => 'Beurla (Pagastàn)',
+ 'en_PL' => 'Beurla (A’ Phòlainn)',
'en_PN' => 'Beurla (Eileanan Pheit a’ Chàirn)',
'en_PR' => 'Beurla (Porto Rìceo)',
+ 'en_PT' => 'Beurla (A’ Phortagail)',
'en_PW' => 'Beurla (Palabh)',
+ 'en_RO' => 'Beurla (Romàinia)',
'en_RW' => 'Beurla (Rubhanda)',
'en_SB' => 'Beurla (Eileanan Sholaimh)',
'en_SC' => 'Beurla (Na h-Eileanan Sheiseall)',
@@ -184,6 +194,7 @@
'en_SG' => 'Beurla (Singeapòr)',
'en_SH' => 'Beurla (Eilean Naomh Eilidh)',
'en_SI' => 'Beurla (An t-Slòbhain)',
+ 'en_SK' => 'Beurla (An t-Slòbhac)',
'en_SL' => 'Beurla (Siarra Leòmhann)',
'en_SS' => 'Beurla (Sudàn a Deas)',
'en_SX' => 'Beurla (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/gl.php b/src/Symfony/Component/Intl/Resources/data/locales/gl.php
index aa010298e4359..456dc622e3fa2 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/gl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/gl.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglés (Camerún)',
'en_CX' => 'inglés (Illa Christmas)',
'en_CY' => 'inglés (Chipre)',
+ 'en_CZ' => 'inglés (Chequia)',
'en_DE' => 'inglés (Alemaña)',
'en_DK' => 'inglés (Dinamarca)',
'en_DM' => 'inglés (Dominica)',
'en_ER' => 'inglés (Eritrea)',
+ 'en_ES' => 'inglés (España)',
'en_FI' => 'inglés (Finlandia)',
'en_FJ' => 'inglés (Fixi)',
'en_FK' => 'inglés (Illas Malvinas)',
'en_FM' => 'inglés (Micronesia)',
+ 'en_FR' => 'inglés (Francia)',
'en_GB' => 'inglés (Reino Unido)',
'en_GD' => 'inglés (Granada)',
'en_GG' => 'inglés (Guernsey)',
'en_GH' => 'inglés (Ghana)',
'en_GI' => 'inglés (Xibraltar)',
'en_GM' => 'inglés (Gambia)',
+ 'en_GS' => 'inglés (Illas Xeorxia do Sur e Sandwich do Sur)',
'en_GU' => 'inglés (Guam)',
'en_GY' => 'inglés (Güiana)',
'en_HK' => 'inglés (Hong Kong RAE da China)',
+ 'en_HU' => 'inglés (Hungría)',
'en_ID' => 'inglés (Indonesia)',
'en_IE' => 'inglés (Irlanda)',
'en_IL' => 'inglés (Israel)',
'en_IM' => 'inglés (Illa de Man)',
'en_IN' => 'inglés (India)',
'en_IO' => 'inglés (Territorio Británico do Océano Índico)',
+ 'en_IT' => 'inglés (Italia)',
'en_JE' => 'inglés (Jersey)',
'en_JM' => 'inglés (Xamaica)',
'en_KE' => 'inglés (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglés (Illa Norfolk)',
'en_NG' => 'inglés (Nixeria)',
'en_NL' => 'inglés (Países Baixos)',
+ 'en_NO' => 'inglés (Noruega)',
'en_NR' => 'inglés (Nauru)',
'en_NU' => 'inglés (Niue)',
'en_NZ' => 'inglés (Nova Zelandia)',
'en_PG' => 'inglés (Papúa-Nova Guinea)',
'en_PH' => 'inglés (Filipinas)',
'en_PK' => 'inglés (Paquistán)',
+ 'en_PL' => 'inglés (Polonia)',
'en_PN' => 'inglés (Illas Pitcairn)',
'en_PR' => 'inglés (Porto Rico)',
+ 'en_PT' => 'inglés (Portugal)',
'en_PW' => 'inglés (Palau)',
+ 'en_RO' => 'inglés (Romanía)',
'en_RW' => 'inglés (Ruanda)',
'en_SB' => 'inglés (Illas Salomón)',
'en_SC' => 'inglés (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglés (Singapur)',
'en_SH' => 'inglés (Santa Helena)',
'en_SI' => 'inglés (Eslovenia)',
+ 'en_SK' => 'inglés (Eslovaquia)',
'en_SL' => 'inglés (Serra Leoa)',
'en_SS' => 'inglés (Sudán do Sur)',
'en_SX' => 'inglés (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/gu.php b/src/Symfony/Component/Intl/Resources/data/locales/gu.php
index 2735a315fe2a7..31f440762a957 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/gu.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/gu.php
@@ -121,29 +121,35 @@
'en_CM' => 'અંગ્રેજી (કૅમરૂન)',
'en_CX' => 'અંગ્રેજી (ક્રિસમસ આઇલેન્ડ)',
'en_CY' => 'અંગ્રેજી (સાયપ્રસ)',
+ 'en_CZ' => 'અંગ્રેજી (ચેકીયા)',
'en_DE' => 'અંગ્રેજી (જર્મની)',
'en_DK' => 'અંગ્રેજી (ડેનમાર્ક)',
'en_DM' => 'અંગ્રેજી (ડોમિનિકા)',
'en_ER' => 'અંગ્રેજી (એરિટ્રિયા)',
+ 'en_ES' => 'અંગ્રેજી (સ્પેન)',
'en_FI' => 'અંગ્રેજી (ફિનલેન્ડ)',
'en_FJ' => 'અંગ્રેજી (ફીજી)',
'en_FK' => 'અંગ્રેજી (ફૉકલેન્ડ આઇલેન્ડ્સ)',
'en_FM' => 'અંગ્રેજી (માઇક્રોનેશિયા)',
+ 'en_FR' => 'અંગ્રેજી (ફ્રાંસ)',
'en_GB' => 'અંગ્રેજી (યુનાઇટેડ કિંગડમ)',
'en_GD' => 'અંગ્રેજી (ગ્રેનેડા)',
'en_GG' => 'અંગ્રેજી (ગ્વેર્નસે)',
'en_GH' => 'અંગ્રેજી (ઘાના)',
'en_GI' => 'અંગ્રેજી (જીબ્રાલ્ટર)',
'en_GM' => 'અંગ્રેજી (ગેમ્બિયા)',
+ 'en_GS' => 'અંગ્રેજી (દક્ષિણ જ્યોર્જિયા અને દક્ષિણ સેન્ડવિચ આઇલેન્ડ્સ)',
'en_GU' => 'અંગ્રેજી (ગ્વામ)',
'en_GY' => 'અંગ્રેજી (ગયાના)',
'en_HK' => 'અંગ્રેજી (હોંગકોંગ SAR ચીન)',
+ 'en_HU' => 'અંગ્રેજી (હંગેરી)',
'en_ID' => 'અંગ્રેજી (ઇન્ડોનેશિયા)',
'en_IE' => 'અંગ્રેજી (આયર્લેન્ડ)',
'en_IL' => 'અંગ્રેજી (ઇઝરાઇલ)',
'en_IM' => 'અંગ્રેજી (આઇલ ઑફ મેન)',
'en_IN' => 'અંગ્રેજી (ભારત)',
'en_IO' => 'અંગ્રેજી (બ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરી)',
+ 'en_IT' => 'અંગ્રેજી (ઇટાલી)',
'en_JE' => 'અંગ્રેજી (જર્સી)',
'en_JM' => 'અંગ્રેજી (જમૈકા)',
'en_KE' => 'અંગ્રેજી (કેન્યા)',
@@ -167,15 +173,19 @@
'en_NF' => 'અંગ્રેજી (નોરફોક આઇલેન્ડ્સ)',
'en_NG' => 'અંગ્રેજી (નાઇજેરિયા)',
'en_NL' => 'અંગ્રેજી (નેધરલેન્ડ્સ)',
+ 'en_NO' => 'અંગ્રેજી (નૉર્વે)',
'en_NR' => 'અંગ્રેજી (નૌરુ)',
'en_NU' => 'અંગ્રેજી (નીયુ)',
'en_NZ' => 'અંગ્રેજી (ન્યુઝીલેન્ડ)',
'en_PG' => 'અંગ્રેજી (પાપુઆ ન્યૂ ગિની)',
'en_PH' => 'અંગ્રેજી (ફિલિપિન્સ)',
'en_PK' => 'અંગ્રેજી (પાકિસ્તાન)',
+ 'en_PL' => 'અંગ્રેજી (પોલેંડ)',
'en_PN' => 'અંગ્રેજી (પીટકૈર્ન આઇલેન્ડ્સ)',
'en_PR' => 'અંગ્રેજી (પ્યુઅર્ટો રિકો)',
+ 'en_PT' => 'અંગ્રેજી (પોર્ટુગલ)',
'en_PW' => 'અંગ્રેજી (પલાઉ)',
+ 'en_RO' => 'અંગ્રેજી (રોમાનિયા)',
'en_RW' => 'અંગ્રેજી (રવાંડા)',
'en_SB' => 'અંગ્રેજી (સોલોમન આઇલેન્ડ્સ)',
'en_SC' => 'અંગ્રેજી (સેશેલ્સ)',
@@ -184,6 +194,7 @@
'en_SG' => 'અંગ્રેજી (સિંગાપુર)',
'en_SH' => 'અંગ્રેજી (સેંટ હેલેના)',
'en_SI' => 'અંગ્રેજી (સ્લોવેનિયા)',
+ 'en_SK' => 'અંગ્રેજી (સ્લોવેકિયા)',
'en_SL' => 'અંગ્રેજી (સીએરા લેઓન)',
'en_SS' => 'અંગ્રેજી (દક્ષિણ સુદાન)',
'en_SX' => 'અંગ્રેજી (સિંટ માર્ટેન)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ha.php b/src/Symfony/Component/Intl/Resources/data/locales/ha.php
index f0d2c38044de0..6ace7106d9888 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ha.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ha.php
@@ -121,29 +121,35 @@
'en_CM' => 'Turanci (Kamaru)',
'en_CX' => 'Turanci (Tsibirin Kirsmati)',
'en_CY' => 'Turanci (Saifurus)',
+ 'en_CZ' => 'Turanci (Czechia)',
'en_DE' => 'Turanci (Jamus)',
'en_DK' => 'Turanci (Danmark)',
'en_DM' => 'Turanci (Dominika)',
'en_ER' => 'Turanci (Eritireya)',
+ 'en_ES' => 'Turanci (Sipen)',
'en_FI' => 'Turanci (Finlan)',
'en_FJ' => 'Turanci (Fiji)',
'en_FK' => 'Turanci (Tsibiran Falkilan)',
'en_FM' => 'Turanci (Mikuronesiya)',
+ 'en_FR' => 'Turanci (Faransa)',
'en_GB' => 'Turanci (Biritaniya)',
'en_GD' => 'Turanci (Girnada)',
'en_GG' => 'Turanci (Yankin Guernsey)',
'en_GH' => 'Turanci (Gana)',
'en_GI' => 'Turanci (Jibaraltar)',
'en_GM' => 'Turanci (Gambiya)',
+ 'en_GS' => 'Turanci (Kudancin Geogia da Kudancin Tsibirin Sandiwic)',
'en_GU' => 'Turanci (Guam)',
'en_GY' => 'Turanci (Guyana)',
'en_HK' => 'Turanci (Babban Yankin Mulkin Hong Kong na Ƙasar Sin)',
+ 'en_HU' => 'Turanci (Hungari)',
'en_ID' => 'Turanci (Indunusiya)',
'en_IE' => 'Turanci (Ayalan)',
'en_IL' => 'Turanci (Israʼila)',
'en_IM' => 'Turanci (Isle of Man)',
'en_IN' => 'Turanci (Indiya)',
'en_IO' => 'Turanci (Yankin Birtaniya Na Tekun Indiya)',
+ 'en_IT' => 'Turanci (Italiya)',
'en_JE' => 'Turanci (Kasar Jersey)',
'en_JM' => 'Turanci (Jamaika)',
'en_KE' => 'Turanci (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Turanci (Tsibirin Narfalk)',
'en_NG' => 'Turanci (Nijeriya)',
'en_NL' => 'Turanci (Holan)',
+ 'en_NO' => 'Turanci (Norwe)',
'en_NR' => 'Turanci (Nauru)',
'en_NU' => 'Turanci (Niue)',
'en_NZ' => 'Turanci (Nuzilan)',
'en_PG' => 'Turanci (Papuwa Nugini)',
'en_PH' => 'Turanci (Filipin)',
'en_PK' => 'Turanci (Pakistan)',
+ 'en_PL' => 'Turanci (Polan)',
'en_PN' => 'Turanci (Tsibiran Pitcairn)',
'en_PR' => 'Turanci (Porto Riko)',
+ 'en_PT' => 'Turanci (Portugal)',
'en_PW' => 'Turanci (Palau)',
+ 'en_RO' => 'Turanci (Romaniya)',
'en_RW' => 'Turanci (Ruwanda)',
'en_SB' => 'Turanci (Tsibiran Salaman)',
'en_SC' => 'Turanci (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Turanci (Singapur)',
'en_SH' => 'Turanci (San Helena)',
'en_SI' => 'Turanci (Sulobeniya)',
+ 'en_SK' => 'Turanci (Sulobakiya)',
'en_SL' => 'Turanci (Salewo)',
'en_SS' => 'Turanci (Sudan ta Kudu)',
'en_SX' => 'Turanci (San Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/he.php b/src/Symfony/Component/Intl/Resources/data/locales/he.php
index 5af7e8c39974b..e774608809c02 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/he.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/he.php
@@ -121,29 +121,35 @@
'en_CM' => 'אנגלית (קמרון)',
'en_CX' => 'אנגלית (אי חג המולד)',
'en_CY' => 'אנגלית (קפריסין)',
+ 'en_CZ' => 'אנגלית (צ׳כיה)',
'en_DE' => 'אנגלית (גרמניה)',
'en_DK' => 'אנגלית (דנמרק)',
'en_DM' => 'אנגלית (דומיניקה)',
'en_ER' => 'אנגלית (אריתריאה)',
+ 'en_ES' => 'אנגלית (ספרד)',
'en_FI' => 'אנגלית (פינלנד)',
'en_FJ' => 'אנגלית (פיג׳י)',
'en_FK' => 'אנגלית (איי פוקלנד)',
'en_FM' => 'אנגלית (מיקרונזיה)',
+ 'en_FR' => 'אנגלית (צרפת)',
'en_GB' => 'אנגלית (בריטניה)',
'en_GD' => 'אנגלית (גרנדה)',
'en_GG' => 'אנגלית (גרנזי)',
'en_GH' => 'אנגלית (גאנה)',
'en_GI' => 'אנגלית (גיברלטר)',
'en_GM' => 'אנגלית (גמביה)',
+ 'en_GS' => 'אנגלית (ג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומיים)',
'en_GU' => 'אנגלית (גואם)',
'en_GY' => 'אנגלית (גיאנה)',
'en_HK' => 'אנגלית (הונג קונג [אזור מנהלי מיוחד של סין])',
+ 'en_HU' => 'אנגלית (הונגריה)',
'en_ID' => 'אנגלית (אינדונזיה)',
'en_IE' => 'אנגלית (אירלנד)',
'en_IL' => 'אנגלית (ישראל)',
'en_IM' => 'אנגלית (האי מאן)',
'en_IN' => 'אנגלית (הודו)',
'en_IO' => 'אנגלית (הטריטוריה הבריטית באוקיינוס ההודי)',
+ 'en_IT' => 'אנגלית (איטליה)',
'en_JE' => 'אנגלית (ג׳רזי)',
'en_JM' => 'אנגלית (ג׳מייקה)',
'en_KE' => 'אנגלית (קניה)',
@@ -167,15 +173,19 @@
'en_NF' => 'אנגלית (האי נורפוק)',
'en_NG' => 'אנגלית (ניגריה)',
'en_NL' => 'אנגלית (הולנד)',
+ 'en_NO' => 'אנגלית (נורווגיה)',
'en_NR' => 'אנגלית (נאורו)',
'en_NU' => 'אנגלית (ניווה)',
'en_NZ' => 'אנגלית (ניו זילנד)',
'en_PG' => 'אנגלית (פפואה גינאה החדשה)',
'en_PH' => 'אנגלית (הפיליפינים)',
'en_PK' => 'אנגלית (פקיסטן)',
+ 'en_PL' => 'אנגלית (פולין)',
'en_PN' => 'אנגלית (איי פיטקרן)',
'en_PR' => 'אנגלית (פוארטו ריקו)',
+ 'en_PT' => 'אנגלית (פורטוגל)',
'en_PW' => 'אנגלית (פלאו)',
+ 'en_RO' => 'אנגלית (רומניה)',
'en_RW' => 'אנגלית (רואנדה)',
'en_SB' => 'אנגלית (איי שלמה)',
'en_SC' => 'אנגלית (איי סיישל)',
@@ -184,6 +194,7 @@
'en_SG' => 'אנגלית (סינגפור)',
'en_SH' => 'אנגלית (סנט הלנה)',
'en_SI' => 'אנגלית (סלובניה)',
+ 'en_SK' => 'אנגלית (סלובקיה)',
'en_SL' => 'אנגלית (סיירה לאון)',
'en_SS' => 'אנגלית (דרום סודן)',
'en_SX' => 'אנגלית (סנט מארטן)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/hi.php b/src/Symfony/Component/Intl/Resources/data/locales/hi.php
index cffc6ff5a9b83..0042f75f958dc 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/hi.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/hi.php
@@ -121,29 +121,35 @@
'en_CM' => 'अंग्रेज़ी (कैमरून)',
'en_CX' => 'अंग्रेज़ी (क्रिसमस द्वीप)',
'en_CY' => 'अंग्रेज़ी (साइप्रस)',
+ 'en_CZ' => 'अंग्रेज़ी (चेकिया)',
'en_DE' => 'अंग्रेज़ी (जर्मनी)',
'en_DK' => 'अंग्रेज़ी (डेनमार्क)',
'en_DM' => 'अंग्रेज़ी (डोमिनिका)',
'en_ER' => 'अंग्रेज़ी (इरिट्रिया)',
+ 'en_ES' => 'अंग्रेज़ी (स्पेन)',
'en_FI' => 'अंग्रेज़ी (फ़िनलैंड)',
'en_FJ' => 'अंग्रेज़ी (फ़िजी)',
'en_FK' => 'अंग्रेज़ी (फ़ॉकलैंड द्वीपसमूह)',
'en_FM' => 'अंग्रेज़ी (माइक्रोनेशिया)',
+ 'en_FR' => 'अंग्रेज़ी (फ़्रांस)',
'en_GB' => 'अंग्रेज़ी (यूनाइटेड किंगडम)',
'en_GD' => 'अंग्रेज़ी (ग्रेनाडा)',
'en_GG' => 'अंग्रेज़ी (गर्नसी)',
'en_GH' => 'अंग्रेज़ी (घाना)',
'en_GI' => 'अंग्रेज़ी (जिब्राल्टर)',
'en_GM' => 'अंग्रेज़ी (गाम्बिया)',
+ 'en_GS' => 'अंग्रेज़ी (दक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीपसमूह)',
'en_GU' => 'अंग्रेज़ी (गुआम)',
'en_GY' => 'अंग्रेज़ी (गुयाना)',
'en_HK' => 'अंग्रेज़ी (हाँग काँग [चीन विशेष प्रशासनिक क्षेत्र])',
+ 'en_HU' => 'अंग्रेज़ी (हंगरी)',
'en_ID' => 'अंग्रेज़ी (इंडोनेशिया)',
'en_IE' => 'अंग्रेज़ी (आयरलैंड)',
'en_IL' => 'अंग्रेज़ी (इज़राइल)',
'en_IM' => 'अंग्रेज़ी (आइल ऑफ़ मैन)',
'en_IN' => 'अंग्रेज़ी (भारत)',
'en_IO' => 'अंग्रेज़ी (ब्रिटिश हिंद महासागरीय क्षेत्र)',
+ 'en_IT' => 'अंग्रेज़ी (इटली)',
'en_JE' => 'अंग्रेज़ी (जर्सी)',
'en_JM' => 'अंग्रेज़ी (जमैका)',
'en_KE' => 'अंग्रेज़ी (केन्या)',
@@ -167,15 +173,19 @@
'en_NF' => 'अंग्रेज़ी (नॉरफ़ॉक द्वीप)',
'en_NG' => 'अंग्रेज़ी (नाइजीरिया)',
'en_NL' => 'अंग्रेज़ी (नीदरलैंड)',
+ 'en_NO' => 'अंग्रेज़ी (नॉर्वे)',
'en_NR' => 'अंग्रेज़ी (नाउरु)',
'en_NU' => 'अंग्रेज़ी (नीयू)',
'en_NZ' => 'अंग्रेज़ी (न्यूज़ीलैंड)',
'en_PG' => 'अंग्रेज़ी (पापुआ न्यू गिनी)',
'en_PH' => 'अंग्रेज़ी (फ़िलिपींस)',
'en_PK' => 'अंग्रेज़ी (पाकिस्तान)',
+ 'en_PL' => 'अंग्रेज़ी (पोलैंड)',
'en_PN' => 'अंग्रेज़ी (पिटकैर्न द्वीपसमूह)',
'en_PR' => 'अंग्रेज़ी (पोर्टो रिको)',
+ 'en_PT' => 'अंग्रेज़ी (पुर्तगाल)',
'en_PW' => 'अंग्रेज़ी (पलाऊ)',
+ 'en_RO' => 'अंग्रेज़ी (रोमानिया)',
'en_RW' => 'अंग्रेज़ी (रवांडा)',
'en_SB' => 'अंग्रेज़ी (सोलोमन द्वीपसमूह)',
'en_SC' => 'अंग्रेज़ी (सेशेल्स)',
@@ -184,6 +194,7 @@
'en_SG' => 'अंग्रेज़ी (सिंगापुर)',
'en_SH' => 'अंग्रेज़ी (सेंट हेलेना)',
'en_SI' => 'अंग्रेज़ी (स्लोवेनिया)',
+ 'en_SK' => 'अंग्रेज़ी (स्लोवाकिया)',
'en_SL' => 'अंग्रेज़ी (सिएरा लियोन)',
'en_SS' => 'अंग्रेज़ी (दक्षिण सूडान)',
'en_SX' => 'अंग्रेज़ी (सिंट मार्टिन)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/hr.php b/src/Symfony/Component/Intl/Resources/data/locales/hr.php
index ffb9afa8999ed..c0f4336d3ba61 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/hr.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/hr.php
@@ -121,29 +121,35 @@
'en_CM' => 'engleski (Kamerun)',
'en_CX' => 'engleski (Božićni Otok)',
'en_CY' => 'engleski (Cipar)',
+ 'en_CZ' => 'engleski (Češka)',
'en_DE' => 'engleski (Njemačka)',
'en_DK' => 'engleski (Danska)',
'en_DM' => 'engleski (Dominika)',
'en_ER' => 'engleski (Eritreja)',
+ 'en_ES' => 'engleski (Španjolska)',
'en_FI' => 'engleski (Finska)',
'en_FJ' => 'engleski (Fidži)',
'en_FK' => 'engleski (Falklandski Otoci)',
'en_FM' => 'engleski (Mikronezija)',
+ 'en_FR' => 'engleski (Francuska)',
'en_GB' => 'engleski (Ujedinjeno Kraljevstvo)',
'en_GD' => 'engleski (Grenada)',
'en_GG' => 'engleski (Guernsey)',
'en_GH' => 'engleski (Gana)',
'en_GI' => 'engleski (Gibraltar)',
'en_GM' => 'engleski (Gambija)',
+ 'en_GS' => 'engleski (Južna Georgia i Otoci Južni Sandwich)',
'en_GU' => 'engleski (Guam)',
'en_GY' => 'engleski (Gvajana)',
'en_HK' => 'engleski (PUP Hong Kong Kina)',
+ 'en_HU' => 'engleski (Mađarska)',
'en_ID' => 'engleski (Indonezija)',
'en_IE' => 'engleski (Irska)',
'en_IL' => 'engleski (Izrael)',
'en_IM' => 'engleski (Otok Man)',
'en_IN' => 'engleski (Indija)',
'en_IO' => 'engleski (Britanski Indijskooceanski Teritorij)',
+ 'en_IT' => 'engleski (Italija)',
'en_JE' => 'engleski (Jersey)',
'en_JM' => 'engleski (Jamajka)',
'en_KE' => 'engleski (Kenija)',
@@ -167,15 +173,19 @@
'en_NF' => 'engleski (Otok Norfolk)',
'en_NG' => 'engleski (Nigerija)',
'en_NL' => 'engleski (Nizozemska)',
+ 'en_NO' => 'engleski (Norveška)',
'en_NR' => 'engleski (Nauru)',
'en_NU' => 'engleski (Niue)',
'en_NZ' => 'engleski (Novi Zeland)',
'en_PG' => 'engleski (Papua Nova Gvineja)',
'en_PH' => 'engleski (Filipini)',
'en_PK' => 'engleski (Pakistan)',
+ 'en_PL' => 'engleski (Poljska)',
'en_PN' => 'engleski (Pitcairnovi Otoci)',
'en_PR' => 'engleski (Portoriko)',
+ 'en_PT' => 'engleski (Portugal)',
'en_PW' => 'engleski (Palau)',
+ 'en_RO' => 'engleski (Rumunjska)',
'en_RW' => 'engleski (Ruanda)',
'en_SB' => 'engleski (Salomonovi Otoci)',
'en_SC' => 'engleski (Sejšeli)',
@@ -184,6 +194,7 @@
'en_SG' => 'engleski (Singapur)',
'en_SH' => 'engleski (Sveta Helena)',
'en_SI' => 'engleski (Slovenija)',
+ 'en_SK' => 'engleski (Slovačka)',
'en_SL' => 'engleski (Sijera Leone)',
'en_SS' => 'engleski (Južni Sudan)',
'en_SX' => 'engleski (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/hu.php b/src/Symfony/Component/Intl/Resources/data/locales/hu.php
index 9bc13c1846338..ca8baa80789b9 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/hu.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/hu.php
@@ -121,29 +121,35 @@
'en_CM' => 'angol (Kamerun)',
'en_CX' => 'angol (Karácsony-sziget)',
'en_CY' => 'angol (Ciprus)',
+ 'en_CZ' => 'angol (Csehország)',
'en_DE' => 'angol (Németország)',
'en_DK' => 'angol (Dánia)',
'en_DM' => 'angol (Dominika)',
'en_ER' => 'angol (Eritrea)',
+ 'en_ES' => 'angol (Spanyolország)',
'en_FI' => 'angol (Finnország)',
'en_FJ' => 'angol (Fidzsi)',
'en_FK' => 'angol (Falkland-szigetek)',
'en_FM' => 'angol (Mikronézia)',
+ 'en_FR' => 'angol (Franciaország)',
'en_GB' => 'angol (Egyesült Királyság)',
'en_GD' => 'angol (Grenada)',
'en_GG' => 'angol (Guernsey)',
'en_GH' => 'angol (Ghána)',
'en_GI' => 'angol (Gibraltár)',
'en_GM' => 'angol (Gambia)',
+ 'en_GS' => 'angol (Déli-Georgia és Déli-Sandwich-szigetek)',
'en_GU' => 'angol (Guam)',
'en_GY' => 'angol (Guyana)',
'en_HK' => 'angol (Hongkong KKT)',
+ 'en_HU' => 'angol (Magyarország)',
'en_ID' => 'angol (Indonézia)',
'en_IE' => 'angol (Írország)',
'en_IL' => 'angol (Izrael)',
'en_IM' => 'angol (Man-sziget)',
'en_IN' => 'angol (India)',
'en_IO' => 'angol (Brit Indiai-óceáni Terület)',
+ 'en_IT' => 'angol (Olaszország)',
'en_JE' => 'angol (Jersey)',
'en_JM' => 'angol (Jamaica)',
'en_KE' => 'angol (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'angol (Norfolk-sziget)',
'en_NG' => 'angol (Nigéria)',
'en_NL' => 'angol (Hollandia)',
+ 'en_NO' => 'angol (Norvégia)',
'en_NR' => 'angol (Nauru)',
'en_NU' => 'angol (Niue)',
'en_NZ' => 'angol (Új-Zéland)',
'en_PG' => 'angol (Pápua Új-Guinea)',
'en_PH' => 'angol (Fülöp-szigetek)',
'en_PK' => 'angol (Pakisztán)',
+ 'en_PL' => 'angol (Lengyelország)',
'en_PN' => 'angol (Pitcairn-szigetek)',
'en_PR' => 'angol (Puerto Rico)',
+ 'en_PT' => 'angol (Portugália)',
'en_PW' => 'angol (Palau)',
+ 'en_RO' => 'angol (Románia)',
'en_RW' => 'angol (Ruanda)',
'en_SB' => 'angol (Salamon-szigetek)',
'en_SC' => 'angol (Seychelle-szigetek)',
@@ -184,6 +194,7 @@
'en_SG' => 'angol (Szingapúr)',
'en_SH' => 'angol (Szent Ilona)',
'en_SI' => 'angol (Szlovénia)',
+ 'en_SK' => 'angol (Szlovákia)',
'en_SL' => 'angol (Sierra Leone)',
'en_SS' => 'angol (Dél-Szudán)',
'en_SX' => 'angol (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/hy.php b/src/Symfony/Component/Intl/Resources/data/locales/hy.php
index 705cfa1efc7e8..a4222a7cc0332 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/hy.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/hy.php
@@ -121,29 +121,35 @@
'en_CM' => 'անգլերեն (Կամերուն)',
'en_CX' => 'անգլերեն (Սուրբ Ծննդյան կղզի)',
'en_CY' => 'անգլերեն (Կիպրոս)',
+ 'en_CZ' => 'անգլերեն (Չեխիա)',
'en_DE' => 'անգլերեն (Գերմանիա)',
'en_DK' => 'անգլերեն (Դանիա)',
'en_DM' => 'անգլերեն (Դոմինիկա)',
'en_ER' => 'անգլերեն (Էրիթրեա)',
+ 'en_ES' => 'անգլերեն (Իսպանիա)',
'en_FI' => 'անգլերեն (Ֆինլանդիա)',
'en_FJ' => 'անգլերեն (Ֆիջի)',
'en_FK' => 'անգլերեն (Ֆոլքլենդյան կղզիներ)',
'en_FM' => 'անգլերեն (Միկրոնեզիա)',
+ 'en_FR' => 'անգլերեն (Ֆրանսիա)',
'en_GB' => 'անգլերեն (Միացյալ Թագավորություն)',
'en_GD' => 'անգլերեն (Գրենադա)',
'en_GG' => 'անգլերեն (Գերնսի)',
'en_GH' => 'անգլերեն (Գանա)',
'en_GI' => 'անգլերեն (Ջիբրալթար)',
'en_GM' => 'անգլերեն (Գամբիա)',
+ 'en_GS' => 'անգլերեն (Հարավային Ջորջիա և Հարավային Սենդվիչյան կղզիներ)',
'en_GU' => 'անգլերեն (Գուամ)',
'en_GY' => 'անգլերեն (Գայանա)',
'en_HK' => 'անգլերեն (Հոնկոնգի ՀՎՇ)',
+ 'en_HU' => 'անգլերեն (Հունգարիա)',
'en_ID' => 'անգլերեն (Ինդոնեզիա)',
'en_IE' => 'անգլերեն (Իռլանդիա)',
'en_IL' => 'անգլերեն (Իսրայել)',
'en_IM' => 'անգլերեն (Մեն կղզի)',
'en_IN' => 'անգլերեն (Հնդկաստան)',
'en_IO' => 'անգլերեն (Բրիտանական տարածք Հնդկական Օվկիանոսում)',
+ 'en_IT' => 'անգլերեն (Իտալիա)',
'en_JE' => 'անգլերեն (Ջերսի)',
'en_JM' => 'անգլերեն (Ճամայկա)',
'en_KE' => 'անգլերեն (Քենիա)',
@@ -167,15 +173,19 @@
'en_NF' => 'անգլերեն (Նորֆոլկ կղզի)',
'en_NG' => 'անգլերեն (Նիգերիա)',
'en_NL' => 'անգլերեն (Նիդեռլանդներ)',
+ 'en_NO' => 'անգլերեն (Նորվեգիա)',
'en_NR' => 'անգլերեն (Նաուրու)',
'en_NU' => 'անգլերեն (Նիուե)',
'en_NZ' => 'անգլերեն (Նոր Զելանդիա)',
'en_PG' => 'անգլերեն (Պապուա Նոր Գվինեա)',
'en_PH' => 'անգլերեն (Ֆիլիպիններ)',
'en_PK' => 'անգլերեն (Պակիստան)',
+ 'en_PL' => 'անգլերեն (Լեհաստան)',
'en_PN' => 'անգլերեն (Պիտկեռն կղզիներ)',
'en_PR' => 'անգլերեն (Պուերտո Ռիկո)',
+ 'en_PT' => 'անգլերեն (Պորտուգալիա)',
'en_PW' => 'անգլերեն (Պալաու)',
+ 'en_RO' => 'անգլերեն (Ռումինիա)',
'en_RW' => 'անգլերեն (Ռուանդա)',
'en_SB' => 'անգլերեն (Սողոմոնյան կղզիներ)',
'en_SC' => 'անգլերեն (Սեյշելներ)',
@@ -184,6 +194,7 @@
'en_SG' => 'անգլերեն (Սինգապուր)',
'en_SH' => 'անգլերեն (Սուրբ Հեղինեի կղզի)',
'en_SI' => 'անգլերեն (Սլովենիա)',
+ 'en_SK' => 'անգլերեն (Սլովակիա)',
'en_SL' => 'անգլերեն (Սիեռա Լեոնե)',
'en_SS' => 'անգլերեն (Հարավային Սուդան)',
'en_SX' => 'անգլերեն (Սինտ Մարտեն)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ia.php b/src/Symfony/Component/Intl/Resources/data/locales/ia.php
index fc6da9e2c8168..6f5e27b0e26fc 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ia.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ia.php
@@ -121,29 +121,35 @@
'en_CM' => 'anglese (Camerun)',
'en_CX' => 'anglese (Insula de Natal)',
'en_CY' => 'anglese (Cypro)',
+ 'en_CZ' => 'anglese (Chechia)',
'en_DE' => 'anglese (Germania)',
'en_DK' => 'anglese (Danmark)',
'en_DM' => 'anglese (Dominica)',
'en_ER' => 'anglese (Eritrea)',
+ 'en_ES' => 'anglese (Espania)',
'en_FI' => 'anglese (Finlandia)',
'en_FJ' => 'anglese (Fiji)',
'en_FK' => 'anglese (Insulas Falkland)',
'en_FM' => 'anglese (Micronesia)',
+ 'en_FR' => 'anglese (Francia)',
'en_GB' => 'anglese (Regno Unite)',
'en_GD' => 'anglese (Grenada)',
'en_GG' => 'anglese (Guernsey)',
'en_GH' => 'anglese (Ghana)',
'en_GI' => 'anglese (Gibraltar)',
'en_GM' => 'anglese (Gambia)',
+ 'en_GS' => 'anglese (Georgia del Sud e Insulas Sandwich Austral)',
'en_GU' => 'anglese (Guam)',
'en_GY' => 'anglese (Guyana)',
'en_HK' => 'anglese (Hongkong, R.A.S. de China)',
+ 'en_HU' => 'anglese (Hungaria)',
'en_ID' => 'anglese (Indonesia)',
'en_IE' => 'anglese (Irlanda)',
'en_IL' => 'anglese (Israel)',
'en_IM' => 'anglese (Insula de Man)',
'en_IN' => 'anglese (India)',
'en_IO' => 'anglese (Territorio oceanic britanno-indian)',
+ 'en_IT' => 'anglese (Italia)',
'en_JE' => 'anglese (Jersey)',
'en_JM' => 'anglese (Jamaica)',
'en_KE' => 'anglese (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'anglese (Insula Norfolk)',
'en_NG' => 'anglese (Nigeria)',
'en_NL' => 'anglese (Nederlandia)',
+ 'en_NO' => 'anglese (Norvegia)',
'en_NR' => 'anglese (Nauru)',
'en_NU' => 'anglese (Niue)',
'en_NZ' => 'anglese (Nove Zelanda)',
'en_PG' => 'anglese (Papua Nove Guinea)',
'en_PH' => 'anglese (Philippinas)',
'en_PK' => 'anglese (Pakistan)',
+ 'en_PL' => 'anglese (Polonia)',
'en_PN' => 'anglese (Insulas Pitcairn)',
'en_PR' => 'anglese (Porto Rico)',
+ 'en_PT' => 'anglese (Portugal)',
'en_PW' => 'anglese (Palau)',
+ 'en_RO' => 'anglese (Romania)',
'en_RW' => 'anglese (Ruanda)',
'en_SB' => 'anglese (Insulas Solomon)',
'en_SC' => 'anglese (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'anglese (Singapur)',
'en_SH' => 'anglese (Sancte Helena)',
'en_SI' => 'anglese (Slovenia)',
+ 'en_SK' => 'anglese (Slovachia)',
'en_SL' => 'anglese (Sierra Leone)',
'en_SS' => 'anglese (Sudan del Sud)',
'en_SX' => 'anglese (Sancte Martino nederlandese)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/id.php b/src/Symfony/Component/Intl/Resources/data/locales/id.php
index a509bbb1368fd..62f6f12c6185f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/id.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/id.php
@@ -121,29 +121,35 @@
'en_CM' => 'Inggris (Kamerun)',
'en_CX' => 'Inggris (Pulau Natal)',
'en_CY' => 'Inggris (Siprus)',
+ 'en_CZ' => 'Inggris (Ceko)',
'en_DE' => 'Inggris (Jerman)',
'en_DK' => 'Inggris (Denmark)',
'en_DM' => 'Inggris (Dominika)',
'en_ER' => 'Inggris (Eritrea)',
+ 'en_ES' => 'Inggris (Spanyol)',
'en_FI' => 'Inggris (Finlandia)',
'en_FJ' => 'Inggris (Fiji)',
'en_FK' => 'Inggris (Kepulauan Falkland)',
'en_FM' => 'Inggris (Mikronesia)',
+ 'en_FR' => 'Inggris (Prancis)',
'en_GB' => 'Inggris (Inggris Raya)',
'en_GD' => 'Inggris (Grenada)',
'en_GG' => 'Inggris (Guernsey)',
'en_GH' => 'Inggris (Ghana)',
'en_GI' => 'Inggris (Gibraltar)',
'en_GM' => 'Inggris (Gambia)',
+ 'en_GS' => 'Inggris (Georgia Selatan & Kep. Sandwich Selatan)',
'en_GU' => 'Inggris (Guam)',
'en_GY' => 'Inggris (Guyana)',
'en_HK' => 'Inggris (Hong Kong DAK Tiongkok)',
+ 'en_HU' => 'Inggris (Hungaria)',
'en_ID' => 'Inggris (Indonesia)',
'en_IE' => 'Inggris (Irlandia)',
'en_IL' => 'Inggris (Israel)',
'en_IM' => 'Inggris (Pulau Man)',
'en_IN' => 'Inggris (India)',
'en_IO' => 'Inggris (Wilayah Inggris di Samudra Hindia)',
+ 'en_IT' => 'Inggris (Italia)',
'en_JE' => 'Inggris (Jersey)',
'en_JM' => 'Inggris (Jamaika)',
'en_KE' => 'Inggris (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Inggris (Kepulauan Norfolk)',
'en_NG' => 'Inggris (Nigeria)',
'en_NL' => 'Inggris (Belanda)',
+ 'en_NO' => 'Inggris (Norwegia)',
'en_NR' => 'Inggris (Nauru)',
'en_NU' => 'Inggris (Niue)',
'en_NZ' => 'Inggris (Selandia Baru)',
'en_PG' => 'Inggris (Papua Nugini)',
'en_PH' => 'Inggris (Filipina)',
'en_PK' => 'Inggris (Pakistan)',
+ 'en_PL' => 'Inggris (Polandia)',
'en_PN' => 'Inggris (Kepulauan Pitcairn)',
'en_PR' => 'Inggris (Puerto Riko)',
+ 'en_PT' => 'Inggris (Portugal)',
'en_PW' => 'Inggris (Palau)',
+ 'en_RO' => 'Inggris (Rumania)',
'en_RW' => 'Inggris (Rwanda)',
'en_SB' => 'Inggris (Kepulauan Solomon)',
'en_SC' => 'Inggris (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Inggris (Singapura)',
'en_SH' => 'Inggris (Saint Helena)',
'en_SI' => 'Inggris (Slovenia)',
+ 'en_SK' => 'Inggris (Slovakia)',
'en_SL' => 'Inggris (Sierra Leone)',
'en_SS' => 'Inggris (Sudan Selatan)',
'en_SX' => 'Inggris (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ie.php b/src/Symfony/Component/Intl/Resources/data/locales/ie.php
index 7d811cb7ab8b4..4de8737b5db75 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ie.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ie.php
@@ -25,16 +25,21 @@
'en_AT' => 'anglesi (Austria)',
'en_BE' => 'anglesi (Belgia)',
'en_CH' => 'anglesi (Svissia)',
+ 'en_CZ' => 'anglesi (Tchekia)',
'en_DE' => 'anglesi (Germania)',
'en_DK' => 'anglesi (Dania)',
'en_ER' => 'anglesi (Eritrea)',
+ 'en_ES' => 'anglesi (Hispania)',
'en_FI' => 'anglesi (Finland)',
'en_FJ' => 'anglesi (Fidji)',
+ 'en_FR' => 'anglesi (Francia)',
'en_GB' => 'anglesi (Unit Reyia)',
'en_GY' => 'anglesi (Guyana)',
+ 'en_HU' => 'anglesi (Hungaria)',
'en_ID' => 'anglesi (Indonesia)',
'en_IE' => 'anglesi (Irland)',
'en_IN' => 'anglesi (India)',
+ 'en_IT' => 'anglesi (Italia)',
'en_MT' => 'anglesi (Malta)',
'en_MU' => 'anglesi (Mauricio)',
'en_MV' => 'anglesi (Maldivas)',
@@ -43,10 +48,14 @@
'en_NZ' => 'anglesi (Nov-Zeland)',
'en_PH' => 'anglesi (Filipines)',
'en_PK' => 'anglesi (Pakistan)',
+ 'en_PL' => 'anglesi (Polonia)',
'en_PR' => 'anglesi (Porto-Rico)',
+ 'en_PT' => 'anglesi (Portugal)',
'en_PW' => 'anglesi (Palau)',
+ 'en_RO' => 'anglesi (Rumania)',
'en_SE' => 'anglesi (Svedia)',
'en_SI' => 'anglesi (Slovenia)',
+ 'en_SK' => 'anglesi (Slovakia)',
'en_SX' => 'anglesi (Sint-Maarten)',
'en_TC' => 'anglesi (Turks e Caicos)',
'en_TK' => 'anglesi (Tokelau)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ig.php b/src/Symfony/Component/Intl/Resources/data/locales/ig.php
index f6c65dee76aed..efda0303784e6 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ig.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ig.php
@@ -121,29 +121,35 @@
'en_CM' => 'Bekee (Cameroon)',
'en_CX' => 'Bekee (Agwaetiti Christmas)',
'en_CY' => 'Bekee (Cyprus)',
+ 'en_CZ' => 'Bekee (Czechia)',
'en_DE' => 'Bekee (Germany)',
'en_DK' => 'Bekee (Denmark)',
'en_DM' => 'Bekee (Dominica)',
'en_ER' => 'Bekee (Eritrea)',
+ 'en_ES' => 'Bekee (Spain)',
'en_FI' => 'Bekee (Finland)',
'en_FJ' => 'Bekee (Fiji)',
'en_FK' => 'Bekee (Falkland Islands)',
'en_FM' => 'Bekee (Micronesia)',
+ 'en_FR' => 'Bekee (France)',
'en_GB' => 'Bekee (United Kingdom)',
'en_GD' => 'Bekee (Grenada)',
'en_GG' => 'Bekee (Guernsey)',
'en_GH' => 'Bekee (Ghana)',
'en_GI' => 'Bekee (Gibraltar)',
'en_GM' => 'Bekee (Gambia)',
+ 'en_GS' => 'Bekee (South Georgia & South Sandwich Islands)',
'en_GU' => 'Bekee (Guam)',
'en_GY' => 'Bekee (Guyana)',
'en_HK' => 'Bekee (Hong Kong SAR China)',
+ 'en_HU' => 'Bekee (Hungary)',
'en_ID' => 'Bekee (Indonesia)',
'en_IE' => 'Bekee (Ireland)',
'en_IL' => 'Bekee (Israel)',
'en_IM' => 'Bekee (Isle of Man)',
'en_IN' => 'Bekee (India)',
'en_IO' => 'Bekee (British Indian Ocean Territory)',
+ 'en_IT' => 'Bekee (Italy)',
'en_JE' => 'Bekee (Jersey)',
'en_JM' => 'Bekee (Jamaika)',
'en_KE' => 'Bekee (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Bekee (Agwaetiti Norfolk)',
'en_NG' => 'Bekee (Naịjịrịa)',
'en_NL' => 'Bekee (Netherlands)',
+ 'en_NO' => 'Bekee (Norway)',
'en_NR' => 'Bekee (Nauru)',
'en_NU' => 'Bekee (Niue)',
'en_NZ' => 'Bekee (New Zealand)',
'en_PG' => 'Bekee (Papua New Guinea)',
'en_PH' => 'Bekee (Philippines)',
'en_PK' => 'Bekee (Pakistan)',
+ 'en_PL' => 'Bekee (Poland)',
'en_PN' => 'Bekee (Agwaetiti Pitcairn)',
'en_PR' => 'Bekee (Puerto Rico)',
+ 'en_PT' => 'Bekee (Portugal)',
'en_PW' => 'Bekee (Palau)',
+ 'en_RO' => 'Bekee (Romania)',
'en_RW' => 'Bekee (Rwanda)',
'en_SB' => 'Bekee (Agwaetiti Solomon)',
'en_SC' => 'Bekee (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Bekee (Singapore)',
'en_SH' => 'Bekee (St. Helena)',
'en_SI' => 'Bekee (Slovenia)',
+ 'en_SK' => 'Bekee (Slovakia)',
'en_SL' => 'Bekee (Sierra Leone)',
'en_SS' => 'Bekee (South Sudan)',
'en_SX' => 'Bekee (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ii.php b/src/Symfony/Component/Intl/Resources/data/locales/ii.php
index a49bd4c510ba3..f45d0edbda106 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ii.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ii.php
@@ -13,8 +13,10 @@
'en_150' => 'ꑱꇩꉙ(ꉩꍏ)',
'en_BE' => 'ꑱꇩꉙ(ꀘꆹꏃ)',
'en_DE' => 'ꑱꇩꉙ(ꄓꇩ)',
+ 'en_FR' => 'ꑱꇩꉙ(ꃔꇩ)',
'en_GB' => 'ꑱꇩꉙ(ꑱꇩ)',
'en_IN' => 'ꑱꇩꉙ(ꑴꄗ)',
+ 'en_IT' => 'ꑱꇩꉙ(ꑴꄊꆺ)',
'en_US' => 'ꑱꇩꉙ(ꂰꇩ)',
'es' => 'ꑭꀠꑸꉙ',
'es_BR' => 'ꑭꀠꑸꉙ(ꀠꑭ)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/is.php b/src/Symfony/Component/Intl/Resources/data/locales/is.php
index f4193a794155b..a9c87c308cd66 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/is.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/is.php
@@ -121,29 +121,35 @@
'en_CM' => 'enska (Kamerún)',
'en_CX' => 'enska (Jólaey)',
'en_CY' => 'enska (Kýpur)',
+ 'en_CZ' => 'enska (Tékkland)',
'en_DE' => 'enska (Þýskaland)',
'en_DK' => 'enska (Danmörk)',
'en_DM' => 'enska (Dóminíka)',
'en_ER' => 'enska (Erítrea)',
+ 'en_ES' => 'enska (Spánn)',
'en_FI' => 'enska (Finnland)',
'en_FJ' => 'enska (Fídjíeyjar)',
'en_FK' => 'enska (Falklandseyjar)',
'en_FM' => 'enska (Míkrónesía)',
+ 'en_FR' => 'enska (Frakkland)',
'en_GB' => 'enska (Bretland)',
'en_GD' => 'enska (Grenada)',
'en_GG' => 'enska (Guernsey)',
'en_GH' => 'enska (Gana)',
'en_GI' => 'enska (Gíbraltar)',
'en_GM' => 'enska (Gambía)',
+ 'en_GS' => 'enska (Suður-Georgía og Suður-Sandvíkureyjar)',
'en_GU' => 'enska (Gvam)',
'en_GY' => 'enska (Gvæjana)',
'en_HK' => 'enska (sérstjórnarsvæðið Hong Kong)',
+ 'en_HU' => 'enska (Ungverjaland)',
'en_ID' => 'enska (Indónesía)',
'en_IE' => 'enska (Írland)',
'en_IL' => 'enska (Ísrael)',
'en_IM' => 'enska (Mön)',
'en_IN' => 'enska (Indland)',
'en_IO' => 'enska (Bresku Indlandshafseyjar)',
+ 'en_IT' => 'enska (Ítalía)',
'en_JE' => 'enska (Jersey)',
'en_JM' => 'enska (Jamaíka)',
'en_KE' => 'enska (Kenía)',
@@ -167,15 +173,19 @@
'en_NF' => 'enska (Norfolkeyja)',
'en_NG' => 'enska (Nígería)',
'en_NL' => 'enska (Holland)',
+ 'en_NO' => 'enska (Noregur)',
'en_NR' => 'enska (Nárú)',
'en_NU' => 'enska (Niue)',
'en_NZ' => 'enska (Nýja-Sjáland)',
'en_PG' => 'enska (Papúa Nýja-Gínea)',
'en_PH' => 'enska (Filippseyjar)',
'en_PK' => 'enska (Pakistan)',
+ 'en_PL' => 'enska (Pólland)',
'en_PN' => 'enska (Pitcairn-eyjar)',
'en_PR' => 'enska (Púertó Ríkó)',
+ 'en_PT' => 'enska (Portúgal)',
'en_PW' => 'enska (Palá)',
+ 'en_RO' => 'enska (Rúmenía)',
'en_RW' => 'enska (Rúanda)',
'en_SB' => 'enska (Salómonseyjar)',
'en_SC' => 'enska (Seychelles-eyjar)',
@@ -184,6 +194,7 @@
'en_SG' => 'enska (Singapúr)',
'en_SH' => 'enska (Sankti Helena)',
'en_SI' => 'enska (Slóvenía)',
+ 'en_SK' => 'enska (Slóvakía)',
'en_SL' => 'enska (Síerra Leóne)',
'en_SS' => 'enska (Suður-Súdan)',
'en_SX' => 'enska (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/it.php b/src/Symfony/Component/Intl/Resources/data/locales/it.php
index 5c8b0eb394e84..1d647898ebd39 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/it.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/it.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglese (Camerun)',
'en_CX' => 'inglese (Isola Christmas)',
'en_CY' => 'inglese (Cipro)',
+ 'en_CZ' => 'inglese (Cechia)',
'en_DE' => 'inglese (Germania)',
'en_DK' => 'inglese (Danimarca)',
'en_DM' => 'inglese (Dominica)',
'en_ER' => 'inglese (Eritrea)',
+ 'en_ES' => 'inglese (Spagna)',
'en_FI' => 'inglese (Finlandia)',
'en_FJ' => 'inglese (Figi)',
'en_FK' => 'inglese (Isole Falkland)',
'en_FM' => 'inglese (Micronesia)',
+ 'en_FR' => 'inglese (Francia)',
'en_GB' => 'inglese (Regno Unito)',
'en_GD' => 'inglese (Grenada)',
'en_GG' => 'inglese (Guernsey)',
'en_GH' => 'inglese (Ghana)',
'en_GI' => 'inglese (Gibilterra)',
'en_GM' => 'inglese (Gambia)',
+ 'en_GS' => 'inglese (Georgia del Sud e Sandwich Australi)',
'en_GU' => 'inglese (Guam)',
'en_GY' => 'inglese (Guyana)',
'en_HK' => 'inglese (RAS di Hong Kong)',
+ 'en_HU' => 'inglese (Ungheria)',
'en_ID' => 'inglese (Indonesia)',
'en_IE' => 'inglese (Irlanda)',
'en_IL' => 'inglese (Israele)',
'en_IM' => 'inglese (Isola di Man)',
'en_IN' => 'inglese (India)',
'en_IO' => 'inglese (Territorio Britannico dell’Oceano Indiano)',
+ 'en_IT' => 'inglese (Italia)',
'en_JE' => 'inglese (Jersey)',
'en_JM' => 'inglese (Giamaica)',
'en_KE' => 'inglese (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglese (Isola Norfolk)',
'en_NG' => 'inglese (Nigeria)',
'en_NL' => 'inglese (Paesi Bassi)',
+ 'en_NO' => 'inglese (Norvegia)',
'en_NR' => 'inglese (Nauru)',
'en_NU' => 'inglese (Niue)',
'en_NZ' => 'inglese (Nuova Zelanda)',
'en_PG' => 'inglese (Papua Nuova Guinea)',
'en_PH' => 'inglese (Filippine)',
'en_PK' => 'inglese (Pakistan)',
+ 'en_PL' => 'inglese (Polonia)',
'en_PN' => 'inglese (Isole Pitcairn)',
'en_PR' => 'inglese (Portorico)',
+ 'en_PT' => 'inglese (Portogallo)',
'en_PW' => 'inglese (Palau)',
+ 'en_RO' => 'inglese (Romania)',
'en_RW' => 'inglese (Ruanda)',
'en_SB' => 'inglese (Isole Salomone)',
'en_SC' => 'inglese (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglese (Singapore)',
'en_SH' => 'inglese (Sant’Elena)',
'en_SI' => 'inglese (Slovenia)',
+ 'en_SK' => 'inglese (Slovacchia)',
'en_SL' => 'inglese (Sierra Leone)',
'en_SS' => 'inglese (Sud Sudan)',
'en_SX' => 'inglese (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ja.php b/src/Symfony/Component/Intl/Resources/data/locales/ja.php
index e313b62074c65..16ad4dcdc6ca3 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ja.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ja.php
@@ -121,29 +121,35 @@
'en_CM' => '英語 (カメルーン)',
'en_CX' => '英語 (クリスマス島)',
'en_CY' => '英語 (キプロス)',
+ 'en_CZ' => '英語 (チェコ)',
'en_DE' => '英語 (ドイツ)',
'en_DK' => '英語 (デンマーク)',
'en_DM' => '英語 (ドミニカ国)',
'en_ER' => '英語 (エリトリア)',
+ 'en_ES' => '英語 (スペイン)',
'en_FI' => '英語 (フィンランド)',
'en_FJ' => '英語 (フィジー)',
'en_FK' => '英語 (フォークランド諸島)',
'en_FM' => '英語 (ミクロネシア連邦)',
+ 'en_FR' => '英語 (フランス)',
'en_GB' => '英語 (イギリス)',
'en_GD' => '英語 (グレナダ)',
'en_GG' => '英語 (ガーンジー)',
'en_GH' => '英語 (ガーナ)',
'en_GI' => '英語 (ジブラルタル)',
'en_GM' => '英語 (ガンビア)',
+ 'en_GS' => '英語 (サウスジョージア・サウスサンドウィッチ諸島)',
'en_GU' => '英語 (グアム)',
'en_GY' => '英語 (ガイアナ)',
'en_HK' => '英語 (中華人民共和国香港特別行政区)',
+ 'en_HU' => '英語 (ハンガリー)',
'en_ID' => '英語 (インドネシア)',
'en_IE' => '英語 (アイルランド)',
'en_IL' => '英語 (イスラエル)',
'en_IM' => '英語 (マン島)',
'en_IN' => '英語 (インド)',
'en_IO' => '英語 (英領インド洋地域)',
+ 'en_IT' => '英語 (イタリア)',
'en_JE' => '英語 (ジャージー)',
'en_JM' => '英語 (ジャマイカ)',
'en_KE' => '英語 (ケニア)',
@@ -167,15 +173,19 @@
'en_NF' => '英語 (ノーフォーク島)',
'en_NG' => '英語 (ナイジェリア)',
'en_NL' => '英語 (オランダ)',
+ 'en_NO' => '英語 (ノルウェー)',
'en_NR' => '英語 (ナウル)',
'en_NU' => '英語 (ニウエ)',
'en_NZ' => '英語 (ニュージーランド)',
'en_PG' => '英語 (パプアニューギニア)',
'en_PH' => '英語 (フィリピン)',
'en_PK' => '英語 (パキスタン)',
+ 'en_PL' => '英語 (ポーランド)',
'en_PN' => '英語 (ピトケアン諸島)',
'en_PR' => '英語 (プエルトリコ)',
+ 'en_PT' => '英語 (ポルトガル)',
'en_PW' => '英語 (パラオ)',
+ 'en_RO' => '英語 (ルーマニア)',
'en_RW' => '英語 (ルワンダ)',
'en_SB' => '英語 (ソロモン諸島)',
'en_SC' => '英語 (セーシェル)',
@@ -184,6 +194,7 @@
'en_SG' => '英語 (シンガポール)',
'en_SH' => '英語 (セントヘレナ)',
'en_SI' => '英語 (スロベニア)',
+ 'en_SK' => '英語 (スロバキア)',
'en_SL' => '英語 (シエラレオネ)',
'en_SS' => '英語 (南スーダン)',
'en_SX' => '英語 (シント・マールテン)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/jv.php b/src/Symfony/Component/Intl/Resources/data/locales/jv.php
index 7aceed6372635..6b701cb205b26 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/jv.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/jv.php
@@ -121,29 +121,35 @@
'en_CM' => 'Inggris (Kamerun)',
'en_CX' => 'Inggris (Pulo Natal)',
'en_CY' => 'Inggris (Siprus)',
+ 'en_CZ' => 'Inggris (Céko)',
'en_DE' => 'Inggris (Jérman)',
'en_DK' => 'Inggris (Dhènemarken)',
'en_DM' => 'Inggris (Dominika)',
'en_ER' => 'Inggris (Éritréa)',
+ 'en_ES' => 'Inggris (Sepanyol)',
'en_FI' => 'Inggris (Finlan)',
'en_FJ' => 'Inggris (Fiji)',
'en_FK' => 'Inggris (Kapuloan Falkland)',
'en_FM' => 'Inggris (Féderasi Mikronésia)',
+ 'en_FR' => 'Inggris (Prancis)',
'en_GB' => 'Inggris (Karajan Manunggal)',
'en_GD' => 'Inggris (Grénada)',
'en_GG' => 'Inggris (Guernsei)',
'en_GH' => 'Inggris (Ghana)',
'en_GI' => 'Inggris (Gibraltar)',
'en_GM' => 'Inggris (Gambia)',
+ 'en_GS' => 'Inggris (Georgia Kidul lan Kapuloan Sandwich Kidul)',
'en_GU' => 'Inggris (Guam)',
'en_GY' => 'Inggris (Guyana)',
'en_HK' => 'Inggris (Laladan Administratif Astamiwa Hong Kong)',
+ 'en_HU' => 'Inggris (Honggari)',
'en_ID' => 'Inggris (Indonésia)',
'en_IE' => 'Inggris (Républik Irlan)',
'en_IL' => 'Inggris (Israèl)',
'en_IM' => 'Inggris (Pulo Man)',
'en_IN' => 'Inggris (Indhia)',
'en_IO' => 'Inggris (Wilayah Inggris ing Segara Hindia)',
+ 'en_IT' => 'Inggris (Itali)',
'en_JE' => 'Inggris (Jersey)',
'en_JM' => 'Inggris (Jamaika)',
'en_KE' => 'Inggris (Kénya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Inggris (Pulo Norfolk)',
'en_NG' => 'Inggris (Nigéria)',
'en_NL' => 'Inggris (Walanda)',
+ 'en_NO' => 'Inggris (Nurwègen)',
'en_NR' => 'Inggris (Nauru)',
'en_NU' => 'Inggris (Niue)',
'en_NZ' => 'Inggris (Selandia Anyar)',
'en_PG' => 'Inggris (Papua Nugini)',
'en_PH' => 'Inggris (Pilipina)',
'en_PK' => 'Inggris (Pakistan)',
+ 'en_PL' => 'Inggris (Polen)',
'en_PN' => 'Inggris (Kapuloan Pitcairn)',
'en_PR' => 'Inggris (Puèrto Riko)',
+ 'en_PT' => 'Inggris (Portugal)',
'en_PW' => 'Inggris (Palau)',
+ 'en_RO' => 'Inggris (Ruméni)',
'en_RW' => 'Inggris (Rwanda)',
'en_SB' => 'Inggris (Kapuloan Suleman)',
'en_SC' => 'Inggris (Sésèl)',
@@ -184,6 +194,7 @@
'en_SG' => 'Inggris (Singapura)',
'en_SH' => 'Inggris (Saint Héléna)',
'en_SI' => 'Inggris (Slovénia)',
+ 'en_SK' => 'Inggris (Slowak)',
'en_SL' => 'Inggris (Siéra Léoné)',
'en_SS' => 'Inggris (Sudan Kidul)',
'en_SX' => 'Inggris (Sint Martén)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ka.php b/src/Symfony/Component/Intl/Resources/data/locales/ka.php
index f6e517535438e..fff440168ac29 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ka.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ka.php
@@ -121,29 +121,35 @@
'en_CM' => 'ინგლისური (კამერუნი)',
'en_CX' => 'ინგლისური (შობის კუნძული)',
'en_CY' => 'ინგლისური (კვიპროსი)',
+ 'en_CZ' => 'ინგლისური (ჩეხეთი)',
'en_DE' => 'ინგლისური (გერმანია)',
'en_DK' => 'ინგლისური (დანია)',
'en_DM' => 'ინგლისური (დომინიკა)',
'en_ER' => 'ინგლისური (ერიტრეა)',
+ 'en_ES' => 'ინგლისური (ესპანეთი)',
'en_FI' => 'ინგლისური (ფინეთი)',
'en_FJ' => 'ინგლისური (ფიჯი)',
'en_FK' => 'ინგლისური (ფოლკლენდის კუნძულები)',
'en_FM' => 'ინგლისური (მიკრონეზია)',
+ 'en_FR' => 'ინგლისური (საფრანგეთი)',
'en_GB' => 'ინგლისური (გაერთიანებული სამეფო)',
'en_GD' => 'ინგლისური (გრენადა)',
'en_GG' => 'ინგლისური (გერნსი)',
'en_GH' => 'ინგლისური (განა)',
'en_GI' => 'ინგლისური (გიბრალტარი)',
'en_GM' => 'ინგლისური (გამბია)',
+ 'en_GS' => 'ინგლისური (სამხრეთ ჯორჯია და სამხრეთ სენდვიჩის კუნძულები)',
'en_GU' => 'ინგლისური (გუამი)',
'en_GY' => 'ინგლისური (გაიანა)',
'en_HK' => 'ინგლისური (ჰონკონგის სპეციალური ადმინისტრაციული რეგიონი, ჩინეთი)',
+ 'en_HU' => 'ინგლისური (უნგრეთი)',
'en_ID' => 'ინგლისური (ინდონეზია)',
'en_IE' => 'ინგლისური (ირლანდია)',
'en_IL' => 'ინგლისური (ისრაელი)',
'en_IM' => 'ინგლისური (მენის კუნძული)',
'en_IN' => 'ინგლისური (ინდოეთი)',
'en_IO' => 'ინგლისური (ბრიტანეთის ტერიტორია ინდოეთის ოკეანეში)',
+ 'en_IT' => 'ინგლისური (იტალია)',
'en_JE' => 'ინგლისური (ჯერსი)',
'en_JM' => 'ინგლისური (იამაიკა)',
'en_KE' => 'ინგლისური (კენია)',
@@ -167,15 +173,19 @@
'en_NF' => 'ინგლისური (ნორფოლკის კუნძული)',
'en_NG' => 'ინგლისური (ნიგერია)',
'en_NL' => 'ინგლისური (ნიდერლანდები)',
+ 'en_NO' => 'ინგლისური (ნორვეგია)',
'en_NR' => 'ინგლისური (ნაურუ)',
'en_NU' => 'ინგლისური (ნიუე)',
'en_NZ' => 'ინგლისური (ახალი ზელანდია)',
'en_PG' => 'ინგლისური (პაპუა-ახალი გვინეა)',
'en_PH' => 'ინგლისური (ფილიპინები)',
'en_PK' => 'ინგლისური (პაკისტანი)',
+ 'en_PL' => 'ინგლისური (პოლონეთი)',
'en_PN' => 'ინგლისური (პიტკერნის კუნძულები)',
'en_PR' => 'ინგლისური (პუერტო-რიკო)',
+ 'en_PT' => 'ინგლისური (პორტუგალია)',
'en_PW' => 'ინგლისური (პალაუ)',
+ 'en_RO' => 'ინგლისური (რუმინეთი)',
'en_RW' => 'ინგლისური (რუანდა)',
'en_SB' => 'ინგლისური (სოლომონის კუნძულები)',
'en_SC' => 'ინგლისური (სეიშელის კუნძულები)',
@@ -184,6 +194,7 @@
'en_SG' => 'ინგლისური (სინგაპური)',
'en_SH' => 'ინგლისური (წმინდა ელენეს კუნძული)',
'en_SI' => 'ინგლისური (სლოვენია)',
+ 'en_SK' => 'ინგლისური (სლოვაკეთი)',
'en_SL' => 'ინგლისური (სიერა-ლეონე)',
'en_SS' => 'ინგლისური (სამხრეთ სუდანი)',
'en_SX' => 'ინგლისური (სინტ-მარტენი)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ki.php b/src/Symfony/Component/Intl/Resources/data/locales/ki.php
index 0b2614bd249
10000
7e..80df7f3526ae4 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ki.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ki.php
@@ -71,14 +71,17 @@
'en_CK' => 'Gĩthungũ (Visiwa vya Cook)',
'en_CM' => 'Gĩthungũ (Kameruni)',
'en_CY' => 'Gĩthungũ (Kuprosi)',
+ 'en_CZ' => 'Gĩthungũ (Jamhuri ya Cheki)',
'en_DE' => 'Gĩthungũ (Njeremani)',
'en_DK' => 'Gĩthungũ (Denmaki)',
'en_DM' => 'Gĩthungũ (Dominika)',
'en_ER' => 'Gĩthungũ (Eritrea)',
+ 'en_ES' => 'Gĩthungũ (Hispania)',
'en_FI' => 'Gĩthungũ (Ufini)',
'en_FJ' => 'Gĩthungũ (Fiji)',
'en_FK' => 'Gĩthungũ (Visiwa vya Falkland)',
'en_FM' => 'Gĩthungũ (Mikronesia)',
+ 'en_FR' => 'Gĩthungũ (Ubaranja)',
'en_GB' => 'Gĩthungũ (Ngeretha)',
'en_GD' => 'Gĩthungũ (Grenada)',
'en_GH' => 'Gĩthungũ (Ngana)',
@@ -86,10 +89,12 @@
'en_GM' => 'Gĩthungũ (Gambia)',
'en_GU' => 'Gĩthungũ (Gwam)',
'en_GY' => 'Gĩthungũ (Guyana)',
+ 'en_HU' => 'Gĩthungũ (Hungaria)',
'en_ID' => 'Gĩthungũ (Indonesia)',
'en_IE' => 'Gĩthungũ (Ayalandi)',
'en_IL' => 'Gĩthungũ (Israeli)',
'en_IN' => 'Gĩthungũ (India)',
+ 'en_IT' => 'Gĩthungũ (Italia)',
'en_JM' => 'Gĩthungũ (Jamaika)',
'en_KE' => 'Gĩthungũ (Kenya)',
'en_KI' => 'Gĩthungũ (Kiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'Gĩthungũ (Kisiwa cha Norfok)',
'en_NG' => 'Gĩthungũ (Nainjeria)',
'en_NL' => 'Gĩthungũ (Uholanzi)',
+ 'en_NO' => 'Gĩthungũ (Norwe)',
'en_NR' => 'Gĩthungũ (Nauru)',
'en_NU' => 'Gĩthungũ (Niue)',
'en_NZ' => 'Gĩthungũ (Nyuzilandi)',
'en_PG' => 'Gĩthungũ (Papua)',
'en_PH' => 'Gĩthungũ (Filipino)',
'en_PK' => 'Gĩthungũ (Pakistani)',
+ 'en_PL' => 'Gĩthungũ (Polandi)',
'en_PN' => 'Gĩthungũ (Pitkairni)',
'en_PR' => 'Gĩthungũ (Pwetoriko)',
+ 'en_PT' => 'Gĩthungũ (Ureno)',
'en_PW' => 'Gĩthungũ (Palau)',
+ 'en_RO' => 'Gĩthungũ (Romania)',
'en_RW' => 'Gĩthungũ (Rwanda)',
'en_SB' => 'Gĩthungũ (Visiwa vya Solomon)',
'en_SC' => 'Gĩthungũ (Shelisheli)',
@@ -128,6 +137,7 @@
'en_SG' => 'Gĩthungũ (Singapoo)',
'en_SH' => 'Gĩthungũ (Santahelena)',
'en_SI' => 'Gĩthungũ (Slovenia)',
+ 'en_SK' => 'Gĩthungũ (Slovakia)',
'en_SL' => 'Gĩthungũ (Siera Leoni)',
'en_SZ' => 'Gĩthungũ (Uswazi)',
'en_TC' => 'Gĩthungũ (Visiwa vya Turki na Kaiko)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/kk.php b/src/Symfony/Component/Intl/Resources/data/locales/kk.php
index 09318b9b3b05d..d49751103b1a8 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/kk.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/kk.php
@@ -121,29 +121,35 @@
'en_CM' => 'ағылшын тілі (Камерун)',
'en_CX' => 'ағылшын тілі (Рождество аралы)',
'en_CY' => 'ағылшын тілі (Кипр)',
+ 'en_CZ' => 'ағылшын тілі (Чехия)',
'en_DE' => 'ағылшын тілі (Германия)',
'en_DK' => 'ағылшын тілі (Дания)',
'en_DM' => 'ағылшын тілі (Доминика)',
'en_ER' => 'ағылшын тілі (Эритрея)',
+ 'en_ES' => 'ағылшын тілі (Испания)',
'en_FI' => 'ағылшын тілі (Финляндия)',
'en_FJ' => 'ағылшын тілі (Фиджи)',
'en_FK' => 'ағылшын тілі (Фолкленд аралдары)',
'en_FM' => 'ағылшын тілі (Микронезия)',
+ 'en_FR' => 'ағылшын тілі (Франция)',
'en_GB' => 'ағылшын тілі (Ұлыбритания)',
'en_GD' => 'ағылшын тілі (Гренада)',
'en_GG' => 'ағылшын тілі (Гернси)',
'en_GH' => 'ағылшын тілі (Гана)',
'en_GI' => 'ағылшын тілі (Гибралтар)',
'en_GM' => 'ағылшын тілі (Гамбия)',
+ 'en_GS' => 'ағылшын тілі (Оңтүстік Георгия және Оңтүстік Сандвич аралдары)',
'en_GU' => 'ағылшын тілі (Гуам)',
'en_GY' => 'ағылшын тілі (Гайана)',
'en_HK' => 'ағылшын тілі (Сянган АӘА)',
+ 'en_HU' => 'ағылшын тілі (Венгрия)',
'en_ID' => 'ағылшын тілі (Индонезия)',
'en_IE' => 'ағылшын тілі (Ирландия)',
'en_IL' => 'ағылшын тілі (Израиль)',
'en_IM' => 'ағылшын тілі (Мэн аралы)',
'en_IN' => 'ағылшын тілі (Үндістан)',
'en_IO' => 'ағылшын тілі (Үнді мұхитындағы Британ аймағы)',
+ 'en_IT' => 'ағылшын тілі (Италия)',
'en_JE' => 'ағылшын тілі (Джерси)',
'en_JM' => 'ағылшын тілі (Ямайка)',
'en_KE' => 'ағылшын тілі (Кения)',
@@ -167,15 +173,19 @@
'en_NF' => 'ағылшын тілі (Норфолк аралы)',
'en_NG' => 'ағылшын тілі (Нигерия)',
'en_NL' => 'ағылшын тілі (Нидерланд)',
+ 'en_NO' => 'ағылшын тілі (Норвегия)',
'en_NR' => 'ағылшын тілі (Науру)',
'en_NU' => 'ағылшын тілі (Ниуэ)',
'en_NZ' => 'ағылшын тілі (Жаңа Зеландия)',
'en_PG' => 'ағылшын тілі (Папуа — Жаңа Гвинея)',
'en_PH' => 'ағылшын тілі (Филиппин аралдары)',
'en_PK' => 'ағылшын тілі (Пәкістан)',
+ 'en_PL' => 'ағылшын тілі (Польша)',
'en_PN' => 'ағылшын тілі (Питкэрн аралдары)',
'en_PR' => 'ағылшын тілі (Пуэрто-Рико)',
+ 'en_PT' => 'ағылшын тілі (Португалия)',
'en_PW' => 'ағылшын тілі (Палау)',
+ 'en_RO' => 'ағылшын тілі (Румыния)',
'en_RW' => 'ағылшын тілі (Руанда)',
'en_SB' => 'ағылшын тілі (Соломон аралдары)',
'en_SC' => 'ағылшын тілі (Сейшель аралдары)',
@@ -184,6 +194,7 @@
'en_SG' => 'ағылшын тілі (Сингапур)',
'en_SH' => 'ағылшын тілі (Әулие Елена аралы)',
'en_SI' => 'ағылшын тілі (Словения)',
+ 'en_SK' => 'ағылшын тілі (Словакия)',
'en_SL' => 'ағылшын тілі (Сьерра-Леоне)',
'en_SS' => 'ағылшын тілі (Оңтүстік Судан)',
'en_SX' => 'ағылшын тілі (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/km.php b/src/Symfony/Component/Intl/Resources/data/locales/km.php
index 1119a21464c1b..fa2eb27f0c4a5 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/km.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/km.php
@@ -121,29 +121,35 @@
'en_CM' => 'អង់គ្លេស (កាមេរូន)',
'en_CX' => 'អង់គ្លេស (កោះគ្រីស្មាស)',
'en_CY' => 'អង់គ្លេស (ស៊ីប)',
+ 'en_CZ' => 'អង់គ្លេស (ឆែក)',
'en_DE' => 'អង់គ្លេស (អាល្លឺម៉ង់)',
'en_DK' => 'អង់គ្លេស (ដាណឺម៉ាក)',
'en_DM' => 'អង់គ្លេស (ដូមីនីក)',
'en_ER' => 'អង់គ្លេស (អេរីត្រេ)',
+ 'en_ES' => 'អង់គ្លេស (អេស្ប៉ាញ)',
'en_FI' => 'អង់គ្លេស (ហ្វាំងឡង់)',
'en_FJ' => 'អង់គ្លេស (ហ្វីជី)',
'en_FK' => 'អង់គ្លេស (កោះហ្វក់ឡែន)',
'en_FM' => 'អង់គ្លេស (មីក្រូណេស៊ី)',
+ 'en_FR' => 'អង់គ្លេស (បារាំង)',
'en_GB' => 'អង់គ្លេស (ចក្រភពអង់គ្លេស)',
'en_GD' => 'អង់គ្លេស (ហ្គ្រើណាដ)',
'en_GG' => 'អង់គ្លេស (ហ្គេនស៊ី)',
'en_GH' => 'អង់គ្លេស (ហ្គាណា)',
'en_GI' => 'អង់គ្លេស (ហ្ស៊ីប្រាល់តា)',
'en_GM' => 'អង់គ្លេស (ហ្គំប៊ី)',
+ 'en_GS' => 'អង់គ្លេស (កោះហ្សកហ្ស៊ីខាងត្បូង និង សង់វិចខាងត្បូង)',
'en_GU' => 'អង់គ្លេស (ហ្គាំ)',
'en_GY' => 'អង់គ្លេស (ហ្គីយ៉ាន)',
'en_HK' => 'អង់គ្លេស (ហុងកុង តំបន់រដ្ឋបាលពិសេសចិន)',
+ 'en_HU' => 'អង់គ្លេស (ហុងគ្រី)',
'en_ID' => 'អង់គ្លេស (ឥណ្ឌូណេស៊ី)',
'en_IE' => 'អង់គ្លេស (អៀរឡង់)',
'en_IL' => 'អង់គ្លេស (អ៊ីស្រាអែល)',
'en_IM' => 'អង់គ្លេស (អែលអុហ្វមែន)',
'en_IN' => 'អង់គ្លេស (ឥណ្ឌា)',
'en_IO' => 'អង់គ្លេស (ដែនដីអង់គ្លេសនៅមហាសមុទ្រឥណ្ឌា)',
+ 'en_IT' => 'អង់គ្លេស (អ៊ីតាលី)',
'en_JE' => 'អង់គ្លេស (ជើស៊ី)',
'en_JM' => 'អង់គ្លេស (ហ្សាម៉ាអ៊ីក)',
'en_KE' => 'អង់គ្លេស (កេនយ៉ា)',
@@ -167,15 +173,19 @@
'en_NF' => 'អង់គ្លេស (កោះណ័រហ្វក់)',
'en_NG' => 'អង់គ្លេស (នីហ្សេរីយ៉ា)',
'en_NL' => 'អង់គ្លេស (ហូឡង់)',
+ 'en_NO' => 'អង់គ្លេស (ន័រវែស)',
'en_NR' => 'អង់គ្លេស (ណូរូ)',
'en_NU' => 'អង់គ្លេស (ណៀ)',
'en_NZ' => 'អង់គ្លេស (នូវែលសេឡង់)',
'en_PG' => 'អង់គ្លេស (ប៉ាពូអាស៊ីនូវែលហ្គីណេ)',
'en_PH' => 'អង់គ្លេស (ហ្វ៊ីលីពីន)',
'en_PK' => 'អង់គ្លេស (ប៉ាគីស្ថាន)',
+ 'en_PL' => 'អង់គ្លេស (ប៉ូឡូញ)',
'en_PN' => 'អង់គ្លេស (កោះភីតកាន)',
'en_PR' => 'អង់គ្លេស (ព័រតូរីកូ)',
+ 'en_PT' => 'អង់គ្លេស (ព័រទុយហ្កាល់)',
'en_PW' => 'អង់គ្លេស (ផៅឡូ)',
+ 'en_RO' => 'អង់គ្លេស (រូម៉ានី)',
'en_RW' => 'អង់គ្លេស (រវ៉ាន់ដា)',
'en_SB' => 'អង់គ្លេស (កោះសូឡូម៉ុង)',
'en_SC' => 'អង់គ្លេស (សីស្ហែល)',
@@ -184,6 +194,7 @@
'en_SG' => 'អង់គ្លេស (សិង្ហបុរី)',
'en_SH' => 'អង់គ្លេស (សង់ហេឡេណា)',
'en_SI' => 'អង់គ្លេស (ស្លូវេនី)',
+ 'en_SK' => 'អង់គ្លេស (ស្លូវ៉ាគី)',
'en_SL' => 'អង់គ្លេស (សៀរ៉ាឡេអូន)',
'en_SS' => 'អង់គ្លេស (ស៊ូដង់ខាងត្បូង)',
'en_SX' => 'អង់គ្លេស (សីងម៉ាធីន)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/kn.php b/src/Symfony/Component/Intl/Resources/data/locales/kn.php
index 1e06458baee66..ae81ca3499017 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/kn.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/kn.php
@@ -121,29 +121,35 @@
'en_CM' => 'ಇಂಗ್ಲಿಷ್ (ಕ್ಯಾಮರೂನ್)',
'en_CX' => 'ಇಂಗ್ಲಿಷ್ (ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ)',
'en_CY' => 'ಇಂಗ್ಲಿಷ್ (ಸೈಪ್ರಸ್)',
+ 'en_CZ' => 'ಇಂಗ್ಲಿಷ್ (ಝೆಕಿಯಾ)',
'en_DE' => 'ಇಂಗ್ಲಿಷ್ (ಜರ್ಮನಿ)',
'en_DK' => 'ಇಂಗ್ಲಿಷ್ (ಡೆನ್ಮಾರ್ಕ್)',
'en_DM' => 'ಇಂಗ್ಲಿಷ್ (ಡೊಮಿನಿಕಾ)',
'en_ER' => 'ಇಂಗ್ಲಿಷ್ (ಎರಿಟ್ರಿಯಾ)',
+ 'en_ES' => 'ಇಂಗ್ಲಿಷ್ (ಸ್ಪೇನ್)',
'en_FI' => 'ಇಂಗ್ಲಿಷ್ (ಫಿನ್ಲ್ಯಾಂಡ್)',
'en_FJ' => 'ಇಂಗ್ಲಿಷ್ (ಫಿಜಿ)',
'en_FK' => 'ಇಂಗ್ಲಿಷ್ (ಫಾಕ್ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು)',
'en_FM' => 'ಇಂಗ್ಲಿಷ್ (ಮೈಕ್ರೋನೇಶಿಯಾ)',
+ 'en_FR' => 'ಇಂಗ್ಲಿಷ್ (ಫ್ರಾನ್ಸ್)',
'en_GB' => 'ಇಂಗ್ಲಿಷ್ (ಯುನೈಟೆಡ್ ಕಿಂಗ್ಡಮ್)',
'en_GD' => 'ಇಂಗ್ಲಿಷ್ (ಗ್ರೆನೆಡಾ)',
'en_GG' => 'ಇಂಗ್ಲಿಷ್ (ಗುರ್ನ್ಸೆ)',
'en_GH' => 'ಇಂಗ್ಲಿಷ್ (ಘಾನಾ)',
'en_GI' => 'ಇಂಗ್ಲಿಷ್ (ಗಿಬ್ರಾಲ್ಟರ್)',
'en_GM' => 'ಇಂಗ್ಲಿಷ್ (ಗ್ಯಾಂಬಿಯಾ)',
+ 'en_GS' => 'ಇಂಗ್ಲಿಷ್ (ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ್ಯಾಂಡ್ವಿಚ್ ದ್ವೀಪಗಳು)',
'en_GU' => 'ಇಂಗ್ಲಿಷ್ (ಗುವಾಮ್)',
'en_GY' => 'ಇಂಗ್ಲಿಷ್ (ಗಯಾನಾ)',
'en_HK' => 'ಇಂಗ್ಲಿಷ್ (ಹಾಂಗ್ ಕಾಂಗ್ ಎಸ್ಎಆರ್ ಚೈನಾ)',
+ 'en_HU' => 'ಇಂಗ್ಲಿಷ್ (ಹಂಗೇರಿ)',
'en_ID' => 'ಇಂಗ್ಲಿಷ್ (ಇಂಡೋನೇಶಿಯಾ)',
'en_IE' => 'ಇಂಗ್ಲಿಷ್ (ಐರ್ಲೆಂಡ್)',
'en_IL' => 'ಇಂಗ್ಲಿಷ್ (ಇಸ್ರೇಲ್)',
'en_IM' => 'ಇಂಗ್ಲಿಷ್ (ಐಲ್ ಆಫ್ ಮ್ಯಾನ್)',
'en_IN' => 'ಇಂಗ್ಲಿಷ್ (ಭಾರತ)',
'en_IO' => 'ಇಂಗ್ಲಿಷ್ (ಬ್ರಿಟೀಷ್ ಹಿಂದೂ ಮಹಾಸಾಗರದ ಪ್ರದೇಶ)',
+ 'en_IT' => 'ಇಂಗ್ಲಿಷ್ (ಇಟಲಿ)',
'en_JE' => 'ಇಂಗ್ಲಿಷ್ (ಜೆರ್ಸಿ)',
'en_JM' => 'ಇಂಗ್ಲಿಷ್ (ಜಮೈಕಾ)',
'en_KE' => 'ಇಂಗ್ಲಿಷ್ (ಕೀನ್ಯಾ)',
@@ -167,15 +173,19 @@
'en_NF' => 'ಇಂಗ್ಲಿಷ್ (ನಾರ್ಫೋಕ್ ದ್ವೀಪ)',
'en_NG' => 'ಇಂಗ್ಲಿಷ್ (ನೈಜೀರಿಯಾ)',
'en_NL' => 'ಇಂಗ್ಲಿಷ್ (ನೆದರ್ಲ್ಯಾಂಡ್ಸ್)',
+ 'en_NO' => 'ಇಂಗ್ಲಿಷ್ (ನಾರ್ವೆ)',
'en_NR' => 'ಇಂಗ್ಲಿಷ್ (ನೌರು)',
'en_NU' => 'ಇಂಗ್ಲಿಷ್ (ನಿಯು)',
'en_NZ' => 'ಇಂಗ್ಲಿಷ್ (ನ್ಯೂಜಿಲೆಂಡ್)',
'en_PG' => 'ಇಂಗ್ಲಿಷ್ (ಪಪುವಾ ನ್ಯೂಗಿನಿಯಾ)',
'en_PH' => 'ಇಂಗ್ಲಿಷ್ (ಫಿಲಿಫೈನ್ಸ್)',
'en_PK' => 'ಇಂಗ್ಲಿಷ್ (ಪಾಕಿಸ್ತಾನ)',
+ 'en_PL' => 'ಇಂಗ್ಲಿಷ್ (ಪೋಲ್ಯಾಂಡ್)',
'en_PN' => 'ಇಂಗ್ಲಿಷ್ (ಪಿಟ್ಕೈರ್ನ್ ದ್ವೀಪಗಳು)',
'en_PR' => 'ಇಂಗ್ಲಿಷ್ (ಪ್ಯೂರ್ಟೋ ರಿಕೊ)',
+ 'en_PT' => 'ಇಂಗ್ಲಿಷ್ (ಪೋರ್ಚುಗಲ್)',
'en_PW' => 'ಇಂಗ್ಲಿಷ್ (ಪಲಾವು)',
+ 'en_RO' => 'ಇಂಗ್ಲಿಷ್ (ರೊಮೇನಿಯಾ)',
'en_RW' => 'ಇಂಗ್ಲಿಷ್ (ರುವಾಂಡಾ)',
'en_SB' => 'ಇಂಗ್ಲಿಷ್ (ಸಾಲೊಮನ್ ದ್ವೀಪಗಳು)',
'en_SC' => 'ಇಂಗ್ಲಿಷ್ (ಸೀಶೆಲ್ಲೆಸ್)',
@@ -184,6 +194,7 @@
'en_SG' => 'ಇಂಗ್ಲಿಷ್ (ಸಿಂಗಪುರ್)',
'en_SH' => 'ಇಂಗ್ಲಿಷ್ (ಸೇಂಟ್ ಹೆಲೆನಾ)',
'en_SI' => 'ಇಂಗ್ಲಿಷ್ (ಸ್ಲೋವೇನಿಯಾ)',
+ 'en_SK' => 'ಇಂಗ್ಲಿಷ್ (ಸ್ಲೊವಾಕಿಯಾ)',
'en_SL' => 'ಇಂಗ್ಲಿಷ್ (ಸಿಯೆರ್ರಾ ಲಿಯೋನ್)',
'en_SS' => 'ಇಂಗ್ಲಿಷ್ (ದಕ್ಷಿಣ ಸುಡಾನ್)',
'en_SX' => 'ಇಂಗ್ಲಿಷ್ (ಸಿಂಟ್ ಮಾರ್ಟೆನ್)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ko.php b/src/Symfony/Component/Intl/Resources/data/locales/ko.php
index 6310a1dc7e9fb..361cac880efd4 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ko.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ko.php
@@ -121,29 +121,35 @@
'en_CM' => '영어(카메룬)',
'en_CX' => '영어(크리스마스섬)',
'en_CY' => '영어(키프로스)',
+ 'en_CZ' => '영어(체코)',
'en_DE' => '영어(독일)',
'en_DK' => '영어(덴마크)',
'en_DM' => '영어(도미니카)',
'en_ER' => '영어(에리트리아)',
+ 'en_ES' => '영어(스페인)',
'en_FI' => '영어(핀란드)',
'en_FJ' => '영어(피지)',
'en_FK' => '영어(포클랜드 제도)',
'en_FM' => '영어(미크로네시아)',
+ 'en_FR' => '영어(프랑스)',
'en_GB' => '영어(영국)',
'en_GD' => '영어(그레나다)',
'en_GG' => '영어(건지)',
'en_GH' => '영어(가나)',
'en_GI' => '영어(지브롤터)',
'en_GM' => '영어(감비아)',
+ 'en_GS' => '영어(사우스조지아 사우스샌드위치 제도)',
'en_GU' => '영어(괌)',
'en_GY' => '영어(가이아나)',
'en_HK' => '영어(홍콩[중국 특별행정구])',
+ 'en_HU' => '영어(헝가리)',
'en_ID' => '영어(인도네시아)',
'en_IE' => '영어(아일랜드)',
'en_IL' => '영어(이스라엘)',
'en_IM' => '영어(맨섬)',
'en_IN' => '영어(인도)',
'en_IO' => '영어(영국령 인도양 지역)',
+ 'en_IT' => '영어(이탈리아)',
'en_JE' => '영어(저지)',
'en_JM' => '영어(자메이카)',
'en_KE' => '영어(케냐)',
@@ -167,15 +173,19 @@
'en_NF' => '영어(노퍽섬)',
'en_NG' => '영어(나이지리아)',
'en_NL' => '영어(네덜란드)',
+ 'en_NO' => '영어(노르웨이)',
'en_NR' => '영어(나우루)',
'en_NU' => '영어(니우에)',
'en_NZ' => '영어(뉴질랜드)',
'en_PG' => '영어(파푸아뉴기니)',
'en_PH' => '영어(필리핀)',
'en_PK' => '영어(파키스탄)',
+ 'en_PL' => '영어(폴란드)',
'en_PN' => '영어(핏케언 제도)',
'en_PR' => '영어(푸에르토리코)',
+ 'en_PT' => '영어(포르투갈)',
'en_PW' => '영어(팔라우)',
+ 'en_RO' => '영어(루마니아)',
'en_RW' => '영어(르완다)',
'en_SB' => '영어(솔로몬 제도)',
'en_SC' => '영어(세이셸)',
@@ -184,6 +194,7 @@
'en_SG' => '영어(싱가포르)',
'en_SH' => '영어(세인트헬레나)',
'en_SI' => '영어(슬로베니아)',
+ 'en_SK' => '영어(슬로바키아)',
'en_SL' => '영어(시에라리온)',
'en_SS' => '영어(남수단)',
'en_SX' => '영어(신트마르턴)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ks.php b/src/Symfony/Component/Intl/Resources/data/locales/ks.php
index de1a105d9ab83..3319ba86cb728 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ks.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ks.php
@@ -121,28 +121,34 @@
'en_CM' => 'اَنگیٖزؠ (کیمِروٗن)',
'en_CX' => 'اَنگیٖزؠ (کرِسمَس جٔزیٖرٕ)',
'en_CY' => 'اَنگیٖزؠ (سائپرس)',
+ 'en_CZ' => 'اَنگیٖزؠ (چیکیا)',
'en_DE' => 'اَنگیٖزؠ (جرمٔنی)',
'en_DK' => 'اَنگیٖزؠ (ڈینمارٕک)',
'en_DM' => 'اَنگیٖزؠ (ڈومِنِکا)',
'en_ER' => 'اَنگیٖزؠ (اِرٕٹِیا)',
+ 'en_ES' => 'اَنگیٖزؠ (سٕپین)',
'en_FI' => 'اَنگیٖزؠ (فِن لینڈ)',
'en_FJ' => 'اَنگیٖزؠ (فِجی)',
'en_FK' => 'اَنگیٖزؠ (فٕلاکلینڑ جٔزیٖرٕ)',
'en_FM' => 'اَنگیٖزؠ (مائیکرونیشیا)',
+ 'en_FR' => 'اَنگیٖزؠ (فرانس)',
'en_GB' => 'اَنگیٖزؠ (متحدہ مملِکت)',
'en_GD' => 'اَنگیٖزؠ (گرینیڈا)',
'en_GG' => 'اَنگیٖزؠ (گورنسے)',
'en_GH' => 'اَنگیٖزؠ (گانا)',
'en_GI' => 'اَنگیٖزؠ (جِبرالٹَر)',
'en_GM' => 'اَنگیٖزؠ (گَمبِیا)',
+ 'en_GS' => 'اَنگیٖزؠ (جنوٗبی جارجِیا تہٕ جنوٗبی سینڑوٕچ جٔزیٖرٕ)',
'en_GU' => 'اَنگیٖزؠ (گُوام)',
'en_GY' => 'اَنگیٖزؠ (گُیانا)',
'en_HK' => 'اَنگیٖزؠ (ہانگ کانگ ایس اے آر چیٖن)',
+ 'en_HU' => 'اَنگیٖزؠ (ہَنگری)',
'en_ID' => 'اَنگیٖزؠ (انڈونیشیا)',
'en_IE' => 'اَنگیٖزؠ (اَیَرلینڑ)',
'en_IL' => 'اَنگیٖزؠ (اسرا ییل)',
'en_IM' => 'اَنگیٖزؠ (آیِل آف مین)',
'en_IN' => 'اَنگیٖزؠ (ہِندوستان)',
+ 'en_IT' => 'اَنگیٖزؠ (اِٹلی)',
'en_JE' => 'اَنگیٖزؠ (جٔرسی)',
'en_JM' => 'اَنگیٖزؠ (جَمایکا)',
'en_KE' => 'اَنگیٖزؠ (کِنیا)',
@@ -166,15 +172,19 @@
'en_NF' => 'اَنگیٖزؠ (نارفاک جٔزیٖرٕ)',
'en_NG' => 'اَنگیٖزؠ (نایجیرِیا)',
'en_NL' => 'اَنگیٖزؠ (نیٖدَرلینڑ)',
+ 'en_NO' => 'اَنگیٖزؠ (ناروے)',
'en_NR' => 'اَنگیٖزؠ (نارووٗ)',
'en_NU' => 'اَنگیٖزؠ (نیوٗ)',
'en_NZ' => 'اَنگیٖزؠ (نیوزی لینڈ)',
'en_PG' => 'اَنگیٖزؠ (پاپُوا نیوٗ گیٖنی)',
'en_PH' => 'اَنگیٖزؠ (فلپائن)',
'en_PK' => 'اَنگیٖزؠ (پاکِستان)',
+ 'en_PL' => 'اَنگیٖزؠ (پولینڈ)',
'en_PN' => 'اَنگیٖزؠ (پِٹکیرٕنؠ جٔزیٖرٕ)',
'en_PR' => 'اَنگیٖزؠ (پٔرٹو رِکو)',
+ 'en_PT' => 'اَنگیٖزؠ (پُرتِگال)',
'en_PW' => 'اَنگیٖزؠ (پَلاو)',
+ 'en_RO' => 'اَنگیٖزؠ (رومانِیا)',
'en_RW' => 'اَنگیٖزؠ (روٗوانڈا)',
'en_SB' => 'اَنگیٖزؠ (سولامان جٔزیٖرٕ)',
'en_SC' => 'اَنگیٖزؠ (سیشَلِس)',
@@ -183,6 +193,7 @@
'en_SG' => 'اَنگیٖزؠ (سِنگاپوٗر)',
'en_SH' => 'اَنگیٖزؠ (سینٹ ہؠلِنا)',
'en_SI' => 'اَنگیٖزؠ (سَلووینِیا)',
+ 'en_SK' => 'اَنگیٖزؠ (سَلوواکِیا)',
'en_SL' => 'اَنگیٖزؠ (سیرا لیون)',
'en_SS' => 'اَنگیٖزؠ (جنوبی سوڈان)',
'en_SX' => 'اَنگیٖزؠ (سِنٹ مارٹِن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ks_Deva.php b/src/Symfony/Component/Intl/Resources/data/locales/ks_Deva.php
index 86a9b7907d63c..11590da23ea57 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ks_Deva.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ks_Deva.php
@@ -51,28 +51,34 @@
'en_CM' => 'अंगरिज़ी (کیمِروٗن)',
'en_CX' => 'अंगरिज़ी (کرِسمَس جٔزیٖرٕ)',
'en_CY' => 'अंगरिज़ी (سائپرس)',
+ 'en_CZ' => 'अंगरिज़ी (چیکیا)',
'en_DE' => 'अंगरिज़ी (जर्मन)',
'en_DK' => 'अंगरिज़ी (ڈینمارٕک)',
'en_DM' => 'अंगरिज़ी (ڈومِنِکا)',
'en_ER' => 'अंगरिज़ी (اِرٕٹِیا)',
+ 'en_ES' => 'अंगरिज़ी (سٕپین)',
'en_FI' => 'अंगरिज़ी (فِن لینڈ)',
'en_FJ' => 'अंगरिज़ी (فِجی)',
'en_FK' => 'अंगरिज़ी (فٕلاکلینڑ جٔزیٖرٕ)',
'en_FM' => 'अंगरिज़ी (مائیکرونیشیا)',
+ 'en_FR' => 'अंगरिज़ी (फ्रांस)',
'en_GB' => 'अंगरिज़ी (मुतहीद बादशाहत)',
'en_GD' => 'अंगरिज़ी (گرینیڈا)',
'en_GG' => 'अंगरिज़ी (گورنسے)',
'en_GH' => 'अंगरिज़ी (گانا)',
'en_GI' => 'अंगरिज़ी (جِبرالٹَر)',
'en_GM' => 'अंगरिज़ी (گَمبِیا)',
+ 'en_GS' => 'अंगरिज़ी (جنوٗبی جارجِیا تہٕ جنوٗبی سینڑوٕچ جٔزیٖرٕ)',
'en_GU' => 'अंगरिज़ी (گُوام)',
'en_GY' => 'अंगरिज़ी (گُیانا)',
'en_HK' => 'अंगरिज़ी (ہانگ کانگ ایس اے آر چیٖن)',
+ 'en_HU' => 'अंगरिज़ी (ہَنگری)',
'en_ID' => 'अंगरिज़ी (انڈونیشیا)',
'en_IE' => 'अंगरिज़ी (اَیَرلینڑ)',
'en_IL' => 'अंगरिज़ी (اسرا ییل)',
'en_IM' => 'अंगरिज़ी (آیِل آف مین)',
'en_IN' => 'अंगरिज़ी (हिंदोस्तान)',
+ 'en_IT' => 'अंगरिज़ी (इटली)',
'en_JE' => 'अंगरिज़ी (جٔرسی)',
'en_JM' => 'अंगरिज़ी (جَمایکا)',
'en_KE' => 'अंगरिज़ी (کِنیا)',
@@ -96,15 +102,19 @@
'en_NF' => 'अंगरिज़ी (نارفاک جٔزیٖرٕ)',
'en_NG' => 'अंगरिज़ी (نایجیرِیا)',
'en_NL' => 'अंगरिज़ी (نیٖدَرلینڑ)',
+ 'en_NO' => 'अंगरिज़ी (ناروے)',
'en_NR' => 'अंगरिज़ी (نارووٗ)',
'en_NU' => 'अंगरिज़ी (نیوٗ)',
'en_NZ' => 'अंगरिज़ी (نیوزی لینڈ)',
'en_PG' => 'अंगरिज़ी (پاپُوا نیوٗ گیٖنی)',
'en_PH' => 'अंगरिज़ी (فلپائن)',
'en_PK' => 'अंगरिज़ी (پاکِستان)',
+ 'en_PL' => 'अंगरिज़ी (پولینڈ)',
'en_PN' => 'अंगरिज़ी (پِٹکیرٕنؠ جٔزیٖرٕ)',
'en_PR' => 'अंगरिज़ी (پٔرٹو رِکو)',
+ 'en_PT' => 'अंगरिज़ी (پُرتِگال)',
'en_PW' => 'अंगरिज़ी (پَلاو)',
+ 'en_RO' => 'अंगरिज़ी (رومانِیا)',
'en_RW' => 'अंगरिज़ी (روٗوانڈا)',
'en_SB' => 'अंगरिज़ी (سولامان جٔزیٖرٕ)',
'en_SC' => 'अंगरिज़ी (سیشَلِس)',
@@ -113,6 +123,7 @@
'en_SG' => 'अंगरिज़ी (سِنگاپوٗر)',
'en_SH' => 'अंगरिज़ी (سینٹ ہؠلِنا)',
'en_SI' => 'अंगरिज़ी (سَلووینِیا)',
+ 'en_SK' => 'अंगरिज़ी (سَلوواکِیا)',
'en_SL' => 'अंगरिज़ी (سیرا لیون)',
'en_SS' => 'अंगरिज़ी (جنوبی سوڈان)',
'en_SX' => 'अंगरिज़ी (سِنٹ مارٹِن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ku.php b/src/Symfony/Component/Intl/Resources/data/locales/ku.php
index dabeac60c074d..498ece74e15fc 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ku.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ku.php
@@ -121,29 +121,35 @@
'en_CM' => 'îngilîzî (Kamerûn)',
'en_CX' => 'îngilîzî (Girava Christmasê)',
'en_CY' => 'îngilîzî (Qibris)',
+ 'en_CZ' => 'îngilîzî (Çekya)',
'en_DE' => 'îngilîzî (Almanya)',
'en_DK' => 'îngilîzî (Danîmarka)',
'en_DM' => 'îngilîzî (Domînîka)',
'en_ER' => 'îngilîzî (Erître)',
+ 'en_ES' => 'îngilîzî (Spanya)',
'en_FI' => 'îngilîzî (Fînlenda)',
'en_FJ' => 'îngilîzî (Fîjî)',
'en_FK' => 'îngilîzî (Giravên Falklandê)',
'en_FM' => 'îngilîzî (Mîkronezya)',
+ 'en_FR' => 'îngilîzî (Fransa)',
'en_GB' => 'îngilîzî (Qiralîyeta Yekbûyî)',
'en_GD' => 'îngilîzî (Grenada)',
'en_GG' => 'îngilîzî (Guernsey)',
'en_GH' => 'îngilîzî (Gana)',
'en_GI' => 'îngilîzî (Cebelîtariq)',
'en_GM' => 'îngilîzî (Gambîya)',
+ 'en_GS' => 'îngilîzî (Giravên Georgîyaya Başûr û Sandwicha Başûr)',
'en_GU' => 'îngilîzî (Guam)',
'en_GY' => 'îngilîzî (Guyana)',
'en_HK' => 'îngilîzî (Hong Konga HîT ya Çînê)',
+ 'en_HU' => 'îngilîzî (Macaristan)',
'en_ID' => 'îngilîzî (Endonezya)',
'en_IE' => 'îngilîzî (Îrlanda)',
'en_IL' => 'îngilîzî (Îsraîl)',
'en_IM' => 'îngilîzî (Girava Manê)',
'en_IN' => 'îngilîzî (Hindistan)',
'en_IO' => 'îngilîzî (Herêma Okyanûsa Hindî ya Brîtanyayê)',
+ 'en_IT' => 'îngilîzî (Îtalya)',
'en_JE' => 'îngilîzî (Jersey)',
'en_JM' => 'îngilîzî (Jamaîka)',
'en_KE' => 'îngilîzî (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'îngilîzî (Girava Norfolkê)',
'en_NG' => 'îngilîzî (Nîjerya)',
'en_NL' => 'îngilîzî (Holanda)',
+ 'en_NO' => 'îngilîzî (Norwêc)',
'en_NR' => 'îngilîzî (Naûrû)',
'en_NU' => 'îngilîzî (Niûe)',
'en_NZ' => 'îngilîzî (Zelandaya Nû)',
'en_PG' => 'îngilîzî (Papua Gîneya Nû)',
'en_PH' => 'îngilîzî (Fîlîpîn)',
'en_PK' => 'îngilîzî (Pakistan)',
+ 'en_PL' => 'îngilîzî (Polonya)',
'en_PN' => 'îngilîzî (Giravên Pitcairnê)',
'en_PR' => 'îngilîzî (Porto Rîko)',
+ 'en_PT' => 'îngilîzî (Portûgal)',
'en_PW' => 'îngilîzî (Palau)',
+ 'en_RO' => 'îngilîzî (Romanya)',
'en_RW' => 'îngilîzî (Rwanda)',
'en_SB' => 'îngilîzî (Giravên Solomonê)',
'en_SC' => 'îngilîzî (Seyşel)',
@@ -184,6 +194,7 @@
'en_SG' => 'îngilîzî (Sîngapûr)',
'en_SH' => 'îngilîzî (Saint Helena)',
'en_SI' => 'îngilîzî (Slovenya)',
+ 'en_SK' => 'îngilîzî (Slovakya)',
'en_SL' => 'îngilîzî (Sierra Leone)',
'en_SS' => 'îngilîzî (Sûdana Başûr)',
'en_SX' => 'îngilîzî (Sint Marteen)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ky.php b/src/Symfony/Component/Intl/Resources/data/locales/ky.php
index 8b1d6bfdf919d..a823800edaf92 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ky.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ky.php
@@ -121,29 +121,35 @@
'en_CM' => 'англисче (Камерун)',
'en_CX' => 'англисче (Рождество аралы)',
'en_CY' => 'англисче (Кипр)',
+ 'en_CZ' => 'англисче (Чехия)',
'en_DE' => 'англисче (Германия)',
'en_DK' => 'англисче (Дания)',
'en_DM' => 'англисче (Доминика)',
'en_ER' => 'англисче (Эритрея)',
+ 'en_ES' => 'англисче (Испания)',
'en_FI' => 'англисче (Финляндия)',
'en_FJ' => 'англисче (Фиджи)',
'en_FK' => 'англисче (Фолкленд аралдары)',
'en_FM' => 'англисче (Микронезия)',
+ 'en_FR' => 'англисче (Франция)',
'en_GB' => 'англисче (Улуу Британия)',
'en_GD' => 'англисче (Гренада)',
'en_GG' => 'англисче (Гернси)',
'en_GH' => 'англисче (Гана)',
'en_GI' => 'англисче (Гибралтар)',
'en_GM' => 'англисче (Гамбия)',
+ 'en_GS' => 'англисче (Түштүк Жоржия жана Түштүк Сэндвич аралдары)',
'en_GU' => 'англисче (Гуам)',
'en_GY' => 'англисче (Гайана)',
'en_HK' => 'англисче (Гонконг Кытай ААА)',
+ 'en_HU' => 'англисче (Венгрия)',
'en_ID' => 'англисче (Индонезия)',
'en_IE' => 'англисче (Ирландия)',
'en_IL' => 'англисче (Израиль)',
'en_IM' => 'англисче (Мэн аралы)',
'en_IN' => 'англисче (Индия)',
'en_IO' => 'англисче (Инди океанындагы Британ территориясы)',
+ 'en_IT' => 'англисче (Италия)',
'en_JE' => 'англисче (Жерси)',
'en_JM' => 'англисче (Ямайка)',
'en_KE' => 'англисче (Кения)',
@@ -167,15 +173,19 @@
'en_NF' => 'англисче (Норфолк аралы)',
'en_NG' => 'англисче (Нигерия)',
'en_NL' => 'англисче (Нидерланд)',
+ 'en_NO' => 'англисче (Норвегия)',
'en_NR' => 'англисче (Науру)',
'en_NU' => 'англисче (Ниуэ)',
'en_NZ' => 'англисче (Жаңы Зеландия)',
'en_PG' => 'англисче (Папуа-Жаңы Гвинея)',
'en_PH' => 'англисче (Филиппин)',
'en_PK' => 'англисче (Пакистан)',
+ 'en_PL' => 'англисче (Польша)',
'en_PN' => 'англисче (Питкэрн аралдары)',
'en_PR' => 'англисче (Пуэрто-Рико)',
+ 'en_PT' => 'англисче (Португалия)',
'en_PW' => 'англисче (Палау)',
+ 'en_RO' => 'англисче (Румыния)',
'en_RW' => 'англисче (Руанда)',
'en_SB' => 'англисче (Соломон аралдары)',
'en_SC' => 'англисче (Сейшел аралдары)',
@@ -184,6 +194,7 @@
'en_SG' => 'англисче (Сингапур)',
'en_SH' => 'англисче (Ыйык Елена)',
'en_SI' => 'англисче (Словения)',
+ 'en_SK' => 'англисче (Словакия)',
'en_SL' => 'англисче (Сьерра-Леоне)',
'en_SS' => 'англисче (Түштүк Судан)',
'en_SX' => 'англисче (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/lb.php b/src/Symfony/Component/Intl/Resources/data/locales/lb.php
index 9192eb856f9c1..5d6e9b5f19c3f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/lb.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/lb.php
@@ -121,28 +121,34 @@
'en_CM' => 'Englesch (Kamerun)',
'en_CX' => 'Englesch (Chrëschtdagsinsel)',
'en_CY' => 'Englesch (Zypern)',
+ 'en_CZ' => 'Englesch (Tschechien)',
'en_DE' => 'Englesch (Däitschland)',
'en_DK' => 'Englesch (Dänemark)',
'en_DM' => 'Englesch (Dominica)',
'en_ER' => 'Englesch (Eritrea)',
+ 'en_ES' => 'Englesch (Spanien)',
'en_FI' => 'Englesch (Finnland)',
'en_FJ' => 'Englesch (Fidschi)',
'en_FK' => 'Englesch (Falklandinselen)',
'en_FM' => 'Englesch (Mikronesien)',
+ 'en_FR' => 'Englesch (Frankräich)',
'en_GB' => 'Englesch (Groussbritannien)',
'en_GD' => 'Englesch (Grenada)',
'en_GG' => 'Englesch (Guernsey)',
'en_GH' => 'Englesch (Ghana)',
'en_GI' => 'Englesch (Gibraltar)',
'en_GM' => 'Englesch (Gambia)',
+ 'en_GS' => 'Englesch (Südgeorgien an déi Südlech Sandwichinselen)',
'en_GU' => 'Englesch (Guam)',
'en_GY' => 'Englesch (Guyana)',
'en_HK' => 'Englesch (Spezialverwaltungszon Hong Kong)',
+ 'en_HU' => 'Englesch (Ungarn)',
'en_ID' => 'Englesch (Indonesien)',
'en_IE' => 'Englesch (Irland)',
'en_IL' => 'Englesch (Israel)',
'en_IM' => 'Englesch (Isle of Man)',
'en_IN' => 'Englesch (Indien)',
+ 'en_IT' => 'Englesch (Italien)',
'en_JE' => 'Englesch (Jersey)',
'en_JM' => 'Englesch (Jamaika)',
'en_KE' => 'Englesch (Kenia)',
@@ -166,15 +172,19 @@
'en_NF' => 'Englesch (Norfolkinsel)',
'en_NG' => 'Englesch (Nigeria)',
'en_NL' => 'Englesch (Holland)',
+ 'en_NO' => 'Englesch (Norwegen)',
'en_NR' => 'Englesch (Nauru)',
'en_NU' => 'Englesch (Niue)',
'en_NZ' => 'Englesch (Neiséiland)',
'en_PG' => 'Englesch (Papua-Neiguinea)',
'en_PH' => 'Englesch (Philippinnen)',
'en_PK' => 'Englesch (Pakistan)',
+ 'en_PL' => 'Englesch (Polen)',
'en_PN' => 'Englesch (Pitcairninselen)',
'en_PR' => 'Englesch (Puerto Rico)',
+ 'en_PT' => 'Englesch (Portugal)',
'en_PW' => 'Englesch (Palau)',
+ 'en_RO' => 'Englesch (Rumänien)',
'en_RW' => 'Englesch (Ruanda)',
'en_SB' => 'Englesch (Salomonen)',
'en_SC' => 'Englesch (Seychellen)',
@@ -183,6 +193,7 @@
'en_SG' => 'Englesch (Singapur)',
'en_SH' => 'Englesch (St. Helena)',
'en_SI' => 'Englesch (Slowenien)',
+ 'en_SK' => 'Englesch (Slowakei)',
'en_SL' => 'Englesch (Sierra Leone)',
'en_SS' => 'Englesch (Südsudan)',
'en_SX' => 'Englesch (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/lg.php b/src/Symfony/Component/Intl/Resources/data/locales/lg.php
index 4199d4b607f85..0da7e0faff1d7 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/lg.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/lg.php
@@ -71,14 +71,17 @@
'en_CK' => 'Lungereza (Bizinga bya Kkuki)',
'en_CM' => 'Lungereza (Kameruuni)',
'en_CY' => 'Lungereza (Sipuriya)',
+ 'en_CZ' => 'Lungereza (Lipubulika ya Ceeka)',
'en_DE' => 'Lungereza (Budaaki)',
'en_DK' => 'Lungereza (Denimaaka)',
'en_DM' => 'Lungereza (Dominika)',
'en_ER' => 'Lungereza (Eritureya)',
+ 'en_ES' => 'Lungereza (Sipeyini)',
'en_FI' => 'Lungereza (Finilandi)',
'en_FJ' => 'Lungereza (Fiji)',
'en_FK' => 'Lungereza (Bizinga by’eFalikalandi)',
'en_FM' => 'Lungereza (Mikuronezya)',
+ 'en_FR' => 'Lungereza (Bufalansa)',
'en_GB' => 'Lungereza (Bungereza)',
'en_GD' => 'Lungereza (Gurenada)',
'en_GH' => 'Lungereza (Gana)',
@@ -86,10 +89,12 @@
'en_GM' => 'Lungereza (Gambya)',
'en_GU' => 'Lungereza (Gwamu)',
'en_GY' => 'Lungereza (Gayana)',
+ 'en_HU' => 'Lungereza (Hangare)',
'en_ID' => 'Lungereza (Yindonezya)',
'en_IE' => 'Lungereza (Ayalandi)',
'en_IL' => 'Lungereza (Yisirayeri)',
'en_IN' => 'Lungereza (Buyindi)',
+ 'en_IT' => 'Lungereza (Yitale)',
'en_JM' => 'Lungereza (Jamayika)',
'en_KE' => 'Lungereza (Kenya)',
'en_KI' => 'Lungereza (Kiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'Lungereza (Kizinga ky’eNorofoko)',
'en_NG' => 'Lungereza (Nayijerya)',
'en_NL' => 'Lungereza (Holandi)',
+ 'en_NO' => 'Lungereza (Nowe)',
'en_NR' => 'Lungereza (Nawuru)',
'en_NU' => 'Lungereza (Niyuwe)',
'en_NZ' => 'Lungereza (Niyuziirandi)',
'en_PG' => 'Lungereza (Papwa Nyugini)',
'en_PH' => 'Lungereza (Bizinga bya Firipino)',
'en_PK' => 'Lungereza (Pakisitaani)',
+ 'en_PL' => 'Lungereza (Polandi)',
'en_PN' => 'Lungereza (Pitikeeni)',
'en_PR' => 'Lungereza (Potoriko)',
+ 'en_PT' => 'Lungereza (Potugaali)',
'en_PW' => 'Lungereza (Palawu)',
+ 'en_RO' => 'Lungereza (Lomaniya)',
'en_RW' => 'Lungereza (Rwanda)',
'en_SB' => 'Lungereza (Bizanga by’eSolomooni)',
'en_SC' => 'Lungereza (Sesere)',
@@ -128,6 +137,7 @@
'en_SG' => 'Lungereza (Singapowa)',
'en_SH' => 'Lungereza (Senti Herena)',
'en_SI' => 'Lungereza (Sirovenya)',
+ 'en_SK' => 'Lungereza (Sirovakya)',
'en_SL' => 'Lungereza (Siyeralewone)',
'en_SZ' => 'Lungereza (Swazirandi)',
'en_TC' => 'Lungereza (Bizinga by’eTaaka ne Kayikosi)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ln.php b/src/Symfony/Component/Intl/Resources/data/locales/ln.php
index 6b5a85573208b..0b9f2353c4db0 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ln.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ln.php
@@ -71,26 +71,32 @@
'en_CK' => 'lingɛlɛ́sa (Bisanga bya Kookɛ)',
'en_CM' => 'lingɛlɛ́sa (Kamɛrune)',
'en_CY' => 'lingɛlɛ́sa (Sípɛlɛ)',
+ 'en_CZ' => 'lingɛlɛ́sa (Shekia)',
'en_DE' => 'lingɛlɛ́sa (Alemani)',
'en_DK' => 'lingɛlɛ́sa (Danɛmarike)',
'en_DM' => 'lingɛlɛ́sa (Domínike)',
'en_ER' => 'lingɛlɛ́sa (Elitelɛ)',
+ 'en_ES' => 'lingɛlɛ́sa (Esipanye)',
'en_FI' => 'lingɛlɛ́sa (Filandɛ)',
'en_FJ' => 'lingɛlɛ́sa (Fidzi)',
'en_FK' => 'lingɛlɛ́sa (Bisanga bya Maluni)',
'en_FM' => 'lingɛlɛ́sa (Mikronezi)',
+ 'en_FR' => 'lingɛlɛ́sa (Falánsɛ)',
'en_GB' => 'lingɛlɛ́sa (Angɛlɛtɛ́lɛ)',
'en_GD' => 'lingɛlɛ́sa (Gelenadɛ)',
'en_GG' => 'lingɛlɛ́sa (Guernesey)',
'en_GH' => 'lingɛlɛ́sa (Gana)',
'en_GI' => 'lingɛlɛ́sa (Zibatalɛ)',
'en_GM' => 'lingɛlɛ́sa (Gambi)',
+ 'en_GS' => 'lingɛlɛ́sa (Îles de Géorgie du Sud et Sandwich du Sud)',
'en_GU' => 'lingɛlɛ́sa (Gwamɛ)',
'en_GY' => 'lingɛlɛ́sa (Giyane)',
+ 'en_HU' => 'lingɛlɛ́sa (Ongili)',
'en_ID' => 'lingɛlɛ́sa (Indonezi)',
'en_IE' => 'lingɛlɛ́sa (Irelandɛ)',
'en_IL' => 'lingɛlɛ́sa (Isirayelɛ)',
'en_IN' => 'lingɛlɛ́sa (Índɛ)',
+ 'en_IT' => 'lingɛlɛ́sa (Itali)',
'en_JM' => 'lingɛlɛ́sa (Zamaiki)',
'en_KE' => 'lingɛlɛ́sa (Kenya)',
'en_KI' => 'lingɛlɛ́sa (Kiribati)',
@@ -112,15 +118,19 @@
'en_NF' => 'lingɛlɛ́sa (Esanga Norfokɛ)',
'en_NG' => 'lingɛlɛ́sa (Nizerya)',
'en_NL' => 'lingɛlɛ́sa (Olandɛ)',
+ 'en_NO' => 'lingɛlɛ́sa (Norivezɛ)',
'en_NR' => 'lingɛlɛ́sa (Nauru)',
'en_NU' => 'lingɛlɛ́sa (Nyué)',
'en_NZ' => 'lingɛlɛ́sa (Zelandɛ ya sika)',
'en_PG' => 'lingɛlɛ́sa (Papwazi Ginɛ ya sika)',
'en_PH' => 'lingɛlɛ́sa (Filipinɛ)',
'en_PK' => 'lingɛlɛ́sa (Pakisitá)',
+ 'en_PL' => 'lingɛlɛ́sa (Poloni)',
'en_PN' => 'lingɛlɛ́sa (Pikairni)',
'en_PR' => 'lingɛlɛ́sa (Pɔtoriko)',
+ 'en_PT' => 'lingɛlɛ́sa (Putúlugɛsi)',
'en_PW' => 'lingɛlɛ́sa (Palau)',
+ 'en_RO' => 'lingɛlɛ́sa (Romani)',
'en_RW' => 'lingɛlɛ́sa (Rwanda)',
'en_SB' => 'lingɛlɛ́sa (Bisanga Solomɔ)',
'en_SC' => 'lingɛlɛ́sa (Sɛshɛlɛ)',
@@ -129,6 +139,7 @@
'en_SG' => 'lingɛlɛ́sa (Singapurɛ)',
'en_SH' => 'lingɛlɛ́sa (Sántu eleni)',
'en_SI' => 'lingɛlɛ́sa (Siloveni)',
+ 'en_SK' => 'lingɛlɛ́sa (Silovaki)',
'en_SL' => 'lingɛlɛ́sa (Siera Leonɛ)',
'en_SZ' => 'lingɛlɛ́sa (Swazilandi)',
'en_TC' => 'lingɛlɛ́sa (Bisanga bya Turki mpé Kaiko)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/lo.php b/src/Symfony/Component/Intl/Resources/data/locales/lo.php
index 7931dfaf9a37b..2f551a2141492 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/lo.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/lo.php
@@ -121,29 +121,35 @@
'en_CM' => 'ອັງກິດ (ຄາເມຣູນ)',
'en_CX' => 'ອັງກິດ (ເກາະຄຣິສມາດ)',
'en_CY' => 'ອັງກິດ (ໄຊປຣັສ)',
+ 'en_CZ' => 'ອັງກິດ (ເຊັກເຊຍ)',
'en_DE' => 'ອັງກິດ (ເຢຍລະມັນ)',
'en_DK' => 'ອັງກິດ (ເດນມາກ)',
'en_DM' => 'ອັງກິດ (ໂດມີນິຄາ)',
'en_ER' => 'ອັງກິດ (ເອຣິເທຣຍ)',
+ 'en_ES' => 'ອັງກິດ (ສະເປນ)',
'en_FI' => 'ອັງກິດ (ຟິນແລນ)',
'en_FJ' => 'ອັງກິດ (ຟິຈິ)',
'en_FK' => 'ອັງກິດ (ຫມູ່ເກາະຟອກແລນ)',
'en_FM' => 'ອັງກິດ (ໄມໂຄຣນີເຊຍ)',
+ 'en_FR' => 'ອັງກິດ (ຝຣັ່ງ)',
'en_GB' => 'ອັງກິດ (ສະຫະລາດຊະອະນາຈັກ)',
'en_GD' => 'ອັງກິດ (ເກຣເນດາ)',
'en_GG' => 'ອັງກິດ (ເກີນຊີ)',
'en_GH' => 'ອັງກິດ (ການາ)',
'en_GI' => 'ອັງກິດ (ຈິບບຣອນທາ)',
'en_GM' => 'ອັງກິດ (ສາທາລະນະລັດແກມເບຍ)',
+ 'en_GS' => 'ອັງກິດ (ໝູ່ເກາະ ຈໍເຈຍຕອນໃຕ້ ແລະ ແຊນວິດຕອນໃຕ້)',
'en_GU' => 'ອັງກິດ (ກວາມ)',
'en_GY' => 'ອັງກິດ (ກາຍຢານາ)',
'en_HK' => 'ອັງກິດ (ຮົງກົງ ເຂດປົກຄອງພິເສດ ຈີນ)',
+ 'en_HU' => 'ອັງກິດ (ຮັງກາຣີ)',
'en_ID' => 'ອັງກິດ (ອິນໂດເນເຊຍ)',
'en_IE' => 'ອັງກິດ (ໄອແລນ)',
'en_IL' => 'ອັງກິດ (ອິສຣາເອວ)',
'en_IM' => 'ອັງກິດ (ເອວ ອອບ ແມນ)',
'en_IN' => 'ອັງກິດ (ອິນເດຍ)',
'en_IO' => 'ອັງກິດ (ເຂດແດນອັງກິດໃນມະຫາສະໝຸດອິນເດຍ)',
+ 'en_IT' => 'ອັງກິດ (ອິຕາລີ)',
'en_JE' => 'ອັງກິດ (ເຈີຊີ)',
'en_JM' => 'ອັງກິດ (ຈາໄມຄາ)',
'en_KE' => 'ອັງກິດ (ເຄນຢາ)',
@@ -167,15 +173,19 @@
'en_NF' => 'ອັງກິດ (ເກາະນໍໂຟກ)',
'en_NG' => 'ອັງກິດ (ໄນຈີເຣຍ)',
'en_NL' => 'ອັງກິດ (ເນເທີແລນ)',
+ 'en_NO' => 'ອັງກິດ (ນໍເວ)',
'en_NR' => 'ອັງກິດ (ນາອູຣູ)',
'en_NU' => 'ອັງກິດ (ນີອູເອ)',
'en_NZ' => 'ອັງກິດ (ນິວຊີແລນ)',
'en_PG' => 'ອັງກິດ (ປາປົວນິວກີນີ)',
'en_PH' => 'ອັງກິດ (ຟິລິບປິນ)',
'en_PK' => 'ອັງກິດ (ປາກິດສະຖານ)',
+ 'en_PL' => 'ອັງກິດ (ໂປແລນ)',
'en_PN' => 'ອັງກິດ (ໝູ່ເກາະພິດແຄນ)',
'en_PR' => 'ອັງກິດ (ເພືອໂຕ ຣິໂກ)',
+ 'en_PT' => 'ອັງກິດ (ພອລທູໂກ)',
'en_PW' => 'ອັງກິດ (ປາລາວ)',
+ 'en_RO' => 'ອັງກິດ (ໂຣແມເນຍ)',
'en_RW' => 'ອັງກິດ (ຣວັນດາ)',
'en_SB' => 'ອັງກິດ (ຫມູ່ເກາະໂຊໂລມອນ)',
'en_SC' => 'ອັງກິດ (ເຊເຊວເລສ)',
@@ -184,6 +194,7 @@
'en_SG' => 'ອັງກິດ (ສິງກະໂປ)',
'en_SH' => 'ອັງກິດ (ເຊນ ເຮເລນາ)',
'en_SI' => 'ອັງກິດ (ສະໂລເວເນຍ)',
+ 'en_SK' => 'ອັງກິດ (ສະໂລວາເກຍ)',
'en_SL' => 'ອັງກິດ (ເຊຍຣາ ລີໂອນ)',
'en_SS' => 'ອັງກິດ (ຊູດານໃຕ້)',
'en_SX' => 'ອັງກິດ (ຊິນ ມາເທັນ)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/lt.php b/src/Symfony/Component/Intl/Resources/data/locales/lt.php
index fbd7d3c7b5b09..f0630aef3ec71 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/lt.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/lt.php
@@ -121,29 +121,35 @@
'en_CM' => 'anglų (Kamerūnas)',
'en_CX' => 'anglų (Kalėdų Sala)',
'en_CY' => 'anglų (Kipras)',
+ 'en_CZ' => 'anglų (Čekija)',
'en_DE' => 'anglų (Vokietija)',
'en_DK' => 'anglų (Danija)',
'en_DM' => 'anglų (Dominika)',
'en_ER' => 'anglų (Eritrėja)',
+ 'en_ES' => 'anglų (Ispanija)',
'en_FI' => 'anglų (Suomija)',
'en_FJ' => 'anglų (Fidžis)',
'en_FK' => 'anglų (Folklando Salos)',
'en_FM' => 'anglų (Mikronezija)',
+ 'en_FR' => 'anglų (Prancūzija)',
'en_GB' => 'anglų (Jungtinė Karalystė)',
'en_GD' => 'anglų (Grenada)',
'en_GG' => 'anglų (Gernsis)',
'en_GH' => 'anglų (Gana)',
'en_GI' => 'anglų (Gibraltaras)',
'en_GM' => 'anglų (Gambija)',
+ 'en_GS' => 'anglų (Pietų Džordžija ir Pietų Sandvičo salos)',
'en_GU' => 'anglų (Guamas)',
'en_GY' => 'anglų (Gajana)',
'en_HK' => 'anglų (Ypatingasis Administracinis Kinijos Regionas Honkongas)',
+ 'en_HU' => 'anglų (Vengrija)',
'en_ID' => 'anglų (Indonezija)',
'en_IE' => 'anglų (Airija)',
'en_IL' => 'anglų (Izraelis)',
'en_IM' => 'anglų (Meno Sala)',
'en_IN' => 'anglų (Indija)',
'en_IO' => 'anglų (Indijos Vandenyno Britų Sritis)',
+ 'en_IT' => 'anglų (Italija)',
'en_JE' => 'anglų (Džersis)',
'en_JM' => 'anglų (Jamaika)',
'en_KE' => 'anglų (Kenija)',
@@ -167,15 +173,19 @@
'en_NF' => 'anglų (Norfolko sala)',
'en_NG' => 'anglų (Nigerija)',
'en_NL' => 'anglų (Nyderlandai)',
+ 'en_NO' => 'anglų (Norvegija)',
'en_NR' => 'anglų (Nauru)',
'en_NU' => 'anglų (Niujė)',
'en_NZ' => 'anglų (Naujoji Zelandija)',
'en_PG' => 'anglų (Papua Naujoji Gvinėja)',
'en_PH' => 'anglų (Filipinai)',
'en_PK' => 'anglų (Pakistanas)',
+ 'en_PL' => 'anglų (Lenkija)',
'en_PN' => 'anglų (Pitkerno salos)',
'en_PR' => 'anglų (Puerto Rikas)',
+ 'en_PT' => 'anglų (Portugalija)',
'en_PW' => 'anglų (Palau)',
+ 'en_RO' => 'anglų (Rumunija)',
'en_RW' => 'anglų (Ruanda)',
'en_SB' => 'anglų (Saliamono Salos)',
'en_SC' => 'anglų (Seišeliai)',
@@ -184,6 +194,7 @@
'en_SG' => 'anglų (Singapūras)',
'en_SH' => 'anglų (Šv. Elenos Sala)',
'en_SI' => 'anglų (Slovėnija)',
+ 'en_SK' => 'anglų (Slovakija)',
'en_SL' => 'anglų (Siera Leonė)',
'en_SS' => 'anglų (Pietų Sudanas)',
'en_SX' => 'anglų (Sint Martenas)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/lu.php b/src/Symfony/Component/Intl/Resources/data/locales/lu.php
index 6b8784e213aaf..eda41010e580c 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/lu.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/lu.php
@@ -71,14 +71,17 @@
'en_CK' => 'Lingelesa (Lutanda lua Kookɛ)',
'en_CM' => 'Lingelesa (Kamerune)',
'en_CY' => 'Lingelesa (Shipele)',
+ 'en_CZ' => 'Lingelesa (Ditunga dya Tsheka)',
'en_DE' => 'Lingelesa (Alemanu)',
'en_DK' => 'Lingelesa (Danemalaku)',
'en_DM' => 'Lingelesa (Duminiku)',
'en_ER' => 'Lingelesa (Elitele)',
+ 'en_ES' => 'Lingelesa (Nsipani)',
'en_FI' => 'Lingelesa (Filande)',
'en_FJ' => 'Lingelesa (Fuji)',
'en_FK' => 'Lingelesa (Lutanda lua Maluni)',
'en_FM' => 'Lingelesa (Mikronezi)',
+ 'en_FR' => 'Lingelesa (Nfalanse)',
'en_GB' => 'Lingelesa (Angeletele)',
'en_GD' => 'Lingelesa (Ngelenade)',
'en_GH' => 'Lingelesa (Ngana)',
@@ -86,10 +89,12 @@
'en_GM' => 'Lingelesa (Gambi)',
'en_GU' => 'Lingelesa (Ngwame)',
'en_GY' => 'Lingelesa (Ngiyane)',
+ 'en_HU' => 'Lingelesa (Ongili)',
'en_ID' => 'Lingelesa (Indonezi)',
'en_IE' => 'Lingelesa (Irelande)',
'en_IL' => 'Lingelesa (Isirayele)',
'en_IN' => 'Lingelesa (Inde)',
+ 'en_IT' => 'Lingelesa (Itali)',
'en_JM' => 'Lingelesa (Jamaiki)',
'en_KE' => 'Lingelesa (Kenya)',
'en_KI' => 'Lingelesa (Kiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'Lingelesa (Lutanda lua Norfok)',
'en_NG' => 'Lingelesa (Nijerya)',
'en_NL' => 'Lingelesa (Olandɛ)',
+ 'en_NO' => 'Lingelesa (Noriveje)',
'en_NR' => 'Lingelesa (Nauru)',
'en_NU' => 'Lingelesa (Nyue)',
'en_NZ' => 'Lingelesa (Zelanda wa mumu)',
'en_PG' => 'Lingelesa (Papwazi wa Nginɛ wa mumu)',
'en_PH' => 'Lingelesa (Nfilipi)',
'en_PK' => 'Lingelesa (Pakisita)',
+ 'en_PL' => 'Lingelesa (Mpoloni)',
'en_PN' => 'Lingelesa (Pikairni)',
'en_PR' => 'Lingelesa (Mpotoriku)',
+ 'en_PT' => 'Lingelesa (Mputulugeshi)',
'en_PW' => 'Lingelesa (Palau)',
+ 'en_RO' => 'Lingelesa (Romani)',
'en_RW' => 'Lingelesa (Rwanda)',
'en_SB' => 'Lingelesa (Lutanda lua Solomu)',
'en_SC' => 'Lingelesa (Seshele)',
@@ -128,6 +137,7 @@
'en_SG' => 'Lingelesa (Singapure)',
'en_SH' => 'Lingelesa (Santu eleni)',
'en_SI' => 'Lingelesa (Siloveni)',
+ 'en_SK' => 'Lingelesa (Silovaki)',
'en_SL' => 'Lingelesa (Siera Leone)',
'en_SZ' => 'Lingelesa (Swazilandi)',
'en_TC' => 'Lingelesa (Lutanda lua Tuluki ne Kaiko)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/lv.php b/src/Symfony/Component/Intl/Resources/data/locales/lv.php
index 4e3e4cf1abb86..c66ef57e206e7 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/lv.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/lv.php
@@ -121,29 +121,35 @@
'en_CM' => 'angļu (Kamerūna)',
'en_CX' => 'angļu (Ziemsvētku sala)',
'en_CY' => 'angļu (Kipra)',
+ 'en_CZ' => 'angļu (Čehija)',
'en_DE' => 'angļu (Vācija)',
'en_DK' => 'angļu (Dānija)',
'en_DM' => 'angļu (Dominika)',
'en_ER' => 'angļu (Eritreja)',
+ 'en_ES' => 'angļu (Spānija)',
'en_FI' => 'angļu (Somija)',
'en_FJ' => 'angļu (Fidži)',
'en_FK' => 'angļu (Folklenda salas)',
'en_FM' => 'angļu (Mikronēzija)',
+ 'en_FR' => 'angļu (Francija)',
'en_GB' => 'angļu (Apvienotā Karaliste)',
'en_GD' => 'angļu (Grenāda)',
'en_GG' => 'angļu (Gērnsija)',
'en_GH' => 'angļu (Gana)',
'en_GI' => 'angļu (Gibraltārs)',
'en_GM' => 'angļu (Gambija)',
+ 'en_GS' => 'angļu (Dienviddžordžija un Dienvidsendviču salas)',
'en_GU' => 'angļu (Guama)',
'en_GY' => 'angļu (Gajāna)',
'en_HK' => 'angļu (Ķīnas īpašās pārvaldes apgabals Honkonga)',
+ 'en_HU' => 'angļu (Ungārija)',
'en_ID' => 'angļu (Indonēzija)',
'en_IE' => 'angļu (Īrija)',
'en_IL' => 'angļu (Izraēla)',
'en_IM' => 'angļu (Menas sala)',
'en_IN' => 'angļu (Indija)',
'en_IO' => 'angļu (Indijas okeāna Britu teritorija)',
+ 'en_IT' => 'angļu (Itālija)',
'en_JE' => 'angļu (Džērsija)',
'en_JM' => 'angļu (Jamaika)',
'en_KE' => 'angļu (Kenija)',
@@ -167,15 +173,19 @@
'en_NF' => 'angļu (Norfolkas sala)',
'en_NG' => 'angļu (Nigērija)',
'en_NL' => 'angļu (Nīderlande)',
+ 'en_NO' => 'angļu (Norvēģija)',
'en_NR' => 'angļu (Nauru)',
'en_NU' => 'angļu (Niue)',
'en_NZ' => 'angļu (Jaunzēlande)',
'en_PG' => 'angļu (Papua-Jaungvineja)',
'en_PH' => 'angļu (Filipīnas)',
'en_PK' => 'angļu (Pakistāna)',
+ 'en_PL' => 'angļu (Polija)',
'en_PN' => 'angļu (Pitkērnas salas)',
'en_PR' => 'angļu (Puertoriko)',
+ 'en_PT' => 'angļu (Portugāle)',
'en_PW' => 'angļu (Palau)',
+ 'en_RO' => 'angļu (Rumānija)',
'en_RW' => 'angļu (Ruanda)',
'en_SB' => 'angļu (Zālamana salas)',
'en_SC' => 'angļu (Seišelu salas)',
@@ -184,6 +194,7 @@
'en_SG' => 'angļu (Singapūra)',
'en_SH' => 'angļu (Sv.Helēnas sala)',
'en_SI' => 'angļu (Slovēnija)',
+ 'en_SK' => 'angļu (Slovākija)',
'en_SL' => 'angļu (Sjerraleone)',
'en_SS' => 'angļu (Dienvidsudāna)',
'en_SX' => 'angļu (Sintmārtena)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/meta.php b/src/Symfony/Component/Intl/Resources/data/locales/meta.php
index 77c80539869ea..0b81e1802feca 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/meta.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/meta.php
@@ -121,30 +121,36 @@
'en_CM',
'en_CX',
'en_CY',
+ 'en_CZ',
'en_DE',
'en_DG',
'en_DK',
'en_DM',
'en_ER',
+ 'en_ES',
'en_FI',
'en_FJ',
'en_FK',
'en_FM',
+ 'en_FR',
'en_GB',
'en_GD',
'en_GG',
'en_GH',
'en_GI',
'en_GM',
+ 'en_GS',
'en_GU',
'en_GY',
'en_HK',
+ 'en_HU',
'en_ID',
'en_IE',
'en_IL',
'en_IM',
'en_IN',
'en_IO',
+ 'en_IT',
'en_JE',
'en_JM',
'en_KE',
@@ -169,16 +175,20 @@
'en_NG',
'en_NH',
'en_NL',
+ 'en_NO',
'en_NR',
'en_NU',
'en_NZ',
'en_PG',
'en_PH',
'en_PK',
+ 'en_PL',
'en_PN',
'en_PR',
+ 'en_PT',
'en_PW',
'en_RH',
+ 'en_RO',
'en_RW',
'en_SB',
'en_SC',
@@ -187,6 +197,7 @@
'en_SG',
'en_SH',
'en_SI',
+ 'en_SK',
'en_SL',
'en_SS',
'en_SX',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/mg.php b/src/Symfony/Component/Intl/Resources/data/locales/mg.php
index ac2d976cf8f01..a8ae1299da03d 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/mg.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/mg.php
@@ -71,14 +71,17 @@
'en_CK' => 'Anglisy (Nosy Kook)',
'en_CM' => 'Anglisy (Kamerona)',
'en_CY' => 'Anglisy (Sypra)',
+ 'en_CZ' => 'Anglisy (Repoblikan’i Tseky)',
'en_DE' => 'Anglisy (Alemaina)',
'en_DK' => 'Anglisy (Danmarka)',
'en_DM' => 'Anglisy (Dominika)',
'en_ER' => 'Anglisy (Eritrea)',
+ 'en_ES' => 'Anglisy (Espaina)',
'en_FI' => 'Anglisy (Finlandy)',
'en_FJ' => 'Anglisy (Fidji)',
'en_FK' => 'Anglisy (Nosy Falkand)',
'en_FM' => 'Anglisy (Mikrônezia)',
+ 'en_FR' => 'Anglisy (Frantsa)',
'en_GB' => 'Anglisy (Angletera)',
'en_GD' => 'Anglisy (Grenady)',
'en_GH' => 'Anglisy (Ghana)',
@@ -86,10 +89,12 @@
'en_GM' => 'Anglisy (Gambia)',
'en_GU' => 'Anglisy (Guam)',
'en_GY' => 'Anglisy (Guyana)',
+ 'en_HU' => 'Anglisy (Hongria)',
'en_ID' => 'Anglisy (Indonezia)',
'en_IE' => 'Anglisy (Irlandy)',
'en_IL' => 'Anglisy (Israely)',
'en_IN' => 'Anglisy (Indy)',
+ 'en_IT' => 'Anglisy (Italia)',
'en_JM' => 'Anglisy (Jamaïka)',
'en_KE' => 'Anglisy (Kenya)',
'en_KI' => 'Anglisy (Kiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'Anglisy (Nosy Norfolk)',
'en_NG' => 'Anglisy (Nizeria)',
'en_NL' => 'Anglisy (Holanda)',
+ 'en_NO' => 'Anglisy (Nôrvezy)',
'en_NR' => 'Anglisy (Naorò)',
'en_NU' => 'Anglisy (Nioé)',
'en_NZ' => 'Anglisy (Nouvelle-Zélande)',
'en_PG' => 'Anglisy (Papouasie-Nouvelle-Guinée)',
'en_PH' => 'Anglisy (Filipina)',
'en_PK' => 'Anglisy (Pakistan)',
+ 'en_PL' => 'Anglisy (Pôlôna)',
'en_PN' => 'Anglisy (Pitkairn)',
'en_PR' => 'Anglisy (Pôrtô Rikô)',
+ 'en_PT' => 'Anglisy (Pôrtiogala)',
'en_PW' => 'Anglisy (Palao)',
+ 'en_RO' => 'Anglisy (Romania)',
'en_RW' => 'Anglisy (Roanda)',
'en_SB' => 'Anglisy (Nosy Salomona)',
'en_SC' => 'Anglisy (Seyshela)',
@@ -128,6 +137,7 @@
'en_SG' => 'Anglisy (Singaporo)',
'en_SH' => 'Anglisy (Sainte-Hélène)',
'en_SI' => 'Anglisy (Slovenia)',
+ 'en_SK' => 'Anglisy (Slovakia)',
'en_SL' => 'Anglisy (Sierra Leone)',
'en_SZ' => 'Anglisy (Soazilandy)',
'en_TC' => 'Anglisy (Nosy Turks sy Caïques)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/mi.php b/src/Symfony/Component/Intl/Resources/data/locales/mi.php
index 4581c7c9bb4e9..7c279cabc9907 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/mi.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/mi.php
@@ -121,29 +121,35 @@
'en_CM' => 'Ingarihi (Kamarūna)',
'en_CX' => 'Ingarihi (Te Moutere Kirihimete)',
'en_CY' => 'Ingarihi (Haipara)',
+ 'en_CZ' => 'Ingarihi (Tiekia)',
'en_DE' => 'Ingarihi (Tiamana)',
'en_DK' => 'Ingarihi (Tenemāka)',
'en_DM' => 'Ingarihi (Tominika)',
'en_ER' => 'Ingarihi (Eritēria)',
+ 'en_ES' => 'Ingarihi (Peina)',
'en_FI' => 'Ingarihi (Whinarana)',
'en_FJ' => 'Ingarihi (Whītī)',
'en_FK' => 'Ingarihi (Motu Whākarangi)',
'en_FM' => 'Ingarihi (Mekanēhia)',
+ 'en_FR' => 'Ingarihi (Wīwī)',
'en_GB' => 'Ingarihi (Te Hononga o Piritene)',
'en_GD' => 'Ingarihi (Kerenāta)',
'en_GG' => 'Ingarihi (Kōnihi)',
'en_GH' => 'Ingarihi (Kāna)',
'en_GI' => 'Ingarihi (Kāmaka)',
'en_GM' => 'Ingarihi (Kamopia)',
+ 'en_GS' => 'Ingarihi (Hōria ki te Tonga me ngā Motu Hanawiti ki te Tonga)',
'en_GU' => 'In
D7AE
garihi (Kuama)',
'en_GY' => 'Ingarihi (Kaiana)',
'en_HK' => 'Ingarihi (Hongipua Haina)',
+ 'en_HU' => 'Ingarihi (Hanekari)',
'en_ID' => 'Ingarihi (Initonīhia)',
'en_IE' => 'Ingarihi (Airani)',
'en_IL' => 'Ingarihi (Iharaira)',
'en_IM' => 'Ingarihi (Te Moutere Mana)',
'en_IN' => 'Ingarihi (Inia)',
'en_IO' => 'Ingarihi (Te Rohe o te Moana Īniana Piritihi)',
+ 'en_IT' => 'Ingarihi (Itāria)',
'en_JE' => 'Ingarihi (Tōrehe)',
'en_JM' => 'Ingarihi (Hemeika)',
'en_KE' => 'Ingarihi (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Ingarihi (Te Moutere Nōpoke)',
'en_NG' => 'Ingarihi (Ngāitiria)',
'en_NL' => 'Ingarihi (Hōrana)',
+ 'en_NO' => 'Ingarihi (Nōwei)',
'en_NR' => 'Ingarihi (Nauru)',
'en_NU' => 'Ingarihi (Niue)',
'en_NZ' => 'Ingarihi (Aotearoa)',
'en_PG' => 'Ingarihi (Papua Nūkini)',
'en_PH' => 'Ingarihi (Piripīni)',
'en_PK' => 'Ingarihi (Pakitāne)',
+ 'en_PL' => 'Ingarihi (Pōrana)',
'en_PN' => 'Ingarihi (Pitikeina)',
'en_PR' => 'Ingarihi (Peta Riko)',
+ 'en_PT' => 'Ingarihi (Potukara)',
'en_PW' => 'Ingarihi (Pārau)',
+ 'en_RO' => 'Ingarihi (Romeinia)',
'en_RW' => 'Ingarihi (Rāwana)',
'en_SB' => 'Ingarihi (Ngā Motu Horomona)',
'en_SC' => 'Ingarihi (Heikere)',
@@ -184,6 +194,7 @@
'en_SG' => 'Ingarihi (Hingapoa)',
'en_SH' => 'Ingarihi (Hato Hērena)',
'en_SI' => 'Ingarihi (Horowinia)',
+ 'en_SK' => 'Ingarihi (Horowākia)',
'en_SL' => 'Ingarihi (Te Araone)',
'en_SS' => 'Ingarihi (Hūtāne ki te Tonga)',
'en_SX' => 'Ingarihi (Hiti Mātene)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/mk.php b/src/Symfony/Component/Intl/Resources/data/locales/mk.php
index 0ba83fe04122f..aa4dc6c54db89 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/mk.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/mk.php
@@ -121,29 +121,35 @@
'en_CM' => 'англиски (Камерун)',
'en_CX' => 'англиски (Божиќен Остров)',
'en_CY' => 'англиски (Кипар)',
+ 'en_CZ' => 'англиски (Чешка)',
'en_DE' => 'англиски (Германија)',
'en_DK' => 'англиски (Данска)',
'en_DM' => 'англиски (Доминика)',
'en_ER' => 'англиски (Еритреја)',
+ 'en_ES' => 'англиски (Шпанија)',
'en_FI' => 'англиски (Финска)',
'en_FJ' => 'англиски (Фиџи)',
'en_FK' => 'англиски (Фолкландски Острови)',
'en_FM' => 'англиски (Микронезија)',
+ 'en_FR' => 'англиски (Франција)',
'en_GB' => 'англиски (Обединето Кралство)',
'en_GD' => 'англиски (Гренада)',
'en_GG' => 'англиски (Гернзи)',
'en_GH' => 'англиски (Гана)',
'en_GI' => 'англиски (Гибралтар)',
'en_GM' => 'англиски (Гамбија)',
+ 'en_GS' => 'англиски (Јужна Џорџија и Јужни Сендвички Острови)',
'en_GU' => 'англиски (Гуам)',
'en_GY' => 'англиски (Гвајана)',
'en_HK' => 'англиски (Хонгконг САР Кина)',
+ 'en_HU' => 'англиски (Унгарија)',
'en_ID' => 'англиски (Индонезија)',
'en_IE' => 'англиски (Ирска)',
'en_IL' => 'англиски (Израел)',
'en_IM' => 'англиски (Остров Ман)',
'en_IN' => 'англиски (Индија)',
'en_IO' => 'англиски (Британска Индоокеанска Територија)',
+ 'en_IT' => 'англиски (Италија)',
'en_JE' => 'англиски (Џерси)',
'en_JM' => 'англиски (Јамајка)',
'en_KE' => 'англиски (Кенија)',
@@ -167,15 +173,19 @@
'en_NF' => 'англиски (Норфолшки Остров)',
'en_NG' => 'англиски (Нигерија)',
'en_NL' => 'англиски (Холандија)',
+ 'en_NO' => 'англиски (Норвешка)',
'en_NR' => 'англиски (Науру)',
'en_NU' => 'англиски (Ниује)',
'en_NZ' => 'англиски (Нов Зеланд)',
'en_PG' => 'англиски (Папуа Нова Гвинеја)',
'en_PH' => 'англиски (Филипини)',
'en_PK' => 'англиски (Пакистан)',
+ 'en_PL' => 'англиски (Полска)',
'en_PN' => 'англиски (Питкернски Острови)',
'en_PR' => 'англиски (Порторико)',
+ 'en_PT' => 'англиски (Португалија)',
'en_PW' => 'англиски (Палау)',
+ 'en_RO' => 'англиски (Романија)',
'en_RW' => 'англиски (Руанда)',
'en_SB' => 'англиски (Соломонски Острови)',
'en_SC' => 'англиски (Сејшели)',
@@ -184,6 +194,7 @@
'en_SG' => 'англиски (Сингапур)',
'en_SH' => 'англиски (Света Елена)',
'en_SI' => 'англиски (Словенија)',
+ 'en_SK' => 'англиски (Словачка)',
'en_SL' => 'англиски (Сиера Леоне)',
'en_SS' => 'англиски (Јужен Судан)',
'en_SX' => 'англиски (Свети Мартин)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ml.php b/src/Symfony/Component/Intl/Resources/data/locales/ml.php
index c2d098d96fee4..3ebe1e26b2769 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ml.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ml.php
@@ -121,29 +121,35 @@
'en_CM' => 'ഇംഗ്ലീഷ് (കാമറൂൺ)',
'en_CX' => 'ഇംഗ്ലീഷ് (ക്രിസ്മസ് ദ്വീപ്)',
'en_CY' => 'ഇംഗ്ലീഷ് (സൈപ്രസ്)',
+ 'en_CZ' => 'ഇംഗ്ലീഷ് (ചെക്കിയ)',
'en_DE' => 'ഇംഗ്ലീഷ് (ജർമ്മനി)',
'en_DK' => 'ഇംഗ്ലീഷ് (ഡെൻമാർക്ക്)',
'en_DM' => 'ഇംഗ്ലീഷ് (ഡൊമിനിക്ക)',
'en_ER' => 'ഇംഗ്ലീഷ് (എറിത്രിയ)',
+ 'en_ES' => 'ഇംഗ്ലീഷ് (സ്പെയിൻ)',
'en_FI' => 'ഇംഗ്ലീഷ് (ഫിൻലാൻഡ്)',
'en_FJ' => 'ഇംഗ്ലീഷ് (ഫിജി)',
'en_FK' => 'ഇംഗ്ലീഷ് (ഫാക്ക്ലാന്റ് ദ്വീപുകൾ)',
'en_FM' => 'ഇംഗ്ലീഷ് (മൈക്രോനേഷ്യ)',
+ 'en_FR' => 'ഇംഗ്ലീഷ് (ഫ്രാൻസ്)',
'en_GB' => 'ഇംഗ്ലീഷ് (യുണൈറ്റഡ് കിംഗ്ഡം)',
'en_GD' => 'ഇംഗ്ലീഷ് (ഗ്രനേഡ)',
'en_GG' => 'ഇംഗ്ലീഷ് (ഗേൺസി)',
'en_GH' => 'ഇംഗ്ലീഷ് (ഘാന)',
'en_GI' => 'ഇംഗ്ലീഷ് (ജിബ്രാൾട്ടർ)',
'en_GM' => 'ഇംഗ്ലീഷ് (ഗാംബിയ)',
+ 'en_GS' => 'ഇംഗ്ലീഷ് (ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്വിച്ച് ദ്വീപുകളും)',
'en_GU' => 'ഇംഗ്ലീഷ് (ഗ്വാം)',
'en_GY' => 'ഇംഗ്ലീഷ് (ഗയാന)',
'en_HK' => 'ഇംഗ്ലീഷ് (ഹോങ്കോങ് [SAR] ചൈന)',
+ 'en_HU' => 'ഇംഗ്ലീഷ് (ഹംഗറി)',
'en_ID' => 'ഇംഗ്ലീഷ് (ഇന്തോനേഷ്യ)',
'en_IE' => 'ഇംഗ്ലീഷ് (അയർലൻഡ്)',
'en_IL' => 'ഇംഗ്ലീഷ് (ഇസ്രായേൽ)',
'en_IM' => 'ഇംഗ്ലീഷ് (ഐൽ ഓഫ് മാൻ)',
'en_IN' => 'ഇംഗ്ലീഷ് (ഇന്ത്യ)',
'en_IO' => 'ഇംഗ്ലീഷ് (ബ്രിട്ടീഷ് ഇന്ത്യൻ ഓഷ്യൻ ടെറിട്ടറി)',
+ 'en_IT' => 'ഇംഗ്ലീഷ് (ഇറ്റലി)',
'en_JE' => 'ഇംഗ്ലീഷ് (ജേഴ്സി)',
'en_JM' => 'ഇംഗ്ലീഷ് (ജമൈക്ക)',
'en_KE' => 'ഇംഗ്ലീഷ് (കെനിയ)',
@@ -167,15 +173,19 @@
'en_NF' => 'ഇംഗ്ലീഷ് (നോർഫോക് ദ്വീപ്)',
'en_NG' => 'ഇംഗ്ലീഷ് (നൈജീരിയ)',
'en_NL' => 'ഇംഗ്ലീഷ് (നെതർലാൻഡ്സ്)',
+ 'en_NO' => 'ഇംഗ്ലീഷ് (നോർവെ)',
'en_NR' => 'ഇംഗ്ലീഷ് (നൗറു)',
'en_NU' => 'ഇംഗ്ലീഷ് (ന്യൂയി)',
'en_NZ' => 'ഇംഗ്ലീഷ് (ന്യൂസിലൻഡ്)',
'en_PG' => 'ഇംഗ്ലീഷ് (പാപ്പുവ ന്യൂ ഗിനിയ)',
'en_PH' => 'ഇംഗ്ലീഷ് (ഫിലിപ്പീൻസ്)',
'en_PK' => 'ഇംഗ്ലീഷ് (പാക്കിസ്ഥാൻ)',
+ 'en_PL' => 'ഇംഗ്ലീഷ് (പോളണ്ട്)',
'en_PN' => 'ഇംഗ്ലീഷ് (പിറ്റ്കെയ്ൻ ദ്വീപുകൾ)',
'en_PR' => 'ഇംഗ്ലീഷ് (പോർട്ടോ റിക്കോ)',
+ 'en_PT' => 'ഇംഗ്ലീഷ് (പോർച്ചുഗൽ)',
'en_PW' => 'ഇംഗ്ലീഷ് (പലാവു)',
+ 'en_RO' => 'ഇംഗ്ലീഷ് (റൊമാനിയ)',
'en_RW' => 'ഇംഗ്ലീഷ് (റുവാണ്ട)',
'en_SB' => 'ഇംഗ്ലീഷ് (സോളമൻ ദ്വീപുകൾ)',
'en_SC' => 'ഇംഗ്ലീഷ് (സീഷെൽസ്)',
@@ -184,6 +194,7 @@
'en_SG' => 'ഇംഗ്ലീഷ് (സിംഗപ്പൂർ)',
'en_SH' => 'ഇംഗ്ലീഷ് (സെന്റ് ഹെലീന)',
'en_SI' => 'ഇംഗ്ലീഷ് (സ്ലോവേനിയ)',
+ 'en_SK' => 'ഇംഗ്ലീഷ് (സ്ലോവാക്യ)',
'en_SL' => 'ഇംഗ്ലീഷ് (സിയെറ ലിയോൺ)',
'en_SS' => 'ഇംഗ്ലീഷ് (ദക്ഷിണ സുഡാൻ)',
'en_SX' => 'ഇംഗ്ലീഷ് (സിന്റ് മാർട്ടെൻ)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/mn.php b/src/Symfony/Component/Intl/Resources/data/locales/mn.php
index f28c36d9cfeb4..f90b8d4de0c3a 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/mn.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/mn.php
@@ -121,29 +121,35 @@
'en_CM' => 'англи (Камерун)',
'en_CX' => 'англи (Зул сарын арал)',
'en_CY' => 'англи (Кипр)',
+ 'en_CZ' => 'англи (Чех)',
'en_DE' => 'англи (Герман)',
'en_DK' => 'англи (Дани)',
'en_DM' => 'англи (Доминика)',
'en_ER' => 'англи (Эритрей)',
+ 'en_ES' => 'англи (Испани)',
'en_FI' => 'англи (Финланд)',
'en_FJ' => 'англи (Фижи)',
'en_FK' => 'англи (Фолклендийн арлууд)',
'en_FM' => 'англи (Микронези)',
+ 'en_FR' => 'англи (Франц)',
'en_GB' => 'англи (Их Британи)',
'en_GD' => 'англи (Гренада)',
'en_GG' => 'англи (Гернси)',
'en_GH' => 'англи (Гана)',
'en_GI' => 'англи (Гибралтар)',
'en_GM' => 'англи (Гамби)',
+ 'en_GS' => 'англи (Өмнөд Жоржиа ба Өмнөд Сэндвичийн арлууд)',
'en_GU' => 'англи (Гуам)',
'en_GY' => 'англи (Гайана)',
'en_HK' => 'англи (БНХАУ-ын Тусгай захиргааны бүс Хонг-Конг)',
+ 'en_HU' => 'англи (Унгар)',
'en_ID' => 'англи (Индонез)',
'en_IE' => 'англи (Ирланд)',
'en_IL' => 'англи (Израил)',
'en_IM' => 'англи (Мэн Арал)',
'en_IN' => 'англи (Энэтхэг)',
'en_IO' => 'англи (Британийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэр)',
+ 'en_IT' => 'англи (Итали)',
'en_JE' => 'англи (Жерси)',
'en_JM' => 'англи (Ямайка)',
'en_KE' => 'англи (Кени)',
@@ -167,15 +173,19 @@
'en_NF' => 'англи (Норфолк арал)',
'en_NG' => 'англи (Нигери)',
'en_NL' => 'англи (Нидерланд)',
+ 'en_NO' => 'англи (Норвег)',
'en_NR' => 'англи (Науру)',
'en_NU' => 'англи (Ниуэ)',
'en_NZ' => 'англи (Шинэ Зеланд)',
'en_PG' => 'англи (Папуа Шинэ Гвиней)',
'en_PH' => 'англи (Филиппин)',
'en_PK' => 'англи (Пакистан)',
+ 'en_PL' => 'англи (Польш)',
'en_PN' => 'англи (Питкэрн арлууд)',
'en_PR' => 'англи (Пуэрто-Рико)',
+ 'en_PT' => 'англи (Португал)',
'en_PW' => 'англи (Палау)',
+ 'en_RO' => 'англи (Румын)',
'en_RW' => 'англи (Руанда)',
'en_SB' => 'англи (Соломоны арлууд)',
'en_SC' => 'англи (Сейшелийн арлууд)',
@@ -184,6 +194,7 @@
'en_SG' => 'англи (Сингапур)',
'en_SH' => 'англи (Сент Хелена)',
'en_SI' => 'англи (Словени)',
+ 'en_SK' => 'англи (Словак)',
'en_SL' => 'англи (Сьерра-Леоне)',
'en_SS' => 'англи (Өмнөд Судан)',
'en_SX' => 'англи (Синт Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/mr.php b/src/Symfony/Component/Intl/Resources/data/locales/mr.php
index 3c379fcd54349..6cab10fd67b3a 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/mr.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/mr.php
@@ -121,29 +121,35 @@
'en_CM' => 'इंग्रजी (कॅमेरून)',
'en_CX' => 'इंग्रजी (ख्रिसमस बेट)',
'en_CY' => 'इंग्रजी (सायप्रस)',
+ 'en_CZ' => 'इंग्रजी (झेकिया)',
'en_DE' => 'इंग्रजी (जर्मनी)',
'en_DK' => 'इंग्रजी (डेन्मार्क)',
'en_DM' => 'इंग्रजी (डोमिनिका)',
'en_ER' => 'इंग्रजी (एरिट्रिया)',
+ 'en_ES' => 'इंग्रजी (स्पेन)',
'en_FI' => 'इंग्रजी (फिनलंड)',
'en_FJ' => 'इंग्रजी (फिजी)',
'en_FK' => 'इंग्रजी (फॉकलंड बेटे)',
'en_FM' => 'इंग्रजी (मायक्रोनेशिया)',
+ 'en_FR' => 'इंग्रजी (फ्रान्स)',
'en_GB' => 'इंग्रजी (युनायटेड किंगडम)',
'en_GD' => 'इंग्रजी (ग्रेनेडा)',
'en_GG' => 'इंग्रजी (ग्वेर्नसे)',
'en_GH' => 'इंग्रजी (घाना)',
'en_GI' => 'इंग्रजी (जिब्राल्टर)',
'en_GM' => 'इंग्रजी (गाम्बिया)',
+ 'en_GS' => 'इंग्रजी (दक्षिण जॉर्जिया आणि दक्षिण सँडविच बेटे)',
'en_GU' => 'इंग्रजी (गुआम)',
'en_GY' => 'इंग्रजी (गयाना)',
'en_HK' => 'इंग्रजी (हाँगकाँग एसएआर चीन)',
+ 'en_HU' => 'इंग्रजी (हंगेरी)',
'en_ID' => 'इंग्रजी (इंडोनेशिया)',
'en_IE' => 'इंग्रजी (आयर्लंड)',
'en_IL' => 'इंग्रजी (इस्त्राइल)',
'en_IM' => 'इंग्रजी (आयल ऑफ मॅन)',
'en_IN' => 'इंग्रजी (भारत)',
'en_IO' => 'इंग्रजी (ब्रिटिश हिंद महासागर प्रदेश)',
+ 'en_IT' => 'इंग्रजी (इटली)',
'en_JE' => 'इंग्रजी (जर्सी)',
'en_JM' => 'इंग्रजी (जमैका)',
'en_KE' => 'इंग्रजी (केनिया)',
@@ -167,15 +173,19 @@
'en_NF' => 'इंग्रजी (नॉरफॉक बेट)',
'en_NG' => 'इंग्रजी (नायजेरिया)',
'en_NL' => 'इंग्रजी (नेदरलँड)',
+ 'en_NO' => 'इंग्रजी (नॉर्वे)',
'en_NR' => 'इंग्रजी (नाउरू)',
'en_NU' => 'इंग्रजी (नीयू)',
'en_NZ' => 'इंग्रजी (न्यूझीलंड)',
'en_PG' => 'इंग्रजी (पापुआ न्यू गिनी)',
'en_PH' => 'इंग्रजी (फिलिपिन्स)',
'en_PK' => 'इंग्रजी (पाकिस्तान)',
+ 'en_PL' => 'इंग्रजी (पोलंड)',
'en_PN' => 'इंग्रजी (पिटकैर्न बेटे)',
'en_PR' => 'इंग्रजी (प्युएर्तो रिको)',
+ 'en_PT' => 'इंग्रजी (पोर्तुगाल)',
'en_PW' => 'इंग्रजी (पलाऊ)',
+ 'en_RO' => 'इंग्रजी (रोमानिया)',
'en_RW' => 'इंग्रजी (रवांडा)',
'en_SB' => 'इंग्रजी (सोलोमन बेटे)',
'en_SC' => 'इंग्रजी (सेशेल्स)',
@@ -184,6 +194,7 @@
'en_SG' => 'इंग्रजी (सिंगापूर)',
'en_SH' => 'इंग्रजी (सेंट हेलेना)',
'en_SI' => 'इंग्रजी (स्लोव्हेनिया)',
+ 'en_SK' => 'इंग्रजी (स्लोव्हाकिया)',
'en_SL' => 'इंग्रजी (सिएरा लिओन)',
'en_SS' => 'इंग्रजी (दक्षिण सुदान)',
'en_SX' => 'इंग्रजी (सिंट मार्टेन)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ms.php b/src/Symfony/Component/Intl/Resources/data/locales/ms.php
index 4397cd3274aff..e28c38d4a06a1 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ms.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ms.php
@@ -121,29 +121,35 @@
'en_CM' => 'Inggeris (Cameroon)',
'en_CX' => 'Inggeris (Pulau Krismas)',
'en_CY' => 'Inggeris (Cyprus)',
+ 'en_CZ' => 'Inggeris (Czechia)',
'en_DE' => 'Inggeris (Jerman)',
'en_DK' => 'Inggeris (Denmark)',
'en_DM' => 'Inggeris (Dominica)',
'en_ER' => 'Inggeris (Eritrea)',
+ 'en_ES' => 'Inggeris (Sepanyol)',
'en_FI' => 'Inggeris (Finland)',
'en_FJ' => 'Inggeris (Fiji)',
'en_FK' => 'Inggeris (Kepulauan Falkland)',
'en_FM' => 'Inggeris (Micronesia)',
+ 'en_FR' => 'Inggeris (Perancis)',
'en_GB' => 'Inggeris (United Kingdom)',
'en_GD' => 'Inggeris (Grenada)',
'en_GG' => 'Inggeris (Guernsey)',
'en_GH' => 'Inggeris (Ghana)',
'en_GI' => 'Inggeris (Gibraltar)',
'en_GM' => 'Inggeris (Gambia)',
+ 'en_GS' => 'Inggeris (Kepulauan Georgia Selatan & Sandwich Selatan)',
'en_GU' => 'Inggeris (Guam)',
'en_GY' => 'Inggeris (Guyana)',
'en_HK' => 'Inggeris (Hong Kong SAR China)',
+ 'en_HU' => 'Inggeris (Hungary)',
'en_ID' => 'Inggeris (Indonesia)',
'en_IE' => 'Inggeris (Ireland)',
'en_IL' => 'Inggeris (Israel)',
'en_IM' => 'Inggeris (Isle of Man)',
'en_IN' => 'Inggeris (India)',
'en_IO' => 'Inggeris (Wilayah Lautan Hindi British)',
+ 'en_IT' => 'Inggeris (Itali)',
'en_JE' => 'Inggeris (Jersey)',
'en_JM' => 'Inggeris (Jamaica)',
'en_KE' => 'Inggeris (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Inggeris (Pulau Norfolk)',
'en_NG' => 'Inggeris (Nigeria)',
'en_NL' => 'Inggeris (Belanda)',
+ 'en_NO' => 'Inggeris (Norway)',
'en_NR' => 'Inggeris (Nauru)',
'en_NU' => 'Inggeris (Niue)',
'en_NZ' => 'Inggeris (New Zealand)',
'en_PG' => 'Inggeris (Papua New Guinea)',
'en_PH' => 'Inggeris (Filipina)',
'en_PK' => 'Inggeris (Pakistan)',
+ 'en_PL' => 'Inggeris (Poland)',
'en_PN' => 'Inggeris (Kepulauan Pitcairn)',
'en_PR' => 'Inggeris (Puerto Rico)',
+ 'en_PT' => 'Inggeris (Portugal)',
'en_PW' => 'Inggeris (Palau)',
+ 'en_RO' => 'Inggeris (Romania)',
'en_RW' => 'Inggeris (Rwanda)',
'en_SB' => 'Inggeris (Kepulauan Solomon)',
'en_SC' => 'Inggeris (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Inggeris (Singapura)',
'en_SH' => 'Inggeris (Saint Helena)',
'en_SI' => 'Inggeris (Slovenia)',
+ 'en_SK' => 'Inggeris (Slovakia)',
'en_SL' => 'Inggeris (Sierra Leone)',
'en_SS' => 'Inggeris (Sudan Selatan)',
'en_SX' => 'Inggeris (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/mt.php b/src/Symfony/Component/Intl/Resources/data/locales/mt.php
index e1245dc691bb7..77aab459f0285 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/mt.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/mt.php
@@ -121,28 +121,34 @@
'en_CM' => 'Ingliż (il-Kamerun)',
'en_CX' => 'Ingliż (il-Gżira Christmas)',
'en_CY' => 'Ingliż (Ċipru)',
+ 'en_CZ' => 'Ingliż (ir-Repubblika Ċeka)',
'en_DE' => 'Ingliż (il-Ġermanja)',
'en_DK' => 'Ingliż (id-Danimarka)',
'en_DM' => 'Ingliż (Dominica)',
'en_ER' => 'Ingliż (l-Eritrea)',
+ 'en_ES' => 'Ingliż (Spanja)',
'en_FI' => 'Ingliż (il-Finlandja)',
'en_FJ' => 'Ingliż (Fiġi)',
'en_FK' => 'Ingliż (il-Gżejjer Falkland)',
'en_FM' => 'Ingliż (il-Mikroneżja)',
+ 'en_FR' => 'Ingliż (Franza)',
'en_GB' => 'Ingliż (ir-Renju Unit)',
'en_GD' => 'Ingliż (Grenada)',
'en_GG' => 'Ingliż (Guernsey)',
'en_GH' => 'Ingliż (il-Ghana)',
'en_GI' => 'Ingliż (Ġibiltà)',
'en_GM' => 'Ingliż (il-Gambja)',
+ 'en_GS' => 'Ingliż (il-Georgia tan-Nofsinhar u l-Gżejjer Sandwich tan-Nofsinhar)',
'en_GU' => 'Ingliż (Guam)',
'en_GY' => 'Ingliż (il-Guyana)',
'en_HK' => 'Ingliż (ir-Reġjun Amministrattiv Speċjali ta’ Hong Kong tar-Repubblika tal-Poplu taċ-Ċina)',
+ 'en_HU' => 'Ingliż (l-Ungerija)',
'en_ID' => 'Ingliż (l-Indoneżja)',
'en_IE' => 'Ingliż (l-Irlanda)',
'en_IL' => 'Ingliż (Iżrael)',
'en_IM' => 'Ingliż (Isle of Man)',
'en_IN' => 'Ingliż (l-Indja)',
+ 'en_IT' => 'Ingliż (l-Italja)',
'en_JE' => 'Ingliż (Jersey)',
'en_JM' => 'Ingliż (il-Ġamajka)',
'en_KE' => 'Ingliż (il-Kenja)',
@@ -166,15 +172,19 @@
'en_NF' => 'Ingliż (Gżira Norfolk)',
'en_NG' => 'Ingliż (in-Niġerja)',
'en_NL' => 'Ingliż (in-Netherlands)',
+ 'en_NO' => 'Ingliż (in-Norveġja)',
'en_NR' => 'Ingliż (Nauru)',
'en_NU' => 'Ingliż (Niue)',
'en_NZ' => 'Ingliż (New Zealand)',
'en_PG' => 'Ingliż (Papua New Guinea)',
'en_PH' => 'Ingliż (il-Filippini)',
'en_PK' => 'Ingliż (il-Pakistan)',
+ 'en_PL' => 'Ingliż (il-Polonja)',
'en_PN' => 'Ingliż (Gżejjer Pitcairn)',
'en_PR' => 'Ingliż (Puerto Rico)',
+ 'en_PT' => 'Ingliż (il-Portugall)',
'en_PW' => 'Ingliż (Palau)',
+ 'en_RO' => 'Ingliż (ir-Rumanija)',
'en_RW' => 'Ingliż (ir-Rwanda)',
'en_SB' => 'Ingliż (il-Gżejjer Solomon)',
'en_SC' => 'Ingliż (is-Seychelles)',
@@ -183,6 +193,7 @@
'en_SG' => 'Ingliż (Singapore)',
'en_SH' => 'Ingliż (Saint Helena)',
'en_SI' => 'Ingliż (is-Slovenja)',
+ 'en_SK' => 'Ingliż (is-Slovakkja)',
'en_SL' => 'Ingliż (Sierra Leone)',
'en_SS' => 'Ingliż (is-Sudan t’Isfel)',
'en_SX' => 'Ingliż (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/my.php b/src/Symfony/Component/Intl/Resources/data/locales/my.php
index 8680b337419a2..18bb264d1161e 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/my.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/my.php
@@ -121,29 +121,35 @@
'en_CM' => 'အင်္ဂလိပ် (ကင်မရွန်း)',
'en_CX' => 'အင်္ဂလိပ် (ခရစ်စမတ် ကျွန်း)',
'en_CY' => 'အင်္ဂလိပ် (ဆိုက်ပရပ်စ်)',
+ 'en_CZ' => 'အင်္ဂလိပ် (ချက်ကီယား)',
'en_DE' => 'အင်္ဂလိပ် (ဂျာမနီ)',
'en_DK' => 'အင်္ဂလိပ် (ဒိန်းမတ်)',
'en_DM' => 'အင်္ဂလိပ် (ဒိုမီနီကာ)',
'en_ER' => 'အင်္ဂလိပ် (အီရီထရီးယား)',
+ 'en_ES' => 'အင်္ဂလိပ် (စပိန်)',
'en_FI' => 'အင်္ဂလိပ် (ဖင်လန်)',
'en_FJ' => 'အင်္ဂလိပ် (ဖီဂျီ)',
'en_FK' => 'အင်္ဂလိပ် (ဖော့ကလန် ကျွန်းစု)',
'en_FM' => 'အင်္ဂလိပ် (မိုင်ခရိုနီရှား)',
+ 'en_FR' => 'အင်္ဂလိပ် (ပြင်သစ်)',
'en_GB' => 'အင်္ဂလိပ် (ယူနိုက်တက်ကင်းဒမ်း)',
'en_GD' => 'အင်္ဂလိပ် (ဂရီနေဒါ)',
'en_GG' => 'အင်္ဂလိပ် (ဂွန်းဇီ)',
'en_GH' => 'အင်္ဂလိပ် (ဂါနာ)',
'en_GI' => 'အင်္ဂလိပ် (ဂျီဘရော်လ်တာ)',
'en_GM' => 'အင်္ဂလိပ် (ဂမ်ဘီရာ)',
+ 'en_GS' => 'အင်္ဂလိပ် (တောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများ)',
'en_GU' => 'အင်္ဂလိပ် (ဂူအမ်)',
'en_GY' => 'အင်္ဂလိပ် (ဂိုင်ယာနာ)',
'en_HK' => 'အင်္ဂလိပ် (ဟောင်ကောင် [တရုတ်ပြည်])',
+ 'en_HU' => 'အင်္ဂလိပ် (ဟန်ဂေရီ)',
'en_ID' => 'အင်္ဂလိပ် (အင်ဒိုနီးရှား)',
'en_IE' => 'အင်္ဂလိပ် (အိုင်ယာလန်)',
'en_IL' => 'အင်္ဂလိပ် (အစ္စရေး)',
'en_IM' => 'အင်္ဂလိပ် (မန်ကျွန်း)',
'en_IN' => 'အင်္ဂလိပ် (အိန္ဒိယ)',
'en_IO' => 'အင်္ဂလိပ် (ဗြိတိသျှပိုင် အိန္ဒိယသမုဒ္ဒရာကျွန်းများ)',
+ 'en_IT' => 'အင်္ဂလိပ် (အီတလီ)',
'en_JE' => 'အင်္ဂလိပ် (ဂျာစီ)',
'en_JM' => 'အင်္ဂလိပ် (ဂျမေကာ)',
'en_KE' => 'အင်္ဂလိပ် (ကင်ညာ)',
@@ -167,15 +173,19 @@
'en_NF' => 'အင်္ဂလိပ် (နောဖုတ်ကျွန်း)',
'en_NG' => 'အင်္ဂလိပ် (နိုင်ဂျီးရီးယား)',
'en_NL' => 'အင်္ဂလိပ် (နယ်သာလန်)',
+ 'en_NO' => 'အင်္ဂလိပ် (နော်ဝေ)',
'en_NR' => 'အင်္ဂလိပ် (နော်ရူး)',
'en_NU' => 'အင်္ဂလိပ် (နီဥူအေ)',
'en_NZ' => 'အင်္ဂလိပ် (နယူးဇီလန်)',
'en_PG' => 'အင်္ဂလိပ် (ပါပူအာ နယူးဂီနီ)',
'en_PH' => 'အင်္ဂလိပ် (ဖိလစ်ပိုင်)',
'en_PK' => 'အင်္ဂလိပ် (ပါကစ္စတန်)',
+ 'en_PL' => 'အင်္ဂလိပ် (ပိုလန်)',
'en_PN' => 'အင်္ဂလိပ် (ပစ်တ်ကိန်းကျွန်းစု)',
'en_PR' => 'အင်္ဂလိပ် (ပေါ်တိုရီကို)',
+ 'en_PT' => 'အင်္ဂလိပ် (ပေါ်တူဂီ)',
'en_PW' => 'အင်္ဂလိပ် (ပလာအို)',
+ 'en_RO' => 'အင်္ဂလိပ် (ရိုမေးနီးယား)',
'en_RW' => 'အင်္ဂလိပ် (ရဝန်ဒါ)',
'en_SB' => 'အင်္ဂလိပ် (ဆော်လမွန်ကျွန်းစု)',
'en_SC' => 'အင်္ဂလိပ် (ဆေးရှဲ)',
@@ -184,6 +194,7 @@
'en_SG' => 'အင်္ဂလိပ် (စင်္ကာပူ)',
'en_SH' => 'အင်္ဂလိပ် (စိန့်ဟယ်လယ်နာ)',
'en_SI' => 'အင်္ဂလိပ် (ဆလိုဗေးနီးယား)',
+ 'en_SK' => 'အင်္ဂလိပ် (ဆလိုဗက်ကီးယား)',
'en_SL' => 'အင်္ဂလိပ် (ဆီယာရာ လီယွန်း)',
'en_SS' => 'အင်္ဂလိပ် (တောင် ဆူဒန်)',
'en_SX' => 'အင်္ဂလိပ် (စင့်မာတင်)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/nd.php b/src/Symfony/Component/Intl/Resources/data/locales/nd.php
index babc43f113826..b2f3f46bfc7e8 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/nd.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/nd.php
@@ -71,14 +71,17 @@
'en_CK' => 'isi-Ngisi (Cook Islands)',
'en_CM' => 'isi-Ngisi (Khameruni)',
'en_CY' => 'isi-Ngisi (Cyprus)',
+ 'en_CZ' => 'isi-Ngisi (Czech Republic)',
'en_DE' => 'isi-Ngisi (Germany)',
'en_DK' => 'isi-Ngisi (Denmakhi)',
'en_DM' => 'isi-Ngisi (Dominikha)',
'en_ER' => 'isi-Ngisi (Eritrea)',
+ 'en_ES' => 'isi-Ngisi (Spain)',
'en_FI' => 'isi-Ngisi (Finland)',
'en_FJ' => 'isi-Ngisi (Fiji)',
'en_FK' => 'isi-Ngisi (Falkland Islands)',
'en_FM' => 'isi-Ngisi (Micronesia)',
+ 'en_FR' => 'isi-Ngisi (Furansi)',
'en_GB' => 'isi-Ngisi (United Kingdom)',
'en_GD' => 'isi-Ngisi (Grenada)',
'en_GH' => 'isi-Ngisi (Ghana)',
@@ -86,10 +89,12 @@
'en_GM' => 'isi-Ngisi (Gambiya)',
'en_GU' => 'isi-Ngisi (Guam)',
'en_GY' => 'isi-Ngisi (Guyana)',
+ 'en_HU' => 'isi-Ngisi (Hungary)',
'en_ID' => 'isi-Ngisi (Indonesiya)',
'en_IE' => 'isi-Ngisi (Ireland)',
'en_IL' => 'isi-Ngisi (Isuraeli)',
'en_IN' => 'isi-Ngisi (Indiya)',
+ 'en_IT' => 'isi-Ngisi (Itali)',
'en_JM' => 'isi-Ngisi (Jamaica)',
'en_KE' => 'isi-Ngisi (Khenya)',
'en_KI' => 'isi-Ngisi (Khiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'isi-Ngisi (Norfolk Island)',
'en_NG' => 'isi-Ngisi (Nigeriya)',
'en_NL' => 'isi-Ngisi (Netherlands)',
+ 'en_NO' => 'isi-Ngisi (Noweyi)',
'en_NR' => 'isi-Ngisi (Nauru)',
'en_NU' => 'isi-Ngisi (Niue)',
'en_NZ' => 'isi-Ngisi (New Zealand)',
'en_PG' => 'isi-Ngisi (Papua New Guinea)',
'en_PH' => 'isi-Ngisi (Philippines)',
'en_PK' => 'isi-Ngisi (Phakistani)',
+ 'en_PL' => 'isi-Ngisi (Pholandi)',
'en_PN' => 'isi-Ngisi (Pitcairn)',
'en_PR' => 'isi-Ngisi (Puerto Rico)',
+ 'en_PT' => 'isi-Ngisi (Portugal)',
'en_PW' => 'isi-Ngisi (Palau)',
+ 'en_RO' => 'isi-Ngisi (Romania)',
'en_RW' => 'isi-Ngisi (Ruwanda)',
'en_SB' => 'isi-Ngisi (Solomon Islands)',
'en_SC' => 'isi-Ngisi (Seychelles)',
@@ -128,6 +137,7 @@
'en_SG' => 'isi-Ngisi (Singapore)',
'en_SH' => 'isi-Ngisi (Saint Helena)',
'en_SI' => 'isi-Ngisi (Slovenia)',
+ 'en_SK' => 'isi-Ngisi (Slovakia)',
'en_SL' => 'isi-Ngisi (Sierra Leone)',
'en_SZ' => 'isi-Ngisi (Swaziland)',
'en_TC' => 'isi-Ngisi (Turks and Caicos Islands)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ne.php b/src/Symfony/Component/Intl/Resources/data/locales/ne.php
index 895510042967f..6a4ee01690f35 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ne.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ne.php
@@ -121,29 +121,35 @@
'en_CM' => 'अङ्ग्रेजी (क्यामरून)',
'en_CX' => 'अङ्ग्रेजी (क्रिष्टमस टापु)',
'en_CY' => 'अङ्ग्रेजी (साइप्रस)',
+ 'en_CZ' => 'अङ्ग्रेजी (चेकिया)',
'en_DE' => 'अङ्ग्रेजी (जर्मनी)',
'en_DK' => 'अङ्ग्रेजी (डेनमार्क)',
'en_DM' => 'अङ्ग्रेजी (डोमिनिका)',
'en_ER' => 'अङ्ग्रेजी (एरिट्रीया)',
+ 'en_ES' => 'अङ्ग्रेजी (स्पेन)',
'en_FI' => 'अङ्ग्रेजी (फिनल्याण्ड)',
'en_FJ' => 'अङ्ग्रेजी (फिजी)',
'en_FK' => 'अङ्ग्रेजी (फकल्याण्ड टापुहरु)',
'en_FM' => 'अङ्ग्रेजी (माइक्रोनेसिया)',
+ 'en_FR' => 'अङ्ग्रेजी (फ्रान्स)',
'en_GB' => 'अङ्ग्रेजी (संयुक्त अधिराज्य)',
'en_GD' => 'अङ्ग्रेजी (ग्रेनाडा)',
'en_GG' => 'अङ्ग्रेजी (ग्यूर्न्सी)',
'en_GH' => 'अङ्ग्रेजी (घाना)',
'en_GI' => 'अङ्ग्रेजी (जिब्राल्टार)',
'en_GM' => 'अङ्ग्रेजी (गाम्विया)',
+ 'en_GS' => 'अङ्ग्रेजी (दक्षिण जर्जिया र दक्षिण स्यान्डवीच टापुहरू)',
'en_GU' => 'अङ्ग्रेजी (गुवाम)',
'en_GY' => 'अङ्ग्रेजी (गुयाना)',
'en_HK' => 'अङ्ग्रेजी (हङकङ चिनियाँ विशेष प्रशासनिक क्षेत्र)',
+ 'en_HU' => 'अङ्ग्रेजी (हङ्गेरी)',
'en_ID' => 'अङ्ग्रेजी (इन्डोनेशिया)',
'en_IE' => 'अङ्ग्रेजी (आयरल्याण्ड)',
'en_IL' => 'अङ्ग्रेजी (इजरायल)',
'en_IM' => 'अङ्ग्रेजी (आइल अफ म्यान)',
'en_IN' => 'अङ्ग्रेजी (भारत)',
'en_IO' => 'अङ्ग्रेजी (बेलायती हिन्द महासागर क्षेत्र)',
+ 'en_IT' => 'अङ्ग्रेजी (इटली)',
'en_JE' => 'अङ्ग्रेजी (जर्सी)',
'en_JM' => 'अङ्ग्रेजी (जमैका)',
'en_KE' => 'अङ्ग्रेजी (केन्या)',
@@ -167,15 +173,19 @@
'en_NF' => 'अङ्ग्रेजी (नोरफोल्क टापु)',
'en_NG' => 'अङ्ग्रेजी (नाइजेरिया)',
'en_NL' => 'अङ्ग्रेजी (नेदरल्याण्ड)',
+ 'en_NO' => 'अङ्ग्रेजी (नर्वे)',
'en_NR' => 'अङ्ग्रेजी (नाउरू)',
'en_NU' => 'अङ्ग्रेजी (नियुइ)',
'en_NZ' => 'अङ्ग्रेजी (न्युजिल्याण्ड)',
'en_PG' => 'अङ्ग्रेजी (पपुआ न्यू गाइनिया)',
'en_PH' => 'अङ्ग्रेजी (फिलिपिन्स)',
'en_PK' => 'अङ्ग्रेजी (पाकिस्तान)',
+ 'en_PL' => 'अङ्ग्रेजी (पोल्याण्ड)',
'en_PN' => 'अङ्ग्रेजी (पिटकाइर्न टापुहरु)',
'en_PR' => 'अङ्ग्रेजी (पुएर्टो रिको)',
+ 'en_PT' => 'अङ्ग्रेजी (पोर्चुगल)',
'en_PW' => 'अङ्ग्रेजी (पलाउ)',
+ 'en_RO' => 'अङ्ग्रेजी (रोमेनिया)',
'en_RW' => 'अङ्ग्रेजी (रवाण्डा)',
'en_SB' => 'अङ्ग्रेजी (सोलोमन टापुहरू)',
'en_SC' => 'अङ्ग्रेजी (सेचेलेस)',
@@ -184,6 +194,7 @@
'en_SG' => 'अङ्ग्रेजी (सिङ्गापुर)',
'en_SH' => 'अङ्ग्रेजी (सेन्ट हेलेना)',
'en_SI' => 'अङ्ग्रेजी (स्लोभेनिया)',
+ 'en_SK' => 'अङ्ग्रेजी (स्लोभाकिया)',
'en_SL' => 'अङ्ग्रेजी (सिएर्रा लिओन)',
'en_SS' => 'अङ्ग्रेजी (दक्षिण सुडान)',
'en_SX' => 'अङ्ग्रेजी (सिन्ट मार्टेन)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/nl.php b/src/Symfony/Component/Intl/Resources/data/locales/nl.php
index 320475ca2e7bb..f413174f56f33 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/nl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/nl.php
@@ -121,29 +121,35 @@
'en_CM' => 'Engels (Kameroen)',
'en_CX' => 'Engels (Christmaseiland)',
'en_CY' => 'Engels (Cyprus)',
+ 'en_CZ' => 'Engels (Tsjechië)',
'en_DE' => 'Engels (Duitsland)',
'en_DK' => 'Engels (Denemarken)',
'en_DM' => 'Engels (Dominica)',
'en_ER' => 'Engels (Eritrea)',
+ 'en_ES' => 'Engels (Spanje)',
'en_FI' => 'Engels (Finland)',
'en_FJ' => 'Engels (Fiji)',
'en_FK' => 'Engels (Falklandeilanden)',
'en_FM' => 'Engels (Micronesia)',
+ 'en_FR' => 'Engels (Frankrijk)',
'en_GB' => 'Engels (Verenigd Koninkrijk)',
'en_GD' => 'Engels (Grenada)',
'en_GG' => 'Engels (Guernsey)',
'en_GH' => 'Engels (Ghana)',
'en_GI' => 'Engels (Gibraltar)',
'en_GM' => 'Engels (Gambia)',
+ 'en_GS' => 'Engels (Zuid-Georgia en Zuidelijke Sandwicheilanden)',
'en_GU' => 'Engels (Guam)',
'en_GY' => 'Engels (Guyana)',
'en_HK' => 'Engels (Hongkong SAR van China)',
+ 'en_HU' => 'Engels (Hongarije)',
'en_ID' => 'Engels (Indonesië)',
'en_IE' => 'Engels (Ierland)',
'en_IL' => 'Engels (Israël)',
'en_IM' => 'Engels (Isle of Man)',
'en_IN' => 'Engels (India)',
'en_IO' => 'Engels (Brits Indische Oceaanterritorium)',
+ 'en_IT' => 'Engels (Italië)',
'en_JE' => 'Engels (Jersey)',
'en_JM' => 'Engels (Jamaica)',
'en_KE' => 'Engels (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Engels (Norfolk)',
'en_NG' => 'Engels (Nigeria)',
'en_NL' => 'Engels (Nederland)',
+ 'en_NO' => 'Engels (Noorwegen)',
'en_NR' => 'Engels (Nauru)',
'en_NU' => 'Engels (Niue)',
'en_NZ' => 'Engels (Nieuw-Zeeland)',
'en_PG' => 'Engels (Papoea-Nieuw-Guinea)',
'en_PH' => 'Engels (Filipijnen)',
'en_PK' => 'Engels (Pakistan)',
+ 'en_PL' => 'Engels (Polen)',
'en_PN' => 'Engels (Pitcairneilanden)',
'en_PR' => 'Engels (Puerto Rico)',
+ 'en_PT' => 'Engels (Portugal)',
'en_PW' => 'Engels (Palau)',
+ 'en_RO' => 'Engels (Roemenië)',
'en_RW' => 'Engels (Rwanda)',
'en_SB' => 'Engels (Salomonseilanden)',
'en_SC' => 'Engels (Seychellen)',
@@ -184,6 +194,7 @@
'en_SG' => 'Engels (Singapore)',
'en_SH' => 'Engels (Sint-Helena)',
'en_SI' => 'Engels (Slovenië)',
+ 'en_SK' => 'Engels (Slowakije)',
'en_SL' => 'Engels (Sierra Leone)',
'en_SS' => 'Engels (Zuid-Soedan)',
'en_SX' => 'Engels (Sint-Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/no.php b/src/Symfony/Component/Intl/Resources/data/locales/no.php
index a412e2466789a..3e91509fbe707 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/no.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/no.php
@@ -121,29 +121,35 @@
'en_CM' => 'engelsk (Kamerun)',
'en_CX' => 'engelsk (Christmasøya)',
'en_CY' => 'engelsk (Kypros)',
+ 'en_CZ' => 'engelsk (Tsjekkia)',
'en_DE' => 'engelsk (Tyskland)',
'en_DK' => 'engelsk (Danmark)',
'en_DM' => 'engelsk (Dominica)',
'en_ER' => 'engelsk (Eritrea)',
+ 'en_ES' => 'engelsk (Spania)',
'en_FI' => 'engelsk (Finland)',
'en_FJ' => 'engelsk (Fiji)',
'en_FK' => 'engelsk (Falklandsøyene)',
'en_FM' => 'engelsk (Mikronesiaføderasjonen)',
+ 'en_FR' => 'engelsk (Frankrike)',
'en_GB' => 'engelsk (Storbritannia)',
'en_GD' => 'engelsk (Grenada)',
'en_GG' => 'engelsk (Guernsey)',
'en_GH' => 'engelsk (Ghana)',
'en_GI' => 'engelsk (Gibraltar)',
'en_GM' => 'engelsk (Gambia)',
+ 'en_GS' => 'engelsk (Sør-Georgia og Sør-Sandwichøyene)',
'en_GU' => 'engelsk (Guam)',
'en_GY' => 'engelsk (Guyana)',
'en_HK' => 'engelsk (Hongkong SAR Kina)',
+ 'en_HU' => 'engelsk (Ungarn)',
'en_ID' => 'engelsk (Indonesia)',
'en_IE' => 'engelsk (Irland)',
'en_IL' => 'engelsk (Israel)',
'en_IM' => 'engelsk (Man)',
'en_IN' => 'engelsk (India)',
'en_IO' => 'engelsk (Det britiske territoriet i Indiahavet)',
+ 'en_IT' => 'engelsk (Italia)',
'en_JE' => 'engelsk (Jersey)',
'en_JM' => 'engelsk (Jamaica)',
'en_KE' => 'engelsk (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'engelsk (Norfolkøya)',
'en_NG' => 'engelsk (Nigeria)',
'en_NL' => 'engelsk (Nederland)',
+ 'en_NO' => 'engelsk (Norge)',
'en_NR' => 'engelsk (Nauru)',
'en_NU' => 'engelsk (Niue)',
'en_NZ' => 'engelsk (New Zealand)',
'en_PG' => 'engelsk (Papua Ny-Guinea)',
'en_PH' => 'engelsk (Filippinene)',
'en_PK' => 'engelsk (Pakistan)',
+ 'en_PL' => 'engelsk (Polen)',
'en_PN' => 'engelsk (Pitcairnøyene)',
'en_PR' => 'engelsk (Puerto Rico)',
+ 'en_PT' => 'engelsk (Portugal)',
'en_PW' => 'engelsk (Palau)',
+ 'en_RO' => 'engelsk (Romania)',
'en_RW' => 'engelsk (Rwanda)',
'en_SB' => 'engelsk (Salomonøyene)',
'en_SC' => 'engelsk (Seychellene)',
@@ -184,6 +194,7 @@
'en_SG' => 'engelsk (Singapore)',
'en_SH' => 'engelsk (St. Helena)',
'en_SI' => 'engelsk (Slovenia)',
+ 'en_SK' => 'engelsk (Slovakia)',
'en_SL' => 'engelsk (Sierra Leone)',
'en_SS' => 'engelsk (Sør-Sudan)',
'en_SX' => 'engelsk (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/oc.php b/src/Symfony/Component/Intl/Resources/data/locales/oc.php
index b4c67453236c8..2dec31f577782 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/oc.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/oc.php
@@ -3,6 +3,8 @@
return [
'Names' => [
'en' => 'anglés',
+ 'en_ES' => 'anglés (Espanha)',
+ 'en_FR' => 'anglés (França)',
'en_HK' => 'anglés (Hong Kong)',
'oc' => 'occitan',
'oc_ES' => 'occitan (Espanha)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/om.php b/src/Symfony/Component/Intl/Resources/data/locales/om.php
index 36bf5aa0d342d..97f737869d549 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/om.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/om.php
@@ -107,29 +107,35 @@
'en_CM' => 'Afaan Ingilizii (Kaameruun)',
'en_CX' => 'Afaan Ingilizii (Odola Kirismaas)',
'en_CY' => 'Afaan Ingilizii (Qoophiroos)',
+ 'en_CZ' => 'Afaan Ingilizii (Cheechiya)',
'en_DE' => 'Afaan Ingilizii (Jarmanii)',
'en_DK' => 'Afaan Ingilizii (Deenmaark)',
'en_DM' => 'Afaan Ingilizii (Dominiikaa)',
'en_ER' => 'Afaan Ingilizii (Eertiraa)',
+ 'en_ES' => 'Afaan Ingilizii (Ispeen)',
'en_FI' => 'Afaan Ingilizii (Fiinlaand)',
'en_FJ' => 'Afaan Ingilizii (Fiijii)',
'en_FK' => 'Afaan Ingilizii (Odoloota Faalklaand)',
'en_FM' => 'Afaan Ingilizii (Maayikirooneeshiyaa)',
+ 'en_FR' => 'Afaan Ingilizii (Faransaay)',
'en_GB' => 'Afaan Ingilizii (United Kingdom)',
'en_GD' => 'Afaan Ingilizii (Girinaada)',
'en_GG' => 'Afaan Ingilizii (Guwernisey)',
'en_GH' => 'Afaan Ingilizii (Gaanaa)',
'en_GI' => 'Afaan Ingilizii (Gibraaltar)',
'en_GM' => 'Afaan Ingilizii (Gaambiyaa)',
+ 'en_GS' => 'Afaan Ingilizii (Joorjikaa Kibba fi Odoloota Saanduwiich Kibbaa)',
'en_GU' => 'Afaan Ingilizii (Guwama)',
'en_GY' => 'Afaan Ingilizii (Guyaanaa)',
'en_HK' => 'Afaan Ingilizii (Hoong Koong SAR Chaayinaa)',
+ 'en_HU' => 'Afaan Ingilizii (Hangaarii)',
'en_ID' => 'Afaan Ingilizii (Indooneeshiyaa)',
'en_IE' => 'Afaan Ingilizii (Ayeerlaand)',
'en_IL' => 'Afaan Ingilizii (Israa’eel)',
'en_IM' => 'Afaan Ingilizii (Islee oof Maan)',
'en_IN' => 'Afaan Ingilizii (Hindii)',
'en_IO' => 'Afaan Ingilizii (Daangaa Galaana Hindii Biritish)',
+ 'en_IT' => 'Afaan Ingilizii (Xaaliyaan)',
'en_JE' => 'Afaan Ingilizii (Jeersii)',
'en_JM' => 'Afaan Ingilizii (Jamaayikaa)',
'en_KE' => 'Afaan Ingilizii (Keeniyaa)',
@@ -153,15 +159,19 @@
'en_NF' => 'Afaan Ingilizii (Odola Noorfoolk)',
'en_NG' => 'Afaan Ingilizii (Naayijeeriyaa)',
'en_NL' => 'Afaan Ingilizii (Neezerlaand)',
+ 'en_NO' => 'Afaan Ingilizii (Noorwey)',
'en_NR' => 'Afaan Ingilizii (Naawuruu)',
'en_NU' => 'Afaan Ingilizii (Niwu’e)',
'en_NZ' => 'Afaan Ingilizii (Neewu Zilaand)',
'en_PG' => 'Afaan Ingilizii (Papuwa Neawu Giinii)',
'en_PH' => 'Afaan Ingilizii (Filippiins)',
'en_PK' => 'Afaan Ingilizii (Paakistaan)',
+ 'en_PL' => 'Afaan Ingilizii (Poolaand)',
'en_PN' => 'Afaan Ingilizii (Odoloota Pitikaayirin)',
'en_PR' => 'Afaan Ingilizii (Poortaar Riikoo)',
+ 'en_PT' => 'Afaan Ingilizii (Poorchugaal)',
'en_PW' => 'Afaan Ingilizii (Palaawu)',
+ 'en_RO' => 'Afaan Ingilizii (Roomaaniyaa)',
'en_RW' => 'Afaan Ingilizii (Ruwwandaa)',
'en_SB' => 'Afaan Ingilizii (Odoloota Solomoon)',
'en_SC' => 'Afaan Ingilizii (Siisheels)',
@@ -170,6 +180,7 @@
'en_SG' => 'Afaan Ingilizii (Singaapoor)',
'en_SH' => 'Afaan Ingilizii (St. Helenaa)',
'en_SI' => 'Afaan Ingilizii (Islooveeniyaa)',
+ 'en_SK' => 'Afaan Ingilizii (Isloovaakiyaa)',
'en_SL' => 'Afaan Ingilizii (Seeraaliyoon)',
'en_SS' => 'Afaan Ingilizii (Sudaan Kibbaa)',
'en_SX' => 'Afaan Ingilizii (Siint Maarteen)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/or.php b/src/Symfony/Component/Intl/Resources/data/locales/or.php
index d457500beb978..4d7eaed9eb4bc 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/or.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/or.php
@@ -121,29 +121,35 @@
'en_CM' => 'ଇଂରାଜୀ (କାମେରୁନ୍)',
'en_CX' => 'ଇଂରାଜୀ (ଖ୍ରୀଷ୍ଟମାସ ଦ୍ୱୀପ)',
'en_CY' => 'ଇଂରାଜୀ (ସାଇପ୍ରସ୍)',
+ 'en_CZ' => 'ଇଂରାଜୀ (ଚେଚିଆ)',
'en_DE' => 'ଇଂରାଜୀ (ଜର୍ମାନୀ)',
'en_DK' => 'ଇଂରାଜୀ (ଡେନମାର୍କ)',
'en_DM' => 'ଇଂରାଜୀ (ଡୋମିନିକା)',
'en_ER' => 'ଇଂରାଜୀ (ଇରିଟ୍ରିୟା)',
+ 'en_ES' => 'ଇଂରାଜୀ (ସ୍ପେନ୍)',
'en_FI' => 'ଇଂରାଜୀ (ଫିନଲ୍ୟାଣ୍ଡ)',
'en_FJ' => 'ଇଂରାଜୀ (ଫିଜି)',
'en_FK' => 'ଇଂରାଜୀ (ଫକ୍ଲ୍ୟାଣ୍ଡ ଦ୍ଵୀପପୁଞ୍ଜ)',
'en_FM' => 'ଇଂରାଜୀ (ମାଇକ୍ରୋନେସିଆ)',
+ 'en_FR' => 'ଇଂରାଜୀ (ଫ୍ରାନ୍ସ)',
'en_GB' => 'ଇଂରାଜୀ (ଯୁକ୍ତରାଜ୍ୟ)',
'en_GD' => 'ଇଂରାଜୀ (ଗ୍ରେନାଡା)',
'en_GG' => 'ଇଂରାଜୀ (ଗୁଏରନେସି)',
'en_GH' => 'ଇଂରାଜୀ (ଘାନା)',
'en_GI' => 'ଇଂରାଜୀ (ଜିବ୍ରାଲ୍ଟର୍)',
'en_GM' => 'ଇଂରାଜୀ (ଗାମ୍ବିଆ)',
+ 'en_GS' => 'ଇଂରାଜୀ (ଦକ୍ଷିଣ ଜର୍ଜିଆ ଏବଂ ଦକ୍ଷିଣ ସାଣ୍ଡୱିଚ୍ ଦ୍ୱୀପପୁଞ୍ଜ)',
'en_GU' => 'ଇଂରାଜୀ (ଗୁଆମ୍)',
'en_GY' => 'ଇଂରାଜୀ (ଗୁଇନା)',
'en_HK' => 'ଇଂରାଜୀ (ହଂ କଂ ଏସଏଆର୍ ଚାଇନା)',
+ 'en_HU' => 'ଇଂରାଜୀ (ହଙ୍ଗେରୀ)',
'en_ID' => 'ଇଂରାଜୀ (ଇଣ୍ଡୋନେସିଆ)',
'en_IE' => 'ଇଂରାଜୀ (ଆୟରଲ୍ୟାଣ୍ଡ)',
'en_IL' => 'ଇଂରାଜୀ (ଇସ୍ରାଏଲ୍)',
'en_IM' => 'ଇଂରାଜୀ (ଆଇଲ୍ ଅଫ୍ ମ୍ୟାନ୍)',
'en_IN' => 'ଇଂରାଜୀ (ଭାରତ)',
'en_IO' => 'ଇଂରାଜୀ (ବ୍ରିଟିଶ୍ ଭାରତୀୟ ମହାସାଗର କ୍ଷେତ୍ର)',
+ 'en_IT' => 'ଇଂରାଜୀ (ଇଟାଲୀ)',
'en_JE' => 'ଇଂରାଜୀ (ଜର୍ସି)',
'en_JM' => 'ଇଂରାଜୀ (ଜାମାଇକା)',
'en_KE' => 'ଇଂରାଜୀ (କେନିୟା)',
@@ -167,15 +173,19 @@
'en_NF' => 'ଇଂରାଜୀ (ନର୍ଫକ୍ ଦ୍ଵୀପ)',
'en_NG' => 'ଇଂରାଜୀ (ନାଇଜେରିଆ)',
'en_NL' => 'ଇଂରାଜୀ (ନେଦରଲ୍ୟାଣ୍ଡ)',
+ 'en_NO' => 'ଇଂରାଜୀ (ନରୱେ)',
'en_NR' => 'ଇଂରାଜୀ (ନାଉରୁ)',
'en_NU' => 'ଇଂରାଜୀ (ନିଉ)',
'en_NZ' => 'ଇଂରାଜୀ (ନ୍ୟୁଜିଲାଣ୍ଡ)',
'en_PG' => 'ଇଂରାଜୀ (ପପୁଆ ନ୍ୟୁ ଗିନି)',
'en_PH' => 'ଇଂରାଜୀ (ଫିଲିପାଇନସ୍)',
'en_PK' => 'ଇଂରାଜୀ (ପାକିସ୍ତାନ)',
+ 'en_PL' => 'ଇଂରାଜୀ (ପୋଲାଣ୍ଡ)',
'en_PN' => 'ଇଂରାଜୀ (ପିଟକାଇରିନ୍ ଦ୍ୱୀପପୁଞ୍ଜ)',
'en_PR' => 'ଇଂରାଜୀ (ପୁଏର୍ତ୍ତୋ ରିକୋ)',
+ 'en_PT' => 'ଇଂରାଜୀ (ପର୍ତ୍ତୁଗାଲ୍)',
'en_PW' => 'ଇଂରାଜୀ (ପାଲାଉ)',
+ 'en_RO' => 'ଇଂରାଜୀ (ରୋମାନିଆ)',
'en_RW' => 'ଇଂରାଜୀ (ରାୱାଣ୍ଡା)',
'en_SB' => 'ଇଂରାଜୀ (ସୋଲୋମନ୍ ଦ୍ୱୀପପୁଞ୍ଜ)',
'en_SC' => 'ଇଂରାଜୀ (ସେଚେଲସ୍)',
@@ -184,6 +194,7 @@
'en_SG' => 'ଇଂରାଜୀ (ସିଙ୍ଗାପୁର୍)',
'en_SH' => 'ଇଂରାଜୀ (ସେଣ୍ଟ ହେଲେନା)',
'en_SI' => 'ଇଂରାଜୀ (ସ୍ଲୋଭେନିଆ)',
+ 'en_SK' => 'ଇଂରାଜୀ (ସ୍ଲୋଭାକିଆ)',
'en_SL' => 'ଇଂରାଜୀ (ସିଏରା ଲିଓନ)',
'en_SS' => 'ଇଂରାଜୀ (ଦକ୍ଷିଣ ସୁଦାନ)',
'en_SX' => 'ଇଂରାଜୀ (ସିଣ୍ଟ ମାର୍ଟୀନ୍)',
diff --
341A
git a/src/Symfony/Component/Intl/Resources/data/locales/os.php b/src/Symfony/Component/Intl/Resources/data/locales/os.php
index d962bad705a4f..38a4a0308e270 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/os.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/os.php
@@ -29,8 +29,10 @@
'en_001' => 'англисаг (Дуне)',
'en_150' => 'англисаг (Европӕ)',
'en_DE' => 'англисаг (Герман)',
+ 'en_FR' => 'англисаг (Франц)',
'en_GB' => 'англисаг (Стыр Британи)',
'en_IN' => 'англисаг (Инди)',
+ 'en_IT' => 'англисаг (Итали)',
'en_US' => 'англисаг (АИШ)',
'eo' => 'есперанто',
'eo_001' => 'есперанто (Дуне)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/pa.php b/src/Symfony/Component/Intl/Resources/data/locales/pa.php
index daac5273bff69..abbc580b657b3 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/pa.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/pa.php
@@ -121,29 +121,35 @@
'en_CM' => 'ਅੰਗਰੇਜ਼ੀ (ਕੈਮਰੂਨ)',
'en_CX' => 'ਅੰਗਰੇਜ਼ੀ (ਕ੍ਰਿਸਮਿਸ ਟਾਪੂ)',
'en_CY' => 'ਅੰਗਰੇਜ਼ੀ (ਸਾਇਪ੍ਰਸ)',
+ 'en_CZ' => 'ਅੰਗਰੇਜ਼ੀ (ਚੈਕੀਆ)',
'en_DE' => 'ਅੰਗਰੇਜ਼ੀ (ਜਰਮਨੀ)',
'en_DK' => 'ਅੰਗਰੇਜ਼ੀ (ਡੈਨਮਾਰਕ)',
'en_DM' => 'ਅੰਗਰੇਜ਼ੀ (ਡੋਮੀਨਿਕਾ)',
'en_ER' => 'ਅੰਗਰੇਜ਼ੀ (ਇਰੀਟ੍ਰਿਆ)',
+ 'en_ES' => 'ਅੰਗਰੇਜ਼ੀ (ਸਪੇਨ)',
'en_FI' => 'ਅੰਗਰੇਜ਼ੀ (ਫਿਨਲੈਂਡ)',
'en_FJ' => 'ਅੰਗਰੇਜ਼ੀ (ਫ਼ਿਜੀ)',
'en_FK' => 'ਅੰਗਰੇਜ਼ੀ (ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ)',
'en_FM' => 'ਅੰਗਰੇਜ਼ੀ (ਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆ)',
+ 'en_FR' => 'ਅੰਗਰੇਜ਼ੀ (ਫ਼ਰਾਂਸ)',
'en_GB' => 'ਅੰਗਰੇਜ਼ੀ (ਯੂਨਾਈਟਡ ਕਿੰਗਡਮ)',
'en_GD' => 'ਅੰਗਰੇਜ਼ੀ (ਗ੍ਰੇਨਾਡਾ)',
'en_GG' => 'ਅੰਗਰੇਜ਼ੀ (ਗਰਨਜੀ)',
'en_GH' => 'ਅੰਗਰੇਜ਼ੀ (ਘਾਨਾ)',
'en_GI' => 'ਅੰਗਰੇਜ਼ੀ (ਜਿਬਰਾਲਟਰ)',
'en_GM' => 'ਅੰਗਰੇਜ਼ੀ (ਗੈਂਬੀਆ)',
+ 'en_GS' => 'ਅੰਗਰੇਜ਼ੀ (ਦੱਖਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂ)',
'en_GU' => 'ਅੰਗਰੇਜ਼ੀ (ਗੁਆਮ)',
'en_GY' => 'ਅੰਗਰੇਜ਼ੀ (ਗੁਯਾਨਾ)',
'en_HK' => 'ਅੰਗਰੇਜ਼ੀ (ਹਾਂਗ ਕਾਂਗ ਐਸਏਆਰ ਚੀਨ)',
+ 'en_HU' => 'ਅੰਗਰੇਜ਼ੀ (ਹੰਗਰੀ)',
'en_ID' => 'ਅੰਗਰੇਜ਼ੀ (ਇੰਡੋਨੇਸ਼ੀਆ)',
'en_IE' => 'ਅੰਗਰੇਜ਼ੀ (ਆਇਰਲੈਂਡ)',
'en_IL' => 'ਅੰਗਰੇਜ਼ੀ (ਇਜ਼ਰਾਈਲ)',
'en_IM' => 'ਅੰਗਰੇਜ਼ੀ (ਆਇਲ ਆਫ ਮੈਨ)',
'en_IN' => 'ਅੰਗਰੇਜ਼ੀ (ਭਾਰਤ)',
'en_IO' => 'ਅੰਗਰੇਜ਼ੀ (ਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਖਿੱਤਾ)',
+ 'en_IT' => 'ਅੰਗਰੇਜ਼ੀ (ਇਟਲੀ)',
'en_JE' => 'ਅੰਗਰੇਜ਼ੀ (ਜਰਸੀ)',
'en_JM' => 'ਅੰਗਰੇਜ਼ੀ (ਜਮਾਇਕਾ)',
'en_KE' => 'ਅੰਗਰੇਜ਼ੀ (ਕੀਨੀਆ)',
@@ -167,15 +173,19 @@
'en_NF' => 'ਅੰਗਰੇਜ਼ੀ (ਨੋਰਫੌਕ ਟਾਪੂ)',
'en_NG' => 'ਅੰਗਰੇਜ਼ੀ (ਨਾਈਜੀਰੀਆ)',
'en_NL' => 'ਅੰਗਰੇਜ਼ੀ (ਨੀਦਰਲੈਂਡ)',
+ 'en_NO' => 'ਅੰਗਰੇਜ਼ੀ (ਨਾਰਵੇ)',
'en_NR' => 'ਅੰਗਰੇਜ਼ੀ (ਨਾਉਰੂ)',
'en_NU' => 'ਅੰਗਰੇਜ਼ੀ (ਨਿਯੂ)',
'en_NZ' => 'ਅੰਗਰੇਜ਼ੀ (ਨਿਊਜ਼ੀਲੈਂਡ)',
'en_PG' => 'ਅੰਗਰੇਜ਼ੀ (ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ)',
'en_PH' => 'ਅੰਗਰੇਜ਼ੀ (ਫਿਲੀਪੀਨਜ)',
'en_PK' => 'ਅੰਗਰੇਜ਼ੀ (ਪਾਕਿਸਤਾਨ)',
+ 'en_PL' => 'ਅੰਗਰੇਜ਼ੀ (ਪੋਲੈਂਡ)',
'en_PN' => 'ਅੰਗਰੇਜ਼ੀ (ਪਿਟਕੇਰਨ ਟਾਪੂ)',
'en_PR' => 'ਅੰਗਰੇਜ਼ੀ (ਪਿਊਰਟੋ ਰਿਕੋ)',
+ 'en_PT' => 'ਅੰਗਰੇਜ਼ੀ (ਪੁਰਤਗਾਲ)',
'en_PW' => 'ਅੰਗਰੇਜ਼ੀ (ਪਲਾਉ)',
+ 'en_RO' => 'ਅੰਗਰੇਜ਼ੀ (ਰੋਮਾਨੀਆ)',
'en_RW' => 'ਅੰਗਰੇਜ਼ੀ (ਰਵਾਂਡਾ)',
'en_SB' => 'ਅੰਗਰੇਜ਼ੀ (ਸੋਲੋਮਨ ਟਾਪੂ)',
'en_SC' => 'ਅੰਗਰੇਜ਼ੀ (ਸੇਸ਼ਲਸ)',
@@ -184,6 +194,7 @@
'en_SG' => 'ਅੰਗਰੇਜ਼ੀ (ਸਿੰਗਾਪੁਰ)',
'en_SH' => 'ਅੰਗਰੇਜ਼ੀ (ਸੇਂਟ ਹੇਲੇਨਾ)',
'en_SI' => 'ਅੰਗਰੇਜ਼ੀ (ਸਲੋਵੇਨੀਆ)',
+ 'en_SK' => 'ਅੰਗਰੇਜ਼ੀ (ਸਲੋਵਾਕੀਆ)',
'en_SL' => 'ਅੰਗਰੇਜ਼ੀ (ਸਿਏਰਾ ਲਿਓਨ)',
'en_SS' => 'ਅੰਗਰੇਜ਼ੀ (ਦੱਖਣ ਸੁਡਾਨ)',
'en_SX' => 'ਅੰਗਰੇਜ਼ੀ (ਸਿੰਟ ਮਾਰਟੀਨ)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/pl.php b/src/Symfony/Component/Intl/Resources/data/locales/pl.php
index 3132d6551eb16..dac92226329d7 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/pl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/pl.php
@@ -121,29 +121,35 @@
'en_CM' => 'angielski (Kamerun)',
'en_CX' => 'angielski (Wyspa Bożego Narodzenia)',
'en_CY' => 'angielski (Cypr)',
+ 'en_CZ' => 'angielski (Czechy)',
'en_DE' => 'angielski (Niemcy)',
'en_DK' => 'angielski (Dania)',
'en_DM' => 'angielski (Dominika)',
'en_ER' => 'angielski (Erytrea)',
+ 'en_ES' => 'angielski (Hiszpania)',
'en_FI' => 'angielski (Finlandia)',
'en_FJ' => 'angielski (Fidżi)',
'en_FK' => 'angielski (Falklandy)',
'en_FM' => 'angielski (Mikronezja)',
+ 'en_FR' => 'angielski (Francja)',
'en_GB' => 'angielski (Wielka Brytania)',
'en_GD' => 'angielski (Grenada)',
'en_GG' => 'angielski (Guernsey)',
'en_GH' => 'angielski (Ghana)',
'en_GI' => 'angielski (Gibraltar)',
'en_GM' => 'angielski (Gambia)',
+ 'en_GS' => 'angielski (Georgia Południowa i Sandwich Południowy)',
'en_GU' => 'angielski (Guam)',
'en_GY' => 'angielski (Gujana)',
'en_HK' => 'angielski (SRA Hongkong [Chiny])',
+ 'en_HU' => 'angielski (Węgry)',
'en_ID' => 'angielski (Indonezja)',
'en_IE' => 'angielski (Irlandia)',
'en_IL' => 'angielski (Izrael)',
'en_IM' => 'angielski (Wyspa Man)',
'en_IN' => 'angielski (Indie)',
'en_IO' => 'angielski (Brytyjskie Terytorium Oceanu Indyjskiego)',
+ 'en_IT' => 'angielski (Włochy)',
'en_JE' => 'angielski (Jersey)',
'en_JM' => 'angielski (Jamajka)',
'en_KE' => 'angielski (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'angielski (Norfolk)',
'en_NG' => 'angielski (Nigeria)',
'en_NL' => 'angielski (Holandia)',
+ 'en_NO' => 'angielski (Norwegia)',
'en_NR' => 'angielski (Nauru)',
'en_NU' => 'angielski (Niue)',
'en_NZ' => 'angielski (Nowa Zelandia)',
'en_PG' => 'angielski (Papua-Nowa Gwinea)',
'en_PH' => 'angielski (Filipiny)',
'en_PK' => 'angielski (Pakistan)',
+ 'en_PL' => 'angielski (Polska)',
'en_PN' => 'angielski (Pitcairn)',
'en_PR' => 'angielski (Portoryko)',
+ 'en_PT' => 'angielski (Portugalia)',
'en_PW' => 'angielski (Palau)',
+ 'en_RO' => 'angielski (Rumunia)',
'en_RW' => 'angielski (Rwanda)',
'en_SB' => 'angielski (Wyspy Salomona)',
'en_SC' => 'angielski (Seszele)',
@@ -184,6 +194,7 @@
'en_SG' => 'angielski (Singapur)',
'en_SH' => 'angielski (Wyspa Świętej Heleny)',
'en_SI' => 'angielski (Słowenia)',
+ 'en_SK' => 'angielski (Słowacja)',
'en_SL' => 'angielski (Sierra Leone)',
'en_SS' => 'angielski (Sudan Południowy)',
'en_SX' => 'angielski (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ps.php b/src/Symfony/Component/Intl/Resources/data/locales/ps.php
index 551137b4fc35d..3a1d38c8521f6 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ps.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ps.php
@@ -121,29 +121,35 @@
'en_CM' => 'انګليسي (کامرون)',
'en_CX' => 'انګليسي (د کريسمس ټاپو)',
'en_CY' => 'انګليسي (قبرس)',
+ 'en_CZ' => 'انګليسي (چکیا)',
'en_DE' => 'انګليسي (المان)',
'en_DK' => 'انګليسي (ډنمارک)',
'en_DM' => 'انګليسي (دومینیکا)',
'en_ER' => 'انګليسي (اریتره)',
+ 'en_ES' => 'انګليسي (هسپانیه)',
'en_FI' => 'انګليسي (فنلینډ)',
'en_FJ' => 'انګليسي (فجي)',
'en_FK' => 'انګليسي (فاکلينډ ټاپوګان)',
'en_FM' => 'انګليسي (میکرونیزیا)',
+ 'en_FR' => 'انګليسي (فرانسه)',
'en_GB' => 'انګليسي (برتانیه)',
'en_GD' => 'انګليسي (ګرنادا)',
'en_GG' => 'انګليسي (ګرنسي)',
'en_GH' => 'انګليسي (ګانا)',
'en_GI' => 'انګليسي (جبل الطارق)',
'en_GM' => 'انګليسي (ګامبیا)',
+ 'en_GS' => 'انګليسي (سويلي جارجيا او سويلي سېنډوچ ټاپوګان)',
'en_GU' => 'انګليسي (ګوام)',
'en_GY' => 'انګليسي (ګیانا)',
'en_HK' => 'انګليسي (هانګ کانګ SAR چین)',
+ 'en_HU' => 'انګليسي (مجارستان)',
'en_ID' => 'انګليسي (اندونیزیا)',
'en_IE' => 'انګليسي (آيرلېنډ)',
'en_IL' => 'انګليسي (اسراييل)',
'en_IM' => 'انګليسي (د آئل آف مین)',
'en_IN' => 'انګليسي (هند)',
'en_IO' => 'انګليسي (د برتانوي هند سمندري سيمه)',
+ 'en_IT' => 'انګليسي (ایټالیه)',
'en_JE' => 'انګليسي (جرسی)',
'en_JM' => 'انګليسي (جمیکا)',
'en_KE' => 'انګليسي (کینیا)',
@@ -167,15 +173,19 @@
'en_NF' => 'انګليسي (نارفولک ټاپوګان)',
'en_NG' => 'انګليسي (نایجیریا)',
'en_NL' => 'انګليسي (هالېنډ)',
+ 'en_NO' => 'انګليسي (ناروۍ)',
'en_NR' => 'انګليسي (نایرو)',
'en_NU' => 'انګليسي (نیوو)',
'en_NZ' => 'انګليسي (نیوزیلنډ)',
'en_PG' => 'انګليسي (پاپوا نيو ګيني)',
'en_PH' => 'انګليسي (فلپين)',
'en_PK' => 'انګليسي (پاکستان)',
+ 'en_PL' => 'انګليسي (پولنډ)',
'en_PN' => 'انګليسي (پيټکيرن ټاپوګان)',
'en_PR' => 'انګليسي (پورتو ریکو)',
+ 'en_PT' => 'انګليسي (پورتګال)',
'en_PW' => 'انګليسي (پلاؤ)',
+ 'en_RO' => 'انګليسي (رومانیا)',
'en_RW' => 'انګليسي (روندا)',
'en_SB' => 'انګليسي (سليمان ټاپوګان)',
'en_SC' => 'انګليسي (سیچیلیس)',
@@ -184,6 +194,7 @@
'en_SG' => 'انګليسي (سينگاپور)',
'en_SH' => 'انګليسي (سینټ هیلینا)',
'en_SI' => 'انګليسي (سلوانیا)',
+ 'en_SK' => 'انګليسي (سلواکیا)',
'en_SL' => 'انګليسي (سییرا لیون)',
'en_SS' => 'انګليسي (سويلي سوډان)',
'en_SX' => 'انګليسي (سینټ مارټین)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/pt.php b/src/Symfony/Component/Intl/Resources/data/locales/pt.php
index b3cc7780d6b06..57c90a64e67d2 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/pt.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/pt.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglês (Camarões)',
'en_CX' => 'inglês (Ilha Christmas)',
'en_CY' => 'inglês (Chipre)',
+ 'en_CZ' => 'inglês (Tchéquia)',
'en_DE' => 'inglês
F438
(Alemanha)',
'en_DK' => 'inglês (Dinamarca)',
'en_DM' => 'inglês (Dominica)',
'en_ER' => 'inglês (Eritreia)',
+ 'en_ES' => 'inglês (Espanha)',
'en_FI' => 'inglês (Finlândia)',
'en_FJ' => 'inglês (Fiji)',
'en_FK' => 'inglês (Ilhas Malvinas)',
'en_FM' => 'inglês (Micronésia)',
+ 'en_FR' => 'inglês (França)',
'en_GB' => 'inglês (Reino Unido)',
'en_GD' => 'inglês (Granada)',
'en_GG' => 'inglês (Guernsey)',
'en_GH' => 'inglês (Gana)',
'en_GI' => 'inglês (Gibraltar)',
'en_GM' => 'inglês (Gâmbia)',
+ 'en_GS' => 'inglês (Ilhas Geórgia do Sul e Sandwich do Sul)',
'en_GU' => 'inglês (Guam)',
'en_GY' => 'inglês (Guiana)',
'en_HK' => 'inglês (Hong Kong, RAE da China)',
+ 'en_HU' => 'inglês (Hungria)',
'en_ID' => 'inglês (Indonésia)',
'en_IE' => 'inglês (Irlanda)',
'en_IL' => 'inglês (Israel)',
'en_IM' => 'inglês (Ilha de Man)',
'en_IN' => 'inglês (Índia)',
'en_IO' => 'inglês (Território Britânico do Oceano Índico)',
+ 'en_IT' => 'inglês (Itália)',
'en_JE' => 'inglês (Jersey)',
'en_JM' => 'inglês (Jamaica)',
'en_KE' => 'inglês (Quênia)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglês (Ilha Norfolk)',
'en_NG' => 'inglês (Nigéria)',
'en_NL' => 'inglês (Países Baixos)',
+ 'en_NO' => 'inglês (Noruega)',
'en_NR' => 'inglês (Nauru)',
'en_NU' => 'inglês (Niue)',
'en_NZ' => 'inglês (Nova Zelândia)',
'en_PG' => 'inglês (Papua-Nova Guiné)',
'en_PH' => 'inglês (Filipinas)',
'en_PK' => 'inglês (Paquistão)',
+ 'en_PL' => 'inglês (Polônia)',
'en_PN' => 'inglês (Ilhas Pitcairn)',
'en_PR' => 'inglês (Porto Rico)',
+ 'en_PT' => 'inglês (Portugal)',
'en_PW' => 'inglês (Palau)',
+ 'en_RO' => 'inglês (Romênia)',
'en_RW' => 'inglês (Ruanda)',
'en_SB' => 'inglês (Ilhas Salomão)',
'en_SC' => 'inglês (Seicheles)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglês (Singapura)',
'en_SH' => 'inglês (Santa Helena)',
'en_SI' => 'inglês (Eslovênia)',
+ 'en_SK' => 'inglês (Eslováquia)',
'en_SL' => 'inglês (Serra Leoa)',
'en_SS' => 'inglês (Sudão do Sul)',
'en_SX' => 'inglês (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/pt_PT.php b/src/Symfony/Component/Intl/Resources/data/locales/pt_PT.php
index ed071e8d72da9..0595568cd88dd 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/pt_PT.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/pt_PT.php
@@ -23,6 +23,7 @@
'en_BS' => 'inglês (Baamas)',
'en_CC' => 'inglês (Ilhas dos Cocos [Keeling])',
'en_CX' => 'inglês (Ilha do Natal)',
+ 'en_CZ' => 'inglês (Chéquia)',
'en_DM' => 'inglês (Domínica)',
'en_FK' => 'inglês (Ilhas Falkland)',
'en_GG' => 'inglês (Guernesey)',
@@ -36,6 +37,8 @@
'en_MU' => 'inglês (Maurícia)',
'en_MW' => 'inglês (Maláui)',
'en_NU' => 'inglês (Niuê)',
+ 'en_PL' => 'inglês (Polónia)',
+ 'en_RO' => 'inglês (Roménia)',
'en_SI' => 'inglês (Eslovénia)',
'en_SX' => 'inglês (São Martinho [Sint Maarten])',
'en_TK' => 'inglês (Toquelau)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/qu.php b/src/Symfony/Component/Intl/Resources/data/locales/qu.php
index 58fa36e7f2360..17a9d47eacc14 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/qu.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/qu.php
@@ -121,29 +121,35 @@
'en_CM' => 'Ingles Simi (Camerún)',
'en_CX' => 'Ingles Simi (Isla Christmas)',
'en_CY' => 'Ingles Simi (Chipre)',
+ 'en_CZ' => 'Ingles Simi (Chequia)',
'en_DE' => 'Ingles Simi (Alemania)',
'en_DK' => 'Ingles Simi (Dinamarca)',
'en_DM' => 'Ingles Simi (Dominica)',
'en_ER' => 'Ingles Simi (Eritrea)',
+ 'en_ES' => 'Ingles Simi (España)',
'en_FI' => 'Ingles Simi (Finlandia)',
'en_FJ' => 'Ingles Simi (Fiyi)',
'en_FK' => 'Ingles Simi (Islas Malvinas)',
'en_FM' => 'Ingles Simi (Micronesia)',
+ 'en_FR' => 'Ingles Simi (Francia)',
'en_GB' => 'Ingles Simi (Reino Unido)',
'en_GD' => 'Ingles Simi (Granada)',
'en_GG' => 'Ingles Simi (Guernesey)',
'en_GH' => 'Ingles Simi (Ghana)',
'en_GI' => 'Ingles Simi (Gibraltar)',
'en_GM' => 'Ingles Simi (Gambia)',
+ 'en_GS' => 'Ingles Simi (Georgia del Sur e Islas Sandwich del Sur)',
'en_GU' => 'Ingles Simi (Guam)',
'en_GY' => 'Ingles Simi (Guyana)',
'en_HK' => 'Ingles Simi (Hong Kong RAE China)',
+ 'en_HU' => 'Ingles Simi (Hungría)',
'en_ID' => 'Ingles Simi (Indonesia)',
'en_IE' => 'Ingles Simi (Irlanda)',
'en_IL' => 'Ingles Simi (Israel)',
'en_IM' => 'Ingles Simi (Isla de Man)',
'en_IN' => 'Ingles Simi (India)',
'en_IO' => 'Ingles Simi (Territorio Británico del Océano Índico)',
+ 'en_IT' => 'Ingles Simi (Italia)',
'en_JE' => 'Ingles Simi (Jersey)',
'en_JM' => 'Ingles Simi (Jamaica)',
'en_KE' => 'Ingles Simi (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'Ingles Simi (Isla Norfolk)',
'en_NG' => 'Ingles Simi (Nigeria)',
'en_NL' => 'Ingles Simi (Países Bajos)',
+ 'en_NO' => 'Ingles Simi (Noruega)',
'en_NR' => 'Ingles Simi (Nauru)',
'en_NU' => 'Ingles Simi (Niue)',
'en_NZ' => 'Ingles Simi (Nueva Zelanda)',
'en_PG' => 'Ingles Simi (Papúa Nueva Guinea)',
'en_PH' => 'Ingles Simi (Filipinas)',
'en_PK' => 'Ingles Simi (Pakistán)',
+ 'en_PL' => 'Ingles Simi (Polonia)',
'en_PN' => 'Ingles Simi (Islas Pitcairn)',
'en_PR' => 'Ingles Simi (Puerto Rico)',
+ 'en_PT' => 'Ingles Simi (Portugal)',
'en_PW' => 'Ingles Simi (Palaos)',
+ 'en_RO' => 'Ingles Simi (Rumania)',
'en_RW' => 'Ingles Simi (Ruanda)',
'en_SB' => 'Ingles Simi (Islas Salomón)',
'en_SC' => 'Ingles Simi (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Ingles Simi (Singapur)',
'en_SH' => 'Ingles Simi (Santa Elena)',
'en_SI' => 'Ingles Simi (Eslovenia)',
+ 'en_SK' => 'Ingles Simi (Eslovaquia)',
'en_SL' => 'Ingles Simi (Sierra Leona)',
'en_SS' => 'Ingles Simi (Sudán del Sur)',
'en_SX' => 'Ingles Simi (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/rm.php b/src/Symfony/Component/Intl/Resources/data/locales/rm.php
index 1c9b71b60f1d2..9508df1b2e32a 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/rm.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/rm.php
@@ -121,28 +121,34 @@
'en_CM' => 'englais (Camerun)',
'en_CX' => 'englais (Insla da Nadal)',
'en_CY' => 'englais (Cipra)',
+ 'en_CZ' => 'englais (Tschechia)',
'en_DE' => 'englais (Germania)',
'en_DK' => 'englais (Danemarc)',
'en_DM' => 'englais (Dominica)',
'en_ER' => 'englais (Eritrea)',
+ 'en_ES' => 'englais (Spagna)',
'en_FI' => 'englais (Finlanda)',
'en_FJ' => 'englais (Fidschi)',
'en_FK' => 'englais (Inslas dal Falkland)',
'en_FM' => 'englais (Micronesia)',
+ 'en_FR' => 'englais (Frantscha)',
'en_GB' => 'englais (Reginavel Unì)',
'en_GD' => 'englais (Grenada)',
'en_GG' => 'englais (Guernsey)',
'en_GH' => 'englais (Ghana)',
'en_GI' => 'englais (Gibraltar)',
'en_GM' => 'englais (Gambia)',
+ 'en_GS' => 'englais (Georgia dal Sid e las Inslas Sandwich dal Sid)',
'en_GU' => 'englais (Guam)',
'en_GY' => 'englais (Guyana)',
'en_HK' => 'englais (Regiun d’administraziun speziala da Hongkong, China)',
+ 'en_HU' => 'englais (Ungaria)',
'en_ID' => 'englais (Indonesia)',
'en_IE' => 'englais (Irlanda)',
'en_IL' => 'englais (Israel)',
'en_IM' => 'englais (Insla da Man)',
'en_IN' => 'englais (India)',
+ 'en_IT' => 'englais (Italia)',
'en_JE' => 'englais (Jersey)',
'en_JM' => 'englais (Giamaica)',
'en_KE' => 'englais (Kenia)',
@@ -166,15 +172,19 @@
'en_NF' => 'englais (Insla Norfolk)',
'en_NG' => 'englais (Nigeria)',
'en_NL' => 'englais (Pajais Bass)',
+ 'en_NO' => 'englais (Norvegia)',
'en_NR' => 'englais (Nauru)',
'en_NU' => 'englais (Niue)',
'en_NZ' => 'englais (Nova Zelanda)',
'en_PG' => 'englais (Papua Nova Guinea)',
'en_PH' => 'englais (Filippinas)',
'en_PK' => 'englais (Pakistan)',
+ 'en_PL' => 'englais (Pologna)',
'en_PN' => 'englais (Pitcairn)',
'en_PR' => 'englais (Puerto Rico)',
+ 'en_PT' => 'englais (Portugal)',
'en_PW' => 'englais (Palau)',
+ 'en_RO' => 'englais (Rumenia)',
'en_RW' => 'englais (Ruanda)',
'en_SB' => 'englais (Inslas Salomonas)',
'en_SC' => 'englais (Seychellas)',
@@ -183,6 +193,7 @@
'en_SG' => 'englais (Singapur)',
'en_SH' => 'englais (Sontg’Elena)',
'en_SI' => 'englais (Slovenia)',
+ 'en_SK' => 'englais (Slovachia)',
'en_SL' => 'englais (Sierra Leone)',
'en_SS' => 'englais (Sudan dal Sid)',
'en_SX' => 'englais (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/rn.php b/src/Symfony/Component/Intl/Resources/data/locales/rn.php
index 26c3aa3610bc1..979345630fc6b 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/rn.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/rn.php
@@ -71,14 +71,17 @@
'en_CK' => 'Icongereza (Izinga rya Kuku)',
'en_CM' => 'Icongereza (Kameruni)',
'en_CY' => 'Icongereza (Izinga rya Shipure)',
+ 'en_CZ' => 'Icongereza (Repubulika ya Ceke)',
'en_DE' => 'Icongereza (Ubudage)',
'en_DK' => 'Icongereza (Danimariki)',
'en_DM' => 'Icongereza (Dominika)',
'en_ER' => 'Icongereza (Elitereya)',
+ 'en_ES' => 'Icongereza (Hisipaniya)',
'en_FI' => 'Icongereza (Finilandi)',
'en_FJ' => 'Icongereza (Fiji)',
'en_FK' => 'Icongereza (Izinga rya Filikilandi)',
'en_FM' => 'Icongereza (Mikoroniziya)',
+ 'en_FR' => 'Icongereza (Ubufaransa)',
'en_GB' => 'Icongereza (Ubwongereza)',
'en_GD' => 'Icongereza (Gerenada)',
'en_GH' => 'Icongereza (Gana)',
@@ -86,10 +89,12 @@
'en_GM' => 'Icongereza (Gambiya)',
'en_GU' => 'Icongereza (Gwamu)',
'en_GY' => 'Icongereza (Guyane)',
+ 'en_HU' => 'Icongereza (Hungariya)',
'en_ID' => 'Icongereza (Indoneziya)',
'en_IE' => 'Icongereza (Irilandi)',
'en_IL' => 'Icongereza (Isiraheli)',
'en_IN' => 'Icongereza (Ubuhindi)',
+ 'en_IT' => 'Icongereza (Ubutaliyani)',
'en_JM' => 'Icongereza (Jamayika)',
'en_KE' => 'Icongereza (Kenya)',
'en_KI' => 'Icongereza (Kiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'Icongereza (izinga rya Norufoluke)',
'en_NG' => 'Icongereza (Nijeriya)',
'en_NL' => 'Icongereza (Ubuholandi)',
+ 'en_NO' => 'Icongereza (Noruveji)',
'en_NR' => 'Icongereza (Nawuru)',
'en_NU' => 'Icongereza (Niyuwe)',
'en_NZ' => 'Icongereza (Nuvelizelandi)',
'en_PG' => 'Icongereza (Papuwa Niyugineya)',
'en_PH' => 'Icongereza (Amazinga ya Filipine)',
'en_PK' => 'Icongereza (Pakisitani)',
+ 'en_PL' => 'Icongereza (Polonye)',
'en_PN' => 'Icongereza (Pitikeyirini)',
'en_PR' => 'Icongereza (Puwetoriko)',
+ 'en_PT' => 'Icongereza (Porutugali)',
'en_PW' => 'Icongereza (Palawu)',
+ 'en_RO' => 'Icongereza (Rumaniya)',
'en_RW' => 'Icongereza (u Rwanda)',
'en_SB' => 'Icongereza (Amazinga ya Salumoni)',
'en_SC' => 'Icongereza (Amazinga ya Seyisheli)',
@@ -128,6 +137,7 @@
'en_SG' => 'Icongereza (Singapuru)',
'en_SH' => 'Icongereza (Sehelene)',
'en_SI' => 'Icongereza (Siloveniya)',
+ 'en_SK' => 'Icongereza (Silovakiya)',
'en_SL' => 'Icongereza (Siyeralewone)',
'en_SZ' => 'Icongereza (Suwazilandi)',
'en_TC' => 'Icongereza (Amazinga ya Turkisi na Cayikosi)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ro.php b/src/Symfony/Component/Intl/Resources/data/locales/ro.php
index a75fa6e172a9a..0b54745b81736 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ro.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ro.php
@@ -121,29 +121,35 @@
'en_CM' => 'engleză (Camerun)',
'en_CX' => 'engleză (Insula Christmas)',
'en_CY' => 'engleză (Cipru)',
+ 'en_CZ' => 'engleză (Cehia)',
'en_DE' => 'engleză (Germania)',
'en_DK' => 'engleză (Danemarca)',
'en_DM' => 'engleză (Dominica)',
'en_ER' => 'engleză (Eritreea)',
+ 'en_ES' => 'engleză (Spania)',
'en_FI' => 'engleză (Finlanda)',
'en_FJ' => 'engleză (Fiji)',
'en_FK' => 'engleză (Insulele Falkland)',
'en_FM' => 'engleză (Micronezia)',
+ 'en_FR' => 'engleză (Franța)',
'en_GB' => 'engleză (Regatul Unit)',
'en_GD' => 'engleză (Grenada)',
'en_GG' => 'engleză (Guernsey)',
'en_GH' => 'engleză (Ghana)',
'en_GI' => 'engleză (Gibraltar)',
'en_GM' => 'engleză (Gambia)',
+ 'en_GS' => 'engleză (Georgia de Sud și Insulele Sandwich de Sud)',
'en_GU' => 'engleză (Guam)',
'en_GY' => 'engleză (Guyana)',
'en_HK' => 'engleză (R.A.S. Hong Kong, China)',
+ 'en_HU' => 'engleză (Ungaria)',
'en_ID' => 'engleză (Indonezia)',
'en_IE' => 'engleză (Irlanda)',
'en_IL' => 'engleză (Israel)',
'en_IM' => 'engleză (Insula Man)',
'en_IN' => 'engleză (India)',
'en_IO' => 'engleză (Teritoriul Britanic din Oceanul Indian)',
+ 'en_IT' => 'engleză (Italia)',
'en_JE' => 'engleză (Jersey)',
'en_JM' => 'engleză (Jamaica)',
'en_KE' => 'engleză (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'engleză (Insula Norfolk)',
'en_NG' => 'engleză (Nigeria)',
'en_NL' => 'engleză (Țările de Jos)',
+ 'en_NO' => 'engleză (Norvegia)',
'en_NR' => 'engleză (Nauru)',
'en_NU' => 'engleză (Niue)',
'en_NZ' => 'engleză (Noua Zeelandă)',
'en_PG' => 'engleză (Papua-Noua Guinee)',
'en_PH' => 'engleză (Filipine)',
'en_PK' => 'engleză (Pakistan)',
+ 'en_PL' => 'engleză (Polonia)',
'en_PN' => 'engleză (Insulele Pitcairn)',
'en_PR' => 'engleză (Puerto Rico)',
+ 'en_PT' => 'engleză (Portugalia)',
'en_PW' => 'engleză (Palau)',
+ 'en_RO' => 'engleză (România)',
'en_RW' => 'engleză (Rwanda)',
'en_SB' => 'engleză (Insulele Solomon)',
'en_SC' => 'engleză (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'engleză (Singapore)',
'en_SH' => 'engleză (Sfânta Elena)',
'en_SI' => 'engleză (Slovenia)',
+ 'en_SK' => 'engleză (Slovacia)',
'en_SL' => 'engleză (Sierra Leone)',
'en_SS' => 'engleză (Sudanul de Sud)',
'en_SX' => 'engleză (Sint-Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ru.php b/src/Symfony/Component/Intl/Resources/data/locales/ru.php
index 5dc363dece908..82f661951cb8c 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ru.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ru.php
@@ -121,29 +121,35 @@
'en_CM' => 'английский (Камерун)',
'en_CX' => 'английский (о-в Рождества)',
'en_CY' => 'английский (Кипр)',
+ 'en_CZ' => 'английский (Чехия)',
'en_DE' => 'английский (Германия)',
'en_DK' => 'английский (Дания)',
'en_DM' => 'английский (Доминика)',
'en_ER' => 'английский (Эритрея)',
+ 'en_ES' => 'английский (Испания)',
'en_FI' => 'английский (Финляндия)',
'en_FJ' => 'английский (Фиджи)',
'en_FK' => 'английский (Фолклендские о-ва)',
'en_FM' => 'английский (Федеративные Штаты Микронезии)',
+ 'en_FR' => 'английский (Франция)',
'en_GB' => 'английский (Великобритания)',
'en_GD' => 'английский (Гренада)',
'en_GG' => 'английский (Гернси)',
'en_GH' => 'английский (Гана)',
'en_GI' => 'английский (Гибралтар)',
'en_GM' => 'английский (Гамбия)',
+ 'en_GS' => 'английский (Южная Георгия и Южные Сандвичевы о-ва)',
'en_GU' => 'английский (Гуам)',
'en_GY' => 'английский (Гайана)',
'en_HK' => 'английский (Гонконг [САР])',
+ 'en_HU' => 'английский (Венгрия)',
'en_ID' => 'английский (Индонезия)',
'en_IE' => 'английский (Ирландия)',
'en_IL' => 'английский (Израиль)',
'en_IM' => 'английский (о-в Мэн)',
'en_IN' => 'английский (Индия)',
'en_IO' => 'английский (Британская территория в Индийском океане)',
+ 'en_IT' => 'английский (Италия)',
'en_JE' => 'английский (Джерси)',
'en_JM' => 'английский (Ямайка)',
'en_KE' => 'английский (Кения)',
@@ -167,15 +173,19 @@
'en_NF' => 'английский (о-в Норфолк)',
'en_NG' => 'английский (Нигерия)',
'en_NL' => 'английский (Нидерланды)',
+ 'en_NO' => 'английский (Норвегия)',
'en_NR' => 'английский (Науру)',
'en_NU' => 'английский (Ниуэ)',
'en_NZ' => 'английский (Новая Зеландия)',
'en_PG' => 'английский (Папуа — Новая Гвинея)',
'en_PH' => 'английский (Филиппины)',
'en_PK' => 'английский (Пакистан)',
+ 'en_PL' => 'английский (Польша)',
'en_PN' => 'английский (о-ва Питкэрн)',
'en_PR' => 'английский (Пуэрто-Рико)',
+ 'en_PT' => 'английский (Португалия)',
'en_PW' => 'английский (Палау)',
+ 'en_RO' => 'английский (Румыния)',
'en_RW' => 'английский (Руанда)',
'en_SB' => 'английский (Соломоновы о-ва)',
'en_SC' => 'английский (Сейшельские о-ва)',
@@ -184,6 +194,7 @@
'en_SG' => 'английский (Сингапур)',
'en_SH' => 'английский (о-в Св. Елены)',
'en_SI' => 'английский (Словения)',
+ 'en_SK' => 'английский (Словакия)',
'en_SL' => 'английский (Сьерра-Леоне)',
'en_SS' => 'английский (Южный Судан)',
'en_SX' => 'английский (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sa.php b/src/Symfony/Component/Intl/Resources/data/locales/sa.php
index ed01f879c2556..f605eea7e0d90 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sa.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sa.php
@@ -7,8 +7,10 @@
'de_IT' => 'जर्मनभाषा: (इटली:)',
'en' => 'आङ्ग्लभाषा',
'en_DE' => 'आङ्ग्लभाषा (जर्मनीदेश:)',
+ 'en_FR' => 'आङ्ग्लभाषा (फ़्रांस:)',
'en_GB' => 'आङ्ग्लभाषा (संयुक्त राष्ट्र:)',
'en_IN' => 'आङ्ग्लभाषा (भारतः)',
+ 'en_IT' => 'आङ्ग्लभाषा (इटली:)',
'en_US' => 'आङ्ग्लभाषा (संयुक्त राज्य:)',
'es' => 'स्पेनीय भाषा:',
'es_BR' => 'स्पेनीय भाषा: (ब्राजील)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sc.php b/src/Symfony/Component/Intl/Resources/data/locales/sc.php
index 798c7b6420b4d..8aa2570069300 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sc.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sc.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglesu (Camerùn)',
'en_CX' => 'inglesu (Ìsula de sa Natividade)',
'en_CY' => 'inglesu (Tzipru)',
+ 'en_CZ' => 'inglesu (Tzèchia)',
'en_DE' => 'inglesu (Germània)',
'en_DK' => 'inglesu (Danimarca)',
'en_DM' => 'inglesu (Dominica)',
'en_ER' => 'inglesu (Eritrea)',
+ 'en_ES' => 'inglesu (Ispagna)',
'en_FI' => 'inglesu (Finlàndia)',
'en_FJ' => 'inglesu (Fiji)',
'en_FK' => 'inglesu (Ìsulas Falkland)',
'en_FM' => 'inglesu (Micronèsia)',
+ 'en_FR' => 'inglesu (Frantza)',
'en_GB' => 'inglesu (Regnu Unidu)',
'en_GD' => 'inglesu (Grenada)',
'en_GG' => 'inglesu (Guernsey)',
'en_GH' => 'inglesu (Ghana)',
'en_GI' => 'inglesu (Gibilterra)',
'en_GM' => 'inglesu (Gàmbia)',
+ 'en_GS' => 'inglesu (Geòrgia de su Sud e Ìsulas Sandwich Australes)',
'en_GU' => 'inglesu (Guàm)',
'en_GY' => 'inglesu (Guyana)',
'en_HK' => 'inglesu (RAS tzinesa de Hong Kong)',
+ 'en_HU' => 'inglesu (Ungheria)',
'en_ID' => 'inglesu (Indonèsia)',
'en_IE' => 'inglesu (Irlanda)',
'en_IL' => 'inglesu (Israele)',
'en_IM' => 'inglesu (Ìsula de Man)',
'en_IN' => 'inglesu (Ìndia)',
'en_IO' => 'inglesu (Territòriu Britànnicu de s’Otzèanu Indianu)',
+ 'en_IT' => 'inglesu (Itàlia)',
'en_JE' => 'inglesu (Jersey)',
'en_JM' => 'inglesu (Giamàica)',
'en_KE' => 'inglesu (Kènya)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglesu (Ìsula Norfolk)',
'en_NG' => 'inglesu (Nigèria)',
'en_NL' => 'inglesu (Paisos Bassos)',
+ 'en_NO' => 'inglesu (Norvègia)',
'en_NR' => 'inglesu (Nauru)',
'en_NU' => 'inglesu (Niue)',
'en_NZ' => 'inglesu (Zelanda Noa)',
'en_PG' => 'inglesu (Pàpua Guinea Noa)',
'en_PH' => 'inglesu (Filipinas)',
'en_PK' => 'inglesu (Pàkistan)',
+ 'en_PL' => 'inglesu (Polònia)',
'en_PN' => 'inglesu (Ìsulas Pìtcairn)',
'en_PR' => 'inglesu (Puerto Rico)',
+ 'en_PT' => 'inglesu (Portogallu)',
'en_PW' => 'inglesu (Palau)',
+ 'en_RO' => 'inglesu (Romania)',
'en_RW' => 'inglesu (Ruanda)',
'en_SB' => 'inglesu (Ìsulas Salomone)',
'en_SC' => 'inglesu (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglesu (Singapore)',
'en_SH' => 'inglesu (Santa Elene)',
'en_SI' => 'inglesu (Islovènia)',
+ 'en_SK' => 'inglesu (Islovàchia)',
'en_SL' => 'inglesu (Sierra Leone)',
'en_SS' => 'inglesu (Sudan de su Sud)',
'en_SX' => 'inglesu (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sd.php b/src/Symfony/Component/Intl/Resources/data/locales/sd.php
index 56e38bc5eb5c9..61244adac0296 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sd.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sd.php
@@ -121,29 +121,35 @@
'en_CM' => 'انگريزي (ڪيمرون)',
'en_CX' => 'انگريزي (ڪرسمس ٻيٽ)',
'en_CY' => 'انگريزي (سائپرس)',
+ 'en_CZ' => 'انگريزي (چيڪيا)',
'en_DE' => 'انگريزي (جرمني)',
'en_DK' => 'انگريزي (ڊينمارڪ)',
'en_DM' => 'انگريزي (ڊومينيڪا)',
'en_ER' => 'انگريزي (ايريٽيريا)',
+ 'en_ES' => 'انگريزي (اسپين)',
'en_FI' => 'انگريزي (فن لينڊ)',
'en_FJ' => 'انگريزي (فجي)',
'en_FK' => 'انگريزي (فاڪ لينڊ ٻيٽ)',
'en_FM' => 'انگريزي (مائڪرونيشيا)',
+ 'en_FR' => 'انگريزي (فرانس)',
'en_GB' => 'انگريزي (برطانيہ)',
'en_GD' => 'انگريزي (گريناڊا)',
'en_GG' => 'انگريزي (گورنسي)',
'en_GH' => 'انگريزي (گهانا)',
'en_GI' => 'انگريزي (جبرالٽر)',
'en_GM' => 'انگريزي (گيمبيا)',
+ 'en_GS' => 'انگريزي (ڏکڻ جارجيا ۽ ڏکڻ سينڊوچ ٻيٽ)',
'en_GU' => 'انگريزي (گوام)',
'en_GY' => 'انگريزي (گيانا)',
'en_HK' => 'انگريزي (هانگ ڪانگ SAR)',
+ 'en_HU' => 'انگريزي (هنگري)',
'en_ID' => 'انگريزي (انڊونيشيا)',
'en_IE' => 'انگريزي (آئرلينڊ)',
'en_IL' => 'انگريزي (اسرائيل)',
'en_IM' => 'انگريزي (انسانن جو ٻيٽ)',
'en_IN' => 'انگريزي (ڀارت)',
'en_IO' => 'انگريزي (برطانوي هندي سمنڊ خطو)',
+ 'en_IT' => 'انگريزي (اٽلي)',
'en_JE' => 'انگريزي (جرسي)',
'en_JM' => 'انگريزي (جميڪا)',
'en_KE' => 'انگريزي (ڪينيا)',
@@ -167,15 +173,19 @@
'en_NF' => 'انگريزي (نورفوڪ ٻيٽ)',
'en_NG' => 'انگريزي (نائيجيريا)',
'en_NL' => 'انگريزي (نيدرلينڊ)',
+ 'en_NO' => 'انگريزي (ناروي)',
'en_NR' => 'انگريزي (نائورو)',
'en_NU' => 'انگريزي (نووي)',
'en_NZ' => 'انگريزي (نيو زيلينڊ)',
'en_PG' => 'انگريزي (پاپوا نیو گني)',
'en_PH' => 'انگريزي (فلپائن)',
'en_PK' => 'انگريزي (پاڪستان)',
+ 'en_PL' => 'انگريزي (پولينڊ)',
'en_PN' => 'انگريزي (پٽڪئرن ٻيٽ)',
'en_PR' => 'انگريزي (پيوئرٽو ريڪو)',
+ 'en_PT' => 'انگريزي (پرتگال)',
'en_PW' => 'انگريزي (پلائو)',
+ 'en_RO' => 'انگريزي (رومانيا)',
'en_RW' => 'انگريزي (روانڊا)',
'en_SB' => 'انگريزي (سولومون ٻيٽَ)',
'en_SC' => 'انگريزي (شي شلز)',
@@ -184,6 +194,7 @@
'en_SG' => 'انگريزي (سنگاپور)',
'en_SH' => 'انگريزي (سينٽ ھيلينا)',
'en_SI' => 'انگريزي (سلوینیا)',
+ 'en_SK' => 'انگريزي (سلوواڪيا)',
'en_SL' => 'انگريزي (سيرا ليون)',
'en_SS' => 'انگريزي (ڏکڻ سوڊان)',
'en_SX' => 'انگريزي (سنٽ مارٽن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sd_Deva.php b/src/Symfony/Component/Intl/Resources/data/locales/sd_Deva.php
index 2c2deaf3538ca..e1135e55c5efc 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sd_Deva.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sd_Deva.php
@@ -51,29 +51,35 @@
'en_CM' => 'अंगरेज़ी (ڪيمرون)',
'en_CX' => 'अंगरेज़ी (ڪرسمس ٻيٽ)',
'en_CY' => 'अंगरेज़ी (سائپرس)',
+ 'en_CZ' => 'अंगरेज़ी (چيڪيا)',
'en_DE' => 'अंगरेज़ी (जर्मनी)',
'en_DK' => 'अंगरेज़ी (ڊينمارڪ)',
'en_DM' => 'अंगरेज़ी (ڊومينيڪا)',
'en_ER' => 'अंगरेज़ी (ايريٽيريا)',
+ 'en_ES' => 'अंगरेज़ी (اسپين)',
'en_FI' => 'अंगरेज़ी (فن لينڊ)',
'en_FJ' => 'अंगरेज़ी (فجي)',
'en_FK' => 'अंगरेज़ी (فاڪ لينڊ ٻيٽ)',
'en_FM' => 'अंगरेज़ी (مائڪرونيشيا)',
+ 'en_FR' => 'अंगरेज़ी (फ़्रांस)',
'en_GB' => 'अंगरेज़ी (बरतानी)',
'en_GD' => 'अंगरेज़ी (گريناڊا)',
'en_GG' => 'अंगरेज़ी (گورنسي)',
'en_GH' => 'अंगरेज़ी (گهانا)',
'en_GI' => 'अंगरेज़ी (جبرالٽر)',
'en_GM' => 'अंगरेज़ी (گيمبيا)',
+ 'en_GS' => 'अंगरेज़ी (ڏکڻ جارجيا ۽ ڏکڻ سينڊوچ ٻيٽ)',
'en_GU' => 'अंगरेज़ी (گوام)',
'en_GY' => 'अंगरेज़ी (گيانا)',
'en_HK' => 'अंगरेज़ी (هانگ ڪانگ SAR)',
+ 'en_HU' => 'अंगरेज़ी (هنگري)',
'en_ID' => 'अंगरेज़ी (انڊونيشيا)',
'en_IE' => 'अंगरेज़ी (آئرلينڊ)',
'en_IL' => 'अंगरेज़ी (اسرائيل)',
'en_IM' => 'अंगरेज़ी (انسانن جو ٻيٽ)',
'en_IN' => 'अंगरेज़ी (भारत)',
'en_IO' => 'अंगरेज़ी (برطانوي هندي سمنڊ خطو)',
+ 'en_IT' => 'अंगरेज़ी (इटली)',
'en_JE' => 'अंगरेज़ी (جرسي)',
'en_JM' => 'अंगरेज़ी (جميڪا)',
'en_KE' => 'अंगरेज़ी (ڪينيا)',
@@ -97,15 +103,19 @@
'en_NF' => 'अंगरेज़ी (نورفوڪ ٻيٽ)',
'en_NG' => 'अंगरेज़ी (نائيجيريا)',
'en_NL' => 'अंगरेज़ी (نيدرلينڊ)',
+ 'en_NO' => 'अंगरेज़ी (ناروي)',
'en_NR' => 'अंगरेज़ी (نائورو)',
'en_NU' => 'अंगरेज़ी (نووي)',
'en_NZ' => 'अंगरेज़ी (نيو زيلينڊ)',
'en_PG' => 'अंगरेज़ी (پاپوا نیو گني)',
'en_PH' => 'अंगरेज़ी (فلپائن)',
'en_PK' => 'अंगरेज़ी (पाकिस्तान)',
+ 'en_PL' => 'अंगरेज़ी (پولينڊ)',
'en_PN' => 'अंगरेज़ी (پٽڪئرن ٻيٽ)',
'en_PR' => 'अंगरेज़ी (پيوئرٽو ريڪو)',
+ 'en_PT' => 'अंगरेज़ी (پرتگال)',
'en_PW' => 'अंगरेज़ी (پلائو)',
+ 'en_RO' => 'अंगरेज़ी (رومانيا)',
'en_RW' => 'अंगरेज़ी (روانڊا)',
'en_SB' => 'अंगरेज़ी (سولومون ٻيٽَ)',
'en_SC' => 'अंगरेज़ी (شي شلز)',
@@ -114,6 +124,7 @@
'en_SG' => 'अंगरेज़ी (سنگاپور)',
'en_SH' => 'अंगरेज़ी (سينٽ ھيلينا)',
'en_SI' => 'अंगरेज़ी (سلوینیا)',
+ 'en_SK' => 'अंगरेज़ी (سلوواڪيا)',
'en_SL' => 'अंगरेज़ी (سيرا ليون)',
'en_SS' => 'अंगरेज़ी (ڏکڻ سوڊان)',
'en_SX' => 'अंगरेज़ी (سنٽ مارٽن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/se.php b/src/Symfony/Component/Intl/Resources/data/locales/se.php
index 559e781dbdc5d..18863765e7aaa 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/se.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/se.php
@@ -100,28 +100,34 @@
'en_CM' => 'eaŋgalsgiella (Kamerun)',
'en_CX' => 'eaŋgalsgiella (Juovllat-sullot)',
'en_CY' => 'eaŋgalsgiella (Kypros)',
+ 'en_CZ' => 'eaŋgalsgiella (Čeahkka)',
'en_DE' => 'eaŋgalsgiella (Duiska)',
'en_DK' => 'eaŋgalsgiella (Dánmárku)',
'en_DM' => 'eaŋgalsgiella (Dominica)',
'en_ER' => 'eaŋgalsgiella (Eritrea)',
+ 'en_ES' => 'eaŋgalsgiella (Spánia)',
'en_FI' => 'eaŋgalsgiella (Suopma)',
'en_FJ' => 'eaŋgalsgiella (Fijisullot)',
'en_FK' => 'eaŋgalsgiella (Falklandsullot)',
'en_FM' => 'eaŋgalsgiella (Mikronesia)',
+ 'en_FR' => 'eaŋgalsgiella (Frankriika)',
'en_GB' => 'eaŋgalsgiella (Stuorra-Británnia)',
'en_GD' => 'eaŋgalsgiella (Grenada)',
'en_GG' => 'eaŋgalsgiella (Guernsey)',
'en_GH' => 'eaŋgalsgiella (Ghana)',
'en_GI' => 'eaŋgalsgiella (Gibraltar)',
'en_GM' => 'eaŋgalsgiella (Gámbia)',
+ 'en_GS' => 'eaŋgalsgiella (Lulli Georgia ja Lulli Sandwich-sullot)',
'en_GU' => 'eaŋgalsgiella (Guam)',
'en_GY' => 'eaŋgalsgiella (Guyana)',
'en_HK' => 'eaŋgalsgiella (Hongkong)',
+ 'en_HU' => 'eaŋgalsgiella (Ungár)',
'en_ID' => 'eaŋgalsgiella (Indonesia)',
'en_IE' => 'eaŋgalsgiella (Irlánda)',
'en_IL' => 'eaŋgalsgiella (Israel)',
'en_IM' => 'eaŋgalsgiella (Mann-sullot)',
'en_IN' => 'eaŋgalsgiella (India)',
+ 'en_IT' => 'eaŋgalsgiella (Itália)',
'en_JE' => 'eaŋgalsgiella (Jersey)',
'en_JM' => 'eaŋgalsgiella (Jamaica)',
'en_KE' => 'eaŋgalsgiella (Kenia)',
@@ -145,15 +151,19 @@
'en_NF' => 'eaŋgalsgiella (Norfolksullot)',
'en_NG' => 'eaŋgalsgiella (Nigeria)',
'en_NL' => 'eaŋgalsgiella (Vuolleeatnamat)',
+ 'en_NO' => 'eaŋgalsgiella (Norga)',
'en_NR' => 'eaŋgalsgiella (Nauru)',
'en_NU' => 'eaŋgalsgiella (Niue)',
'en_NZ' => 'eaŋgalsgiella (Ođđa-Selánda)',
'en_PG' => 'eaŋgalsgiella (Papua-Ođđa-Guinea)',
'en_PH' => 'eaŋgalsgiella (Filippiinnat)',
'en_PK' => 'eaŋgalsgiella (Pakistan)',
+ 'en_PL' => 'eaŋgalsgiella (Polen)',
'en_PN' => 'eaŋgalsgiella (Pitcairn)',
'en_PR' => 'eaŋgalsgiella (Puerto Rico)',
+ 'en_PT' => 'eaŋgalsgiella (Portugála)',
'en_PW' => 'eaŋgalsgiella (Palau)',
+ 'en_RO' => 'eaŋgalsgiella (Románia)',
'en_RW' => 'eaŋgalsgiella (Rwanda)',
'en_SB' => 'eaŋgalsgiella (Salomon-sullot)',
'en_SC' => 'eaŋgalsgiella (Seychellsullot)',
@@ -162,6 +172,7 @@
'en_SG' => 'eaŋgalsgiella (Singapore)',
'en_SH' => 'eaŋgalsgiella (Saint Helena)',
'en_SI' => 'eaŋgalsgiella (Slovenia)',
+ 'en_SK' => 'eaŋgalsgiella (Slovákia)',
'en_SL' => 'eaŋgalsgiella (Sierra Leone)',
'en_SS' => 'eaŋgalsgiella (Máttasudan)',
'en_SX' => 'eaŋgalsgiella (Vuolleeatnamat Saint Martin)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sg.php b/src/Symfony/Component/Intl/Resources/data/locales/sg.php
index 1f173b9d4abfc..89dfbd398d19e 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sg.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sg.php
@@ -71,14 +71,17 @@
'en_CK' => 'Anglëe (âzûâ Kûku)',
'en_CM' => 'Anglëe (Kamerûne)',
'en_CY' => 'Anglëe (Sîpri)',
+ 'en_CZ' => 'Anglëe (Ködörösêse tî Tyêki)',
'en_DE' => 'Anglëe (Zâmani)',
'en_DK' => 'Anglëe (Danemêrke)',
'en_DM' => 'Anglëe (Dömïnîka)',
'en_ER' => 'Anglëe (Eritrëe)',
+ 'en_ES' => 'Anglëe (Espânye)',
'en_FI' => 'Anglëe (Fëlânde)',
'en_FJ' => 'Anglëe (Fidyïi)',
'en_FK' => 'Anglëe (Âzûâ tî Mälüîni)',
'en_FM' => 'Anglëe (Mikronezïi)',
+ 'en_FR' => 'Anglëe (Farânzi)',
'en_GB' => 'Anglëe (Ködörögbïä--Ôko)',
'en_GD' => 'Anglëe (Grenâda)',
'en_GH' => 'Anglëe (Ganäa)',
@@ -86,10 +89,12 @@
'en_GM' => 'Anglëe (Gambïi)',
'en_GU' => 'Anglëe (Guâm)',
'en_GY' => 'Anglëe (Gayâna)',
+ 'en_HU' => 'Anglëe (Hongirùii)',
'en_ID' => 'Anglëe (Ênndonezïi)',
'en_IE' => 'Anglëe (Irlânde)',
'en_IL' => 'Anglëe (Israëli)',
'en_IN' => 'Anglëe (Ênnde)',
+ 'en_IT' => 'Anglëe (Italùii)',
'en_JM' => 'Anglëe (Zamaîka)',
'en_KE' => 'Anglëe (Kenyäa)',
'en_KI' => 'Anglëe (Kiribati)',
@@ -111,15 +116,19 @@
'en_NF' => 'Anglëe (Zûâ Nôrfôlko)',
'en_NG' => 'Anglëe (Nizerïa)',
'en_NL' => 'Anglëe (Holände)',
+ 'en_NO' => 'Anglëe (Nörvêzi)',
'en_NR' => 'Anglëe (Nauru)',
'en_NU' => 'Anglëe (Niue)',
'en_NZ' => 'Anglëe (Finî Zelânde)',
'en_PG' => 'Anglëe (Papû Finî Ginëe, Papuazïi)',
'en_PH' => 'Anglëe (Filipîni)',
'en_PK' => 'Anglëe (Pakistäan)',
+ 'en_PL' => 'Anglëe (Pölôni)',
'en_PN' => 'Anglëe (Pitikêrni)',
'en_PR' => 'Anglëe (Porto Rîko)',
+ 'en_PT' => 'Anglëe (Pörtugäle, Ködörö Pûra)',
'en_PW' => 'Anglëe (Palau)',
+ 'en_RO' => 'Anglëe (Rumanïi)',
'en_RW' => 'Anglëe (Ruandäa)',
'en_SB' => 'Anglëe (Zûâ Salomöon)',
'en_SC' => 'Anglëe (Sëyshêle)',
@@ -128,6 +137,7 @@
'en_SG' => 'Anglëe (Sïngäpûru)',
'en_SH' => 'Anglëe (Sênt-Helêna)',
'en_SI' => 'Anglëe (Solovenïi)',
+ 'en_SK' => 'Anglëe (Solovakïi)',
'en_SL' => 'Anglëe (Sierä-Leône)',
'en_SZ' => 'Anglëe (Swäzïlânde)',
'en_TC' => 'Anglëe (Âzûâ Turku na Kaîki)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/si.php b/src/Symfony/Component/Intl/Resources/data/locales/si.php
index 7358353002dc2..46632611fc9ac 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/si.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/si.php
@@ -121,29 +121,35 @@
'en_CM' => 'ඉංග්රීසි (කැමරූන්)',
'en_CX' => 'ඉංග්රීසි (ක්රිස්මස් දූපත)',
'en_CY' => 'ඉංග්රීසි (සයිප්රසය)',
+ 'en_CZ' => 'ඉංග්රීසි (චෙචියාව)',
'en_DE' => 'ඉංග්රීසි (ජර්මනිය)',
'en_DK' => 'ඉංග්රීසි (ඩෙන්මාර්කය)',
'en_DM' => 'ඉංග්රීසි (ඩොමිනිකාව)',
'en_ER' => 'ඉංග්රීසි (එරිත්රියාව)',
+ 'en_ES' => 'ඉංග්රීසි (ස්පාඤ්ඤය)',
'en_FI' => 'ඉංග්රීසි (ෆින්ලන්තය)',
'en_FJ' => 'ඉංග්රීසි (ෆීජී)',
'en_FK' => 'ඉංග්රීසි (ෆෝක්ලන්ත දූපත්)',
'en_FM' => 'ඉංග්රීසි (මයික්රොනීසියාව)',
+ 'en_FR' => 'ඉංග්රීසි (ප්රංශය)',
'en_GB' => 'ඉංග්රීසි (එක්සත් රාජධානිය)',
'en_GD' => 'ඉංග්රීසි (ග්රැනඩාව)',
'en_GG' => 'ඉංග්රීසි (ගර්න්සිය)',
'en_GH' => 'ඉංග්රීසි (ඝානාව)',
'en_GI' => 'ඉංග්රීසි (ජිබ්රෝල්ටාව)',
'en_GM' => 'ඉංග්රීසි (ගැම්බියාව)',
+ 'en_GS' => 'ඉංග්රීසි (දකුණු ජෝර්ජියාව සහ දකුණු සැන්ඩ්විච් දූපත්)',
'en_GU' => 'ඉංග්රීසි (ගුවාම්)',
'en_GY' => 'ඉංග්රීසි (ගයනාව)',
'en_HK' => 'ඉංග්රීසි (හොංකොං විශේෂ පරිපාලන කලාපය චීනය)',
+ 'en_HU' => 'ඉංග්රීසි (හන්ගේරියාව)',
'en_ID' => 'ඉංග්රීසි (ඉන්දුනීසියාව)',
'en_IE' => 'ඉංග්රීසි (අයර්ලන්තය)',
'en_IL' => 'ඉංග්රීසි (ඊශ්රායලය)',
'en_IM' => 'ඉංග්රීසි (අයිල් ඔෆ් මෑන්)',
'en_IN' => 'ඉංග්රීසි (ඉන්දියාව)',
'en_IO' => 'ඉංග්රීසි (බ්රිතාන්ය ඉන්දීය සාගර බල ප්රදේශය)',
+ 'en_IT' => 'ඉංග්රීසි (ඉතාලිය)',
'en_JE' => 'ඉංග්රීසි (ජර්සි)',
'en_JM' => 'ඉංග්රීසි (ජැමෙයිකාව)',
'en_KE' => 'ඉංග්රීසි (කෙන්යාව)',
@@ -167,15 +173,19 @@
'en_NF' => 'ඉංග්රීසි (නෝෆෝක් දූපත)',
'en_NG' => 'ඉංග්රීසි (නයිජීරියාව)',
'en_NL' => 'ඉංග්රීසි (නෙදර්ලන්තය)',
+ 'en_NO' => 'ඉංග්රීසි (නෝර්වේ)',
'en_NR' => 'ඉංග්රීසි (නාවුරු)',
'en_NU' => 'ඉංග්රීසි (නියූ)',
'en_NZ' => 'ඉංග්රීසි (නවසීලන්තය)',
'en_PG' => 'ඉංග්රීසි (පැපුවා නිව් ගිනියාව)',
'en_PH' => 'ඉංග්රීසි (පිලිපීනය)',
'en_PK' => 'ඉංග්රීසි (පාකිස්තානය)',
+ 'en_PL' => 'ඉංග්රීසි (පෝලන්තය)',
'en_PN' => 'ඉංග්රීසි (පිට්කෙය්න් දූපත්)',
'en_PR' => 'ඉංග්රීසි (පුවර්ටෝ රිකෝ)',
+ 'en_PT' => 'ඉංග්රීසි (පෘතුගාලය)',
'en_PW' => 'ඉංග්රීසි (පලාවු)',
+ 'en_RO' => 'ඉංග්රීසි (රුමේනියාව)',
'en_RW' => 'ඉංග්රීසි (රුවන්ඩාව)',
'en_SB' => 'ඉංග්රීසි (සොලමන් දූපත්)',
'en_SC' => 'ඉංග්රීසි (සීශෙල්ස්)',
@@ -184,6 +194,7 @@
'en_SG' => 'ඉංග්රීසි (සිංගප්පූරුව)',
'en_SH' => 'ඉංග්රීසි (ශාන්ත හෙලේනා)',
'en_SI' => 'ඉංග්රීසි (ස්ලෝවේනියාව)',
+ 'en_SK' => 'ඉංග්රීසි (ස්ලෝවැකියාව)',
'en_SL' => 'ඉංග්රීසි (සියරාලියෝන්)',
'en_SS' => 'ඉංග්රීසි (දකුණු සුඩානය)',
'en_SX' => 'ඉංග්රීසි (ශාන්ත මාර්ටෙන්)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sk.php b/src/Symfony/Component/Intl/Resources/data/locales/sk.php
index 58a4060269623..0520f01432057 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sk.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sk.php
@@ -121,29 +121,35 @@
'en_CM' => 'angličtina (Kamerun)',
'en_CX' => 'angličtina (Vianočný ostrov)',
'en_CY' => 'angličtina (Cyprus)',
+ 'en_CZ' => 'angličtina (Česko)',
'en_DE' => 'angličtina (Nemecko)',
'en_DK' => 'angličtina (Dánsko)',
'en_DM' => 'angličtina (Dominika)',
'en_ER' => 'angličtina (Eritrea)',
+ 'en_ES' => 'angličtina (Španielsko)',
'en_FI' => 'angličtina (Fínsko)',
'en_FJ' => 'angličtina (Fidži)',
'en_FK' => 'angličtina (Falklandy)',
'en_FM' => 'angličtina (Mikronézia)',
+ 'en_FR' => 'angličtina (Francúzsko)',
'en_GB' => 'angličtina (Spojené kráľovstvo)',
'en_GD' => 'angličtina (Grenada)',
'en_GG' => 'angličtina (Guernsey)',
'en_GH' => 'angličtina (Ghana)',
'en_GI' => 'angličtina (Gibraltár)',
'en_GM' => 'angličtina (Gambia)',
+ 'en_GS' => 'angličtina (Južná Georgia a Južné Sandwichove ostrovy)',
'en_GU' => 'angličtina (Guam)',
'en_GY' => 'angličtina (Guyana)',
'en_HK' => 'angličtina (Hongkong – OAO Číny)',
+ 'en_HU' => 'angličtina (Maďarsko)',
'en_ID' => 'angličtina (Indonézia)',
'en_IE' => 'angličtina (Írsko)',
'en_IL' => 'angličtina (Izrael)',
'en_IM' => 'angličtina (Ostrov Man)',
'en_IN' => 'angličtina (India)',
'en_IO' => 'angličtina (Britské indickooceánske územie)',
+ 'en_IT' => 'angličtina (Taliansko)',
'en_JE' => 'angličtina (Jersey)',
'en_JM' => 'angličtina (Jamajka)',
'en_KE' => 'angličtina (Keňa)',
@@ -167,15 +173,19 @@
'en_NF' => 'angličtina (Norfolk)',
'en_NG' => 'angličtina (Nigéria)',
'en_NL' => 'angličtina (Holandsko)',
+ 'en_NO' => 'angličtina (Nórsko)',
'en_NR' => 'angličtina (Nauru)',
'en_NU' => 'angličtina (Niue)',
'en_NZ' => 'angličtina (Nový Zéland)',
'en_PG' => 'angličtina (Papua-Nová Guinea)',
'en_PH' => 'angličtina (Filipíny)',
'en_PK' => 'angličtina (Pakistan)',
+ 'en_PL' => 'angličtina (Poľsko)',
'en_PN' => 'angličtina (Pitcairnove ostrovy)',
'en_PR' => 'angličtina (Portoriko)',
+ 'en_PT' => 'angličtina (Portugalsko)',
'en_PW' => 'angličtina (Palau)',
+ 'en_RO' => 'angličtina (Rumunsko)',
'en_RW' => 'angličtina (Rwanda)',
'en_SB' => 'angličtina (Šalamúnove ostrovy)',
'en_SC' => 'angličtina (Seychely)',
@@ -184,6 +194,7 @@
'en_SG' => 'angličtina (Singapur)',
'en_SH' => 'angličtina (Svätá Helena)',
'en_SI' => 'angličtina (Slovinsko)',
+ 'en_SK' => 'angličtina (Slovensko)',
'en_SL' => 'angličtina (Sierra Leone)',
'en_SS' => 'angličtina (Južný Sudán)',
'en_SX' => 'angličtina (Svätý Martin [hol.])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sl.php b/src/Symfony/Component/Intl/Resources/data/locales/sl.php
index 9d8f490c62298..9484195652baa 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sl.php
@@ -121,29 +121,35 @@
'en_CM' => 'angleščina (Kamerun)',
'en_CX' => 'angleščina (Božični otok)',
'en_CY' => 'angleščina (Ciper)',
+ 'en_CZ' => 'angleščina (Češka)',
'en_DE' => 'angleščina (Nemčija)',
'en_DK' => 'angleščina (Danska)',
'en_DM' => 'angleščina (Dominika)',
'en_ER' => 'angleščina (Eritreja)',
+ 'en_ES' => 'angleščina (Španija)',
'en_FI' => 'angleščina (Finska)',
'en_FJ' => 'angleščina (Fidži)',
'en_FK' => 'angleščina (Falklandski otoki)',
'en_FM' => 'angleščina (Mikronezija)',
+ 'en_FR' => 'angleščina (Francija)',
'en_GB' => 'angleščina (Združeno kraljestvo)',
'en_GD' => 'angleščina (Grenada)',
'en_GG' => 'angleščina (Guernsey)',
'en_GH' => 'angleščina (Gana)',
'en_GI' => 'angleščina (Gibraltar)',
'en_GM' => 'angleščina (Gambija)',
+ 'en_GS' => 'angleščina (Južna Georgia in Južni Sandwichevi otoki)',
'en_GU' => 'angleščina (Guam)',
'en_GY' => 'angleščina (Gvajana)',
'en_HK' => 'angleščina (Posebno upravno območje Ljudske republike Kitajske Hongkong)',
+ 'en_HU' => 'angleščina (Madžarska)',
'en_ID' => 'angleščina (Indonezija)',
'en_IE' => 'angleščina (Irska)',
'en_IL' => 'angleščina (Izrael)',
'en_IM' => 'angleščina (Otok Man)',
'en_IN' => 'angleščina (Indija)',
'en_IO' => 'angleščina (Britansko ozemlje v Indijskem oceanu)',
+ 'en_IT' => 'angleščina (Italija)',
'en_JE' => 'angleščina (Jersey)',
'en_JM' => 'angleščina (Jamajka)',
'en_KE' => 'angleščina (Kenija)',
@@ -167,15 +173,19 @@
'en_NF' => 'angleščina (Norfolški otok)',
'en_NG' => 'angleščina (Nigerija)',
'en_NL' => 'angleščina (Nizozemska)',
+ 'en_NO' => 'angleščina (Norveška)',
'en_NR' => 'angleščina (Nauru)',
'en_NU' => 'angleščina (Niue)',
'en_NZ' => 'angleščina (Nova Zelandija)',
'en_PG' => 'angleščina (Papua Nova Gvineja)',
'en_PH' => 'angleščina (Filipini)',
'en_PK' => 'angleščina (Pakistan)',
+ 'en_PL' => 'angleščina (Poljska)',
'en_PN' => 'angleščina (Pitcairn)',
'en_PR' => 'angleščina (Portoriko)',
+ 'en_PT' => 'angleščina (Portugalska)',
'en_PW' => 'angleščina (Palau)',
+ 'en_RO' => 'angleščina (Romunija)',
'en_RW' => 'angleščina (Ruanda)',
'en_SB' => 'angleščina (Salomonovi otoki)',
'en_SC' => 'angleščina (Sejšeli)',
@@ -184,6 +194,7 @@
'en_SG' => 'angleščina (Singapur)',
'en_SH' => 'angleščina (Sveta Helena)',
'en_SI' => 'angleščina (Slovenija)',
+ 'en_SK' => 'angleščina (Slovaška)',
'en_SL' => 'angleščina (Sierra Leone)',
'en_SS' => 'angleščina (Južni Sudan)',
'en_SX' => 'angleščina (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sn.php b/src/Symfony/Component/Intl/Resources/data/locales/sn.php
index e5d11f20b494b..bc6208199655c 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sn.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sn.php
@@ -70,14 +70,17 @@
'en_CK' => 'Chirungu (Zvitsuwa zveCook)',
'en_CM' => 'Chirungu (Kameruni)',
'en_CY' => 'Chirungu (Cyprus)',
+ 'en_CZ' => 'Chirungu (Czech Republic)',
'en_DE' => 'Chirungu (Germany)',
'en_DK' => 'Chirungu (Denmark)',
'en_DM' => 'Chirungu (Dominica)',
'en_ER' => 'Chirungu (Eritrea)',
+ 'en_ES' => 'Chirungu (Spain)',
'en_FI' => 'Chirungu (Finland)',
'en_FJ' => 'Chirungu (Fiji)',
'en_FK' => 'Chirungu (Zvitsuwa zveFalklands)',
'en_FM' => 'Chirungu (Micronesia)',
+ 'en_FR' => 'Chirungu (France)',
'en_GB' => 'Chirungu (United Kingdom)',
'en_GD' => 'Chirungu (Grenada)',
'en_GH' => 'Chirungu (Ghana)',
@@ -85,10 +88,12 @@
'en_GM' => 'Chirungu (Gambia)',
'en_GU' => 'Chirungu (Guam)',
'en_GY' => 'Chirungu (Guyana)',
+ 'en_HU' => 'Chirungu (Hungary)',
'en_ID' => 'Chirungu (Indonesia)',
'en_IE' => 'Chirungu (Ireland)',
'en_IL' => 'Chirungu (Izuraeri)',
'en_IN' => 'Chirungu (India)',
+ 'en_IT' => 'Chirungu (Italy)',
'en_JM' => 'Chirungu (Jamaica)',
'en_KE' => 'Chirungu (Kenya)',
'en_KI' => 'Chirungu (Kiribati)',
@@ -110,15 +115,19 @@
'en_NF' => 'Chirungu (Chitsuwa cheNorfolk)',
'en_NG' => 'Chirungu (Nigeria)',
'en_NL' => 'Chirungu (Netherlands)',
+ 'en_NO' => 'Chirungu (Norway)',
'en_NR' => 'Chirungu (Nauru)',
'en_NU' => 'Chirungu (Niue)',
'en_NZ' => 'Chirungu (New Zealand)',
'en_PG' => 'Chirungu (Papua New Guinea)',
'en_PH' => 'Chirungu (Philippines)',
'en_PK' => 'Chirungu (Pakistan)',
+ 'en_PL' => 'Chirungu (Poland)',
'en_PN' => 'Chirungu (Pitcairn)',
'en_PR' => 'Chirungu (Puerto Rico)',
+ 'en_PT' => 'Chirungu (Portugal)',
'en_PW' => 'Chirungu (Palau)',
+ 'en_RO' => 'Chirungu (Romania)',
'en_RW' => 'Chirungu (Rwanda)',
'en_SB' => 'Chirungu (Zvitsuwa zvaSolomon)',
'en_SC' => 'Chirungu (Seychelles)',
@@ -127,6 +136,7 @@
'en_SG' => 'Chirungu (Singapore)',
'en_SH' => 'Chirungu (Saint Helena)',
'en_SI' => 'Chirungu (Slovenia)',
+ 'en_SK' => 'Chirungu (Slovakia)',
'en_SL' => 'Chirungu (Sierra Leone)',
'en_SZ' => 'Chirungu (Swaziland)',
'en_TC' => 'Chirungu (Zvitsuwa zveTurk neCaico)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/so.php b/src/Symfony/Component/Intl/Resources/data/locales/so.php
index c9b6c20d3d12a..34bd1b0cb546f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/so.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/so.php
@@ -121,29 +121,35 @@
'en_CM' => 'Ingiriisi (Kaameruun)',
'en_CX' => 'Ingiriisi (Jasiiradda Kirismas)',
'en_CY' => 'Ingiriisi (Qubrus)',
+ 'en_CZ' => 'Ingiriisi (Jekiya)',
'en_DE' => 'Ingiriisi (Jarmal)',
'en_DK' => 'Ingiriisi (Denmark)',
'en_DM' => 'Ingiriisi (Dominika)',
'en_ER' => 'Ingiriisi (Eritreeya)',
+ 'en_ES' => 'Ingiriisi (Isbeyn)',
'en_FI' => 'Ingiriisi (Finland)',
'en_FJ' => 'Ingiriisi (Fiji)',
'en_FK' => 'Ingiriisi (Jaziiradaha Fooklaan)',
'en_FM' => 'Ingiriisi (Mikroneesiya)',
+ 'en_FR' => 'Ingiriisi (Faransiis)',
'en_GB' => 'Ingiriisi (Boqortooyada Midowday)',
'en_GD' => 'Ingiriisi (Giriinaada)',
'en_GG' => 'Ingiriisi (Guurnsey)',
'en_GH' => 'Ingiriisi (Gaana)',
'en_GI' => 'Ingiriisi (Gibraltar)',
'en_GM' => 'Ingiriisi (Gambiya)',
+ 'en_GS' => 'Ingiriisi (Jasiiradda Joorjiyada Koonfureed & Sandwij)',
'en_GU' => 'Ingiriisi (Guaam)',
'en_GY' => 'Ingiriisi (Guyana)',
'en_HK' => 'Ingiriisi (Hong Kong)',
+ 'en_HU' => 'Ingiriisi (Hangari)',
'en_ID' => 'Ingiriisi (Indoneesiya)',
'en_IE' => 'Ingiriisi (Ayrlaand)',
'en_IL' => 'Ingiriisi (Israaʼiil)',
'en_IM' => 'Ingiriisi (Jasiiradda Isle of Man)',
'en_IN' => 'Ingiriisi (Hindiya)',
'en_IO' => 'Ingiriisi (Dhul xadeedka Badweynta Hindiya ee Ingiriiska)',
+ 'en_IT' => 'Ingiriisi (Talyaani)',
'en_JE' => 'Ingiriisi (Jaarsey)',
'en_JM' => 'Ingiriisi (Jamaaika)',
'en_KE' => 'Ingiriisi (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Ingiriisi (Jasiiradda Noorfolk)',
'en_NG' => 'Ingiriisi (Nayjeeriya)',
'en_NL' => 'Ingiriisi (Nederlaands)',
+ 'en_NO' => 'Ingiriisi (Noorweey)',
'en_NR' => 'Ingiriisi (Nauru)',
'en_NU' => 'Ingiriisi (Niue)',
'en_NZ' => 'Ingiriisi (Niyuusiilaand)',
'en_PG' => 'Ingiriisi (Babwa Niyuu Gini)',
'en_PH' => 'Ingiriisi (Filibiin)',
'en_PK' => 'Ingiriisi (Bakistaan)',
+ 'en_PL' => 'Ingiriisi (Booland)',
'en_PN' => 'Ingiriisi (Bitkairn)',
'en_PR' => 'Ingiriisi (Bueerto Riiko)',
+ 'en_PT' => 'Ingiriisi (Bortugaal)',
'en_PW' => 'Ingiriisi (Balaaw)',
+ 'en_RO' => 'Ingiriisi (Rumaaniya)',
'en_RW' => 'Ingiriisi (Ruwanda)',
'en_SB' => 'Ingiriisi (Jasiiradda Solomon)',
'en_SC' => 'Ingiriisi (Sishelis)',
@@ -184,6 +194,7 @@
'en_SG' => 'Ingiriisi (Singaboor)',
'en_SH' => 'Ingiriisi (Saynt Helena)',
'en_SI' => 'Ingiriisi (Islofeeniya)',
+ 'en_SK' => 'Ingiriisi (Islofaakiya)',
'en_SL' => 'Ingiriisi (Siraaliyoon)',
'en_SS' => 'Ingiriisi (Koonfur Suudaan)',
'en_SX' => 'Ingiriisi (Siint Maarteen)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sq.php b/src/Symfony/Component/Intl/Resources/data/locales/sq.php
index 25bb9c0bf2793..7b110ea42e6fd 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sq.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sq.php
@@ -121,29 +121,35 @@
'en_CM' => 'anglisht (Kamerun)',
'en_CX' => 'anglisht (Ishulli i Krishtlindjes)',
'en_CY' => 'anglisht (Qipro)',
+ 'en_CZ' => 'anglisht (Çeki)',
'en_DE' => 'anglisht (Gjermani)',
'en_DK' => 'anglisht (Danimarkë)',
'en_DM' => 'anglisht (Dominikë)',
'en_ER' => 'anglisht (Eritre)',
+ 'en_ES' => 'anglisht (Spanjë)',
'en_FI' => 'anglisht (Finlandë)',
'en_FJ' => 'anglisht (Fixhi)',
'en_FK' => 'anglisht (Ishujt Falkland)',
'en_FM' => 'anglisht (Mikronezi)',
+ 'en_FR' => 'anglisht (Francë)',
'en_GB' => 'anglisht (Mbretëria e Bashkuar)',
'en_GD' => 'anglisht (Granadë)',
'en_GG' => 'anglisht (Gernsej)',
'en_GH' => 'anglisht (Ganë)',
'en_GI' => 'anglisht (Gjibraltar)',
'en_GM' => 'anglisht (Gambi)',
+ 'en_GS' => 'anglisht (Xhorxha Jugore dhe Ishujt Senduiçë të Jugut)',
'en_GU' => 'anglisht (Guam)',
'en_GY' => 'anglisht (Guajanë)',
'en_HK' => 'anglisht (RPA i Hong-Kongut)',
+ 'en_HU' => 'anglisht (Hungari)',
'en_ID' => 'anglisht (Indonezi)',
'en_IE' => 'anglisht (Irlandë)',
'en_IL' => 'anglisht (Izrael)',
'en_IM' => 'anglisht (Ishulli i Manit)',
'en_IN' => 'anglisht (Indi)',
'en_IO' => 'anglisht (Territori Britanik i Oqeanit Indian)',
+ 'en_IT' => 'anglisht (Itali)',
'en_JE' => 'anglisht (Xhersej)',
'en_JM' => 'anglisht (Xhamajkë)',
'en_KE' => 'anglisht (Kenia)',
@@ -167,15 +173,19 @@
'en_NF' => 'anglisht (Ishulli Norfolk)',
'en_NG' => 'anglisht (Nigeri)',
'en_NL' => 'anglisht (Holandë)',
+ 'en_NO' => 'anglisht (Norvegji)',
'en_NR' => 'anglisht (Nauru)',
'en_NU' => 'anglisht (Niue)',
'en_NZ' => 'anglisht (Zelandë e Re)',
'en_PG' => 'anglisht (Guineja e Re-Papua)',
'en_PH' => 'anglisht (Filipine)',
'en_PK' => 'anglisht (Pakistan)',
+ 'en_PL' => 'anglisht (Poloni)',
'en_PN' => 'anglisht (Ishujt Pitkern)',
'en_PR' => 'anglisht (Porto-Riko)',
+ 'en_PT' => 'anglisht (Portugali)',
'en_PW' => 'anglisht (Palau)',
+ 'en_RO' => 'anglisht (Rumani)',
'en_RW' => 'anglisht (Ruandë)',
'en_SB' => 'anglisht (Ishujt Solomon)',
'en_SC' => 'anglisht (Sejshelle)',
@@ -184,6 +194,7 @@
'en_SG' => 'anglisht (Singapor)',
'en_SH' => 'anglisht (Shën-Elenë)',
'en_SI' => 'anglisht (Slloveni)',
+ 'en_SK' => 'anglisht (Sllovaki)',
'en_SL' => 'anglisht (Sierra-Leone)',
'en_SS' => 'anglisht (Sudani i Jugut)',
'en_SX' => 'anglisht (Sint-Marten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr.php b/src/Symfony/Component/Intl/Resources/data/locales/sr.php
index 2e07e2d9bec5a..0d8154371463d 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr.php
@@ -121,29 +121,35 @@
'en_CM' => 'енглески (Камерун)',
'en_CX' => 'енглески (Божићно Острво)',
'en_CY' => 'енглески (Кипар)',
+ 'en_CZ' => 'енглески (Чешка)',
'en_DE' => 'енглески (Немачка)',
'en_DK' => 'енглески (Данска)',
'en_DM' => 'енглески (Доминика)',
'en_ER' => 'енглески (Еритреја)',
+ 'en_ES' => 'енглески (Шпанија)',
'en_FI' => 'енглески (Финска)',
'en_FJ' => 'енглески (Фиџи)',
'en_FK' => 'енглески (Фокландска Острва)',
'en_FM' => 'енглески (Микронезија)',
+ 'en_FR' => 'енглески (Француска)',
'en_GB' => 'енглески (Уједињено Краљевство)',
'en_GD' => 'енглески (Гренада)',
'en_GG' => 'енглески (Гернзи)',
'en_GH' => 'енглески (Гана)',
'en_GI' => 'енглески (Гибралтар)',
'en_GM' => 'енглески (Гамбија)',
+ 'en_GS' => 'енглески (Јужна Џорџија и Јужна Сендвичка Острва)',
'en_GU' => 'енглески (Гуам)',
'en_GY' => 'енглески (Гвајана)',
'en_HK' => 'енглески (САР Хонгконг [Кина])',
+ 'en_HU' => 'енглески (Мађарска)',
'en_ID' => 'енглески (Индонезија)',
'en_IE' => 'енглески (Ирска)',
'en_IL' => 'енглески (Израел)',
'en_IM' => 'енглески (Острво Ман)',
'en_IN' => 'енглески (Индија)',
10000
'en_IO' => 'енглески (Британска територија Индијског океана)',
+ 'en_IT' => 'енглески (Италија)',
'en_JE' => 'енглески (Џерзи)',
'en_JM' => 'енглески (Јамајка)',
'en_KE' => 'енглески (Кенија)',
@@ -167,15 +173,19 @@
'en_NF' => 'енглески (Острво Норфок)',
'en_NG' => 'енглески (Нигерија)',
'en_NL' => 'енглески (Холандија)',
+ 'en_NO' => 'енглески (Норвешка)',
'en_NR' => 'енглески (Науру)',
'en_NU' => 'енглески (Ниуе)',
'en_NZ' => 'енглески (Нови Зеланд)',
'en_PG' => 'енглески (Папуа Нова Гвинеја)',
'en_PH' => 'енглески (Филипини)',
'en_PK' => 'енглески (Пакистан)',
+ 'en_PL' => 'енглески (Пољска)',
'en_PN' => 'енглески (Питкерн)',
'en_PR' => 'енглески (Порторико)',
+ 'en_PT' => 'енглески (Португалија)',
'en_PW' => 'енглески (Палау)',
+ 'en_RO' => 'енглески (Румунија)',
'en_RW' => 'енглески (Руанда)',
'en_SB' => 'енглески (Соломонска Острва)',
'en_SC' => 'енглески (Сејшели)',
@@ -184,6 +194,7 @@
'en_SG' => 'енглески (Сингапур)',
'en_SH' => 'енглески (Света Јелена)',
'en_SI' => 'енглески (Словенија)',
+ 'en_SK' => 'енглески (Словачка)',
'en_SL' => 'енглески (Сијера Леоне)',
'en_SS' => 'енглески (Јужни Судан)',
'en_SX' => 'енглески (Свети Мартин [Холандија])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_BA.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_BA.php
index e02359359b4b5..4b262bc1cb2f7 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_BA.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_BA.php
@@ -23,8 +23,10 @@
'de_LU' => 'њемачки (Луксембург)',
'en_001' => 'енглески (свијет)',
'en_CC' => 'енглески (Кокосова [Килинг] острва)',
+ 'en_CZ' => 'енглески (Чешка Република)',
'en_DE' => 'енглески (Њемачка)',
'en_FK' => 'енглески (Фокландска острва)',
+ 'en_GS' => 'енглески (Јужна Џорџија и Јужна Сендвичка острва)',
'en_GU' => 'енглески (Гвам)',
'en_HK' => 'енглески (Хонгконг [САО Кине])',
'en_MP' => 'енглески (Сјеверна Маријанска острва)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_ME.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_ME.php
index 60af9bd9b6c45..aa6e212ca998b 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_ME.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_ME.php
@@ -11,6 +11,7 @@
'bn_IN' => 'бангла (Индија)',
'cs_CZ' => 'чешки (Чешка Република)',
'de_DE' => 'немачки (Њемачка)',
+ 'en_CZ' => 'енглески (Чешка Република)',
'en_DE' => 'енглески (Њемачка)',
'en_KN' => 'енглески (Свети Китс и Невис)',
'en_UM' => 'енглески (Мања удаљена острва САД)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_XK.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_XK.php
index 4c4e79ed0f373..a781c25d14b79 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_XK.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Cyrl_XK.php
@@ -8,6 +8,7 @@
'bn_BD' => 'бангла (Бангладеш)',
'bn_IN' => 'бангла (Индија)',
'cs_CZ' => 'чешки (Чешка Република)',
+ 'en_CZ' => 'енглески (Чешка Република)',
'en_HK' => 'енглески (САР Хонгконг)',
'en_KN' => 'енглески (Свети Китс и Невис)',
'en_MO' => 'енглески (САР Макао)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn.php
index a464de387d264..807b79b00e12a 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn.php
@@ -121,29 +121,35 @@
'en_CM' => 'engleski (Kamerun)',
'en_CX' => 'engleski (Božićno Ostrvo)',
'en_CY' => 'engleski (Kipar)',
+ 'en_CZ' => 'engleski (Češka)',
'en_DE' => 'engleski (Nemačka)',
'en_DK' => 'engleski (Danska)',
'en_DM' => 'engleski (Dominika)',
'en_ER' => 'engleski (Eritreja)',
+ 'en_ES' => 'engleski (Španija)',
'en_FI' => 'engleski (Finska)',
'en_FJ' => 'engleski (Fidži)',
'en_FK' => 'engleski (Foklandska Ostrva)',
'en_FM' => 'engleski (Mikronezija)',
+ 'en_FR' => 'engleski (Francuska)',
'en_GB' => 'engleski (Ujedinjeno Kraljevstvo)',
'en_GD' => 'engleski (Grenada)',
'en_GG' => 'engleski (Gernzi)',
'en_GH' => 'engleski (Gana)',
'en_GI' => 'engleski (Gibraltar)',
'en_GM' => 'engleski (Gambija)',
+ 'en_GS' => 'engleski (Južna Džordžija i Južna Sendvička Ostrva)',
'en_GU' => 'engleski (Guam)',
'en_GY' => 'engleski (Gvajana)',
'en_HK' => 'engleski (SAR Hongkong [Kina])',
+ 'en_HU' => 'engleski (Mađarska)',
'en_ID' => 'engleski (Indonezija)',
'en_IE' => 'engleski (Irska)',
'en_IL' => 'engleski (Izrael)',
'en_IM' => 'engleski (Ostrvo Man)',
'en_IN' => 'engleski (Indija)',
'en_IO' => 'engleski (Britanska teritorija Indijskog okeana)',
+ 'en_IT' => 'engleski (Italija)',
'en_JE' => 'engleski (Džerzi)',
'en_JM' => 'engleski (Jamajka)',
'en_KE' => 'engleski (Kenija)',
@@ -167,15 +173,19 @@
'en_NF' => 'engleski (Ostrvo Norfok)',
'en_NG' => 'engleski (Nigerija)',
'en_NL' => 'engleski (Holandija)',
+ 'en_NO' => 'engleski (Norveška)',
'en_NR' => 'engleski (Nauru)',
'en_NU' => 'engleski (Niue)',
'en_NZ' => 'engleski (Novi Zeland)',
'en_PG' => 'engleski (Papua Nova Gvineja)',
'en_PH' => 'engleski (Filipini)',
'en_PK' => 'engleski (Pakistan)',
+ 'en_PL' => 'engleski (Poljska)',
'en_PN' => 'engleski (Pitkern)',
'en_PR' => 'engleski (Portoriko)',
+ 'en_PT' => 'engleski (Portugalija)',
'en_PW' => 'engleski (Palau)',
+ 'en_RO' => 'engleski (Rumunija)',
'en_RW' => 'engleski (Ruanda)',
'en_SB' => 'engleski (Solomonska Ostrva)',
'en_SC' => 'engleski (Sejšeli)',
@@ -184,6 +194,7 @@
'en_SG' => 'engleski (Singapur)',
'en_SH' => 'engleski (Sveta Jelena)',
'en_SI' => 'engleski (Slovenija)',
+ 'en_SK' => 'engleski (Slovačka)',
'en_SL' => 'engleski (Sijera Leone)',
'en_SS' => 'engleski (Južni Sudan)',
'en_SX' => 'engleski (Sveti Martin [Holandija])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_BA.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_BA.php
index b345938efe9d0..40894322a8894 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_BA.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_BA.php
@@ -23,8 +23,10 @@
'de_LU' => 'njemački (Luksemburg)',
'en_001' => 'engleski (svijet)',
'en_CC' => 'engleski (Kokosova [Kiling] ostrva)',
+ 'en_CZ' => 'engleski (Češka Republika)',
'en_DE' => 'engleski (Njemačka)',
'en_FK' => 'engleski (Foklandska ostrva)',
+ 'en_GS' => 'engleski (Južna Džordžija i Južna Sendvička ostrva)',
'en_GU' => 'engleski (Gvam)',
'en_HK' => 'engleski (Hongkong [SAO Kine])',
'en_MP' => 'engleski (Sjeverna Marijanska ostrva)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_ME.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_ME.php
index ab3dbb6866672..e3b9dddd260d5 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_ME.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_ME.php
@@ -11,6 +11,7 @@
'bn_IN' => 'bangla (Indija)',
'cs_CZ' => 'češki (Češka Republika)',
'de_DE' => 'nemački (Njemačka)',
+ 'en_CZ' => 'engleski (Češka Republika)',
'en_DE' => 'engleski (Njemačka)',
'en_KN' => 'engleski (Sveti Kits i Nevis)',
'en_UM' => 'engleski (Manja udaljena ostrva SAD)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_XK.php b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_XK.php
index 765cba47a5d26..64af19a718e96 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_XK.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sr_Latn_XK.php
@@ -8,6 +8,7 @@
'bn_BD' => 'bangla (Bangladeš)',
'bn_IN' => 'bangla (Indija)',
'cs_CZ' => 'češki (Češka Republika)',
+ 'en_CZ' => 'engleski (Češka Republika)',
'en_HK' => 'engleski (SAR Hongkong)',
'en_KN' => 'engleski (Sveti Kits i Nevis)',
'en_MO' => 'engleski (SAR Makao)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/su.php b/src/Symfony/Component/Intl/Resources/data/locales/su.php
index 617194ab8d990..f866b1c88f241 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/su.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/su.php
@@ -7,9 +7,11 @@
'de_IT' => 'Jérman (Italia)',
'en' => 'Inggris',
'en_DE' => 'Inggris (Jérman)',
+ 'en_FR' => 'Inggris (Prancis)',
'en_GB' => 'Inggris (Britania Raya)',
'en_ID' => 'Inggris (Indonesia)',
'en_IN' => 'Inggris (India)',
+ 'en_IT' => 'Inggris (Italia)',
'en_US' => 'Inggris (Amérika Sarikat)',
'es' => 'Spanyol',
'es_BR' => 'Spanyol (Brasil)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sv.php b/src/Symfony/Component/Intl/Resources/data/locales/sv.php
index b64930929b74e..6abfebc2ebd03 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sv.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sv.php
@@ -121,29 +121,35 @@
'en_CM' => 'engelska (Kamerun)',
'en_CX' => 'engelska (Julön)',
'en_CY' => 'engelska (Cypern)',
+ 'en_CZ' => 'engelska (Tjeckien)',
'en_DE' => 'engelska (Tyskland)',
'en_DK' => 'engelska (Danmark)',
'en_DM' => 'engelska (Dominica)',
'en_ER' => 'engelska (Eritrea)',
+ 'en_ES' => 'engelska (Spanien)',
'en_FI' => 'engelska (Finland)',
'en_FJ' => 'engelska (Fiji)',
'en_FK' => 'engelska (Falklandsöarna)',
'en_FM' => 'engelska (Mikronesien)',
+ 'en_FR' => 'engelska (Frankrike)',
'en_GB' => 'engelska (Storbritannien)',
'en_GD' => 'engelska (Grenada)',
'en_GG' => 'engelska (Guernsey)',
'en_GH' => 'engelska (Ghana)',
'en_GI' => 'engelska (Gibraltar)',
'en_GM' => 'engelska (Gambia)',
+ 'en_GS' => 'engelska (Sydgeorgien och Sydsandwichöarna)',
'en_GU' => 'engelska (Guam)',
'en_GY' => 'engelska (Guyana)',
'en_HK' => 'engelska (Hongkong SAR)',
+ 'en_HU' => 'engelska (Ungern)',
'en_ID' => 'engelska (Indonesien)',
'en_IE' => 'engelska (Irland)',
'en_IL' => 'engelska (Israel)',
'en_IM' => 'engelska (Isle of Man)',
'en_IN' => 'engelska (Indien)',
'en_IO' => 'engelska (Brittiska territoriet i Indiska oceanen)',
+ 'en_IT' => 'engelska (Italien)',
'en_JE' => 'engelska (Jersey)',
'en_JM' => 'engelska (Jamaica)',
'en_KE' => 'engelska (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'engelska (Norfolkön)',
'en_NG' => 'engelska (Nigeria)',
'en_NL' => 'engelska (Nederländerna)',
+ 'en_NO' => 'engelska (Norge)',
'en_NR' => 'engelska (Nauru)',
'en_NU' => 'engelska (Niue)',
'en_NZ' => 'engelska (Nya Zeeland)',
'en_PG' => 'engelska (Papua Nya Guinea)',
'en_PH' => 'engelska (Filippinerna)',
'en_PK' => 'engelska (Pakistan)',
+ 'en_PL' => 'engelska (Polen)',
'en_PN' => 'engelska (Pitcairnöarna)',
'en_PR' => 'engelska (Puerto Rico)',
+ 'en_PT' => 'engelska (Portugal)',
'en_PW' => 'engelska (Palau)',
+ 'en_RO' => 'engelska (Rumänien)',
'en_RW' => 'engelska (Rwanda)',
'en_SB' => 'engelska (Salomonöarna)',
'en_SC' => 'engelska (Seychellerna)',
@@ -184,6 +194,7 @@
'en_SG' => 'engelska (Singapore)',
'en_SH' => 'engelska (S:t Helena)',
'en_SI' => 'engelska (Slovenien)',
+ 'en_SK' => 'engelska (Slovakien)',
'en_SL' => 'engelska (Sierra Leone)',
'en_SS' => 'engelska (Sydsudan)',
'en_SX' => 'engelska (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sw.php b/src/Symfony/Component/Intl/Resources/data/locales/sw.php
index 84aa1461b290f..57674bd2c50e1 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sw.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sw.php
@@ -121,29 +121,35 @@
'en_CM' => 'Kiingereza (Kameruni)',
'en_CX' => 'Kiingereza (Kisiwa cha Krismasi)',
'en_CY' => 'Kiingereza (Saiprasi)',
+ 'en_CZ' => 'Kiingereza (Chechia)',
'en_DE' => 'Kiingereza (Ujerumani)',
'en_DK' => 'Kiingereza (Denmaki)',
'en_DM' => 'Kiingereza (Dominika)',
'en_ER' => 'Kiingereza (Eritrea)',
+ 'en_ES' => 'Kiingereza (Uhispania)',
'en_FI' => 'Kiingereza (Ufini)',
'en_FJ' => 'Kiingereza (Fiji)',
'en_FK' => 'Kiingereza (Visiwa vya Falkland)',
'en_FM' => 'Kiingereza (Mikronesia)',
+ 'en_FR' => 'Kiingereza (Ufaransa)',
'en_GB' => 'Kiingereza (Ufalme wa Muungano)',
'en_GD' => 'Kiingereza (Grenada)',
'en_GG' => 'Kiingereza (Guernsey)',
'en_GH' => 'Kiingereza (Ghana)',
'en_GI' => 'Kiingereza (Gibraltar)',
'en_GM' => 'Kiingereza (Gambia)',
+ 'en_GS' => 'Kiingereza (Visiwa vya Georgia Kusini na Sandwich Kusini)',
'en_GU' => 'Kiingereza (Guam)',
'en_GY' => 'Kiingereza (Guyana)',
'en_HK' => 'Kiingereza (Hong Kong SAR China)',
+ 'en_HU' => 'Kiingereza (Hungaria)',
'en_ID' => 'Kiingereza (Indonesia)',
'en_IE' => 'Kiingereza (Ayalandi)',
'en_IL' => 'Kiingereza (Israeli)',
'en_IM' => 'Kiingereza (Kisiwa cha Man)',
'en_IN' => 'Kiingereza (India)',
'en_IO' => 'Kiingereza (Eneo la Uingereza katika Bahari Hindi)',
+ 'en_IT' => 'Kiingereza (Italia)',
'en_JE' => 'Kiingereza (Jersey)',
'en_JM' => 'Kiingereza (Jamaika)',
'en_KE' => 'Kiingereza (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Kiingereza (Kisiwa cha Norfolk)',
'en_NG' => 'Kiingereza (Nigeria)',
'en_NL' => 'Kiingereza (Uholanzi)',
+ 'en_NO' => 'Kiingereza (Norway)',
'en_NR' => 'Kiingereza (Nauru)',
'en_NU' => 'Kiingereza (Niue)',
'en_NZ' => 'Kiingereza (Nyuzilandi)',
'en_PG' => 'Kiingereza (Papua New Guinea)',
'en_PH' => 'Kiingereza (Ufilipino)',
'en_PK' => 'Kiingereza (Pakistani)',
+ 'en_PL' => 'Kiingereza (Poland)',
'en_PN' => 'Kiingereza (Visiwa vya Pitcairn)',
'en_PR' => 'Kiingereza (Puerto Rico)',
+ 'en_PT' => 'Kiingereza (Ureno)',
'en_PW' => 'Kiingereza (Palau)',
+ 'en_RO' => 'Kiingereza (Romania)',
'en_RW' => 'Kiingereza (Rwanda)',
'en_SB' => 'Kiingereza (Visiwa vya Solomon)',
'en_SC' => 'Kiingereza (Ushelisheli)',
@@ -184,6 +194,7 @@
'en_SG' => 'Kiingereza (Singapore)',
'en_SH' => 'Kiingereza (St. Helena)',
'en_SI' => 'Kiingereza (Slovenia)',
+ 'en_SK' => 'Kiingereza (Slovakia)',
'en_SL' => 'Kiingereza (Siera Leoni)',
'en_SS' => 'Kiingereza (Sudan Kusini)',
'en_SX' => 'Kiingereza (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sw_CD.php b/src/Symfony/Component/Intl/Resources/data/locales/sw_CD.php
index 4942ed99d3ea0..e09df33cffb47 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sw_CD.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sw_CD.php
@@ -21,6 +21,7 @@
'de_LU' => 'Kijerumani (Lasembagi)',
'en_CX' => 'Kiingereza (Kisiwa cha Christmas)',
'en_NG' => 'Kiingereza (Nijeria)',
+ 'en_NO' => 'Kiingereza (Norwe)',
'en_PR' => 'Kiingereza (Puetoriko)',
'en_SD' => 'Kiingereza (Sudani)',
'es_PR' => 'Kihispania (Puetoriko)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/sw_KE.php b/src/Symfony/Component/Intl/Resources/data/locales/sw_KE.php
index 3c08492b0b982..8ab1b56d1d1f7 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/sw_KE.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/sw_KE.php
@@ -36,10 +36,13 @@
'en_BB' => 'Kiingereza (Babados)',
'en_BS' => 'Kiingereza (Bahamas)',
'en_CC' => 'Kiingereza (Visiwa vya Kokos [Keeling])',
+ 'en_GS' => 'Kiingereza (Visiwa vya Jojia Kusini na Sandwich Kusini)',
'en_GU' => 'Kiingereza (Guami)',
'en_LS' => 'Kiingereza (Lesotho)',
'en_MS' => 'Kiingereza (Montserati)',
+ 'en_NO' => 'Kiingereza (Norwe)',
'en_PG' => 'Kiingereza (Papua Guinea Mpya)',
+ 'en_PL' => 'Kiingereza (Polandi)',
'en_PR' => 'Kiingereza (Pwetoriko)',
'en_SG' => 'Kiingereza (Singapuri)',
'en_VG' => 'Kiingereza (Visiwa vya Virgin vya Uingereza)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ta.php b/src/Symfony/Component/Intl/Resources/data/locales/ta.php
index 99c8ac78943ee..e04fd352b7f38 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ta.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ta.php
@@ -121,29 +121,35 @@
'en_CM' => 'ஆங்கிலம் (கேமரூன்)',
'en_CX' => 'ஆங்கிலம் (கிறிஸ்துமஸ் தீவு)',
'en_CY' => 'ஆங்கிலம் (சைப்ரஸ்)',
+ 'en_CZ' => 'ஆங்கிலம் (செசியா)',
'en_DE' => 'ஆங்கிலம் (ஜெர்மனி)',
'en_DK' => 'ஆங்கிலம் (டென்மார்க்)',
'en_DM' => 'ஆங்கிலம் (டொமினிகா)',
'en_ER' => 'ஆங்கிலம் (எரிட்ரியா)',
+ 'en_ES' => 'ஆங்கிலம் (ஸ்பெயின்)',
'en_FI' => 'ஆங்கிலம் (பின்லாந்து)',
'en_FJ' => 'ஆங்கிலம் (ஃபிஜி)',
'en_FK' => 'ஆங்கிலம் (ஃபாக்லாந்து தீவுகள்)',
'en_FM' => 'ஆங்கிலம் (மைக்ரோனேஷியா)',
+ 'en_FR' => 'ஆங்கிலம் (பிரான்ஸ்)',
'en_GB' => 'ஆங்கிலம் (யுனைடெட் கிங்டம்)',
'en_GD' => 'ஆங்கிலம் (கிரனெடா)',
'en_GG' => 'ஆங்கிலம் (கெர்ன்சி)',
'en_GH' => 'ஆங்கிலம் (கானா)',
'en_GI' => 'ஆங்கிலம் (ஜிப்ரால்டர்)',
'en_GM' => 'ஆங்கிலம் (காம்பியா)',
+ 'en_GS' => 'ஆங்கிலம் (தெற்கு ஜார்ஜியா மற்றும் தெற்கு சாண்ட்விச் தீவுகள்)',
'en_GU' => 'ஆங்கிலம் (குவாம்)',
'en_GY' => 'ஆங்கிலம் (கயானா)',
'en_HK' => 'ஆங்கிலம் (ஹாங்காங் எஸ்ஏஆர் சீனா)',
+ 'en_HU' => 'ஆங்கிலம் (ஹங்கேரி)',
'en_ID' => 'ஆங்கிலம் (இந்தோனேசியா)',
'en_IE' => 'ஆங்கிலம் (அயர்லாந்து)',
'en_IL' => 'ஆங்கிலம் (இஸ்ரேல்)',
'en_IM' => 'ஆங்கிலம் (ஐல் ஆஃப் மேன்)',
'en_IN' => 'ஆங்கிலம் (இந்தியா)',
'en_IO' => 'ஆங்கிலம் (பிரிட்டிஷ் இந்தியப் பெருங்கடல் பிரதேசம்)',
+ 'en_IT' => 'ஆங்கிலம் (இத்தாலி)',
'en_JE' => 'ஆங்கிலம் (ஜெர்சி)',
'en_JM' => 'ஆங்கிலம் (ஜமைகா)',
'en_KE' => 'ஆங்கிலம் (கென்யா)',
@@ -167,15 +173,19 @@
'en_NF' => 'ஆங்கிலம் (நார்ஃபோக் தீவு)',
'en_NG' => 'ஆங்கிலம் (நைஜீரியா)',
'en_NL' => 'ஆங்கிலம் (நெதர்லாந்து)',
+ 'en_NO' => 'ஆங்கிலம் (நார்வே)',
'en_NR' => 'ஆங்கிலம் (நௌரு)',
'en_NU' => 'ஆங்கிலம் (நியுவே)',
'en_NZ' => 'ஆங்கிலம் (நியூசிலாந்து)',
'en_PG' => 'ஆங்கிலம் (பப்புவா நியூ கினியா)',
'en_PH' => 'ஆங்கிலம் (பிலிப்பைன்ஸ்)',
'en_PK' => 'ஆங்கிலம் (பாகிஸ்தான்)',
+ 'en_PL' => 'ஆங்கிலம் (போலந்து)',
'en_PN' => 'ஆங்கிலம் (பிட்கெய்ர்ன் தீவுகள்)',
'en_PR' => 'ஆங்கிலம் (பியூர்டோ ரிகோ)',
+ 'en_PT' => 'ஆங்கிலம் (போர்ச்சுக்கல்)',
'en_PW' => 'ஆங்கிலம் (பாலோ)',
+ 'en_RO' => 'ஆங்கிலம் (ருமேனியா)',
'en_RW' => 'ஆங்கிலம் (ருவாண்டா)',
'en_SB' => 'ஆங்கிலம் (சாலமன் தீவுகள்)',
'en_SC' => 'ஆங்கிலம் (சீஷெல்ஸ்)',
@@ -184,6 +194,7 @@
'en_SG' => 'ஆங்கிலம் (சிங்கப்பூர்)',
'en_SH' => 'ஆங்கிலம் (செயின்ட் ஹெலெனா)',
'en_SI' => 'ஆங்கிலம் (ஸ்லோவேனியா)',
+ 'en_SK' => 'ஆங்கிலம் (ஸ்லோவாகியா)',
'en_SL' => 'ஆங்கிலம் (சியாரா லியோன்)',
'en_SS' => 'ஆங்கிலம் (தெற்கு சூடான்)',
'en_SX' => 'ஆங்கிலம் (சின்ட் மார்டென்)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/te.php b/src/Symfony/Component/Intl/Resources/data/locales/te.php
index 2d81f1f167076..1098bb74cd73e 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/te.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/te.php
@@ -121,29 +121,35 @@
'en_CM' => 'ఇంగ్లీష్ (కామెరూన్)',
'en_CX' => 'ఇంగ్లీష్ (క్రిస్మస్ దీవి)',
'en_CY' => 'ఇంగ్లీష్ (సైప్రస్)',
+ 'en_CZ' => 'ఇంగ్లీష్ (చెకియా)',
'en_DE' => 'ఇంగ్లీష్ (జర్మనీ)',
'en_DK' => 'ఇంగ్లీష్ (డెన్మార్క్)',
'en_DM' => 'ఇంగ్లీష్ (డొమినికా)',
'en_ER' => 'ఇంగ్లీష్ (ఎరిట్రియా)',
+ 'en_ES' => 'ఇంగ్లీష్ (స్పెయిన్)',
'en_FI' => 'ఇంగ్లీష్ (ఫిన్లాండ్)',
'en_FJ' => 'ఇంగ్లీష్ (ఫిజీ)',
'en_FK' => 'ఇంగ్లీష్ (ఫాక్ల్యాండ్ దీవులు)',
'en_FM' => 'ఇంగ్లీష్ (మైక్రోనేషియా)',
+ 'en_FR' => 'ఇంగ్లీష్ (ఫ్రాన్స్)',
'en_GB' => 'ఇంగ్లీష్ (యునైటెడ్ కింగ్డమ్)',
'en_GD' => 'ఇంగ్లీష్ (గ్రెనడా)',
'en_GG' => 'ఇంగ్లీష్ (గర్న్సీ)',
'en_GH' => 'ఇంగ్లీష్ (ఘనా)',
'en_GI' => 'ఇంగ్లీష్ (జిబ్రాల్టర్)',
'en_GM' => 'ఇంగ్లీష్ (గాంబియా)',
+ 'en_GS' => 'ఇంగ్లీష్ (దక్షిణ జార్జియా మరియు దక్షిణ శాండ్విచ్ దీవులు)',
'en_GU' => 'ఇంగ్లీష్ (గ్వామ్)',
'en_GY' => 'ఇంగ్లీష్ (గయానా)',
'en_HK' => 'ఇంగ్లీష్ (హాంకాంగ్ ఎస్ఏఆర్ చైనా)',
+ 'en_HU' => 'ఇంగ్లీష్ (హంగేరీ)',
'en_ID' => 'ఇంగ్లీష్ (ఇండోనేషియా)',
'en_IE' => 'ఇంగ్లీష్ (ఐర్లాండ్)',
'en_IL' => 'ఇంగ్లీష్ (ఇజ్రాయెల్)',
'en_IM' => 'ఇంగ్లీష్ (ఐల్ ఆఫ్ మాన్)',
'en_IN' => 'ఇంగ్లీష్ (భారతదేశం)',
'en_IO' => 'ఇంగ్లీష్ (బ్రిటిష్ హిందూ మహాసముద్ర ప్రాంతం)',
+ 'en_IT' => 'ఇంగ్లీష్ (ఇటలీ)',
'en_JE' => 'ఇంగ్లీష్ (జెర్సీ)',
'en_JM' => 'ఇంగ్లీష్ (జమైకా)',
'en_KE' => 'ఇంగ్లీష్ (కెన్యా)',
@@ -167,15 +173,19 @@
'en_NF' => 'ఇంగ్లీష్ (నార్ఫోక్ దీవి)',
'en_NG' => 'ఇంగ్లీష్ (నైజీరియా)',
'en_NL' => 'ఇంగ్లీష్ (నెదర్లాండ్స్)',
+ 'en_NO' => 'ఇంగ్లీష్ (నార్వే)',
'en_NR' => 'ఇంగ్లీష్ (నౌరు)',
'en_NU' => 'ఇంగ్లీష్ (నియూ)',
'en_NZ' => 'ఇంగ్లీష్ (న్యూజిలాండ్)',
'en_PG' => 'ఇంగ్లీష్ (పాపువా న్యూ గినియా)',
'en_PH' => 'ఇంగ్లీష్ (ఫిలిప్పైన్స్)',
'en_PK' => 'ఇంగ్లీష్ (పాకిస్తాన్)',
+ 'en_PL' => 'ఇంగ్లీష్ (పోలాండ్)',
'en_PN' => 'ఇంగ్లీష్ (పిట్కెయిర్న్ దీవులు)',
'en_PR' => 'ఇంగ్లీష్ (ప్యూర్టో రికో)',
+ 'en_PT' => 'ఇంగ్లీష్ (పోర్చుగల్)',
'en_PW' => 'ఇంగ్లీష్ (పాలావ్)',
+ 'en_RO' => 'ఇంగ్లీష్ (రోమేనియా)',
'en_RW' => 'ఇంగ్లీష్ (రువాండా)',
'en_SB' => 'ఇంగ్లీష్ (సోలమన్ దీవులు)',
'en_SC' => 'ఇంగ్లీష్ (సీషెల్స్)',
@@ -184,6 +194,7 @@
'en_SG' => 'ఇంగ్లీష్ (సింగపూర్)',
'en_SH' => 'ఇంగ్లీష్ (సెయింట్ హెలెనా)',
'en_SI' => 'ఇంగ్లీష్ (స్లోవేనియా)',
+ 'en_SK' => 'ఇంగ్లీష్ (స్లొవేకియా)',
'en_SL' => 'ఇంగ్లీష్ (సియెర్రా లియాన్)',
'en_SS' => 'ఇంగ్లీష్ (దక్షిణ సూడాన్)',
'en_SX' => 'ఇంగ్లీష్ (సింట్ మార్టెన్)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/tg.php b/src/Symfony/Component/Intl/Resources/data/locales/tg.php
index 0589d7da8a623..1375923e8d868 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/tg.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/tg.php
@@ -110,29 +110,35 @@
'en_CM' => 'англисӣ (Камерун)',
'en_CX' => 'англисӣ (Ҷазираи Крисмас)',
'en_CY' => 'англисӣ (Кипр)',
+ 'en_CZ' => 'англисӣ (Ҷумҳурии Чех)',
'en_DE' => 'англисӣ (Германия)',
'en_DK' => 'англисӣ (Дания)',
'en_DM' => 'англисӣ (Доминика)',
'en_ER' => 'англисӣ (Эритрея)',
+ 'en_ES' => 'англисӣ (Испания)',
'en_FI' => 'англисӣ (Финляндия)',
'en_FJ' => 'англисӣ (Фиҷи)',
'en_FK' => 'англисӣ (Ҷазираҳои Фолкленд)',
'en_FM' => 'англисӣ (Штатҳои Федеративии Микронезия)',
+ 'en_FR' => 'англисӣ (Фаронса)',
'en_GB' => 'англисӣ (Шоҳигарии Муттаҳида)',
'en_GD' => 'англисӣ (Гренада)',
'en_GG' => 'англисӣ (Гернси)',
'en_GH' => 'англисӣ (Гана)',
'en_GI' => 'англисӣ (Гибралтар)',
'en_GM' => 'англисӣ (Гамбия)',
+ 'en_GS' => 'англисӣ (Ҷорҷияи Ҷанубӣ ва Ҷазираҳои Сандвич)',
'en_GU' => 'англисӣ (Гуам)',
'en_GY' => 'англисӣ (Гайана)',
'en_HK' => 'англисӣ (Ҳонконг [МММ])',
+ 'en_HU' => 'англисӣ (Маҷористон)',
'en_ID' => 'англисӣ (Индонезия)',
'en_IE' => 'англисӣ (Ирландия)',
'en_IL' => 'англисӣ (Исроил)',
'en_IM' => 'англисӣ (Ҷазираи Мэн)',
'en_IN' => 'англисӣ (Ҳиндустон)',
'en_IO' => 'англисӣ (Қаламрави Британия дар уқёнуси Ҳинд)',
+ 'en_IT' => 'англисӣ (Италия)',
'en_JE' => 'англисӣ (Ҷерси)',
'en_JM' => 'англисӣ (Ямайка)',
'en_KE' => 'англисӣ (Кения)',
@@ -156,15 +162,19 @@
'en_NF' => 'англисӣ (Ҷазираи Норфолк)',
'en_NG' => 'англисӣ (Нигерия)',
'en_NL' => 'англисӣ (Нидерландия)',
+ 'en_NO' => 'англисӣ (Норвегия)',
'en_NR' => 'англисӣ (Науру)',
'en_NU' => 'англисӣ (Ниуэ)',
'en_NZ' => 'англисӣ (Зеландияи Нав)',
'en_PG' => 'англисӣ (Папуа Гвинеяи Нав)',
'en_PH' => 'англисӣ (Филиппин)',
'en_PK' => 'англисӣ (Покистон)',
+ 'en_PL' => 'англисӣ (Лаҳистон)',
'en_PN' => 'англисӣ (Ҷазираҳои Питкейрн)',
'en_PR' => 'англисӣ (Пуэрто-Рико)',
+ 'en_PT' => 'англисӣ (Португалия)',
'en_PW' => 'англисӣ (Палау)',
+ 'en_RO' => 'англисӣ (Руминия)',
'en_RW' => 'англисӣ (Руанда)',
'en_SB' => 'англисӣ (Ҷазираҳои Соломон)',
'en_SC' => 'англисӣ (Сейшел)',
@@ -173,6 +183,7 @@
'en_SG' => 'англисӣ (Сингапур)',
'en_SH' => 'англисӣ (Сент Елена)',
'en_SI' => 'англисӣ (Словения)',
+ 'en_SK' => 'англисӣ (Словакия)',
'en_SL' => 'англисӣ (Сиерра-Леоне)',
'en_SS' => 'англисӣ (Судони Ҷанубӣ)',
'en_SX' => 'англисӣ (Синт-Маартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/th.php b/src/Symfony/Component/Intl/Resources/data/locales/th.php
index 35ba32f87328f..38885b9443e36 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/th.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/th.php
@@ -121,29 +121,35 @@
'en_CM' => 'อังกฤษ (แคเมอรูน)',
'en_CX' => 'อังกฤษ (เกาะคริสต์มาส)',
'en_CY' => 'อังกฤษ (ไซปรัส)',
+ 'en_CZ' => 'อังกฤษ (เช็ก)',
'en_DE' => 'อังกฤษ (เยอรมนี)',
'en_DK' => 'อังกฤษ (เดนมาร์ก)',
'en_DM' => 'อังกฤษ (โดมินิกา)',
'en_ER' => 'อังกฤษ (เอริเทรีย)',
+ 'en_ES' => 'อังกฤษ (สเปน)',
'en_FI' => 'อังกฤษ (ฟินแลนด์)',
'en_FJ' => 'อังกฤษ (ฟิจิ)',
'en_FK' => 'อังกฤษ (หมู่เกาะฟอล์กแลนด์)',
'en_FM' => 'อังกฤษ (ไมโครนีเซีย)',
+ 'en_FR' => 'อังกฤษ (ฝรั่งเศส)',
'en_GB' => 'อังกฤษ (สหราชอาณาจักร)',
'en_GD' => 'อังกฤษ (เกรเนดา)',
'en_GG' => 'อังกฤษ (เกิร์นซีย์)',
'en_GH' => 'อังกฤษ (กานา)',
'en_GI' => 'อังกฤษ (ยิบรอลตาร์)',
'en_GM' => 'อังกฤษ (แกมเบีย)',
+ 'en_GS' => 'อังกฤษ (เกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิช)',
'en_GU' => 'อังกฤษ (กวม)',
'en_GY' => 'อังกฤษ (กายอานา)',
'en_HK' => 'อังกฤษ (เขตปกครองพิเศษฮ่องกงแห่งสาธารณรัฐประชาชนจีน)',
+ 'en_HU' => 'อังกฤษ (ฮังการี)',
'en_ID' => 'อังกฤษ (อินโดนีเซีย)',
'en_IE' => 'อังกฤษ (ไอร์แลนด์)',
'en_IL' => 'อังกฤษ (อิสราเอล)',
'en_IM' => 'อังกฤษ (เกาะแมน)',
'en_IN' => 'อังกฤษ (อินเดีย)',
'en_IO' => 'อังกฤษ (บริติชอินเดียนโอเชียนเทร์ริทอรี)',
+ 'en_IT' => 'อังกฤษ (อิตาลี)',
'en_JE' => 'อังกฤษ (เจอร์ซีย์)',
'en_JM' => 'อังกฤษ (จาเมกา)',
'en_KE' => 'อังกฤษ (เคนยา)',
@@ -167,15 +173,19 @@
'en_NF' => 'อังกฤษ (เกาะนอร์ฟอล์ก)',
'en_NG' => 'อังกฤษ (ไนจีเรีย)',
'en_NL' => 'อังกฤษ (เนเธอร์แลนด์)',
+ 'en_NO' => 'อังกฤษ (นอร์เวย์)',
'en_NR' => 'อังกฤษ (นาอูรู)',
'en_NU' => 'อังกฤษ (นีอูเอ)',
'en_NZ' => 'อังกฤษ (นิวซีแลนด์)',
'en_PG' => 'อังกฤษ (ปาปัวนิวกินี)',
'en_PH' => 'อังกฤษ (ฟิลิปปินส์)',
'en_PK' => 'อังกฤษ (ปากีสถาน)',
+ 'en_PL' => 'อังกฤษ (โปแลนด์)',
'en_PN' => 'อังกฤษ (หมู่เกาะพิตแคร์น)',
'en_PR' => 'อังกฤษ (เปอร์โตริโก)',
+ 'en_PT' => 'อังกฤษ (โปรตุเกส)',
'en_PW' => 'อังกฤษ (ปาเลา)',
+ 'en_RO' => 'อังกฤษ (โรมาเนีย)',
'en_RW' => 'อังกฤษ (รวันดา)',
'en_SB' => 'อังกฤษ (หมู่เกาะโซโลมอน)',
'en_SC' => 'อังกฤษ (เซเชลส์)',
@@ -184,6 +194,7 @@
'en_SG' => 'อังกฤษ (สิงคโปร์)',
'en_SH' => 'อังกฤษ (เซนต์เฮเลนา)',
'en_SI' => 'อังกฤษ (สโลวีเนีย)',
+ 'en_SK' => 'อังกฤษ (สโลวะเกีย)',
'en_SL' => 'อังกฤษ (เซียร์ราลีโอน)',
'en_SS' => 'อังกฤษ (ซูดานใต้)',
'en_SX' => 'อังกฤษ (ซินต์มาร์เทน)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ti.php b/src/Symfony/Component/Intl/Resources/data/locales/ti.php
index 79c0e33163e45..f822726833dc2 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ti.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ti.php
@@ -121,29 +121,35 @@
'en_CM' => 'እንግሊዝኛ (ካሜሩን)',
'en_CX' => 'እንግሊዝኛ (ደሴት ክሪስማስ)',
'en_CY' => 'እንግሊዝኛ (ቆጵሮስ)',
+ 'en_CZ' => 'እንግሊዝኛ (ቸክያ)',
'en_DE' => 'እንግሊዝኛ (ጀርመን)',
'en_DK' => 'እንግሊዝኛ (ደንማርክ)',
'en_DM' => 'እንግሊዝኛ (ዶሚኒካ)',
'en_ER' => 'እንግሊዝኛ (ኤርትራ)',
+ 'en_ES' => 'እንግሊዝኛ (ስጳኛ)',
'en_FI' => 'እንግሊዝኛ (ፊንላንድ)',
'en_FJ' => 'እንግሊዝኛ (ፊጂ)',
'en_FK' => 'እንግሊዝኛ (ደሴታት ፎክላንድ)',
'en_FM' => 'እንግሊዝኛ (ማይክሮነዥያ)',
+ 'en_FR' => 'እንግሊዝኛ (ፈረንሳ)',
'en_GB' => 'እንግሊዝኛ (ብሪጣንያ)',
'en_GD' => 'እንግሊዝኛ (ግረናዳ)',
'en_GG' => 'እንግሊዝኛ (ገርንዚ)',
'en_GH' => 'እንግሊዝኛ (ጋና)',
'en_GI' => 'እንግሊዝኛ (ጂብራልታር)',
'en_GM' => 'እንግሊዝኛ (ጋምብያ)',
+ 'en_GS' => 'እንግሊዝኛ (ደሴታት ደቡብ ጆርጅያን ደቡብ ሳንድዊችን)',
'en_GU' => 'እንግሊዝኛ (ጓም)',
'en_GY' => 'እንግሊዝኛ (ጉያና)',
'en_HK' => 'እንግሊዝኛ (ፍሉይ ምምሕዳራዊ ዞባ ሆንግ ኮንግ [ቻይና])',
+ 'en_HU' => 'እንግሊዝኛ (ሃንጋሪ)',
'en_ID' => 'እንግሊዝኛ (ኢንዶነዥያ)',
'en_IE' => 'እንግሊዝኛ (ኣየርላንድ)',
'en_IL' => 'እንግሊዝኛ (እስራኤል)',
'en_IM' => 'እንግሊዝኛ (ኣይል ኦፍ ማን)',
'en_IN' => 'እንግሊዝኛ (ህንዲ)',
'en_IO' => 'እንግሊዝኛ (ብሪጣንያዊ ህንዳዊ ውቅያኖስ ግዝኣት)',
+ 'en_IT' => 'እንግሊዝኛ (ኢጣልያ)',
'en_JE' => 'እንግሊዝኛ (ጀርዚ)',
'en_JM' => 'እንግሊዝኛ (ጃማይካ)',
'en_KE' => 'እንግሊዝኛ (ኬንያ)',
@@ -167,15 +173,19 @@
'en_NF' => 'እንግሊዝኛ (ደሴት ኖርፎልክ)',
'en_NG' => 'እንግሊዝኛ (ናይጀርያ)',
'en_NL' => 'እንግሊዝኛ (ኔዘርላንድ)',
+ 'en_NO' => 'እንግሊዝኛ (ኖርወይ)',
'en_NR' => 'እንግሊዝኛ (ናውሩ)',
'en_NU' => 'እንግሊዝኛ (ኒዩ)',
'en_NZ' => 'እንግሊዝኛ (ኒው ዚላንድ)',
'en_PG' => 'እንግሊዝኛ (ፓፕዋ ኒው ጊኒ)',
'en_PH' => 'እንግሊዝኛ (ፊሊፒንስ)',
'en_PK' => 'እንግሊዝኛ (ፓኪስታን)',
+ 'en_PL' => 'እንግሊዝኛ (ፖላንድ)',
'en_PN' => 'እንግሊዝኛ (ደሴታት ፒትካርን)',
'en_PR' => 'እንግሊዝኛ (ፖርቶ ሪኮ)',
+ 'en_PT' => 'እንግሊዝኛ (ፖርቱጋል)',
'en_PW' => 'እንግሊዝኛ (ፓላው)',
+ 'en_RO' => 'እንግሊዝኛ (ሩማንያ)',
'en_RW' => 'እንግሊዝኛ (ርዋንዳ)',
'en_SB' => 'እንግሊዝኛ (ደሴታት ሰሎሞን)',
'en_SC' => 'እንግሊዝኛ (ሲሸልስ)',
@@ -184,6 +194,7 @@
'en_SG' => 'እንግሊዝኛ (ሲንጋፖር)',
'en_SH' => 'እንግሊዝኛ (ቅድስቲ ሄለና)',
'en_SI' => 'እንግሊዝኛ (ስሎቬንያ)',
+ 'en_SK' => 'እንግሊዝኛ (ስሎቫክያ)',
'en_SL' => 'እንግሊዝኛ (ሴራ ልዮን)',
'en_SS' => 'እንግሊዝኛ (ደቡብ ሱዳን)',
'en_SX' => 'እንግሊዝኛ (ሲንት ማርተን)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/tk.php b/src/Symfony/Component/Intl/Resources/data/locales/tk.php
index 48561a3a4fc7d..fb367f551a64e 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/tk.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/tk.php
@@ -121,29 +121,35 @@
'en_CM' => 'iňlis dili (Kamerun)',
'en_CX' => 'iňlis dili (Roždestwo adasy)',
'en_CY' => 'iňlis dili (Kipr)',
+ 'en_CZ' => 'iňlis dili (Çehiýa)',
'en_DE' => 'iňlis dili (Germaniýa)',
'en_DK' => 'iňlis dili (Daniýa)',
'en_DM' => 'iňlis dili (Dominika)',
'en_ER' => 'iňlis dili (Eritreýa)',
+ 'en_ES' => 'iňlis dili (Ispaniýa)',
'en_FI' => 'iňlis dili (Finlýandiýa)',
'en_FJ' => 'iňlis dili (Fiji)',
'en_FK' => 'iňlis dili (Folklend adalary)',
'en_FM' => 'iňlis dili (Mikroneziýa)',
+ 'en_FR' => 'iňlis dili (Fransiýa)',
'en_GB' => 'iňlis dili (Birleşen Patyşalyk)',
'en_GD' => 'iňlis dili (Grenada)',
'en_GG' => 'iňlis dili (Gernsi)',
'en_GH' => 'iňlis dili (Gana)',
'en_GI' => 'iňlis dili (Gibraltar)',
'en_GM' => 'iňlis dili (Gambiýa)',
+ 'en_GS' => 'iňlis dili (Günorta Georgiýa we Günorta Sendwiç adasy)',
'en_GU' => 'iňlis dili (Guam)',
'en_GY' => 'iňlis dili (Gaýana)',
'en_HK' => 'iňlis dili (Gonkong AAS Hytaý)',
+ 'en_HU' => 'iňlis dili (Wengriýa)',
'en_ID' => 'iňlis dili (Indoneziýa)',
'en_IE' => 'iňlis dili (Irlandiýa)',
'en_IL' => 'iňlis dili (Ysraýyl)',
'en_IM' => 'iňlis dili (Men adasy)',
'en_IN' => 'iňlis dili (Hindistan)',
'en_IO' => 'iňlis dili (Britaniýanyň Hindi okeanyndaky territoriýalary)',
+ 'en_IT' => 'iňlis dili (Italiýa)',
'en_JE' => 'iňlis dili (Jersi)',
'en_JM' => 'iňlis dili (Ýamaýka)',
'en_KE' => 'iňlis dili (Keniýa)',
@@ -167,15 +173,19 @@
'en_NF' => 'iňlis dili (Norfolk adasy)',
'en_NG' => 'iňlis dili (Nigeriýa)',
'en_NL' => 'iňlis dili (Niderlandlar)',
+ 'en_NO' => 'iňlis dili (Norwegiýa)',
'en_NR' => 'iňlis dili (Nauru)',
'en_NU' => 'iňlis dili (Niue)',
'en_NZ' => 'iňlis dili (Täze Zelandiýa)',
'en_PG' => 'iňlis dili (Papua - Täze Gwineýa)',
'en_PH' => 'iňlis dili (Filippinler)',
'en_PK' => 'iňlis dili (Pakistan)',
+ 'en_PL' => 'iňlis dili (Polşa)',
'en_PN' => 'iňlis dili (Pitkern adalary)',
'en_PR' => 'iňlis dili (Puerto-Riko)',
+ 'en_PT' => 'iňlis dili (Portugaliýa)',
'en_PW' => 'iňlis dili (Palau)',
+ 'en_RO' => 'iňlis dili (Rumyniýa)',
'en_RW' => 'iňlis dili (Ruanda)',
'en_SB' => 'iňlis dili (Solomon adalary)',
'en_SC' => 'iňlis dili (Seýşel adalary)',
@@ -184,6 +194,7 @@
'en_SG' => 'iňlis dili (Singapur)',
'en_SH' => 'iňlis dili (Keramatly Ýelena adasy)',
'en_SI' => 'iňlis dili (Sloweniýa)',
+ 'en_SK' => 'iňlis dili (Slowakiýa)',
'en_SL' => 'iňlis dili (Sýerra-Leone)',
'en_SS' => 'iňlis dili (Günorta Sudan)',
'en_SX' => 'iňlis dili (Sint-Marten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/to.php b/src/Symfony/Component/Intl/Resources/data/locales/to.php
index 109d269cb4746..b68a7aeda3c6f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/to.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/to.php
@@ -121,29 +121,35 @@
'en_CM' => 'lea fakapālangi (Kameluni)',
'en_CX' => 'lea fakapālangi (Motu Kilisimasi)',
'en_CY' => 'lea fakapālangi (Saipalesi)',
+ 'en_CZ' => 'lea fakapālangi (Sēkia)',
'en_DE' => 'lea fakapālangi (Siamane)',
'en_DK' => 'lea fakapālangi (Tenimaʻake)',
'en_DM' => 'lea fakapālangi (Tominika)',
'en_ER' => 'lea fakapālangi (ʻElitulia)',
+ 'en_ES' => 'lea fakapālangi (Sipeini)',
'en_FI' => 'lea fakapālangi (Finilani)',
'en_FJ' => 'lea fakapālangi (Fisi)',
'en_FK' => 'lea fakapālangi (ʻOtumotu Fokulani)',
'en_FM' => 'lea fakapālangi (Mikolonīsia)',
+ 'en_FR' => 'lea fakapālangi (Falanisē)',
'en_GB' => 'lea fakapālangi (Pilitānia)',
'en_GD' => 'lea fakapālangi (Kelenatā)',
'en_GG' => 'lea fakapālangi (Kuenisī)',
'en_GH' => 'lea fakapālangi (Kana)',
'en_GI' => 'lea fakapālangi (Sipalālitā)',
'en_GM' => 'lea fakapālangi (Kamipia)',
+ 'en_GS' => 'lea fakapālangi (ʻOtumotu Seōsia-tonga mo Saniuisi-tonga)',
'en_GU' => 'lea fakapālangi (Kuamu)',
'en_GY' => 'lea fakapālangi (Kuiana)',
'en_HK' => 'lea fakapālangi (Hongi Kongi SAR Siaina)',
+ 'en_HU' => 'lea fakapālangi (Hungakalia)',
'en_ID' => 'lea fakapālangi (ʻInitonēsia)',
'en_IE' => 'lea fakapālangi (ʻAealani)',
'en_IL' => 'lea fakapālangi (ʻIsileli)',
'en_IM' => 'lea fakapālangi (Motu Mani)',
'en_IN' => 'lea fakapālangi (ʻInitia)',
'en_IO' => 'lea fakapālangi (Potu fonua moana ʻInitia fakapilitānia)',
+ 'en_IT' => 'lea fakapālangi (ʻĪtali)',
'en_JE' => 'lea fakapālangi (Selusī)',
'en_JM' => 'lea fakapālangi (Samaika)',
'en_KE' => 'lea fakapālangi (Keniā)',
@@ -167,15 +173,19 @@
'en_NF' => 'lea fakapālangi (Motu Nōfoliki)',
'en_NG' => 'lea fakapālangi (Naisilia)',
'en_NL' => 'lea fakapālangi (Hōlani)',
+ 'en_NO' => 'lea fakapālangi (Noauē)',
'en_NR' => 'lea fakapālangi (Naulu)',
'en_NU' => 'lea fakapālangi (Niuē)',
'en_NZ' => 'lea fakapālangi (Nuʻusila)',
'en_PG' => 'lea fakapālangi (Papuaniukini)',
'en_PH' => 'lea fakapālangi (Filipaini)',
'en_PK' => 'lea fakapālangi (Pākisitani)',
+ 'en_PL' => 'lea fakapālangi (Polani)',
'en_PN' => 'lea fakapālangi (ʻOtumotu Pitikeni)',
'en_PR' => 'lea fakapālangi (Puēto Liko)',
+ 'en_PT' => 'lea fakapālangi (Potukali)',
'en_PW' => 'lea fakapālangi (Palau)',
+ 'en_RO' => 'lea fakapālangi (Lomēnia)',
'en_RW' => 'lea fakapālangi (Luanitā)',
'en_SB' => 'lea fakapālangi (ʻOtumotu Solomone)',
'en_SC' => 'lea fakapālangi (ʻOtumotu Seiseli)',
@@ -184,6 +194,7 @@
'en_SG' => 'lea fakapālangi (Singapoa)',
'en_SH' => 'lea fakapālangi (Sā Helena)',
'en_SI' => 'lea fakapālangi (Silōvenia)',
+ 'en_SK' => 'lea fakapālangi (Silōvakia)',
'en_SL' => 'lea fakapālangi (Siela Leone)',
'en_SS' => 'lea fakapālangi (Sūtani fakatonga)',
'en_SX' => 'lea fakapālangi (Sā Mātini [fakahōlani])',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/tr.php b/src/Symfony/Component/Intl/Resources/data/locales/tr.php
index a1b5f1a6f13d0..ba3c3527fd7d9 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/tr.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/tr.php
@@ -121,29 +121,35 @@
'en_CM' => 'İngilizce (Kamerun)',
'en_CX' => 'İngilizce (Christmas Adası)',
'en_CY' => 'İngilizce (Kıbrıs)',
+ 'en_CZ' => 'İngilizce (Çekya)',
'en_DE' => 'İngilizce (Almanya)',
'en_DK' => 'İngilizce (Danimarka)',
'en_DM' => 'İngilizce (Dominika)',
'en_ER' => 'İngilizce (Eritre)',
+ 'en_ES' => 'İngilizce (İspanya)',
'en_FI' => 'İngilizce (Finlandiya)',
'en_FJ' => 'İngilizce (Fiji)',
'en_FK' => 'İngilizce (Falkland Adaları)',
'en_FM' => 'İngilizce (Mikronezya)',
+ 'en_FR' => 'İngilizce (Fransa)',
'en_GB' => 'İngilizce (Birleşik Krallık)',
'en_GD' => 'İngilizce (Grenada)',
'en_GG' => 'İngilizce (Guernsey)',
'en_GH' => 'İngilizce (Gana)',
'en_GI' => 'İngilizce (Cebelitarık)',
'en_GM' => 'İngilizce (Gambiya)',
+ 'en_GS' => 'İngilizce (Güney Georgia ve Güney Sandwich Adaları)',
'en_GU' => 'İngilizce (Guam)',
'en_GY' => 'İngilizce (Guyana)',
'en_HK' => 'İngilizce (Çin Hong Kong ÖİB)',
+ 'en_HU' => 'İngilizce (Macaristan)',
'en_ID' => 'İngilizce (Endonezya)',
'en_IE' => 'İngilizce (İrlanda)',
'en_IL' => 'İngilizce (İsrail)',
'en_IM' => 'İngilizce (Man Adası)',
'en_IN' => 'İngilizce (Hindistan)',
'en_IO' => 'İngilizce (Britanya Hint Okyanusu Toprakları)',
+ 'en_IT' => 'İngilizce (İtalya)',
'en_JE' => 'İngilizce (Jersey)',
'en_JM' => 'İngilizce (Jamaika)',
'en_KE' => 'İngilizce (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'İngilizce (Norfolk Adası)',
'en_NG' => 'İngilizce (Nijerya)',
'en_NL' => 'İngilizce (Hollanda)',
+ 'en_NO' => 'İngilizce (Norveç)',
'en_NR' => 'İngilizce (Nauru)',
'en_NU' => 'İngilizce (Niue)',
'en_NZ' => 'İngilizce (Yeni Zelanda)',
'en_PG' => 'İngilizce (Papua Yeni Gine)',
'en_PH' => 'İngilizce (Filipinler)',
'en_PK' => 'İngilizce (Pakistan)',
+ 'en_PL' => 'İngilizce (Polonya)',
'en_PN' => 'İngilizce (Pitcairn Adaları)',
'en_PR' => 'İngilizce (Porto Riko)',
+ 'en_PT' => 'İngilizce (Portekiz)',
'en_PW' => 'İngilizce (Palau)',
+ 'en_RO' => 'İngilizce (Romanya)',
'en_RW' => 'İngilizce (Ruanda)',
'en_SB' => 'İngilizce (Solomon Adaları)',
'en_SC' => 'İngilizce (Seyşeller)',
@@ -184,6 +194,7 @@
'en_SG' => 'İngilizce (Singapur)',
'en_SH' => 'İngilizce (Saint Helena)',
'en_SI' => 'İngilizce (Slovenya)',
+ 'en_SK' => 'İngilizce (Slovakya)',
'en_SL' => 'İngilizce (Sierra Leone)',
'en_SS' => 'İngilizce (Güney Sudan)',
'en_SX' => 'İngilizce (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/tt.php b/src/Symfony/Component/Intl/Resources/data/locales/tt.php
index 0b2a4529009f6..7f8b5bffce1b1 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/tt.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/tt.php
@@ -110,29 +110,35 @@
'en_CM' => 'инглиз (Камерун)',
'en_CX' => 'инглиз (Раштуа утравы)',
'en_CY' => 'инглиз (Кипр)',
+ 'en_CZ' => 'инглиз (Чехия Республикасы)',
'en_DE' => 'инглиз (Германия)',
'en_DK' => 'инглиз (Дания)',
'en_DM' => 'инглиз (Доминика)',
'en_ER' => 'инглиз (Эритрея)',
+ 'en_ES' => 'инглиз (Испания)',
'en_FI' => 'инглиз (Финляндия)',
'en_FJ' => 'инглиз (Фиджи)',
'en_FK' => 'инглиз (Фолкленд утраулары)',
'en_FM' => 'инглиз (Микронезия)',
+ 'en_FR' => 'инглиз (Франция)',
'en_GB' => 'инглиз (Берләшкән Корольлек)',
'en_GD' => 'инглиз (Гренада)',
'en_GG' => 'инглиз (Гернси)',
'en_GH' => 'инглиз (Гана)',
'en_GI' => 'инглиз (Гибралтар)',
'en_GM' => 'инглиз (Гамбия)',
+ 'en_GS' => 'инглиз (Көньяк Георгия һәм Көньяк Сандвич утраулары)',
'en_GU' => 'инглиз (Гуам)',
'en_GY' => 'инглиз (Гайана)',
'en_HK' => 'инглиз (Гонконг Махсус Идарәле Төбәге)',
+ 'en_HU' => 'инглиз (Венгрия)',
'en_ID' => 'инглиз (Индонезия)',
'en_IE' => 'инглиз (Ирландия)',
'en_IL' => 'инглиз (Израиль)',
'en_IM' => 'инглиз (Мэн утравы)',
'en_IN' => 'инглиз (Индия)',
'en_IO' => 'инглиз (Британиянең Һинд Океанындагы Территориясе)',
+ 'en_IT' => 'инглиз (Италия)',
'en_JE' => 'инглиз (Джерси)',
'en_JM' => 'инглиз (Ямайка)',
'en_KE' => 'инглиз (Кения)',
@@ -156,15 +162,19 @@
'en_NF' => 'инглиз (Норфолк утравы)',
'en_NG' => 'инглиз (Нигерия)',
'en_NL' => 'инглиз (Нидерланд)',
+ 'en_NO' => 'инглиз (Норвегия)',
'en_NR' => 'инглиз (Науру)',
'en_NU' => 'инглиз (Ниуэ)',
'en_NZ' => 'инглиз (Яңа Зеландия)',
'en_PG' => 'инглиз (Папуа - Яңа Гвинея)',
'en_PH' => 'инглиз (Филиппин)',
'en_PK' => 'инглиз (Пакистан)',
+ 'en_PL' => 'инглиз (Польша)',
'en_PN' => 'инглиз (Питкэрн утраулары)',
'en_PR' => 'инглиз (Пуэрто-Рико)',
+ 'en_PT' => 'инглиз (Португалия)',
'en_PW' => 'инглиз (Палау)',
+ 'en_RO' => 'инглиз (Румыния)',
'en_RW' => 'инглиз (Руанда)',
'en_SB' => 'инглиз (Сөләйман утраулары)',
'en_SC' => 'инглиз (Сейшел утраулары)',
@@ -173,6 +183,7 @@
'en_SG' => 'инглиз (Сингапур)',
'en_SH' => 'инглиз (Изге Елена утравы)',
'en_SI' => 'инглиз (Словения)',
+ 'en_SK' => 'инглиз (Словакия)',
'en_SL' => 'инглиз (Сьерра-Леоне)',
'en_SS' => 'инглиз (Көньяк Судан)',
'en_SX' => 'инглиз (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ug.php b/src/Symfony/Component/Intl/Resources/data/locales/ug.php
index bcacc5bd1b6d9..172520efb367f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ug.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ug.php
@@ -121,28 +121,34 @@
'en_CM' => 'ئىنگلىزچە (كامېرون)',
'en_CX' => 'ئىنگلىزچە (مىلاد ئارىلى)',
'en_CY' => 'ئىنگلىزچە (سىپرۇس)',
+ 'en_CZ' => 'ئىنگلىزچە (چېخ جۇمھۇرىيىتى)',
'en_DE' => 'ئىنگلىزچە (گېرمانىيە)',
'en_DK' => 'ئىنگلىزچە (دانىيە)',
'en_DM' => 'ئىنگلىزچە (دومىنىكا)',
'en_ER' => 'ئىنگلىزچە (ئېرىترىيە)',
+ 'en_ES' => 'ئىنگلىزچە (ئىسپانىيە)',
'en_FI' => 'ئىنگلىزچە (فىنلاندىيە)',
'en_FJ' => 'ئىنگلىزچە (فىجى)',
'en_FK' => 'ئىنگلىزچە (فالكلاند ئاراللىرى)',
'en_FM' => 'ئىنگلىزچە (مىكرونېزىيە)',
+ 'en_FR' => 'ئىنگلىزچە (فىرانسىيە)',
'en_GB' => 'ئىنگلىزچە (بىرلەشمە پادىشاھلىق)',
'en_GD' => 'ئىنگلىزچە (گىرېنادا)',
'en_GG' => 'ئىنگلىزچە (گۇرنسېي)',
'en_GH' => 'ئىنگلىزچە (گانا)',
'en_GI' => 'ئىنگلىزچە (جەبىلتارىق)',
'en_GM' => 'ئىنگلىزچە (گامبىيە)',
+ 'en_GS' => 'ئىنگلىزچە (جەنۇبىي جورجىيە ۋە جەنۇبىي ساندۋىچ ئاراللىرى)',
'en_GU' => 'ئىنگلىزچە (گۇئام)',
'en_GY' => 'ئىنگلىزچە (گىۋىيانا)',
'en_HK' => 'ئىنگلىزچە (شياڭگاڭ ئالاھىدە مەمۇرىي رايونى [جۇڭگو])',
+ 'en_HU' => 'ئىنگلىزچە (ۋېنگىرىيە)',
'en_ID' => 'ئىنگلىزچە (ھىندونېزىيە)',
'en_IE' => 'ئىنگلىزچە (ئىرېلاندىيە)',
'en_IL' => 'ئىنگلىزچە (ئىسرائىلىيە)',
'en_IM' => 'ئىنگلىزچە (مان ئارىلى)',
'en_IN' => 'ئىنگلىزچە (ھىندىستان)',
+ 'en_IT' => 'ئىنگلىزچە (ئىتالىيە)',
'en_JE' => 'ئىنگلىزچە (جېرسېي)',
'en_JM' => 'ئىنگلىزچە (يامايكا)',
'en_KE' => 'ئىنگلىزچە (كېنىيە)',
@@ -166,15 +172,19 @@
'en_NF' => 'ئىنگلىزچە (نورفولك ئارىلى)',
'en_NG' => 'ئىنگلىزچە (نىگېرىيە)',
'en_NL' => 'ئىنگلىزچە (گوللاندىيە)',
+ 'en_NO' => 'ئىنگلىزچە (نورۋېگىيە)',
'en_NR' => 'ئىنگلىزچە (ناۋرۇ)',
'en_NU' => 'ئىنگلىزچە (نيۇئې)',
'en_NZ' => 'ئىنگلىزچە (يېڭى زېلاندىيە)',
'en_PG' => 'ئىنگلىزچە (پاپۇئا يېڭى گىۋىنىيەسى)',
'en_PH' => 'ئىنگلىزچە (فىلىپپىن)',
'en_PK' => 'ئىنگلىزچە (پاكىستان)',
+ 'en_PL' => 'ئىنگلىزچە (پولشا)',
'en_PN' => 'ئىنگلىزچە (پىتكايرن ئاراللىرى)',
'en_PR' => 'ئىنگلىزچە (پۇئېرتو رىكو)',
+ 'en_PT' => 'ئىنگلىزچە (پورتۇگالىيە)',
'en_PW' => 'ئىنگلىزچە (پالائۇ)',
+ 'en_RO' => 'ئىنگلىزچە (رومىنىيە)',
'en_RW' => 'ئىنگلىزچە (رىۋاندا)',
'en_SB' => 'ئىنگلىزچە (سولومون ئاراللىرى)',
'en_SC' => 'ئىنگلىزچە (سېيشېل)',
@@ -183,6 +193,7 @@
'en_SG' => 'ئىنگلىزچە (سىنگاپور)',
'en_SH' => 'ئىنگلىزچە (ساينىت ھېلېنا)',
'en_SI' => 'ئىنگلىزچە (سىلوۋېنىيە)',
+ 'en_SK' => 'ئىنگلىزچە (سىلوۋاكىيە)',
'en_SL' => 'ئىنگلىزچە (سېررالېئون)',
'en_SS' => 'ئىنگلىزچە (جەنۇبىي سۇدان)',
'en_SX' => 'ئىنگلىزچە (سىنت مارتېن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/uk.php b/src/Symfony/Component/Intl/Resources/data/locales/uk.php
index 5dadd306d7297..ff6438470ae7e 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/uk.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/uk.php
@@ -121,29 +121,35 @@
'en_CM' => 'англійська (Камерун)',
'en_CX' => 'англійська (Острів Різдва)',
'en_CY' => 'англійська (Кіпр)',
+ 'en_CZ' => 'англійська (Чехія)',
'en_DE' => 'англійська (Німеччина)',
'en_DK' => 'англійська (Данія)',
'en_DM' => 'англійська (Домініка)',
'en_ER' => 'англійська (Еритрея)',
+ 'en_ES' => 'англійська (Іспанія)',
'en_FI' => 'англійська (Фінляндія)',
'en_FJ' => 'англійська (Фіджі)',
'en_FK' => 'англійська (Фолклендські Острови)',
'en_FM' => 'англійська (Мікронезія)',
+ 'en_FR' => 'англійська (Франція)',
'en_GB' => 'англійська (Велика Британія)',
'en_GD' => 'англійська (Гренада)',
'en_GG' => 'англійська (Гернсі)',
'en_GH' => 'англійська (Гана)',
'en_GI' => 'англійська (Гібралтар)',
'en_GM' => 'англійська (Гамбія)',
+ 'en_GS' => 'англійська (Південна Джорджія та Південні Сандвічеві Острови)',
'en_GU' => 'англійська (Гуам)',
'en_GY' => 'англійська (Гаяна)',
'en_HK' => 'англійська (Гонконг, ОАР Китаю)',
+ 'en_HU' => 'англійська (Угорщина)',
'en_ID' => 'англійська (Індонезія)',
'en_IE' => 'англійська (Ірландія)',
'en_IL' => 'англійська (Ізраїль)',
'en_IM' => 'англійська (Острів Мен)',
'en_IN' => 'англійська (Індія)',
'en_IO' => 'англійська (Британська територія в Індійському океані)',
+ 'en_IT' => 'англійська (Італія)',
'en_JE' => 'англійська (Джерсі)',
'en_JM' => 'англійська (Ямайка)',
'en_KE' => 'англійська (Кенія)',
@@ -167,15 +173,19 @@
'en_NF' => 'англійська (Острів Норфолк)',
'en_NG' => 'англійська (Нігерія)',
'en_NL' => 'англійська (Нідерланди)',
+ 'en_NO' => 'англійська (Норвегія)',
'en_NR' => 'англійська (Науру)',
'en_NU' => 'англійська (Ніуе)',
'en_NZ' => 'англійська (Нова Зеландія)',
'en_PG' => 'англійська (Папуа-Нова Гвінея)',
'en_PH' => 'англійська (Філіппіни)',
'en_PK' => 'англійська (Пакистан)',
+ 'en_PL' => 'англійська (Польща)',
'en_PN' => 'англійська (Острови Піткерн)',
'en_PR' => 'англійська (Пуерто-Рико)',
+ 'en_PT' => 'англійська (Португалія)',
'en_PW' => 'англійська (Палау)',
+ 'en_RO' => 'англійська (Румунія)',
'en_RW' => 'англійська (Руанда)',
'en_SB' => 'англійська (Соломонові Острови)',
'en_SC' => 'англійська (Сейшельські Острови)',
@@ -184,6 +194,7 @@
'en_SG' => 'англійська (Сінгапур)',
'en_SH' => 'англійська (Острів Святої Єлени)',
'en_SI' => 'англійська (Словенія)',
+ 'en_SK' => 'англійська (Словаччина)',
'en_SL' => 'англійська (Сьєрра-Леоне)',
'en_SS' => 'англійсь
10000
ка (Південний Судан)',
'en_SX' => 'англійська (Сінт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/ur.php b/src/Symfony/Component/Intl/Resources/data/locales/ur.php
index d7ac179c447c4..2f497ec8d340f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/ur.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/ur.php
@@ -121,29 +121,35 @@
'en_CM' => 'انگریزی (کیمرون)',
'en_CX' => 'انگریزی (جزیرہ کرسمس)',
'en_CY' => 'انگریزی (قبرص)',
+ 'en_CZ' => 'انگریزی (چیکیا)',
'en_DE' => 'انگریزی (جرمنی)',
'en_DK' => 'انگریزی (ڈنمارک)',
'en_DM' => 'انگریزی (ڈومنیکا)',
'en_ER' => 'انگریزی (اریٹیریا)',
+ 'en_ES' => 'انگریزی (ہسپانیہ)',
'en_FI' => 'انگریزی (فن لینڈ)',
'en_FJ' => 'انگریزی (فجی)',
'en_FK' => 'انگریزی (فاکلینڈ جزائر)',
'en_FM' => 'انگریزی (مائکرونیشیا)',
+ 'en_FR' => 'انگریزی (فرانس)',
'en_GB' => 'انگریزی (سلطنت متحدہ)',
'en_GD' => 'انگریزی (گریناڈا)',
'en_GG' => 'انگریزی (گوئرنسی)',
'en_GH' => 'انگریزی (گھانا)',
'en_GI' => 'انگریزی (جبل الطارق)',
'en_GM' => 'انگریزی (گیمبیا)',
+ 'en_GS' => 'انگریزی (جنوبی جارجیا اور جنوبی سینڈوچ جزائر)',
'en_GU' => 'انگریزی (گوام)',
'en_GY' => 'انگریزی (گیانا)',
'en_HK' => 'انگریزی (ہانگ کانگ SAR چین)',
+ 'en_HU' => 'انگریزی (ہنگری)',
'en_ID' => 'انگریزی (انڈونیشیا)',
'en_IE' => 'انگریزی (آئرلینڈ)',
'en_IL' => 'انگریزی (اسرائیل)',
'en_IM' => 'انگریزی (آئل آف مین)',
'en_IN' => 'انگریزی (بھارت)',
'en_IO' => 'انگریزی (برطانوی بحر ہند کا علاقہ)',
+ 'en_IT' => 'انگریزی (اٹلی)',
'en_JE' => 'انگریزی (جرسی)',
'en_JM' => 'انگریزی (جمائیکا)',
'en_KE' => 'انگریزی (کینیا)',
@@ -167,15 +173,19 @@
'en_NF' => 'انگریزی (نارفوک آئلینڈ)',
'en_NG' => 'انگریزی (نائجیریا)',
'en_NL' => 'انگریزی (نیدر لینڈز)',
+ 'en_NO' => 'انگریزی (ناروے)',
'en_NR' => 'انگریزی (نؤرو)',
'en_NU' => 'انگریزی (نیئو)',
'en_NZ' => 'انگریزی (نیوزی لینڈ)',
'en_PG' => 'انگریزی (پاپوآ نیو گنی)',
'en_PH' => 'انگریزی (فلپائن)',
'en_PK' => 'انگریزی (پاکستان)',
+ 'en_PL' => 'انگریزی (پولینڈ)',
'en_PN' => 'انگریزی (پٹکائرن جزائر)',
'en_PR' => 'انگریزی (پیورٹو ریکو)',
+ 'en_PT' => 'انگریزی (پرتگال)',
'en_PW' => 'انگریزی (پلاؤ)',
+ 'en_RO' => 'انگریزی (رومانیہ)',
'en_RW' => 'انگریزی (روانڈا)',
'en_SB' => 'انگریزی (سولومن آئلینڈز)',
'en_SC' => 'انگریزی (سشلیز)',
@@ -184,6 +194,7 @@
'en_SG' => 'انگریزی (سنگاپور)',
'en_SH' => 'انگریزی (سینٹ ہیلینا)',
'en_SI' => 'انگریزی (سلووینیا)',
+ 'en_SK' => 'انگریزی (سلوواکیہ)',
'en_SL' => 'انگریزی (سیرالیون)',
'en_SS' => 'انگریزی (جنوبی سوڈان)',
'en_SX' => 'انگریزی (سنٹ مارٹن)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/uz.php b/src/Symfony/Component/Intl/Resources/data/locales/uz.php
index 6448491444f86..ed9a8c05baff6 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/uz.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/uz.php
@@ -121,29 +121,35 @@
'en_CM' => 'inglizcha (Kamerun)',
'en_CX' => 'inglizcha (Rojdestvo oroli)',
'en_CY' => 'inglizcha (Kipr)',
+ 'en_CZ' => 'inglizcha (Chexiya)',
'en_DE' => 'inglizcha (Germaniya)',
'en_DK' => 'inglizcha (Daniya)',
'en_DM' => 'inglizcha (Dominika)',
'en_ER' => 'inglizcha (Eritreya)',
+ 'en_ES' => 'inglizcha (Ispaniya)',
'en_FI' => 'inglizcha (Finlandiya)',
'en_FJ' => 'inglizcha (Fiji)',
'en_FK' => 'inglizcha (Folklend orollari)',
'en_FM' => 'inglizcha (Mikroneziya)',
+ 'en_FR' => 'inglizcha (Fransiya)',
'en_GB' => 'inglizcha (Buyuk Britaniya)',
'en_GD' => 'inglizcha (Grenada)',
'en_GG' => 'inglizcha (Gernsi)',
'en_GH' => 'inglizcha (Gana)',
'en_GI' => 'inglizcha (Gibraltar)',
'en_GM' => 'inglizcha (Gambiya)',
+ 'en_GS' => 'inglizcha (Janubiy Georgiya va Janubiy Sendvich orollari)',
'en_GU' => 'inglizcha (Guam)',
'en_GY' => 'inglizcha (Gayana)',
'en_HK' => 'inglizcha (Gonkong [Xitoy MMH])',
+ 'en_HU' => 'inglizcha (Vengriya)',
'en_ID' => 'inglizcha (Indoneziya)',
'en_IE' => 'inglizcha (Irlandiya)',
'en_IL' => 'inglizcha (Isroil)',
'en_IM' => 'inglizcha (Men oroli)',
'en_IN' => 'inglizcha (Hindiston)',
'en_IO' => 'inglizcha (Britaniyaning Hind okeanidagi hududi)',
+ 'en_IT' => 'inglizcha (Italiya)',
'en_JE' => 'inglizcha (Jersi)',
'en_JM' => 'inglizcha (Yamayka)',
'en_KE' => 'inglizcha (Keniya)',
@@ -167,15 +173,19 @@
'en_NF' => 'inglizcha (Norfolk oroli)',
'en_NG' => 'inglizcha (Nigeriya)',
'en_NL' => 'inglizcha (Niderlandiya)',
+ 'en_NO' => 'inglizcha (Norvegiya)',
'en_NR' => 'inglizcha (Nauru)',
'en_NU' => 'inglizcha (Niue)',
'en_NZ' => 'inglizcha (Yangi Zelandiya)',
'en_PG' => 'inglizcha (Papua – Yangi Gvineya)',
'en_PH' => 'inglizcha (Filippin)',
'en_PK' => 'inglizcha (Pokiston)',
+ 'en_PL' => 'inglizcha (Polsha)',
'en_PN' => 'inglizcha (Pitkern orollari)',
'en_PR' => 'inglizcha (Puerto-Riko)',
+ 'en_PT' => 'inglizcha (Portugaliya)',
'en_PW' => 'inglizcha (Palau)',
+ 'en_RO' => 'inglizcha (Ruminiya)',
'en_RW' => 'inglizcha (Ruanda)',
'en_SB' => 'inglizcha (Solomon orollari)',
'en_SC' => 'inglizcha (Seyshel orollari)',
@@ -184,6 +194,7 @@
'en_SG' => 'inglizcha (Singapur)',
'en_SH' => 'inglizcha (Muqaddas Yelena oroli)',
'en_SI' => 'inglizcha (Sloveniya)',
+ 'en_SK' => 'inglizcha (Slovakiya)',
'en_SL' => 'inglizcha (Syerra-Leone)',
'en_SS' => 'inglizcha (Janubiy Sudan)',
'en_SX' => 'inglizcha (Sint-Marten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/uz_Cyrl.php b/src/Symfony/Component/Intl/Resources/data/locales/uz_Cyrl.php
index c914c6278d563..96e39d0e0e49d 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/uz_Cyrl.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/uz_Cyrl.php
@@ -121,29 +121,35 @@
'en_CM' => 'инглизча (Камерун)',
'en_CX' => 'инглизча (Рождество ороли)',
'en_CY' => 'инглизча (Кипр)',
+ 'en_CZ' => 'инглизча (Чехия)',
'en_DE' => 'инглизча (Германия)',
'en_DK' => 'инглизча (Дания)',
'en_DM' => 'инглизча (Доминика)',
'en_ER' => 'инглизча (Эритрея)',
+ 'en_ES' => 'инглизча (Испания)',
'en_FI' => 'инглизча (Финляндия)',
'en_FJ' => 'инглизча (Фижи)',
'en_FK' => 'инглизча (Фолкленд ороллари)',
'en_FM' => 'инглизча (Микронезия)',
+ 'en_FR' => 'инглизча (Франция)',
'en_GB' => 'инглизча (Буюк Британия)',
'en_GD' => 'инглизча (Гренада)',
'en_GG' => 'инглизча (Гернси)',
'en_GH' => 'инглизча (Гана)',
'en_GI' => 'инглизча (Гибралтар)',
'en_GM' => 'инглизча (Гамбия)',
+ 'en_GS' => 'инглизча (Жанубий Георгия ва Жанубий Сендвич ороллари)',
'en_GU' => 'инглизча (Гуам)',
'en_GY' => 'инглизча (Гаяна)',
'en_HK' => 'инглизча (Гонконг [Хитой ММҲ])',
+ 'en_HU' => 'инглизча (Венгрия)',
'en_ID' => 'инглизча (Индонезия)',
'en_IE' => 'инглизча (Ирландия)',
'en_IL' => 'инглизча (Исроил)',
'en_IM' => 'инглизча (Мэн ороли)',
'en_IN' => 'инглизча (Ҳиндистон)',
'en_IO' => 'инглизча (Britaniyaning Hind okeanidagi hududi)',
+ 'en_IT' => 'инглизча (Италия)',
'en_JE' => 'инглизча (Жерси)',
'en_JM' => 'инглизча (Ямайка)',
'en_KE' => 'инглизча (Кения)',
@@ -167,15 +173,19 @@
'en_NF' => 'инглизча (Норфолк ороллари)',
'en_NG' => 'инглизча (Нигерия)',
'en_NL' => 'инглизча (Нидерландия)',
+ 'en_NO' => 'инглизча (Норвегия)',
'en_NR' => 'инглизча (Науру)',
'en_NU' => 'инглизча (Ниуэ)',
'en_NZ' => 'инглизча (Янги Зеландия)',
'en_PG' => 'инглизча (Папуа - Янги Гвинея)',
'en_PH' => 'инглизча (Филиппин)',
'en_PK' => 'инглизча (Покистон)',
+ 'en_PL' => 'инглизча (Польша)',
'en_PN' => 'инглизча (Питкэрн ороллари)',
'en_PR' => 'инглизча (Пуэрто-Рико)',
+ 'en_PT' => 'инглизча (Португалия)',
'en_PW' => 'инглизча (Палау)',
+ 'en_RO' => 'инглизча (Руминия)',
'en_RW' => 'инглизча (Руанда)',
'en_SB' => 'инглизча (Соломон ороллари)',
'en_SC' => 'инглизча (Сейшел ороллари)',
@@ -184,6 +194,7 @@
'en_SG' => 'инглизча (Сингапур)',
'en_SH' => 'инглизча (Муқаддас Елена ороли)',
'en_SI' => 'инглизча (Словения)',
+ 'en_SK' => 'инглизча (Словакия)',
'en_SL' => 'инглизча (Сьерра-Леоне)',
'en_SS' => 'инглизча (Жанубий Судан)',
'en_SX' => 'инглизча (Синт-Мартен)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/vi.php b/src/Symfony/Component/Intl/Resources/data/locales/vi.php
index b73a0b4c8ea36..6cd2b079873a1 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/vi.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/vi.php
@@ -121,29 +121,35 @@
'en_CM' => 'Tiếng Anh (Cameroon)',
'en_CX' => 'Tiếng Anh (Đảo Giáng Sinh)',
'en_CY' => 'Tiếng Anh (Síp)',
+ 'en_CZ' => 'Tiếng Anh (Séc)',
'en_DE' => 'Tiếng Anh (Đức)',
'en_DK' => 'Tiếng Anh (Đan Mạch)',
'en_DM' => 'Tiếng Anh (Dominica)',
'en_ER' => 'Tiếng Anh (Eritrea)',
+ 'en_ES' => 'Tiếng Anh (Tây Ban Nha)',
'en_FI' => 'Tiếng Anh (Phần Lan)',
'en_FJ' => 'Tiếng Anh (Fiji)',
'en_FK' => 'Tiếng Anh (Quần đảo Falkland)',
'en_FM' => 'Tiếng Anh (Micronesia)',
+ 'en_FR' => 'Tiếng Anh (Pháp)',
'en_GB' => 'Tiếng Anh (Vương quốc Anh)',
'en_GD' => 'Tiếng Anh (Grenada)',
'en_GG' => 'Tiếng Anh (Guernsey)',
'en_GH' => 'Tiếng Anh (Ghana)',
'en_GI' => 'Tiếng Anh (Gibraltar)',
'en_GM' => 'Tiếng Anh (Gambia)',
+ 'en_GS' => 'Tiếng Anh (Nam Georgia & Quần đảo Nam Sandwich)',
'en_GU' => 'Tiếng Anh (Guam)',
'en_GY' => 'Tiếng Anh (Guyana)',
'en_HK' => 'Tiếng Anh (Đặc khu Hành chính Hồng Kông, Trung Quốc)',
+ 'en_HU' => 'Tiếng Anh (Hungary)',
'en_ID' => 'Tiếng Anh (Indonesia)',
'en_IE' => 'Tiếng Anh (Ireland)',
'en_IL' => 'Tiếng Anh (Israel)',
'en_IM' => 'Tiếng Anh (Đảo Man)',
'en_IN' => 'Tiếng Anh (Ấn Độ)',
'en_IO' => 'Tiếng Anh (Lãnh thổ Ấn Độ Dương thuộc Anh)',
+ 'en_IT' => 'Tiếng Anh (Italy)',
'en_JE' => 'Tiếng Anh (Jersey)',
'en_JM' => 'Tiếng Anh (Jamaica)',
'en_KE' => 'Tiếng Anh (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Tiếng Anh (Đảo Norfolk)',
'en_NG' => 'Tiếng Anh (Nigeria)',
'en_NL' => 'Tiếng Anh (Hà Lan)',
+ 'en_NO' => 'Tiếng Anh (Na Uy)',
'en_NR' => 'Tiếng Anh (Nauru)',
'en_NU' => 'Tiếng Anh (Niue)',
'en_NZ' => 'Tiếng Anh (New Zealand)',
'en_PG' => 'Tiếng Anh (Papua New Guinea)',
'en_PH' => 'Tiếng Anh (Philippines)',
'en_PK' => 'Tiếng Anh (Pakistan)',
+ 'en_PL' => 'Tiếng Anh (Ba Lan)',
'en_PN' => 'Tiếng Anh (Quần đảo Pitcairn)',
'en_PR' => 'Tiếng Anh (Puerto Rico)',
+ 'en_PT' => 'Tiếng Anh (Bồ Đào Nha)',
'en_PW' => 'Tiếng Anh (Palau)',
+ 'en_RO' => 'Tiếng Anh (Romania)',
'en_RW' => 'Tiếng Anh (Rwanda)',
'en_SB' => 'Tiếng Anh (Quần đảo Solomon)',
'en_SC' => 'Tiếng Anh (Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'Tiếng Anh (Singapore)',
'en_SH' => 'Tiếng Anh (St. Helena)',
'en_SI' => 'Tiếng Anh (Slovenia)',
+ 'en_SK' => 'Tiếng Anh (Slovakia)',
'en_SL' => 'Tiếng Anh (Sierra Leone)',
'en_SS' => 'Tiếng Anh (Nam Sudan)',
'en_SX' => 'Tiếng Anh (Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/wo.php b/src/Symfony/Component/Intl/Resources/data/locales/wo.php
index d2cfe09c2eb3b..b6b651d9e27b0 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/wo.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/wo.php
@@ -110,29 +110,35 @@
'en_CM' => 'Àngale (Kamerun)',
'en_CX' => 'Àngale (Dunu Kirismas)',
'en_CY' => 'Àngale (Siipar)',
+ 'en_CZ' => 'Àngale (Réewum Cek)',
'en_DE' => 'Àngale (Almaañ)',
'en_DK' => 'Àngale (Danmàrk)',
'en_DM' => 'Àngale (Dominik)',
'en_ER' => 'Àngale (Eritere)',
+ 'en_ES' => 'Àngale (Españ)',
'en_FI' => 'Àngale (Finlànd)',
'en_FJ' => 'Àngale (Fijji)',
'en_FK' => 'Àngale (Duni Falkland)',
'en_FM' => 'Àngale (Mikoronesi)',
+ 'en_FR' => 'Àngale (Faraans)',
'en_GB' => 'Àngale (Ruwaayom Ini)',
'en_GD' => 'Àngale (Garanad)',
'en_GG' => 'Àngale (Gernase)',
'en_GH' => 'Àngale (Gana)',
'en_GI' => 'Àngale (Sibraltaar)',
'en_GM' => 'Àngale (Gàmbi)',
+ 'en_GS' => 'Àngale (Seworsi di Sid ak Duni Sàndwiis di Sid)',
'en_GU' => 'Àngale (Guwam)',
'en_GY' => 'Àngale (Giyaan)',
'en_HK' => 'Àngale (Ooŋ Koŋ)',
+ 'en_HU' => 'Àngale (Ongari)',
'en_ID' => 'Àngale (Indonesi)',
'en_IE' => 'Àngale (Irlànd)',
'en_IL' => 'Àngale (Israyel)',
'en_IM' => 'Àngale (Dunu Maan)',
'en_IN' => 'Àngale (End)',
'en_IO' => 'Àngale (Terituwaaru Brëtaañ ci Oseyaa Enjeŋ)',
+ 'en_IT' => 'Àngale (Itali)',
'en_JE' => 'Àngale (Serse)',
'en_JM' => 'Àngale (Samayig)',
'en_KE' => 'Àngale (Keeña)',
@@ -156,15 +162,19 @@
'en_NF' => 'Àngale (Dunu Norfolk)',
'en_NG' => 'Àngale (Niseriya)',
'en_NL' => 'Àngale (Peyi Baa)',
+ 'en_NO' => 'Àngale (Norwees)',
'en_NR' => 'Àngale (Nawru)',
'en_NU' => 'Àngale (Niw)',
'en_NZ' => 'Àngale (Nuwel Selànd)',
'en_PG' => 'Àngale (Papuwasi Gine Gu Bees)',
'en_PH' => 'Àngale (Filipin)',
'en_PK' => 'Àngale (Pakistaŋ)',
+ 'en_PL' => 'Àngale (Poloñ)',
'en_PN' => 'Àngale (Duni Pitkayirn)',
'en_PR' => 'Àngale (Porto Riko)',
+ 'en_PT' => 'Àngale (Portigaal)',
'en_PW' => 'Àngale (Palaw)',
+ 'en_RO' => 'Àngale (Rumani)',
'en_RW' => 'Àngale (Ruwànda)',
'en_SB' => 'Àngale (Duni Salmoon)',
'en_SC' => 'Àngale (Seysel)',
@@ -173,6 +183,7 @@
'en_SG' => 'Àngale (Singapuur)',
'en_SH' => 'Àngale (Saŋ Eleen)',
'en_SI' => 'Àngale (Esloweni)',
+ 'en_SK' => 'Àngale (Eslowaki)',
'en_SL' => 'Àngale (Siyera Lewon)',
'en_SS' => 'Àngale (Sudaŋ di Sid)',
'en_SX' => 'Àngale (Sin Marten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/xh.php b/src/Symfony/Component/Intl/Resources/data/locales/xh.php
index 545dae2d2f02c..a5fd201835683 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/xh.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/xh.php
@@ -70,29 +70,35 @@
'en_CM' => 'IsiNgesi (ECameroon)',
'en_CX' => 'IsiNgesi (EChristmas Island)',
'en_CY' => 'IsiNgesi (ECyprus)',
+ 'en_CZ' => 'IsiNgesi (ECzechia)',
'en_DE' => 'IsiNgesi (EJamani)',
'en_DK' => 'IsiNgesi (EDenmark)',
'en_DM' => 'IsiNgesi (EDominica)',
'en_ER' => 'IsiNgesi (E-Eritrea)',
+ 'en_ES' => 'IsiNgesi (ESpain)',
'en_FI' => 'IsiNgesi (EFinland)',
'en_FJ' => 'IsiNgesi (EFiji)',
'en_FK' => 'IsiNgesi (EFalkland Islands)',
'en_FM' => 'IsiNgesi (EMicronesia)',
+ 'en_FR' => 'IsiNgesi (EFrance)',
'en_GB' => 'IsiNgesi (E-United Kingdom)',
'en_GD' => 'IsiNgesi (EGrenada)',
'en_GG' => 'IsiNgesi (EGuernsey)',
'en_GH' => 'IsiNgesi (EGhana)',
'en_GI' => 'IsiNgesi (EGibraltar)',
'en_GM' => 'IsiNgesi (EGambia)',
+ 'en_GS' => 'IsiNgesi (ESouth Georgia & South Sandwich Islands)',
'en_GU' => 'IsiNgesi (EGuam)',
'en_GY' => 'IsiNgesi (EGuyana)',
'en_HK' => 'IsiNgesi (EHong Kong SAR China)',
+ 'en_HU' => 'IsiNgesi (EHungary)',
'en_ID' => 'IsiNgesi (E-Indonesia)',
'en_IE' => 'IsiNgesi (E-Ireland)',
'en_IL' => 'IsiNgesi (E-Israel)',
'en_IM' => 'IsiNgesi (E-Isle of Man)',
'en_IN' => 'IsiNgesi (E-Indiya)',
'en_IO' => 'IsiNgesi (EBritish Indian Ocean Territory)',
+ 'en_IT' => 'IsiNgesi (E-Italy)',
'en_JE' => 'IsiNgesi (EJersey)',
'en_JM' => 'IsiNgesi (EJamaica)',
'en_KE' => 'IsiNgesi (EKenya)',
@@ -116,15 +122,19 @@
'en_NF' => 'IsiNgesi (ENorfolk Island)',
'en_NG' => 'IsiNgesi (ENigeria)',
'en_NL' => 'IsiNgesi (ENetherlands)',
+ 'en_NO' => 'IsiNgesi (ENorway)',
'en_NR' => 'IsiNgesi (ENauru)',
'en_NU' => 'IsiNgesi (ENiue)',
'en_NZ' => 'IsiNgesi (ENew Zealand)',
'en_PG' => 'IsiNgesi (EPapua New Guinea)',
'en_PH' => 'IsiNgesi (EPhilippines)',
'en_PK' => 'IsiNgesi (EPakistan)',
+ 'en_PL' => 'IsiNgesi (EPoland)',
'en_PN' => 'IsiNgesi (EPitcairn Islands)',
'en_PR' => 'IsiNgesi (EPuerto Rico)',
+ 'en_PT' => 'IsiNgesi (EPortugal)',
'en_PW' => 'IsiNgesi (EPalau)',
+ 'en_RO' => 'IsiNgesi (ERomania)',
'en_RW' => 'IsiNgesi (ERwanda)',
'en_SB' => 'IsiNgesi (ESolomon Islands)',
'en_SC' => 'IsiNgesi (ESeychelles)',
@@ -133,6 +143,7 @@
'en_SG' => 'IsiNgesi (ESingapore)',
'en_SH' => 'IsiNgesi (ESt. Helena)',
'en_SI' => 'IsiNgesi (ESlovenia)',
+ 'en_SK' => 'IsiNgesi (ESlovakia)',
'en_SL' => 'IsiNgesi (ESierra Leone)',
'en_SS' => 'IsiNgesi (ESouth Sudan)',
'en_SX' => 'IsiNgesi (ESint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/yi.php b/src/Symfony/Component/Intl/Resources/data/locales/yi.php
index 637965efcd024..a4329df990afd 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/yi.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/yi.php
@@ -88,14 +88,17 @@
'en_CH' => 'ענגליש (שווייץ)',
'en_CK' => 'ענגליש (קוק אינזלען)',
'en_CM' => 'ענגליש (קאַמערון)',
+ 'en_CZ' => 'ענגליש (טשעכיי)',
'en_DE' => 'ענגליש (דייטשלאַנד)',
'en_DK' => 'ענגליש (דענמאַרק)',
'en_DM' => 'ענגליש (דאמיניקע)',
'en_ER' => 'ענגליש (עריטרעע)',
+ 'en_ES' => 'ענגליש (שפּאַניע)',
'en_FI' => 'ענגליש (פֿינלאַנד)',
'en_FJ' => 'ענגליש (פֿידזשי)',
'en_FK' => 'ענגליש (פֿאַלקלאַנד אינזלען)',
'en_FM' => 'ענגליש (מיקראנעזיע)',
+ 'en_FR' => 'ענגליש (פֿראַנקרייך)',
'en_GB' => 'ענגליש (פֿאַראייניגטע קעניגרייך)',
'en_GD' => 'ענגליש (גרענאַדאַ)',
'en_GG' => 'ענגליש (גערנזי)',
@@ -104,10 +107,12 @@
'en_GM' => 'ענגליש (גאַמביע)',
'en_GU' => 'ענגליש (גוואַם)',
'en_GY' => 'ענגליש (גויאַנע)',
+ 'en_HU' => 'ענגליש (אונגערן)',
'en_ID' => 'ענגליש (אינדאנעזיע)',
'en_IE' => 'ענגליש (אירלאַנד)',
'en_IL' => 'ענגליש (ישראל)',
'en_IN' => 'ענגליש (אינדיע)',
+ 'en_IT' => 'ענגליש (איטאַליע)',
'en_JE' => 'ענגליש (דזשערזי)',
'en_JM' => 'ענגליש (דזשאַמייקע)',
'en_KE' => 'ענגליש (קעניע)',
@@ -127,12 +132,16 @@
'en_NF' => 'ענגליש (נארפֿאלק אינזל)',
'en_NG' => 'ענגליש (ניגעריע)',
'en_NL' => 'ענגליש (האלאַנד)',
+ 'en_NO' => 'ענגליש (נארוועגיע)',
'en_NZ' => 'ענגליש (ניו זילאַנד)',
'en_PG' => 'ענגליש (פּאַפּואַ נײַ גינע)',
'en_PH' => 'ענגליש (פֿיליפּינען)',
'en_PK' => 'ענגליש (פּאַקיסטאַן)',
+ 'en_PL' => 'ענגליש (פּוילן)',
'en_PN' => 'ענגליש (פּיטקערן אינזלען)',
'en_PR' => 'ענגליש (פּארטא־ריקא)',
+ 'en_PT' => 'ענגליש (פּארטוגאַל)',
+ 'en_RO' => 'ענגליש (רומעניע)',
'en_RW' => 'ענגליש (רוואַנדע)',
'en_SB' => 'ענגליש (סאלאמאן אינזלען)',
'en_SC' => 'ענגליש (סיישעל)',
@@ -141,6 +150,7 @@
'en_SG' => 'ענגליש (סינגאַפּור)',
'en_SH' => 'ענגליש (סט העלענע)',
'en_SI' => 'ענגליש (סלאוועניע)',
+ 'en_SK' => 'ענגליש (סלאוואַקיי)',
'en_SL' => 'ענגליש (סיערע לעאנע)',
'en_SS' => 'ענגליש (דרום־סודאַן)',
'en_SZ' => 'ענגליש (סוואַזילאַנד)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/yo.php b/src/Symfony/Component/Intl/Resources/data/locales/yo.php
index ae6b18624fabb..e06835970cbf1 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/yo.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/yo.php
@@ -121,29 +121,35 @@
'en_CM' => 'Èdè Gẹ̀ẹ́sì (Kamerúúnì)',
'en_CX' => 'Èdè Gẹ̀ẹ́sì (Erékùsù Christmas)',
'en_CY' => 'Èdè Gẹ̀ẹ́sì (Kúrúsì)',
+ 'en_CZ' => 'Èdè Gẹ̀ẹ́sì (Ṣẹ́ẹ́kì)',
'en_DE' => 'Èdè Gẹ̀ẹ́sì (Jámánì)',
'en_DK' => 'Èdè Gẹ̀ẹ́sì (Dẹ́mákì)',
'en_DM' => 'Èdè Gẹ̀ẹ́sì (Dòmíníkà)',
'en_ER' => 'Èdè Gẹ̀ẹ́sì (Eritira)',
+ 'en_ES' => 'Èdè Gẹ̀ẹ́sì (Sípéìnì)',
'en_FI' => 'Èdè Gẹ̀ẹ́sì (Filandi)',
'en_FJ' => 'Èdè Gẹ̀ẹ́sì (Fíjì)',
'en_FK' => 'Èdè Gẹ̀ẹ́sì (Etikun Fakalandi)',
'en_FM' => 'Èdè Gẹ̀ẹ́sì (Makoronesia)',
+ 'en_FR' => 'Èdè Gẹ̀ẹ́sì (Faranse)',
'en_GB' => 'Èdè Gẹ̀ẹ́sì (Gẹ̀ẹ́sì)',
'en_GD' => 'Èdè Gẹ̀ẹ́sì (Genada)',
'en_GG' => 'Èdè Gẹ̀ẹ́sì (Guernsey)',
'en_GH' => 'Èdè Gẹ̀ẹ́sì (Gana)',
'en_GI' => 'Èdè Gẹ̀ẹ́sì (Gibaratara)',
'en_GM' => 'Èdè Gẹ̀ẹ́sì (Gambia)',
+ 'en_GS' => 'Èdè Gẹ̀ẹ́sì (Gúúsù Georgia àti Gúúsù Àwọn Erékùsù Sandwich)',
'en_GU' => 'Èdè Gẹ̀ẹ́sì (Guamu)',
'en_GY' => 'Èdè Gẹ̀ẹ́sì (Guyana)',
'en_HK' => 'Èdè Gẹ̀ẹ́sì (Agbègbè Ìṣàkóso Ìṣúná Hong Kong Tí Ṣánà Ń Darí)',
+ 'en_HU' => 'Èdè Gẹ̀ẹ́sì (Hungari)',
'en_ID' => 'Èdè Gẹ̀ẹ́sì (Indonéṣíà)',
'en_IE' => 'Èdè Gẹ̀ẹ́sì (Ailandi)',
'en_IL' => 'Èdè Gẹ̀ẹ́sì (Iserẹli)',
'en_IM' => 'Èdè Gẹ̀ẹ́sì (Erékùṣù ilẹ̀ Man)',
'en_IN' => 'Èdè Gẹ̀ẹ́sì (Íńdíà)',
'en_IO' => 'Èdè Gẹ̀ẹ́sì (Etíkun Índíánì ti Ìlú Bírítísì)',
+ 'en_IT' => 'Èdè Gẹ̀ẹ́sì (Itáli)',
'en_JE' => 'Èdè Gẹ̀ẹ́sì (Jẹsì)',
'en_JM' => 'Èdè Gẹ̀ẹ́sì (Jamaika)',
'en_KE' => 'Èdè Gẹ̀ẹ́sì (Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'Èdè Gẹ̀ẹ́sì (Erékùsù Nọ́úfókì)',
'en_NG' => 'Èdè Gẹ̀ẹ́sì (Nàìjíríà)',
'en_NL' => 'Èdè Gẹ̀ẹ́sì (Nedalandi)',
+ 'en_NO' => 'Èdè Gẹ̀ẹ́sì (Nọọwii)',
'en_NR' => 'Èdè Gẹ̀ẹ́sì (Nauru)',
'en_NU' => 'Èdè Gẹ̀ẹ́sì (Niue)',
'en_NZ' => 'Èdè Gẹ̀ẹ́sì (Ṣilandi Titun)',
'en_PG' => 'Èdè Gẹ̀ẹ́sì (Paapu ti Giini)',
'en_PH' => 'Èdè Gẹ̀ẹ́sì (Filipini)',
'en_PK' => 'Èdè Gẹ̀ẹ́sì (Pakisitan)',
+ 'en_PL' => 'Èdè Gẹ̀ẹ́sì (Polandi)',
'en_PN' => 'Èdè Gẹ̀ẹ́sì (Pikarini)',
'en_PR' => 'Èdè Gẹ̀ẹ́sì (Pọto Riko)',
+ 'en_PT' => 'Èdè Gẹ̀ẹ́sì (Pọ́túgà)',
'en_PW' => 'Èdè Gẹ̀ẹ́sì (Paalu)',
+ 'en_RO' => 'Èdè Gẹ̀ẹ́sì (Romaniya)',
'en_RW' => 'Èdè Gẹ̀ẹ́sì (Ruwanda)',
'en_SB' => 'Èdè Gẹ̀ẹ́sì (Etikun Solomoni)',
'en_SC' => 'Èdè Gẹ̀ẹ́sì (Ṣeṣẹlẹsi)',
@@ -184,6 +194,7 @@
'en_SG' => 'Èdè Gẹ̀ẹ́sì (Singapo)',
'en_SH' => 'Èdè Gẹ̀ẹ́sì (Hẹlena)',
'en_SI' => 'Èdè Gẹ̀ẹ́sì (Silofania)',
+ 'en_SK' => 'Èdè Gẹ̀ẹ́sì (Silofakia)',
'en_SL' => 'Èdè Gẹ̀ẹ́sì (Siria looni)',
'en_SS' => 'Èdè Gẹ̀ẹ́sì (Gúúsù Sudan)',
'en_SX' => 'Èdè Gẹ̀ẹ́sì (Síntì Mátẹ́ẹ̀nì)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/yo_BJ.php b/src/Symfony/Component/Intl/Resources/data/locales/yo_BJ.php
index e5dee9ccca219..c3133a658606f 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/yo_BJ.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/yo_BJ.php
@@ -53,29 +53,35 @@
'en_CM' => 'Èdè Gɛ̀ɛ́sì (Kamerúúnì)',
'en_CX' => 'Èdè Gɛ̀ɛ́sì (Erékùsù Christmas)',
'en_CY' => 'Èdè Gɛ̀ɛ́sì (Kúrúsì)',
+ 'en_CZ' => 'Èdè Gɛ̀ɛ́sì (Shɛ́ɛ́kì)',
'en_DE' => 'Èdè Gɛ̀ɛ́sì (Jámánì)',
'en_DK' => 'Èdè Gɛ̀ɛ́sì (Dɛ́mákì)',
'en_DM' => 'Èdè Gɛ̀ɛ́sì (Dòmíníkà)',
'en_ER' => 'Èdè Gɛ̀ɛ́sì (Eritira)',
+ 'en_ES' => 'Èdè Gɛ̀ɛ́sì (Sípéìnì)',
'en_FI' => 'Èdè Gɛ̀ɛ́sì (Filandi)',
'en_FJ' => 'Èdè Gɛ̀ɛ́sì (Fíjì)',
'en_FK' => 'Èdè Gɛ̀ɛ́sì (Etikun Fakalandi)',
'en_FM' => 'Èdè Gɛ̀ɛ́sì (Makoronesia)',
+ 'en_FR' => 'Èdè Gɛ̀ɛ́sì (Faranse)',
'en_GB' => 'Èdè Gɛ̀ɛ́sì (Gɛ̀ɛ́sì)',
'en_GD' => 'Èdè Gɛ̀ɛ́sì (Genada)',
'en_GG' => 'Èdè Gɛ̀ɛ́sì (Guernsey)',
'en_GH' => 'Èdè Gɛ̀ɛ́sì (Gana)',
'en_GI' => 'Èdè Gɛ̀ɛ́sì (Gibaratara)',
'en_GM' => 'Èdè Gɛ̀ɛ́sì (Gambia)',
+ 'en_GS' => 'Èdè Gɛ̀ɛ́sì (Gúúsù Georgia àti Gúúsù Àwɔn Erékùsù Sandwich)',
'en_GU' => 'Èdè Gɛ̀ɛ́sì (Guamu)',
'en_GY' => 'Èdè Gɛ̀ɛ́sì (Guyana)',
'en_HK' => 'Èdè Gɛ̀ɛ́sì (Agbègbè Ìshàkóso Ìshúná Hong Kong Tí Shánà Ń Darí)',
+ 'en_HU' => 'Èdè Gɛ̀ɛ́sì (Hungari)',
'en_ID' => 'Èdè Gɛ̀ɛ́sì (Indonéshíà)',
'en_IE' => 'Èdè Gɛ̀ɛ́sì (Ailandi)',
'en_IL' => 'Èdè Gɛ̀ɛ́sì (Iserɛli)',
'en_IM' => 'Èdè Gɛ̀ɛ́sì (Erékùshù ilɛ̀ Man)',
'en_IN' => 'Èdè Gɛ̀ɛ́sì (Íńdíà)',
'en_IO' => 'Èdè Gɛ̀ɛ́sì (Etíkun Índíánì ti Ìlú Bírítísì)',
+ 'en_IT' => 'Èdè Gɛ̀ɛ́sì (Itáli)',
'en_JE' => 'Èdè Gɛ̀ɛ́sì (Jɛsì)',
'en_JM' => 'Èdè Gɛ̀ɛ́sì (Jamaika)',
'en_KE' => 'Èdè Gɛ̀ɛ́sì (Kenya)',
@@ -99,15 +105,19 @@
'en_NF' => 'Èdè Gɛ̀ɛ́sì (Erékùsù Nɔ́úfókì)',
'en_NG' => 'Èdè Gɛ̀ɛ́sì (Nàìjíríà)',
'en_NL' => 'Èdè Gɛ̀ɛ́sì (Nedalandi)',
+ 'en_NO' => 'Èdè Gɛ̀ɛ́sì (Nɔɔwii)',
'en_NR' => 'Èdè Gɛ̀ɛ́sì (Nauru)',
'en_NU' => 'Èdè Gɛ̀ɛ́sì (Niue)',
'en_NZ' => 'Èdè Gɛ̀ɛ́sì (Shilandi Titun)',
'en_PG' => 'Èdè Gɛ̀ɛ́sì (Paapu ti Giini)',
'en_PH' => 'Èdè Gɛ̀ɛ́sì (Filipini)',
'en_PK' => 'Èdè Gɛ̀ɛ́sì (Pakisitan)',
+ 'en_PL' => 'Èdè Gɛ̀ɛ́sì (Polandi)',
'en_PN' => 'Èdè Gɛ̀ɛ́sì (Pikarini)',
'en_PR' => 'Èdè Gɛ̀ɛ́sì (Pɔto Riko)',
+ 'en_PT' => 'Èdè Gɛ̀ɛ́sì (Pɔ́túgà)',
'en_PW' => 'Èdè Gɛ̀ɛ́sì (Paalu)',
+ 'en_RO' => 'Èdè Gɛ̀ɛ́sì (Romaniya)',
'en_RW' => 'Èdè Gɛ̀ɛ́sì (Ruwanda)',
'en_SB' => 'Èdè Gɛ̀ɛ́sì (Etikun Solomoni)',
'en_SC' => 'Èdè Gɛ̀ɛ́sì (Sheshɛlɛsi)',
@@ -116,6 +126,7 @@
'en_SG' => 'Èdè Gɛ̀ɛ́sì (Singapo)',
'en_SH' => 'Èdè Gɛ̀ɛ́sì (Hɛlena)',
'en_SI' => 'Èdè Gɛ̀ɛ́sì (Silofania)',
+ 'en_SK' => 'Èdè Gɛ̀ɛ́sì (Silofakia)',
'en_SL' => 'Èdè Gɛ̀ɛ́sì (Siria looni)',
'en_SS' => 'Èdè Gɛ̀ɛ́sì (Gúúsù Sudan)',
'en_SX' => 'Èdè Gɛ̀ɛ́sì (Síntì Mátɛ́ɛ̀nì)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/zh.php b/src/Symfony/Component/Intl/Resources/data/locales/zh.php
index 3a7b27c3127bc..fecdd7be6bf63 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/zh.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/zh.php
@@ -121,29 +121,35 @@
'en_CM' => '英语(喀麦隆)',
'en_CX' => '英语(圣诞岛)',
'en_CY' => '英语(塞浦路斯)',
+ 'en_CZ' => '英语(捷克)',
'en_DE' => '英语(德国)',
'en_DK' => '英语(丹麦)',
'en_DM' => '英语(多米尼克)',
'en_ER' => '英语(厄立特里亚)',
+ 'en_ES' => '英语(西班牙)',
'en_FI' => '英语(芬兰)',
'en_FJ' => '英语(斐济)',
'en_FK' => '英语(福克兰群岛)',
'en_FM' => '英语(密克罗尼西亚)',
+ 'en_FR' => '英语(法国)',
'en_GB' => '英语(英国)',
'en_GD' => '英语(格林纳达)',
'en_GG' => '英语(根西岛)',
'en_GH' => '英语(加纳)',
'en_GI' => '英语(直布罗陀)',
'en_GM' => '英语(冈比亚)',
+ 'en_GS' => '英语(南乔治亚和南桑威奇群岛)',
'en_GU' => '英语(关岛)',
'en_GY' => '英语(圭亚那)',
'en_HK' => '英语(中国香港特别行政区)',
+ 'en_HU' => '英语(匈牙利)',
'en_ID' => '英语(印度尼西亚)',
'en_IE' => '英语(爱尔兰)',
'en_IL' => '英语(以色列)',
'en_IM' => '英语(马恩岛)',
'en_IN' => '英语(印度)',
'en_IO' => '英语(英属印度洋领地)',
+ 'en_IT' => '英语(意大利)',
'en_JE' => '英语(泽西岛)',
'en_JM' => '英语(牙买加)',
'en_KE' => '英语(肯尼亚)',
@@ -167,15 +173,19 @@
'en_NF' => '英语(诺福克岛)',
'en_NG' => '英语(尼日利亚)',
'en_NL' => '英语(荷兰)',
+ 'en_NO' => '英语(挪威)',
'en_NR' => '英语(瑙鲁)',
'en_NU' => '英语(纽埃)',
'en_NZ' => '英语(新西兰)',
'en_PG' => '英语(巴布亚新几内亚)',
'en_PH' => '英语(菲律宾)',
'en_PK' => '英语(巴基斯坦)',
+ 'en_PL' => '英语(波兰)',
'en_PN' => '英语(皮特凯恩群岛)',
'en_PR' => '英语(波多黎各)',
+ 'en_PT' => '英语(葡萄牙)',
'en_PW' => '英语(帕劳)',
+ 'en_RO' => '英语(罗马尼亚)',
'en_RW' => '英语(卢旺达)',
'en_SB' => '英语(所罗门群岛)',
'en_SC' => '英语(塞舌尔)',
@@ -184,6 +194,7 @@
'en_SG' => '英语(新加坡)',
'en_SH' => '英语(圣赫勒拿)',
'en_SI' => '英语(斯洛文尼亚)',
+ 'en_SK' => '英语(斯洛伐克)',
'en_SL' => '英语(塞拉利昂)',
'en_SS' => '英语(南苏丹)',
'en_SX' => '英语(荷属圣马丁)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant.php b/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant.php
index d58286ccd5369..5cd6867b2c56a 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant.php
@@ -121,29 +121,35 @@
'en_CM' => '英文(喀麥隆)',
'en_CX' => '英文(聖誕島)',
'en_CY' => '英文(賽普勒斯)',
+ 'en_CZ' => '英文(捷克)',
'en_DE' => '英文(德國)',
'en_DK' => '英文(丹麥)',
'en_DM' => '英文(多米尼克)',
'en_ER' => '英文(厄利垂亞)',
+ 'en_ES' => '英文(西班牙)',
'en_FI' => '英文(芬蘭)',
'en_FJ' => '英文(斐濟)',
'en_FK' => '英文(福克蘭群島)',
'en_FM' => '英文(密克羅尼西亞)',
+ 'en_FR' => '英文(法國)',
'en_GB' => '英文(英國)',
'en_GD' => '英文(格瑞那達)',
'en_GG' => '英文(根息)',
'en_GH' => '英文(迦納)',
'en_GI' => '英文(直布羅陀)',
'en_GM' => '英文(甘比亞)',
+ 'en_GS' => '英文(南喬治亞與南三明治群島)',
'en_GU' => '英文(關島)',
'en_GY' => '英文(蓋亞那)',
'en_HK' => '英文(中國香港特別行政區)',
+ 'en_HU' => '英文(匈牙利)',
'en_ID' => '英文(印尼)',
'en_IE' => '英文(愛爾蘭)',
'en_IL' => '英文(以色列)',
'en_IM' => '英文(曼島)',
'en_IN' => '英文(印度)',
'en_IO' => '英文(英屬印度洋領地)',
+ 'en_IT' => '英文(義大利)',
'en_JE' => '英文(澤西島)',
'en_JM' => '英文(牙買加)',
'en_KE' => '英文(肯亞)',
@@ -167,15 +173,19 @@
'en_NF' => '英文(諾福克島)',
'en_NG' => '英文(奈及利亞)',
'en_NL' => '英文(荷蘭)',
+ 'en_NO' => '英文(挪威)',
'en_NR' => '英文(諾魯)',
'en_NU' => '英文(紐埃島)',
'en_NZ' => '英文(紐西蘭)',
'en_PG' => '英文(巴布亞紐幾內亞)',
'en_PH' => '英文(菲律賓)',
'en_PK' => '英文(巴基斯坦)',
+ 'en_PL' => '英文(波蘭)',
'en_PN' => '英文(皮特肯群島)',
'en_PR' => '英文(波多黎各)',
+ 'en_PT' => '英文(葡萄牙)',
'en_PW' => '英文(帛琉)',
+ 'en_RO' => '英文(羅馬尼亞)',
'en_RW' => '英文(盧安達)',
'en_SB' => '英文(索羅門群島)',
'en_SC' => '英文(塞席爾)',
@@ -184,6 +194,7 @@
'en_SG' => '英文(新加坡)',
'en_SH' => '英文(聖赫勒拿島)',
'en_SI' => '英文(斯洛維尼亞)',
+ 'en_SK' => '英文(斯洛伐克)',
'en_SL' => '英文(獅子山)',
'en_SS' => '英文(南蘇丹)',
'en_SX' => '英文(荷屬聖馬丁)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant_HK.php b/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant_HK.php
index e3e519fc059c7..b9ad2bc68fecb 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant_HK.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/zh_Hant_HK.php
@@ -52,8 +52,10 @@
'en_GD' => '英文(格林納達)',
'en_GH' => '英文(加納)',
'en_GM' => '英文(岡比亞)',
+ 'en_GS' => '英文(南佐治亞島與南桑威奇群島)',
'en_GY' => '英文(圭亞那)',
'en_IM' => '英文(馬恩島)',
+ 'en_IT' => '英文(意大利)',
'en_KE' => '英文(肯尼亞)',
'en_KN' => '英文(聖基茨和尼維斯)',
'en_LC' => '英文(聖盧西亞)',
diff --git a/src/Symfony/Component/Intl/Resources/data/locales/zu.php b/src/Symfony/Component/Intl/Resources/data/locales/zu.php
index 5f7a1748c2df8..38f51b7c133ce 100644
--- a/src/Symfony/Component/Intl/Resources/data/locales/zu.php
+++ b/src/Symfony/Component/Intl/Resources/data/locales/zu.php
@@ -121,29 +121,35 @@
'en_CM' => 'i-English (i-Cameroon)',
'en_CX' => 'i-English (i-Christmas Island)',
'en_CY' => 'i-English (i-Cyprus)',
+ 'en_CZ' => 'i-English (i-Czechia)',
'en_DE' => 'i-English (i-Germany)',
'en_DK' => 'i-English (i-Denmark)',
'en_DM' => 'i-English (i-Dominica)',
'en_ER' => 'i-English (i-Eritrea)',
+ 'en_ES' => 'i-English (i-Spain)',
'en_FI' => 'i-English (i-Finland)',
'en_FJ' => 'i-English (i-Fiji)',
'en_FK' => 'i-English (i-Falkland Islands)',
'en_FM' => 'i-English (i-Micronesia)',
+ 'en_FR' => 'i-English (i-France)',
'en_GB' => 'i-English (i-United Kingdom)',
'en_GD' => 'i-English (i-Grenada)',
'en_GG' => 'i-English (i-Guernsey)',
'en_GH' => 'i-English (i-Ghana)',
'en_GI' => 'i-English (i-Gibraltar)',
'en_GM' => 'i-English (i-Gambia)',
+ 'en_GS' => 'i-English (i-South Georgia ne-South Sandwich Islands)',
'en_GU' => 'i-English (i-Guam)',
'en_GY' => 'i-English (i-Guyana)',
'en_HK' => 'i-English (i-Hong Kong SAR China)',
+ 'en_HU' => 'i-English (i-Hungary)',
'en_ID' => 'i-English (i-Indonesia)',
'en_IE' => 'i-English (i-Ireland)',
'en_IL' => 'i-English (kwa-Israel)',
'en_IM' => 'i-English (i-Isle of Man)',
'en_IN' => 'i-English (i-India)',
'en_IO' => 'i-English (i-British Indian Ocean Territory)',
+ 'en_IT' => 'i-English (i-Italy)',
'en_JE' => 'i-English (i-Jersey)',
'en_JM' => 'i-English (i-Jamaica)',
'en_KE' => 'i-English (i-Kenya)',
@@ -167,15 +173,19 @@
'en_NF' => 'i-English (i-Norfolk Island)',
'en_NG' => 'i-English (i-Nigeria)',
'en_NL' => 'i-English (i-Netherlands)',
+ 'en_NO' => 'i-English (i-Norway)',
'en_NR' => 'i-English (i-Nauru)',
'en_NU' => 'i-English (i-Niue)',
'en_NZ' => 'i-English (i-New Zealand)',
'en_PG' => 'i-English (i-Papua New Guinea)',
'en_PH' => 'i-English (i-Philippines)',
'en_PK' => 'i-English (i-Pakistan)',
+ 'en_PL' => 'i-English (i-Poland)',
'en_PN' => 'i-English (i-Pitcairn Islands)',
'en_PR' => 'i-English (i-Puerto Rico)',
+ 'en_PT' => 'i-English (i-Portugal)',
'en_PW' => 'i-English (i-Palau)',
+ 'en_RO' => 'i-English (i-Romania)',
'en_RW' => 'i-English (i-Rwanda)',
'en_SB' => 'i-English (i-Solomon Islands)',
'en_SC' => 'i-English (i-Seychelles)',
@@ -184,6 +194,7 @@
'en_SG' => 'i-English (i-Singapore)',
'en_SH' => 'i-English (i-St. Helena)',
'en_SI' => 'i-English (i-Slovenia)',
+ 'en_SK' => 'i-English (i-Slovakia)',
'en_SL' => 'i-English (i-Sierra Leone)',
'en_SS' => 'i-English (i-South Sudan)',
'en_SX' => 'i-English (i-Sint Maarten)',
diff --git a/src/Symfony/Component/Intl/Resources/data/regions/meta.php b/src/Symfony/Component/Intl/Resources/data/regions/meta.php
index 8548a28f123a2..e0a99ccb7f5a8 100644
--- a/src/Symfony/Component/Intl/Resources/data/regions/meta.php
+++ b/src/Symfony/Component/Intl/Resources/data/regions/meta.php
@@ -1,14 +1,5 @@
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
return [
'Regions' => [
'AD',
@@ -764,7 +755,6 @@
'ZWE' => 'ZW',
],
'Alpha2ToNumeric' => [
- 'AA' => '958',
'AD' => '020',
'AE' => '784',
'AF' => '004',
@@ -952,18 +942,6 @@
'PW' => '585',
'PY' => '600',
'QA' => '634',
- 'QM' => '959',
- 'QN' => '960',
- 'QP' => '962',
- 'QQ' => '963',
- 'QR' => '964',
- 'QS' => '965',
- 'QT' => '966',
- 'QV' => '968',
- 'QW' => '969',
- 'QX' => '970',
- 'QY' => '971',
- 'QZ' => '972',
'RE' => '638',
'RO' => '642',
'RS' => '688',
@@ -1021,29 +999,6 @@
'VU' => '548',
'WF' => '876',
'WS' => '882',
- 'XC' => '975',
- 'XD' => '976',
- 'XE' => '977',
- 'XF' => '978',
- 'XG' => '979',
- 'XH' => '980',
- 'XI' => '981',
- 'XJ' => '982',
- 'XL' => '984',
- 'XM' => '985',
- 'XN' => '986',
- 'XO' => '987',
- 'XP' => '988',
- 'XQ' => '989',
- 'XR' => '990',
- 'XS' => '991',
- 'XT' => '992',
- 'XU' => '993',
- 'XV' => '994',
- 'XW' => '995',
- 'XX' => '996',
- 'XY' => '997',
- 'XZ' => '998',
'YE' => '887',
'YT' => '175',
'ZA' => '710',
@@ -1051,7 +1006,6 @@
'ZW' => '716',
],
'NumericToAlpha2' => [
- '_958' => 'AA',
'_020' => 'AD',
'_784' => 'AE',
'_004' => 'AF',
@@ -1239,18 +1193,6 @@
'_585' => 'PW',
'_600' => 'PY',
'_634' => 'QA',
- '_959' => 'QM',
- '_960' => 'QN',
- '_962' => 'QP',
- '_963' => 'QQ',
- '_964' => 'QR',
- '_965' => 'QS',
- '_966' => 'QT',
- '_968' => 'QV',
- '_969' => 'QW',
- '_970' => 'QX',
- '_971' => 'QY',
- '_972' => 'QZ',
'_638' => 'RE',
'_642' => 'RO',
'_688' => 'RS',
@@ -1308,29 +1250,6 @@
'_548' => 'VU',
'_876' => 'WF',
'_882' => 'WS',
- '_975' => 'XC',
- '_976' => 'XD',
- '_977' => 'XE',
- '_978' => 'XF',
- '_979' => 'XG',
- '_980' => 'XH',
- '_981' => 'XI',
- '_982' => 'XJ',
- '_984' => 'XL',
- '_985' => 'XM',
- '_986' => 'XN',
- '_987' => 'XO',
- '_988' => 'XP',
- '_989' => 'XQ',
- '_990' => 'XR',
- '_991' => 'XS',
- '_992' => 'XT',
- '_993' => 'XU',
- '_994' => 'XV',
- '_995' => 'XW',
- '_996' => 'XX',
- '_997' => 'XY',
- '_998' => 'XZ',
'_887' => 'YE',
'_175' => 'YT',
'_710' => 'ZA',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/bs.php b/src/Symfony/Component/Intl/Resources/data/timezones/bs.php
index 98230260811e7..e1b2d09fa0a74 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/bs.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/bs.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'Sjevernoameričko istočno vrijeme (Nassau)',
'America/New_York' => 'Sjevernoameričko istočno vrijeme (New York)',
'America/Nome' => 'Aljaskansko vrijeme (Nome)',
- 'America/Noronha' => 'Vrijeme na ostrvu Fernando di Noronja (Noronha)',
+ 'America/Noronha' => 'Vrijeme na ostrvu Fernando di Noronja (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Sjevernoameričko centralno vrijeme (Beulah, Sjeverna Dakota)',
'America/North_Dakota/Center' => 'Sjevernoameričko centralno vrijeme (Center, Sjeverna Dakota)',
'America/North_Dakota/New_Salem' => 'Sjevernoameričko centralno vrijeme (New Salem, Sjeverna Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/cs.php b/src/Symfony/Component/Intl/Resources/data/timezones/cs.php
index 42e7cdacb1b13..7968b4e96125c 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/cs.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/cs.php
@@ -199,7 +199,7 @@
'America/Yakutat' => 'aljašský čas (Yakutat)',
'Antarctica/Casey' => 'západoaustralský čas (Casey)',
'Antarctica/Davis' => 'čas Davisovy stanice',
- 'Antarctica/DumontDUrville' => 'čas stanice Dumonta d’Urvilla (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'čas stanice Dumonta d’Urvilla (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'východoaustralský čas (Macquarie)',
'Antarctica/Mawson' => 'čas Mawsonovy stanice',
'Antarctica/McMurdo' => 'novozélandský čas (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/dz.php b/src/Symfony/Component/Intl/Resources/data/timezones/dz.php
index b5b341308b64d..58ff2f6405d79 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/dz.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/dz.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'བྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཆུ་ཚོད། (Nassau་)',
'America/New_York' => 'བྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཆུ་ཚོད། (New York་)',
'America/Nome' => 'ཨ་ལསི་ཀ་ཆུ་ཚོད། (Nome་)',
- 'America/Noronha' => 'ཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཆུ་ཚོད། (Noronha་)',
+ 'America/Noronha' => 'ཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཆུ་ཚོད། (Fernando de Noronha་)',
'America/North_Dakota/Beulah' => 'བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཆུ་ཚོད། (Beulah, North Dakota་)',
'America/North_Dakota/Center' => 'བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཆུ་ཚོད། (Center, North Dakota་)',
'America/North_Dakota/New_Salem' => 'བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཆུ་ཚོད། (New Salem, North Dakota་)',
@@ -199,7 +199,7 @@
'America/Yakutat' => 'ཨ་ལསི་ཀ་ཆུ་ཚོད། (ཡ་ཀུ་ཏཏ་)',
'Antarctica/Casey' => 'ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད། (Casey་)',
'Antarctica/Davis' => 'འཛམ་གླིང་ལྷོ་མཐའི་ཁྱགས་གླིང་ཆུ་ཚོད།། (ཌེ་ཝིས།་)',
- 'Antarctica/DumontDUrville' => 'འཛམ་གླིང་ལྷོ་མཐའི་ཁྱགས་གླིང་ཆུ་ཚོད།། (Dumont d’Urville་)',
+ 'Antarctica/DumontDUrville' => 'འཛམ་གླིང་ལྷོ་མཐའི་ཁྱགས་གླིང་ཆུ་ཚོད།། (Dumont-d’Urville་)',
'Antarctica/Macquarie' => 'ཤར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད། (Macquarie་)',
'Antarctica/Mawson' => 'འཛམ་གླིང་ལྷོ་མཐའི་ཁྱགས་གླིང་ཆུ་ཚོད།། (མའུ་སཱོན་)',
'Antarctica/McMurdo' => 'ནིའུ་ཛི་ལེནཌ་ཆུ་ཚོད། (McMurdo་)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/en.php b/src/Symfony/Component/Intl/Resources/data/timezones/en.php
index 06b0de9923d50..ac0c1da56977f 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/en.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/en.php
@@ -197,10 +197,10 @@
'America/Whitehorse' => 'Yukon Time (Whitehorse)',
'America/Winnipeg' => 'Central Time (Winnipeg)',
'America/Yakutat' => 'Alaska Time (Yakutat)',
- 'Antarctica/Casey' => 'Western Australia Time (Casey)',
+ 'Antarctica/Casey' => 'Australian Western Time (Casey)',
'Antarctica/Davis' => 'Davis Time',
- 'Antarctica/DumontDUrville' => 'Dumont-d’Urville Time',
- 'Antarctica/Macquarie' => 'Eastern Australia Time (Macquarie)',
+ 'Antarctica/DumontDUrville' => 'Dumont d’Urville Time',
+ 'Antarctica/Macquarie' => 'Australian Eastern Time (Macquarie Island)',
'Antarctica/Mawson' => 'Mawson Time',
'Antarctica/McMurdo' => 'New Zealand Time (McMurdo)',
'Antarctica/Palmer' => 'Chile Time (Palmer)',
@@ -224,13 +224,13 @@
'Asia/Barnaul' => 'Russia Time (Barnaul)',
'Asia/Beirut' => 'Eastern European Time (Beirut)',
'Asia/Bishkek' => 'Kyrgyzstan Time (Bishkek)',
- 'Asia/Brunei' => 'Brunei Darussalam Time',
+ 'Asia/Brunei' => 'Brunei Time',
'Asia/Calcutta' => 'India Standard Time (Kolkata)',
'Asia/Chita' => 'Yakutsk Time (Chita)',
'Asia/Colombo' => 'India Standard Time (Colombo)',
'Asia/Damascus' => 'Eastern European Time (Damascus)',
'Asia/Dhaka' => 'Bangladesh Time (Dhaka)',
- 'Asia/Dili' => 'East Timor Time (Dili)',
+ 'Asia/Dili' => 'Timor-Leste Time (Dili)',
'Asia/Dubai' => 'Gulf Standard Time (Dubai)',
'Asia/Dushanbe' => 'Tajikistan Time (Dushanbe)',
'Asia/Famagusta' => 'Eastern European Time (Famagusta)',
@@ -243,7 +243,7 @@
'Asia/Jayapura' => 'Eastern Indonesia Time (Jayapura)',
'Asia/Jerusalem' => 'Israel Time (Jerusalem)',
'Asia/Kabul' => 'Afghanistan Time (Kabul)',
- 'Asia/Kamchatka' => 'Petropavlovsk-Kamchatski Time (Kamchatka)',
+ 'Asia/Kamchatka' => 'Kamchatka Time',
'Asia/Karachi' => 'Pakistan Time (Karachi)',
'Asia/Katmandu' => 'Nepal Time (Kathmandu)',
'Asia/Khandyga' => 'Yakutsk Time (Khandyga)',
@@ -276,7 +276,7 @@
'Asia/Shanghai' => 'China Time (Shanghai)',
'Asia/Singapore' => 'Singapore Standard Time',
'Asia/Srednekolymsk' => 'Magadan Time (Srednekolymsk)',
- 'Asia/Taipei' => 'Taipei Time',
+ 'Asia/Taipei' => 'Taiwan Time (Taipei)',
'Asia/Tashkent' => 'Uzbekistan Time (Tashkent)',
'Asia/Tbilisi' => 'Georgia Time (Tbilisi)',
'Asia/Tehran' => 'Iran Time (Tehran)',
@@ -301,17 +301,17 @@
'Atlantic/South_Georgia' => 'South Georgia Time',
'Atlantic/St_Helena' => 'Greenwich Mean Time (St. Helena)',
'Atlantic/Stanley' => 'Falkland Islands Time (Stanley)',
- 'Australia/Adelaide' => 'Central Australia Time (Adelaide)',
- 'Australia/Brisbane' => 'Eastern Australia Time (Brisbane)',
- 'Australia/Broken_Hill' => 'Central Australia Time (Broken Hill)',
- 'Australia/Darwin' => 'Central Australia Time (Darwin)',
+ 'Australia/Adelaide' => 'Australian Central Time (Adelaide)',
+ 'Australia/Brisbane' => 'Australian Eastern Time (Brisbane)',
+ 'Australia/Broken_Hill' => 'Australian Central Time (Broken Hill)',
+ 'Australia/Darwin' => 'Australian Central Time (Darwin)',
'Australia/Eucla' => 'Australian Central Western Time (Eucla)',
- 'Australia/Hobart' => 'Eastern Australia Time (Hobart)',
- 'Australia/Lindeman' => 'Eastern Australia Time (Lindeman)',
- 'Australia/Lord_Howe' => 'Lord Howe Time',
- 'Australia/Melbourne' => 'Eastern Australia Time (Melbourne)',
- 'Australia/Perth' => 'Western Australia Time (Perth)',
- 'Australia/Sydney' => 'Eastern Australia Time (Sydney)',
+ 'Australia/Hobart' => 'Australian Eastern Time (Hobart)',
+ 'Australia/Lindeman' => 'Australian Eastern Time (Lindeman)',
+ 'Australia/Lord_Howe' => 'Lord Howe Time (Lord Howe Island)',
+ 'Australia/Melbourne' => 'Australian Eastern Time (Melbourne)',
+ 'Australia/Perth' => 'Australian Western Time (Perth)',
+ 'Australia/Sydney' => 'Australian Eastern Time (Sydney)',
'Etc/GMT' => 'Greenwich Mean Time',
'Etc/UTC' => 'Coordinated Universal Time',
'Europe/Amsterdam' => 'Central European Time (Amsterdam)',
@@ -383,7 +383,7 @@
'Indian/Mauritius' => 'Mauritius Time',
'Indian/Mayotte' => 'East Africa Time (Mayotte)',
'Indian/Reunion' => 'Réunion Time',
- 'Pacific/Apia' => 'Apia Time',
+ 'Pacific/Apia' => 'Samoa Time (Apia)',
'Pacific/Auckland' => 'New Zealand Time (Auckland)',
'Pacific/Bougainville' => 'Papua New Guinea Time (Bougainville)',
'Pacific/Chatham' => 'Chatham Time',
@@ -403,15 +403,15 @@
'Pacific/Kwajalein' => 'Marshall Islands Time (Kwajalein)',
'Pacific/Majuro' => 'Marshall Islands Time (Majuro)',
'Pacific/Marquesas' => 'Marquesas Time',
- 'Pacific/Midway' => 'Samoa Time (Midway)',
+ 'Pacific/Midway' => 'American Samoa Time (Midway)',
'Pacific/Nauru' => 'Nauru Time',
'Pacific/Niue' => 'Niue Time',
'Pacific/Norfolk' => 'Norfolk Island Time',
'Pacific/Noumea' => 'New Caledonia Time (Noumea)',
- 'Pacific/Pago_Pago' => 'Samoa Time (Pago Pago)',
+ 'Pacific/Pago_Pago' => 'American Samoa Time (Pago Pago)',
'Pacific/Palau' => 'Palau Time',
'Pacific/Pitcairn' => 'Pitcairn Time',
- 'Pacific/Ponape' => 'Ponape Time (Pohnpei)',
+ 'Pacific/Ponape' => 'Pohnpei Time',
'Pacific/Port_Moresby' => 'Papua New Guinea Time (Port Moresby)',
'Pacific/Rarotonga' => 'Cook Islands Time (Rarotonga)',
'Pacific/Saipan' => 'Chamorro Standard Time (Saipan)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/en_AU.php b/src/Symfony/Component/Intl/Resources/data/timezones/en_AU.php
deleted file mode 100644
index 0e7100bbc9736..0000000000000
--- a/src/Symfony/Component/Intl/Resources/data/timezones/en_AU.php
+++ /dev/null
@@ -1,37 +0,0 @@
- [
- 'Africa/Addis_Ababa' => 'Eastern Africa Time (Addis Ababa)',
- 'Africa/Asmera' => 'Eastern Africa Time (Asmara)',
- 'Africa/Dar_es_Salaam' => 'Eastern Africa Time (Dar es Salaam)',
- 'Africa/Djibouti' => 'Eastern Africa Time (Djibouti)',
- 'Africa/Kampala' => 'Eastern Africa Time (Kampala)',
- 'Africa/Mogadishu' => 'Eastern Africa Time (Mogadishu)',
- 'Africa/Nairobi' => 'Eastern Africa Time (Nairobi)',
- 'Antarctica/Casey' => 'Australian Western Time (Casey)',
- 'Antarctica/Macquarie' => 'Australian Eastern Time (Macquarie)',
- 'Asia/Aden' => 'Arabia Time (Aden)',
- 'Asia/Baghdad' => 'Arabia Time (Baghdad)',
- 'Asia/Bahrain' => 'Arabia Time (Bahrain)',
- 'Asia/Kuwait' => 'Arabia Time (Kuwait)',
- 'Asia/Pyongyang' => 'Korea Time (Pyongyang)',
- 'Asia/Qatar' => 'Arabia Time (Qatar)',
- 'Asia/Riyadh' => 'Arabia Time (Riyadh)',
- 'Asia/Seoul' => 'Korea Time (Seoul)',
- 'Australia/Adelaide' => 'Australian Central Time (Adelaide)',
- 'Australia/Brisbane' => 'Australian Eastern Time (Brisbane)',
- 'Australia/Broken_Hill' => 'Australian Central Time (Broken Hill)',
- 'Australia/Darwin' => 'Australian Central Time (Darwin)',
- 'Australia/Hobart' => 'Australian Eastern Time (Hobart)',
- 'Australia/Lindeman' => 'Australian Eastern Time (Lindeman)',
- 'Australia/Melbourne' => 'Australian Eastern Time (Melbourne)',
- 'Australia/Perth' => 'Australian Western Time (Perth)',
- 'Australia/Sydney' => 'Australian Eastern Time (Sydney)',
- 'Indian/Antananarivo' => 'Eastern Africa Time (Antananarivo)',
- 'Indian/Comoro' => 'Eastern Africa Time (Comoro)',
- 'Indian/Mayotte' => 'Eastern Africa Time (Mayotte)',
- 'Pacific/Rarotonga' => 'Cook Island Time (Rarotonga)',
- ],
- 'Meta' => [],
-];
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/eo.php b/src/Symfony/Component/Intl/Resources/data/timezones/eo.php
index dddbcb1144b92..785dfb2c5b82a 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/eo.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/eo.php
@@ -148,7 +148,7 @@
'America/Nassau' => 'tempo de Bahamoj (Nassau)',
'America/New_York' => 'tempo de Usono (New York)',
'America/Nome' => 'tempo de Usono (Nome)',
- 'America/Noronha' => 'tempo de Brazilo (Noronha)',
+ 'America/Noronha' => 'tempo de Brazilo (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'tempo de Usono (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'tempo de Usono (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'tempo de Usono (New Salem, North Dakota)',
@@ -189,7 +189,7 @@
'America/Yakutat' => 'tempo de Usono (Yakutat)',
'Antarctica/Casey' => 'tempo de Antarkto (Casey)',
'Antarctica/Davis' => 'tempo de Antarkto (Davis)',
- 'Antarctica/DumontDUrville' => 'tempo de Antarkto (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'tempo de Antarkto (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'tempo de Aŭstralio (Macquarie)',
'Antarctica/Mawson' => 'tempo de Antarkto (Mawson)',
'Antarctica/McMurdo' => 'tempo de Antarkto (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/ie.php b/src/Symfony/Component/Intl/Resources/data/timezones/ie.php
index a9d5fc9c63b56..997deca0a3e54 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/ie.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/ie.php
@@ -29,7 +29,7 @@
'America/Puerto_Rico' => 'témpor de Porto-Rico (Puerto Rico)',
'Antarctica/Casey' => 'témpor de Antarctica (Casey)',
'Antarctica/Davis' => 'témpor de Antarctica (Davis)',
- 'Antarctica/DumontDUrville' => 'témpor de Antarctica (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'témpor de Antarctica (Dumont-d’Urville)',
'Antarctica/Mawson' => 'témpor de Antarctica (Mawson)',
'Antarctica/McMurdo' => 'témpor de Antarctica (McMurdo)',
'Antarctica/Palmer' => 'témpor de Antarctica (Palmer)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/ii.php b/src/Symfony/Component/Intl/Resources/data/timezones/ii.php
index 9ee3121c8b470..f5775723ad907 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/ii.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/ii.php
@@ -58,7 +58,7 @@
'America/Monterrey' => 'ꃀꑭꇬꄮꈉ(Monterrey)',
'America/New_York' => 'ꂰꇩꄮꈉ(New York)',
'America/Nome' => 'ꂰꇩꄮꈉ(Nome)',
- 'America/Noronha' => 'ꀠꑭꄮꈉ(Noronha)',
+ 'America/Noronha' => 'ꀠꑭꄮꈉ(Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'ꂰꇩꄮꈉ(Beulah, North Dakota)',
'America/North_Dakota/Center' => 'ꂰꇩꄮꈉ(Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'ꂰꇩꄮꈉ(New Salem, North Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/ln.php b/src/Symfony/Component/Intl/Resources/data/timezones/ln.php
index 704e2057242f9..4c551a2c37741 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/ln.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/ln.php
@@ -151,7 +151,7 @@
'America/Nassau' => 'Ngonga ya Bahamasɛ (Nassau)',
'America/New_York' => 'Ngonga ya Ameriki (New York)',
'America/Nome' => 'Ngonga ya Ameriki (Nome)',
- 'America/Noronha' => 'Ngonga ya Brezílɛ (Noronha)',
+ 'America/Noronha' => 'Ngonga ya Brezílɛ (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Ngonga ya Ameriki (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'Ngonga ya Ameriki (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'Ngonga ya Ameriki (New Salem, North Dakota)',
@@ -192,7 +192,7 @@
'America/Yakutat' => 'Ngonga ya Ameriki (Yakutat)',
'Antarctica/Casey' => 'Ngonga ya Antarctique (Casey)',
'Antarctica/Davis' => 'Ngonga ya Antarctique (Davis)',
- 'Antarctica/DumontDUrville' => 'Ngonga ya Antarctique (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'Ngonga ya Antarctique (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'Ngonga ya Ositáli (Macquarie)',
'Antarctica/Mawson' => 'Ngonga ya Antarctique (Mawson)',
'Antarctica/McMurdo' => 'Ngonga ya Antarctique (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/mt.php b/src/Symfony/Component/Intl/Resources/data/timezones/mt.php
index ed4c78b1cbc72..e5723e6a3457f 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/mt.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/mt.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'Ħin ta’ il-Bahamas (Nassau)',
'America/New_York' => 'Ħin ta’ l-Istati Uniti (New York)',
'America/Nome' => 'Ħin ta’ l-Istati Uniti (Nome)',
- 'America/Noronha' => 'Ħin ta’ Il-Brażil (Noronha)',
+ 'America/Noronha' => 'Ħin ta’ Il-Brażil (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Ħin ta’ l-Istati Uniti (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'Ħin ta’ l-Istati Uniti (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'Ħin ta’ l-Istati Uniti (New Salem, North Dakota)',
@@ -199,7 +199,7 @@
'America/Yakutat' => 'Ħin ta’ l-Istati Uniti (Yakutat)',
'Antarctica/Casey' => 'Ħin ta’ l-Antartika (Casey)',
'Antarctica/Davis' => 'Ħin ta’ l-Antartika (Davis)',
- 'Antarctica/DumontDUrville' => 'Ħin ta’ l-Antartika (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'Ħin ta’ l-Antartika (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'Ħin ta’ l-Awstralja (Macquarie)',
'Antarctica/Mawson' => 'Ħin ta’ l-Antartika (Mawson)',
'Antarctica/McMurdo' => 'Ħin ta’ l-Antartika (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/os.php b/src/Symfony/Component/Intl/Resources/data/timezones/os.php
index 8efcb75b8efa8..b386b8ae54f57 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/os.php
+++ b/src/Symfony/Component/Intl/Resources/data/t
10000
imezones/os.php
@@ -55,7 +55,7 @@
'America/Metlakatla' => 'АИШ рӕстӕг (Metlakatla)',
'America/New_York' => 'АИШ рӕстӕг (New York)',
'America/Nome' => 'АИШ рӕстӕг (Nome)',
- 'America/Noronha' => 'Бразили рӕстӕг (Noronha)',
+ 'America/Noronha' => 'Бразили рӕстӕг (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'АИШ рӕстӕг (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'АИШ рӕстӕг (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'АИШ рӕстӕг (New Salem, North Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/rm.php b/src/Symfony/Component/Intl/Resources/data/timezones/rm.php
index 014b1a5ed9253..02e4c9e321282 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/rm.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/rm.php
@@ -199,7 +199,7 @@
'America/Yakutat' => 'temp: Stadis Unids da l’America (Yakutat)',
'Antarctica/Casey' => 'temp: Antarctica (Casey)',
'Antarctica/Davis' => 'temp: Antarctica (Davis)',
- 'Antarctica/DumontDUrville' => 'temp: Antarctica (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'temp: Antarctica (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'temp: Australia (Macquarie)',
'Antarctica/Mawson' => 'temp: Antarctica (Mawson)',
'Antarctica/McMurdo' => 'temp: Antarctica (Mac Murdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/sa.php b/src/Symfony/Component/Intl/Resources/data/timezones/sa.php
index edc6ffd16ce51..e0c6d8e9d2b13 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/sa.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/sa.php
@@ -98,7 +98,7 @@
'America/Nassau' => 'उत्तर अमेरिका: पौर्व समयः (Nassau)',
'America/New_York' => 'उत्तर अमेरिका: पौर्व समयः (New York)',
'America/Nome' => 'संयुक्त राज्य: समय: (Nome)',
- 'America/Noronha' => 'ब्राजील समय: (Noronha)',
+ 'America/Noronha' => 'ब्राजील समय: (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'उत्तर अमेरिका: मध्य समयः (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'उत्तर अमेरिका: मध्य समयः (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'उत्तर अमेरिका: मध्य समयः (New Salem, North Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/se.php b/src/Symfony/Component/Intl/Resources/data/timezones/se.php
index 4befb16a6bcf6..e3d01049ea25d 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/se.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/se.php
@@ -156,7 +156,7 @@
'America/Nassau' => 'Nassau (Bahamas áigi)',
'America/New_York' => 'New York (Amerihká ovttastuvvan stáhtat áigi)',
'America/Nome' => 'Nome (Amerihká ovttastuvvan stáhtat áigi)',
- 'America/Noronha' => 'Noronha (Brasil áigi)',
+ 'America/Noronha' => 'Fernando de Noronha (Brasil áigi)',
'America/North_Dakota/Beulah' => 'Beulah, North Dakota (Amerihká ovttastuvvan stáhtat áigi)',
'America/North_Dakota/Center' => 'Center, North Dakota (Amerihká ovttastuvvan stáhtat áigi)',
'America/North_Dakota/New_Salem' => 'New Salem, North Dakota (Amerihká ovttastuvvan stáhtat áigi)',
@@ -198,7 +198,7 @@
'America/Yakutat' => 'Yakutat (Amerihká ovttastuvvan stáhtat áigi)',
'Antarctica/Casey' => 'Casey (Antárktis áigi)',
'Antarctica/Davis' => 'Davis (Antárktis áigi)',
- 'Antarctica/DumontDUrville' => 'Dumont d’Urville (Antárktis áigi)',
+ 'Antarctica/DumontDUrville' => 'Dumont-d’Urville (Antárktis áigi)',
'Antarctica/Macquarie' => 'Macquarie (Austrália áigi)',
'Antarctica/Mawson' => 'Mawson (Antárktis áigi)',
'Antarctica/McMurdo' => 'McMurdo (Antárktis áigi)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/sk.php b/src/Symfony/Component/Intl/Resources/data/timezones/sk.php
index 425959956c8bc..283d5df96951f 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/sk.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/sk.php
@@ -199,7 +199,7 @@
'America/Yakutat' => 'aljašský čas (Yakutat)',
'Antarctica/Casey' => 'západoaustrálsky čas (Casey)',
'Antarctica/Davis' => 'čas Davisovej stanice',
- 'Antarctica/DumontDUrville' => 'čas stanice Dumonta d’Urvillea (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'čas stanice Dumonta d’Urvillea (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'východoaustrálsky čas (Macquarie)',
'Antarctica/Mawson' => 'čas Mawsonovej stanice',
'Antarctica/McMurdo' => 'novozélandský čas (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/sl.php b/src/Symfony/Component/Intl/Resources/data/timezones/sl.php
index cf34c78aaa283..573adbfa6eb43 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/sl.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/sl.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'Vzhodni čas (Nassau)',
'America/New_York' => 'Vzhodni čas (New York)',
'America/Nome' => 'Aljaški čas (Nome)',
- 'America/Noronha' => 'Fernando de Noronški čas (Noronha)',
+ 'America/Noronha' => 'Fernando de Noronški čas (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Centralni čas (Beulah, Severna Dakota)',
'America/North_Dakota/Center' => 'Centralni čas (Center, Severna Dakota)',
'America/North_Dakota/New_Salem' => 'Centralni čas (New Salem, Severna Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/so.php b/src/Symfony/Component/Intl/Resources/data/timezones/so.php
index 7808aa8f5dc50..87fe73b3c1e86 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/so.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/so.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'Waqtiga Bariga ee Waqooyiga Ameerika (Nasaaw)',
'America/New_York' => 'Waqtiga Bariga ee Waqooyiga Ameerika (Niyuu Yook)',
'America/Nome' => 'Waqtiga Alaska (Noom)',
- 'America/Noronha' => 'Waqtiga Farnaando de Noronha',
+ 'America/Noronha' => 'Waqtiga Farnaando de Noronha (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Waqtiga Bartamaha Waqooyiga Ameerika (Biyuulah, Waqooyiga Dakoota)',
'America/North_Dakota/Center' => 'Waqtiga Bartamaha Waqooyiga Ameerika (Bartamaha, Waqooyiga Dakoota)',
'America/North_Dakota/New_Salem' => 'Waqtiga Bartamaha Waqooyiga Ameerika (Niyuu Saalem, Waqooyiga Dakoota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/su.php b/src/Symfony/Component/Intl/Resources/data/timezones/su.php
index 23346ff65080c..18e47ad78398b 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/su.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/su.php
@@ -99,7 +99,7 @@
'America/Nassau' => 'Waktu Wétan (Nassau)',
'America/New_York' => 'Waktu Wétan (New York)',
'America/Nome' => 'Amérika Sarikat (Nome)',
- 'America/Noronha' => 'Brasil (Noronha)',
+ 'America/Noronha' => 'Brasil (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Waktu Tengah (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'Waktu Tengah (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'Waktu Tengah (New Salem, North Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/tk.php b/src/Symfony/Component/Intl/Resources/data/timezones/tk.php
index 45aaab71a7313..8996a15e9666b 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/tk.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/tk.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'Demirgazyk Amerika gündogar wagty (Nassau)',
'America/New_York' => 'Demirgazyk Amerika gündogar wagty (Nýu-Ýork)',
'America/Nome' => 'Alýaska wagty (Nom)',
- 'America/Noronha' => 'Fernandu-di-Noronýa wagty (Noronha)',
+ 'America/Noronha' => 'Fernandu-di-Noronýa wagty (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'Merkezi Amerika (Boýla, Demirgazyk Dakota)',
'America/North_Dakota/Center' => 'Merkezi Amerika (Sentr, Demirgazyk Dakota)',
'America/North_Dakota/New_Salem' => 'Merkezi Amerika (Nýu-Salem, Demirgazyk Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/to.php b/src/Symfony/Component/Intl/Resources/data/timezones/to.php
index 85eb55b63dd2c..6668f0a3cc1b1 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/to.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/to.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'houa fakaʻamelika-tokelau hahake (Nassau)',
'America/New_York' => 'houa fakaʻamelika-tokelau hahake (Niu ʻIoke)',
'America/Nome' => 'houa fakaʻalasika (Nome)',
- 'America/Noronha' => 'houa fakafēnanito-te-nolōnia (Noronha)',
+ 'America/Noronha' => 'houa fakafēnanito-te-nolōnia (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'houa fakaʻamelika-tokelau loto (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'houa fakaʻamelika-tokelau loto (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'houa fakaʻamelika-tokelau loto (New Salem, North Dakota)',
@@ -199,7 +199,7 @@
'America/Yakutat' => 'houa fakaʻalasika (Yakutat)',
'Antarctica/Casey' => 'houa fakaʻaositelēlia-hihifo (Casey)',
'Antarctica/Davis' => 'houa fakatavisi (Davis)',
- 'Antarctica/DumontDUrville' => 'houa fakatūmoni-tūvile (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'houa fakatūmoni-tūvile (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'houa fakaʻaositelēlia-hahake (Macquarie)',
'Antarctica/Mawson' => 'houa fakamausoni (Mawson)',
'Antarctica/McMurdo' => 'houa fakanuʻusila (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/ug.php b/src/Symfony/Component/Intl/Resources/data/timezones/ug.php
index dcd0ef31b8a96..385cc4218f809 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/ug.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/ug.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'شەرقىي قىسىم ۋاقتى (Nassau)',
'America/New_York' => 'شەرقىي قىسىم ۋاقتى (New York)',
'America/Nome' => 'ئالياسكا ۋاقتى (Nome)',
- 'America/Noronha' => 'فېرناندو-نورونخا ۋاقتى (Noronha)',
+ 'America/Noronha' => 'فېرناندو-نورونخا ۋاقتى (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'ئوتتۇرا قىسىم ۋاقتى (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'ئوتتۇرا قىسىم ۋاقتى (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'ئوتتۇرا قىسىم ۋاقتى (New Salem, North Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/yi.php b/src/Symfony/Component/Intl/Resources/data/timezones/yi.php
index 2fc72448df90f..fba6712d58eaa 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/yi.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/yi.php
@@ -148,7 +148,7 @@
'America/Nassau' => 'באַהאַמאַס (Nassau)',
'America/New_York' => 'פֿאַראייניגטע שטאַטן (New York)',
'America/Nome' => 'פֿאַראייניגטע שטאַטן (Nome)',
- 'America/Noronha' => 'בראַזיל (Noronha)',
+ 'America/Noronha' => 'בראַזיל (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'פֿאַראייניגטע שטאַטן (Beulah, North Dakota)',
'America/North_Dakota/Center' => 'פֿאַראייניגטע שטאַטן (Center, North Dakota)',
'America/North_Dakota/New_Salem' => 'פֿאַראייניגטע שטאַטן (New Salem, North Dakota)',
@@ -184,7 +184,7 @@
'America/Yakutat' => 'פֿאַראייניגטע שטאַטן (Yakutat)',
'Antarctica/Casey' => 'אַנטאַרקטיקע (Casey)',
'Antarctica/Davis' => 'אַנטאַרקטיקע (Davis)',
- 'Antarctica/DumontDUrville' => 'אַנטאַרקטיקע (Dumont d’Urville)',
+ 'Antarctica/DumontDUrville' => 'אַנטאַרקטיקע (Dumont-d’Urville)',
'Antarctica/Macquarie' => 'אויסטראַליע (Macquarie)',
'Antarctica/Mawson' => 'אַנטאַרקטיקע (Mawson)',
'Antarctica/McMurdo' => 'אַנטאַרקטיקע (McMurdo)',
diff --git a/src/Symfony/Component/Intl/Resources/data/timezones/yo.php b/src/Symfony/Component/Intl/Resources/data/timezones/yo.php
index 2af1dedd0c379..84ff6f3d609b0 100644
--- a/src/Symfony/Component/Intl/Resources/data/timezones/yo.php
+++ b/src/Symfony/Component/Intl/Resources/data/timezones/yo.php
@@ -157,7 +157,7 @@
'America/Nassau' => 'Àkókò ìhà ìlà oòrùn (ìlú Nasaò)',
'America/New_York' => 'Àkókò ìhà ìlà oòrùn (ìlú New York)',
'America/Nome' => 'Àkókò Alásíkà (ìlú Nomi)',
- 'America/Noronha' => 'Aago Fenando de Norona (Noronha)',
+ 'America/Noronha' => 'Aago Fenando de Norona (Fernando de Noronha)',
'America/North_Dakota/Beulah' => 'àkókò àárín gbùngbùn (ìlú Beulà ní North Dakota)',
'America/North_Dakota/Center' => 'àkókò àárín gbùngbùn (ìlú Senta North Dakota)',
'America/North_Dakota/New_Salem' => 'àkókò àárín gbùngbùn (ìlú New Salem ni North Dakota)',
diff --git a/src/Symfony/Component/Intl/Resources/data/version.txt b/src/Symfony/Component/Intl/Resources/data/version.txt
index 9747bc6ec3066..1ed6f92dc764c 100644
--- a/src/Symfony/Component/Intl/Resources/data/version.txt
+++ b/src/Symfony/Component/Intl/Resources/data/version.txt
@@ -1 +1 @@
-76.1
+77.1
diff --git a/src/Symfony/Component/Intl/Tests/CountriesTest.php b/src/Symfony/Component/Intl/Tests/CountriesTest.php
index 7b921036b2a00..01f0f76f2e40a 100644
--- a/src/Symfony/Component/Intl/Tests/CountriesTest.php
+++ b/src/Symfony/Component/Intl/Tests/CountriesTest.php
@@ -527,7 +527,6 @@ class CountriesTest extends ResourceBundleTestCase
];
private const ALPHA2_TO_NUMERIC = [
- 'AA' => '958',
'AD' => '020',
'AE' => '784',
'AF' => '004',
@@ -715,18 +714,6 @@ class CountriesTest extends ResourceBundleTestCase
'PW' => '585',
'PY' => '600',
'QA' => '634',
- 'QM' => '959',
- 'QN' => '960',
- 'QP' => '962',
- 'QQ' => '963',
- 'QR' => '964',
- 'QS' => '965',
- 'QT' => '966',
- 'QV' => '968',
- 'QW' => '969',
- 'QX' => '970',
- 'QY' => '971',
- 'QZ' => '972',
'RE' => '638',
'RO' => '642',
'RS' => '688',
@@ -784,29 +771,6 @@ class CountriesTest extends ResourceBundleTestCase
'VU' => '548',
'WF' => '876',
'WS' => '882',
- 'XC' => '975',
- 'XD' => '976',
- 'XE' => '977',
- 'XF' => '978',
- 'XG' => '979',
- 'XH' => '980',
- 'XI' => '981',
- 'XJ' => '982',
- 'XL' => '984',
- 'XM' => '985',
- 'XN' => '986',
- 'XO' => '987',
- 'XP' => '988',
- 'XQ' => '989',
- 'XR' => '990',
- 'XS' => '991',
- 'XT' => '992',
- 'XU' => '993',
- 'XV' => '994',
- 'XW' => '995',
- 'XX' => '996',
- 'XY' => '997',
- 'XZ' => '998',
'YE' => '887',
'YT' => '175',
'ZA' => '710',
@@ -814,6 +778,19 @@ class CountriesTest extends ResourceBundleTestCase
'ZW' => '716',
];
+ public function testAllGettersGenerateTheSameDataSetCount()
+ {
+ $alpha2Count = count(Countries::getCountryCodes());
+ $alpha3Count = count(Countries::getAlpha3Codes());
+ $numericCodesCount = count(Countries::getNumericCodes());
+ $namesCount = count(Countries::getNames());
+
+ // we base all on Name count since it is the first to be generated
+ $this->assertEquals($namesCount, $alpha2Count, 'Alpha 2 count does not match');
+ $this->assertEquals($namesCount, $alpha3Count, 'Alpha 3 count does not match');
+ $this->assertEquals($namesCount, $numericCodesCount, 'Numeric codes count does not match');
+ }
+
public function testGetCountryCodes()
{
$this->assertSame(self::COUNTRIES, Countries::getCountryCodes());
@@ -992,7 +969,7 @@ public function testGetNumericCode()
public function testNumericCodeExists()
{
$this->assertTrue(Countries::numericCodeExists('250'));
- $this->assertTrue(Countries::numericCodeExists('982'));
+ $this->assertTrue(Countries::numericCodeExists('008'));
$this->assertTrue(Countries::numericCodeExists('716'));
$this->assertTrue(Countries::numericCodeExists('036'));
$this->assertFalse(Countries::numericCodeExists('667'));
diff --git a/src/Symfony/Component/Intl/Tests/LanguagesTest.php b/src/Symfony/Component/Intl/Tests/LanguagesTest.php
index bcd8100490f14..6934a04ab6e3b 100644
--- a/src/Symfony/Component/Intl/Tests/LanguagesTest.php
+++ b/src/Symfony/Component/Intl/Tests/LanguagesTest.php
@@ -35,7 +35,6 @@ class LanguagesTest extends ResourceBundleTestCase
'afh',
'agq',
'ain',
- 'ajp',
'ak',
'akk',
'akz',
@@ -150,7 +149,6 @@ class LanguagesTest extends ResourceBundleTestCase
'csw',
'cu',
'cv',
- 'cwd',
'cy',
'da',
'dak',
@@ -240,7 +238,6 @@ class LanguagesTest extends ResourceBundleTestCase
'hak',
'haw',
'hax',
- 'hdn',
'he',
'hi',
'hif',
@@ -266,7 +263,6 @@ class LanguagesTest extends ResourceBundleTestCase
'ig',
'ii',
'ik',
- 'ike',
'ikt',
'ilo',
'inh',
@@ -451,7 +447,6 @@ class LanguagesTest extends ResourceBundleTestCase
'oj',
'ojb',
'ojc',
- 'ojg',
'ojs',
'ojw',
'oka',
@@ -679,7 +674,6 @@ class LanguagesTest extends ResourceBundleTestCase
'afr',
'agq',
'ain',
- 'ajp',
'aka',
'akk',
'akz',
@@ -797,7 +791,6 @@ class LanguagesTest extends ResourceBundleTestCase
'crs',
'csb',
'csw',
- 'cwd',
'cym',
'dak',
'dan',
@@ -888,7 +881,6 @@ class LanguagesTest extends ResourceBundleTestCase
'haw',
'hax',
'hbs',
- 'hdn',
'heb',
'her',
'hif',
@@ -910,7 +902,6 @@ class LanguagesTest extends ResourceBundleTestCase
'ibo',
'ido',
'iii',
- 'ike',
'ikt',
'iku',
'ile',
@@ -1098,7 +1089,6 @@ class LanguagesTest extends ResourceBundleTestCase
'oci',
'ojb',
'ojc',
- 'ojg',
'oji',
'ojs',
'ojw',
diff --git a/src/Symfony/Component/Intl/Tests/ResourceBundleTestCase.php b/src/Symfony/Component/Intl/Tests/ResourceBundleTestCase.php
index 9fab9c2c221f5..9e2301a8cf966 100644
--- a/src/Symfony/Component/Intl/Tests/ResourceBundleTestCase.php
+++ b/src/Symfony/Component/Intl/Tests/ResourceBundleTestCase.php
@@ -141,30 +141,36 @@ abstract class ResourceBundleTestCase extends TestCase
'en_CM',
'en_CX',
'en_CY',
+ 'en_CZ',
'en_DE',
'en_DG',
'en_DK',
'en_DM',
'en_ER',
+ 'en_ES',
'en_FI',
'en_FJ',
'en_FK',
'en_FM',
+ 'en_FR',
'en_GB',
'en_GD',
'en_GG',
'en_GH',
'en_GI',
'en_GM',
+ 'en_GS',
'en_GU',
'en_GY',
'en_HK',
+ 'en_HU',
'en_ID',
'en_IE',
'en_IL',
'en_IM',
'en_IN',
'en_IO',
+ 'en_IT',
'en_JE',
'en_JM',
'en_KE',
@@ -189,16 +195,20 @@ abstract class ResourceBundleTestCase extends TestCase
'en_NG',
'en_NH',
'en_NL',
+ 'en_NO',
'en_NR',
'en_NU',
'en_NZ',
'en_PG',
'en_PH',
'en_PK',
+ 'en_PL',
'en_PN',
'en_PR',
+ 'en_PT',
'en_PW',
'en_RH',
+ 'en_RO',
'en_RW',
'en_SB',
'en_SC',
@@ -207,6 +217,7 @@ abstract class ResourceBundleTestCase extends TestCase
'en_SG',
'en_SH',
'en_SI',
+ 'en_SK',
'en_SL',
'en_SS',
'en_SX',
diff --git a/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php b/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php
index dc2d5ee39bd06..f042620b71a6b 100644
--- a/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php
+++ b/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php
@@ -18,6 +18,9 @@
use Doctrine\DBAL\Exception\TableNotFoundException;
use Doctrine\DBAL\ParameterType;
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
+use Doctrine\DBAL\Schema\Name\Identifier;
+use Doctrine\DBAL\Schema\Name\UnqualifiedName;
+use Doctrine\DBAL\Schema\PrimaryKeyConstraint;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Tools\DsnParser;
use Symfony\Component\Lock\Exception\InvalidArgumentException;
@@ -214,7 +217,12 @@ public function configureSchema(Schema $schema, \Closure $isSameDatabase): void
$table->addColumn($this->idCol, 'string', ['length' => 64]);
$table->addColumn($this->tokenCol, 'string', ['length' => 44]);
$table->addColumn($this->expirationCol, 'integer', ['unsigned' => true]);
- $table->setPrimaryKey([$this->idCol]);
+
+ if (class_exists(PrimaryKeyConstraint::class)) {
+ $table->addPrimaryKeyConstraint(new PrimaryKeyConstraint(null, [new UnqualifiedName(Identifier::unquoted($this->idCol))], true));
+ } else {
+ $table->setPrimaryKey([$this->idCol]);
+ }
}
/**
diff --git a/src/Symfony/Component/Lock/Store/RedisStore.php b/src/Symfony/Component/Lock/Store/RedisStore.php
index a7bf7fec29de6..3ff1de6fa5171 100644
--- a/src/Symfony/Component/Lock/Store/RedisStore.php
+++ b/src/Symfony/Component/Lock/Store/RedisStore.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\Lock\Store;
+use Predis\Response\Error;
use Predis\Response\ServerException;
use Relay\Relay;
use Symfony\Component\Lock\Exception\InvalidTtlException;
@@ -29,7 +30,7 @@ class RedisStore implements SharedLockStoreInterface
{
use ExpiringStoreTrait;
- private const NO_SCRIPT_ERROR_MESSAGE = 'NOSCRIPT No matching script. Please use EVAL.';
+ private const NO_SCRIPT_ERROR_MESSAGE_PREFIX = 'NOSCRIPT';
private bool $supportTime;
@@ -234,7 +235,7 @@ private function evaluate(string $script, string $resource, array $args): mixed
$this->redis->clearLastError();
$result = $this->redis->evalSha($scriptSha, array_merge([$resource], $args), 1);
- if (self::NO_SCRIPT_ERROR_MESSAGE === $err = $this->redis->getLastError()) {
+ if (null !== ($err = $this->redis->getLastError()) && str_starts_with($err, self::NO_SCRIPT_ERROR_MESSAGE_PREFIX)) {
$this->redis->clearLastError();
if ($this->redis instanceof \RedisCluster) {
@@ -250,10 +251,10 @@ private function evaluate(string $script, string $resource, array $args): mixed
}
$result = $this->redis->evalSha($scriptSha, array_merge([$resource], $args), 1);
+ }
- if (null !== $err = $this->redis->getLastError()) {
- throw new LockStorageException($err);
- }
+ if (null !== $err = $this->redis->getLastError()) {
+ throw new LockStorageException($err);
}
return $result;
@@ -263,7 +264,7 @@ private function evaluate(string $script, string $resource, array $args): mixed
$client = $this->redis->_instance($this->redis->_target($resource));
$client->clearLastError();
$result = $client->evalSha($scriptSha, array_merge([$resource], $args), 1);
- if (self::NO_SCRIPT_ERROR_MESSAGE === $err = $client->getLastError()) {
+ if (null !== ($err = $client->getLastError()) && str_starts_with($err, self::NO_SCRIPT_ERROR_MESSAGE_PREFIX)) {
$client->clearLastError();
$client->script('LOAD', $script);
@@ -273,10 +274,10 @@ private function evaluate(string $script, string $resource, array $args): mixed
}
$result = $client->evalSha($scriptSha, array_merge([$resource], $args), 1);
+ }
- if (null !== $err = $client->getLastError()) {
- throw new LockStorageException($err);
- }
+ if (null !== $err = $client->getLastError()) {
+ throw new LockStorageException($err);
}
return $result;
@@ -285,25 +286,17 @@ private function evaluate(string $script, string $resource, array $args): mixed
\assert($this->redis instanceof \Predis\ClientInterface);
try {
- return $this->redis->evalSha($scriptSha, 1, $resource, ...$args);
- } catch (ServerException $e) {
+ return $this->handlePredisError(fn () => $this->redis->evalSha($scriptSha, 1, $resource, ...$args));
+ } catch (LockStorageException $e) {
// Fallthrough only if we need to load the script
- if (self::NO_SCRIPT_ERROR_MESSAGE !== $e->getMessage()) {
- throw new LockStorageException($e->getMessage(), $e->getCode(), $e);
+ if (!str_starts_with($e->getMessage(), self::NO_SCRIPT_ERROR_MESSAGE_PREFIX)) {
+ throw $e;
}
}
- try {
- $this->redis->script('LOAD', $script);
- } catch (ServerException $e) {
- throw new LockStorageException($e->getMessage(), $e->getCode(), $e);
- }
+ $this->handlePredisError(fn () => $this->redis->script('LOAD', $script));
- try {
- return $this->redis->evalSha($scriptSha, 1, $resource, ...$args);
- } catch (ServerException $e) {
- throw new LockStorageException($e->getMessage(), $e->getCode(), $e);
- }
+ return $this->handlePredisError(fn () => $this->redis->evalSha($scriptSha, 1, $resource, ...$args));
}
private function getUniqueToken(Key $key): string
@@ -352,4 +345,26 @@ private function getNowCode(): string
now = math.floor(now * 1000)
';
}
+
+ /**
+ * @template T
+ *
+ * @param callable(): T $callback
+ *
+ * @return T
+ */
+ private function handlePredisError(callable $callback): mixed
+ {
+ try {
+ $result = $callback();
+ } catch (ServerException $e) {
+ throw new LockStorageException($e->getMessage(), $e->getCode(), $e);
+ }
+
+ if ($result instanceof Error) {
+ throw new LockStorageException($result->getMessage());
+ }
+
+ return $result;
+ }
}
diff --git a/src/Symfony/Component/Lock/Tests/Store/CombinedStoreTest.php b/src/Symfony/Component/Lock/Tests/Store/CombinedStoreTest.php
index b7cdd7a954a94..6a19805f3cb3e 100644
--- a/src/Symfony/Component/Lock/Tests/Store/CombinedStoreTest.php
+++ b/src/Symfony/Component/Lock/Tests/Store/CombinedStoreTest.php
@@ -39,7 +39,10 @@ protected function getClockDelay(): int
public function getStore(): PersistingStoreInterface
{
- $redis = new \Predis\Client(array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => 6379]));
+ $redis = new \Predis\Client(
+ array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => 6379]),
+ ['exceptions' => false],
+ );
try {
$redis->connect();
diff --git a/src/Symfony/Component/Lock/Tests/Store/PredisStoreTest.php b/src/Symfony/Component/Lock/Tests/Store/PredisStoreWithExceptionsTest.php
similarity index 88%
rename from src/Symfony/Component/Lock/Tests/Store/PredisStoreTest.php
rename to src/Symfony/Component/Lock/Tests/Store/PredisStoreWithExceptionsTest.php
index 3569e3d1f75e2..6b24711b89a8e 100644
--- a/src/Symfony/Component/Lock/Tests/Store/PredisStoreTest.php
+++ b/src/Symfony/Component/Lock/Tests/Store/PredisStoreWithExceptionsTest.php
@@ -12,11 +12,9 @@
namespace Symfony\Component\Lock\Tests\Store;
/**
- * @author Jérémy Derussé
- *
* @group integration
*/
-class PredisStoreTest extends AbstractRedisStoreTestCase
+class PredisStoreWithExceptionsTest extends AbstractRedisStoreTestCase
{
public static function setUpBeforeClass(): void
{
diff --git a/src/Symfony/Component/Lock/Tests/Store/PredisStoreWithoutExceptionsTest.php b/src/Symfony/Component/Lock/Tests/Store/PredisStoreWithoutExceptionsTest.php
new file mode 100644
index 0000000000000..bb135a4676406
--- /dev/null
+++ b/src/Symfony/Component/Lock/Tests/Store/PredisStoreWithoutExceptionsTest.php
@@ -0,0 +1,44 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Lock\Tests\Store;
+
+/**
+ * @author Jérémy Derussé
+ *
+ * @group integration
+ */
+class PredisStoreWithoutExceptionsTest extends AbstractRedisStoreTestCase
+{
+ public static function setUpBeforeClass(): void
+ {
+ $redis = new \Predis\Client(
+ array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => null]),
+ ['exceptions' => false],
+ );
+ try {
+ $redis->connect();
+ } catch (\Exception $e) {
+ self::markTestSkipped($e->getMessage());
+ }
+ }
+
+ protected function getRedisConnection(): \Predis\Client
+ {
+ $redis = new \Predis\Client(
+ array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => null]),
+ ['exceptions' => false],
+ );
+ $redis->connect();
+
+ return $redis;
+ }
+}
diff --git a/src/Symfony/Component/Mailer/Bridge/Azure/README.md b/src/Symfony/Component/Mailer/Bridge/Azure/README.md
index acd9cc25abb53..36b81fccfa385 100644
--- a/src/Symfony/Component/Mailer/Bridge/Azure/README.md
+++ b/src/Symfony/Component/Mailer/Bridge/Azure/README.md
@@ -21,8 +21,8 @@ where:
Resources
---------
- * [Microsoft Azure (ACS) Email API Docs](https://learn.microsoft.com/en-us/rest/api/communication/dataplane/email/send)
+ * [Microsoft Azure (ACS) Email API Docs](https://learn.microsoft.com/en-us/rest/api/communication/email/email/send)
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
* [Report issues](https://github.com/symfony/symfony/issues) and
[send Pull Requests](https://github.com/symfony/symfony/pulls)
- in the [main Symfony repository](https://github.com/symfony/symfony)
\ No newline at end of file
+ in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendSmtpTransport.php
index 84e2553a627cc..e5bfb4daddc2e 100644
--- a/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendSmtpTransport.php
+++ b/src/Symfony/Component/Mailer/Bridge/MailerSend/Transport/MailerSendSmtpTransport.php
@@ -22,7 +22,7 @@ final class MailerSendSmtpTransport extends EsmtpTransport
{
public function __construct(string $username, #[\SensitiveParameter] string $password, ?EventDispatcherInterface $dispatcher = null, ?LoggerInterface $logger = null)
{
- parent::__construct('smtp.mailersend.net', 587, true, $dispatcher, $logger);
+ parent::__construct('smtp.mailersend.net', 587, false, $dispatcher, $logger);
$this->setUsername($username);
$this->setPassword($password);
diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkApiTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkApiTransportTest.php
index 32bb32d744506..e692357aef3cf 100644
--- a/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkApiTransportTest.php
+++ b/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkApiTransportTest.php
@@ -71,6 +71,18 @@ public function testCustomHeader()
$this->assertEquals(['Name' => 'foo', 'Value' => 'bar'], $payload['Headers'][0]);
}
+ public function testBypassHeaders()
+ {
+ $email = (new Email())->date(new \DateTimeImmutable());
+ $envelope = new Envelope(new Address('alice@system.com'), [new Address('bob@system.com')]);
+
+ $transport = new PostmarkApiTransport('ACCESS_KEY');
+ $method = new \ReflectionMethod(PostmarkApiTransport::class, 'getPayload');
+ $payload = $method->invoke($transport, $email, $envelope);
+
+ $this->assertArrayNotHasKey('Headers', $payload);
+ }
+
public function testSend()
{
$client = new MockHttpClient(function (string $method, string $url, array $options): ResponseInterface {
diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php
index a883c92404991..a5e433293d6bc 100644
--- a/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php
+++ b/src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php
@@ -110,7 +110,7 @@ private function getPayload(Email $email, Envelope $envelope): array
'Attachments' => $this->getAttachments($email),
];
- $headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type', 'sender', 'reply-to'];
+ $headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type', 'sender', 'reply-to', 'date'];
foreach ($email->getHeaders()->all() as $name => $header) {
if (\in_array($name, $headersToBypass, true)) {
continue;
@@ -166,7 +166,7 @@ private function getAttachments(Email $email): array
];
if ('inline' === $disposition) {
- $att['ContentID'] = 'cid:'.$filename;
+ $att['ContentID'] = 'cid:'.($attachment->hasContentId() ? $attachment->getContentId() : $filename);
}
$attachments[] = $att;
diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/RemoteEvent/SendgridPayloadConverter.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/RemoteEvent/SendgridPayloadConverter.php
index 1ca37551c41ba..cae2dd85bcf86 100644
--- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/RemoteEvent/SendgridPayloadConverter.php
+++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/RemoteEvent/SendgridPayloadConverter.php
@@ -31,7 +31,7 @@ public function convert(array $payload): AbstractMailerEvent
'deferred' => MailerDeliveryEvent::DEFERRED,
'bounce' => MailerDeliveryEvent::BOUNCE,
};
- $event = new MailerDeliveryEvent($name, $payload['sg_message_id'], $payload);
+ $event = new MailerDeliveryEvent($name, $payload['sg_message_id'] ?? $payload['sg_event_id'], $payload);
$event->setReason($payload['reason'] ?? '');
} else {
$name = match ($payload['event']) {
@@ -41,7 +41,7 @@ public function convert(array $payload): AbstractMailerEvent
'spamreport' => MailerEngagementEvent::SPAM,
default => throw new ParseException(\sprintf('Unsupported event "%s".', $payload['event'])),
};
- $event = new MailerEngagementEvent($name, $payload['sg_message_id'], $payload);
+ $event = new MailerEngagementEvent($name, $payload['sg_message_id'] ?? $payload['sg_event_id'], $payload);
}
if (!$date = \DateTimeImmutable::createFromFormat('U', $payload['timestamp'])) {
@@ -51,7 +51,7 @@ public function convert(array $payload): AbstractMailerEvent
$event->setDate($date);
$event->setRecipientEmail($payload['email']);
$event->setMetadata([]);
- $event->setTags($payload['category'] ?? []);
+ $event->setTags((array) ($payload['category'] ?? []));
return $event;
}
diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/RemoteEvent/SendgridPayloadConverterTest.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/RemoteEvent/SendgridPayloadConverterTest.php
index 1d02b5c8a42bc..02811744468e3 100644
--- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/RemoteEvent/SendgridPayloadConverterTest.php
+++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/RemoteEvent/SendgridPayloadConverterTest.php
@@ -97,4 +97,35 @@ public function testInvalidDate()
'email' => 'test@example.com',
]);
}
+
+ public function testAsynchronousBounce()
+ {
+ $converter = new SendgridPayloadConverter();
+
+ $event = $converter->convert([
+ 'event' => 'bounce',
+ 'sg_event_id' => '123456',
+ 'timestamp' => '123456789',
+ 'email' => 'test@example.com',
+ ]);
+
+ $this->assertInstanceOf(MailerDeliveryEvent::class, $event);
+ $this->assertSame('123456', $event->getId());
+ }
+
+ public function testWithStringCategory()
+ {
+ $converter = new SendgridPayloadConverter();
+
+ $event = $converter->convert([
+ 'event' => 'processed',
+ 'sg_message_id' => '123456',
+ 'timestamp' => '123456789',
+ 'email' => 'test@example.com',
+ 'category' => 'cat facts',
+ ]);
+
+ $this->assertInstanceOf(MailerDeliveryEvent::class, $event);
+ $this->assertSame(['cat facts'], $event->getTags());
+ }
}
diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridSmtpTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridSmtpTransportTest.php
new file mode 100644
index 0000000000000..77e5135c55cc4
--- /dev/null
+++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridSmtpTransportTest.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Mailer\Bridge\Sendgrid\Tests\Transport;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridSmtpTransport;
+
+class SendgridSmtpTransportTest extends TestCase
+{
+ /**
+ * @dataProvider getTransportData
+ */
+ public function testToString(SendgridSmtpTransport $transport, string $expected)
+ {
+ $this->assertSame($expected, (string) $transport);
+ }
+
+ public static function getTransportData()
+ {
+ return [
+ [
+ new SendgridSmtpTransport('KEY'),
+ 'smtps://smtp.sendgrid.net',
+ ],
+ [
+ new SendgridSmtpTransport('KEY', null, null, 'eu'),
+ 'smtps://smtp.eu.sendgrid.net',
+ ],
+ ];
+ }
+}
diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php
index d939359ff8bc0..c7b67685dab9f 100644
--- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php
+++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridSmtpTransport.php
@@ -22,7 +22,7 @@ class SendgridSmtpTransport extends EsmtpTransport
{
public function __construct(#[\SensitiveParameter] string $key, ?EventDispatcherInterface $dispatcher = null, ?LoggerInterface $logger = null, private ?string $region = null)
{
- parent::__construct('null' !== $region ? \sprintf('smtp.%s.sendgrid.net', $region) : 'smtp.sendgrid.net', 465, true, $dispatcher, $logger);
+ parent::__construct(null !== $region ? \sprintf('smtp.%s.sendgrid.net', $region) : 'smtp.sendgrid.net', 465, true, $dispatcher, $logger);
$this->setUsername('apikey');
$this->setPassword($key);
diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Webhook/SendgridRequestParser.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Webhook/SendgridRequestParser.php
index 26bea852dc81d..aaf4dc8776691 100644
--- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Webhook/SendgridRequestParser.php
+++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Webhook/SendgridRequestParser.php
@@ -51,7 +51,7 @@ protected function doParse(Request $request, string $secret): array
!isset($content[0]['email'])
|| !isset($content[0]['timestamp'])
|| !isset($content[0]['event'])
- || !isset($content[0]['sg_message_id'])
+ || !isset($content[0]['sg_event_id'])
) {
throw new RejectWebhookException(406, 'Payload is malformed.');
}
diff --git a/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoApiTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoApiTransportTest.php
index 4a39ebdb71ea7..3f943ed3467f2 100644
--- a/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoApiTransportTest.php
+++ b/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoApiTransportTest.php
@@ -110,6 +110,9 @@ public function testSend()
$this->assertSame('https://api.sweego.io:8984/send', $url);
$this->assertStringContainsString('Accept: */*', $options['headers'][2] ?? $options['request_headers'][1]);
+ $payload = json_decode($options['body'], true);
+ $this->assertSame('email', $payload['channel']);
+
return new JsonMockResponse(['transaction_id' => 'foobar'], [
'http_code' => 200,
]);
diff --git a/src/Symfony/Component/Mailer/Bridge/Sweego/Transport/SweegoApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sweego/Transport/SweegoApiTransport.php
index b25b7e5b725a6..8430fb4fca29f 100644
--- a/src/Symfony/Component/Mailer/Bridge/Sweego/Transport/SweegoApiTransport.php
+++ b/src/Symfony/Component/Mailer/Bridge/Sweego/Transport/SweegoApiTransport.php
@@ -90,6 +90,7 @@ private function getPayload(Email $email, Envelope $envelope): array
'from' => $this->formatAddress($envelope->getSender()),
'subject' => $email->getSubject(),
'campaign-type' => 'transac',
+ 'channel' => 'email',
];
if ($email->getTextBody()) {
diff --git a/src/Symfony/Component/Mailer/Transport/SendmailTransport.php b/src/Symfony/Component/Mailer/Transport/SendmailTransport.php
index fa1bc912f1daf..45cf503e162b2 100644
--- a/src/Symfony/Component/Mailer/Transport/SendmailTransport.php
+++ b/src/Symfony/Component/Mailer/Transport/SendmailTransport.php
@@ -114,7 +114,7 @@ protected function doSend(SentMessage $message): void
$this->stream->setCommand($command);
$this->stream->initialize();
foreach ($chunks as $chunk) {
- $this->stream->write($chunk);
+ $this->stream->write($chunk, false);
}
$this->stream->flush();
$this->stream->terminate();
diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php b/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php
index 9d99c061660a8..ec9689f9239a8 100644
--- a/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php
+++ b/src/Symfony/Component/Mailer/Transport/Smtp/SmtpTransport.php
@@ -206,11 +206,11 @@ protected function doSend(SentMessage $message): void
$this->ping();
}
- if (!$this->started) {
- $this->start();
- }
-
try {
+ if (!$this->started) {
+ $this->start();
+ }
+
$envelope = $message->getEnvelope();
$this->doMailFromCommand($envelope->getSender()->getEncodedAddress(), $envelope->anyAddressHasUnicodeLocalpart());
foreach ($envelope->getRecipients() as $recipient) {
diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/Stream/AbstractStream.php b/src/Symfony/Component/Mailer/Transport/Smtp/Stream/AbstractStream.php
index ef80010a20dc4..9cd8463a28b78 100644
--- a/src/Symfony/Component/Mailer/Transport/Smtp/Stream/AbstractStream.php
+++ b/src/Symfony/Component/Mailer/Transport/Smtp/Stream/AbstractStream.php
@@ -81,15 +81,14 @@ public function readLine(): string
$line = @fgets($this->out);
if ('' === $line || false === $line) {
- $metas = stream_get_meta_data($this->out);
- if ($metas['timed_out']) {
+ if (stream_get_meta_data($this->out)['timed_out']) {
throw new TransportException(\sprintf('Connection to "%s" timed out.', $this->getReadConnectionDescription()));
}
- if ($metas['eof']) {
+ if (feof($this->out)) { // don't use "eof" metadata, it's not accurate on Windows
throw new TransportException(\sprintf('Connection to "%s" has been closed unexpectedly.', $this->getReadConnectionDescription()));
}
if (false === $line) {
- throw new TransportException(\sprintf('Unable to read from connection to "%s": ', $this->getReadConnectionDescription()).error_get_last()['message']);
+ throw new TransportException(\sprintf('Unable to read from connection to "%s": ', $this->getReadConnectionDescription().error_get_last()['message'] ?? ''));
}
}
diff --git a/src/Symfony/Component/Messenger/Attribute/AsMessage.php b/src/Symfony/Component/Messenger/Attribute/AsMessage.php
index bc60ec032bff9..ee46bd5491fe1 100644
--- a/src/Symfony/Component/Messenger/Attribute/AsMessage.php
+++ b/src/Symfony/Component/Messenger/Attribute/AsMessage.php
@@ -23,7 +23,7 @@ public function __construct(
/**
* Name of the transports to which the message should be routed.
*/
- public null|string|array $transport = null,
+ public string|array|null $transport = null,
) {
}
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/AmqpReceiver.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/AmqpReceiver.php
index 3c855e9ee46ce..48706b6432755 100644
--- a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/AmqpReceiver.php
+++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/AmqpReceiver.php
@@ -92,10 +92,16 @@ public function ack(Envelope $envelope): void
try {
$stamp = $this->findAmqpStamp($envelope);
- $this->connection->ack(
- $stamp->getAmqpEnvelope(),
- $stamp->getQueueName()
- );
+ $this->connection->ack($stamp->getAmqpEnvelope(), $stamp->getQueueName());
+ } catch (\AMQPConnectionException) {
+ try {
+ $stamp = $this->findAmqpStamp($envelope);
+
+ $this->connection->queue($stamp->getQueueName())->getConnection()->reconnect();
+ $this->connection->ack($stamp->getAmqpEnvelope(), $stamp->getQueueName());
+ } catch (\AMQPException $exception) {
+ throw new TransportException($exception->getMessage(), 0, $exception);
+ }
} catch (\AMQPException $exception) {
throw new TransportException($exception->getMessage(), 0, $exception);
}
@@ -124,6 +130,13 @@ private function rejectAmqpEnvelope(\AMQPEnvelope $amqpEnvelope, string $queueNa
{
try {
$this->connection->nack($amqpEnvelope, $queueName, \AMQP_NOPARAM);
+ } catch (\AMQPConnectionException) {
+ try {
+ $this->connection->queue($queueName)->getConnection()->reconnect();
+ $this->connection->nack($amqpEnvelope, $queueName, \AMQP_NOPARAM);
+ } catch (\AMQPException $exception) {
+ throw new TransportException($exception->getMessage(), 0, $exception);
+ }
} catch (\AMQPException $exception) {
throw new TransportException($exception->getMessage(), 0, $exception);
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php
index 65650cedd72e2..0a6197810d4a2 100644
--- a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php
+++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php
@@ -31,6 +31,7 @@ class Connection
'x-max-length-bytes',
'x-max-priority',
'x-message-ttl',
+ 'x-delivery-limit',
];
/**
diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdReceiverTest.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdReceiverTest.php
index 7b402746815fb..beba416297b9f 100644
--- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdReceiverTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdReceiverTest.php
@@ -18,6 +18,7 @@
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\Connection;
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
+use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
use Symfony\Component\Messenger\Transport\Serialization\Serializer;
use Symfony\Component\Serializer as SerializerComponent;
@@ -40,14 +41,21 @@ public function testItReturnsTheDecodedMessageToTheHandler()
$receiver = new BeanstalkdReceiver($connection, $serializer);
$actualEnvelopes = $receiver->get();
$this->assertCount(1, $actualEnvelopes);
- $this->assertEquals(new DummyMessage('Hi'), $actualEnvelopes[0]->getMessage());
+ /** @var Envelope $actualEnvelope */
+ $actualEnvelope = $actualEnvelopes[0];
+ $this->assertEquals(new DummyMessage('Hi'), $actualEnvelope->getMessage());
/** @var BeanstalkdReceivedStamp $receivedStamp */
- $receivedStamp = $actualEnvelopes[0]->last(BeanstalkdReceivedStamp::class);
+ $receivedStamp = $actualEnvelope->last(BeanstalkdReceivedStamp::class);
$this->assertInstanceOf(BeanstalkdReceivedStamp::class, $receivedStamp);
$this->assertSame('1', $receivedStamp->getId());
$this->assertSame($tube, $receivedStamp->getTube());
+
+ /** @var TransportMessageIdStamp $transportMessageIdStamp */
+ $transportMessageIdStamp = $actualEnvelope->last(TransportMessageIdStamp::class);
+ $this->assertNotNull($transportMessageIdStamp);
+ $this->assertSame('1', $transportMessageIdStamp->getId());
}
public function testItReturnsEmptyArrayIfThereAreNoMessages()
diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php
index 89ac3449f3a4b..a198765d7ed70 100644
--- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php
@@ -17,6 +17,7 @@
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\Connection;
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Stamp\DelayStamp;
+use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
final class BeanstalkdSenderTest extends TestCase
@@ -27,13 +28,21 @@ public function testSend()
$encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class]];
$connection = $this->createMock(Connection::class);
- $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'], 0);
+ $connection->expects($this->once())->method('send')
+ ->with($encoded['body'], $encoded['headers'], 0)
+ ->willReturn('1')
+ ;
$serializer = $this->createMock(SerializerInterface::class);
$serializer->method('encode')->with($envelope)->willReturn($encoded);
$sender = new BeanstalkdSender($connection, $serializer);
- $sender->send($envelope);
+ $actualEnvelope = $sender->send($envelope);
+
+ /** @var TransportMessageIdStamp $transportMessageIdStamp */
+ $transportMessageIdStamp = $actualEnvelope->last(TransportMessageIdStamp::class);
+ $this->assertNotNull($transportMessageIdStamp);
+ $this->assertSame('1', $transportMessageIdStamp->getId());
}
public function testSendWithDelay()
diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php
index eaacfa4b60b99..c4b7e904a544e 100644
--- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php
@@ -363,4 +363,25 @@ public function testKeepaliveWhenABeanstalkdExceptionOccurs()
$this->expectExceptionObject(new TransportException($exception->getMessage(), 0, $exception));
$connection->keepalive((string) $id);
}
+
+ public function testSendWithRoundedDelay()
+ {
+ $tube = 'xyz';
+ $body = 'foo';
+ $headers = ['test' => 'bar'];
+ $delay = 920;
+ $expectedDelay = 0;
+
+ $client = $this->createMock(PheanstalkInterface::class);
+ $client->expects($this->once())->method('useTube')->with($tube)->willReturn($client);
+ $client->expects($this->once())->method('put')->with(
+ $this->anything(),
+ $this->anything(),
+ $expectedDelay,
+ $this->anything(),
+ );
+
+ $connection = new Connection(['tube_name' => $tube], $client);
+ $connection->send($body, $headers, $delay);
+ }
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdReceiver.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdReceiver.php
index 7dd19e8c90a8b..bd716a7d5efe7 100644
--- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdReceiver.php
+++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdReceiver.php
@@ -14,6 +14,7 @@
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Exception\LogicException;
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
+use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
use Symfony\Component\Messenger\Transport\Receiver\KeepaliveReceiverInterface;
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
@@ -52,7 +53,12 @@ public function get(): iterable
throw $exception;
}
- return [$envelope->with(new BeanstalkdReceivedStamp($beanstalkdEnvelope['id'], $this->connection->getTube()))];
+ return [$envelope
+ ->withoutAll(TransportMessageIdStamp::class)
+ ->with(
+ new BeanstalkdReceivedStamp($beanstalkdEnvelope['id'], $this->connection->getTube()),
+ new TransportMessageIdStamp($beanstalkdEnvelope['id']),
+ )];
}
public function ack(Envelope $envelope): void
diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdSender.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdSender.php
index 8e7607f54267e..f6ba0b2a54fc6 100644
--- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdSender.php
+++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdSender.php
@@ -13,6 +13,7 @@
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Stamp\DelayStamp;
+use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
@@ -39,8 +40,8 @@ public function send(Envelope $envelope): Envelope
$delayStamp = $envelope->last(DelayStamp::class);
$delayInMs = null !== $delayStamp ? $delayStamp->getDelay() : 0;
- $this->connection->send($encodedMessage['body'], $encodedMessage['headers'] ?? [], $delayInMs);
+ $id = $this->connection->send($encodedMessage['body'], $encodedMessage['headers'] ?? [], $delayInMs);
- return $envelope;
+ return $envelope->with(new TransportMessageIdStamp($id));
}
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php
index c2c5cd7ee49f8..0f2c2c555a4fb 100644
--- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php
+++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php
@@ -124,7 +124,7 @@ public function send(string $body, array $headers, int $delay = 0): string
$job = $this->client->useTube($this->tube)->put(
$message,
PheanstalkInterface::DEFAULT_PRIORITY,
- $delay / 1000,
+ (int) ($delay / 1000),
$this->ttr
);
} catch (Exception $exception) {
diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/ConnectionTest.php
index f1f5fbeef8d62..49ebf00dbdd5d 100644
--- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/ConnectionTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/ConnectionTest.php
@@ -15,7 +15,6 @@
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\DBAL\Exception as DBALException;
use Doctrine\DBAL\Platforms\AbstractPlatform;
-use Doctrine\DBAL\Platforms\MariaDb1060Platform;
use Doctrine\DBAL\Platforms\MariaDBPlatform;
use Doctrine\DBAL\Platforms\MySQL57Platform;
use Doctrine\DBAL\Platforms\MySQL80Platform;
@@ -591,9 +590,16 @@ class_exists(MySQLPlatform::class) ? new MySQLPlatform() : new MySQL57Platform()
'SELECT m.* FROM messenger_messages m WHERE (m.queue_name = ?) AND (m.delivered_at is null OR m.delivered_at < ?) AND (m.available_at <= ?) ORDER BY available_at ASC LIMIT 1 FOR UPDATE',
];
- if (class_exists(MariaDb1060Platform::class)) {
+ if (interface_exists(DBALException::class)) {
+ // DBAL 4+
+ $mariaDbPlatformClass = 'Doctrine\DBAL\Platforms\MariaDB1060Platform';
+ } else {
+ $mariaDbPlatformClass = 'Doctrine\DBAL\Platforms\MariaDb1060Platform';
+ }
+
+ if (class_exists($mariaDbPlatformClass)) {
yield 'MariaDB106' => [
- new MariaDb1060Platform(),
+ new $mariaDbPlatformClass(),
'SELECT m.* FROM messenger_messages m WHERE (m.queue_name = ?) AND (m.delivered_at is null OR m.delivered_at < ?) AND (m.available_at <= ?) ORDER BY available_at ASC LIMIT 1 FOR UPDATE SKIP LOCKED',
];
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineReceiverTest.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineReceiverTest.php
index 744c76ce897c6..d81e7cd5d0e34 100644
--- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineReceiverTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineReceiverTest.php
@@ -26,6 +26,8 @@
use Symfony\Component\Messenger\Transport\Serialization\Serializer;
use Symfony\Component\Serializer as SerializerComponent;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
+use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
+use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
class DoctrineReceiverTest extends TestCase
@@ -43,7 +45,7 @@ public function testItReturnsTheDecodedMessageToTheHandler()
$this->assertCount(1, $actualEnvelopes);
/** @var Envelope $actualEnvelope */
$actualEnvelope = $actualEnvelopes[0];
- $this->assertEquals(new DummyMessage('Hi'), $actualEnvelopes[0]->getMessage());
+ $this->assertEquals(new DummyMessage('Hi'), $actualEnvelope->getMessage());
/** @var DoctrineReceivedStamp $doctrineReceivedStamp */
$doctrineReceivedStamp = $actualEnvelope->last(DoctrineReceivedStamp::class);
@@ -91,6 +93,23 @@ public function testOccursRetryableExceptionFromConnection()
$receiver->get();
}
+ public function testGetReplacesExistingTransportMessageIdStamps()
+ {
+ $serializer = $this->createSerializer();
+
+ $doctrineEnvelope = $this->createRetriedDoctrineEnvelope();
+ $connection = $this->createMock(Connection::class);
+ $connection->method('get')->willReturn($doctrineEnvelope);
+
+ $receiver = new DoctrineReceiver($connection, $serializer);
+ $actualEnvelopes = $receiver->get();
+ /** @var Envelope $actualEnvelope */
+ $actualEnvelope = $actualEnvelopes[0];
+ $messageIdStamps = $actualEnvelope->all(TransportMessageIdStamp::class);
+
+ $this->assertCount(1, $messageIdStamps);
+ }
+
public function testAll()
{
$serializer = $this->createSerializer();
@@ -106,6 +125,24 @@ public function testAll()
$this->assertEquals(new DummyMessage('Hi'), $actualEnvelopes[0]->getMessage());
}
+ public function testAllReplacesExistingTransportMessageIdStamps()
+ {
+ $serializer = $this->createSerializer();
+
+ $doctrineEnvelope1 = $this->createRetriedDoctrineEnvelope();
+ $doctrineEnvelope2 = $this->createRetriedDoctrineEnvelope();
+ $connection = $this->createMock(Connection::class);
+ $connection->method('findAll')->willReturn([$doctrineEnvelope1, $doctrineEnvelope2]);
+
+ $receiver = new DoctrineReceiver($connection, $serializer);
+ $actualEnvelopes = $receiver->all();
+ foreach ($actualEnvelopes as $actualEnvelope) {
+ $messageIdStamps = $actualEnvelope->all(TransportMessageIdStamp::class);
+
+ $this->assertCount(1, $messageIdStamps);
+ }
+ }
+
public function testFind()
{
$serializer = $this->createSerializer();
@@ -119,6 +156,21 @@ public function testFind()
$this->assertEquals(new DummyMessage('Hi'), $actualEnvelope->getMessage());
}
+ public function testFindReplacesExistingTransportMessageIdStamps()
+ {
+ $serializer = $this->createSerializer();
+
+ $doctrineEnvelope = $this->createRetriedDoctrineEnvelope();
+ $connection = $this->createMock(Connection::class);
+ $connection->method('find')->with(3)->willReturn($doctrineEnvelope);
+
+ $receiver = new DoctrineReceiver($connection, $serializer);
+ $actualEnvelope = $receiver->find(3);
+ $messageIdStamps = $actualEnvelope->all(TransportMessageIdStamp::class);
+
+ $this->assertCount(1, $messageIdStamps);
+ }
+
public function testAck()
{
$serializer = $this->createSerializer();
@@ -186,7 +238,7 @@ public function testAckThrowsRetryableExceptionAndRetriesFail()
->with('1')
->willThrowException($deadlockException);
- self::expectException(TransportException::class);
+ $this->expectException(TransportException::class);
$receiver->ack($envelope);
}
@@ -206,7 +258,7 @@ public function testAckThro
10000
wsException()
->with('1')
->willThrowException($exception);
- self::expectException($exception::class);
+ $this->expectException($exception::class);
$receiver->ack($envelope);
}
@@ -277,7 +329,7 @@ public function testRejectThrowsRetryableExceptionAndRetriesFail()
->with('1')
->willThrowException($deadlockException);
- self::expectException(TransportException::class);
+ $this->expectException(TransportException::class);
$receiver->reject($envelope);
}
@@ -297,7 +349,7 @@ public function testRejectThrowsException()
->with('1')
->willThrowException($exception);
- self::expectException($exception::class);
+ $this->expectException($exception::class);
$receiver->reject($envelope);
}
@@ -312,10 +364,27 @@ private function createDoctrineEnvelope(): array
];
}
+ private function createRetriedDoctrineEnvelope(): array
+ {
+ return [
+ 'id' => 3,
+ 'body' => '{"message": "Hi"}',
+ 'headers' => [
+ 'type' => DummyMessage::class,
+ 'X-Message-Stamp-Symfony\Component\Messenger\Stamp\BusNameStamp' => '[{"busName":"messenger.bus.default"}]',
+ 'X-Message-Stamp-Symfony\Component\Messenger\Stamp\TransportMessageIdStamp' => '[{"id":1},{"id":2}]',
+ 'X-Message-Stamp-Symfony\Component\Messenger\Stamp\ErrorDetailsStamp' => '[{"exceptionClass":"Symfony\\\\Component\\\\Messenger\\\\Exception\\\\RecoverableMessageHandlingException","exceptionCode":0,"exceptionMessage":"","flattenException":null}]',
+ 'X-Message-Stamp-Symfony\Component\Messenger\Stamp\DelayStamp' => '[{"delay":1000},{"delay":1000}]',
+ 'X-Message-Stamp-Symfony\Component\Messenger\Stamp\RedeliveryStamp' => '[{"retryCount":1,"redeliveredAt":"2025-01-05T13:58:25+00:00"},{"retryCount":2,"redeliveredAt":"2025-01-05T13:59:26+00:00"}]',
+ 'Content-Type' => 'application/json',
+ ],
+ ];
+ }
+
private function createSerializer(): Serializer
{
return new Serializer(
- new SerializerComponent\Serializer([new ObjectNormalizer()], ['json' => new JsonEncoder()])
+ new SerializerComponent\Serializer([new DateTimeNormalizer(), new ArrayDenormalizer(), new ObjectNormalizer()], ['json' => new JsonEncoder()])
);
}
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php
index e0b06cfd7ef8c..4901824a85c1b 100644
--- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php
+++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php
@@ -23,6 +23,9 @@
use Doctrine\DBAL\Query\QueryBuilder;
use Doctrine\DBAL\Result;
use Doctrine\DBAL\Schema\AbstractAsset;
+use Doctrine\DBAL\Schema\Name\Identifier;
+use Doctrine\DBAL\Schema\Name\UnqualifiedName;
+use Doctrine\DBAL\Schema\PrimaryKeyConstraint;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Types\Types;
@@ -519,7 +522,11 @@ private function addTableToSchema(Schema $schema): void
->setNotnull(true);
$table->addColumn('delivered_at', Types::DATETIME_IMMUTABLE)
->setNotnull(false);
- $table->setPrimaryKey(['id']);
+ if (class_exists(PrimaryKeyConstraint::class)) {
+ $table->addPrimaryKeyConstraint(new PrimaryKeyConstraint(null, [new UnqualifiedName(Identifier::unquoted('id'))], true));
+ } else {
+ $table->setPrimaryKey(['id']);
+ }
$table->addIndex(['queue_name']);
$table->addIndex(['available_at']);
$table->addIndex(['delivered_at']);
diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineReceiver.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineReceiver.php
index e999a57b1701e..19cb065d7620b 100644
--- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineReceiver.php
+++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineReceiver.php
@@ -141,10 +141,12 @@ private function createEnvelopeFromData(array $data): Envelope
throw $exception;
}
- return $envelope->with(
- new DoctrineReceivedStamp($data['id']),
- new TransportMessageIdStamp($data['id'])
- );
+ return $envelope
+ ->withoutAll(TransportMessageIdStamp::class)
+ ->with(
+ new DoctrineReceivedStamp($data['id']),
+ new TransportMessageIdStamp($data['id'])
+ );
}
private function withRetryableExceptionRetry(callable $callable): void
diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisExtIntegrationTest.php b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisExtIntegrationTest.php
index 469623a9419c3..faf63baa011e9 100644
--- a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisExtIntegrationTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisExtIntegrationTest.php
@@ -459,7 +459,7 @@ private function getConnectionStream(Connection $connection): string
private function skipIfRedisClusterUnavailable()
{
try {
- new \RedisCluster(null, explode(' ', getenv('REDIS_CLUSTER_HOSTS')));
+ new \RedisCluster(null, getenv('REDIS_CLUSTER_HOST') ? explode(' ', getenv('REDIS_CLUSTER_HOST')) : []);
} catch (\Exception $e) {
self::markTestSkipped($e->getMessage());
}
diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisReceiverTest.php b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisReceiverTest.php
index 903428ab3772c..831b6817ee9c8 100644
--- a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisReceiverTest.php
+++ b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisReceiverTest.php
@@ -17,7 +17,9 @@
use Symfony\Component\Messenger\Bridge\Redis\Tests\Fixtures\ExternalMessageSerializer;
use Symfony\Component\Messenger\Bridge\Redis\Transport\Connection;
use Symfony\Component\Messenger\Bridge\Redis\Transport\RedisReceiver;
+use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
+use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
use Symfony\Component\Messenger\Transport\Serialization\Serializer;
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
@@ -38,7 +40,14 @@ public function testItReturnsTheDecodedMessageToTheHandler(array $redisEnvelope,
$receiver = new RedisReceiver($connection, $serializer);
$actualEnvelopes = $receiver->get();
$this->assertCount(1, $actualEnvelopes);
- $this->assertEquals($expectedMessage, $actualEnvelopes[0]->getMessage());
+ /** @var Envelope $actualEnvelope */
+ $actualEnvelope = $actualEnvelopes[0];
+ $this->assertEquals($expectedMessage, $actualEnvelope->getMessage());
+
+ /** @var TransportMessageIdStamp $transportMessageIdStamp */
+ $transportMessageIdStamp = $actualEnvelope->last(TransportMessageIdStamp::class);
+ $this->assertNotNull($transportMessageIdStamp);
+ $this->assertSame($redisEnvelope['id'], $transportMessageIdStamp->getId());
}
/**
diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Transport/RedisReceiver.php b/src/Symfony/Component/Messenger/Bridge/Redis/Transport/RedisReceiver.php
index 45e7963dfde3f..2d328b3c96222 100644
--- a/src/Symfony/Component/Messenger/Bridge/Redis/Transport/RedisReceiver.php
+++ b/src/Symfony/Component/Messenger/Bridge/Redis/Transport/RedisReceiver.php
@@ -15,6 +15,7 @@
use Symfony\Component\Messenger\Exception\LogicException;
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
use Symfony\Component\Messenger\Exception\TransportException;
+use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
@@ -76,7 +77,12 @@ public function get(): iterable
throw $exception;
}
- return [$envelope->with(new RedisReceivedStamp($message['id']))];
+ return [$envelope
+ ->withoutAll(TransportMessageIdStamp::class)
+ ->with(
+ new RedisReceivedStamp($message['id']),
+ new TransportMessageIdStamp($message['id'])
+ )];
}
public function ack(Envelope $envelope): void
diff --git a/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php b/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php
index 9345a71b97a10..1a84381008318 100644
--- a/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php
+++ b/src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php
@@ -143,6 +143,12 @@ protected function interact(InputInterface $input, OutputInterface $output): voi
}
if ($this->receiverNames && !$input->getArgument('receivers')) {
+ if (1 === \count($this->receiverNames)) {
+ $input->setArgument('receivers', $this->receiverNames);
+
+ return;
+ }
+
$io->block('Which transports/receivers do you want to consume?', null, 'fg=white;bg=blue', ' ', true);
$io->writeln('Choose which receivers you want to consume messages from in order of priority.');
@@ -284,7 +290,7 @@ public function handleSignal(int $signal, int|false $previousExitCode = 0): int|
}
if (\SIGALRM === $signal) {
- $this->logger?->info('Sending keepalive request.', ['transport_names' => $this->worker->getMetadata()->getTransportNames()]);
+ $this->logger?->debug('Sending keepalive request.', ['transport_names' => $this->worker->getMetadata()->getTransportNames()]);
$this->worker->keepalive($this->getApplication()->getAlarmInterval());
diff --git a/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php b/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php
index 47bcd1463a915..15dbe84a37da3 100644
--- a/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php
+++ b/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php
@@ -224,8 +224,8 @@ private function runWorker(string $failureTransportName, ReceiverInterface $rece
$this->forceExit = true;
try {
- $choice = $io->choice('Please select an action', ['retry', 'delete', 'skip'], 'retry');
- $shouldHandle = $shouldForce || 'retry' === $choice;
+ $choice = $shouldForce ? 'retry' : $io->choice('Please select an action', ['retry', 'delete', 'skip'], 'retry');
+ $shouldHandle = 'retry' === $choice;
} finally {
$this->forceExit = false;
}
diff --git a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
index 9bb32d661ac72..989c9dc5fcd5d 100644
--- a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
+++ b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
@@ -254,6 +254,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds):
}
}
+ $consumableReceiverNames = [];
foreach ($container->findTaggedServiceIds('messenger.receiver') as $id => $tags) {
$receiverClass = $this->getServiceClass($container, $id);
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
@@ -269,6 +270,9 @@ private function registerReceivers(ContainerBuilder $container, array $busIds):
$failureTransportsMap[$tag['alias']] = $receiverMapping[$id];
}
}
+ if (!isset($tag['is_consumable']) || $tag['is_consumable'] !== false) {
+ $consumableReceiverNames[] = $tag['alias'] ?? $id;
+ }
}
}
@@ -294,7 +298,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds):
$consumeCommandDefinition->replaceArgument(0, new Reference('messenger.routable_message_bus'));
}
- $consumeCommandDefinition->replaceArgument(4, array_values($receiverNames));
+ $consumeCommandDefinition->replaceArgument(4, $consumableReceiverNames);
try {
$consumeCommandDefinition->replaceArgument(6, $busIds);
} catch (OutOfBoundsException) {
diff --git a/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php b/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php
index f6334173972af..5f3ee445920cd 100644
--- a/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php
+++ b/src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php
@@ -63,12 +63,7 @@ public function onMessageFailed(WorkerMessageFailedEvent $event): void
++$retryCount;
- $delay = null;
- if ($throwable instanceof RecoverableExceptionInterface && method_exists($throwable, 'getRetryDelay')) {
- $delay = $throwable->getRetryDelay();
- }
-
- $delay ??= $retryStrategy->getWaitingTime($envelope, $throwable);
+ $delay = $this->getWaitingTime($envelope, $throwable, $retryStrategy);
$this->logger?->warning('Error thrown while handling message {class}. Sending for retry #{retryCount} using {delay} ms delay. Error: "{error}"', $context + ['retryCount' => $retryCount, 'delay' => $delay, 'error' => $throwable->getMessage(), 'exception' => $throwable]);
@@ -148,6 +143,30 @@ private function shouldRetry(\Throwable $e, Envelope $envelope, RetryStrategyInt
return $retryStrategy->isRetryable($envelope, $e);
}
+ private function getWaitingTime(Envelope $envelope, \Throwable $throwable, RetryStrategyInterface $retryStrategy): int
+ {
+ $delay = null;
+ if ($throwable instanceof RecoverableExceptionInterface && method_exists($throwable, 'getRetryDelay')) {
+ $delay = $throwable->getRetryDelay();
+ }
+
+ if ($throwable instanceof HandlerFailedException) {
+ foreach ($throwable->getWrappedExceptions() as $nestedException) {
+ if (!$nestedException instanceof RecoverableExceptionInterface
+ || !method_exists($nestedException, 'getRetryDelay')
+ || 0 > $retryDelay = $nestedException->getRetryDelay() ?? -1
+ ) {
+ continue;
+ }
+ if ($retryDelay < ($delay ?? \PHP_INT_MAX)) {
+ $delay = $retryDelay;
+ }
+ }
+ }
+
+ return $delay ?? $retryStrategy->getWaitingTime($envelope, $throwable);
+ }
+
private function getRetryStrategyForTransport(string $alias): ?RetryStrategyInterface
{
if ($this->retryStrategyLocator->has($alias)) {
diff --git a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php
index f830489634a11..4de01a129e546 100644
--- a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php
+++ b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Component\Messenger\Tests\DependencyInjection;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\Console\Command\Command;
use Symfony\Component\DependencyInjection\ChildDefinition;
use Symfony\Component\DependencyInjection\Compiler\AttributeAutoconfigurationPass;
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
@@ -471,6 +472,34 @@ public function testItSetsTheReceiverNamesOnTheSetupTransportsCommand()
$this->assertSame(['amqp', 'dummy'], $container->getDefinition('console.command.messenger_setup_transports')->getArgument(1));
}
+ public function testOnlyConsumableTransportsAreAddedToConsumeCommand()
+ {
+ $container = new ContainerBuilder();
+
+ $container->register('messenger.transport.async', DummyReceiver::class)
+ ->addTag('messenger.receiver', ['alias' => 'async']);
+ $container->register('messenger.transport.sync', DummyReceiver::class)
+ ->addTag('messenger.receiver', ['alias' => 'sync', 'is_consumable' => false]);
+ $container->register('messenger.receiver_locator', ServiceLocator::class)
+ ->setArguments([[]]);
+
+ $container->register('console.command.messenger_consume_messages', Command::class)
+ ->setArguments([
+ null,
+ null,
+ null,
+ null,
+ [],
+ ]);
+
+ (new MessengerPass())->process($container);
+
+ $this->assertSame(
+ ['async'],
+ $container->getDefinition('console.command.messenger_consume_messages')->getArgument(4)
+ );
+ }
+
public function testItRegistersHandlersOnDifferentBuses()
{
$container = $this->getContainerBuilder($eventsBusId = 'event_bus');
diff --git a/src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageForRetryListenerTest.php b/src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageForRetryListenerTest.php
index cf3c86d7f4ffb..793da81451aa5 100644
--- a/src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageForRetryListenerTest.php
+++ b/src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageForRetryListenerTest.php
@@ -18,6 +18,7 @@
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
use Symfony\Component\Messenger\Event\WorkerMessageRetriedEvent;
use Symfony\Component\Messenger\EventListener\SendFailedMessageForRetryListener;
+use Symfony\Component\Messenger\Exception\HandlerFailedException;
use Symfony\Component\Messenger\Exception\RecoverableMessageHandlingException;
use Symfony\Component\Messenger\Retry\RetryStrategyInterface;
use Symfony\Component\Messenger\Stamp\DelayStamp;
@@ -108,6 +109,62 @@ public function testRecoverableExceptionRetryDelayOverridesStrategy()
$listener->onMessageFailed($event);
}
+ /**
+ * @dataProvider provideRetryDelays
+ */
+ public function testWrappedRecoverableExceptionRetryDelayOverridesStrategy(array $retries, int $expectedDelay)
+ {
+ $sender = $this->createMock(SenderInterface::class);
+ $sender->expects($this->once())->method('send')->willReturnCallback(function (Envelope $envelope) use ($expectedDelay) {
+ $delayStamp = $envelope->last(DelayStamp::class);
+ $redeliveryStamp = $envelope->last(RedeliveryStamp::class);
+
+ $this->assertInstanceOf(DelayStamp::class, $delayStamp);
+ $this->assertSame($expectedDelay, $delayStamp->getDelay());
+
+ $this->assertInstanceOf(RedeliveryStamp::class, $redeliveryStamp);
+ $this->assertSame(1, $redeliveryStamp->getRetryCount());
+
+ return $envelope;
+ });
+ $senderLocator = new Container();
+ $senderLocator->set('my_receiver', $sender);
+ $retryStrategy = $this->createMock(RetryStrategyInterface::class);
+ $retryStrategy->expects($this->never())->method('isRetryable');
+ $retryStrategy->expects($this->never())->method('getWaitingTime');
+ $retryStrategyLocator = new Container();
+ $retryStrategyLocator->set('my_receiver', $retryStrategy);
+
+ $listener = new SendFailedMessageForRetryListener($senderLocator, $retryStrategyLocator);
+
+ $envelope = new Envelope(new \stdClass());
+ $exception = new HandlerFailedException(
+ $envelope,
+ array_map(fn (int $retry) => new RecoverableMessageHandlingException('retry', retryDelay: $retry), $retries)
+ );
+ $event = new WorkerMessageFailedEvent($envelope, 'my_receiver', $exception);
+
+ $listener->onMessageFailed($event);
+ }
+
+ public static function provideRetryDelays(): iterable
+ {
+ yield 'one_exception' => [
+ [1235],
+ 1235,
+ ];
+
+ yield 'multiple_exceptions' => [
+ [1235, 2000, 1000],
+ 1000,
+ ];
+
+ yield 'zero_delay' => [
+ [0, 2000, 1000],
+ 0,
+ ];
+ }
+
public function testEnvelopeIsSentToTransportOnRetry()
{
$exception = new \Exception('no!');
diff --git a/src/Symfony/Component/Messenger/Tests/WorkerTest.php b/src/Symfony/Component/Messenger/Tests/WorkerTest.php
index 553368a193c09..9dbb44b203b41 100644
--- a/src/Symfony/Component/Messenger/Tests/WorkerTest.php
+++ b/src/Symfony/Component/Messenger/Tests/WorkerTest.php
@@ -586,25 +586,6 @@ public function testFlushBatchOnStop()
$this->assertSame($expectedMessages, $handler->processedMessages);
}
- public function testGcCollectCyclesIsCalledOnMessageHandle()
- {
- $apiMessage = new DummyMessage('API');
-
- $receiver = new DummyReceiver([[new Envelope($apiMessage)]]);
-
- $bus = $this->createMock(MessageBusInterface::class);
-
- $dispatcher = new EventDispatcher();
- $dispatcher->addSubscriber(new StopWorkerOnMessageLimitListener(1));
-
- $worker = new Worker(['transport' => $receiver], $bus, $dispatcher);
- $worker->run();
-
- $gcStatus = gc_status();
-
- $this->assertGreaterThan(0, $gcStatus['runs']);
- }
-
/**
* @requires extension pcntl
*/
diff --git a/src/Symfony/Component/Messenger/Worker.php b/src/Symfony/Component/Messenger/Worker.php
index 14b30ba5645bf..f2500e3e779e8 100644
--- a/src/Symfony/Component/Messenger/Worker.php
+++ b/src/Symfony/Component/Messenger/Worker.php
@@ -128,8 +128,6 @@ public function run(array $options = []): void
// this should prevent multiple lower priority receivers from
// blocking too long before the higher priority are checked
if ($envelopeHandled) {
- gc_collect_cycles();
-
break;
}
}
diff --git a/src/Symfony/Component/Mime/Email.php b/src/Symfony/Component/Mime/Email.php
index 2de52e68da161..e238ce39d1313 100644
--- a/src/Symfony/Component/Mime/Email.php
+++ b/src/Symfony/Component/Mime/Email.php
@@ -401,7 +401,7 @@ public function ensureValidity(): void
private function ensureBodyValid(): void
{
- if (null === $this->text && null === $this->html && !$this->attachments) {
+ if (null === $this->text && null === $this->html && !$this->attachments && null === parent::getBody()) {
throw new LogicException('A message must have a text or an HTML part or attachments.');
}
}
diff --git a/src/Symfony/Component/Mime/Header/PathHeader.php b/src/Symfony/Component/Mime/Header/PathHeader.php
index 63eb30af01bf8..4b0b7d3955673 100644
--- a/src/Symfony/Component/Mime/Header/PathHeader.php
+++ b/src/Symfony/Component/Mime/Header/PathHeader.php
@@ -57,6 +57,6 @@ public function getAddress(): Address
public function getBodyAsString(): string
{
- return '<'.$this->address->toString().'>';
+ return '<'.$this->address->getEncodedAddress().'>';
}
}
diff --git a/src/Symfony/Component/Mime/Part/Multipart/FormDataPart.php b/src/Symfony/Component/Mime/Part/Multipart/FormDataPart.php
index f2d6e27066356..ca4080198d4c2 100644
--- a/src/Symfony/Component/Mime/Part/Multipart/FormDataPart.php
+++ b/src/Symfony/Component/Mime/Part/Multipart/FormDataPart.php
@@ -13,7 +13,6 @@
use Symfony\Component\Mime\Exception\InvalidArgumentException;
use Symfony\Component\Mime\Part\AbstractMultipartPart;
-use Symfony\Component\Mime\Part\DataPart;
use Symfony\Component\Mime\Part\TextPart;
/**
@@ -24,7 +23,7 @@
final class FormDataPart extends AbstractMultipartPart
{
/**
- * @param array $fields
+ * @param array $fields
*/
public function __construct(
private array $fields = [],
diff --git a/src/Symfony/Component/Mime/Tests/EmailTest.php b/src/Symfony/Component/Mime/Tests/EmailTest.php
index ae61f26f605b4..3aa86c5f94623 100644
--- a/src/Symfony/Component/Mime/Tests/EmailTest.php
+++ b/src/Symfony/Component/Mime/Tests/EmailTest.php
@@ -695,4 +695,60 @@ public function testEmailsWithAttachmentsWhichAreAFileInstanceCanBeUnserialized(
$this->assertCount(1, $attachments);
$this->assertStringContainsString('foo_bar_xyz_123', $attachments[0]->getBody());
}
+
+ public function testInvalidBodyWithEmptyEmail()
+ {
+ $this->expectException(\LogicException::class);
+ $this->expectExceptionMessage('A message must have a text or an HTML part or attachments.');
+
+ (new Email())->ensureValidity();
+ }
+
+ public function testBodyWithTextIsValid()
+ {
+ $email = new Email();
+ $email->to('test@example.com')
+ ->from('test@example.com')
+ ->text('foo');
+
+ $email->ensureValidity();
+
+ $this->expectNotToPerformAssertions();
+ }
+
+ public function testBodyWithHtmlIsValid()
+ {
+ $email = new Email();
+ $email->to('test@example.com')
+ ->from('test@example.com')
+ ->html('foo');
+
+ $email->ensureValidity();
+
+ $this->expectNotToPerformAssertions();
+ }
+
+ public function testEmptyBodyWithAttachmentsIsValid()
+ {
+ $email = new Email();
+ $email->to('test@example.com')
+ ->from('test@example.com')
+ ->addPart(new DataPart('foo'));
+
+ $email->ensureValidity();
+
+ $this->expectNotToPerformAssertions();
+ }
+
+ public function testSetBodyIsValid()
+ {
+ $email = new Email();
+ $email->to('test@example.com')
+ ->from('test@example.com')
+ ->setBody(new TextPart('foo'));
+
+ $email->ensureValidity();
+
+ $this->expectNotToPerformAssertions();
+ }
}
diff --git a/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php b/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php
index b1892978c1a0b..b0a28fdbf992e 100644
--- a/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php
+++ b/src/Symfony/Component/Mime/Tests/Header/HeadersTest.php
@@ -346,4 +346,12 @@ public function testSetHeaderParameterNotParameterized()
$this->expectException(\LogicException::class);
$headers->setHeaderParameter('Content-Disposition', 'name', 'foo');
}
+
+ public function testPathHeaderHasNoName()
+ {
+ $headers = new Headers();
+
+ $headers->addPathHeader('Return-Path', new Address('some@path', 'any ignored name'));
+ $this->assertSame('', $headers->get('Return-Path')->getBodyAsString());
+ }
}
diff --git a/src/Symfony/Component/Notifier/Bridge/AmazonSns/Tests/AmazonSnsTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/AmazonSns/Tests/AmazonSnsTransportFactoryTest.php
index 05f57e68b6b6f..0d284a3af3641 100644
--- a/src/Symfony/Component/Notifier/Bridge/AmazonSns/Tests/AmazonSnsTransportFactoryTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/AmazonSns/Tests/AmazonSnsTransportFactoryTest.php
@@ -18,6 +18,12 @@ class AmazonSnsTransportFactoryTest extends AbstractTransportFactoryTestCase
{
public function createFactory(): AmazonSnsTransportFactory
{
+ // Tests will fail if a ~/.aws/config file exists with a default.region value,
+ // or if AWS_REGION env variable is set.
+ // Setting a profile & region names will bypass default options retrieved by \AsyncAws\Core::get
+ $_ENV['AWS_PROFILE'] = 'not-existing';
+ $_ENV['AWS_REGION'] = 'us-east-1';
+
return new AmazonSnsTransportFactory();
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php b/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php
index 3233159a28a0a..db8eff9e70f50 100644
--- a/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php
+++ b/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php
@@ -105,7 +105,7 @@ protected function doSend(MessageInterface $message): SentMessage
if (200 === $statusCode) {
$content = $response->toArray();
$sentMessage = new SentMessage($message, (string) $this);
- $sentMessage->setMessageId($content['cid']);
+ $sentMessage->setMessageId($content['uri']);
return $sentMessage;
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md b/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md
index d337db00df015..b4b57416c470c 100644
--- a/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md
+++ b/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md
@@ -5,6 +5,7 @@ CHANGELOG
---
* Add option to attach a media
+ * [BC Break] Change the returned message ID from record's 'cid' to 'uri'
7.1
---
diff --git a/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php
index 1cfa099e04537..09323174d8ce3 100644
--- a/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php
@@ -276,7 +276,11 @@ public function testParseFacetsUrlWithTrickyRegex()
public function testWithMedia()
{
- $transport = $this->createTransport(new MockHttpClient((function () {
+ // realistic sample values taken from https://docs.bsky.app/docs/advanced-guides/posts#post-record-structure
+ $recordUri = 'at://did:plc:u5cwb2mwiv2bfq53cjufe6yn/app.bsky.feed.post/3k4duaz5vfs2b';
+ $recordCid = 'bafyreibjifzpqj6o6wcq3hejh7y4z4z2vmiklkvykc57tw3pcbx3kxifpm';
+
+ $transport = $this->createTransport(new MockHttpClient((function () use ($recordUri, $recordCid) {
yield function (string $method, string $url, array $options) {
$this->assertSame('POST', $method);
$this->assertSame('https://bsky.social/xrpc/com.atproto.server.createSession', $url);
@@ -299,13 +303,13 @@ public function testWithMedia()
]]);
};
- yield function (string $method, string $url, array $options) {
+ yield function (string $method, string $url, array $options) use ($recordUri, $recordCid) {
$this->assertSame('POST', $method);
$this->assertSame('https://bsky.social/xrpc/com.atproto.repo.createRecord', $url);
$this->assertArrayHasKey('authorization', $options['normalized_headers']);
$this->assertSame('{"repo":null,"collection":"app.bsky.feed.post","record":{"$type":"app.bsky.feed.post","text":"Hello World!","createdAt":"2024-04-28T08:40:17.000000Z","embed":{"$type":"app.bsky.embed.images","images":[{"alt":"A fixture","image":{"$type":"blob","ref":{"$link":"bafkreibabalobzn6cd366ukcsjycp4yymjymgfxcv6xczmlgpemzkz3cfa"},"mimeType":"image\/png","size":760898}}]}}}', $options['body']);
- return new JsonMockResponse(['cid' => '103254962155278888']);
+ return new JsonMockResponse(['uri' => $recordUri, 'cid' => $recordCid]);
};
})()));
@@ -313,7 +317,26 @@ public function testWithMedia()
->attachMedia(new File(__DIR__.'/fixtures.gif'), 'A fixture');
$result = $transport->send(new ChatMessage('Hello World!', $options));
- $this->assertSame('103254962155278888', $result->getMessageId());
+ $this->assertSame($recordUri, $result->getMessageId());
+ }
+
+ public function testReturnedMessageId()
+ {
+ // realistic sample values taken from https://docs.bsky.app/docs/advanced-guides/posts#post-record-structure
+ $recordUri = 'at://did:plc:u5cwb2mwiv2bfq53cjufe6yn/app.bsky.feed.post/3k4duaz5vfs2b';
+ $recordCid = 'bafyreibjifzpqj6o6wcq3hejh7y4z4z2vmiklkvykc57tw3pcbx3kxifpm';
+
+ $client = new MockHttpClient(function () use ($recordUri, $recordCid) {
+ return new JsonMockResponse([
+ 'uri' => $recordUri,
+ 'cid' => $recordCid,
+ ]);
+ });
+
+ $transport = self::createTransport($client);
+ $message = $transport->send(new ChatMessage('Hello!'));
+
+ $this->assertSame($recordUri, $message->getMessageId());
}
/**
diff --git a/src/Symfony/Component/Notifier/Bridge/ClickSend/ClickSendTransport.php b/src/Symfony/Component/Notifier/Bridge/ClickSend/ClickSendTransport.php
index 8d8987e4f7c7a..65f48bcd7ac19 100644
--- a/src/Symfony/Component/Notifier/Bridge/ClickSend/ClickSendTransport.php
+++ b/src/Symfony/Component/Notifier/Bridge/ClickSend/ClickSendTransport.php
@@ -75,19 +75,19 @@ protected function doSend(MessageInterface $message): SentMessage
$options['from'] = $message->getFrom() ?: $this->from;
$options['source'] ??= $this->source;
$options['list_id'] ??= $this->listId;
- $options['from_email'] ?? $this->fromEmail;
+ $options['from_email'] ??= $this->fromEmail;
if (isset($options['from']) && !preg_match('/^[a-zA-Z0-9\s]{3,11}$/', $options['from']) && !preg_match('/^\+[1-9]\d{1,14}$/', $options['from'])) {
throw new InvalidArgumentException(\sprintf('The "From" number "%s" is not a valid phone number, shortcode, or alphanumeric sender ID.', $options['from']));
}
- if ($options['list_id'] ?? false) {
+ if (!$options['list_id']) {
$options['to'] = $message->getPhone();
}
$response = $this->client->request('POST', $endpoint, [
'auth_basic' => [$this->apiUsername, $this->apiKey],
- 'json' => array_filter($options),
+ 'json' => ['messages' => [array_filter($options)]],
]);
try {
diff --git a/src/Symfony/Component/Notifier/Bridge/ClickSend/Tests/ClickSendTransportTest.php b/src/Symfony/Component/Notifier/Bridge/ClickSend/Tests/ClickSendTransportTest.php
index 6afae4409fa57..532c5aceba3aa 100644
--- a/src/Symfony/Component/Notifier/Bridge/ClickSend/Tests/ClickSendTransportTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/ClickSend/Tests/ClickSendTransportTest.php
@@ -24,7 +24,7 @@
final class ClickSendTransportTest extends TransportTestCase
{
- public static function createTransport(?HttpClientInterface $client = null, string $from = 'test_from', string $source = 'test_source', int $listId = 99, string $fromEmail = 'foo@bar.com'): ClickSendTransport
+ public static function createTransport(?HttpClientInterface $client = null, ?string $from = 'test_from', ?string $source = 'test_source', ?int $listId = 99, ?string $fromEmail = 'foo@bar.com'): ClickSendTransport
{
return new ClickSendTransport('test_username', 'test_key', $from, $source, $listId, $fromEmail, $client ?? new MockHttpClient());
}
@@ -63,16 +63,47 @@ public function testNoInvalidArgumentExceptionIsThrownIfFromIsValid(string $from
$response = $this->createMock(ResponseInterface::class);
$response->expects(self::exactly(2))->method('getStatusCode')->willReturn(200);
$response->expects(self::once())->method('getContent')->willReturn('');
- $client = new MockHttpClient(function (string $method, string $url) use ($response): ResponseInterface {
+ $client = new MockHttpClient(function (string $method, string $url, array $options) use ($response): ResponseInterface {
self::assertSame('POST', $method);
self::assertSame('https://rest.clicksend.com/v3/sms/send', $url);
+ $body = json_decode($options['body'], true);
+ self::assertIsArray($body);
+ self::assertArrayHasKey('messages', $body);
+ $message = reset($body['messages']);
+ self::assertArrayHasKey('from_email', $message);
+ self::assertArrayHasKey('list_id', $message);
+ self::assertArrayNotHasKey('to', $message);
+
return $response;
});
$transport = $this->createTransport($client, $from);
$transport->send($message);
}
+ public function testNoInvalidArgumentExceptionIsThrownIfFromIsValidWithoutOptionalParameters()
+ {
+ $message = new SmsMessage('+33612345678', 'Hello!');
+ $response = $this->createMock(ResponseInterface::class);
+ $response->expects(self::exactly(2))->method('getStatusCode')->willReturn(200);
+ $response->expects(self::once())->method('getContent')->willReturn('');
+ $client = new MockHttpClient(function (string $method, string $url, array $options) use ($response): ResponseInterface {
+ self::assertSame('POST', $method);
+ self::assertSame('https://rest.clicksend.com/v3/sms/send', $url);
+
+ $body = json_decode($options['body'], true);
+ self::assertIsArray($body);
+ self::assertArrayHasKey('messages', $body);
+ $message = reset($body['messages']);
+ self::assertArrayNotHasKey('list_id', $message);
+ self::assertArrayHasKey('to', $message);
+
+ return $response;
+ });
+ $transport = $this->createTransport($client, null, null, null, null);
+ $transport->send($message);
+ }
+
public static function toStringProvider(): iterable
{
yield ['clicksend://rest.clicksend.com?from=test_from&source=test_source&list_id=99&from_email=foo%40bar.com', self::createTransport()];
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordAuthorEmbedObject.php b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordAuthorEmbedObject.php
index a69b8846df48c..4a8356baceec5 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordAuthorEmbedObject.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordAuthorEmbedObject.php
@@ -25,7 +25,7 @@ final class DiscordAuthorEmbedObject extends AbstractDiscordEmbedObject
*/
public function name(string $name): static
{
- if (\strlen($name) > self::NAME_LIMIT) {
+ if (mb_strlen($name, 'UTF-8') > self::NAME_LIMIT) {
throw new LengthException(\sprintf('Maximum length for the name is %d characters.', self::NAME_LIMIT));
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordEmbed.php b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordEmbed.php
index 262877f7907dc..29f6750ebd3fb 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordEmbed.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordEmbed.php
@@ -27,7 +27,7 @@ final class DiscordEmbed extends AbstractDiscordEmbed
*/
public function title(string $title): static
{
- if (\strlen($title) > self::TITLE_LIMIT) {
+ if (mb_strlen($title, 'UTF-8') > self::TITLE_LIMIT) {
throw new LengthException(\sprintf('Maximum length for the title is %d characters.', self::TITLE_LIMIT));
}
@@ -41,7 +41,7 @@ public function title(string $title): static
*/
public function description(string $description): static
{
- if (\strlen($description) > self::DESCRIPTION_LIMIT) {
+ if (mb_strlen($description, 'UTF-8') > self::DESCRIPTION_LIMIT) {
throw new LengthException(\sprintf('Maximum length for the description is %d characters.', self::DESCRIPTION_LIMIT));
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFieldEmbedObject.php b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFieldEmbedObject.php
index 5ff44c3cf6c88..b529f55d602ee 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFieldEmbedObject.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFieldEmbedObject.php
@@ -26,7 +26,7 @@ final class DiscordFieldEmbedObject extends AbstractDiscordEmbedObject
*/
public function name(string $name): static
{
- if (\strlen($name) > self::NAME_LIMIT) {
+ if (mb_strlen($name, 'UTF-8') > self::NAME_LIMIT) {
throw new LengthException(\sprintf('Maximum length for the name is %d characters.', self::NAME_LIMIT));
}
@@ -40,7 +40,7 @@ public function name(string $name): static
*/
public function value(string $value): static
{
- if (\strlen($value) > self::VALUE_LIMIT) {
+ if (mb_strlen($value, 'UTF-8') > self::VALUE_LIMIT) {
throw new LengthException(\sprintf('Maximum length for the value is %d characters.', self::VALUE_LIMIT));
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFooterEmbedObject.php b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFooterEmbedObject.php
index d768da6d5b641..8d606ee6c4e68 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFooterEmbedObject.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Embeds/DiscordFooterEmbedObject.php
@@ -25,7 +25,7 @@ final class DiscordFooterEmbedObject extends AbstractDiscordEmbedObject
*/
public function text(string $text): static
{
- if (\strlen($text) > self::TEXT_LIMIT) {
+ if (mb_strlen($text, 'UTF-8') > self::TEXT_LIMIT) {
throw new LengthException(\sprintf('Maximum length for the text is %d characters.', self::TEXT_LIMIT));
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordAuthorEmbedObjectTest.php b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordAuthorEmbedObjectTest.php
index 1fa525505d909..dcc6d2198b527 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordAuthorEmbedObjectTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordAuthorEmbedObjectTest.php
@@ -38,6 +38,6 @@ public function testThrowsWhenNameExceedsCharacterLimit()
$this->expectException(LengthException::class);
$this->expectExceptionMessage('Maximum length for the name is 256 characters.');
- (new DiscordAuthorEmbedObject())->name(str_repeat('h', 257));
+ (new DiscordAuthorEmbedObject())->name(str_repeat('š', 257));
}
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordEmbedTest.php b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordEmbedTest.php
index 02fdd40b5d64a..f79786f6ae7e2 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordEmbedTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordEmbedTest.php
@@ -45,7 +45,7 @@ public function testThrowsWhenTitleExceedsCharacterLimit()
$this->expectException(LengthException::class);
$this->expectExceptionMessage('Maximum length for the title is 256 characters.');
- (new DiscordEmbed())->title(str_repeat('h', 257));
+ (new DiscordEmbed())->title(str_repeat('š', 257));
}
public function testThrowsWhenDescriptionExceedsCharacterLimit()
@@ -53,7 +53,7 @@ public function testThrowsWhenDescriptionExceedsCharacterLimit()
$this->expectException(LengthException::class);
$this->expectExceptionMessage('Maximum length for the description is 4096 characters.');
- (new DiscordEmbed())->description(str_repeat('h', 4097));
+ (new DiscordEmbed())->description(str_repeat('š', 4097));
}
public function testThrowsWhenFieldsLimitReached()
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFieldEmbedObjectTest.php b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFieldEmbedObjectTest.php
index c432aab995385..77594c458793e 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFieldEmbedObjectTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFieldEmbedObjectTest.php
@@ -36,7 +36,7 @@ public function testThrowsWhenNameExceedsCharacterLimit()
$this->expectException(LengthException::class);
$this->expectExceptionMessage('Maximum length for the name is 256 characters.');
- (new DiscordFieldEmbedObject())->name(str_repeat('h', 257));
+ (new DiscordFieldEmbedObject())->name(str_repeat('š', 257));
}
public function testThrowsWhenValueExceedsCharacterLimit()
@@ -44,6 +44,6 @@ public function testThrowsWhenValueExceedsCharacterLimit()
$this->expectException(LengthException::class);
$this->expectExceptionMessage('Maximum length for the value is 1024 characters.');
- (new DiscordFieldEmbedObject())->value(str_repeat('h', 1025));
+ (new DiscordFieldEmbedObject())->value(str_repeat('š', 1025));
}
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFooterEmbedObjectTest.php b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFooterEmbedObjectTest.php
index c9d50a46b89d2..b1c60d6f74d91 100644
--- a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFooterEmbedObjectTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/Embeds/DiscordFooterEmbedObjectTest.php
@@ -36,6 +36,6 @@ public function testThrowsWhenTextExceedsCharacterLimit()
$this->expectException(LengthException::class);
$this->expectExceptionMessage('Maximum length for the text is 2048 characters.');
- (new DiscordFooterEmbedObject())->text(str_repeat('h', 2049));
+ (new DiscordFooterEmbedObject())->text(str_repeat('š', 2049));
}
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Ntfy/composer.json b/src/Symfony/Component/Notifier/Bridge/Ntfy/composer.json
index fc0259f0a3fb2..d77d151215db3 100644
--- a/src/Symfony/Component/Notifier/Bridge/Ntfy/composer.json
+++ b/src/Symfony/Component/Notifier/Bridge/Ntfy/composer.json
@@ -1,7 +1,7 @@
{
"name": "symfony/ntfy-notifier",
"type": "symfony-notifier-bridge",
- "description": "Symfony Ntyf Notifier Bridge",
+ "description": "Symfony Ntfy Notifier Bridge",
"keywords": ["ntfy", "notifier"],
"homepage": "https://symfony.com",
"license": "MIT",
diff --git a/src/Symfony/Component/Notifier/Bridge/Sweego/Tests/SweegoTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Sweego/Tests/SweegoTransportTest.php
index bed8c22fb36ca..35d86d7793707 100644
--- a/src/Symfony/Component/Notifier/Bridge/Sweego/Tests/SweegoTransportTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Sweego/Tests/SweegoTransportTest.php
@@ -12,6 +12,7 @@
namespace Symfony\Component\Notifier\Bridge\Sweego\Tests;
use Symfony\Component\HttpClient\MockHttpClient;
+use Symfony\Component\HttpClient\Response\JsonMockResponse;
use Symfony\Component\Notifier\Bridge\Sweego\SweegoTransport;
use Symfony\Component\Notifier\Exception\UnsupportedMessageTypeException;
use Symfony\Component\Notifier\Message\ChatMessage;
@@ -68,4 +69,22 @@ public function testSendWithInvalidMessageType()
$message = $this->createMock(MessageInterface::class);
$transport->send($message);
}
+
+ public function testSendSmsMessage()
+ {
+ $client = new MockHttpClient(function ($method, $url, $options) {
+ $this->assertSame('POST', $method);
+ $this->assertSame('https://api.sweego.io/send', $url);
+
+ $body = json_decode($options['body'], true);
+ $this->assertSame('sms', $body['channel']);
+
+ return new JsonMockResponse(['swg_uids' => ['123']]);
+ });
+
+ $transport = self::createTransport($client);
+ $sentMessage = $transport->send(new SmsMessage('0611223344', 'Hello!'));
+
+ $this->assertSame('123', $sentMessage->getMessageId());
+ }
}
diff --git a/src/Symfony/Component/Notifier/Tests/Channel/AbstractChannelTest.php b/src/Symfony/Component/Notifier/Tests/Channel/AbstractChannelTest.php
index ae93ba2732d85..2f360d83c1685 100644
--- a/src/Symfony/Component/Notifier/Tests/Channel/AbstractChannelTest.php
+++ b/src/Symfony/Component/Notifier/Tests/Channel/AbstractChannelTest.php
@@ -34,7 +34,6 @@ class DummyChannel extends AbstractChannel
{
public function notify(Notification $notification, RecipientInterface $recipient, ?string $transportName = null): void
{
- return;
}
public function supports(Notification $notification, RecipientInterface $recipient): bool
diff --git a/src/Symfony/Component/Process/Pipes/UnixPipes.php b/src/Symfony/Component/Process/Pipes/UnixPipes.php
index 8e95afaafb877..6f95a3328ffd1 100644
--- a/src/Symfony/Component/Process/Pipes/UnixPipes.php
+++ b/src/Symfony/Component/Process/Pipes/UnixPipes.php
@@ -70,7 +70,7 @@ public function getDescriptors(): array
return [
['pty'],
['pty'],
- ['pty'],
+ ['pipe', 'w'], // stderr needs to be in a pipe to correctly split error and output, since PHP will use the same stream for both
];
}
diff --git a/src/Symfony/Component/Process/Process.php b/src/Symfony/Component/Process/Process.php
index 03ce70e5993e6..6fe1086ea5bb9 100644
--- a/src/Symfony/Component/Process/Process.php
+++ b/src/Symfony/Component/Process/Process.php
@@ -82,7 +82,6 @@ class Process implements \IteratorAggregate
private WindowsPipes|UnixPipes $processPipes;
private ?int $latestSignal = null;
- private ?int $cachedExitCode = null;
private static ?bool $sigchild = null;
private static array $executables = [];
@@ -1324,21 +1323,10 @@ protected function updateStatus(bool $blocking): void
return;
}
- $this->processInformation = proc_get_status($this->process);
- $running = $this->processInformation['running'];
-
- // In PHP < 8.3, "proc_get_status" only returns the correct exit status on the first call.
- // Subsequent calls return -1 as the process is discarded. This workaround caches the first
- // retrieved exit status for consistent results in later calls, mimicking PHP 8.3 behavior.
- if (\PHP_VERSION_ID < 80300) {
- if (!isset($this->cachedExitCode) && !$running && -1 !== $this->processInformation['exitcode']) {
- $this->cachedExitCode = $this->processInformation['exitcode'];
- }
-
- if (isset($this->cachedExitCode) && !$running && -1 === $this->processInformation['exitcode']) {
- $this->processInformation['exitcode'] = $this->cachedExitCode;
- }
+ if ($this->processInformation['running'] ?? true) {
+ $this->processInformation = proc_get_status($this->process);
}
+ $running = $this->processInformation['running'];
$this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running);
diff --git a/src/Symfony/Component/Process/Tests/ProcessTest.php b/src/Symfony/Component/Process/Tests/ProcessTest.php
index 61a0269251c86..00d06208eb6a8 100644
--- a/src/Symfony/Component/Process/Tests/ProcessTest.php
+++ b/src/Symfony/Component/Process/Tests/ProcessTest.php
@@ -559,6 +559,20 @@ public function testExitCodeTextIsNullWhenExitCodeIsNull()
$this->assertNull($process->getExitCodeText());
}
+ public function testStderrNotMixedWithStdout()
+ {
+ if (!Process::isPtySupported()) {
+ $this->markTestSkipped('PTY is not supported on this operating system.');
+ }
+
+ $process = $this->getProcess('echo "foo" && echo "bar" >&2');
+ $process->setPty(true);
+ $process->run();
+
+ $this->assertSame("foo\r\n", $process->getOutput());
+ $this->assertSame("bar\n", $process->getErrorOutput());
+ }
+
public function testPTYCommand()
{
if (!Process::isPtySupported()) {
@@ -732,6 +746,9 @@ public function testProcessIsSignaledIfStopped()
if ('\\' === \DIRECTORY_SEPARATOR) {
$this->markTestSkipped('Windows does not support POSIX signals');
}
+ if (\PHP_VERSION_ID < 80300 && isset($_SERVER['GITHUB_ACTIONS'])) {
+ $this->markTestSkipped('Transient on GHA with PHP < 8.3');
+ }
$process = $this->getProcessForCode('sleep(32);');
$process->start();
@@ -1683,6 +1700,9 @@ public function testNotIgnoringSignal()
if (!\function_exists('pcntl_signal')) {
$this->markTestSkipped('pnctl extension is required.');
}
+ if (\PHP_VERSION_ID < 80300 && isset($_SERVER['GITHUB_ACTIONS'])) {
+ $this->markTestSkipped('Transient on GHA with PHP < 8.3');
+ }
$process = $this->getProcess(['sleep', '10']);
diff --git a/src/Symfony/Component/PropertyAccess/PropertyAccessor.php b/src/Symfony/Component/PropertyAccess/PropertyAccessor.php
index b8c9d678edabc..8685407861ed1 100644
--- a/src/Symfony/Component/PropertyAccess/PropertyAccessor.php
+++ b/src/Symfony/Component/PropertyAccess/PropertyAccessor.php
@@ -72,11 +72,11 @@ class PropertyAccessor implements PropertyAccessorInterface
* Should not be used by application code. Use
* {@link PropertyAccess::createPropertyAccessor()} instead.
*
- * @param int $magicMethods A bitwise combination of the MAGIC_* constants
- * to specify the allowed magic methods (__get, __set, __call)
- * or self::DISALLOW_MAGIC_METHODS for none
- * @param int $throw A bitwise combination of the THROW_* constants
- * to specify when exceptions should be thrown
+ * @param int $magicMethodsFlags A bitwise combination of the MAGIC_* constants
+ * to specify the allowed magic methods (__get, __set, __call)
+ * or self::DISALLOW_MAGIC_METHODS for none
+ * @param int $throw A bitwise combination of the THROW_* constants
+ * to specify when exceptions should be thrown
*/
public function __construct(
private int $magicMethodsFlags = self::MAGIC_GET | self::MAGIC_SET,
@@ -109,6 +109,11 @@ public function getValue(object|array $objectOrArray, string|PropertyPathInterfa
return $propertyValues[\count($propertyValues) - 1][self::VALUE];
}
+ /**
+ * @template T of object|array
+ * @param T $objectOrArray
+ * @param-out ($objectOrArray is array ? array : T) $objectOrArray
+ */
public function setValue(object|array &$objectOrArray, string|PropertyPathInterface $propertyPath, mixed $value): void
{
if (\is_object($objectOrArray) && (false === strpbrk((string) $propertyPath, '.[') || $objectOrArray instanceof \stdClass && property_exists($objectOrArray, $propertyPath))) {
@@ -629,15 +634,22 @@ private function getWriteInfo(string $class, string $property, mixed $value): Pr
*/
private function isPropertyWritable(object $object, string $property): bool
{
+ if ($object instanceof \stdClass && property_exists($object, $property)) {
+ return true;
+ }
+
$mutatorForArray = $this->getWriteInfo($object::class, $property, []);
+ if (PropertyWriteInfo::TYPE_PROPERTY === $mutatorForArray->getType()) {
+ return $mutatorForArray->getVisibility() === 'public';
+ }
- if (PropertyWriteInfo::TYPE_NONE !== $mutatorForArray->getType() || ($object instanceof \stdClass && property_exists($object, $property))) {
+ if (PropertyWriteInfo::TYPE_NONE !== $mutatorForArray->getType()) {
return true;
}
$mutator = $this->getWriteInfo($object::class, $property, '');
- return PropertyWriteInfo::TYPE_NONE !== $mutator->getType() || ($object instanceof \stdClass && property_exists($object, $property));
+ return PropertyWriteInfo::TYPE_NONE !== $mutator->getType();
}
/**
diff --git a/src/Symfony/Component/PropertyAccess/Tests/Fixtures/AsymmetricVisibility.php b/src/Symfony/Component/PropertyAccess/Tests/Fixtures/AsymmetricVisibility.php
new file mode 100644
index 0000000000000..5a74350b17a26
--- /dev/null
+++ b/src/Symfony/Component/PropertyAccess/Tests/Fixtures/AsymmetricVisibility.php
@@ -0,0 +1,21 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\PropertyAccess\Tests\Fixtures;
+
+class AsymmetricVisibility
+{
+ public public(set) mixed $publicPublic = null;
+ public protected(set) mixed $publicProtected = null;
+ public private(set) mixed $publicPrivate = null;
+ private private(set) mixed $privatePrivate = null;
+ public bool $virtualNoSetHook { get => true; }
+}
diff --git a/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php b/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
index 37082466c95b1..4603f89d76582 100644
--- a/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
+++ b/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
@@ -20,6 +20,7 @@
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessor;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
+use Symfony\Component\PropertyAccess\Tests\Fixtures\AsymmetricVisibility;
use Symfony\Component\PropertyAccess\Tests\Fixtures\ExtendedUninitializedProperty;
use Symfony\Component\PropertyAccess\Tests\Fixtures\ReturnTyped;
use Symfony\Component\PropertyAccess\Tests\Fixtures\TestAdderRemoverInvalidArgumentLength;
@@ -1046,4 +1047,62 @@ private function createUninitializedObjectPropertyGhost(): UninitializedObjectPr
return $class::createLazyGhost(initializer: function ($instance) {
});
}
+
+ /**
+ * @requires PHP 8.4
+ */
+ public function testIsWritableWithAsymmetricVisibility()
+ {
+ $object = new AsymmetricVisibility();
+
+ $this->assertTrue($this->propertyAccessor->isWritable($object, 'publicPublic'));
+ $this->assertFalse($this->propertyAccessor->isWritable($object, 'publicProtected'));
+ $this->assertFalse($this->propertyAccessor->isWritable($object, 'publicPrivate'));
+ $this->assertFalse($this->propertyAccessor->isWritable($object, 'privatePrivate'));
+ $this->assertFalse($this->propertyAccessor->isWritable($object, 'virtualNoSetHook'));
+ }
+
+ /**
+ * @requires PHP 8.4
+ */
+ public function testIsReadableWithAsymmetricVisibility()
+ {
+ $object = new AsymmetricVisibility();
+
+ $this->assertTrue($this->propertyAccessor->isReadable($object, 'publicPublic'));
+ $this->assertTrue($this->propertyAccessor->isReadable($object, 'publicProtected'));
+ $this->assertTrue($this->propertyAccessor->isReadable($object, 'publicPrivate'));
+ $this->assertFalse($this->propertyAccessor->isReadable($object, 'privatePrivate'));
+ $this->assertTrue($this->propertyAccessor->isReadable($object, 'virtualNoSetHook'));
+ }
+
+ /**
+ * @requires PHP 8.4
+ *
+ * @dataProvider setValueWithAsymmetricVisibilityDataProvider
+ */
+ public function testSetValueWithAsymmetricVisibility(string $propertyPath, ?string $expectedException)
+ {
+ $object = new AsymmetricVisibility();
+
+ if ($expectedException) {
+ $this->expectException($expectedException);
+ } else {
+ $this->expectNotToPerformAssertions();
+ }
+
+ $this->propertyAccessor->setValue($object, $propertyPath, true);
+ }
+
+ /**
+ * @return iterable
+ */
+ public static function setValueWithAsymmetricVisibilityDataProvider(): iterable
+ {
+ yield ['publicPublic', null];
+ yield ['publicProtected', \Error::class];
+ yield ['publicPrivate', \Error::class];
+ yield ['privatePrivate', NoSuchPropertyException::class];
+ yield ['virtualNoSetHook', \Error::class];
+ }
}
diff --git a/src/Symfony/Component/PropertyInfo/Extractor/PhpStanExtractor.php b/src/Symfony/Component/PropertyInfo/Extractor/PhpStanExtractor.php
index cbf634933511a..f5f83d968f7ba 100644
--- a/src/Symfony/Component/PropertyInfo/Extractor/PhpStanExtractor.php
+++ b/src/Symfony/Component/PropertyInfo/Extractor/PhpStanExtractor.php
@@ -16,6 +16,8 @@
use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
+use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
+use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Lexer\Lexer;
use PHPStan\PhpDocParser\Parser\ConstExprParser;
use PHPStan\PhpDocParser\Parser\PhpDocParser;
@@ -206,7 +208,7 @@ public function getType(string $class, string $property, array $context = []): ?
$types = [];
foreach ($docNode->getTagsByName($tag) as $tagDocNode) {
- if ($tagDocNode->value instanceof InvalidTagValueNode) {
+ if (!$tagDocNode->value instanceof ParamTagValueNode && !$tagDocNode->value instanceof ReturnTagValueNode && !$tagDocNode->value instanceof VarTagValueNode) {
continue;
}
diff --git a/src/Symfony/Component/PropertyInfo/Extractor/ReflectionExtractor.php b/src/Symfony/Component/PropertyInfo/Extractor/ReflectionExtractor.php
index f20196d99f591..340d3684dd3e4 100644
--- a/src/Symfony/Component/PropertyInfo/Extractor/ReflectionExtractor.php
+++ b/src/Symfony/Component/PropertyInfo/Extractor/ReflectionExtractor.php
@@ -709,12 +709,22 @@ private function isAllowedProperty(string $class, string $property, bool $writeA
try {
$reflectionProperty = new \ReflectionProperty($class, $property);
- if ($writeAccessRequired && $reflectionProperty->isReadOnly()) {
- return false;
- }
+ if ($writeAccessRequired) {
+ if ($reflectionProperty->isReadOnly()) {
+ return false;
+ }
+
+ if (\PHP_VERSION_ID >= 80400 && $reflectionProperty->isProtectedSet()) {
+ return (bool) ($this->propertyReflectionFlags & \ReflectionProperty::IS_PROTECTED);
+ }
- if (\PHP_VERSION_ID >= 80400 && $writeAccessRequired && ($reflectionProperty->isProtectedSet() || $reflectionProperty->isPrivateSet())) {
- return false;
+ if (\PHP_VERSION_ID >= 80400 && $reflectionProperty->isPrivateSet()) {
+ return (bool) ($this->propertyReflectionFlags & \ReflectionProperty::IS_PRIVATE);
+ }
+
+ if (\PHP_VERSION_ID >= 80400 &&$reflectionProperty->isVirtual() && !$reflectionProperty->hasHook(\PropertyHookType::Set)) {
+ return false;
+ }
}
return (bool) ($reflectionProperty->getModifiers() & $this->propertyReflectionFlags);
@@ -955,6 +965,20 @@ private function getReadVisiblityForMethod(\ReflectionMethod $reflectionMethod):
private function getWriteVisiblityForProperty(\ReflectionProperty $reflectionProperty): string
{
+ if (\PHP_VERSION_ID >= 80400) {
+ if ($reflectionProperty->isVirtual() && !$reflectionProperty->hasHook(\PropertyHookType::Set)) {
+ return PropertyWriteInfo::VISIBILITY_PRIVATE;
+ }
+
+ if ($reflectionProperty->isPrivateSet()) {
+ return PropertyWriteInfo::VISIBILITY_PRIVATE;
+ }
+
+ if ($reflectionProperty->isProtectedSet()) {
+ return PropertyWriteInfo::VISIBILITY_PROTECTED;
+ }
+ }
+
if ($reflectionProperty->isPrivate()) {
return PropertyWriteInfo::VISIBILITY_PRIVATE;
}
diff --git a/src/Symfony/Component/PropertyInfo/Extractor/SerializerExtractor.php b/src/Symfony/Component/PropertyInfo/Extractor/SerializerExtractor.php
index f2c80a11d0f34..1f7a742e01f3d 100644
--- a/src/Symfony/Component/PropertyInfo/Extractor/SerializerExtractor.php
+++ b/src/Symfony/Component/PropertyInfo/Extractor/SerializerExtractor.php
@@ -34,7 +34,7 @@ public function getProperties(string $class, array $context = []): ?array
return null;
}
- if (!$this->classMetadataFactory->getMetadataFor($class))
10000
{
+ if (!$this->classMetadataFactory->hasMetadataFor($class)) {
return null;
}
diff --git a/src/Symfony/Component/PropertyInfo/PropertyInfoCacheExtractor.php b/src/Symfony/Component/PropertyInfo/PropertyInfoCacheExtractor.php
index 2ea447deed41c..911e9f6350af3 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyInfoCacheExtractor.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyInfoCacheExtractor.php
@@ -12,6 +12,7 @@
namespace Symfony\Component\PropertyInfo;
use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\PropertyInfo\Util\LegacyTypeConverter;
use Symfony\Component\TypeInfo\Type;
/**
@@ -58,7 +59,40 @@ public function getProperties(string $class, array $context = []): ?array
public function getType(string $class, string $property, array $context = []): ?Type
{
- return $this->extract('getType', [$class, $property, $context]);
+ try {
+ $serializedArguments = serialize([$class, $property, $context]);
+ } catch (\Exception) {
+ // If arguments are not serializable, skip the cache
+ if (method_exists($this->propertyInfoExtractor, 'getType')) {
+ return $this->propertyInfoExtractor->getType($class, $property, $context);
+ }
+
+ return LegacyTypeConverter::toTypeInfoType($this->propertyInfoExtractor->getTypes($class, $property, $context));
+ }
+
+ // Calling rawurlencode escapes special characters not allowed in PSR-6's keys
+ $key = rawurlencode('getType.'.$serializedArguments);
+
+ if (\array_key_exists($key, $this->arrayCache)) {
+ return $this->arrayCache[$key];
+ }
+
+ $item = $this->cacheItemPool->getItem($key);
+
+ if ($item->isHit()) {
+ return $this->arrayCache[$key] = $item->get();
+ }
+
+ if (method_exists($this->propertyInfoExtractor, 'getType')) {
+ $value = $this->propertyInfoExtractor->getType($class, $property, $context);
+ } else {
+ $value = LegacyTypeConverter::toTypeInfoType($this->propertyInfoExtractor->getTypes($class, $property, $context));
+ }
+
+ $item->set($value);
+ $this->cacheItemPool->save($item);
+
+ return $this->arrayCache[$key] = $value;
}
public function getTypes(string $class, string $property, array $context = []): ?array
diff --git a/src/Symfony/Component/PropertyInfo/PropertyInfoExtractor.php b/src/Symfony/Component/PropertyInfo/PropertyInfoExtractor.php
index 5e1c6a2a71e63..edbc6ef6140b8 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyInfoExtractor.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyInfoExtractor.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\PropertyInfo;
+use Symfony\Component\PropertyInfo\Util\LegacyTypeConverter;
use Symfony\Component\TypeInfo\Type;
/**
@@ -55,7 +56,23 @@ public function getLongDescription(string $class, string $property, array $conte
public function getType(string $class, string $property, array $context = []): ?Type
{
- return $this->extract($this->typeExtractors, 'getType', [$class, $property, $context]);
+ foreach ($this->typeExtractors as $extractor) {
+ if (!method_exists($extractor, 'getType')) {
+ $legacyTypes = $extractor->getTypes($class, $property, $context);
+
+ if (null !== $legacyTypes) {
+ return LegacyTypeConverter::toTypeInfoType($legacyTypes);
+ }
+
+ continue;
+ }
+
+ if (null !== $value = $extractor->getType($class, $property, $context)) {
+ return $value;
+ }
+ }
+
+ return null;
}
public function getTypes(string $class, string $property, array $context = []): ?array
diff --git a/src/Symfony/Component/PropertyInfo/PropertyReadInfo.php b/src/Symfony/Component/PropertyInfo/PropertyReadInfo.php
index 8de070dc046c9..d006e32483896 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyReadInfo.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyReadInfo.php
@@ -15,8 +15,6 @@
* The property read info tells how a property can be read.
*
* @author Joel Wurtz
- *
- * @internal
*/
final class PropertyReadInfo
{
diff --git a/src/Symfony/Component/PropertyInfo/PropertyWriteInfo.php b/src/Symfony/Component/PropertyInfo/PropertyWriteInfo.php
index 6bc7abcdf849e..81ce7eda6d5b0 100644
--- a/src/Symfony/Component/PropertyInfo/PropertyWriteInfo.php
+++ b/src/Symfony/Component/PropertyInfo/PropertyWriteInfo.php
@@ -15,8 +15,6 @@
* The write mutator defines how a property can be written.
*
* @author Joel Wurtz
- *
- * @internal
*/
final class PropertyWriteInfo
{
diff --git a/src/Symfony/Component/PropertyInfo/Tests/Extractor/PhpStanExtractorTest.php b/src/Symfony/Component/PropertyInfo/Tests/Extractor/PhpStanExtractorTest.php
index 6248e4966dc15..d7aaac1b226a7 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/Extractor/PhpStanExtractorTest.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/Extractor/PhpStanExtractorTest.php
@@ -14,15 +14,18 @@
use PHPUnit\Framework\TestCase;
use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
use Symfony\Component\PropertyInfo\Extractor\PhpStanExtractor;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\Clazz;
use Symfony\Component\PropertyInfo\Tests\Fixtures\ConstructorDummy;
use Symfony\Component\PropertyInfo\Tests\Fixtures\ConstructorDummyWithoutDocBlock;
use Symfony\Component\PropertyInfo\Tests\Fixtures\DefaultValue;
use Symfony\Component\PropertyInfo\Tests\Fixtures\DockBlockFallback;
use Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy;
use Symfony\Component\PropertyInfo\Tests\Fixtures\DummyCollection;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\DummyGeneric;
use Symfony\Component\PropertyInfo\Tests\Fixtures\DummyNamespace;
use Symfony\Component\PropertyInfo\Tests\Fixtures\DummyPropertyAndGetterWithDifferentTypes;
use Symfony\Component\PropertyInfo\Tests\Fixtures\DummyUnionType;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\IFace;
use Symfony\Component\PropertyInfo\Tests\Fixtures\IntRangeDummy;
use Symfony\Component\PropertyInfo\Tests\Fixtures\InvalidDummy;
use Symfony\Component\PropertyInfo\Tests\Fixtures\ParentDummy;
@@ -552,6 +555,77 @@ public static function allowPrivateAccessLegacyProvider(): array
];
}
+ /**
+ * @param list $expectedTypes
+ *
+ * @dataProvider legacyGenericsProvider
+ */
+ public function testGenericsLegacy(string $property, array $expectedTypes)
+ {
+ $this->assertEquals($expectedTypes, $this->extractor->getTypes(DummyGeneric::class, $property));
+ }
+
+ /**
+ * @return iterable}>
+ */
+ public static function legacyGenericsProvider(): iterable
+ {
+ yield [
+ 'basicClass',
+ [
+ new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: Clazz::class,
+ collectionValueType: new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: Dummy::class,
+ )
+ ),
+ ],
+ ];
+ yield [
+ 'nullableClass',
+ [
+ new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: Clazz::class,
+ nullable: true,
+ collectionValueType: new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: Dummy::class,
+ )
+ ),
+ ],
+ ];
+ yield [
+ 'basicInterface',
+ [
+ new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: IFace::class,
+ collectionValueType: new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: Dummy::class,
+ )
+ ),
+ ],
+ ];
+ yield [
+ 'nullableInterface',
+ [
+ new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: IFace::class,
+ nullable: true,
+ collectionValueType: new LegacyType(
+ builtinType: LegacyType::BUILTIN_TYPE_OBJECT,
+ class: Dummy::class,
+ )
+ ),
+ ],
+ ];
+ }
+
/**
* @dataProvider typesProvider
*/
@@ -620,6 +694,7 @@ public static function invalidTypesProvider(): iterable
yield 'stat' => ['stat'];
yield 'foo' => ['foo'];
yield 'bar' => ['bar'];
+ yield 'baz' => ['baz'];
}
/**
@@ -968,7 +1043,41 @@ public static function allowPrivateAccessProvider(): array
public function testGenericInterface()
{
- $this->assertNull($this->extractor->getTypes(Dummy::class, 'genericInterface'));
+ $this->assertEquals(
+ Type::generic(Type::enum(\BackedEnum::class), Type::string()),
+ $this->extractor->getType(Dummy::class, 'genericInterface'),
+ );
+ }
+
+ /**
+ * @dataProvider genericsProvider
+ */
+ public function testGenerics(string $property, Type $expectedType)
+ {
+ $this->assertEquals($expectedType, $this->extractor->getType(DummyGeneric::class, $property));
+ }
+
+ /**
+ * @return iterable
+ */
+ public static function genericsProvider(): iterable
+ {
+ yield [
+ 'basicClass',
+ Type::generic(Type::object(Clazz::class), Type::object(Dummy::class)),
+ ];
+ yield [
+ 'nullableClass',
+ Type::nullable(Type::generic(Type::object(Clazz::class), Type::object(Dummy::class))),
+ ];
+ yield [
+ 'basicInterface',
+ Type::generic(Type::object(IFace::class), Type::object(Dummy::class)),
+ ];
+ yield [
+ 'nullableInterface',
+ Type::nullable(Type::generic(Type::object(IFace::class), Type::object(Dummy::class))),
+ ];
}
}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php b/src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
index 8d4d472fae1ab..aea4476ddd0f2 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
@@ -32,6 +32,7 @@
use Symfony\Component\PropertyInfo\Tests\Fixtures\Php81Dummy;
use Symfony\Component\PropertyInfo\Tests\Fixtures\Php82Dummy;
use Symfony\Component\PropertyInfo\Tests\Fixtures\SnakeCaseDummy;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\VirtualProperties;
use Symfony\Component\PropertyInfo\Type as LegacyType;
use Symfony\Component\TypeInfo\Type;
use Symfony\Component\TypeInfo\Type\NullableType;
@@ -659,6 +660,17 @@ public static function writeMutatorProvider(): array
];
}
+ public function testDisabledAdderAndRemoverReturnsError()
+ {
+ $writeMutator = $this->extractor->getWriteInfo(Php71Dummy::class, 'baz', [
+ 'enable_adder_remover_extraction' => false,
+ ]);
+
+ self::assertNotNull($writeMutator);
+ self::assertSame(PropertyWriteInfo::TYPE_NONE, $writeMutator->getType());
+ self::assertSame([\sprintf('The property "baz" in class "%s" can be defined with the methods "addBaz()", "removeBaz()" but the new value must be an array or an instance of \Traversable', Php71Dummy::class)], $writeMutator->getErrors());
+ }
+
public function testGetWriteInfoReadonlyProperties()
{
$writeMutatorConstructor = $this->extractor->getWriteInfo(Php81Dummy::class, 'foo', ['enable_constructor_extraction' => true]);
@@ -702,6 +714,116 @@ public function testAsymmetricVisibility()
$this->assertFalse($this->extractor->isWritable(AsymmetricVisibility::class, 'protectedPrivate'));
}
+ /**
+ * @requires PHP 8.4
+ */
+ public function testAsymmetricVisibilityAllowPublicOnly()
+ {
+ $extractor = new ReflectionExtractor(null, null, null, true, ReflectionExtractor::ALLOW_PUBLIC);
+
+ $this->assertTrue($extractor->isReadable(AsymmetricVisibility::class, 'publicPrivate'));
+ $this->assertTrue($extractor->isReadable(AsymmetricVisibility::class, 'publicProtected'));
+ $this->assertFalse($extractor->isReadable(AsymmetricVisibility::class, 'protectedPrivate'));
+ $this->assertFalse($extractor->isWritable(AsymmetricVisibility::class, 'publicPrivate'));
+ $this->assertFalse($extractor->isWritable(AsymmetricVisibility::class, 'publicProtected'));
+ $this->assertFalse($extractor->isWritable(AsymmetricVisibility::class, 'protectedPrivate'));
+ }
+
+ /**
+ * @requires PHP 8.4
+ */
+ public function testAsymmetricVisibilityAllowProtectedOnly()
+ {
+ $extractor = new ReflectionExtractor(null, null, null, true, ReflectionExtractor::ALLOW_PROTECTED);
+
+ $this->assertFalse($extractor->isReadable(AsymmetricVisibility::class, 'publicPrivate'));
+ $this->assertFalse($extractor->isReadable(AsymmetricVisibility::class, 'publicProtected'));
+ $this->assertTrue($extractor->isReadable(AsymmetricVisibility::class, 'protectedPrivate'));
+ $this->assertFalse($extractor->isWritable(AsymmetricVisibility::class, 'publicPrivate'));
+ $this->assertTrue($extractor->isWritable(AsymmetricVisibility::class, 'publicProtected'));
+ $this->assertFalse($extractor->isWritable(AsymmetricVisibility::class, 'protectedPrivate'));
+ }
+
+ /**
+ * @requires PHP 8.4
+ */
+ public function testAsymmetricVisibilityAllowPrivateOnly()
+ {
+ $extractor = new ReflectionExtractor(null, null, null, true, ReflectionExtractor::ALLOW_PRIVATE);
+
+ $this->assertFalse($extractor->isReadable(AsymmetricVisibility::class, 'publicPrivate'));
+ $this->assertFalse($extractor->isReadable(AsymmetricVisibility::class, 'publicProtected'));
+ $this->assertFalse($extractor->isReadable(AsymmetricVisibility::class, 'protectedPrivate'));
+ $this->assertTrue($extractor->isWritable(AsymmetricVisibility::class, 'publicPrivate'));
+ $this->assertFalse($extractor->isWritable(AsymmetricVisibility::class, 'publicProtected'));
+ $this->assertTrue($extractor->isWritable(AsymmetricVisibility::class, 'protectedPrivate'));
+ }
+
+ /**
+ * @requires PHP 8.4
+ */
+ public function testVirtualProperties()
+ {
+ $this->assertTrue($this->extractor->isReadable(VirtualProperties::class, 'virtualNoSetHook'));
+ $this->assertTrue($this->extractor->isReadable(VirtualProperties::class, 'virtualSetHookOnly'));
+ $this->assertTrue($this->extractor->isReadable(VirtualProperties::class, 'virtualHook'));
+ $this->assertFalse($this->extractor->isWritable(VirtualProperties::class, 'virtualNoSetHook'));
+ $this->assertTrue($this->extractor->isWritable(VirtualProperties::class, 'virtualSetHookOnly'));
+ $this->assertTrue($this->extractor->isWritable(VirtualProperties::class, 'virtualHook'));
+ }
+
+ /**
+ * @dataProvider provideAsymmetricVisibilityMutator
+ *
+ * @requires PHP 8.4
+ */
+ public function testAsymmetricVisibilityMutator(string $property, string $readVisibility, string $writeVisibility)
+ {
+ $extractor = new ReflectionExtractor(null, null, null, true, ReflectionExtractor::ALLOW_PUBLIC | ReflectionExtractor::ALLOW_PROTECTED | ReflectionExtractor::ALLOW_PRIVATE);
+ $readMutator = $extractor->getReadInfo(AsymmetricVisibility::class, $property);
+ $writeMutator = $extractor->getWriteInfo(AsymmetricVisibility::class, $property, [
+ 'enable_getter_setter_extraction' => true,
+ ]);
+
+ $this->assertSame(PropertyReadInfo::TYPE_PROPERTY, $readMutator->getType());
+ $this->assertSame(PropertyWriteInfo::TYPE_PROPERTY, $writeMutator->getType());
+ $this->assertSame($readVisibility, $readMutator->getVisibility());
+ $this->assertSame($writeVisibility, $writeMutator->getVisibility());
+ }
+
+ public static function provideAsymmetricVisibilityMutator(): iterable
+ {
+ yield ['publicPrivate', PropertyReadInfo::VISIBILITY_PUBLIC, PropertyWriteInfo::VISIBILITY_PRIVATE];
+ yield ['publicProtected', PropertyReadInfo::VISIBILITY_PUBLIC, PropertyWriteInfo::VISIBILITY_PROTECTED];
+ yield ['protectedPrivate', PropertyReadInfo::VISIBILITY_PROTECTED, PropertyWriteInfo::VISIBILITY_PRIVATE];
+ }
+
+ /**
+ * @dataProvider provideVirtualPropertiesMutator
+ *
+ * @requires PHP 8.4
+ */
+ public function testVirtualPropertiesMutator(string $property, string $readVisibility, string $writeVisibility)
+ {
+ $extractor = new ReflectionExtractor(null, null, null, true, ReflectionExtractor::ALLOW_PUBLIC | ReflectionExtractor::ALLOW_PROTECTED | ReflectionExtractor::ALLOW_PRIVATE);
+ $readMutator = $extractor->getReadInfo(VirtualProperties::class, $property);
+ $writeMutator = $extractor->getWriteInfo(VirtualProperties::class, $property, [
+ 'enable_getter_setter_extraction' => true,
+ ]);
+
+ $this->assertSame(PropertyReadInfo::TYPE_PROPERTY, $readMutator->getType());
+ $this->assertSame(PropertyWriteInfo::TYPE_PROPERTY, $writeMutator->getType());
+ $this->assertSame($readVisibility, $readMutator->getVisibility());
+ $this->assertSame($writeVisibility, $writeMutator->getVisibility());
+ }
+
+ public static function provideVirtualPropertiesMutator(): iterable
+ {
+ yield ['virtualNoSetHook', PropertyReadInfo::VISIBILITY_PUBLIC, PropertyWriteInfo::VISIBILITY_PRIVATE];
+ yield ['virtualSetHookOnly', PropertyReadInfo::VISIBILITY_PUBLIC, PropertyWriteInfo::VISIBILITY_PUBLIC];
+ yield ['virtualHook', PropertyReadInfo::VISIBILITY_PUBLIC, PropertyWriteInfo::VISIBILITY_PUBLIC];
+ }
+
/**
* @dataProvider typesProvider
*/
diff --git a/src/Symfony/Component/PropertyInfo/Tests/Extractor/SerializerExtractorTest.php b/src/Symfony/Component/PropertyInfo/Tests/Extractor/SerializerExtractorTest.php
index ec3f949bbeb69..739f58ce6e6d1 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/Extractor/SerializerExtractorTest.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/Extractor/SerializerExtractorTest.php
@@ -49,4 +49,9 @@ public function testGetPropertiesWithAnyGroup()
{
$this->assertSame(['analyses', 'feet'], $this->extractor->getProperties(AdderRemoverDummy::class, ['serializer_groups' => null]));
}
+
+ public function testGetPropertiesWithNonExistentClassReturnsNull()
+ {
+ $this->assertSame(null, $this->extractor->getProperties('NonExistent'));
+ }
}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/Fixtures/DummyGeneric.php b/src/Symfony/Component/PropertyInfo/Tests/Fixtures/DummyGeneric.php
new file mode 100644
index 0000000000000..5863fbfc95450
--- /dev/null
+++ b/src/Symfony/Component/PropertyInfo/Tests/Fixtures/DummyGeneric.php
@@ -0,0 +1,41 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\PropertyInfo\Tests\Fixtures;
+
+interface IFace {}
+
+class Clazz {}
+
+class DummyGeneric
+{
+
+ /**
+ * @var Clazz
+ */
+ public $basicClass;
+
+ /**
+ * @var ?Clazz
+ */
+ public $nullableClass;
+
+ /**
+ * @var IFace
+ */
+ public $basicInterface;
+
+ /**
+ * @var ?IFace
+ */
+ public $nullableInterface;
+
+}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/Fixtures/InvalidDummy.php b/src/Symfony/Component/PropertyInfo/Tests/Fixtures/InvalidDummy.php
index 0a4cc81f36be8..0940c287b072d 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/Fixtures/InvalidDummy.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/Fixtures/InvalidDummy.php
@@ -47,4 +47,11 @@ public function getBar()
{
return 'bar';
}
+
+ /**
+ * @param $baz
+ */
+ public function setBaz($baz)
+ {
+ }
}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/Fixtures/VirtualProperties.php b/src/Symfony/Component/PropertyInfo/Tests/Fixtures/VirtualProperties.php
new file mode 100644
index 0000000000000..38c6d17082ffe
--- /dev/null
+++ b/src/Symfony/Component/PropertyInfo/Tests/Fixtures/VirtualProperties.php
@@ -0,0 +1,19 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\PropertyInfo\Tests\Fixtures;
+
+class VirtualProperties
+{
+ public bool $virtualNoSetHook { get => true; }
+ public bool $virtualSetHookOnly { set => $value; }
+ public bool $virtualHook { get => true; set => $value; }
+}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoCacheExtractorTest.php b/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoCacheExtractorTest.php
index f9b1a8fc3358e..a594de56a5e42 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoCacheExtractorTest.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoCacheExtractorTest.php
@@ -12,7 +12,13 @@
namespace Symfony\Component\PropertyInfo\Tests;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
+use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
use Symfony\Component\PropertyInfo\PropertyInfoCacheExtractor;
+use Symfony\Component\PropertyInfo\PropertyInfoExtractorInterface;
+use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\ParentDummy;
+use Symfony\Component\TypeInfo\Type;
/**
* @author Kévin Dunglas
@@ -76,4 +82,90 @@ public function testIsInitializable()
parent::testIsInitializable();
parent::testIsInitializable();
}
+
+ /**
+ * @group legacy
+ *
+ * @dataProvider provideNestedExtractorWithoutGetTypeImplementationData
+ */
+ public function testNestedExtractorWithoutGetTypeImplementation(string $property, ?Type $expectedType)
+ {
+ $propertyInfoCacheExtractor = new PropertyInfoCacheExtractor(new class() implements PropertyInfoExtractorInterface {
+ private PropertyTypeExtractorInterface $propertyTypeExtractor;
+
+ public function __construct()
+ {
+ $this->propertyTypeExtractor = new PhpDocExtractor();
+ }
+
+ public function getTypes(string $class, string $property, array $context = []): ?array
+ {
+ return $this->propertyTypeExtractor->getTypes($class, $property, $context);
+ }
+
+ public function isReadable(string $class, string $property, array $context = []): ?bool
+ {
+ return null;
+ }
+
+ public function isWritable(string $class, string $property, array $context = []): ?bool
+ {
+ return null;
+ }
+
+ public function getShortDescription(string $class, string $property, array $context = []): ?string
+ {
+ return null;
+ }
+
+ public function getLongDescription(string $class, string $property, array $context = []): ?string
+ {
+ return null;
+ }
+
+ public function getProperties(string $class, array $context = []): ?array
+ {
+ return null;
+ }
+ }, new ArrayAdapter());
+
+ if (null === $expectedType) {
+ $this->assertNull($propertyInfoCacheExtractor->getType(Dummy::class, $property));
+ } else {
+ $this->assertEquals($expectedType, $propertyInfoCacheExtractor->getType(Dummy::class, $property));
+ }
+ }
+
+ public function provideNestedExtractorWithoutGetTypeImplementationData()
+ {
+ yield ['bar', Type::string()];
+ yield ['baz', Type::int()];
+ yield ['bal', Type::object(\DateTimeImmutable::class)];
+ yield ['parent', Type::object(ParentDummy::class)];
+ yield ['collection', Type::array(Type::object(\DateTimeImmutable::class), Type::int())];
+ yield ['nestedCollection', Type::array(Type::array(Type::string(), Type::int()), Type::int())];
+ yield ['mixedCollection', Type::array()];
+ yield ['B', Type::object(ParentDummy::class)];
+ yield ['Id', Type::int()];
+ yield ['Guid', Type::string()];
+ yield ['g', Type::nullable(Type::array())];
+ yield ['h', Type::nullable(Type::string())];
+ yield ['i', Type::nullable(Type::union(Type::string(), Type::int()))];
+ yield ['j', Type::nullable(Type::object(\DateTimeImmutable::class))];
+ yield ['nullableCollectionOfNonNullableElements', Type::nullable(Type::array(Type::int(), Type::int()))];
+ yield ['nonNullableCollectionOfNullableElements', Type::array(Type::nullable(Type::int()), Type::int())];
+ yield ['nullableCollectionOfMultipleNonNullableElementTypes', Type::nullable(Type::array(Type::union(Type::int(), Type::string()), Type::int()))];
+ yield ['xTotals', Type::array()];
+ yield ['YT', Type::string()];
+ yield ['emptyVar', null];
+ yield ['iteratorCollection', Type::collection(Type::object(\Iterator::class), Type::string(), Type::union(Type::string(), Type::int()))];
+ yield ['iteratorCollectionWithKey', Type::collection(Type::object(\Iterator::class), Type::string(), Type::int())];
+ yield ['nestedIterators', Type::collection(Type::object(\Iterator::class), Type::collection(Type::object(\Iterator::class), Type::string(), Type::int()), Type::int())];
+ yield ['arrayWithKeys', Type::array(Type::string(), Type::string())];
+ yield ['arrayWithKeysAndComplexValue', Type::array(Type::nullable(Type::array(Type::nullable(Type::string()), Type::int())), Type::string())];
+ yield ['arrayOfMixed', Type::array(Type::mixed(), Type::string())];
+ yield ['noDocBlock', null];
+ yield ['listOfStrings', Type::array(Type::string(), Type::int())];
+ yield ['parentAnnotation', Type::object(ParentDummy::class)];
+ }
}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoExtractorTest.php b/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoExtractorTest.php
index 53c1b1d8a5c22..ed76df5695b08 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoExtractorTest.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/PropertyInfoExtractorTest.php
@@ -11,9 +11,76 @@
namespace Symfony\Component\PropertyInfo\Tests;
+use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
+use Symfony\Component\PropertyInfo\PropertyInfoExtractor;
+use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy;
+use Symfony\Component\PropertyInfo\Tests\Fixtures\ParentDummy;
+use Symfony\Component\TypeInfo\Type;
+
/**
* @author Kévin Dunglas
*/
class PropertyInfoExtractorTest extends AbstractPropertyInfoExtractorTest
{
+ /**
+ * @group legacy
+ *
+ * @dataProvider provideNestedExtractorWithoutGetTypeImplementationData
+ */
+ public function testNestedExtractorWithoutGetTypeImplementation(string $property, ?Type $expectedType)
+ {
+ $propertyInfoExtractor = new PropertyInfoExtractor([], [new class() implements PropertyTypeExtractorInterface {
+ private PropertyTypeExtractorInterface $propertyTypeExtractor;
+
+ public function __construct()
+ {
+ $this->propertyTypeExtractor = new PhpDocExtractor();
+ }
+
+ public function getTypes(string $class, string $property, array $context = []): ?array
+ {
+ return $this->propertyTypeExtractor->getTypes($class, $property, $context);
+ }
+ }]);
+
+ if (null === $expectedType) {
+ $this->assertNull($propertyInfoExtractor->getType(Dummy::class, $property));
+ } else {
+ $this->assertEquals($expectedType, $propertyInfoExtractor->getType(Dummy::class, $property));
+ }
+ }
+
+ public function provideNestedExtractorWithoutGetTypeImplementationData()
+ {
+ yield ['bar', Type::string()];
+ yield ['baz', Type::int()];
+ yield ['bal', Type::object(\DateTimeImmutable::class)];
+ yield ['parent', Type::object(ParentDummy::class)];
+ yield ['collection', Type::array(Type::object(\DateTimeImmutable::class), Type::int())];
+ yield ['nestedCollection', Type::array(Type::array(Type::string(), Type::int()), Type::int())];
+ yield ['mixedCollection', Type::array()];
+ yield ['B', Type::object(ParentDummy::class)];
+ yield ['Id', Type::int()];
+ yield ['Guid', Type::string()];
+ yield ['g', Type::nullable(Type::array())];
+ yield ['h', Type::nullable(Type::string())];
+ yield ['i', Type::nullable(Type::union(Type::string(), Type::int()))];
+ yield ['j', Type::nullable(Type::object(\DateTimeImmutable::class))];
+ yield ['nullableCollectionOfNonNullableElements', Type::nullable(Type::array(Type::int(), Type::int()))];
+ yield ['nonNullableCollectionOfNullableElements', Type::array(Type::nullable(Type::int()), Type::int())];
+ yield ['nullableCollectionOfMultipleNonNullableElementTypes', Type::nullable(Type::array(Type::union(Type::int(), Type::string()), Type::int()))];
+ yield ['xTotals', Type::array()];
+ yield ['YT', Type::string()];
+ yield ['emptyVar', null];
+ yield ['iteratorCollection', Type::collection(Type::object(\Iterator::class), Type::string(), Type::union(Type::string(), Type::int()))];
+ yield ['iteratorCollectionWithKey', Type::collection(Type::object(\Iterator::class), Type::string(), Type::int())];
+ yield ['nestedIterators', Type::collection(Type::object(\Iterator::class), Type::collection(Type::object(\Iterator::class), Type::string(), Type::int()), Type::int())];
+ yield ['arrayWithKeys', Type::array(Type::string(), Type::string())];
+ yield ['arrayWithKeysAndComplexValue', Type::array(Type::nullable(Type::array(Type::nullable(Type::string()), Type::int())), Type::string())];
+ yield ['arrayOfMixed', Type::array(Type::mixed(), Type::string())];
+ yield ['noDocBlock', null];
+ yield ['listOfStrings', Type::array(Type::string(), Type::int())];
+ yield ['parentAnnotation', Type::object(ParentDummy::class)];
+ }
}
diff --git a/src/Symfony/Component/PropertyInfo/Tests/TypeTest.php b/src/Symfony/Component/PropertyInfo/Tests/TypeTest.php
index 6fa4ed9a4b163..afe4bb55f06ae 100644
--- a/src/Symfony/Component/PropertyInfo/Tests/TypeTest.php
+++ b/src/Symfony/Component/PropertyInfo/Tests/TypeTest.php
@@ -77,7 +77,7 @@ public function testArrayCollection()
$this->assertTrue($firstValueType->isCollection());
$this->assertEquals(Type::BUILTIN_TYPE_ARRAY, $secondValueType->getBuiltinType());
$this->assertFalse($secondValueType->isNullable());
- $this->assertTrue($firstValueType->isCollection());
+ $this->assertTrue($secondValueType->isCollection());
}
public function testInvalidCollectionValueArgument()
diff --git a/src/Symfony/Component/PropertyInfo/Util/LegacyTypeConverter.php b/src/Symfony/Component/PropertyInfo/Util/LegacyTypeConverter.php
new file mode 100644
index 0000000000000..24cae602aac5b
--- /dev/null
+++ b/src/Symfony/Component/PropertyInfo/Util/LegacyTypeConverter.php
@@ -0,0 +1,94 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\PropertyInfo\Util;
+
+use Symfony\Component\PropertyInfo\Type as LegacyType;
+use Symfony\Component\TypeInfo\Type;
+
+/**
+ * @internal
+ */
+class LegacyTypeConverter
+{
+ /**
+ * @param LegacyType[]|null $legacyTypes
+ */
+ public static function toTypeInfoType(?array $legacyTypes): ?Type
+ {
+ if (null === $legacyTypes || [] === $legacyTypes) {
+ return null;
+ }
+
+ $nullable = false;
+ $types = [];
+
+ foreach ($legacyTypes as $legacyType) {
+ switch ($legacyType->getBuiltinType()) {
+ case LegacyType::BUILTIN_TYPE_ARRAY:
+ $typeInfoType = Type::array(self::toTypeInfoType($legacyType->getCollectionValueTypes()), self::toTypeInfoType($legacyType->getCollectionKeyTypes()));
+ break;
+ case LegacyType::BUILTIN_TYPE_BOOL:
+ $typeInfoType = Type::bool();
+ break;
+ case LegacyType::BUILTIN_TYPE_CALLABLE:
+ $typeInfoType = Type::callable();
+ break;
+ case LegacyType::BUILTIN_TYPE_FALSE:
+ $typeInfoType = Type::false();
+ break;
+ case LegacyType::BUILTIN_TYPE_FLOAT:
+ $typeInfoType = Type::float();
+ break;
+ case LegacyType::BUILTIN_TYPE_INT:
+ $typeInfoType = Type::int();
+ break;
+ case LegacyType::BUILTIN_TYPE_ITERABLE:
+ $typeInfoType = Type::iterable(self::toTypeInfoType($legacyType->getCollectionValueTypes()), self::toTypeInfoType($legacyType->getCollectionKeyTypes()));
+ break;
+ case LegacyType::BUILTIN_TYPE_OBJECT:
+ if ($legacyType->isCollection()) {
+ $typeInfoType = Type::collection(Type::object($legacyType->getClassName()), self::toTypeInfoType($legacyType->getCollectionValueTypes()), self::toTypeInfoType($legacyType->getCollectionKeyTypes()));
+ } else {
+ $typeInfoType = Type::object($legacyType->getClassName());
+ }
+
+ break;
+ case LegacyType::BUILTIN_TYPE_RESOURCE:
+ $typeInfoType = Type::resource();
+ break;
+ case LegacyType::BUILTIN_TYPE_STRING:
+ $typeInfoType = Type::string();
+ break;
+ case LegacyType::BUILTIN_TYPE_TRUE:
+ $typeInfoType = Type::true();
+ break;
+ default:
+ $typeInfoType = null;
+ break;
+ }
+
+ if (LegacyType::BUILTIN_TYPE_NULL === $legacyType->getBuiltinType() || $legacyType->isNullable()) {
+ $nullable = true;
+ }
+
+ if (null !== $typeInfoType) {
+ $types[] = $typeInfoType;
+ }
+ }
+
+ if (1 === \count($types)) {
+ return $nullable ? Type::nullable($types[0]) : $types[0];
+ }
+
+ return $nullable ? Type::nullable(Type::union(...$types)) : Type::union(...$types);
+ }
+}
diff --git a/src/Symfony/Component/PropertyInfo/Util/PhpStanTypeHelper.php b/src/Symfony/Component/PropertyInfo/Util/PhpStanTypeHelper.php
index 6d06d8b8a9f16..924d74e3aec1a 100644
--- a/src/Symfony/Component/PropertyInfo/Util/PhpStanTypeHelper.php
+++ b/src/Symfony/Component/PropertyInfo/Util/PhpStanTypeHelper.php
@@ -128,7 +128,7 @@ private function extractTypes(TypeNode $node, NameScope $nameScope): array
$collection = $mainType->isCollection() || \is_a($mainType->getClassName(), \Traversable::class, true) || \is_a($mainType->getClassName(), \ArrayAccess::class, true);
// it's safer to fall back to other extractors if the generic type is too abstract
- if (!$collection && !class_exists($mainType->getClassName())) {
+ if (!$collection && !class_exists($mainType->getClassName()) && !interface_exists($mainType->getClassName(), false)) {
return [];
}
diff --git a/src/Symfony/Component/PropertyInfo/composer.json b/src/Symfony/Component/PropertyInfo/composer.json
index 0de87c02c6a51..65f2782ed909c 100644
--- a/src/Symfony/Component/PropertyInfo/composer.json
+++ b/src/Symfony/Component/PropertyInfo/composer.json
@@ -25,7 +25,7 @@
"require": {
"php": ">=8.2",
"symfony/string": "^6.4|^7.0",
- "symfony/type-info": "^7.1"
+ "symfony/type-info": "~7.1.9|^7.2.2"
},
"require-dev": {
"symfony/serializer": "^6.4|^7.0",
@@ -38,6 +38,7 @@
"phpdocumentor/reflection-docblock": "<5.2",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/dependency-injection": "<6.4",
+ "symfony/cache": "<6.4",
"symfony/serializer": "<6.4"
},
"autoload": {
diff --git a/src/Symfony/Component/Routing/Loader/Configurator/RouteConfigurator.php b/src/Symfony/Component/Routing/Loader/Configurator/RouteConfigurator.php
index f242ad886e3eb..148eeba1d7b16 100644
--- a/src/Symfony/Component/Routing/Loader/Configurator/RouteConfigurator.php
+++ b/src/Symfony/Component/Routing/Loader/Configurator/RouteConfigurator.php
@@ -44,7 +44,14 @@ public function __construct(
*/
final public function host(string|array $host): static
{
+ $previousRoutes = clone $this->route;
$this->addHost($this->route, $host);
+ foreach ($previousRoutes as $name => $route) {
+ if (!$this->route->get($name)) {
+ $this->collection->remove($name);
+ }
+ }
+ $this->collection->addCollection($this->route);
return $this;
}
diff --git a/src/Symfony/Component/Routing/Loader/XmlFileLoader.php b/src/Symfony/Component/Routing/Loader/XmlFileLoader.php
index a957012928310..c7275962621eb 100644
--- a/src/Symfony/Component/Routing/Loader/XmlFileLoader.php
+++ b/src/Symfony/Component/Routing/Loader/XmlFileLoader.php
@@ -131,7 +131,7 @@ protected function parseRoute(RouteCollection $collection, \DOMElement $node, st
throw new \InvalidArgumentException(\sprintf('The element in file "%s" must not have both a "path" attribute and child nodes.', $path));
}
- $routes = $this->createLocalizedRoute($collection, $id, $paths ?: $node->getAttribute('path'));
+ $routes = $this->createLocalizedRoute(new RouteCollection(), $id, $paths ?: $node->getAttribute('path'));
$routes->addDefaults($defaults);
$routes->addRequirements($requirements);
$routes->addOptions($options);
@@ -142,6 +142,8 @@ protected function parseRoute(RouteCollection $collection, \DOMElement $node, st
if (null !== $hosts) {
$this->addHost($routes, $hosts);
}
+
+ $collection->addCollection($routes);
}
/**
diff --git a/src/Symfony/Component/Routing/Loader/YamlFileLoader.php b/src/Symfony/Component/Routing/Loader/YamlFileLoader.php
index cd945c5599b26..3e40e8bbeb5f4 100644
--- a/src/Symfony/Component/Routing/Loader/YamlFileLoader.php
+++ b/src/Symfony/Component/Routing/Loader/YamlFileLoader.php
@@ -155,7 +155,7 @@ protected function parseRoute(RouteCollection $collection, string $name, array $
$defaults['_stateless'] = $config['stateless'];
}
- $routes = $this->createLocalizedRoute($collection, $name, $config['path']);
+ $routes = $this->createLocalizedRoute(new RouteCollection(), $name, $config['path']);
$routes->addDefaults($defaults);
$routes->addRequirements($requirements);
$routes->addOptions($options);
@@ -166,6 +166,8 @@ protected function parseRoute(RouteCollection $collection, string $name, array $
if (isset($config['host'])) {
$this->addHost($routes, $config['host']);
}
+
+ $collection->addCollection($routes);
}
/**
diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts-expected-collection.php b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts-expected-collection.php
new file mode 100644
index 0000000000000..afff1f0bcdcfe
--- /dev/null
+++ b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts-expected-collection.php
@@ -0,0 +1,23 @@
+add('static.en', $route = new Route('/example'));
+ $route->setHost('www.example.com');
+ $route->setRequirement('_locale', 'en');
+ $route->setDefault('_locale', 'en');
+ $route->setDefault('_canonical_route', 'static');
+ $expectedRoutes->add('static.nl', $route = new Route('/example'));
+ $route->setHost('www.example.nl');
+ $route->setRequirement('_locale', 'nl');
+ $route->setDefault('_locale', 'nl');
+ $route->setDefault('_canonical_route', 'static');
+
+ $expectedRoutes->addResource(new FileResource(__DIR__."/route-with-hosts.$format"));
+
+ return $expectedRoutes;
+};
diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.php b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.php
new file mode 100644
index 0000000000000..44472d77ae171
--- /dev/null
+++ b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.php
@@ -0,0 +1,10 @@
+add('static', '/example')->host([
+ 'nl' => 'www.example.nl',
+ 'en' => 'www.example.com',
+ ]);
+};
diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.xml b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.xml
new file mode 100644
index 0000000000000..f4b16e4d80700
--- /dev/null
+++ b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.xml
@@ -0,0 +1,10 @@
+
+
+
+ www.example.nl
+ www.example.com
+
+
diff --git a/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.yml b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.yml
new file mode 100644
index 0000000000000..c340f71ff016d
--- /dev/null
+++ b/src/Symfony/Component/Routing/Tests/Fixtures/locale_and_host/route-with-hosts.yml
@@ -0,0 +1,6 @@
+---
+static:
+ path: /example
+ host:
+ nl: www.example.nl
+ en: www.example.com
diff --git a/src/Symfony/Component/Routing/Tests/Loader/PhpFileLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/PhpFileLoaderTest.php
index e7aad10bbff12..16071e5b345c4 100644
--- a/src/Symfony/Component/Routing/Tests/Loader/PhpFileLoaderTest.php
+++ b/src/Symfony/Component/Routing/Tests/Loader/PhpFileLoaderTest.php
@@ -317,6 +317,16 @@ public function testImportingRoutesWithSingleHostInImporter()
$this->assertEquals($expectedRoutes('php'), $routes);
}
+ public function testAddingRouteWithHosts()
+ {
+ $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures/locale_and_host']));
+ $routes = $loader->load('route-with-hosts.php');
+
+ $expectedRoutes = require __DIR__.'/../Fixtures/locale_and_host/route-with-hosts-expected-collection.php';
+
+ $this->assertEquals($expectedRoutes('php'), $routes);
+ }
+
public function testImportingAliases()
{
$loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures/alias']));
diff --git a/src/Symfony/Component/Routing/Tests/Loader/XmlFileLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/XmlFileLoaderTest.php
index 3bbc8ac689ced..7afc3d2ea233e 100644
--- a/src/Symfony/Component/Routing/Tests/Loader/XmlFileLoaderTest.php
+++ b/src/Symfony/Component/Routing/Tests/Loader/XmlFileLoaderTest.php
@@ -587,6 +587,16 @@ public function testImportingRoutesWithSingleHostsInImporter()
$this->assertEquals($expectedRoutes('xml'), $routes);
}
+ public function testAddingRouteWithHosts()
+ {
+ $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/locale_and_host']));
+ $routes = $loader->load('route-with-hosts.xml');
+
+ $expectedRoutes = require __DIR__.'/../Fixtures/locale_and_host/route-with-hosts-expected-collection.php';
+
+ $this->assertEquals($expectedRoutes('xml'), $routes);
+ }
+
public function testWhenEnv()
{
$loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']), 'some-env');
diff --git a/src/Symfony/Component/Routing/Tests/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/YamlFileLoaderTest.php
index 5c82e9b5e1640..c8bc44e61e33b 100644
--- a/src/Symfony/Component/Routing/Tests/Loader/YamlFileLoaderTest.php
+++ b/src/Symfony/Component/Routing/Tests/Loader/YamlFileLoaderTest.php
@@ -450,6 +450,16 @@ public function testImportingRoutesWithSingleHostInImporter()
$this->assertEquals($expectedRoutes('yml'), $routes);
}
+ public function testAddingRouteWithHosts()
+ {
+ $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/locale_and_host']));
+ $routes = $loader->load('route-with-hosts.yml');
+
+ $expectedRoutes = require __DIR__.'/../Fixtures/locale_and_host/route-with-hosts-expected-collection.php';
+
+ $this->assertEquals($expectedRoutes('yml'), $routes);
+ }
+
public function testWhenEnv()
{
$loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']), 'some-env');
diff --git a/src/Symfony/Component/Runtime/SymfonyRuntime.php b/src/Symfony/Component/Runtime/SymfonyRuntime.php
index d26fac000a3d9..c66035f9abaf0 100644
--- a/src/Symfony/Component/Runtime/SymfonyRuntime.php
+++ b/src/Symfony/Component/Runtime/SymfonyRuntime.php
@@ -160,10 +160,6 @@ public function getRunner(?object $application): RunnerInterface
}
if ($application instanceof Application) {
- if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
- echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.\PHP_SAPI.' SAPI'.\PHP_EOL;
- }
-
set_time_limit(0);
$defaultEnv = !isset($this->options['env']) ? ($_SERVER[$this->options['env_var_name']] ?? 'dev') : null;
$output = $this->output ??= new ConsoleOutput();
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/application.php b/src/Symfony/Component/Runtime/Tests/phpt/application.php
index 1e1014e9f3e5a..ca2de555edfb7 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/application.php
+++ b/src/Symfony/Component/Runtime/Tests/phpt/application.php
@@ -18,8 +18,10 @@
return function (array $context) {
$command = new Command('go');
- $command->setCode(function (InputInterface $input, OutputInterface $output) use ($context) {
+ $command->setCode(function (InputInterface $input, OutputInterface $output) use ($context): int {
$output->write('OK Application '.$context['SOME_VAR']);
+
+ return 0;
});
$app = new Application();
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/command.php b/src/Symfony/Component/Runtime/Tests/phpt/command.php
index 3a5fa11e00000..e307d195b113e 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/command.php
+++ b/src/Symfony/Component/Runtime/Tests/phpt/command.php
@@ -19,7 +19,9 @@
return function (Command $command, InputInterface $input, OutputInterface $output, array $context) {
$command->addOption('hello', 'e', InputOption::VALUE_REQUIRED, 'How should I greet?', 'OK');
- return $command->setCode(function () use ($input, $output, $context) {
+ return $command->setCode(function () use ($input, $output, $context): int {
$output->write($input->getOption('hello').' Command '.$context['SOME_VAR']);
+
+ return 0;
});
};
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_0_to_1.php b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_0_to_1.php
index af6409dda62bc..2968e37ea02f4 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_0_to_1.php
+++ b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_0_to_1.php
@@ -20,6 +20,8 @@
require __DIR__.'/autoload.php';
-return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): void {
+return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): int {
$output->writeln($context['DEBUG_ENABLED']);
+
+ return 0;
});
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_1_to_0.php b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_1_to_0.php
index 78a0bf29448b8..1f2fa3590e16f 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_1_to_0.php
+++ b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_debug_exists_1_to_0.php
@@ -20,6 +20,8 @@
require __DIR__.'/autoload.php';
-return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): void {
+return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): int {
$output->writeln($context['DEBUG_MODE']);
+
+ return 0;
});
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_env_exists.php b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_env_exists.php
index 3e72372e5af06..8587f20f2382b 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_env_exists.php
+++ b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_env_exists.php
@@ -20,6 +20,8 @@
require __DIR__.'/autoload.php';
-return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): void {
+return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): int {
$output->writeln($context['ENV_MODE']);
+
+ return 0;
});
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_no_debug.php b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_no_debug.php
index 3fe4f44d7967b..4ab7694298f95 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_no_debug.php
+++ b/src/Symfony/Component/Runtime/Tests/phpt/dotenv_overload_command_no_debug.php
@@ -19,6 +19,8 @@
require __DIR__.'/autoload.php';
-return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): void {
+return static fn (Command $command, OutputInterface $output, array $context): Command => $command->setCode(static function () use ($output, $context): int {
$output->writeln($context['DEBUG_ENABLED']);
+
+ return 0;
});
diff --git a/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php b/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php
index d668b7d03b02b..1954d4f470402 100644
--- a/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php
+++ b/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php
@@ -12,7 +12,6 @@
namespace Symfony\Component\Scheduler\Tests;
use PHPUnit\Framework\TestCase;
-use Random\Randomizer;
use Symfony\Component\Scheduler\Exception\InvalidArgumentException;
use Symfony\Component\Scheduler\RecurringMessage;
@@ -22,13 +21,8 @@ public function testCanCreateHashedCronMessage()
{
$object = new DummyStringableMessage();
- if (class_exists(Randomizer::class)) {
- $this->assertSame('30 0 * * *', (string) RecurringMessage::cron('#midnight', $object)->getTrigger());
- $this->assertSame('30 0 * * 3', (string) RecurringMessage::cron('#weekly', $object)->getTrigger());
- } else {
- $this->assertSame('36 0 * * *', (string) RecurringMessage::cron('#midnight', $object)->getTrigger());
- $this->assertSame('36 0 * * 6', (string) RecurringMessage::cron('#weekly', $object)->getTrigger());
- }
+ $this->assertSame('30 0 * * *', (string) RecurringMessage::cron('#midnight', $object)->getTrigger());
+ $this->assertSame('30 0 * * 3', (string) RecurringMessage::cron('#weekly', $object)->getTrigger());
}
public function testHashedCronContextIsRequiredIfMessageIsNotStringable()
diff --git a/src/Symfony/Component/Scheduler/Tests/Trigger/CronExpressionTriggerTest.php b/src/Symfony/Component/Scheduler/Tests/Trigger/CronExpressionTriggerTest.php
index cf12a7ceccf52..a700372d4765c 100644
--- a/src/Symfony/Component/Scheduler/Tests/Trigger/CronExpressionTriggerTest.php
+++ b/src/Symfony/Component/Scheduler/Tests/Trigger/CronExpressionTriggerTest.php
@@ -12,7 +12,6 @@
namespace Symfony\Component\Scheduler\Tests\Trigger;
use PHPUnit\Framework\TestCase;
-use Random\Randomizer;
use Symfony\Component\Scheduler\Trigger\CronExpressionTrigger;
class CronExpressionTriggerTest extends TestCase
@@ -33,54 +32,28 @@ public function testHashedExpressionParsing(string $input, string $expected)
public static function hashedExpressionProvider(): array
{
- if (class_exists(Randomizer::class)) {
- return [
- ['# * * * *', '30 * * * *'],
- ['# # * * *', '30 0 * * *'],
- ['# # # * *', '30 0 25 * *'],
- ['# # # # *', '30 0 25 10 *'],
- ['# # # # #', '30 0 25 10 5'],
- ['# # 1,15 1-11 *', '30 0 1,15 1-11 *'],
- ['# # 1,15 * *', '30 0 1,15 * *'],
- ['#hourly', '30 * * * *'],
- ['#daily', '30 0 * * *'],
- ['#weekly', '30 0 * * 3'],
- ['#weekly@midnight', '30 0 * * 3'],
- ['#monthly', '30 0 25 * *'],
- ['#monthly@midnight', '30 0 25 * *'],
- ['#yearly', '30 0 25 10 *'],
- ['#yearly@midnight', '30 0 25 10 *'],
- ['#annually', '30 0 25 10 *'],
- ['#annually@midnight', '30 0 25 10 *'],
- ['#midnight', '30 0 * * *'],
- ['#(1-15) * * * *', '1 * * * *'],
- ['#(1-15) * * * #(3-5)', '1 * * * 3'],
- ['#(1-15) * # * #(3-5)', '1 * 17 * 5'],
- ];
- }
-
return [
- ['# * * * *', '36 * * * *'],
- ['# # * * *', '36 0 * * *'],
- ['# # # * *', '36 0 14 * *'],
- ['# # # # *', '36 0 14 3 *'],
- ['# # # # #', '36 0 14 3 5'],
- ['# # 1,15 1-11 *', '36 0 1,15 1-11 *'],
- ['# # 1,15 * *', '36 0 1,15 * *'],
- ['#hourly', '36 * * * *'],
- ['#daily', '36 0 * * *'],
- ['#weekly', '36 0 * * 6'],
- ['#weekly@midnight', '36 0 * * 6'],
- ['#monthly', '36 0 14 * *'],
- ['#monthly@midnight', '36 0 14 * *'],
- ['#yearly', '36 0 14 3 *'],
- ['#yearly@midnight', '36 0 14 3 *'],
- ['#annually', '36 0 14 3 *'],
- ['#annually@midnight', '36 0 14 3 *'],
- ['#midnight', '36 0 * * *'],
- ['#(1-15) * * * *', '7 * * * *'],
- ['#(1-15) * * * #(3-5)', '7 * * * 3'],
- ['#(1-15) * # * #(3-5)', '7 * 1 * 5'],
+ ['# * * * *', '30 * * * *'],
+ ['# # * * *', '30 0 * * *'],
+ ['# # # * *', '30 0 25 * *'],
+ ['# # # # *', '30 0 25 10 *'],
+ ['# # # # #', '30 0 25 10 5'],
+ ['# # 1,15 1-11 *', '30 0 1,15 1-11 *'],
+ ['# # 1,15 * *', '30 0 1,15 * *'],
+ ['#hourly', '30 * * * *'],
+ ['#daily', '30 0 * * *'],
+ ['#weekly', '30 0 * * 3'],
+ ['#weekly@midnight', '30 0 * * 3'],
+ ['#monthly', '30 0 25 * *'],
+ ['#monthly@midnight', '30 0 25 * *'],
+ ['#yearly', '30 0 25 10 *'],
+ ['#yearly@midnight', '30 0 25 10 *'],
+ ['#annually', '30 0 25 10 *'],
+ ['#annually@midnight', '30 0 25 10 *'],
+ ['#midnight', '30 0 * * *'],
+ ['#(1-15) * * * *', '1 * * * *'],
+ ['#(1-15) * * * #(3-5)', '1 * * * 3'],
+ ['#(1-15) * # * #(3-5)', '1 * 17 * 5'],
];
}
diff --git a/src/Symfony/Component/Scheduler/Tests/Trigger/PeriodicalTriggerTest.php b/src/Symfony/Component/Scheduler/Tests/Trigger/PeriodicalTriggerTest.php
index dc10d30307484..f8724e59247c1 100644
--- a/src/Symfony/Component/Scheduler/Tests/Trigger/PeriodicalTriggerTest.php
+++ b/src/Symfony/Component/Scheduler/Tests/Trigger/PeriodicalTriggerTest.php
@@ -105,9 +105,9 @@ public static function provideForToString()
/**
* @dataProvider providerGetNextRunDates
*/
- public function testGetNextRunDates(\DateTimeImmutable $from, TriggerInterface $trigger, array $expected, int $count = 0)
+ public function testGetNextRunDates(\DateTimeImmutable $from, TriggerInterface $trigger, array $expected, int $count)
{
- $this->assertEquals($expected, $this->getNextRunDates($from, $trigger, $count ?? \count($expected)));
+ $this->assertEquals($expected, $this->getNextRunDates($from, $trigger, $count));
}
public static function providerGetNextRunDates(): iterable
diff --git a/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php b/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php
index 1a37b47798291..22bf88b626f93 100644
--- a/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php
+++ b/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php
@@ -23,7 +23,7 @@ public function __construct(
public function __toString(): string
{
- return \sprintf('%s, from: %s, until: %s', $this->inner, $this->from->format(\DateTimeInterface::ATOM), $this->until->format(\DateTimeInterface::ATOM));
+ return \sprintf('%s, excluding from %s until %s', $this->inner, $this->from->format(\DateTimeInterface::ATOM), $this->until->format(\DateTimeInterface::ATOM));
}
public function getNextRunDate(\DateTimeImmutable $run): ?\DateTimeImmutable
diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf
index 194392935fcc1..6478e2a15caf7 100644
--- a/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf
+++ b/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf
@@ -76,7 +76,7 @@
Too many failed login attempts, please try again in %minutes% minutes.
- Занадта шмат няўдалых спробаў уваходу, калі ласка, паспрабуйце зноў праз %minutes% хвіліну.|Занадта шмат няўдалых спробаў уваходу, калі ласка, паспрабуйце зноў праз %minutes% хвіліны.|Занадта шмат няўдалых спробаў уваходу, калі ласка, паспрабуйце зноў праз %minutes% хвілін.
+ Занадта вялікая колькасць няўдалых спробаў уваходу. Калі ласка, паспрабуйце зноў праз %minutes% хвіліну.|Занадта вялікая колькасць няўдалых спробаў уваходу. Калі ласка, паспрабуйце зноў праз %minutes% хвіліны.|Занадта вялікая колькасць няўдалых спробаў уваходу. Калі ласка, паспрабуйце зноў праз %minutes% хвілін.
An authentication exception occurred.
- שגיאה באימות
+ התרחשה שגיאה באימות.
Authentication credentials could not be found.
- פרטי זיהוי לא נמצאו.
+ פרטי הזיהוי לא נמצאו.
Authentication request could not be processed due to a system problem.
- לא ניתן היה לעבד את בקשת אימות בגלל בעיית מערכת.
+ לא ניתן היה לעבד את בקשת האימות בגלל בעיית מערכת.
Invalid credentials.
@@ -20,7 +20,7 @@
Cookie has already been used by someone else.
- עוגיה כבר שומשה.
+ עוגיה כבר שומשה על ידי מישהו אחר.
Not privileged to request the resource.
@@ -32,15 +32,15 @@
No authentication provider found to support the authentication token.
- לא נמצא ספק אימות המתאימה לבקשה.
+ לא נמצא ספק אימות המתאים לבקשה.
No session available, it either timed out or cookies are not enabled.
- אין סיישן זמין, או שתם הזמן הקצוב או העוגיות אינן מופעלות.
+ אין מפגש זמין, תם הזמן הקצוב או שהעוגיות אינן מופעלות.
No token could be found.
- הטוקן לא נמצא.
+ אסימון לא נמצא.
Username could not be found.
@@ -72,11 +72,11 @@
Too many failed login attempts, please try again in %minutes% minute.
- יותר מדי ניסיונות כניסה כושלים, אנא נסה שוב בוד %minutes% דקה.
+ יותר מדי ניסיונות כניסה כושלים, אנא נסה שוב בעוד %minutes% דקה.
Too many failed login attempts, please try again in %minutes% minutes.
- יותר מדי ניסיונות כניסה כושלים, אנא נסה שוב בעוד %minutes% דקות.
+ יותר מדי ניסיונות כניסה כושלים, אנא נסה שוב בעוד %minutes% דקות.