diff -pruN 9.0.0-2/.cruft.json 12.1.0-1/.cruft.json
--- 9.0.0-2/.cruft.json	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.cruft.json	2025-11-14 02:06:41.000000000 +0000
@@ -1,6 +1,6 @@
 {
   "template": "http://github.com/allenporter/cookiecutter-python",
-  "commit": "660f86f4628b518c5e276bd0edddcc1a2f83828f",
+  "commit": "71e4c726100fa18c949f32343442c0acb36362fe",
   "checkout": null,
   "context": {
     "cookiecutter": {
diff -pruN 9.0.0-2/.github/renovate.json5 12.1.0-1/.github/renovate.json5
--- 9.0.0-2/.github/renovate.json5	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/renovate.json5	2025-11-14 02:06:41.000000000 +0000
@@ -1,19 +1,28 @@
 {
-  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
-  "extends": [
-    "config:recommended"
+  $schema: 'https://docs.renovatebot.com/renovate-schema.json',
+  extends: [
+    'config:recommended',
   ],
-  "assignees": ["allenporter"],
-  "packageRules": [
+  assignees: [
+    'allenporter',
+  ],
+  packageRules: [
     {
-      "description": "Minor updates are automatic",
-      "automerge": true,
-      "automergeType": "branch",
-      "matchUpdateTypes": ["minor", "patch"]
-    }
+      description: 'Minor updates are automatic',
+      automerge: true,
+      automergeType: 'branch',
+      matchUpdateTypes: [
+        'minor',
+        'patch',
+      ],
+    },
   ],
-  "pip_requirements": {
-    "fileMatch": ["requirements_dev.txt"]
+  pip_requirements: {
+    managerFilePatterns: [
+      '/requirements_dev.txt/',
+    ],
+  },
+  'pre-commit': {
+    enabled: true,
   },
-  "pre-commit": {"enabled": true}
 }
diff -pruN 9.0.0-2/.github/workflows/benchmark.yaml 12.1.0-1/.github/workflows/benchmark.yaml
--- 9.0.0-2/.github/workflows/benchmark.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/workflows/benchmark.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -14,21 +14,19 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       fail-fast: false
-      matrix:
-        python-version: ["3.11", "3.12"]
 
     steps:
-      - uses: actions/checkout@v4
-      - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v5
+      - uses: actions/checkout@v5
+      - name: Install uv
+        uses: astral-sh/setup-uv@v7
         with:
           python-version: ${{ matrix.python-version }}
-          cache: "pip"
-          cache-dependency-path: "**/requirements_dev.txt"
+          enable-cache: true
+          cache-dependency-glob: "requirements_dev.txt"
+          activate-environment: true
       - name: Install dependencies
         run: |
-          python -m pip install --upgrade pip
-          if [ -f requirements_dev.txt ]; then pip install -r requirements_dev.txt; fi
+          uv pip install -r requirements_dev.txt
       - name: Run benchmarks with pytest
         run: |
           pytest --benchmark-only
diff -pruN 9.0.0-2/.github/workflows/cruft.yaml 12.1.0-1/.github/workflows/cruft.yaml
--- 9.0.0-2/.github/workflows/cruft.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/workflows/cruft.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -4,13 +4,11 @@ permissions:
   contents: write
   pull-requests: write
   actions: write
+  workflows: write
 on:
   schedule:
     - cron: "0 0 * * *"
 
-env:
-  PYTHON_VERSION: 3.13
-
 jobs:
   update:
     runs-on: ubuntu-latest
@@ -29,12 +27,9 @@ jobs:
             commit-message: "chore: reject new Cruft update"
             title: Reject new updates detected with Cruft
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v5
       - name: Set up Python
-        uses: actions/setup-python@v5
-        with:
-          python-version: ${{ env.PYTHON_VERSION }}
-
+        uses: actions/setup-python@v6
       - name: Install Cruft
         run: pip3 install cruft
 
@@ -71,8 +66,6 @@ jobs:
           add-paths: ${{ matrix.add-paths }}
           commit-message: ${{ matrix.commit-message }}
           branch: ${{ matrix.branch }}
-          delete-branch: true
-          branch-suffix: timestamp
           title: ${{ matrix.title }}
           body: |
             This is an autogenerated PR. ${{ matrix.body }}
diff -pruN 9.0.0-2/.github/workflows/lint.yaml 12.1.0-1/.github/workflows/lint.yaml
--- 9.0.0-2/.github/workflows/lint.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/workflows/lint.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -10,9 +10,6 @@ on:
     branches:
       - main
 
-env:
-  PYTHON_VERSION: 3.13
-
 jobs:
   build:
     runs-on: ubuntu-latest
@@ -20,11 +17,11 @@ jobs:
       fail-fast: false
 
     steps:
-      - uses: actions/checkout@v4
-      - uses: chartboost/ruff-action@v1.0.0
-      - uses: codespell-project/actions-codespell@v2.1
+      - uses: actions/checkout@v5
+      - uses: codespell-project/actions-codespell@v2.2
         with:
           check_hidden: false
+          skip: ./ical/tzif/extended_timezones.py,./tests/tzif/testdata/rfc8536-v3.yaml
       - name: Run yamllint
         uses: ibiqlik/action-yamllint@v3
         with:
@@ -32,18 +29,23 @@ jobs:
           config_file: "./.yaml-lint.yaml"
           strict: true
 
-      - name: Set up Python
-        uses: actions/setup-python@v5
+      - name: Install uv
+        uses: astral-sh/setup-uv@v7
         with:
-          python-version: ${{ env.PYTHON_VERSION }}
-          cache: "pip"
-          cache-dependency-path: "**/requirements_dev.txt"
-
+          enable-cache: true
+          cache-dependency-glob: "requirements_dev.txt"
+          activate-environment: true
       - name: Install dependencies
         run: |
-          python -m pip install --upgrade pip
-          pip install -r requirements_dev.txt
+          uv pip install -r requirements_dev.txt
 
+      - name: Run Ruff Check
+        run: |
+          ruff check --output-format=github .
+
+      - name: Run Ruff Format
+        run: |
+          ruff format .
       - name: Static typing with mypy
         run: |
           mypy --install-types --non-interactive --no-warn-unused-ignores .
diff -pruN 9.0.0-2/.github/workflows/pages.yaml 12.1.0-1/.github/workflows/pages.yaml
--- 9.0.0-2/.github/workflows/pages.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/workflows/pages.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -18,9 +18,6 @@ concurrency:
   group: "pages"
   cancel-in-progress: true
 
-env:
-  PYTHON_VERSION: 3.13
-
 jobs:
   deploy:
     environment:
@@ -30,22 +27,21 @@ jobs:
     strategy:
       fail-fast: false
     steps:
-      - uses: actions/checkout@v4
-      - name: Set up Python
-        uses: actions/setup-python@v5
+      - uses: actions/checkout@v5
+      - name: Install uv
+        uses: astral-sh/setup-uv@v7
         with:
-          python-version: ${{ env.PYTHON_VERSION }}
-          cache: "pip"
-          cache-dependency-path: "**/requirements_dev.txt"
+          enable-cache: true
+          cache-dependency-glob: "requirements_dev.txt"
+          activate-environment: true
       - name: Install dependencies
         run: |
-          python -m pip install --upgrade pip
-          pip install -r requirements_dev.txt
+          uv pip install -r requirements_dev.txt
       - run: pdoc ./ical -o docs/
       - name: Setup Pages
         uses: actions/configure-pages@v5
       - name: Upload artifact
-        uses: actions/upload-pages-artifact@v3
+        uses: actions/upload-pages-artifact@v4
         with:
           # Upload entire repository
           path: 'docs/'
diff -pruN 9.0.0-2/.github/workflows/publish.yaml 12.1.0-1/.github/workflows/publish.yaml
--- 9.0.0-2/.github/workflows/publish.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/workflows/publish.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -5,18 +5,13 @@ on:
   release:
     types: [created]
 
-env:
-  PYTHON_VERSION: 3.13
-
 jobs:
   build:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v5
       - name: Set up Python
-        uses: actions/setup-python@v5
-        with:
-          python-version: ${{ env.PYTHON_VERSION }}
+        uses: actions/setup-python@v6
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip
@@ -24,7 +19,7 @@ jobs:
       - name: Build a binary wheel and a source tarball
         run: python3 -m build
       - name: Store the distribution packages
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v5
         with:
           name: python-package-distributions
           path: dist/
@@ -43,7 +38,7 @@ jobs:
       id-token: write  # IMPORTANT: mandatory for trusted publishing
     steps:
       - name: Download all the dists
-        uses: actions/download-artifact@v4
+        uses: actions/download-artifact@v6
         with:
           name: python-package-distributions
           path: dist/
diff -pruN 9.0.0-2/.github/workflows/test.yaml 12.1.0-1/.github/workflows/test.yaml
--- 9.0.0-2/.github/workflows/test.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.github/workflows/test.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -16,24 +16,26 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.12", "3.13"]
+        python-version:
+          - "3.13"
+          - "3.14"
 
     steps:
-      - uses: actions/checkout@v4
-      - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v5
+      - uses: actions/checkout@v5
+      - name: Install uv
+        uses: astral-sh/setup-uv@v7
         with:
           python-version: ${{ matrix.python-version }}
-          cache: "pip"
-          cache-dependency-path: "**/requirements_dev.txt"
+          enable-cache: true
+          cache-dependency-glob: "requirements_dev.txt"
+          activate-environment: true
       - name: Install dependencies
         run: |
-          python -m pip install --upgrade pip
-          if [ -f requirements_dev.txt ]; then pip install -r requirements_dev.txt; fi
+          uv pip install -r requirements_dev.txt
       - name: Test with pytest
         run: |
           pytest --cov=ical --cov-report=term-missing
-      - uses: codecov/codecov-action@v5.1.2
+      - uses: codecov/codecov-action@v5.5.1
         with:
           token: ${{ secrets.CODECOV_TOKEN }}
           env_vars: OS,PYTHON
diff -pruN 9.0.0-2/.pre-commit-config.yaml 12.1.0-1/.pre-commit-config.yaml
--- 9.0.0-2/.pre-commit-config.yaml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.pre-commit-config.yaml	2025-11-14 02:06:41.000000000 +0000
@@ -1,24 +1,27 @@
 ---
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v5.0.0
+    rev: v6.0.0
     hooks:
       - id: trailing-whitespace
-        exclude: '^tests/testdata/.*yaml$'
+        exclude: '^tests/.*(testdata|__snapshots__)/.*(yaml|ics|ambr)$'
       - id: end-of-file-fixer
       - id: check-yaml
       - id: check-added-large-files
-  - repo: https://github.com/psf/black
-    rev: 24.10.0
+  - repo: https://github.com/astral-sh/ruff-pre-commit
+    rev: v0.14.4
     hooks:
-      - id: black
-  - repo: https://github.com/charliermarsh/ruff-pre-commit
-    rev: v0.8.6
-    hooks:
-      - id: ruff
+      - id: ruff-check
+        types_or:
+          - python
+          - pyi
         args:
           - --fix
           - --exit-non-zero-on-fix
+      - id: ruff-format
+        types_or:
+          - python
+          - pyi
   - repo: local
     hooks:
       - id: mypy
@@ -28,15 +31,16 @@ repos:
         types: [python]
         require_serial: true
   - repo: https://github.com/codespell-project/codespell
-    rev: v2.3.0
+    rev: v2.4.1
     hooks:
       - id: codespell
         exclude: |
-          ^(
-              tests/tzif/testdata/rfc8536-v3.yaml
+          (?x)^(
+              tests/tzif/testdata/rfc8536-v3.yaml|
+              ical/tzif/extended_timezones.py
           )$
   - repo: https://github.com/adrienverge/yamllint.git
-    rev: v1.35.1
+    rev: v1.37.1
     hooks:
       - id: yamllint
         exclude: '^tests/tool/testdata/.*\.yaml$'
@@ -44,7 +48,3 @@ repos:
           - --strict
           - -c
           - ".yaml-lint.yaml"
-  - repo: https://github.com/asottile/setup-cfg-fmt
-    rev: v2.7.0
-    hooks:
-      - id: setup-cfg-fmt
diff -pruN 9.0.0-2/.ruff.toml 12.1.0-1/.ruff.toml
--- 9.0.0-2/.ruff.toml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/.ruff.toml	2025-11-14 02:06:41.000000000 +0000
@@ -1,3 +1,5 @@
+target-version = "py313"
+
 [lint]
 ignore = ["E501"]
 select = [
diff -pruN 9.0.0-2/CONTRIBUTING.md 12.1.0-1/CONTRIBUTING.md
--- 9.0.0-2/CONTRIBUTING.md	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/CONTRIBUTING.md	2025-11-14 02:06:41.000000000 +0000
@@ -6,9 +6,9 @@ setting up a development environment.
 ## Setup a virtual environment
 
 ```
-$ python3 -m venv venv
-$ source venv/bin/activate
-$ pip3 install -r requirements_dev.txt
+$ uv venv --python=3.13
+$ source .venv/bin/activate
+$ uv pip install -r requirements_dev.txt
 ```
 
 ## Running the tests
@@ -19,6 +19,14 @@ From within your virtual environment:
 $ pytest
 ```
 
+## Running pre-commit
+
+Before sending a PR ensure the formatting is correct:
+
+```
+$ pre-commit
+```
+
 ## Contributing
 
 Committing the change will run all necessary formatting, type checking, and
diff -pruN 9.0.0-2/DESIGN.md 12.1.0-1/DESIGN.md
--- 9.0.0-2/DESIGN.md	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/DESIGN.md	2025-11-14 02:06:41.000000000 +0000
@@ -17,7 +17,7 @@ have parameters such as a timezone or al
 have a hierarchy (e.g. a calendar component has an event sub-component).
 
 The ical library uses [pyparsing](https://github.com/pyparsing/pyparsing) to
-create a very simple gammar for rfc5545, converting the individual lines of an
+create a very simple grammar for rfc5545, converting the individual lines of an
 ics file (called "contentlines") into a structured `ParseResult` object which
 has a dictionary of fields. The ical library then iterates through each
 contentline and builds a stack to manage components and subcomponents, parses
@@ -43,8 +43,8 @@ internal json encoding as well as custom
 everything. The custom logic is needed since a single field in a pydantic
 model may be a complex value in the ics output (e.g. containing property
 parameters). The json encoding using pydantic encoders could be removed
-in the future, relying on entirely custom components, but for now its kind
-of nice to reuse even if there are extera layers on top adding complexity.
+in the future, relying on entirely custom components, but for now it is kind
+of nice to reuse even if there are extra layers on top adding complexity.
 
 ## Recurrence
 
@@ -83,7 +83,7 @@ module with a lightweight and complete i
 Events are generated using a timeline fed by bunch of iterators. There is
 one iterator for all non-recurring events, then a separate iterator for
 each recurring event. A merged iterator peeks into the input of each
-iterator to decide which one to pull from when determinig the next item
+iterator to decide which one to pull from when determining the next item
 in the iterator.
 
 An individual instance of a recurring event is generated with the same `UID`,
diff -pruN 9.0.0-2/README.md 12.1.0-1/README.md
--- 9.0.0-2/README.md	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/README.md	2025-11-14 02:06:41.000000000 +0000
@@ -1,13 +1,20 @@
 This is an iCalendar rfc 5545 implementation in python. The goal of this
-project is to offer a calendar library with the relevant and practical
-features needed for building a calendar application (e.g. recurring
-events).
-
-ical's main focus is on simplicity, and the internal implementation
-is based on existing parsing libraries, where possible, making it
-easy to support as much as possible of rfc5545. It is not a goal to
-support everything exhaustively, however, the simplicity of the
-implementation makes it easy to do so.
+project is to offer a calendar library that fills gaps in other widely used
+calendar libraries such as:
+
+- Relevant and practical features needed for building a calendar application -- namely recurring events.
+- Simple APIs that are straight forward to use
+- High quality code base with high test coverage and regular releases.
+
+ical's main focus is on simplicity. Internally, this library uses other existing
+data parsing libraries making it easy to support as much as possible of rfc5545.
+It is not a goal to support everything exhaustively (e.g. enterprise features),
+however, the simplicity of the implementation makes it easy to do so. The package
+has high coverage, and high test coverage, and is easy to extend with new rfc5545
+properties.
+
+This packages uses semantic versioning, and releases often, and works
+on recent python versions.
 
 See [documentation](https://allenporter.github.io/ical/) for full quickstart and API reference.
 
@@ -83,5 +90,10 @@ See the `rrule`, `rdate`, and `exdate` f
 There are other python rfc5545 implementations that are more mature, and having
 been around for many years, are still active, and served as reference
 implementations for this project:
+
   - Ics.py - [github](https://github.com/ics-py/ics-py) [docs](https://icspy.readthedocs.io/en/stable/) - Since 2013
   - icalendar [github](https://github.com/collective/icalendar) [docs](https://icalendar.readthedocs.io/) - Since 2005
+
+You may prefer these projects if you want something that changes less often or
+if you require a non-modern version of python and if you don't mind patching
+recurring events on top yourself e.g. using `python-recurring-ical-events`.
diff -pruN 9.0.0-2/debian/changelog 12.1.0-1/debian/changelog
--- 9.0.0-2/debian/changelog	2025-02-24 07:37:11.000000000 +0000
+++ 12.1.0-1/debian/changelog	2025-12-06 15:04:15.000000000 +0000
@@ -1,3 +1,28 @@
+python-ical (12.1.0-1) unstable; urgency=medium
+
+  * Team upload.
+  * Add debian/gbp.conf
+  * Add debian/salsa-ci.yml
+  * Tests are missing from PyPi archive, switch to GitHub
+  * New upstream version 12.1.0
+  * Build with debhelper-compat 13
+
+ -- Alexandre Detiste <tchet@debian.org>  Sat, 06 Dec 2025 16:04:15 +0100
+
+python-ical (9.0.0-4) unstable; urgency=medium
+
+  * Team upload.
+  * Replace dependence on transitional python3-tz with python3-pytz 2/2
+
+ -- Alexandre Detiste <tchet@debian.org>  Sun, 23 Nov 2025 13:25:39 +0100
+
+python-ical (9.0.0-3) unstable; urgency=medium
+
+  * Team upload.
+  * Replace dependence on transitional python3-tz with python3-pytz
+
+ -- Alexandre Detiste <tchet@debian.org>  Mon, 17 Nov 2025 19:51:54 +0100
+
 python-ical (9.0.0-2) unstable; urgency=medium
 
   * Re-upload source-only.
diff -pruN 9.0.0-2/debian/control 12.1.0-1/debian/control
--- 9.0.0-2/debian/control	2025-02-24 07:37:11.000000000 +0000
+++ 12.1.0-1/debian/control	2025-12-06 15:04:15.000000000 +0000
@@ -5,8 +5,8 @@ Maintainer: Home Assistant Team <team+ho
 Uploaders:
  Thomas Goirand <zigo@debian.org>,
 Build-Depends:
- debhelper-compat (= 11),
- dh-python,
+ debhelper-compat (= 13),
+ dh-sequence-python3,
  openstack-pkg-tools,
  pybuild-plugin-pyproject,
  python3-all,
@@ -19,10 +19,10 @@ Build-Depends-Indep:
  python3-pyparsing,
  python3-pytest,
  python3-pytest-benchmark,
+ python3-pytz,
  python3-syrupy,
- python3-tz,
  tzdata-legacy,
-Standards-Version: 4.6.1
+Standards-Version: 4.7.2
 Vcs-Browser: https://salsa.debian.org/homeassistant-team/deps/python-ical
 Vcs-Git: https://salsa.debian.org/homeassistant-team/deps/python-ical.git
 Homepage: https://github.com/allenporter/ical
@@ -33,11 +33,11 @@ Depends:
  python3-dateutil,
  python3-pydantic,
  python3-pyparsing,
- python3-tz,
+ python3-pytz,
  ${misc:Depends},
  ${python3:Depends},
 Description: iCalendar implementation (rfc 2445)
- This is an iCalendar rfc 5545 implementation in python. The goal of this
+ This is an iCalendar rfc 5545 implementation in Python. The goal of this
  project is to offer a calendar library with the relevant and practical
  features needed for building a calendar application (e.g. recurring
  events).
diff -pruN 9.0.0-2/debian/copyright 12.1.0-1/debian/copyright
--- 9.0.0-2/debian/copyright	2025-02-24 07:37:11.000000000 +0000
+++ 12.1.0-1/debian/copyright	2025-12-06 15:04:15.000000000 +0000
@@ -1,4 +1,4 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: ical
 Source: https://github.com/allenporter/ical
 
diff -pruN 9.0.0-2/debian/gbp.conf 12.1.0-1/debian/gbp.conf
--- 9.0.0-2/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/debian/gbp.conf	2025-12-06 15:01:07.000000000 +0000
@@ -0,0 +1,2 @@
+[DEFAULT]
+debian-branch = debian/unstable
diff -pruN 9.0.0-2/debian/rules 12.1.0-1/debian/rules
--- 9.0.0-2/debian/rules	2025-02-24 07:37:11.000000000 +0000
+++ 12.1.0-1/debian/rules	2025-12-06 15:01:07.000000000 +0000
@@ -6,4 +6,4 @@ include /usr/share/openstack-pkg-tools/p
 export PYBUILD_TEST_ARGS= -v tests -k 'not test_emoji_import and not test_debug_invalid_rules and not test_debug_invalid_rule_without_recur'
 
 %:
-	dh $@ --buildsystem=pybuild --with python3
+	dh $@ --buildsystem=pybuild
diff -pruN 9.0.0-2/debian/salsa-ci.yml 12.1.0-1/debian/salsa-ci.yml
--- 9.0.0-2/debian/salsa-ci.yml	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/debian/salsa-ci.yml	2025-12-06 15:01:07.000000000 +0000
@@ -0,0 +1,2 @@
+include:
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
diff -pruN 9.0.0-2/debian/watch 12.1.0-1/debian/watch
--- 9.0.0-2/debian/watch	2025-02-24 07:37:11.000000000 +0000
+++ 12.1.0-1/debian/watch	2025-12-06 15:01:10.000000000 +0000
@@ -1,4 +1,5 @@
-version=3
-opts=uversionmangle=s/(rc|a|b|c)/~$1/ \
-https://pypi.debian.net/ical/ical-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
+Version: 5
 
+Template: GitHub
+Owner: allenporter
+Project: ical
diff -pruN 9.0.0-2/ical/alarm.py 12.1.0-1/ical/alarm.py
--- 9.0.0-2/ical/alarm.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/alarm.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,17 +2,14 @@
 
 import datetime
 import enum
-from typing import Any, Optional, Union
-
-try:
-    from pydantic.v1 import Field, root_validator
-except ImportError:
-    from pydantic import Field, root_validator  # type: ignore[no-redef, assignment]
+from typing import Optional, Self, Union
 
+from pydantic import Field, field_serializer, model_validator
 
 from .component import ComponentModel
 from .parsing.property import ParsedProperty
 from .types import CalAddress
+from .types.data_types import serialize_field
 
 
 class Action(str, enum.Enum):
@@ -57,7 +54,7 @@ class Alarm(ComponentModel):
     repeat: Optional[int] = None
     """The number of times an alarm should be repeated.
 
-    If repeate is specified then duration must also be specified.
+    If repeat is specified then duration must also be specified.
     """
 
     #
@@ -82,33 +79,35 @@ class Alarm(ComponentModel):
     # Future properties:
     # - attach
 
-    @root_validator
-    def parse_display_required_fields(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def parse_display_required_fields(self) -> Self:
         """Validate required fields for display actions."""
-        action = values.get("action")
+        action = self.action
         if action != Action.DISPLAY:
-            return values
-        if not values.get("description"):
+            return self
+        if self.description is None:
             raise ValueError(f"Description value is required for action {action}")
-        return values
+        return self
 
-    @root_validator
-    def parse_email_required_fields(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def parse_email_required_fields(self) -> Self:
         """Validate required fields for email actions."""
-        action = values.get("action")
+        action = self.action
         if action != Action.EMAIL:
-            return values
-        if not values.get("description"):
+            return self
+        if self.description is None:
             raise ValueError(f"Description value is required for action {action}")
-        if not values.get("summary"):
+        if self.summary is None:
             raise ValueError(f"Summary value is required for action {action}")
-        return values
+        return self
 
-    @root_validator
-    def parse_repeat_duration(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def parse_repeat_duration(self) -> Self:
         """Assert the relationship between repeat and duration."""
-        if (values.get("duration") is None) != (values.get("repeat") is None):
+        if (self.duration is None) != (self.repeat is None):
             raise ValueError(
                 "Duration and Repeat must both be specified or both omitted"
             )
-        return values
+        return self
+
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/calendar.py 12.1.0-1/ical/calendar.py
--- 9.0.0-2/ical/calendar.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/calendar.py	2025-11-14 02:06:41.000000000 +0000
@@ -8,10 +8,9 @@ import logging
 from typing import Optional, Any
 import zoneinfo
 
-try:
-    from pydantic.v1 import Field, root_validator
-except ImportError:
-    from pydantic import Field, root_validator  # type: ignore[no-redef, assignment]
+from pydantic import Field, field_serializer, model_validator
+
+from ical.types.data_types import serialize_field
 
 from .component import ComponentModel
 from .event import Event
@@ -23,6 +22,8 @@ from .timeline import Timeline, calendar
 from .timezone import Timezone, TimezoneModel, IcsTimezoneInfo
 from .todo import Todo
 from .util import local_timezone, prodid_factory
+from .tzif import timezoneinfo
+from .compat import timezone_compat
 
 
 _LOGGER = logging.getLogger(__name__)
@@ -80,7 +81,8 @@ class Calendar(ComponentModel):
         """
         return calendar_timeline(self.events, tzinfo=tzinfo or local_timezone())
 
-    @root_validator(pre=True)
+    @model_validator(mode="before")
+    @classmethod
     def _propagate_timezones(cls, values: dict[str, Any]) -> dict[str, Any]:
         """Propagate timezone information down to date-time objects.
 
@@ -89,7 +91,7 @@ class Calendar(ComponentModel):
         changed live, the DATE-TIME objects are not updated.
 
         We first update the timezone objects using another pydantic model just
-        for parsing and propagaint here (TimezoneModel). We then walk through
+        for parsing and propagating here (TimezoneModel). We then walk through
         all DATE-TIME objects referenced by components and lookup any TZID
         property parameters, converting them to a datetime.tzinfo object. The
         DATE-TIME parser will use this instead of the TZID string. We prefer
@@ -100,8 +102,8 @@ class Calendar(ComponentModel):
             return values
 
         # First parse the timezones out of the calendar, ignoring everything else
-        timezone_model = TimezoneModel.parse_obj(values)
-        system_tzids = zoneinfo.available_timezones()
+        timezone_model = TimezoneModel.model_validate(values)
+        system_tzids = timezoneinfo.available_timezones()
         tzinfos: dict[str, datetime.tzinfo] = {
             timezone.tz_id: IcsTimezoneInfo.from_timezone(timezone)
             for timezone in timezone_model.timezones
@@ -130,3 +132,5 @@ class Calendar(ComponentModel):
                     ):
                         tzid_param.values = [tzinfo]
         return values
+
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/calendar_stream.py 12.1.0-1/ical/calendar_stream.py
--- 9.0.0-2/ical/calendar_stream.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/calendar_stream.py	2025-11-14 02:06:41.000000000 +0000
@@ -29,18 +29,14 @@ with filename.open(mode="w") as ics_file
 from __future__ import annotations
 
 import logging
-import pyparsing
-
-try:
-    from pydantic.v1 import Field
-except ImportError:
-    from pydantic import Field  # type: ignore[assignment]
+from pydantic import Field, field_serializer
 
 from .calendar import Calendar
 from .component import ComponentModel
 from .parsing.component import encode_content, parse_content
-from .types.data_types import DATA_TYPE
+from .types.data_types import serialize_field
 from .exceptions import CalendarParseError
+from pydantic import ConfigDict
 
 _LOGGER = logging.getLogger(__name__)
 
@@ -57,10 +53,7 @@ class CalendarStream(ComponentModel):
     @classmethod
     def from_ics(cls, content: str) -> "CalendarStream":
         """Factory method to create a new instance from an rfc5545 iCalendar content."""
-        try:
-            components = parse_content(content)
-        except pyparsing.ParseException as err:
-            raise CalendarParseError(f"Failed to parse calendar stream: {err}") from err
+        components = parse_content(content)
         result: dict[str, list] = {"vcalendar": []}
         for component in components:
             result.setdefault(component.name, [])
@@ -92,9 +85,8 @@ class IcsCalendarStream(CalendarStream):
         stream = cls(vcalendar=[calendar])
         return stream.ics()
 
-    class Config:
-        """Configuration for IcsCalendarStream pydantic model."""
-
-        json_encoders = DATA_TYPE.encode_property_json
-        validate_assignment = True
-        allow_population_by_field_name = True
+    model_config = ConfigDict(
+        validate_assignment=True,
+        populate_by_name=True,
+    )
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/compat/__init__.py 12.1.0-1/ical/compat/__init__.py
--- 9.0.0-2/ical/compat/__init__.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/ical/compat/__init__.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,10 @@
+"""Compatibility layer for fixing invalid ical files.
+
+This module provides a compatibility layer for handling invalid iCalendar files.
+"""
+
+from .make_compat import enable_compat_mode
+
+__all__ = [
+    "enable_compat_mode",
+]
diff -pruN 9.0.0-2/ical/compat/make_compat.py 12.1.0-1/ical/compat/make_compat.py
--- 9.0.0-2/ical/compat/make_compat.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/ical/compat/make_compat.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,49 @@
+"""Compatibility layer for Office 365 and Exchange Server iCalendar files.
+
+This module provides a context manager that can allow invalid calendar files
+to be parsed.
+"""
+
+import contextlib
+from collections.abc import Generator
+import logging
+import re
+
+from . import timezone_compat
+
+
+_LOGGER = logging.getLogger(__name__)
+
+# Capture group that extracts the PRODID from the ics content.
+_PRODID_RE = r"PRODID:(?P<prodid>.*[^\\r\\n]+)"
+
+_EXCHANGE_PRODID = "Microsoft Exchange Server"
+
+
+def _get_prodid(ics: str) -> str | None:
+    """Extract the PRODID from the iCalendar content."""
+    match = re.search(_PRODID_RE, ics)
+    if match:
+        _LOGGER.debug("Extracted PRODID: %s", match)
+        return match.group("prodid")
+    return None
+
+
+@contextlib.contextmanager
+def enable_compat_mode(ics: str) -> Generator[str]:
+    """Enable compatibility mode to fix known broken calendar content."""
+
+    # Check if the PRODID is from Microsoft Exchange Server
+    prodid = _get_prodid(ics)
+    if prodid and _EXCHANGE_PRODID in prodid:
+        _LOGGER.debug("Enabling compatibility mode for Microsoft Exchange Server")
+        # Enable compatibility mode for Microsoft Exchange Server
+        with (
+            timezone_compat.enable_allow_invalid_timezones(),
+            timezone_compat.enable_extended_timezones(),
+        ):
+            yield ics
+    else:
+        _LOGGER.debug("No compatibility mode needed")
+        # No compatibility mode needed
+        yield ics
diff -pruN 9.0.0-2/ical/compat/timezone_compat.py 12.1.0-1/ical/compat/timezone_compat.py
--- 9.0.0-2/ical/compat/timezone_compat.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/ical/compat/timezone_compat.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,39 @@
+"""Compatibility layer for allowing extended timezones in iCalendar files."""
+
+from collections.abc import Generator
+import contextlib
+import contextvars
+
+
+_invalide_timezones = contextvars.ContextVar("invalid_timezones", default=False)
+_extended_timezones = contextvars.ContextVar("extended_timezones", default=False)
+
+
+@contextlib.contextmanager
+def enable_extended_timezones() -> Generator[None]:
+    """Context manager to allow extended timezones in iCalendar files."""
+    token = _extended_timezones.set(True)
+    try:
+        yield
+    finally:
+        _extended_timezones.reset(token)
+
+
+def is_extended_timezones_enabled() -> bool:
+    """Check if extended timezones are enabled."""
+    return _extended_timezones.get()
+
+
+@contextlib.contextmanager
+def enable_allow_invalid_timezones() -> Generator[None]:
+    """Context manager to allow invalid timezones in iCalendar files."""
+    token = _invalide_timezones.set(True)
+    try:
+        yield
+    finally:
+        _invalide_timezones.reset(token)
+
+
+def is_allow_invalid_timezones_enabled() -> bool:
+    """Check if allowing invalid timezones is enabled."""
+    return _invalide_timezones.get()
diff -pruN 9.0.0-2/ical/component.py 12.1.0-1/ical/component.py
--- 9.0.0-2/ical/component.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/component.py	2025-11-14 02:06:41.000000000 +0000
@@ -20,19 +20,26 @@ import copy
 import datetime
 import json
 import logging
-from typing import Any, Union, get_args, get_origin
+from typing import TYPE_CHECKING, Any, Union, get_args, get_origin
 
-try:
-    from pydantic.v1 import BaseModel, root_validator, ValidationError
-    from pydantic.v1.fields import SHAPE_LIST
-except ImportError:
-    from pydantic import BaseModel, root_validator, ValidationError  # type: ignore[no-redef, assignment]
-    from pydantic.fields import SHAPE_LIST  # type: ignore[attr-defined, no-redef]
+from pydantic import BaseModel, ConfigDict, ValidationError, model_validator
+
+from ical.util import get_field_type
 
 from .parsing.component import ParsedComponent
 from .parsing.property import ParsedProperty
 from .types.data_types import DATA_TYPE
-from .exceptions import CalendarParseError
+from .exceptions import CalendarParseError, ParameterValueError
+
+if TYPE_CHECKING:
+    from typing import TypeVar
+
+    from .event import Event
+    from .journal import Journal
+    from .todo import Todo
+
+    ModelT = TypeVar("ModelT", bound=Union[Event, Journal, Todo])
+    ModelV = TypeVar("ModelV", bound=Union[Event, Todo])
 
 _LOGGER = logging.getLogger(__name__)
 
@@ -60,8 +67,7 @@ def _adjust_recurrence_date(
     if isinstance(dtstart, datetime.datetime):
         if not isinstance(date_value, datetime.datetime):
             raise ValueError(
-                "DTSTART was DATE-TIME but UNTIL was DATE: "
-                "must be the same value type"
+                "DTSTART was DATE-TIME but UNTIL was DATE: must be the same value type"
             )
         if dtstart.tzinfo is None:
             if date_value.tzinfo is not None:
@@ -80,16 +86,25 @@ def _adjust_recurrence_date(
     return date_value
 
 
-def validate_until_dtstart(_cls: BaseModel, values: dict[str, Any]) -> dict[str, Any]:
+def validate_until_dtstart(self: ModelT) -> ModelT:
     """Verify the until time and dtstart are the same."""
-    if (
-        not (rule := values.get("rrule"))
-        or not rule.until
-        or not (dtstart := values.get("dtstart"))
-    ):
-        return values
+    if not (rule := self.rrule) or not rule.until or not (dtstart := self.dtstart):
+        return self
     rule.until = _adjust_recurrence_date(rule.until, dtstart)
-    return values
+    return self
+
+
+def validate_duration_unit(self: ModelV) -> ModelV:
+    """Validate the duration is the appropriate units."""
+    if not (duration := self.duration):
+        return self
+    dtstart = self.dtstart
+    if type(dtstart) is datetime.date:
+        if duration.seconds != 0:
+            raise ValueError("Event with start date expects duration in days only")
+    if duration < datetime.timedelta(seconds=0):
+        raise ValueError(f"Expected duration to be positive but was {duration}")
+    return self
 
 
 def _as_datetime(
@@ -97,38 +112,35 @@ def _as_datetime(
     dtstart: datetime.datetime,
 ) -> datetime.datetime:
     if not isinstance(date_value, datetime.datetime):
-        return datetime.datetime.combine(date_value, dtstart.time())
+        new_dt = datetime.datetime.combine(date_value, dtstart.time())
+        return new_dt.replace(tzinfo=dtstart.tzinfo)
     return date_value
 
+
 def _as_date(
     date_value: datetime.datetime | datetime.date,
-    dtstart: datetime.datetime,
+    dtstart: datetime.date,
 ) -> datetime.date:
     if isinstance(date_value, datetime.datetime):
         return datetime.date.fromordinal(date_value.toordinal())
     return date_value
 
 
-def validate_recurrence_dates(
-    _cls: BaseModel, values: dict[str, Any]
-) -> dict[str, Any]:
+def validate_recurrence_dates(self: ModelT) -> ModelT:
     """Verify the recurrence dates have the correct types."""
-    if (
-        not values.get("rrule")
-        or not (dtstart := values.get("dtstart"))
-        or not (isinstance(dtstart, datetime.datetime) or isinstance(dtstart, datetime.date))
-    ):
-        return values
+    if not self.rrule or not (dtstart := self.dtstart):
+        return self
     is_datetime = isinstance(dtstart, datetime.datetime)
     validator = _as_datetime if is_datetime else _as_date
     for field in ("exdate", "rdate"):
-        if not (date_values := values.get(field)):
+        if not (date_values := self.__dict__.get(field)):
             continue
 
-        values[field] = [
-            validator(date_value, dtstart) for date_value in date_values
+        self.__dict__[field] = [
+            validator(date_value, dtstart)  # type: ignore[arg-type]
+            for date_value in date_values
         ]
-    return values
+    return self
 
 
 class ComponentModel(BaseModel):
@@ -138,24 +150,33 @@ class ComponentModel(BaseModel):
         try:
             super().__init__(**data)
         except ValidationError as err:
-            raise CalendarParseError(f"Failed to parse component: {err}") from err
+            _LOGGER.debug("Failed to parse component %s", err)
+            message = [
+                f"Failed to parse calendar {self.__class__.__name__.upper()} component"
+            ]
+            for error in err.errors():
+                if msg := error.get("msg"):
+                    message.append(msg)
+            error_str = ": ".join(message)
+            raise CalendarParseError(error_str, detailed_error=str(err)) from err
 
     def copy_and_validate(self, update: dict[str, Any]) -> ComponentModel:
         """Create a new object with updated values and validate it."""
         # Make a deep copy since deletion may update this objects recurrence rules
-        new_item_copy = self.copy(update=update, deep=True)
-        # Create a new object using the constructore to ensure we're performing
+        new_item_copy = self.model_copy(update=update, deep=True)
+        # Create a new object using the constructor to ensure we're performing
         # validation on the new object.
-        return self.__class__(**new_item_copy.dict())
+        return self.__class__(**new_item_copy.model_dump())
 
-    @root_validator(pre=True, allow_reuse=True)
+    @model_validator(mode="before")
+    @classmethod
     def parse_extra_fields(
         cls, values: dict[str, list[ParsedProperty | ParsedComponent]]
     ) -> dict[str, Any]:
         """Parse extra fields not in the model."""
-        all_fields = set()
-        for field in cls.__fields__.values():
-            all_fields |= {field.alias, field.name}
+        all_fields: set[str | None] = set()
+        for name, field in cls.model_fields.items():
+            all_fields |= {field.alias, name}
 
         extras: list[ParsedProperty | ParsedComponent] = []
         for field_name, value in values.items():
@@ -168,29 +189,32 @@ class ComponentModel(BaseModel):
             values["extras"] = extras
         return values
 
-    @root_validator(pre=True, allow_reuse=True)
+    @model_validator(mode="before")
+    @classmethod
     def parse_property_values(cls, values: dict[str, Any]) -> dict[str, Any]:
         """Parse individual ParsedProperty value fields."""
         _LOGGER.debug("Parsing value data %s", values)
 
-        for field in cls.__fields__.values():
+        for name, field in cls.model_fields.items():
             if field.alias == "extras":
                 continue
-            if not (value := values.get(field.alias)):
+            field_name = field.alias or name
+            if not (value := values.get(field_name)):
                 continue
             if not (isinstance(value, list) and isinstance(value[0], ParsedProperty)):
                 # The incoming value is not from the parse tree
                 continue
-            if field.alias in EXPAND_REPEATED_VALUES:
+            if field_name in EXPAND_REPEATED_VALUES:
                 value = cls._expand_repeated_property(value)
             # Repeated values will accept a list, otherwise truncate to a single
             # value when repeated is not allowed.
-            allow_repeated = field.shape == SHAPE_LIST
+            annotation = get_field_type(field.annotation)
+            allow_repeated = get_origin(annotation) is list
             if not allow_repeated and len(value) > 1:
-                raise ValueError(f"Expected one value for field: {field.alias}")
-            field_types = cls._get_field_types(field.type_)
+                raise ValueError(f"Expected one value for field: {name}")
+            field_types = cls._get_field_types(annotation)
             validated = [cls._parse_property(field_types, prop) for prop in value]
-            values[field.alias] = validated if allow_repeated else validated[0]
+            values[field_name] = validated if allow_repeated else validated[0]
 
         _LOGGER.debug("Completed parsing value data %s", values)
 
@@ -209,13 +233,18 @@ class ComponentModel(BaseModel):
         for sub_type in field_types:
             try:
                 return cls._parse_single_property(sub_type, prop)
+            except ParameterValueError as err:
+                _LOGGER.debug("Invalid property value of type %s: %s", sub_type, err)
+                raise err
             except ValueError as err:
                 _LOGGER.debug(
                     "Unable to parse property value as type %s: %s", sub_type, err
                 )
                 errors.append(str(err))
                 continue
-        raise ValueError(f"Failed to validate: {prop.value}, errors: ({errors})")
+        raise ValueError(
+            f"Failed to validate: {prop.value} as {' or '.join(sub_type.__name__ for sub_type in field_types)}, due to: ({errors})"
+        )
 
     @classmethod
     def _parse_single_property(cls, field_type: type, prop: ParsedProperty) -> Any:
@@ -259,6 +288,11 @@ class ComponentModel(BaseModel):
     def _get_field_types(cls, field_type: type) -> list[type]:
         """Return type to attempt for encoding/decoding based on the field type."""
         origin = get_origin(field_type)
+        if origin is list:
+            if not (args := get_args(field_type)):
+                raise ValueError(f"Unable to determine args of type: {field_type}")
+            field_type = args[0]
+            origin = get_origin(field_type)
         if origin is Union:
             if not (args := get_args(field_type)):
                 raise ValueError(f"Unable to determine args of type: {field_type}")
@@ -279,9 +313,11 @@ class ComponentModel(BaseModel):
         # The overall data model hierarchy is created by pydantic and properties
         # are encoded using the json encoders specific for each type. These are
         # marshalled through as string values. There are then additional passes
-        # to ge the data in to the right final format for ics encoding.
+        # to get the data in to the right final format for ics encoding.
         model_data = json.loads(
-            self.json(by_alias=True, exclude_none=True, exclude_defaults=True)
+            self.model_dump_json(
+                by_alias=True, exclude_none=True, context={"ics": True}
+            )
         )
         # The component name is ignored as we're really only encoding children components
         return self.__encode_component__(self.__class__.__name__, model_data)
@@ -297,21 +333,24 @@ class ComponentModel(BaseModel):
         as well as overall component objects.
         """
         parent = ParsedComponent(name=name)
-        for field in cls.__fields__.values():
-            key = field.alias
+        for name, field in cls.model_fields.items():
+            key = field.alias or name
             values = model_data.get(key)
             if values is None or key == "extras":
                 continue
             if not isinstance(values, list):
                 values = [values]
+            annotation = get_field_type(field.annotation)
             for value in values:
-                if component_encoder := getattr(
-                    field.type_, "__encode_component__", None
-                ):
-                    parent.components.append(component_encoder(key, value))
-                    continue
-                if prop := cls._encode_property(key, field.type_, value):
-                    parent.properties.append(prop)
+                for field_type in cls._get_field_types(annotation):
+                    if component_encoder := getattr(
+                        field_type, "__encode_component__", None
+                    ):
+                        parent.components.append(component_encoder(key, value))
+                        break
+                else:
+                    if prop := cls._encode_property(key, annotation, value):
+                        parent.properties.append(prop)
         return parent
 
     @classmethod
@@ -343,10 +382,8 @@ class ComponentModel(BaseModel):
 
         raise ValueError(f"Unable to encode property: {value}, errors: {errors}")
 
-    class Config:
-        """Pyandtic model configuration."""
-
-        validate_assignment = True
-        allow_population_by_field_name = True
-        smart_union = True
-        arbitrary_types_allowed = True
+    model_config = ConfigDict(
+        validate_assignment=True,
+        populate_by_name=True,
+        arbitrary_types_allowed=True,
+    )
diff -pruN 9.0.0-2/ical/event.py 12.1.0-1/ical/event.py
--- 9.0.0-2/ical/event.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/event.py	2025-11-14 02:06:41.000000000 +0000
@@ -18,17 +18,20 @@ import datetime
 import enum
 import logging
 from collections.abc import Iterable
-from typing import Any, Optional, Union
+from typing import Annotated, Any, Optional, Self, Union
 
-try:
-    from pydantic.v1 import Field, root_validator
-except ImportError:
-    from pydantic import Field, root_validator  # type: ignore[no-redef, assignment]
+from pydantic import BeforeValidator, Field, field_serializer, model_validator
+
+from ical.types.data_types import serialize_field
 
 from .alarm import Alarm
-from .component import ComponentModel, validate_until_dtstart, validate_recurrence_dates
+from .component import (
+    ComponentModel,
+    validate_duration_unit,
+    validate_until_dtstart,
+    validate_recurrence_dates,
+)
 from .iter import RulesetIterable, as_rrule
-from .exceptions import CalendarParseError
 from .parsing.property import ParsedProperty
 from .timespan import Timespan
 from .types import (
@@ -42,7 +45,13 @@ from .types import (
     Uri,
     RelatedTo,
 )
-from .util import dtstamp_factory, normalize_datetime, uid_factory
+from .util import (
+    dtstamp_factory,
+    normalize_datetime,
+    parse_date_and_datetime,
+    parse_date_and_datetime_list,
+    uid_factory,
+)
 
 _LOGGER = logging.getLogger(__name__)
 
@@ -87,22 +96,27 @@ class Event(ComponentModel):
     as other parsing methods.
     """
 
-    dtstamp: Union[datetime.datetime, datetime.date] = Field(
-        default_factory=lambda: dtstamp_factory()
-    )
+    dtstamp: Annotated[
+        Union[datetime.date, datetime.datetime],
+        BeforeValidator(parse_date_and_datetime),
+    ] = Field(default_factory=lambda: dtstamp_factory())
     """Specifies the date and time the event was created."""
 
     uid: str = Field(default_factory=lambda: uid_factory())
     """A globally unique identifier for the event."""
 
     # Has an alias of 'start'
-    dtstart: Union[datetime.datetime, datetime.date] = Field(
-        default=None,
-    )
+    dtstart: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = Field(default=None)
     """The start time or start day of the event."""
 
     # Has an alias of 'end'
-    dtend: Optional[Union[datetime.datetime, datetime.date]] = None
+    dtend: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = None
     """The end time or end day of the event.
 
     This may be specified as an explicit date. Alternatively, a duration
@@ -112,7 +126,7 @@ class Event(ComponentModel):
     duration: Optional[datetime.timedelta] = None
     """The duration of the event as an alternative to an explicit end date/time."""
 
-    summary: str = ""
+    summary: Optional[str] = None
     """Defines a short summary or subject for the event."""
 
     attendees: list[CalAddress] = Field(alias="attendee", default_factory=list)
@@ -158,7 +172,7 @@ class Event(ComponentModel):
     """The organizer of a group-scheduled calendar entity."""
 
     priority: Optional[Priority] = None
-    """Defines the relative priorirty of the calendar event."""
+    """Defines the relative priority of the calendar event."""
 
     recurrence_id: Optional[RecurrenceId] = Field(alias="recurrence-id", default=None)
     """Defines a specific instance of a recurring event.
@@ -190,7 +204,10 @@ class Event(ComponentModel):
     sure all instances have the same start time regardless of time zone changing.
     """
 
-    rdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    rdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """Defines the list of date/time values for recurring events.
 
     Can appear along with the rrule property to define a set of repeating occurrences of the
@@ -199,7 +216,10 @@ class Event(ComponentModel):
     and rdate properties then excluding any times specified by exdate.
     """
 
-    exdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    exdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """Defines the list of exceptions for recurring events.
 
     The exception dates are used in computing the recurrence set. The recurrence set is
@@ -209,14 +229,15 @@ class Event(ComponentModel):
     """
 
     request_status: Optional[RequestStatus] = Field(
-        alias="request-status", default_value=None
+        default=None,
+        alias="request-status",
     )
 
     sequence: Optional[int] = None
     """The revision sequence number in the calendar component.
 
     When an event is created, its sequence number is 0. It is monotonically incremented
-    by the organizers calendar user agent every time a significant revision is made to
+    by the organizer's calendar user agent every time a significant revision is made to
     the calendar event.
     """
 
@@ -228,7 +249,7 @@ class Event(ComponentModel):
     """
 
     transparency: Optional[str] = Field(alias="transp", default=None)
-    """Defines whether or not an event is transparenty to busy time searches."""
+    """Defines whether or not an event is transparent to busy time searches."""
 
     url: Optional[Uri] = None
     """Defines a url associated with the event.
@@ -258,19 +279,20 @@ class Event(ComponentModel):
     @property
     def start(self) -> datetime.datetime | datetime.date:
         """Return the start time for the event."""
+        assert self.dtstart is not None
         return self.dtstart
 
     @property
     def end(self) -> datetime.datetime | datetime.date:
         """Return the end time for the event."""
         if self.duration:
-            return self.dtstart + self.duration
+            return self.start + self.duration
         if self.dtend:
             return self.dtend
 
-        if isinstance(self.dtstart, datetime.datetime):
-            return self.dtstart
-        return self.dtstart + datetime.timedelta(days=1)
+        if isinstance(self.start, datetime.datetime):
+            return self.start
+        return self.start + datetime.timedelta(days=1)
 
     @property
     def start_datetime(self) -> datetime.datetime:
@@ -346,7 +368,7 @@ class Event(ComponentModel):
 
         A recurring event is typically evaluated specially on the timeline. The
         data model has a single event, but the timeline evaluates the recurrence
-        to expand and copy the the event to multiple places on the timeline
+        to expand and copy the event to multiple places on the timeline
         using `as_rrule`.
         """
         if self.rrule or self.rdate:
@@ -358,13 +380,14 @@ class Event(ComponentModel):
 
         A recurring event is typically evaluated specially on the timeline. The
         data model has a single event, but the timeline evaluates the recurrence
-        to expand and copy the the event to multiple places on the timeline.
+        to expand and copy the event to multiple places on the timeline.
 
         This is only valid for events where `recurring` is True.
         """
         return as_rrule(self.rrule, self.rdate, self.exdate, self.dtstart)
 
-    @root_validator(pre=True, allow_reuse=True)
+    @model_validator(mode="before")
+    @classmethod
     def _inspect_date_types(cls, values: dict[str, Any]) -> dict[str, Any]:
         """Debug the date and date/time values of the event."""
         dtstart = values.get("dtstart")
@@ -374,17 +397,22 @@ class Event(ComponentModel):
         _LOGGER.debug("Found initial values dtstart=%s, dtend=%s", dtstart, dtend)
         return values
 
-    @root_validator(allow_reuse=True)
-    def _validate_date_types(cls, values: dict[str, Any]) -> dict[str, Any]:
+    _validate_until_dtstart = model_validator(mode="after")(validate_until_dtstart)
+    _validate_recurrence_dates = model_validator(mode="after")(
+        validate_recurrence_dates
+    )
+
+    @model_validator(mode="after")
+    def _validate_date_types(self) -> Self:
         """Validate that start and end values are the same date or datetime type."""
-        dtstart = values.get("dtstart")
-        dtend = values.get("dtend")
+        dtstart = self.dtstart
+        dtend = self.dtend
 
         if not dtstart or not dtend:
-            return values
+            return self
         if isinstance(dtstart, datetime.datetime):
             if not isinstance(dtend, datetime.datetime):
-                _LOGGER.debug("Unexpected data types for values: %s", values)
+                _LOGGER.debug("Unexpected data types for values: %s", self)
                 raise ValueError(
                     f"Unexpected dtstart value '{dtstart}' was datetime but "
                     f"dtend value '{dtend}' was not datetime"
@@ -395,47 +423,33 @@ class Event(ComponentModel):
                     f"Unexpected dtstart value '{dtstart}' was date but "
                     f"dtend value '{dtend}' was datetime"
                 )
-        return values
+        return self
 
-    @root_validator(allow_reuse=True)
-    def _validate_datetime_timezone(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def _validate_datetime_timezone(self) -> Self:
         """Validate that start and end values have the same timezone information."""
         if (
-            not (dtstart := values.get("dtstart"))
-            or not (dtend := values.get("dtend"))
+            not (dtstart := self.dtstart)
+            or not (dtend := self.dtend)
             or not isinstance(dtstart, datetime.datetime)
             or not isinstance(dtend, datetime.datetime)
         ):
-            return values
+            return self
         if dtstart.tzinfo is None and dtend.tzinfo is not None:
             raise ValueError(
                 f"Expected end datetime value in localtime but was {dtend}"
             )
         if dtstart.tzinfo is not None and dtend.tzinfo is None:
             raise ValueError(f"Expected end datetime with timezone but was {dtend}")
-        return values
+        return self
 
-    @root_validator(allow_reuse=True)
-    def _validate_one_end_or_duration(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def _validate_one_end_or_duration(self) -> Self:
         """Validate that only one of duration or end date may be set."""
-        if values.get("dtend") and values.get("duration"):
-            raise ValueError("Only one of dtend or duration may be set." "")
-        return values
+        if self.dtend and self.duration:
+            raise ValueError("Only one of dtend or duration may be set.")
+        return self
 
-    @root_validator(allow_reuse=True)
-    def _validate_duration_unit(cls, values: dict[str, Any]) -> dict[str, Any]:
-        """Validate the duration is the appropriate units."""
-        if not (duration := values.get("duration")):
-            return values
-        dtstart = values["dtstart"]
-        if type(dtstart) is datetime.date:
-            if duration.seconds != 0:
-                raise ValueError("Event with start date expects duration in days only")
-        if duration < datetime.timedelta(seconds=0):
-            raise ValueError(f"Expected duration to be positive but was {duration}")
-        return values
+    _validate_duration_unit = model_validator(mode="after")(validate_duration_unit)
 
-    _validate_until_dtstart = root_validator(allow_reuse=True)(validate_until_dtstart)
-    _validate_recurrence_dates = root_validator(allow_reuse=True)(
-        validate_recurrence_dates
-    )
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/exceptions.py 12.1.0-1/ical/exceptions.py
--- 9.0.0-2/ical/exceptions.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/exceptions.py	2025-11-14 02:06:41.000000000 +0000
@@ -6,16 +6,44 @@ class CalendarError(Exception):
 
 
 class CalendarParseError(CalendarError):
-    """Exception raised when parsing an ical string."""
+    """Exception raised when parsing an ical string.
+
+    The 'message' attribute contains a human-readable message about the
+    error that occurred. The 'detailed_error' attribute can provide additional
+    information about the error, such as a stack trace or detailed parsing
+    information, useful for debugging purposes.
+    """
+
+    def __init__(self, message: str, *, detailed_error: str | None = None) -> None:
+        """Initialize the CalendarParseError with a message."""
+        super().__init__(message)
+        self.message = message
+        self.detailed_error = detailed_error
+
+
+class ParameterValueError(ValueError):
+    """Exception raised when validating a datetime.
+
+    When validating a ParsedProperty, it may not be known what data-type
+    the result should be, so multiple validators may be called. We must
+    distinguish between "this property does not look like this data-type"
+    from "this property should be this data-type, but it is invalid". The
+    former should raise a ValueError and the latter ParameterValueError.
+    The motivating example is "DTSTART;TZID=GMT:20250601T171819" as either
+    datetime or date. It fails to be a datetime because of an unrecognized
+    timezone, and fails to be a date, because it is a datetime. Rather
+    than continue trying to validate it as a date, raise ParameterValueError
+    to stop, and simply return a single error.
+    """
 
 
 class RecurrenceError(CalendarError):
     """Exception raised when evaluating a recurrence rule.
 
     Recurrence rules have complex logic and it is common for there to be
-    invalid date or bugs, so this special exception exists to help
+    invalid dates or bugs, so this special exception exists to help
     provide additional debug data to find the source of the issue. Often
-    `dateutil.rrule` has limitataions and ical has to work around them
+    `dateutil.rrule` has limitations and ical has to work around them
     by providing special wrapping libraries.
     """
 
diff -pruN 9.0.0-2/ical/freebusy.py 12.1.0-1/ical/freebusy.py
--- 9.0.0-2/ical/freebusy.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/freebusy.py	2025-11-14 02:06:41.000000000 +0000
@@ -6,17 +6,21 @@ from __future__ import annotations
 
 import datetime
 import logging
-from typing import Any, Optional, Union
+from typing import Annotated, Any, Optional, Union
 
-try:
-    from pydantic.v1 import Field, validator
-except ImportError:
-    from pydantic import Field, validator  # type: ignore[assignment]
+from pydantic import BeforeValidator, Field, field_serializer, field_validator
+
+from ical.types.data_types import serialize_field
 
 from .component import ComponentModel
 from .parsing.property import ParsedProperty
 from .types import CalAddress, Period, RequestStatus, Uri
-from .util import dtstamp_factory, normalize_datetime, uid_factory
+from .util import (
+    dtstamp_factory,
+    normalize_datetime,
+    parse_date_and_datetime,
+    uid_factory,
+)
 
 _LOGGER = logging.getLogger(__name__)
 
@@ -24,16 +28,17 @@ _LOGGER = logging.getLogger(__name__)
 class FreeBusy(ComponentModel):
     """A single free/busy entry on a calendar."""
 
-    dtstamp: Union[datetime.datetime, datetime.date] = Field(
-        default_factory=lambda: dtstamp_factory()
-    )
+    dtstamp: Annotated[
+        Union[datetime.date, datetime.datetime],
+        BeforeValidator(parse_date_and_datetime),
+    ] = Field(default_factory=lambda: dtstamp_factory())
     """Last revision date."""
 
     uid: str = Field(default_factory=lambda: uid_factory())
     """The persistent globally unique identifier."""
 
     attendees: list[CalAddress] = Field(alias="attendee", default_factory=list)
-    """The user who's free/busy time is represented."""
+    """The user whose free/busy time is represented."""
 
     comment: list[str] = Field(default_factory=list)
     """Non-processing information intended to provide comments to the calendar user."""
@@ -42,13 +47,17 @@ class FreeBusy(ComponentModel):
     """Contact information associated with this component."""
 
     # Has an alias of 'start'
-    dtstart: Union[datetime.datetime, datetime.date] = Field(
-        default=None,
-    )
+    dtstart: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = Field(default=None)
     """Start of the time range covered by this component."""
 
     # Has an alias of 'end'
-    dtend: Optional[Union[datetime.datetime, datetime.date]] = None
+    dtend: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = None
     """End of the time range covered by this component."""
 
     freebusy: list[Period] = Field(default_factory=list)
@@ -58,7 +67,8 @@ class FreeBusy(ComponentModel):
     """The calendar user who requested free/busy information."""
 
     request_status: Optional[RequestStatus] = Field(
-        alias="request-status", default_value=None
+        default=None,
+        alias="request-status",
     )
     """Return code for the scheduling request."""
 
@@ -80,7 +90,7 @@ class FreeBusy(ComponentModel):
         super().__init__(**data)
 
     @property
-    def start(self) -> datetime.datetime | datetime.date:
+    def start(self) -> datetime.datetime | datetime.date | None:
         """Return the start time for the event."""
         return self.dtstart
 
@@ -106,11 +116,12 @@ class FreeBusy(ComponentModel):
     @property
     def computed_duration(self) -> datetime.timedelta | None:
         """Return the event duration."""
-        if not self.end:
+        if not self.end or not self.start:
             return None
         return self.end - self.start
 
-    @validator("freebusy", allow_reuse=True)
+    @field_validator("freebusy")
+    @classmethod
     def verify_freebusy_utc(cls, values: list[Period]) -> list[Period]:
         """Validate that the free/busy periods must be in UTC."""
         _LOGGER.info("verify_freebusy_utc")
@@ -123,3 +134,5 @@ class FreeBusy(ComponentModel):
                 raise ValueError(f"Freebusy time must be in UTC format: {value}")
 
         return values
+
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/iter.py 12.1.0-1/ical/iter.py
--- 9.0.0-2/ical/iter.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/iter.py	2025-11-14 02:06:41.000000000 +0000
@@ -7,11 +7,11 @@ recurrence rules together as a single vi
 
 Some of the iterators here are primarily used to extend functionality of `dateutil.rrule`
 and work around some of the limitations when building real world calendar applications
-such as the ability to make recurrint all day events.
+such as the ability to make recurring all day events.
 
 Most of the things in this library should not be consumed directly by calendar users,
 but instead for implementing another calendar library as they support behind the
-scenes tings like timelines. These internals may be subject to a higher degree of
+scenes things like timelines. These internals may be subject to a higher degree of
 backwards incompatibility due to the internal nature.
 """
 
@@ -57,7 +57,6 @@ the callback returns an object at that t
 """
 
 
-
 class SortableItem(Generic[K, T], ABC):
     """A SortableItem is used to sort an item by an arbitrary key.
 
@@ -137,6 +136,15 @@ class AllDayConverter(Iterable[Union[dat
             yield datetime.date.fromordinal(value.toordinal())
 
 
+def _defloat(
+    dt: datetime.datetime | datetime.date,
+) -> datetime.datetime | datetime.date:
+    """Convert a datetime to a floating time."""
+    if isinstance(dt, datetime.datetime) and dt.tzinfo is not None:
+        return dt.replace(tzinfo=None)
+    return dt
+
+
 class RulesetIterable(Iterable[Union[datetime.datetime, datetime.date]]):
     """A wrapper around the dateutil ruleset library to workaround limitations.
 
@@ -151,6 +159,9 @@ class RulesetIterable(Iterable[Union[dat
         [Iterable[Union[datetime.date, datetime.datetime]]],
         Iterable[Union[datetime.date, datetime.datetime]],
     ]
+    _defloat: Callable[
+        [datetime.datetime | datetime.date], datetime.datetime | datetime.date
+    ]
 
     def __init__(
         self,
@@ -172,6 +183,13 @@ class RulesetIterable(Iterable[Union[dat
             self._converter = AllDayConverter
         else:
             self._converter = lambda x: x
+        if (
+            isinstance(self._dtstart, datetime.datetime)
+            and self._dtstart.tzinfo is None
+        ):
+            self._defloat = _defloat
+        else:
+            self._defloat = lambda x: x
 
     def _ruleset(self) -> Iterable[datetime.datetime | datetime.date]:
         """Create a dateutil.rruleset."""
@@ -179,9 +197,9 @@ class RulesetIterable(Iterable[Union[dat
         for rule in self._rrule:
             ruleset.rrule(self._converter(rule))  # type: ignore[arg-type]
         for rdate in self._rdate:
-            ruleset.rdate(rdate)  # type: ignore[no-untyped-call]
+            ruleset.rdate(self._defloat(rdate))
         for exdate in self._exdate:
-            ruleset.exdate(exdate)  # type: ignore[no-untyped-call]
+            ruleset.exdate(self._defloat(exdate))
         return ruleset
 
     def __iter__(self) -> Iterator[datetime.datetime | datetime.date]:
@@ -196,7 +214,7 @@ class RulesetIterable(Iterable[Union[dat
 
     def __repr__(self) -> str:
         return (
-            f"RulesetIterable(dtstart={self._dtstart}, rrule={[ str(r) for r in self._rrule ]}, "
+            f"RulesetIterable(dtstart={self._dtstart}, rrule={[str(r) for r in self._rrule]}, "
             f"rdate={self._rdate}, exdate={self._exdate})"
         )
 
@@ -277,7 +295,7 @@ class MergedIterable(Iterable[T]):
 
 
 class SortedItemIterable(Iterable[SortableItem[K, T]]):
-    """Iterable that returns sortable items in sortered order.
+    """Iterable that returns sortable items in sorted order.
 
     This is useful when iterating over a subset of non-recurring events.
     """
@@ -405,7 +423,7 @@ def as_rrule(
 
     A recurring event is typically evaluated specially on the timeline. The
     data model has a single event, but the timeline evaluates the recurrence
-    to expand and copy the the event to multiple places on the timeline.
+    to expand and copy the event to multiple places on the timeline.
 
     This is only valid for events where `recurring` is True.
     """
diff -pruN 9.0.0-2/ical/journal.py 12.1.0-1/ical/journal.py
--- 9.0.0-2/ical/journal.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/journal.py	2025-11-14 02:06:41.000000000 +0000
@@ -8,12 +8,11 @@ import datetime
 import enum
 import logging
 from collections.abc import Iterable
-from typing import Any, Optional, Union
+from typing import Annotated, Any, Optional, Union
 
-try:
-    from pydantic.v1 import Field, root_validator
-except ImportError:
-    from pydantic import Field, root_validator  # type: ignore[no-redef, assignment]
+from pydantic import BeforeValidator, Field, field_serializer, model_validator
+
+from ical.types.data_types import serialize_field
 
 from .component import ComponentModel, validate_until_dtstart, validate_recurrence_dates
 from .parsing.property import ParsedProperty
@@ -26,8 +25,14 @@ from .types import (
     Uri,
     RelatedTo,
 )
-from .exceptions import CalendarParseError
-from .util import dtstamp_factory, normalize_datetime, uid_factory, local_timezone
+from .util import (
+    dtstamp_factory,
+    normalize_datetime,
+    parse_date_and_datetime,
+    parse_date_and_datetime_list,
+    uid_factory,
+    local_timezone,
+)
 from .iter import RulesetIterable, as_rrule
 from .timespan import Timespan
 
@@ -60,9 +65,10 @@ class Journal(ComponentModel):
     mocking in unit tests.
     """
 
-    dtstamp: Union[datetime.datetime, datetime.date] = Field(
-        default_factory=lambda: dtstamp_factory()
-    )
+    dtstamp: Annotated[
+        Union[datetime.date, datetime.datetime],
+        BeforeValidator(parse_date_and_datetime),
+    ] = Field(default_factory=lambda: dtstamp_factory())
     uid: str = Field(default_factory=lambda: uid_factory())
     attendees: list[CalAddress] = Field(alias="attendee", default_factory=list)
     categories: list[str] = Field(default_factory=list)
@@ -72,24 +78,32 @@ class Journal(ComponentModel):
     created: Optional[datetime.datetime] = None
     description: Optional[str] = None
     # Has an alias of 'start'
-    dtstart: Union[datetime.datetime, datetime.date] = Field(
-        default=None,
-    )
-    exdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    dtstart: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = Field(default=None)
+    exdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     last_modified: Optional[datetime.datetime] = Field(
         alias="last-modified", default=None
     )
     organizer: Optional[CalAddress] = None
-    recurrence_id: Optional[RecurrenceId] = Field(alias="recurrence-id")
+    recurrence_id: Optional[RecurrenceId] = Field(default=None, alias="recurrence-id")
 
     related_to: list[RelatedTo] = Field(alias="related-to", default_factory=list)
     """Used to represent a relationship or reference between events."""
 
     related: list[str] = Field(default_factory=list)
     rrule: Optional[Recur] = None
-    rdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    rdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     request_status: Optional[RequestStatus] = Field(
-        alias="request-status", default_value=None
+        default=None,
+        alias="request-status",
     )
     sequence: Optional[int] = None
     status: Optional[JournalStatus] = None
@@ -108,6 +122,7 @@ class Journal(ComponentModel):
     @property
     def start(self) -> datetime.datetime | datetime.date:
         """Return the start time for the event."""
+        assert self.dtstart is not None
         return self.dtstart
 
     @property
@@ -129,6 +144,7 @@ class Journal(ComponentModel):
 
     def timespan_of(self, tzinfo: datetime.tzinfo) -> Timespan:
         """Return a timespan representing the item start and due date."""
+        assert self.dtstart is not None
         dtstart = normalize_datetime(self.dtstart, tzinfo) or datetime.datetime.now(
             tz=tzinfo
         )
@@ -140,7 +156,7 @@ class Journal(ComponentModel):
 
         A recurring event is typically evaluated specially on the list. The
         data model has a single todo, but the timeline evaluates the recurrence
-        to expand and copy the the event to multiple places on the timeline
+        to expand and copy the event to multiple places on the timeline
         using `as_rrule`.
         """
         if self.rrule or self.rdate:
@@ -152,13 +168,14 @@ class Journal(ComponentModel):
 
         A recurring todo is typically evaluated specially on the todo list. The
         data model has a single todo item, but the timeline evaluates the recurrence
-        to expand and copy the the item to multiple places on the timeline.
+        to expand and copy the item to multiple places on the timeline.
 
         This is only valid for events where `recurring` is True.
         """
         return as_rrule(self.rrule, self.rdate, self.exdate, self.dtstart)
 
-    _validate_until_dtstart = root_validator(allow_reuse=True)(validate_until_dtstart)
-    _validate_recurrence_dates = root_validator(allow_reuse=True)(
+    _validate_until_dtstart = model_validator(mode="after")(validate_until_dtstart)
+    _validate_recurrence_dates = model_validator(mode="after")(
         validate_recurrence_dates
     )
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/list.py 12.1.0-1/ical/list.py
--- 9.0.0-2/ical/list.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/list.py	2025-11-14 02:06:41.000000000 +0000
@@ -30,7 +30,7 @@ def _pick_todo(todos: list[Todo], dtstar
     next todo that is incomplete and has the latest due date.
     """
     # For a recurring todo, the dtstart is after the last due date. Therefore
-    # we can stort items by dtstart and pick the last one that hasn't happened
+    # we can sort items by dtstart and pick the last one that hasn't happened
     root_iter = merge_and_expand_items(todos, dtstart.tzinfo or local_timezone())
 
     it = iter(root_iter)
diff -pruN 9.0.0-2/ical/parsing/component.py 12.1.0-1/ical/parsing/component.py
--- 9.0.0-2/ical/parsing/component.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/parsing/component.py	2025-11-14 02:06:41.000000000 +0000
@@ -23,12 +23,10 @@ from .const import (
     FOLD,
     FOLD_INDENT,
     FOLD_LEN,
-    PARSE_NAME,
-    PARSE_PARAMS,
-    PARSE_VALUE,
+    ATTR_BEGIN_LOWER,
+    ATTR_END_LOWER,
 )
-from .parser import parse_contentlines
-from .property import ParsedProperty, parse_property_params, parse_basic_ics_properties
+from .property import ParsedProperty, parse_contentlines
 
 FOLD_RE = re.compile(FOLD, flags=re.MULTILINE)
 LINES_RE = re.compile(r"\r?\n")
@@ -91,36 +89,22 @@ def parse_content(content: str) -> list[
     All the more detailed parsing of the objects is handled by pydantic, elsewhere.
     """
     lines = unfolded_lines(content)
-    token_results = parse_contentlines(lines)
+    properties = parse_contentlines(lines)
 
     stack: list[ParsedComponent] = [ParsedComponent(name="stream")]
-    for result in token_results:
-        result_dict = result.as_dict()
-        if PARSE_NAME not in result_dict:
-            raise ValueError(
-                f"Missing fields {PARSE_NAME} or {PARSE_VALUE} in {result_dict}"
-            )
-        name = result_dict[PARSE_NAME]
-        value = result_dict.get(PARSE_VALUE, "")
-        if name == ATTR_BEGIN:
-            stack.append(ParsedComponent(name=value.lower()))
-        elif name == ATTR_END:
-            value = value.lower()
+    for prop in properties:
+        if prop.name == ATTR_BEGIN_LOWER:
+            stack.append(ParsedComponent(name=prop.value.lower()))
+        elif prop.name == ATTR_END_LOWER:
             component = stack.pop()
-            if value != component.name:
+            if prop.value.lower() != component.name:
                 raise ValueError(
-                    f"Unexpected '{result}', expected {ATTR_END}:{component.name}"
+                    f"Unexpected '{prop}', expected {ATTR_END}:{component.name}"
                 )
             stack[-1].components.append(component)
         else:
-            name = name.lower()
-            property_dict = {
-                PARSE_NAME: name,
-                PARSE_VALUE: value,
-            }
-            if property_params := parse_property_params(result_dict):
-                property_dict[PARSE_PARAMS] = property_params
-            stack[-1].properties.append(ParsedProperty(**property_dict))
+            stack[-1].properties.append(prop)
+
     return stack[0].components
 
 
diff -pruN 9.0.0-2/ical/parsing/const.py 12.1.0-1/ical/parsing/const.py
--- 9.0.0-2/ical/parsing/const.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/parsing/const.py	2025-11-14 02:06:41.000000000 +0000
@@ -8,9 +8,5 @@ WSP = [" ", "\t"]
 ATTR_BEGIN = "BEGIN"
 ATTR_END = "END"
 
-# Key/value pairs for the pyparsing result object and related dicts
-PARSE_NAME = "name"
-PARSE_VALUE = "value"
-PARSE_PARAMS = "params"
-PARSE_PARAM_NAME = "param_name"
-PARSE_PARAM_VALUE = "param_value"
+ATTR_BEGIN_LOWER = "begin"
+ATTR_END_LOWER = "end"
diff -pruN 9.0.0-2/ical/parsing/emoji.py 12.1.0-1/ical/parsing/emoji.py
--- 9.0.0-2/ical/parsing/emoji.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/parsing/emoji.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,5046 +1,5046 @@
 """This file is automatically generated by script/update_emoji.py. Do not edit."""
 
 EMOJI = [
-  u'\U0001f947',  # 🥇
-  u'\U0001f948',  # 🥈
-  u'\U0001f949',  # 🥉
-  u'\U0001f18e',  # 🆎
-  u'\U0001f3e7',  # 🏧
-  u'\U0001f170\U0000fe0f',  # 🅰️
-  u'\U0001f170',  # 🅰
-  u'\U0001f1e6\U0001f1eb',  # 🇦🇫
-  u'\U0001f1e6\U0001f1f1',  # 🇦🇱
-  u'\U0001f1e9\U0001f1ff',  # 🇩🇿
-  u'\U0001f1e6\U0001f1f8',  # 🇦🇸
-  u'\U0001f1e6\U0001f1e9',  # 🇦🇩
-  u'\U0001f1e6\U0001f1f4',  # 🇦🇴
-  u'\U0001f1e6\U0001f1ee',  # 🇦🇮
-  u'\U0001f1e6\U0001f1f6',  # 🇦🇶
-  u'\U0001f1e6\U0001f1ec',  # 🇦🇬
-  u'\U00002652',  # ♒
-  u'\U0001f1e6\U0001f1f7',  # 🇦🇷
-  u'\U00002648',  # ♈
-  u'\U0001f1e6\U0001f1f2',  # 🇦🇲
-  u'\U0001f1e6\U0001f1fc',  # 🇦🇼
-  u'\U0001f1e6\U0001f1e8',  # 🇦🇨
-  u'\U0001f1e6\U0001f1fa',  # 🇦🇺
-  u'\U0001f1e6\U0001f1f9',  # 🇦🇹
-  u'\U0001f1e6\U0001f1ff',  # 🇦🇿
-  u'\U0001f519',  # 🔙
-  u'\U0001f171\U0000fe0f',  # 🅱️
-  u'\U0001f171',  # 🅱
-  u'\U0001f1e7\U0001f1f8',  # 🇧🇸
-  u'\U0001f1e7\U0001f1ed',  # 🇧🇭
-  u'\U0001f1e7\U0001f1e9',  # 🇧🇩
-  u'\U0001f1e7\U0001f1e7',  # 🇧🇧
-  u'\U0001f1e7\U0001f1fe',  # 🇧🇾
-  u'\U0001f1e7\U0001f1ea',  # 🇧🇪
-  u'\U0001f1e7\U0001f1ff',  # 🇧🇿
-  u'\U0001f1e7\U0001f1ef',  # 🇧🇯
-  u'\U0001f1e7\U0001f1f2',  # 🇧🇲
-  u'\U0001f1e7\U0001f1f9',  # 🇧🇹
-  u'\U0001f1e7\U0001f1f4',  # 🇧🇴
-  u'\U0001f1e7\U0001f1e6',  # 🇧🇦
-  u'\U0001f1e7\U0001f1fc',  # 🇧🇼
-  u'\U0001f1e7\U0001f1fb',  # 🇧🇻
-  u'\U0001f1e7\U0001f1f7',  # 🇧🇷
-  u'\U0001f1ee\U0001f1f4',  # 🇮🇴
-  u'\U0001f1fb\U0001f1ec',  # 🇻🇬
-  u'\U0001f1e7\U0001f1f3',  # 🇧🇳
-  u'\U0001f1e7\U0001f1ec',  # 🇧🇬
-  u'\U0001f1e7\U0001f1eb',  # 🇧🇫
-  u'\U0001f1e7\U0001f1ee',  # 🇧🇮
-  u'\U0001f191',  # 🆑
-  u'\U0001f192',  # 🆒
-  u'\U0001f1f0\U0001f1ed',  # 🇰🇭
-  u'\U0001f1e8\U0001f1f2',  # 🇨🇲
-  u'\U0001f1e8\U0001f1e6',  # 🇨🇦
-  u'\U0001f1ee\U0001f1e8',  # 🇮🇨
-  u'\U0000264b',  # ♋
-  u'\U0001f1e8\U0001f1fb',  # 🇨🇻
-  u'\U00002651',  # ♑
-  u'\U0001f1e7\U0001f1f6',  # 🇧🇶
-  u'\U0001f1f0\U0001f1fe',  # 🇰🇾
-  u'\U0001f1e8\U0001f1eb',  # 🇨🇫
-  u'\U0001f1ea\U0001f1e6',  # 🇪🇦
-  u'\U0001f1f9\U0001f1e9',  # 🇹🇩
-  u'\U0001f1e8\U0001f1f1',  # 🇨🇱
-  u'\U0001f1e8\U0001f1f3',  # 🇨🇳
-  u'\U0001f1e8\U0001f1fd',  # 🇨🇽
-  u'\U0001f384',  # 🎄
-  u'\U0001f1e8\U0001f1f5',  # 🇨🇵
-  u'\U0001f1e8\U0001f1e8',  # 🇨🇨
-  u'\U0001f1e8\U0001f1f4',  # 🇨🇴
-  u'\U0001f1f0\U0001f1f2',  # 🇰🇲
-  u'\U0001f1e8\U0001f1ec',  # 🇨🇬
-  u'\U0001f1e8\U0001f1e9',  # 🇨🇩
-  u'\U0001f1e8\U0001f1f0',  # 🇨🇰
-  u'\U0001f1e8\U0001f1f7',  # 🇨🇷
-  u'\U0001f1ed\U0001f1f7',  # 🇭🇷
-  u'\U0001f1e8\U0001f1fa',  # 🇨🇺
-  u'\U0001f1e8\U0001f1fc',  # 🇨🇼
-  u'\U0001f1e8\U0001f1fe',  # 🇨🇾
-  u'\U0001f1e8\U0001f1ff',  # 🇨🇿
-  u'\U0001f1e8\U0001f1ee',  # 🇨🇮
-  u'\U0001f1e9\U0001f1f0',  # 🇩🇰
-  u'\U0001f1e9\U0001f1ec',  # 🇩🇬
-  u'\U0001f1e9\U0001f1ef',  # 🇩🇯
-  u'\U0001f1e9\U0001f1f2',  # 🇩🇲
-  u'\U0001f1e9\U0001f1f4',  # 🇩🇴
-  u'\U0001f51a',  # 🔚
-  u'\U0001f1ea\U0001f1e8',  # 🇪🇨
-  u'\U0001f1ea\U0001f1ec',  # 🇪🇬
-  u'\U0001f1f8\U0001f1fb',  # 🇸🇻
-  u'\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f',  # 🏴󠁧󠁢󠁥󠁮󠁧󠁿
-  u'\U0001f1ec\U0001f1f6',  # 🇬🇶
-  u'\U0001f1ea\U0001f1f7',  # 🇪🇷
-  u'\U0001f1ea\U0001f1ea',  # 🇪🇪
-  u'\U0001f1f8\U0001f1ff',  # 🇸🇿
-  u'\U0001f1ea\U0001f1f9',  # 🇪🇹
-  u'\U0001f1ea\U0001f1fa',  # 🇪🇺
-  u'\U0001f193',  # 🆓
-  u'\U0001f1eb\U0001f1f0',  # 🇫🇰
-  u'\U0001f1eb\U0001f1f4',  # 🇫🇴
-  u'\U0001f1eb\U0001f1ef',  # 🇫🇯
-  u'\U0001f1eb\U0001f1ee',  # 🇫🇮
-  u'\U0001f1eb\U0001f1f7',  # 🇫🇷
-  u'\U0001f1ec\U0001f1eb',  # 🇬🇫
-  u'\U0001f1f5\U0001f1eb',  # 🇵🇫
-  u'\U0001f1f9\U0001f1eb',  # 🇹🇫
-  u'\U0001f1ec\U0001f1e6',  # 🇬🇦
-  u'\U0001f1ec\U0001f1f2',  # 🇬🇲
-  u'\U0000264a',  # ♊
-  u'\U0001f1ec\U0001f1ea',  # 🇬🇪
-  u'\U0001f1e9\U0001f1ea',  # 🇩🇪
-  u'\U0001f1ec\U0001f1ed',  # 🇬🇭
-  u'\U0001f1ec\U0001f1ee',  # 🇬🇮
-  u'\U0001f1ec\U0001f1f7',  # 🇬🇷
-  u'\U0001f1ec\U0001f1f1',  # 🇬🇱
-  u'\U0001f1ec\U0001f1e9',  # 🇬🇩
-  u'\U0001f1ec\U0001f1f5',  # 🇬🇵
-  u'\U0001f1ec\U0001f1fa',  # 🇬🇺
-  u'\U0001f1ec\U0001f1f9',  # 🇬🇹
-  u'\U0001f1ec\U0001f1ec',  # 🇬🇬
-  u'\U0001f1ec\U0001f1f3',  # 🇬🇳
-  u'\U0001f1ec\U0001f1fc',  # 🇬🇼
-  u'\U0001f1ec\U0001f1fe',  # 🇬🇾
-  u'\U0001f1ed\U0001f1f9',  # 🇭🇹
-  u'\U0001f1ed\U0001f1f2',  # 🇭🇲
-  u'\U0001f1ed\U0001f1f3',  # 🇭🇳
-  u'\U0001f1ed\U0001f1f0',  # 🇭🇰
-  u'\U0001f1ed\U0001f1fa',  # 🇭🇺
-  u'\U0001f194',  # 🆔
-  u'\U0001f1ee\U0001f1f8',  # 🇮🇸
-  u'\U0001f1ee\U0001f1f3',  # 🇮🇳
-  u'\U0001f1ee\U0001f1e9',  # 🇮🇩
-  u'\U0001f1ee\U0001f1f7',  # 🇮🇷
-  u'\U0001f1ee\U0001f1f6',  # 🇮🇶
-  u'\U0001f1ee\U0001f1ea',  # 🇮🇪
-  u'\U0001f1ee\U0001f1f2',  # 🇮🇲
-  u'\U0001f1ee\U0001f1f1',  # 🇮🇱
-  u'\U0001f1ee\U0001f1f9',  # 🇮🇹
-  u'\U0001f1ef\U0001f1f2',  # 🇯🇲
-  u'\U0001f1ef\U0001f1f5',  # 🇯🇵
-  u'\U0001f251',  # 🉑
-  u'\U0001f238',  # 🈸
-  u'\U0001f250',  # 🉐
-  u'\U0001f3ef',  # 🏯
-  u'\U00003297\U0000fe0f',  # ㊗️
-  u'\U00003297',  # ㊗
-  u'\U0001f239',  # 🈹
-  u'\U0001f38e',  # 🎎
-  u'\U0001f21a',  # 🈚
-  u'\U0001f201',  # 🈁
-  u'\U0001f237\U0000fe0f',  # 🈷️
-  u'\U0001f237',  # 🈷
-  u'\U0001f235',  # 🈵
-  u'\U0001f236',  # 🈶
-  u'\U0001f23a',  # 🈺
-  u'\U0001f234',  # 🈴
-  u'\U0001f3e3',  # 🏣
-  u'\U0001f232',  # 🈲
-  u'\U0001f22f',  # 🈯
-  u'\U00003299\U0000fe0f',  # ㊙️
-  u'\U00003299',  # ㊙
-  u'\U0001f202\U0000fe0f',  # 🈂️
-  u'\U0001f202',  # 🈂
-  u'\U0001f530',  # 🔰
-  u'\U0001f233',  # 🈳
-  u'\U0001f1ef\U0001f1ea',  # 🇯🇪
-  u'\U0001f1ef\U0001f1f4',  # 🇯🇴
-  u'\U0001f1f0\U0001f1ff',  # 🇰🇿
-  u'\U0001f1f0\U0001f1ea',  # 🇰🇪
-  u'\U0001f1f0\U0001f1ee',  # 🇰🇮
-  u'\U0001f1fd\U0001f1f0',  # 🇽🇰
-  u'\U0001f1f0\U0001f1fc',  # 🇰🇼
-  u'\U0001f1f0\U0001f1ec',  # 🇰🇬
-  u'\U0001f1f1\U0001f1e6',  # 🇱🇦
-  u'\U0001f1f1\U0001f1fb',  # 🇱🇻
-  u'\U0001f1f1\U0001f1e7',  # 🇱🇧
-  u'\U0000264c',  # ♌
-  u'\U0001f1f1\U0001f1f8',  # 🇱🇸
-  u'\U0001f1f1\U0001f1f7',  # 🇱🇷
-  u'\U0000264e',  # ♎
-  u'\U0001f1f1\U0001f1fe',  # 🇱🇾
-  u'\U0001f1f1\U0001f1ee',  # 🇱🇮
-  u'\U0001f1f1\U0001f1f9',  # 🇱🇹
-  u'\U0001f1f1\U0001f1fa',  # 🇱🇺
-  u'\U0001f1f2\U0001f1f4',  # 🇲🇴
-  u'\U0001f1f2\U0001f1ec',  # 🇲🇬
-  u'\U0001f1f2\U0001f1fc',  # 🇲🇼
-  u'\U0001f1f2\U0001f1fe',  # 🇲🇾
-  u'\U0001f1f2\U0001f1fb',  # 🇲🇻
-  u'\U0001f1f2\U0001f1f1',  # 🇲🇱
-  u'\U0001f1f2\U0001f1f9',  # 🇲🇹
-  u'\U0001f1f2\U0001f1ed',  # 🇲🇭
-  u'\U0001f1f2\U0001f1f6',  # 🇲🇶
-  u'\U0001f1f2\U0001f1f7',  # 🇲🇷
-  u'\U0001f1f2\U0001f1fa',  # 🇲🇺
-  u'\U0001f1fe\U0001f1f9',  # 🇾🇹
-  u'\U0001f1f2\U0001f1fd',  # 🇲🇽
-  u'\U0001f1eb\U0001f1f2',  # 🇫🇲
-  u'\U0001f1f2\U0001f1e9',  # 🇲🇩
-  u'\U0001f1f2\U0001f1e8',  # 🇲🇨
-  u'\U0001f1f2\U0001f1f3',  # 🇲🇳
-  u'\U0001f1f2\U0001f1ea',  # 🇲🇪
-  u'\U0001f1f2\U0001f1f8',  # 🇲🇸
-  u'\U0001f1f2\U0001f1e6',  # 🇲🇦
-  u'\U0001f1f2\U0001f1ff',  # 🇲🇿
-  u'\U0001f936',  # 🤶
-  u'\U0001f936\U0001f3ff',  # 🤶🏿
-  u'\U0001f936\U0001f3fb',  # 🤶🏻
-  u'\U0001f936\U0001f3fe',  # 🤶🏾
-  u'\U0001f936\U0001f3fc',  # 🤶🏼
-  u'\U0001f936\U0001f3fd',  # 🤶🏽
-  u'\U0001f9d1\U0000200d\U0001f384',  # 🧑‍🎄
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f384',  # 🧑🏿‍🎄
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f384',  # 🧑🏻‍🎄
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f384',  # 🧑🏾‍🎄
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f384',  # 🧑🏼‍🎄
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f384',  # 🧑🏽‍🎄
-  u'\U0001f1f2\U0001f1f2',  # 🇲🇲
-  u'\U0001f195',  # 🆕
-  u'\U0001f196',  # 🆖
-  u'\U0001f1f3\U0001f1e6',  # 🇳🇦
-  u'\U0001f1f3\U0001f1f7',  # 🇳🇷
-  u'\U0001f1f3\U0001f1f5',  # 🇳🇵
-  u'\U0001f1f3\U0001f1f1',  # 🇳🇱
-  u'\U0001f1f3\U0001f1e8',  # 🇳🇨
-  u'\U0001f1f3\U0001f1ff',  # 🇳🇿
-  u'\U0001f1f3\U0001f1ee',  # 🇳🇮
-  u'\U0001f1f3\U0001f1ea',  # 🇳🇪
-  u'\U0001f1f3\U0001f1ec',  # 🇳🇬
-  u'\U0001f1f3\U0001f1fa',  # 🇳🇺
-  u'\U0001f1f3\U0001f1eb',  # 🇳🇫
-  u'\U0001f1f0\U0001f1f5',  # 🇰🇵
-  u'\U0001f1f2\U0001f1f0',  # 🇲🇰
-  u'\U0001f1f2\U0001f1f5',  # 🇲🇵
-  u'\U0001f1f3\U0001f1f4',  # 🇳🇴
-  u'\U0001f197',  # 🆗
-  u'\U0001f44c',  # 👌
-  u'\U0001f44c\U0001f3ff',  # 👌🏿
-  u'\U0001f44c\U0001f3fb',  # 👌🏻
-  u'\U0001f44c\U0001f3fe',  # 👌🏾
-  u'\U0001f44c\U0001f3fc',  # 👌🏼
-  u'\U0001f44c\U0001f3fd',  # 👌🏽
-  u'\U0001f51b',  # 🔛
-  u'\U0001f17e\U0000fe0f',  # 🅾️
-  u'\U0001f17e',  # 🅾
-  u'\U0001f1f4\U0001f1f2',  # 🇴🇲
-  u'\U000026ce',  # ⛎
-  u'\U0001f17f\U0000fe0f',  # 🅿️
-  u'\U0001f17f',  # 🅿
-  u'\U0001f1f5\U0001f1f0',  # 🇵🇰
-  u'\U0001f1f5\U0001f1fc',  # 🇵🇼
-  u'\U0001f1f5\U0001f1f8',  # 🇵🇸
-  u'\U0001f1f5\U0001f1e6',  # 🇵🇦
-  u'\U0001f1f5\U0001f1ec',  # 🇵🇬
-  u'\U0001f1f5\U0001f1fe',  # 🇵🇾
-  u'\U0001f1f5\U0001f1ea',  # 🇵🇪
-  u'\U0001f1f5\U0001f1ed',  # 🇵🇭
-  u'\U00002653',  # ♓
-  u'\U0001f1f5\U0001f1f3',  # 🇵🇳
-  u'\U0001f1f5\U0001f1f1',  # 🇵🇱
-  u'\U0001f1f5\U0001f1f9',  # 🇵🇹
-  u'\U0001f1f5\U0001f1f7',  # 🇵🇷
-  u'\U0001f1f6\U0001f1e6',  # 🇶🇦
-  u'\U0001f1f7\U0001f1f4',  # 🇷🇴
-  u'\U0001f1f7\U0001f1fa',  # 🇷🇺
-  u'\U0001f1f7\U0001f1fc',  # 🇷🇼
-  u'\U0001f1f7\U0001f1ea',  # 🇷🇪
-  u'\U0001f51c',  # 🔜
-  u'\U0001f198',  # 🆘
-  u'\U00002650',  # ♐
-  u'\U0001f1fc\U0001f1f8',  # 🇼🇸
-  u'\U0001f1f8\U0001f1f2',  # 🇸🇲
-  u'\U0001f385',  # 🎅
-  u'\U0001f385\U0001f3ff',  # 🎅🏿
-  u'\U0001f385\U0001f3fb',  # 🎅🏻
-  u'\U0001f385\U0001f3fe',  # 🎅🏾
-  u'\U0001f385\U0001f3fc',  # 🎅🏼
-  u'\U0001f385\U0001f3fd',  # 🎅🏽
-  u'\U0001f1e8\U0001f1f6',  # 🇨🇶
-  u'\U0001f1f8\U0001f1e6',  # 🇸🇦
-  u'\U0000264f',  # ♏
-  u'\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f',  # 🏴󠁧󠁢󠁳󠁣󠁴󠁿
-  u'\U0001f1f8\U0001f1f3',  # 🇸🇳
-  u'\U0001f1f7\U0001f1f8',  # 🇷🇸
-  u'\U0001f1f8\U0001f1e8',  # 🇸🇨
-  u'\U0001f1f8\U0001f1f1',  # 🇸🇱
-  u'\U0001f1f8\U0001f1ec',  # 🇸🇬
-  u'\U0001f1f8\U0001f1fd',  # 🇸🇽
-  u'\U0001f1f8\U0001f1f0',  # 🇸🇰
-  u'\U0001f1f8\U0001f1ee',  # 🇸🇮
-  u'\U0001f1f8\U0001f1e7',  # 🇸🇧
-  u'\U0001f1f8\U0001f1f4',  # 🇸🇴
-  u'\U0001f1ff\U0001f1e6',  # 🇿🇦
-  u'\U0001f1ec\U0001f1f8',  # 🇬🇸
-  u'\U0001f1f0\U0001f1f7',  # 🇰🇷
-  u'\U0001f1f8\U0001f1f8',  # 🇸🇸
-  u'\U0001f1ea\U0001f1f8',  # 🇪🇸
-  u'\U0001f1f1\U0001f1f0',  # 🇱🇰
-  u'\U0001f1e7\U0001f1f1',  # 🇧🇱
-  u'\U0001f1f8\U0001f1ed',  # 🇸🇭
-  u'\U0001f1f0\U0001f1f3',  # 🇰🇳
-  u'\U0001f1f1\U0001f1e8',  # 🇱🇨
-  u'\U0001f1f2\U0001f1eb',  # 🇲🇫
-  u'\U0001f1f5\U0001f1f2',  # 🇵🇲
-  u'\U0001f1fb\U0001f1e8',  # 🇻🇨
-  u'\U0001f5fd',  # 🗽
-  u'\U0001f1f8\U0001f1e9',  # 🇸🇩
-  u'\U0001f1f8\U0001f1f7',  # 🇸🇷
-  u'\U0001f1f8\U0001f1ef',  # 🇸🇯
-  u'\U0001f1f8\U0001f1ea',  # 🇸🇪
-  u'\U0001f1e8\U0001f1ed',  # 🇨🇭
-  u'\U0001f1f8\U0001f1fe',  # 🇸🇾
-  u'\U0001f1f8\U0001f1f9',  # 🇸🇹
-  u'\U0001f996',  # 🦖
-  u'\U0001f51d',  # 🔝
-  u'\U0001f1f9\U0001f1fc',  # 🇹🇼
-  u'\U0001f1f9\U0001f1ef',  # 🇹🇯
-  u'\U0001f1f9\U0001f1ff',  # 🇹🇿
-  u'\U00002649',  # ♉
-  u'\U0001f1f9\U0001f1ed',  # 🇹🇭
-  u'\U0001f1f9\U0001f1f1',  # 🇹🇱
-  u'\U0001f1f9\U0001f1ec',  # 🇹🇬
-  u'\U0001f1f9\U0001f1f0',  # 🇹🇰
-  u'\U0001f5fc',  # 🗼
-  u'\U0001f1f9\U0001f1f4',  # 🇹🇴
-  u'\U0001f1f9\U0001f1f9',  # 🇹🇹
-  u'\U0001f1f9\U0001f1e6',  # 🇹🇦
-  u'\U0001f1f9\U0001f1f3',  # 🇹🇳
-  u'\U0001f1f9\U0001f1f2',  # 🇹🇲
-  u'\U0001f1f9\U0001f1e8',  # 🇹🇨
-  u'\U0001f1f9\U0001f1fb',  # 🇹🇻
-  u'\U0001f1f9\U0001f1f7',  # 🇹🇷
-  u'\U0001f1fa\U0001f1f2',  # 🇺🇲
-  u'\U0001f1fb\U0001f1ee',  # 🇻🇮
-  u'\U0001f199',  # 🆙
-  u'\U0001f1fa\U0001f1ec',  # 🇺🇬
-  u'\U0001f1fa\U0001f1e6',  # 🇺🇦
-  u'\U0001f1e6\U0001f1ea',  # 🇦🇪
-  u'\U0001f1ec\U0001f1e7',  # 🇬🇧
-  u'\U0001f1fa\U0001f1f3',  # 🇺🇳
-  u'\U0001f1fa\U0001f1f8',  # 🇺🇸
-  u'\U0001f1fa\U0001f1fe',  # 🇺🇾
-  u'\U0001f1fa\U0001f1ff',  # 🇺🇿
-  u'\U0001f19a',  # 🆚
-  u'\U0001f1fb\U0001f1fa',  # 🇻🇺
-  u'\U0001f1fb\U0001f1e6',  # 🇻🇦
-  u'\U0001f1fb\U0001f1ea',  # 🇻🇪
-  u'\U0001f1fb\U0001f1f3',  # 🇻🇳
-  u'\U0000264d',  # ♍
-  u'\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f',  # 🏴󠁧󠁢󠁷󠁬󠁳󠁿
-  u'\U0001f1fc\U0001f1eb',  # 🇼🇫
-  u'\U0001f1ea\U0001f1ed',  # 🇪🇭
-  u'\U0001f1fe\U0001f1ea',  # 🇾🇪
-  u'\U0001f4a4',  # 💤
-  u'\U0001f1ff\U0001f1f2',  # 🇿🇲
-  u'\U0001f1ff\U0001f1fc',  # 🇿🇼
-  u'\U0001f9ee',  # 🧮
-  u'\U0001fa97',  # 🪗
-  u'\U0001fa79',  # 🩹
-  u'\U0001f39f\U0000fe0f',  # 🎟️
-  u'\U0001f39f',  # 🎟
-  u'\U0001f6a1',  # 🚡
-  u'\U00002708\U0000fe0f',  # ✈️
-  u'\U00002708',  # ✈
-  u'\U0001f6ec',  # 🛬
-  u'\U0001f6eb',  # 🛫
-  u'\U000023f0',  # ⏰
-  u'\U00002697\U0000fe0f',  # ⚗️
-  u'\U00002697',  # ⚗
-  u'\U0001f47d',  # 👽
-  u'\U0001f47e',  # 👾
-  u'\U0001f691',  # 🚑
-  u'\U0001f3c8',  # 🏈
-  u'\U0001f3fa',  # 🏺
-  u'\U0001fac0',  # 🫀
-  u'\U00002693',  # ⚓
-  u'\U0001f4a2',  # 💢
-  u'\U0001f620',  # 😠
-  u'\U0001f47f',  # 👿
-  u'\U0001f627',  # 😧
-  u'\U0001f41c',  # 🐜
-  u'\U0001f4f6',  # 📶
-  u'\U0001f630',  # 😰
-  u'\U0001f69b',  # 🚛
-  u'\U0001f9d1\U0000200d\U0001f3a8',  # 🧑‍🎨
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f3a8',  # 🧑🏿‍🎨
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f3a8',  # 🧑🏻‍🎨
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f3a8',  # 🧑🏾‍🎨
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f3a8',  # 🧑🏼‍🎨
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f3a8',  # 🧑🏽‍🎨
-  u'\U0001f3a8',  # 🎨
-  u'\U0001f632',  # 😲
-  u'\U0001f9d1\U0000200d\U0001f680',  # 🧑‍🚀
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f680',  # 🧑🏿‍🚀
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f680',  # 🧑🏻‍🚀
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f680',  # 🧑🏾‍🚀
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f680',  # 🧑🏼‍🚀
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f680',  # 🧑🏽‍🚀
-  u'\U0000269b\U0000fe0f',  # ⚛️
-  u'\U0000269b',  # ⚛
-  u'\U0001f6fa',  # 🛺
-  u'\U0001f697',  # 🚗
-  u'\U0001f951',  # 🥑
-  u'\U0001fa93',  # 🪓
-  u'\U0001f476',  # 👶
-  u'\U0001f47c',  # 👼
-  u'\U0001f47c\U0001f3ff',  # 👼🏿
-  u'\U0001f47c\U0001f3fb',  # 👼🏻
-  u'\U0001f47c\U0001f3fe',  # 👼🏾
-  u'\U0001f47c\U0001f3fc',  # 👼🏼
-  u'\U0001f47c\U0001f3fd',  # 👼🏽
-  u'\U0001f37c',  # 🍼
-  u'\U0001f424',  # 🐤
-  u'\U0001f476\U0001f3ff',  # 👶🏿
-  u'\U0001f476\U0001f3fb',  # 👶🏻
-  u'\U0001f476\U0001f3fe',  # 👶🏾
-  u'\U0001f476\U0001f3fc',  # 👶🏼
-  u'\U0001f476\U0001f3fd',  # 👶🏽
-  u'\U0001f6bc',  # 🚼
-  u'\U0001f447',  # 👇
-  u'\U0001f447\U0001f3ff',  # 👇🏿
-  u'\U0001f447\U0001f3fb',  # 👇🏻
-  u'\U0001f447\U0001f3fe',  # 👇🏾
-  u'\U0001f447\U0001f3fc',  # 👇🏼
-  u'\U0001f447\U0001f3fd',  # 👇🏽
-  u'\U0001f448',  # 👈
-  u'\U0001f448\U0001f3ff',  # 👈🏿
-  u'\U0001f448\U0001f3fb',  # 👈🏻
-  u'\U0001f448\U0001f3fe',  # 👈🏾
-  u'\U0001f448\U0001f3fc',  # 👈🏼
-  u'\U0001f448\U0001f3fd',  # 👈🏽
-  u'\U0001f449',  # 👉
-  u'\U0001f449\U0001f3ff',  # 👉🏿
-  u'\U0001f449\U0001f3fb',  # 👉🏻
-  u'\U0001f449\U0001f3fe',  # 👉🏾
-  u'\U0001f449\U0001f3fc',  # 👉🏼
-  u'\U0001f449\U0001f3fd',  # 👉🏽
-  u'\U0001f446',  # 👆
-  u'\U0001f446\U0001f3ff',  # 👆🏿
-  u'\U0001f446\U0001f3fb',  # 👆🏻
-  u'\U0001f446\U0001f3fe',  # 👆🏾
-  u'\U0001f446\U0001f3fc',  # 👆🏼
-  u'\U0001f446\U0001f3fd',  # 👆🏽
-  u'\U0001f392',  # 🎒
-  u'\U0001f953',  # 🥓
-  u'\U0001f9a1',  # 🦡
-  u'\U0001f3f8',  # 🏸
-  u'\U0001f96f',  # 🥯
-  u'\U0001f6c4',  # 🛄
-  u'\U0001f956',  # 🥖
-  u'\U00002696\U0000fe0f',  # ⚖️
-  u'\U00002696',  # ⚖
-  u'\U0001f9b2',  # 🦲
-  u'\U0001fa70',  # 🩰
-  u'\U0001f388',  # 🎈
-  u'\U0001f5f3\U0000fe0f',  # 🗳️
-  u'\U0001f5f3',  # 🗳
-  u'\U0001f34c',  # 🍌
-  u'\U0001fa95',  # 🪕
-  u'\U0001f3e6',  # 🏦
-  u'\U0001f4ca',  # 📊
-  u'\U0001f488',  # 💈
-  u'\U000026be',  # ⚾
-  u'\U0001f9fa',  # 🧺
-  u'\U0001f3c0',  # 🏀
-  u'\U0001f987',  # 🦇
-  u'\U0001f6c1',  # 🛁
-  u'\U0001f50b',  # 🔋
-  u'\U0001f3d6\U0000fe0f',  # 🏖️
-  u'\U0001f3d6',  # 🏖
-  u'\U0001f601',  # 😁
-  u'\U0001fad8',  # 🫘
-  u'\U0001f43b',  # 🐻
-  u'\U0001f493',  # 💓
-  u'\U0001f9ab',  # 🦫
-  u'\U0001f6cf\U0000fe0f',  # 🛏️
-  u'\U0001f6cf',  # 🛏
-  u'\U0001f37a',  # 🍺
-  u'\U0001fab2',  # 🪲
-  u'\U0001f514',  # 🔔
-  u'\U0001fad1',  # 🫑
-  u'\U0001f515',  # 🔕
-  u'\U0001f6ce\U0000fe0f',  # 🛎️
-  u'\U0001f6ce',  # 🛎
-  u'\U0001f371',  # 🍱
-  u'\U0001f9c3',  # 🧃
-  u'\U0001f6b2',  # 🚲
-  u'\U0001f459',  # 👙
-  u'\U0001f9e2',  # 🧢
-  u'\U00002623\U0000fe0f',  # ☣️
-  u'\U00002623',  # ☣
-  u'\U0001f426',  # 🐦
-  u'\U0001f382',  # 🎂
-  u'\U0001f9ac',  # 🦬
-  u'\U0001fae6',  # 🫦
-  u'\U0001f426\U0000200d\U00002b1b',  # 🐦‍⬛
-  u'\U0001f408\U0000200d\U00002b1b',  # 🐈‍⬛
-  u'\U000026ab',  # ⚫
-  u'\U0001f3f4',  # 🏴
-  u'\U0001f5a4',  # 🖤
-  u'\U00002b1b',  # ⬛
-  u'\U000025fe',  # ◾
-  u'\U000025fc\U0000fe0f',  # ◼️
-  u'\U000025fc',  # ◼
-  u'\U00002712\U0000fe0f',  # ✒️
-  u'\U00002712',  # ✒
-  u'\U000025aa\U0000fe0f',  # ▪️
-  u'\U000025aa',  # ▪
-  u'\U0001f532',  # 🔲
-  u'\U0001f33c',  # 🌼
-  u'\U0001f421',  # 🐡
-  u'\U0001f4d8',  # 📘
-  u'\U0001f535',  # 🔵
-  u'\U0001f499',  # 💙
-  u'\U0001f7e6',  # 🟦
-  u'\U0001fad0',  # 🫐
-  u'\U0001f417',  # 🐗
-  u'\U0001f4a3',  # 💣
-  u'\U0001f9b4',  # 🦴
-  u'\U0001f516',  # 🔖
-  u'\U0001f4d1',  # 📑
-  u'\U0001f4da',  # 📚
-  u'\U0001fa83',  # 🪃
-  u'\U0001f37e',  # 🍾
-  u'\U0001f490',  # 💐
-  u'\U0001f3f9',  # 🏹
-  u'\U0001f963',  # 🥣
-  u'\U0001f3b3',  # 🎳
-  u'\U0001f94a',  # 🥊
-  u'\U0001f466',  # 👦
-  u'\U0001f466\U0001f3ff',  # 👦🏿
-  u'\U0001f466\U0001f3fb',  # 👦🏻
-  u'\U0001f466\U0001f3fe',  # 👦🏾
-  u'\U0001f466\U0001f3fc',  # 👦🏼
-  u'\U0001f466\U0001f3fd',  # 👦🏽
-  u'\U0001f9e0',  # 🧠
-  u'\U0001f35e',  # 🍞
-  u'\U0001f931',  # 🤱
-  u'\U0001f931\U0001f3ff',  # 🤱🏿
-  u'\U0001f931\U0001f3fb',  # 🤱🏻
-  u'\U0001f931\U0001f3fe',  # 🤱🏾
-  u'\U0001f931\U0001f3fc',  # 🤱🏼
-  u'\U0001f931\U0001f3fd',  # 🤱🏽
-  u'\U0001f9f1',  # 🧱
-  u'\U0001f309',  # 🌉
-  u'\U0001f4bc',  # 💼
-  u'\U0001fa72',  # 🩲
-  u'\U0001f506',  # 🔆
-  u'\U0001f966',  # 🥦
-  u'\U000026d3\U0000fe0f\U0000200d\U0001f4a5',  # ⛓️‍💥
-  u'\U000026d3\U0000200d\U0001f4a5',  # ⛓‍💥
-  u'\U0001f494',  # 💔
-  u'\U0001f9f9',  # 🧹
-  u'\U0001f7e4',  # 🟤
-  u'\U0001f90e',  # 🤎
-  u'\U0001f344\U0000200d\U0001f7eb',  # 🍄‍🟫
-  u'\U0001f7eb',  # 🟫
-  u'\U0001f9cb',  # 🧋
-  u'\U0001fae7',  # 🫧
-  u'\U0001faa3',  # 🪣
-  u'\U0001f41b',  # 🐛
-  u'\U0001f3d7\U0000fe0f',  # 🏗️
-  u'\U0001f3d7',  # 🏗
-  u'\U0001f685',  # 🚅
-  u'\U0001f3af',  # 🎯
-  u'\U0001f32f',  # 🌯
-  u'\U0001f68c',  # 🚌
-  u'\U0001f68f',  # 🚏
-  u'\U0001f464',  # 👤
-  u'\U0001f465',  # 👥
-  u'\U0001f9c8',  # 🧈
-  u'\U0001f98b',  # 🦋
-  u'\U0001f335',  # 🌵
-  u'\U0001f4c5',  # 📅
-  u'\U0001f919',  # 🤙
-  u'\U0001f919\U0001f3ff',  # 🤙🏿
-  u'\U0001f919\U0001f3fb',  # 🤙🏻
-  u'\U0001f919\U0001f3fe',  # 🤙🏾
-  u'\U0001f919\U0001f3fc',  # 🤙🏼
-  u'\U0001f919\U0001f3fd',  # 🤙🏽
-  u'\U0001f42a',  # 🐪
-  u'\U0001f4f7',  # 📷
-  u'\U0001f4f8',  # 📸
-  u'\U0001f3d5\U0000fe0f',  # 🏕️
-  u'\U0001f3d5',  # 🏕
-  u'\U0001f56f\U0000fe0f',  # 🕯️
-  u'\U0001f56f',  # 🕯
-  u'\U0001f36c',  # 🍬
-  u'\U0001f96b',  # 🥫
-  u'\U0001f6f6',  # 🛶
-  u'\U0001f5c3\U0000fe0f',  # 🗃️
-  u'\U0001f5c3',  # 🗃
-  u'\U0001f4c7',  # 📇
-  u'\U0001f5c2\U0000fe0f',  # 🗂️
-  u'\U0001f5c2',  # 🗂
-  u'\U0001f3a0',  # 🎠
-  u'\U0001f38f',  # 🎏
-  u'\U0001fa9a',  # 🪚
-  u'\U0001f955',  # 🥕
-  u'\U0001f3f0',  # 🏰
-  u'\U0001f408',  # 🐈
-  u'\U0001f431',  # 🐱
-  u'\U0001f639',  # 😹
-  u'\U0001f63c',  # 😼
-  u'\U000026d3\U0000fe0f',  # ⛓️
-  u'\U000026d3',  # ⛓
-  u'\U0001fa91',  # 🪑
-  u'\U0001f4c9',  # 📉
-  u'\U0001f4c8',  # 📈
-  u'\U0001f4b9',  # 💹
-  u'\U00002611\U0000fe0f',  # ☑️
-  u'\U00002611',  # ☑
-  u'\U00002714\U0000fe0f',  # ✔️
-  u'\U00002714',  # ✔
-  u'\U00002705',  # ✅
-  u'\U0001f9c0',  # 🧀
-  u'\U0001f3c1',  # 🏁
-  u'\U0001f352',  # 🍒
-  u'\U0001f338',  # 🌸
-  u'\U0000265f\U0000fe0f',  # ♟️
-  u'\U0000265f',  # ♟
-  u'\U0001f330',  # 🌰
-  u'\U0001f414',  # 🐔
-  u'\U0001f9d2',  # 🧒
-  u'\U0001f9d2\U0001f3ff',  # 🧒🏿
-  u'\U0001f9d2\U0001f3fb',  # 🧒🏻
-  u'\U0001f9d2\U0001f3fe',  # 🧒🏾
-  u'\U0001f9d2\U0001f3fc',  # 🧒🏼
-  u'\U0001f9d2\U0001f3fd',  # 🧒🏽
-  u'\U0001f6b8',  # 🚸
-  u'\U0001f43f\U0000fe0f',  # 🐿️
-  u'\U0001f43f',  # 🐿
-  u'\U0001f36b',  # 🍫
-  u'\U0001f962',  # 🥢
-  u'\U000026ea',  # ⛪
-  u'\U0001f6ac',  # 🚬
-  u'\U0001f3a6',  # 🎦
-  u'\U000024c2\U0000fe0f',  # Ⓜ️
-  u'\U000024c2',  # Ⓜ
-  u'\U0001f3aa',  # 🎪
-  u'\U0001f3d9\U0000fe0f',  # 🏙️
-  u'\U0001f3d9',  # 🏙
-  u'\U0001f306',  # 🌆
-  u'\U0001f5dc\U0000fe0f',  # 🗜️
-  u'\U0001f5dc',  # 🗜
-  u'\U0001f3ac',  # 🎬
-  u'\U0001f44f',  # 👏
-  u'\U0001f44f\U0001f3ff',  # 👏🏿
-  u'\U0001f44f\U0001f3fb',  # 👏🏻
-  u'\U0001f44f\U0001f3fe',  # 👏🏾
-  u'\U0001f44f\U0001f3fc',  # 👏🏼
-  u'\U0001f44f\U0001f3fd',  # 👏🏽
-  u'\U0001f3db\U0000fe0f',  # 🏛️
-  u'\U0001f3db',  # 🏛
-  u'\U0001f37b',  # 🍻
-  u'\U0001f942',  # 🥂
-  u'\U0001f4cb',  # 📋
-  u'\U0001f503',  # 🔃
-  u'\U0001f4d5',  # 📕
-  u'\U0001f4ea',  # 📪
-  u'\U0001f4eb',  # 📫
-  u'\U0001f302',  # 🌂
-  u'\U00002601\U0000fe0f',  # ☁️
-  u'\U00002601',  # ☁
-  u'\U0001f329\U0000fe0f',  # 🌩️
-  u'\U0001f329',  # 🌩
-  u'\U000026c8\U0000fe0f',  # ⛈️
-  u'\U000026c8',  # ⛈
-  u'\U0001f327\U0000fe0f',  # 🌧️
-  u'\U0001f327',  # 🌧
-  u'\U0001f328\U0000fe0f',  # 🌨️
-  u'\U0001f328',  # 🌨
-  u'\U0001f921',  # 🤡
-  u'\U00002663\U0000fe0f',  # ♣️
-  u'\U00002663',  # ♣
-  u'\U0001f45d',  # 👝
-  u'\U0001f9e5',  # 🧥
-  u'\U0001fab3',  # 🪳
-  u'\U0001f378',  # 🍸
-  u'\U0001f965',  # 🥥
-  u'\U000026b0\U0000fe0f',  # ⚰️
-  u'\U000026b0',  # ⚰
-  u'\U0001fa99',  # 🪙
-  u'\U0001f976',  # 🥶
-  u'\U0001f4a5',  # 💥
-  u'\U00002604\U0000fe0f',  # ☄️
-  u'\U00002604',  # ☄
-  u'\U0001f9ed',  # 🧭
-  u'\U0001f4bd',  # 💽
-  u'\U0001f5b1\U0000fe0f',  # 🖱️
-  u'\U0001f5b1',  # 🖱
-  u'\U0001f38a',  # 🎊
-  u'\U0001f616',  # 😖
-  u'\U0001f615',  # 😕
-  u'\U0001f6a7',  # 🚧
-  u'\U0001f477',  # 👷
-  u'\U0001f477\U0001f3ff',  # 👷🏿
-  u'\U0001f477\U0001f3fb',  # 👷🏻
-  u'\U0001f477\U0001f3fe',  # 👷🏾
-  u'\U0001f477\U0001f3fc',  # 👷🏼
-  u'\U0001f477\U0001f3fd',  # 👷🏽
-  u'\U0001f39b\U0000fe0f',  # 🎛️
-  u'\U0001f39b',  # 🎛
-  u'\U0001f3ea',  # 🏪
-  u'\U0001f9d1\U0000200d\U0001f373',  # 🧑‍🍳
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f373',  # 🧑🏿‍🍳
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f373',  # 🧑🏻‍🍳
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f373',  # 🧑🏾‍🍳
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f373',  # 🧑🏼‍🍳
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f373',  # 🧑🏽‍🍳
-  u'\U0001f35a',  # 🍚
-  u'\U0001f36a',  # 🍪
-  u'\U0001f373',  # 🍳
-  u'\U000000a9\U0000fe0f',  # ©️
-  u'\U000000a9',  # ©
-  u'\U0001fab8',  # 🪸
-  u'\U0001f6cb\U0000fe0f',  # 🛋️
-  u'\U0001f6cb',  # 🛋
-  u'\U0001f504',  # 🔄
-  u'\U0001f491',  # 💑
-  u'\U0001f491\U0001f3ff',  # 💑🏿
-  u'\U0001f491\U0001f3fb',  # 💑🏻
-  u'\U0001f468\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468',  # 👨‍❤️‍👨
-  u'\U0001f468\U0000200d\U00002764\U0000200d\U0001f468',  # 👨‍❤‍👨
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👨🏿‍❤️‍👨🏿
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👨🏿‍❤‍👨🏿
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👨🏿‍❤️‍👨🏻
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👨🏿‍❤‍👨🏻
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👨🏿‍❤️‍👨🏾
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👨🏿‍❤‍👨🏾
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👨🏿‍❤️‍👨🏼
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👨🏿‍❤‍👨🏼
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👨🏿‍❤️‍👨🏽
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👨🏿‍❤‍👨🏽
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👨🏻‍❤️‍👨🏻
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👨🏻‍❤‍👨🏻
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👨🏻‍❤️‍👨🏿
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👨🏻‍❤‍👨🏿
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👨🏻‍❤️‍👨🏾
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👨🏻‍❤‍👨🏾
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👨🏻‍❤️‍👨🏼
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👨🏻‍❤‍👨🏼
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👨🏻‍❤️‍👨🏽
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👨🏻‍❤‍👨🏽
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👨🏾‍❤️‍👨🏾
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👨🏾‍❤‍👨🏾
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👨🏾‍❤️‍👨🏿
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👨🏾‍❤‍👨🏿
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👨🏾‍❤️‍👨🏻
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👨🏾‍❤‍👨🏻
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👨🏾‍❤️‍👨🏼
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👨🏾‍❤‍👨🏼
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👨🏾‍❤️‍👨🏽
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👨🏾‍❤‍👨🏽
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👨🏼‍❤️‍👨🏼
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👨🏼‍❤‍👨🏼
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👨🏼‍❤️‍👨🏿
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👨🏼‍❤‍👨🏿
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👨🏼‍❤️‍👨🏻
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👨🏼‍❤‍👨🏻
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👨🏼‍❤️‍👨🏾
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👨🏼‍❤‍👨🏾
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👨🏼‍❤️‍👨🏽
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👨🏼‍❤‍👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👨🏽‍❤️‍👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👨🏽‍❤‍👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👨🏽‍❤️‍👨🏿
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👨🏽‍❤‍👨🏿
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👨🏽‍❤️‍👨🏻
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👨🏽‍❤‍👨🏻
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👨🏽‍❤️‍👨🏾
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👨🏽‍❤‍👨🏾
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👨🏽‍❤️‍👨🏼
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👨🏽‍❤‍👨🏼
-  u'\U0001f491\U0001f3fe',  # 💑🏾
-  u'\U0001f491\U0001f3fc',  # 💑🏼
-  u'\U0001f491\U0001f3fd',  # 💑🏽
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏿‍❤️‍🧑🏻
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏿‍❤‍🧑🏻
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏿‍❤️‍🧑🏾
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏿‍❤‍🧑🏾
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏿‍❤️‍🧑🏼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏿‍❤‍🧑🏼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏿‍❤️‍🧑🏽
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏿‍❤‍🧑🏽
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏻‍❤️‍🧑🏿
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏻‍❤‍🧑🏿
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏻‍❤️‍🧑🏾
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏻‍❤‍🧑🏾
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏻‍❤️‍🧑🏼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏻‍❤‍🧑🏼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏻‍❤️‍🧑🏽
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏻‍❤‍🧑🏽
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏾‍❤️‍🧑🏿
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏾‍❤‍🧑🏿
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏾‍❤️‍🧑🏻
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏾‍❤‍🧑🏻
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏾‍❤️‍🧑🏼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏾‍❤‍🧑🏼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏾‍❤️‍🧑🏽
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏾‍❤‍🧑🏽
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏼‍❤️‍🧑🏿
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏼‍❤‍🧑🏿
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏼‍❤️‍🧑🏻
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏼‍❤‍🧑🏻
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏼‍❤️‍🧑🏾
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏼‍❤‍🧑🏾
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏼‍❤️‍🧑🏽
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏼‍❤‍🧑🏽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏽‍❤️‍🧑🏿
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏽‍❤‍🧑🏿
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏽‍❤️‍🧑🏻
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏽‍❤‍🧑🏻
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏽‍❤️‍🧑🏾
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏽‍❤‍🧑🏾
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏽‍❤️‍🧑🏼
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏽‍❤‍🧑🏼
-  u'\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468',  # 👩‍❤️‍👨
-  u'\U0001f469\U0000200d\U00002764\U0000200d\U0001f468',  # 👩‍❤‍👨
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👩🏿‍❤️‍👨🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👩🏿‍❤‍👨🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👩🏿‍❤️‍👨🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👩🏿‍❤‍👨🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👩🏿‍❤️‍👨🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👩🏿‍❤‍👨🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👩🏿‍❤️‍👨🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👩🏿‍❤‍👨🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👩🏿‍❤️‍👨🏽
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👩🏿‍❤‍👨🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👩🏻‍❤️‍👨🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👩🏻‍❤‍👨🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👩🏻‍❤️‍👨🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👩🏻‍❤‍👨🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👩🏻‍❤️‍👨🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👩🏻‍❤‍👨🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👩🏻‍❤️‍👨🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👩🏻‍❤‍👨🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👩🏻‍❤️‍👨🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👩🏻‍❤‍👨🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👩🏾‍❤️‍👨🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👩🏾‍❤‍👨🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👩🏾‍❤️‍👨🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👩🏾‍❤‍👨🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👩🏾‍❤️‍👨🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👩🏾‍❤‍👨🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👩🏾‍❤️‍👨🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👩🏾‍❤‍👨🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👩🏾‍❤️‍👨🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👩🏾‍❤‍👨🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👩🏼‍❤️‍👨🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👩🏼‍❤‍👨🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👩🏼‍❤️‍👨🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👩🏼‍❤‍👨🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👩🏼‍❤️‍👨🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👩🏼‍❤‍👨🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👩🏼‍❤️‍👨🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👩🏼‍❤‍👨🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👩🏼‍❤️‍👨🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👩🏼‍❤‍👨🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd',  # 👩🏽‍❤️‍👨🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd',  # 👩🏽‍❤‍👨🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff',  # 👩🏽‍❤️‍👨🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff',  # 👩🏽‍❤‍👨🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb',  # 👩🏽‍❤️‍👨🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb',  # 👩🏽‍❤‍👨🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe',  # 👩🏽‍❤️‍👨🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe',  # 👩🏽‍❤‍👨🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc',  # 👩🏽‍❤️‍👨🏼
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc',  # 👩🏽‍❤‍👨🏼
-  u'\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469',  # 👩‍❤️‍👩
-  u'\U0001f469\U0000200d\U00002764\U0000200d\U0001f469',  # 👩‍❤‍👩
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff',  # 👩🏿‍❤️‍👩🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff',  # 👩🏿‍❤‍👩🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb',  # 👩🏿‍❤️‍👩🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb',  # 👩🏿‍❤‍👩🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe',  # 👩🏿‍❤️‍👩🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe',  # 👩🏿‍❤‍👩🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc',  # 👩🏿‍❤️‍👩🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc',  # 👩🏿‍❤‍👩🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd',  # 👩🏿‍❤️‍👩🏽
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd',  # 👩🏿‍❤‍👩🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb',  # 👩🏻‍❤️‍👩🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb',  # 👩🏻‍❤‍👩🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff',  # 👩🏻‍❤️‍👩🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff',  # 👩🏻‍❤‍👩🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe',  # 👩🏻‍❤️‍👩🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe',  # 👩🏻‍❤‍👩🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc',  # 👩🏻‍❤️‍👩🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc',  # 👩🏻‍❤‍👩🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd',  # 👩🏻‍❤️‍👩🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd',  # 👩🏻‍❤‍👩🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe',  # 👩🏾‍❤️‍👩🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe',  # 👩🏾‍❤‍👩🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff',  # 👩🏾‍❤️‍👩🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff',  # 👩🏾‍❤‍👩🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb',  # 👩🏾‍❤️‍👩🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb',  # 👩🏾‍❤‍👩🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc',  # 👩🏾‍❤️‍👩🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc',  # 👩🏾‍❤‍👩🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd',  # 👩🏾‍❤️‍👩🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd',  # 👩🏾‍❤‍👩🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc',  # 👩🏼‍❤️‍👩🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc',  # 👩🏼‍❤‍👩🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff',  # 👩🏼‍❤️‍👩🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff',  # 👩🏼‍❤‍👩🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb',  # 👩🏼‍❤️‍👩🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb',  # 👩🏼‍❤‍👩🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe',  # 👩🏼‍❤️‍👩🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe',  # 👩🏼‍❤‍👩🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd',  # 👩🏼‍❤️‍👩🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd',  # 👩🏼‍❤‍👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd',  # 👩🏽‍❤️‍👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd',  # 👩🏽‍❤‍👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff',  # 👩🏽‍❤️‍👩🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff',  # 👩🏽‍❤‍👩🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb',  # 👩🏽‍❤️‍👩🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb',  # 👩🏽‍❤‍👩🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe',  # 👩🏽‍❤️‍👩🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe',  # 👩🏽‍❤‍👩🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc',  # 👩🏽‍❤️‍👩🏼
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc',  # 👩🏽‍❤‍👩🏼
-  u'\U0001f404',  # 🐄
-  u'\U0001f42e',  # 🐮
-  u'\U0001f920',  # 🤠
-  u'\U0001f980',  # 🦀
-  u'\U0001f58d\U0000fe0f',  # 🖍️
-  u'\U0001f58d',  # 🖍
-  u'\U0001f4b3',  # 💳
-  u'\U0001f319',  # 🌙
-  u'\U0001f997',  # 🦗
-  u'\U0001f3cf',  # 🏏
-  u'\U0001f40a',  # 🐊
-  u'\U0001f950',  # 🥐
-  u'\U0000274c',  # ❌
-  u'\U0000274e',  # ❎
-  u'\U0001f91e',  # 🤞
-  u'\U0001f91e\U0001f3ff',  # 🤞🏿
-  u'\U0001f91e\U0001f3fb',  # 🤞🏻
-  u'\U0001f91e\U0001f3fe',  # 🤞🏾
-  u'\U0001f91e\U0001f3fc',  # 🤞🏼
-  u'\U0001f91e\U0001f3fd',  # 🤞🏽
-  u'\U0001f38c',  # 🎌
-  u'\U00002694\U0000fe0f',  # ⚔️
-  u'\U00002694',  # ⚔
-  u'\U0001f451',  # 👑
-  u'\U0001fa7c',  # 🩼
-  u'\U0001f63f',  # 😿
-  u'\U0001f622',  # 😢
-  u'\U0001f52e',  # 🔮
-  u'\U0001f952',  # 🥒
-  u'\U0001f964',  # 🥤
-  u'\U0001f9c1',  # 🧁
-  u'\U0001f94c',  # 🥌
-  u'\U0001f9b1',  # 🦱
-  u'\U000027b0',  # ➰
-  u'\U0001f4b1',  # 💱
-  u'\U0001f35b',  # 🍛
-  u'\U0001f36e',  # 🍮
-  u'\U0001f6c3',  # 🛃
-  u'\U0001f969',  # 🥩
-  u'\U0001f300',  # 🌀
-  u'\U0001f5e1\U0000fe0f',  # 🗡️
-  u'\U0001f5e1',  # 🗡
-  u'\U0001f361',  # 🍡
-  u'\U0001f3ff',  # 🏿
-  u'\U0001f4a8',  # 💨
-  u'\U0001f9cf\U0000200d\U00002642\U0000fe0f',  # 🧏‍♂️
-  u'\U0001f9cf\U0000200d\U00002642',  # 🧏‍♂
-  u'\U0001f9cf\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧏🏿‍♂️
-  u'\U0001f9cf\U0001f3ff\U0000200d\U00002642',  # 🧏🏿‍♂
-  u'\U0001f9cf\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧏🏻‍♂️
-  u'\U0001f9cf\U0001f3fb\U0000200d\U00002642',  # 🧏🏻‍♂
-  u'\U0001f9cf\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧏🏾‍♂️
-  u'\U0001f9cf\U0001f3fe\U0000200d\U00002642',  # 🧏🏾‍♂
-  u'\U0001f9cf\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧏🏼‍♂️
-  u'\U0001f9cf\U0001f3fc\U0000200d\U00002642',  # 🧏🏼‍♂
-  u'\U0001f9cf\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧏🏽‍♂️
-  u'\U0001f9cf\U0001f3fd\U0000200d\U00002642',  # 🧏🏽‍♂
-  u'\U0001f9cf',  # 🧏
-  u'\U0001f9cf\U0001f3ff',  # 🧏🏿
-  u'\U0001f9cf\U0001f3fb',  # 🧏🏻
-  u'\U0001f9cf\U0001f3fe',  # 🧏🏾
-  u'\U0001f9cf\U0001f3fc',  # 🧏🏼
-  u'\U0001f9cf\U0001f3fd',  # 🧏🏽
-  u'\U0001f9cf\U0000200d\U00002640\U0000fe0f',  # 🧏‍♀️
-  u'\U0001f9cf\U0000200d\U00002640',  # 🧏‍♀
-  u'\U0001f9cf\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧏🏿‍♀️
-  u'\U0001f9cf\U0001f3ff\U0000200d\U00002640',  # 🧏🏿‍♀
-  u'\U0001f9cf\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧏🏻‍♀️
-  u'\U0001f9cf\U0001f3fb\U0000200d\U00002640',  # 🧏🏻‍♀
-  u'\U0001f9cf\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧏🏾‍♀️
-  u'\U0001f9cf\U0001f3fe\U0000200d\U00002640',  # 🧏🏾‍♀
-  u'\U0001f9cf\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧏🏼‍♀️
-  u'\U0001f9cf\U0001f3fc\U0000200d\U00002640',  # 🧏🏼‍♀
-  u'\U0001f9cf\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧏🏽‍♀️
-  u'\U0001f9cf\U0001f3fd\U0000200d\U00002640',  # 🧏🏽‍♀
-  u'\U0001f333',  # 🌳
-  u'\U0001f98c',  # 🦌
-  u'\U0001f69a',  # 🚚
-  u'\U0001f3ec',  # 🏬
-  u'\U0001f3da\U0000fe0f',  # 🏚️
-  u'\U0001f3da',  # 🏚
-  u'\U0001f3dc\U0000fe0f',  # 🏜️
-  u'\U0001f3dc',  # 🏜
-  u'\U0001f3dd\U0000fe0f',  # 🏝️
-  u'\U0001f3dd',  # 🏝
-  u'\U0001f5a5\U0000fe0f',  # 🖥️
-  u'\U0001f5a5',  # 🖥
-  u'\U0001f575\U0000fe0f',  # 🕵️
-  u'\U0001f575',  # 🕵
-  u'\U0001f575\U0001f3ff',  # 🕵🏿
-  u'\U0001f575\U0001f3fb',  # 🕵🏻
-  u'\U0001f575\U0001f3fe',  # 🕵🏾
-  u'\U0001f575\U0001f3fc',  # 🕵🏼
-  u'\U0001f575\U0001f3fd',  # 🕵🏽
-  u'\U00002666\U0000fe0f',  # ♦️
-  u'\U00002666',  # ♦
-  u'\U0001f4a0',  # 💠
-  u'\U0001f505',  # 🔅
-  u'\U0001f61e',  # 😞
-  u'\U0001f978',  # 🥸
-  u'\U00002797',  # ➗
-  u'\U0001f93f',  # 🤿
-  u'\U0001fa94',  # 🪔
-  u'\U0001f4ab',  # 💫
-  u'\U0001f9ec',  # 🧬
-  u'\U0001f9a4',  # 🦤
-  u'\U0001f415',  # 🐕
-  u'\U0001f436',  # 🐶
-  u'\U0001f4b5',  # 💵
-  u'\U0001f42c',  # 🐬
-  u'\U0001facf',  # 🫏
-  u'\U0001f6aa',  # 🚪
-  u'\U0001fae5',  # 🫥
-  u'\U0001f52f',  # 🔯
-  u'\U000027bf',  # ➿
-  u'\U0000203c\U0000fe0f',  # ‼️
-  u'\U0000203c',  # ‼
-  u'\U0001f369',  # 🍩
-  u'\U0001f54a\U0000fe0f',  # 🕊️
-  u'\U0001f54a',  # 🕊
-  u'\U00002199\U0000fe0f',  # ↙️
-  u'\U00002199',  # ↙
-  u'\U00002198\U0000fe0f',  # ↘️
-  u'\U00002198',  # ↘
-  u'\U00002b07\U0000fe0f',  # ⬇️
-  u'\U00002b07',  # ⬇
-  u'\U0001f613',  # 😓
-  u'\U0001f53d',  # 🔽
-  u'\U0001f409',  # 🐉
-  u'\U0001f432',  # 🐲
-  u'\U0001f457',  # 👗
-  u'\U0001f924',  # 🤤
-  u'\U0001fa78',  # 🩸
-  u'\U0001f4a7',  # 💧
-  u'\U0001f941',  # 🥁
-  u'\U0001f986',  # 🦆
-  u'\U0001f95f',  # 🥟
-  u'\U0001f4c0',  # 📀
-  u'\U0001f4e7',  # 📧
-  u'\U0001f985',  # 🦅
-  u'\U0001f442',  # 👂
-  u'\U0001f442\U0001f3ff',  # 👂🏿
-  u'\U0001f442\U0001f3fb',  # 👂🏻
-  u'\U0001f442\U0001f3fe',  # 👂🏾
-  u'\U0001f442\U0001f3fc',  # 👂🏼
-  u'\U0001f442\U0001f3fd',  # 👂🏽
-  u'\U0001f33d',  # 🌽
-  u'\U0001f9bb',  # 🦻
-  u'\U0001f9bb\U0001f3ff',  # 🦻🏿
-  u'\U0001f9bb\U0001f3fb',  # 🦻🏻
-  u'\U0001f9bb\U0001f3fe',  # 🦻🏾
-  u'\U0001f9bb\U0001f3fc',  # 🦻🏼
-  u'\U0001f9bb\U0001f3fd',  # 🦻🏽
-  u'\U0001f95a',  # 🥚
-  u'\U0001f346',  # 🍆
-  u'\U00002734\U0000fe0f',  # ✴️
-  u'\U00002734',  # ✴
-  u'\U00002733\U0000fe0f',  # ✳️
-  u'\U00002733',  # ✳
-  u'\U0001f563',  # 🕣
-  u'\U0001f557',  # 🕗
-  u'\U000023cf\U0000fe0f',  # ⏏️
-  u'\U000023cf',  # ⏏
-  u'\U0001f50c',  # 🔌
-  u'\U0001f418',  # 🐘
-  u'\U0001f6d7',  # 🛗
-  u'\U0001f566',  # 🕦
-  u'\U0001f55a',  # 🕚
-  u'\U0001f9dd',  # 🧝
-  u'\U0001f9dd\U0001f3ff',  # 🧝🏿
-  u'\U0001f9dd\U0001f3fb',  # 🧝🏻
-  u'\U0001f9dd\U0001f3fe',  # 🧝🏾
-  u'\U0001f9dd\U0001f3fc',  # 🧝🏼
-  u'\U0001f9dd\U0001f3fd',  # 🧝🏽
-  u'\U0001fab9',  # 🪹
-  u'\U0001f621',  # 😡
-  u'\U00002709\U0000fe0f',  # ✉️
-  u'\U00002709',  # ✉
-  u'\U0001f4e9',  # 📩
-  u'\U0001f4b6',  # 💶
-  u'\U0001f332',  # 🌲
-  u'\U0001f411',  # 🐑
-  u'\U00002049\U0000fe0f',  # ⁉️
-  u'\U00002049',  # ⁉
-  u'\U0001f92f',  # 🤯
-  u'\U0001f611',  # 😑
-  u'\U0001f441\U0000fe0f',  # 👁️
-  u'\U0001f441',  # 👁
-  u'\U0001f441\U0000fe0f\U0000200d\U0001f5e8\U0000fe0f',  # 👁️‍🗨️
-  u'\U0001f441\U0000200d\U0001f5e8\U0000fe0f',  # 👁‍🗨️
-  u'\U0001f441\U0000fe0f\U0000200d\U0001f5e8',  # 👁️‍🗨
-  u'\U0001f441\U0000200d\U0001f5e8',  # 👁‍🗨
-  u'\U0001f440',  # 👀
-  u'\U0001f618',  # 😘
-  u'\U0001f62e\U0000200d\U0001f4a8',  # 😮‍💨
-  u'\U0001f979',  # 🥹
-  u'\U0001f636\U0000200d\U0001f32b\U0000fe0f',  # 😶‍🌫️
-  u'\U0001f636\U0000200d\U0001f32b',  # 😶‍🌫
-  u'\U0001f60b',  # 😋
-  u'\U0001f631',  # 😱
-  u'\U0001f92e',  # 🤮
-  u'\U0001fae9',  # 🫩
-  u'\U0001f635',  # 😵
-  u'\U0001fae4',  # 🫤
-  u'\U0001f92d',  # 🤭
-  u'\U0001f915',  # 🤕
-  u'\U0001f637',  # 😷
-  u'\U0001f9d0',  # 🧐
-  u'\U0001fae2',  # 🫢
-  u'\U0001f62e',  # 😮
-  u'\U0001fae3',  # 🫣
-  u'\U0001f928',  # 🤨
-  u'\U0001f644',  # 🙄
-  u'\U0001f635\U0000200d\U0001f4ab',  # 😵‍💫
-  u'\U0001f624',  # 😤
-  u'\U0001f92c',  # 🤬
-  u'\U0001f602',  # 😂
-  u'\U0001f912',  # 🤒
-  u'\U0001f61b',  # 😛
-  u'\U0001f636',  # 😶
-  u'\U0001f3ed',  # 🏭
-  u'\U0001f9d1\U0000200d\U0001f3ed',  # 🧑‍🏭
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f3ed',  # 🧑🏿‍🏭
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f3ed',  # 🧑🏻‍🏭
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f3ed',  # 🧑🏾‍🏭
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f3ed',  # 🧑🏼‍🏭
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f3ed',  # 🧑🏽‍🏭
-  u'\U0001f9da',  # 🧚
-  u'\U0001f9da\U0001f3ff',  # 🧚🏿
-  u'\U0001f9da\U0001f3fb',  # 🧚🏻
-  u'\U0001f9da\U0001f3fe',  # 🧚🏾
-  u'\U0001f9da\U0001f3fc',  # 🧚🏼
-  u'\U0001f9da\U0001f3fd',  # 🧚🏽
-  u'\U0001f9c6',  # 🧆
-  u'\U0001f342',  # 🍂
-  u'\U0001f46a',  # 👪
-  u'\U0001f9d1\U0000200d\U0001f9d1\U0000200d\U0001f9d2',  # 🧑‍🧑‍🧒
-  u'\U0001f9d1\U0000200d\U0001f9d1\U0000200d\U0001f9d2\U0000200d\U0001f9d2',  # 🧑‍🧑‍🧒‍🧒
-  u'\U0001f9d1\U0000200d\U0001f9d2',  # 🧑‍🧒
-  u'\U0001f9d1\U0000200d\U0001f9d2\U0000200d\U0001f9d2',  # 🧑‍🧒‍🧒
-  u'\U0001f468\U0000200d\U0001f466',  # 👨‍👦
-  u'\U0001f468\U0000200d\U0001f466\U0000200d\U0001f466',  # 👨‍👦‍👦
-  u'\U0001f468\U0000200d\U0001f467',  # 👨‍👧
-  u'\U0001f468\U0000200d\U0001f467\U0000200d\U0001f466',  # 👨‍👧‍👦
-  u'\U0001f468\U0000200d\U0001f467\U0000200d\U0001f467',  # 👨‍👧‍👧
-  u'\U0001f468\U0000200d\U0001f468\U0000200d\U0001f466',  # 👨‍👨‍👦
-  u'\U0001f468\U0000200d\U0001f468\U0000200d\U0001f466\U0000200d\U0001f466',  # 👨‍👨‍👦‍👦
-  u'\U0001f468\U0000200d\U0001f468\U0000200d\U0001f467',  # 👨‍👨‍👧
-  u'\U0001f468\U0000200d\U0001f468\U0000200d\U0001f467\U0000200d\U0001f466',  # 👨‍👨‍👧‍👦
-  u'\U0001f468\U0000200d\U0001f468\U0000200d\U0001f467\U0000200d\U0001f467',  # 👨‍👨‍👧‍👧
-  u'\U0001f468\U0000200d\U0001f469\U0000200d\U0001f466',  # 👨‍👩‍👦
-  u'\U0001f468\U0000200d\U0001f469\U0000200d\U0001f466\U0000200d\U0001f466',  # 👨‍👩‍👦‍👦
-  u'\U0001f468\U0000200d\U0001f469\U0000200d\U0001f467',  # 👨‍👩‍👧
-  u'\U0001f468\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f466',  # 👨‍👩‍👧‍👦
-  u'\U0001f468\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f467',  # 👨‍👩‍👧‍👧
-  u'\U0001f469\U0000200d\U0001f466',  # 👩‍👦
-  u'\U0001f469\U0000200d\U0001f466\U0000200d\U0001f466',  # 👩‍👦‍👦
-  u'\U0001f469\U0000200d\U0001f467',  # 👩‍👧
-  u'\U0001f469\U0000200d\U0001f467\U0000200d\U0001f466',  # 👩‍👧‍👦
-  u'\U0001f469\U0000200d\U0001f467\U0000200d\U0001f467',  # 👩‍👧‍👧
-  u'\U0001f469\U0000200d\U0001f469\U0000200d\U0001f466',  # 👩‍👩‍👦
-  u'\U0001f469\U0000200d\U0001f469\U0000200d\U0001f466\U0000200d\U0001f466',  # 👩‍👩‍👦‍👦
-  u'\U0001f469\U0000200d\U0001f469\U0000200d\U0001f467',  # 👩‍👩‍👧
-  u'\U0001f469\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f466',  # 👩‍👩‍👧‍👦
-  u'\U0001f469\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f467',  # 👩‍👩‍👧‍👧
-  u'\U0001f9d1\U0000200d\U0001f33e',  # 🧑‍🌾
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f33e',  # 🧑🏿‍🌾
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f33e',  # 🧑🏻‍🌾
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f33e',  # 🧑🏾‍🌾
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f33e',  # 🧑🏼‍🌾
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f33e',  # 🧑🏽‍🌾
-  u'\U000023e9',  # ⏩
-  u'\U000023ec',  # ⏬
-  u'\U000023ea',  # ⏪
-  u'\U000023eb',  # ⏫
-  u'\U0001f4e0',  # 📠
-  u'\U0001f628',  # 😨
-  u'\U0001fab6',  # 🪶
-  u'\U00002640\U0000fe0f',  # ♀️
-  u'\U00002640',  # ♀
-  u'\U0001f3a1',  # 🎡
-  u'\U000026f4\U0000fe0f',  # ⛴️
-  u'\U000026f4',  # ⛴
-  u'\U0001f3d1',  # 🏑
-  u'\U0001f5c4\U0000fe0f',  # 🗄️
-  u'\U0001f5c4',  # 🗄
-  u'\U0001f4c1',  # 📁
-  u'\U0001f39e\U0000fe0f',  # 🎞️
-  u'\U0001f39e',  # 🎞
-  u'\U0001f4fd\U0000fe0f',  # 📽️
-  u'\U0001f4fd',  # 📽
-  u'\U0001fac6',  # 🫆
-  u'\U0001f525',  # 🔥
-  u'\U0001f692',  # 🚒
-  u'\U0001f9ef',  # 🧯
-  u'\U0001f9e8',  # 🧨
-  u'\U0001f9d1\U0000200d\U0001f692',  # 🧑‍🚒
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f692',  # 🧑🏿‍🚒
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f692',  # 🧑🏻‍🚒
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f692',  # 🧑🏾‍🚒
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f692',  # 🧑🏼‍🚒
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f692',  # 🧑🏽‍🚒
-  u'\U0001f386',  # 🎆
-  u'\U0001f313',  # 🌓
-  u'\U0001f31b',  # 🌛
-  u'\U0001f41f',  # 🐟
-  u'\U0001f365',  # 🍥
-  u'\U0001f3a3',  # 🎣
-  u'\U0001f560',  # 🕠
-  u'\U0001f554',  # 🕔
-  u'\U000026f3',  # ⛳
-  u'\U0001f9a9',  # 🦩
-  u'\U0001f526',  # 🔦
-  u'\U0001f97f',  # 🥿
-  u'\U0001fad3',  # 🫓
-  u'\U0000269c\U0000fe0f',  # ⚜️
-  u'\U0000269c',  # ⚜
-  u'\U0001f4aa',  # 💪
-  u'\U0001f4aa\U0001f3ff',  # 💪🏿
-  u'\U0001f4aa\U0001f3fb',  # 💪🏻
-  u'\U0001f4aa\U0001f3fe',  # 💪🏾
-  u'\U0001f4aa\U0001f3fc',  # 💪🏼
-  u'\U0001f4aa\U0001f3fd',  # 💪🏽
-  u'\U0001f4be',  # 💾
-  u'\U0001f3b4',  # 🎴
-  u'\U0001f633',  # 😳
-  u'\U0001fa88',  # 🪈
-  u'\U0001fab0',  # 🪰
-  u'\U0001f94f',  # 🥏
-  u'\U0001f6f8',  # 🛸
-  u'\U0001f32b\U0000fe0f',  # 🌫️
-  u'\U0001f32b',  # 🌫
-  u'\U0001f301',  # 🌁
-  u'\U0001f64f',  # 🙏
-  u'\U0001f64f\U0001f3ff',  # 🙏🏿
-  u'\U0001f64f\U0001f3fb',  # 🙏🏻
-  u'\U0001f64f\U0001f3fe',  # 🙏🏾
-  u'\U0001f64f\U0001f3fc',  # 🙏🏼
-  u'\U0001f64f\U0001f3fd',  # 🙏🏽
-  u'\U0001faad',  # 🪭
-  u'\U0001fad5',  # 🫕
-  u'\U0001f9b6',  # 🦶
-  u'\U0001f9b6\U0001f3ff',  # 🦶🏿
-  u'\U0001f9b6\U0001f3fb',  # 🦶🏻
-  u'\U0001f9b6\U0001f3fe',  # 🦶🏾
-  u'\U0001f9b6\U0001f3fc',  # 🦶🏼
-  u'\U0001f9b6\U0001f3fd',  # 🦶🏽
-  u'\U0001f463',  # 👣
-  u'\U0001f374',  # 🍴
-  u'\U0001f37d\U0000fe0f',  # 🍽️
-  u'\U0001f37d',  # 🍽
-  u'\U0001f960',  # 🥠
-  u'\U000026f2',  # ⛲
-  u'\U0001f58b\U0000fe0f',  # 🖋️
-  u'\U0001f58b',  # 🖋
-  u'\U0001f55f',  # 🕟
-  u'\U0001f340',  # 🍀
-  u'\U0001f553',  # 🕓
-  u'\U0001f98a',  # 🦊
-  u'\U0001f5bc\U0000fe0f',  # 🖼️
-  u'\U0001f5bc',  # 🖼
-  u'\U0001f35f',  # 🍟
-  u'\U0001f364',  # 🍤
-  u'\U0001f438',  # 🐸
-  u'\U0001f425',  # 🐥
-  u'\U00002639\U0000fe0f',  # ☹️
-  u'\U00002639',  # ☹
-  u'\U0001f626',  # 😦
-  u'\U000026fd',  # ⛽
-  u'\U0001f315',  # 🌕
-  u'\U0001f31d',  # 🌝
-  u'\U000026b1\U0000fe0f',  # ⚱️
-  u'\U000026b1',  # ⚱
-  u'\U0001f3b2',  # 🎲
-  u'\U0001f9c4',  # 🧄
-  u'\U00002699\U0000fe0f',  # ⚙️
-  u'\U00002699',  # ⚙
-  u'\U0001f48e',  # 💎
-  u'\U0001f9de',  # 🧞
-  u'\U0001f47b',  # 👻
-  u'\U0001fada',  # 🫚
-  u'\U0001f992',  # 🦒
-  u'\U0001f467',  # 👧
-  u'\U0001f467\U0001f3ff',  # 👧🏿
-  u'\U0001f467\U0001f3fb',  # 👧🏻
-  u'\U0001f467\U0001f3fe',  # 👧🏾
-  u'\U0001f467\U0001f3fc',  # 👧🏼
-  u'\U0001f467\U0001f3fd',  # 👧🏽
-  u'\U0001f95b',  # 🥛
-  u'\U0001f453',  # 👓
-  u'\U0001f30e',  # 🌎
-  u'\U0001f30f',  # 🌏
-  u'\U0001f30d',  # 🌍
-  u'\U0001f310',  # 🌐
-  u'\U0001f9e4',  # 🧤
-  u'\U0001f31f',  # 🌟
-  u'\U0001f945',  # 🥅
-  u'\U0001f410',  # 🐐
-  u'\U0001f47a',  # 👺
-  u'\U0001f97d',  # 🥽
-  u'\U0001fabf',  # 🪿
-  u'\U0001f98d',  # 🦍
-  u'\U0001f393',  # 🎓
-  u'\U0001f347',  # 🍇
-  u'\U0001f34f',  # 🍏
-  u'\U0001f4d7',  # 📗
-  u'\U0001f7e2',  # 🟢
-  u'\U0001f49a',  # 💚
-  u'\U0001f957',  # 🥗
-  u'\U0001f7e9',  # 🟩
-  u'\U0001fa76',  # 🩶
-  u'\U0001f62c',  # 😬
-  u'\U0001f63a',  # 😺
-  u'\U0001f638',  # 😸
-  u'\U0001f600',  # 😀
-  u'\U0001f603',  # 😃
-  u'\U0001f604',  # 😄
-  u'\U0001f605',  # 😅
-  u'\U0001f606',  # 😆
-  u'\U0001f497',  # 💗
-  u'\U0001f482',  # 💂
-  u'\U0001f482\U0001f3ff',  # 💂🏿
-  u'\U0001f482\U0001f3fb',  # 💂🏻
-  u'\U0001f482\U0001f3fe',  # 💂🏾
-  u'\U0001f482\U0001f3fc',  # 💂🏼
-  u'\U0001f482\U0001f3fd',  # 💂🏽
-  u'\U0001f9ae',  # 🦮
-  u'\U0001f3b8',  # 🎸
-  u'\U0001faae',  # 🪮
-  u'\U0001f354',  # 🍔
-  u'\U0001f528',  # 🔨
-  u'\U00002692\U0000fe0f',  # ⚒️
-  u'\U00002692',  # ⚒
-  u'\U0001f6e0\U0000fe0f',  # 🛠️
-  u'\U0001f6e0',  # 🛠
-  u'\U0001faac',  # 🪬
-  u'\U0001f439',  # 🐹
-  u'\U0001f590\U0000fe0f',  # 🖐️
-  u'\U0001f590',  # 🖐
-  u'\U0001f590\U0001f3ff',  # 🖐🏿
-  u'\U0001f590\U0001f3fb',  # 🖐🏻
-  u'\U0001f590\U0001f3fe',  # 🖐🏾
-  u'\U0001f590\U0001f3fc',  # 🖐🏼
-  u'\U0001f590\U0001f3fd',  # 🖐🏽
-  u'\U0001faf0',  # 🫰
-  u'\U0001faf0\U0001f3ff',  # 🫰🏿
-  u'\U0001faf0\U0001f3fb',  # 🫰🏻
-  u'\U0001faf0\U0001f3fe',  # 🫰🏾
-  u'\U0001faf0\U0001f3fc',  # 🫰🏼
-  u'\U0001faf0\U0001f3fd',  # 🫰🏽
-  u'\U0001f45c',  # 👜
-  u'\U0001f91d',  # 🤝
-  u'\U0001f91d\U0001f3ff',  # 🤝🏿
-  u'\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fb',  # 🫱🏿‍🫲🏻
-  u'\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fe',  # 🫱🏿‍🫲🏾
-  u'\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fc',  # 🫱🏿‍🫲🏼
-  u'\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fd',  # 🫱🏿‍🫲🏽
-  u'\U0001f91d\U0001f3fb',  # 🤝🏻
-  u'\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3ff',  # 🫱🏻‍🫲🏿
-  u'\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3fe',  # 🫱🏻‍🫲🏾
-  u'\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3fc',  # 🫱🏻‍🫲🏼
-  u'\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3fd',  # 🫱🏻‍🫲🏽
-  u'\U0001f91d\U0001f3fe',  # 🤝🏾
-  u'\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3ff',  # 🫱🏾‍🫲🏿
-  u'\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3fb',  # 🫱🏾‍🫲🏻
-  u'\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3fc',  # 🫱🏾‍🫲🏼
-  u'\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3fd',  # 🫱🏾‍🫲🏽
-  u'\U0001f91d\U0001f3fc',  # 🤝🏼
-  u'\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3ff',  # 🫱🏼‍🫲🏿
-  u'\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3fb',  # 🫱🏼‍🫲🏻
-  u'\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3fe',  # 🫱🏼‍🫲🏾
-  u'\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3fd',  # 🫱🏼‍🫲🏽
-  u'\U0001f91d\U0001f3fd',  # 🤝🏽
-  u'\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3ff',  # 🫱🏽‍🫲🏿
-  u'\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3fb',  # 🫱🏽‍🫲🏻
-  u'\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3fe',  # 🫱🏽‍🫲🏾
-  u'\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3fc',  # 🫱🏽‍🫲🏼
-  u'\U0001fa89',  # 🪉
-  u'\U0001f423',  # 🐣
-  u'\U0001f642\U0000200d\U00002194\U0000fe0f',  # 🙂‍↔️
-  u'\U0001f642\U0000200d\U00002194',  # 🙂‍↔
-  u'\U0001f642\U0000200d\U00002195\U0000fe0f',  # 🙂‍↕️
-  u'\U0001f642\U0000200d\U00002195',  # 🙂‍↕
-  u'\U0001f3a7',  # 🎧
-  u'\U0001faa6',  # 🪦
-  u'\U0001f9d1\U0000200d\U00002695\U0000fe0f',  # 🧑‍⚕️
-  u'\U0001f9d1\U0000200d\U00002695',  # 🧑‍⚕
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002695\U0000fe0f',  # 🧑🏿‍⚕️
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002695',  # 🧑🏿‍⚕
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002695\U0000fe0f',  # 🧑🏻‍⚕️
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002695',  # 🧑🏻‍⚕
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002695\U0000fe0f',  # 🧑🏾‍⚕️
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002695',  # 🧑🏾‍⚕
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002695\U0000fe0f',  # 🧑🏼‍⚕️
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002695',  # 🧑🏼‍⚕
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002695\U0000fe0f',  # 🧑🏽‍⚕️
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002695',  # 🧑🏽‍⚕
-  u'\U0001f649',  # 🙉
-  u'\U0001f49f',  # 💟
-  u'\U00002763\U0000fe0f',  # ❣️
-  u'\U00002763',  # ❣
-  u'\U0001faf6',  # 🫶
-  u'\U0001faf6\U0001f3ff',  # 🫶🏿
-  u'\U0001faf6\U0001f3fb',  # 🫶🏻
-  u'\U0001faf6\U0001f3fe',  # 🫶🏾
-  u'\U0001faf6\U0001f3fc',  # 🫶🏼
-  u'\U0001faf6\U0001f3fd',  # 🫶🏽
-  u'\U00002764\U0000fe0f\U0000200d\U0001f525',  # ❤️‍🔥
-  u'\U00002764\U0000200d\U0001f525',  # ❤‍🔥
-  u'\U00002665\U0000fe0f',  # ♥️
-  u'\U00002665',  # ♥
-  u'\U0001f498',  # 💘
-  u'\U0001f49d',  # 💝
-  u'\U0001f4b2',  # 💲
-  u'\U0001f7f0',  # 🟰
-  u'\U0001f994',  # 🦔
-  u'\U0001f681',  # 🚁
-  u'\U0001f33f',  # 🌿
-  u'\U0001f33a',  # 🌺
-  u'\U0001f460',  # 👠
-  u'\U0001f684',  # 🚄
-  u'\U000026a1',  # ⚡
-  u'\U0001f97e',  # 🥾
-  u'\U0001f6d5',  # 🛕
-  u'\U0001f99b',  # 🦛
-  u'\U0001f573\U0000fe0f',  # 🕳️
-  u'\U0001f573',  # 🕳
-  u'\U00002b55',  # ⭕
-  u'\U0001f36f',  # 🍯
-  u'\U0001f41d',  # 🐝
-  u'\U0001fa9d',  # 🪝
-  u'\U0001f6a5',  # 🚥
-  u'\U0001f40e',  # 🐎
-  u'\U0001f434',  # 🐴
-  u'\U0001f3c7',  # 🏇
-  u'\U0001f3c7\U0001f3ff',  # 🏇🏿
-  u'\U0001f3c7\U0001f3fb',  # 🏇🏻
-  u'\U0001f3c7\U0001f3fe',  # 🏇🏾
-  u'\U0001f3c7\U0001f3fc',  # 🏇🏼
-  u'\U0001f3c7\U0001f3fd',  # 🏇🏽
-  u'\U0001f3e5',  # 🏥
-  u'\U00002615',  # ☕
-  u'\U0001f32d',  # 🌭
-  u'\U0001f975',  # 🥵
-  u'\U0001f336\U0000fe0f',  # 🌶️
-  u'\U0001f336',  # 🌶
-  u'\U00002668\U0000fe0f',  # ♨️
-  u'\U00002668',  # ♨
-  u'\U0001f3e8',  # 🏨
-  u'\U0000231b',  # ⌛
-  u'\U000023f3',  # ⏳
-  u'\U0001f3e0',  # 🏠
-  u'\U0001f3e1',  # 🏡
-  u'\U0001f3d8\U0000fe0f',  # 🏘️
-  u'\U0001f3d8',  # 🏘
-  u'\U0001f4af',  # 💯
-  u'\U0001f62f',  # 😯
-  u'\U0001f6d6',  # 🛖
-  u'\U0001fabb',  # 🪻
-  u'\U0001f9ca',  # 🧊
-  u'\U0001f368',  # 🍨
-  u'\U0001f3d2',  # 🏒
-  u'\U000026f8\U0000fe0f',  # ⛸️
-  u'\U000026f8',  # ⛸
-  u'\U0001faaa',  # 🪪
-  u'\U0001f4e5',  # 📥
-  u'\U0001f4e8',  # 📨
-  u'\U0001faf5',  # 🫵
-  u'\U0001faf5\U0001f3ff',  # 🫵🏿
-  u'\U0001faf5\U0001f3fb',  # 🫵🏻
-  u'\U0001faf5\U0001f3fe',  # 🫵🏾
-  u'\U0001faf5\U0001f3fc',  # 🫵🏼
-  u'\U0001faf5\U0001f3fd',  # 🫵🏽
-  u'\U0000261d\U0000fe0f',  # ☝️
-  u'\U0000261d',  # ☝
-  u'\U0000261d\U0001f3ff',  # ☝🏿
-  u'\U0000261d\U0001f3fb',  # ☝🏻
-  u'\U0000261d\U0001f3fe',  # ☝🏾
-  u'\U0000261d\U0001f3fc',  # ☝🏼
-  u'\U0000261d\U0001f3fd',  # ☝🏽
-  u'\U0000267e\U0000fe0f',  # ♾️
-  u'\U0000267e',  # ♾
-  u'\U00002139\U0000fe0f',  # ℹ️
-  u'\U00002139',  # ℹ
-  u'\U0001f524',  # 🔤
-  u'\U0001f521',  # 🔡
-  u'\U0001f520',  # 🔠
-  u'\U0001f522',  # 🔢
-  u'\U0001f523',  # 🔣
-  u'\U0001f383',  # 🎃
-  u'\U0001fad9',  # 🫙
-  u'\U0001f456',  # 👖
-  u'\U0001fabc',  # 🪼
-  u'\U0001f0cf',  # 🃏
-  u'\U0001f579\U0000fe0f',  # 🕹️
-  u'\U0001f579',  # 🕹
-  u'\U0001f9d1\U0000200d\U00002696\U0000fe0f',  # 🧑‍⚖️
-  u'\U0001f9d1\U0000200d\U00002696',  # 🧑‍⚖
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002696\U0000fe0f',  # 🧑🏿‍⚖️
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002696',  # 🧑🏿‍⚖
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002696\U0000fe0f',  # 🧑🏻‍⚖️
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002696',  # 🧑🏻‍⚖
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002696\U0000fe0f',  # 🧑🏾‍⚖️
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002696',  # 🧑🏾‍⚖
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002696\U0000fe0f',  # 🧑🏼‍⚖️
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002696',  # 🧑🏼‍⚖
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002696\U0000fe0f',  # 🧑🏽‍⚖️
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002696',  # 🧑🏽‍⚖
-  u'\U0001f54b',  # 🕋
-  u'\U0001f998',  # 🦘
-  u'\U0001f511',  # 🔑
-  u'\U00002328\U0000fe0f',  # ⌨️
-  u'\U00002328',  # ⌨
-  u'\U00000023\U0000fe0f\U000020e3',  # #️⃣
-  u'\U00000023\U000020e3',  # #⃣
-  u'\U0000002a\U0000fe0f\U000020e3',  # *️⃣
-  u'\U0000002a\U000020e3',  # *⃣
-  u'\U00000030\U0000fe0f\U000020e3',  # 0️⃣
-  u'\U00000030\U000020e3',  # 0⃣
-  u'\U00000031\U0000fe0f\U000020e3',  # 1️⃣
-  u'\U00000031\U000020e3',  # 1⃣
-  u'\U0001f51f',  # 🔟
-  u'\U00000032\U0000fe0f\U000020e3',  # 2️⃣
-  u'\U00000032\U000020e3',  # 2⃣
-  u'\U00000033\U0000fe0f\U000020e3',  # 3️⃣
-  u'\U00000033\U000020e3',  # 3⃣
-  u'\U00000034\U0000fe0f\U000020e3',  # 4️⃣
-  u'\U00000034\U000020e3',  # 4⃣
-  u'\U00000035\U0000fe0f\U000020e3',  # 5️⃣
-  u'\U00000035\U000020e3',  # 5⃣
-  u'\U00000036\U0000fe0f\U000020e3',  # 6️⃣
-  u'\U00000036\U000020e3',  # 6⃣
-  u'\U00000037\U0000fe0f\U000020e3',  # 7️⃣
-  u'\U00000037\U000020e3',  # 7⃣
-  u'\U00000038\U0000fe0f\U000020e3',  # 8️⃣
-  u'\U00000038\U000020e3',  # 8⃣
-  u'\U00000039\U0000fe0f\U000020e3',  # 9️⃣
-  u'\U00000039\U000020e3',  # 9⃣
-  u'\U0001faaf',  # 🪯
-  u'\U0001f6f4',  # 🛴
-  u'\U0001f458',  # 👘
-  u'\U0001f48f',  # 💏
-  u'\U0001f48f\U0001f3ff',  # 💏🏿
-  u'\U0001f48f\U0001f3fb',  # 💏🏻
-  u'\U0001f468\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468',  # 👨‍❤️‍💋‍👨
-  u'\U0001f468\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468',  # 👨‍❤‍💋‍👨
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏿‍❤️‍💋‍👨🏿
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏿‍❤‍💋‍👨🏿
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏿‍❤️‍💋‍👨🏻
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏿‍❤‍💋‍👨🏻
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏿‍❤️‍💋‍👨🏾
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏿‍❤‍💋‍👨🏾
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏿‍❤️‍💋‍👨🏼
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏿‍❤‍💋‍👨🏼
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏿‍❤️‍💋‍👨🏽
-  u'\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏿‍❤‍💋‍👨🏽
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏻‍❤️‍💋‍👨🏻
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏻‍❤‍💋‍👨🏻
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏻‍❤️‍💋‍👨🏿
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏻‍❤‍💋‍👨🏿
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏻‍❤️‍💋‍👨🏾
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏻‍❤‍💋‍👨🏾
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏻‍❤️‍💋‍👨🏼
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏻‍❤‍💋‍👨🏼
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏻‍❤️‍💋‍👨🏽
-  u'\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏻‍❤‍💋‍👨🏽
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏾‍❤️‍💋‍👨🏾
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏾‍❤‍💋‍👨🏾
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏾‍❤️‍💋‍👨🏿
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏾‍❤‍💋‍👨🏿
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏾‍❤️‍💋‍👨🏻
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏾‍❤‍💋‍👨🏻
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏾‍❤️‍💋‍👨🏼
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏾‍❤‍💋‍👨🏼
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏾‍❤️‍💋‍👨🏽
-  u'\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏾‍❤‍💋‍👨🏽
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏼‍❤️‍💋‍👨🏼
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏼‍❤‍💋‍👨🏼
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏼‍❤️‍💋‍👨🏿
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏼‍❤‍💋‍👨🏿
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏼‍❤️‍💋‍👨🏻
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏼‍❤‍💋‍👨🏻
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏼‍❤️‍💋‍👨🏾
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏼‍❤‍💋‍👨🏾
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏼‍❤️‍💋‍👨🏽
-  u'\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏼‍❤‍💋‍👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏽‍❤️‍💋‍👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👨🏽‍❤‍💋‍👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏽‍❤️‍💋‍👨🏿
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👨🏽‍❤‍💋‍👨🏿
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏽‍❤️‍💋‍👨🏻
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👨🏽‍❤‍💋‍👨🏻
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏽‍❤️‍💋‍👨🏾
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👨🏽‍❤‍💋‍👨🏾
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏽‍❤️‍💋‍👨🏼
-  u'\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👨🏽‍❤‍💋‍👨🏼
-  u'\U0001f48b',  # 💋
-  u'\U0001f48f\U0001f3fe',  # 💏🏾
-  u'\U0001f48f\U0001f3fc',  # 💏🏼
-  u'\U0001f48f\U0001f3fd',  # 💏🏽
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏿‍❤️‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏿‍❤‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏿‍❤️‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏿‍❤‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏿‍❤️‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏿‍❤‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏿‍❤️‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏿‍❤‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏻‍❤️‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏻‍❤‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏻‍❤️‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏻‍❤‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏻‍❤️‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏻‍❤‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏻‍❤️‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏻‍❤‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏾‍❤️‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏾‍❤‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏾‍❤️‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏾‍❤‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏾‍❤️‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏾‍❤‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏾‍❤️‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏾‍❤‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏼‍❤️‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏼‍❤‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏼‍❤️‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏼‍❤‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏼‍❤️‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏼‍❤‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏼‍❤️‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏼‍❤‍💋‍🧑🏽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏽‍❤️‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏽‍❤‍💋‍🧑🏿
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏽‍❤️‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏽‍❤‍💋‍🧑🏻
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏽‍❤️‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏽‍❤‍💋‍🧑🏾
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏽‍❤️‍💋‍🧑🏼
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏽‍❤‍💋‍🧑🏼
-  u'\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468',  # 👩‍❤️‍💋‍👨
-  u'\U0001f469\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468',  # 👩‍❤‍💋‍👨
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏿‍❤️‍💋‍👨🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏿‍❤‍💋‍👨🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏿‍❤️‍💋‍👨🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏿‍❤‍💋‍👨🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏿‍❤️‍💋‍👨🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏿‍❤‍💋‍👨🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏿‍❤️‍💋‍👨🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏿‍❤‍💋‍👨🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏿‍❤️‍💋‍👨🏽
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏿‍❤‍💋‍👨🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏻‍❤️‍💋‍👨🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏻‍❤‍💋‍👨🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏻‍❤️‍💋‍👨🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏻‍❤‍💋‍👨🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏻‍❤️‍💋‍👨🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏻‍❤‍💋‍👨🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏻‍❤️‍💋‍👨🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏻‍❤‍💋‍👨🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏻‍❤️‍💋‍👨🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏻‍❤‍💋‍👨🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏾‍❤️‍💋‍👨🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏾‍❤‍💋‍👨🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏾‍❤️‍💋‍👨🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏾‍❤‍💋‍👨🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏾‍❤️‍💋‍👨🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏾‍❤‍💋‍👨🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏾‍❤️‍💋‍👨🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏾‍❤‍💋‍👨🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏾‍❤️‍💋‍👨🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏾‍❤‍💋‍👨🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏼‍❤️‍💋‍👨🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏼‍❤‍💋‍👨🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏼‍❤️‍💋‍👨🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏼‍❤‍💋‍👨🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏼‍❤️‍💋‍👨🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏼‍❤‍💋‍👨🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏼‍❤️‍💋‍👨🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏼‍❤‍💋‍👨🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏼‍❤️‍💋‍👨🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏼‍❤‍💋‍👨🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏽‍❤️‍💋‍👨🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd',  # 👩🏽‍❤‍💋‍👨🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏽‍❤️‍💋‍👨🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff',  # 👩🏽‍❤‍💋‍👨🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏽‍❤️‍💋‍👨🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb',  # 👩🏽‍❤‍💋‍👨🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏽‍❤️‍💋‍👨🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe',  # 👩🏽‍❤‍💋‍👨🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏽‍❤️‍💋‍👨🏼
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc',  # 👩🏽‍❤‍💋‍👨🏼
-  u'\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469',  # 👩‍❤️‍💋‍👩
-  u'\U0001f469\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469',  # 👩‍❤‍💋‍👩
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏿‍❤️‍💋‍👩🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏿‍❤‍💋‍👩🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏿‍❤️‍💋‍👩🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏿‍❤‍💋‍👩🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏿‍❤️‍💋‍👩🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏿‍❤‍💋‍👩🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏿‍❤️‍💋‍👩🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏿‍❤‍💋‍👩🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏿‍❤️‍💋‍👩🏽
-  u'\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏿‍❤‍💋‍👩🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏻‍❤️‍💋‍👩🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏻‍❤‍💋‍👩🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏻‍❤️‍💋‍👩🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏻‍❤‍💋‍👩🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏻‍❤️‍💋‍👩🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏻‍❤‍💋‍👩🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏻‍❤️‍💋‍👩🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏻‍❤‍💋‍👩🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏻‍❤️‍💋‍👩🏽
-  u'\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏻‍❤‍💋‍👩🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏾‍❤️‍💋‍👩🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏾‍❤‍💋‍👩🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏾‍❤️‍💋‍👩🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏾‍❤‍💋‍👩🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏾‍❤️‍💋‍👩🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏾‍❤‍💋‍👩🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏾‍❤️‍💋‍👩🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏾‍❤‍💋‍👩🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏾‍❤️‍💋‍👩🏽
-  u'\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏾‍❤‍💋‍👩🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏼‍❤️‍💋‍👩🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏼‍❤‍💋‍👩🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏼‍❤️‍💋‍👩🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏼‍❤‍💋‍👩🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏼‍❤️‍💋‍👩🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏼‍❤‍💋‍👩🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏼‍❤️‍💋‍👩🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏼‍❤‍💋‍👩🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏼‍❤️‍💋‍👩🏽
-  u'\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏼‍❤‍💋‍👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏽‍❤️‍💋‍👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd',  # 👩🏽‍❤‍💋‍👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏽‍❤️‍💋‍👩🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff',  # 👩🏽‍❤‍💋‍👩🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏽‍❤️‍💋‍👩🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb',  # 👩🏽‍❤‍💋‍👩🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏽‍❤️‍💋‍👩🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe',  # 👩🏽‍❤‍💋‍👩🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏽‍❤️‍💋‍👩🏼
-  u'\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc',  # 👩🏽‍❤‍💋‍👩🏼
-  u'\U0001f63d',  # 😽
-  u'\U0001f617',  # 😗
-  u'\U0001f61a',  # 😚
-  u'\U0001f619',  # 😙
-  u'\U0001f52a',  # 🔪
-  u'\U0001fa81',  # 🪁
-  u'\U0001f95d',  # 🥝
-  u'\U0001faa2',  # 🪢
-  u'\U0001f428',  # 🐨
-  u'\U0001f97c',  # 🥼
-  u'\U0001f3f7\U0000fe0f',  # 🏷️
-  u'\U0001f3f7',  # 🏷
-  u'\U0001f94d',  # 🥍
-  u'\U0001fa9c',  # 🪜
-  u'\U0001f41e',  # 🐞
-  u'\U0001f4bb',  # 💻
-  u'\U0001f537',  # 🔷
-  u'\U0001f536',  # 🔶
-  u'\U0001f317',  # 🌗
-  u'\U0001f31c',  # 🌜
-  u'\U000023ee\U0000fe0f',  # ⏮️
-  u'\U000023ee',  # ⏮
-  u'\U0000271d\U0000fe0f',  # ✝️
-  u'\U0000271d',  # ✝
-  u'\U0001f343',  # 🍃
-  u'\U0001fabe',  # 🪾
-  u'\U0001f96c',  # 🥬
-  u'\U0001f4d2',  # 📒
-  u'\U0001f91b',  # 🤛
-  u'\U0001f91b\U0001f3ff',  # 🤛🏿
-  u'\U0001f91b\U0001f3fb',  # 🤛🏻
-  u'\U0001f91b\U0001f3fe',  # 🤛🏾
-  u'\U0001f91b\U0001f3fc',  # 🤛🏼
-  u'\U0001f91b\U0001f3fd',  # 🤛🏽
-  u'\U00002194\U0000fe0f',  # ↔️
-  u'\U00002194',  # ↔
-  u'\U00002b05\U0000fe0f',  # ⬅️
-  u'\U00002b05',  # ⬅
-  u'\U000021aa\U0000fe0f',  # ↪️
-  u'\U000021aa',  # ↪
-  u'\U0001f6c5',  # 🛅
-  u'\U0001f5e8\U0000fe0f',  # 🗨️
-  u'\U0001f5e8',  # 🗨
-  u'\U0001faf2',  # 🫲
-  u'\U0001faf2\U0001f3ff',  # 🫲🏿
-  u'\U0001faf2\U0001f3fb',  # 🫲🏻
-  u'\U0001faf2\U0001f3fe',  # 🫲🏾
-  u'\U0001faf2\U0001f3fc',  # 🫲🏼
-  u'\U0001faf2\U0001f3fd',  # 🫲🏽
-  u'\U0001faf7',  # 🫷
-  u'\U0001faf7\U0001f3ff',  # 🫷🏿
-  u'\U0001faf7\U0001f3fb',  # 🫷🏻
-  u'\U0001faf7\U0001f3fe',  # 🫷🏾
-  u'\U0001faf7\U0001f3fc',  # 🫷🏼
-  u'\U0001faf7\U0001f3fd',  # 🫷🏽
-  u'\U0001f9b5',  # 🦵
-  u'\U0001f9b5\U0001f3ff',  # 🦵🏿
-  u'\U0001f9b5\U0001f3fb',  # 🦵🏻
-  u'\U0001f9b5\U0001f3fe',  # 🦵🏾
-  u'\U0001f9b5\U0001f3fc',  # 🦵🏼
-  u'\U0001f9b5\U0001f3fd',  # 🦵🏽
-  u'\U0001f34b',  # 🍋
-  u'\U0001f406',  # 🐆
-  u'\U0001f39a\U0000fe0f',  # 🎚️
-  u'\U0001f39a',  # 🎚
-  u'\U0001fa75',  # 🩵
-  u'\U0001f4a1',  # 💡
-  u'\U0001f688',  # 🚈
-  u'\U0001f3fb',  # 🏻
-  u'\U0001f34b\U0000200d\U0001f7e9',  # 🍋‍🟩
-  u'\U0001f517',  # 🔗
-  u'\U0001f587\U0000fe0f',  # 🖇️
-  u'\U0001f587',  # 🖇
-  u'\U0001f981',  # 🦁
-  u'\U0001f484',  # 💄
-  u'\U0001f6ae',  # 🚮
-  u'\U0001f98e',  # 🦎
-  u'\U0001f999',  # 🦙
-  u'\U0001f99e',  # 🦞
-  u'\U0001f512',  # 🔒
-  u'\U0001f510',  # 🔐
-  u'\U0001f50f',  # 🔏
-  u'\U0001f682',  # 🚂
-  u'\U0001f36d',  # 🍭
-  u'\U0001fa98',  # 🪘
-  u'\U0001f9f4',  # 🧴
-  u'\U0001fab7',  # 🪷
-  u'\U0001f62d',  # 😭
-  u'\U0001f4e2',  # 📢
-  u'\U0001f91f',  # 🤟
-  u'\U0001f91f\U0001f3ff',  # 🤟🏿
-  u'\U0001f91f\U0001f3fb',  # 🤟🏻
-  u'\U0001f91f\U0001f3fe',  # 🤟🏾
-  u'\U0001f91f\U0001f3fc',  # 🤟🏼
-  u'\U0001f91f\U0001f3fd',  # 🤟🏽
-  u'\U0001f3e9',  # 🏩
-  u'\U0001f48c',  # 💌
-  u'\U0001faab',  # 🪫
-  u'\U0001f9f3',  # 🧳
-  u'\U0001fac1',  # 🫁
-  u'\U0001f925',  # 🤥
-  u'\U0001f9d9',  # 🧙
-  u'\U0001f9d9\U0001f3ff',  # 🧙🏿
-  u'\U0001f9d9\U0001f3fb',  # 🧙🏻
-  u'\U0001f9d9\U0001f3fe',  # 🧙🏾
-  u'\U0001f9d9\U0001f3fc',  # 🧙🏼
-  u'\U0001f9d9\U0001f3fd',  # 🧙🏽
-  u'\U0001fa84',  # 🪄
-  u'\U0001f9f2',  # 🧲
-  u'\U0001f50d',  # 🔍
-  u'\U0001f50e',  # 🔎
-  u'\U0001f004',  # 🀄
-  u'\U00002642\U0000fe0f',  # ♂️
-  u'\U00002642',  # ♂
-  u'\U0001f9a3',  # 🦣
-  u'\U0001f468',  # 👨
-  u'\U0001f468\U0000200d\U0001f3a8',  # 👨‍🎨
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f3a8',  # 👨🏿‍🎨
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f3a8',  # 👨🏻‍🎨
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f3a8',  # 👨🏾‍🎨
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f3a8',  # 👨🏼‍🎨
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f3a8',  # 👨🏽‍🎨
-  u'\U0001f468\U0000200d\U0001f680',  # 👨‍🚀
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f680',  # 👨🏿‍🚀
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f680',  # 👨🏻‍🚀
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f680',  # 👨🏾‍🚀
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f680',  # 👨🏼‍🚀
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f680',  # 👨🏽‍🚀
-  u'\U0001f468\U0000200d\U0001f9b2',  # 👨‍🦲
-  u'\U0001f9d4\U0000200d\U00002642\U0000fe0f',  # 🧔‍♂️
-  u'\U0001f9d4\U0000200d\U00002642',  # 🧔‍♂
-  u'\U0001f6b4\U0000200d\U00002642\U0000fe0f',  # 🚴‍♂️
-  u'\U0001f6b4\U0000200d\U00002642',  # 🚴‍♂
-  u'\U0001f6b4\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🚴🏿‍♂️
-  u'\U0001f6b4\U0001f3ff\U0000200d\U00002642',  # 🚴🏿‍♂
-  u'\U0001f6b4\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🚴🏻‍♂️
-  u'\U0001f6b4\U0001f3fb\U0000200d\U00002642',  # 🚴🏻‍♂
-  u'\U0001f6b4\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🚴🏾‍♂️
-  u'\U0001f6b4\U0001f3fe\U0000200d\U00002642',  # 🚴🏾‍♂
-  u'\U0001f6b4\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🚴🏼‍♂️
-  u'\U0001f6b4\U0001f3fc\U0000200d\U00002642',  # 🚴🏼‍♂
-  u'\U0001f6b4\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🚴🏽‍♂️
-  u'\U0001f6b4\U0001f3fd\U0000200d\U00002642',  # 🚴🏽‍♂
-  u'\U0001f471\U0000200d\U00002642\U0000fe0f',  # 👱‍♂️
-  u'\U0001f471\U0000200d\U00002642',  # 👱‍♂
-  u'\U000026f9\U0000fe0f\U0000200d\U00002642\U0000fe0f',  # ⛹️‍♂️
-  u'\U000026f9\U0000200d\U00002642\U0000fe0f',  # ⛹‍♂️
-  u'\U000026f9\U0000fe0f\U0000200d\U00002642',  # ⛹️‍♂
-  u'\U000026f9\U0000200d\U00002642',  # ⛹‍♂
-  u'\U000026f9\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # ⛹🏿‍♂️
-  u'\U000026f9\U0001f3ff\U0000200d\U00002642',  # ⛹🏿‍♂
-  u'\U000026f9\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # ⛹🏻‍♂️
-  u'\U000026f9\U0001f3fb\U0000200d\U00002642',  # ⛹🏻‍♂
-  u'\U000026f9\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # ⛹🏾‍♂️
-  u'\U000026f9\U0001f3fe\U0000200d\U00002642',  # ⛹🏾‍♂
-  u'\U000026f9\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # ⛹🏼‍♂️
-  u'\U000026f9\U0001f3fc\U0000200d\U00002642',  # ⛹🏼‍♂
-  u'\U000026f9\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # ⛹🏽‍♂️
-  u'\U000026f9\U0001f3fd\U0000200d\U00002642',  # ⛹🏽‍♂
-  u'\U0001f647\U0000200d\U00002642\U0000fe0f',  # 🙇‍♂️
-  u'\U0001f647\U0000200d\U00002642',  # 🙇‍♂
-  u'\U0001f647\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🙇🏿‍♂️
-  u'\U0001f647\U0001f3ff\U0000200d\U00002642',  # 🙇🏿‍♂
-  u'\U0001f647\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🙇🏻‍♂️
-  u'\U0001f647\U0001f3fb\U0000200d\U00002642',  # 🙇🏻‍♂
-  u'\U0001f647\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🙇🏾‍♂️
-  u'\U0001f647\U0001f3fe\U0000200d\U00002642',  # 🙇🏾‍♂
-  u'\U0001f647\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🙇🏼‍♂️
-  u'\U0001f647\U0001f3fc\U0000200d\U00002642',  # 🙇🏼‍♂
-  u'\U0001f647\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🙇🏽‍♂️
-  u'\U0001f647\U0001f3fd\U0000200d\U00002642',  # 🙇🏽‍♂
-  u'\U0001f938\U0000200d\U00002642\U0000fe0f',  # 🤸‍♂️
-  u'\U0001f938\U0000200d\U00002642',  # 🤸‍♂
-  u'\U0001f938\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤸🏿‍♂️
-  u'\U0001f938\U0001f3ff\U0000200d\U00002642',  # 🤸🏿‍♂
-  u'\U0001f938\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤸🏻‍♂️
-  u'\U0001f938\U0001f3fb\U0000200d\U00002642',  # 🤸🏻‍♂
-  u'\U0001f938\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤸🏾‍♂️
-  u'\U0001f938\U0001f3fe\U0000200d\U00002642',  # 🤸🏾‍♂
-  u'\U0001f938\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤸🏼‍♂️
-  u'\U0001f938\U0001f3fc\U0000200d\U00002642',  # 🤸🏼‍♂
-  u'\U0001f938\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤸🏽‍♂️
-  u'\U0001f938\U0001f3fd\U0000200d\U00002642',  # 🤸🏽‍♂
-  u'\U0001f9d7\U0000200d\U00002642\U0000fe0f',  # 🧗‍♂️
-  u'\U0001f9d7\U0000200d\U00002642',  # 🧗‍♂
-  u'\U0001f9d7\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧗🏿‍♂️
-  u'\U0001f9d7\U0001f3ff\U0000200d\U00002642',  # 🧗🏿‍♂
-  u'\U0001f9d7\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧗🏻‍♂️
-  u'\U0001f9d7\U0001f3fb\U0000200d\U00002642',  # 🧗🏻‍♂
-  u'\U0001f9d7\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧗🏾‍♂️
-  u'\U0001f9d7\U0001f3fe\U0000200d\U00002642',  # 🧗🏾‍♂
-  u'\U0001f9d7\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧗🏼‍♂️
-  u'\U0001f9d7\U0001f3fc\U0000200d\U00002642',  # 🧗🏼‍♂
-  u'\U0001f9d7\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧗🏽‍♂️
-  u'\U0001f9d7\U0001f3fd\U0000200d\U00002642',  # 🧗🏽‍♂
-  u'\U0001f477\U0000200d\U00002642\U0000fe0f',  # 👷‍♂️
-  u'\U0001f477\U0000200d\U00002642',  # 👷‍♂
-  u'\U0001f477\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 👷🏿‍♂️
-  u'\U0001f477\U0001f3ff\U0000200d\U00002642',  # 👷🏿‍♂
-  u'\U0001f477\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 👷🏻‍♂️
-  u'\U0001f477\U0001f3fb\U0000200d\U00002642',  # 👷🏻‍♂
-  u'\U0001f477\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 👷🏾‍♂️
-  u'\U0001f477\U0001f3fe\U0000200d\U00002642',  # 👷🏾‍♂
-  u'\U0001f477\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 👷🏼‍♂️
-  u'\U0001f477\U0001f3fc\U0000200d\U00002642',  # 👷🏼‍♂
-  u'\U0001f477\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 👷🏽‍♂️
-  u'\U0001f477\U0001f3fd\U0000200d\U00002642',  # 👷🏽‍♂
-  u'\U0001f468\U0000200d\U0001f373',  # 👨‍🍳
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f373',  # 👨🏿‍🍳
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f373',  # 👨🏻‍🍳
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f373',  # 👨🏾‍🍳
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f373',  # 👨🏼‍🍳
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f373',  # 👨🏽‍🍳
-  u'\U0001f468\U0000200d\U0001f9b1',  # 👨‍🦱
-  u'\U0001f57a',  # 🕺
-  u'\U0001f57a\U0001f3ff',  # 🕺🏿
-  u'\U0001f57a\U0001f3fb',  # 🕺🏻
-  u'\U0001f57a\U0001f3fe',  # 🕺🏾
-  u'\U0001f57a\U0001f3fc',  # 🕺🏼
-  u'\U0001f57a\U0001f3fd',  # 🕺🏽
-  u'\U0001f468\U0001f3ff',  # 👨🏿
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9b2',  # 👨🏿‍🦲
-  u'\U0001f9d4\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧔🏿‍♂️
-  u'\U0001f9d4\U0001f3ff\U0000200d\U00002642',  # 🧔🏿‍♂
-  u'\U0001f471\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 👱🏿‍♂️
-  u'\U0001f471\U0001f3ff\U0000200d\U00002642',  # 👱🏿‍♂
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9b1',  # 👨🏿‍🦱
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9b0',  # 👨🏿‍🦰
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9b3',  # 👨🏿‍🦳
-  u'\U0001f575\U0000fe0f\U0000200d\U00002642\U0000fe0f',  # 🕵️‍♂️
-  u'\U0001f575\U0000200d\U00002642\U0000fe0f',  # 🕵‍♂️
-  u'\U0001f575\U0000fe0f\U0000200d\U00002642',  # 🕵️‍♂
-  u'\U0001f575\U0000200d\U00002642',  # 🕵‍♂
-  u'\U0001f575\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🕵🏿‍♂️
-  u'\U0001f575\U0001f3ff\U0000200d\U00002642',  # 🕵🏿‍♂
-  u'\U0001f575\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🕵🏻‍♂️
-  u'\U0001f575\U0001f3fb\U0000200d\U00002642',  # 🕵🏻‍♂
-  u'\U0001f575\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🕵🏾‍♂️
-  u'\U0001f575\U0001f3fe\U0000200d\U00002642',  # 🕵🏾‍♂
-  u'\U0001f575\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🕵🏼‍♂️
-  u'\U0001f575\U0001f3fc\U0000200d\U00002642',  # 🕵🏼‍♂
-  u'\U0001f575\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🕵🏽‍♂️
-  u'\U0001f575\U0001f3fd\U0000200d\U00002642',  # 🕵🏽‍♂
-  u'\U0001f9dd\U0000200d\U00002642\U0000fe0f',  # 🧝‍♂️
-  u'\U0001f9dd\U0000200d\U00002642',  # 🧝‍♂
-  u'\U0001f9dd\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧝🏿‍♂️
-  u'\U0001f9dd\U0001f3ff\U0000200d\U00002642',  # 🧝🏿‍♂
-  u'\U0001f9dd\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧝🏻‍♂️
-  u'\U0001f9dd\U0001f3fb\U0000200d\U00002642',  # 🧝🏻‍♂
-  u'\U0001f9dd\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧝🏾‍♂️
-  u'\U0001f9dd\U0001f3fe\U0000200d\U00002642',  # 🧝🏾‍♂
-  u'\U0001f9dd\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧝🏼‍♂️
-  u'\U0001f9dd\U0001f3fc\U0000200d\U00002642',  # 🧝🏼‍♂
-  u'\U0001f9dd\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧝🏽‍♂️
-  u'\U0001f9dd\U0001f3fd\U0000200d\U00002642',  # 🧝🏽‍♂
-  u'\U0001f926\U0000200d\U00002642\U0000fe0f',  # 🤦‍♂️
-  u'\U0001f926\U0000200d\U00002642',  # 🤦‍♂
-  u'\U0001f926\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤦🏿‍♂️
-  u'\U0001f926\U0001f3ff\U0000200d\U00002642',  # 🤦🏿‍♂
-  u'\U0001f926\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤦🏻‍♂️
-  u'\U0001f926\U0001f3fb\U0000200d\U00002642',  # 🤦🏻‍♂
-  u'\U0001f926\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤦🏾‍♂️
-  u'\U0001f926\U0001f3fe\U0000200d\U00002642',  # 🤦🏾‍♂
-  u'\U0001f926\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤦🏼‍♂️
-  u'\U0001f926\U0001f3fc\U0000200d\U00002642',  # 🤦🏼‍♂
-  u'\U0001f926\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤦🏽‍♂️
-  u'\U0001f926\U0001f3fd\U0000200d\U00002642',  # 🤦🏽‍♂
-  u'\U0001f468\U0000200d\U0001f3ed',  # 👨‍🏭
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f3ed',  # 👨🏿‍🏭
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f3ed',  # 👨🏻‍🏭
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f3ed',  # 👨🏾‍🏭
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f3ed',  # 👨🏼‍🏭
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f3ed',  # 👨🏽‍🏭
-  u'\U0001f9da\U0000200d\U00002642\U0000fe0f',  # 🧚‍♂️
-  u'\U0001f9da\U0000200d\U00002642',  # 🧚‍♂
-  u'\U0001f9da\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧚🏿‍♂️
-  u'\U0001f9da\U0001f3ff\U0000200d\U00002642',  # 🧚🏿‍♂
-  u'\U0001f9da\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧚🏻‍♂️
-  u'\U0001f9da\U0001f3fb\U0000200d\U00002642',  # 🧚🏻‍♂
-  u'\U0001f9da\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧚🏾‍♂️
-  u'\U0001f9da\U0001f3fe\U0000200d\U00002642',  # 🧚🏾‍♂
-  u'\U0001f9da\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧚🏼‍♂️
-  u'\U0001f9da\U0001f3fc\U0000200d\U00002642',  # 🧚🏼‍♂
-  u'\U0001f9da\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧚🏽‍♂️
-  u'\U0001f9da\U0001f3fd\U0000200d\U00002642',  # 🧚🏽‍♂
-  u'\U0001f468\U0000200d\U0001f33e',  # 👨‍🌾
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f33e',  # 👨🏿‍🌾
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f33e',  # 👨🏻‍🌾
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f33e',  # 👨🏾‍🌾
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f33e',  # 👨🏼‍🌾
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f33e',  # 👨🏽‍🌾
-  u'\U0001f468\U0000200d\U0001f37c',  # 👨‍🍼
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f37c',  # 👨🏿‍🍼
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f37c',  # 👨🏻‍🍼
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f37c',  # 👨🏾‍🍼
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f37c',  # 👨🏼‍🍼
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f37c',  # 👨🏽‍🍼
-  u'\U0001f468\U0000200d\U0001f692',  # 👨‍🚒
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f692',  # 👨🏿‍🚒
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f692',  # 👨🏻‍🚒
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f692',  # 👨🏾‍🚒
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f692',  # 👨🏼‍🚒
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f692',  # 👨🏽‍🚒
-  u'\U0001f64d\U0000200d\U00002642\U0000fe0f',  # 🙍‍♂️
-  u'\U0001f64d\U0000200d\U00002642',  # 🙍‍♂
-  u'\U0001f64d\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🙍🏿‍♂️
-  u'\U0001f64d\U0001f3ff\U0000200d\U00002642',  # 🙍🏿‍♂
-  u'\U0001f64d\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🙍🏻‍♂️
-  u'\U0001f64d\U0001f3fb\U0000200d\U00002642',  # 🙍🏻‍♂
-  u'\U0001f64d\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🙍🏾‍♂️
-  u'\U0001f64d\U0001f3fe\U0000200d\U00002642',  # 🙍🏾‍♂
-  u'\U0001f64d\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🙍🏼‍♂️
-  u'\U0001f64d\U0001f3fc\U0000200d\U00002642',  # 🙍🏼‍♂
-  u'\U0001f64d\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🙍🏽‍♂️
-  u'\U0001f64d\U0001f3fd\U0000200d\U00002642',  # 🙍🏽‍♂
-  u'\U0001f9de\U0000200d\U00002642\U0000fe0f',  # 🧞‍♂️
-  u'\U0001f9de\U0000200d\U00002642',  # 🧞‍♂
-  u'\U0001f645\U0000200d\U00002642\U0000fe0f',  # 🙅‍♂️
-  u'\U0001f645\U0000200d\U00002642',  # 🙅‍♂
-  u'\U0001f645\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🙅🏿‍♂️
-  u'\U0001f645\U0001f3ff\U0000200d\U00002642',  # 🙅🏿‍♂
-  u'\U0001f645\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🙅🏻‍♂️
-  u'\U0001f645\U0001f3fb\U0000200d\U00002642',  # 🙅🏻‍♂
-  u'\U0001f645\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🙅🏾‍♂️
-  u'\U0001f645\U0001f3fe\U0000200d\U00002642',  # 🙅🏾‍♂
-  u'\U0001f645\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🙅🏼‍♂️
-  u'\U0001f645\U0001f3fc\U0000200d\U00002642',  # 🙅🏼‍♂
-  u'\U0001f645\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🙅🏽‍♂️
-  u'\U0001f645\U0001f3fd\U0000200d\U00002642',  # 🙅🏽‍♂
-  u'\U0001f646\U0000200d\U00002642\U0000fe0f',  # 🙆‍♂️
-  u'\U0001f646\U0000200d\U00002642',  # 🙆‍♂
-  u'\U0001f646\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🙆🏿‍♂️
-  u'\U0001f646\U0001f3ff\U0000200d\U00002642',  # 🙆🏿‍♂
-  u'\U0001f646\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🙆🏻‍♂️
-  u'\U0001f646\U0001f3fb\U0000200d\U00002642',  # 🙆🏻‍♂
-  u'\U0001f646\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🙆🏾‍♂️
-  u'\U0001f646\U0001f3fe\U0000200d\U00002642',  # 🙆🏾‍♂
-  u'\U0001f646\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🙆🏼‍♂️
-  u'\U0001f646\U0001f3fc\U0000200d\U00002642',  # 🙆🏼‍♂
-  u'\U0001f646\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🙆🏽‍♂️
-  u'\U0001f646\U0001f3fd\U0000200d\U00002642',  # 🙆🏽‍♂
-  u'\U0001f487\U0000200d\U00002642\U0000fe0f',  # 💇‍♂️
-  u'\U0001f487\U0000200d\U00002642',  # 💇‍♂
-  u'\U0001f487\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 💇🏿‍♂️
-  u'\U0001f487\U0001f3ff\U0000200d\U00002642',  # 💇🏿‍♂
-  u'\U0001f487\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 💇🏻‍♂️
-  u'\U0001f487\U0001f3fb\U0000200d\U00002642',  # 💇🏻‍♂
-  u'\U0001f487\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 💇🏾‍♂️
-  u'\U0001f487\U0001f3fe\U0000200d\U00002642',  # 💇🏾‍♂
-  u'\U0001f487\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 💇🏼‍♂️
-  u'\U0001f487\U0001f3fc\U0000200d\U00002642',  # 💇🏼‍♂
-  u'\U0001f487\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 💇🏽‍♂️
-  u'\U0001f487\U0001f3fd\U0000200d\U00002642',  # 💇🏽‍♂
-  u'\U0001f486\U0000200d\U00002642\U0000fe0f',  # 💆‍♂️
-  u'\U0001f486\U0000200d\U00002642',  # 💆‍♂
-  u'\U0001f486\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 💆🏿‍♂️
-  u'\U0001f486\U0001f3ff\U0000200d\U00002642',  # 💆🏿‍♂
-  u'\U0001f486\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 💆🏻‍♂️
-  u'\U0001f486\U0001f3fb\U0000200d\U00002642',  # 💆🏻‍♂
-  u'\U0001f486\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 💆🏾‍♂️
-  u'\U0001f486\U0001f3fe\U0000200d\U00002642',  # 💆🏾‍♂
-  u'\U0001f486\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 💆🏼‍♂️
-  u'\U0001f486\U0001f3fc\U0000200d\U00002642',  # 💆🏼‍♂
-  u'\U0001f486\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 💆🏽‍♂️
-  u'\U0001f486\U0001f3fd\U0000200d\U00002642',  # 💆🏽‍♂
-  u'\U0001f3cc\U0000fe0f\U0000200d\U00002642\U0000fe0f',  # 🏌️‍♂️
-  u'\U0001f3cc\U0000200d\U00002642\U0000fe0f',  # 🏌‍♂️
-  u'\U0001f3cc\U0000fe0f\U0000200d\U00002642',  # 🏌️‍♂
-  u'\U0001f3cc\U0000200d\U00002642',  # 🏌‍♂
-  u'\U0001f3cc\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🏌🏿‍♂️
-  u'\U0001f3cc\U0001f3ff\U0000200d\U00002642',  # 🏌🏿‍♂
-  u'\U0001f3cc\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🏌🏻‍♂️
-  u'\U0001f3cc\U0001f3fb\U0000200d\U00002642',  # 🏌🏻‍♂
-  u'\U0001f3cc\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🏌🏾‍♂️
-  u'\U0001f3cc\U0001f3fe\U0000200d\U00002642',  # 🏌🏾‍♂
-  u'\U0001f3cc\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🏌🏼‍♂️
-  u'\U0001f3cc\U0001f3fc\U0000200d\U00002642',  # 🏌🏼‍♂
-  u'\U0001f3cc\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🏌🏽‍♂️
-  u'\U0001f3cc\U0001f3fd\U0000200d\U00002642',  # 🏌🏽‍♂
-  u'\U0001f482\U0000200d\U00002642\U0000fe0f',  # 💂‍♂️
-  u'\U0001f482\U0000200d\U00002642',  # 💂‍♂
-  u'\U0001f482\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 💂🏿‍♂️
-  u'\U0001f482\U0001f3ff\U0000200d\U00002642',  # 💂🏿‍♂
-  u'\U0001f482\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 💂🏻‍♂️
-  u'\U0001f482\U0001f3fb\U0000200d\U00002642',  # 💂🏻‍♂
-  u'\U0001f482\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 💂🏾‍♂️
-  u'\U0001f482\U0001f3fe\U0000200d\U00002642',  # 💂🏾‍♂
-  u'\U0001f482\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 💂🏼‍♂️
-  u'\U0001f482\U0001f3fc\U0000200d\U00002642',  # 💂🏼‍♂
-  u'\U0001f482\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 💂🏽‍♂️
-  u'\U0001f482\U0001f3fd\U0000200d\U00002642',  # 💂🏽‍♂
-  u'\U0001f468\U0000200d\U00002695\U0000fe0f',  # 👨‍⚕️
-  u'\U0001f468\U0000200d\U00002695',  # 👨‍⚕
-  u'\U0001f468\U0001f3ff\U0000200d\U00002695\U0000fe0f',  # 👨🏿‍⚕️
-  u'\U0001f468\U0001f3ff\U0000200d\U00002695',  # 👨🏿‍⚕
-  u'\U0001f468\U0001f3fb\U0000200d\U00002695\U0000fe0f',  # 👨🏻‍⚕️
-  u'\U0001f468\U0001f3fb\U0000200d\U00002695',  # 👨🏻‍⚕
-  u'\U0001f468\U0001f3fe\U0000200d\U00002695\U0000fe0f',  # 👨🏾‍⚕️
-  u'\U0001f468\U0001f3fe\U0000200d\U00002695',  # 👨🏾‍⚕
-  u'\U0001f468\U0001f3fc\U0000200d\U00002695\U0000fe0f',  # 👨🏼‍⚕️
-  u'\U0001f468\U0001f3fc\U0000200d\U00002695',  # 👨🏼‍⚕
-  u'\U0001f468\U0001f3fd\U0000200d\U00002695\U0000fe0f',  # 👨🏽‍⚕️
-  u'\U0001f468\U0001f3fd\U0000200d\U00002695',  # 👨🏽‍⚕
-  u'\U0001f9d8\U0000200d\U00002642\U0000fe0f',  # 🧘‍♂️
-  u'\U0001f9d8\U0000200d\U00002642',  # 🧘‍♂
-  u'\U0001f9d8\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧘🏿‍♂️
-  u'\U0001f9d8\U0001f3ff\U0000200d\U00002642',  # 🧘🏿‍♂
-  u'\U0001f9d8\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧘🏻‍♂️
-  u'\U0001f9d8\U0001f3fb\U0000200d\U00002642',  # 🧘🏻‍♂
-  u'\U0001f9d8\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧘🏾‍♂️
-  u'\U0001f9d8\U0001f3fe\U0000200d\U00002642',  # 🧘🏾‍♂
-  u'\U0001f9d8\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧘🏼‍♂️
-  u'\U0001f9d8\U0001f3fc\U0000200d\U00002642',  # 🧘🏼‍♂
-  u'\U0001f9d8\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧘🏽‍♂️
-  u'\U0001f9d8\U0001f3fd\U0000200d\U00002642',  # 🧘🏽‍♂
-  u'\U0001f468\U0000200d\U0001f9bd',  # 👨‍🦽
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9bd',  # 👨🏿‍🦽
-  u'\U0001f468\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👨‍🦽‍➡️
-  u'\U0001f468\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👨‍🦽‍➡
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👨🏿‍🦽‍➡️
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👨🏿‍🦽‍➡
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👨🏻‍🦽‍➡️
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👨🏻‍🦽‍➡
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👨🏾‍🦽‍➡️
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👨🏾‍🦽‍➡
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👨🏼‍🦽‍➡️
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👨🏼‍🦽‍➡
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👨🏽‍🦽‍➡️
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👨🏽‍🦽‍➡
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9bd',  # 👨🏻‍🦽
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9bd',  # 👨🏾‍🦽
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9bd',  # 👨🏼‍🦽
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9bd',  # 👨🏽‍🦽
-  u'\U0001f468\U0000200d\U0001f9bc',  # 👨‍🦼
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9bc',  # 👨🏿‍🦼
-  u'\U0001f468\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👨‍🦼‍➡️
-  u'\U0001f468\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👨‍🦼‍➡
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👨🏿‍🦼‍➡️
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👨🏿‍🦼‍➡
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👨🏻‍🦼‍➡️
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👨🏻‍🦼‍➡
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👨🏾‍🦼‍➡️
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👨🏾‍🦼‍➡
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👨🏼‍🦼‍➡️
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👨🏼‍🦼‍➡
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👨🏽‍🦼‍➡️
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👨🏽‍🦼‍➡
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9bc',  # 👨🏻‍🦼
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9bc',  # 👨🏾‍🦼
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9bc',  # 👨🏼‍🦼
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9bc',  # 👨🏽‍🦼
-  u'\U0001f9d6\U0000200d\U00002642\U0000fe0f',  # 🧖‍♂️
-  u'\U0001f9d6\U0000200d\U00002642',  # 🧖‍♂
-  u'\U0001f9d6\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧖🏿‍♂️
-  u'\U0001f9d6\U0001f3ff\U0000200d\U00002642',  # 🧖🏿‍♂
-  u'\U0001f9d6\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧖🏻‍♂️
-  u'\U0001f9d6\U0001f3fb\U0000200d\U00002642',  # 🧖🏻‍♂
-  u'\U0001f9d6\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧖🏾‍♂️
-  u'\U0001f9d6\U0001f3fe\U0000200d\U00002642',  # 🧖🏾‍♂
-  u'\U0001f9d6\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧖🏼‍♂️
-  u'\U0001f9d6\U0001f3fc\U0000200d\U00002642',  # 🧖🏼‍♂
-  u'\U0001f9d6\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧖🏽‍♂️
-  u'\U0001f9d6\U0001f3fd\U0000200d\U00002642',  # 🧖🏽‍♂
-  u'\U0001f935\U0000200d\U00002642\U0000fe0f',  # 🤵‍♂️
-  u'\U0001f935\U0000200d\U00002642',  # 🤵‍♂
-  u'\U0001f935\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤵🏿‍♂️
-  u'\U0001f935\U0001f3ff\U0000200d\U00002642',  # 🤵🏿‍♂
-  u'\U0001f935\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤵🏻‍♂️
-  u'\U0001f935\U0001f3fb\U0000200d\U00002642',  # 🤵🏻‍♂
-  u'\U0001f935\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤵🏾‍♂️
-  u'\U0001f935\U0001f3fe\U0000200d\U00002642',  # 🤵🏾‍♂
-  u'\U0001f935\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤵🏼‍♂️
-  u'\U0001f935\U0001f3fc\U0000200d\U00002642',  # 🤵🏼‍♂
-  u'\U0001f935\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤵🏽‍♂️
-  u'\U0001f935\U0001f3fd\U0000200d\U00002642',  # 🤵🏽‍♂
-  u'\U0001f468\U0000200d\U00002696\U0000fe0f',  # 👨‍⚖️
-  u'\U0001f468\U0000200d\U00002696',  # 👨‍⚖
-  u'\U0001f468\U0001f3ff\U0000200d\U00002696\U0000fe0f',  # 👨🏿‍⚖️
-  u'\U0001f468\U0001f3ff\U0000200d\U00002696',  # 👨🏿‍⚖
-  u'\U0001f468\U0001f3fb\U0000200d\U00002696\U0000fe0f',  # 👨🏻‍⚖️
-  u'\U0001f468\U0001f3fb\U0000200d\U00002696',  # 👨🏻‍⚖
-  u'\U0001f468\U0001f3fe\U0000200d\U00002696\U0000fe0f',  # 👨🏾‍⚖️
-  u'\U0001f468\U0001f3fe\U0000200d\U00002696',  # 👨🏾‍⚖
-  u'\U0001f468\U0001f3fc\U0000200d\U00002696\U0000fe0f',  # 👨🏼‍⚖️
-  u'\U0001f468\U0001f3fc\U0000200d\U00002696',  # 👨🏼‍⚖
-  u'\U0001f468\U0001f3fd\U0000200d\U00002696\U0000fe0f',  # 👨🏽‍⚖️
-  u'\U0001f468\U0001f3fd\U0000200d\U00002696',  # 👨🏽‍⚖
-  u'\U0001f939\U0000200d\U00002642\U0000fe0f',  # 🤹‍♂️
-  u'\U0001f939\U0000200d\U00002642',  # 🤹‍♂
-  u'\U0001f939\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤹🏿‍♂️
-  u'\U0001f939\U0001f3ff\U0000200d\U00002642',  # 🤹🏿‍♂
-  u'\U0001f939\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤹🏻‍♂️
-  u'\U0001f939\U0001f3fb\U0000200d\U00002642',  # 🤹🏻‍♂
-  u'\U0001f939\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤹🏾‍♂️
-  u'\U0001f939\U0001f3fe\U0000200d\U00002642',  # 🤹🏾‍♂
-  u'\U0001f939\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤹🏼‍♂️
-  u'\U0001f939\U0001f3fc\U0000200d\U00002642',  # 🤹🏼‍♂
-  u'\U0001f939\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤹🏽‍♂️
-  u'\U0001f939\U0001f3fd\U0000200d\U00002642',  # 🤹🏽‍♂
-  u'\U0001f9ce\U0000200d\U00002642\U0000fe0f',  # 🧎‍♂️
-  u'\U0001f9ce\U0000200d\U00002642',  # 🧎‍♂
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧎🏿‍♂️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002642',  # 🧎🏿‍♂
-  u'\U0001f9ce\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎‍♂️‍➡️
-  u'\U0001f9ce\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🧎‍♂‍➡️
-  u'\U0001f9ce\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🧎‍♂️‍➡
-  u'\U0001f9ce\U0000200d\U00002642\U0000200d\U000027a1',  # 🧎‍♂‍➡
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏿‍♂️‍➡️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🧎🏿‍♂‍➡️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🧎🏿‍♂️‍➡
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1',  # 🧎🏿‍♂‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏻‍♂️‍➡️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🧎🏻‍♂‍➡️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🧎🏻‍♂️‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1',  # 🧎🏻‍♂‍➡
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏾‍♂️‍➡️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🧎🏾‍♂‍➡️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🧎🏾‍♂️‍➡
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1',  # 🧎🏾‍♂‍➡
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏼‍♂️‍➡️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🧎🏼‍♂‍➡️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🧎🏼‍♂️‍➡
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1',  # 🧎🏼‍♂‍➡
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏽‍♂️‍➡️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🧎🏽‍♂‍➡️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🧎🏽‍♂️‍➡
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1',  # 🧎🏽‍♂‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧎🏻‍♂️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002642',  # 🧎🏻‍♂
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧎🏾‍♂️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002642',  # 🧎🏾‍♂
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧎🏼‍♂️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002642',  # 🧎🏼‍♂
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧎🏽‍♂️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002642',  # 🧎🏽‍♂
-  u'\U0001f3cb\U0000fe0f\U0000200d\U00002642\U0000fe0f',  # 🏋️‍♂️
-  u'\U0001f3cb\U0000200d\U00002642\U0000fe0f',  # 🏋‍♂️
-  u'\U0001f3cb\U0000fe0f\U0000200d\U00002642',  # 🏋️‍♂
-  u'\U0001f3cb\U0000200d\U00002642',  # 🏋‍♂
-  u'\U0001f3cb\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🏋🏿‍♂️
-  u'\U0001f3cb\U0001f3ff\U0000200d\U00002642',  # 🏋🏿‍♂
-  u'\U0001f3cb\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🏋🏻‍♂️
-  u'\U0001f3cb\U0001f3fb\U0000200d\U00002642',  # 🏋🏻‍♂
-  u'\U0001f3cb\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🏋🏾‍♂️
-  u'\U0001f3cb\U0001f3fe\U0000200d\U00002642',  # 🏋🏾‍♂
-  u'\U0001f3cb\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🏋🏼‍♂️
-  u'\U0001f3cb\U0001f3fc\U0000200d\U00002642',  # 🏋🏼‍♂
-  u'\U0001f3cb\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🏋🏽‍♂️
-  u'\U0001f3cb\U0001f3fd\U0000200d\U00002642',  # 🏋🏽‍♂
-  u'\U0001f468\U0001f3fb',  # 👨🏻
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9b2',  # 👨🏻‍🦲
-  u'\U0001f9d4\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧔🏻‍♂️
-  u'\U0001f9d4\U0001f3fb\U0000200d\U00002642',  # 🧔🏻‍♂
-  u'\U0001f471\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 👱🏻‍♂️
-  u'\U0001f471\U0001f3fb\U0000200d\U00002642',  # 👱🏻‍♂
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9b1',  # 👨🏻‍🦱
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9b0',  # 👨🏻‍🦰
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9b3',  # 👨🏻‍🦳
-  u'\U0001f9d9\U0000200d\U00002642\U0000fe0f',  # 🧙‍♂️
-  u'\U0001f9d9\U0000200d\U00002642',  # 🧙‍♂
-  u'\U0001f9d9\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧙🏿‍♂️
-  u'\U0001f9d9\U0001f3ff\U0000200d\U00002642',  # 🧙🏿‍♂
-  u'\U0001f9d9\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧙🏻‍♂️
-  u'\U0001f9d9\U0001f3fb\U0000200d\U00002642',  # 🧙🏻‍♂
-  u'\U0001f9d9\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧙🏾‍♂️
-  u'\U0001f9d9\U0001f3fe\U0000200d\U00002642',  # 🧙🏾‍♂
-  u'\U0001f9d9\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧙🏼‍♂️
-  u'\U0001f9d9\U0001f3fc\U0000200d\U00002642',  # 🧙🏼‍♂
-  u'\U0001f9d9\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧙🏽‍♂️
-  u'\U0001f9d9\U0001f3fd\U0000200d\U00002642',  # 🧙🏽‍♂
-  u'\U0001f468\U0000200d\U0001f527',  # 👨‍🔧
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f527',  # 👨🏿‍🔧
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f527',  # 👨🏻‍🔧
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f527',  # 👨🏾‍🔧
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f527',  # 👨🏼‍🔧
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f527',  # 👨🏽‍🔧
-  u'\U0001f468\U0001f3fe',  # 👨🏾
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9b2',  # 👨🏾‍🦲
-  u'\U0001f9d4\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧔🏾‍♂️
-  u'\U0001f9d4\U0001f3fe\U0000200d\U00002642',  # 🧔🏾‍♂
-  u'\U0001f471\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 👱🏾‍♂️
-  u'\U0001f471\U0001f3fe\U0000200d\U00002642',  # 👱🏾‍♂
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9b1',  # 👨🏾‍🦱
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9b0',  # 👨🏾‍🦰
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9b3',  # 👨🏾‍🦳
-  u'\U0001f468\U0001f3fc',  # 👨🏼
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9b2',  # 👨🏼‍🦲
-  u'\U0001f9d4\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧔🏼‍♂️
-  u'\U0001f9d4\U0001f3fc\U0000200d\U00002642',  # 🧔🏼‍♂
-  u'\U0001f471\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 👱🏼‍♂️
-  u'\U0001f471\U0001f3fc\U0000200d\U00002642',  # 👱🏼‍♂
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9b1',  # 👨🏼‍🦱
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9b0',  # 👨🏼‍🦰
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9b3',  # 👨🏼‍🦳
-  u'\U0001f468\U0001f3fd',  # 👨🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9b2',  # 👨🏽‍🦲
-  u'\U0001f9d4\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧔🏽‍♂️
-  u'\U0001f9d4\U0001f3fd\U0000200d\U00002642',  # 🧔🏽‍♂
-  u'\U0001f471\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 👱🏽‍♂️
-  u'\U0001f471\U0001f3fd\U0000200d\U00002642',  # 👱🏽‍♂
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9b1',  # 👨🏽‍🦱
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9b0',  # 👨🏽‍🦰
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9b3',  # 👨🏽‍🦳
-  u'\U0001f6b5\U0000200d\U00002642\U0000fe0f',  # 🚵‍♂️
-  u'\U0001f6b5\U0000200d\U00002642',  # 🚵‍♂
-  u'\U0001f6b5\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🚵🏿‍♂️
-  u'\U0001f6b5\U0001f3ff\U0000200d\U00002642',  # 🚵🏿‍♂
-  u'\U0001f6b5\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🚵🏻‍♂️
-  u'\U0001f6b5\U0001f3fb\U0000200d\U00002642',  # 🚵🏻‍♂
-  u'\U0001f6b5\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🚵🏾‍♂️
-  u'\U0001f6b5\U0001f3fe\U0000200d\U00002642',  # 🚵🏾‍♂
-  u'\U0001f6b5\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🚵🏼‍♂️
-  u'\U0001f6b5\U0001f3fc\U0000200d\U00002642',  # 🚵🏼‍♂
-  u'\U0001f6b5\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🚵🏽‍♂️
-  u'\U0001f6b5\U0001f3fd\U0000200d\U00002642',  # 🚵🏽‍♂
-  u'\U0001f468\U0000200d\U0001f4bc',  # 👨‍💼
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f4bc',  # 👨🏿‍💼
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f4bc',  # 👨🏻‍💼
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f4bc',  # 👨🏾‍💼
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f4bc',  # 👨🏼‍💼
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f4bc',  # 👨🏽‍💼
-  u'\U0001f468\U0000200d\U00002708\U0000fe0f',  # 👨‍✈️
-  u'\U0001f468\U0000200d\U00002708',  # 👨‍✈
-  u'\U0001f468\U0001f3ff\U0000200d\U00002708\U0000fe0f',  # 👨🏿‍✈️
-  u'\U0001f468\U0001f3ff\U0000200d\U00002708',  # 👨🏿‍✈
-  u'\U0001f468\U0001f3fb\U0000200d\U00002708\U0000fe0f',  # 👨🏻‍✈️
-  u'\U0001f468\U0001f3fb\U0000200d\U00002708',  # 👨🏻‍✈
-  u'\U0001f468\U0001f3fe\U0000200d\U00002708\U0000fe0f',  # 👨🏾‍✈️
-  u'\U0001f468\U0001f3fe\U0000200d\U00002708',  # 👨🏾‍✈
-  u'\U0001f468\U0001f3fc\U0000200d\U00002708\U0000fe0f',  # 👨🏼‍✈️
-  u'\U0001f468\U0001f3fc\U0000200d\U00002708',  # 👨🏼‍✈
-  u'\U0001f468\U0001f3fd\U0000200d\U00002708\U0000fe0f',  # 👨🏽‍✈️
-  u'\U0001f468\U0001f3fd\U0000200d\U00002708',  # 👨🏽‍✈
-  u'\U0001f93e\U0000200d\U00002642\U0000fe0f',  # 🤾‍♂️
-  u'\U0001f93e\U0000200d\U00002642',  # 🤾‍♂
-  u'\U0001f93e\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤾🏿‍♂️
-  u'\U0001f93e\U0001f3ff\U0000200d\U00002642',  # 🤾🏿‍♂
-  u'\U0001f93e\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤾🏻‍♂️
-  u'\U0001f93e\U0001f3fb\U0000200d\U00002642',  # 🤾🏻‍♂
-  u'\U0001f93e\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤾🏾‍♂️
-  u'\U0001f93e\U0001f3fe\U0000200d\U00002642',  # 🤾🏾‍♂
-  u'\U0001f93e\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤾🏼‍♂️
-  u'\U0001f93e\U0001f3fc\U0000200d\U00002642',  # 🤾🏼‍♂
-  u'\U0001f93e\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤾🏽‍♂️
-  u'\U0001f93e\U0001f3fd\U0000200d\U00002642',  # 🤾🏽‍♂
-  u'\U0001f93d\U0000200d\U00002642\U0000fe0f',  # 🤽‍♂️
-  u'\U0001f93d\U0000200d\U00002642',  # 🤽‍♂
-  u'\U0001f93d\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤽🏿‍♂️
-  u'\U0001f93d\U0001f3ff\U0000200d\U00002642',  # 🤽🏿‍♂
-  u'\U0001f93d\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤽🏻‍♂️
-  u'\U0001f93d\U0001f3fb\U0000200d\U00002642',  # 🤽🏻‍♂
-  u'\U0001f93d\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤽🏾‍♂️
-  u'\U0001f93d\U0001f3fe\U0000200d\U00002642',  # 🤽🏾‍♂
-  u'\U0001f93d\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤽🏼‍♂️
-  u'\U0001f93d\U0001f3fc\U0000200d\U00002642',  # 🤽🏼‍♂
-  u'\U0001f93d\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤽🏽‍♂️
-  u'\U0001f93d\U0001f3fd\U0000200d\U00002642',  # 🤽🏽‍♂
-  u'\U0001f46e\U0000200d\U00002642\U0000fe0f',  # 👮‍♂️
-  u'\U0001f46e\U0000200d\U00002642',  # 👮‍♂
-  u'\U0001f46e\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 👮🏿‍♂️
-  u'\U0001f46e\U0001f3ff\U0000200d\U00002642',  # 👮🏿‍♂
-  u'\U0001f46e\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 👮🏻‍♂️
-  u'\U0001f46e\U0001f3fb\U0000200d\U00002642',  # 👮🏻‍♂
-  u'\U0001f46e\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 👮🏾‍♂️
-  u'\U0001f46e\U0001f3fe\U0000200d\U00002642',  # 👮🏾‍♂
-  u'\U0001f46e\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 👮🏼‍♂️
-  u'\U0001f46e\U0001f3fc\U0000200d\U00002642',  # 👮🏼‍♂
-  u'\U0001f46e\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 👮🏽‍♂️
-  u'\U0001f46e\U0001f3fd\U0000200d\U00002642',  # 👮🏽‍♂
-  u'\U0001f64e\U0000200d\U00002642\U0000fe0f',  # 🙎‍♂️
-  u'\U0001f64e\U0000200d\U00002642',  # 🙎‍♂
-  u'\U0001f64e\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🙎🏿‍♂️
-  u'\U0001f64e\U0001f3ff\U0000200d\U00002642',  # 🙎🏿‍♂
-  u'\U0001f64e\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🙎🏻‍♂️
-  u'\U0001f64e\U0001f3fb\U0000200d\U00002642',  # 🙎🏻‍♂
-  u'\U0001f64e\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🙎🏾‍♂️
-  u'\U0001f64e\U0001f3fe\U0000200d\U00002642',  # 🙎🏾‍♂
-  u'\U0001f64e\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🙎🏼‍♂️
-  u'\U0001f64e\U0001f3fc\U0000200d\U00002642',  # 🙎🏼‍♂
-  u'\U0001f64e\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🙎🏽‍♂️
-  u'\U0001f64e\U0001f3fd\U0000200d\U00002642',  # 🙎🏽‍♂
-  u'\U0001f64b\U0000200d\U00002642\U0000fe0f',  # 🙋‍♂️
-  u'\U0001f64b\U0000200d\U00002642',  # 🙋‍♂
-  u'\U0001f64b\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🙋🏿‍♂️
-  u'\U0001f64b\U0001f3ff\U0000200d\U00002642',  # 🙋🏿‍♂
-  u'\U0001f64b\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🙋🏻‍♂️
-  u'\U0001f64b\U0001f3fb\U0000200d\U00002642',  # 🙋🏻‍♂
-  u'\U0001f64b\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🙋🏾‍♂️
-  u'\U0001f64b\U0001f3fe\U0000200d\U00002642',  # 🙋🏾‍♂
-  u'\U0001f64b\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🙋🏼‍♂️
-  u'\U0001f64b\U0001f3fc\U0000200d\U00002642',  # 🙋🏼‍♂
-  u'\U0001f64b\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🙋🏽‍♂️
-  u'\U0001f64b\U0001f3fd\U0000200d\U00002642',  # 🙋🏽‍♂
-  u'\U0001f468\U0000200d\U0001f9b0',  # 👨‍🦰
-  u'\U0001f6a3\U0000200d\U00002642\U0000fe0f',  # 🚣‍♂️
-  u'\U0001f6a3\U0000200d\U00002642',  # 🚣‍♂
-  u'\U0001f6a3\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🚣🏿‍♂️
-  u'\U0001f6a3\U0001f3ff\U0000200d\U00002642',  # 🚣🏿‍♂
-  u'\U0001f6a3\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🚣🏻‍♂️
-  u'\U0001f6a3\U0001f3fb\U0000200d\U00002642',  # 🚣🏻‍♂
-  u'\U0001f6a3\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🚣🏾‍♂️
-  u'\U0001f6a3\U0001f3fe\U0000200d\U00002642',  # 🚣🏾‍♂
-  u'\U0001f6a3\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🚣🏼‍♂️
-  u'\U0001f6a3\U0001f3fc\U0000200d\U00002642',  # 🚣🏼‍♂
-  u'\U0001f6a3\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🚣🏽‍♂️
-  u'\U0001f6a3\U0001f3fd\U0000200d\U00002642',  # 🚣🏽‍♂
-  u'\U0001f3c3\U0000200d\U00002642\U0000fe0f',  # 🏃‍♂️
-  u'\U0001f3c3\U0000200d\U00002642',  # 🏃‍♂
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🏃🏿‍♂️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002642',  # 🏃🏿‍♂
-  u'\U0001f3c3\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃‍♂️‍➡️
-  u'\U0001f3c3\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🏃‍♂‍➡️
-  u'\U0001f3c3\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🏃‍♂️‍➡
-  u'\U0001f3c3\U0000200d\U00002642\U0000200d\U000027a1',  # 🏃‍♂‍➡
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏿‍♂️‍➡️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🏃🏿‍♂‍➡️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🏃🏿‍♂️‍➡
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1',  # 🏃🏿‍♂‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏻‍♂️‍➡️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🏃🏻‍♂‍➡️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🏃🏻‍♂️‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1',  # 🏃🏻‍♂‍➡
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏾‍♂️‍➡️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🏃🏾‍♂‍➡️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🏃🏾‍♂️‍➡
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1',  # 🏃🏾‍♂‍➡
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏼‍♂️‍➡️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🏃🏼‍♂‍➡️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🏃🏼‍♂️‍➡
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1',  # 🏃🏼‍♂‍➡
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏽‍♂️‍➡️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🏃🏽‍♂‍➡️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🏃🏽‍♂️‍➡
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1',  # 🏃🏽‍♂‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🏃🏻‍♂️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002642',  # 🏃🏻‍♂
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🏃🏾‍♂️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002642',  # 🏃🏾‍♂
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🏃🏼‍♂️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002642',  # 🏃🏼‍♂
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🏃🏽‍♂️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002642',  # 🏃🏽‍♂
-  u'\U0001f468\U0000200d\U0001f52c',  # 👨‍🔬
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f52c',  # 👨🏿‍🔬
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f52c',  # 👨🏻‍🔬
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f52c',  # 👨🏾‍🔬
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f52c',  # 👨🏼‍🔬
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f52c',  # 👨🏽‍🔬
-  u'\U0001f937\U0000200d\U00002642\U0000fe0f',  # 🤷‍♂️
-  u'\U0001f937\U0000200d\U00002642',  # 🤷‍♂
-  u'\U0001f937\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🤷🏿‍♂️
-  u'\U0001f937\U0001f3ff\U0000200d\U00002642',  # 🤷🏿‍♂
-  u'\U0001f937\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🤷🏻‍♂️
-  u'\U0001f937\U0001f3fb\U0000200d\U00002642',  # 🤷🏻‍♂
-  u'\U0001f937\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🤷🏾‍♂️
-  u'\U0001f937\U0001f3fe\U0000200d\U00002642',  # 🤷🏾‍♂
-  u'\U0001f937\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🤷🏼‍♂️
-  u'\U0001f937\U0001f3fc\U0000200d\U00002642',  # 🤷🏼‍♂
-  u'\U0001f937\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🤷🏽‍♂️
-  u'\U0001f937\U0001f3fd\U0000200d\U00002642',  # 🤷🏽‍♂
-  u'\U0001f468\U0000200d\U0001f3a4',  # 👨‍🎤
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f3a4',  # 👨🏿‍🎤
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f3a4',  # 👨🏻‍🎤
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f3a4',  # 👨🏾‍🎤
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f3a4',  # 👨🏼‍🎤
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f3a4',  # 👨🏽‍🎤
-  u'\U0001f9cd\U0000200d\U00002642\U0000fe0f',  # 🧍‍♂️
-  u'\U0001f9cd\U0000200d\U00002642',  # 🧍‍♂
-  u'\U0001f9cd\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧍🏿‍♂️
-  u'\U0001f9cd\U0001f3ff\U0000200d\U00002642',  # 🧍🏿‍♂
-  u'\U0001f9cd\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧍🏻‍♂️
-  u'\U0001f9cd\U0001f3fb\U0000200d\U00002642',  # 🧍🏻‍♂
-  u'\U0001f9cd\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧍🏾‍♂️
-  u'\U0001f9cd\U0001f3fe\U0000200d\U00002642',  # 🧍🏾‍♂
-  u'\U0001f9cd\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧍🏼‍♂️
-  u'\U0001f9cd\U0001f3fc\U0000200d\U00002642',  # 🧍🏼‍♂
-  u'\U0001f9cd\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧍🏽‍♂️
-  u'\U0001f9cd\U0001f3fd\U0000200d\U00002642',  # 🧍🏽‍♂
-  u'\U0001f468\U0000200d\U0001f393',  # 👨‍🎓
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f393',  # 👨🏿‍🎓
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f393',  # 👨🏻‍🎓
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f393',  # 👨🏾‍🎓
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f393',  # 👨🏼‍🎓
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f393',  # 👨🏽‍🎓
-  u'\U0001f9b8\U0000200d\U00002642\U0000fe0f',  # 🦸‍♂️
-  u'\U0001f9b8\U0000200d\U00002642',  # 🦸‍♂
-  u'\U0001f9b8\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🦸🏿‍♂️
-  u'\U0001f9b8\U0001f3ff\U0000200d\U00002642',  # 🦸🏿‍♂
-  u'\U0001f9b8\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🦸🏻‍♂️
-  u'\U0001f9b8\U0001f3fb\U0000200d\U00002642',  # 🦸🏻‍♂
-  u'\U0001f9b8\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🦸🏾‍♂️
-  u'\U0001f9b8\U0001f3fe\U0000200d\U00002642',  # 🦸🏾‍♂
-  u'\U0001f9b8\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🦸🏼‍♂️
-  u'\U0001f9b8\U0001f3fc\U0000200d\U00002642',  # 🦸🏼‍♂
-  u'\U0001f9b8\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🦸🏽‍♂️
-  u'\U0001f9b8\U0001f3fd\U0000200d\U00002642',  # 🦸🏽‍♂
-  u'\U0001f9b9\U0000200d\U00002642\U0000fe0f',  # 🦹‍♂️
-  u'\U0001f9b9\U0000200d\U00002642',  # 🦹‍♂
-  u'\U0001f9b9\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🦹🏿‍♂️
-  u'\U0001f9b9\U0001f3ff\U0000200d\U00002642',  # 🦹🏿‍♂
-  u'\U0001f9b9\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🦹🏻‍♂️
-  u'\U0001f9b9\U0001f3fb\U0000200d\U00002642',  # 🦹🏻‍♂
-  u'\U0001f9b9\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🦹🏾‍♂️
-  u'\U0001f9b9\U0001f3fe\U0000200d\U00002642',  # 🦹🏾‍♂
-  u'\U0001f9b9\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🦹🏼‍♂️
-  u'\U0001f9b9\U0001f3fc\U0000200d\U00002642',  # 🦹🏼‍♂
-  u'\U0001f9b9\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🦹🏽‍♂️
-  u'\U0001f9b9\U0001f3fd\U0000200d\U00002642',  # 🦹🏽‍♂
-  u'\U0001f3c4\U0000200d\U00002642\U0000fe0f',  # 🏄‍♂️
-  u'\U0001f3c4\U0000200d\U00002642',  # 🏄‍♂
-  u'\U0001f3c4\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🏄🏿‍♂️
-  u'\U0001f3c4\U0001f3ff\U0000200d\U00002642',  # 🏄🏿‍♂
-  u'\U0001f3c4\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🏄🏻‍♂️
-  u'\U0001f3c4\U0001f3fb\U0000200d\U00002642',  # 🏄🏻‍♂
-  u'\U0001f3c4\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🏄🏾‍♂️
-  u'\U0001f3c4\U0001f3fe\U0000200d\U00002642',  # 🏄🏾‍♂
-  u'\U0001f3c4\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🏄🏼‍♂️
-  u'\U0001f3c4\U0001f3fc\U0000200d\U00002642',  # 🏄🏼‍♂
-  u'\U0001f3c4\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🏄🏽‍♂️
-  u'\U0001f3c4\U0001f3fd\U0000200d\U00002642',  # 🏄🏽‍♂
-  u'\U0001f3ca\U0000200d\U00002642\U0000fe0f',  # 🏊‍♂️
-  u'\U0001f3ca\U0000200d\U00002642',  # 🏊‍♂
-  u'\U0001f3ca\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🏊🏿‍♂️
-  u'\U0001f3ca\U0001f3ff\U0000200d\U00002642',  # 🏊🏿‍♂
-  u'\U0001f3ca\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🏊🏻‍♂️
-  u'\U0001f3ca\U0001f3fb\U0000200d\U00002642',  # 🏊🏻‍♂
-  u'\U0001f3ca\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🏊🏾‍♂️
-  u'\U0001f3ca\U0001f3fe\U0000200d\U00002642',  # 🏊🏾‍♂
-  u'\U0001f3ca\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🏊🏼‍♂️
-  u'\U0001f3ca\U0001f3fc\U0000200d\U00002642',  # 🏊🏼‍♂
-  u'\U0001f3ca\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🏊🏽‍♂️
-  u'\U0001f3ca\U0001f3fd\U0000200d\U00002642',  # 🏊🏽‍♂
-  u'\U0001f468\U0000200d\U0001f3eb',  # 👨‍🏫
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f3eb',  # 👨🏿‍🏫
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f3eb',  # 👨🏻‍🏫
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f3eb',  # 👨🏾‍🏫
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f3eb',  # 👨🏼‍🏫
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f3eb',  # 👨🏽‍🏫
-  u'\U0001f468\U0000200d\U0001f4bb',  # 👨‍💻
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f4bb',  # 👨🏿‍💻
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f4bb',  # 👨🏻‍💻
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f4bb',  # 👨🏾‍💻
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f4bb',  # 👨🏼‍💻
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f4bb',  # 👨🏽‍💻
-  u'\U0001f481\U0000200d\U00002642\U0000fe0f',  # 💁‍♂️
-  u'\U0001f481\U0000200d\U00002642',  # 💁‍♂
-  u'\U0001f481\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 💁🏿‍♂️
-  u'\U0001f481\U0001f3ff\U0000200d\U00002642',  # 💁🏿‍♂
-  u'\U0001f481\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 💁🏻‍♂️
-  u'\U0001f481\U0001f3fb\U0000200d\U00002642',  # 💁🏻‍♂
-  u'\U0001f481\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 💁🏾‍♂️
-  u'\U0001f481\U0001f3fe\U0000200d\U00002642',  # 💁🏾‍♂
-  u'\U0001f481\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 💁🏼‍♂️
-  u'\U0001f481\U0001f3fc\U0000200d\U00002642',  # 💁🏼‍♂
-  u'\U0001f481\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 💁🏽‍♂️
-  u'\U0001f481\U0001f3fd\U0000200d\U00002642',  # 💁🏽‍♂
-  u'\U0001f9db\U0000200d\U00002642\U0000fe0f',  # 🧛‍♂️
-  u'\U0001f9db\U0000200d\U00002642',  # 🧛‍♂
-  u'\U0001f9db\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧛🏿‍♂️
-  u'\U0001f9db\U0001f3ff\U0000200d\U00002642',  # 🧛🏿‍♂
-  u'\U0001f9db\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧛🏻‍♂️
-  u'\U0001f9db\U0001f3fb\U0000200d\U00002642',  # 🧛🏻‍♂
-  u'\U0001f9db\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧛🏾‍♂️
-  u'\U0001f9db\U0001f3fe\U0000200d\U00002642',  # 🧛🏾‍♂
-  u'\U0001f9db\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧛🏼‍♂️
-  u'\U0001f9db\U0001f3fc\U0000200d\U00002642',  # 🧛🏼‍♂
-  u'\U0001f9db\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧛🏽‍♂️
-  u'\U0001f9db\U0001f3fd\U0000200d\U00002642',  # 🧛🏽‍♂
-  u'\U0001f6b6\U0000200d\U00002642\U0000fe0f',  # 🚶‍♂️
-  u'\U0001f6b6\U0000200d\U00002642',  # 🚶‍♂
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🚶🏿‍♂️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002642',  # 🚶🏿‍♂
-  u'\U0001f6b6\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶‍♂️‍➡️
-  u'\U0001f6b6\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🚶‍♂‍➡️
-  u'\U0001f6b6\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🚶‍♂️‍➡
-  u'\U0001f6b6\U0000200d\U00002642\U0000200d\U000027a1',  # 🚶‍♂‍➡
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏿‍♂️‍➡️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🚶🏿‍♂‍➡️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🚶🏿‍♂️‍➡
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1',  # 🚶🏿‍♂‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏻‍♂️‍➡️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🚶🏻‍♂‍➡️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🚶🏻‍♂️‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1',  # 🚶🏻‍♂‍➡
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏾‍♂️‍➡️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🚶🏾‍♂‍➡️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🚶🏾‍♂️‍➡
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1',  # 🚶🏾‍♂‍➡
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏼‍♂️‍➡️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🚶🏼‍♂‍➡️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🚶🏼‍♂️‍➡
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1',  # 🚶🏼‍♂‍➡
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏽‍♂️‍➡️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f',  # 🚶🏽‍♂‍➡️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1',  # 🚶🏽‍♂️‍➡
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1',  # 🚶🏽‍♂‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🚶🏻‍♂️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002642',  # 🚶🏻‍♂
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🚶🏾‍♂️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002642',  # 🚶🏾‍♂
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🚶🏼‍♂️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002642',  # 🚶🏼‍♂
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🚶🏽‍♂️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002642',  # 🚶🏽‍♂
-  u'\U0001f473\U0000200d\U00002642\U0000fe0f',  # 👳‍♂️
-  u'\U0001f473\U0000200d\U00002642',  # 👳‍♂
-  u'\U0001f473\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 👳🏿‍♂️
-  u'\U0001f473\U0001f3ff\U0000200d\U00002642',  # 👳🏿‍♂
-  u'\U0001f473\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 👳🏻‍♂️
-  u'\U0001f473\U0001f3fb\U0000200d\U00002642',  # 👳🏻‍♂
-  u'\U0001f473\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 👳🏾‍♂️
-  u'\U0001f473\U0001f3fe\U0000200d\U00002642',  # 👳🏾‍♂
-  u'\U0001f473\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 👳🏼‍♂️
-  u'\U0001f473\U0001f3fc\U0000200d\U00002642',  # 👳🏼‍♂
-  u'\U0001f473\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 👳🏽‍♂️
-  u'\U0001f473\U0001f3fd\U0000200d\U00002642',  # 👳🏽‍♂
-  u'\U0001f468\U0000200d\U0001f9b3',  # 👨‍🦳
-  u'\U0001f470\U0000200d\U00002642\U0000fe0f',  # 👰‍♂️
-  u'\U0001f470\U0000200d\U00002642',  # 👰‍♂
-  u'\U0001f470\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 👰🏿‍♂️
-  u'\U0001f470\U0001f3ff\U0000200d\U00002642',  # 👰🏿‍♂
-  u'\U0001f470\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 👰🏻‍♂️
-  u'\U0001f470\U0001f3fb\U0000200d\U00002642',  # 👰🏻‍♂
-  u'\U0001f470\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 👰🏾‍♂️
-  u'\U0001f470\U0001f3fe\U0000200d\U00002642',  # 👰🏾‍♂
-  u'\U0001f470\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 👰🏼‍♂️
-  u'\U0001f470\U0001f3fc\U0000200d\U00002642',  # 👰🏼‍♂
-  u'\U0001f470\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 👰🏽‍♂️
-  u'\U0001f470\U0001f3fd\U0000200d\U00002642',  # 👰🏽‍♂
-  u'\U0001f468\U0000200d\U0001f9af',  # 👨‍🦯
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9af',  # 👨🏿‍🦯
-  u'\U0001f468\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👨‍🦯‍➡️
-  u'\U0001f468\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👨‍🦯‍➡
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👨🏿‍🦯‍➡️
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👨🏿‍🦯‍➡
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👨🏻‍🦯‍➡️
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👨🏻‍🦯‍➡
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👨🏾‍🦯‍➡️
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👨🏾‍🦯‍➡
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👨🏼‍🦯‍➡️
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👨🏼‍🦯‍➡
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👨🏽‍🦯‍➡️
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👨🏽‍🦯‍➡
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f9af',  # 👨🏻‍🦯
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f9af',  # 👨🏾‍🦯
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f9af',  # 👨🏼‍🦯
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f9af',  # 👨🏽‍🦯
-  u'\U0001f9df\U0000200d\U00002642\U0000fe0f',  # 🧟‍♂️
-  u'\U0001f9df\U0000200d\U00002642',  # 🧟‍♂
-  u'\U0001f96d',  # 🥭
-  u'\U0001f570\U0000fe0f',  # 🕰️
-  u'\U0001f570',  # 🕰
-  u'\U0001f9bd',  # 🦽
-  u'\U0001f45e',  # 👞
-  u'\U0001f5fe',  # 🗾
-  u'\U0001f341',  # 🍁
-  u'\U0001fa87',  # 🪇
-  u'\U0001f94b',  # 🥋
-  u'\U0001f9c9',  # 🧉
-  u'\U0001f356',  # 🍖
-  u'\U0001f9d1\U0000200d\U0001f527',  # 🧑‍🔧
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f527',  # 🧑🏿‍🔧
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f527',  # 🧑🏻‍🔧
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f527',  # 🧑🏾‍🔧
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f527',  # 🧑🏼‍🔧
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f527',  # 🧑🏽‍🔧
-  u'\U0001f9be',  # 🦾
-  u'\U0001f9bf',  # 🦿
-  u'\U00002695\U0000fe0f',  # ⚕️
-  u'\U00002695',  # ⚕
-  u'\U0001f3fe',  # 🏾
-  u'\U0001f3fc',  # 🏼
-  u'\U0001f3fd',  # 🏽
-  u'\U0001f4e3',  # 📣
-  u'\U0001f348',  # 🍈
-  u'\U0001fae0',  # 🫠
-  u'\U0001f4dd',  # 📝
-  u'\U0001f46c',  # 👬
-  u'\U0001f46c\U0001f3ff',  # 👬🏿
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👨🏿‍🤝‍👨🏻
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👨🏿‍🤝‍👨🏾
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👨🏿‍🤝‍👨🏼
-  u'\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👨🏿‍🤝‍👨🏽
-  u'\U0001f46c\U0001f3fb',  # 👬🏻
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👨🏻‍🤝‍👨🏿
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👨🏻‍🤝‍👨🏾
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👨🏻‍🤝‍👨🏼
-  u'\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👨🏻‍🤝‍👨🏽
-  u'\U0001f46c\U0001f3fe',  # 👬🏾
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👨🏾‍🤝‍👨🏿
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👨🏾‍🤝‍👨🏻
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👨🏾‍🤝‍👨🏼
-  u'\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👨🏾‍🤝‍👨🏽
-  u'\U0001f46c\U0001f3fc',  # 👬🏼
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👨🏼‍🤝‍👨🏿
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👨🏼‍🤝‍👨🏻
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👨🏼‍🤝‍👨🏾
-  u'\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👨🏼‍🤝‍👨🏽
-  u'\U0001f46c\U0001f3fd',  # 👬🏽
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👨🏽‍🤝‍👨🏿
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👨🏽‍🤝‍👨🏻
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👨🏽‍🤝‍👨🏾
-  u'\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👨🏽‍🤝‍👨🏼
-  u'\U0001f46f\U0000200d\U00002642\U0000fe0f',  # 👯‍♂️
-  u'\U0001f46f\U0000200d\U00002642',  # 👯‍♂
-  u'\U0001f93c\U0000200d\U00002642\U0000fe0f',  # 🤼‍♂️
-  u'\U0001f93c\U0000200d\U00002642',  # 🤼‍♂
-  u'\U00002764\U0000fe0f\U0000200d\U0001fa79',  # ❤️‍🩹
-  u'\U00002764\U0000200d\U0001fa79',  # ❤‍🩹
-  u'\U0001f54e',  # 🕎
-  u'\U0001f6b9',  # 🚹
-  u'\U0001f9dc\U0000200d\U00002640\U0000fe0f',  # 🧜‍♀️
-  u'\U0001f9dc\U0000200d\U00002640',  # 🧜‍♀
-  u'\U0001f9dc\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧜🏿‍♀️
-  u'\U0001f9dc\U0001f3ff\U0000200d\U00002640',  # 🧜🏿‍♀
-  u'\U0001f9dc\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧜🏻‍♀️
-  u'\U0001f9dc\U0001f3fb\U0000200d\U00002640',  # 🧜🏻‍♀
-  u'\U0001f9dc\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧜🏾‍♀️
-  u'\U0001f9dc\U0001f3fe\U0000200d\U00002640',  # 🧜🏾‍♀
-  u'\U0001f9dc\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧜🏼‍♀️
-  u'\U0001f9dc\U0001f3fc\U0000200d\U00002640',  # 🧜🏼‍♀
-  u'\U0001f9dc\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧜🏽‍♀️
-  u'\U0001f9dc\U0001f3fd\U0000200d\U00002640',  # 🧜🏽‍♀
-  u'\U0001f9dc\U0000200d\U00002642\U0000fe0f',  # 🧜‍♂️
-  u'\U0001f9dc\U0000200d\U00002642',  # 🧜‍♂
-  u'\U0001f9dc\U0001f3ff\U0000200d\U00002642\U0000fe0f',  # 🧜🏿‍♂️
-  u'\U0001f9dc\U0001f3ff\U0000200d\U00002642',  # 🧜🏿‍♂
-  u'\U0001f9dc\U0001f3fb\U0000200d\U00002642\U0000fe0f',  # 🧜🏻‍♂️
-  u'\U0001f9dc\U0001f3fb\U0000200d\U00002642',  # 🧜🏻‍♂
-  u'\U0001f9dc\U0001f3fe\U0000200d\U00002642\U0000fe0f',  # 🧜🏾‍♂️
-  u'\U0001f9dc\U0001f3fe\U0000200d\U00002642',  # 🧜🏾‍♂
-  u'\U0001f9dc\U0001f3fc\U0000200d\U00002642\U0000fe0f',  # 🧜🏼‍♂️
-  u'\U0001f9dc\U0001f3fc\U0000200d\U00002642',  # 🧜🏼‍♂
-  u'\U0001f9dc\U0001f3fd\U0000200d\U00002642\U0000fe0f',  # 🧜🏽‍♂️
-  u'\U0001f9dc\U0001f3fd\U0000200d\U00002642',  # 🧜🏽‍♂
-  u'\U0001f9dc',  # 🧜
-  u'\U0001f9dc\U0001f3ff',  # 🧜🏿
-  u'\U0001f9dc\U0001f3fb',  # 🧜🏻
-  u'\U0001f9dc\U0001f3fe',  # 🧜🏾
-  u'\U0001f9dc\U0001f3fc',  # 🧜🏼
-  u'\U0001f9dc\U0001f3fd',  # 🧜🏽
-  u'\U0001f687',  # 🚇
-  u'\U0001f9a0',  # 🦠
-  u'\U0001f3a4',  # 🎤
-  u'\U0001f52c',  # 🔬
-  u'\U0001f595',  # 🖕
-  u'\U0001f595\U0001f3ff',  # 🖕🏿
-  u'\U0001f595\U0001f3fb',  # 🖕🏻
-  u'\U0001f595\U0001f3fe',  # 🖕🏾
-  u'\U0001f595\U0001f3fc',  # 🖕🏼
-  u'\U0001f595\U0001f3fd',  # 🖕🏽
-  u'\U0001fa96',  # 🪖
-  u'\U0001f396\U0000fe0f',  # 🎖️
-  u'\U0001f396',  # 🎖
-  u'\U0001f30c',  # 🌌
-  u'\U0001f690',  # 🚐
-  u'\U00002796',  # ➖
-  u'\U0001fa9e',  # 🪞
-  u'\U0001faa9',  # 🪩
-  u'\U0001f5ff',  # 🗿
-  u'\U0001f4f1',  # 📱
-  u'\U0001f4f4',  # 📴
-  u'\U0001f4f2',  # 📲
-  u'\U0001f911',  # 🤑
-  u'\U0001f4b0',  # 💰
-  u'\U0001f4b8',  # 💸
-  u'\U0001f412',  # 🐒
-  u'\U0001f435',  # 🐵
-  u'\U0001f69d',  # 🚝
-  u'\U0001f96e',  # 🥮
-  u'\U0001f391',  # 🎑
-  u'\U0001face',  # 🫎
-  u'\U0001f54c',  # 🕌
-  u'\U0001f99f',  # 🦟
-  u'\U0001f6e5\U0000fe0f',  # 🛥️
-  u'\U0001f6e5',  # 🛥
-  u'\U0001f6f5',  # 🛵
-  u'\U0001f3cd\U0000fe0f',  # 🏍️
-  u'\U0001f3cd',  # 🏍
-  u'\U0001f9bc',  # 🦼
-  u'\U0001f6e3\U0000fe0f',  # 🛣️
-  u'\U0001f6e3',  # 🛣
-  u'\U0001f5fb',  # 🗻
-  u'\U000026f0\U0000fe0f',  # ⛰️
-  u'\U000026f0',  # ⛰
-  u'\U0001f6a0',  # 🚠
-  u'\U0001f69e',  # 🚞
-  u'\U0001f401',  # 🐁
-  u'\U0001f42d',  # 🐭
-  u'\U0001faa4',  # 🪤
-  u'\U0001f444',  # 👄
-  u'\U0001f3a5',  # 🎥
-  u'\U00002716\U0000fe0f',  # ✖️
-  u'\U00002716',  # ✖
-  u'\U0001f344',  # 🍄
-  u'\U0001f3b9',  # 🎹
-  u'\U0001f3b5',  # 🎵
-  u'\U0001f3b6',  # 🎶
-  u'\U0001f3bc',  # 🎼
-  u'\U0001f507',  # 🔇
-  u'\U0001f485',  # 💅
-  u'\U0001f485\U0001f3ff',  # 💅🏿
-  u'\U0001f485\U0001f3fb',  # 💅🏻
-  u'\U0001f485\U0001f3fe',  # 💅🏾
-  u'\U0001f485\U0001f3fc',  # 💅🏼
-  u'\U0001f485\U0001f3fd',  # 💅🏽
-  u'\U0001f4db',  # 📛
-  u'\U0001f3de\U0000fe0f',  # 🏞️
-  u'\U0001f3de',  # 🏞
-  u'\U0001f922',  # 🤢
-  u'\U0001f9ff',  # 🧿
-  u'\U0001f454',  # 👔
-  u'\U0001f913',  # 🤓
-  u'\U0001faba',  # 🪺
-  u'\U0001fa86',  # 🪆
-  u'\U0001f610',  # 😐
-  u'\U0001f311',  # 🌑
-  u'\U0001f31a',  # 🌚
-  u'\U0001f4f0',  # 📰
-  u'\U000023ed\U0000fe0f',  # ⏭️
-  u'\U000023ed',  # ⏭
-  u'\U0001f303',  # 🌃
-  u'\U0001f564',  # 🕤
-  u'\U0001f558',  # 🕘
-  u'\U0001f977',  # 🥷
-  u'\U0001f977\U0001f3ff',  # 🥷🏿
-  u'\U0001f977\U0001f3fb',  # 🥷🏻
-  u'\U0001f977\U0001f3fe',  # 🥷🏾
-  u'\U0001f977\U0001f3fc',  # 🥷🏼
-  u'\U0001f977\U0001f3fd',  # 🥷🏽
-  u'\U0001f6b3',  # 🚳
-  u'\U000026d4',  # ⛔
-  u'\U0001f6af',  # 🚯
-  u'\U0001f4f5',  # 📵
-  u'\U0001f51e',  # 🔞
-  u'\U0001f6b7',  # 🚷
-  u'\U0001f6ad',  # 🚭
-  u'\U0001f6b1',  # 🚱
-  u'\U0001f443',  # 👃
-  u'\U0001f443\U0001f3ff',  # 👃🏿
-  u'\U0001f443\U0001f3fb',  # 👃🏻
-  u'\U0001f443\U0001f3fe',  # 👃🏾
-  u'\U0001f443\U0001f3fc',  # 👃🏼
-  u'\U0001f443\U0001f3fd',  # 👃🏽
-  u'\U0001f4d3',  # 📓
-  u'\U0001f4d4',  # 📔
-  u'\U0001f529',  # 🔩
-  u'\U0001f419',  # 🐙
-  u'\U0001f362',  # 🍢
-  u'\U0001f3e2',  # 🏢
-  u'\U0001f9d1\U0000200d\U0001f4bc',  # 🧑‍💼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f4bc',  # 🧑🏿‍💼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f4bc',  # 🧑🏻‍💼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f4bc',  # 🧑🏾‍💼
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f4bc',  # 🧑🏼‍💼
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f4bc',  # 🧑🏽‍💼
-  u'\U0001f479',  # 👹
-  u'\U0001f6e2\U0000fe0f',  # 🛢️
-  u'\U0001f6e2',  # 🛢
-  u'\U0001f5dd\U0000fe0f',  # 🗝️
-  u'\U0001f5dd',  # 🗝
-  u'\U0001f474',  # 👴
-  u'\U0001f474\U0001f3ff',  # 👴🏿
-  u'\U0001f474\U0001f3fb',  # 👴🏻
-  u'\U0001f474\U0001f3fe',  # 👴🏾
-  u'\U0001f474\U0001f3fc',  # 👴🏼
-  u'\U0001f474\U0001f3fd',  # 👴🏽
-  u'\U0001f475',  # 👵
-  u'\U0001f475\U0001f3ff',  # 👵🏿
-  u'\U0001f475\U0001f3fb',  # 👵🏻
-  u'\U0001f475\U0001f3fe',  # 👵🏾
-  u'\U0001f475\U0001f3fc',  # 👵🏼
-  u'\U0001f475\U0001f3fd',  # 👵🏽
-  u'\U0001f9d3',  # 🧓
-  u'\U0001f9d3\U0001f3ff',  # 🧓🏿
-  u'\U0001f9d3\U0001f3fb',  # 🧓🏻
-  u'\U0001f9d3\U0001f3fe',  # 🧓🏾
-  u'\U0001f9d3\U0001f3fc',  # 🧓🏼
-  u'\U0001f9d3\U0001f3fd',  # 🧓🏽
-  u'\U0001fad2',  # 🫒
-  u'\U0001f549\U0000fe0f',  # 🕉️
-  u'\U0001f549',  # 🕉
-  u'\U0001f698',  # 🚘
-  u'\U0001f68d',  # 🚍
-  u'\U0001f44a',  # 👊
-  u'\U0001f44a\U0001f3ff',  # 👊🏿
-  u'\U0001f44a\U0001f3fb',  # 👊🏻
-  u'\U0001f44a\U0001f3fe',  # 👊🏾
-  u'\U0001f44a\U0001f3fc',  # 👊🏼
-  u'\U0001f44a\U0001f3fd',  # 👊🏽
-  u'\U0001f694',  # 🚔
-  u'\U0001f696',  # 🚖
-  u'\U0001fa71',  # 🩱
-  u'\U0001f55c',  # 🕜
-  u'\U0001f550',  # 🕐
-  u'\U0001f9c5',  # 🧅
-  u'\U0001f4d6',  # 📖
-  u'\U0001f4c2',  # 📂
-  u'\U0001f450',  # 👐
-  u'\U0001f450\U0001f3ff',  # 👐🏿
-  u'\U0001f450\U0001f3fb',  # 👐🏻
-  u'\U0001f450\U0001f3fe',  # 👐🏾
-  u'\U0001f450\U0001f3fc',  # 👐🏼
-  u'\U0001f450\U0001f3fd',  # 👐🏽
-  u'\U0001f4ed',  # 📭
-  u'\U0001f4ec',  # 📬
-  u'\U0001f4bf',  # 💿
-  u'\U0001f4d9',  # 📙
-  u'\U0001f7e0',  # 🟠
-  u'\U0001f9e1',  # 🧡
-  u'\U0001f7e7',  # 🟧
-  u'\U0001f9a7',  # 🦧
-  u'\U00002626\U0000fe0f',  # ☦️
-  u'\U00002626',  # ☦
-  u'\U0001f9a6',  # 🦦
-  u'\U0001f4e4',  # 📤
-  u'\U0001f989',  # 🦉
-  u'\U0001f402',  # 🐂
-  u'\U0001f9aa',  # 🦪
-  u'\U0001f4e6',  # 📦
-  u'\U0001f4c4',  # 📄
-  u'\U0001f4c3',  # 📃
-  u'\U0001f4df',  # 📟
-  u'\U0001f58c\U0000fe0f',  # 🖌️
-  u'\U0001f58c',  # 🖌
-  u'\U0001faf3',  # 🫳
-  u'\U0001faf3\U0001f3ff',  # 🫳🏿
-  u'\U0001faf3\U0001f3fb',  # 🫳🏻
-  u'\U0001faf3\U0001f3fe',  # 🫳🏾
-  u'\U0001faf3\U0001f3fc',  # 🫳🏼
-  u'\U0001faf3\U0001f3fd',  # 🫳🏽
-  u'\U0001f334',  # 🌴
-  u'\U0001faf4',  # 🫴
-  u'\U0001faf4\U0001f3ff',  # 🫴🏿
-  u'\U0001faf4\U0001f3fb',  # 🫴🏻
-  u'\U0001faf4\U0001f3fe',  # 🫴🏾
-  u'\U0001faf4\U0001f3fc',  # 🫴🏼
-  u'\U0001faf4\U0001f3fd',  # 🫴🏽
-  u'\U0001f932',  # 🤲
-  u'\U0001f932\U0001f3ff',  # 🤲🏿
-  u'\U0001f932\U0001f3fb',  # 🤲🏻
-  u'\U0001f932\U0001f3fe',  # 🤲🏾
-  u'\U0001f932\U0001f3fc',  # 🤲🏼
-  u'\U0001f932\U0001f3fd',  # 🤲🏽
-  u'\U0001f95e',  # 🥞
-  u'\U0001f43c',  # 🐼
-  u'\U0001f4ce',  # 📎
-  u'\U0001fa82',  # 🪂
-  u'\U0001f99c',  # 🦜
-  u'\U0000303d\U0000fe0f',  # 〽️
-  u'\U0000303d',  # 〽
-  u'\U0001f389',  # 🎉
-  u'\U0001f973',  # 🥳
-  u'\U0001f6f3\U0000fe0f',  # 🛳️
-  u'\U0001f6f3',  # 🛳
-  u'\U0001f6c2',  # 🛂
-  u'\U000023f8\U0000fe0f',  # ⏸️
-  u'\U000023f8',  # ⏸
-  u'\U0001f43e',  # 🐾
-  u'\U0001fadb',  # 🫛
-  u'\U0000262e\U0000fe0f',  # ☮️
-  u'\U0000262e',  # ☮
-  u'\U0001f351',  # 🍑
-  u'\U0001f99a',  # 🦚
-  u'\U0001f95c',  # 🥜
-  u'\U0001f350',  # 🍐
-  u'\U0001f58a\U0000fe0f',  # 🖊️
-  u'\U0001f58a',  # 🖊
-  u'\U0000270f\U0000fe0f',  # ✏️
-  u'\U0000270f',  # ✏
-  u'\U0001f427',  # 🐧
-  u'\U0001f614',  # 😔
-  u'\U0001f9d1\U0000200d\U0001f91d\U0000200d\U0001f9d1',  # 🧑‍🤝‍🧑
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏿‍🤝‍🧑🏿
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏿‍🤝‍🧑🏻
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏿‍🤝‍🧑🏾
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏿‍🤝‍🧑🏼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏿‍🤝‍🧑🏽
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏻‍🤝‍🧑🏻
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏻‍🤝‍🧑🏿
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏻‍🤝‍🧑🏾
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏻‍🤝‍🧑🏼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏻‍🤝‍🧑🏽
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏾‍🤝‍🧑🏾
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏾‍🤝‍🧑🏿
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏾‍🤝‍🧑🏻
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏾‍🤝‍🧑🏼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏾‍🤝‍🧑🏽
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏼‍🤝‍🧑🏼
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏼‍🤝‍🧑🏿
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏼‍🤝‍🧑🏻
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏼‍🤝‍🧑🏾
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏼‍🤝‍🧑🏽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd',  # 🧑🏽‍🤝‍🧑🏽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff',  # 🧑🏽‍🤝‍🧑🏿
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb',  # 🧑🏽‍🤝‍🧑🏻
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe',  # 🧑🏽‍🤝‍🧑🏾
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc',  # 🧑🏽‍🤝‍🧑🏼
-  u'\U0001fac2',  # 🫂
-  u'\U0001f46f',  # 👯
-  u'\U0001f93c',  # 🤼
-  u'\U0001f3ad',  # 🎭
-  u'\U0001f623',  # 😣
-  u'\U0001f9d1',  # 🧑
-  u'\U0001f9d1\U0000200d\U0001f9b2',  # 🧑‍🦲
-  u'\U0001f9d4',  # 🧔
-  u'\U0001f6b4',  # 🚴
-  u'\U0001f6b4\U0001f3ff',  # 🚴🏿
-  u'\U0001f6b4\U0001f3fb',  # 🚴🏻
-  u'\U0001f6b4\U0001f3fe',  # 🚴🏾
-  u'\U0001f6b4\U0001f3fc',  # 🚴🏼
-  u'\U0001f6b4\U0001f3fd',  # 🚴🏽
-  u'\U0001f471',  # 👱
-  u'\U000026f9\U0000fe0f',  # ⛹️
-  u'\U000026f9',  # ⛹
-  u'\U000026f9\U0001f3ff',  # ⛹🏿
-  u'\U000026f9\U0001f3fb',  # ⛹🏻
-  u'\U000026f9\U0001f3fe',  # ⛹🏾
-  u'\U000026f9\U0001f3fc',  # ⛹🏼
-  u'\U000026f9\U0001f3fd',  # ⛹🏽
-  u'\U0001f647',  # 🙇
-  u'\U0001f647\U0001f3ff',  # 🙇🏿
-  u'\U0001f647\U0001f3fb',  # 🙇🏻
-  u'\U0001f647\U0001f3fe',  # 🙇🏾
-  u'\U0001f647\U0001f3fc',  # 🙇🏼
-  u'\U0001f647\U0001f3fd',  # 🙇🏽
-  u'\U0001f938',  # 🤸
-  u'\U0001f938\U0001f3ff',  # 🤸🏿
-  u'\U0001f938\U0001f3fb',  # 🤸🏻
-  u'\U0001f938\U0001f3fe',  # 🤸🏾
-  u'\U0001f938\U0001f3fc',  # 🤸🏼
-  u'\U0001f938\U0001f3fd',  # 🤸🏽
-  u'\U0001f9d7',  # 🧗
-  u'\U0001f9d7\U0001f3ff',  # 🧗🏿
-  u'\U0001f9d7\U0001f3fb',  # 🧗🏻
-  u'\U0001f9d7\U0001f3fe',  # 🧗🏾
-  u'\U0001f9d7\U0001f3fc',  # 🧗🏼
-  u'\U0001f9d7\U0001f3fd',  # 🧗🏽
-  u'\U0001f9d1\U0000200d\U0001f9b1',  # 🧑‍🦱
-  u'\U0001f9d1\U0001f3ff',  # 🧑🏿
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9b2',  # 🧑🏿‍🦲
-  u'\U0001f9d4\U0001f3ff',  # 🧔🏿
-  u'\U0001f471\U0001f3ff',  # 👱🏿
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9b1',  # 🧑🏿‍🦱
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9b0',  # 🧑🏿‍🦰
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9b3',  # 🧑🏿‍🦳
-  u'\U0001f926',  # 🤦
-  u'\U0001f926\U0001f3ff',  # 🤦🏿
-  u'\U0001f926\U0001f3fb',  # 🤦🏻
-  u'\U0001f926\U0001f3fe',  # 🤦🏾
-  u'\U0001f926\U0001f3fc',  # 🤦🏼
-  u'\U0001f926\U0001f3fd',  # 🤦🏽
-  u'\U0001f9d1\U0000200d\U0001f37c',  # 🧑‍🍼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f37c',  # 🧑🏿‍🍼
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f37c',  # 🧑🏻‍🍼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f37c',  # 🧑🏾‍🍼
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f37c',  # 🧑🏼‍🍼
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f37c',  # 🧑🏽‍🍼
-  u'\U0001f93a',  # 🤺
-  u'\U0001f64d',  # 🙍
-  u'\U0001f64d\U0001f3ff',  # 🙍🏿
-  u'\U0001f64d\U0001f3fb',  # 🙍🏻
-  u'\U0001f64d\U0001f3fe',  # 🙍🏾
-  u'\U0001f64d\U0001f3fc',  # 🙍🏼
-  u'\U0001f64d\U0001f3fd',  # 🙍🏽
-  u'\U0001f645',  # 🙅
-  u'\U0001f645\U0001f3ff',  # 🙅🏿
-  u'\U0001f645\U0001f3fb',  # 🙅🏻
-  u'\U0001f645\U0001f3fe',  # 🙅🏾
-  u'\U0001f645\U0001f3fc',  # 🙅🏼
-  u'\U0001f645\U0001f3fd',  # 🙅🏽
-  u'\U0001f646',  # 🙆
-  u'\U0001f646\U0001f3ff',  # 🙆🏿
-  u'\U0001f646\U0001f3fb',  # 🙆🏻
-  u'\U0001f646\U0001f3fe',  # 🙆🏾
-  u'\U0001f646\U0001f3fc',  # 🙆🏼
-  u'\U0001f646\U0001f3fd',  # 🙆🏽
-  u'\U0001f487',  # 💇
-  u'\U0001f487\U0001f3ff',  # 💇🏿
-  u'\U0001f487\U0001f3fb',  # 💇🏻
-  u'\U0001f487\U0001f3fe',  # 💇🏾
-  u'\U0001f487\U0001f3fc',  # 💇🏼
-  u'\U0001f487\U0001f3fd',  # 💇🏽
-  u'\U0001f486',  # 💆
-  u'\U0001f486\U0001f3ff',  # 💆🏿
-  u'\U0001f486\U0001f3fb',  # 💆🏻
-  u'\U0001f486\U0001f3fe',  # 💆🏾
-  u'\U0001f486\U0001f3fc',  # 💆🏼
-  u'\U0001f486\U0001f3fd',  # 💆🏽
-  u'\U0001f3cc\U0000fe0f',  # 🏌️
-  u'\U0001f3cc',  # 🏌
-  u'\U0001f3cc\U0001f3ff',  # 🏌🏿
-  u'\U0001f3cc\U0001f3fb',  # 🏌🏻
-  u'\U0001f3cc\U0001f3fe',  # 🏌🏾
-  u'\U0001f3cc\U0001f3fc',  # 🏌🏼
-  u'\U0001f3cc\U0001f3fd',  # 🏌🏽
-  u'\U0001f6cc',  # 🛌
-  u'\U0001f6cc\U0001f3ff',  # 🛌🏿
-  u'\U0001f6cc\U0001f3fb',  # 🛌🏻
-  u'\U0001f6cc\U0001f3fe',  # 🛌🏾
-  u'\U0001f6cc\U0001f3fc',  # 🛌🏼
-  u'\U0001f6cc\U0001f3fd',  # 🛌🏽
-  u'\U0001f9d8',  # 🧘
-  u'\U0001f9d8\U0001f3ff',  # 🧘🏿
-  u'\U0001f9d8\U0001f3fb',  # 🧘🏻
-  u'\U0001f9d8\U0001f3fe',  # 🧘🏾
-  u'\U0001f9d8\U0001f3fc',  # 🧘🏼
-  u'\U0001f9d8\U0001f3fd',  # 🧘🏽
-  u'\U0001f9d1\U0000200d\U0001f9bd',  # 🧑‍🦽
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9bd',  # 🧑🏿‍🦽
-  u'\U0001f9d1\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 🧑‍🦽‍➡️
-  u'\U0001f9d1\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 🧑‍🦽‍➡
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 🧑🏿‍🦽‍➡️
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 🧑🏿‍🦽‍➡
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 🧑🏻‍🦽‍➡️
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 🧑🏻‍🦽‍➡
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 🧑🏾‍🦽‍➡️
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 🧑🏾‍🦽‍➡
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 🧑🏼‍🦽‍➡️
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 🧑🏼‍🦽‍➡
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 🧑🏽‍🦽‍➡️
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 🧑🏽‍🦽‍➡
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9bd',  # 🧑🏻‍🦽
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9bd',  # 🧑🏾‍🦽
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9bd',  # 🧑🏼‍🦽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9bd',  # 🧑🏽‍🦽
-  u'\U0001f9d1\U0000200d\U0001f9bc',  # 🧑‍🦼
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9bc',  # 🧑🏿‍🦼
-  u'\U0001f9d1\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 🧑‍🦼‍➡️
-  u'\U0001f9d1\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 🧑‍🦼‍➡
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 🧑🏿‍🦼‍➡️
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 🧑🏿‍🦼‍➡
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 🧑🏻‍🦼‍➡️
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 🧑🏻‍🦼‍➡
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 🧑🏾‍🦼‍➡️
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 🧑🏾‍🦼‍➡
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 🧑🏼‍🦼‍➡️
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 🧑🏼‍🦼‍➡
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 🧑🏽‍🦼‍➡️
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 🧑🏽‍🦼‍➡
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9bc',  # 🧑🏻‍🦼
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9bc',  # 🧑🏾‍🦼
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9bc',  # 🧑🏼‍🦼
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9bc',  # 🧑🏽‍🦼
-  u'\U0001f9d6',  # 🧖
-  u'\U0001f9d6\U0001f3ff',  # 🧖🏿
-  u'\U0001f9d6\U0001f3fb',  # 🧖🏻
-  u'\U0001f9d6\U0001f3fe',  # 🧖🏾
-  u'\U0001f9d6\U0001f3fc',  # 🧖🏼
-  u'\U0001f9d6\U0001f3fd',  # 🧖🏽
-  u'\U0001f574\U0000fe0f',  # 🕴️
-  u'\U0001f574',  # 🕴
-  u'\U0001f574\U0001f3ff',  # 🕴🏿
-  u'\U0001f574\U0001f3fb',  # 🕴🏻
-  u'\U0001f574\U0001f3fe',  # 🕴🏾
-  u'\U0001f574\U0001f3fc',  # 🕴🏼
-  u'\U0001f574\U0001f3fd',  # 🕴🏽
-  u'\U0001f935',  # 🤵
-  u'\U0001f935\U0001f3ff',  # 🤵🏿
-  u'\U0001f935\U0001f3fb',  # 🤵🏻
-  u'\U0001f935\U0001f3fe',  # 🤵🏾
-  u'\U0001f935\U0001f3fc',  # 🤵🏼
-  u'\U0001f935\U0001f3fd',  # 🤵🏽
-  u'\U0001f939',  # 🤹
-  u'\U0001f939\U0001f3ff',  # 🤹🏿
-  u'\U0001f939\U0001f3fb',  # 🤹🏻
-  u'\U0001f939\U0001f3fe',  # 🤹🏾
-  u'\U0001f939\U0001f3fc',  # 🤹🏼
-  u'\U0001f939\U0001f3fd',  # 🤹🏽
-  u'\U0001f9ce',  # 🧎
-  u'\U0001f9ce\U0001f3ff',  # 🧎🏿
-  u'\U0001f9ce\U0000200d\U000027a1\U0000fe0f',  # 🧎‍➡️
-  u'\U0001f9ce\U0000200d\U000027a1',  # 🧎‍➡
-  u'\U0001f9ce\U0001f3ff\U0000200d\U000027a1\U0000fe0f',  # 🧎🏿‍➡️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U000027a1',  # 🧎🏿‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U000027a1\U0000fe0f',  # 🧎🏻‍➡️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U000027a1',  # 🧎🏻‍➡
-  u'\U0001f9ce\U0001f3fe\U0000200d\U000027a1\U0000fe0f',  # 🧎🏾‍➡️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U000027a1',  # 🧎🏾‍➡
-  u'\U0001f9ce\U0001f3fc\U0000200d\U000027a1\U0000fe0f',  # 🧎🏼‍➡️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U000027a1',  # 🧎🏼‍➡
-  u'\U0001f9ce\U0001f3fd\U0000200d\U000027a1\U0000fe0f',  # 🧎🏽‍➡️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U000027a1',  # 🧎🏽‍➡
-  u'\U0001f9ce\U0001f3fb',  # 🧎🏻
-  u'\U0001f9ce\U0001f3fe',  # 🧎🏾
-  u'\U0001f9ce\U0001f3fc',  # 🧎🏼
-  u'\U0001f9ce\U0001f3fd',  # 🧎🏽
-  u'\U0001f3cb\U0000fe0f',  # 🏋️
-  u'\U0001f3cb',  # 🏋
-  u'\U0001f3cb\U0001f3ff',  # 🏋🏿
-  u'\U0001f3cb\U0001f3fb',  # 🏋🏻
-  u'\U0001f3cb\U0001f3fe',  # 🏋🏾
-  u'\U0001f3cb\U0001f3fc',  # 🏋🏼
-  u'\U0001f3cb\U0001f3fd',  # 🏋🏽
-  u'\U0001f9d1\U0001f3fb',  # 🧑🏻
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9b2',  # 🧑🏻‍🦲
-  u'\U0001f9d4\U0001f3fb',  # 🧔🏻
-  u'\U0001f471\U0001f3fb',  # 👱🏻
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9b1',  # 🧑🏻‍🦱
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9b0',  # 🧑🏻‍🦰
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9b3',  # 🧑🏻‍🦳
-  u'\U0001f9d1\U0001f3fe',  # 🧑🏾
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9b2',  # 🧑🏾‍🦲
-  u'\U0001f9d4\U0001f3fe',  # 🧔🏾
-  u'\U0001f471\U0001f3fe',  # 👱🏾
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9b1',  # 🧑🏾‍🦱
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9b0',  # 🧑🏾‍🦰
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9b3',  # 🧑🏾‍🦳
-  u'\U0001f9d1\U0001f3fc',  # 🧑🏼
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9b2',  # 🧑🏼‍🦲
-  u'\U0001f9d4\U0001f3fc',  # 🧔🏼
-  u'\U0001f471\U0001f3fc',  # 👱🏼
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9b1',  # 🧑🏼‍🦱
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9b0',  # 🧑🏼‍🦰
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9b3',  # 🧑🏼‍🦳
-  u'\U0001f9d1\U0001f3fd',  # 🧑🏽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9b2',  # 🧑🏽‍🦲
-  u'\U0001f9d4\U0001f3fd',  # 🧔🏽
-  u'\U0001f471\U0001f3fd',  # 👱🏽
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9b1',  # 🧑🏽‍🦱
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9b0',  # 🧑🏽‍🦰
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9b3',  # 🧑🏽‍🦳
-  u'\U0001f6b5',  # 🚵
-  u'\U0001f6b5\U0001f3ff',  # 🚵🏿
-  u'\U0001f6b5\U0001f3fb',  # 🚵🏻
-  u'\U0001f6b5\U0001f3fe',  # 🚵🏾
-  u'\U0001f6b5\U0001f3fc',  # 🚵🏼
-  u'\U0001f6b5\U0001f3fd',  # 🚵🏽
-  u'\U0001f93e',  # 🤾
-  u'\U0001f93e\U0001f3ff',  # 🤾🏿
-  u'\U0001f93e\U0001f3fb',  # 🤾🏻
-  u'\U0001f93e\U0001f3fe',  # 🤾🏾
-  u'\U0001f93e\U0001f3fc',  # 🤾🏼
-  u'\U0001f93e\U0001f3fd',  # 🤾🏽
-  u'\U0001f93d',  # 🤽
-  u'\U0001f93d\U0001f3ff',  # 🤽🏿
-  u'\U0001f93d\U0001f3fb',  # 🤽🏻
-  u'\U0001f93d\U0001f3fe',  # 🤽🏾
-  u'\U0001f93d\U0001f3fc',  # 🤽🏼
-  u'\U0001f93d\U0001f3fd',  # 🤽🏽
-  u'\U0001f64e',  # 🙎
-  u'\U0001f64e\U0001f3ff',  # 🙎🏿
-  u'\U0001f64e\U0001f3fb',  # 🙎🏻
-  u'\U0001f64e\U0001f3fe',  # 🙎🏾
-  u'\U0001f64e\U0001f3fc',  # 🙎🏼
-  u'\U0001f64e\U0001f3fd',  # 🙎🏽
-  u'\U0001f64b',  # 🙋
-  u'\U0001f64b\U0001f3ff',  # 🙋🏿
-  u'\U0001f64b\U0001f3fb',  # 🙋🏻
-  u'\U0001f64b\U0001f3fe',  # 🙋🏾
-  u'\U0001f64b\U0001f3fc',  # 🙋🏼
-  u'\U0001f64b\U0001f3fd',  # 🙋🏽
-  u'\U0001f9d1\U0000200d\U0001f9b0',  # 🧑‍🦰
-  u'\U0001f6a3',  # 🚣
-  u'\U0001f6a3\U0001f3ff',  # 🚣🏿
-  u'\U0001f6a3\U0001f3fb',  # 🚣🏻
-  u'\U0001f6a3\U0001f3fe',  # 🚣🏾
-  u'\U0001f6a3\U0001f3fc',  # 🚣🏼
-  u'\U0001f6a3\U0001f3fd',  # 🚣🏽
-  u'\U0001f3c3',  # 🏃
-  u'\U0001f3c3\U0001f3ff',  # 🏃🏿
-  u'\U0001f3c3\U0000200d\U000027a1\U0000fe0f',  # 🏃‍➡️
-  u'\U0001f3c3\U0000200d\U000027a1',  # 🏃‍➡
-  u'\U0001f3c3\U0001f3ff\U0000200d\U000027a1\U0000fe0f',  # 🏃🏿‍➡️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U000027a1',  # 🏃🏿‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U000027a1\U0000fe0f',  # 🏃🏻‍➡️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U000027a1',  # 🏃🏻‍➡
-  u'\U0001f3c3\U0001f3fe\U0000200d\U000027a1\U0000fe0f',  # 🏃🏾‍➡️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U000027a1',  # 🏃🏾‍➡
-  u'\U0001f3c3\U0001f3fc\U0000200d\U000027a1\U0000fe0f',  # 🏃🏼‍➡️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U000027a1',  # 🏃🏼‍➡
-  u'\U0001f3c3\U0001f3fd\U0000200d\U000027a1\U0000fe0f',  # 🏃🏽‍➡️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U000027a1',  # 🏃🏽‍➡
-  u'\U0001f3c3\U0001f3fb',  # 🏃🏻
-  u'\U0001f3c3\U0001f3fe',  # 🏃🏾
-  u'\U0001f3c3\U0001f3fc',  # 🏃🏼
-  u'\U0001f3c3\U0001f3fd',  # 🏃🏽
-  u'\U0001f937',  # 🤷
-  u'\U0001f937\U0001f3ff',  # 🤷🏿
-  u'\U0001f937\U0001f3fb',  # 🤷🏻
-  u'\U0001f937\U0001f3fe',  # 🤷🏾
-  u'\U0001f937\U0001f3fc',  # 🤷🏼
-  u'\U0001f937\U0001f3fd',  # 🤷🏽
-  u'\U0001f9cd',  # 🧍
-  u'\U0001f9cd\U0001f3ff',  # 🧍🏿
-  u'\U0001f9cd\U0001f3fb',  # 🧍🏻
-  u'\U0001f9cd\U0001f3fe',  # 🧍🏾
-  u'\U0001f9cd\U0001f3fc',  # 🧍🏼
-  u'\U0001f9cd\U0001f3fd',  # 🧍🏽
-  u'\U0001f3c4',  # 🏄
-  u'\U0001f3c4\U0001f3ff',  # 🏄🏿
-  u'\U0001f3c4\U0001f3fb',  # 🏄🏻
-  u'\U0001f3c4\U0001f3fe',  # 🏄🏾
-  u'\U0001f3c4\U0001f3fc',  # 🏄🏼
-  u'\U0001f3c4\U0001f3fd',  # 🏄🏽
-  u'\U0001f3ca',  # 🏊
-  u'\U0001f3ca\U0001f3ff',  # 🏊🏿
-  u'\U0001f3ca\U0001f3fb',  # 🏊🏻
-  u'\U0001f3ca\U0001f3fe',  # 🏊🏾
-  u'\U0001f3ca\U0001f3fc',  # 🏊🏼
-  u'\U0001f3ca\U0001f3fd',  # 🏊🏽
-  u'\U0001f6c0',  # 🛀
-  u'\U0001f6c0\U0001f3ff',  # 🛀🏿
-  u'\U0001f6c0\U0001f3fb',  # 🛀🏻
-  u'\U0001f6c0\U0001f3fe',  # 🛀🏾
-  u'\U0001f6c0\U0001f3fc',  # 🛀🏼
-  u'\U0001f6c0\U0001f3fd',  # 🛀🏽
-  u'\U0001f481',  # 💁
-  u'\U0001f481\U0001f3ff',  # 💁🏿
-  u'\U0001f481\U0001f3fb',  # 💁🏻
-  u'\U0001f481\U0001f3fe',  # 💁🏾
-  u'\U0001f481\U0001f3fc',  # 💁🏼
-  u'\U0001f481\U0001f3fd',  # 💁🏽
-  u'\U0001f6b6',  # 🚶
-  u'\U0001f6b6\U0001f3ff',  # 🚶🏿
-  u'\U0001f6b6\U0000200d\U000027a1\U0000fe0f',  # 🚶‍➡️
-  u'\U0001f6b6\U0000200d\U000027a1',  # 🚶‍➡
-  u'\U0001f6b6\U0001f3ff\U0000200d\U000027a1\U0000fe0f',  # 🚶🏿‍➡️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U000027a1',  # 🚶🏿‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U000027a1\U0000fe0f',  # 🚶🏻‍➡️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U000027a1',  # 🚶🏻‍➡
-  u'\U0001f6b6\U0001f3fe\U0000200d\U000027a1\U0000fe0f',  # 🚶🏾‍➡️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U000027a1',  # 🚶🏾‍➡
-  u'\U0001f6b6\U0001f3fc\U0000200d\U000027a1\U0000fe0f',  # 🚶🏼‍➡️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U000027a1',  # 🚶🏼‍➡
-  u'\U0001f6b6\U0001f3fd\U0000200d\U000027a1\U0000fe0f',  # 🚶🏽‍➡️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U000027a1',  # 🚶🏽‍➡
-  u'\U0001f6b6\U0001f3fb',  # 🚶🏻
-  u'\U0001f6b6\U0001f3fe',  # 🚶🏾
-  u'\U0001f6b6\U0001f3fc',  # 🚶🏼
-  u'\U0001f6b6\U0001f3fd',  # 🚶🏽
-  u'\U0001f473',  # 👳
-  u'\U0001f473\U0001f3ff',  # 👳🏿
-  u'\U0001f473\U0001f3fb',  # 👳🏻
-  u'\U0001f473\U0001f3fe',  # 👳🏾
-  u'\U0001f473\U0001f3fc',  # 👳🏼
-  u'\U0001f473\U0001f3fd',  # 👳🏽
-  u'\U0001f9d1\U0000200d\U0001f9b3',  # 🧑‍🦳
-  u'\U0001fac5',  # 🫅
-  u'\U0001fac5\U0001f3ff',  # 🫅🏿
-  u'\U0001fac5\U0001f3fb',  # 🫅🏻
-  u'\U0001fac5\U0001f3fe',  # 🫅🏾
-  u'\U0001fac5\U0001f3fc',  # 🫅🏼
-  u'\U0001fac5\U0001f3fd',  # 🫅🏽
-  u'\U0001f472',  # 👲
-  u'\U0001f472\U0001f3ff',  # 👲🏿
-  u'\U0001f472\U0001f3fb',  # 👲🏻
-  u'\U0001f472\U0001f3fe',  # 👲🏾
-  u'\U0001f472\U0001f3fc',  # 👲🏼
-  u'\U0001f472\U0001f3fd',  # 👲🏽
-  u'\U0001f470',  # 👰
-  u'\U0001f470\U0001f3ff',  # 👰🏿
-  u'\U0001f470\U0001f3fb',  # 👰🏻
-  u'\U0001f470\U0001f3fe',  # 👰🏾
-  u'\U0001f470\U0001f3fc',  # 👰🏼
-  u'\U0001f470\U0001f3fd',  # 👰🏽
-  u'\U0001f9d1\U0000200d\U0001f9af',  # 🧑‍🦯
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9af',  # 🧑🏿‍🦯
-  u'\U0001f9d1\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 🧑‍🦯‍➡️
-  u'\U0001f9d1\U0000200d\U0001f9af\U0000200d\U000027a1',  # 🧑‍🦯‍➡
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 🧑🏿‍🦯‍➡️
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1',  # 🧑🏿‍🦯‍➡
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 🧑🏻‍🦯‍➡️
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1',  # 🧑🏻‍🦯‍➡
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 🧑🏾‍🦯‍➡️
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1',  # 🧑🏾‍🦯‍➡
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 🧑🏼‍🦯‍➡️
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1',  # 🧑🏼‍🦯‍➡
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 🧑🏽‍🦯‍➡️
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1',  # 🧑🏽‍🦯‍➡
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f9af',  # 🧑🏻‍🦯
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f9af',  # 🧑🏾‍🦯
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f9af',  # 🧑🏼‍🦯
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f9af',  # 🧑🏽‍🦯
-  u'\U0001f9eb',  # 🧫
-  u'\U0001f426\U0000200d\U0001f525',  # 🐦‍🔥
-  u'\U000026cf\U0000fe0f',  # ⛏️
-  u'\U000026cf',  # ⛏
-  u'\U0001f6fb',  # 🛻
-  u'\U0001f967',  # 🥧
-  u'\U0001f416',  # 🐖
-  u'\U0001f437',  # 🐷
-  u'\U0001f43d',  # 🐽
-  u'\U0001f4a9',  # 💩
-  u'\U0001f48a',  # 💊
-  u'\U0001f9d1\U0000200d\U00002708\U0000fe0f',  # 🧑‍✈️
-  u'\U0001f9d1\U0000200d\U00002708',  # 🧑‍✈
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002708\U0000fe0f',  # 🧑🏿‍✈️
-  u'\U0001f9d1\U0001f3ff\U0000200d\U00002708',  # 🧑🏿‍✈
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002708\U0000fe0f',  # 🧑🏻‍✈️
-  u'\U0001f9d1\U0001f3fb\U0000200d\U00002708',  # 🧑🏻‍✈
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002708\U0000fe0f',  # 🧑🏾‍✈️
-  u'\U0001f9d1\U0001f3fe\U0000200d\U00002708',  # 🧑🏾‍✈
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002708\U0000fe0f',  # 🧑🏼‍✈️
-  u'\U0001f9d1\U0001f3fc\U0000200d\U00002708',  # 🧑🏼‍✈
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002708\U0000fe0f',  # 🧑🏽‍✈️
-  u'\U0001f9d1\U0001f3fd\U0000200d\U00002708',  # 🧑🏽‍✈
-  u'\U0001f90c',  # 🤌
-  u'\U0001f90c\U0001f3ff',  # 🤌🏿
-  u'\U0001f90c\U0001f3fb',  # 🤌🏻
-  u'\U0001f90c\U0001f3fe',  # 🤌🏾
-  u'\U0001f90c\U0001f3fc',  # 🤌🏼
-  u'\U0001f90c\U0001f3fd',  # 🤌🏽
-  u'\U0001f90f',  # 🤏
-  u'\U0001f90f\U0001f3ff',  # 🤏🏿
-  u'\U0001f90f\U0001f3fb',  # 🤏🏻
-  u'\U0001f90f\U0001f3fe',  # 🤏🏾
-  u'\U0001f90f\U0001f3fc',  # 🤏🏼
-  u'\U0001f90f\U0001f3fd',  # 🤏🏽
-  u'\U0001f38d',  # 🎍
-  u'\U0001f34d',  # 🍍
-  u'\U0001f3d3',  # 🏓
-  u'\U0001fa77',  # 🩷
-  u'\U0001f3f4\U0000200d\U00002620\U0000fe0f',  # 🏴‍☠️
-  u'\U0001f3f4\U0000200d\U00002620',  # 🏴‍☠
-  u'\U0001f355',  # 🍕
-  u'\U0001fa85',  # 🪅
-  u'\U0001faa7',  # 🪧
-  u'\U0001f6d0',  # 🛐
-  u'\U000025b6\U0000fe0f',  # ▶️
-  u'\U000025b6',  # ▶
-  u'\U000023ef\U0000fe0f',  # ⏯️
-  u'\U000023ef',  # ⏯
-  u'\U0001f6dd',  # 🛝
-  u'\U0001f97a',  # 🥺
-  u'\U0001faa0',  # 🪠
-  u'\U00002795',  # ➕
-  u'\U0001f43b\U0000200d\U00002744\U0000fe0f',  # 🐻‍❄️
-  u'\U0001f43b\U0000200d\U00002744',  # 🐻‍❄
-  u'\U0001f693',  # 🚓
-  u'\U0001f6a8',  # 🚨
-  u'\U0001f46e',  # 👮
-  u'\U0001f46e\U0001f3ff',  # 👮🏿
-  u'\U0001f46e\U0001f3fb',  # 👮🏻
-  u'\U0001f46e\U0001f3fe',  # 👮🏾
-  u'\U0001f46e\U0001f3fc',  # 👮🏼
-  u'\U0001f46e\U0001f3fd',  # 👮🏽
-  u'\U0001f429',  # 🐩
-  u'\U0001f3b1',  # 🎱
-  u'\U0001f37f',  # 🍿
-  u'\U0001f3e4',  # 🏤
-  u'\U0001f4ef',  # 📯
-  u'\U0001f4ee',  # 📮
-  u'\U0001f372',  # 🍲
-  u'\U0001f6b0',  # 🚰
-  u'\U0001f954',  # 🥔
-  u'\U0001fab4',  # 🪴
-  u'\U0001f357',  # 🍗
-  u'\U0001f4b7',  # 💷
-  u'\U0001fad7',  # 🫗
-  u'\U0001f63e',  # 😾
-  u'\U0001f4ff',  # 📿
-  u'\U0001fac3',  # 🫃
-  u'\U0001fac3\U0001f3ff',  # 🫃🏿
-  u'\U0001fac3\U0001f3fb',  # 🫃🏻
-  u'\U0001fac3\U0001f3fe',  # 🫃🏾
-  u'\U0001fac3\U0001f3fc',  # 🫃🏼
-  u'\U0001fac3\U0001f3fd',  # 🫃🏽
-  u'\U0001fac4',  # 🫄
-  u'\U0001fac4\U0001f3ff',  # 🫄🏿
-  u'\U0001fac4\U0001f3fb',  # 🫄🏻
-  u'\U0001fac4\U0001f3fe',  # 🫄🏾
-  u'\U0001fac4\U0001f3fc',  # 🫄🏼
-  u'\U0001fac4\U0001f3fd',  # 🫄🏽
-  u'\U0001f930',  # 🤰
-  u'\U0001f930\U0001f3ff',  # 🤰🏿
-  u'\U0001f930\U0001f3fb',  # 🤰🏻
-  u'\U0001f930\U0001f3fe',  # 🤰🏾
-  u'\U0001f930\U0001f3fc',  # 🤰🏼
-  u'\U0001f930\U0001f3fd',  # 🤰🏽
-  u'\U0001f968',  # 🥨
-  u'\U0001f934',  # 🤴
-  u'\U0001f934\U0001f3ff',  # 🤴🏿
-  u'\U0001f934\U0001f3fb',  # 🤴🏻
-  u'\U0001f934\U0001f3fe',  # 🤴🏾
-  u'\U0001f934\U0001f3fc',  # 🤴🏼
-  u'\U0001f934\U0001f3fd',  # 🤴🏽
-  u'\U0001f478',  # 👸
-  u'\U0001f478\U0001f3ff',  # 👸🏿
-  u'\U0001f478\U0001f3fb',  # 👸🏻
-  u'\U0001f478\U0001f3fe',  # 👸🏾
-  u'\U0001f478\U0001f3fc',  # 👸🏼
-  u'\U0001f478\U0001f3fd',  # 👸🏽
-  u'\U0001f5a8\U0000fe0f',  # 🖨️
-  u'\U0001f5a8',  # 🖨
-  u'\U0001f6ab',  # 🚫
-  u'\U0001f7e3',  # 🟣
-  u'\U0001f49c',  # 💜
-  u'\U0001f7ea',  # 🟪
-  u'\U0001f45b',  # 👛
-  u'\U0001f4cc',  # 📌
-  u'\U0001f9e9',  # 🧩
-  u'\U0001f407',  # 🐇
-  u'\U0001f430',  # 🐰
-  u'\U0001f99d',  # 🦝
-  u'\U0001f3ce\U0000fe0f',  # 🏎️
-  u'\U0001f3ce',  # 🏎
-  u'\U0001f4fb',  # 📻
-  u'\U0001f518',  # 🔘
-  u'\U00002622\U0000fe0f',  # ☢️
-  u'\U00002622',  # ☢
-  u'\U0001f683',  # 🚃
-  u'\U0001f6e4\U0000fe0f',  # 🛤️
-  u'\U0001f6e4',  # 🛤
-  u'\U0001f308',  # 🌈
-  u'\U0001f3f3\U0000fe0f\U0000200d\U0001f308',  # 🏳️‍🌈
-  u'\U0001f3f3\U0000200d\U0001f308',  # 🏳‍🌈
-  u'\U0001f91a',  # 🤚
-  u'\U0001f91a\U0001f3ff',  # 🤚🏿
-  u'\U0001f91a\U0001f3fb',  # 🤚🏻
-  u'\U0001f91a\U0001f3fe',  # 🤚🏾
-  u'\U0001f91a\U0001f3fc',  # 🤚🏼
-  u'\U0001f91a\U0001f3fd',  # 🤚🏽
-  u'\U0000270a',  # ✊
-  u'\U0000270a\U0001f3ff',  # ✊🏿
-  u'\U0000270a\U0001f3fb',  # ✊🏻
-  u'\U0000270a\U0001f3fe',  # ✊🏾
-  u'\U0000270a\U0001f3fc',  # ✊🏼
-  u'\U0000270a\U0001f3fd',  # ✊🏽
-  u'\U0000270b',  # ✋
-  u'\U0000270b\U0001f3ff',  # ✋🏿
-  u'\U0000270b\U0001f3fb',  # ✋🏻
-  u'\U0000270b\U0001f3fe',  # ✋🏾
-  u'\U0000270b\U0001f3fc',  # ✋🏼
-  u'\U0000270b\U0001f3fd',  # ✋🏽
-  u'\U0001f64c',  # 🙌
-  u'\U0001f64c\U0001f3ff',  # 🙌🏿
-  u'\U0001f64c\U0001f3fb',  # 🙌🏻
-  u'\U0001f64c\U0001f3fe',  # 🙌🏾
-  u'\U0001f64c\U0001f3fc',  # 🙌🏼
-  u'\U0001f64c\U0001f3fd',  # 🙌🏽
-  u'\U0001f40f',  # 🐏
-  u'\U0001f400',  # 🐀
-  u'\U0001fa92',  # 🪒
-  u'\U0001f9fe',  # 🧾
-  u'\U000023fa\U0000fe0f',  # ⏺️
-  u'\U000023fa',  # ⏺
-  u'\U0000267b\U0000fe0f',  # ♻️
-  u'\U0000267b',  # ♻
-  u'\U0001f34e',  # 🍎
-  u'\U0001f534',  # 🔴
-  u'\U0001f9e7',  # 🧧
-  u'\U00002757',  # ❗
-  u'\U0001f9b0',  # 🦰
-  u'\U00002764\U0000fe0f',  # ❤️
-  u'\U00002764',  # ❤
-  u'\U0001f3ee',  # 🏮
-  u'\U00002753',  # ❓
-  u'\U0001f7e5',  # 🟥
-  u'\U0001f53b',  # 🔻
-  u'\U0001f53a',  # 🔺
-  u'\U000000ae\U0000fe0f',  # ®️
-  u'\U000000ae',  # ®
-  u'\U0001f60c',  # 😌
-  u'\U0001f397\U0000fe0f',  # 🎗️
-  u'\U0001f397',  # 🎗
-  u'\U0001f501',  # 🔁
-  u'\U0001f502',  # 🔂
-  u'\U000026d1\U0000fe0f',  # ⛑️
-  u'\U000026d1',  # ⛑
-  u'\U0001f6bb',  # 🚻
-  u'\U000025c0\U0000fe0f',  # ◀️
-  u'\U000025c0',  # ◀
-  u'\U0001f49e',  # 💞
-  u'\U0001f98f',  # 🦏
-  u'\U0001f380',  # 🎀
-  u'\U0001f359',  # 🍙
-  u'\U0001f358',  # 🍘
-  u'\U0001f91c',  # 🤜
-  u'\U0001f91c\U0001f3ff',  # 🤜🏿
-  u'\U0001f91c\U0001f3fb',  # 🤜🏻
-  u'\U0001f91c\U0001f3fe',  # 🤜🏾
-  u'\U0001f91c\U0001f3fc',  # 🤜🏼
-  u'\U0001f91c\U0001f3fd',  # 🤜🏽
-  u'\U0001f5ef\U0000fe0f',  # 🗯️
-  u'\U0001f5ef',  # 🗯
-  u'\U000027a1\U0000fe0f',  # ➡️
-  u'\U000027a1',  # ➡
-  u'\U00002935\U0000fe0f',  # ⤵️
-  u'\U00002935',  # ⤵
-  u'\U000021a9\U0000fe0f',  # ↩️
-  u'\U000021a9',  # ↩
-  u'\U00002934\U0000fe0f',  # ⤴️
-  u'\U00002934',  # ⤴
-  u'\U0001faf1',  # 🫱
-  u'\U0001faf1\U0001f3ff',  # 🫱🏿
-  u'\U0001faf1\U0001f3fb',  # 🫱🏻
-  u'\U0001faf1\U0001f3fe',  # 🫱🏾
-  u'\U0001faf1\U0001f3fc',  # 🫱🏼
-  u'\U0001faf1\U0001f3fd',  # 🫱🏽
-  u'\U0001faf8',  # 🫸
-  u'\U0001faf8\U0001f3ff',  # 🫸🏿
-  u'\U0001faf8\U0001f3fb',  # 🫸🏻
-  u'\U0001faf8\U0001f3fe',  # 🫸🏾
-  u'\U0001faf8\U0001f3fc',  # 🫸🏼
-  u'\U0001faf8\U0001f3fd',  # 🫸🏽
-  u'\U0001f48d',  # 💍
-  u'\U0001f6df',  # 🛟
-  u'\U0001fa90',  # 🪐
-  u'\U0001f360',  # 🍠
-  u'\U0001f916',  # 🤖
-  u'\U0001faa8',  # 🪨
-  u'\U0001f680',  # 🚀
-  u'\U0001f9fb',  # 🧻
-  u'\U0001f5de\U0000fe0f',  # 🗞️
-  u'\U0001f5de',  # 🗞
-  u'\U0001f3a2',  # 🎢
-  u'\U0001f6fc',  # 🛼
-  u'\U0001f923',  # 🤣
-  u'\U0001f413',  # 🐓
-  u'\U0001fadc',  # 🫜
-  u'\U0001f339',  # 🌹
-  u'\U0001f3f5\U0000fe0f',  # 🏵️
-  u'\U0001f3f5',  # 🏵
-  u'\U0001f4cd',  # 📍
-  u'\U0001f3c9',  # 🏉
-  u'\U0001f3bd',  # 🎽
-  u'\U0001f45f',  # 👟
-  u'\U0001f625',  # 😥
-  u'\U0001f9f7',  # 🧷
-  u'\U0001f9ba',  # 🦺
-  u'\U000026f5',  # ⛵
-  u'\U0001f376',  # 🍶
-  u'\U0001f9c2',  # 🧂
-  u'\U0001fae1',  # 🫡
-  u'\U0001f96a',  # 🥪
-  u'\U0001f97b',  # 🥻
-  u'\U0001f6f0\U0000fe0f',  # 🛰️
-  u'\U0001f6f0',  # 🛰
-  u'\U0001f4e1',  # 📡
-  u'\U0001f995',  # 🦕
-  u'\U0001f3b7',  # 🎷
-  u'\U0001f9e3',  # 🧣
-  u'\U0001f3eb',  # 🏫
-  u'\U0001f9d1\U0000200d\U0001f52c',  # 🧑‍🔬
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f52c',  # 🧑🏿‍🔬
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f52c',  # 🧑🏻‍🔬
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f52c',  # 🧑🏾‍🔬
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f52c',  # 🧑🏼‍🔬
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f52c',  # 🧑🏽‍🔬
-  u'\U00002702\U0000fe0f',  # ✂️
-  u'\U00002702',  # ✂
-  u'\U0001f982',  # 🦂
-  u'\U0001fa9b',  # 🪛
-  u'\U0001f4dc',  # 📜
-  u'\U0001f9ad',  # 🦭
-  u'\U0001f4ba',  # 💺
-  u'\U0001f648',  # 🙈
-  u'\U0001f331',  # 🌱
-  u'\U0001f933',  # 🤳
-  u'\U0001f933\U0001f3ff',  # 🤳🏿
-  u'\U0001f933\U0001f3fb',  # 🤳🏻
-  u'\U0001f933\U0001f3fe',  # 🤳🏾
-  u'\U0001f933\U0001f3fc',  # 🤳🏼
-  u'\U0001f933\U0001f3fd',  # 🤳🏽
-  u'\U0001f415\U0000200d\U0001f9ba',  # 🐕‍🦺
-  u'\U0001f562',  # 🕢
-  u'\U0001f556',  # 🕖
-  u'\U0001faa1',  # 🪡
-  u'\U0001fae8',  # 🫨
-  u'\U0001f958',  # 🥘
-  u'\U00002618\U0000fe0f',  # ☘️
-  u'\U00002618',  # ☘
-  u'\U0001f988',  # 🦈
-  u'\U0001f367',  # 🍧
-  u'\U0001f33e',  # 🌾
-  u'\U0001f6e1\U0000fe0f',  # 🛡️
-  u'\U0001f6e1',  # 🛡
-  u'\U000026e9\U0000fe0f',  # ⛩️
-  u'\U000026e9',  # ⛩
-  u'\U0001f6a2',  # 🚢
-  u'\U0001f320',  # 🌠
-  u'\U0001f6cd\U0000fe0f',  # 🛍️
-  u'\U0001f6cd',  # 🛍
-  u'\U0001f6d2',  # 🛒
-  u'\U0001f370',  # 🍰
-  u'\U0001fa73',  # 🩳
-  u'\U0001fa8f',  # 🪏
-  u'\U0001f6bf',  # 🚿
-  u'\U0001f990',  # 🦐
-  u'\U0001f500',  # 🔀
-  u'\U0001f92b',  # 🤫
-  u'\U0001f918',  # 🤘
-  u'\U0001f918\U0001f3ff',  # 🤘🏿
-  u'\U0001f918\U0001f3fb',  # 🤘🏻
-  u'\U0001f918\U0001f3fe',  # 🤘🏾
-  u'\U0001f918\U0001f3fc',  # 🤘🏼
-  u'\U0001f918\U0001f3fd',  # 🤘🏽
-  u'\U0001f9d1\U0000200d\U0001f3a4',  # 🧑‍🎤
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f3a4',  # 🧑🏿‍🎤
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f3a4',  # 🧑🏻‍🎤
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f3a4',  # 🧑🏾‍🎤
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f3a4',  # 🧑🏼‍🎤
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f3a4',  # 🧑🏽‍🎤
-  u'\U0001f561',  # 🕡
-  u'\U0001f555',  # 🕕
-  u'\U0001f6f9',  # 🛹
-  u'\U000026f7\U0000fe0f',  # ⛷️
-  u'\U000026f7',  # ⛷
-  u'\U0001f3bf',  # 🎿
-  u'\U0001f480',  # 💀
-  u'\U00002620\U0000fe0f',  # ☠️
-  u'\U00002620',  # ☠
-  u'\U0001f9a8',  # 🦨
-  u'\U0001f6f7',  # 🛷
-  u'\U0001f634',  # 😴
-  u'\U0001f62a',  # 😪
-  u'\U0001f641',  # 🙁
-  u'\U0001f642',  # 🙂
-  u'\U0001f3b0',  # 🎰
-  u'\U0001f9a5',  # 🦥
-  u'\U0001f6e9\U0000fe0f',  # 🛩️
-  u'\U0001f6e9',  # 🛩
-  u'\U0001f539',  # 🔹
-  u'\U0001f538',  # 🔸
-  u'\U0001f63b',  # 😻
-  u'\U0000263a\U0000fe0f',  # ☺️
-  u'\U0000263a',  # ☺
-  u'\U0001f607',  # 😇
-  u'\U0001f60d',  # 😍
-  u'\U0001f970',  # 🥰
-  u'\U0001f608',  # 😈
-  u'\U0001f917',  # 🤗
-  u'\U0001f60a',  # 😊
-  u'\U0001f60e',  # 😎
-  u'\U0001f972',  # 🥲
-  u'\U0001f60f',  # 😏
-  u'\U0001f40c',  # 🐌
-  u'\U0001f40d',  # 🐍
-  u'\U0001f927',  # 🤧
-  u'\U0001f3d4\U0000fe0f',  # 🏔️
-  u'\U0001f3d4',  # 🏔
-  u'\U0001f3c2',  # 🏂
-  u'\U0001f3c2\U0001f3ff',  # 🏂🏿
-  u'\U0001f3c2\U0001f3fb',  # 🏂🏻
-  u'\U0001f3c2\U0001f3fe',  # 🏂🏾
-  u'\U0001f3c2\U0001f3fc',  # 🏂🏼
-  u'\U0001f3c2\U0001f3fd',  # 🏂🏽
-  u'\U00002744\U0000fe0f',  # ❄️
-  u'\U00002744',  # ❄
-  u'\U00002603\U0000fe0f',  # ☃️
-  u'\U00002603',  # ☃
-  u'\U000026c4',  # ⛄
-  u'\U0001f9fc',  # 🧼
-  u'\U000026bd',  # ⚽
-  u'\U0001f9e6',  # 🧦
-  u'\U0001f366',  # 🍦
-  u'\U0001f94e',  # 🥎
-  u'\U00002660\U0000fe0f',  # ♠️
-  u'\U00002660',  # ♠
-  u'\U0001f35d',  # 🍝
-  u'\U00002747\U0000fe0f',  # ❇️
-  u'\U00002747',  # ❇
-  u'\U0001f387',  # 🎇
-  u'\U00002728',  # ✨
-  u'\U0001f496',  # 💖
-  u'\U0001f64a',  # 🙊
-  u'\U0001f50a',  # 🔊
-  u'\U0001f508',  # 🔈
-  u'\U0001f509',  # 🔉
-  u'\U0001f5e3\U0000fe0f',  # 🗣️
-  u'\U0001f5e3',  # 🗣
-  u'\U0001f4ac',  # 💬
-  u'\U0001f6a4',  # 🚤
-  u'\U0001f577\U0000fe0f',  # 🕷️
-  u'\U0001f577',  # 🕷
-  u'\U0001f578\U0000fe0f',  # 🕸️
-  u'\U0001f578',  # 🕸
-  u'\U0001f5d3\U0000fe0f',  # 🗓️
-  u'\U0001f5d3',  # 🗓
-  u'\U0001f5d2\U0000fe0f',  # 🗒️
-  u'\U0001f5d2',  # 🗒
-  u'\U0001f41a',  # 🐚
-  u'\U0001fadf',  # 🫟
-  u'\U0001f9fd',  # 🧽
-  u'\U0001f944',  # 🥄
-  u'\U0001f699',  # 🚙
-  u'\U0001f3c5',  # 🏅
-  u'\U0001f433',  # 🐳
-  u'\U0001f991',  # 🦑
-  u'\U0001f61d',  # 😝
-  u'\U0001f3df\U0000fe0f',  # 🏟️
-  u'\U0001f3df',  # 🏟
-  u'\U00002b50',  # ⭐
-  u'\U0001f929',  # 🤩
-  u'\U0000262a\U0000fe0f',  # ☪️
-  u'\U0000262a',  # ☪
-  u'\U00002721\U0000fe0f',  # ✡️
-  u'\U00002721',  # ✡
-  u'\U0001f689',  # 🚉
-  u'\U0001f35c',  # 🍜
-  u'\U0001fa7a',  # 🩺
-  u'\U000023f9\U0000fe0f',  # ⏹️
-  u'\U000023f9',  # ⏹
-  u'\U0001f6d1',  # 🛑
-  u'\U000023f1\U0000fe0f',  # ⏱️
-  u'\U000023f1',  # ⏱
-  u'\U0001f4cf',  # 📏
-  u'\U0001f353',  # 🍓
-  u'\U0001f9d1\U0000200d\U0001f393',  # 🧑‍🎓
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f393',  # 🧑🏿‍🎓
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f393',  # 🧑🏻‍🎓
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f393',  # 🧑🏾‍🎓
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f393',  # 🧑🏼‍🎓
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f393',  # 🧑🏽‍🎓
-  u'\U0001f399\U0000fe0f',  # 🎙️
-  u'\U0001f399',  # 🎙
-  u'\U0001f959',  # 🥙
-  u'\U00002600\U0000fe0f',  # ☀️
-  u'\U00002600',  # ☀
-  u'\U000026c5',  # ⛅
-  u'\U0001f325\U0000fe0f',  # 🌥️
-  u'\U0001f325',  # 🌥
-  u'\U0001f326\U0000fe0f',  # 🌦️
-  u'\U0001f326',  # 🌦
-  u'\U0001f324\U0000fe0f',  # 🌤️
-  u'\U0001f324',  # 🌤
-  u'\U0001f31e',  # 🌞
-  u'\U0001f33b',  # 🌻
-  u'\U0001f576\U0000fe0f',  # 🕶️
-  u'\U0001f576',  # 🕶
-  u'\U0001f305',  # 🌅
-  u'\U0001f304',  # 🌄
-  u'\U0001f307',  # 🌇
-  u'\U0001f9b8',  # 🦸
-  u'\U0001f9b8\U0001f3ff',  # 🦸🏿
-  u'\U0001f9b8\U0001f3fb',  # 🦸🏻
-  u'\U0001f9b8\U0001f3fe',  # 🦸🏾
-  u'\U0001f9b8\U0001f3fc',  # 🦸🏼
-  u'\U0001f9b8\U0001f3fd',  # 🦸🏽
-  u'\U0001f9b9',  # 🦹
-  u'\U0001f9b9\U0001f3ff',  # 🦹🏿
-  u'\U0001f9b9\U0001f3fb',  # 🦹🏻
-  u'\U0001f9b9\U0001f3fe',  # 🦹🏾
-  u'\U0001f9b9\U0001f3fc',  # 🦹🏼
-  u'\U0001f9b9\U0001f3fd',  # 🦹🏽
-  u'\U0001f363',  # 🍣
-  u'\U0001f69f',  # 🚟
-  u'\U0001f9a2',  # 🦢
-  u'\U0001f4a6',  # 💦
-  u'\U0001f54d',  # 🕍
-  u'\U0001f489',  # 💉
-  u'\U0001f455',  # 👕
-  u'\U0001f32e',  # 🌮
-  u'\U0001f961',  # 🥡
-  u'\U0001fad4',  # 🫔
-  u'\U0001f38b',  # 🎋
-  u'\U0001f34a',  # 🍊
-  u'\U0001f695',  # 🚕
-  u'\U0001f9d1\U0000200d\U0001f3eb',  # 🧑‍🏫
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f3eb',  # 🧑🏿‍🏫
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f3eb',  # 🧑🏻‍🏫
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f3eb',  # 🧑🏾‍🏫
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f3eb',  # 🧑🏼‍🏫
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f3eb',  # 🧑🏽‍🏫
-  u'\U0001f375',  # 🍵
-  u'\U0001fad6',  # 🫖
-  u'\U0001f4c6',  # 📆
-  u'\U0001f9d1\U0000200d\U0001f4bb',  # 🧑‍💻
-  u'\U0001f9d1\U0001f3ff\U0000200d\U0001f4bb',  # 🧑🏿‍💻
-  u'\U0001f9d1\U0001f3fb\U0000200d\U0001f4bb',  # 🧑🏻‍💻
-  u'\U0001f9d1\U0001f3fe\U0000200d\U0001f4bb',  # 🧑🏾‍💻
-  u'\U0001f9d1\U0001f3fc\U0000200d\U0001f4bb',  # 🧑🏼‍💻
-  u'\U0001f9d1\U0001f3fd\U0000200d\U0001f4bb',  # 🧑🏽‍💻
-  u'\U0001f9f8',  # 🧸
-  u'\U0000260e\U0000fe0f',  # ☎️
-  u'\U0000260e',  # ☎
-  u'\U0001f4de',  # 📞
-  u'\U0001f52d',  # 🔭
-  u'\U0001f4fa',  # 📺
-  u'\U0001f565',  # 🕥
-  u'\U0001f559',  # 🕙
-  u'\U0001f3be',  # 🎾
-  u'\U000026fa',  # ⛺
-  u'\U0001f9ea',  # 🧪
-  u'\U0001f321\U0000fe0f',  # 🌡️
-  u'\U0001f321',  # 🌡
-  u'\U0001f914',  # 🤔
-  u'\U0001fa74',  # 🩴
-  u'\U0001f4ad',  # 💭
-  u'\U0001f9f5',  # 🧵
-  u'\U0001f55e',  # 🕞
-  u'\U0001f552',  # 🕒
-  u'\U0001f44e',  # 👎
-  u'\U0001f44e\U0001f3ff',  # 👎🏿
-  u'\U0001f44e\U0001f3fb',  # 👎🏻
-  u'\U0001f44e\U0001f3fe',  # 👎🏾
-  u'\U0001f44e\U0001f3fc',  # 👎🏼
-  u'\U0001f44e\U0001f3fd',  # 👎🏽
-  u'\U0001f44d',  # 👍
-  u'\U0001f44d\U0001f3ff',  # 👍🏿
-  u'\U0001f44d\U0001f3fb',  # 👍🏻
-  u'\U0001f44d\U0001f3fe',  # 👍🏾
-  u'\U0001f44d\U0001f3fc',  # 👍🏼
-  u'\U0001f44d\U0001f3fd',  # 👍🏽
-  u'\U0001f3ab',  # 🎫
-  u'\U0001f405',  # 🐅
-  u'\U0001f42f',  # 🐯
-  u'\U000023f2\U0000fe0f',  # ⏲️
-  u'\U000023f2',  # ⏲
-  u'\U0001f62b',  # 😫
-  u'\U0001f6bd',  # 🚽
-  u'\U0001f345',  # 🍅
-  u'\U0001f445',  # 👅
-  u'\U0001f9f0',  # 🧰
-  u'\U0001f9b7',  # 🦷
-  u'\U0001faa5',  # 🪥
-  u'\U0001f3a9',  # 🎩
-  u'\U0001f32a\U0000fe0f',  # 🌪️
-  u'\U0001f32a',  # 🌪
-  u'\U0001f5b2\U0000fe0f',  # 🖲️
-  u'\U0001f5b2',  # 🖲
-  u'\U0001f69c',  # 🚜
-  u'\U00002122\U0000fe0f',  # ™️
-  u'\U00002122',  # ™
-  u'\U0001f686',  # 🚆
-  u'\U0001f68a',  # 🚊
-  u'\U0001f68b',  # 🚋
-  u'\U0001f3f3\U0000fe0f\U0000200d\U000026a7\U0000fe0f',  # 🏳️‍⚧️
-  u'\U0001f3f3\U0000200d\U000026a7\U0000fe0f',  # 🏳‍⚧️
-  u'\U0001f3f3\U0000fe0f\U0000200d\U000026a7',  # 🏳️‍⚧
-  u'\U0001f3f3\U0000200d\U000026a7',  # 🏳‍⚧
-  u'\U000026a7\U0000fe0f',  # ⚧️
-  u'\U000026a7',  # ⚧
-  u'\U0001f6a9',  # 🚩
-  u'\U0001f4d0',  # 📐
-  u'\U0001f531',  # 🔱
-  u'\U0001f9cc',  # 🧌
-  u'\U0001f68e',  # 🚎
-  u'\U0001f3c6',  # 🏆
-  u'\U0001f379',  # 🍹
-  u'\U0001f420',  # 🐠
-  u'\U0001f3ba',  # 🎺
-  u'\U0001f337',  # 🌷
-  u'\U0001f943',  # 🥃
-  u'\U0001f983',  # 🦃
-  u'\U0001f422',  # 🐢
-  u'\U0001f567',  # 🕧
-  u'\U0001f55b',  # 🕛
-  u'\U0001f42b',  # 🐫
-  u'\U0001f55d',  # 🕝
-  u'\U0001f495',  # 💕
-  u'\U0001f551',  # 🕑
-  u'\U00002602\U0000fe0f',  # ☂️
-  u'\U00002602',  # ☂
-  u'\U000026f1\U0000fe0f',  # ⛱️
-  u'\U000026f1',  # ⛱
-  u'\U00002614',  # ☔
-  u'\U0001f612',  # 😒
-  u'\U0001f984',  # 🦄
-  u'\U0001f513',  # 🔓
-  u'\U00002195\U0000fe0f',  # ↕️
-  u'\U00002195',  # ↕
-  u'\U00002196\U0000fe0f',  # ↖️
-  u'\U00002196',  # ↖
-  u'\U00002197\U0000fe0f',  # ↗️
-  u'\U00002197',  # ↗
-  u'\U00002b06\U0000fe0f',  # ⬆️
-  u'\U00002b06',  # ⬆
-  u'\U0001f643',  # 🙃
-  u'\U0001f53c',  # 🔼
-  u'\U0001f9db',  # 🧛
-  u'\U0001f9db\U0001f3ff',  # 🧛🏿
-  u'\U0001f9db\U0001f3fb',  # 🧛🏻
-  u'\U0001f9db\U0001f3fe',  # 🧛🏾
-  u'\U0001f9db\U0001f3fc',  # 🧛🏼
-  u'\U0001f9db\U0001f3fd',  # 🧛🏽
-  u'\U0001f6a6',  # 🚦
-  u'\U0001f4f3',  # 📳
-  u'\U0000270c\U0000fe0f',  # ✌️
-  u'\U0000270c',  # ✌
-  u'\U0000270c\U0001f3ff',  # ✌🏿
-  u'\U0000270c\U0001f3fb',  # ✌🏻
-  u'\U0000270c\U0001f3fe',  # ✌🏾
-  u'\U0000270c\U0001f3fc',  # ✌🏼
-  u'\U0000270c\U0001f3fd',  # ✌🏽
-  u'\U0001f4f9',  # 📹
-  u'\U0001f3ae',  # 🎮
-  u'\U0001f4fc',  # 📼
-  u'\U0001f3bb',  # 🎻
-  u'\U0001f30b',  # 🌋
-  u'\U0001f3d0',  # 🏐
-  u'\U0001f596',  # 🖖
-  u'\U0001f596\U0001f3ff',  # 🖖🏿
-  u'\U0001f596\U0001f3fb',  # 🖖🏻
-  u'\U0001f596\U0001f3fe',  # 🖖🏾
-  u'\U0001f596\U0001f3fc',  # 🖖🏼
-  u'\U0001f596\U0001f3fd',  # 🖖🏽
-  u'\U0001f9c7',  # 🧇
-  u'\U0001f318',  # 🌘
-  u'\U0001f316',  # 🌖
-  u'\U000026a0\U0000fe0f',  # ⚠️
-  u'\U000026a0',  # ⚠
-  u'\U0001f5d1\U0000fe0f',  # 🗑️
-  u'\U0001f5d1',  # 🗑
-  u'\U0000231a',  # ⌚
-  u'\U0001f403',  # 🐃
-  u'\U0001f6be',  # 🚾
-  u'\U0001f52b',  # 🔫
-  u'\U0001f30a',  # 🌊
-  u'\U0001f349',  # 🍉
-  u'\U0001f44b',  # 👋
-  u'\U0001f44b\U0001f3ff',  # 👋🏿
-  u'\U0001f44b\U0001f3fb',  # 👋🏻
-  u'\U0001f44b\U0001f3fe',  # 👋🏾
-  u'\U0001f44b\U0001f3fc',  # 👋🏼
-  u'\U0001f44b\U0001f3fd',  # 👋🏽
-  u'\U00003030\U0000fe0f',  # 〰️
-  u'\U00003030',  # 〰
-  u'\U0001f312',  # 🌒
-  u'\U0001f314',  # 🌔
-  u'\U0001f640',  # 🙀
-  u'\U0001f629',  # 😩
-  u'\U0001f492',  # 💒
-  u'\U0001f40b',  # 🐋
-  u'\U0001f6de',  # 🛞
-  u'\U00002638\U0000fe0f',  # ☸️
-  u'\U00002638',  # ☸
-  u'\U0000267f',  # ♿
-  u'\U0001f9af',  # 🦯
-  u'\U000026aa',  # ⚪
-  u'\U00002755',  # ❕
-  u'\U0001f3f3\U0000fe0f',  # 🏳️
-  u'\U0001f3f3',  # 🏳
-  u'\U0001f4ae',  # 💮
-  u'\U0001f9b3',  # 🦳
-  u'\U0001f90d',  # 🤍
-  u'\U00002b1c',  # ⬜
-  u'\U000025fd',  # ◽
-  u'\U000025fb\U0000fe0f',  # ◻️
-  u'\U000025fb',  # ◻
-  u'\U00002754',  # ❔
-  u'\U000025ab\U0000fe0f',  # ▫️
-  u'\U000025ab',  # ▫
-  u'\U0001f533',  # 🔳
-  u'\U0001f940',  # 🥀
-  u'\U0001f390',  # 🎐
-  u'\U0001f32c\U0000fe0f',  # 🌬️
-  u'\U0001f32c',  # 🌬
-  u'\U0001fa9f',  # 🪟
-  u'\U0001f377',  # 🍷
-  u'\U0001fabd',  # 🪽
-  u'\U0001f609',  # 😉
-  u'\U0001f61c',  # 😜
-  u'\U0001f6dc',  # 🛜
-  u'\U0001f43a',  # 🐺
-  u'\U0001f469',  # 👩
-  u'\U0001f46b',  # 👫
-  u'\U0001f46b\U0001f3ff',  # 👫🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👩🏿‍🤝‍👨🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👩🏿‍🤝‍👨🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👩🏿‍🤝‍👨🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👩🏿‍🤝‍👨🏽
-  u'\U0001f46b\U0001f3fb',  # 👫🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👩🏻‍🤝‍👨🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👩🏻‍🤝‍👨🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👩🏻‍🤝‍👨🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👩🏻‍🤝‍👨🏽
-  u'\U0001f46b\U0001f3fe',  # 👫🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👩🏾‍🤝‍👨🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👩🏾‍🤝‍👨🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👩🏾‍🤝‍👨🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👩🏾‍🤝‍👨🏽
-  u'\U0001f46b\U0001f3fc',  # 👫🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👩🏼‍🤝‍👨🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👩🏼‍🤝‍👨🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👩🏼‍🤝‍👨🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd',  # 👩🏼‍🤝‍👨🏽
-  u'\U0001f46b\U0001f3fd',  # 👫🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff',  # 👩🏽‍🤝‍👨🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb',  # 👩🏽‍🤝‍👨🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe',  # 👩🏽‍🤝‍👨🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc',  # 👩🏽‍🤝‍👨🏼
-  u'\U0001f469\U0000200d\U0001f3a8',  # 👩‍🎨
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f3a8',  # 👩🏿‍🎨
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f3a8',  # 👩🏻‍🎨
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f3a8',  # 👩🏾‍🎨
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f3a8',  # 👩🏼‍🎨
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f3a8',  # 👩🏽‍🎨
-  u'\U0001f469\U0000200d\U0001f680',  # 👩‍🚀
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f680',  # 👩🏿‍🚀
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f680',  # 👩🏻‍🚀
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f680',  # 👩🏾‍🚀
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f680',  # 👩🏼‍🚀
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f680',  # 👩🏽‍🚀
-  u'\U0001f469\U0000200d\U0001f9b2',  # 👩‍🦲
-  u'\U0001f9d4\U0000200d\U00002640\U0000fe0f',  # 🧔‍♀️
-  u'\U0001f9d4\U0000200d\U00002640',  # 🧔‍♀
-  u'\U0001f6b4\U0000200d\U00002640\U0000fe0f',  # 🚴‍♀️
-  u'\U0001f6b4\U0000200d\U00002640',  # 🚴‍♀
-  u'\U0001f6b4\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🚴🏿‍♀️
-  u'\U0001f6b4\U0001f3ff\U0000200d\U00002640',  # 🚴🏿‍♀
-  u'\U0001f6b4\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🚴🏻‍♀️
-  u'\U0001f6b4\U0001f3fb\U0000200d\U00002640',  # 🚴🏻‍♀
-  u'\U0001f6b4\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🚴🏾‍♀️
-  u'\U0001f6b4\U0001f3fe\U0000200d\U00002640',  # 🚴🏾‍♀
-  u'\U0001f6b4\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🚴🏼‍♀️
-  u'\U0001f6b4\U0001f3fc\U0000200d\U00002640',  # 🚴🏼‍♀
-  u'\U0001f6b4\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🚴🏽‍♀️
-  u'\U0001f6b4\U0001f3fd\U0000200d\U00002640',  # 🚴🏽‍♀
-  u'\U0001f471\U0000200d\U00002640\U0000fe0f',  # 👱‍♀️
-  u'\U0001f471\U0000200d\U00002640',  # 👱‍♀
-  u'\U000026f9\U0000fe0f\U0000200d\U00002640\U0000fe0f',  # ⛹️‍♀️
-  u'\U000026f9\U0000200d\U00002640\U0000fe0f',  # ⛹‍♀️
-  u'\U000026f9\U0000fe0f\U0000200d\U00002640',  # ⛹️‍♀
-  u'\U000026f9\U0000200d\U00002640',  # ⛹‍♀
-  u'\U000026f9\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # ⛹🏿‍♀️
-  u'\U000026f9\U0001f3ff\U0000200d\U00002640',  # ⛹🏿‍♀
-  u'\U000026f9\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # ⛹🏻‍♀️
-  u'\U000026f9\U0001f3fb\U0000200d\U00002640',  # ⛹🏻‍♀
-  u'\U000026f9\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # ⛹🏾‍♀️
-  u'\U000026f9\U0001f3fe\U0000200d\U00002640',  # ⛹🏾‍♀
-  u'\U000026f9\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # ⛹🏼‍♀️
-  u'\U000026f9\U0001f3fc\U0000200d\U00002640',  # ⛹🏼‍♀
-  u'\U000026f9\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # ⛹🏽‍♀️
-  u'\U000026f9\U0001f3fd\U0000200d\U00002640',  # ⛹🏽‍♀
-  u'\U0001f647\U0000200d\U00002640\U0000fe0f',  # 🙇‍♀️
-  u'\U0001f647\U0000200d\U00002640',  # 🙇‍♀
-  u'\U0001f647\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🙇🏿‍♀️
-  u'\U0001f647\U0001f3ff\U0000200d\U00002640',  # 🙇🏿‍♀
-  u'\U0001f647\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🙇🏻‍♀️
-  u'\U0001f647\U0001f3fb\U0000200d\U00002640',  # 🙇🏻‍♀
-  u'\U0001f647\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🙇🏾‍♀️
-  u'\U0001f647\U0001f3fe\U0000200d\U00002640',  # 🙇🏾‍♀
-  u'\U0001f647\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🙇🏼‍♀️
-  u'\U0001f647\U0001f3fc\U0000200d\U00002640',  # 🙇🏼‍♀
-  u'\U0001f647\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🙇🏽‍♀️
-  u'\U0001f647\U0001f3fd\U0000200d\U00002640',  # 🙇🏽‍♀
-  u'\U0001f938\U0000200d\U00002640\U0000fe0f',  # 🤸‍♀️
-  u'\U0001f938\U0000200d\U00002640',  # 🤸‍♀
-  u'\U0001f938\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤸🏿‍♀️
-  u'\U0001f938\U0001f3ff\U0000200d\U00002640',  # 🤸🏿‍♀
-  u'\U0001f938\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤸🏻‍♀️
-  u'\U0001f938\U0001f3fb\U0000200d\U00002640',  # 🤸🏻‍♀
-  u'\U0001f938\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤸🏾‍♀️
-  u'\U0001f938\U0001f3fe\U0000200d\U00002640',  # 🤸🏾‍♀
-  u'\U0001f938\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤸🏼‍♀️
-  u'\U0001f938\U0001f3fc\U0000200d\U00002640',  # 🤸🏼‍♀
-  u'\U0001f938\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤸🏽‍♀️
-  u'\U0001f938\U0001f3fd\U0000200d\U00002640',  # 🤸🏽‍♀
-  u'\U0001f9d7\U0000200d\U00002640\U0000fe0f',  # 🧗‍♀️
-  u'\U0001f9d7\U0000200d\U00002640',  # 🧗‍♀
-  u'\U0001f9d7\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧗🏿‍♀️
-  u'\U0001f9d7\U0001f3ff\U0000200d\U00002640',  # 🧗🏿‍♀
-  u'\U0001f9d7\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧗🏻‍♀️
-  u'\U0001f9d7\U0001f3fb\U0000200d\U00002640',  # 🧗🏻‍♀
-  u'\U0001f9d7\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧗🏾‍♀️
-  u'\U0001f9d7\U0001f3fe\U0000200d\U00002640',  # 🧗🏾‍♀
-  u'\U0001f9d7\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧗🏼‍♀️
-  u'\U0001f9d7\U0001f3fc\U0000200d\U00002640',  # 🧗🏼‍♀
-  u'\U0001f9d7\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧗🏽‍♀️
-  u'\U0001f9d7\U0001f3fd\U0000200d\U00002640',  # 🧗🏽‍♀
-  u'\U0001f477\U0000200d\U00002640\U0000fe0f',  # 👷‍♀️
-  u'\U0001f477\U0000200d\U00002640',  # 👷‍♀
-  u'\U0001f477\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 👷🏿‍♀️
-  u'\U0001f477\U0001f3ff\U0000200d\U00002640',  # 👷🏿‍♀
-  u'\U0001f477\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 👷🏻‍♀️
-  u'\U0001f477\U0001f3fb\U0000200d\U00002640',  # 👷🏻‍♀
-  u'\U0001f477\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 👷🏾‍♀️
-  u'\U0001f477\U0001f3fe\U0000200d\U00002640',  # 👷🏾‍♀
-  u'\U0001f477\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 👷🏼‍♀️
-  u'\U0001f477\U0001f3fc\U0000200d\U00002640',  # 👷🏼‍♀
-  u'\U0001f477\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 👷🏽‍♀️
-  u'\U0001f477\U0001f3fd\U0000200d\U00002640',  # 👷🏽‍♀
-  u'\U0001f469\U0000200d\U0001f373',  # 👩‍🍳
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f373',  # 👩🏿‍🍳
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f373',  # 👩🏻‍🍳
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f373',  # 👩🏾‍🍳
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f373',  # 👩🏼‍🍳
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f373',  # 👩🏽‍🍳
-  u'\U0001f469\U0000200d\U0001f9b1',  # 👩‍🦱
-  u'\U0001f483',  # 💃
-  u'\U0001f483\U0001f3ff',  # 💃🏿
-  u'\U0001f483\U0001f3fb',  # 💃🏻
-  u'\U0001f483\U0001f3fe',  # 💃🏾
-  u'\U0001f483\U0001f3fc',  # 💃🏼
-  u'\U0001f483\U0001f3fd',  # 💃🏽
-  u'\U0001f469\U0001f3ff',  # 👩🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9b2',  # 👩🏿‍🦲
-  u'\U0001f9d4\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧔🏿‍♀️
-  u'\U0001f9d4\U0001f3ff\U0000200d\U00002640',  # 🧔🏿‍♀
-  u'\U0001f471\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 👱🏿‍♀️
-  u'\U0001f471\U0001f3ff\U0000200d\U00002640',  # 👱🏿‍♀
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9b1',  # 👩🏿‍🦱
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9b0',  # 👩🏿‍🦰
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9b3',  # 👩🏿‍🦳
-  u'\U0001f575\U0000fe0f\U0000200d\U00002640\U0000fe0f',  # 🕵️‍♀️
-  u'\U0001f575\U0000200d\U00002640\U0000fe0f',  # 🕵‍♀️
-  u'\U0001f575\U0000fe0f\U0000200d\U00002640',  # 🕵️‍♀
-  u'\U0001f575\U0000200d\U00002640',  # 🕵‍♀
-  u'\U0001f575\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🕵🏿‍♀️
-  u'\U0001f575\U0001f3ff\U0000200d\U00002640',  # 🕵🏿‍♀
-  u'\U0001f575\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🕵🏻‍♀️
-  u'\U0001f575\U0001f3fb\U0000200d\U00002640',  # 🕵🏻‍♀
-  u'\U0001f575\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🕵🏾‍♀️
-  u'\U0001f575\U0001f3fe\U0000200d\U00002640',  # 🕵🏾‍♀
-  u'\U0001f575\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🕵🏼‍♀️
-  u'\U0001f575\U0001f3fc\U0000200d\U00002640',  # 🕵🏼‍♀
-  u'\U0001f575\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🕵🏽‍♀️
-  u'\U0001f575\U0001f3fd\U0000200d\U00002640',  # 🕵🏽‍♀
-  u'\U0001f9dd\U0000200d\U00002640\U0000fe0f',  # 🧝‍♀️
-  u'\U0001f9dd\U0000200d\U00002640',  # 🧝‍♀
-  u'\U0001f9dd\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧝🏿‍♀️
-  u'\U0001f9dd\U0001f3ff\U0000200d\U00002640',  # 🧝🏿‍♀
-  u'\U0001f9dd\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧝🏻‍♀️
-  u'\U0001f9dd\U0001f3fb\U0000200d\U00002640',  # 🧝🏻‍♀
-  u'\U0001f9dd\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧝🏾‍♀️
-  u'\U0001f9dd\U0001f3fe\U0000200d\U00002640',  # 🧝🏾‍♀
-  u'\U0001f9dd\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧝🏼‍♀️
-  u'\U0001f9dd\U0001f3fc\U0000200d\U00002640',  # 🧝🏼‍♀
-  u'\U0001f9dd\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧝🏽‍♀️
-  u'\U0001f9dd\U0001f3fd\U0000200d\U00002640',  # 🧝🏽‍♀
-  u'\U0001f926\U0000200d\U00002640\U0000fe0f',  # 🤦‍♀️
-  u'\U0001f926\U0000200d\U00002640',  # 🤦‍♀
-  u'\U0001f926\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤦🏿‍♀️
-  u'\U0001f926\U0001f3ff\U0000200d\U00002640',  # 🤦🏿‍♀
-  u'\U0001f926\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤦🏻‍♀️
-  u'\U0001f926\U0001f3fb\U0000200d\U00002640',  # 🤦🏻‍♀
-  u'\U0001f926\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤦🏾‍♀️
-  u'\U0001f926\U0001f3fe\U0000200d\U00002640',  # 🤦🏾‍♀
-  u'\U0001f926\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤦🏼‍♀️
-  u'\U0001f926\U0001f3fc\U0000200d\U00002640',  # 🤦🏼‍♀
-  u'\U0001f926\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤦🏽‍♀️
-  u'\U0001f926\U0001f3fd\U0000200d\U00002640',  # 🤦🏽‍♀
-  u'\U0001f469\U0000200d\U0001f3ed',  # 👩‍🏭
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f3ed',  # 👩🏿‍🏭
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f3ed',  # 👩🏻‍🏭
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f3ed',  # 👩🏾‍🏭
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f3ed',  # 👩🏼‍🏭
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f3ed',  # 👩🏽‍🏭
-  u'\U0001f9da\U0000200d\U00002640\U0000fe0f',  # 🧚‍♀️
-  u'\U0001f9da\U0000200d\U00002640',  # 🧚‍♀
-  u'\U0001f9da\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧚🏿‍♀️
-  u'\U0001f9da\U0001f3ff\U0000200d\U00002640',  # 🧚🏿‍♀
-  u'\U0001f9da\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧚🏻‍♀️
-  u'\U0001f9da\U0001f3fb\U0000200d\U00002640',  # 🧚🏻‍♀
-  u'\U0001f9da\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧚🏾‍♀️
-  u'\U0001f9da\U0001f3fe\U0000200d\U00002640',  # 🧚🏾‍♀
-  u'\U0001f9da\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧚🏼‍♀️
-  u'\U0001f9da\U0001f3fc\U0000200d\U00002640',  # 🧚🏼‍♀
-  u'\U0001f9da\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧚🏽‍♀️
-  u'\U0001f9da\U0001f3fd\U0000200d\U00002640',  # 🧚🏽‍♀
-  u'\U0001f469\U0000200d\U0001f33e',  # 👩‍🌾
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f33e',  # 👩🏿‍🌾
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f33e',  # 👩🏻‍🌾
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f33e',  # 👩🏾‍🌾
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f33e',  # 👩🏼‍🌾
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f33e',  # 👩🏽‍🌾
-  u'\U0001f469\U0000200d\U0001f37c',  # 👩‍🍼
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f37c',  # 👩🏿‍🍼
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f37c',  # 👩🏻‍🍼
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f37c',  # 👩🏾‍🍼
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f37c',  # 👩🏼‍🍼
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f37c',  # 👩🏽‍🍼
-  u'\U0001f469\U0000200d\U0001f692',  # 👩‍🚒
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f692',  # 👩🏿‍🚒
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f692',  # 👩🏻‍🚒
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f692',  # 👩🏾‍🚒
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f692',  # 👩🏼‍🚒
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f692',  # 👩🏽‍🚒
-  u'\U0001f64d\U0000200d\U00002640\U0000fe0f',  # 🙍‍♀️
-  u'\U0001f64d\U0000200d\U00002640',  # 🙍‍♀
-  u'\U0001f64d\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🙍🏿‍♀️
-  u'\U0001f64d\U0001f3ff\U0000200d\U00002640',  # 🙍🏿‍♀
-  u'\U0001f64d\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🙍🏻‍♀️
-  u'\U0001f64d\U0001f3fb\U0000200d\U00002640',  # 🙍🏻‍♀
-  u'\U0001f64d\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🙍🏾‍♀️
-  u'\U0001f64d\U0001f3fe\U0000200d\U00002640',  # 🙍🏾‍♀
-  u'\U0001f64d\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🙍🏼‍♀️
-  u'\U0001f64d\U0001f3fc\U0000200d\U00002640',  # 🙍🏼‍♀
-  u'\U0001f64d\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🙍🏽‍♀️
-  u'\U0001f64d\U0001f3fd\U0000200d\U00002640',  # 🙍🏽‍♀
-  u'\U0001f9de\U0000200d\U00002640\U0000fe0f',  # 🧞‍♀️
-  u'\U0001f9de\U0000200d\U00002640',  # 🧞‍♀
-  u'\U0001f645\U0000200d\U00002640\U0000fe0f',  # 🙅‍♀️
-  u'\U0001f645\U0000200d\U00002640',  # 🙅‍♀
-  u'\U0001f645\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🙅🏿‍♀️
-  u'\U0001f645\U0001f3ff\U0000200d\U00002640',  # 🙅🏿‍♀
-  u'\U0001f645\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🙅🏻‍♀️
-  u'\U0001f645\U0001f3fb\U0000200d\U00002640',  # 🙅🏻‍♀
-  u'\U0001f645\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🙅🏾‍♀️
-  u'\U0001f645\U0001f3fe\U0000200d\U00002640',  # 🙅🏾‍♀
-  u'\U0001f645\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🙅🏼‍♀️
-  u'\U0001f645\U0001f3fc\U0000200d\U00002640',  # 🙅🏼‍♀
-  u'\U0001f645\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🙅🏽‍♀️
-  u'\U0001f645\U0001f3fd\U0000200d\U00002640',  # 🙅🏽‍♀
-  u'\U0001f646\U0000200d\U00002640\U0000fe0f',  # 🙆‍♀️
-  u'\U0001f646\U0000200d\U00002640',  # 🙆‍♀
-  u'\U0001f646\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🙆🏿‍♀️
-  u'\U0001f646\U0001f3ff\U0000200d\U00002640',  # 🙆🏿‍♀
-  u'\U0001f646\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🙆🏻‍♀️
-  u'\U0001f646\U0001f3fb\U0000200d\U00002640',  # 🙆🏻‍♀
-  u'\U0001f646\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🙆🏾‍♀️
-  u'\U0001f646\U0001f3fe\U0000200d\U00002640',  # 🙆🏾‍♀
-  u'\U0001f646\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🙆🏼‍♀️
-  u'\U0001f646\U0001f3fc\U0000200d\U00002640',  # 🙆🏼‍♀
-  u'\U0001f646\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🙆🏽‍♀️
-  u'\U0001f646\U0001f3fd\U0000200d\U00002640',  # 🙆🏽‍♀
-  u'\U0001f487\U0000200d\U00002640\U0000fe0f',  # 💇‍♀️
-  u'\U0001f487\U0000200d\U00002640',  # 💇‍♀
-  u'\U0001f487\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 💇🏿‍♀️
-  u'\U0001f487\U0001f3ff\U0000200d\U00002640',  # 💇🏿‍♀
-  u'\U0001f487\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 💇🏻‍♀️
-  u'\U0001f487\U0001f3fb\U0000200d\U00002640',  # 💇🏻‍♀
-  u'\U0001f487\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 💇🏾‍♀️
-  u'\U0001f487\U0001f3fe\U0000200d\U00002640',  # 💇🏾‍♀
-  u'\U0001f487\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 💇🏼‍♀️
-  u'\U0001f487\U0001f3fc\U0000200d\U00002640',  # 💇🏼‍♀
-  u'\U0001f487\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 💇🏽‍♀️
-  u'\U0001f487\U0001f3fd\U0000200d\U00002640',  # 💇🏽‍♀
-  u'\U0001f486\U0000200d\U00002640\U0000fe0f',  # 💆‍♀️
-  u'\U0001f486\U0000200d\U00002640',  # 💆‍♀
-  u'\U0001f486\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 💆🏿‍♀️
-  u'\U0001f486\U0001f3ff\U0000200d\U00002640',  # 💆🏿‍♀
-  u'\U0001f486\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 💆🏻‍♀️
-  u'\U0001f486\U0001f3fb\U0000200d\U00002640',  # 💆🏻‍♀
-  u'\U0001f486\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 💆🏾‍♀️
-  u'\U0001f486\U0001f3fe\U0000200d\U00002640',  # 💆🏾‍♀
-  u'\U0001f486\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 💆🏼‍♀️
-  u'\U0001f486\U0001f3fc\U0000200d\U00002640',  # 💆🏼‍♀
-  u'\U0001f486\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 💆🏽‍♀️
-  u'\U0001f486\U0001f3fd\U0000200d\U00002640',  # 💆🏽‍♀
-  u'\U0001f3cc\U0000fe0f\U0000200d\U00002640\U0000fe0f',  # 🏌️‍♀️
-  u'\U0001f3cc\U0000200d\U00002640\U0000fe0f',  # 🏌‍♀️
-  u'\U0001f3cc\U0000fe0f\U0000200d\U00002640',  # 🏌️‍♀
-  u'\U0001f3cc\U0000200d\U00002640',  # 🏌‍♀
-  u'\U0001f3cc\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🏌🏿‍♀️
-  u'\U0001f3cc\U0001f3ff\U0000200d\U00002640',  # 🏌🏿‍♀
-  u'\U0001f3cc\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🏌🏻‍♀️
-  u'\U0001f3cc\U0001f3fb\U0000200d\U00002640',  # 🏌🏻‍♀
-  u'\U0001f3cc\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🏌🏾‍♀️
-  u'\U0001f3cc\U0001f3fe\U0000200d\U00002640',  # 🏌🏾‍♀
-  u'\U0001f3cc\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🏌🏼‍♀️
-  u'\U0001f3cc\U0001f3fc\U0000200d\U00002640',  # 🏌🏼‍♀
-  u'\U0001f3cc\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🏌🏽‍♀️
-  u'\U0001f3cc\U0001f3fd\U0000200d\U00002640',  # 🏌🏽‍♀
-  u'\U0001f482\U0000200d\U00002640\U0000fe0f',  # 💂‍♀️
-  u'\U0001f482\U0000200d\U00002640',  # 💂‍♀
-  u'\U0001f482\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 💂🏿‍♀️
-  u'\U0001f482\U0001f3ff\U0000200d\U00002640',  # 💂🏿‍♀
-  u'\U0001f482\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 💂🏻‍♀️
-  u'\U0001f482\U0001f3fb\U0000200d\U00002640',  # 💂🏻‍♀
-  u'\U0001f482\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 💂🏾‍♀️
-  u'\U0001f482\U0001f3fe\U0000200d\U00002640',  # 💂🏾‍♀
-  u'\U0001f482\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 💂🏼‍♀️
-  u'\U0001f482\U0001f3fc\U0000200d\U00002640',  # 💂🏼‍♀
-  u'\U0001f482\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 💂🏽‍♀️
-  u'\U0001f482\U0001f3fd\U0000200d\U00002640',  # 💂🏽‍♀
-  u'\U0001f469\U0000200d\U00002695\U0000fe0f',  # 👩‍⚕️
-  u'\U0001f469\U0000200d\U00002695',  # 👩‍⚕
-  u'\U0001f469\U0001f3ff\U0000200d\U00002695\U0000fe0f',  # 👩🏿‍⚕️
-  u'\U0001f469\U0001f3ff\U0000200d\U00002695',  # 👩🏿‍⚕
-  u'\U0001f469\U0001f3fb\U0000200d\U00002695\U0000fe0f',  # 👩🏻‍⚕️
-  u'\U0001f469\U0001f3fb\U0000200d\U00002695',  # 👩🏻‍⚕
-  u'\U0001f469\U0001f3fe\U0000200d\U00002695\U0000fe0f',  # 👩🏾‍⚕️
-  u'\U0001f469\U0001f3fe\U0000200d\U00002695',  # 👩🏾‍⚕
-  u'\U0001f469\U0001f3fc\U0000200d\U00002695\U0000fe0f',  # 👩🏼‍⚕️
-  u'\U0001f469\U0001f3fc\U0000200d\U00002695',  # 👩🏼‍⚕
-  u'\U0001f469\U0001f3fd\U0000200d\U00002695\U0000fe0f',  # 👩🏽‍⚕️
-  u'\U0001f469\U0001f3fd\U0000200d\U00002695',  # 👩🏽‍⚕
-  u'\U0001f9d8\U0000200d\U00002640\U0000fe0f',  # 🧘‍♀️
-  u'\U0001f9d8\U0000200d\U00002640',  # 🧘‍♀
-  u'\U0001f9d8\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧘🏿‍♀️
-  u'\U0001f9d8\U0001f3ff\U0000200d\U00002640',  # 🧘🏿‍♀
-  u'\U0001f9d8\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧘🏻‍♀️
-  u'\U0001f9d8\U0001f3fb\U0000200d\U00002640',  # 🧘🏻‍♀
-  u'\U0001f9d8\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧘🏾‍♀️
-  u'\U0001f9d8\U0001f3fe\U0000200d\U00002640',  # 🧘🏾‍♀
-  u'\U0001f9d8\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧘🏼‍♀️
-  u'\U0001f9d8\U0001f3fc\U0000200d\U00002640',  # 🧘🏼‍♀
-  u'\U0001f9d8\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧘🏽‍♀️
-  u'\U0001f9d8\U0001f3fd\U0000200d\U00002640',  # 🧘🏽‍♀
-  u'\U0001f469\U0000200d\U0001f9bd',  # 👩‍🦽
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9bd',  # 👩🏿‍🦽
-  u'\U0001f469\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👩‍🦽‍➡️
-  u'\U0001f469\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👩‍🦽‍➡
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👩🏿‍🦽‍➡️
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👩🏿‍🦽‍➡
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👩🏻‍🦽‍➡️
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👩🏻‍🦽‍➡
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👩🏾‍🦽‍➡️
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👩🏾‍🦽‍➡
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👩🏼‍🦽‍➡️
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👩🏼‍🦽‍➡
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f',  # 👩🏽‍🦽‍➡️
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1',  # 👩🏽‍🦽‍➡
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9bd',  # 👩🏻‍🦽
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9bd',  # 👩🏾‍🦽
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9bd',  # 👩🏼‍🦽
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9bd',  # 👩🏽‍🦽
-  u'\U0001f469\U0000200d\U0001f9bc',  # 👩‍🦼
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9bc',  # 👩🏿‍🦼
-  u'\U0001f469\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👩‍🦼‍➡️
-  u'\U0001f469\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👩‍🦼‍➡
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👩🏿‍🦼‍➡️
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👩🏿‍🦼‍➡
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👩🏻‍🦼‍➡️
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👩🏻‍🦼‍➡
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👩🏾‍🦼‍➡️
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👩🏾‍🦼‍➡
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👩🏼‍🦼‍➡️
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👩🏼‍🦼‍➡
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f',  # 👩🏽‍🦼‍➡️
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1',  # 👩🏽‍🦼‍➡
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9bc',  # 👩🏻‍🦼
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9bc',  # 👩🏾‍🦼
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9bc',  # 👩🏼‍🦼
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9bc',  # 👩🏽‍🦼
-  u'\U0001f9d6\U0000200d\U00002640\U0000fe0f',  # 🧖‍♀️
-  u'\U0001f9d6\U0000200d\U00002640',  # 🧖‍♀
-  u'\U0001f9d6\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧖🏿‍♀️
-  u'\U0001f9d6\U0001f3ff\U0000200d\U00002640',  # 🧖🏿‍♀
-  u'\U0001f9d6\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧖🏻‍♀️
-  u'\U0001f9d6\U0001f3fb\U0000200d\U00002640',  # 🧖🏻‍♀
-  u'\U0001f9d6\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧖🏾‍♀️
-  u'\U0001f9d6\U0001f3fe\U0000200d\U00002640',  # 🧖🏾‍♀
-  u'\U0001f9d6\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧖🏼‍♀️
-  u'\U0001f9d6\U0001f3fc\U0000200d\U00002640',  # 🧖🏼‍♀
-  u'\U0001f9d6\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧖🏽‍♀️
-  u'\U0001f9d6\U0001f3fd\U0000200d\U00002640',  # 🧖🏽‍♀
-  u'\U0001f935\U0000200d\U00002640\U0000fe0f',  # 🤵‍♀️
-  u'\U0001f935\U0000200d\U00002640',  # 🤵‍♀
-  u'\U0001f935\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤵🏿‍♀️
-  u'\U0001f935\U0001f3ff\U0000200d\U00002640',  # 🤵🏿‍♀
-  u'\U0001f935\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤵🏻‍♀️
-  u'\U0001f935\U0001f3fb\U0000200d\U00002640',  # 🤵🏻‍♀
-  u'\U0001f935\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤵🏾‍♀️
-  u'\U0001f935\U0001f3fe\U0000200d\U00002640',  # 🤵🏾‍♀
-  u'\U0001f935\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤵🏼‍♀️
-  u'\U0001f935\U0001f3fc\U0000200d\U00002640',  # 🤵🏼‍♀
-  u'\U0001f935\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤵🏽‍♀️
-  u'\U0001f935\U0001f3fd\U0000200d\U00002640',  # 🤵🏽‍♀
-  u'\U0001f469\U0000200d\U00002696\U0000fe0f',  # 👩‍⚖️
-  u'\U0001f469\U0000200d\U00002696',  # 👩‍⚖
-  u'\U0001f469\U0001f3ff\U0000200d\U00002696\U0000fe0f',  # 👩🏿‍⚖️
-  u'\U0001f469\U0001f3ff\U0000200d\U00002696',  # 👩🏿‍⚖
-  u'\U0001f469\U0001f3fb\U0000200d\U00002696\U0000fe0f',  # 👩🏻‍⚖️
-  u'\U0001f469\U0001f3fb\U0000200d\U00002696',  # 👩🏻‍⚖
-  u'\U0001f469\U0001f3fe\U0000200d\U00002696\U0000fe0f',  # 👩🏾‍⚖️
-  u'\U0001f469\U0001f3fe\U0000200d\U00002696',  # 👩🏾‍⚖
-  u'\U0001f469\U0001f3fc\U0000200d\U00002696\U0000fe0f',  # 👩🏼‍⚖️
-  u'\U0001f469\U0001f3fc\U0000200d\U00002696',  # 👩🏼‍⚖
-  u'\U0001f469\U0001f3fd\U0000200d\U00002696\U0000fe0f',  # 👩🏽‍⚖️
-  u'\U0001f469\U0001f3fd\U0000200d\U00002696',  # 👩🏽‍⚖
-  u'\U0001f939\U0000200d\U00002640\U0000fe0f',  # 🤹‍♀️
-  u'\U0001f939\U0000200d\U00002640',  # 🤹‍♀
-  u'\U0001f939\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤹🏿‍♀️
-  u'\U0001f939\U0001f3ff\U0000200d\U00002640',  # 🤹🏿‍♀
-  u'\U0001f939\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤹🏻‍♀️
-  u'\U0001f939\U0001f3fb\U0000200d\U00002640',  # 🤹🏻‍♀
-  u'\U0001f939\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤹🏾‍♀️
-  u'\U0001f939\U0001f3fe\U0000200d\U00002640',  # 🤹🏾‍♀
-  u'\U0001f939\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤹🏼‍♀️
-  u'\U0001f939\U0001f3fc\U0000200d\U00002640',  # 🤹🏼‍♀
-  u'\U0001f939\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤹🏽‍♀️
-  u'\U0001f939\U0001f3fd\U0000200d\U00002640',  # 🤹🏽‍♀
-  u'\U0001f9ce\U0000200d\U00002640\U0000fe0f',  # 🧎‍♀️
-  u'\U0001f9ce\U0000200d\U00002640',  # 🧎‍♀
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧎🏿‍♀️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002640',  # 🧎🏿‍♀
-  u'\U0001f9ce\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎‍♀️‍➡️
-  u'\U0001f9ce\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🧎‍♀‍➡️
-  u'\U0001f9ce\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🧎‍♀️‍➡
-  u'\U0001f9ce\U0000200d\U00002640\U0000200d\U000027a1',  # 🧎‍♀‍➡
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏿‍♀️‍➡️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🧎🏿‍♀‍➡️
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🧎🏿‍♀️‍➡
-  u'\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1',  # 🧎🏿‍♀‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏻‍♀️‍➡️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🧎🏻‍♀‍➡️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🧎🏻‍♀️‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1',  # 🧎🏻‍♀‍➡
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏾‍♀️‍➡️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🧎🏾‍♀‍➡️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🧎🏾‍♀️‍➡
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1',  # 🧎🏾‍♀‍➡
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏼‍♀️‍➡️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🧎🏼‍♀‍➡️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🧎🏼‍♀️‍➡
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1',  # 🧎🏼‍♀‍➡
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🧎🏽‍♀️‍➡️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🧎🏽‍♀‍➡️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🧎🏽‍♀️‍➡
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1',  # 🧎🏽‍♀‍➡
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧎🏻‍♀️
-  u'\U0001f9ce\U0001f3fb\U0000200d\U00002640',  # 🧎🏻‍♀
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧎🏾‍♀️
-  u'\U0001f9ce\U0001f3fe\U0000200d\U00002640',  # 🧎🏾‍♀
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧎🏼‍♀️
-  u'\U0001f9ce\U0001f3fc\U0000200d\U00002640',  # 🧎🏼‍♀
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧎🏽‍♀️
-  u'\U0001f9ce\U0001f3fd\U0000200d\U00002640',  # 🧎🏽‍♀
-  u'\U0001f3cb\U0000fe0f\U0000200d\U00002640\U0000fe0f',  # 🏋️‍♀️
-  u'\U0001f3cb\U0000200d\U00002640\U0000fe0f',  # 🏋‍♀️
-  u'\U0001f3cb\U0000fe0f\U0000200d\U00002640',  # 🏋️‍♀
-  u'\U0001f3cb\U0000200d\U00002640',  # 🏋‍♀
-  u'\U0001f3cb\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🏋🏿‍♀️
-  u'\U0001f3cb\U0001f3ff\U0000200d\U00002640',  # 🏋🏿‍♀
-  u'\U0001f3cb\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🏋🏻‍♀️
-  u'\U0001f3cb\U0001f3fb\U0000200d\U00002640',  # 🏋🏻‍♀
-  u'\U0001f3cb\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🏋🏾‍♀️
-  u'\U0001f3cb\U0001f3fe\U0000200d\U00002640',  # 🏋🏾‍♀
-  u'\U0001f3cb\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🏋🏼‍♀️
-  u'\U0001f3cb\U0001f3fc\U0000200d\U00002640',  # 🏋🏼‍♀
-  u'\U0001f3cb\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🏋🏽‍♀️
-  u'\U0001f3cb\U0001f3fd\U0000200d\U00002640',  # 🏋🏽‍♀
-  u'\U0001f469\U0001f3fb',  # 👩🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9b2',  # 👩🏻‍🦲
-  u'\U0001f9d4\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧔🏻‍♀️
-  u'\U0001f9d4\U0001f3fb\U0000200d\U00002640',  # 🧔🏻‍♀
-  u'\U0001f471\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 👱🏻‍♀️
-  u'\U0001f471\U0001f3fb\U0000200d\U00002640',  # 👱🏻‍♀
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9b1',  # 👩🏻‍🦱
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9b0',  # 👩🏻‍🦰
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9b3',  # 👩🏻‍🦳
-  u'\U0001f9d9\U0000200d\U00002640\U0000fe0f',  # 🧙‍♀️
-  u'\U0001f9d9\U0000200d\U00002640',  # 🧙‍♀
-  u'\U0001f9d9\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧙🏿‍♀️
-  u'\U0001f9d9\U0001f3ff\U0000200d\U00002640',  # 🧙🏿‍♀
-  u'\U0001f9d9\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧙🏻‍♀️
-  u'\U0001f9d9\U0001f3fb\U0000200d\U00002640',  # 🧙🏻‍♀
-  u'\U0001f9d9\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧙🏾‍♀️
-  u'\U0001f9d9\U0001f3fe\U0000200d\U00002640',  # 🧙🏾‍♀
-  u'\U0001f9d9\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧙🏼‍♀️
-  u'\U0001f9d9\U0001f3fc\U0000200d\U00002640',  # 🧙🏼‍♀
-  u'\U0001f9d9\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧙🏽‍♀️
-  u'\U0001f9d9\U0001f3fd\U0000200d\U00002640',  # 🧙🏽‍♀
-  u'\U0001f469\U0000200d\U0001f527',  # 👩‍🔧
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f527',  # 👩🏿‍🔧
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f527',  # 👩🏻‍🔧
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f527',  # 👩🏾‍🔧
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f527',  # 👩🏼‍🔧
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f527',  # 👩🏽‍🔧
-  u'\U0001f469\U0001f3fe',  # 👩🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9b2',  # 👩🏾‍🦲
-  u'\U0001f9d4\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧔🏾‍♀️
-  u'\U0001f9d4\U0001f3fe\U0000200d\U00002640',  # 🧔🏾‍♀
-  u'\U0001f471\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 👱🏾‍♀️
-  u'\U0001f471\U0001f3fe\U0000200d\U00002640',  # 👱🏾‍♀
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9b1',  # 👩🏾‍🦱
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9b0',  # 👩🏾‍🦰
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9b3',  # 👩🏾‍🦳
-  u'\U0001f469\U0001f3fc',  # 👩🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9b2',  # 👩🏼‍🦲
-  u'\U0001f9d4\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧔🏼‍♀️
-  u'\U0001f9d4\U0001f3fc\U0000200d\U00002640',  # 🧔🏼‍♀
-  u'\U0001f471\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 👱🏼‍♀️
-  u'\U0001f471\U0001f3fc\U0000200d\U00002640',  # 👱🏼‍♀
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9b1',  # 👩🏼‍🦱
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9b0',  # 👩🏼‍🦰
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9b3',  # 👩🏼‍🦳
-  u'\U0001f469\U0001f3fd',  # 👩🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9b2',  # 👩🏽‍🦲
-  u'\U0001f9d4\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧔🏽‍♀️
-  u'\U0001f9d4\U0001f3fd\U0000200d\U00002640',  # 🧔🏽‍♀
-  u'\U0001f471\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 👱🏽‍♀️
-  u'\U0001f471\U0001f3fd\U0000200d\U00002640',  # 👱🏽‍♀
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9b1',  # 👩🏽‍🦱
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9b0',  # 👩🏽‍🦰
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9b3',  # 👩🏽‍🦳
-  u'\U0001f6b5\U0000200d\U00002640\U0000fe0f',  # 🚵‍♀️
-  u'\U0001f6b5\U0000200d\U00002640',  # 🚵‍♀
-  u'\U0001f6b5\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🚵🏿‍♀️
-  u'\U0001f6b5\U0001f3ff\U0000200d\U00002640',  # 🚵🏿‍♀
-  u'\U0001f6b5\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🚵🏻‍♀️
-  u'\U0001f6b5\U0001f3fb\U0000200d\U00002640',  # 🚵🏻‍♀
-  u'\U0001f6b5\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🚵🏾‍♀️
-  u'\U0001f6b5\U0001f3fe\U0000200d\U00002640',  # 🚵🏾‍♀
-  u'\U0001f6b5\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🚵🏼‍♀️
-  u'\U0001f6b5\U0001f3fc\U0000200d\U00002640',  # 🚵🏼‍♀
-  u'\U0001f6b5\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🚵🏽‍♀️
-  u'\U0001f6b5\U0001f3fd\U0000200d\U00002640',  # 🚵🏽‍♀
-  u'\U0001f469\U0000200d\U0001f4bc',  # 👩‍💼
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f4bc',  # 👩🏿‍💼
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f4bc',  # 👩🏻‍💼
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f4bc',  # 👩🏾‍💼
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f4bc',  # 👩🏼‍💼
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f4bc',  # 👩🏽‍💼
-  u'\U0001f469\U0000200d\U00002708\U0000fe0f',  # 👩‍✈️
-  u'\U0001f469\U0000200d\U00002708',  # 👩‍✈
-  u'\U0001f469\U0001f3ff\U0000200d\U00002708\U0000fe0f',  # 👩🏿‍✈️
-  u'\U0001f469\U0001f3ff\U0000200d\U00002708',  # 👩🏿‍✈
-  u'\U0001f469\U0001f3fb\U0000200d\U00002708\U0000fe0f',  # 👩🏻‍✈️
-  u'\U0001f469\U0001f3fb\U0000200d\U00002708',  # 👩🏻‍✈
-  u'\U0001f469\U0001f3fe\U0000200d\U00002708\U0000fe0f',  # 👩🏾‍✈️
-  u'\U0001f469\U0001f3fe\U0000200d\U00002708',  # 👩🏾‍✈
-  u'\U0001f469\U0001f3fc\U0000200d\U00002708\U0000fe0f',  # 👩🏼‍✈️
-  u'\U0001f469\U0001f3fc\U0000200d\U00002708',  # 👩🏼‍✈
-  u'\U0001f469\U0001f3fd\U0000200d\U00002708\U0000fe0f',  # 👩🏽‍✈️
-  u'\U0001f469\U0001f3fd\U0000200d\U00002708',  # 👩🏽‍✈
-  u'\U0001f93e\U0000200d\U00002640\U0000fe0f',  # 🤾‍♀️
-  u'\U0001f93e\U0000200d\U00002640',  # 🤾‍♀
-  u'\U0001f93e\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤾🏿‍♀️
-  u'\U0001f93e\U0001f3ff\U0000200d\U00002640',  # 🤾🏿‍♀
-  u'\U0001f93e\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤾🏻‍♀️
-  u'\U0001f93e\U0001f3fb\U0000200d\U00002640',  # 🤾🏻‍♀
-  u'\U0001f93e\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤾🏾‍♀️
-  u'\U0001f93e\U0001f3fe\U0000200d\U00002640',  # 🤾🏾‍♀
-  u'\U0001f93e\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤾🏼‍♀️
-  u'\U0001f93e\U0001f3fc\U0000200d\U00002640',  # 🤾🏼‍♀
-  u'\U0001f93e\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤾🏽‍♀️
-  u'\U0001f93e\U0001f3fd\U0000200d\U00002640',  # 🤾🏽‍♀
-  u'\U0001f93d\U0000200d\U00002640\U0000fe0f',  # 🤽‍♀️
-  u'\U0001f93d\U0000200d\U00002640',  # 🤽‍♀
-  u'\U0001f93d\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤽🏿‍♀️
-  u'\U0001f93d\U0001f3ff\U0000200d\U00002640',  # 🤽🏿‍♀
-  u'\U0001f93d\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤽🏻‍♀️
-  u'\U0001f93d\U0001f3fb\U0000200d\U00002640',  # 🤽🏻‍♀
-  u'\U0001f93d\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤽🏾‍♀️
-  u'\U0001f93d\U0001f3fe\U0000200d\U00002640',  # 🤽🏾‍♀
-  u'\U0001f93d\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤽🏼‍♀️
-  u'\U0001f93d\U0001f3fc\U0000200d\U00002640',  # 🤽🏼‍♀
-  u'\U0001f93d\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤽🏽‍♀️
-  u'\U0001f93d\U0001f3fd\U0000200d\U00002640',  # 🤽🏽‍♀
-  u'\U0001f46e\U0000200d\U00002640\U0000fe0f',  # 👮‍♀️
-  u'\U0001f46e\U0000200d\U00002640',  # 👮‍♀
-  u'\U0001f46e\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 👮🏿‍♀️
-  u'\U0001f46e\U0001f3ff\U0000200d\U00002640',  # 👮🏿‍♀
-  u'\U0001f46e\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 👮🏻‍♀️
-  u'\U0001f46e\U0001f3fb\U0000200d\U00002640',  # 👮🏻‍♀
-  u'\U0001f46e\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 👮🏾‍♀️
-  u'\U0001f46e\U0001f3fe\U0000200d\U00002640',  # 👮🏾‍♀
-  u'\U0001f46e\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 👮🏼‍♀️
-  u'\U0001f46e\U0001f3fc\U0000200d\U00002640',  # 👮🏼‍♀
-  u'\U0001f46e\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 👮🏽‍♀️
-  u'\U0001f46e\U0001f3fd\U0000200d\U00002640',  # 👮🏽‍♀
-  u'\U0001f64e\U0000200d\U00002640\U0000fe0f',  # 🙎‍♀️
-  u'\U0001f64e\U0000200d\U00002640',  # 🙎‍♀
-  u'\U0001f64e\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🙎🏿‍♀️
-  u'\U0001f64e\U0001f3ff\U0000200d\U00002640',  # 🙎🏿‍♀
-  u'\U0001f64e\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🙎🏻‍♀️
-  u'\U0001f64e\U0001f3fb\U0000200d\U00002640',  # 🙎🏻‍♀
-  u'\U0001f64e\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🙎🏾‍♀️
-  u'\U0001f64e\U0001f3fe\U0000200d\U00002640',  # 🙎🏾‍♀
-  u'\U0001f64e\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🙎🏼‍♀️
-  u'\U0001f64e\U0001f3fc\U0000200d\U00002640',  # 🙎🏼‍♀
-  u'\U0001f64e\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🙎🏽‍♀️
-  u'\U0001f64e\U0001f3fd\U0000200d\U00002640',  # 🙎🏽‍♀
-  u'\U0001f64b\U0000200d\U00002640\U0000fe0f',  # 🙋‍♀️
-  u'\U0001f64b\U0000200d\U00002640',  # 🙋‍♀
-  u'\U0001f64b\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🙋🏿‍♀️
-  u'\U0001f64b\U0001f3ff\U0000200d\U00002640',  # 🙋🏿‍♀
-  u'\U0001f64b\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🙋🏻‍♀️
-  u'\U0001f64b\U0001f3fb\U0000200d\U00002640',  # 🙋🏻‍♀
-  u'\U0001f64b\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🙋🏾‍♀️
-  u'\U0001f64b\U0001f3fe\U0000200d\U00002640',  # 🙋🏾‍♀
-  u'\U0001f64b\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🙋🏼‍♀️
-  u'\U0001f64b\U0001f3fc\U0000200d\U00002640',  # 🙋🏼‍♀
-  u'\U0001f64b\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🙋🏽‍♀️
-  u'\U0001f64b\U0001f3fd\U0000200d\U00002640',  # 🙋🏽‍♀
-  u'\U0001f469\U0000200d\U0001f9b0',  # 👩‍🦰
-  u'\U0001f6a3\U0000200d\U00002640\U0000fe0f',  # 🚣‍♀️
-  u'\U0001f6a3\U0000200d\U00002640',  # 🚣‍♀
-  u'\U0001f6a3\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🚣🏿‍♀️
-  u'\U0001f6a3\U0001f3ff\U0000200d\U00002640',  # 🚣🏿‍♀
-  u'\U0001f6a3\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🚣🏻‍♀️
-  u'\U0001f6a3\U0001f3fb\U0000200d\U00002640',  # 🚣🏻‍♀
-  u'\U0001f6a3\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🚣🏾‍♀️
-  u'\U0001f6a3\U0001f3fe\U0000200d\U00002640',  # 🚣🏾‍♀
-  u'\U0001f6a3\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🚣🏼‍♀️
-  u'\U0001f6a3\U0001f3fc\U0000200d\U00002640',  # 🚣🏼‍♀
-  u'\U0001f6a3\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🚣🏽‍♀️
-  u'\U0001f6a3\U0001f3fd\U0000200d\U00002640',  # 🚣🏽‍♀
-  u'\U0001f3c3\U0000200d\U00002640\U0000fe0f',  # 🏃‍♀️
-  u'\U0001f3c3\U0000200d\U00002640',  # 🏃‍♀
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🏃🏿‍♀️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002640',  # 🏃🏿‍♀
-  u'\U0001f3c3\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃‍♀️‍➡️
-  u'\U0001f3c3\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🏃‍♀‍➡️
-  u'\U0001f3c3\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🏃‍♀️‍➡
-  u'\U0001f3c3\U0000200d\U00002640\U0000200d\U000027a1',  # 🏃‍♀‍➡
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏿‍♀️‍➡️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🏃🏿‍♀‍➡️
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🏃🏿‍♀️‍➡
-  u'\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1',  # 🏃🏿‍♀‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏻‍♀️‍➡️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🏃🏻‍♀‍➡️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🏃🏻‍♀️‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1',  # 🏃🏻‍♀‍➡
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏾‍♀️‍➡️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🏃🏾‍♀‍➡️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🏃🏾‍♀️‍➡
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1',  # 🏃🏾‍♀‍➡
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏼‍♀️‍➡️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🏃🏼‍♀‍➡️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🏃🏼‍♀️‍➡
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1',  # 🏃🏼‍♀‍➡
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🏃🏽‍♀️‍➡️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🏃🏽‍♀‍➡️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🏃🏽‍♀️‍➡
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1',  # 🏃🏽‍♀‍➡
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🏃🏻‍♀️
-  u'\U0001f3c3\U0001f3fb\U0000200d\U00002640',  # 🏃🏻‍♀
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🏃🏾‍♀️
-  u'\U0001f3c3\U0001f3fe\U0000200d\U00002640',  # 🏃🏾‍♀
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🏃🏼‍♀️
-  u'\U0001f3c3\U0001f3fc\U0000200d\U00002640',  # 🏃🏼‍♀
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🏃🏽‍♀️
-  u'\U0001f3c3\U0001f3fd\U0000200d\U00002640',  # 🏃🏽‍♀
-  u'\U0001f469\U0000200d\U0001f52c',  # 👩‍🔬
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f52c',  # 👩🏿‍🔬
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f52c',  # 👩🏻‍🔬
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f52c',  # 👩🏾‍🔬
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f52c',  # 👩🏼‍🔬
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f52c',  # 👩🏽‍🔬
-  u'\U0001f937\U0000200d\U00002640\U0000fe0f',  # 🤷‍♀️
-  u'\U0001f937\U0000200d\U00002640',  # 🤷‍♀
-  u'\U0001f937\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🤷🏿‍♀️
-  u'\U0001f937\U0001f3ff\U0000200d\U00002640',  # 🤷🏿‍♀
-  u'\U0001f937\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🤷🏻‍♀️
-  u'\U0001f937\U0001f3fb\U0000200d\U00002640',  # 🤷🏻‍♀
-  u'\U0001f937\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🤷🏾‍♀️
-  u'\U0001f937\U0001f3fe\U0000200d\U00002640',  # 🤷🏾‍♀
-  u'\U0001f937\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🤷🏼‍♀️
-  u'\U0001f937\U0001f3fc\U0000200d\U00002640',  # 🤷🏼‍♀
-  u'\U0001f937\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🤷🏽‍♀️
-  u'\U0001f937\U0001f3fd\U0000200d\U00002640',  # 🤷🏽‍♀
-  u'\U0001f469\U0000200d\U0001f3a4',  # 👩‍🎤
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f3a4',  # 👩🏿‍🎤
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f3a4',  # 👩🏻‍🎤
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f3a4',  # 👩🏾‍🎤
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f3a4',  # 👩🏼‍🎤
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f3a4',  # 👩🏽‍🎤
-  u'\U0001f9cd\U0000200d\U00002640\U0000fe0f',  # 🧍‍♀️
-  u'\U0001f9cd\U0000200d\U00002640',  # 🧍‍♀
-  u'\U0001f9cd\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧍🏿‍♀️
-  u'\U0001f9cd\U0001f3ff\U0000200d\U00002640',  # 🧍🏿‍♀
-  u'\U0001f9cd\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧍🏻‍♀️
-  u'\U0001f9cd\U0001f3fb\U0000200d\U00002640',  # 🧍🏻‍♀
-  u'\U0001f9cd\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧍🏾‍♀️
-  u'\U0001f9cd\U0001f3fe\U0000200d\U00002640',  # 🧍🏾‍♀
-  u'\U0001f9cd\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧍🏼‍♀️
-  u'\U0001f9cd\U0001f3fc\U0000200d\U00002640',  # 🧍🏼‍♀
-  u'\U0001f9cd\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧍🏽‍♀️
-  u'\U0001f9cd\U0001f3fd\U0000200d\U00002640',  # 🧍🏽‍♀
-  u'\U0001f469\U0000200d\U0001f393',  # 👩‍🎓
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f393',  # 👩🏿‍🎓
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f393',  # 👩🏻‍🎓
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f393',  # 👩🏾‍🎓
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f393',  # 👩🏼‍🎓
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f393',  # 👩🏽‍🎓
-  u'\U0001f9b8\U0000200d\U00002640\U0000fe0f',  # 🦸‍♀️
-  u'\U0001f9b8\U0000200d\U00002640',  # 🦸‍♀
-  u'\U0001f9b8\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🦸🏿‍♀️
-  u'\U0001f9b8\U0001f3ff\U0000200d\U00002640',  # 🦸🏿‍♀
-  u'\U0001f9b8\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🦸🏻‍♀️
-  u'\U0001f9b8\U0001f3fb\U0000200d\U00002640',  # 🦸🏻‍♀
-  u'\U0001f9b8\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🦸🏾‍♀️
-  u'\U0001f9b8\U0001f3fe\U0000200d\U00002640',  # 🦸🏾‍♀
-  u'\U0001f9b8\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🦸🏼‍♀️
-  u'\U0001f9b8\U0001f3fc\U0000200d\U00002640',  # 🦸🏼‍♀
-  u'\U0001f9b8\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🦸🏽‍♀️
-  u'\U0001f9b8\U0001f3fd\U0000200d\U00002640',  # 🦸🏽‍♀
-  u'\U0001f9b9\U0000200d\U00002640\U0000fe0f',  # 🦹‍♀️
-  u'\U0001f9b9\U0000200d\U00002640',  # 🦹‍♀
-  u'\U0001f9b9\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🦹🏿‍♀️
-  u'\U0001f9b9\U0001f3ff\U0000200d\U00002640',  # 🦹🏿‍♀
-  u'\U0001f9b9\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🦹🏻‍♀️
-  u'\U0001f9b9\U0001f3fb\U0000200d\U00002640',  # 🦹🏻‍♀
-  u'\U0001f9b9\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🦹🏾‍♀️
-  u'\U0001f9b9\U0001f3fe\U0000200d\U00002640',  # 🦹🏾‍♀
-  u'\U0001f9b9\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🦹🏼‍♀️
-  u'\U0001f9b9\U0001f3fc\U0000200d\U00002640',  # 🦹🏼‍♀
-  u'\U0001f9b9\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🦹🏽‍♀️
-  u'\U0001f9b9\U0001f3fd\U0000200d\U00002640',  # 🦹🏽‍♀
-  u'\U0001f3c4\U0000200d\U00002640\U0000fe0f',  # 🏄‍♀️
-  u'\U0001f3c4\U0000200d\U00002640',  # 🏄‍♀
-  u'\U0001f3c4\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🏄🏿‍♀️
-  u'\U0001f3c4\U0001f3ff\U0000200d\U00002640',  # 🏄🏿‍♀
-  u'\U0001f3c4\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🏄🏻‍♀️
-  u'\U0001f3c4\U0001f3fb\U0000200d\U00002640',  # 🏄🏻‍♀
-  u'\U0001f3c4\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🏄🏾‍♀️
-  u'\U0001f3c4\U0001f3fe\U0000200d\U00002640',  # 🏄🏾‍♀
-  u'\U0001f3c4\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🏄🏼‍♀️
-  u'\U0001f3c4\U0001f3fc\U0000200d\U00002640',  # 🏄🏼‍♀
-  u'\U0001f3c4\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🏄🏽‍♀️
-  u'\U0001f3c4\U0001f3fd\U0000200d\U00002640',  # 🏄🏽‍♀
-  u'\U0001f3ca\U0000200d\U00002640\U0000fe0f',  # 🏊‍♀️
-  u'\U0001f3ca\U0000200d\U00002640',  # 🏊‍♀
-  u'\U0001f3ca\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🏊🏿‍♀️
-  u'\U0001f3ca\U0001f3ff\U0000200d\U00002640',  # 🏊🏿‍♀
-  u'\U0001f3ca\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🏊🏻‍♀️
-  u'\U0001f3ca\U0001f3fb\U0000200d\U00002640',  # 🏊🏻‍♀
-  u'\U0001f3ca\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🏊🏾‍♀️
-  u'\U0001f3ca\U0001f3fe\U0000200d\U00002640',  # 🏊🏾‍♀
-  u'\U0001f3ca\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🏊🏼‍♀️
-  u'\U0001f3ca\U0001f3fc\U0000200d\U00002640',  # 🏊🏼‍♀
-  u'\U0001f3ca\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🏊🏽‍♀️
-  u'\U0001f3ca\U0001f3fd\U0000200d\U00002640',  # 🏊🏽‍♀
-  u'\U0001f469\U0000200d\U0001f3eb',  # 👩‍🏫
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f3eb',  # 👩🏿‍🏫
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f3eb',  # 👩🏻‍🏫
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f3eb',  # 👩🏾‍🏫
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f3eb',  # 👩🏼‍🏫
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f3eb',  # 👩🏽‍🏫
-  u'\U0001f469\U0000200d\U0001f4bb',  # 👩‍💻
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f4bb',  # 👩🏿‍💻
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f4bb',  # 👩🏻‍💻
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f4bb',  # 👩🏾‍💻
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f4bb',  # 👩🏼‍💻
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f4bb',  # 👩🏽‍💻
-  u'\U0001f481\U0000200d\U00002640\U0000fe0f',  # 💁‍♀️
-  u'\U0001f481\U0000200d\U00002640',  # 💁‍♀
-  u'\U0001f481\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 💁🏿‍♀️
-  u'\U0001f481\U0001f3ff\U0000200d\U00002640',  # 💁🏿‍♀
-  u'\U0001f481\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 💁🏻‍♀️
-  u'\U0001f481\U0001f3fb\U0000200d\U00002640',  # 💁🏻‍♀
-  u'\U0001f481\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 💁🏾‍♀️
-  u'\U0001f481\U0001f3fe\U0000200d\U00002640',  # 💁🏾‍♀
-  u'\U0001f481\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 💁🏼‍♀️
-  u'\U0001f481\U0001f3fc\U0000200d\U00002640',  # 💁🏼‍♀
-  u'\U0001f481\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 💁🏽‍♀️
-  u'\U0001f481\U0001f3fd\U0000200d\U00002640',  # 💁🏽‍♀
-  u'\U0001f9db\U0000200d\U00002640\U0000fe0f',  # 🧛‍♀️
-  u'\U0001f9db\U0000200d\U00002640',  # 🧛‍♀
-  u'\U0001f9db\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🧛🏿‍♀️
-  u'\U0001f9db\U0001f3ff\U0000200d\U00002640',  # 🧛🏿‍♀
-  u'\U0001f9db\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🧛🏻‍♀️
-  u'\U0001f9db\U0001f3fb\U0000200d\U00002640',  # 🧛🏻‍♀
-  u'\U0001f9db\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🧛🏾‍♀️
-  u'\U0001f9db\U0001f3fe\U0000200d\U00002640',  # 🧛🏾‍♀
-  u'\U0001f9db\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🧛🏼‍♀️
-  u'\U0001f9db\U0001f3fc\U0000200d\U00002640',  # 🧛🏼‍♀
-  u'\U0001f9db\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🧛🏽‍♀️
-  u'\U0001f9db\U0001f3fd\U0000200d\U00002640',  # 🧛🏽‍♀
-  u'\U0001f6b6\U0000200d\U00002640\U0000fe0f',  # 🚶‍♀️
-  u'\U0001f6b6\U0000200d\U00002640',  # 🚶‍♀
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 🚶🏿‍♀️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002640',  # 🚶🏿‍♀
-  u'\U0001f6b6\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶‍♀️‍➡️
-  u'\U0001f6b6\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🚶‍♀‍➡️
-  u'\U0001f6b6\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🚶‍♀️‍➡
-  u'\U0001f6b6\U0000200d\U00002640\U0000200d\U000027a1',  # 🚶‍♀‍➡
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏿‍♀️‍➡️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🚶🏿‍♀‍➡️
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🚶🏿‍♀️‍➡
-  u'\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1',  # 🚶🏿‍♀‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏻‍♀️‍➡️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🚶🏻‍♀‍➡️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🚶🏻‍♀️‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1',  # 🚶🏻‍♀‍➡
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏾‍♀️‍➡️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🚶🏾‍♀‍➡️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🚶🏾‍♀️‍➡
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1',  # 🚶🏾‍♀‍➡
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏼‍♀️‍➡️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🚶🏼‍♀‍➡️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🚶🏼‍♀️‍➡
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1',  # 🚶🏼‍♀‍➡
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f',  # 🚶🏽‍♀️‍➡️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f',  # 🚶🏽‍♀‍➡️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1',  # 🚶🏽‍♀️‍➡
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1',  # 🚶🏽‍♀‍➡
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 🚶🏻‍♀️
-  u'\U0001f6b6\U0001f3fb\U0000200d\U00002640',  # 🚶🏻‍♀
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 🚶🏾‍♀️
-  u'\U0001f6b6\U0001f3fe\U0000200d\U00002640',  # 🚶🏾‍♀
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 🚶🏼‍♀️
-  u'\U0001f6b6\U0001f3fc\U0000200d\U00002640',  # 🚶🏼‍♀
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 🚶🏽‍♀️
-  u'\U0001f6b6\U0001f3fd\U0000200d\U00002640',  # 🚶🏽‍♀
-  u'\U0001f473\U0000200d\U00002640\U0000fe0f',  # 👳‍♀️
-  u'\U0001f473\U0000200d\U00002640',  # 👳‍♀
-  u'\U0001f473\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 👳🏿‍♀️
-  u'\U0001f473\U0001f3ff\U0000200d\U00002640',  # 👳🏿‍♀
-  u'\U0001f473\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 👳🏻‍♀️
-  u'\U0001f473\U0001f3fb\U0000200d\U00002640',  # 👳🏻‍♀
-  u'\U0001f473\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 👳🏾‍♀️
-  u'\U0001f473\U0001f3fe\U0000200d\U00002640',  # 👳🏾‍♀
-  u'\U0001f473\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 👳🏼‍♀️
-  u'\U0001f473\U0001f3fc\U0000200d\U00002640',  # 👳🏼‍♀
-  u'\U0001f473\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 👳🏽‍♀️
-  u'\U0001f473\U0001f3fd\U0000200d\U00002640',  # 👳🏽‍♀
-  u'\U0001f469\U0000200d\U0001f9b3',  # 👩‍🦳
-  u'\U0001f9d5',  # 🧕
-  u'\U0001f9d5\U0001f3ff',  # 🧕🏿
-  u'\U0001f9d5\U0001f3fb',  # 🧕🏻
-  u'\U0001f9d5\U0001f3fe',  # 🧕🏾
-  u'\U0001f9d5\U0001f3fc',  # 🧕🏼
-  u'\U0001f9d5\U0001f3fd',  # 🧕🏽
-  u'\U0001f470\U0000200d\U00002640\U0000fe0f',  # 👰‍♀️
-  u'\U0001f470\U0000200d\U00002640',  # 👰‍♀
-  u'\U0001f470\U0001f3ff\U0000200d\U00002640\U0000fe0f',  # 👰🏿‍♀️
-  u'\U0001f470\U0001f3ff\U0000200d\U00002640',  # 👰🏿‍♀
-  u'\U0001f470\U0001f3fb\U0000200d\U00002640\U0000fe0f',  # 👰🏻‍♀️
-  u'\U0001f470\U0001f3fb\U0000200d\U00002640',  # 👰🏻‍♀
-  u'\U0001f470\U0001f3fe\U0000200d\U00002640\U0000fe0f',  # 👰🏾‍♀️
-  u'\U0001f470\U0001f3fe\U0000200d\U00002640',  # 👰🏾‍♀
-  u'\U0001f470\U0001f3fc\U0000200d\U00002640\U0000fe0f',  # 👰🏼‍♀️
-  u'\U0001f470\U0001f3fc\U0000200d\U00002640',  # 👰🏼‍♀
-  u'\U0001f470\U0001f3fd\U0000200d\U00002640\U0000fe0f',  # 👰🏽‍♀️
-  u'\U0001f470\U0001f3fd\U0000200d\U00002640',  # 👰🏽‍♀
-  u'\U0001f469\U0000200d\U0001f9af',  # 👩‍🦯
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9af',  # 👩🏿‍🦯
-  u'\U0001f469\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👩‍🦯‍➡️
-  u'\U0001f469\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👩‍🦯‍➡
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👩🏿‍🦯‍➡️
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👩🏿‍🦯‍➡
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👩🏻‍🦯‍➡️
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👩🏻‍🦯‍➡
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👩🏾‍🦯‍➡️
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👩🏾‍🦯‍➡
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👩🏼‍🦯‍➡️
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👩🏼‍🦯‍➡
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f',  # 👩🏽‍🦯‍➡️
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1',  # 👩🏽‍🦯‍➡
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f9af',  # 👩🏻‍🦯
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f9af',  # 👩🏾‍🦯
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f9af',  # 👩🏼‍🦯
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f9af',  # 👩🏽‍🦯
-  u'\U0001f9df\U0000200d\U00002640\U0000fe0f',  # 🧟‍♀️
-  u'\U0001f9df\U0000200d\U00002640',  # 🧟‍♀
-  u'\U0001f462',  # 👢
-  u'\U0001f45a',  # 👚
-  u'\U0001f452',  # 👒
-  u'\U0001f461',  # 👡
-  u'\U0001f46d',  # 👭
-  u'\U0001f46d\U0001f3ff',  # 👭🏿
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb',  # 👩🏿‍🤝‍👩🏻
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe',  # 👩🏿‍🤝‍👩🏾
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc',  # 👩🏿‍🤝‍👩🏼
-  u'\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd',  # 👩🏿‍🤝‍👩🏽
-  u'\U0001f46d\U0001f3fb',  # 👭🏻
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff',  # 👩🏻‍🤝‍👩🏿
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe',  # 👩🏻‍🤝‍👩🏾
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc',  # 👩🏻‍🤝‍👩🏼
-  u'\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd',  # 👩🏻‍🤝‍👩🏽
-  u'\U0001f46d\U0001f3fe',  # 👭🏾
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff',  # 👩🏾‍🤝‍👩🏿
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb',  # 👩🏾‍🤝‍👩🏻
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc',  # 👩🏾‍🤝‍👩🏼
-  u'\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd',  # 👩🏾‍🤝‍👩🏽
-  u'\U0001f46d\U0001f3fc',  # 👭🏼
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff',  # 👩🏼‍🤝‍👩🏿
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb',  # 👩🏼‍🤝‍👩🏻
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe',  # 👩🏼‍🤝‍👩🏾
-  u'\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd',  # 👩🏼‍🤝‍👩🏽
-  u'\U0001f46d\U0001f3fd',  # 👭🏽
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff',  # 👩🏽‍🤝‍👩🏿
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb',  # 👩🏽‍🤝‍👩🏻
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe',  # 👩🏽‍🤝‍👩🏾
-  u'\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc',  # 👩🏽‍🤝‍👩🏼
-  u'\U0001f46f\U0000200d\U00002640\U0000fe0f',  # 👯‍♀️
-  u'\U0001f46f\U0000200d\U00002640',  # 👯‍♀
-  u'\U0001f93c\U0000200d\U00002640\U0000fe0f',  # 🤼‍♀️
-  u'\U0001f93c\U0000200d\U00002640',  # 🤼‍♀
-  u'\U0001f6ba',  # 🚺
-  u'\U0001fab5',  # 🪵
-  u'\U0001f974',  # 🥴
-  u'\U0001f5fa\U0000fe0f',  # 🗺️
-  u'\U0001f5fa',  # 🗺
-  u'\U0001fab1',  # 🪱
-  u'\U0001f61f',  # 😟
-  u'\U0001f381',  # 🎁
-  u'\U0001f527',  # 🔧
-  u'\U0000270d\U0000fe0f',  # ✍️
-  u'\U0000270d',  # ✍
-  u'\U0000270d\U0001f3ff',  # ✍🏿
-  u'\U0000270d\U0001f3fb',  # ✍🏻
-  u'\U0000270d\U0001f3fe',  # ✍🏾
-  u'\U0000270d\U0001f3fc',  # ✍🏼
-  u'\U0000270d\U0001f3fd',  # ✍🏽
-  u'\U0001fa7b',  # 🩻
-  u'\U0001f9f6',  # 🧶
-  u'\U0001f971',  # 🥱
-  u'\U0001f7e1',  # 🟡
-  u'\U0001f49b',  # 💛
-  u'\U0001f7e8',  # 🟨
-  u'\U0001f4b4',  # 💴
-  u'\U0000262f\U0000fe0f',  # ☯️
-  u'\U0000262f',  # ☯
-  u'\U0001fa80',  # 🪀
-  u'\U0001f92a',  # 🤪
-  u'\U0001f993',  # 🦓
-  u'\U0001f910',  # 🤐
-  u'\U0001f9df',  # 🧟
-  u'\U0001f1e6\U0001f1fd',  # 🇦🇽
+    "\U0001f947",  # 🥇
+    "\U0001f948",  # 🥈
+    "\U0001f949",  # 🥉
+    "\U0001f18e",  # 🆎
+    "\U0001f3e7",  # 🏧
+    "\U0001f170\U0000fe0f",  # 🅰️
+    "\U0001f170",  # 🅰
+    "\U0001f1e6\U0001f1eb",  # 🇦🇫
+    "\U0001f1e6\U0001f1f1",  # 🇦🇱
+    "\U0001f1e9\U0001f1ff",  # 🇩🇿
+    "\U0001f1e6\U0001f1f8",  # 🇦🇸
+    "\U0001f1e6\U0001f1e9",  # 🇦🇩
+    "\U0001f1e6\U0001f1f4",  # 🇦🇴
+    "\U0001f1e6\U0001f1ee",  # 🇦🇮
+    "\U0001f1e6\U0001f1f6",  # 🇦🇶
+    "\U0001f1e6\U0001f1ec",  # 🇦🇬
+    "\U00002652",  # ♒
+    "\U0001f1e6\U0001f1f7",  # 🇦🇷
+    "\U00002648",  # ♈
+    "\U0001f1e6\U0001f1f2",  # 🇦🇲
+    "\U0001f1e6\U0001f1fc",  # 🇦🇼
+    "\U0001f1e6\U0001f1e8",  # 🇦🇨
+    "\U0001f1e6\U0001f1fa",  # 🇦🇺
+    "\U0001f1e6\U0001f1f9",  # 🇦🇹
+    "\U0001f1e6\U0001f1ff",  # 🇦🇿
+    "\U0001f519",  # 🔙
+    "\U0001f171\U0000fe0f",  # 🅱️
+    "\U0001f171",  # 🅱
+    "\U0001f1e7\U0001f1f8",  # 🇧🇸
+    "\U0001f1e7\U0001f1ed",  # 🇧🇭
+    "\U0001f1e7\U0001f1e9",  # 🇧🇩
+    "\U0001f1e7\U0001f1e7",  # 🇧🇧
+    "\U0001f1e7\U0001f1fe",  # 🇧🇾
+    "\U0001f1e7\U0001f1ea",  # 🇧🇪
+    "\U0001f1e7\U0001f1ff",  # 🇧🇿
+    "\U0001f1e7\U0001f1ef",  # 🇧🇯
+    "\U0001f1e7\U0001f1f2",  # 🇧🇲
+    "\U0001f1e7\U0001f1f9",  # 🇧🇹
+    "\U0001f1e7\U0001f1f4",  # 🇧🇴
+    "\U0001f1e7\U0001f1e6",  # 🇧🇦
+    "\U0001f1e7\U0001f1fc",  # 🇧🇼
+    "\U0001f1e7\U0001f1fb",  # 🇧🇻
+    "\U0001f1e7\U0001f1f7",  # 🇧🇷
+    "\U0001f1ee\U0001f1f4",  # 🇮🇴
+    "\U0001f1fb\U0001f1ec",  # 🇻🇬
+    "\U0001f1e7\U0001f1f3",  # 🇧🇳
+    "\U0001f1e7\U0001f1ec",  # 🇧🇬
+    "\U0001f1e7\U0001f1eb",  # 🇧🇫
+    "\U0001f1e7\U0001f1ee",  # 🇧🇮
+    "\U0001f191",  # 🆑
+    "\U0001f192",  # 🆒
+    "\U0001f1f0\U0001f1ed",  # 🇰🇭
+    "\U0001f1e8\U0001f1f2",  # 🇨🇲
+    "\U0001f1e8\U0001f1e6",  # 🇨🇦
+    "\U0001f1ee\U0001f1e8",  # 🇮🇨
+    "\U0000264b",  # ♋
+    "\U0001f1e8\U0001f1fb",  # 🇨🇻
+    "\U00002651",  # ♑
+    "\U0001f1e7\U0001f1f6",  # 🇧🇶
+    "\U0001f1f0\U0001f1fe",  # 🇰🇾
+    "\U0001f1e8\U0001f1eb",  # 🇨🇫
+    "\U0001f1ea\U0001f1e6",  # 🇪🇦
+    "\U0001f1f9\U0001f1e9",  # 🇹🇩
+    "\U0001f1e8\U0001f1f1",  # 🇨🇱
+    "\U0001f1e8\U0001f1f3",  # 🇨🇳
+    "\U0001f1e8\U0001f1fd",  # 🇨🇽
+    "\U0001f384",  # 🎄
+    "\U0001f1e8\U0001f1f5",  # 🇨🇵
+    "\U0001f1e8\U0001f1e8",  # 🇨🇨
+    "\U0001f1e8\U0001f1f4",  # 🇨🇴
+    "\U0001f1f0\U0001f1f2",  # 🇰🇲
+    "\U0001f1e8\U0001f1ec",  # 🇨🇬
+    "\U0001f1e8\U0001f1e9",  # 🇨🇩
+    "\U0001f1e8\U0001f1f0",  # 🇨🇰
+    "\U0001f1e8\U0001f1f7",  # 🇨🇷
+    "\U0001f1ed\U0001f1f7",  # 🇭🇷
+    "\U0001f1e8\U0001f1fa",  # 🇨🇺
+    "\U0001f1e8\U0001f1fc",  # 🇨🇼
+    "\U0001f1e8\U0001f1fe",  # 🇨🇾
+    "\U0001f1e8\U0001f1ff",  # 🇨🇿
+    "\U0001f1e8\U0001f1ee",  # 🇨🇮
+    "\U0001f1e9\U0001f1f0",  # 🇩🇰
+    "\U0001f1e9\U0001f1ec",  # 🇩🇬
+    "\U0001f1e9\U0001f1ef",  # 🇩🇯
+    "\U0001f1e9\U0001f1f2",  # 🇩🇲
+    "\U0001f1e9\U0001f1f4",  # 🇩🇴
+    "\U0001f51a",  # 🔚
+    "\U0001f1ea\U0001f1e8",  # 🇪🇨
+    "\U0001f1ea\U0001f1ec",  # 🇪🇬
+    "\U0001f1f8\U0001f1fb",  # 🇸🇻
+    "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",  # 🏴󠁧󠁢󠁥󠁮󠁧󠁿
+    "\U0001f1ec\U0001f1f6",  # 🇬🇶
+    "\U0001f1ea\U0001f1f7",  # 🇪🇷
+    "\U0001f1ea\U0001f1ea",  # 🇪🇪
+    "\U0001f1f8\U0001f1ff",  # 🇸🇿
+    "\U0001f1ea\U0001f1f9",  # 🇪🇹
+    "\U0001f1ea\U0001f1fa",  # 🇪🇺
+    "\U0001f193",  # 🆓
+    "\U0001f1eb\U0001f1f0",  # 🇫🇰
+    "\U0001f1eb\U0001f1f4",  # 🇫🇴
+    "\U0001f1eb\U0001f1ef",  # 🇫🇯
+    "\U0001f1eb\U0001f1ee",  # 🇫🇮
+    "\U0001f1eb\U0001f1f7",  # 🇫🇷
+    "\U0001f1ec\U0001f1eb",  # 🇬🇫
+    "\U0001f1f5\U0001f1eb",  # 🇵🇫
+    "\U0001f1f9\U0001f1eb",  # 🇹🇫
+    "\U0001f1ec\U0001f1e6",  # 🇬🇦
+    "\U0001f1ec\U0001f1f2",  # 🇬🇲
+    "\U0000264a",  # ♊
+    "\U0001f1ec\U0001f1ea",  # 🇬🇪
+    "\U0001f1e9\U0001f1ea",  # 🇩🇪
+    "\U0001f1ec\U0001f1ed",  # 🇬🇭
+    "\U0001f1ec\U0001f1ee",  # 🇬🇮
+    "\U0001f1ec\U0001f1f7",  # 🇬🇷
+    "\U0001f1ec\U0001f1f1",  # 🇬🇱
+    "\U0001f1ec\U0001f1e9",  # 🇬🇩
+    "\U0001f1ec\U0001f1f5",  # 🇬🇵
+    "\U0001f1ec\U0001f1fa",  # 🇬🇺
+    "\U0001f1ec\U0001f1f9",  # 🇬🇹
+    "\U0001f1ec\U0001f1ec",  # 🇬🇬
+    "\U0001f1ec\U0001f1f3",  # 🇬🇳
+    "\U0001f1ec\U0001f1fc",  # 🇬🇼
+    "\U0001f1ec\U0001f1fe",  # 🇬🇾
+    "\U0001f1ed\U0001f1f9",  # 🇭🇹
+    "\U0001f1ed\U0001f1f2",  # 🇭🇲
+    "\U0001f1ed\U0001f1f3",  # 🇭🇳
+    "\U0001f1ed\U0001f1f0",  # 🇭🇰
+    "\U0001f1ed\U0001f1fa",  # 🇭🇺
+    "\U0001f194",  # 🆔
+    "\U0001f1ee\U0001f1f8",  # 🇮🇸
+    "\U0001f1ee\U0001f1f3",  # 🇮🇳
+    "\U0001f1ee\U0001f1e9",  # 🇮🇩
+    "\U0001f1ee\U0001f1f7",  # 🇮🇷
+    "\U0001f1ee\U0001f1f6",  # 🇮🇶
+    "\U0001f1ee\U0001f1ea",  # 🇮🇪
+    "\U0001f1ee\U0001f1f2",  # 🇮🇲
+    "\U0001f1ee\U0001f1f1",  # 🇮🇱
+    "\U0001f1ee\U0001f1f9",  # 🇮🇹
+    "\U0001f1ef\U0001f1f2",  # 🇯🇲
+    "\U0001f1ef\U0001f1f5",  # 🇯🇵
+    "\U0001f251",  # 🉑
+    "\U0001f238",  # 🈸
+    "\U0001f250",  # 🉐
+    "\U0001f3ef",  # 🏯
+    "\U00003297\U0000fe0f",  # ㊗️
+    "\U00003297",  # ㊗
+    "\U0001f239",  # 🈹
+    "\U0001f38e",  # 🎎
+    "\U0001f21a",  # 🈚
+    "\U0001f201",  # 🈁
+    "\U0001f237\U0000fe0f",  # 🈷️
+    "\U0001f237",  # 🈷
+    "\U0001f235",  # 🈵
+    "\U0001f236",  # 🈶
+    "\U0001f23a",  # 🈺
+    "\U0001f234",  # 🈴
+    "\U0001f3e3",  # 🏣
+    "\U0001f232",  # 🈲
+    "\U0001f22f",  # 🈯
+    "\U00003299\U0000fe0f",  # ㊙️
+    "\U00003299",  # ㊙
+    "\U0001f202\U0000fe0f",  # 🈂️
+    "\U0001f202",  # 🈂
+    "\U0001f530",  # 🔰
+    "\U0001f233",  # 🈳
+    "\U0001f1ef\U0001f1ea",  # 🇯🇪
+    "\U0001f1ef\U0001f1f4",  # 🇯🇴
+    "\U0001f1f0\U0001f1ff",  # 🇰🇿
+    "\U0001f1f0\U0001f1ea",  # 🇰🇪
+    "\U0001f1f0\U0001f1ee",  # 🇰🇮
+    "\U0001f1fd\U0001f1f0",  # 🇽🇰
+    "\U0001f1f0\U0001f1fc",  # 🇰🇼
+    "\U0001f1f0\U0001f1ec",  # 🇰🇬
+    "\U0001f1f1\U0001f1e6",  # 🇱🇦
+    "\U0001f1f1\U0001f1fb",  # 🇱🇻
+    "\U0001f1f1\U0001f1e7",  # 🇱🇧
+    "\U0000264c",  # ♌
+    "\U0001f1f1\U0001f1f8",  # 🇱🇸
+    "\U0001f1f1\U0001f1f7",  # 🇱🇷
+    "\U0000264e",  # ♎
+    "\U0001f1f1\U0001f1fe",  # 🇱🇾
+    "\U0001f1f1\U0001f1ee",  # 🇱🇮
+    "\U0001f1f1\U0001f1f9",  # 🇱🇹
+    "\U0001f1f1\U0001f1fa",  # 🇱🇺
+    "\U0001f1f2\U0001f1f4",  # 🇲🇴
+    "\U0001f1f2\U0001f1ec",  # 🇲🇬
+    "\U0001f1f2\U0001f1fc",  # 🇲🇼
+    "\U0001f1f2\U0001f1fe",  # 🇲🇾
+    "\U0001f1f2\U0001f1fb",  # 🇲🇻
+    "\U0001f1f2\U0001f1f1",  # 🇲🇱
+    "\U0001f1f2\U0001f1f9",  # 🇲🇹
+    "\U0001f1f2\U0001f1ed",  # 🇲🇭
+    "\U0001f1f2\U0001f1f6",  # 🇲🇶
+    "\U0001f1f2\U0001f1f7",  # 🇲🇷
+    "\U0001f1f2\U0001f1fa",  # 🇲🇺
+    "\U0001f1fe\U0001f1f9",  # 🇾🇹
+    "\U0001f1f2\U0001f1fd",  # 🇲🇽
+    "\U0001f1eb\U0001f1f2",  # 🇫🇲
+    "\U0001f1f2\U0001f1e9",  # 🇲🇩
+    "\U0001f1f2\U0001f1e8",  # 🇲🇨
+    "\U0001f1f2\U0001f1f3",  # 🇲🇳
+    "\U0001f1f2\U0001f1ea",  # 🇲🇪
+    "\U0001f1f2\U0001f1f8",  # 🇲🇸
+    "\U0001f1f2\U0001f1e6",  # 🇲🇦
+    "\U0001f1f2\U0001f1ff",  # 🇲🇿
+    "\U0001f936",  # 🤶
+    "\U0001f936\U0001f3ff",  # 🤶🏿
+    "\U0001f936\U0001f3fb",  # 🤶🏻
+    "\U0001f936\U0001f3fe",  # 🤶🏾
+    "\U0001f936\U0001f3fc",  # 🤶🏼
+    "\U0001f936\U0001f3fd",  # 🤶🏽
+    "\U0001f9d1\U0000200d\U0001f384",  # 🧑‍🎄
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f384",  # 🧑🏿‍🎄
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f384",  # 🧑🏻‍🎄
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f384",  # 🧑🏾‍🎄
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f384",  # 🧑🏼‍🎄
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f384",  # 🧑🏽‍🎄
+    "\U0001f1f2\U0001f1f2",  # 🇲🇲
+    "\U0001f195",  # 🆕
+    "\U0001f196",  # 🆖
+    "\U0001f1f3\U0001f1e6",  # 🇳🇦
+    "\U0001f1f3\U0001f1f7",  # 🇳🇷
+    "\U0001f1f3\U0001f1f5",  # 🇳🇵
+    "\U0001f1f3\U0001f1f1",  # 🇳🇱
+    "\U0001f1f3\U0001f1e8",  # 🇳🇨
+    "\U0001f1f3\U0001f1ff",  # 🇳🇿
+    "\U0001f1f3\U0001f1ee",  # 🇳🇮
+    "\U0001f1f3\U0001f1ea",  # 🇳🇪
+    "\U0001f1f3\U0001f1ec",  # 🇳🇬
+    "\U0001f1f3\U0001f1fa",  # 🇳🇺
+    "\U0001f1f3\U0001f1eb",  # 🇳🇫
+    "\U0001f1f0\U0001f1f5",  # 🇰🇵
+    "\U0001f1f2\U0001f1f0",  # 🇲🇰
+    "\U0001f1f2\U0001f1f5",  # 🇲🇵
+    "\U0001f1f3\U0001f1f4",  # 🇳🇴
+    "\U0001f197",  # 🆗
+    "\U0001f44c",  # 👌
+    "\U0001f44c\U0001f3ff",  # 👌🏿
+    "\U0001f44c\U0001f3fb",  # 👌🏻
+    "\U0001f44c\U0001f3fe",  # 👌🏾
+    "\U0001f44c\U0001f3fc",  # 👌🏼
+    "\U0001f44c\U0001f3fd",  # 👌🏽
+    "\U0001f51b",  # 🔛
+    "\U0001f17e\U0000fe0f",  # 🅾️
+    "\U0001f17e",  # 🅾
+    "\U0001f1f4\U0001f1f2",  # 🇴🇲
+    "\U000026ce",  # ⛎
+    "\U0001f17f\U0000fe0f",  # 🅿️
+    "\U0001f17f",  # 🅿
+    "\U0001f1f5\U0001f1f0",  # 🇵🇰
+    "\U0001f1f5\U0001f1fc",  # 🇵🇼
+    "\U0001f1f5\U0001f1f8",  # 🇵🇸
+    "\U0001f1f5\U0001f1e6",  # 🇵🇦
+    "\U0001f1f5\U0001f1ec",  # 🇵🇬
+    "\U0001f1f5\U0001f1fe",  # 🇵🇾
+    "\U0001f1f5\U0001f1ea",  # 🇵🇪
+    "\U0001f1f5\U0001f1ed",  # 🇵🇭
+    "\U00002653",  # ♓
+    "\U0001f1f5\U0001f1f3",  # 🇵🇳
+    "\U0001f1f5\U0001f1f1",  # 🇵🇱
+    "\U0001f1f5\U0001f1f9",  # 🇵🇹
+    "\U0001f1f5\U0001f1f7",  # 🇵🇷
+    "\U0001f1f6\U0001f1e6",  # 🇶🇦
+    "\U0001f1f7\U0001f1f4",  # 🇷🇴
+    "\U0001f1f7\U0001f1fa",  # 🇷🇺
+    "\U0001f1f7\U0001f1fc",  # 🇷🇼
+    "\U0001f1f7\U0001f1ea",  # 🇷🇪
+    "\U0001f51c",  # 🔜
+    "\U0001f198",  # 🆘
+    "\U00002650",  # ♐
+    "\U0001f1fc\U0001f1f8",  # 🇼🇸
+    "\U0001f1f8\U0001f1f2",  # 🇸🇲
+    "\U0001f385",  # 🎅
+    "\U0001f385\U0001f3ff",  # 🎅🏿
+    "\U0001f385\U0001f3fb",  # 🎅🏻
+    "\U0001f385\U0001f3fe",  # 🎅🏾
+    "\U0001f385\U0001f3fc",  # 🎅🏼
+    "\U0001f385\U0001f3fd",  # 🎅🏽
+    "\U0001f1e8\U0001f1f6",  # 🇨🇶
+    "\U0001f1f8\U0001f1e6",  # 🇸🇦
+    "\U0000264f",  # ♏
+    "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f",  # 🏴󠁧󠁢󠁳󠁣󠁴󠁿
+    "\U0001f1f8\U0001f1f3",  # 🇸🇳
+    "\U0001f1f7\U0001f1f8",  # 🇷🇸
+    "\U0001f1f8\U0001f1e8",  # 🇸🇨
+    "\U0001f1f8\U0001f1f1",  # 🇸🇱
+    "\U0001f1f8\U0001f1ec",  # 🇸🇬
+    "\U0001f1f8\U0001f1fd",  # 🇸🇽
+    "\U0001f1f8\U0001f1f0",  # 🇸🇰
+    "\U0001f1f8\U0001f1ee",  # 🇸🇮
+    "\U0001f1f8\U0001f1e7",  # 🇸🇧
+    "\U0001f1f8\U0001f1f4",  # 🇸🇴
+    "\U0001f1ff\U0001f1e6",  # 🇿🇦
+    "\U0001f1ec\U0001f1f8",  # 🇬🇸
+    "\U0001f1f0\U0001f1f7",  # 🇰🇷
+    "\U0001f1f8\U0001f1f8",  # 🇸🇸
+    "\U0001f1ea\U0001f1f8",  # 🇪🇸
+    "\U0001f1f1\U0001f1f0",  # 🇱🇰
+    "\U0001f1e7\U0001f1f1",  # 🇧🇱
+    "\U0001f1f8\U0001f1ed",  # 🇸🇭
+    "\U0001f1f0\U0001f1f3",  # 🇰🇳
+    "\U0001f1f1\U0001f1e8",  # 🇱🇨
+    "\U0001f1f2\U0001f1eb",  # 🇲🇫
+    "\U0001f1f5\U0001f1f2",  # 🇵🇲
+    "\U0001f1fb\U0001f1e8",  # 🇻🇨
+    "\U0001f5fd",  # 🗽
+    "\U0001f1f8\U0001f1e9",  # 🇸🇩
+    "\U0001f1f8\U0001f1f7",  # 🇸🇷
+    "\U0001f1f8\U0001f1ef",  # 🇸🇯
+    "\U0001f1f8\U0001f1ea",  # 🇸🇪
+    "\U0001f1e8\U0001f1ed",  # 🇨🇭
+    "\U0001f1f8\U0001f1fe",  # 🇸🇾
+    "\U0001f1f8\U0001f1f9",  # 🇸🇹
+    "\U0001f996",  # 🦖
+    "\U0001f51d",  # 🔝
+    "\U0001f1f9\U0001f1fc",  # 🇹🇼
+    "\U0001f1f9\U0001f1ef",  # 🇹🇯
+    "\U0001f1f9\U0001f1ff",  # 🇹🇿
+    "\U00002649",  # ♉
+    "\U0001f1f9\U0001f1ed",  # 🇹🇭
+    "\U0001f1f9\U0001f1f1",  # 🇹🇱
+    "\U0001f1f9\U0001f1ec",  # 🇹🇬
+    "\U0001f1f9\U0001f1f0",  # 🇹🇰
+    "\U0001f5fc",  # 🗼
+    "\U0001f1f9\U0001f1f4",  # 🇹🇴
+    "\U0001f1f9\U0001f1f9",  # 🇹🇹
+    "\U0001f1f9\U0001f1e6",  # 🇹🇦
+    "\U0001f1f9\U0001f1f3",  # 🇹🇳
+    "\U0001f1f9\U0001f1f2",  # 🇹🇲
+    "\U0001f1f9\U0001f1e8",  # 🇹🇨
+    "\U0001f1f9\U0001f1fb",  # 🇹🇻
+    "\U0001f1f9\U0001f1f7",  # 🇹🇷
+    "\U0001f1fa\U0001f1f2",  # 🇺🇲
+    "\U0001f1fb\U0001f1ee",  # 🇻🇮
+    "\U0001f199",  # 🆙
+    "\U0001f1fa\U0001f1ec",  # 🇺🇬
+    "\U0001f1fa\U0001f1e6",  # 🇺🇦
+    "\U0001f1e6\U0001f1ea",  # 🇦🇪
+    "\U0001f1ec\U0001f1e7",  # 🇬🇧
+    "\U0001f1fa\U0001f1f3",  # 🇺🇳
+    "\U0001f1fa\U0001f1f8",  # 🇺🇸
+    "\U0001f1fa\U0001f1fe",  # 🇺🇾
+    "\U0001f1fa\U0001f1ff",  # 🇺🇿
+    "\U0001f19a",  # 🆚
+    "\U0001f1fb\U0001f1fa",  # 🇻🇺
+    "\U0001f1fb\U0001f1e6",  # 🇻🇦
+    "\U0001f1fb\U0001f1ea",  # 🇻🇪
+    "\U0001f1fb\U0001f1f3",  # 🇻🇳
+    "\U0000264d",  # ♍
+    "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f",  # 🏴󠁧󠁢󠁷󠁬󠁳󠁿
+    "\U0001f1fc\U0001f1eb",  # 🇼🇫
+    "\U0001f1ea\U0001f1ed",  # 🇪🇭
+    "\U0001f1fe\U0001f1ea",  # 🇾🇪
+    "\U0001f4a4",  # 💤
+    "\U0001f1ff\U0001f1f2",  # 🇿🇲
+    "\U0001f1ff\U0001f1fc",  # 🇿🇼
+    "\U0001f9ee",  # 🧮
+    "\U0001fa97",  # 🪗
+    "\U0001fa79",  # 🩹
+    "\U0001f39f\U0000fe0f",  # 🎟️
+    "\U0001f39f",  # 🎟
+    "\U0001f6a1",  # 🚡
+    "\U00002708\U0000fe0f",  # ✈️
+    "\U00002708",  # ✈
+    "\U0001f6ec",  # 🛬
+    "\U0001f6eb",  # 🛫
+    "\U000023f0",  # ⏰
+    "\U00002697\U0000fe0f",  # ⚗️
+    "\U00002697",  # ⚗
+    "\U0001f47d",  # 👽
+    "\U0001f47e",  # 👾
+    "\U0001f691",  # 🚑
+    "\U0001f3c8",  # 🏈
+    "\U0001f3fa",  # 🏺
+    "\U0001fac0",  # 🫀
+    "\U00002693",  # ⚓
+    "\U0001f4a2",  # 💢
+    "\U0001f620",  # 😠
+    "\U0001f47f",  # 👿
+    "\U0001f627",  # 😧
+    "\U0001f41c",  # 🐜
+    "\U0001f4f6",  # 📶
+    "\U0001f630",  # 😰
+    "\U0001f69b",  # 🚛
+    "\U0001f9d1\U0000200d\U0001f3a8",  # 🧑‍🎨
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f3a8",  # 🧑🏿‍🎨
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f3a8",  # 🧑🏻‍🎨
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f3a8",  # 🧑🏾‍🎨
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f3a8",  # 🧑🏼‍🎨
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f3a8",  # 🧑🏽‍🎨
+    "\U0001f3a8",  # 🎨
+    "\U0001f632",  # 😲
+    "\U0001f9d1\U0000200d\U0001f680",  # 🧑‍🚀
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f680",  # 🧑🏿‍🚀
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f680",  # 🧑🏻‍🚀
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f680",  # 🧑🏾‍🚀
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f680",  # 🧑🏼‍🚀
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f680",  # 🧑🏽‍🚀
+    "\U0000269b\U0000fe0f",  # ⚛️
+    "\U0000269b",  # ⚛
+    "\U0001f6fa",  # 🛺
+    "\U0001f697",  # 🚗
+    "\U0001f951",  # 🥑
+    "\U0001fa93",  # 🪓
+    "\U0001f476",  # 👶
+    "\U0001f47c",  # 👼
+    "\U0001f47c\U0001f3ff",  # 👼🏿
+    "\U0001f47c\U0001f3fb",  # 👼🏻
+    "\U0001f47c\U0001f3fe",  # 👼🏾
+    "\U0001f47c\U0001f3fc",  # 👼🏼
+    "\U0001f47c\U0001f3fd",  # 👼🏽
+    "\U0001f37c",  # 🍼
+    "\U0001f424",  # 🐤
+    "\U0001f476\U0001f3ff",  # 👶🏿
+    "\U0001f476\U0001f3fb",  # 👶🏻
+    "\U0001f476\U0001f3fe",  # 👶🏾
+    "\U0001f476\U0001f3fc",  # 👶🏼
+    "\U0001f476\U0001f3fd",  # 👶🏽
+    "\U0001f6bc",  # 🚼
+    "\U0001f447",  # 👇
+    "\U0001f447\U0001f3ff",  # 👇🏿
+    "\U0001f447\U0001f3fb",  # 👇🏻
+    "\U0001f447\U0001f3fe",  # 👇🏾
+    "\U0001f447\U0001f3fc",  # 👇🏼
+    "\U0001f447\U0001f3fd",  # 👇🏽
+    "\U0001f448",  # 👈
+    "\U0001f448\U0001f3ff",  # 👈🏿
+    "\U0001f448\U0001f3fb",  # 👈🏻
+    "\U0001f448\U0001f3fe",  # 👈🏾
+    "\U0001f448\U0001f3fc",  # 👈🏼
+    "\U0001f448\U0001f3fd",  # 👈🏽
+    "\U0001f449",  # 👉
+    "\U0001f449\U0001f3ff",  # 👉🏿
+    "\U0001f449\U0001f3fb",  # 👉🏻
+    "\U0001f449\U0001f3fe",  # 👉🏾
+    "\U0001f449\U0001f3fc",  # 👉🏼
+    "\U0001f449\U0001f3fd",  # 👉🏽
+    "\U0001f446",  # 👆
+    "\U0001f446\U0001f3ff",  # 👆🏿
+    "\U0001f446\U0001f3fb",  # 👆🏻
+    "\U0001f446\U0001f3fe",  # 👆🏾
+    "\U0001f446\U0001f3fc",  # 👆🏼
+    "\U0001f446\U0001f3fd",  # 👆🏽
+    "\U0001f392",  # 🎒
+    "\U0001f953",  # 🥓
+    "\U0001f9a1",  # 🦡
+    "\U0001f3f8",  # 🏸
+    "\U0001f96f",  # 🥯
+    "\U0001f6c4",  # 🛄
+    "\U0001f956",  # 🥖
+    "\U00002696\U0000fe0f",  # ⚖️
+    "\U00002696",  # ⚖
+    "\U0001f9b2",  # 🦲
+    "\U0001fa70",  # 🩰
+    "\U0001f388",  # 🎈
+    "\U0001f5f3\U0000fe0f",  # 🗳️
+    "\U0001f5f3",  # 🗳
+    "\U0001f34c",  # 🍌
+    "\U0001fa95",  # 🪕
+    "\U0001f3e6",  # 🏦
+    "\U0001f4ca",  # 📊
+    "\U0001f488",  # 💈
+    "\U000026be",  # ⚾
+    "\U0001f9fa",  # 🧺
+    "\U0001f3c0",  # 🏀
+    "\U0001f987",  # 🦇
+    "\U0001f6c1",  # 🛁
+    "\U0001f50b",  # 🔋
+    "\U0001f3d6\U0000fe0f",  # 🏖️
+    "\U0001f3d6",  # 🏖
+    "\U0001f601",  # 😁
+    "\U0001fad8",  # 🫘
+    "\U0001f43b",  # 🐻
+    "\U0001f493",  # 💓
+    "\U0001f9ab",  # 🦫
+    "\U0001f6cf\U0000fe0f",  # 🛏️
+    "\U0001f6cf",  # 🛏
+    "\U0001f37a",  # 🍺
+    "\U0001fab2",  # 🪲
+    "\U0001f514",  # 🔔
+    "\U0001fad1",  # 🫑
+    "\U0001f515",  # 🔕
+    "\U0001f6ce\U0000fe0f",  # 🛎️
+    "\U0001f6ce",  # 🛎
+    "\U0001f371",  # 🍱
+    "\U0001f9c3",  # 🧃
+    "\U0001f6b2",  # 🚲
+    "\U0001f459",  # 👙
+    "\U0001f9e2",  # 🧢
+    "\U00002623\U0000fe0f",  # ☣️
+    "\U00002623",  # ☣
+    "\U0001f426",  # 🐦
+    "\U0001f382",  # 🎂
+    "\U0001f9ac",  # 🦬
+    "\U0001fae6",  # 🫦
+    "\U0001f426\U0000200d\U00002b1b",  # 🐦‍⬛
+    "\U0001f408\U0000200d\U00002b1b",  # 🐈‍⬛
+    "\U000026ab",  # ⚫
+    "\U0001f3f4",  # 🏴
+    "\U0001f5a4",  # 🖤
+    "\U00002b1b",  # ⬛
+    "\U000025fe",  # ◾
+    "\U000025fc\U0000fe0f",  # ◼️
+    "\U000025fc",  # ◼
+    "\U00002712\U0000fe0f",  # ✒️
+    "\U00002712",  # ✒
+    "\U000025aa\U0000fe0f",  # ▪️
+    "\U000025aa",  # ▪
+    "\U0001f532",  # 🔲
+    "\U0001f33c",  # 🌼
+    "\U0001f421",  # 🐡
+    "\U0001f4d8",  # 📘
+    "\U0001f535",  # 🔵
+    "\U0001f499",  # 💙
+    "\U0001f7e6",  # 🟦
+    "\U0001fad0",  # 🫐
+    "\U0001f417",  # 🐗
+    "\U0001f4a3",  # 💣
+    "\U0001f9b4",  # 🦴
+    "\U0001f516",  # 🔖
+    "\U0001f4d1",  # 📑
+    "\U0001f4da",  # 📚
+    "\U0001fa83",  # 🪃
+    "\U0001f37e",  # 🍾
+    "\U0001f490",  # 💐
+    "\U0001f3f9",  # 🏹
+    "\U0001f963",  # 🥣
+    "\U0001f3b3",  # 🎳
+    "\U0001f94a",  # 🥊
+    "\U0001f466",  # 👦
+    "\U0001f466\U0001f3ff",  # 👦🏿
+    "\U0001f466\U0001f3fb",  # 👦🏻
+    "\U0001f466\U0001f3fe",  # 👦🏾
+    "\U0001f466\U0001f3fc",  # 👦🏼
+    "\U0001f466\U0001f3fd",  # 👦🏽
+    "\U0001f9e0",  # 🧠
+    "\U0001f35e",  # 🍞
+    "\U0001f931",  # 🤱
+    "\U0001f931\U0001f3ff",  # 🤱🏿
+    "\U0001f931\U0001f3fb",  # 🤱🏻
+    "\U0001f931\U0001f3fe",  # 🤱🏾
+    "\U0001f931\U0001f3fc",  # 🤱🏼
+    "\U0001f931\U0001f3fd",  # 🤱🏽
+    "\U0001f9f1",  # 🧱
+    "\U0001f309",  # 🌉
+    "\U0001f4bc",  # 💼
+    "\U0001fa72",  # 🩲
+    "\U0001f506",  # 🔆
+    "\U0001f966",  # 🥦
+    "\U000026d3\U0000fe0f\U0000200d\U0001f4a5",  # ⛓️‍💥
+    "\U000026d3\U0000200d\U0001f4a5",  # ⛓‍💥
+    "\U0001f494",  # 💔
+    "\U0001f9f9",  # 🧹
+    "\U0001f7e4",  # 🟤
+    "\U0001f90e",  # 🤎
+    "\U0001f344\U0000200d\U0001f7eb",  # 🍄‍🟫
+    "\U0001f7eb",  # 🟫
+    "\U0001f9cb",  # 🧋
+    "\U0001fae7",  # 🫧
+    "\U0001faa3",  # 🪣
+    "\U0001f41b",  # 🐛
+    "\U0001f3d7\U0000fe0f",  # 🏗️
+    "\U0001f3d7",  # 🏗
+    "\U0001f685",  # 🚅
+    "\U0001f3af",  # 🎯
+    "\U0001f32f",  # 🌯
+    "\U0001f68c",  # 🚌
+    "\U0001f68f",  # 🚏
+    "\U0001f464",  # 👤
+    "\U0001f465",  # 👥
+    "\U0001f9c8",  # 🧈
+    "\U0001f98b",  # 🦋
+    "\U0001f335",  # 🌵
+    "\U0001f4c5",  # 📅
+    "\U0001f919",  # 🤙
+    "\U0001f919\U0001f3ff",  # 🤙🏿
+    "\U0001f919\U0001f3fb",  # 🤙🏻
+    "\U0001f919\U0001f3fe",  # 🤙🏾
+    "\U0001f919\U0001f3fc",  # 🤙🏼
+    "\U0001f919\U0001f3fd",  # 🤙🏽
+    "\U0001f42a",  # 🐪
+    "\U0001f4f7",  # 📷
+    "\U0001f4f8",  # 📸
+    "\U0001f3d5\U0000fe0f",  # 🏕️
+    "\U0001f3d5",  # 🏕
+    "\U0001f56f\U0000fe0f",  # 🕯️
+    "\U0001f56f",  # 🕯
+    "\U0001f36c",  # 🍬
+    "\U0001f96b",  # 🥫
+    "\U0001f6f6",  # 🛶
+    "\U0001f5c3\U0000fe0f",  # 🗃️
+    "\U0001f5c3",  # 🗃
+    "\U0001f4c7",  # 📇
+    "\U0001f5c2\U0000fe0f",  # 🗂️
+    "\U0001f5c2",  # 🗂
+    "\U0001f3a0",  # 🎠
+    "\U0001f38f",  # 🎏
+    "\U0001fa9a",  # 🪚
+    "\U0001f955",  # 🥕
+    "\U0001f3f0",  # 🏰
+    "\U0001f408",  # 🐈
+    "\U0001f431",  # 🐱
+    "\U0001f639",  # 😹
+    "\U0001f63c",  # 😼
+    "\U000026d3\U0000fe0f",  # ⛓️
+    "\U000026d3",  # ⛓
+    "\U0001fa91",  # 🪑
+    "\U0001f4c9",  # 📉
+    "\U0001f4c8",  # 📈
+    "\U0001f4b9",  # 💹
+    "\U00002611\U0000fe0f",  # ☑️
+    "\U00002611",  # ☑
+    "\U00002714\U0000fe0f",  # ✔️
+    "\U00002714",  # ✔
+    "\U00002705",  # ✅
+    "\U0001f9c0",  # 🧀
+    "\U0001f3c1",  # 🏁
+    "\U0001f352",  # 🍒
+    "\U0001f338",  # 🌸
+    "\U0000265f\U0000fe0f",  # ♟️
+    "\U0000265f",  # ♟
+    "\U0001f330",  # 🌰
+    "\U0001f414",  # 🐔
+    "\U0001f9d2",  # 🧒
+    "\U0001f9d2\U0001f3ff",  # 🧒🏿
+    "\U0001f9d2\U0001f3fb",  # 🧒🏻
+    "\U0001f9d2\U0001f3fe",  # 🧒🏾
+    "\U0001f9d2\U0001f3fc",  # 🧒🏼
+    "\U0001f9d2\U0001f3fd",  # 🧒🏽
+    "\U0001f6b8",  # 🚸
+    "\U0001f43f\U0000fe0f",  # 🐿️
+    "\U0001f43f",  # 🐿
+    "\U0001f36b",  # 🍫
+    "\U0001f962",  # 🥢
+    "\U000026ea",  # ⛪
+    "\U0001f6ac",  # 🚬
+    "\U0001f3a6",  # 🎦
+    "\U000024c2\U0000fe0f",  # Ⓜ️
+    "\U000024c2",  # Ⓜ
+    "\U0001f3aa",  # 🎪
+    "\U0001f3d9\U0000fe0f",  # 🏙️
+    "\U0001f3d9",  # 🏙
+    "\U0001f306",  # 🌆
+    "\U0001f5dc\U0000fe0f",  # 🗜️
+    "\U0001f5dc",  # 🗜
+    "\U0001f3ac",  # 🎬
+    "\U0001f44f",  # 👏
+    "\U0001f44f\U0001f3ff",  # 👏🏿
+    "\U0001f44f\U0001f3fb",  # 👏🏻
+    "\U0001f44f\U0001f3fe",  # 👏🏾
+    "\U0001f44f\U0001f3fc",  # 👏🏼
+    "\U0001f44f\U0001f3fd",  # 👏🏽
+    "\U0001f3db\U0000fe0f",  # 🏛️
+    "\U0001f3db",  # 🏛
+    "\U0001f37b",  # 🍻
+    "\U0001f942",  # 🥂
+    "\U0001f4cb",  # 📋
+    "\U0001f503",  # 🔃
+    "\U0001f4d5",  # 📕
+    "\U0001f4ea",  # 📪
+    "\U0001f4eb",  # 📫
+    "\U0001f302",  # 🌂
+    "\U00002601\U0000fe0f",  # ☁️
+    "\U00002601",  # ☁
+    "\U0001f329\U0000fe0f",  # 🌩️
+    "\U0001f329",  # 🌩
+    "\U000026c8\U0000fe0f",  # ⛈️
+    "\U000026c8",  # ⛈
+    "\U0001f327\U0000fe0f",  # 🌧️
+    "\U0001f327",  # 🌧
+    "\U0001f328\U0000fe0f",  # 🌨️
+    "\U0001f328",  # 🌨
+    "\U0001f921",  # 🤡
+    "\U00002663\U0000fe0f",  # ♣️
+    "\U00002663",  # ♣
+    "\U0001f45d",  # 👝
+    "\U0001f9e5",  # 🧥
+    "\U0001fab3",  # 🪳
+    "\U0001f378",  # 🍸
+    "\U0001f965",  # 🥥
+    "\U000026b0\U0000fe0f",  # ⚰️
+    "\U000026b0",  # ⚰
+    "\U0001fa99",  # 🪙
+    "\U0001f976",  # 🥶
+    "\U0001f4a5",  # 💥
+    "\U00002604\U0000fe0f",  # ☄️
+    "\U00002604",  # ☄
+    "\U0001f9ed",  # 🧭
+    "\U0001f4bd",  # 💽
+    "\U0001f5b1\U0000fe0f",  # 🖱️
+    "\U0001f5b1",  # 🖱
+    "\U0001f38a",  # 🎊
+    "\U0001f616",  # 😖
+    "\U0001f615",  # 😕
+    "\U0001f6a7",  # 🚧
+    "\U0001f477",  # 👷
+    "\U0001f477\U0001f3ff",  # 👷🏿
+    "\U0001f477\U0001f3fb",  # 👷🏻
+    "\U0001f477\U0001f3fe",  # 👷🏾
+    "\U0001f477\U0001f3fc",  # 👷🏼
+    "\U0001f477\U0001f3fd",  # 👷🏽
+    "\U0001f39b\U0000fe0f",  # 🎛️
+    "\U0001f39b",  # 🎛
+    "\U0001f3ea",  # 🏪
+    "\U0001f9d1\U0000200d\U0001f373",  # 🧑‍🍳
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f373",  # 🧑🏿‍🍳
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f373",  # 🧑🏻‍🍳
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f373",  # 🧑🏾‍🍳
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f373",  # 🧑🏼‍🍳
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f373",  # 🧑🏽‍🍳
+    "\U0001f35a",  # 🍚
+    "\U0001f36a",  # 🍪
+    "\U0001f373",  # 🍳
+    "\U000000a9\U0000fe0f",  # ©️
+    "\U000000a9",  # ©
+    "\U0001fab8",  # 🪸
+    "\U0001f6cb\U0000fe0f",  # 🛋️
+    "\U0001f6cb",  # 🛋
+    "\U0001f504",  # 🔄
+    "\U0001f491",  # 💑
+    "\U0001f491\U0001f3ff",  # 💑🏿
+    "\U0001f491\U0001f3fb",  # 💑🏻
+    "\U0001f468\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468",  # 👨‍❤️‍👨
+    "\U0001f468\U0000200d\U00002764\U0000200d\U0001f468",  # 👨‍❤‍👨
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👨🏿‍❤️‍👨🏿
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👨🏿‍❤‍👨🏿
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👨🏿‍❤️‍👨🏻
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👨🏿‍❤‍👨🏻
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👨🏿‍❤️‍👨🏾
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👨🏿‍❤‍👨🏾
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👨🏿‍❤️‍👨🏼
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👨🏿‍❤‍👨🏼
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👨🏿‍❤️‍👨🏽
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👨🏿‍❤‍👨🏽
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👨🏻‍❤️‍👨🏻
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👨🏻‍❤‍👨🏻
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👨🏻‍❤️‍👨🏿
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👨🏻‍❤‍👨🏿
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👨🏻‍❤️‍👨🏾
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👨🏻‍❤‍👨🏾
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👨🏻‍❤️‍👨🏼
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👨🏻‍❤‍👨🏼
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👨🏻‍❤️‍👨🏽
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👨🏻‍❤‍👨🏽
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👨🏾‍❤️‍👨🏾
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👨🏾‍❤‍👨🏾
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👨🏾‍❤️‍👨🏿
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👨🏾‍❤‍👨🏿
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👨🏾‍❤️‍👨🏻
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👨🏾‍❤‍👨🏻
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👨🏾‍❤️‍👨🏼
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👨🏾‍❤‍👨🏼
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👨🏾‍❤️‍👨🏽
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👨🏾‍❤‍👨🏽
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👨🏼‍❤️‍👨🏼
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👨🏼‍❤‍👨🏼
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👨🏼‍❤️‍👨🏿
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👨🏼‍❤‍👨🏿
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👨🏼‍❤️‍👨🏻
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👨🏼‍❤‍👨🏻
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👨🏼‍❤️‍👨🏾
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👨🏼‍❤‍👨🏾
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👨🏼‍❤️‍👨🏽
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👨🏼‍❤‍👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👨🏽‍❤️‍👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👨🏽‍❤‍👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👨🏽‍❤️‍👨🏿
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👨🏽‍❤‍👨🏿
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👨🏽‍❤️‍👨🏻
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👨🏽‍❤‍👨🏻
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👨🏽‍❤️‍👨🏾
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👨🏽‍❤‍👨🏾
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👨🏽‍❤️‍👨🏼
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👨🏽‍❤‍👨🏼
+    "\U0001f491\U0001f3fe",  # 💑🏾
+    "\U0001f491\U0001f3fc",  # 💑🏼
+    "\U0001f491\U0001f3fd",  # 💑🏽
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏿‍❤️‍🧑🏻
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏿‍❤‍🧑🏻
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏿‍❤️‍🧑🏾
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏿‍❤‍🧑🏾
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏿‍❤️‍🧑🏼
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏿‍❤‍🧑🏼
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏿‍❤️‍🧑🏽
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏿‍❤‍🧑🏽
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏻‍❤️‍🧑🏿
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏻‍❤‍🧑🏿
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏻‍❤️‍🧑🏾
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏻‍❤‍🧑🏾
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏻‍❤️‍🧑🏼
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏻‍❤‍🧑🏼
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏻‍❤️‍🧑🏽
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏻‍❤‍🧑🏽
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏾‍❤️‍🧑🏿
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏾‍❤‍🧑🏿
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏾‍❤️‍🧑🏻
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏾‍❤‍🧑🏻
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏾‍❤️‍🧑🏼
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏾‍❤‍🧑🏼
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏾‍❤️‍🧑🏽
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏾‍❤‍🧑🏽
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏼‍❤️‍🧑🏿
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏼‍❤‍🧑🏿
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏼‍❤️‍🧑🏻
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏼‍❤‍🧑🏻
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏼‍❤️‍🧑🏾
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏼‍❤‍🧑🏾
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏼‍❤️‍🧑🏽
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏼‍❤‍🧑🏽
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏽‍❤️‍🧑🏿
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏽‍❤‍🧑🏿
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏽‍❤️‍🧑🏻
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏽‍❤‍🧑🏻
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏽‍❤️‍🧑🏾
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏽‍❤‍🧑🏾
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏽‍❤️‍🧑🏼
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏽‍❤‍🧑🏼
+    "\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468",  # 👩‍❤️‍👨
+    "\U0001f469\U0000200d\U00002764\U0000200d\U0001f468",  # 👩‍❤‍👨
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👩🏿‍❤️‍👨🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👩🏿‍❤‍👨🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👩🏿‍❤️‍👨🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👩🏿‍❤‍👨🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👩🏿‍❤️‍👨🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👩🏿‍❤‍👨🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👩🏿‍❤️‍👨🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👩🏿‍❤‍👨🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👩🏿‍❤️‍👨🏽
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👩🏿‍❤‍👨🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👩🏻‍❤️‍👨🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👩🏻‍❤‍👨🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👩🏻‍❤️‍👨🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👩🏻‍❤‍👨🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👩🏻‍❤️‍👨🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👩🏻‍❤‍👨🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👩🏻‍❤️‍👨🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👩🏻‍❤‍👨🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👩🏻‍❤️‍👨🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👩🏻‍❤‍👨🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👩🏾‍❤️‍👨🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👩🏾‍❤‍👨🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👩🏾‍❤️‍👨🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👩🏾‍❤‍👨🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👩🏾‍❤️‍👨🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👩🏾‍❤‍👨🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👩🏾‍❤️‍👨🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👩🏾‍❤‍👨🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👩🏾‍❤️‍👨🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👩🏾‍❤‍👨🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👩🏼‍❤️‍👨🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👩🏼‍❤‍👨🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👩🏼‍❤️‍👨🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👩🏼‍❤‍👨🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👩🏼‍❤️‍👨🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👩🏼‍❤‍👨🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👩🏼‍❤️‍👨🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👩🏼‍❤‍👨🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👩🏼‍❤️‍👨🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👩🏼‍❤‍👨🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fd",  # 👩🏽‍❤️‍👨🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fd",  # 👩🏽‍❤‍👨🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3ff",  # 👩🏽‍❤️‍👨🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3ff",  # 👩🏽‍❤‍👨🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fb",  # 👩🏽‍❤️‍👨🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fb",  # 👩🏽‍❤‍👨🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fe",  # 👩🏽‍❤️‍👨🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fe",  # 👩🏽‍❤‍👨🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f468\U0001f3fc",  # 👩🏽‍❤️‍👨🏼
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f468\U0001f3fc",  # 👩🏽‍❤‍👨🏼
+    "\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469",  # 👩‍❤️‍👩
+    "\U0001f469\U0000200d\U00002764\U0000200d\U0001f469",  # 👩‍❤‍👩
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff",  # 👩🏿‍❤️‍👩🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff",  # 👩🏿‍❤‍👩🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb",  # 👩🏿‍❤️‍👩🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb",  # 👩🏿‍❤‍👩🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe",  # 👩🏿‍❤️‍👩🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe",  # 👩🏿‍❤‍👩🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc",  # 👩🏿‍❤️‍👩🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc",  # 👩🏿‍❤‍👩🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd",  # 👩🏿‍❤️‍👩🏽
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd",  # 👩🏿‍❤‍👩🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb",  # 👩🏻‍❤️‍👩🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb",  # 👩🏻‍❤‍👩🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff",  # 👩🏻‍❤️‍👩🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff",  # 👩🏻‍❤‍👩🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe",  # 👩🏻‍❤️‍👩🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe",  # 👩🏻‍❤‍👩🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc",  # 👩🏻‍❤️‍👩🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc",  # 👩🏻‍❤‍👩🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd",  # 👩🏻‍❤️‍👩🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd",  # 👩🏻‍❤‍👩🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe",  # 👩🏾‍❤️‍👩🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe",  # 👩🏾‍❤‍👩🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff",  # 👩🏾‍❤️‍👩🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff",  # 👩🏾‍❤‍👩🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb",  # 👩🏾‍❤️‍👩🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb",  # 👩🏾‍❤‍👩🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc",  # 👩🏾‍❤️‍👩🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc",  # 👩🏾‍❤‍👩🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd",  # 👩🏾‍❤️‍👩🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd",  # 👩🏾‍❤‍👩🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc",  # 👩🏼‍❤️‍👩🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc",  # 👩🏼‍❤‍👩🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff",  # 👩🏼‍❤️‍👩🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff",  # 👩🏼‍❤‍👩🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb",  # 👩🏼‍❤️‍👩🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb",  # 👩🏼‍❤‍👩🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe",  # 👩🏼‍❤️‍👩🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe",  # 👩🏼‍❤‍👩🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd",  # 👩🏼‍❤️‍👩🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd",  # 👩🏼‍❤‍👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fd",  # 👩🏽‍❤️‍👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fd",  # 👩🏽‍❤‍👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3ff",  # 👩🏽‍❤️‍👩🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3ff",  # 👩🏽‍❤‍👩🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fb",  # 👩🏽‍❤️‍👩🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fb",  # 👩🏽‍❤‍👩🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fe",  # 👩🏽‍❤️‍👩🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fe",  # 👩🏽‍❤‍👩🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f469\U0001f3fc",  # 👩🏽‍❤️‍👩🏼
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f469\U0001f3fc",  # 👩🏽‍❤‍👩🏼
+    "\U0001f404",  # 🐄
+    "\U0001f42e",  # 🐮
+    "\U0001f920",  # 🤠
+    "\U0001f980",  # 🦀
+    "\U0001f58d\U0000fe0f",  # 🖍️
+    "\U0001f58d",  # 🖍
+    "\U0001f4b3",  # 💳
+    "\U0001f319",  # 🌙
+    "\U0001f997",  # 🦗
+    "\U0001f3cf",  # 🏏
+    "\U0001f40a",  # 🐊
+    "\U0001f950",  # 🥐
+    "\U0000274c",  # ❌
+    "\U0000274e",  # ❎
+    "\U0001f91e",  # 🤞
+    "\U0001f91e\U0001f3ff",  # 🤞🏿
+    "\U0001f91e\U0001f3fb",  # 🤞🏻
+    "\U0001f91e\U0001f3fe",  # 🤞🏾
+    "\U0001f91e\U0001f3fc",  # 🤞🏼
+    "\U0001f91e\U0001f3fd",  # 🤞🏽
+    "\U0001f38c",  # 🎌
+    "\U00002694\U0000fe0f",  # ⚔️
+    "\U00002694",  # ⚔
+    "\U0001f451",  # 👑
+    "\U0001fa7c",  # 🩼
+    "\U0001f63f",  # 😿
+    "\U0001f622",  # 😢
+    "\U0001f52e",  # 🔮
+    "\U0001f952",  # 🥒
+    "\U0001f964",  # 🥤
+    "\U0001f9c1",  # 🧁
+    "\U0001f94c",  # 🥌
+    "\U0001f9b1",  # 🦱
+    "\U000027b0",  # ➰
+    "\U0001f4b1",  # 💱
+    "\U0001f35b",  # 🍛
+    "\U0001f36e",  # 🍮
+    "\U0001f6c3",  # 🛃
+    "\U0001f969",  # 🥩
+    "\U0001f300",  # 🌀
+    "\U0001f5e1\U0000fe0f",  # 🗡️
+    "\U0001f5e1",  # 🗡
+    "\U0001f361",  # 🍡
+    "\U0001f3ff",  # 🏿
+    "\U0001f4a8",  # 💨
+    "\U0001f9cf\U0000200d\U00002642\U0000fe0f",  # 🧏‍♂️
+    "\U0001f9cf\U0000200d\U00002642",  # 🧏‍♂
+    "\U0001f9cf\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧏🏿‍♂️
+    "\U0001f9cf\U0001f3ff\U0000200d\U00002642",  # 🧏🏿‍♂
+    "\U0001f9cf\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧏🏻‍♂️
+    "\U0001f9cf\U0001f3fb\U0000200d\U00002642",  # 🧏🏻‍♂
+    "\U0001f9cf\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧏🏾‍♂️
+    "\U0001f9cf\U0001f3fe\U0000200d\U00002642",  # 🧏🏾‍♂
+    "\U0001f9cf\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧏🏼‍♂️
+    "\U0001f9cf\U0001f3fc\U0000200d\U00002642",  # 🧏🏼‍♂
+    "\U0001f9cf\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧏🏽‍♂️
+    "\U0001f9cf\U0001f3fd\U0000200d\U00002642",  # 🧏🏽‍♂
+    "\U0001f9cf",  # 🧏
+    "\U0001f9cf\U0001f3ff",  # 🧏🏿
+    "\U0001f9cf\U0001f3fb",  # 🧏🏻
+    "\U0001f9cf\U0001f3fe",  # 🧏🏾
+    "\U0001f9cf\U0001f3fc",  # 🧏🏼
+    "\U0001f9cf\U0001f3fd",  # 🧏🏽
+    "\U0001f9cf\U0000200d\U00002640\U0000fe0f",  # 🧏‍♀️
+    "\U0001f9cf\U0000200d\U00002640",  # 🧏‍♀
+    "\U0001f9cf\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧏🏿‍♀️
+    "\U0001f9cf\U0001f3ff\U0000200d\U00002640",  # 🧏🏿‍♀
+    "\U0001f9cf\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧏🏻‍♀️
+    "\U0001f9cf\U0001f3fb\U0000200d\U00002640",  # 🧏🏻‍♀
+    "\U0001f9cf\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧏🏾‍♀️
+    "\U0001f9cf\U0001f3fe\U0000200d\U00002640",  # 🧏🏾‍♀
+    "\U0001f9cf\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧏🏼‍♀️
+    "\U0001f9cf\U0001f3fc\U0000200d\U00002640",  # 🧏🏼‍♀
+    "\U0001f9cf\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧏🏽‍♀️
+    "\U0001f9cf\U0001f3fd\U0000200d\U00002640",  # 🧏🏽‍♀
+    "\U0001f333",  # 🌳
+    "\U0001f98c",  # 🦌
+    "\U0001f69a",  # 🚚
+    "\U0001f3ec",  # 🏬
+    "\U0001f3da\U0000fe0f",  # 🏚️
+    "\U0001f3da",  # 🏚
+    "\U0001f3dc\U0000fe0f",  # 🏜️
+    "\U0001f3dc",  # 🏜
+    "\U0001f3dd\U0000fe0f",  # 🏝️
+    "\U0001f3dd",  # 🏝
+    "\U0001f5a5\U0000fe0f",  # 🖥️
+    "\U0001f5a5",  # 🖥
+    "\U0001f575\U0000fe0f",  # 🕵️
+    "\U0001f575",  # 🕵
+    "\U0001f575\U0001f3ff",  # 🕵🏿
+    "\U0001f575\U0001f3fb",  # 🕵🏻
+    "\U0001f575\U0001f3fe",  # 🕵🏾
+    "\U0001f575\U0001f3fc",  # 🕵🏼
+    "\U0001f575\U0001f3fd",  # 🕵🏽
+    "\U00002666\U0000fe0f",  # ♦️
+    "\U00002666",  # ♦
+    "\U0001f4a0",  # 💠
+    "\U0001f505",  # 🔅
+    "\U0001f61e",  # 😞
+    "\U0001f978",  # 🥸
+    "\U00002797",  # ➗
+    "\U0001f93f",  # 🤿
+    "\U0001fa94",  # 🪔
+    "\U0001f4ab",  # 💫
+    "\U0001f9ec",  # 🧬
+    "\U0001f9a4",  # 🦤
+    "\U0001f415",  # 🐕
+    "\U0001f436",  # 🐶
+    "\U0001f4b5",  # 💵
+    "\U0001f42c",  # 🐬
+    "\U0001facf",  # 🫏
+    "\U0001f6aa",  # 🚪
+    "\U0001fae5",  # 🫥
+    "\U0001f52f",  # 🔯
+    "\U000027bf",  # ➿
+    "\U0000203c\U0000fe0f",  # ‼️
+    "\U0000203c",  # ‼
+    "\U0001f369",  # 🍩
+    "\U0001f54a\U0000fe0f",  # 🕊️
+    "\U0001f54a",  # 🕊
+    "\U00002199\U0000fe0f",  # ↙️
+    "\U00002199",  # ↙
+    "\U00002198\U0000fe0f",  # ↘️
+    "\U00002198",  # ↘
+    "\U00002b07\U0000fe0f",  # ⬇️
+    "\U00002b07",  # ⬇
+    "\U0001f613",  # 😓
+    "\U0001f53d",  # 🔽
+    "\U0001f409",  # 🐉
+    "\U0001f432",  # 🐲
+    "\U0001f457",  # 👗
+    "\U0001f924",  # 🤤
+    "\U0001fa78",  # 🩸
+    "\U0001f4a7",  # 💧
+    "\U0001f941",  # 🥁
+    "\U0001f986",  # 🦆
+    "\U0001f95f",  # 🥟
+    "\U0001f4c0",  # 📀
+    "\U0001f4e7",  # 📧
+    "\U0001f985",  # 🦅
+    "\U0001f442",  # 👂
+    "\U0001f442\U0001f3ff",  # 👂🏿
+    "\U0001f442\U0001f3fb",  # 👂🏻
+    "\U0001f442\U0001f3fe",  # 👂🏾
+    "\U0001f442\U0001f3fc",  # 👂🏼
+    "\U0001f442\U0001f3fd",  # 👂🏽
+    "\U0001f33d",  # 🌽
+    "\U0001f9bb",  # 🦻
+    "\U0001f9bb\U0001f3ff",  # 🦻🏿
+    "\U0001f9bb\U0001f3fb",  # 🦻🏻
+    "\U0001f9bb\U0001f3fe",  # 🦻🏾
+    "\U0001f9bb\U0001f3fc",  # 🦻🏼
+    "\U0001f9bb\U0001f3fd",  # 🦻🏽
+    "\U0001f95a",  # 🥚
+    "\U0001f346",  # 🍆
+    "\U00002734\U0000fe0f",  # ✴️
+    "\U00002734",  # ✴
+    "\U00002733\U0000fe0f",  # ✳️
+    "\U00002733",  # ✳
+    "\U0001f563",  # 🕣
+    "\U0001f557",  # 🕗
+    "\U000023cf\U0000fe0f",  # ⏏️
+    "\U000023cf",  # ⏏
+    "\U0001f50c",  # 🔌
+    "\U0001f418",  # 🐘
+    "\U0001f6d7",  # 🛗
+    "\U0001f566",  # 🕦
+    "\U0001f55a",  # 🕚
+    "\U0001f9dd",  # 🧝
+    "\U0001f9dd\U0001f3ff",  # 🧝🏿
+    "\U0001f9dd\U0001f3fb",  # 🧝🏻
+    "\U0001f9dd\U0001f3fe",  # 🧝🏾
+    "\U0001f9dd\U0001f3fc",  # 🧝🏼
+    "\U0001f9dd\U0001f3fd",  # 🧝🏽
+    "\U0001fab9",  # 🪹
+    "\U0001f621",  # 😡
+    "\U00002709\U0000fe0f",  # ✉️
+    "\U00002709",  # ✉
+    "\U0001f4e9",  # 📩
+    "\U0001f4b6",  # 💶
+    "\U0001f332",  # 🌲
+    "\U0001f411",  # 🐑
+    "\U00002049\U0000fe0f",  # ⁉️
+    "\U00002049",  # ⁉
+    "\U0001f92f",  # 🤯
+    "\U0001f611",  # 😑
+    "\U0001f441\U0000fe0f",  # 👁️
+    "\U0001f441",  # 👁
+    "\U0001f441\U0000fe0f\U0000200d\U0001f5e8\U0000fe0f",  # 👁️‍🗨️
+    "\U0001f441\U0000200d\U0001f5e8\U0000fe0f",  # 👁‍🗨️
+    "\U0001f441\U0000fe0f\U0000200d\U0001f5e8",  # 👁️‍🗨
+    "\U0001f441\U0000200d\U0001f5e8",  # 👁‍🗨
+    "\U0001f440",  # 👀
+    "\U0001f618",  # 😘
+    "\U0001f62e\U0000200d\U0001f4a8",  # 😮‍💨
+    "\U0001f979",  # 🥹
+    "\U0001f636\U0000200d\U0001f32b\U0000fe0f",  # 😶‍🌫️
+    "\U0001f636\U0000200d\U0001f32b",  # 😶‍🌫
+    "\U0001f60b",  # 😋
+    "\U0001f631",  # 😱
+    "\U0001f92e",  # 🤮
+    "\U0001fae9",  # 🫩
+    "\U0001f635",  # 😵
+    "\U0001fae4",  # 🫤
+    "\U0001f92d",  # 🤭
+    "\U0001f915",  # 🤕
+    "\U0001f637",  # 😷
+    "\U0001f9d0",  # 🧐
+    "\U0001fae2",  # 🫢
+    "\U0001f62e",  # 😮
+    "\U0001fae3",  # 🫣
+    "\U0001f928",  # 🤨
+    "\U0001f644",  # 🙄
+    "\U0001f635\U0000200d\U0001f4ab",  # 😵‍💫
+    "\U0001f624",  # 😤
+    "\U0001f92c",  # 🤬
+    "\U0001f602",  # 😂
+    "\U0001f912",  # 🤒
+    "\U0001f61b",  # 😛
+    "\U0001f636",  # 😶
+    "\U0001f3ed",  # 🏭
+    "\U0001f9d1\U0000200d\U0001f3ed",  # 🧑‍🏭
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f3ed",  # 🧑🏿‍🏭
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f3ed",  # 🧑🏻‍🏭
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f3ed",  # 🧑🏾‍🏭
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f3ed",  # 🧑🏼‍🏭
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f3ed",  # 🧑🏽‍🏭
+    "\U0001f9da",  # 🧚
+    "\U0001f9da\U0001f3ff",  # 🧚🏿
+    "\U0001f9da\U0001f3fb",  # 🧚🏻
+    "\U0001f9da\U0001f3fe",  # 🧚🏾
+    "\U0001f9da\U0001f3fc",  # 🧚🏼
+    "\U0001f9da\U0001f3fd",  # 🧚🏽
+    "\U0001f9c6",  # 🧆
+    "\U0001f342",  # 🍂
+    "\U0001f46a",  # 👪
+    "\U0001f9d1\U0000200d\U0001f9d1\U0000200d\U0001f9d2",  # 🧑‍🧑‍🧒
+    "\U0001f9d1\U0000200d\U0001f9d1\U0000200d\U0001f9d2\U0000200d\U0001f9d2",  # 🧑‍🧑‍🧒‍🧒
+    "\U0001f9d1\U0000200d\U0001f9d2",  # 🧑‍🧒
+    "\U0001f9d1\U0000200d\U0001f9d2\U0000200d\U0001f9d2",  # 🧑‍🧒‍🧒
+    "\U0001f468\U0000200d\U0001f466",  # 👨‍👦
+    "\U0001f468\U0000200d\U0001f466\U0000200d\U0001f466",  # 👨‍👦‍👦
+    "\U0001f468\U0000200d\U0001f467",  # 👨‍👧
+    "\U0001f468\U0000200d\U0001f467\U0000200d\U0001f466",  # 👨‍👧‍👦
+    "\U0001f468\U0000200d\U0001f467\U0000200d\U0001f467",  # 👨‍👧‍👧
+    "\U0001f468\U0000200d\U0001f468\U0000200d\U0001f466",  # 👨‍👨‍👦
+    "\U0001f468\U0000200d\U0001f468\U0000200d\U0001f466\U0000200d\U0001f466",  # 👨‍👨‍👦‍👦
+    "\U0001f468\U0000200d\U0001f468\U0000200d\U0001f467",  # 👨‍👨‍👧
+    "\U0001f468\U0000200d\U0001f468\U0000200d\U0001f467\U0000200d\U0001f466",  # 👨‍👨‍👧‍👦
+    "\U0001f468\U0000200d\U0001f468\U0000200d\U0001f467\U0000200d\U0001f467",  # 👨‍👨‍👧‍👧
+    "\U0001f468\U0000200d\U0001f469\U0000200d\U0001f466",  # 👨‍👩‍👦
+    "\U0001f468\U0000200d\U0001f469\U0000200d\U0001f466\U0000200d\U0001f466",  # 👨‍👩‍👦‍👦
+    "\U0001f468\U0000200d\U0001f469\U0000200d\U0001f467",  # 👨‍👩‍👧
+    "\U0001f468\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f466",  # 👨‍👩‍👧‍👦
+    "\U0001f468\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f467",  # 👨‍👩‍👧‍👧
+    "\U0001f469\U0000200d\U0001f466",  # 👩‍👦
+    "\U0001f469\U0000200d\U0001f466\U0000200d\U0001f466",  # 👩‍👦‍👦
+    "\U0001f469\U0000200d\U0001f467",  # 👩‍👧
+    "\U0001f469\U0000200d\U0001f467\U0000200d\U0001f466",  # 👩‍👧‍👦
+    "\U0001f469\U0000200d\U0001f467\U0000200d\U0001f467",  # 👩‍👧‍👧
+    "\U0001f469\U0000200d\U0001f469\U0000200d\U0001f466",  # 👩‍👩‍👦
+    "\U0001f469\U0000200d\U0001f469\U0000200d\U0001f466\U0000200d\U0001f466",  # 👩‍👩‍👦‍👦
+    "\U0001f469\U0000200d\U0001f469\U0000200d\U0001f467",  # 👩‍👩‍👧
+    "\U0001f469\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f466",  # 👩‍👩‍👧‍👦
+    "\U0001f469\U0000200d\U0001f469\U0000200d\U0001f467\U0000200d\U0001f467",  # 👩‍👩‍👧‍👧
+    "\U0001f9d1\U0000200d\U0001f33e",  # 🧑‍🌾
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f33e",  # 🧑🏿‍🌾
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f33e",  # 🧑🏻‍🌾
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f33e",  # 🧑🏾‍🌾
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f33e",  # 🧑🏼‍🌾
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f33e",  # 🧑🏽‍🌾
+    "\U000023e9",  # ⏩
+    "\U000023ec",  # ⏬
+    "\U000023ea",  # ⏪
+    "\U000023eb",  # ⏫
+    "\U0001f4e0",  # 📠
+    "\U0001f628",  # 😨
+    "\U0001fab6",  # 🪶
+    "\U00002640\U0000fe0f",  # ♀️
+    "\U00002640",  # ♀
+    "\U0001f3a1",  # 🎡
+    "\U000026f4\U0000fe0f",  # ⛴️
+    "\U000026f4",  # ⛴
+    "\U0001f3d1",  # 🏑
+    "\U0001f5c4\U0000fe0f",  # 🗄️
+    "\U0001f5c4",  # 🗄
+    "\U0001f4c1",  # 📁
+    "\U0001f39e\U0000fe0f",  # 🎞️
+    "\U0001f39e",  # 🎞
+    "\U0001f4fd\U0000fe0f",  # 📽️
+    "\U0001f4fd",  # 📽
+    "\U0001fac6",  # 🫆
+    "\U0001f525",  # 🔥
+    "\U0001f692",  # 🚒
+    "\U0001f9ef",  # 🧯
+    "\U0001f9e8",  # 🧨
+    "\U0001f9d1\U0000200d\U0001f692",  # 🧑‍🚒
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f692",  # 🧑🏿‍🚒
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f692",  # 🧑🏻‍🚒
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f692",  # 🧑🏾‍🚒
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f692",  # 🧑🏼‍🚒
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f692",  # 🧑🏽‍🚒
+    "\U0001f386",  # 🎆
+    "\U0001f313",  # 🌓
+    "\U0001f31b",  # 🌛
+    "\U0001f41f",  # 🐟
+    "\U0001f365",  # 🍥
+    "\U0001f3a3",  # 🎣
+    "\U0001f560",  # 🕠
+    "\U0001f554",  # 🕔
+    "\U000026f3",  # ⛳
+    "\U0001f9a9",  # 🦩
+    "\U0001f526",  # 🔦
+    "\U0001f97f",  # 🥿
+    "\U0001fad3",  # 🫓
+    "\U0000269c\U0000fe0f",  # ⚜️
+    "\U0000269c",  # ⚜
+    "\U0001f4aa",  # 💪
+    "\U0001f4aa\U0001f3ff",  # 💪🏿
+    "\U0001f4aa\U0001f3fb",  # 💪🏻
+    "\U0001f4aa\U0001f3fe",  # 💪🏾
+    "\U0001f4aa\U0001f3fc",  # 💪🏼
+    "\U0001f4aa\U0001f3fd",  # 💪🏽
+    "\U0001f4be",  # 💾
+    "\U0001f3b4",  # 🎴
+    "\U0001f633",  # 😳
+    "\U0001fa88",  # 🪈
+    "\U0001fab0",  # 🪰
+    "\U0001f94f",  # 🥏
+    "\U0001f6f8",  # 🛸
+    "\U0001f32b\U0000fe0f",  # 🌫️
+    "\U0001f32b",  # 🌫
+    "\U0001f301",  # 🌁
+    "\U0001f64f",  # 🙏
+    "\U0001f64f\U0001f3ff",  # 🙏🏿
+    "\U0001f64f\U0001f3fb",  # 🙏🏻
+    "\U0001f64f\U0001f3fe",  # 🙏🏾
+    "\U0001f64f\U0001f3fc",  # 🙏🏼
+    "\U0001f64f\U0001f3fd",  # 🙏🏽
+    "\U0001faad",  # 🪭
+    "\U0001fad5",  # 🫕
+    "\U0001f9b6",  # 🦶
+    "\U0001f9b6\U0001f3ff",  # 🦶🏿
+    "\U0001f9b6\U0001f3fb",  # 🦶🏻
+    "\U0001f9b6\U0001f3fe",  # 🦶🏾
+    "\U0001f9b6\U0001f3fc",  # 🦶🏼
+    "\U0001f9b6\U0001f3fd",  # 🦶🏽
+    "\U0001f463",  # 👣
+    "\U0001f374",  # 🍴
+    "\U0001f37d\U0000fe0f",  # 🍽️
+    "\U0001f37d",  # 🍽
+    "\U0001f960",  # 🥠
+    "\U000026f2",  # ⛲
+    "\U0001f58b\U0000fe0f",  # 🖋️
+    "\U0001f58b",  # 🖋
+    "\U0001f55f",  # 🕟
+    "\U0001f340",  # 🍀
+    "\U0001f553",  # 🕓
+    "\U0001f98a",  # 🦊
+    "\U0001f5bc\U0000fe0f",  # 🖼️
+    "\U0001f5bc",  # 🖼
+    "\U0001f35f",  # 🍟
+    "\U0001f364",  # 🍤
+    "\U0001f438",  # 🐸
+    "\U0001f425",  # 🐥
+    "\U00002639\U0000fe0f",  # ☹️
+    "\U00002639",  # ☹
+    "\U0001f626",  # 😦
+    "\U000026fd",  # ⛽
+    "\U0001f315",  # 🌕
+    "\U0001f31d",  # 🌝
+    "\U000026b1\U0000fe0f",  # ⚱️
+    "\U000026b1",  # ⚱
+    "\U0001f3b2",  # 🎲
+    "\U0001f9c4",  # 🧄
+    "\U00002699\U0000fe0f",  # ⚙️
+    "\U00002699",  # ⚙
+    "\U0001f48e",  # 💎
+    "\U0001f9de",  # 🧞
+    "\U0001f47b",  # 👻
+    "\U0001fada",  # 🫚
+    "\U0001f992",  # 🦒
+    "\U0001f467",  # 👧
+    "\U0001f467\U0001f3ff",  # 👧🏿
+    "\U0001f467\U0001f3fb",  # 👧🏻
+    "\U0001f467\U0001f3fe",  # 👧🏾
+    "\U0001f467\U0001f3fc",  # 👧🏼
+    "\U0001f467\U0001f3fd",  # 👧🏽
+    "\U0001f95b",  # 🥛
+    "\U0001f453",  # 👓
+    "\U0001f30e",  # 🌎
+    "\U0001f30f",  # 🌏
+    "\U0001f30d",  # 🌍
+    "\U0001f310",  # 🌐
+    "\U0001f9e4",  # 🧤
+    "\U0001f31f",  # 🌟
+    "\U0001f945",  # 🥅
+    "\U0001f410",  # 🐐
+    "\U0001f47a",  # 👺
+    "\U0001f97d",  # 🥽
+    "\U0001fabf",  # 🪿
+    "\U0001f98d",  # 🦍
+    "\U0001f393",  # 🎓
+    "\U0001f347",  # 🍇
+    "\U0001f34f",  # 🍏
+    "\U0001f4d7",  # 📗
+    "\U0001f7e2",  # 🟢
+    "\U0001f49a",  # 💚
+    "\U0001f957",  # 🥗
+    "\U0001f7e9",  # 🟩
+    "\U0001fa76",  # 🩶
+    "\U0001f62c",  # 😬
+    "\U0001f63a",  # 😺
+    "\U0001f638",  # 😸
+    "\U0001f600",  # 😀
+    "\U0001f603",  # 😃
+    "\U0001f604",  # 😄
+    "\U0001f605",  # 😅
+    "\U0001f606",  # 😆
+    "\U0001f497",  # 💗
+    "\U0001f482",  # 💂
+    "\U0001f482\U0001f3ff",  # 💂🏿
+    "\U0001f482\U0001f3fb",  # 💂🏻
+    "\U0001f482\U0001f3fe",  # 💂🏾
+    "\U0001f482\U0001f3fc",  # 💂🏼
+    "\U0001f482\U0001f3fd",  # 💂🏽
+    "\U0001f9ae",  # 🦮
+    "\U0001f3b8",  # 🎸
+    "\U0001faae",  # 🪮
+    "\U0001f354",  # 🍔
+    "\U0001f528",  # 🔨
+    "\U00002692\U0000fe0f",  # ⚒️
+    "\U00002692",  # ⚒
+    "\U0001f6e0\U0000fe0f",  # 🛠️
+    "\U0001f6e0",  # 🛠
+    "\U0001faac",  # 🪬
+    "\U0001f439",  # 🐹
+    "\U0001f590\U0000fe0f",  # 🖐️
+    "\U0001f590",  # 🖐
+    "\U0001f590\U0001f3ff",  # 🖐🏿
+    "\U0001f590\U0001f3fb",  # 🖐🏻
+    "\U0001f590\U0001f3fe",  # 🖐🏾
+    "\U0001f590\U0001f3fc",  # 🖐🏼
+    "\U0001f590\U0001f3fd",  # 🖐🏽
+    "\U0001faf0",  # 🫰
+    "\U0001faf0\U0001f3ff",  # 🫰🏿
+    "\U0001faf0\U0001f3fb",  # 🫰🏻
+    "\U0001faf0\U0001f3fe",  # 🫰🏾
+    "\U0001faf0\U0001f3fc",  # 🫰🏼
+    "\U0001faf0\U0001f3fd",  # 🫰🏽
+    "\U0001f45c",  # 👜
+    "\U0001f91d",  # 🤝
+    "\U0001f91d\U0001f3ff",  # 🤝🏿
+    "\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fb",  # 🫱🏿‍🫲🏻
+    "\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fe",  # 🫱🏿‍🫲🏾
+    "\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fc",  # 🫱🏿‍🫲🏼
+    "\U0001faf1\U0001f3ff\U0000200d\U0001faf2\U0001f3fd",  # 🫱🏿‍🫲🏽
+    "\U0001f91d\U0001f3fb",  # 🤝🏻
+    "\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3ff",  # 🫱🏻‍🫲🏿
+    "\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3fe",  # 🫱🏻‍🫲🏾
+    "\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3fc",  # 🫱🏻‍🫲🏼
+    "\U0001faf1\U0001f3fb\U0000200d\U0001faf2\U0001f3fd",  # 🫱🏻‍🫲🏽
+    "\U0001f91d\U0001f3fe",  # 🤝🏾
+    "\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3ff",  # 🫱🏾‍🫲🏿
+    "\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3fb",  # 🫱🏾‍🫲🏻
+    "\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3fc",  # 🫱🏾‍🫲🏼
+    "\U0001faf1\U0001f3fe\U0000200d\U0001faf2\U0001f3fd",  # 🫱🏾‍🫲🏽
+    "\U0001f91d\U0001f3fc",  # 🤝🏼
+    "\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3ff",  # 🫱🏼‍🫲🏿
+    "\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3fb",  # 🫱🏼‍🫲🏻
+    "\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3fe",  # 🫱🏼‍🫲🏾
+    "\U0001faf1\U0001f3fc\U0000200d\U0001faf2\U0001f3fd",  # 🫱🏼‍🫲🏽
+    "\U0001f91d\U0001f3fd",  # 🤝🏽
+    "\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3ff",  # 🫱🏽‍🫲🏿
+    "\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3fb",  # 🫱🏽‍🫲🏻
+    "\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3fe",  # 🫱🏽‍🫲🏾
+    "\U0001faf1\U0001f3fd\U0000200d\U0001faf2\U0001f3fc",  # 🫱🏽‍🫲🏼
+    "\U0001fa89",  # 🪉
+    "\U0001f423",  # 🐣
+    "\U0001f642\U0000200d\U00002194\U0000fe0f",  # 🙂‍↔️
+    "\U0001f642\U0000200d\U00002194",  # 🙂‍↔
+    "\U0001f642\U0000200d\U00002195\U0000fe0f",  # 🙂‍↕️
+    "\U0001f642\U0000200d\U00002195",  # 🙂‍↕
+    "\U0001f3a7",  # 🎧
+    "\U0001faa6",  # 🪦
+    "\U0001f9d1\U0000200d\U00002695\U0000fe0f",  # 🧑‍⚕️
+    "\U0001f9d1\U0000200d\U00002695",  # 🧑‍⚕
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002695\U0000fe0f",  # 🧑🏿‍⚕️
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002695",  # 🧑🏿‍⚕
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002695\U0000fe0f",  # 🧑🏻‍⚕️
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002695",  # 🧑🏻‍⚕
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002695\U0000fe0f",  # 🧑🏾‍⚕️
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002695",  # 🧑🏾‍⚕
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002695\U0000fe0f",  # 🧑🏼‍⚕️
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002695",  # 🧑🏼‍⚕
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002695\U0000fe0f",  # 🧑🏽‍⚕️
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002695",  # 🧑🏽‍⚕
+    "\U0001f649",  # 🙉
+    "\U0001f49f",  # 💟
+    "\U00002763\U0000fe0f",  # ❣️
+    "\U00002763",  # ❣
+    "\U0001faf6",  # 🫶
+    "\U0001faf6\U0001f3ff",  # 🫶🏿
+    "\U0001faf6\U0001f3fb",  # 🫶🏻
+    "\U0001faf6\U0001f3fe",  # 🫶🏾
+    "\U0001faf6\U0001f3fc",  # 🫶🏼
+    "\U0001faf6\U0001f3fd",  # 🫶🏽
+    "\U00002764\U0000fe0f\U0000200d\U0001f525",  # ❤️‍🔥
+    "\U00002764\U0000200d\U0001f525",  # ❤‍🔥
+    "\U00002665\U0000fe0f",  # ♥️
+    "\U00002665",  # ♥
+    "\U0001f498",  # 💘
+    "\U0001f49d",  # 💝
+    "\U0001f4b2",  # 💲
+    "\U0001f7f0",  # 🟰
+    "\U0001f994",  # 🦔
+    "\U0001f681",  # 🚁
+    "\U0001f33f",  # 🌿
+    "\U0001f33a",  # 🌺
+    "\U0001f460",  # 👠
+    "\U0001f684",  # 🚄
+    "\U000026a1",  # ⚡
+    "\U0001f97e",  # 🥾
+    "\U0001f6d5",  # 🛕
+    "\U0001f99b",  # 🦛
+    "\U0001f573\U0000fe0f",  # 🕳️
+    "\U0001f573",  # 🕳
+    "\U00002b55",  # ⭕
+    "\U0001f36f",  # 🍯
+    "\U0001f41d",  # 🐝
+    "\U0001fa9d",  # 🪝
+    "\U0001f6a5",  # 🚥
+    "\U0001f40e",  # 🐎
+    "\U0001f434",  # 🐴
+    "\U0001f3c7",  # 🏇
+    "\U0001f3c7\U0001f3ff",  # 🏇🏿
+    "\U0001f3c7\U0001f3fb",  # 🏇🏻
+    "\U0001f3c7\U0001f3fe",  # 🏇🏾
+    "\U0001f3c7\U0001f3fc",  # 🏇🏼
+    "\U0001f3c7\U0001f3fd",  # 🏇🏽
+    "\U0001f3e5",  # 🏥
+    "\U00002615",  # ☕
+    "\U0001f32d",  # 🌭
+    "\U0001f975",  # 🥵
+    "\U0001f336\U0000fe0f",  # 🌶️
+    "\U0001f336",  # 🌶
+    "\U00002668\U0000fe0f",  # ♨️
+    "\U00002668",  # ♨
+    "\U0001f3e8",  # 🏨
+    "\U0000231b",  # ⌛
+    "\U000023f3",  # ⏳
+    "\U0001f3e0",  # 🏠
+    "\U0001f3e1",  # 🏡
+    "\U0001f3d8\U0000fe0f",  # 🏘️
+    "\U0001f3d8",  # 🏘
+    "\U0001f4af",  # 💯
+    "\U0001f62f",  # 😯
+    "\U0001f6d6",  # 🛖
+    "\U0001fabb",  # 🪻
+    "\U0001f9ca",  # 🧊
+    "\U0001f368",  # 🍨
+    "\U0001f3d2",  # 🏒
+    "\U000026f8\U0000fe0f",  # ⛸️
+    "\U000026f8",  # ⛸
+    "\U0001faaa",  # 🪪
+    "\U0001f4e5",  # 📥
+    "\U0001f4e8",  # 📨
+    "\U0001faf5",  # 🫵
+    "\U0001faf5\U0001f3ff",  # 🫵🏿
+    "\U0001faf5\U0001f3fb",  # 🫵🏻
+    "\U0001faf5\U0001f3fe",  # 🫵🏾
+    "\U0001faf5\U0001f3fc",  # 🫵🏼
+    "\U0001faf5\U0001f3fd",  # 🫵🏽
+    "\U0000261d\U0000fe0f",  # ☝️
+    "\U0000261d",  # ☝
+    "\U0000261d\U0001f3ff",  # ☝🏿
+    "\U0000261d\U0001f3fb",  # ☝🏻
+    "\U0000261d\U0001f3fe",  # ☝🏾
+    "\U0000261d\U0001f3fc",  # ☝🏼
+    "\U0000261d\U0001f3fd",  # ☝🏽
+    "\U0000267e\U0000fe0f",  # ♾️
+    "\U0000267e",  # ♾
+    "\U00002139\U0000fe0f",  # ℹ️
+    "\U00002139",  # ℹ
+    "\U0001f524",  # 🔤
+    "\U0001f521",  # 🔡
+    "\U0001f520",  # 🔠
+    "\U0001f522",  # 🔢
+    "\U0001f523",  # 🔣
+    "\U0001f383",  # 🎃
+    "\U0001fad9",  # 🫙
+    "\U0001f456",  # 👖
+    "\U0001fabc",  # 🪼
+    "\U0001f0cf",  # 🃏
+    "\U0001f579\U0000fe0f",  # 🕹️
+    "\U0001f579",  # 🕹
+    "\U0001f9d1\U0000200d\U00002696\U0000fe0f",  # 🧑‍⚖️
+    "\U0001f9d1\U0000200d\U00002696",  # 🧑‍⚖
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002696\U0000fe0f",  # 🧑🏿‍⚖️
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002696",  # 🧑🏿‍⚖
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002696\U0000fe0f",  # 🧑🏻‍⚖️
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002696",  # 🧑🏻‍⚖
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002696\U0000fe0f",  # 🧑🏾‍⚖️
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002696",  # 🧑🏾‍⚖
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002696\U0000fe0f",  # 🧑🏼‍⚖️
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002696",  # 🧑🏼‍⚖
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002696\U0000fe0f",  # 🧑🏽‍⚖️
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002696",  # 🧑🏽‍⚖
+    "\U0001f54b",  # 🕋
+    "\U0001f998",  # 🦘
+    "\U0001f511",  # 🔑
+    "\U00002328\U0000fe0f",  # ⌨️
+    "\U00002328",  # ⌨
+    "\U00000023\U0000fe0f\U000020e3",  # #️⃣
+    "\U00000023\U000020e3",  # #⃣
+    "\U0000002a\U0000fe0f\U000020e3",  # *️⃣
+    "\U0000002a\U000020e3",  # *⃣
+    "\U00000030\U0000fe0f\U000020e3",  # 0️⃣
+    "\U00000030\U000020e3",  # 0⃣
+    "\U00000031\U0000fe0f\U000020e3",  # 1️⃣
+    "\U00000031\U000020e3",  # 1⃣
+    "\U0001f51f",  # 🔟
+    "\U00000032\U0000fe0f\U000020e3",  # 2️⃣
+    "\U00000032\U000020e3",  # 2⃣
+    "\U00000033\U0000fe0f\U000020e3",  # 3️⃣
+    "\U00000033\U000020e3",  # 3⃣
+    "\U00000034\U0000fe0f\U000020e3",  # 4️⃣
+    "\U00000034\U000020e3",  # 4⃣
+    "\U00000035\U0000fe0f\U000020e3",  # 5️⃣
+    "\U00000035\U000020e3",  # 5⃣
+    "\U00000036\U0000fe0f\U000020e3",  # 6️⃣
+    "\U00000036\U000020e3",  # 6⃣
+    "\U00000037\U0000fe0f\U000020e3",  # 7️⃣
+    "\U00000037\U000020e3",  # 7⃣
+    "\U00000038\U0000fe0f\U000020e3",  # 8️⃣
+    "\U00000038\U000020e3",  # 8⃣
+    "\U00000039\U0000fe0f\U000020e3",  # 9️⃣
+    "\U00000039\U000020e3",  # 9⃣
+    "\U0001faaf",  # 🪯
+    "\U0001f6f4",  # 🛴
+    "\U0001f458",  # 👘
+    "\U0001f48f",  # 💏
+    "\U0001f48f\U0001f3ff",  # 💏🏿
+    "\U0001f48f\U0001f3fb",  # 💏🏻
+    "\U0001f468\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468",  # 👨‍❤️‍💋‍👨
+    "\U0001f468\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468",  # 👨‍❤‍💋‍👨
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏿‍❤️‍💋‍👨🏿
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏿‍❤‍💋‍👨🏿
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏿‍❤️‍💋‍👨🏻
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏿‍❤‍💋‍👨🏻
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏿‍❤️‍💋‍👨🏾
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏿‍❤‍💋‍👨🏾
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏿‍❤️‍💋‍👨🏼
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏿‍❤‍💋‍👨🏼
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏿‍❤️‍💋‍👨🏽
+    "\U0001f468\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏿‍❤‍💋‍👨🏽
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏻‍❤️‍💋‍👨🏻
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏻‍❤‍💋‍👨🏻
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏻‍❤️‍💋‍👨🏿
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏻‍❤‍💋‍👨🏿
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏻‍❤️‍💋‍👨🏾
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏻‍❤‍💋‍👨🏾
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏻‍❤️‍💋‍👨🏼
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏻‍❤‍💋‍👨🏼
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏻‍❤️‍💋‍👨🏽
+    "\U0001f468\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏻‍❤‍💋‍👨🏽
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏾‍❤️‍💋‍👨🏾
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏾‍❤‍💋‍👨🏾
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏾‍❤️‍💋‍👨🏿
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏾‍❤‍💋‍👨🏿
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏾‍❤️‍💋‍👨🏻
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏾‍❤‍💋‍👨🏻
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏾‍❤️‍💋‍👨🏼
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏾‍❤‍💋‍👨🏼
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏾‍❤️‍💋‍👨🏽
+    "\U0001f468\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏾‍❤‍💋‍👨🏽
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏼‍❤️‍💋‍👨🏼
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏼‍❤‍💋‍👨🏼
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏼‍❤️‍💋‍👨🏿
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏼‍❤‍💋‍👨🏿
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏼‍❤️‍💋‍👨🏻
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏼‍❤‍💋‍👨🏻
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏼‍❤️‍💋‍👨🏾
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏼‍❤‍💋‍👨🏾
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏼‍❤️‍💋‍👨🏽
+    "\U0001f468\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏼‍❤‍💋‍👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏽‍❤️‍💋‍👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👨🏽‍❤‍💋‍👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏽‍❤️‍💋‍👨🏿
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👨🏽‍❤‍💋‍👨🏿
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏽‍❤️‍💋‍👨🏻
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👨🏽‍❤‍💋‍👨🏻
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏽‍❤️‍💋‍👨🏾
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👨🏽‍❤‍💋‍👨🏾
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏽‍❤️‍💋‍👨🏼
+    "\U0001f468\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👨🏽‍❤‍💋‍👨🏼
+    "\U0001f48b",  # 💋
+    "\U0001f48f\U0001f3fe",  # 💏🏾
+    "\U0001f48f\U0001f3fc",  # 💏🏼
+    "\U0001f48f\U0001f3fd",  # 💏🏽
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏿‍❤️‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏿‍❤‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏿‍❤️‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏿‍❤‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏿‍❤️‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏿‍❤‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏿‍❤️‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏿‍❤‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏻‍❤️‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏻‍❤‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏻‍❤️‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏻‍❤‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏻‍❤️‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏻‍❤‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏻‍❤️‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏻‍❤‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏾‍❤️‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏾‍❤‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏾‍❤️‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏾‍❤‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏾‍❤️‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏾‍❤‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏾‍❤️‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏾‍❤‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏼‍❤️‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏼‍❤‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏼‍❤️‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏼‍❤‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏼‍❤️‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏼‍❤‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏼‍❤️‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏼‍❤‍💋‍🧑🏽
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏽‍❤️‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏽‍❤‍💋‍🧑🏿
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏽‍❤️‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏽‍❤‍💋‍🧑🏻
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏽‍❤️‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏽‍❤‍💋‍🧑🏾
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏽‍❤️‍💋‍🧑🏼
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏽‍❤‍💋‍🧑🏼
+    "\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468",  # 👩‍❤️‍💋‍👨
+    "\U0001f469\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468",  # 👩‍❤‍💋‍👨
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏿‍❤️‍💋‍👨🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏿‍❤‍💋‍👨🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏿‍❤️‍💋‍👨🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏿‍❤‍💋‍👨🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏿‍❤️‍💋‍👨🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏿‍❤‍💋‍👨🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏿‍❤️‍💋‍👨🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏿‍❤‍💋‍👨🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏿‍❤️‍💋‍👨🏽
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏿‍❤‍💋‍👨🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏻‍❤️‍💋‍👨🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏻‍❤‍💋‍👨🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏻‍❤️‍💋‍👨🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏻‍❤‍💋‍👨🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏻‍❤️‍💋‍👨🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏻‍❤‍💋‍👨🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏻‍❤️‍💋‍👨🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏻‍❤‍💋‍👨🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏻‍❤️‍💋‍👨🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏻‍❤‍💋‍👨🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏾‍❤️‍💋‍👨🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏾‍❤‍💋‍👨🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏾‍❤️‍💋‍👨🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏾‍❤‍💋‍👨🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏾‍❤️‍💋‍👨🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏾‍❤‍💋‍👨🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏾‍❤️‍💋‍👨🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏾‍❤‍💋‍👨🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏾‍❤️‍💋‍👨🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏾‍❤‍💋‍👨🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏼‍❤️‍💋‍👨🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏼‍❤‍💋‍👨🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏼‍❤️‍💋‍👨🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏼‍❤‍💋‍👨🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏼‍❤️‍💋‍👨🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏼‍❤‍💋‍👨🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏼‍❤️‍💋‍👨🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏼‍❤‍💋‍👨🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏼‍❤️‍💋‍👨🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏼‍❤‍💋‍👨🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏽‍❤️‍💋‍👨🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fd",  # 👩🏽‍❤‍💋‍👨🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏽‍❤️‍💋‍👨🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3ff",  # 👩🏽‍❤‍💋‍👨🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏽‍❤️‍💋‍👨🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fb",  # 👩🏽‍❤‍💋‍👨🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏽‍❤️‍💋‍👨🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fe",  # 👩🏽‍❤‍💋‍👨🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏽‍❤️‍💋‍👨🏼
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f468\U0001f3fc",  # 👩🏽‍❤‍💋‍👨🏼
+    "\U0001f469\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469",  # 👩‍❤️‍💋‍👩
+    "\U0001f469\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469",  # 👩‍❤‍💋‍👩
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏿‍❤️‍💋‍👩🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏿‍❤‍💋‍👩🏿
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏿‍❤️‍💋‍👩🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏿‍❤‍💋‍👩🏻
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏿‍❤️‍💋‍👩🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏿‍❤‍💋‍👩🏾
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏿‍❤️‍💋‍👩🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏿‍❤‍💋‍👩🏼
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏿‍❤️‍💋‍👩🏽
+    "\U0001f469\U0001f3ff\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏿‍❤‍💋‍👩🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏻‍❤️‍💋‍👩🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏻‍❤‍💋‍👩🏻
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏻‍❤️‍💋‍👩🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏻‍❤‍💋‍👩🏿
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏻‍❤️‍💋‍👩🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏻‍❤‍💋‍👩🏾
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏻‍❤️‍💋‍👩🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏻‍❤‍💋‍👩🏼
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏻‍❤️‍💋‍👩🏽
+    "\U0001f469\U0001f3fb\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏻‍❤‍💋‍👩🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏾‍❤️‍💋‍👩🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏾‍❤‍💋‍👩🏾
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏾‍❤️‍💋‍👩🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏾‍❤‍💋‍👩🏿
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏾‍❤️‍💋‍👩🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏾‍❤‍💋‍👩🏻
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏾‍❤️‍💋‍👩🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏾‍❤‍💋‍👩🏼
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏾‍❤️‍💋‍👩🏽
+    "\U0001f469\U0001f3fe\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏾‍❤‍💋‍👩🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏼‍❤️‍💋‍👩🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏼‍❤‍💋‍👩🏼
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏼‍❤️‍💋‍👩🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏼‍❤‍💋‍👩🏿
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏼‍❤️‍💋‍👩🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏼‍❤‍💋‍👩🏻
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏼‍❤️‍💋‍👩🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏼‍❤‍💋‍👩🏾
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏼‍❤️‍💋‍👩🏽
+    "\U0001f469\U0001f3fc\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏼‍❤‍💋‍👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏽‍❤️‍💋‍👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fd",  # 👩🏽‍❤‍💋‍👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏽‍❤️‍💋‍👩🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3ff",  # 👩🏽‍❤‍💋‍👩🏿
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏽‍❤️‍💋‍👩🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fb",  # 👩🏽‍❤‍💋‍👩🏻
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏽‍❤️‍💋‍👩🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fe",  # 👩🏽‍❤‍💋‍👩🏾
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000fe0f\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏽‍❤️‍💋‍👩🏼
+    "\U0001f469\U0001f3fd\U0000200d\U00002764\U0000200d\U0001f48b\U0000200d\U0001f469\U0001f3fc",  # 👩🏽‍❤‍💋‍👩🏼
+    "\U0001f63d",  # 😽
+    "\U0001f617",  # 😗
+    "\U0001f61a",  # 😚
+    "\U0001f619",  # 😙
+    "\U0001f52a",  # 🔪
+    "\U0001fa81",  # 🪁
+    "\U0001f95d",  # 🥝
+    "\U0001faa2",  # 🪢
+    "\U0001f428",  # 🐨
+    "\U0001f97c",  # 🥼
+    "\U0001f3f7\U0000fe0f",  # 🏷️
+    "\U0001f3f7",  # 🏷
+    "\U0001f94d",  # 🥍
+    "\U0001fa9c",  # 🪜
+    "\U0001f41e",  # 🐞
+    "\U0001f4bb",  # 💻
+    "\U0001f537",  # 🔷
+    "\U0001f536",  # 🔶
+    "\U0001f317",  # 🌗
+    "\U0001f31c",  # 🌜
+    "\U000023ee\U0000fe0f",  # ⏮️
+    "\U000023ee",  # ⏮
+    "\U0000271d\U0000fe0f",  # ✝️
+    "\U0000271d",  # ✝
+    "\U0001f343",  # 🍃
+    "\U0001fabe",  # 🪾
+    "\U0001f96c",  # 🥬
+    "\U0001f4d2",  # 📒
+    "\U0001f91b",  # 🤛
+    "\U0001f91b\U0001f3ff",  # 🤛🏿
+    "\U0001f91b\U0001f3fb",  # 🤛🏻
+    "\U0001f91b\U0001f3fe",  # 🤛🏾
+    "\U0001f91b\U0001f3fc",  # 🤛🏼
+    "\U0001f91b\U0001f3fd",  # 🤛🏽
+    "\U00002194\U0000fe0f",  # ↔️
+    "\U00002194",  # ↔
+    "\U00002b05\U0000fe0f",  # ⬅️
+    "\U00002b05",  # ⬅
+    "\U000021aa\U0000fe0f",  # ↪️
+    "\U000021aa",  # ↪
+    "\U0001f6c5",  # 🛅
+    "\U0001f5e8\U0000fe0f",  # 🗨️
+    "\U0001f5e8",  # 🗨
+    "\U0001faf2",  # 🫲
+    "\U0001faf2\U0001f3ff",  # 🫲🏿
+    "\U0001faf2\U0001f3fb",  # 🫲🏻
+    "\U0001faf2\U0001f3fe",  # 🫲🏾
+    "\U0001faf2\U0001f3fc",  # 🫲🏼
+    "\U0001faf2\U0001f3fd",  # 🫲🏽
+    "\U0001faf7",  # 🫷
+    "\U0001faf7\U0001f3ff",  # 🫷🏿
+    "\U0001faf7\U0001f3fb",  # 🫷🏻
+    "\U0001faf7\U0001f3fe",  # 🫷🏾
+    "\U0001faf7\U0001f3fc",  # 🫷🏼
+    "\U0001faf7\U0001f3fd",  # 🫷🏽
+    "\U0001f9b5",  # 🦵
+    "\U0001f9b5\U0001f3ff",  # 🦵🏿
+    "\U0001f9b5\U0001f3fb",  # 🦵🏻
+    "\U0001f9b5\U0001f3fe",  # 🦵🏾
+    "\U0001f9b5\U0001f3fc",  # 🦵🏼
+    "\U0001f9b5\U0001f3fd",  # 🦵🏽
+    "\U0001f34b",  # 🍋
+    "\U0001f406",  # 🐆
+    "\U0001f39a\U0000fe0f",  # 🎚️
+    "\U0001f39a",  # 🎚
+    "\U0001fa75",  # 🩵
+    "\U0001f4a1",  # 💡
+    "\U0001f688",  # 🚈
+    "\U0001f3fb",  # 🏻
+    "\U0001f34b\U0000200d\U0001f7e9",  # 🍋‍🟩
+    "\U0001f517",  # 🔗
+    "\U0001f587\U0000fe0f",  # 🖇️
+    "\U0001f587",  # 🖇
+    "\U0001f981",  # 🦁
+    "\U0001f484",  # 💄
+    "\U0001f6ae",  # 🚮
+    "\U0001f98e",  # 🦎
+    "\U0001f999",  # 🦙
+    "\U0001f99e",  # 🦞
+    "\U0001f512",  # 🔒
+    "\U0001f510",  # 🔐
+    "\U0001f50f",  # 🔏
+    "\U0001f682",  # 🚂
+    "\U0001f36d",  # 🍭
+    "\U0001fa98",  # 🪘
+    "\U0001f9f4",  # 🧴
+    "\U0001fab7",  # 🪷
+    "\U0001f62d",  # 😭
+    "\U0001f4e2",  # 📢
+    "\U0001f91f",  # 🤟
+    "\U0001f91f\U0001f3ff",  # 🤟🏿
+    "\U0001f91f\U0001f3fb",  # 🤟🏻
+    "\U0001f91f\U0001f3fe",  # 🤟🏾
+    "\U0001f91f\U0001f3fc",  # 🤟🏼
+    "\U0001f91f\U0001f3fd",  # 🤟🏽
+    "\U0001f3e9",  # 🏩
+    "\U0001f48c",  # 💌
+    "\U0001faab",  # 🪫
+    "\U0001f9f3",  # 🧳
+    "\U0001fac1",  # 🫁
+    "\U0001f925",  # 🤥
+    "\U0001f9d9",  # 🧙
+    "\U0001f9d9\U0001f3ff",  # 🧙🏿
+    "\U0001f9d9\U0001f3fb",  # 🧙🏻
+    "\U0001f9d9\U0001f3fe",  # 🧙🏾
+    "\U0001f9d9\U0001f3fc",  # 🧙🏼
+    "\U0001f9d9\U0001f3fd",  # 🧙🏽
+    "\U0001fa84",  # 🪄
+    "\U0001f9f2",  # 🧲
+    "\U0001f50d",  # 🔍
+    "\U0001f50e",  # 🔎
+    "\U0001f004",  # 🀄
+    "\U00002642\U0000fe0f",  # ♂️
+    "\U00002642",  # ♂
+    "\U0001f9a3",  # 🦣
+    "\U0001f468",  # 👨
+    "\U0001f468\U0000200d\U0001f3a8",  # 👨‍🎨
+    "\U0001f468\U0001f3ff\U0000200d\U0001f3a8",  # 👨🏿‍🎨
+    "\U0001f468\U0001f3fb\U0000200d\U0001f3a8",  # 👨🏻‍🎨
+    "\U0001f468\U0001f3fe\U0000200d\U0001f3a8",  # 👨🏾‍🎨
+    "\U0001f468\U0001f3fc\U0000200d\U0001f3a8",  # 👨🏼‍🎨
+    "\U0001f468\U0001f3fd\U0000200d\U0001f3a8",  # 👨🏽‍🎨
+    "\U0001f468\U0000200d\U0001f680",  # 👨‍🚀
+    "\U0001f468\U0001f3ff\U0000200d\U0001f680",  # 👨🏿‍🚀
+    "\U0001f468\U0001f3fb\U0000200d\U0001f680",  # 👨🏻‍🚀
+    "\U0001f468\U0001f3fe\U0000200d\U0001f680",  # 👨🏾‍🚀
+    "\U0001f468\U0001f3fc\U0000200d\U0001f680",  # 👨🏼‍🚀
+    "\U0001f468\U0001f3fd\U0000200d\U0001f680",  # 👨🏽‍🚀
+    "\U0001f468\U0000200d\U0001f9b2",  # 👨‍🦲
+    "\U0001f9d4\U0000200d\U00002642\U0000fe0f",  # 🧔‍♂️
+    "\U0001f9d4\U0000200d\U00002642",  # 🧔‍♂
+    "\U0001f6b4\U0000200d\U00002642\U0000fe0f",  # 🚴‍♂️
+    "\U0001f6b4\U0000200d\U00002642",  # 🚴‍♂
+    "\U0001f6b4\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🚴🏿‍♂️
+    "\U0001f6b4\U0001f3ff\U0000200d\U00002642",  # 🚴🏿‍♂
+    "\U0001f6b4\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🚴🏻‍♂️
+    "\U0001f6b4\U0001f3fb\U0000200d\U00002642",  # 🚴🏻‍♂
+    "\U0001f6b4\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🚴🏾‍♂️
+    "\U0001f6b4\U0001f3fe\U0000200d\U00002642",  # 🚴🏾‍♂
+    "\U0001f6b4\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🚴🏼‍♂️
+    "\U0001f6b4\U0001f3fc\U0000200d\U00002642",  # 🚴🏼‍♂
+    "\U0001f6b4\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🚴🏽‍♂️
+    "\U0001f6b4\U0001f3fd\U0000200d\U00002642",  # 🚴🏽‍♂
+    "\U0001f471\U0000200d\U00002642\U0000fe0f",  # 👱‍♂️
+    "\U0001f471\U0000200d\U00002642",  # 👱‍♂
+    "\U000026f9\U0000fe0f\U0000200d\U00002642\U0000fe0f",  # ⛹️‍♂️
+    "\U000026f9\U0000200d\U00002642\U0000fe0f",  # ⛹‍♂️
+    "\U000026f9\U0000fe0f\U0000200d\U00002642",  # ⛹️‍♂
+    "\U000026f9\U0000200d\U00002642",  # ⛹‍♂
+    "\U000026f9\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # ⛹🏿‍♂️
+    "\U000026f9\U0001f3ff\U0000200d\U00002642",  # ⛹🏿‍♂
+    "\U000026f9\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # ⛹🏻‍♂️
+    "\U000026f9\U0001f3fb\U0000200d\U00002642",  # ⛹🏻‍♂
+    "\U000026f9\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # ⛹🏾‍♂️
+    "\U000026f9\U0001f3fe\U0000200d\U00002642",  # ⛹🏾‍♂
+    "\U000026f9\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # ⛹🏼‍♂️
+    "\U000026f9\U0001f3fc\U0000200d\U00002642",  # ⛹🏼‍♂
+    "\U000026f9\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # ⛹🏽‍♂️
+    "\U000026f9\U0001f3fd\U0000200d\U00002642",  # ⛹🏽‍♂
+    "\U0001f647\U0000200d\U00002642\U0000fe0f",  # 🙇‍♂️
+    "\U0001f647\U0000200d\U00002642",  # 🙇‍♂
+    "\U0001f647\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🙇🏿‍♂️
+    "\U0001f647\U0001f3ff\U0000200d\U00002642",  # 🙇🏿‍♂
+    "\U0001f647\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🙇🏻‍♂️
+    "\U0001f647\U0001f3fb\U0000200d\U00002642",  # 🙇🏻‍♂
+    "\U0001f647\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🙇🏾‍♂️
+    "\U0001f647\U0001f3fe\U0000200d\U00002642",  # 🙇🏾‍♂
+    "\U0001f647\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🙇🏼‍♂️
+    "\U0001f647\U0001f3fc\U0000200d\U00002642",  # 🙇🏼‍♂
+    "\U0001f647\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🙇🏽‍♂️
+    "\U0001f647\U0001f3fd\U0000200d\U00002642",  # 🙇🏽‍♂
+    "\U0001f938\U0000200d\U00002642\U0000fe0f",  # 🤸‍♂️
+    "\U0001f938\U0000200d\U00002642",  # 🤸‍♂
+    "\U0001f938\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤸🏿‍♂️
+    "\U0001f938\U0001f3ff\U0000200d\U00002642",  # 🤸🏿‍♂
+    "\U0001f938\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤸🏻‍♂️
+    "\U0001f938\U0001f3fb\U0000200d\U00002642",  # 🤸🏻‍♂
+    "\U0001f938\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤸🏾‍♂️
+    "\U0001f938\U0001f3fe\U0000200d\U00002642",  # 🤸🏾‍♂
+    "\U0001f938\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤸🏼‍♂️
+    "\U0001f938\U0001f3fc\U0000200d\U00002642",  # 🤸🏼‍♂
+    "\U0001f938\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤸🏽‍♂️
+    "\U0001f938\U0001f3fd\U0000200d\U00002642",  # 🤸🏽‍♂
+    "\U0001f9d7\U0000200d\U00002642\U0000fe0f",  # 🧗‍♂️
+    "\U0001f9d7\U0000200d\U00002642",  # 🧗‍♂
+    "\U0001f9d7\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧗🏿‍♂️
+    "\U0001f9d7\U0001f3ff\U0000200d\U00002642",  # 🧗🏿‍♂
+    "\U0001f9d7\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧗🏻‍♂️
+    "\U0001f9d7\U0001f3fb\U0000200d\U00002642",  # 🧗🏻‍♂
+    "\U0001f9d7\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧗🏾‍♂️
+    "\U0001f9d7\U0001f3fe\U0000200d\U00002642",  # 🧗🏾‍♂
+    "\U0001f9d7\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧗🏼‍♂️
+    "\U0001f9d7\U0001f3fc\U0000200d\U00002642",  # 🧗🏼‍♂
+    "\U0001f9d7\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧗🏽‍♂️
+    "\U0001f9d7\U0001f3fd\U0000200d\U00002642",  # 🧗🏽‍♂
+    "\U0001f477\U0000200d\U00002642\U0000fe0f",  # 👷‍♂️
+    "\U0001f477\U0000200d\U00002642",  # 👷‍♂
+    "\U0001f477\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 👷🏿‍♂️
+    "\U0001f477\U0001f3ff\U0000200d\U00002642",  # 👷🏿‍♂
+    "\U0001f477\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 👷🏻‍♂️
+    "\U0001f477\U0001f3fb\U0000200d\U00002642",  # 👷🏻‍♂
+    "\U0001f477\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 👷🏾‍♂️
+    "\U0001f477\U0001f3fe\U0000200d\U00002642",  # 👷🏾‍♂
+    "\U0001f477\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 👷🏼‍♂️
+    "\U0001f477\U0001f3fc\U0000200d\U00002642",  # 👷🏼‍♂
+    "\U0001f477\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 👷🏽‍♂️
+    "\U0001f477\U0001f3fd\U0000200d\U00002642",  # 👷🏽‍♂
+    "\U0001f468\U0000200d\U0001f373",  # 👨‍🍳
+    "\U0001f468\U0001f3ff\U0000200d\U0001f373",  # 👨🏿‍🍳
+    "\U0001f468\U0001f3fb\U0000200d\U0001f373",  # 👨🏻‍🍳
+    "\U0001f468\U0001f3fe\U0000200d\U0001f373",  # 👨🏾‍🍳
+    "\U0001f468\U0001f3fc\U0000200d\U0001f373",  # 👨🏼‍🍳
+    "\U0001f468\U0001f3fd\U0000200d\U0001f373",  # 👨🏽‍🍳
+    "\U0001f468\U0000200d\U0001f9b1",  # 👨‍🦱
+    "\U0001f57a",  # 🕺
+    "\U0001f57a\U0001f3ff",  # 🕺🏿
+    "\U0001f57a\U0001f3fb",  # 🕺🏻
+    "\U0001f57a\U0001f3fe",  # 🕺🏾
+    "\U0001f57a\U0001f3fc",  # 🕺🏼
+    "\U0001f57a\U0001f3fd",  # 🕺🏽
+    "\U0001f468\U0001f3ff",  # 👨🏿
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9b2",  # 👨🏿‍🦲
+    "\U0001f9d4\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧔🏿‍♂️
+    "\U0001f9d4\U0001f3ff\U0000200d\U00002642",  # 🧔🏿‍♂
+    "\U0001f471\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 👱🏿‍♂️
+    "\U0001f471\U0001f3ff\U0000200d\U00002642",  # 👱🏿‍♂
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9b1",  # 👨🏿‍🦱
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9b0",  # 👨🏿‍🦰
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9b3",  # 👨🏿‍🦳
+    "\U0001f575\U0000fe0f\U0000200d\U00002642\U0000fe0f",  # 🕵️‍♂️
+    "\U0001f575\U0000200d\U00002642\U0000fe0f",  # 🕵‍♂️
+    "\U0001f575\U0000fe0f\U0000200d\U00002642",  # 🕵️‍♂
+    "\U0001f575\U0000200d\U00002642",  # 🕵‍♂
+    "\U0001f575\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🕵🏿‍♂️
+    "\U0001f575\U0001f3ff\U0000200d\U00002642",  # 🕵🏿‍♂
+    "\U0001f575\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🕵🏻‍♂️
+    "\U0001f575\U0001f3fb\U0000200d\U00002642",  # 🕵🏻‍♂
+    "\U0001f575\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🕵🏾‍♂️
+    "\U0001f575\U0001f3fe\U0000200d\U00002642",  # 🕵🏾‍♂
+    "\U0001f575\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🕵🏼‍♂️
+    "\U0001f575\U0001f3fc\U0000200d\U00002642",  # 🕵🏼‍♂
+    "\U0001f575\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🕵🏽‍♂️
+    "\U0001f575\U0001f3fd\U0000200d\U00002642",  # 🕵🏽‍♂
+    "\U0001f9dd\U0000200d\U00002642\U0000fe0f",  # 🧝‍♂️
+    "\U0001f9dd\U0000200d\U00002642",  # 🧝‍♂
+    "\U0001f9dd\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧝🏿‍♂️
+    "\U0001f9dd\U0001f3ff\U0000200d\U00002642",  # 🧝🏿‍♂
+    "\U0001f9dd\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧝🏻‍♂️
+    "\U0001f9dd\U0001f3fb\U0000200d\U00002642",  # 🧝🏻‍♂
+    "\U0001f9dd\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧝🏾‍♂️
+    "\U0001f9dd\U0001f3fe\U0000200d\U00002642",  # 🧝🏾‍♂
+    "\U0001f9dd\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧝🏼‍♂️
+    "\U0001f9dd\U0001f3fc\U0000200d\U00002642",  # 🧝🏼‍♂
+    "\U0001f9dd\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧝🏽‍♂️
+    "\U0001f9dd\U0001f3fd\U0000200d\U00002642",  # 🧝🏽‍♂
+    "\U0001f926\U0000200d\U00002642\U0000fe0f",  # 🤦‍♂️
+    "\U0001f926\U0000200d\U00002642",  # 🤦‍♂
+    "\U0001f926\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤦🏿‍♂️
+    "\U0001f926\U0001f3ff\U0000200d\U00002642",  # 🤦🏿‍♂
+    "\U0001f926\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤦🏻‍♂️
+    "\U0001f926\U0001f3fb\U0000200d\U00002642",  # 🤦🏻‍♂
+    "\U0001f926\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤦🏾‍♂️
+    "\U0001f926\U0001f3fe\U0000200d\U00002642",  # 🤦🏾‍♂
+    "\U0001f926\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤦🏼‍♂️
+    "\U0001f926\U0001f3fc\U0000200d\U00002642",  # 🤦🏼‍♂
+    "\U0001f926\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤦🏽‍♂️
+    "\U0001f926\U0001f3fd\U0000200d\U00002642",  # 🤦🏽‍♂
+    "\U0001f468\U0000200d\U0001f3ed",  # 👨‍🏭
+    "\U0001f468\U0001f3ff\U0000200d\U0001f3ed",  # 👨🏿‍🏭
+    "\U0001f468\U0001f3fb\U0000200d\U0001f3ed",  # 👨🏻‍🏭
+    "\U0001f468\U0001f3fe\U0000200d\U0001f3ed",  # 👨🏾‍🏭
+    "\U0001f468\U0001f3fc\U0000200d\U0001f3ed",  # 👨🏼‍🏭
+    "\U0001f468\U0001f3fd\U0000200d\U0001f3ed",  # 👨🏽‍🏭
+    "\U0001f9da\U0000200d\U00002642\U0000fe0f",  # 🧚‍♂️
+    "\U0001f9da\U0000200d\U00002642",  # 🧚‍♂
+    "\U0001f9da\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧚🏿‍♂️
+    "\U0001f9da\U0001f3ff\U0000200d\U00002642",  # 🧚🏿‍♂
+    "\U0001f9da\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧚🏻‍♂️
+    "\U0001f9da\U0001f3fb\U0000200d\U00002642",  # 🧚🏻‍♂
+    "\U0001f9da\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧚🏾‍♂️
+    "\U0001f9da\U0001f3fe\U0000200d\U00002642",  # 🧚🏾‍♂
+    "\U0001f9da\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧚🏼‍♂️
+    "\U0001f9da\U0001f3fc\U0000200d\U00002642",  # 🧚🏼‍♂
+    "\U0001f9da\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧚🏽‍♂️
+    "\U0001f9da\U0001f3fd\U0000200d\U00002642",  # 🧚🏽‍♂
+    "\U0001f468\U0000200d\U0001f33e",  # 👨‍🌾
+    "\U0001f468\U0001f3ff\U0000200d\U0001f33e",  # 👨🏿‍🌾
+    "\U0001f468\U0001f3fb\U0000200d\U0001f33e",  # 👨🏻‍🌾
+    "\U0001f468\U0001f3fe\U0000200d\U0001f33e",  # 👨🏾‍🌾
+    "\U0001f468\U0001f3fc\U0000200d\U0001f33e",  # 👨🏼‍🌾
+    "\U0001f468\U0001f3fd\U0000200d\U0001f33e",  # 👨🏽‍🌾
+    "\U0001f468\U0000200d\U0001f37c",  # 👨‍🍼
+    "\U0001f468\U0001f3ff\U0000200d\U0001f37c",  # 👨🏿‍🍼
+    "\U0001f468\U0001f3fb\U0000200d\U0001f37c",  # 👨🏻‍🍼
+    "\U0001f468\U0001f3fe\U0000200d\U0001f37c",  # 👨🏾‍🍼
+    "\U0001f468\U0001f3fc\U0000200d\U0001f37c",  # 👨🏼‍🍼
+    "\U0001f468\U0001f3fd\U0000200d\U0001f37c",  # 👨🏽‍🍼
+    "\U0001f468\U0000200d\U0001f692",  # 👨‍🚒
+    "\U0001f468\U0001f3ff\U0000200d\U0001f692",  # 👨🏿‍🚒
+    "\U0001f468\U0001f3fb\U0000200d\U0001f692",  # 👨🏻‍🚒
+    "\U0001f468\U0001f3fe\U0000200d\U0001f692",  # 👨🏾‍🚒
+    "\U0001f468\U0001f3fc\U0000200d\U0001f692",  # 👨🏼‍🚒
+    "\U0001f468\U0001f3fd\U0000200d\U0001f692",  # 👨🏽‍🚒
+    "\U0001f64d\U0000200d\U00002642\U0000fe0f",  # 🙍‍♂️
+    "\U0001f64d\U0000200d\U00002642",  # 🙍‍♂
+    "\U0001f64d\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🙍🏿‍♂️
+    "\U0001f64d\U0001f3ff\U0000200d\U00002642",  # 🙍🏿‍♂
+    "\U0001f64d\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🙍🏻‍♂️
+    "\U0001f64d\U0001f3fb\U0000200d\U00002642",  # 🙍🏻‍♂
+    "\U0001f64d\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🙍🏾‍♂️
+    "\U0001f64d\U0001f3fe\U0000200d\U00002642",  # 🙍🏾‍♂
+    "\U0001f64d\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🙍🏼‍♂️
+    "\U0001f64d\U0001f3fc\U0000200d\U00002642",  # 🙍🏼‍♂
+    "\U0001f64d\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🙍🏽‍♂️
+    "\U0001f64d\U0001f3fd\U0000200d\U00002642",  # 🙍🏽‍♂
+    "\U0001f9de\U0000200d\U00002642\U0000fe0f",  # 🧞‍♂️
+    "\U0001f9de\U0000200d\U00002642",  # 🧞‍♂
+    "\U0001f645\U0000200d\U00002642\U0000fe0f",  # 🙅‍♂️
+    "\U0001f645\U0000200d\U00002642",  # 🙅‍♂
+    "\U0001f645\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🙅🏿‍♂️
+    "\U0001f645\U0001f3ff\U0000200d\U00002642",  # 🙅🏿‍♂
+    "\U0001f645\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🙅🏻‍♂️
+    "\U0001f645\U0001f3fb\U0000200d\U00002642",  # 🙅🏻‍♂
+    "\U0001f645\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🙅🏾‍♂️
+    "\U0001f645\U0001f3fe\U0000200d\U00002642",  # 🙅🏾‍♂
+    "\U0001f645\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🙅🏼‍♂️
+    "\U0001f645\U0001f3fc\U0000200d\U00002642",  # 🙅🏼‍♂
+    "\U0001f645\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🙅🏽‍♂️
+    "\U0001f645\U0001f3fd\U0000200d\U00002642",  # 🙅🏽‍♂
+    "\U0001f646\U0000200d\U00002642\U0000fe0f",  # 🙆‍♂️
+    "\U0001f646\U0000200d\U00002642",  # 🙆‍♂
+    "\U0001f646\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🙆🏿‍♂️
+    "\U0001f646\U0001f3ff\U0000200d\U00002642",  # 🙆🏿‍♂
+    "\U0001f646\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🙆🏻‍♂️
+    "\U0001f646\U0001f3fb\U0000200d\U00002642",  # 🙆🏻‍♂
+    "\U0001f646\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🙆🏾‍♂️
+    "\U0001f646\U0001f3fe\U0000200d\U00002642",  # 🙆🏾‍♂
+    "\U0001f646\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🙆🏼‍♂️
+    "\U0001f646\U0001f3fc\U0000200d\U00002642",  # 🙆🏼‍♂
+    "\U0001f646\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🙆🏽‍♂️
+    "\U0001f646\U0001f3fd\U0000200d\U00002642",  # 🙆🏽‍♂
+    "\U0001f487\U0000200d\U00002642\U0000fe0f",  # 💇‍♂️
+    "\U0001f487\U0000200d\U00002642",  # 💇‍♂
+    "\U0001f487\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 💇🏿‍♂️
+    "\U0001f487\U0001f3ff\U0000200d\U00002642",  # 💇🏿‍♂
+    "\U0001f487\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 💇🏻‍♂️
+    "\U0001f487\U0001f3fb\U0000200d\U00002642",  # 💇🏻‍♂
+    "\U0001f487\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 💇🏾‍♂️
+    "\U0001f487\U0001f3fe\U0000200d\U00002642",  # 💇🏾‍♂
+    "\U0001f487\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 💇🏼‍♂️
+    "\U0001f487\U0001f3fc\U0000200d\U00002642",  # 💇🏼‍♂
+    "\U0001f487\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 💇🏽‍♂️
+    "\U0001f487\U0001f3fd\U0000200d\U00002642",  # 💇🏽‍♂
+    "\U0001f486\U0000200d\U00002642\U0000fe0f",  # 💆‍♂️
+    "\U0001f486\U0000200d\U00002642",  # 💆‍♂
+    "\U0001f486\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 💆🏿‍♂️
+    "\U0001f486\U0001f3ff\U0000200d\U00002642",  # 💆🏿‍♂
+    "\U0001f486\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 💆🏻‍♂️
+    "\U0001f486\U0001f3fb\U0000200d\U00002642",  # 💆🏻‍♂
+    "\U0001f486\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 💆🏾‍♂️
+    "\U0001f486\U0001f3fe\U0000200d\U00002642",  # 💆🏾‍♂
+    "\U0001f486\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 💆🏼‍♂️
+    "\U0001f486\U0001f3fc\U0000200d\U00002642",  # 💆🏼‍♂
+    "\U0001f486\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 💆🏽‍♂️
+    "\U0001f486\U0001f3fd\U0000200d\U00002642",  # 💆🏽‍♂
+    "\U0001f3cc\U0000fe0f\U0000200d\U00002642\U0000fe0f",  # 🏌️‍♂️
+    "\U0001f3cc\U0000200d\U00002642\U0000fe0f",  # 🏌‍♂️
+    "\U0001f3cc\U0000fe0f\U0000200d\U00002642",  # 🏌️‍♂
+    "\U0001f3cc\U0000200d\U00002642",  # 🏌‍♂
+    "\U0001f3cc\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🏌🏿‍♂️
+    "\U0001f3cc\U0001f3ff\U0000200d\U00002642",  # 🏌🏿‍♂
+    "\U0001f3cc\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🏌🏻‍♂️
+    "\U0001f3cc\U0001f3fb\U0000200d\U00002642",  # 🏌🏻‍♂
+    "\U0001f3cc\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🏌🏾‍♂️
+    "\U0001f3cc\U0001f3fe\U0000200d\U00002642",  # 🏌🏾‍♂
+    "\U0001f3cc\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🏌🏼‍♂️
+    "\U0001f3cc\U0001f3fc\U0000200d\U00002642",  # 🏌🏼‍♂
+    "\U0001f3cc\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🏌🏽‍♂️
+    "\U0001f3cc\U0001f3fd\U0000200d\U00002642",  # 🏌🏽‍♂
+    "\U0001f482\U0000200d\U00002642\U0000fe0f",  # 💂‍♂️
+    "\U0001f482\U0000200d\U00002642",  # 💂‍♂
+    "\U0001f482\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 💂🏿‍♂️
+    "\U0001f482\U0001f3ff\U0000200d\U00002642",  # 💂🏿‍♂
+    "\U0001f482\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 💂🏻‍♂️
+    "\U0001f482\U0001f3fb\U0000200d\U00002642",  # 💂🏻‍♂
+    "\U0001f482\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 💂🏾‍♂️
+    "\U0001f482\U0001f3fe\U0000200d\U00002642",  # 💂🏾‍♂
+    "\U0001f482\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 💂🏼‍♂️
+    "\U0001f482\U0001f3fc\U0000200d\U00002642",  # 💂🏼‍♂
+    "\U0001f482\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 💂🏽‍♂️
+    "\U0001f482\U0001f3fd\U0000200d\U00002642",  # 💂🏽‍♂
+    "\U0001f468\U0000200d\U00002695\U0000fe0f",  # 👨‍⚕️
+    "\U0001f468\U0000200d\U00002695",  # 👨‍⚕
+    "\U0001f468\U0001f3ff\U0000200d\U00002695\U0000fe0f",  # 👨🏿‍⚕️
+    "\U0001f468\U0001f3ff\U0000200d\U00002695",  # 👨🏿‍⚕
+    "\U0001f468\U0001f3fb\U0000200d\U00002695\U0000fe0f",  # 👨🏻‍⚕️
+    "\U0001f468\U0001f3fb\U0000200d\U00002695",  # 👨🏻‍⚕
+    "\U0001f468\U0001f3fe\U0000200d\U00002695\U0000fe0f",  # 👨🏾‍⚕️
+    "\U0001f468\U0001f3fe\U0000200d\U00002695",  # 👨🏾‍⚕
+    "\U0001f468\U0001f3fc\U0000200d\U00002695\U0000fe0f",  # 👨🏼‍⚕️
+    "\U0001f468\U0001f3fc\U0000200d\U00002695",  # 👨🏼‍⚕
+    "\U0001f468\U0001f3fd\U0000200d\U00002695\U0000fe0f",  # 👨🏽‍⚕️
+    "\U0001f468\U0001f3fd\U0000200d\U00002695",  # 👨🏽‍⚕
+    "\U0001f9d8\U0000200d\U00002642\U0000fe0f",  # 🧘‍♂️
+    "\U0001f9d8\U0000200d\U00002642",  # 🧘‍♂
+    "\U0001f9d8\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧘🏿‍♂️
+    "\U0001f9d8\U0001f3ff\U0000200d\U00002642",  # 🧘🏿‍♂
+    "\U0001f9d8\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧘🏻‍♂️
+    "\U0001f9d8\U0001f3fb\U0000200d\U00002642",  # 🧘🏻‍♂
+    "\U0001f9d8\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧘🏾‍♂️
+    "\U0001f9d8\U0001f3fe\U0000200d\U00002642",  # 🧘🏾‍♂
+    "\U0001f9d8\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧘🏼‍♂️
+    "\U0001f9d8\U0001f3fc\U0000200d\U00002642",  # 🧘🏼‍♂
+    "\U0001f9d8\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧘🏽‍♂️
+    "\U0001f9d8\U0001f3fd\U0000200d\U00002642",  # 🧘🏽‍♂
+    "\U0001f468\U0000200d\U0001f9bd",  # 👨‍🦽
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9bd",  # 👨🏿‍🦽
+    "\U0001f468\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👨‍🦽‍➡️
+    "\U0001f468\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👨‍🦽‍➡
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👨🏿‍🦽‍➡️
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👨🏿‍🦽‍➡
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👨🏻‍🦽‍➡️
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👨🏻‍🦽‍➡
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👨🏾‍🦽‍➡️
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👨🏾‍🦽‍➡
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👨🏼‍🦽‍➡️
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👨🏼‍🦽‍➡
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👨🏽‍🦽‍➡️
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👨🏽‍🦽‍➡
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9bd",  # 👨🏻‍🦽
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9bd",  # 👨🏾‍🦽
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9bd",  # 👨🏼‍🦽
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9bd",  # 👨🏽‍🦽
+    "\U0001f468\U0000200d\U0001f9bc",  # 👨‍🦼
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9bc",  # 👨🏿‍🦼
+    "\U0001f468\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👨‍🦼‍➡️
+    "\U0001f468\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👨‍🦼‍➡
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👨🏿‍🦼‍➡️
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👨🏿‍🦼‍➡
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👨🏻‍🦼‍➡️
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👨🏻‍🦼‍➡
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👨🏾‍🦼‍➡️
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👨🏾‍🦼‍➡
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👨🏼‍🦼‍➡️
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👨🏼‍🦼‍➡
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👨🏽‍🦼‍➡️
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👨🏽‍🦼‍➡
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9bc",  # 👨🏻‍🦼
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9bc",  # 👨🏾‍🦼
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9bc",  # 👨🏼‍🦼
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9bc",  # 👨🏽‍🦼
+    "\U0001f9d6\U0000200d\U00002642\U0000fe0f",  # 🧖‍♂️
+    "\U0001f9d6\U0000200d\U00002642",  # 🧖‍♂
+    "\U0001f9d6\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧖🏿‍♂️
+    "\U0001f9d6\U0001f3ff\U0000200d\U00002642",  # 🧖🏿‍♂
+    "\U0001f9d6\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧖🏻‍♂️
+    "\U0001f9d6\U0001f3fb\U0000200d\U00002642",  # 🧖🏻‍♂
+    "\U0001f9d6\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧖🏾‍♂️
+    "\U0001f9d6\U0001f3fe\U0000200d\U00002642",  # 🧖🏾‍♂
+    "\U0001f9d6\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧖🏼‍♂️
+    "\U0001f9d6\U0001f3fc\U0000200d\U00002642",  # 🧖🏼‍♂
+    "\U0001f9d6\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧖🏽‍♂️
+    "\U0001f9d6\U0001f3fd\U0000200d\U00002642",  # 🧖🏽‍♂
+    "\U0001f935\U0000200d\U00002642\U0000fe0f",  # 🤵‍♂️
+    "\U0001f935\U0000200d\U00002642",  # 🤵‍♂
+    "\U0001f935\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤵🏿‍♂️
+    "\U0001f935\U0001f3ff\U0000200d\U00002642",  # 🤵🏿‍♂
+    "\U0001f935\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤵🏻‍♂️
+    "\U0001f935\U0001f3fb\U0000200d\U00002642",  # 🤵🏻‍♂
+    "\U0001f935\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤵🏾‍♂️
+    "\U0001f935\U0001f3fe\U0000200d\U00002642",  # 🤵🏾‍♂
+    "\U0001f935\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤵🏼‍♂️
+    "\U0001f935\U0001f3fc\U0000200d\U00002642",  # 🤵🏼‍♂
+    "\U0001f935\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤵🏽‍♂️
+    "\U0001f935\U0001f3fd\U0000200d\U00002642",  # 🤵🏽‍♂
+    "\U0001f468\U0000200d\U00002696\U0000fe0f",  # 👨‍⚖️
+    "\U0001f468\U0000200d\U00002696",  # 👨‍⚖
+    "\U0001f468\U0001f3ff\U0000200d\U00002696\U0000fe0f",  # 👨🏿‍⚖️
+    "\U0001f468\U0001f3ff\U0000200d\U00002696",  # 👨🏿‍⚖
+    "\U0001f468\U0001f3fb\U0000200d\U00002696\U0000fe0f",  # 👨🏻‍⚖️
+    "\U0001f468\U0001f3fb\U0000200d\U00002696",  # 👨🏻‍⚖
+    "\U0001f468\U0001f3fe\U0000200d\U00002696\U0000fe0f",  # 👨🏾‍⚖️
+    "\U0001f468\U0001f3fe\U0000200d\U00002696",  # 👨🏾‍⚖
+    "\U0001f468\U0001f3fc\U0000200d\U00002696\U0000fe0f",  # 👨🏼‍⚖️
+    "\U0001f468\U0001f3fc\U0000200d\U00002696",  # 👨🏼‍⚖
+    "\U0001f468\U0001f3fd\U0000200d\U00002696\U0000fe0f",  # 👨🏽‍⚖️
+    "\U0001f468\U0001f3fd\U0000200d\U00002696",  # 👨🏽‍⚖
+    "\U0001f939\U0000200d\U00002642\U0000fe0f",  # 🤹‍♂️
+    "\U0001f939\U0000200d\U00002642",  # 🤹‍♂
+    "\U0001f939\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤹🏿‍♂️
+    "\U0001f939\U0001f3ff\U0000200d\U00002642",  # 🤹🏿‍♂
+    "\U0001f939\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤹🏻‍♂️
+    "\U0001f939\U0001f3fb\U0000200d\U00002642",  # 🤹🏻‍♂
+    "\U0001f939\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤹🏾‍♂️
+    "\U0001f939\U0001f3fe\U0000200d\U00002642",  # 🤹🏾‍♂
+    "\U0001f939\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤹🏼‍♂️
+    "\U0001f939\U0001f3fc\U0000200d\U00002642",  # 🤹🏼‍♂
+    "\U0001f939\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤹🏽‍♂️
+    "\U0001f939\U0001f3fd\U0000200d\U00002642",  # 🤹🏽‍♂
+    "\U0001f9ce\U0000200d\U00002642\U0000fe0f",  # 🧎‍♂️
+    "\U0001f9ce\U0000200d\U00002642",  # 🧎‍♂
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧎🏿‍♂️
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002642",  # 🧎🏿‍♂
+    "\U0001f9ce\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎‍♂️‍➡️
+    "\U0001f9ce\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🧎‍♂‍➡️
+    "\U0001f9ce\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🧎‍♂️‍➡
+    "\U0001f9ce\U0000200d\U00002642\U0000200d\U000027a1",  # 🧎‍♂‍➡
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏿‍♂️‍➡️
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🧎🏿‍♂‍➡️
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🧎🏿‍♂️‍➡
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1",  # 🧎🏿‍♂‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏻‍♂️‍➡️
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🧎🏻‍♂‍➡️
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🧎🏻‍♂️‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1",  # 🧎🏻‍♂‍➡
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏾‍♂️‍➡️
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🧎🏾‍♂‍➡️
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🧎🏾‍♂️‍➡
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1",  # 🧎🏾‍♂‍➡
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏼‍♂️‍➡️
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🧎🏼‍♂‍➡️
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🧎🏼‍♂️‍➡
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1",  # 🧎🏼‍♂‍➡
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏽‍♂️‍➡️
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🧎🏽‍♂‍➡️
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🧎🏽‍♂️‍➡
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1",  # 🧎🏽‍♂‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧎🏻‍♂️
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002642",  # 🧎🏻‍♂
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧎🏾‍♂️
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002642",  # 🧎🏾‍♂
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧎🏼‍♂️
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002642",  # 🧎🏼‍♂
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧎🏽‍♂️
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002642",  # 🧎🏽‍♂
+    "\U0001f3cb\U0000fe0f\U0000200d\U00002642\U0000fe0f",  # 🏋️‍♂️
+    "\U0001f3cb\U0000200d\U00002642\U0000fe0f",  # 🏋‍♂️
+    "\U0001f3cb\U0000fe0f\U0000200d\U00002642",  # 🏋️‍♂
+    "\U0001f3cb\U0000200d\U00002642",  # 🏋‍♂
+    "\U0001f3cb\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🏋🏿‍♂️
+    "\U0001f3cb\U0001f3ff\U0000200d\U00002642",  # 🏋🏿‍♂
+    "\U0001f3cb\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🏋🏻‍♂️
+    "\U0001f3cb\U0001f3fb\U0000200d\U00002642",  # 🏋🏻‍♂
+    "\U0001f3cb\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🏋🏾‍♂️
+    "\U0001f3cb\U0001f3fe\U0000200d\U00002642",  # 🏋🏾‍♂
+    "\U0001f3cb\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🏋🏼‍♂️
+    "\U0001f3cb\U0001f3fc\U0000200d\U00002642",  # 🏋🏼‍♂
+    "\U0001f3cb\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🏋🏽‍♂️
+    "\U0001f3cb\U0001f3fd\U0000200d\U00002642",  # 🏋🏽‍♂
+    "\U0001f468\U0001f3fb",  # 👨🏻
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9b2",  # 👨🏻‍🦲
+    "\U0001f9d4\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧔🏻‍♂️
+    "\U0001f9d4\U0001f3fb\U0000200d\U00002642",  # 🧔🏻‍♂
+    "\U0001f471\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 👱🏻‍♂️
+    "\U0001f471\U0001f3fb\U0000200d\U00002642",  # 👱🏻‍♂
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9b1",  # 👨🏻‍🦱
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9b0",  # 👨🏻‍🦰
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9b3",  # 👨🏻‍🦳
+    "\U0001f9d9\U0000200d\U00002642\U0000fe0f",  # 🧙‍♂️
+    "\U0001f9d9\U0000200d\U00002642",  # 🧙‍♂
+    "\U0001f9d9\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧙🏿‍♂️
+    "\U0001f9d9\U0001f3ff\U0000200d\U00002642",  # 🧙🏿‍♂
+    "\U0001f9d9\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧙🏻‍♂️
+    "\U0001f9d9\U0001f3fb\U0000200d\U00002642",  # 🧙🏻‍♂
+    "\U0001f9d9\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧙🏾‍♂️
+    "\U0001f9d9\U0001f3fe\U0000200d\U00002642",  # 🧙🏾‍♂
+    "\U0001f9d9\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧙🏼‍♂️
+    "\U0001f9d9\U0001f3fc\U0000200d\U00002642",  # 🧙🏼‍♂
+    "\U0001f9d9\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧙🏽‍♂️
+    "\U0001f9d9\U0001f3fd\U0000200d\U00002642",  # 🧙🏽‍♂
+    "\U0001f468\U0000200d\U0001f527",  # 👨‍🔧
+    "\U0001f468\U0001f3ff\U0000200d\U0001f527",  # 👨🏿‍🔧
+    "\U0001f468\U0001f3fb\U0000200d\U0001f527",  # 👨🏻‍🔧
+    "\U0001f468\U0001f3fe\U0000200d\U0001f527",  # 👨🏾‍🔧
+    "\U0001f468\U0001f3fc\U0000200d\U0001f527",  # 👨🏼‍🔧
+    "\U0001f468\U0001f3fd\U0000200d\U0001f527",  # 👨🏽‍🔧
+    "\U0001f468\U0001f3fe",  # 👨🏾
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9b2",  # 👨🏾‍🦲
+    "\U0001f9d4\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧔🏾‍♂️
+    "\U0001f9d4\U0001f3fe\U0000200d\U00002642",  # 🧔🏾‍♂
+    "\U0001f471\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 👱🏾‍♂️
+    "\U0001f471\U0001f3fe\U0000200d\U00002642",  # 👱🏾‍♂
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9b1",  # 👨🏾‍🦱
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9b0",  # 👨🏾‍🦰
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9b3",  # 👨🏾‍🦳
+    "\U0001f468\U0001f3fc",  # 👨🏼
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9b2",  # 👨🏼‍🦲
+    "\U0001f9d4\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧔🏼‍♂️
+    "\U0001f9d4\U0001f3fc\U0000200d\U00002642",  # 🧔🏼‍♂
+    "\U0001f471\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 👱🏼‍♂️
+    "\U0001f471\U0001f3fc\U0000200d\U00002642",  # 👱🏼‍♂
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9b1",  # 👨🏼‍🦱
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9b0",  # 👨🏼‍🦰
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9b3",  # 👨🏼‍🦳
+    "\U0001f468\U0001f3fd",  # 👨🏽
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9b2",  # 👨🏽‍🦲
+    "\U0001f9d4\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧔🏽‍♂️
+    "\U0001f9d4\U0001f3fd\U0000200d\U00002642",  # 🧔🏽‍♂
+    "\U0001f471\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 👱🏽‍♂️
+    "\U0001f471\U0001f3fd\U0000200d\U00002642",  # 👱🏽‍♂
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9b1",  # 👨🏽‍🦱
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9b0",  # 👨🏽‍🦰
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9b3",  # 👨🏽‍🦳
+    "\U0001f6b5\U0000200d\U00002642\U0000fe0f",  # 🚵‍♂️
+    "\U0001f6b5\U0000200d\U00002642",  # 🚵‍♂
+    "\U0001f6b5\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🚵🏿‍♂️
+    "\U0001f6b5\U0001f3ff\U0000200d\U00002642",  # 🚵🏿‍♂
+    "\U0001f6b5\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🚵🏻‍♂️
+    "\U0001f6b5\U0001f3fb\U0000200d\U00002642",  # 🚵🏻‍♂
+    "\U0001f6b5\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🚵🏾‍♂️
+    "\U0001f6b5\U0001f3fe\U0000200d\U00002642",  # 🚵🏾‍♂
+    "\U0001f6b5\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🚵🏼‍♂️
+    "\U0001f6b5\U0001f3fc\U0000200d\U00002642",  # 🚵🏼‍♂
+    "\U0001f6b5\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🚵🏽‍♂️
+    "\U0001f6b5\U0001f3fd\U0000200d\U00002642",  # 🚵🏽‍♂
+    "\U0001f468\U0000200d\U0001f4bc",  # 👨‍💼
+    "\U0001f468\U0001f3ff\U0000200d\U0001f4bc",  # 👨🏿‍💼
+    "\U0001f468\U0001f3fb\U0000200d\U0001f4bc",  # 👨🏻‍💼
+    "\U0001f468\U0001f3fe\U0000200d\U0001f4bc",  # 👨🏾‍💼
+    "\U0001f468\U0001f3fc\U0000200d\U0001f4bc",  # 👨🏼‍💼
+    "\U0001f468\U0001f3fd\U0000200d\U0001f4bc",  # 👨🏽‍💼
+    "\U0001f468\U0000200d\U00002708\U0000fe0f",  # 👨‍✈️
+    "\U0001f468\U0000200d\U00002708",  # 👨‍✈
+    "\U0001f468\U0001f3ff\U0000200d\U00002708\U0000fe0f",  # 👨🏿‍✈️
+    "\U0001f468\U0001f3ff\U0000200d\U00002708",  # 👨🏿‍✈
+    "\U0001f468\U0001f3fb\U0000200d\U00002708\U0000fe0f",  # 👨🏻‍✈️
+    "\U0001f468\U0001f3fb\U0000200d\U00002708",  # 👨🏻‍✈
+    "\U0001f468\U0001f3fe\U0000200d\U00002708\U0000fe0f",  # 👨🏾‍✈️
+    "\U0001f468\U0001f3fe\U0000200d\U00002708",  # 👨🏾‍✈
+    "\U0001f468\U0001f3fc\U0000200d\U00002708\U0000fe0f",  # 👨🏼‍✈️
+    "\U0001f468\U0001f3fc\U0000200d\U00002708",  # 👨🏼‍✈
+    "\U0001f468\U0001f3fd\U0000200d\U00002708\U0000fe0f",  # 👨🏽‍✈️
+    "\U0001f468\U0001f3fd\U0000200d\U00002708",  # 👨🏽‍✈
+    "\U0001f93e\U0000200d\U00002642\U0000fe0f",  # 🤾‍♂️
+    "\U0001f93e\U0000200d\U00002642",  # 🤾‍♂
+    "\U0001f93e\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤾🏿‍♂️
+    "\U0001f93e\U0001f3ff\U0000200d\U00002642",  # 🤾🏿‍♂
+    "\U0001f93e\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤾🏻‍♂️
+    "\U0001f93e\U0001f3fb\U0000200d\U00002642",  # 🤾🏻‍♂
+    "\U0001f93e\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤾🏾‍♂️
+    "\U0001f93e\U0001f3fe\U0000200d\U00002642",  # 🤾🏾‍♂
+    "\U0001f93e\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤾🏼‍♂️
+    "\U0001f93e\U0001f3fc\U0000200d\U00002642",  # 🤾🏼‍♂
+    "\U0001f93e\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤾🏽‍♂️
+    "\U0001f93e\U0001f3fd\U0000200d\U00002642",  # 🤾🏽‍♂
+    "\U0001f93d\U0000200d\U00002642\U0000fe0f",  # 🤽‍♂️
+    "\U0001f93d\U0000200d\U00002642",  # 🤽‍♂
+    "\U0001f93d\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤽🏿‍♂️
+    "\U0001f93d\U0001f3ff\U0000200d\U00002642",  # 🤽🏿‍♂
+    "\U0001f93d\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤽🏻‍♂️
+    "\U0001f93d\U0001f3fb\U0000200d\U00002642",  # 🤽🏻‍♂
+    "\U0001f93d\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤽🏾‍♂️
+    "\U0001f93d\U0001f3fe\U0000200d\U00002642",  # 🤽🏾‍♂
+    "\U0001f93d\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤽🏼‍♂️
+    "\U0001f93d\U0001f3fc\U0000200d\U00002642",  # 🤽🏼‍♂
+    "\U0001f93d\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤽🏽‍♂️
+    "\U0001f93d\U0001f3fd\U0000200d\U00002642",  # 🤽🏽‍♂
+    "\U0001f46e\U0000200d\U00002642\U0000fe0f",  # 👮‍♂️
+    "\U0001f46e\U0000200d\U00002642",  # 👮‍♂
+    "\U0001f46e\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 👮🏿‍♂️
+    "\U0001f46e\U0001f3ff\U0000200d\U00002642",  # 👮🏿‍♂
+    "\U0001f46e\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 👮🏻‍♂️
+    "\U0001f46e\U0001f3fb\U0000200d\U00002642",  # 👮🏻‍♂
+    "\U0001f46e\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 👮🏾‍♂️
+    "\U0001f46e\U0001f3fe\U0000200d\U00002642",  # 👮🏾‍♂
+    "\U0001f46e\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 👮🏼‍♂️
+    "\U0001f46e\U0001f3fc\U0000200d\U00002642",  # 👮🏼‍♂
+    "\U0001f46e\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 👮🏽‍♂️
+    "\U0001f46e\U0001f3fd\U0000200d\U00002642",  # 👮🏽‍♂
+    "\U0001f64e\U0000200d\U00002642\U0000fe0f",  # 🙎‍♂️
+    "\U0001f64e\U0000200d\U00002642",  # 🙎‍♂
+    "\U0001f64e\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🙎🏿‍♂️
+    "\U0001f64e\U0001f3ff\U0000200d\U00002642",  # 🙎🏿‍♂
+    "\U0001f64e\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🙎🏻‍♂️
+    "\U0001f64e\U0001f3fb\U0000200d\U00002642",  # 🙎🏻‍♂
+    "\U0001f64e\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🙎🏾‍♂️
+    "\U0001f64e\U0001f3fe\U0000200d\U00002642",  # 🙎🏾‍♂
+    "\U0001f64e\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🙎🏼‍♂️
+    "\U0001f64e\U0001f3fc\U0000200d\U00002642",  # 🙎🏼‍♂
+    "\U0001f64e\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🙎🏽‍♂️
+    "\U0001f64e\U0001f3fd\U0000200d\U00002642",  # 🙎🏽‍♂
+    "\U0001f64b\U0000200d\U00002642\U0000fe0f",  # 🙋‍♂️
+    "\U0001f64b\U0000200d\U00002642",  # 🙋‍♂
+    "\U0001f64b\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🙋🏿‍♂️
+    "\U0001f64b\U0001f3ff\U0000200d\U00002642",  # 🙋🏿‍♂
+    "\U0001f64b\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🙋🏻‍♂️
+    "\U0001f64b\U0001f3fb\U0000200d\U00002642",  # 🙋🏻‍♂
+    "\U0001f64b\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🙋🏾‍♂️
+    "\U0001f64b\U0001f3fe\U0000200d\U00002642",  # 🙋🏾‍♂
+    "\U0001f64b\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🙋🏼‍♂️
+    "\U0001f64b\U0001f3fc\U0000200d\U00002642",  # 🙋🏼‍♂
+    "\U0001f64b\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🙋🏽‍♂️
+    "\U0001f64b\U0001f3fd\U0000200d\U00002642",  # 🙋🏽‍♂
+    "\U0001f468\U0000200d\U0001f9b0",  # 👨‍🦰
+    "\U0001f6a3\U0000200d\U00002642\U0000fe0f",  # 🚣‍♂️
+    "\U0001f6a3\U0000200d\U00002642",  # 🚣‍♂
+    "\U0001f6a3\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🚣🏿‍♂️
+    "\U0001f6a3\U0001f3ff\U0000200d\U00002642",  # 🚣🏿‍♂
+    "\U0001f6a3\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🚣🏻‍♂️
+    "\U0001f6a3\U0001f3fb\U0000200d\U00002642",  # 🚣🏻‍♂
+    "\U0001f6a3\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🚣🏾‍♂️
+    "\U0001f6a3\U0001f3fe\U0000200d\U00002642",  # 🚣🏾‍♂
+    "\U0001f6a3\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🚣🏼‍♂️
+    "\U0001f6a3\U0001f3fc\U0000200d\U00002642",  # 🚣🏼‍♂
+    "\U0001f6a3\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🚣🏽‍♂️
+    "\U0001f6a3\U0001f3fd\U0000200d\U00002642",  # 🚣🏽‍♂
+    "\U0001f3c3\U0000200d\U00002642\U0000fe0f",  # 🏃‍♂️
+    "\U0001f3c3\U0000200d\U00002642",  # 🏃‍♂
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🏃🏿‍♂️
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002642",  # 🏃🏿‍♂
+    "\U0001f3c3\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃‍♂️‍➡️
+    "\U0001f3c3\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🏃‍♂‍➡️
+    "\U0001f3c3\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🏃‍♂️‍➡
+    "\U0001f3c3\U0000200d\U00002642\U0000200d\U000027a1",  # 🏃‍♂‍➡
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏿‍♂️‍➡️
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🏃🏿‍♂‍➡️
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🏃🏿‍♂️‍➡
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1",  # 🏃🏿‍♂‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏻‍♂️‍➡️
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🏃🏻‍♂‍➡️
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🏃🏻‍♂️‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1",  # 🏃🏻‍♂‍➡
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏾‍♂️‍➡️
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🏃🏾‍♂‍➡️
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🏃🏾‍♂️‍➡
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1",  # 🏃🏾‍♂‍➡
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏼‍♂️‍➡️
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🏃🏼‍♂‍➡️
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🏃🏼‍♂️‍➡
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1",  # 🏃🏼‍♂‍➡
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏽‍♂️‍➡️
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🏃🏽‍♂‍➡️
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🏃🏽‍♂️‍➡
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1",  # 🏃🏽‍♂‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🏃🏻‍♂️
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002642",  # 🏃🏻‍♂
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🏃🏾‍♂️
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002642",  # 🏃🏾‍♂
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🏃🏼‍♂️
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002642",  # 🏃🏼‍♂
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🏃🏽‍♂️
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002642",  # 🏃🏽‍♂
+    "\U0001f468\U0000200d\U0001f52c",  # 👨‍🔬
+    "\U0001f468\U0001f3ff\U0000200d\U0001f52c",  # 👨🏿‍🔬
+    "\U0001f468\U0001f3fb\U0000200d\U0001f52c",  # 👨🏻‍🔬
+    "\U0001f468\U0001f3fe\U0000200d\U0001f52c",  # 👨🏾‍🔬
+    "\U0001f468\U0001f3fc\U0000200d\U0001f52c",  # 👨🏼‍🔬
+    "\U0001f468\U0001f3fd\U0000200d\U0001f52c",  # 👨🏽‍🔬
+    "\U0001f937\U0000200d\U00002642\U0000fe0f",  # 🤷‍♂️
+    "\U0001f937\U0000200d\U00002642",  # 🤷‍♂
+    "\U0001f937\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🤷🏿‍♂️
+    "\U0001f937\U0001f3ff\U0000200d\U00002642",  # 🤷🏿‍♂
+    "\U0001f937\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🤷🏻‍♂️
+    "\U0001f937\U0001f3fb\U0000200d\U00002642",  # 🤷🏻‍♂
+    "\U0001f937\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🤷🏾‍♂️
+    "\U0001f937\U0001f3fe\U0000200d\U00002642",  # 🤷🏾‍♂
+    "\U0001f937\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🤷🏼‍♂️
+    "\U0001f937\U0001f3fc\U0000200d\U00002642",  # 🤷🏼‍♂
+    "\U0001f937\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🤷🏽‍♂️
+    "\U0001f937\U0001f3fd\U0000200d\U00002642",  # 🤷🏽‍♂
+    "\U0001f468\U0000200d\U0001f3a4",  # 👨‍🎤
+    "\U0001f468\U0001f3ff\U0000200d\U0001f3a4",  # 👨🏿‍🎤
+    "\U0001f468\U0001f3fb\U0000200d\U0001f3a4",  # 👨🏻‍🎤
+    "\U0001f468\U0001f3fe\U0000200d\U0001f3a4",  # 👨🏾‍🎤
+    "\U0001f468\U0001f3fc\U0000200d\U0001f3a4",  # 👨🏼‍🎤
+    "\U0001f468\U0001f3fd\U0000200d\U0001f3a4",  # 👨🏽‍🎤
+    "\U0001f9cd\U0000200d\U00002642\U0000fe0f",  # 🧍‍♂️
+    "\U0001f9cd\U0000200d\U00002642",  # 🧍‍♂
+    "\U0001f9cd\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧍🏿‍♂️
+    "\U0001f9cd\U0001f3ff\U0000200d\U00002642",  # 🧍🏿‍♂
+    "\U0001f9cd\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧍🏻‍♂️
+    "\U0001f9cd\U0001f3fb\U0000200d\U00002642",  # 🧍🏻‍♂
+    "\U0001f9cd\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧍🏾‍♂️
+    "\U0001f9cd\U0001f3fe\U0000200d\U00002642",  # 🧍🏾‍♂
+    "\U0001f9cd\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧍🏼‍♂️
+    "\U0001f9cd\U0001f3fc\U0000200d\U00002642",  # 🧍🏼‍♂
+    "\U0001f9cd\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧍🏽‍♂️
+    "\U0001f9cd\U0001f3fd\U0000200d\U00002642",  # 🧍🏽‍♂
+    "\U0001f468\U0000200d\U0001f393",  # 👨‍🎓
+    "\U0001f468\U0001f3ff\U0000200d\U0001f393",  # 👨🏿‍🎓
+    "\U0001f468\U0001f3fb\U0000200d\U0001f393",  # 👨🏻‍🎓
+    "\U0001f468\U0001f3fe\U0000200d\U0001f393",  # 👨🏾‍🎓
+    "\U0001f468\U0001f3fc\U0000200d\U0001f393",  # 👨🏼‍🎓
+    "\U0001f468\U0001f3fd\U0000200d\U0001f393",  # 👨🏽‍🎓
+    "\U0001f9b8\U0000200d\U00002642\U0000fe0f",  # 🦸‍♂️
+    "\U0001f9b8\U0000200d\U00002642",  # 🦸‍♂
+    "\U0001f9b8\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🦸🏿‍♂️
+    "\U0001f9b8\U0001f3ff\U0000200d\U00002642",  # 🦸🏿‍♂
+    "\U0001f9b8\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🦸🏻‍♂️
+    "\U0001f9b8\U0001f3fb\U0000200d\U00002642",  # 🦸🏻‍♂
+    "\U0001f9b8\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🦸🏾‍♂️
+    "\U0001f9b8\U0001f3fe\U0000200d\U00002642",  # 🦸🏾‍♂
+    "\U0001f9b8\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🦸🏼‍♂️
+    "\U0001f9b8\U0001f3fc\U0000200d\U00002642",  # 🦸🏼‍♂
+    "\U0001f9b8\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🦸🏽‍♂️
+    "\U0001f9b8\U0001f3fd\U0000200d\U00002642",  # 🦸🏽‍♂
+    "\U0001f9b9\U0000200d\U00002642\U0000fe0f",  # 🦹‍♂️
+    "\U0001f9b9\U0000200d\U00002642",  # 🦹‍♂
+    "\U0001f9b9\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🦹🏿‍♂️
+    "\U0001f9b9\U0001f3ff\U0000200d\U00002642",  # 🦹🏿‍♂
+    "\U0001f9b9\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🦹🏻‍♂️
+    "\U0001f9b9\U0001f3fb\U0000200d\U00002642",  # 🦹🏻‍♂
+    "\U0001f9b9\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🦹🏾‍♂️
+    "\U0001f9b9\U0001f3fe\U0000200d\U00002642",  # 🦹🏾‍♂
+    "\U0001f9b9\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🦹🏼‍♂️
+    "\U0001f9b9\U0001f3fc\U0000200d\U00002642",  # 🦹🏼‍♂
+    "\U0001f9b9\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🦹🏽‍♂️
+    "\U0001f9b9\U0001f3fd\U0000200d\U00002642",  # 🦹🏽‍♂
+    "\U0001f3c4\U0000200d\U00002642\U0000fe0f",  # 🏄‍♂️
+    "\U0001f3c4\U0000200d\U00002642",  # 🏄‍♂
+    "\U0001f3c4\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🏄🏿‍♂️
+    "\U0001f3c4\U0001f3ff\U0000200d\U00002642",  # 🏄🏿‍♂
+    "\U0001f3c4\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🏄🏻‍♂️
+    "\U0001f3c4\U0001f3fb\U0000200d\U00002642",  # 🏄🏻‍♂
+    "\U0001f3c4\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🏄🏾‍♂️
+    "\U0001f3c4\U0001f3fe\U0000200d\U00002642",  # 🏄🏾‍♂
+    "\U0001f3c4\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🏄🏼‍♂️
+    "\U0001f3c4\U0001f3fc\U0000200d\U00002642",  # 🏄🏼‍♂
+    "\U0001f3c4\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🏄🏽‍♂️
+    "\U0001f3c4\U0001f3fd\U0000200d\U00002642",  # 🏄🏽‍♂
+    "\U0001f3ca\U0000200d\U00002642\U0000fe0f",  # 🏊‍♂️
+    "\U0001f3ca\U0000200d\U00002642",  # 🏊‍♂
+    "\U0001f3ca\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🏊🏿‍♂️
+    "\U0001f3ca\U0001f3ff\U0000200d\U00002642",  # 🏊🏿‍♂
+    "\U0001f3ca\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🏊🏻‍♂️
+    "\U0001f3ca\U0001f3fb\U0000200d\U00002642",  # 🏊🏻‍♂
+    "\U0001f3ca\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🏊🏾‍♂️
+    "\U0001f3ca\U0001f3fe\U0000200d\U00002642",  # 🏊🏾‍♂
+    "\U0001f3ca\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🏊🏼‍♂️
+    "\U0001f3ca\U0001f3fc\U0000200d\U00002642",  # 🏊🏼‍♂
+    "\U0001f3ca\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🏊🏽‍♂️
+    "\U0001f3ca\U0001f3fd\U0000200d\U00002642",  # 🏊🏽‍♂
+    "\U0001f468\U0000200d\U0001f3eb",  # 👨‍🏫
+    "\U0001f468\U0001f3ff\U0000200d\U0001f3eb",  # 👨🏿‍🏫
+    "\U0001f468\U0001f3fb\U0000200d\U0001f3eb",  # 👨🏻‍🏫
+    "\U0001f468\U0001f3fe\U0000200d\U0001f3eb",  # 👨🏾‍🏫
+    "\U0001f468\U0001f3fc\U0000200d\U0001f3eb",  # 👨🏼‍🏫
+    "\U0001f468\U0001f3fd\U0000200d\U0001f3eb",  # 👨🏽‍🏫
+    "\U0001f468\U0000200d\U0001f4bb",  # 👨‍💻
+    "\U0001f468\U0001f3ff\U0000200d\U0001f4bb",  # 👨🏿‍💻
+    "\U0001f468\U0001f3fb\U0000200d\U0001f4bb",  # 👨🏻‍💻
+    "\U0001f468\U0001f3fe\U0000200d\U0001f4bb",  # 👨🏾‍💻
+    "\U0001f468\U0001f3fc\U0000200d\U0001f4bb",  # 👨🏼‍💻
+    "\U0001f468\U0001f3fd\U0000200d\U0001f4bb",  # 👨🏽‍💻
+    "\U0001f481\U0000200d\U00002642\U0000fe0f",  # 💁‍♂️
+    "\U0001f481\U0000200d\U00002642",  # 💁‍♂
+    "\U0001f481\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 💁🏿‍♂️
+    "\U0001f481\U0001f3ff\U0000200d\U00002642",  # 💁🏿‍♂
+    "\U0001f481\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 💁🏻‍♂️
+    "\U0001f481\U0001f3fb\U0000200d\U00002642",  # 💁🏻‍♂
+    "\U0001f481\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 💁🏾‍♂️
+    "\U0001f481\U0001f3fe\U0000200d\U00002642",  # 💁🏾‍♂
+    "\U0001f481\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 💁🏼‍♂️
+    "\U0001f481\U0001f3fc\U0000200d\U00002642",  # 💁🏼‍♂
+    "\U0001f481\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 💁🏽‍♂️
+    "\U0001f481\U0001f3fd\U0000200d\U00002642",  # 💁🏽‍♂
+    "\U0001f9db\U0000200d\U00002642\U0000fe0f",  # 🧛‍♂️
+    "\U0001f9db\U0000200d\U00002642",  # 🧛‍♂
+    "\U0001f9db\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧛🏿‍♂️
+    "\U0001f9db\U0001f3ff\U0000200d\U00002642",  # 🧛🏿‍♂
+    "\U0001f9db\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧛🏻‍♂️
+    "\U0001f9db\U0001f3fb\U0000200d\U00002642",  # 🧛🏻‍♂
+    "\U0001f9db\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧛🏾‍♂️
+    "\U0001f9db\U0001f3fe\U0000200d\U00002642",  # 🧛🏾‍♂
+    "\U0001f9db\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧛🏼‍♂️
+    "\U0001f9db\U0001f3fc\U0000200d\U00002642",  # 🧛🏼‍♂
+    "\U0001f9db\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧛🏽‍♂️
+    "\U0001f9db\U0001f3fd\U0000200d\U00002642",  # 🧛🏽‍♂
+    "\U0001f6b6\U0000200d\U00002642\U0000fe0f",  # 🚶‍♂️
+    "\U0001f6b6\U0000200d\U00002642",  # 🚶‍♂
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🚶🏿‍♂️
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002642",  # 🚶🏿‍♂
+    "\U0001f6b6\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶‍♂️‍➡️
+    "\U0001f6b6\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🚶‍♂‍➡️
+    "\U0001f6b6\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🚶‍♂️‍➡
+    "\U0001f6b6\U0000200d\U00002642\U0000200d\U000027a1",  # 🚶‍♂‍➡
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏿‍♂️‍➡️
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🚶🏿‍♂‍➡️
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🚶🏿‍♂️‍➡
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002642\U0000200d\U000027a1",  # 🚶🏿‍♂‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏻‍♂️‍➡️
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🚶🏻‍♂‍➡️
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🚶🏻‍♂️‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000200d\U000027a1",  # 🚶🏻‍♂‍➡
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏾‍♂️‍➡️
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🚶🏾‍♂‍➡️
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🚶🏾‍♂️‍➡
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000200d\U000027a1",  # 🚶🏾‍♂‍➡
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏼‍♂️‍➡️
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🚶🏼‍♂‍➡️
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🚶🏼‍♂️‍➡
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000200d\U000027a1",  # 🚶🏼‍♂‍➡
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏽‍♂️‍➡️
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1\U0000fe0f",  # 🚶🏽‍♂‍➡️
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000fe0f\U0000200d\U000027a1",  # 🚶🏽‍♂️‍➡
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000200d\U000027a1",  # 🚶🏽‍♂‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🚶🏻‍♂️
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002642",  # 🚶🏻‍♂
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🚶🏾‍♂️
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002642",  # 🚶🏾‍♂
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🚶🏼‍♂️
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002642",  # 🚶🏼‍♂
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🚶🏽‍♂️
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002642",  # 🚶🏽‍♂
+    "\U0001f473\U0000200d\U00002642\U0000fe0f",  # 👳‍♂️
+    "\U0001f473\U0000200d\U00002642",  # 👳‍♂
+    "\U0001f473\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 👳🏿‍♂️
+    "\U0001f473\U0001f3ff\U0000200d\U00002642",  # 👳🏿‍♂
+    "\U0001f473\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 👳🏻‍♂️
+    "\U0001f473\U0001f3fb\U0000200d\U00002642",  # 👳🏻‍♂
+    "\U0001f473\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 👳🏾‍♂️
+    "\U0001f473\U0001f3fe\U0000200d\U00002642",  # 👳🏾‍♂
+    "\U0001f473\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 👳🏼‍♂️
+    "\U0001f473\U0001f3fc\U0000200d\U00002642",  # 👳🏼‍♂
+    "\U0001f473\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 👳🏽‍♂️
+    "\U0001f473\U0001f3fd\U0000200d\U00002642",  # 👳🏽‍♂
+    "\U0001f468\U0000200d\U0001f9b3",  # 👨‍🦳
+    "\U0001f470\U0000200d\U00002642\U0000fe0f",  # 👰‍♂️
+    "\U0001f470\U0000200d\U00002642",  # 👰‍♂
+    "\U0001f470\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 👰🏿‍♂️
+    "\U0001f470\U0001f3ff\U0000200d\U00002642",  # 👰🏿‍♂
+    "\U0001f470\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 👰🏻‍♂️
+    "\U0001f470\U0001f3fb\U0000200d\U00002642",  # 👰🏻‍♂
+    "\U0001f470\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 👰🏾‍♂️
+    "\U0001f470\U0001f3fe\U0000200d\U00002642",  # 👰🏾‍♂
+    "\U0001f470\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 👰🏼‍♂️
+    "\U0001f470\U0001f3fc\U0000200d\U00002642",  # 👰🏼‍♂
+    "\U0001f470\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 👰🏽‍♂️
+    "\U0001f470\U0001f3fd\U0000200d\U00002642",  # 👰🏽‍♂
+    "\U0001f468\U0000200d\U0001f9af",  # 👨‍🦯
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9af",  # 👨🏿‍🦯
+    "\U0001f468\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👨‍🦯‍➡️
+    "\U0001f468\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👨‍🦯‍➡
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👨🏿‍🦯‍➡️
+    "\U0001f468\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👨🏿‍🦯‍➡
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👨🏻‍🦯‍➡️
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👨🏻‍🦯‍➡
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👨🏾‍🦯‍➡️
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👨🏾‍🦯‍➡
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👨🏼‍🦯‍➡️
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👨🏼‍🦯‍➡
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👨🏽‍🦯‍➡️
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👨🏽‍🦯‍➡
+    "\U0001f468\U0001f3fb\U0000200d\U0001f9af",  # 👨🏻‍🦯
+    "\U0001f468\U0001f3fe\U0000200d\U0001f9af",  # 👨🏾‍🦯
+    "\U0001f468\U0001f3fc\U0000200d\U0001f9af",  # 👨🏼‍🦯
+    "\U0001f468\U0001f3fd\U0000200d\U0001f9af",  # 👨🏽‍🦯
+    "\U0001f9df\U0000200d\U00002642\U0000fe0f",  # 🧟‍♂️
+    "\U0001f9df\U0000200d\U00002642",  # 🧟‍♂
+    "\U0001f96d",  # 🥭
+    "\U0001f570\U0000fe0f",  # 🕰️
+    "\U0001f570",  # 🕰
+    "\U0001f9bd",  # 🦽
+    "\U0001f45e",  # 👞
+    "\U0001f5fe",  # 🗾
+    "\U0001f341",  # 🍁
+    "\U0001fa87",  # 🪇
+    "\U0001f94b",  # 🥋
+    "\U0001f9c9",  # 🧉
+    "\U0001f356",  # 🍖
+    "\U0001f9d1\U0000200d\U0001f527",  # 🧑‍🔧
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f527",  # 🧑🏿‍🔧
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f527",  # 🧑🏻‍🔧
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f527",  # 🧑🏾‍🔧
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f527",  # 🧑🏼‍🔧
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f527",  # 🧑🏽‍🔧
+    "\U0001f9be",  # 🦾
+    "\U0001f9bf",  # 🦿
+    "\U00002695\U0000fe0f",  # ⚕️
+    "\U00002695",  # ⚕
+    "\U0001f3fe",  # 🏾
+    "\U0001f3fc",  # 🏼
+    "\U0001f3fd",  # 🏽
+    "\U0001f4e3",  # 📣
+    "\U0001f348",  # 🍈
+    "\U0001fae0",  # 🫠
+    "\U0001f4dd",  # 📝
+    "\U0001f46c",  # 👬
+    "\U0001f46c\U0001f3ff",  # 👬🏿
+    "\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👨🏿‍🤝‍👨🏻
+    "\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👨🏿‍🤝‍👨🏾
+    "\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👨🏿‍🤝‍👨🏼
+    "\U0001f468\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👨🏿‍🤝‍👨🏽
+    "\U0001f46c\U0001f3fb",  # 👬🏻
+    "\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👨🏻‍🤝‍👨🏿
+    "\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👨🏻‍🤝‍👨🏾
+    "\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👨🏻‍🤝‍👨🏼
+    "\U0001f468\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👨🏻‍🤝‍👨🏽
+    "\U0001f46c\U0001f3fe",  # 👬🏾
+    "\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👨🏾‍🤝‍👨🏿
+    "\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👨🏾‍🤝‍👨🏻
+    "\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👨🏾‍🤝‍👨🏼
+    "\U0001f468\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👨🏾‍🤝‍👨🏽
+    "\U0001f46c\U0001f3fc",  # 👬🏼
+    "\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👨🏼‍🤝‍👨🏿
+    "\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👨🏼‍🤝‍👨🏻
+    "\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👨🏼‍🤝‍👨🏾
+    "\U0001f468\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👨🏼‍🤝‍👨🏽
+    "\U0001f46c\U0001f3fd",  # 👬🏽
+    "\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👨🏽‍🤝‍👨🏿
+    "\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👨🏽‍🤝‍👨🏻
+    "\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👨🏽‍🤝‍👨🏾
+    "\U0001f468\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👨🏽‍🤝‍👨🏼
+    "\U0001f46f\U0000200d\U00002642\U0000fe0f",  # 👯‍♂️
+    "\U0001f46f\U0000200d\U00002642",  # 👯‍♂
+    "\U0001f93c\U0000200d\U00002642\U0000fe0f",  # 🤼‍♂️
+    "\U0001f93c\U0000200d\U00002642",  # 🤼‍♂
+    "\U00002764\U0000fe0f\U0000200d\U0001fa79",  # ❤️‍🩹
+    "\U00002764\U0000200d\U0001fa79",  # ❤‍🩹
+    "\U0001f54e",  # 🕎
+    "\U0001f6b9",  # 🚹
+    "\U0001f9dc\U0000200d\U00002640\U0000fe0f",  # 🧜‍♀️
+    "\U0001f9dc\U0000200d\U00002640",  # 🧜‍♀
+    "\U0001f9dc\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧜🏿‍♀️
+    "\U0001f9dc\U0001f3ff\U0000200d\U00002640",  # 🧜🏿‍♀
+    "\U0001f9dc\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧜🏻‍♀️
+    "\U0001f9dc\U0001f3fb\U0000200d\U00002640",  # 🧜🏻‍♀
+    "\U0001f9dc\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧜🏾‍♀️
+    "\U0001f9dc\U0001f3fe\U0000200d\U00002640",  # 🧜🏾‍♀
+    "\U0001f9dc\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧜🏼‍♀️
+    "\U0001f9dc\U0001f3fc\U0000200d\U00002640",  # 🧜🏼‍♀
+    "\U0001f9dc\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧜🏽‍♀️
+    "\U0001f9dc\U0001f3fd\U0000200d\U00002640",  # 🧜🏽‍♀
+    "\U0001f9dc\U0000200d\U00002642\U0000fe0f",  # 🧜‍♂️
+    "\U0001f9dc\U0000200d\U00002642",  # 🧜‍♂
+    "\U0001f9dc\U0001f3ff\U0000200d\U00002642\U0000fe0f",  # 🧜🏿‍♂️
+    "\U0001f9dc\U0001f3ff\U0000200d\U00002642",  # 🧜🏿‍♂
+    "\U0001f9dc\U0001f3fb\U0000200d\U00002642\U0000fe0f",  # 🧜🏻‍♂️
+    "\U0001f9dc\U0001f3fb\U0000200d\U00002642",  # 🧜🏻‍♂
+    "\U0001f9dc\U0001f3fe\U0000200d\U00002642\U0000fe0f",  # 🧜🏾‍♂️
+    "\U0001f9dc\U0001f3fe\U0000200d\U00002642",  # 🧜🏾‍♂
+    "\U0001f9dc\U0001f3fc\U0000200d\U00002642\U0000fe0f",  # 🧜🏼‍♂️
+    "\U0001f9dc\U0001f3fc\U0000200d\U00002642",  # 🧜🏼‍♂
+    "\U0001f9dc\U0001f3fd\U0000200d\U00002642\U0000fe0f",  # 🧜🏽‍♂️
+    "\U0001f9dc\U0001f3fd\U0000200d\U00002642",  # 🧜🏽‍♂
+    "\U0001f9dc",  # 🧜
+    "\U0001f9dc\U0001f3ff",  # 🧜🏿
+    "\U0001f9dc\U0001f3fb",  # 🧜🏻
+    "\U0001f9dc\U0001f3fe",  # 🧜🏾
+    "\U0001f9dc\U0001f3fc",  # 🧜🏼
+    "\U0001f9dc\U0001f3fd",  # 🧜🏽
+    "\U0001f687",  # 🚇
+    "\U0001f9a0",  # 🦠
+    "\U0001f3a4",  # 🎤
+    "\U0001f52c",  # 🔬
+    "\U0001f595",  # 🖕
+    "\U0001f595\U0001f3ff",  # 🖕🏿
+    "\U0001f595\U0001f3fb",  # 🖕🏻
+    "\U0001f595\U0001f3fe",  # 🖕🏾
+    "\U0001f595\U0001f3fc",  # 🖕🏼
+    "\U0001f595\U0001f3fd",  # 🖕🏽
+    "\U0001fa96",  # 🪖
+    "\U0001f396\U0000fe0f",  # 🎖️
+    "\U0001f396",  # 🎖
+    "\U0001f30c",  # 🌌
+    "\U0001f690",  # 🚐
+    "\U00002796",  # ➖
+    "\U0001fa9e",  # 🪞
+    "\U0001faa9",  # 🪩
+    "\U0001f5ff",  # 🗿
+    "\U0001f4f1",  # 📱
+    "\U0001f4f4",  # 📴
+    "\U0001f4f2",  # 📲
+    "\U0001f911",  # 🤑
+    "\U0001f4b0",  # 💰
+    "\U0001f4b8",  # 💸
+    "\U0001f412",  # 🐒
+    "\U0001f435",  # 🐵
+    "\U0001f69d",  # 🚝
+    "\U0001f96e",  # 🥮
+    "\U0001f391",  # 🎑
+    "\U0001face",  # 🫎
+    "\U0001f54c",  # 🕌
+    "\U0001f99f",  # 🦟
+    "\U0001f6e5\U0000fe0f",  # 🛥️
+    "\U0001f6e5",  # 🛥
+    "\U0001f6f5",  # 🛵
+    "\U0001f3cd\U0000fe0f",  # 🏍️
+    "\U0001f3cd",  # 🏍
+    "\U0001f9bc",  # 🦼
+    "\U0001f6e3\U0000fe0f",  # 🛣️
+    "\U0001f6e3",  # 🛣
+    "\U0001f5fb",  # 🗻
+    "\U000026f0\U0000fe0f",  # ⛰️
+    "\U000026f0",  # ⛰
+    "\U0001f6a0",  # 🚠
+    "\U0001f69e",  # 🚞
+    "\U0001f401",  # 🐁
+    "\U0001f42d",  # 🐭
+    "\U0001faa4",  # 🪤
+    "\U0001f444",  # 👄
+    "\U0001f3a5",  # 🎥
+    "\U00002716\U0000fe0f",  # ✖️
+    "\U00002716",  # ✖
+    "\U0001f344",  # 🍄
+    "\U0001f3b9",  # 🎹
+    "\U0001f3b5",  # 🎵
+    "\U0001f3b6",  # 🎶
+    "\U0001f3bc",  # 🎼
+    "\U0001f507",  # 🔇
+    "\U0001f485",  # 💅
+    "\U0001f485\U0001f3ff",  # 💅🏿
+    "\U0001f485\U0001f3fb",  # 💅🏻
+    "\U0001f485\U0001f3fe",  # 💅🏾
+    "\U0001f485\U0001f3fc",  # 💅🏼
+    "\U0001f485\U0001f3fd",  # 💅🏽
+    "\U0001f4db",  # 📛
+    "\U0001f3de\U0000fe0f",  # 🏞️
+    "\U0001f3de",  # 🏞
+    "\U0001f922",  # 🤢
+    "\U0001f9ff",  # 🧿
+    "\U0001f454",  # 👔
+    "\U0001f913",  # 🤓
+    "\U0001faba",  # 🪺
+    "\U0001fa86",  # 🪆
+    "\U0001f610",  # 😐
+    "\U0001f311",  # 🌑
+    "\U0001f31a",  # 🌚
+    "\U0001f4f0",  # 📰
+    "\U000023ed\U0000fe0f",  # ⏭️
+    "\U000023ed",  # ⏭
+    "\U0001f303",  # 🌃
+    "\U0001f564",  # 🕤
+    "\U0001f558",  # 🕘
+    "\U0001f977",  # 🥷
+    "\U0001f977\U0001f3ff",  # 🥷🏿
+    "\U0001f977\U0001f3fb",  # 🥷🏻
+    "\U0001f977\U0001f3fe",  # 🥷🏾
+    "\U0001f977\U0001f3fc",  # 🥷🏼
+    "\U0001f977\U0001f3fd",  # 🥷🏽
+    "\U0001f6b3",  # 🚳
+    "\U000026d4",  # ⛔
+    "\U0001f6af",  # 🚯
+    "\U0001f4f5",  # 📵
+    "\U0001f51e",  # 🔞
+    "\U0001f6b7",  # 🚷
+    "\U0001f6ad",  # 🚭
+    "\U0001f6b1",  # 🚱
+    "\U0001f443",  # 👃
+    "\U0001f443\U0001f3ff",  # 👃🏿
+    "\U0001f443\U0001f3fb",  # 👃🏻
+    "\U0001f443\U0001f3fe",  # 👃🏾
+    "\U0001f443\U0001f3fc",  # 👃🏼
+    "\U0001f443\U0001f3fd",  # 👃🏽
+    "\U0001f4d3",  # 📓
+    "\U0001f4d4",  # 📔
+    "\U0001f529",  # 🔩
+    "\U0001f419",  # 🐙
+    "\U0001f362",  # 🍢
+    "\U0001f3e2",  # 🏢
+    "\U0001f9d1\U0000200d\U0001f4bc",  # 🧑‍💼
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f4bc",  # 🧑🏿‍💼
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f4bc",  # 🧑🏻‍💼
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f4bc",  # 🧑🏾‍💼
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f4bc",  # 🧑🏼‍💼
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f4bc",  # 🧑🏽‍💼
+    "\U0001f479",  # 👹
+    "\U0001f6e2\U0000fe0f",  # 🛢️
+    "\U0001f6e2",  # 🛢
+    "\U0001f5dd\U0000fe0f",  # 🗝️
+    "\U0001f5dd",  # 🗝
+    "\U0001f474",  # 👴
+    "\U0001f474\U0001f3ff",  # 👴🏿
+    "\U0001f474\U0001f3fb",  # 👴🏻
+    "\U0001f474\U0001f3fe",  # 👴🏾
+    "\U0001f474\U0001f3fc",  # 👴🏼
+    "\U0001f474\U0001f3fd",  # 👴🏽
+    "\U0001f475",  # 👵
+    "\U0001f475\U0001f3ff",  # 👵🏿
+    "\U0001f475\U0001f3fb",  # 👵🏻
+    "\U0001f475\U0001f3fe",  # 👵🏾
+    "\U0001f475\U0001f3fc",  # 👵🏼
+    "\U0001f475\U0001f3fd",  # 👵🏽
+    "\U0001f9d3",  # 🧓
+    "\U0001f9d3\U0001f3ff",  # 🧓🏿
+    "\U0001f9d3\U0001f3fb",  # 🧓🏻
+    "\U0001f9d3\U0001f3fe",  # 🧓🏾
+    "\U0001f9d3\U0001f3fc",  # 🧓🏼
+    "\U0001f9d3\U0001f3fd",  # 🧓🏽
+    "\U0001fad2",  # 🫒
+    "\U0001f549\U0000fe0f",  # 🕉️
+    "\U0001f549",  # 🕉
+    "\U0001f698",  # 🚘
+    "\U0001f68d",  # 🚍
+    "\U0001f44a",  # 👊
+    "\U0001f44a\U0001f3ff",  # 👊🏿
+    "\U0001f44a\U0001f3fb",  # 👊🏻
+    "\U0001f44a\U0001f3fe",  # 👊🏾
+    "\U0001f44a\U0001f3fc",  # 👊🏼
+    "\U0001f44a\U0001f3fd",  # 👊🏽
+    "\U0001f694",  # 🚔
+    "\U0001f696",  # 🚖
+    "\U0001fa71",  # 🩱
+    "\U0001f55c",  # 🕜
+    "\U0001f550",  # 🕐
+    "\U0001f9c5",  # 🧅
+    "\U0001f4d6",  # 📖
+    "\U0001f4c2",  # 📂
+    "\U0001f450",  # 👐
+    "\U0001f450\U0001f3ff",  # 👐🏿
+    "\U0001f450\U0001f3fb",  # 👐🏻
+    "\U0001f450\U0001f3fe",  # 👐🏾
+    "\U0001f450\U0001f3fc",  # 👐🏼
+    "\U0001f450\U0001f3fd",  # 👐🏽
+    "\U0001f4ed",  # 📭
+    "\U0001f4ec",  # 📬
+    "\U0001f4bf",  # 💿
+    "\U0001f4d9",  # 📙
+    "\U0001f7e0",  # 🟠
+    "\U0001f9e1",  # 🧡
+    "\U0001f7e7",  # 🟧
+    "\U0001f9a7",  # 🦧
+    "\U00002626\U0000fe0f",  # ☦️
+    "\U00002626",  # ☦
+    "\U0001f9a6",  # 🦦
+    "\U0001f4e4",  # 📤
+    "\U0001f989",  # 🦉
+    "\U0001f402",  # 🐂
+    "\U0001f9aa",  # 🦪
+    "\U0001f4e6",  # 📦
+    "\U0001f4c4",  # 📄
+    "\U0001f4c3",  # 📃
+    "\U0001f4df",  # 📟
+    "\U0001f58c\U0000fe0f",  # 🖌️
+    "\U0001f58c",  # 🖌
+    "\U0001faf3",  # 🫳
+    "\U0001faf3\U0001f3ff",  # 🫳🏿
+    "\U0001faf3\U0001f3fb",  # 🫳🏻
+    "\U0001faf3\U0001f3fe",  # 🫳🏾
+    "\U0001faf3\U0001f3fc",  # 🫳🏼
+    "\U0001faf3\U0001f3fd",  # 🫳🏽
+    "\U0001f334",  # 🌴
+    "\U0001faf4",  # 🫴
+    "\U0001faf4\U0001f3ff",  # 🫴🏿
+    "\U0001faf4\U0001f3fb",  # 🫴🏻
+    "\U0001faf4\U0001f3fe",  # 🫴🏾
+    "\U0001faf4\U0001f3fc",  # 🫴🏼
+    "\U0001faf4\U0001f3fd",  # 🫴🏽
+    "\U0001f932",  # 🤲
+    "\U0001f932\U0001f3ff",  # 🤲🏿
+    "\U0001f932\U0001f3fb",  # 🤲🏻
+    "\U0001f932\U0001f3fe",  # 🤲🏾
+    "\U0001f932\U0001f3fc",  # 🤲🏼
+    "\U0001f932\U0001f3fd",  # 🤲🏽
+    "\U0001f95e",  # 🥞
+    "\U0001f43c",  # 🐼
+    "\U0001f4ce",  # 📎
+    "\U0001fa82",  # 🪂
+    "\U0001f99c",  # 🦜
+    "\U0000303d\U0000fe0f",  # 〽️
+    "\U0000303d",  # 〽
+    "\U0001f389",  # 🎉
+    "\U0001f973",  # 🥳
+    "\U0001f6f3\U0000fe0f",  # 🛳️
+    "\U0001f6f3",  # 🛳
+    "\U0001f6c2",  # 🛂
+    "\U000023f8\U0000fe0f",  # ⏸️
+    "\U000023f8",  # ⏸
+    "\U0001f43e",  # 🐾
+    "\U0001fadb",  # 🫛
+    "\U0000262e\U0000fe0f",  # ☮️
+    "\U0000262e",  # ☮
+    "\U0001f351",  # 🍑
+    "\U0001f99a",  # 🦚
+    "\U0001f95c",  # 🥜
+    "\U0001f350",  # 🍐
+    "\U0001f58a\U0000fe0f",  # 🖊️
+    "\U0001f58a",  # 🖊
+    "\U0000270f\U0000fe0f",  # ✏️
+    "\U0000270f",  # ✏
+    "\U0001f427",  # 🐧
+    "\U0001f614",  # 😔
+    "\U0001f9d1\U0000200d\U0001f91d\U0000200d\U0001f9d1",  # 🧑‍🤝‍🧑
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏿‍🤝‍🧑🏿
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏿‍🤝‍🧑🏻
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏿‍🤝‍🧑🏾
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏿‍🤝‍🧑🏼
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏿‍🤝‍🧑🏽
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏻‍🤝‍🧑🏻
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏻‍🤝‍🧑🏿
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏻‍🤝‍🧑🏾
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏻‍🤝‍🧑🏼
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏻‍🤝‍🧑🏽
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏾‍🤝‍🧑🏾
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏾‍🤝‍🧑🏿
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏾‍🤝‍🧑🏻
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏾‍🤝‍🧑🏼
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏾‍🤝‍🧑🏽
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏼‍🤝‍🧑🏼
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏼‍🤝‍🧑🏿
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏼‍🤝‍🧑🏻
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏼‍🤝‍🧑🏾
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏼‍🤝‍🧑🏽
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fd",  # 🧑🏽‍🤝‍🧑🏽
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3ff",  # 🧑🏽‍🤝‍🧑🏿
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fb",  # 🧑🏽‍🤝‍🧑🏻
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fe",  # 🧑🏽‍🤝‍🧑🏾
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f9d1\U0001f3fc",  # 🧑🏽‍🤝‍🧑🏼
+    "\U0001fac2",  # 🫂
+    "\U0001f46f",  # 👯
+    "\U0001f93c",  # 🤼
+    "\U0001f3ad",  # 🎭
+    "\U0001f623",  # 😣
+    "\U0001f9d1",  # 🧑
+    "\U0001f9d1\U0000200d\U0001f9b2",  # 🧑‍🦲
+    "\U0001f9d4",  # 🧔
+    "\U0001f6b4",  # 🚴
+    "\U0001f6b4\U0001f3ff",  # 🚴🏿
+    "\U0001f6b4\U0001f3fb",  # 🚴🏻
+    "\U0001f6b4\U0001f3fe",  # 🚴🏾
+    "\U0001f6b4\U0001f3fc",  # 🚴🏼
+    "\U0001f6b4\U0001f3fd",  # 🚴🏽
+    "\U0001f471",  # 👱
+    "\U000026f9\U0000fe0f",  # ⛹️
+    "\U000026f9",  # ⛹
+    "\U000026f9\U0001f3ff",  # ⛹🏿
+    "\U000026f9\U0001f3fb",  # ⛹🏻
+    "\U000026f9\U0001f3fe",  # ⛹🏾
+    "\U000026f9\U0001f3fc",  # ⛹🏼
+    "\U000026f9\U0001f3fd",  # ⛹🏽
+    "\U0001f647",  # 🙇
+    "\U0001f647\U0001f3ff",  # 🙇🏿
+    "\U0001f647\U0001f3fb",  # 🙇🏻
+    "\U0001f647\U0001f3fe",  # 🙇🏾
+    "\U0001f647\U0001f3fc",  # 🙇🏼
+    "\U0001f647\U0001f3fd",  # 🙇🏽
+    "\U0001f938",  # 🤸
+    "\U0001f938\U0001f3ff",  # 🤸🏿
+    "\U0001f938\U0001f3fb",  # 🤸🏻
+    "\U0001f938\U0001f3fe",  # 🤸🏾
+    "\U0001f938\U0001f3fc",  # 🤸🏼
+    "\U0001f938\U0001f3fd",  # 🤸🏽
+    "\U0001f9d7",  # 🧗
+    "\U0001f9d7\U0001f3ff",  # 🧗🏿
+    "\U0001f9d7\U0001f3fb",  # 🧗🏻
+    "\U0001f9d7\U0001f3fe",  # 🧗🏾
+    "\U0001f9d7\U0001f3fc",  # 🧗🏼
+    "\U0001f9d7\U0001f3fd",  # 🧗🏽
+    "\U0001f9d1\U0000200d\U0001f9b1",  # 🧑‍🦱
+    "\U0001f9d1\U0001f3ff",  # 🧑🏿
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9b2",  # 🧑🏿‍🦲
+    "\U0001f9d4\U0001f3ff",  # 🧔🏿
+    "\U0001f471\U0001f3ff",  # 👱🏿
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9b1",  # 🧑🏿‍🦱
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9b0",  # 🧑🏿‍🦰
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9b3",  # 🧑🏿‍🦳
+    "\U0001f926",  # 🤦
+    "\U0001f926\U0001f3ff",  # 🤦🏿
+    "\U0001f926\U0001f3fb",  # 🤦🏻
+    "\U0001f926\U0001f3fe",  # 🤦🏾
+    "\U0001f926\U0001f3fc",  # 🤦🏼
+    "\U0001f926\U0001f3fd",  # 🤦🏽
+    "\U0001f9d1\U0000200d\U0001f37c",  # 🧑‍🍼
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f37c",  # 🧑🏿‍🍼
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f37c",  # 🧑🏻‍🍼
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f37c",  # 🧑🏾‍🍼
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f37c",  # 🧑🏼‍🍼
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f37c",  # 🧑🏽‍🍼
+    "\U0001f93a",  # 🤺
+    "\U0001f64d",  # 🙍
+    "\U0001f64d\U0001f3ff",  # 🙍🏿
+    "\U0001f64d\U0001f3fb",  # 🙍🏻
+    "\U0001f64d\U0001f3fe",  # 🙍🏾
+    "\U0001f64d\U0001f3fc",  # 🙍🏼
+    "\U0001f64d\U0001f3fd",  # 🙍🏽
+    "\U0001f645",  # 🙅
+    "\U0001f645\U0001f3ff",  # 🙅🏿
+    "\U0001f645\U0001f3fb",  # 🙅🏻
+    "\U0001f645\U0001f3fe",  # 🙅🏾
+    "\U0001f645\U0001f3fc",  # 🙅🏼
+    "\U0001f645\U0001f3fd",  # 🙅🏽
+    "\U0001f646",  # 🙆
+    "\U0001f646\U0001f3ff",  # 🙆🏿
+    "\U0001f646\U0001f3fb",  # 🙆🏻
+    "\U0001f646\U0001f3fe",  # 🙆🏾
+    "\U0001f646\U0001f3fc",  # 🙆🏼
+    "\U0001f646\U0001f3fd",  # 🙆🏽
+    "\U0001f487",  # 💇
+    "\U0001f487\U0001f3ff",  # 💇🏿
+    "\U0001f487\U0001f3fb",  # 💇🏻
+    "\U0001f487\U0001f3fe",  # 💇🏾
+    "\U0001f487\U0001f3fc",  # 💇🏼
+    "\U0001f487\U0001f3fd",  # 💇🏽
+    "\U0001f486",  # 💆
+    "\U0001f486\U0001f3ff",  # 💆🏿
+    "\U0001f486\U0001f3fb",  # 💆🏻
+    "\U0001f486\U0001f3fe",  # 💆🏾
+    "\U0001f486\U0001f3fc",  # 💆🏼
+    "\U0001f486\U0001f3fd",  # 💆🏽
+    "\U0001f3cc\U0000fe0f",  # 🏌️
+    "\U0001f3cc",  # 🏌
+    "\U0001f3cc\U0001f3ff",  # 🏌🏿
+    "\U0001f3cc\U0001f3fb",  # 🏌🏻
+    "\U0001f3cc\U0001f3fe",  # 🏌🏾
+    "\U0001f3cc\U0001f3fc",  # 🏌🏼
+    "\U0001f3cc\U0001f3fd",  # 🏌🏽
+    "\U0001f6cc",  # 🛌
+    "\U0001f6cc\U0001f3ff",  # 🛌🏿
+    "\U0001f6cc\U0001f3fb",  # 🛌🏻
+    "\U0001f6cc\U0001f3fe",  # 🛌🏾
+    "\U0001f6cc\U0001f3fc",  # 🛌🏼
+    "\U0001f6cc\U0001f3fd",  # 🛌🏽
+    "\U0001f9d8",  # 🧘
+    "\U0001f9d8\U0001f3ff",  # 🧘🏿
+    "\U0001f9d8\U0001f3fb",  # 🧘🏻
+    "\U0001f9d8\U0001f3fe",  # 🧘🏾
+    "\U0001f9d8\U0001f3fc",  # 🧘🏼
+    "\U0001f9d8\U0001f3fd",  # 🧘🏽
+    "\U0001f9d1\U0000200d\U0001f9bd",  # 🧑‍🦽
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9bd",  # 🧑🏿‍🦽
+    "\U0001f9d1\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 🧑‍🦽‍➡️
+    "\U0001f9d1\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 🧑‍🦽‍➡
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 🧑🏿‍🦽‍➡️
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 🧑🏿‍🦽‍➡
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 🧑🏻‍🦽‍➡️
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 🧑🏻‍🦽‍➡
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 🧑🏾‍🦽‍➡️
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 🧑🏾‍🦽‍➡
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 🧑🏼‍🦽‍➡️
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 🧑🏼‍🦽‍➡
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 🧑🏽‍🦽‍➡️
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 🧑🏽‍🦽‍➡
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9bd",  # 🧑🏻‍🦽
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9bd",  # 🧑🏾‍🦽
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9bd",  # 🧑🏼‍🦽
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9bd",  # 🧑🏽‍🦽
+    "\U0001f9d1\U0000200d\U0001f9bc",  # 🧑‍🦼
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9bc",  # 🧑🏿‍🦼
+    "\U0001f9d1\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 🧑‍🦼‍➡️
+    "\U0001f9d1\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 🧑‍🦼‍➡
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 🧑🏿‍🦼‍➡️
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 🧑🏿‍🦼‍➡
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 🧑🏻‍🦼‍➡️
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 🧑🏻‍🦼‍➡
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 🧑🏾‍🦼‍➡️
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 🧑🏾‍🦼‍➡
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 🧑🏼‍🦼‍➡️
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 🧑🏼‍🦼‍➡
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 🧑🏽‍🦼‍➡️
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 🧑🏽‍🦼‍➡
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9bc",  # 🧑🏻‍🦼
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9bc",  # 🧑🏾‍🦼
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9bc",  # 🧑🏼‍🦼
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9bc",  # 🧑🏽‍🦼
+    "\U0001f9d6",  # 🧖
+    "\U0001f9d6\U0001f3ff",  # 🧖🏿
+    "\U0001f9d6\U0001f3fb",  # 🧖🏻
+    "\U0001f9d6\U0001f3fe",  # 🧖🏾
+    "\U0001f9d6\U0001f3fc",  # 🧖🏼
+    "\U0001f9d6\U0001f3fd",  # 🧖🏽
+    "\U0001f574\U0000fe0f",  # 🕴️
+    "\U0001f574",  # 🕴
+    "\U0001f574\U0001f3ff",  # 🕴🏿
+    "\U0001f574\U0001f3fb",  # 🕴🏻
+    "\U0001f574\U0001f3fe",  # 🕴🏾
+    "\U0001f574\U0001f3fc",  # 🕴🏼
+    "\U0001f574\U0001f3fd",  # 🕴🏽
+    "\U0001f935",  # 🤵
+    "\U0001f935\U0001f3ff",  # 🤵🏿
+    "\U0001f935\U0001f3fb",  # 🤵🏻
+    "\U0001f935\U0001f3fe",  # 🤵🏾
+    "\U0001f935\U0001f3fc",  # 🤵🏼
+    "\U0001f935\U0001f3fd",  # 🤵🏽
+    "\U0001f939",  # 🤹
+    "\U0001f939\U0001f3ff",  # 🤹🏿
+    "\U0001f939\U0001f3fb",  # 🤹🏻
+    "\U0001f939\U0001f3fe",  # 🤹🏾
+    "\U0001f939\U0001f3fc",  # 🤹🏼
+    "\U0001f939\U0001f3fd",  # 🤹🏽
+    "\U0001f9ce",  # 🧎
+    "\U0001f9ce\U0001f3ff",  # 🧎🏿
+    "\U0001f9ce\U0000200d\U000027a1\U0000fe0f",  # 🧎‍➡️
+    "\U0001f9ce\U0000200d\U000027a1",  # 🧎‍➡
+    "\U0001f9ce\U0001f3ff\U0000200d\U000027a1\U0000fe0f",  # 🧎🏿‍➡️
+    "\U0001f9ce\U0001f3ff\U0000200d\U000027a1",  # 🧎🏿‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U000027a1\U0000fe0f",  # 🧎🏻‍➡️
+    "\U0001f9ce\U0001f3fb\U0000200d\U000027a1",  # 🧎🏻‍➡
+    "\U0001f9ce\U0001f3fe\U0000200d\U000027a1\U0000fe0f",  # 🧎🏾‍➡️
+    "\U0001f9ce\U0001f3fe\U0000200d\U000027a1",  # 🧎🏾‍➡
+    "\U0001f9ce\U0001f3fc\U0000200d\U000027a1\U0000fe0f",  # 🧎🏼‍➡️
+    "\U0001f9ce\U0001f3fc\U0000200d\U000027a1",  # 🧎🏼‍➡
+    "\U0001f9ce\U0001f3fd\U0000200d\U000027a1\U0000fe0f",  # 🧎🏽‍➡️
+    "\U0001f9ce\U0001f3fd\U0000200d\U000027a1",  # 🧎🏽‍➡
+    "\U0001f9ce\U0001f3fb",  # 🧎🏻
+    "\U0001f9ce\U0001f3fe",  # 🧎🏾
+    "\U0001f9ce\U0001f3fc",  # 🧎🏼
+    "\U0001f9ce\U0001f3fd",  # 🧎🏽
+    "\U0001f3cb\U0000fe0f",  # 🏋️
+    "\U0001f3cb",  # 🏋
+    "\U0001f3cb\U0001f3ff",  # 🏋🏿
+    "\U0001f3cb\U0001f3fb",  # 🏋🏻
+    "\U0001f3cb\U0001f3fe",  # 🏋🏾
+    "\U0001f3cb\U0001f3fc",  # 🏋🏼
+    "\U0001f3cb\U0001f3fd",  # 🏋🏽
+    "\U0001f9d1\U0001f3fb",  # 🧑🏻
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9b2",  # 🧑🏻‍🦲
+    "\U0001f9d4\U0001f3fb",  # 🧔🏻
+    "\U0001f471\U0001f3fb",  # 👱🏻
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9b1",  # 🧑🏻‍🦱
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9b0",  # 🧑🏻‍🦰
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9b3",  # 🧑🏻‍🦳
+    "\U0001f9d1\U0001f3fe",  # 🧑🏾
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9b2",  # 🧑🏾‍🦲
+    "\U0001f9d4\U0001f3fe",  # 🧔🏾
+    "\U0001f471\U0001f3fe",  # 👱🏾
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9b1",  # 🧑🏾‍🦱
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9b0",  # 🧑🏾‍🦰
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9b3",  # 🧑🏾‍🦳
+    "\U0001f9d1\U0001f3fc",  # 🧑🏼
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9b2",  # 🧑🏼‍🦲
+    "\U0001f9d4\U0001f3fc",  # 🧔🏼
+    "\U0001f471\U0001f3fc",  # 👱🏼
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9b1",  # 🧑🏼‍🦱
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9b0",  # 🧑🏼‍🦰
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9b3",  # 🧑🏼‍🦳
+    "\U0001f9d1\U0001f3fd",  # 🧑🏽
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9b2",  # 🧑🏽‍🦲
+    "\U0001f9d4\U0001f3fd",  # 🧔🏽
+    "\U0001f471\U0001f3fd",  # 👱🏽
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9b1",  # 🧑🏽‍🦱
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9b0",  # 🧑🏽‍🦰
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9b3",  # 🧑🏽‍🦳
+    "\U0001f6b5",  # 🚵
+    "\U0001f6b5\U0001f3ff",  # 🚵🏿
+    "\U0001f6b5\U0001f3fb",  # 🚵🏻
+    "\U0001f6b5\U0001f3fe",  # 🚵🏾
+    "\U0001f6b5\U0001f3fc",  # 🚵🏼
+    "\U0001f6b5\U0001f3fd",  # 🚵🏽
+    "\U0001f93e",  # 🤾
+    "\U0001f93e\U0001f3ff",  # 🤾🏿
+    "\U0001f93e\U0001f3fb",  # 🤾🏻
+    "\U0001f93e\U0001f3fe",  # 🤾🏾
+    "\U0001f93e\U0001f3fc",  # 🤾🏼
+    "\U0001f93e\U0001f3fd",  # 🤾🏽
+    "\U0001f93d",  # 🤽
+    "\U0001f93d\U0001f3ff",  # 🤽🏿
+    "\U0001f93d\U0001f3fb",  # 🤽🏻
+    "\U0001f93d\U0001f3fe",  # 🤽🏾
+    "\U0001f93d\U0001f3fc",  # 🤽🏼
+    "\U0001f93d\U0001f3fd",  # 🤽🏽
+    "\U0001f64e",  # 🙎
+    "\U0001f64e\U0001f3ff",  # 🙎🏿
+    "\U0001f64e\U0001f3fb",  # 🙎🏻
+    "\U0001f64e\U0001f3fe",  # 🙎🏾
+    "\U0001f64e\U0001f3fc",  # 🙎🏼
+    "\U0001f64e\U0001f3fd",  # 🙎🏽
+    "\U0001f64b",  # 🙋
+    "\U0001f64b\U0001f3ff",  # 🙋🏿
+    "\U0001f64b\U0001f3fb",  # 🙋🏻
+    "\U0001f64b\U0001f3fe",  # 🙋🏾
+    "\U0001f64b\U0001f3fc",  # 🙋🏼
+    "\U0001f64b\U0001f3fd",  # 🙋🏽
+    "\U0001f9d1\U0000200d\U0001f9b0",  # 🧑‍🦰
+    "\U0001f6a3",  # 🚣
+    "\U0001f6a3\U0001f3ff",  # 🚣🏿
+    "\U0001f6a3\U0001f3fb",  # 🚣🏻
+    "\U0001f6a3\U0001f3fe",  # 🚣🏾
+    "\U0001f6a3\U0001f3fc",  # 🚣🏼
+    "\U0001f6a3\U0001f3fd",  # 🚣🏽
+    "\U0001f3c3",  # 🏃
+    "\U0001f3c3\U0001f3ff",  # 🏃🏿
+    "\U0001f3c3\U0000200d\U000027a1\U0000fe0f",  # 🏃‍➡️
+    "\U0001f3c3\U0000200d\U000027a1",  # 🏃‍➡
+    "\U0001f3c3\U0001f3ff\U0000200d\U000027a1\U0000fe0f",  # 🏃🏿‍➡️
+    "\U0001f3c3\U0001f3ff\U0000200d\U000027a1",  # 🏃🏿‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U000027a1\U0000fe0f",  # 🏃🏻‍➡️
+    "\U0001f3c3\U0001f3fb\U0000200d\U000027a1",  # 🏃🏻‍➡
+    "\U0001f3c3\U0001f3fe\U0000200d\U000027a1\U0000fe0f",  # 🏃🏾‍➡️
+    "\U0001f3c3\U0001f3fe\U0000200d\U000027a1",  # 🏃🏾‍➡
+    "\U0001f3c3\U0001f3fc\U0000200d\U000027a1\U0000fe0f",  # 🏃🏼‍➡️
+    "\U0001f3c3\U0001f3fc\U0000200d\U000027a1",  # 🏃🏼‍➡
+    "\U0001f3c3\U0001f3fd\U0000200d\U000027a1\U0000fe0f",  # 🏃🏽‍➡️
+    "\U0001f3c3\U0001f3fd\U0000200d\U000027a1",  # 🏃🏽‍➡
+    "\U0001f3c3\U0001f3fb",  # 🏃🏻
+    "\U0001f3c3\U0001f3fe",  # 🏃🏾
+    "\U0001f3c3\U0001f3fc",  # 🏃🏼
+    "\U0001f3c3\U0001f3fd",  # 🏃🏽
+    "\U0001f937",  # 🤷
+    "\U0001f937\U0001f3ff",  # 🤷🏿
+    "\U0001f937\U0001f3fb",  # 🤷🏻
+    "\U0001f937\U0001f3fe",  # 🤷🏾
+    "\U0001f937\U0001f3fc",  # 🤷🏼
+    "\U0001f937\U0001f3fd",  # 🤷🏽
+    "\U0001f9cd",  # 🧍
+    "\U0001f9cd\U0001f3ff",  # 🧍🏿
+    "\U0001f9cd\U0001f3fb",  # 🧍🏻
+    "\U0001f9cd\U0001f3fe",  # 🧍🏾
+    "\U0001f9cd\U0001f3fc",  # 🧍🏼
+    "\U0001f9cd\U0001f3fd",  # 🧍🏽
+    "\U0001f3c4",  # 🏄
+    "\U0001f3c4\U0001f3ff",  # 🏄🏿
+    "\U0001f3c4\U0001f3fb",  # 🏄🏻
+    "\U0001f3c4\U0001f3fe",  # 🏄🏾
+    "\U0001f3c4\U0001f3fc",  # 🏄🏼
+    "\U0001f3c4\U0001f3fd",  # 🏄🏽
+    "\U0001f3ca",  # 🏊
+    "\U0001f3ca\U0001f3ff",  # 🏊🏿
+    "\U0001f3ca\U0001f3fb",  # 🏊🏻
+    "\U0001f3ca\U0001f3fe",  # 🏊🏾
+    "\U0001f3ca\U0001f3fc",  # 🏊🏼
+    "\U0001f3ca\U0001f3fd",  # 🏊🏽
+    "\U0001f6c0",  # 🛀
+    "\U0001f6c0\U0001f3ff",  # 🛀🏿
+    "\U0001f6c0\U0001f3fb",  # 🛀🏻
+    "\U0001f6c0\U0001f3fe",  # 🛀🏾
+    "\U0001f6c0\U0001f3fc",  # 🛀🏼
+    "\U0001f6c0\U0001f3fd",  # 🛀🏽
+    "\U0001f481",  # 💁
+    "\U0001f481\U0001f3ff",  # 💁🏿
+    "\U0001f481\U0001f3fb",  # 💁🏻
+    "\U0001f481\U0001f3fe",  # 💁🏾
+    "\U0001f481\U0001f3fc",  # 💁🏼
+    "\U0001f481\U0001f3fd",  # 💁🏽
+    "\U0001f6b6",  # 🚶
+    "\U0001f6b6\U0001f3ff",  # 🚶🏿
+    "\U0001f6b6\U0000200d\U000027a1\U0000fe0f",  # 🚶‍➡️
+    "\U0001f6b6\U0000200d\U000027a1",  # 🚶‍➡
+    "\U0001f6b6\U0001f3ff\U0000200d\U000027a1\U0000fe0f",  # 🚶🏿‍➡️
+    "\U0001f6b6\U0001f3ff\U0000200d\U000027a1",  # 🚶🏿‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U000027a1\U0000fe0f",  # 🚶🏻‍➡️
+    "\U0001f6b6\U0001f3fb\U0000200d\U000027a1",  # 🚶🏻‍➡
+    "\U0001f6b6\U0001f3fe\U0000200d\U000027a1\U0000fe0f",  # 🚶🏾‍➡️
+    "\U0001f6b6\U0001f3fe\U0000200d\U000027a1",  # 🚶🏾‍➡
+    "\U0001f6b6\U0001f3fc\U0000200d\U000027a1\U0000fe0f",  # 🚶🏼‍➡️
+    "\U0001f6b6\U0001f3fc\U0000200d\U000027a1",  # 🚶🏼‍➡
+    "\U0001f6b6\U0001f3fd\U0000200d\U000027a1\U0000fe0f",  # 🚶🏽‍➡️
+    "\U0001f6b6\U0001f3fd\U0000200d\U000027a1",  # 🚶🏽‍➡
+    "\U0001f6b6\U0001f3fb",  # 🚶🏻
+    "\U0001f6b6\U0001f3fe",  # 🚶🏾
+    "\U0001f6b6\U0001f3fc",  # 🚶🏼
+    "\U0001f6b6\U0001f3fd",  # 🚶🏽
+    "\U0001f473",  # 👳
+    "\U0001f473\U0001f3ff",  # 👳🏿
+    "\U0001f473\U0001f3fb",  # 👳🏻
+    "\U0001f473\U0001f3fe",  # 👳🏾
+    "\U0001f473\U0001f3fc",  # 👳🏼
+    "\U0001f473\U0001f3fd",  # 👳🏽
+    "\U0001f9d1\U0000200d\U0001f9b3",  # 🧑‍🦳
+    "\U0001fac5",  # 🫅
+    "\U0001fac5\U0001f3ff",  # 🫅🏿
+    "\U0001fac5\U0001f3fb",  # 🫅🏻
+    "\U0001fac5\U0001f3fe",  # 🫅🏾
+    "\U0001fac5\U0001f3fc",  # 🫅🏼
+    "\U0001fac5\U0001f3fd",  # 🫅🏽
+    "\U0001f472",  # 👲
+    "\U0001f472\U0001f3ff",  # 👲🏿
+    "\U0001f472\U0001f3fb",  # 👲🏻
+    "\U0001f472\U0001f3fe",  # 👲🏾
+    "\U0001f472\U0001f3fc",  # 👲🏼
+    "\U0001f472\U0001f3fd",  # 👲🏽
+    "\U0001f470",  # 👰
+    "\U0001f470\U0001f3ff",  # 👰🏿
+    "\U0001f470\U0001f3fb",  # 👰🏻
+    "\U0001f470\U0001f3fe",  # 👰🏾
+    "\U0001f470\U0001f3fc",  # 👰🏼
+    "\U0001f470\U0001f3fd",  # 👰🏽
+    "\U0001f9d1\U0000200d\U0001f9af",  # 🧑‍🦯
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9af",  # 🧑🏿‍🦯
+    "\U0001f9d1\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 🧑‍🦯‍➡️
+    "\U0001f9d1\U0000200d\U0001f9af\U0000200d\U000027a1",  # 🧑‍🦯‍➡
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 🧑🏿‍🦯‍➡️
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1",  # 🧑🏿‍🦯‍➡
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 🧑🏻‍🦯‍➡️
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1",  # 🧑🏻‍🦯‍➡
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 🧑🏾‍🦯‍➡️
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1",  # 🧑🏾‍🦯‍➡
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 🧑🏼‍🦯‍➡️
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1",  # 🧑🏼‍🦯‍➡
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 🧑🏽‍🦯‍➡️
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1",  # 🧑🏽‍🦯‍➡
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f9af",  # 🧑🏻‍🦯
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f9af",  # 🧑🏾‍🦯
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f9af",  # 🧑🏼‍🦯
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f9af",  # 🧑🏽‍🦯
+    "\U0001f9eb",  # 🧫
+    "\U0001f426\U0000200d\U0001f525",  # 🐦‍🔥
+    "\U000026cf\U0000fe0f",  # ⛏️
+    "\U000026cf",  # ⛏
+    "\U0001f6fb",  # 🛻
+    "\U0001f967",  # 🥧
+    "\U0001f416",  # 🐖
+    "\U0001f437",  # 🐷
+    "\U0001f43d",  # 🐽
+    "\U0001f4a9",  # 💩
+    "\U0001f48a",  # 💊
+    "\U0001f9d1\U0000200d\U00002708\U0000fe0f",  # 🧑‍✈️
+    "\U0001f9d1\U0000200d\U00002708",  # 🧑‍✈
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002708\U0000fe0f",  # 🧑🏿‍✈️
+    "\U0001f9d1\U0001f3ff\U0000200d\U00002708",  # 🧑🏿‍✈
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002708\U0000fe0f",  # 🧑🏻‍✈️
+    "\U0001f9d1\U0001f3fb\U0000200d\U00002708",  # 🧑🏻‍✈
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002708\U0000fe0f",  # 🧑🏾‍✈️
+    "\U0001f9d1\U0001f3fe\U0000200d\U00002708",  # 🧑🏾‍✈
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002708\U0000fe0f",  # 🧑🏼‍✈️
+    "\U0001f9d1\U0001f3fc\U0000200d\U00002708",  # 🧑🏼‍✈
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002708\U0000fe0f",  # 🧑🏽‍✈️
+    "\U0001f9d1\U0001f3fd\U0000200d\U00002708",  # 🧑🏽‍✈
+    "\U0001f90c",  # 🤌
+    "\U0001f90c\U0001f3ff",  # 🤌🏿
+    "\U0001f90c\U0001f3fb",  # 🤌🏻
+    "\U0001f90c\U0001f3fe",  # 🤌🏾
+    "\U0001f90c\U0001f3fc",  # 🤌🏼
+    "\U0001f90c\U0001f3fd",  # 🤌🏽
+    "\U0001f90f",  # 🤏
+    "\U0001f90f\U0001f3ff",  # 🤏🏿
+    "\U0001f90f\U0001f3fb",  # 🤏🏻
+    "\U0001f90f\U0001f3fe",  # 🤏🏾
+    "\U0001f90f\U0001f3fc",  # 🤏🏼
+    "\U0001f90f\U0001f3fd",  # 🤏🏽
+    "\U0001f38d",  # 🎍
+    "\U0001f34d",  # 🍍
+    "\U0001f3d3",  # 🏓
+    "\U0001fa77",  # 🩷
+    "\U0001f3f4\U0000200d\U00002620\U0000fe0f",  # 🏴‍☠️
+    "\U0001f3f4\U0000200d\U00002620",  # 🏴‍☠
+    "\U0001f355",  # 🍕
+    "\U0001fa85",  # 🪅
+    "\U0001faa7",  # 🪧
+    "\U0001f6d0",  # 🛐
+    "\U000025b6\U0000fe0f",  # ▶️
+    "\U000025b6",  # ▶
+    "\U000023ef\U0000fe0f",  # ⏯️
+    "\U000023ef",  # ⏯
+    "\U0001f6dd",  # 🛝
+    "\U0001f97a",  # 🥺
+    "\U0001faa0",  # 🪠
+    "\U00002795",  # ➕
+    "\U0001f43b\U0000200d\U00002744\U0000fe0f",  # 🐻‍❄️
+    "\U0001f43b\U0000200d\U00002744",  # 🐻‍❄
+    "\U0001f693",  # 🚓
+    "\U0001f6a8",  # 🚨
+    "\U0001f46e",  # 👮
+    "\U0001f46e\U0001f3ff",  # 👮🏿
+    "\U0001f46e\U0001f3fb",  # 👮🏻
+    "\U0001f46e\U0001f3fe",  # 👮🏾
+    "\U0001f46e\U0001f3fc",  # 👮🏼
+    "\U0001f46e\U0001f3fd",  # 👮🏽
+    "\U0001f429",  # 🐩
+    "\U0001f3b1",  # 🎱
+    "\U0001f37f",  # 🍿
+    "\U0001f3e4",  # 🏤
+    "\U0001f4ef",  # 📯
+    "\U0001f4ee",  # 📮
+    "\U0001f372",  # 🍲
+    "\U0001f6b0",  # 🚰
+    "\U0001f954",  # 🥔
+    "\U0001fab4",  # 🪴
+    "\U0001f357",  # 🍗
+    "\U0001f4b7",  # 💷
+    "\U0001fad7",  # 🫗
+    "\U0001f63e",  # 😾
+    "\U0001f4ff",  # 📿
+    "\U0001fac3",  # 🫃
+    "\U0001fac3\U0001f3ff",  # 🫃🏿
+    "\U0001fac3\U0001f3fb",  # 🫃🏻
+    "\U0001fac3\U0001f3fe",  # 🫃🏾
+    "\U0001fac3\U0001f3fc",  # 🫃🏼
+    "\U0001fac3\U0001f3fd",  # 🫃🏽
+    "\U0001fac4",  # 🫄
+    "\U0001fac4\U0001f3ff",  # 🫄🏿
+    "\U0001fac4\U0001f3fb",  # 🫄🏻
+    "\U0001fac4\U0001f3fe",  # 🫄🏾
+    "\U0001fac4\U0001f3fc",  # 🫄🏼
+    "\U0001fac4\U0001f3fd",  # 🫄🏽
+    "\U0001f930",  # 🤰
+    "\U0001f930\U0001f3ff",  # 🤰🏿
+    "\U0001f930\U0001f3fb",  # 🤰🏻
+    "\U0001f930\U0001f3fe",  # 🤰🏾
+    "\U0001f930\U0001f3fc",  # 🤰🏼
+    "\U0001f930\U0001f3fd",  # 🤰🏽
+    "\U0001f968",  # 🥨
+    "\U0001f934",  # 🤴
+    "\U0001f934\U0001f3ff",  # 🤴🏿
+    "\U0001f934\U0001f3fb",  # 🤴🏻
+    "\U0001f934\U0001f3fe",  # 🤴🏾
+    "\U0001f934\U0001f3fc",  # 🤴🏼
+    "\U0001f934\U0001f3fd",  # 🤴🏽
+    "\U0001f478",  # 👸
+    "\U0001f478\U0001f3ff",  # 👸🏿
+    "\U0001f478\U0001f3fb",  # 👸🏻
+    "\U0001f478\U0001f3fe",  # 👸🏾
+    "\U0001f478\U0001f3fc",  # 👸🏼
+    "\U0001f478\U0001f3fd",  # 👸🏽
+    "\U0001f5a8\U0000fe0f",  # 🖨️
+    "\U0001f5a8",  # 🖨
+    "\U0001f6ab",  # 🚫
+    "\U0001f7e3",  # 🟣
+    "\U0001f49c",  # 💜
+    "\U0001f7ea",  # 🟪
+    "\U0001f45b",  # 👛
+    "\U0001f4cc",  # 📌
+    "\U0001f9e9",  # 🧩
+    "\U0001f407",  # 🐇
+    "\U0001f430",  # 🐰
+    "\U0001f99d",  # 🦝
+    "\U0001f3ce\U0000fe0f",  # 🏎️
+    "\U0001f3ce",  # 🏎
+    "\U0001f4fb",  # 📻
+    "\U0001f518",  # 🔘
+    "\U00002622\U0000fe0f",  # ☢️
+    "\U00002622",  # ☢
+    "\U0001f683",  # 🚃
+    "\U0001f6e4\U0000fe0f",  # 🛤️
+    "\U0001f6e4",  # 🛤
+    "\U0001f308",  # 🌈
+    "\U0001f3f3\U0000fe0f\U0000200d\U0001f308",  # 🏳️‍🌈
+    "\U0001f3f3\U0000200d\U0001f308",  # 🏳‍🌈
+    "\U0001f91a",  # 🤚
+    "\U0001f91a\U0001f3ff",  # 🤚🏿
+    "\U0001f91a\U0001f3fb",  # 🤚🏻
+    "\U0001f91a\U0001f3fe",  # 🤚🏾
+    "\U0001f91a\U0001f3fc",  # 🤚🏼
+    "\U0001f91a\U0001f3fd",  # 🤚🏽
+    "\U0000270a",  # ✊
+    "\U0000270a\U0001f3ff",  # ✊🏿
+    "\U0000270a\U0001f3fb",  # ✊🏻
+    "\U0000270a\U0001f3fe",  # ✊🏾
+    "\U0000270a\U0001f3fc",  # ✊🏼
+    "\U0000270a\U0001f3fd",  # ✊🏽
+    "\U0000270b",  # ✋
+    "\U0000270b\U0001f3ff",  # ✋🏿
+    "\U0000270b\U0001f3fb",  # ✋🏻
+    "\U0000270b\U0001f3fe",  # ✋🏾
+    "\U0000270b\U0001f3fc",  # ✋🏼
+    "\U0000270b\U0001f3fd",  # ✋🏽
+    "\U0001f64c",  # 🙌
+    "\U0001f64c\U0001f3ff",  # 🙌🏿
+    "\U0001f64c\U0001f3fb",  # 🙌🏻
+    "\U0001f64c\U0001f3fe",  # 🙌🏾
+    "\U0001f64c\U0001f3fc",  # 🙌🏼
+    "\U0001f64c\U0001f3fd",  # 🙌🏽
+    "\U0001f40f",  # 🐏
+    "\U0001f400",  # 🐀
+    "\U0001fa92",  # 🪒
+    "\U0001f9fe",  # 🧾
+    "\U000023fa\U0000fe0f",  # ⏺️
+    "\U000023fa",  # ⏺
+    "\U0000267b\U0000fe0f",  # ♻️
+    "\U0000267b",  # ♻
+    "\U0001f34e",  # 🍎
+    "\U0001f534",  # 🔴
+    "\U0001f9e7",  # 🧧
+    "\U00002757",  # ❗
+    "\U0001f9b0",  # 🦰
+    "\U00002764\U0000fe0f",  # ❤️
+    "\U00002764",  # ❤
+    "\U0001f3ee",  # 🏮
+    "\U00002753",  # ❓
+    "\U0001f7e5",  # 🟥
+    "\U0001f53b",  # 🔻
+    "\U0001f53a",  # 🔺
+    "\U000000ae\U0000fe0f",  # ®️
+    "\U000000ae",  # ®
+    "\U0001f60c",  # 😌
+    "\U0001f397\U0000fe0f",  # 🎗️
+    "\U0001f397",  # 🎗
+    "\U0001f501",  # 🔁
+    "\U0001f502",  # 🔂
+    "\U000026d1\U0000fe0f",  # ⛑️
+    "\U000026d1",  # ⛑
+    "\U0001f6bb",  # 🚻
+    "\U000025c0\U0000fe0f",  # ◀️
+    "\U000025c0",  # ◀
+    "\U0001f49e",  # 💞
+    "\U0001f98f",  # 🦏
+    "\U0001f380",  # 🎀
+    "\U0001f359",  # 🍙
+    "\U0001f358",  # 🍘
+    "\U0001f91c",  # 🤜
+    "\U0001f91c\U0001f3ff",  # 🤜🏿
+    "\U0001f91c\U0001f3fb",  # 🤜🏻
+    "\U0001f91c\U0001f3fe",  # 🤜🏾
+    "\U0001f91c\U0001f3fc",  # 🤜🏼
+    "\U0001f91c\U0001f3fd",  # 🤜🏽
+    "\U0001f5ef\U0000fe0f",  # 🗯️
+    "\U0001f5ef",  # 🗯
+    "\U000027a1\U0000fe0f",  # ➡️
+    "\U000027a1",  # ➡
+    "\U00002935\U0000fe0f",  # ⤵️
+    "\U00002935",  # ⤵
+    "\U000021a9\U0000fe0f",  # ↩️
+    "\U000021a9",  # ↩
+    "\U00002934\U0000fe0f",  # ⤴️
+    "\U00002934",  # ⤴
+    "\U0001faf1",  # 🫱
+    "\U0001faf1\U0001f3ff",  # 🫱🏿
+    "\U0001faf1\U0001f3fb",  # 🫱🏻
+    "\U0001faf1\U0001f3fe",  # 🫱🏾
+    "\U0001faf1\U0001f3fc",  # 🫱🏼
+    "\U0001faf1\U0001f3fd",  # 🫱🏽
+    "\U0001faf8",  # 🫸
+    "\U0001faf8\U0001f3ff",  # 🫸🏿
+    "\U0001faf8\U0001f3fb",  # 🫸🏻
+    "\U0001faf8\U0001f3fe",  # 🫸🏾
+    "\U0001faf8\U0001f3fc",  # 🫸🏼
+    "\U0001faf8\U0001f3fd",  # 🫸🏽
+    "\U0001f48d",  # 💍
+    "\U0001f6df",  # 🛟
+    "\U0001fa90",  # 🪐
+    "\U0001f360",  # 🍠
+    "\U0001f916",  # 🤖
+    "\U0001faa8",  # 🪨
+    "\U0001f680",  # 🚀
+    "\U0001f9fb",  # 🧻
+    "\U0001f5de\U0000fe0f",  # 🗞️
+    "\U0001f5de",  # 🗞
+    "\U0001f3a2",  # 🎢
+    "\U0001f6fc",  # 🛼
+    "\U0001f923",  # 🤣
+    "\U0001f413",  # 🐓
+    "\U0001fadc",  # 🫜
+    "\U0001f339",  # 🌹
+    "\U0001f3f5\U0000fe0f",  # 🏵️
+    "\U0001f3f5",  # 🏵
+    "\U0001f4cd",  # 📍
+    "\U0001f3c9",  # 🏉
+    "\U0001f3bd",  # 🎽
+    "\U0001f45f",  # 👟
+    "\U0001f625",  # 😥
+    "\U0001f9f7",  # 🧷
+    "\U0001f9ba",  # 🦺
+    "\U000026f5",  # ⛵
+    "\U0001f376",  # 🍶
+    "\U0001f9c2",  # 🧂
+    "\U0001fae1",  # 🫡
+    "\U0001f96a",  # 🥪
+    "\U0001f97b",  # 🥻
+    "\U0001f6f0\U0000fe0f",  # 🛰️
+    "\U0001f6f0",  # 🛰
+    "\U0001f4e1",  # 📡
+    "\U0001f995",  # 🦕
+    "\U0001f3b7",  # 🎷
+    "\U0001f9e3",  # 🧣
+    "\U0001f3eb",  # 🏫
+    "\U0001f9d1\U0000200d\U0001f52c",  # 🧑‍🔬
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f52c",  # 🧑🏿‍🔬
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f52c",  # 🧑🏻‍🔬
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f52c",  # 🧑🏾‍🔬
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f52c",  # 🧑🏼‍🔬
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f52c",  # 🧑🏽‍🔬
+    "\U00002702\U0000fe0f",  # ✂️
+    "\U00002702",  # ✂
+    "\U0001f982",  # 🦂
+    "\U0001fa9b",  # 🪛
+    "\U0001f4dc",  # 📜
+    "\U0001f9ad",  # 🦭
+    "\U0001f4ba",  # 💺
+    "\U0001f648",  # 🙈
+    "\U0001f331",  # 🌱
+    "\U0001f933",  # 🤳
+    "\U0001f933\U0001f3ff",  # 🤳🏿
+    "\U0001f933\U0001f3fb",  # 🤳🏻
+    "\U0001f933\U0001f3fe",  # 🤳🏾
+    "\U0001f933\U0001f3fc",  # 🤳🏼
+    "\U0001f933\U0001f3fd",  # 🤳🏽
+    "\U0001f415\U0000200d\U0001f9ba",  # 🐕‍🦺
+    "\U0001f562",  # 🕢
+    "\U0001f556",  # 🕖
+    "\U0001faa1",  # 🪡
+    "\U0001fae8",  # 🫨
+    "\U0001f958",  # 🥘
+    "\U00002618\U0000fe0f",  # ☘️
+    "\U00002618",  # ☘
+    "\U0001f988",  # 🦈
+    "\U0001f367",  # 🍧
+    "\U0001f33e",  # 🌾
+    "\U0001f6e1\U0000fe0f",  # 🛡️
+    "\U0001f6e1",  # 🛡
+    "\U000026e9\U0000fe0f",  # ⛩️
+    "\U000026e9",  # ⛩
+    "\U0001f6a2",  # 🚢
+    "\U0001f320",  # 🌠
+    "\U0001f6cd\U0000fe0f",  # 🛍️
+    "\U0001f6cd",  # 🛍
+    "\U0001f6d2",  # 🛒
+    "\U0001f370",  # 🍰
+    "\U0001fa73",  # 🩳
+    "\U0001fa8f",  # 🪏
+    "\U0001f6bf",  # 🚿
+    "\U0001f990",  # 🦐
+    "\U0001f500",  # 🔀
+    "\U0001f92b",  # 🤫
+    "\U0001f918",  # 🤘
+    "\U0001f918\U0001f3ff",  # 🤘🏿
+    "\U0001f918\U0001f3fb",  # 🤘🏻
+    "\U0001f918\U0001f3fe",  # 🤘🏾
+    "\U0001f918\U0001f3fc",  # 🤘🏼
+    "\U0001f918\U0001f3fd",  # 🤘🏽
+    "\U0001f9d1\U0000200d\U0001f3a4",  # 🧑‍🎤
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f3a4",  # 🧑🏿‍🎤
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f3a4",  # 🧑🏻‍🎤
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f3a4",  # 🧑🏾‍🎤
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f3a4",  # 🧑🏼‍🎤
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f3a4",  # 🧑🏽‍🎤
+    "\U0001f561",  # 🕡
+    "\U0001f555",  # 🕕
+    "\U0001f6f9",  # 🛹
+    "\U000026f7\U0000fe0f",  # ⛷️
+    "\U000026f7",  # ⛷
+    "\U0001f3bf",  # 🎿
+    "\U0001f480",  # 💀
+    "\U00002620\U0000fe0f",  # ☠️
+    "\U00002620",  # ☠
+    "\U0001f9a8",  # 🦨
+    "\U0001f6f7",  # 🛷
+    "\U0001f634",  # 😴
+    "\U0001f62a",  # 😪
+    "\U0001f641",  # 🙁
+    "\U0001f642",  # 🙂
+    "\U0001f3b0",  # 🎰
+    "\U0001f9a5",  # 🦥
+    "\U0001f6e9\U0000fe0f",  # 🛩️
+    "\U0001f6e9",  # 🛩
+    "\U0001f539",  # 🔹
+    "\U0001f538",  # 🔸
+    "\U0001f63b",  # 😻
+    "\U0000263a\U0000fe0f",  # ☺️
+    "\U0000263a",  # ☺
+    "\U0001f607",  # 😇
+    "\U0001f60d",  # 😍
+    "\U0001f970",  # 🥰
+    "\U0001f608",  # 😈
+    "\U0001f917",  # 🤗
+    "\U0001f60a",  # 😊
+    "\U0001f60e",  # 😎
+    "\U0001f972",  # 🥲
+    "\U0001f60f",  # 😏
+    "\U0001f40c",  # 🐌
+    "\U0001f40d",  # 🐍
+    "\U0001f927",  # 🤧
+    "\U0001f3d4\U0000fe0f",  # 🏔️
+    "\U0001f3d4",  # 🏔
+    "\U0001f3c2",  # 🏂
+    "\U0001f3c2\U0001f3ff",  # 🏂🏿
+    "\U0001f3c2\U0001f3fb",  # 🏂🏻
+    "\U0001f3c2\U0001f3fe",  # 🏂🏾
+    "\U0001f3c2\U0001f3fc",  # 🏂🏼
+    "\U0001f3c2\U0001f3fd",  # 🏂🏽
+    "\U00002744\U0000fe0f",  # ❄️
+    "\U00002744",  # ❄
+    "\U00002603\U0000fe0f",  # ☃️
+    "\U00002603",  # ☃
+    "\U000026c4",  # ⛄
+    "\U0001f9fc",  # 🧼
+    "\U000026bd",  # ⚽
+    "\U0001f9e6",  # 🧦
+    "\U0001f366",  # 🍦
+    "\U0001f94e",  # 🥎
+    "\U00002660\U0000fe0f",  # ♠️
+    "\U00002660",  # ♠
+    "\U0001f35d",  # 🍝
+    "\U00002747\U0000fe0f",  # ❇️
+    "\U00002747",  # ❇
+    "\U0001f387",  # 🎇
+    "\U00002728",  # ✨
+    "\U0001f496",  # 💖
+    "\U0001f64a",  # 🙊
+    "\U0001f50a",  # 🔊
+    "\U0001f508",  # 🔈
+    "\U0001f509",  # 🔉
+    "\U0001f5e3\U0000fe0f",  # 🗣️
+    "\U0001f5e3",  # 🗣
+    "\U0001f4ac",  # 💬
+    "\U0001f6a4",  # 🚤
+    "\U0001f577\U0000fe0f",  # 🕷️
+    "\U0001f577",  # 🕷
+    "\U0001f578\U0000fe0f",  # 🕸️
+    "\U0001f578",  # 🕸
+    "\U0001f5d3\U0000fe0f",  # 🗓️
+    "\U0001f5d3",  # 🗓
+    "\U0001f5d2\U0000fe0f",  # 🗒️
+    "\U0001f5d2",  # 🗒
+    "\U0001f41a",  # 🐚
+    "\U0001fadf",  # 🫟
+    "\U0001f9fd",  # 🧽
+    "\U0001f944",  # 🥄
+    "\U0001f699",  # 🚙
+    "\U0001f3c5",  # 🏅
+    "\U0001f433",  # 🐳
+    "\U0001f991",  # 🦑
+    "\U0001f61d",  # 😝
+    "\U0001f3df\U0000fe0f",  # 🏟️
+    "\U0001f3df",  # 🏟
+    "\U00002b50",  # ⭐
+    "\U0001f929",  # 🤩
+    "\U0000262a\U0000fe0f",  # ☪️
+    "\U0000262a",  # ☪
+    "\U00002721\U0000fe0f",  # ✡️
+    "\U00002721",  # ✡
+    "\U0001f689",  # 🚉
+    "\U0001f35c",  # 🍜
+    "\U0001fa7a",  # 🩺
+    "\U000023f9\U0000fe0f",  # ⏹️
+    "\U000023f9",  # ⏹
+    "\U0001f6d1",  # 🛑
+    "\U000023f1\U0000fe0f",  # ⏱️
+    "\U000023f1",  # ⏱
+    "\U0001f4cf",  # 📏
+    "\U0001f353",  # 🍓
+    "\U0001f9d1\U0000200d\U0001f393",  # 🧑‍🎓
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f393",  # 🧑🏿‍🎓
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f393",  # 🧑🏻‍🎓
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f393",  # 🧑🏾‍🎓
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f393",  # 🧑🏼‍🎓
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f393",  # 🧑🏽‍🎓
+    "\U0001f399\U0000fe0f",  # 🎙️
+    "\U0001f399",  # 🎙
+    "\U0001f959",  # 🥙
+    "\U00002600\U0000fe0f",  # ☀️
+    "\U00002600",  # ☀
+    "\U000026c5",  # ⛅
+    "\U0001f325\U0000fe0f",  # 🌥️
+    "\U0001f325",  # 🌥
+    "\U0001f326\U0000fe0f",  # 🌦️
+    "\U0001f326",  # 🌦
+    "\U0001f324\U0000fe0f",  # 🌤️
+    "\U0001f324",  # 🌤
+    "\U0001f31e",  # 🌞
+    "\U0001f33b",  # 🌻
+    "\U0001f576\U0000fe0f",  # 🕶️
+    "\U0001f576",  # 🕶
+    "\U0001f305",  # 🌅
+    "\U0001f304",  # 🌄
+    "\U0001f307",  # 🌇
+    "\U0001f9b8",  # 🦸
+    "\U0001f9b8\U0001f3ff",  # 🦸🏿
+    "\U0001f9b8\U0001f3fb",  # 🦸🏻
+    "\U0001f9b8\U0001f3fe",  # 🦸🏾
+    "\U0001f9b8\U0001f3fc",  # 🦸🏼
+    "\U0001f9b8\U0001f3fd",  # 🦸🏽
+    "\U0001f9b9",  # 🦹
+    "\U0001f9b9\U0001f3ff",  # 🦹🏿
+    "\U0001f9b9\U0001f3fb",  # 🦹🏻
+    "\U0001f9b9\U0001f3fe",  # 🦹🏾
+    "\U0001f9b9\U0001f3fc",  # 🦹🏼
+    "\U0001f9b9\U0001f3fd",  # 🦹🏽
+    "\U0001f363",  # 🍣
+    "\U0001f69f",  # 🚟
+    "\U0001f9a2",  # 🦢
+    "\U0001f4a6",  # 💦
+    "\U0001f54d",  # 🕍
+    "\U0001f489",  # 💉
+    "\U0001f455",  # 👕
+    "\U0001f32e",  # 🌮
+    "\U0001f961",  # 🥡
+    "\U0001fad4",  # 🫔
+    "\U0001f38b",  # 🎋
+    "\U0001f34a",  # 🍊
+    "\U0001f695",  # 🚕
+    "\U0001f9d1\U0000200d\U0001f3eb",  # 🧑‍🏫
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f3eb",  # 🧑🏿‍🏫
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f3eb",  # 🧑🏻‍🏫
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f3eb",  # 🧑🏾‍🏫
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f3eb",  # 🧑🏼‍🏫
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f3eb",  # 🧑🏽‍🏫
+    "\U0001f375",  # 🍵
+    "\U0001fad6",  # 🫖
+    "\U0001f4c6",  # 📆
+    "\U0001f9d1\U0000200d\U0001f4bb",  # 🧑‍💻
+    "\U0001f9d1\U0001f3ff\U0000200d\U0001f4bb",  # 🧑🏿‍💻
+    "\U0001f9d1\U0001f3fb\U0000200d\U0001f4bb",  # 🧑🏻‍💻
+    "\U0001f9d1\U0001f3fe\U0000200d\U0001f4bb",  # 🧑🏾‍💻
+    "\U0001f9d1\U0001f3fc\U0000200d\U0001f4bb",  # 🧑🏼‍💻
+    "\U0001f9d1\U0001f3fd\U0000200d\U0001f4bb",  # 🧑🏽‍💻
+    "\U0001f9f8",  # 🧸
+    "\U0000260e\U0000fe0f",  # ☎️
+    "\U0000260e",  # ☎
+    "\U0001f4de",  # 📞
+    "\U0001f52d",  # 🔭
+    "\U0001f4fa",  # 📺
+    "\U0001f565",  # 🕥
+    "\U0001f559",  # 🕙
+    "\U0001f3be",  # 🎾
+    "\U000026fa",  # ⛺
+    "\U0001f9ea",  # 🧪
+    "\U0001f321\U0000fe0f",  # 🌡️
+    "\U0001f321",  # 🌡
+    "\U0001f914",  # 🤔
+    "\U0001fa74",  # 🩴
+    "\U0001f4ad",  # 💭
+    "\U0001f9f5",  # 🧵
+    "\U0001f55e",  # 🕞
+    "\U0001f552",  # 🕒
+    "\U0001f44e",  # 👎
+    "\U0001f44e\U0001f3ff",  # 👎🏿
+    "\U0001f44e\U0001f3fb",  # 👎🏻
+    "\U0001f44e\U0001f3fe",  # 👎🏾
+    "\U0001f44e\U0001f3fc",  # 👎🏼
+    "\U0001f44e\U0001f3fd",  # 👎🏽
+    "\U0001f44d",  # 👍
+    "\U0001f44d\U0001f3ff",  # 👍🏿
+    "\U0001f44d\U0001f3fb",  # 👍🏻
+    "\U0001f44d\U0001f3fe",  # 👍🏾
+    "\U0001f44d\U0001f3fc",  # 👍🏼
+    "\U0001f44d\U0001f3fd",  # 👍🏽
+    "\U0001f3ab",  # 🎫
+    "\U0001f405",  # 🐅
+    "\U0001f42f",  # 🐯
+    "\U000023f2\U0000fe0f",  # ⏲️
+    "\U000023f2",  # ⏲
+    "\U0001f62b",  # 😫
+    "\U0001f6bd",  # 🚽
+    "\U0001f345",  # 🍅
+    "\U0001f445",  # 👅
+    "\U0001f9f0",  # 🧰
+    "\U0001f9b7",  # 🦷
+    "\U0001faa5",  # 🪥
+    "\U0001f3a9",  # 🎩
+    "\U0001f32a\U0000fe0f",  # 🌪️
+    "\U0001f32a",  # 🌪
+    "\U0001f5b2\U0000fe0f",  # 🖲️
+    "\U0001f5b2",  # 🖲
+    "\U0001f69c",  # 🚜
+    "\U00002122\U0000fe0f",  # ™️
+    "\U00002122",  # ™
+    "\U0001f686",  # 🚆
+    "\U0001f68a",  # 🚊
+    "\U0001f68b",  # 🚋
+    "\U0001f3f3\U0000fe0f\U0000200d\U000026a7\U0000fe0f",  # 🏳️‍⚧️
+    "\U0001f3f3\U0000200d\U000026a7\U0000fe0f",  # 🏳‍⚧️
+    "\U0001f3f3\U0000fe0f\U0000200d\U000026a7",  # 🏳️‍⚧
+    "\U0001f3f3\U0000200d\U000026a7",  # 🏳‍⚧
+    "\U000026a7\U0000fe0f",  # ⚧️
+    "\U000026a7",  # ⚧
+    "\U0001f6a9",  # 🚩
+    "\U0001f4d0",  # 📐
+    "\U0001f531",  # 🔱
+    "\U0001f9cc",  # 🧌
+    "\U0001f68e",  # 🚎
+    "\U0001f3c6",  # 🏆
+    "\U0001f379",  # 🍹
+    "\U0001f420",  # 🐠
+    "\U0001f3ba",  # 🎺
+    "\U0001f337",  # 🌷
+    "\U0001f943",  # 🥃
+    "\U0001f983",  # 🦃
+    "\U0001f422",  # 🐢
+    "\U0001f567",  # 🕧
+    "\U0001f55b",  # 🕛
+    "\U0001f42b",  # 🐫
+    "\U0001f55d",  # 🕝
+    "\U0001f495",  # 💕
+    "\U0001f551",  # 🕑
+    "\U00002602\U0000fe0f",  # ☂️
+    "\U00002602",  # ☂
+    "\U000026f1\U0000fe0f",  # ⛱️
+    "\U000026f1",  # ⛱
+    "\U00002614",  # ☔
+    "\U0001f612",  # 😒
+    "\U0001f984",  # 🦄
+    "\U0001f513",  # 🔓
+    "\U00002195\U0000fe0f",  # ↕️
+    "\U00002195",  # ↕
+    "\U00002196\U0000fe0f",  # ↖️
+    "\U00002196",  # ↖
+    "\U00002197\U0000fe0f",  # ↗️
+    "\U00002197",  # ↗
+    "\U00002b06\U0000fe0f",  # ⬆️
+    "\U00002b06",  # ⬆
+    "\U0001f643",  # 🙃
+    "\U0001f53c",  # 🔼
+    "\U0001f9db",  # 🧛
+    "\U0001f9db\U0001f3ff",  # 🧛🏿
+    "\U0001f9db\U0001f3fb",  # 🧛🏻
+    "\U0001f9db\U0001f3fe",  # 🧛🏾
+    "\U0001f9db\U0001f3fc",  # 🧛🏼
+    "\U0001f9db\U0001f3fd",  # 🧛🏽
+    "\U0001f6a6",  # 🚦
+    "\U0001f4f3",  # 📳
+    "\U0000270c\U0000fe0f",  # ✌️
+    "\U0000270c",  # ✌
+    "\U0000270c\U0001f3ff",  # ✌🏿
+    "\U0000270c\U0001f3fb",  # ✌🏻
+    "\U0000270c\U0001f3fe",  # ✌🏾
+    "\U0000270c\U0001f3fc",  # ✌🏼
+    "\U0000270c\U0001f3fd",  # ✌🏽
+    "\U0001f4f9",  # 📹
+    "\U0001f3ae",  # 🎮
+    "\U0001f4fc",  # 📼
+    "\U0001f3bb",  # 🎻
+    "\U0001f30b",  # 🌋
+    "\U0001f3d0",  # 🏐
+    "\U0001f596",  # 🖖
+    "\U0001f596\U0001f3ff",  # 🖖🏿
+    "\U0001f596\U0001f3fb",  # 🖖🏻
+    "\U0001f596\U0001f3fe",  # 🖖🏾
+    "\U0001f596\U0001f3fc",  # 🖖🏼
+    "\U0001f596\U0001f3fd",  # 🖖🏽
+    "\U0001f9c7",  # 🧇
+    "\U0001f318",  # 🌘
+    "\U0001f316",  # 🌖
+    "\U000026a0\U0000fe0f",  # ⚠️
+    "\U000026a0",  # ⚠
+    "\U0001f5d1\U0000fe0f",  # 🗑️
+    "\U0001f5d1",  # 🗑
+    "\U0000231a",  # ⌚
+    "\U0001f403",  # 🐃
+    "\U0001f6be",  # 🚾
+    "\U0001f52b",  # 🔫
+    "\U0001f30a",  # 🌊
+    "\U0001f349",  # 🍉
+    "\U0001f44b",  # 👋
+    "\U0001f44b\U0001f3ff",  # 👋🏿
+    "\U0001f44b\U0001f3fb",  # 👋🏻
+    "\U0001f44b\U0001f3fe",  # 👋🏾
+    "\U0001f44b\U0001f3fc",  # 👋🏼
+    "\U0001f44b\U0001f3fd",  # 👋🏽
+    "\U00003030\U0000fe0f",  # 〰️
+    "\U00003030",  # 〰
+    "\U0001f312",  # 🌒
+    "\U0001f314",  # 🌔
+    "\U0001f640",  # 🙀
+    "\U0001f629",  # 😩
+    "\U0001f492",  # 💒
+    "\U0001f40b",  # 🐋
+    "\U0001f6de",  # 🛞
+    "\U00002638\U0000fe0f",  # ☸️
+    "\U00002638",  # ☸
+    "\U0000267f",  # ♿
+    "\U0001f9af",  # 🦯
+    "\U000026aa",  # ⚪
+    "\U00002755",  # ❕
+    "\U0001f3f3\U0000fe0f",  # 🏳️
+    "\U0001f3f3",  # 🏳
+    "\U0001f4ae",  # 💮
+    "\U0001f9b3",  # 🦳
+    "\U0001f90d",  # 🤍
+    "\U00002b1c",  # ⬜
+    "\U000025fd",  # ◽
+    "\U000025fb\U0000fe0f",  # ◻️
+    "\U000025fb",  # ◻
+    "\U00002754",  # ❔
+    "\U000025ab\U0000fe0f",  # ▫️
+    "\U000025ab",  # ▫
+    "\U0001f533",  # 🔳
+    "\U0001f940",  # 🥀
+    "\U0001f390",  # 🎐
+    "\U0001f32c\U0000fe0f",  # 🌬️
+    "\U0001f32c",  # 🌬
+    "\U0001fa9f",  # 🪟
+    "\U0001f377",  # 🍷
+    "\U0001fabd",  # 🪽
+    "\U0001f609",  # 😉
+    "\U0001f61c",  # 😜
+    "\U0001f6dc",  # 🛜
+    "\U0001f43a",  # 🐺
+    "\U0001f469",  # 👩
+    "\U0001f46b",  # 👫
+    "\U0001f46b\U0001f3ff",  # 👫🏿
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👩🏿‍🤝‍👨🏻
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👩🏿‍🤝‍👨🏾
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👩🏿‍🤝‍👨🏼
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👩🏿‍🤝‍👨🏽
+    "\U0001f46b\U0001f3fb",  # 👫🏻
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👩🏻‍🤝‍👨🏿
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👩🏻‍🤝‍👨🏾
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👩🏻‍🤝‍👨🏼
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👩🏻‍🤝‍👨🏽
+    "\U0001f46b\U0001f3fe",  # 👫🏾
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👩🏾‍🤝‍👨🏿
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👩🏾‍🤝‍👨🏻
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👩🏾‍🤝‍👨🏼
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👩🏾‍🤝‍👨🏽
+    "\U0001f46b\U0001f3fc",  # 👫🏼
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👩🏼‍🤝‍👨🏿
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👩🏼‍🤝‍👨🏻
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👩🏼‍🤝‍👨🏾
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fd",  # 👩🏼‍🤝‍👨🏽
+    "\U0001f46b\U0001f3fd",  # 👫🏽
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3ff",  # 👩🏽‍🤝‍👨🏿
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fb",  # 👩🏽‍🤝‍👨🏻
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fe",  # 👩🏽‍🤝‍👨🏾
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f468\U0001f3fc",  # 👩🏽‍🤝‍👨🏼
+    "\U0001f469\U0000200d\U0001f3a8",  # 👩‍🎨
+    "\U0001f469\U0001f3ff\U0000200d\U0001f3a8",  # 👩🏿‍🎨
+    "\U0001f469\U0001f3fb\U0000200d\U0001f3a8",  # 👩🏻‍🎨
+    "\U0001f469\U0001f3fe\U0000200d\U0001f3a8",  # 👩🏾‍🎨
+    "\U0001f469\U0001f3fc\U0000200d\U0001f3a8",  # 👩🏼‍🎨
+    "\U0001f469\U0001f3fd\U0000200d\U0001f3a8",  # 👩🏽‍🎨
+    "\U0001f469\U0000200d\U0001f680",  # 👩‍🚀
+    "\U0001f469\U0001f3ff\U0000200d\U0001f680",  # 👩🏿‍🚀
+    "\U0001f469\U0001f3fb\U0000200d\U0001f680",  # 👩🏻‍🚀
+    "\U0001f469\U0001f3fe\U0000200d\U0001f680",  # 👩🏾‍🚀
+    "\U0001f469\U0001f3fc\U0000200d\U0001f680",  # 👩🏼‍🚀
+    "\U0001f469\U0001f3fd\U0000200d\U0001f680",  # 👩🏽‍🚀
+    "\U0001f469\U0000200d\U0001f9b2",  # 👩‍🦲
+    "\U0001f9d4\U0000200d\U00002640\U0000fe0f",  # 🧔‍♀️
+    "\U0001f9d4\U0000200d\U00002640",  # 🧔‍♀
+    "\U0001f6b4\U0000200d\U00002640\U0000fe0f",  # 🚴‍♀️
+    "\U0001f6b4\U0000200d\U00002640",  # 🚴‍♀
+    "\U0001f6b4\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🚴🏿‍♀️
+    "\U0001f6b4\U0001f3ff\U0000200d\U00002640",  # 🚴🏿‍♀
+    "\U0001f6b4\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🚴🏻‍♀️
+    "\U0001f6b4\U0001f3fb\U0000200d\U00002640",  # 🚴🏻‍♀
+    "\U0001f6b4\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🚴🏾‍♀️
+    "\U0001f6b4\U0001f3fe\U0000200d\U00002640",  # 🚴🏾‍♀
+    "\U0001f6b4\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🚴🏼‍♀️
+    "\U0001f6b4\U0001f3fc\U0000200d\U00002640",  # 🚴🏼‍♀
+    "\U0001f6b4\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🚴🏽‍♀️
+    "\U0001f6b4\U0001f3fd\U0000200d\U00002640",  # 🚴🏽‍♀
+    "\U0001f471\U0000200d\U00002640\U0000fe0f",  # 👱‍♀️
+    "\U0001f471\U0000200d\U00002640",  # 👱‍♀
+    "\U000026f9\U0000fe0f\U0000200d\U00002640\U0000fe0f",  # ⛹️‍♀️
+    "\U000026f9\U0000200d\U00002640\U0000fe0f",  # ⛹‍♀️
+    "\U000026f9\U0000fe0f\U0000200d\U00002640",  # ⛹️‍♀
+    "\U000026f9\U0000200d\U00002640",  # ⛹‍♀
+    "\U000026f9\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # ⛹🏿‍♀️
+    "\U000026f9\U0001f3ff\U0000200d\U00002640",  # ⛹🏿‍♀
+    "\U000026f9\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # ⛹🏻‍♀️
+    "\U000026f9\U0001f3fb\U0000200d\U00002640",  # ⛹🏻‍♀
+    "\U000026f9\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # ⛹🏾‍♀️
+    "\U000026f9\U0001f3fe\U0000200d\U00002640",  # ⛹🏾‍♀
+    "\U000026f9\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # ⛹🏼‍♀️
+    "\U000026f9\U0001f3fc\U0000200d\U00002640",  # ⛹🏼‍♀
+    "\U000026f9\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # ⛹🏽‍♀️
+    "\U000026f9\U0001f3fd\U0000200d\U00002640",  # ⛹🏽‍♀
+    "\U0001f647\U0000200d\U00002640\U0000fe0f",  # 🙇‍♀️
+    "\U0001f647\U0000200d\U00002640",  # 🙇‍♀
+    "\U0001f647\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🙇🏿‍♀️
+    "\U0001f647\U0001f3ff\U0000200d\U00002640",  # 🙇🏿‍♀
+    "\U0001f647\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🙇🏻‍♀️
+    "\U0001f647\U0001f3fb\U0000200d\U00002640",  # 🙇🏻‍♀
+    "\U0001f647\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🙇🏾‍♀️
+    "\U0001f647\U0001f3fe\U0000200d\U00002640",  # 🙇🏾‍♀
+    "\U0001f647\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🙇🏼‍♀️
+    "\U0001f647\U0001f3fc\U0000200d\U00002640",  # 🙇🏼‍♀
+    "\U0001f647\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🙇🏽‍♀️
+    "\U0001f647\U0001f3fd\U0000200d\U00002640",  # 🙇🏽‍♀
+    "\U0001f938\U0000200d\U00002640\U0000fe0f",  # 🤸‍♀️
+    "\U0001f938\U0000200d\U00002640",  # 🤸‍♀
+    "\U0001f938\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤸🏿‍♀️
+    "\U0001f938\U0001f3ff\U0000200d\U00002640",  # 🤸🏿‍♀
+    "\U0001f938\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤸🏻‍♀️
+    "\U0001f938\U0001f3fb\U0000200d\U00002640",  # 🤸🏻‍♀
+    "\U0001f938\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤸🏾‍♀️
+    "\U0001f938\U0001f3fe\U0000200d\U00002640",  # 🤸🏾‍♀
+    "\U0001f938\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤸🏼‍♀️
+    "\U0001f938\U0001f3fc\U0000200d\U00002640",  # 🤸🏼‍♀
+    "\U0001f938\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤸🏽‍♀️
+    "\U0001f938\U0001f3fd\U0000200d\U00002640",  # 🤸🏽‍♀
+    "\U0001f9d7\U0000200d\U00002640\U0000fe0f",  # 🧗‍♀️
+    "\U0001f9d7\U0000200d\U00002640",  # 🧗‍♀
+    "\U0001f9d7\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧗🏿‍♀️
+    "\U0001f9d7\U0001f3ff\U0000200d\U00002640",  # 🧗🏿‍♀
+    "\U0001f9d7\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧗🏻‍♀️
+    "\U0001f9d7\U0001f3fb\U0000200d\U00002640",  # 🧗🏻‍♀
+    "\U0001f9d7\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧗🏾‍♀️
+    "\U0001f9d7\U0001f3fe\U0000200d\U00002640",  # 🧗🏾‍♀
+    "\U0001f9d7\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧗🏼‍♀️
+    "\U0001f9d7\U0001f3fc\U0000200d\U00002640",  # 🧗🏼‍♀
+    "\U0001f9d7\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧗🏽‍♀️
+    "\U0001f9d7\U0001f3fd\U0000200d\U00002640",  # 🧗🏽‍♀
+    "\U0001f477\U0000200d\U00002640\U0000fe0f",  # 👷‍♀️
+    "\U0001f477\U0000200d\U00002640",  # 👷‍♀
+    "\U0001f477\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 👷🏿‍♀️
+    "\U0001f477\U0001f3ff\U0000200d\U00002640",  # 👷🏿‍♀
+    "\U0001f477\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 👷🏻‍♀️
+    "\U0001f477\U0001f3fb\U0000200d\U00002640",  # 👷🏻‍♀
+    "\U0001f477\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 👷🏾‍♀️
+    "\U0001f477\U0001f3fe\U0000200d\U00002640",  # 👷🏾‍♀
+    "\U0001f477\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 👷🏼‍♀️
+    "\U0001f477\U0001f3fc\U0000200d\U00002640",  # 👷🏼‍♀
+    "\U0001f477\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 👷🏽‍♀️
+    "\U0001f477\U0001f3fd\U0000200d\U00002640",  # 👷🏽‍♀
+    "\U0001f469\U0000200d\U0001f373",  # 👩‍🍳
+    "\U0001f469\U0001f3ff\U0000200d\U0001f373",  # 👩🏿‍🍳
+    "\U0001f469\U0001f3fb\U0000200d\U0001f373",  # 👩🏻‍🍳
+    "\U0001f469\U0001f3fe\U0000200d\U0001f373",  # 👩🏾‍🍳
+    "\U0001f469\U0001f3fc\U0000200d\U0001f373",  # 👩🏼‍🍳
+    "\U0001f469\U0001f3fd\U0000200d\U0001f373",  # 👩🏽‍🍳
+    "\U0001f469\U0000200d\U0001f9b1",  # 👩‍🦱
+    "\U0001f483",  # 💃
+    "\U0001f483\U0001f3ff",  # 💃🏿
+    "\U0001f483\U0001f3fb",  # 💃🏻
+    "\U0001f483\U0001f3fe",  # 💃🏾
+    "\U0001f483\U0001f3fc",  # 💃🏼
+    "\U0001f483\U0001f3fd",  # 💃🏽
+    "\U0001f469\U0001f3ff",  # 👩🏿
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9b2",  # 👩🏿‍🦲
+    "\U0001f9d4\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧔🏿‍♀️
+    "\U0001f9d4\U0001f3ff\U0000200d\U00002640",  # 🧔🏿‍♀
+    "\U0001f471\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 👱🏿‍♀️
+    "\U0001f471\U0001f3ff\U0000200d\U00002640",  # 👱🏿‍♀
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9b1",  # 👩🏿‍🦱
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9b0",  # 👩🏿‍🦰
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9b3",  # 👩🏿‍🦳
+    "\U0001f575\U0000fe0f\U0000200d\U00002640\U0000fe0f",  # 🕵️‍♀️
+    "\U0001f575\U0000200d\U00002640\U0000fe0f",  # 🕵‍♀️
+    "\U0001f575\U0000fe0f\U0000200d\U00002640",  # 🕵️‍♀
+    "\U0001f575\U0000200d\U00002640",  # 🕵‍♀
+    "\U0001f575\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🕵🏿‍♀️
+    "\U0001f575\U0001f3ff\U0000200d\U00002640",  # 🕵🏿‍♀
+    "\U0001f575\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🕵🏻‍♀️
+    "\U0001f575\U0001f3fb\U0000200d\U00002640",  # 🕵🏻‍♀
+    "\U0001f575\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🕵🏾‍♀️
+    "\U0001f575\U0001f3fe\U0000200d\U00002640",  # 🕵🏾‍♀
+    "\U0001f575\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🕵🏼‍♀️
+    "\U0001f575\U0001f3fc\U0000200d\U00002640",  # 🕵🏼‍♀
+    "\U0001f575\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🕵🏽‍♀️
+    "\U0001f575\U0001f3fd\U0000200d\U00002640",  # 🕵🏽‍♀
+    "\U0001f9dd\U0000200d\U00002640\U0000fe0f",  # 🧝‍♀️
+    "\U0001f9dd\U0000200d\U00002640",  # 🧝‍♀
+    "\U0001f9dd\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧝🏿‍♀️
+    "\U0001f9dd\U0001f3ff\U0000200d\U00002640",  # 🧝🏿‍♀
+    "\U0001f9dd\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧝🏻‍♀️
+    "\U0001f9dd\U0001f3fb\U0000200d\U00002640",  # 🧝🏻‍♀
+    "\U0001f9dd\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧝🏾‍♀️
+    "\U0001f9dd\U0001f3fe\U0000200d\U00002640",  # 🧝🏾‍♀
+    "\U0001f9dd\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧝🏼‍♀️
+    "\U0001f9dd\U0001f3fc\U0000200d\U00002640",  # 🧝🏼‍♀
+    "\U0001f9dd\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧝🏽‍♀️
+    "\U0001f9dd\U0001f3fd\U0000200d\U00002640",  # 🧝🏽‍♀
+    "\U0001f926\U0000200d\U00002640\U0000fe0f",  # 🤦‍♀️
+    "\U0001f926\U0000200d\U00002640",  # 🤦‍♀
+    "\U0001f926\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤦🏿‍♀️
+    "\U0001f926\U0001f3ff\U0000200d\U00002640",  # 🤦🏿‍♀
+    "\U0001f926\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤦🏻‍♀️
+    "\U0001f926\U0001f3fb\U0000200d\U00002640",  # 🤦🏻‍♀
+    "\U0001f926\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤦🏾‍♀️
+    "\U0001f926\U0001f3fe\U0000200d\U00002640",  # 🤦🏾‍♀
+    "\U0001f926\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤦🏼‍♀️
+    "\U0001f926\U0001f3fc\U0000200d\U00002640",  # 🤦🏼‍♀
+    "\U0001f926\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤦🏽‍♀️
+    "\U0001f926\U0001f3fd\U0000200d\U00002640",  # 🤦🏽‍♀
+    "\U0001f469\U0000200d\U0001f3ed",  # 👩‍🏭
+    "\U0001f469\U0001f3ff\U0000200d\U0001f3ed",  # 👩🏿‍🏭
+    "\U0001f469\U0001f3fb\U0000200d\U0001f3ed",  # 👩🏻‍🏭
+    "\U0001f469\U0001f3fe\U0000200d\U0001f3ed",  # 👩🏾‍🏭
+    "\U0001f469\U0001f3fc\U0000200d\U0001f3ed",  # 👩🏼‍🏭
+    "\U0001f469\U0001f3fd\U0000200d\U0001f3ed",  # 👩🏽‍🏭
+    "\U0001f9da\U0000200d\U00002640\U0000fe0f",  # 🧚‍♀️
+    "\U0001f9da\U0000200d\U00002640",  # 🧚‍♀
+    "\U0001f9da\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧚🏿‍♀️
+    "\U0001f9da\U0001f3ff\U0000200d\U00002640",  # 🧚🏿‍♀
+    "\U0001f9da\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧚🏻‍♀️
+    "\U0001f9da\U0001f3fb\U0000200d\U00002640",  # 🧚🏻‍♀
+    "\U0001f9da\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧚🏾‍♀️
+    "\U0001f9da\U0001f3fe\U0000200d\U00002640",  # 🧚🏾‍♀
+    "\U0001f9da\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧚🏼‍♀️
+    "\U0001f9da\U0001f3fc\U0000200d\U00002640",  # 🧚🏼‍♀
+    "\U0001f9da\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧚🏽‍♀️
+    "\U0001f9da\U0001f3fd\U0000200d\U00002640",  # 🧚🏽‍♀
+    "\U0001f469\U0000200d\U0001f33e",  # 👩‍🌾
+    "\U0001f469\U0001f3ff\U0000200d\U0001f33e",  # 👩🏿‍🌾
+    "\U0001f469\U0001f3fb\U0000200d\U0001f33e",  # 👩🏻‍🌾
+    "\U0001f469\U0001f3fe\U0000200d\U0001f33e",  # 👩🏾‍🌾
+    "\U0001f469\U0001f3fc\U0000200d\U0001f33e",  # 👩🏼‍🌾
+    "\U0001f469\U0001f3fd\U0000200d\U0001f33e",  # 👩🏽‍🌾
+    "\U0001f469\U0000200d\U0001f37c",  # 👩‍🍼
+    "\U0001f469\U0001f3ff\U0000200d\U0001f37c",  # 👩🏿‍🍼
+    "\U0001f469\U0001f3fb\U0000200d\U0001f37c",  # 👩🏻‍🍼
+    "\U0001f469\U0001f3fe\U0000200d\U0001f37c",  # 👩🏾‍🍼
+    "\U0001f469\U0001f3fc\U0000200d\U0001f37c",  # 👩🏼‍🍼
+    "\U0001f469\U0001f3fd\U0000200d\U0001f37c",  # 👩🏽‍🍼
+    "\U0001f469\U0000200d\U0001f692",  # 👩‍🚒
+    "\U0001f469\U0001f3ff\U0000200d\U0001f692",  # 👩🏿‍🚒
+    "\U0001f469\U0001f3fb\U0000200d\U0001f692",  # 👩🏻‍🚒
+    "\U0001f469\U0001f3fe\U0000200d\U0001f692",  # 👩🏾‍🚒
+    "\U0001f469\U0001f3fc\U0000200d\U0001f692",  # 👩🏼‍🚒
+    "\U0001f469\U0001f3fd\U0000200d\U0001f692",  # 👩🏽‍🚒
+    "\U0001f64d\U0000200d\U00002640\U0000fe0f",  # 🙍‍♀️
+    "\U0001f64d\U0000200d\U00002640",  # 🙍‍♀
+    "\U0001f64d\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🙍🏿‍♀️
+    "\U0001f64d\U0001f3ff\U0000200d\U00002640",  # 🙍🏿‍♀
+    "\U0001f64d\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🙍🏻‍♀️
+    "\U0001f64d\U0001f3fb\U0000200d\U00002640",  # 🙍🏻‍♀
+    "\U0001f64d\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🙍🏾‍♀️
+    "\U0001f64d\U0001f3fe\U0000200d\U00002640",  # 🙍🏾‍♀
+    "\U0001f64d\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🙍🏼‍♀️
+    "\U0001f64d\U0001f3fc\U0000200d\U00002640",  # 🙍🏼‍♀
+    "\U0001f64d\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🙍🏽‍♀️
+    "\U0001f64d\U0001f3fd\U0000200d\U00002640",  # 🙍🏽‍♀
+    "\U0001f9de\U0000200d\U00002640\U0000fe0f",  # 🧞‍♀️
+    "\U0001f9de\U0000200d\U00002640",  # 🧞‍♀
+    "\U0001f645\U0000200d\U00002640\U0000fe0f",  # 🙅‍♀️
+    "\U0001f645\U0000200d\U00002640",  # 🙅‍♀
+    "\U0001f645\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🙅🏿‍♀️
+    "\U0001f645\U0001f3ff\U0000200d\U00002640",  # 🙅🏿‍♀
+    "\U0001f645\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🙅🏻‍♀️
+    "\U0001f645\U0001f3fb\U0000200d\U00002640",  # 🙅🏻‍♀
+    "\U0001f645\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🙅🏾‍♀️
+    "\U0001f645\U0001f3fe\U0000200d\U00002640",  # 🙅🏾‍♀
+    "\U0001f645\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🙅🏼‍♀️
+    "\U0001f645\U0001f3fc\U0000200d\U00002640",  # 🙅🏼‍♀
+    "\U0001f645\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🙅🏽‍♀️
+    "\U0001f645\U0001f3fd\U0000200d\U00002640",  # 🙅🏽‍♀
+    "\U0001f646\U0000200d\U00002640\U0000fe0f",  # 🙆‍♀️
+    "\U0001f646\U0000200d\U00002640",  # 🙆‍♀
+    "\U0001f646\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🙆🏿‍♀️
+    "\U0001f646\U0001f3ff\U0000200d\U00002640",  # 🙆🏿‍♀
+    "\U0001f646\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🙆🏻‍♀️
+    "\U0001f646\U0001f3fb\U0000200d\U00002640",  # 🙆🏻‍♀
+    "\U0001f646\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🙆🏾‍♀️
+    "\U0001f646\U0001f3fe\U0000200d\U00002640",  # 🙆🏾‍♀
+    "\U0001f646\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🙆🏼‍♀️
+    "\U0001f646\U0001f3fc\U0000200d\U00002640",  # 🙆🏼‍♀
+    "\U0001f646\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🙆🏽‍♀️
+    "\U0001f646\U0001f3fd\U0000200d\U00002640",  # 🙆🏽‍♀
+    "\U0001f487\U0000200d\U00002640\U0000fe0f",  # 💇‍♀️
+    "\U0001f487\U0000200d\U00002640",  # 💇‍♀
+    "\U0001f487\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 💇🏿‍♀️
+    "\U0001f487\U0001f3ff\U0000200d\U00002640",  # 💇🏿‍♀
+    "\U0001f487\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 💇🏻‍♀️
+    "\U0001f487\U0001f3fb\U0000200d\U00002640",  # 💇🏻‍♀
+    "\U0001f487\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 💇🏾‍♀️
+    "\U0001f487\U0001f3fe\U0000200d\U00002640",  # 💇🏾‍♀
+    "\U0001f487\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 💇🏼‍♀️
+    "\U0001f487\U0001f3fc\U0000200d\U00002640",  # 💇🏼‍♀
+    "\U0001f487\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 💇🏽‍♀️
+    "\U0001f487\U0001f3fd\U0000200d\U00002640",  # 💇🏽‍♀
+    "\U0001f486\U0000200d\U00002640\U0000fe0f",  # 💆‍♀️
+    "\U0001f486\U0000200d\U00002640",  # 💆‍♀
+    "\U0001f486\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 💆🏿‍♀️
+    "\U0001f486\U0001f3ff\U0000200d\U00002640",  # 💆🏿‍♀
+    "\U0001f486\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 💆🏻‍♀️
+    "\U0001f486\U0001f3fb\U0000200d\U00002640",  # 💆🏻‍♀
+    "\U0001f486\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 💆🏾‍♀️
+    "\U0001f486\U0001f3fe\U0000200d\U00002640",  # 💆🏾‍♀
+    "\U0001f486\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 💆🏼‍♀️
+    "\U0001f486\U0001f3fc\U0000200d\U00002640",  # 💆🏼‍♀
+    "\U0001f486\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 💆🏽‍♀️
+    "\U0001f486\U0001f3fd\U0000200d\U00002640",  # 💆🏽‍♀
+    "\U0001f3cc\U0000fe0f\U0000200d\U00002640\U0000fe0f",  # 🏌️‍♀️
+    "\U0001f3cc\U0000200d\U00002640\U0000fe0f",  # 🏌‍♀️
+    "\U0001f3cc\U0000fe0f\U0000200d\U00002640",  # 🏌️‍♀
+    "\U0001f3cc\U0000200d\U00002640",  # 🏌‍♀
+    "\U0001f3cc\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🏌🏿‍♀️
+    "\U0001f3cc\U0001f3ff\U0000200d\U00002640",  # 🏌🏿‍♀
+    "\U0001f3cc\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🏌🏻‍♀️
+    "\U0001f3cc\U0001f3fb\U0000200d\U00002640",  # 🏌🏻‍♀
+    "\U0001f3cc\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🏌🏾‍♀️
+    "\U0001f3cc\U0001f3fe\U0000200d\U00002640",  # 🏌🏾‍♀
+    "\U0001f3cc\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🏌🏼‍♀️
+    "\U0001f3cc\U0001f3fc\U0000200d\U00002640",  # 🏌🏼‍♀
+    "\U0001f3cc\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🏌🏽‍♀️
+    "\U0001f3cc\U0001f3fd\U0000200d\U00002640",  # 🏌🏽‍♀
+    "\U0001f482\U0000200d\U00002640\U0000fe0f",  # 💂‍♀️
+    "\U0001f482\U0000200d\U00002640",  # 💂‍♀
+    "\U0001f482\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 💂🏿‍♀️
+    "\U0001f482\U0001f3ff\U0000200d\U00002640",  # 💂🏿‍♀
+    "\U0001f482\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 💂🏻‍♀️
+    "\U0001f482\U0001f3fb\U0000200d\U00002640",  # 💂🏻‍♀
+    "\U0001f482\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 💂🏾‍♀️
+    "\U0001f482\U0001f3fe\U0000200d\U00002640",  # 💂🏾‍♀
+    "\U0001f482\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 💂🏼‍♀️
+    "\U0001f482\U0001f3fc\U0000200d\U00002640",  # 💂🏼‍♀
+    "\U0001f482\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 💂🏽‍♀️
+    "\U0001f482\U0001f3fd\U0000200d\U00002640",  # 💂🏽‍♀
+    "\U0001f469\U0000200d\U00002695\U0000fe0f",  # 👩‍⚕️
+    "\U0001f469\U0000200d\U00002695",  # 👩‍⚕
+    "\U0001f469\U0001f3ff\U0000200d\U00002695\U0000fe0f",  # 👩🏿‍⚕️
+    "\U0001f469\U0001f3ff\U0000200d\U00002695",  # 👩🏿‍⚕
+    "\U0001f469\U0001f3fb\U0000200d\U00002695\U0000fe0f",  # 👩🏻‍⚕️
+    "\U0001f469\U0001f3fb\U0000200d\U00002695",  # 👩🏻‍⚕
+    "\U0001f469\U0001f3fe\U0000200d\U00002695\U0000fe0f",  # 👩🏾‍⚕️
+    "\U0001f469\U0001f3fe\U0000200d\U00002695",  # 👩🏾‍⚕
+    "\U0001f469\U0001f3fc\U0000200d\U00002695\U0000fe0f",  # 👩🏼‍⚕️
+    "\U0001f469\U0001f3fc\U0000200d\U00002695",  # 👩🏼‍⚕
+    "\U0001f469\U0001f3fd\U0000200d\U00002695\U0000fe0f",  # 👩🏽‍⚕️
+    "\U0001f469\U0001f3fd\U0000200d\U00002695",  # 👩🏽‍⚕
+    "\U0001f9d8\U0000200d\U00002640\U0000fe0f",  # 🧘‍♀️
+    "\U0001f9d8\U0000200d\U00002640",  # 🧘‍♀
+    "\U0001f9d8\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧘🏿‍♀️
+    "\U0001f9d8\U0001f3ff\U0000200d\U00002640",  # 🧘🏿‍♀
+    "\U0001f9d8\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧘🏻‍♀️
+    "\U0001f9d8\U0001f3fb\U0000200d\U00002640",  # 🧘🏻‍♀
+    "\U0001f9d8\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧘🏾‍♀️
+    "\U0001f9d8\U0001f3fe\U0000200d\U00002640",  # 🧘🏾‍♀
+    "\U0001f9d8\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧘🏼‍♀️
+    "\U0001f9d8\U0001f3fc\U0000200d\U00002640",  # 🧘🏼‍♀
+    "\U0001f9d8\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧘🏽‍♀️
+    "\U0001f9d8\U0001f3fd\U0000200d\U00002640",  # 🧘🏽‍♀
+    "\U0001f469\U0000200d\U0001f9bd",  # 👩‍🦽
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9bd",  # 👩🏿‍🦽
+    "\U0001f469\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👩‍🦽‍➡️
+    "\U0001f469\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👩‍🦽‍➡
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👩🏿‍🦽‍➡️
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👩🏿‍🦽‍➡
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👩🏻‍🦽‍➡️
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👩🏻‍🦽‍➡
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👩🏾‍🦽‍➡️
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👩🏾‍🦽‍➡
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👩🏼‍🦽‍➡️
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👩🏼‍🦽‍➡
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1\U0000fe0f",  # 👩🏽‍🦽‍➡️
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9bd\U0000200d\U000027a1",  # 👩🏽‍🦽‍➡
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9bd",  # 👩🏻‍🦽
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9bd",  # 👩🏾‍🦽
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9bd",  # 👩🏼‍🦽
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9bd",  # 👩🏽‍🦽
+    "\U0001f469\U0000200d\U0001f9bc",  # 👩‍🦼
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9bc",  # 👩🏿‍🦼
+    "\U0001f469\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👩‍🦼‍➡️
+    "\U0001f469\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👩‍🦼‍➡
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👩🏿‍🦼‍➡️
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👩🏿‍🦼‍➡
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👩🏻‍🦼‍➡️
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👩🏻‍🦼‍➡
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👩🏾‍🦼‍➡️
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👩🏾‍🦼‍➡
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👩🏼‍🦼‍➡️
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👩🏼‍🦼‍➡
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1\U0000fe0f",  # 👩🏽‍🦼‍➡️
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9bc\U0000200d\U000027a1",  # 👩🏽‍🦼‍➡
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9bc",  # 👩🏻‍🦼
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9bc",  # 👩🏾‍🦼
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9bc",  # 👩🏼‍🦼
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9bc",  # 👩🏽‍🦼
+    "\U0001f9d6\U0000200d\U00002640\U0000fe0f",  # 🧖‍♀️
+    "\U0001f9d6\U0000200d\U00002640",  # 🧖‍♀
+    "\U0001f9d6\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧖🏿‍♀️
+    "\U0001f9d6\U0001f3ff\U0000200d\U00002640",  # 🧖🏿‍♀
+    "\U0001f9d6\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧖🏻‍♀️
+    "\U0001f9d6\U0001f3fb\U0000200d\U00002640",  # 🧖🏻‍♀
+    "\U0001f9d6\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧖🏾‍♀️
+    "\U0001f9d6\U0001f3fe\U0000200d\U00002640",  # 🧖🏾‍♀
+    "\U0001f9d6\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧖🏼‍♀️
+    "\U0001f9d6\U0001f3fc\U0000200d\U00002640",  # 🧖🏼‍♀
+    "\U0001f9d6\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧖🏽‍♀️
+    "\U0001f9d6\U0001f3fd\U0000200d\U00002640",  # 🧖🏽‍♀
+    "\U0001f935\U0000200d\U00002640\U0000fe0f",  # 🤵‍♀️
+    "\U0001f935\U0000200d\U00002640",  # 🤵‍♀
+    "\U0001f935\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤵🏿‍♀️
+    "\U0001f935\U0001f3ff\U0000200d\U00002640",  # 🤵🏿‍♀
+    "\U0001f935\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤵🏻‍♀️
+    "\U0001f935\U0001f3fb\U0000200d\U00002640",  # 🤵🏻‍♀
+    "\U0001f935\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤵🏾‍♀️
+    "\U0001f935\U0001f3fe\U0000200d\U00002640",  # 🤵🏾‍♀
+    "\U0001f935\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤵🏼‍♀️
+    "\U0001f935\U0001f3fc\U0000200d\U00002640",  # 🤵🏼‍♀
+    "\U0001f935\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤵🏽‍♀️
+    "\U0001f935\U0001f3fd\U0000200d\U00002640",  # 🤵🏽‍♀
+    "\U0001f469\U0000200d\U00002696\U0000fe0f",  # 👩‍⚖️
+    "\U0001f469\U0000200d\U00002696",  # 👩‍⚖
+    "\U0001f469\U0001f3ff\U0000200d\U00002696\U0000fe0f",  # 👩🏿‍⚖️
+    "\U0001f469\U0001f3ff\U0000200d\U00002696",  # 👩🏿‍⚖
+    "\U0001f469\U0001f3fb\U0000200d\U00002696\U0000fe0f",  # 👩🏻‍⚖️
+    "\U0001f469\U0001f3fb\U0000200d\U00002696",  # 👩🏻‍⚖
+    "\U0001f469\U0001f3fe\U0000200d\U00002696\U0000fe0f",  # 👩🏾‍⚖️
+    "\U0001f469\U0001f3fe\U0000200d\U00002696",  # 👩🏾‍⚖
+    "\U0001f469\U0001f3fc\U0000200d\U00002696\U0000fe0f",  # 👩🏼‍⚖️
+    "\U0001f469\U0001f3fc\U0000200d\U00002696",  # 👩🏼‍⚖
+    "\U0001f469\U0001f3fd\U0000200d\U00002696\U0000fe0f",  # 👩🏽‍⚖️
+    "\U0001f469\U0001f3fd\U0000200d\U00002696",  # 👩🏽‍⚖
+    "\U0001f939\U0000200d\U00002640\U0000fe0f",  # 🤹‍♀️
+    "\U0001f939\U0000200d\U00002640",  # 🤹‍♀
+    "\U0001f939\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤹🏿‍♀️
+    "\U0001f939\U0001f3ff\U0000200d\U00002640",  # 🤹🏿‍♀
+    "\U0001f939\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤹🏻‍♀️
+    "\U0001f939\U0001f3fb\U0000200d\U00002640",  # 🤹🏻‍♀
+    "\U0001f939\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤹🏾‍♀️
+    "\U0001f939\U0001f3fe\U0000200d\U00002640",  # 🤹🏾‍♀
+    "\U0001f939\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤹🏼‍♀️
+    "\U0001f939\U0001f3fc\U0000200d\U00002640",  # 🤹🏼‍♀
+    "\U0001f939\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤹🏽‍♀️
+    "\U0001f939\U0001f3fd\U0000200d\U00002640",  # 🤹🏽‍♀
+    "\U0001f9ce\U0000200d\U00002640\U0000fe0f",  # 🧎‍♀️
+    "\U0001f9ce\U0000200d\U00002640",  # 🧎‍♀
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧎🏿‍♀️
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002640",  # 🧎🏿‍♀
+    "\U0001f9ce\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎‍♀️‍➡️
+    "\U0001f9ce\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🧎‍♀‍➡️
+    "\U0001f9ce\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🧎‍♀️‍➡
+    "\U0001f9ce\U0000200d\U00002640\U0000200d\U000027a1",  # 🧎‍♀‍➡
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏿‍♀️‍➡️
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🧎🏿‍♀‍➡️
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🧎🏿‍♀️‍➡
+    "\U0001f9ce\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1",  # 🧎🏿‍♀‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏻‍♀️‍➡️
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🧎🏻‍♀‍➡️
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🧎🏻‍♀️‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1",  # 🧎🏻‍♀‍➡
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏾‍♀️‍➡️
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🧎🏾‍♀‍➡️
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🧎🏾‍♀️‍➡
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1",  # 🧎🏾‍♀‍➡
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏼‍♀️‍➡️
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🧎🏼‍♀‍➡️
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🧎🏼‍♀️‍➡
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1",  # 🧎🏼‍♀‍➡
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🧎🏽‍♀️‍➡️
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🧎🏽‍♀‍➡️
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🧎🏽‍♀️‍➡
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1",  # 🧎🏽‍♀‍➡
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧎🏻‍♀️
+    "\U0001f9ce\U0001f3fb\U0000200d\U00002640",  # 🧎🏻‍♀
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧎🏾‍♀️
+    "\U0001f9ce\U0001f3fe\U0000200d\U00002640",  # 🧎🏾‍♀
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧎🏼‍♀️
+    "\U0001f9ce\U0001f3fc\U0000200d\U00002640",  # 🧎🏼‍♀
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧎🏽‍♀️
+    "\U0001f9ce\U0001f3fd\U0000200d\U00002640",  # 🧎🏽‍♀
+    "\U0001f3cb\U0000fe0f\U0000200d\U00002640\U0000fe0f",  # 🏋️‍♀️
+    "\U0001f3cb\U0000200d\U00002640\U0000fe0f",  # 🏋‍♀️
+    "\U0001f3cb\U0000fe0f\U0000200d\U00002640",  # 🏋️‍♀
+    "\U0001f3cb\U0000200d\U00002640",  # 🏋‍♀
+    "\U0001f3cb\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🏋🏿‍♀️
+    "\U0001f3cb\U0001f3ff\U0000200d\U00002640",  # 🏋🏿‍♀
+    "\U0001f3cb\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🏋🏻‍♀️
+    "\U0001f3cb\U0001f3fb\U0000200d\U00002640",  # 🏋🏻‍♀
+    "\U0001f3cb\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🏋🏾‍♀️
+    "\U0001f3cb\U0001f3fe\U0000200d\U00002640",  # 🏋🏾‍♀
+    "\U0001f3cb\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🏋🏼‍♀️
+    "\U0001f3cb\U0001f3fc\U0000200d\U00002640",  # 🏋🏼‍♀
+    "\U0001f3cb\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🏋🏽‍♀️
+    "\U0001f3cb\U0001f3fd\U0000200d\U00002640",  # 🏋🏽‍♀
+    "\U0001f469\U0001f3fb",  # 👩🏻
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9b2",  # 👩🏻‍🦲
+    "\U0001f9d4\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧔🏻‍♀️
+    "\U0001f9d4\U0001f3fb\U0000200d\U00002640",  # 🧔🏻‍♀
+    "\U0001f471\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 👱🏻‍♀️
+    "\U0001f471\U0001f3fb\U0000200d\U00002640",  # 👱🏻‍♀
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9b1",  # 👩🏻‍🦱
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9b0",  # 👩🏻‍🦰
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9b3",  # 👩🏻‍🦳
+    "\U0001f9d9\U0000200d\U00002640\U0000fe0f",  # 🧙‍♀️
+    "\U0001f9d9\U0000200d\U00002640",  # 🧙‍♀
+    "\U0001f9d9\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧙🏿‍♀️
+    "\U0001f9d9\U0001f3ff\U0000200d\U00002640",  # 🧙🏿‍♀
+    "\U0001f9d9\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧙🏻‍♀️
+    "\U0001f9d9\U0001f3fb\U0000200d\U00002640",  # 🧙🏻‍♀
+    "\U0001f9d9\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧙🏾‍♀️
+    "\U0001f9d9\U0001f3fe\U0000200d\U00002640",  # 🧙🏾‍♀
+    "\U0001f9d9\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧙🏼‍♀️
+    "\U0001f9d9\U0001f3fc\U0000200d\U00002640",  # 🧙🏼‍♀
+    "\U0001f9d9\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧙🏽‍♀️
+    "\U0001f9d9\U0001f3fd\U0000200d\U00002640",  # 🧙🏽‍♀
+    "\U0001f469\U0000200d\U0001f527",  # 👩‍🔧
+    "\U0001f469\U0001f3ff\U0000200d\U0001f527",  # 👩🏿‍🔧
+    "\U0001f469\U0001f3fb\U0000200d\U0001f527",  # 👩🏻‍🔧
+    "\U0001f469\U0001f3fe\U0000200d\U0001f527",  # 👩🏾‍🔧
+    "\U0001f469\U0001f3fc\U0000200d\U0001f527",  # 👩🏼‍🔧
+    "\U0001f469\U0001f3fd\U0000200d\U0001f527",  # 👩🏽‍🔧
+    "\U0001f469\U0001f3fe",  # 👩🏾
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9b2",  # 👩🏾‍🦲
+    "\U0001f9d4\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧔🏾‍♀️
+    "\U0001f9d4\U0001f3fe\U0000200d\U00002640",  # 🧔🏾‍♀
+    "\U0001f471\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 👱🏾‍♀️
+    "\U0001f471\U0001f3fe\U0000200d\U00002640",  # 👱🏾‍♀
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9b1",  # 👩🏾‍🦱
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9b0",  # 👩🏾‍🦰
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9b3",  # 👩🏾‍🦳
+    "\U0001f469\U0001f3fc",  # 👩🏼
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9b2",  # 👩🏼‍🦲
+    "\U0001f9d4\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧔🏼‍♀️
+    "\U0001f9d4\U0001f3fc\U0000200d\U00002640",  # 🧔🏼‍♀
+    "\U0001f471\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 👱🏼‍♀️
+    "\U0001f471\U0001f3fc\U0000200d\U00002640",  # 👱🏼‍♀
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9b1",  # 👩🏼‍🦱
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9b0",  # 👩🏼‍🦰
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9b3",  # 👩🏼‍🦳
+    "\U0001f469\U0001f3fd",  # 👩🏽
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9b2",  # 👩🏽‍🦲
+    "\U0001f9d4\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧔🏽‍♀️
+    "\U0001f9d4\U0001f3fd\U0000200d\U00002640",  # 🧔🏽‍♀
+    "\U0001f471\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 👱🏽‍♀️
+    "\U0001f471\U0001f3fd\U0000200d\U00002640",  # 👱🏽‍♀
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9b1",  # 👩🏽‍🦱
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9b0",  # 👩🏽‍🦰
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9b3",  # 👩🏽‍🦳
+    "\U0001f6b5\U0000200d\U00002640\U0000fe0f",  # 🚵‍♀️
+    "\U0001f6b5\U0000200d\U00002640",  # 🚵‍♀
+    "\U0001f6b5\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🚵🏿‍♀️
+    "\U0001f6b5\U0001f3ff\U0000200d\U00002640",  # 🚵🏿‍♀
+    "\U0001f6b5\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🚵🏻‍♀️
+    "\U0001f6b5\U0001f3fb\U0000200d\U00002640",  # 🚵🏻‍♀
+    "\U0001f6b5\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🚵🏾‍♀️
+    "\U0001f6b5\U0001f3fe\U0000200d\U00002640",  # 🚵🏾‍♀
+    "\U0001f6b5\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🚵🏼‍♀️
+    "\U0001f6b5\U0001f3fc\U0000200d\U00002640",  # 🚵🏼‍♀
+    "\U0001f6b5\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🚵🏽‍♀️
+    "\U0001f6b5\U0001f3fd\U0000200d\U00002640",  # 🚵🏽‍♀
+    "\U0001f469\U0000200d\U0001f4bc",  # 👩‍💼
+    "\U0001f469\U0001f3ff\U0000200d\U0001f4bc",  # 👩🏿‍💼
+    "\U0001f469\U0001f3fb\U0000200d\U0001f4bc",  # 👩🏻‍💼
+    "\U0001f469\U0001f3fe\U0000200d\U0001f4bc",  # 👩🏾‍💼
+    "\U0001f469\U0001f3fc\U0000200d\U0001f4bc",  # 👩🏼‍💼
+    "\U0001f469\U0001f3fd\U0000200d\U0001f4bc",  # 👩🏽‍💼
+    "\U0001f469\U0000200d\U00002708\U0000fe0f",  # 👩‍✈️
+    "\U0001f469\U0000200d\U00002708",  # 👩‍✈
+    "\U0001f469\U0001f3ff\U0000200d\U00002708\U0000fe0f",  # 👩🏿‍✈️
+    "\U0001f469\U0001f3ff\U0000200d\U00002708",  # 👩🏿‍✈
+    "\U0001f469\U0001f3fb\U0000200d\U00002708\U0000fe0f",  # 👩🏻‍✈️
+    "\U0001f469\U0001f3fb\U0000200d\U00002708",  # 👩🏻‍✈
+    "\U0001f469\U0001f3fe\U0000200d\U00002708\U0000fe0f",  # 👩🏾‍✈️
+    "\U0001f469\U0001f3fe\U0000200d\U00002708",  # 👩🏾‍✈
+    "\U0001f469\U0001f3fc\U0000200d\U00002708\U0000fe0f",  # 👩🏼‍✈️
+    "\U0001f469\U0001f3fc\U0000200d\U00002708",  # 👩🏼‍✈
+    "\U0001f469\U0001f3fd\U0000200d\U00002708\U0000fe0f",  # 👩🏽‍✈️
+    "\U0001f469\U0001f3fd\U0000200d\U00002708",  # 👩🏽‍✈
+    "\U0001f93e\U0000200d\U00002640\U0000fe0f",  # 🤾‍♀️
+    "\U0001f93e\U0000200d\U00002640",  # 🤾‍♀
+    "\U0001f93e\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤾🏿‍♀️
+    "\U0001f93e\U0001f3ff\U0000200d\U00002640",  # 🤾🏿‍♀
+    "\U0001f93e\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤾🏻‍♀️
+    "\U0001f93e\U0001f3fb\U0000200d\U00002640",  # 🤾🏻‍♀
+    "\U0001f93e\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤾🏾‍♀️
+    "\U0001f93e\U0001f3fe\U0000200d\U00002640",  # 🤾🏾‍♀
+    "\U0001f93e\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤾🏼‍♀️
+    "\U0001f93e\U0001f3fc\U0000200d\U00002640",  # 🤾🏼‍♀
+    "\U0001f93e\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤾🏽‍♀️
+    "\U0001f93e\U0001f3fd\U0000200d\U00002640",  # 🤾🏽‍♀
+    "\U0001f93d\U0000200d\U00002640\U0000fe0f",  # 🤽‍♀️
+    "\U0001f93d\U0000200d\U00002640",  # 🤽‍♀
+    "\U0001f93d\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤽🏿‍♀️
+    "\U0001f93d\U0001f3ff\U0000200d\U00002640",  # 🤽🏿‍♀
+    "\U0001f93d\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤽🏻‍♀️
+    "\U0001f93d\U0001f3fb\U0000200d\U00002640",  # 🤽🏻‍♀
+    "\U0001f93d\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤽🏾‍♀️
+    "\U0001f93d\U0001f3fe\U0000200d\U00002640",  # 🤽🏾‍♀
+    "\U0001f93d\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤽🏼‍♀️
+    "\U0001f93d\U0001f3fc\U0000200d\U00002640",  # 🤽🏼‍♀
+    "\U0001f93d\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤽🏽‍♀️
+    "\U0001f93d\U0001f3fd\U0000200d\U00002640",  # 🤽🏽‍♀
+    "\U0001f46e\U0000200d\U00002640\U0000fe0f",  # 👮‍♀️
+    "\U0001f46e\U0000200d\U00002640",  # 👮‍♀
+    "\U0001f46e\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 👮🏿‍♀️
+    "\U0001f46e\U0001f3ff\U0000200d\U00002640",  # 👮🏿‍♀
+    "\U0001f46e\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 👮🏻‍♀️
+    "\U0001f46e\U0001f3fb\U0000200d\U00002640",  # 👮🏻‍♀
+    "\U0001f46e\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 👮🏾‍♀️
+    "\U0001f46e\U0001f3fe\U0000200d\U00002640",  # 👮🏾‍♀
+    "\U0001f46e\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 👮🏼‍♀️
+    "\U0001f46e\U0001f3fc\U0000200d\U00002640",  # 👮🏼‍♀
+    "\U0001f46e\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 👮🏽‍♀️
+    "\U0001f46e\U0001f3fd\U0000200d\U00002640",  # 👮🏽‍♀
+    "\U0001f64e\U0000200d\U00002640\U0000fe0f",  # 🙎‍♀️
+    "\U0001f64e\U0000200d\U00002640",  # 🙎‍♀
+    "\U0001f64e\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🙎🏿‍♀️
+    "\U0001f64e\U0001f3ff\U0000200d\U00002640",  # 🙎🏿‍♀
+    "\U0001f64e\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🙎🏻‍♀️
+    "\U0001f64e\U0001f3fb\U0000200d\U00002640",  # 🙎🏻‍♀
+    "\U0001f64e\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🙎🏾‍♀️
+    "\U0001f64e\U0001f3fe\U0000200d\U00002640",  # 🙎🏾‍♀
+    "\U0001f64e\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🙎🏼‍♀️
+    "\U0001f64e\U0001f3fc\U0000200d\U00002640",  # 🙎🏼‍♀
+    "\U0001f64e\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🙎🏽‍♀️
+    "\U0001f64e\U0001f3fd\U0000200d\U00002640",  # 🙎🏽‍♀
+    "\U0001f64b\U0000200d\U00002640\U0000fe0f",  # 🙋‍♀️
+    "\U0001f64b\U0000200d\U00002640",  # 🙋‍♀
+    "\U0001f64b\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🙋🏿‍♀️
+    "\U0001f64b\U0001f3ff\U0000200d\U00002640",  # 🙋🏿‍♀
+    "\U0001f64b\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🙋🏻‍♀️
+    "\U0001f64b\U0001f3fb\U0000200d\U00002640",  # 🙋🏻‍♀
+    "\U0001f64b\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🙋🏾‍♀️
+    "\U0001f64b\U0001f3fe\U0000200d\U00002640",  # 🙋🏾‍♀
+    "\U0001f64b\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🙋🏼‍♀️
+    "\U0001f64b\U0001f3fc\U0000200d\U00002640",  # 🙋🏼‍♀
+    "\U0001f64b\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🙋🏽‍♀️
+    "\U0001f64b\U0001f3fd\U0000200d\U00002640",  # 🙋🏽‍♀
+    "\U0001f469\U0000200d\U0001f9b0",  # 👩‍🦰
+    "\U0001f6a3\U0000200d\U00002640\U0000fe0f",  # 🚣‍♀️
+    "\U0001f6a3\U0000200d\U00002640",  # 🚣‍♀
+    "\U0001f6a3\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🚣🏿‍♀️
+    "\U0001f6a3\U0001f3ff\U0000200d\U00002640",  # 🚣🏿‍♀
+    "\U0001f6a3\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🚣🏻‍♀️
+    "\U0001f6a3\U0001f3fb\U0000200d\U00002640",  # 🚣🏻‍♀
+    "\U0001f6a3\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🚣🏾‍♀️
+    "\U0001f6a3\U0001f3fe\U0000200d\U00002640",  # 🚣🏾‍♀
+    "\U0001f6a3\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🚣🏼‍♀️
+    "\U0001f6a3\U0001f3fc\U0000200d\U00002640",  # 🚣🏼‍♀
+    "\U0001f6a3\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🚣🏽‍♀️
+    "\U0001f6a3\U0001f3fd\U0000200d\U00002640",  # 🚣🏽‍♀
+    "\U0001f3c3\U0000200d\U00002640\U0000fe0f",  # 🏃‍♀️
+    "\U0001f3c3\U0000200d\U00002640",  # 🏃‍♀
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🏃🏿‍♀️
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002640",  # 🏃🏿‍♀
+    "\U0001f3c3\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃‍♀️‍➡️
+    "\U0001f3c3\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🏃‍♀‍➡️
+    "\U0001f3c3\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🏃‍♀️‍➡
+    "\U0001f3c3\U0000200d\U00002640\U0000200d\U000027a1",  # 🏃‍♀‍➡
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏿‍♀️‍➡️
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🏃🏿‍♀‍➡️
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🏃🏿‍♀️‍➡
+    "\U0001f3c3\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1",  # 🏃🏿‍♀‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏻‍♀️‍➡️
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🏃🏻‍♀‍➡️
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🏃🏻‍♀️‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1",  # 🏃🏻‍♀‍➡
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏾‍♀️‍➡️
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🏃🏾‍♀‍➡️
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🏃🏾‍♀️‍➡
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1",  # 🏃🏾‍♀‍➡
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏼‍♀️‍➡️
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🏃🏼‍♀‍➡️
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🏃🏼‍♀️‍➡
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1",  # 🏃🏼‍♀‍➡
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🏃🏽‍♀️‍➡️
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🏃🏽‍♀‍➡️
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🏃🏽‍♀️‍➡
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1",  # 🏃🏽‍♀‍➡
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🏃🏻‍♀️
+    "\U0001f3c3\U0001f3fb\U0000200d\U00002640",  # 🏃🏻‍♀
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🏃🏾‍♀️
+    "\U0001f3c3\U0001f3fe\U0000200d\U00002640",  # 🏃🏾‍♀
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🏃🏼‍♀️
+    "\U0001f3c3\U0001f3fc\U0000200d\U00002640",  # 🏃🏼‍♀
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🏃🏽‍♀️
+    "\U0001f3c3\U0001f3fd\U0000200d\U00002640",  # 🏃🏽‍♀
+    "\U0001f469\U0000200d\U0001f52c",  # 👩‍🔬
+    "\U0001f469\U0001f3ff\U0000200d\U0001f52c",  # 👩🏿‍🔬
+    "\U0001f469\U0001f3fb\U0000200d\U0001f52c",  # 👩🏻‍🔬
+    "\U0001f469\U0001f3fe\U0000200d\U0001f52c",  # 👩🏾‍🔬
+    "\U0001f469\U0001f3fc\U0000200d\U0001f52c",  # 👩🏼‍🔬
+    "\U0001f469\U0001f3fd\U0000200d\U0001f52c",  # 👩🏽‍🔬
+    "\U0001f937\U0000200d\U00002640\U0000fe0f",  # 🤷‍♀️
+    "\U0001f937\U0000200d\U00002640",  # 🤷‍♀
+    "\U0001f937\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🤷🏿‍♀️
+    "\U0001f937\U0001f3ff\U0000200d\U00002640",  # 🤷🏿‍♀
+    "\U0001f937\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🤷🏻‍♀️
+    "\U0001f937\U0001f3fb\U0000200d\U00002640",  # 🤷🏻‍♀
+    "\U0001f937\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🤷🏾‍♀️
+    "\U0001f937\U0001f3fe\U0000200d\U00002640",  # 🤷🏾‍♀
+    "\U0001f937\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🤷🏼‍♀️
+    "\U0001f937\U0001f3fc\U0000200d\U00002640",  # 🤷🏼‍♀
+    "\U0001f937\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🤷🏽‍♀️
+    "\U0001f937\U0001f3fd\U0000200d\U00002640",  # 🤷🏽‍♀
+    "\U0001f469\U0000200d\U0001f3a4",  # 👩‍🎤
+    "\U0001f469\U0001f3ff\U0000200d\U0001f3a4",  # 👩🏿‍🎤
+    "\U0001f469\U0001f3fb\U0000200d\U0001f3a4",  # 👩🏻‍🎤
+    "\U0001f469\U0001f3fe\U0000200d\U0001f3a4",  # 👩🏾‍🎤
+    "\U0001f469\U0001f3fc\U0000200d\U0001f3a4",  # 👩🏼‍🎤
+    "\U0001f469\U0001f3fd\U0000200d\U0001f3a4",  # 👩🏽‍🎤
+    "\U0001f9cd\U0000200d\U00002640\U0000fe0f",  # 🧍‍♀️
+    "\U0001f9cd\U0000200d\U00002640",  # 🧍‍♀
+    "\U0001f9cd\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧍🏿‍♀️
+    "\U0001f9cd\U0001f3ff\U0000200d\U00002640",  # 🧍🏿‍♀
+    "\U0001f9cd\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧍🏻‍♀️
+    "\U0001f9cd\U0001f3fb\U0000200d\U00002640",  # 🧍🏻‍♀
+    "\U0001f9cd\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧍🏾‍♀️
+    "\U0001f9cd\U0001f3fe\U0000200d\U00002640",  # 🧍🏾‍♀
+    "\U0001f9cd\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧍🏼‍♀️
+    "\U0001f9cd\U0001f3fc\U0000200d\U00002640",  # 🧍🏼‍♀
+    "\U0001f9cd\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧍🏽‍♀️
+    "\U0001f9cd\U0001f3fd\U0000200d\U00002640",  # 🧍🏽‍♀
+    "\U0001f469\U0000200d\U0001f393",  # 👩‍🎓
+    "\U0001f469\U0001f3ff\U0000200d\U0001f393",  # 👩🏿‍🎓
+    "\U0001f469\U0001f3fb\U0000200d\U0001f393",  # 👩🏻‍🎓
+    "\U0001f469\U0001f3fe\U0000200d\U0001f393",  # 👩🏾‍🎓
+    "\U0001f469\U0001f3fc\U0000200d\U0001f393",  # 👩🏼‍🎓
+    "\U0001f469\U0001f3fd\U0000200d\U0001f393",  # 👩🏽‍🎓
+    "\U0001f9b8\U0000200d\U00002640\U0000fe0f",  # 🦸‍♀️
+    "\U0001f9b8\U0000200d\U00002640",  # 🦸‍♀
+    "\U0001f9b8\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🦸🏿‍♀️
+    "\U0001f9b8\U0001f3ff\U0000200d\U00002640",  # 🦸🏿‍♀
+    "\U0001f9b8\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🦸🏻‍♀️
+    "\U0001f9b8\U0001f3fb\U0000200d\U00002640",  # 🦸🏻‍♀
+    "\U0001f9b8\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🦸🏾‍♀️
+    "\U0001f9b8\U0001f3fe\U0000200d\U00002640",  # 🦸🏾‍♀
+    "\U0001f9b8\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🦸🏼‍♀️
+    "\U0001f9b8\U0001f3fc\U0000200d\U00002640",  # 🦸🏼‍♀
+    "\U0001f9b8\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🦸🏽‍♀️
+    "\U0001f9b8\U0001f3fd\U0000200d\U00002640",  # 🦸🏽‍♀
+    "\U0001f9b9\U0000200d\U00002640\U0000fe0f",  # 🦹‍♀️
+    "\U0001f9b9\U0000200d\U00002640",  # 🦹‍♀
+    "\U0001f9b9\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🦹🏿‍♀️
+    "\U0001f9b9\U0001f3ff\U0000200d\U00002640",  # 🦹🏿‍♀
+    "\U0001f9b9\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🦹🏻‍♀️
+    "\U0001f9b9\U0001f3fb\U0000200d\U00002640",  # 🦹🏻‍♀
+    "\U0001f9b9\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🦹🏾‍♀️
+    "\U0001f9b9\U0001f3fe\U0000200d\U00002640",  # 🦹🏾‍♀
+    "\U0001f9b9\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🦹🏼‍♀️
+    "\U0001f9b9\U0001f3fc\U0000200d\U00002640",  # 🦹🏼‍♀
+    "\U0001f9b9\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🦹🏽‍♀️
+    "\U0001f9b9\U0001f3fd\U0000200d\U00002640",  # 🦹🏽‍♀
+    "\U0001f3c4\U0000200d\U00002640\U0000fe0f",  # 🏄‍♀️
+    "\U0001f3c4\U0000200d\U00002640",  # 🏄‍♀
+    "\U0001f3c4\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🏄🏿‍♀️
+    "\U0001f3c4\U0001f3ff\U0000200d\U00002640",  # 🏄🏿‍♀
+    "\U0001f3c4\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🏄🏻‍♀️
+    "\U0001f3c4\U0001f3fb\U0000200d\U00002640",  # 🏄🏻‍♀
+    "\U0001f3c4\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🏄🏾‍♀️
+    "\U0001f3c4\U0001f3fe\U0000200d\U00002640",  # 🏄🏾‍♀
+    "\U0001f3c4\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🏄🏼‍♀️
+    "\U0001f3c4\U0001f3fc\U0000200d\U00002640",  # 🏄🏼‍♀
+    "\U0001f3c4\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🏄🏽‍♀️
+    "\U0001f3c4\U0001f3fd\U0000200d\U00002640",  # 🏄🏽‍♀
+    "\U0001f3ca\U0000200d\U00002640\U0000fe0f",  # 🏊‍♀️
+    "\U0001f3ca\U0000200d\U00002640",  # 🏊‍♀
+    "\U0001f3ca\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🏊🏿‍♀️
+    "\U0001f3ca\U0001f3ff\U0000200d\U00002640",  # 🏊🏿‍♀
+    "\U0001f3ca\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🏊🏻‍♀️
+    "\U0001f3ca\U0001f3fb\U0000200d\U00002640",  # 🏊🏻‍♀
+    "\U0001f3ca\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🏊🏾‍♀️
+    "\U0001f3ca\U0001f3fe\U0000200d\U00002640",  # 🏊🏾‍♀
+    "\U0001f3ca\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🏊🏼‍♀️
+    "\U0001f3ca\U0001f3fc\U0000200d\U00002640",  # 🏊🏼‍♀
+    "\U0001f3ca\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🏊🏽‍♀️
+    "\U0001f3ca\U0001f3fd\U0000200d\U00002640",  # 🏊🏽‍♀
+    "\U0001f469\U0000200d\U0001f3eb",  # 👩‍🏫
+    "\U0001f469\U0001f3ff\U0000200d\U0001f3eb",  # 👩🏿‍🏫
+    "\U0001f469\U0001f3fb\U0000200d\U0001f3eb",  # 👩🏻‍🏫
+    "\U0001f469\U0001f3fe\U0000200d\U0001f3eb",  # 👩🏾‍🏫
+    "\U0001f469\U0001f3fc\U0000200d\U0001f3eb",  # 👩🏼‍🏫
+    "\U0001f469\U0001f3fd\U0000200d\U0001f3eb",  # 👩🏽‍🏫
+    "\U0001f469\U0000200d\U0001f4bb",  # 👩‍💻
+    "\U0001f469\U0001f3ff\U0000200d\U0001f4bb",  # 👩🏿‍💻
+    "\U0001f469\U0001f3fb\U0000200d\U0001f4bb",  # 👩🏻‍💻
+    "\U0001f469\U0001f3fe\U0000200d\U0001f4bb",  # 👩🏾‍💻
+    "\U0001f469\U0001f3fc\U0000200d\U0001f4bb",  # 👩🏼‍💻
+    "\U0001f469\U0001f3fd\U0000200d\U0001f4bb",  # 👩🏽‍💻
+    "\U0001f481\U0000200d\U00002640\U0000fe0f",  # 💁‍♀️
+    "\U0001f481\U0000200d\U00002640",  # 💁‍♀
+    "\U0001f481\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 💁🏿‍♀️
+    "\U0001f481\U0001f3ff\U0000200d\U00002640",  # 💁🏿‍♀
+    "\U0001f481\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 💁🏻‍♀️
+    "\U0001f481\U0001f3fb\U0000200d\U00002640",  # 💁🏻‍♀
+    "\U0001f481\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 💁🏾‍♀️
+    "\U0001f481\U0001f3fe\U0000200d\U00002640",  # 💁🏾‍♀
+    "\U0001f481\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 💁🏼‍♀️
+    "\U0001f481\U0001f3fc\U0000200d\U00002640",  # 💁🏼‍♀
+    "\U0001f481\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 💁🏽‍♀️
+    "\U0001f481\U0001f3fd\U0000200d\U00002640",  # 💁🏽‍♀
+    "\U0001f9db\U0000200d\U00002640\U0000fe0f",  # 🧛‍♀️
+    "\U0001f9db\U0000200d\U00002640",  # 🧛‍♀
+    "\U0001f9db\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🧛🏿‍♀️
+    "\U0001f9db\U0001f3ff\U0000200d\U00002640",  # 🧛🏿‍♀
+    "\U0001f9db\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🧛🏻‍♀️
+    "\U0001f9db\U0001f3fb\U0000200d\U00002640",  # 🧛🏻‍♀
+    "\U0001f9db\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🧛🏾‍♀️
+    "\U0001f9db\U0001f3fe\U0000200d\U00002640",  # 🧛🏾‍♀
+    "\U0001f9db\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🧛🏼‍♀️
+    "\U0001f9db\U0001f3fc\U0000200d\U00002640",  # 🧛🏼‍♀
+    "\U0001f9db\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🧛🏽‍♀️
+    "\U0001f9db\U0001f3fd\U0000200d\U00002640",  # 🧛🏽‍♀
+    "\U0001f6b6\U0000200d\U00002640\U0000fe0f",  # 🚶‍♀️
+    "\U0001f6b6\U0000200d\U00002640",  # 🚶‍♀
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 🚶🏿‍♀️
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002640",  # 🚶🏿‍♀
+    "\U0001f6b6\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶‍♀️‍➡️
+    "\U0001f6b6\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🚶‍♀‍➡️
+    "\U0001f6b6\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🚶‍♀️‍➡
+    "\U0001f6b6\U0000200d\U00002640\U0000200d\U000027a1",  # 🚶‍♀‍➡
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏿‍♀️‍➡️
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🚶🏿‍♀‍➡️
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🚶🏿‍♀️‍➡
+    "\U0001f6b6\U0001f3ff\U0000200d\U00002640\U0000200d\U000027a1",  # 🚶🏿‍♀‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏻‍♀️‍➡️
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🚶🏻‍♀‍➡️
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🚶🏻‍♀️‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000200d\U000027a1",  # 🚶🏻‍♀‍➡
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏾‍♀️‍➡️
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🚶🏾‍♀‍➡️
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🚶🏾‍♀️‍➡
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000200d\U000027a1",  # 🚶🏾‍♀‍➡
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏼‍♀️‍➡️
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🚶🏼‍♀‍➡️
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🚶🏼‍♀️‍➡
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000200d\U000027a1",  # 🚶🏼‍♀‍➡
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1\U0000fe0f",  # 🚶🏽‍♀️‍➡️
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1\U0000fe0f",  # 🚶🏽‍♀‍➡️
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000fe0f\U0000200d\U000027a1",  # 🚶🏽‍♀️‍➡
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000200d\U000027a1",  # 🚶🏽‍♀‍➡
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 🚶🏻‍♀️
+    "\U0001f6b6\U0001f3fb\U0000200d\U00002640",  # 🚶🏻‍♀
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 🚶🏾‍♀️
+    "\U0001f6b6\U0001f3fe\U0000200d\U00002640",  # 🚶🏾‍♀
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 🚶🏼‍♀️
+    "\U0001f6b6\U0001f3fc\U0000200d\U00002640",  # 🚶🏼‍♀
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 🚶🏽‍♀️
+    "\U0001f6b6\U0001f3fd\U0000200d\U00002640",  # 🚶🏽‍♀
+    "\U0001f473\U0000200d\U00002640\U0000fe0f",  # 👳‍♀️
+    "\U0001f473\U0000200d\U00002640",  # 👳‍♀
+    "\U0001f473\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 👳🏿‍♀️
+    "\U0001f473\U0001f3ff\U0000200d\U00002640",  # 👳🏿‍♀
+    "\U0001f473\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 👳🏻‍♀️
+    "\U0001f473\U0001f3fb\U0000200d\U00002640",  # 👳🏻‍♀
+    "\U0001f473\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 👳🏾‍♀️
+    "\U0001f473\U0001f3fe\U0000200d\U00002640",  # 👳🏾‍♀
+    "\U0001f473\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 👳🏼‍♀️
+    "\U0001f473\U0001f3fc\U0000200d\U00002640",  # 👳🏼‍♀
+    "\U0001f473\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 👳🏽‍♀️
+    "\U0001f473\U0001f3fd\U0000200d\U00002640",  # 👳🏽‍♀
+    "\U0001f469\U0000200d\U0001f9b3",  # 👩‍🦳
+    "\U0001f9d5",  # 🧕
+    "\U0001f9d5\U0001f3ff",  # 🧕🏿
+    "\U0001f9d5\U0001f3fb",  # 🧕🏻
+    "\U0001f9d5\U0001f3fe",  # 🧕🏾
+    "\U0001f9d5\U0001f3fc",  # 🧕🏼
+    "\U0001f9d5\U0001f3fd",  # 🧕🏽
+    "\U0001f470\U0000200d\U00002640\U0000fe0f",  # 👰‍♀️
+    "\U0001f470\U0000200d\U00002640",  # 👰‍♀
+    "\U0001f470\U0001f3ff\U0000200d\U00002640\U0000fe0f",  # 👰🏿‍♀️
+    "\U0001f470\U0001f3ff\U0000200d\U00002640",  # 👰🏿‍♀
+    "\U0001f470\U0001f3fb\U0000200d\U00002640\U0000fe0f",  # 👰🏻‍♀️
+    "\U0001f470\U0001f3fb\U0000200d\U00002640",  # 👰🏻‍♀
+    "\U0001f470\U0001f3fe\U0000200d\U00002640\U0000fe0f",  # 👰🏾‍♀️
+    "\U0001f470\U0001f3fe\U0000200d\U00002640",  # 👰🏾‍♀
+    "\U0001f470\U0001f3fc\U0000200d\U00002640\U0000fe0f",  # 👰🏼‍♀️
+    "\U0001f470\U0001f3fc\U0000200d\U00002640",  # 👰🏼‍♀
+    "\U0001f470\U0001f3fd\U0000200d\U00002640\U0000fe0f",  # 👰🏽‍♀️
+    "\U0001f470\U0001f3fd\U0000200d\U00002640",  # 👰🏽‍♀
+    "\U0001f469\U0000200d\U0001f9af",  # 👩‍🦯
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9af",  # 👩🏿‍🦯
+    "\U0001f469\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👩‍🦯‍➡️
+    "\U0001f469\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👩‍🦯‍➡
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👩🏿‍🦯‍➡️
+    "\U0001f469\U0001f3ff\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👩🏿‍🦯‍➡
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👩🏻‍🦯‍➡️
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👩🏻‍🦯‍➡
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👩🏾‍🦯‍➡️
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👩🏾‍🦯‍➡
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👩🏼‍🦯‍➡️
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👩🏼‍🦯‍➡
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1\U0000fe0f",  # 👩🏽‍🦯‍➡️
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9af\U0000200d\U000027a1",  # 👩🏽‍🦯‍➡
+    "\U0001f469\U0001f3fb\U0000200d\U0001f9af",  # 👩🏻‍🦯
+    "\U0001f469\U0001f3fe\U0000200d\U0001f9af",  # 👩🏾‍🦯
+    "\U0001f469\U0001f3fc\U0000200d\U0001f9af",  # 👩🏼‍🦯
+    "\U0001f469\U0001f3fd\U0000200d\U0001f9af",  # 👩🏽‍🦯
+    "\U0001f9df\U0000200d\U00002640\U0000fe0f",  # 🧟‍♀️
+    "\U0001f9df\U0000200d\U00002640",  # 🧟‍♀
+    "\U0001f462",  # 👢
+    "\U0001f45a",  # 👚
+    "\U0001f452",  # 👒
+    "\U0001f461",  # 👡
+    "\U0001f46d",  # 👭
+    "\U0001f46d\U0001f3ff",  # 👭🏿
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb",  # 👩🏿‍🤝‍👩🏻
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe",  # 👩🏿‍🤝‍👩🏾
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc",  # 👩🏿‍🤝‍👩🏼
+    "\U0001f469\U0001f3ff\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd",  # 👩🏿‍🤝‍👩🏽
+    "\U0001f46d\U0001f3fb",  # 👭🏻
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff",  # 👩🏻‍🤝‍👩🏿
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe",  # 👩🏻‍🤝‍👩🏾
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc",  # 👩🏻‍🤝‍👩🏼
+    "\U0001f469\U0001f3fb\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd",  # 👩🏻‍🤝‍👩🏽
+    "\U0001f46d\U0001f3fe",  # 👭🏾
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff",  # 👩🏾‍🤝‍👩🏿
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb",  # 👩🏾‍🤝‍👩🏻
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc",  # 👩🏾‍🤝‍👩🏼
+    "\U0001f469\U0001f3fe\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd",  # 👩🏾‍🤝‍👩🏽
+    "\U0001f46d\U0001f3fc",  # 👭🏼
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff",  # 👩🏼‍🤝‍👩🏿
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb",  # 👩🏼‍🤝‍👩🏻
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe",  # 👩🏼‍🤝‍👩🏾
+    "\U0001f469\U0001f3fc\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fd",  # 👩🏼‍🤝‍👩🏽
+    "\U0001f46d\U0001f3fd",  # 👭🏽
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3ff",  # 👩🏽‍🤝‍👩🏿
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fb",  # 👩🏽‍🤝‍👩🏻
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fe",  # 👩🏽‍🤝‍👩🏾
+    "\U0001f469\U0001f3fd\U0000200d\U0001f91d\U0000200d\U0001f469\U0001f3fc",  # 👩🏽‍🤝‍👩🏼
+    "\U0001f46f\U0000200d\U00002640\U0000fe0f",  # 👯‍♀️
+    "\U0001f46f\U0000200d\U00002640",  # 👯‍♀
+    "\U0001f93c\U0000200d\U00002640\U0000fe0f",  # 🤼‍♀️
+    "\U0001f93c\U0000200d\U00002640",  # 🤼‍♀
+    "\U0001f6ba",  # 🚺
+    "\U0001fab5",  # 🪵
+    "\U0001f974",  # 🥴
+    "\U0001f5fa\U0000fe0f",  # 🗺️
+    "\U0001f5fa",  # 🗺
+    "\U0001fab1",  # 🪱
+    "\U0001f61f",  # 😟
+    "\U0001f381",  # 🎁
+    "\U0001f527",  # 🔧
+    "\U0000270d\U0000fe0f",  # ✍️
+    "\U0000270d",  # ✍
+    "\U0000270d\U0001f3ff",  # ✍🏿
+    "\U0000270d\U0001f3fb",  # ✍🏻
+    "\U0000270d\U0001f3fe",  # ✍🏾
+    "\U0000270d\U0001f3fc",  # ✍🏼
+    "\U0000270d\U0001f3fd",  # ✍🏽
+    "\U0001fa7b",  # 🩻
+    "\U0001f9f6",  # 🧶
+    "\U0001f971",  # 🥱
+    "\U0001f7e1",  # 🟡
+    "\U0001f49b",  # 💛
+    "\U0001f7e8",  # 🟨
+    "\U0001f4b4",  # 💴
+    "\U0000262f\U0000fe0f",  # ☯️
+    "\U0000262f",  # ☯
+    "\U0001fa80",  # 🪀
+    "\U0001f92a",  # 🤪
+    "\U0001f993",  # 🦓
+    "\U0001f910",  # 🤐
+    "\U0001f9df",  # 🧟
+    "\U0001f1e6\U0001f1fd",  # 🇦🇽
 ]
diff -pruN 9.0.0-2/ical/parsing/parser.py 12.1.0-1/ical/parsing/parser.py
--- 9.0.0-2/ical/parsing/parser.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/parsing/parser.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,111 +0,0 @@
-"""A pyparsing text parser for rfc5545 files.
-
-This is a very simple parser that converts lines in an iCalendar file into a an object
-structure with necessary relationships to interpret the meaning of the contentlines and
-how the parts break down into properties and parameters. This library does not attempt
-to interpret the meaning of the properties or types themselves.
-
-For example, given a content line of:
-
-  DUE;VALUE=DATE:20070501
-
-This library would create a ParseResults object with this structure:
-
-  {
-    'name': 'DUE',
-    'value': '20070501'
-    'params': [{
-            'param_name': 'VALUE',
-            'param_value': 'DATE',
-    }]
-  }
-
-Note: This specific example may be a bit confusing because one of the property parameters is named
-"VALUE" which refers to the value type.
-"""
-
-import logging
-import threading
-from functools import cache
-from typing import cast
-from typing import Iterable
-
-from pyparsing import (
-    Combine,
-    Group,
-    Or,
-    ParserElement,
-    ParseResults,
-    QuotedString,
-    Word,
-    ZeroOrMore,
-    alphanums,
-    alphas,
-    nums,
-)
-
-from .const import (
-    PARSE_NAME,
-    PARSE_PARAM_NAME,
-    PARSE_PARAM_VALUE,
-    PARSE_PARAMS,
-    PARSE_VALUE,
-)
-from .unicode import SAFE_CHAR, VALUE_CHAR
-
-_LOGGER = logging.getLogger(__name__)
-
-
-@cache
-def _create_parser() -> ParserElement:
-    """Create rfc5545 parser."""
-    iana_token = Word(alphanums + "-")
-    vendor_id = Word(alphanums)
-    x_name = Combine("X-" + ZeroOrMore(vendor_id + "-") + alphas + nums + "-")
-    name = Or([iana_token, x_name])
-
-    param_name = Or([iana_token, x_name])
-    # rfc5545 Q-SAFE-CHAR is any character except CONTROL and DQUOTE which is
-    # close enough to the pyparsing provided parser element
-    param_text = Word(SAFE_CHAR)
-    quoted_string = QuotedString('"')
-
-    param_value = Or([param_text, quoted_string])
-    # There are multiple levels of property parameter grouping since there can
-    # either be repreated property parameters with the same name or property
-    # s parameters with repeated values. A two level structure is used to grab
-    # both, which is then flattened when consuming the result.
-    param = Group(
-        param_name.set_results_name(PARSE_PARAM_NAME)
-        + "="
-        + param_value.set_results_name(PARSE_PARAM_VALUE, list_all_matches=True)
-        + ZeroOrMore(
-            "," + param_value.set_results_name(PARSE_PARAM_VALUE, list_all_matches=True)
-        )
-    ).set_results_name(PARSE_PARAMS, list_all_matches=True)
-
-    contentline = (
-        name.set_results_name(PARSE_NAME)
-        + Group(ZeroOrMore(";" + param)).set_results_name(
-            PARSE_PARAMS, list_all_matches=True
-        )
-        + ":"
-        + Word(VALUE_CHAR)[0, 1].set_results_name(PARSE_VALUE)
-    )
-    contentline.set_whitespace_chars("")
-    if _LOGGER.isEnabledFor(logging.DEBUG):
-        contentline.set_debug(flag=True)
-    return cast(ParserElement, contentline)
-
-
-_parser_lock = threading.Lock()
-
-
-def parse_contentlines(lines: Iterable[str]) -> list[ParseResults]:
-    """Parse a set of unfolded lines into parse results.
-
-    Note, this method is not threadsafe and may be called from only one method at a time.
-    """
-    with _parser_lock:
-        parser = _create_parser()
-        return [parser.parse_string(line, parse_all=True) for line in lines if line]
diff -pruN 9.0.0-2/ical/parsing/property.py 12.1.0-1/ical/parsing/property.py
--- 9.0.0-2/ical/parsing/property.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/parsing/property.py	2025-11-14 02:06:41.000000000 +0000
@@ -6,6 +6,31 @@ just a "contentline", however properties
 output of the parser and are provided in the context of where
 they live on a component hierarchy (e.g. attached to a component,
 or sub component).
+
+This is a very simple parser that converts lines in an iCalendar file into a an object
+structure with necessary relationships to interpret the meaning of the contentlines and
+how the parts break down into properties and parameters. This library does not attempt
+to interpret the meaning of the properties or types themselves.
+
+For example, given a content line of:
+
+  DUE;VALUE=DATE:20070501
+
+This library would create a ParseResults object with this structure:
+
+  ParsedProperty(
+    name='due',
+    value='20070501',
+    params=[
+        ParsedPropertyParameter(
+            name='VALUE',
+            values=['DATE']
+        )
+    ]
+  }
+
+Note: This specific example may be a bit confusing because one of the property parameters is named
+"VALUE" which refers to the value type.
 """
 
 # mypy: allow-any-generics
@@ -16,10 +41,32 @@ import re
 import datetime
 from dataclasses import dataclass
 from collections.abc import Iterator, Generator, Iterable
-from typing import Optional, Union
+from typing import Optional, Union, Sequence, Iterable
+
+from ical.exceptions import CalendarParseError
+
 
-from .const import PARSE_PARAM_NAME, PARSE_PARAM_VALUE, PARSE_PARAMS
-from .unicode import UNSAFE_CHAR_RE
+# Characters that should be encoded in quotes
+_UNSAFE_CHAR_RE = re.compile(r"[,:;]")
+_RE_CONTROL_CHARS = re.compile("[\x00-\x08\x0a-\x1f\x7f]")
+_RE_NAME = re.compile("[A-Z0-9-]+")
+_NAME_DELIMITERS = (";", ":")
+_PARAM_DELIMITERS = (",", ";", ":")
+_QUOTE = '"'
+
+
+def _find_first(
+    line: str, chars: Sequence[str], start: int | None = None
+) -> int | None:
+    """Find the earliest occurrence of any of the given characters in the line."""
+    if not chars:
+        raise ValueError("At least one character must be provided to search for.")
+    earliest: int | None = None
+    for char in chars:
+        pos = line.find(char, start)
+        if pos != -1 and (earliest is None or pos < earliest):
+            earliest = pos
+    return earliest
 
 
 @dataclass
@@ -28,13 +75,13 @@ class ParsedPropertyParameter:
 
     name: str
 
-    values: list[Union[str, datetime.tzinfo]]
+    values: Sequence[Union[str, datetime.tzinfo]]
     """Values are typically strings, with a hack for TZID.
 
     The values may be overridden in the parse tree so that we can directly
     set the timezone information when parsing a date-time rather than
     combining with the calendar at runtime. That is, we update the tree
-    with timezone infrmation replacing a string TZID with the zoneinfo.
+    with timezone information replacing a string TZID with the zoneinfo.
     """
 
 
@@ -77,9 +124,9 @@ class ParsedProperty:
                 for value in parameter.values:
                     if not isinstance(value, str):
                         continue  # Shouldn't happen; only strings are set by parsing
-                    # Property parameters with values contain a colon, simicolon,
+                    # Property parameters with values contain a colon, semicolon,
                     # or a comma character must be placed in quoted text
-                    if UNSAFE_CHAR_RE.search(value):
+                    if _UNSAFE_CHAR_RE.search(value):
                         result_param_values.append(f'"{value}"')
                     else:
                         result_param_values.append(value)
@@ -91,67 +138,141 @@ class ParsedProperty:
         return "".join(result)
 
     @classmethod
-    def from_basic_ics(cls, contentline: str) -> "ParsedProperty":
+    def from_ics(cls, contentline: str) -> "ParsedProperty":
         """Decode a ParsedProperty from an rfc5545 iCalendar content line.
 
-        This does not support the full rfc5545 specification. This may only
-        be used for narrower use cases that need more performance than invoking
-        the full rfc5545 spec from the `parser` library.
-
-        Will raise a ValueError on failure.
+        Will raise a CalendarParseError on failure.
         """
-        # Lines can be in either of these formats where the parameters are optional:
-        # RRULE:FREQ=WEEKLY;COUNT=10
-        # RDATE;VALUE=DATE:19970304T080000Z
-        # RDATE:19970304T080000Z
-        name, sep, value = contentline.partition(":")
-        if not sep:
-            raise ValueError(f"Expected ':' in contentline: {contentline}")
-        if not (name_parts := name.split(";")) or not name_parts[0]:
-            raise ValueError(f"Empty property name in contentline: {contentline}")
-        name, property_parameters = name_parts[0], name_parts[1:]
-        parsed_property_parameters = []
-        for property_parameter in property_parameters:
-            param_parts = property_parameter.split("=")
-            if len(param_parts) < 2:
-                raise ValueError(f"Invalid property parameter: {property_parameter}")
-            parsed_property_parameters.append(
-                ParsedPropertyParameter(
-                    name=param_parts[0],
-                    values=param_parts[1:],  # type: ignore[arg-type]
-                )
-            )
+        return _parse_line(contentline)
 
-        return ParsedProperty(
-            name=name.lower(),
-            value=value,
-            params=parsed_property_parameters or None,
-        )
 
+def _parse_line(line: str) -> ParsedProperty:
+    """Parse a single property line."""
+
+    # parse NAME
+    if (name_end_pos := _find_first(line, _NAME_DELIMITERS)) is None:
+        raise CalendarParseError(
+            f"Invalid property line, expected {_NAME_DELIMITERS} after property name",
+            detailed_error=line,
+        )
+    property_name = line[0:name_end_pos]
+    has_params = line[name_end_pos] == ";"
+    pos = name_end_pos + 1
+    line_len = len(line)
 
-def parse_property_params(
-    parse_result_dict: dict[str, str | list]
-) -> list[ParsedPropertyParameter]:
-    """Extract the property parameters from a pyparsing ParseResult object."""
-    if PARSE_PARAMS not in parse_result_dict:
-        return []
+    # parse PARAMS if any
     params: list[ParsedPropertyParameter] = []
-    for parsed_params in parse_result_dict[PARSE_PARAMS]:
-        if not isinstance(parsed_params, dict) or PARSE_PARAMS not in parsed_params:
-            continue
-        for pair in parsed_params[PARSE_PARAMS]:
-            params.append(
-                ParsedPropertyParameter(
-                    name=pair[PARSE_PARAM_NAME], values=pair[PARSE_PARAM_VALUE]
+    if has_params:
+        while pos < line_len:
+            if (param_name_end_pos := line.find("=", pos)) == -1:
+                raise CalendarParseError(
+                    f"Invalid parameter format: missing '=' after parameter name part '{line[pos:]}'",
+                    detailed_error=line,
                 )
+            param_name = line[pos:param_name_end_pos]
+            pos = param_name_end_pos + 1
+
+            # parse one or more comma-separated PARAM-VALUES
+            param_values: list[str] = []
+            delimiter: str | None = None
+            while delimiter is None or delimiter == ",":
+                if pos >= line_len:
+                    raise CalendarParseError(
+                        "Unexpected end of line. Expected parameter value or delimiter.",
+                        detailed_error=line,
+                    )
+                param_value: str
+                if line[pos] == _QUOTE:
+                    if (end_quote_pos := line.find(_QUOTE, pos + 1)) == -1:
+                        raise CalendarParseError(
+                            "Unexpected end of line: unclosed quoted parameter value.",
+                            detailed_error=line,
+                        )
+                    param_value = line[pos + 1 : end_quote_pos]
+                    pos = end_quote_pos + 1
+                else:
+                    if (end_pos := _find_first(line, _PARAM_DELIMITERS, pos)) is None:
+                        raise CalendarParseError(
+                            "Unexpected end of line: missing parameter value delimiter.",
+                            detailed_error=line,
+                        )
+                    param_value = line[pos:end_pos]
+                    pos = end_pos
+
+                param_values.append(param_value)
+
+                # After extracting value, pos is at the delimiter or EOL.
+                if pos >= line_len:
+                    # E.g., quoted value ended right at EOL, or unquoted value consumed up to EOL.
+                    # A delimiter is always expected after a value within parameters.
+                    raise CalendarParseError(
+                        f"Unexpected end of line after parameter value '{param_value}'. Expected delimiter {_PARAM_DELIMITERS}.",
+                        detailed_error=line,
+                    )
+
+                if (delimiter := line[pos]) not in _PARAM_DELIMITERS:
+                    raise CalendarParseError(
+                        f"Expected {_PARAM_DELIMITERS} after parameter value, got '{delimiter}'",
+                        detailed_error=line,
+                    )
+                pos += 1
+
+            params.append(ParsedPropertyParameter(name=param_name, values=param_values))
+
+            if delimiter == ":":
+                break  # We are done with all parameters.
+
+    property_name = property_name.upper()
+    if not _RE_NAME.fullmatch(property_name):
+        raise CalendarParseError(
+            f"Invalid property name '{property_name}'", detailed_error=line
+        )
+    for param in params:
+        if not _RE_NAME.fullmatch(param.name):
+            raise CalendarParseError(
+                f"Invalid parameter name '{param.name}'", detailed_error=line
             )
-    return params
+        for value in param.values:
+            if not isinstance(value, str):
+                raise ValueError(
+                    f"Invalid parameter value type: {type(value).__name__}"
+                )
+            if value.find(_QUOTE) != -1:
+                raise CalendarParseError(
+                    f"Parameter value '{value}' for parameter '{param.name}' is improperly quoted",
+                    detailed_error=line,
+                )
+            if _RE_CONTROL_CHARS.search(value):
+                raise CalendarParseError(
+                    f"Invalid parameter value '{value}' for parameter '{param.name}'",
+                    detailed_error=line,
+                )
+
+    property_value = line[pos:]
+    if _RE_CONTROL_CHARS.search(property_value):
+        raise CalendarParseError(
+            f"Property value contains control characters: {property_value}",
+            detailed_error=line,
+        )
+
+    return ParsedProperty(
+        name=property_name.lower(),
+        value=property_value,
+        params=params if params else None,
+    )
 
 
-def parse_basic_ics_properties(
+def parse_contentlines(
     contentlines: Iterable[str],
 ) -> Generator[ParsedProperty, None, None]:
+    """Parse a contentlines into ParsedProperty objects."""
     for contentline in contentlines:
         if not contentline:
             continue
-        yield ParsedProperty.from_basic_ics(contentline)
+        try:
+            yield ParsedProperty.from_ics(contentline)
+        except CalendarParseError as err:
+            raise CalendarParseError(
+                f"Calendar contents are not valid ICS format, see the detailed_error for more information",
+                detailed_error=str(err),
+            ) from err
diff -pruN 9.0.0-2/ical/parsing/unicode.py 12.1.0-1/ical/parsing/unicode.py
--- 9.0.0-2/ical/parsing/unicode.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/parsing/unicode.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,104 +0,0 @@
-"""Character sets used inused in rfc5545.
-
-This file defines the character sets used by pyparsing to tokenize
-input files, intended to be used by the contentlines parsing code.
-"""
-
-from __future__ import annotations
-
-import logging
-import re
-from typing import cast
-
-from pyparsing import unicode_set
-from pyparsing.unicode import UnicodeRangeList
-
-from .emoji import EMOJI
-
-_LOGGER = logging.getLogger(__name__)
-
-
-WSP = [" ", "\t"]
-
-
-class CharRange(unicode_set):
-    """A base class that returns all characters in a range."""
-
-    @classmethod
-    def all(cls) -> list[str]:
-        """Return all characters from the range."""
-        return cast(list[str], cls._chars_for_ranges)
-
-
-class Control(CharRange):
-    """All the controls excet HTAB."""
-
-    _ranges: UnicodeRangeList = [
-        (0x00, 0x08),
-        (0x0A, 0x1F),
-        (0x7F,),
-    ]
-
-
-class NonUsAscii(CharRange):
-    """Range of characters in the NON-US-ASCII spec of rfc5545."""
-
-    _ranges: UnicodeRangeList = [
-        # UTF8-2
-        (0xC2, 0xDF),
-        (0x80, 0xBF),  # utf8-tail
-        # UTF8-3
-        (0xE0,),
-        (0xA0, 0xBF),
-        (0xE1, 0xEC),
-        (0xED,),
-        (0x80, 0x9F),
-        (0xEE, 0xEF),
-        # UTF8-4
-        (0xF0,),
-        (0x90, 0xBF),
-        (0xF1, 0xF3),
-        (0xF4,),
-        (0x80, 0x8F),
-    ]
-
-
-class BasicMultilingualPlane(CharRange):
-    """Unicode set for the Basic Multilingual Plane."""
-
-    _ranges: UnicodeRangeList = [
-        (0x0020, 0xFFFF),
-    ]
-
-
-NON_US_ASCII = NonUsAscii.all() + EMOJI
-
-# Characters that should be encoded in quotes
-UNSAFE_CHAR_RE = re.compile(r"[,:;]")
-
-
-class SafeChar(CharRange):
-    """Any character except CONTROL, DQUOTE, ";", ":", ","."""
-
-    _ranges: UnicodeRangeList = [
-        (0x21,),  # Control charts before 0x21. 0x22 is "
-        (0x23, 0x2B),  # 0x2C is ,
-        (0x2D, 0x39),  # 0x3A is : and 0x3B is ;
-        (0x3C, 0x7E),  # 0x7E is DEL (control)
-    ]
-
-
-SAFE_CHAR = "".join(WSP + SafeChar.all() + NON_US_ASCII)
-
-
-class ValueChar(CharRange):
-    """Any textual character."""
-
-    _ranges: UnicodeRangeList = [
-        (0x21, 0x7E),
-    ]
-
-
-VALUE_CHAR = "".join(
-    WSP + ValueChar.all() + NON_US_ASCII + BasicMultilingualPlane.all()
-)
\ No newline at end of file
diff -pruN 9.0.0-2/ical/recur_adapter.py 12.1.0-1/ical/recur_adapter.py
--- 9.0.0-2/ical/recur_adapter.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/recur_adapter.py	2025-11-14 02:06:41.000000000 +0000
@@ -70,7 +70,7 @@ class RecurAdapter(Generic[ItemType]):
                 updates["dtend"] = dtend
             if isinstance(self._item, Todo) and self._item.due and dtend:
                 updates["due"] = dtend
-            return cast(ItemType, self._item.copy(update=updates))
+            return cast(ItemType, self._item.model_copy(update=updates))
 
         ts = Timespan.of(dtstart, dtend, self._tzinfo)
         return LazySortableItem(ts, build)
diff -pruN 9.0.0-2/ical/recurrence.py 12.1.0-1/ical/recurrence.py
--- 9.0.0-2/ical/recurrence.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/recurrence.py	2025-11-14 02:06:41.000000000 +0000
@@ -11,25 +11,24 @@ from __future__ import annotations
 import datetime
 import logging
 from collections.abc import Iterable
-from typing import Any, Optional, Union, Self
+from typing import Annotated, Union, Self
 
 from dateutil import rrule
-from pydantic.v1 import BaseModel, Field
+from pydantic import BeforeValidator, ConfigDict, Field, field_serializer
 
 from .parsing.property import (
-    ParsedProperty,
-    ParsedPropertyParameter,
-    parse_basic_ics_properties,
+    parse_contentlines,
 )
 from .parsing.component import ParsedComponent
 
-from .types.data_types import DATA_TYPE
+from .types.data_types import serialize_field
 from .types.date import DateEncoder
 from .types.recur import Recur
 from .types.date_time import DateTimeEncoder
 from .component import ComponentModel
 from .exceptions import CalendarParseError
 from .iter import RulesetIterable
+from .util import parse_date_and_datetime, parse_date_and_datetime_list
 
 
 _LOGGER = logging.getLogger(__name__)
@@ -38,16 +37,25 @@ _LOGGER = logging.getLogger(__name__)
 class Recurrences(ComponentModel):
     """A common set of recurrence related properties for calendar components."""
 
-    dtstart: Optional[Union[datetime.datetime | datetime.date]] = None
+    dtstart: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = None
     """The start date for the event."""
 
     rrule: list[Recur] = Field(default_factory=list)
     """The recurrence rule for the event."""
 
-    rdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    rdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """Dates for the event."""
 
-    exdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    exdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """Excluded dates for the event."""
 
     @classmethod
@@ -59,14 +67,16 @@ class Recurrences(ComponentModel):
         from a calendar component only.
         """
         try:
-            properties = list(parse_basic_ics_properties(contentlines))
+            properties = list(parse_contentlines(contentlines))
         except ValueError as err:
-            raise CalendarParseError(f"Failed to parse recurrence: {err}") from err
+            raise CalendarParseError(
+                "Failed to parse recurrence", detailed_error=str(err)
+            ) from err
         component = ParsedComponent(
             name="recurrences",  # Not used in the model
             properties=properties,
         )
-        return cls.parse_obj(component.as_dict())
+        return cls.model_validate(component.as_dict())
 
     def as_rrule(
         self, dtstart: datetime.date | datetime.datetime | None = None
@@ -87,9 +97,8 @@ class Recurrences(ComponentModel):
         """Serialize the recurrence rules as strings."""
         return [prop.ics() for prop in self.__encode_component_root__().properties]
 
-    class Config:
-        """Configuration for IcsCalendarStream pydantic model."""
-
-        json_encoders = DATA_TYPE.encode_property_json
-        validate_assignment = True
-        allow_population_by_field_name = True
+    model_config = ConfigDict(
+        validate_assignment=True,
+        populate_by_name=True,
+    )
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/store.py 12.1.0-1/ical/store.py
--- 9.0.0-2/ical/store.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/store.py	2025-11-14 02:06:41.000000000 +0000
@@ -16,12 +16,13 @@ from collections.abc import Callable, It
 from typing import Any, TypeVar, Generic, cast
 
 from .calendar import Calendar
+from .component import validate_recurrence_dates
 from .event import Event
 from .exceptions import StoreError, TodoStoreError, EventStoreError
 from .iter import RulesetIterable
 from .list import todo_list_view
 from .timezone import Timezone
-from .todo import Todo
+from .todo import Todo, TodoStatus
 from .types import Range, Recur, RecurrenceId, RelationshipType
 from .tzif.timezoneinfo import TimezoneInfoError
 from .util import dtstamp_factory, local_timezone
@@ -39,23 +40,26 @@ __all__ = [
 ]
 
 _T = TypeVar("_T", bound="Event | Todo")
+# We won't be able to edit dates more than 100 years in the future, but this
+# should be sufficient for most use cases.
+_MAX_SCAN_DATE = datetime.date.today() + datetime.timedelta(days=365 * 100)
 
 
 def _ensure_timezone(
-    dtstart: datetime.datetime | datetime.date | None, timezones: list[Timezone]
+    dtvalue: datetime.datetime | datetime.date | None, timezones: list[Timezone]
 ) -> Timezone | None:
     """Create a timezone object for the specified date if it does not already exist."""
     if (
-        not isinstance(dtstart, datetime.datetime)
-        or not dtstart.utcoffset()
-        or not dtstart.tzinfo
+        not isinstance(dtvalue, datetime.datetime)
+        or not dtvalue.utcoffset()
+        or not dtvalue.tzinfo
     ):
         return None
 
     # Verify this timezone does not already exist. The number of timezones
     # in a calendar is typically very small so iterate over the whole thing
     # to avoid any synchronization/cache issues.
-    key = str(dtstart.tzinfo)
+    key = str(dtvalue.tzinfo)
     for timezone in timezones:
         if timezone.tz_id == key:
             return None
@@ -85,7 +89,21 @@ def _match_item(item: _T, uid: str, recu
         "Expanding item %s %s to look for match of %s", uid, item.dtstart, recurrence_id
     )
     dtstart = RecurrenceId.to_value(recurrence_id)
+    if isinstance(dtstart, datetime.datetime) and isinstance(
+        item.dtstart, datetime.datetime
+    ):
+        # The recurrence_id does not support timezone information, so put it in the
+        # same timezone as the item to compare.
+        if item.dtstart.tzinfo is not None:
+            dtstart = dtstart.replace(tzinfo=item.dtstart.tzinfo)
     for dt in item.as_rrule() or ():
+        if isinstance(dt, datetime.datetime):
+            if dt.date() > _MAX_SCAN_DATE:
+                _LOGGER.debug("Aborting scan, date %s is beyond max scan date", dt)
+                break
+        elif dt > _MAX_SCAN_DATE:
+            _LOGGER.debug("Aborting scan, date %s is beyond max scan date", dt)
+            break
         if dt == dtstart:
             _LOGGER.debug("Found expanded recurrence_id: %s", dt)
             return True
@@ -108,7 +126,7 @@ def _prepare_update(
     recurrence_range: Range = Range.NONE,
 ) -> dict[str, Any]:
     """Prepare an update to an existing event."""
-    partial_update = item.dict(
+    partial_update = item.model_dump(
         exclude_unset=True,
         exclude={"dtstamp", "uid", "sequence", "created", "last_modified"},
     )
@@ -120,8 +138,21 @@ def _prepare_update(
         **partial_update,
         "dtstamp": item.dtstamp,
     }
+    if (
+        isinstance(item, Todo)
+        and isinstance(store_item, Todo)
+        and item.status
+        and not item.completed
+    ):
+        if (
+            store_item.status != TodoStatus.COMPLETED
+            and item.status == TodoStatus.COMPLETED
+        ):
+            update["completed"] = item.dtstamp
+        if store_item.completed and item.status != TodoStatus.COMPLETED:
+            update["completed"] = None
     if rrule := update.get("rrule"):
-        update["rrule"] = Recur.parse_obj(rrule)
+        update["rrule"] = Recur.model_validate(rrule)
     if recurrence_id and store_item.rrule:
         # Forking a new event off the old event preserves the original uid and
         # recurrence_id.
@@ -191,6 +222,12 @@ class GenericStore(Generic[_T]):
                 update["dtstart"] = item.due - datetime.timedelta(days=1)
             else:
                 update["dtstart"] = datetime.datetime.now(tz=self._tzinfo)
+        if (
+            isinstance(item, Todo)
+            and not item.completed
+            and item.status == TodoStatus.COMPLETED
+        ):
+            update["completed"] = item.dtstamp
         new_item = cast(_T, item.copy_and_validate(update=update))
 
         # The store can only manage cascading deletes for some relationship types
@@ -200,6 +237,8 @@ class GenericStore(Generic[_T]):
 
         _LOGGER.debug("Adding item: %s", new_item)
         self._ensure_timezone(item.dtstart)
+        if isinstance(item, Event) and item.dtend:
+            self._ensure_timezone(item.dtend)
         self._items.append(new_item)
         return new_item
 
@@ -215,7 +254,7 @@ class GenericStore(Generic[_T]):
         either the whole item or instances of an item may be deleted. To
         delete the complete range of a recurring item, the `uid` property
         for the item must be specified and the `recurrence_id` should not
-        be specified. To delete an individual instances of the item the
+        be specified. To delete an individual instance of the item the
         `recurrence_id` must be specified.
 
         When deleting individual instances, the range property may specify
@@ -267,6 +306,14 @@ class GenericStore(Generic[_T]):
         if recurrence_range == Range.NONE:
             # A single recurrence instance is removed. Add an exclusion to
             # to the event.
+            # RecurrenceId does not support timezone information. The exclusion
+            # must have the same timezone as the item to compare.
+            if (
+                isinstance(exdate, datetime.datetime)
+                and isinstance(store_item.dtstart, datetime.datetime)
+                and store_item.dtstart.tzinfo
+            ):
+                exdate = exdate.replace(tzinfo=store_item.dtstart.tzinfo)
             store_item.exdate.append(exdate)
             return
 
@@ -276,6 +323,12 @@ class GenericStore(Generic[_T]):
         # is the lowest frequency supported so subtracting one day is
         # safe and works for both dates and datetimes.
         store_item.rrule.count = None
+        if (
+            isinstance(exdate, datetime.datetime)
+            and isinstance(store_item.dtstart, datetime.datetime)
+            and store_item.dtstart.tzinfo
+        ):
+            exdate = exdate.astimezone(datetime.timezone.utc)
         store_item.rrule.until = exdate - datetime.timedelta(days=1)
         now = self._dtstamp_fn()
         store_item.dtstamp = now
@@ -377,6 +430,8 @@ class GenericStore(Generic[_T]):
                 raise self._exc(f"Unsupported relationship type {relation.reltype}")
 
         self._ensure_timezone(new_item.dtstart)
+        if isinstance(new_item, Event) and new_item.dtend:
+            self._ensure_timezone(new_item.dtend)
 
         # Editing a single instance of a recurring item is like deleting that instance
         # then adding a new instance on the specified date. If recurrence id is not
@@ -389,9 +444,9 @@ class GenericStore(Generic[_T]):
         self._items.insert(store_index, new_item)
 
     def _ensure_timezone(
-        self, dtstart: datetime.datetime | datetime.date | None
+        self, dtvalue: datetime.datetime | datetime.date | None
     ) -> None:
-        if (new_timezone := _ensure_timezone(dtstart, self._timezones)) is not None:
+        if (new_timezone := _ensure_timezone(dtvalue, self._timezones)) is not None:
             self._timezones.append(new_timezone)
 
 
diff -pruN 9.0.0-2/ical/timespan.py 12.1.0-1/ical/timespan.py
--- 9.0.0-2/ical/timespan.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/timespan.py	2025-11-14 02:06:41.000000000 +0000
@@ -41,7 +41,7 @@ class Timespan:
         end: datetime.date | datetime.datetime,
         tzinfo: datetime.tzinfo | None = None,
     ) -> "Timespan":
-        """Create a Timestapn for the specified date range."""
+        """Create a Timespan for the specified date range."""
         return Timespan(
             normalize_datetime(start, tzinfo), normalize_datetime(end, tzinfo)
         )
diff -pruN 9.0.0-2/ical/timezone.py 12.1.0-1/ical/timezone.py
--- 9.0.0-2/ical/timezone.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/timezone.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,7 +2,7 @@
 
 An iCal timezone is a complete description of a timezone, separate
 from the built-in timezones used by python datetime objects. You can
-think of this like fully persisting all timezone informating referenced
+think of this like fully persisting all timezone information referenced
 in the calendar for dates to reference. Timezones are captured to
 unambiguously describe time information to aid in interoperability between
 different calendaring systems.
@@ -12,24 +12,31 @@ different calendaring systems.
 
 from __future__ import annotations
 
+import copy
+import traceback
 import datetime
 import enum
 import logging
 from dataclasses import dataclass
-from typing import Any, Iterable, Optional, Union
+from typing import Annotated, Any, Iterable, Optional, Self, Union
 
 from dateutil.rrule import rruleset
+from pydantic import (
+    BeforeValidator,
+    Field,
+    field_serializer,
+    field_validator,
+    model_validator,
+)
 
-try:
-    from pydantic.v1 import Field, root_validator, validator
-except ImportError:
-    from pydantic import Field, root_validator, validator  # type: ignore[no-redef, assignment]
+from ical.types.data_types import serialize_field
 
 from .component import ComponentModel
 from .iter import MergedIterable, RecurIterable
 from .parsing.property import ParsedProperty
 from .types import Recur, Uri, UtcOffset
 from .tzif import timezoneinfo, tz_rule
+from .util import parse_date_and_datetime_list
 
 __all__ = [
     "Timezone",
@@ -51,7 +58,7 @@ class Observance(ComponentModel):
     """A sub-component with properties for a set of timezone observances."""
 
     # Has an alias of 'start'
-    dtstart: datetime.datetime = Field(default_factory=None)
+    dtstart: Optional[datetime.datetime] = Field(default=None)
     """The first onset datetime (local time) for the observance."""
 
     tz_offset_to: UtcOffset = Field(alias="tzoffsetto")
@@ -66,7 +73,10 @@ class Observance(ComponentModel):
     rrule: Optional[Recur] = None
     """The recurrence rule for the onset of observances defined in this sub-component."""
 
-    rdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    rdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """A rule to determine the onset of the observances defined in this sub-component."""
 
     tz_name: list[str] = Field(alias="tzname", default_factory=list)
@@ -86,24 +96,28 @@ class Observance(ComponentModel):
     @property
     def start_datetime(self) -> datetime.datetime:
         """Return the start of the observance."""
+        assert self.dtstart is not None
         return self.dtstart
 
     def as_ruleset(self) -> rruleset:
         """Represent the occurrence as a rule of repeated dates or datetimes."""
         ruleset = rruleset()
         if self.rrule:
-            ruleset.rrule(self.rrule.as_rrule(self.dtstart))
+            ruleset.rrule(self.rrule.as_rrule(self.start_datetime))
         for rdate in self.rdate:
-            ruleset.rdate(rdate)  # type: ignore[no-untyped-call]
+            ruleset.rdate(rdate)
         return ruleset
 
-    @validator("dtstart", allow_reuse=True)
+    @field_validator("dtstart")
+    @classmethod
     def verify_dtstart_local_time(cls, value: datetime.datetime) -> datetime.datetime:
         """Validate that dtstart is specified in a local time."""
         if value.utcoffset() is not None:
             raise ValueError(f"Start time must be in local time format: {value}")
         return value
 
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
+
 
 class _ObservanceType(str, enum.Enum):
     """Type of a timezone observance."""
@@ -180,7 +194,7 @@ class Timezone(ComponentModel):
             and rule.dst_end
             and isinstance(rule.dst_end, tz_rule.RuleDate)
         ):
-            std_timezone_info.rrule = Recur.parse_obj(
+            std_timezone_info.rrule = Recur.model_validate(
                 Recur.__parse_property_value__(rule.dst_end.rrule_str)
             )
             std_timezone_info.dtstart = rule.dst_end.rrule_dtstart(start)
@@ -189,15 +203,13 @@ class Timezone(ComponentModel):
                     tz_name=[rule.dst.name],
                     tz_offset_to=UtcOffset(offset=rule.dst.offset),
                     tz_offset_from=UtcOffset(offset=rule.std.offset),
-                    rrule=Recur.parse_obj(
+                    rrule=Recur.model_validate(
                         Recur.__parse_property_value__(rule.dst_start.rrule_str)
                     ),
                     dtstart=rule.dst_start.rrule_dtstart(start),
                 )
             )
-        # https://github.com/pydantic/pydantic/issues/3923 is not working even
-        # when the model config allows population by name. Try again on v2.
-        return Timezone(tz_id=key, standard=[std_timezone_info], daylight=daylight)  # type: ignore[call-arg]
+        return Timezone(tz_id=key, standard=[std_timezone_info], daylight=daylight)
 
     def _observances(
         self,
@@ -235,7 +247,7 @@ class Timezone(ComponentModel):
         return iters
 
     def get_observance(self, value: datetime.datetime) -> _ObservanceInfo | None:
-        """Return the specified observence for the specified date."""
+        """Return the specified observance for the specified date."""
         if value.tzinfo is not None:
             raise ValueError("Start time must be in local time format")
         last_observance_info: _ObservanceInfo | None = None
@@ -245,14 +257,16 @@ class Timezone(ComponentModel):
             last_observance_info = observance_info
         return last_observance_info
 
-    @root_validator
-    def parse_required_timezoneinfo(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def parse_required_timezoneinfo(self) -> Self:
         """Require at least one standard or daylight definition."""
-        standard = values.get("standard")
-        daylight = values.get("daylight")
+        standard = self.standard
+        daylight = self.daylight
         if not standard and not daylight:
             raise ValueError("At least one standard or daylight definition is required")
-        return values
+        return self
+
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
 
 class IcsTimezoneInfo(datetime.tzinfo):
@@ -268,6 +282,12 @@ class IcsTimezoneInfo(datetime.tzinfo):
         """Initialize IcsTimezoneInfo."""
         self._timezone = timezone
 
+    def __deepcopy__(self, memo: Any) -> IcsTimezoneInfo:
+        """Return a deep copy of the timezone object."""
+        return IcsTimezoneInfo(
+            timezone=copy.deepcopy(self._timezone, memo),
+        )
+
     @classmethod
     def from_timezone(cls, timezone: Timezone) -> IcsTimezoneInfo:
         """Create a new instance of an IcsTimezoneInfo."""
@@ -306,6 +326,10 @@ class IcsTimezoneInfo(datetime.tzinfo):
         """A string representation of the timezone object."""
         return self._timezone.tz_id
 
+    def __repr__(self) -> str:
+        """A string representation of the timezone object."""
+        return f"{self.__class__.__name__}({self._timezone.tz_id})"
+
 
 class TimezoneModel(ComponentModel):
     """A parser of a calendar that just parses timezone data.
diff -pruN 9.0.0-2/ical/todo.py 12.1.0-1/ical/todo.py
--- 9.0.0-2/ical/todo.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/todo.py	2025-11-14 02:06:41.000000000 +0000
@@ -13,16 +13,20 @@ from __future__ import annotations
 from collections.abc import Iterable
 import datetime
 import enum
-from typing import Any, Optional, Union
+from typing import Annotated, Any, Optional, Self, Union
 import logging
 
-try:
-    from pydantic.v1 import Field, root_validator
-except ImportError:
-    from pydantic import Field, root_validator  # type: ignore[no-redef, assignment]
+from pydantic import BeforeValidator, Field, field_serializer, model_validator
+
+from ical.types.data_types import serialize_field
 
 from .alarm import Alarm
-from .component import ComponentModel, validate_until_dtstart, validate_recurrence_dates
+from .component import (
+    ComponentModel,
+    validate_duration_unit,
+    validate_until_dtstart,
+    validate_recurrence_dates,
+)
 from .exceptions import CalendarParseError
 from .iter import RulesetIterable, as_rrule
 from .parsing.property import ParsedProperty
@@ -38,7 +42,14 @@ from .types import (
     Uri,
     RelatedTo,
 )
-from .util import dtstamp_factory, normalize_datetime, uid_factory, local_timezone
+from .util import (
+    dtstamp_factory,
+    normalize_datetime,
+    parse_date_and_datetime,
+    parse_date_and_datetime_list,
+    uid_factory,
+    local_timezone,
+)
 
 
 _LOGGER = logging.getLogger(__name__)
@@ -56,7 +67,7 @@ class TodoStatus(str, enum.Enum):
 class Todo(ComponentModel):
     """A calendar todo component."""
 
-    dtstamp: Union[datetime.datetime, datetime.date] = Field(
+    dtstamp: Union[datetime.date, datetime.datetime] = Field(
         default_factory=dtstamp_factory
     )
     """Specifies the date and time the item was created."""
@@ -95,10 +106,16 @@ class Todo(ComponentModel):
     """A more complete description of the item than provided by the summary."""
 
     # Has alias of 'start'
-    dtstart: Union[datetime.datetime, datetime.date, None] = None
+    dtstart: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = None
     """The start time or start day of the item."""
 
-    due: Union[datetime.datetime, datetime.date, None] = None
+    due: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = None
 
     duration: Optional[datetime.timedelta] = None
     """The duration of the item as an alternative to an explicit end date/time."""
@@ -110,7 +127,7 @@ class Todo(ComponentModel):
         alias="last-modified", default=None
     )
 
-    location: str = ""
+    location: Optional[str] = None
     """Defines the intended venue for the activity defined by this item."""
 
     organizer: Optional[CalAddress] = None
@@ -119,9 +136,9 @@ class Todo(ComponentModel):
     percent: Optional[int] = None
 
     priority: Optional[Priority] = None
-    """Defines the relative priorirty of the todo item."""
+    """Defines the relative priority of the todo item."""
 
-    recurrence_id: Optional[RecurrenceId] = Field(alias="recurrence-id")
+    recurrence_id: Optional[RecurrenceId] = Field(default=None, alias="recurrence-id")
     """Defines a specific instance of a recurring item.
 
     The full range of items specified by a recurrence set is referenced
@@ -133,8 +150,8 @@ class Todo(ComponentModel):
     """Used to represent a relationship or reference between events."""
 
     request_status: Optional[RequestStatus] = Field(
+        default=None,
         alias="request-status",
-        default_value=None,
     )
 
     rrule: Optional[Recur] = None
@@ -150,7 +167,10 @@ class Todo(ComponentModel):
     sure all instances have the same start time regardless of time zone changing.
     """
 
-    rdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    rdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """Defines the list of date/time values for recurring events.
 
     Can appear along with the rrule property to define a set of repeating occurrences of the
@@ -159,7 +179,10 @@ class Todo(ComponentModel):
     and rdate properties then excluding any times specified by exdate.
     """
 
-    exdate: list[Union[datetime.datetime, datetime.date]] = Field(default_factory=list)
+    exdate: Annotated[
+        list[Union[datetime.date, datetime.datetime]],
+        BeforeValidator(parse_date_and_datetime_list),
+    ] = Field(default_factory=list)
     """Defines the list of exceptions for recurring events.
 
     The exception dates are used in computing the recurrence set. The recurrence set is
@@ -172,7 +195,7 @@ class Todo(ComponentModel):
     """The revision sequence number in the calendar component.
 
     When an event is created, its sequence number is 0. It is monotonically incremented
-    by the organizers calendar user agent every time a significant revision is made to
+    by the organizer's calendar user agent every time a significant revision is made to
     the calendar event.
     """
 
@@ -215,18 +238,46 @@ class Todo(ComponentModel):
         return normalize_datetime(self.dtstart).astimezone(tz=datetime.timezone.utc)
 
     @property
-    def computed_duration(self) -> datetime.timedelta | None:
-        """Return the event duration."""
-        if self.due is None or self.dtstart is None:
-            return None
-        return self.due - self.dtstart
+    def end(self) -> datetime.datetime | datetime.date | None:
+        """Return due if it's defined, or dtstart + duration if they're defined.
+
+        RFC5545 doesn't define end time for other cases but this method implements the
+        same rules as the one on VEVENT:
+        if dtstart is a date, the next day is returned, otherwise the dtstart is returned.
+        """
+
+        if self.due:
+            return self.due
+        if self.duration is not None:
+            assert self.dtstart is not None
+            return self.dtstart + self.duration
+        if type(self.dtstart) is datetime.date:
+            return self.dtstart + datetime.timedelta(days=1)
+
+        # whenever dtstart is not None, end is not None
+        return self.dtstart
+
+    @property
+    def computed_duration(self) -> datetime.timedelta:
+        """Return the event duration. If duration is set, return it;
+        if dtstart is set, take due (set or calculated) and return the difference. Otherwise return 1 day.
+
+        If dtstart is a datetime and neither due nor duration is set, due is assumed to be equal to dtstart
+        and the result is zero."""
+        if self.duration:
+            return self.duration
+        if self.dtstart:
+            assert self.end
+            return self.end - self.dtstart
+        return datetime.timedelta(days=1)
 
     def is_due(self, tzinfo: datetime.tzinfo | None = None) -> bool:
         """Return true if the todo is due."""
         if tzinfo is None:
             tzinfo = local_timezone()
         now = datetime.datetime.now(tz=tzinfo)
-        return self.due is not None and normalize_datetime(self.due, tzinfo) < now
+        due = self.end
+        return due is not None and normalize_datetime(due, tzinfo) < now
 
     @property
     def timespan(self) -> Timespan:
@@ -234,12 +285,12 @@ class Todo(ComponentModel):
         return self.timespan_of(local_timezone())
 
     def timespan_of(self, tzinfo: datetime.tzinfo) -> Timespan:
-        """Return a timespan representing the item start and due date."""
+        """Return a timespan representing the item start and due date or start and duration if it's set."""
         dtstart = self.dtstart
-        dtend = self.due
+        dtend = self.end
         if dtstart is None:
             if dtend is None:
-                # A component with the DTSTART and DUE specifies a to-do that
+                # A component without the DTSTART or DUE specifies a to-do that
                 # will be associated with each successive calendar date, until
                 # it is completed.
                 dtstart = datetime.datetime.now(tzinfo).date()
@@ -261,7 +312,7 @@ class Todo(ComponentModel):
 
         A recurring event is typically evaluated specially on the list. The
         data model has a single todo, but the timeline evaluates the recurrence
-        to expand and copy the the event to multiple places on the timeline
+        to expand and copy the event to multiple places on the timeline
         using `as_rrule`.
         """
         if self.rrule or self.rdate:
@@ -273,39 +324,43 @@ class Todo(ComponentModel):
 
         A recurring todo is typically evaluated specially on the todo list. The
         data model has a single todo item, but the timeline evaluates the recurrence
-        to expand and copy the the item to multiple places on the timeline.
+        to expand and copy the item to multiple places on the timeline.
 
         This is only valid for events where `recurring` is True.
         """
         if not self.rrule and not self.rdate:
             return None
-        if not self.due:
-            raise CalendarParseError("Event must have a due date to be recurring")
+        if not self.due and not self.duration:
+            raise CalendarParseError("Event must have a due date or duration to be recurring")
         return as_rrule(self.rrule, self.rdate, self.exdate, self.dtstart)
 
-    @root_validator
-    def _validate_one_due_or_duration(cls, values: dict[str, Any]) -> dict[str, Any]:
+    _validate_until_dtstart = model_validator(mode="after")(validate_until_dtstart)
+    _validate_recurrence_dates = model_validator(mode="after")(
+        validate_recurrence_dates
+    )
+    _validate_duration_unit = model_validator(mode="after")(validate_duration_unit)
+
+    @model_validator(mode="after")
+    def _validate_one_due_or_duration(self) -> Self:
         """Validate that only one of duration or end date may be set."""
-        if values.get("due") and values.get("duration"):
-            raise ValueError("Only one of dtend or duration may be set." "")
-        return values
-
-    @root_validator
-    def _validate_duration_requires_start(
-        cls, values: dict[str, Any]
-    ) -> dict[str, Any]:
+        if self.due and self.duration:
+            raise ValueError("Only one of due or duration may be set.")
+        return self
+
+    @model_validator(mode="after")
+    def _validate_duration_requires_start(self) -> Self:
         """Validate that a duration requires the dtstart."""
-        if values.get("duration") and not values.get("dtstart"):
+        if self.duration and not self.dtstart:
             raise ValueError("Duration requires that dtstart is specified")
-        return values
+        return self
 
-    @root_validator(allow_reuse=True)
-    def _validate_date_types(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def _validate_date_types(self) -> Self:
         """Validate and repair due vs start values to ensure they are the same date or datetime type."""
-        dtstart = values.get("dtstart")
-        due = values.get("due")
+        dtstart = self.dtstart
+        due = self.due
         if not dtstart or not due:
-            return values
+            return self
         if isinstance(due, datetime.datetime):
             if not isinstance(dtstart, datetime.datetime):
                 _LOGGER.debug(
@@ -313,7 +368,7 @@ class Todo(ComponentModel):
                     dtstart,
                     due,
                 )
-                values["dtstart"] = datetime.datetime.combine(
+                self.dtstart = datetime.datetime.combine(
                     dtstart, datetime.time.min, tzinfo=due.tzinfo
                 )
         elif isinstance(due, datetime.date):
@@ -323,39 +378,39 @@ class Todo(ComponentModel):
                     dtstart,
                     due,
                 )
-                values["dtstart"] = dtstart.date()
-                _LOGGER.debug("values=%s", values)
-        return values
+                self.dtstart = dtstart.date()
+                _LOGGER.debug("values=%s", self)
+        return self
 
-    @root_validator(allow_reuse=True)
-    def _validate_datetime_timezone(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def _validate_datetime_timezone(self) -> Self:
         """Validate that start and due values have the same timezone information."""
         if (
-            not (dtstart := values.get("dtstart"))
-            or not (due := values.get("due"))
+            not (dtstart := self.dtstart)
+            or not (due := self.due)
             or not isinstance(dtstart, datetime.datetime)
             or not isinstance(due, datetime.datetime)
         ):
-            return values
+            return self
         if dtstart.tzinfo is None and due.tzinfo is not None:
             raise ValueError(f"Expected due datetime value in localtime but was {due}")
         if dtstart.tzinfo is not None and due.tzinfo is None:
             raise ValueError(f"Expected due datetime with timezone but was {due}")
-        return values
+        return self
 
-    @root_validator
-    def _validate_due_later(cls, values: dict[str, Any]) -> dict[str, Any]:
+    @model_validator(mode="after")
+    def _validate_due_later(self) -> Self:
         """Validate that the due property is later than dtstart."""
-        if not (due := values.get("due")) or not (dtstart := values.get("dtstart")):
-            return values
+        if not (due := self.due) or not (dtstart := self.dtstart):
+            return self
         if due <= dtstart:
             _LOGGER.debug(
                 "Due date %s is earlier than start date %s, adjusting start date",
                 due,
                 dtstart,
             )
-            values["dtstart"] = due - datetime.timedelta(days=1)
-        return values
+            self.dtstart = due - datetime.timedelta(days=1)
+        return self
 
     @classmethod
     def _parse_single_property(cls, field_type: type, prop: ParsedProperty) -> Any:
@@ -374,7 +429,4 @@ class Todo(ComponentModel):
                 return None
             raise err
 
-    _validate_until_dtstart = root_validator(allow_reuse=True)(validate_until_dtstart)
-    _validate_recurrence_dates = root_validator(allow_reuse=True)(
-        validate_recurrence_dates
-    )
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/types/__init__.py 12.1.0-1/ical/types/__init__.py
--- 9.0.0-2/ical/types/__init__.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/__init__.py	2025-11-14 02:06:41.000000000 +0000
@@ -4,7 +4,7 @@
 from . import integer  # noqa: F401
 from . import boolean, date, date_time, duration  # noqa: F401
 from . import float as float_pkg  # noqa: F401
-from .cal_address import CalAddress
+from .cal_address import CalAddress, Role, CalendarUserType, ParticipationStatus
 from .const import Classification
 from .geo import Geo
 from .period import FreeBusyType, Period
@@ -17,6 +17,7 @@ from .utc_offset import UtcOffset
 
 __all__ = [
     "CalAddress",
+    "CalendarUserType",
     "Classification",
     "Frequency",
     "FreeBusyType",
@@ -29,6 +30,8 @@ __all__ = [
     "RelatedTo",
     "RelationshipType",
     "RequestStatus",
+    "Role",
+    "ParticipationStatus",
     "UtcOffset",
     "Uri",
     "Weekday",
diff -pruN 9.0.0-2/ical/types/cal_address.py 12.1.0-1/ical/types/cal_address.py
--- 9.0.0-2/ical/types/cal_address.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/cal_address.py	2025-11-14 02:06:41.000000000 +0000
@@ -7,11 +7,7 @@ import enum
 import logging
 from typing import Any, Optional
 
-try:
-    from pydantic.v1 import BaseModel, Field, root_validator
-except ImportError:
-    from pydantic import BaseModel, Field, root_validator  # type: ignore[no-redef, assignment]
-
+from pydantic import BaseModel, ConfigDict, Field, model_validator
 
 from ical.parsing.property import ParsedPropertyParameter
 
@@ -96,9 +92,7 @@ class CalAddress(BaseModel):
 
     language: Optional[str] = Field(alias="LANGUAGE", default=None)
 
-    _parse_parameter_values = root_validator(pre=True, allow_reuse=True)(
-        parse_parameter_values
-    )
+    _parse_parameter_values = model_validator(mode="before")(parse_parameter_values)
 
     __parse_property_value__ = dataclasses.asdict
 
@@ -110,9 +104,6 @@ class CalAddress(BaseModel):
     def __encode_property_params__(
         cls, model_data: dict[str, Any]
     ) -> list[ParsedPropertyParameter]:
-        return encode_model_property_params(cls.__fields__.values(), model_data)
-
-    class Config:
-        """Pyandtic model configuration."""
+        return encode_model_property_params(cls.model_fields, model_data)
 
-        allow_population_by_field_name = True
+    model_config = ConfigDict(populate_by_name=True, arbitrary_types_allowed=True)
diff -pruN 9.0.0-2/ical/types/const.py 12.1.0-1/ical/types/const.py
--- 9.0.0-2/ical/types/const.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/const.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,11 +1,25 @@
 """Constants and enums representing rfc5545 values."""
 
 import enum
+from typing import Self
 
+from ical.parsing.property import ParsedProperty
 
+from .data_types import DATA_TYPE
+
+
+@DATA_TYPE.register("CLASS")
 class Classification(str, enum.Enum):
     """Defines the access classification for a calendar component."""
 
     PUBLIC = "PUBLIC"
     PRIVATE = "PRIVATE"
     CONFIDENTIAL = "CONFIDENTIAL"
+
+    @classmethod
+    def __parse_property_value__(cls, prop: ParsedProperty) -> Self | None:
+        """Parse value into enum."""
+        try:
+            return cls(prop.value)
+        except ValueError:
+            return None
diff -pruN 9.0.0-2/ical/types/data_types.py 12.1.0-1/ical/types/data_types.py
--- 9.0.0-2/ical/types/data_types.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/data_types.py	2025-11-14 02:06:41.000000000 +0000
@@ -4,14 +4,13 @@ from __future__ import annotations
 
 import logging
 from collections.abc import Callable
-from typing import Any, Iterable, Protocol, TypeVar
+from typing import Any, Protocol, TypeVar, get_origin
 
-try:
-    from pydantic.v1.fields import SHAPE_LIST, ModelField
-except ImportError:
-    from pydantic.fields import SHAPE_LIST, ModelField  # type: ignore[attr-defined, no-redef]
+from pydantic import BaseModel, SerializationInfo
+from pydantic.fields import FieldInfo
 
 from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
+from ical.util import get_field_type
 
 _LOGGER = logging.getLogger(__name__)
 
@@ -149,18 +148,40 @@ DATA_TYPE: Registry = Registry()
 
 
 def encode_model_property_params(
-    fields: Iterable[ModelField], model_data: dict[str, Any]
+    fields: dict[str, FieldInfo], model_data: dict[str, Any]
 ) -> list[ParsedPropertyParameter]:
     """Encode a pydantic model's parameters as property params."""
     params = []
-    for field in fields:
-        key = field.alias
+    for name, field in fields.items():
+        key = field.alias or name
         if key == "value" or (values := model_data.get(key)) is None:
             continue
-        if field.shape != SHAPE_LIST:
+        annotation = get_field_type(field.annotation)
+        origin = get_origin(annotation)
+        if origin is not list:
             values = [values]
-        if field.type_ is bool:
+        if annotation is bool:
             encoder = DATA_TYPE.encode_property_value[bool]
             values = [encoder(value) for value in values]
         params.append(ParsedPropertyParameter(name=key, values=values))
     return params
+
+
+def serialize_field(self: BaseModel, value: Any, info: SerializationInfo) -> Any:
+    if not info.context or not info.context.get("ics"):
+        return value
+    if isinstance(value, list):
+        res = []
+        for val in value:
+            for base in val.__class__.__mro__[:-1]:
+                if (func := DATA_TYPE.encode_property_json.get(base)) is not None:
+                    res.append(func(val))
+                    break
+            else:
+                res.append(val)
+        return res
+
+    for base in value.__class__.__mro__[:-1]:
+        if (func := DATA_TYPE.encode_property_json.get(base)) is not None:
+            return func(value)
+    return value
diff -pruN 9.0.0-2/ical/types/date_time.py 12.1.0-1/ical/types/date_time.py
--- 9.0.0-2/ical/types/date_time.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/date_time.py	2025-11-14 02:06:41.000000000 +0000
@@ -9,7 +9,9 @@ import zoneinfo
 from typing import Any
 
 from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
-
+from ical.compat import timezone_compat
+from ical.tzif import timezoneinfo
+from ical.exceptions import ParameterValueError
 from .data_types import DATA_TYPE
 
 _LOGGER = logging.getLogger(__name__)
@@ -24,6 +26,9 @@ def parse_property_value(
     prop: ParsedProperty, allow_invalid_timezone: bool = False
 ) -> datetime.datetime:
     """Parse a rfc5545 into a datetime.datetime."""
+    if timezone_compat.is_allow_invalid_timezones_enabled():
+        allow_invalid_timezone = True
+
     if not (match := DATETIME_REGEX.fullmatch(prop.value)):
         raise ValueError(f"Expected value to match DATE-TIME pattern: {prop.value}")
 
@@ -37,11 +42,15 @@ def parse_property_value(
                 try:
                     timezone = zoneinfo.ZoneInfo(value)
                 except zoneinfo.ZoneInfoNotFoundError:
-                    if allow_invalid_timezone:
-                        timezone = None
-                    raise ValueError(
-                        f"Expected DATE-TIME TZID value '{value}' to be valid timezone"
-                    )
+                    try:
+                        timezone = timezoneinfo.read_tzinfo(value)
+                    except timezoneinfo.TimezoneInfoError:
+                        if allow_invalid_timezone:
+                            timezone = None
+                        else:
+                            raise ParameterValueError(
+                                f"Expected DATE-TIME TZID value '{value}' to be valid timezone"
+                            )
     elif match.group(3):  # Example: 19980119T070000Z
         timezone = datetime.timezone.utc
 
@@ -75,7 +84,7 @@ class DateTimeEncoder:
 
     @classmethod
     def __encode_property_json__(cls, value: datetime.datetime) -> str | dict[str, str]:
-        """Encode an ICS value during json serializaton."""
+        """Encode an ICS value during json serialization."""
         if value.tzinfo is None:
             return value.strftime("%Y%m%dT%H%M%S")
         # Does not yet handle timezones and encoding property parameters
diff -pruN 9.0.0-2/ical/types/duration.py 12.1.0-1/ical/types/duration.py
--- 9.0.0-2/ical/types/duration.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/duration.py	2025-11-14 02:06:41.000000000 +0000
@@ -10,8 +10,8 @@ from .data_types import DATA_TYPE
 DATE_PART = r"(\d+)D"
 TIME_PART = r"T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?"
 DATETIME_PART = f"(?:{DATE_PART})?(?:{TIME_PART})?"
-WEEKS_PART = r"(\d+)W"
-DURATION_REGEX = re.compile(f"([-+]?)P(?:{WEEKS_PART}|{DATETIME_PART})$")
+WEEKS_PART = r"(?:(\d+)W)?"
+DURATION_REGEX = re.compile(f"([-+]?)P(?:{WEEKS_PART}{DATETIME_PART})$")
 
 
 @DATA_TYPE.register("DURATION")
@@ -30,16 +30,13 @@ class DurationEncoder:
         if not (match := DURATION_REGEX.fullmatch(prop.value)):
             raise ValueError(f"Expected value to match DURATION pattern: {prop.value}")
         sign, weeks, days, hours, minutes, seconds = match.groups()
-        result: datetime.timedelta
-        if weeks:
-            result = datetime.timedelta(weeks=int(weeks))
-        else:
-            result = datetime.timedelta(
-                days=int(days or 0),
-                hours=int(hours or 0),
-                minutes=int(minutes or 0),
-                seconds=int(seconds or 0),
-            )
+        result: datetime.timedelta = datetime.timedelta(
+            weeks=int(weeks or 0),
+            days=int(days or 0),
+            hours=int(hours or 0),
+            minutes=int(minutes or 0),
+            seconds=int(seconds or 0),
+        )
         if sign == "-":
             result = -result
         return result
diff -pruN 9.0.0-2/ical/types/geo.py 12.1.0-1/ical/types/geo.py
--- 9.0.0-2/ical/types/geo.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/geo.py	2025-11-14 02:06:41.000000000 +0000
@@ -12,7 +12,7 @@ from .text import TextEncoder
 @DATA_TYPE.register("GEO")
 @dataclass
 class Geo:
-    """Information related tot he global position for an activity."""
+    """Information related to the global position for an activity."""
 
     lat: float
     lng: float
diff -pruN 9.0.0-2/ical/types/parsing.py 12.1.0-1/ical/types/parsing.py
--- 9.0.0-2/ical/types/parsing.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/parsing.py	2025-11-14 02:06:41.000000000 +0000
@@ -3,27 +3,28 @@
 from __future__ import annotations
 
 import logging
-from typing import Any
+from typing import Any, get_origin
 
-try:
-    from pydantic.v1 import BaseModel
-    from pydantic.v1.fields import SHAPE_LIST, ModelField
-except ImportError:
-    from pydantic import BaseModel  # type: ignore[assignment]
-    from pydantic.fields import SHAPE_LIST, ModelField  # type: ignore[attr-defined,no-redef]
+from pydantic import BaseModel
+from pydantic.fields import FieldInfo
+
+from ical.util import get_field_type
 
 _LOGGER = logging.getLogger(__name__)
 
 
-def _all_fields(cls: BaseModel) -> dict[str, ModelField]:
-    all_fields: dict[str, ModelField] = {}
-    for model_field in cls.__fields__.values():
-        all_fields[model_field.name] = model_field
-        all_fields[model_field.alias] = model_field
+def _all_fields(cls: type[BaseModel]) -> dict[str, FieldInfo]:
+    all_fields: dict[str, FieldInfo] = {}
+    for name, model_field in cls.model_fields.items():
+        all_fields[name] = model_field
+        if model_field.alias is not None:
+            all_fields[model_field.alias] = model_field
     return all_fields
 
 
-def parse_parameter_values(cls: BaseModel, values: dict[str, Any]) -> dict[str, Any]:
+def parse_parameter_values(
+    cls: type[BaseModel], values: dict[str, Any]
+) -> dict[str, Any]:
     """Convert property parameters to pydantic fields."""
     _LOGGER.debug("parse_parameter_values=%s", values)
     if params := values.get("params"):
@@ -31,7 +32,8 @@ def parse_parameter_values(cls: BaseMode
         for param in params:
             if not (field := all_fields.get(param["name"])):
                 continue
-            if field.shape == SHAPE_LIST:
+            annotation = get_field_type(field.annotation)
+            if get_origin(annotation) is list:
                 values[param["name"]] = param["values"]
             else:
                 if len(param["values"]) > 1:
diff -pruN 9.0.0-2/ical/types/period.py 12.1.0-1/ical/types/period.py
--- 9.0.0-2/ical/types/period.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/period.py	2025-11-14 02:06:41.000000000 +0000
@@ -4,16 +4,13 @@ import dataclasses
 import datetime
 import enum
 import logging
-from typing import Any, Optional
+from typing import Any, Optional, Self
 
-try:
-    from pydantic.v1 import BaseModel, Field, root_validator
-except ImportError:
-    from pydantic import BaseModel, Field, root_validator  # type: ignore[no-redef, assignment]
+from pydantic import BaseModel, ConfigDict, Field, field_serializer, model_validator
 
 from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
 
-from .data_types import DATA_TYPE, encode_model_property_params
+from .data_types import DATA_TYPE, encode_model_property_params, serialize_field
 from .date_time import DateTimeEncoder
 from .duration import DurationEncoder
 from .parsing import parse_parameter_values
@@ -21,6 +18,7 @@ from .parsing import parse_parameter_val
 _LOGGER = logging.getLogger(__name__)
 
 
+@DATA_TYPE.register("FBTYPE")
 class FreeBusyType(str, enum.Enum):
     """Specifies the free/busy time type."""
 
@@ -36,6 +34,14 @@ class FreeBusyType(str, enum.Enum):
     BUSY_TENTATIVE = "BUSY-TENTATIVE"
     """One or more events have been tentatively scheduled for the interval."""
 
+    @classmethod
+    def __parse_property_value__(cls, prop: ParsedProperty) -> Self | None:
+        """Parse value into enum."""
+        try:
+            return cls(prop.value)
+        except ValueError:
+            return None
+
 
 @DATA_TYPE.register("PERIOD")
 class Period(BaseModel):
@@ -54,22 +60,21 @@ class Period(BaseModel):
     free_busy_type: Optional[FreeBusyType] = Field(alias="FBTYPE", default=None)
     """Specifies the free or busy time type."""
 
-    _parse_parameter_values = root_validator(pre=True, allow_reuse=True)(
-        parse_parameter_values
-    )
+    _parse_parameter_values = model_validator(mode="before")(parse_parameter_values)
 
     @property
     def end_value(self) -> datetime.datetime:
-        """A computed end value based on either or duration."""
+        """A computed end value based on either end or duration."""
         if self.end:
             return self.end
         if not self.duration:
             raise ValueError("Invalid period missing both end and duration")
         return self.start + self.duration
 
-    @root_validator(pre=True, allow_reuse=True)
+    @model_validator(mode="before")
+    @classmethod
     def parse_period_fields(cls, values: dict[str, Any]) -> dict[str, Any]:
-        """Parse a rfc5545 prioriry value."""
+        """Parse a rfc5545 priority value."""
         if not (value := values.pop("value", None)):
             return values
         parts = value.split("/")
@@ -127,7 +132,7 @@ class Period(BaseModel):
         cls, model_data: dict[str, Any]
     ) -> list[ParsedPropertyParameter]:
         return encode_model_property_params(
-            cls.__fields__.values(),
+            cls.model_fields,
             {
                 k: v
                 for k, v in model_data.items()
@@ -135,7 +140,5 @@ class Period(BaseModel):
             },
         )
 
-    class Config:
-        """Pyandtic model configuration."""
-
-        allow_population_by_field_name = True
+    model_config = ConfigDict(populate_by_name=True)
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
diff -pruN 9.0.0-2/ical/types/priority.py 12.1.0-1/ical/types/priority.py
--- 9.0.0-2/ical/types/priority.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/priority.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,7 +1,9 @@
-"""Parser for the the PRIORITY type."""
+"""Parser for the PRIORITY type."""
 
-from collections.abc import Callable
-from typing import Generator
+from typing import Any, Self
+
+from pydantic import GetCoreSchemaHandler
+from pydantic_core import CoreSchema, core_schema
 
 from ical.parsing.property import ParsedProperty
 
@@ -12,13 +14,17 @@ class Priority(int):
     """Defines relative priority for a calendar component."""
 
     @classmethod
-    def __get_validators__(cls) -> Generator[Callable, None, None]:  # type: ignore[type-arg]
-        yield cls.parse_priority
-
-    @classmethod
-    def parse_priority(cls, value: ParsedProperty) -> int:
+    def parse_priority(cls, value: ParsedProperty | int) -> Self:
         """Parse a rfc5545 into a text value."""
         priority = IntEncoder.__parse_property_value__(value)
         if priority < 0 or priority > 9:
             raise ValueError("Expected priority between 0-9")
-        return priority
+        return cls(priority)
+
+    @classmethod
+    def __get_pydantic_core_schema__(
+        cls, source_type: Any, handler: GetCoreSchemaHandler
+    ) -> CoreSchema:
+        return core_schema.no_info_before_validator_function(
+            cls.parse_priority, handler(source_type)
+        )
diff -pruN 9.0.0-2/ical/types/recur.py 12.1.0-1/ical/types/recur.py
--- 9.0.0-2/ical/types/recur.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/recur.py	2025-11-14 02:06:41.000000000 +0000
@@ -39,17 +39,23 @@ import enum
 import logging
 import re
 from dataclasses import dataclass
-from typing import Any, Optional, Union
+from typing import Annotated, Any, Literal, Optional, Union
 
 from dateutil import rrule
-try:
-    from pydantic.v1 import BaseModel, Field
-except ImportError:
-    from pydantic import BaseModel, Field # type: ignore[assignment]
+from pydantic import (
+    BaseModel,
+    BeforeValidator,
+    ConfigDict,
+    Field,
+    GetCoreSchemaHandler,
+    field_serializer,
+)
+from pydantic_core import CoreSchema, core_schema
 
 from ical.parsing.property import ParsedProperty
+from ical.util import parse_date_and_datetime
 
-from .data_types import DATA_TYPE
+from .data_types import DATA_TYPE, serialize_field
 from .date import DateEncoder
 from .date_time import DateTimeEncoder
 
@@ -91,7 +97,6 @@ class WeekdayValue:
         """Return the WeekdayValue as an encoded string."""
         return f"{self.occurrence or ''}{self.weekday}"
 
-
     def as_rrule_weekday(self) -> rrule.weekday:
         """Convert the occurrence to a weekday value."""
         wd = RRULE_WEEKDAY[self.weekday]
@@ -174,7 +179,7 @@ class RecurrenceId(str):
             value = cls._parse_value(value.value)
         if isinstance(value, str):
             value = cls._parse_value(value)
-        elif isinstance(value, datetime.datetime):
+        if isinstance(value, datetime.datetime):
             value = DateTimeEncoder.__encode_property_json__(value)
         elif isinstance(value, datetime.date):
             value = DateEncoder.__encode_property_json__(value)
@@ -190,8 +195,16 @@ class RecurrenceId(str):
             pass
         return str(value)
 
+    @classmethod
+    def __get_pydantic_core_schema__(
+        cls, source_type: Any, handler: GetCoreSchemaHandler
+    ) -> CoreSchema:
+        return core_schema.no_info_before_validator_function(
+            cls.__parse_property_value__, handler(source_type)
+        )
+
 
-RRULE_FREQ = {
+RRULE_FREQ: dict[Frequency, Literal[0, 1, 2, 3]] = {
     Frequency.DAILY: rrule.DAILY,
     Frequency.WEEKLY: rrule.WEEKLY,
     Frequency.MONTHLY: rrule.MONTHLY,
@@ -229,7 +242,10 @@ class Recur(BaseModel):
 
     freq: Frequency
 
-    until: Union[datetime.datetime, datetime.date, None] = None
+    until: Annotated[
+        Union[datetime.date, datetime.datetime, None],
+        BeforeValidator(parse_date_and_datetime),
+    ] = None
     """The inclusive end date of the recurrence, or the last instance."""
 
     count: Optional[int] = None
@@ -257,10 +273,7 @@ class Recur(BaseModel):
 
         byweekday: list[rrule.weekday] | None = None
         if self.by_weekday:
-            byweekday = [
-                weekday.as_rrule_weekday()
-                for weekday in self.by_weekday
-            ]
+            byweekday = [weekday.as_rrule_weekday() for weekday in self.by_weekday]
         return rrule.rrule(
             freq=freq,
             dtstart=dtstart,
@@ -277,19 +290,16 @@ class Recur(BaseModel):
     def as_rrule_str(self) -> str:
         """Return the Recur instance as an RRULE string."""
         return self.__encode_property_value__(
-            self.dict(by_alias=True, exclude_none=True, exclude_defaults=True)
+            self.model_dump(by_alias=True, exclude_none=True, exclude_defaults=True)
         )
 
     @classmethod
     def from_rrule(cls, rrule_str: str) -> Recur:
         """Create a Recur object from an RRULE string."""
-        return Recur.parse_obj(cls.__parse_property_value__(rrule_str))
-
-    class Config:
-        """Pydantic model configuration."""
+        return Recur.model_validate(cls.__parse_property_value__(rrule_str))
 
-        validate_assignment = True
-        allow_population_by_field_name = True
+    model_config = ConfigDict(validate_assignment=True, populate_by_name=True)
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
     @classmethod
     def __encode_property_value__(cls, data: dict[str, Any]) -> str:
@@ -314,6 +324,9 @@ class Recur(BaseModel):
                 value = DateEncoder.__encode_property_json__(value)
             elif isinstance(value, enum.Enum):
                 value = value.name
+            elif key == "interval" and value == 1:
+                # Filter not None default value
+                continue
             if not value:
                 continue
             result.append(f"{key.upper()}={value}")
diff -pruN 9.0.0-2/ical/types/relation.py 12.1.0-1/ical/types/relation.py
--- 9.0.0-2/ical/types/relation.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/relation.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,19 +2,18 @@
 
 import enum
 from dataclasses import dataclass
-from typing import Any
+from typing import Any, Self
 import logging
 
-try:
-    from pydantic.v1 import root_validator
-except ImportError:
-    from pydantic import root_validator # type: ignore[no-redef]
+from pydantic import model_validator
 
-from .data_types import DATA_TYPE
 from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
+
+from .data_types import DATA_TYPE
 from .parsing import parse_parameter_values
 
 
+@DATA_TYPE.register("RELATIONSHIP-TYPE")
 class RelationshipType(str, enum.Enum):
     """Type of hierarchical relationship associated with the calendar component."""
 
@@ -27,6 +26,14 @@ class RelationshipType(str, enum.Enum):
     SIBBLING = "SIBBLING"
     """Sibling relationship."""
 
+    @classmethod
+    def __parse_property_value__(cls, prop: ParsedProperty) -> Self | None:
+        """Parse value into enum."""
+        try:
+            return cls(prop.value)
+        except ValueError:
+            return None
+
 
 @DATA_TYPE.register("RELATED-TO")
 @dataclass
@@ -52,9 +59,7 @@ class RelatedTo:
             return data
         return {"uid": prop}
 
-    _parse_parameter_values = root_validator(pre=True, allow_reuse=True)(
-        parse_parameter_values
-    )
+    _parse_parameter_values = model_validator(mode="before")(parse_parameter_values)
 
     @classmethod
     def __encode_property_value__(cls, model_data: dict[str, str]) -> str | None:
diff -pruN 9.0.0-2/ical/types/uri.py 12.1.0-1/ical/types/uri.py
--- 9.0.0-2/ical/types/uri.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/uri.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,8 +2,12 @@
 
 from __future__ import annotations
 
+from typing import Any, Self
 from urllib.parse import urlparse
 
+from pydantic import GetCoreSchemaHandler
+from pydantic_core import CoreSchema, core_schema
+
 from ical.parsing.property import ParsedProperty
 
 from .data_types import DATA_TYPE
@@ -14,7 +18,17 @@ class Uri(str):
     """A value type for a property that contains a uniform resource identifier."""
 
     @classmethod
-    def __parse_property_value__(cls, prop: ParsedProperty) -> Uri:
+    def __parse_property_value__(cls, value: ParsedProperty | str) -> Self:
         """Parse a calendar user address."""
-        urlparse(prop.value)
-        return Uri(prop.value)
+        if isinstance(value, ParsedProperty):
+            value = value.value
+        urlparse(value)
+        return cls(value)
+
+    @classmethod
+    def __get_pydantic_core_schema__(
+        cls, source_type: Any, handler: GetCoreSchemaHandler
+    ) -> CoreSchema:
+        return core_schema.no_info_before_validator_function(
+            cls.__parse_property_value__, handler(source_type)
+        )
diff -pruN 9.0.0-2/ical/types/utc_offset.py 12.1.0-1/ical/types/utc_offset.py
--- 9.0.0-2/ical/types/utc_offset.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/types/utc_offset.py	2025-11-14 02:06:41.000000000 +0000
@@ -11,7 +11,7 @@ from ical.parsing.property import Parsed
 
 from .data_types import DATA_TYPE
 
-UTC_OFFSET_REGEX = re.compile(r"^([-+]?)([0-9]{2})([0-9]{2})$")
+UTC_OFFSET_REGEX = re.compile(r"^([-+]?)([0-9]{2})([0-9]{2})([0-9]{2})?$")
 
 
 @DATA_TYPE.register("UTC-OFFSET")
@@ -31,10 +31,11 @@ class UtcOffset:
             value = prop.value
         if not (match := UTC_OFFSET_REGEX.fullmatch(value)):
             raise ValueError(f"Expected value to match UTC-OFFSET pattern: {value}")
-        sign, hours, minutes = match.groups()
+        sign, hours, minutes, seconds = match.groups()
         result = datetime.timedelta(
             hours=int(hours or 0),
             minutes=int(minutes or 0),
+            seconds=int(seconds or 0),
         )
         if sign == "-":
             result = -result
@@ -48,6 +49,8 @@ class UtcOffset:
         if duration < datetime.timedelta(days=0):
             parts.append("-")
             duration = -duration
+        else:
+            parts.append("+")
         seconds = duration.seconds
         hours = int(seconds / 3600)
         seconds %= 3600
diff -pruN 9.0.0-2/ical/tzif/__init__.py 12.1.0-1/ical/tzif/__init__.py
--- 9.0.0-2/ical/tzif/__init__.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/tzif/__init__.py	2025-11-14 02:06:41.000000000 +0000
@@ -1 +1,5 @@
 """Library for parsing python tzdata."""
+
+__all__ = [
+    "timezoneinfo",
+]
diff -pruN 9.0.0-2/ical/tzif/extended_timezones.py 12.1.0-1/ical/tzif/extended_timezones.py
--- 9.0.0-2/ical/tzif/extended_timezones.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/ical/tzif/extended_timezones.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,143 @@
+"""This file is automatically generated by script/update_tzlocal.py. Do not edit."""
+
+EXTENDED_TIMEZONES = {
+    "AUS Central Standard Time": "Australia/Darwin",
+    "AUS Eastern Standard Time": "Australia/Sydney",
+    "Afghanistan Standard Time": "Asia/Kabul",
+    "Alaskan Standard Time": "America/Anchorage",
+    "Aleutian Standard Time": "America/Adak",
+    "Altai Standard Time": "Asia/Barnaul",
+    "Arab Standard Time": "Asia/Riyadh",
+    "Arabian Standard Time": "Asia/Dubai",
+    "Arabic Standard Time": "Asia/Baghdad",
+    "Argentina Standard Time": "America/Buenos_Aires",
+    "Astrakhan Standard Time": "Europe/Astrakhan",
+    "Atlantic Standard Time": "America/Halifax",
+    "Aus Central W. Standard Time": "Australia/Eucla",
+    "Azerbaijan Standard Time": "Asia/Baku",
+    "Azores Standard Time": "Atlantic/Azores",
+    "Bahia Standard Time": "America/Bahia",
+    "Bangladesh Standard Time": "Asia/Dhaka",
+    "Belarus Standard Time": "Europe/Minsk",
+    "Bougainville Standard Time": "Pacific/Bougainville",
+    "Canada Central Standard Time": "America/Regina",
+    "Cape Verde Standard Time": "Atlantic/Cape_Verde",
+    "Caucasus Standard Time": "Asia/Yerevan",
+    "Cen. Australia Standard Time": "Australia/Adelaide",
+    "Central America Standard Time": "America/Guatemala",
+    "Central Asia Standard Time": "Asia/Almaty",
+    "Central Brazilian Standard Time": "America/Cuiaba",
+    "Central Europe Standard Time": "Europe/Budapest",
+    "Central European Standard Time": "Europe/Warsaw",
+    "Central Pacific Standard Time": "Pacific/Guadalcanal",
+    "Central Standard Time": "America/Chicago",
+    "Central Standard Time (Mexico)": "America/Mexico_City",
+    "Chatham Islands Standard Time": "Pacific/Chatham",
+    "China Standard Time": "Asia/Shanghai",
+    "Cuba Standard Time": "America/Havana",
+    "Dateline Standard Time": "Etc/GMT+12",
+    "E. Africa Standard Time": "Africa/Nairobi",
+    "E. Australia Standard Time": "Australia/Brisbane",
+    "E. Europe Standard Time": "Europe/Chisinau",
+    "E. South America Standard Time": "America/Sao_Paulo",
+    "Easter Island Standard Time": "Pacific/Easter",
+    "Eastern Standard Time": "America/New_York",
+    "Eastern Standard Time (Mexico)": "America/Cancun",
+    "Egypt Standard Time": "Africa/Cairo",
+    "Ekaterinburg Standard Time": "Asia/Yekaterinburg",
+    "FLE Standard Time": "Europe/Kiev",
+    "Fiji Standard Time": "Pacific/Fiji",
+    "GMT Standard Time": "Europe/London",
+    "GTB Standard Time": "Europe/Bucharest",
+    "Georgian Standard Time": "Asia/Tbilisi",
+    "Greenland Standard Time": "America/Godthab",
+    "Greenwich Standard Time": "Atlantic/Reykjavik",
+    "Haiti Standard Time": "America/Port-au-Prince",
+    "Hawaiian Standard Time": "Pacific/Honolulu",
+    "India Standard Time": "Asia/Calcutta",
+    "Iran Standard Time": "Asia/Tehran",
+    "Israel Standard Time": "Asia/Jerusalem",
+    "Jordan Standard Time": "Asia/Amman",
+    "Kaliningrad Standard Time": "Europe/Kaliningrad",
+    "Korea Standard Time": "Asia/Seoul",
+    "Libya Standard Time": "Africa/Tripoli",
+    "Line Islands Standard Time": "Pacific/Kiritimati",
+    "Lord Howe Standard Time": "Australia/Lord_Howe",
+    "Magadan Standard Time": "Asia/Magadan",
+    "Magallanes Standard Time": "America/Punta_Arenas",
+    "Marquesas Standard Time": "Pacific/Marquesas",
+    "Mauritius Standard Time": "Indian/Mauritius",
+    "Middle East Standard Time": "Asia/Beirut",
+    "Montevideo Standard Time": "America/Montevideo",
+    "Morocco Standard Time": "Africa/Casablanca",
+    "Mountain Standard Time": "America/Denver",
+    "Mountain Standard Time (Mexico)": "America/Mazatlan",
+    "Myanmar Standard Time": "Asia/Rangoon",
+    "N. Central Asia Standard Time": "Asia/Novosibirsk",
+    "Namibia Standard Time": "Africa/Windhoek",
+    "Nepal Standard Time": "Asia/Katmandu",
+    "New Zealand Standard Time": "Pacific/Auckland",
+    "Newfoundland Standard Time": "America/St_Johns",
+    "Norfolk Standard Time": "Pacific/Norfolk",
+    "North Asia East Standard Time": "Asia/Irkutsk",
+    "North Asia Standard Time": "Asia/Krasnoyarsk",
+    "North Korea Standard Time": "Asia/Pyongyang",
+    "Omsk Standard Time": "Asia/Omsk",
+    "Pacific SA Standard Time": "America/Santiago",
+    "Pacific Standard Time": "America/Los_Angeles",
+    "Pacific Standard Time (Mexico)": "America/Tijuana",
+    "Pakistan Standard Time": "Asia/Karachi",
+    "Paraguay Standard Time": "America/Asuncion",
+    "Qyzylorda Standard Time": "Asia/Qyzylorda",
+    "Romance Standard Time": "Europe/Paris",
+    "Russia Time Zone 10": "Asia/Srednekolymsk",
+    "Russia Time Zone 11": "Asia/Kamchatka",
+    "Russia Time Zone 3": "Europe/Samara",
+    "Russian Standard Time": "Europe/Moscow",
+    "SA Eastern Standard Time": "America/Cayenne",
+    "SA Pacific Standard Time": "America/Bogota",
+    "SA Western Standard Time": "America/La_Paz",
+    "SE Asia Standard Time": "Asia/Bangkok",
+    "Saint Pierre Standard Time": "America/Miquelon",
+    "Sakhalin Standard Time": "Asia/Sakhalin",
+    "Samoa Standard Time": "Pacific/Apia",
+    "Sao Tome Standard Time": "Africa/Sao_Tome",
+    "Saratov Standard Time": "Europe/Saratov",
+    "Singapore Standard Time": "Asia/Singapore",
+    "South Africa Standard Time": "Africa/Johannesburg",
+    "South Sudan Standard Time": "Africa/Juba",
+    "Sri Lanka Standard Time": "Asia/Colombo",
+    "Sudan Standard Time": "Africa/Khartoum",
+    "Syria Standard Time": "Asia/Damascus",
+    "Taipei Standard Time": "Asia/Taipei",
+    "Tasmania Standard Time": "Australia/Hobart",
+    "Tocantins Standard Time": "America/Araguaina",
+    "Tokyo Standard Time": "Asia/Tokyo",
+    "Tomsk Standard Time": "Asia/Tomsk",
+    "Tonga Standard Time": "Pacific/Tongatapu",
+    "Transbaikal Standard Time": "Asia/Chita",
+    "Turkey Standard Time": "Europe/Istanbul",
+    "Turks And Caicos Standard Time": "America/Grand_Turk",
+    "US Eastern Standard Time": "America/Indianapolis",
+    "US Mountain Standard Time": "America/Phoenix",
+    "UTC": "Etc/UTC",
+    "UTC+12": "Etc/GMT-12",
+    "UTC+13": "Etc/GMT-13",
+    "UTC-02": "Etc/GMT+2",
+    "UTC-08": "Etc/GMT+8",
+    "UTC-09": "Etc/GMT+9",
+    "UTC-11": "Etc/GMT+11",
+    "Ulaanbaatar Standard Time": "Asia/Ulaanbaatar",
+    "Venezuela Standard Time": "America/Caracas",
+    "Vladivostok Standard Time": "Asia/Vladivostok",
+    "Volgograd Standard Time": "Europe/Volgograd",
+    "W. Australia Standard Time": "Australia/Perth",
+    "W. Central Africa Standard Time": "Africa/Lagos",
+    "W. Europe Standard Time": "Europe/Berlin",
+    "W. Mongolia Standard Time": "Asia/Hovd",
+    "West Asia Standard Time": "Asia/Tashkent",
+    "West Bank Standard Time": "Asia/Hebron",
+    "West Pacific Standard Time": "Pacific/Port_Moresby",
+    "Yakutsk Standard Time": "Asia/Yakutsk",
+    "Yukon Standard Time": "America/Whitehorse",
+}
diff -pruN 9.0.0-2/ical/tzif/timezoneinfo.py 12.1.0-1/ical/tzif/timezoneinfo.py
--- 9.0.0-2/ical/tzif/timezoneinfo.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/tzif/timezoneinfo.py	2025-11-14 02:06:41.000000000 +0000
@@ -15,10 +15,18 @@ from dataclasses import dataclass
 from functools import cache
 from importlib import resources
 
+from ical.compat import timezone_compat
+
+from . import extended_timezones
 from .model import TimezoneInfo
 from .tz_rule import Rule, RuleDate
 from .tzif import read_tzif
 
+__all__ = [
+    "TimezoneInfoError",
+    "read",
+]
+
 _LOGGER = logging.getLogger(__name__)
 
 
@@ -47,9 +55,11 @@ def _find_tzfile(key: str) -> str | None
 def _read_tzdata_timezones() -> set[str]:
     """Returns the set of valid timezones from tzdata only."""
     try:
-        with resources.files("tzdata").joinpath("zones").open(
-            "r", encoding="utf-8"
-        ) as zones_file:
+        with (
+            resources.files("tzdata")
+            .joinpath("zones")
+            .open("r", encoding="utf-8") as zones_file
+        ):
             return {line.strip() for line in zones_file.readlines()}
     except ModuleNotFoundError:
         return set()
@@ -64,9 +74,19 @@ def _iana_key_to_resource(key: str) -> t
     return package, resource
 
 
-@cache
 def read(key: str) -> TimezoneInfo:
     """Read the TZif file from the tzdata package and return timezone records."""
+    _LOGGER.debug("Reading timezone: %s", key)
+    if timezone_compat.is_extended_timezones_enabled():
+        if target_timezone := extended_timezones.EXTENDED_TIMEZONES.get(key):
+            _LOGGER.debug("Using extended timezone: %s", target_timezone)
+            key = target_timezone
+
+    return _read_cache(key)
+
+
+@cache
+def _read_cache(key: str) -> TimezoneInfo:
     if key not in _read_system_timezones() and key not in _read_tzdata_timezones():
         raise TimezoneInfoError(f"Unable to find timezone in system timezones: {key}")
 
@@ -78,6 +98,8 @@ def read(key: str) -> TimezoneInfo:
     except ModuleNotFoundError:
         # Unexpected given we previously read the list of timezones
         pass
+    except ValueError as err:
+        raise TimezoneInfoError(f"Unable to load tzdata module: {key}") from err
     except FileNotFoundError as err:
         raise TimezoneInfoError(f"Unable to load tzdata module: {key}") from err
 
@@ -85,7 +107,10 @@ def read(key: str) -> TimezoneInfo:
     tzfile = _find_tzfile(key)
     if tzfile is not None:
         with open(tzfile, "rb") as tzfile_file:
-            return read_tzif(tzfile_file.read())
+            try:
+                return read_tzif(tzfile_file.read())
+            except ValueError as err:
+                raise TimezoneInfoError(f"Unable to load tzdata file: {key}") from err
 
     raise TimezoneInfoError(f"Unable to find timezone data for {key}")
 
@@ -161,6 +186,16 @@ class TzInfo(datetime.tzinfo):
 
         return _ZERO
 
+    def __str__(self) -> str:
+        """Return the string representation of the timezone."""
+        return self._rule.std.name
+
+    def __repr__(self) -> str:
+        """Return the string representation of the timezone."""
+        if self._rule.dst is not None:
+            return f"TzInfo({self._rule.std.name}, {self._rule.dst.name})"
+        return f"TzInfo({self._rule.std.name})"
+
 
 def read_tzinfo(key: str) -> TzInfo:
     """Create a zoneinfo implementation from raw tzif data."""
@@ -171,8 +206,27 @@ def read_tzinfo(key: str) -> TzInfo:
         raise TimezoneInfoError(f"Unable create TzInfo: {key}") from err
 
 
+@cache
+def _extended_timezones() -> set[str]:
+    """Return the set of extended timezones."""
+    return set(extended_timezones.EXTENDED_TIMEZONES.keys())
+
+
+def available_timezones() -> set[str]:
+    """Return a set of all available timezones.
+
+    This includes system timezones, tzdata timezones, and extended timezones if
+    enabled for compatibility mode.
+    """
+    result = _read_system_timezones()
+    result |= _read_tzdata_timezones()
+    if timezone_compat.is_extended_timezones_enabled():
+        result |= _extended_timezones()
+    return result
+
+
 # Avoid blocking disk reads in async function by pre-loading all timezone reads
-for key in _read_system_timezones():
+for key in available_timezones():
     try:
         read_tzinfo(key)
     except TimezoneInfoError:
diff -pruN 9.0.0-2/ical/tzif/tz_rule.py 12.1.0-1/ical/tzif/tz_rule.py
--- 9.0.0-2/ical/tzif/tz_rule.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/tzif/tz_rule.py	2025-11-14 02:06:41.000000000 +0000
@@ -23,57 +23,45 @@ DST: std offset dst [offset],start[/time
 
 from __future__ import annotations
 
+
+from dataclasses import dataclass
 import datetime
 import logging
-from typing import Any, Optional, Union
+import re
+from typing import Any, Optional, Self, Union
 
 from dateutil import rrule
+from pydantic import BaseModel, field_validator, model_validator
 
-try:
-    from pydantic.v1 import BaseModel, root_validator, validator
-except ImportError:
-    from pydantic import BaseModel, root_validator, validator  # type: ignore[no-redef, assignment]
-from pyparsing import (
-    Char,
-    Combine,
-    Group,
-    Opt,
-    ParseException,
-    ParserElement,
-    Word,
-    alphas,
-    nums,
-)
 
 _LOGGER = logging.getLogger(__name__)
 
 _ZERO = datetime.timedelta(seconds=0)
+_DEFAULT_TIME_DELTA = datetime.timedelta(hours=2)
 
 
-def _parse_time(values: Any) -> int | str | datetime.timedelta:
+def _parse_time(values: dict[str, Any]) -> datetime.timedelta | None:
     """Convert an offset from [+/-]hh[:mm[:ss]] to a valid timedelta pydantic format.
 
     The parse tree dict expects fields of hour, minutes, seconds (see tz_time rule in parser).
     """
-    if not values:
-        return 0
-    if isinstance(values, (int, str, datetime.timedelta)):
-        return values
-    if not isinstance(values, dict):
-        raise ValueError("time was not parse tree dict, timedelta, string, or int")
-    hour = values["hour"]
+    if (hour := values["hour"]) is None:
+        return None
     sign = 1
     if hour.startswith("+"):
         hour = hour[1:]
     elif hour.startswith("-"):
         sign = -1
         hour = hour[1:]
-    minutes = values.get("minutes", "0")
-    seconds = values.get("seconds", "0")
-    return sign * (int(hour) * 60 * 60 + int(minutes) * 60 + int(seconds))
+    minutes = values.get("minutes") or "0"
+    seconds = values.get("seconds") or "0"
+    return datetime.timedelta(
+        seconds=sign * (int(hour) * 60 * 60 + int(minutes) * 60 + int(seconds))
+    )
 
 
-class RuleDay(BaseModel):
+@dataclass
+class RuleDay:
     """A date referenced in a timezone rule for a julian day."""
 
     day_of_year: int
@@ -82,10 +70,9 @@ class RuleDay(BaseModel):
     time: datetime.timedelta
     """Offset of time in current local time when the rule goes into effect, default of 02:00:00."""
 
-    _parse_time = validator("time", pre=True, allow_reuse=True)(_parse_time)
 
-
-class RuleDate(BaseModel):
+@dataclass
+class RuleDate:
     """A date referenced in a timezone rule."""
 
     month: int
@@ -100,8 +87,6 @@ class RuleDate(BaseModel):
     time: datetime.timedelta
     """Offset of time in current local time when the rule goes into effect, default of 02:00:00."""
 
-    _parse_time = validator("time", pre=True, allow_reuse=True)(_parse_time)
-
     def as_rrule(self, dtstart: datetime.datetime | None = None) -> rrule.rrule:
         """Return a recurrence rule for this timezone occurrence (no start date)."""
         dst_start_weekday = self._rrule_byday(self._rrule_week_of_month)
@@ -143,7 +128,8 @@ class RuleDate(BaseModel):
         return self.week_of_month
 
 
-class RuleOccurrence(BaseModel):
+@dataclass
+class RuleOccurrence:
     """A TimeZone rule occurrence."""
 
     name: str
@@ -152,23 +138,13 @@ class RuleOccurrence(BaseModel):
     offset: datetime.timedelta
     """UTC offset for this timezone occurrence (not time added to local time)."""
 
-    _parse_offset = validator("offset", pre=True, allow_reuse=True)(_parse_time)
-
-    @validator("offset", allow_reuse=True)
-    def negate_offset(cls, value: datetime.timedelta) -> datetime.timedelta:
+    def __post_init__(self) -> None:
         """Convert the offset from time added to local time to get UTC to a UTC offset."""
-        result = _ZERO - value
-        return result
+        self.offset = _ZERO - self.offset
 
 
-def _default_time_value(values: dict[str, Any]) -> dict[str, Any]:
-    """Set a default time value when none is specified."""
-    if "time" not in values:
-        values["time"] = {"hour": "2"}
-    return values
-
-
-class Rule(BaseModel):
+@dataclass
+class Rule:
     """A rule for evaluating future timezone transitions."""
 
     std: RuleOccurrence
@@ -183,73 +159,71 @@ class Rule(BaseModel):
     dst_end: Union[RuleDate, RuleDay, None] = None
     """Describes when dst ends (std starts)."""
 
-    _default_start_time = validator("dst_start", pre=True, allow_reuse=True)(
-        _default_time_value
-    )
-    _default_end_time = validator("dst_end", pre=True, allow_reuse=True)(
-        _default_time_value
-    )
-
-    @root_validator(allow_reuse=True)
-    def default_dst_offset(cls, values: dict[str, Any]) -> dict[str, Any]:
-        """Infer the default DST offset based on STD offset if not specified."""
-        if values.get("dst") and not values["dst"].offset:
+    def __post_init__(self) -> None:
+        """Infer the default DST offset if not specified."""
+        if self.dst and not self.dst.offset:
             # If the dst offset is omitted, it defaults to one hour ahead of standard time.
-            values["dst"].offset = values["std"].offset + datetime.timedelta(hours=1)
-        return values
+            self.dst.offset = self.std.offset + datetime.timedelta(hours=1)
 
 
-def parse_tz_rule(tz_str: str) -> Rule:
-    """Parse the TZ string into a Rule object."""
+# Regexp for parsing the TZ string
+_OFFSET_RE_PATTERN: re.Pattern[str] = re.compile(
+    r"(?P<name>(\<[+\-]?\d+\>|[a-zA-Z]+))"  # name
+    r"((?P<hour>[+-]?\d+)(?::(?P<minutes>\d{1,2})(?::(?P<seconds>\d{1,2}))?)?)?"  # offset
+)
+_START_END_RE_PATTERN = re.compile(
+    # days in either julian (J prefix) or month.week.day (M prefix) format
+    r",(J(?P<day_of_year>\d+)|M(?P<month>\d{1,2})\.(?P<week_of_month>\d)\.(?P<day_of_week>\d))"
+    # time
+    r"(\/(?P<hour>[+-]?\d+)(?::(?P<minutes>\d{1,2})(?::(?P<seconds>\d{1,2}))?)?)?"
+)
 
-    hour = Combine(Opt(Word("+-")) + Word(nums))
-    tz_time = hour.set_results_name("hour") + Opt(
-        ":"
-        + Word(nums).set_results_name("minutes")
-        + Opt(":" + Word(nums).set_results_name("seconds"))
+
+def _rule_occurrence_from_match(match: re.Match[str]) -> RuleOccurrence:
+    """Create a rule occurrence from a regex match."""
+    return RuleOccurrence(
+        name=match.group("name"), offset=_parse_time(match.groupdict()) or _ZERO
     )
 
-    name: ParserElement
-    # Hack for inability to deal with both start word options
-    if tz_str.startswith("<"):
-        name = Combine(Char("<") + Opt(Word("+-")) + Word(nums) + Char(">"))
-    else:
-        name = Word(alphas)
 
-    onset = name.set_results_name("name") + Group(Opt(tz_time)).set_results_name(
-        "offset"
-    )
-    month_date = (
-        "M"
-        + Word(nums).set_results_name("month")
-        + "."
-        + Word(nums).set_results_name("week_of_month")
-        + "."
-        + Word(nums).set_results_name("day_of_week")
-    )
-    julian_date = "J" + Word(nums).set_results_name("day_of_year")
-    # Hack for inabiliy to have a single rule with both date types
-    if ",J" in tz_str:
-        tz_days = julian_date
-    else:
-        tz_days = month_date
-    tz_date = tz_days + Opt("/" + Group(tz_time).set_results_name("time"))
-
-    tz_rule = (
-        Group(onset).set_results_name("std")
-        + Opt(Group(onset).set_results_name("dst"))
-        + Opt(
-            ","
-            + Group(tz_date).set_results_name("dst_start")
-            + ","
-            + Group(tz_date).set_results_name("dst_end")
+def _rule_date_from_match(match: re.Match[str]) -> Union[RuleDay, RuleDate]:
+    """Create a rule date from a regex match."""
+    if match["day_of_year"] is not None:
+        return RuleDay(
+            day_of_year=int(match.group("day_of_year")),
+            time=_parse_time(match.groupdict()) or _DEFAULT_TIME_DELTA,
         )
+    return RuleDate(
+        month=int(match.group("month")),
+        week_of_month=int(match.group("week_of_month")),
+        day_of_week=int(match.group("day_of_week")),
+        time=_parse_time(match.groupdict()) or _DEFAULT_TIME_DELTA,
     )
-    if _LOGGER.isEnabledFor(logging.DEBUG):
-        tz_rule.set_debug(flag=True)
-    try:
-        result = tz_rule.parse_string(tz_str, parse_all=True)
-    except ParseException as err:
-        raise ValueError(f"Unable to parse TZ string: {tz_str}") from err
 
-    return Rule.parse_obj(result.as_dict())
+
+def parse_tz_rule(tz_str: str) -> Rule:
+    """Parse the TZ string into a Rule object."""
+    buffer = tz_str
+    if (std_match := _OFFSET_RE_PATTERN.match(buffer)) is None:
+        raise ValueError(f"Unable to parse TZ string: {tz_str}")
+    buffer = buffer[std_match.end() :]
+    if (dst_match := _OFFSET_RE_PATTERN.match(buffer)) is not None:
+        buffer = buffer[dst_match.end() :]
+    if (std_start := _START_END_RE_PATTERN.match(buffer)) is not None:
+        buffer = buffer[std_start.end() :]
+    if (std_end := _START_END_RE_PATTERN.match(buffer)) is not None:
+        buffer = buffer[std_end.end() :]
+    if (std_start is None) != (std_end is None):
+        raise ValueError(
+            f"Unable to parse TZ string, should have both or neither start and end dates: {tz_str}"
+        )
+    if buffer:
+        raise ValueError(
+            f"Unable to parse TZ string, unexpected trailing data: {tz_str}"
+        )
+    return Rule(
+        std=_rule_occurrence_from_match(std_match),
+        dst=_rule_occurrence_from_match(dst_match) if dst_match else None,
+        dst_start=_rule_date_from_match(std_start) if std_start else None,
+        dst_end=_rule_date_from_match(std_end) if std_end else None,
+    )
diff -pruN 9.0.0-2/ical/tzif/tzif.py 12.1.0-1/ical/tzif/tzif.py
--- 9.0.0-2/ical/tzif/tzif.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/tzif/tzif.py	2025-11-14 02:06:41.000000000 +0000
@@ -38,7 +38,7 @@ _LOCAL_TIME_TYPE_STRUCT_FORMAT = "".join
         ">",  # Use standard size of packed value bytes
         "l",  # utoff (4 bytes): Number of seconds to add to UTC to determine local time
         "?",  # dst (1 byte): Indicates the time is DST (1) or standard (0)
-        "B",  # idx (1 byte): Offset index into the time zone designiation octets (0-charcnt-1)
+        "B",  # idx (1 byte): Offset index into the time zone designation octets (0-charcnt-1)
     ]
 )
 _LOCAL_TIME_RECORD_SIZE = 6
@@ -142,7 +142,7 @@ _TransitionBlock = namedtuple(
 # A series of records specifying the local time type:
 #  - utoff (4 bytes): Number of seconds to add to UTC to determine local time
 #  - dst (1 byte): Indicates the time is DST (1) or standard (0)
-#  - idx (1 byte):  Offset index into the time zone designiation octets (0-charcnt-1)
+#  - idx (1 byte):  Offset index into the time zone designation octets (0-charcnt-1)
 # is the utoff (4 bytes), dst (1 byte), idx (1 byte).
 _LocalTimeType = namedtuple("_LocalTimeType", ["utoff", "dst", "idx"])
 
diff -pruN 9.0.0-2/ical/util.py 12.1.0-1/ical/util.py
--- 9.0.0-2/ical/util.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/ical/util.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,8 +2,11 @@
 
 from __future__ import annotations
 
+from collections.abc import Sequence
 import datetime
 from importlib import metadata
+from types import NoneType
+from typing import TYPE_CHECKING, Any, Union, cast, get_args, get_origin, overload
 import uuid
 
 __all__ = [
@@ -51,3 +54,51 @@ def normalize_datetime(
             tzinfo = local_timezone()
         value = value.replace(tzinfo=tzinfo)
     return value
+
+
+def get_field_type(annotation: Any) -> Any:
+    """Filter Optional type, e.g. for 'Optional[int]' return 'int'."""
+    if get_origin(annotation) is Union:
+        args: Sequence[Any] = get_args(annotation)
+        if len(args) == 2:
+            args = [arg for arg in args if arg is not NoneType]
+            if len(args) == 1:
+                return args[0]
+    return annotation
+
+
+@overload
+def parse_date_and_datetime(value: None) -> None: ...
+
+
+@overload
+def parse_date_and_datetime(value: str | datetime.date) -> datetime.date: ...
+
+
+def parse_date_and_datetime(value: str | datetime.date | None) -> datetime.date | None:
+    """Coerce str into date and datetime value."""
+    if not isinstance(value, str):
+        return value
+    if "T" in value or " " in value:
+        return datetime.datetime.fromisoformat(value)
+    return datetime.date.fromisoformat(value)
+
+
+def parse_date_and_datetime_list(
+    values: Sequence[str] | Sequence[datetime.date],
+) -> list[datetime.date | datetime.datetime]:
+    """Coerce list[str] into list[date | datetime] values."""
+    if not values:
+        return []
+    if not isinstance(values[0], str):
+        if TYPE_CHECKING:
+            values = cast(list[datetime.date | datetime.datetime], values)
+        return values
+    if TYPE_CHECKING:
+        values = cast(Sequence[str], values)
+    return [
+        datetime.datetime.fromisoformat(val)
+        if "T" in val or " " in val
+        else datetime.date.fromisoformat(val)
+        for val in values
+    ]
diff -pruN 9.0.0-2/pyproject.toml 12.1.0-1/pyproject.toml
--- 9.0.0-2/pyproject.toml	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/pyproject.toml	2025-11-14 02:06:41.000000000 +0000
@@ -1,7 +1,32 @@
+[build-system]
+build-backend = "setuptools.build_meta"
+requires = ["setuptools>=77.0"]
+
+[project]
+name = "ical"
+version = "12.1.0"
+license = "Apache-2.0"
+license-files = ["LICENSE"]
+description = "Python iCalendar implementation (rfc 2445)"
+readme = "README.md"
+authors = [{ name = "Allen Porter", email = "allen.porter@gmail.com" }]
+requires-python = ">=3.13"
+classifiers = []
+dependencies = [
+  "python-dateutil>=2.8.2",
+  "tzdata>=2023.3",
+  "pydantic>=2.10.4",
+]
+
+[project.urls]
+Source = "https://github.com/allenporter/ical"
+
+[tool.setuptools.packages.find]
+include = ["ical*"]
+
 [tool.mypy]
 plugins = "pydantic.mypy"
 exclude = [
-  "setup.py",
   "venv/",
   "tests/",
 ]
diff -pruN 9.0.0-2/requirements_dev.txt 12.1.0-1/requirements_dev.txt
--- 9.0.0-2/requirements_dev.txt	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/requirements_dev.txt	2025-11-14 02:06:41.000000000 +0000
@@ -1,24 +1,24 @@
 -e .
-black==24.10.0
-coverage==7.6.10
-mypy==1.14.1
-pdoc==15.0.1
-pip==24.3.1
-pre-commit==4.0.1
-pytest-cov==6.0.0
-pytest==8.3.4
-ruff==0.8.6
+coverage==7.11.3
+mypy==1.18.2
+pdoc==16.0.0
+pip==25.3
+pre-commit==4.4.0
+pytest-cov==7.0.0
+pytest==9.0.1
+ruff==0.14.4
 
 python-dateutil==2.9.0.post0
-freezegun==1.5.1
-pydantic==2.10.4
-pyparsing==3.2.1
-pytest-benchmark==5.1.0
-types-python-dateutil==2.9.0.20241206
-wheel==0.45.1
-PyYAML==6.0.2
-types-PyYAML==6.0.12.20241230
-syrupy==4.8.0
+freezegun==1.5.5
+pydantic==2.12.4
+pytest-benchmark==5.2.3
+types-python-dateutil==2.9.0.20251008
+wheel==0.46.1
+PyYAML==6.0.3
+types-PyYAML==6.0.12.20250915
+syrupy==5.0.0
 
-# emjoji is a dev only dependency used by script/update_emoji.py
-emoji==2.14.0
+# emoji is a dev only dependency used by script/update_emoji.py
+emoji==2.15.0
+# tzlocal is a dev only dependency used by script/update_tzlocal.py
+tzlocal==5.3.1
diff -pruN 9.0.0-2/script/update_emoji.py 12.1.0-1/script/update_emoji.py
--- 9.0.0-2/script/update_emoji.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/script/update_emoji.py	2025-11-14 02:06:41.000000000 +0000
@@ -4,7 +4,7 @@ from pathlib import Path
 import emoji
 
 
-OUTPUT_FILE = Path('ical/parsing/emoji.py')
+OUTPUT_FILE = Path("ical/parsing/emoji.py")
 
 EMOJI = list(emoji.EMOJI_DATA.keys())
 HEADER = [
@@ -14,13 +14,13 @@ HEADER = [
 print("Number of emoji: {}".format(len(EMOJI)))
 
 # Write the emoji characters to a new python file as a dictionary
-with OUTPUT_FILE.open('w') as f:
+with OUTPUT_FILE.open("w") as f:
     f.writelines(HEADER)
-    f.write('EMOJI = [\n')
+    f.write("EMOJI = [\n")
     for s in EMOJI:
-        o = "".join([f'\\U{ord(ch):08x}' for ch in s])
+        o = "".join([f"\\U{ord(ch):08x}" for ch in s])
         f.write(f"  u'{o}',  # {s}\n")
-    f.write(']\n')
+    f.write("]\n")
 
 print("Emoji written to {}".format(OUTPUT_FILE))
-print("File size: {} bytes".format(OUTPUT_FILE.stat().st_size))
\ No newline at end of file
+print("File size: {} bytes".format(OUTPUT_FILE.stat().st_size))
diff -pruN 9.0.0-2/script/update_tzlocal.py 12.1.0-1/script/update_tzlocal.py
--- 9.0.0-2/script/update_tzlocal.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/script/update_tzlocal.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,30 @@
+"""Script to import a more compact representation of the tzlocal library"""
+
+from pathlib import Path
+from tzlocal import windows_tz
+import zoneinfo
+
+
+OUTPUT_FILE = Path("ical/tzif/extended_timezones.py")
+
+HEADER = [
+    """\"\"\"This file is automatically generated by script/update_tzlocal.py. Do not edit.\"\"\"\n\n"""
+]
+TIMEZONES = windows_tz.win_tz
+
+print("Number of timezones: {}".format(len(TIMEZONES)))
+
+available_timezones = zoneinfo.available_timezones()
+
+# Write the emoji characters to a new python file as a dictionary
+with OUTPUT_FILE.open("w") as f:
+    f.writelines(HEADER)
+    f.write("EXTENDED_TIMEZONES = {\n")
+    for k, v in TIMEZONES.items():
+        if v not in available_timezones:
+            raise ValueError(f"Timezone {k} not in available timezones")
+        f.write(f"  '{k}': '{v}',\n")
+    f.write("}\n")
+
+print("Timezones written to {}".format(OUTPUT_FILE))
+print("File size: {} bytes".format(OUTPUT_FILE.stat().st_size))
diff -pruN 9.0.0-2/setup.cfg 12.1.0-1/setup.cfg
--- 9.0.0-2/setup.cfg	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/setup.cfg	1970-01-01 00:00:00.000000000 +0000
@@ -1,34 +0,0 @@
-[metadata]
-name = ical
-version = 8.3.1
-description = Python iCalendar implementation (rfc 2445)
-long_description = file: README.md
-long_description_content_type = text/markdown
-url = https://github.com/allenporter/ical
-author = Allen Porter
-author_email = allen.porter@gmail.com
-license = Apache-2.0
-license_file = LICENSE
-classifiers =
-    License :: OSI Approved :: Apache Software License
-
-[options]
-packages = find:
-python_requires = >=3.11
-install_requires =
-  python-dateutil>=2.8.2
-  tzdata>=2023.3
-  pydantic>=2.10.4
-  pyparsing>=3.0.9
-include_package_data = True
-package_dir =
-    = .
-
-[options.packages.find]
-where = .
-exclude =
-    tests
-    tests.*
-
-[options.package_data]
-ical = py.typed
diff -pruN 9.0.0-2/setup.py 12.1.0-1/setup.py
--- 9.0.0-2/setup.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/setup.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-"""Library for packaging the project."""
-
-from setuptools import setup
-
-setup()
diff -pruN 9.0.0-2/tests/__snapshots__/test_calendar_stream.ambr 12.1.0-1/tests/__snapshots__/test_calendar_stream.ambr
--- 9.0.0-2/tests/__snapshots__/test_calendar_stream.ambr	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/__snapshots__/test_calendar_stream.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -25,7 +25,7 @@
         'events': list([
           dict({
             'dtend': '1997-07-14T14:00:00-04:00',
-            'dtstamp': '1997-06-10T17:23:45+00:00',
+            'dtstamp': '1997-06-10T17:23:45Z',
             'dtstart': '1997-07-14T13:30:00-04:00',
             'summary': 'Mid July check-in',
             'uid': '19970610T172345Z-AF23B2@example.com',
@@ -43,9 +43,9 @@
       dict({
         'events': list([
           dict({
-            'dtend': '1997-07-15T04:00:00+00:00',
-            'dtstamp': '1997-06-10T17:23:45+00:00',
-            'dtstart': '1997-07-14T17:00:00+00:00',
+            'dtend': '1997-07-15T04:00:00Z',
+            'dtstamp': '1997-06-10T17:23:45Z',
+            'dtstart': '1997-07-14T17:00:00Z',
             'summary': 'Bastille Day Party',
             'uid': '19970610T172345Z-AF23B2@example.com',
           }),
@@ -93,10 +93,10 @@
                   'PDT',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -28800.0,
+                  'offset': '-PT8H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -25200.0,
+                  'offset': '-PT7H',
                 }),
               }),
             ]),
@@ -119,10 +119,10 @@
                   'PST',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -25200.0,
+                  'offset': '-PT7H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -28800.0,
+                  'offset': '-PT8H',
                 }),
               }),
             ]),
@@ -134,6 +134,84 @@
     ]),
   })
 # ---
+# name: test_parse[datetime_vtimezone_plus]
+  dict({
+    'calendars': list([
+      dict({
+        'events': list([
+          dict({
+            'created': '2023-03-13T01:12:26',
+            'dtend': '2023-03-12T19:12:10+01:00',
+            'dtstamp': '2023-03-13T01:12:26',
+            'dtstart': '2023-03-12T18:12:10+01:00',
+            'sequence': 0,
+            'summary': 'Event 1',
+            'uid': '1e19f31b-c13c-11ed-8431-066a07ffbaf5',
+          }),
+        ]),
+        'prodid': '-//hacksw/handcal//NONSGML v1.0//EN',
+        'timezones': list([
+          dict({
+            'daylight': list([
+              dict({
+                'dtstart': '2010-03-14T02:00:00',
+                'rrule': dict({
+                  'by_month': list([
+                    3,
+                  ]),
+                  'by_weekday': list([
+                    dict({
+                      'occurrence': 2,
+                      'weekday': 'SU',
+                    }),
+                  ]),
+                  'freq': 'YEARLY',
+                }),
+                'tz_name': list([
+                  'PDT',
+                ]),
+                'tz_offset_from': dict({
+                  'offset': 'PT2H',
+                }),
+                'tz_offset_to': dict({
+                  'offset': 'PT1H',
+                }),
+              }),
+            ]),
+            'standard': list([
+              dict({
+                'dtstart': '2010-11-07T02:00:00',
+                'rrule': dict({
+                  'by_month': list([
+                    11,
+                  ]),
+                  'by_weekday': list([
+                    dict({
+                      'occurrence': 1,
+                      'weekday': 'SU',
+                    }),
+                  ]),
+                  'freq': 'YEARLY',
+                }),
+                'tz_name': list([
+                  'PST',
+                ]),
+                'tz_offset_from': dict({
+                  'offset': 'PT1H',
+                }),
+                'tz_offset_to': dict({
+                  'offset': 'PT2H',
+                }),
+              }),
+            ]),
+            'tz_id': 'Europe/Berlin',
+          }),
+        ]),
+        'version': '2.0',
+      }),
+    ]),
+  })
+# ---
 # name: test_parse[description_altrep]
   dict({
     'calendars': list([
@@ -141,9 +219,9 @@
         'events': list([
           dict({
             'description': "The Fall'98 Wild Wizards Conference - - Las Vegas, NV, USA",
-            'dtend': '1997-07-15T04:00:00+00:00',
-            'dtstamp': '1997-06-10T17:23:45+00:00',
-            'dtstart': '1997-07-14T17:00:00+00:00',
+            'dtend': '1997-07-15T04:00:00Z',
+            'dtstamp': '1997-06-10T17:23:45Z',
+            'dtstart': '1997-07-14T17:00:00Z',
             'summary': 'Conference',
             'uid': '19970610T172345Z-AF23B2@example.com',
           }),
@@ -154,6 +232,48 @@
     ]),
   })
 # ---
+# name: test_parse[duration_negative]
+  dict({
+    'calendars': list([
+      dict({
+        'events': list([
+          dict({
+            'alarm': list([
+              dict({
+                'action': 'AUDIO',
+                'duration': '-P13DT15H',
+                'extras': list([
+                  dict({
+                    'name': 'attach',
+                    'params': list([
+                      dict({
+                        'name': 'FMTTYPE',
+                        'values': list([
+                          'audio/basic',
+                        ]),
+                      }),
+                    ]),
+                    'value': 'ftp://example.com/pub/sounds/bell-01.aud',
+                  }),
+                ]),
+                'repeat': 4,
+                'trigger': '1997-03-17T13:30:00Z',
+              }),
+            ]),
+            'dtend': '2007-07-09',
+            'dtstamp': '2007-04-23T12:34:32Z',
+            'dtstart': '2007-06-28',
+            'summary': 'Festival International de Jazz de Montreal',
+            'transparency': 'TRANSPARENT',
+            'uid': '20070423T123432Z-541111@example.com',
+          }),
+        ]),
+        'prodid': '-//hacksw/handcal//NONSGML v1.0//EN',
+        'version': '2.0',
+      }),
+    ]),
+  })
+# ---
 # name: test_parse[empty]
   dict({
     'calendars': list([
@@ -167,7 +287,7 @@
         'events': list([
           dict({
             'dtend': '2007-07-09',
-            'dtstamp': '2007-04-23T12:34:32+00:00',
+            'dtstamp': '2007-04-23T12:34:32Z',
             'dtstart': '2007-06-28',
             'summary': 'Festival International de Jazz de Montreal',
             'transparency': 'TRANSPARENT',
@@ -201,7 +321,7 @@
               }),
             ]),
             'dtend': '2007-07-09',
-            'dtstamp': '2007-04-23T12:34:32+00:00',
+            'dtstamp': '2007-04-23T12:34:32Z',
             'dtstart': '2007-06-28',
             'organizer': dict({
               'common_name': 'John Smith',
@@ -277,7 +397,7 @@
               }),
             ]),
             'dtend': '2007-07-09',
-            'dtstamp': '2007-04-23T12:34:32+00:00',
+            'dtstamp': '2007-04-23T12:34:32Z',
             'dtstart': '2007-06-28',
             'organizer': dict({
               'directory_entry': 'ldap://example.com:6666/o=ABC%20Industries,c=US???(cn=Jim%20Dolittle)',
@@ -307,9 +427,9 @@
               Atlanta World Congress Center
               Atlanta, Georgia
             ''',
-            'dtend': '1996-09-20T22:00:00+00:00',
-            'dtstamp': '1996-07-04T12:00:00+00:00',
-            'dtstart': '1996-09-18T14:30:00+00:00',
+            'dtend': '1996-09-20T22:00:00Z',
+            'dtstamp': '1996-07-04T12:00:00Z',
+            'dtstart': '1996-09-18T14:30:00Z',
             'organizer': dict({
               'uri': 'mailto:jsmith@example.com',
             }),
@@ -330,9 +450,9 @@
       dict({
         'events': list([
           dict({
-            'dtend': '2007-05-14T11:30:00+00:00',
-            'dtstamp': '2007-05-14T10:32:11+00:00',
-            'dtstart': '2007-05-14T11:00:00+00:00',
+            'dtend': '2007-05-14T11:30:00Z',
+            'dtstamp': '2007-05-14T10:32:11Z',
+            'dtstart': '2007-05-14T11:00:00Z',
             'priority': 1,
             'summary': 'Client meeting',
             'uid': '20070514T103211Z-123404@example.com',
@@ -360,7 +480,7 @@
               RSVP to team leader.
             ''',
             'dtend': '2007-06-28T10:00:00',
-            'dtstamp': '2007-04-23T12:34:32+00:00',
+            'dtstamp': '2007-04-23T12:34:32Z',
             'dtstart': '2007-06-28T09:00:00',
             'geo': dict({
               'lat': 37.386013,
@@ -384,9 +504,10 @@
         'events': list([
           dict({
             'dtend': '2007-06-28T10:00:00',
-            'dtstamp': '2007-04-23T12:34:32+00:00',
+            'dtstamp': '2007-04-23T12:34:32Z',
             'dtstart': '2007-06-28T09:00:00',
             'request_status': dict({
+              'exdata': None,
               'statcode': 2.0,
               'statdesc': 'Success',
             }),
@@ -415,9 +536,9 @@
             'contacts': list([
               'Jim Dolittle, ABC Industries, +1-919-555-1234',
             ]),
-            'dtend': '1998-04-10T14:17:11+00:00',
-            'dtstamp': '1998-03-13T06:00:00+00:00',
-            'dtstart': '1998-03-13T14:17:11+00:00',
+            'dtend': '1998-04-10T14:17:11Z',
+            'dtstamp': '1998-03-13T06:00:00Z',
+            'dtstart': '1998-03-13T14:17:11Z',
             'organizer': dict({
               'uri': 'mailto:jsmith@example.com',
             }),
@@ -437,21 +558,21 @@
       dict({
         'freebusy': list([
           dict({
-            'dtend': '1998-04-10T14:17:11+00:00',
-            'dtstamp': '1997-06-10T17:23:45+00:00',
-            'dtstart': '1998-03-13T14:17:11+00:00',
+            'dtend': '1998-04-10T14:17:11Z',
+            'dtstamp': '1997-06-10T17:23:45Z',
+            'dtstart': '1998-03-13T14:17:11Z',
             'freebusy': list([
               dict({
-                'end': '1998-03-15T00:30:00+00:00',
-                'start': '1998-03-14T23:30:00+00:00',
+                'end': '1998-03-15T00:30:00Z',
+                'start': '1998-03-14T23:30:00Z',
               }),
               dict({
-                'end': '1998-03-16T16:30:00+00:00',
-                'start': '1998-03-16T15:30:00+00:00',
+                'end': '1998-03-16T16:30:00Z',
+                'start': '1998-03-16T15:30:00Z',
               }),
               dict({
-                'end': '1998-03-18T04:00:00+00:00',
-                'start': '1998-03-18T03:00:00+00:00',
+                'end': '1998-03-18T04:00:00Z',
+                'start': '1998-03-18T03:00:00Z',
               }),
             ]),
             'organizer': dict({
@@ -461,37 +582,37 @@
             'url': 'http://www.example.com/calendar/busytime/jsmith.ifb',
           }),
           dict({
-            'dtstamp': '1997-09-01T13:00:00+00:00',
+            'dtstamp': '1997-09-01T13:00:00Z',
             'freebusy': list([
               dict({
-                'duration': 30600.0,
+                'duration': 'PT8H30M',
                 'free_busy_type': 'BUSY-UNAVAILABLE',
-                'start': '1997-03-08T16:00:00+00:00',
+                'start': '1997-03-08T16:00:00Z',
               }),
               dict({
-                'duration': 10800.0,
+                'duration': 'PT3H',
                 'free_busy_type': 'FREE',
-                'start': '1997-03-08T16:00:00+00:00',
+                'start': '1997-03-08T16:00:00Z',
               }),
               dict({
-                'duration': 3600.0,
+                'duration': 'PT1H',
                 'free_busy_type': 'FREE',
-                'start': '1997-03-08T20:00:00+00:00',
+                'start': '1997-03-08T20:00:00Z',
               }),
               dict({
-                'duration': 10800.0,
+                'duration': 'PT3H',
                 'free_busy_type': 'FREE',
-                'start': '1997-03-08T16:00:00+00:00',
+                'start': '1997-03-08T16:00:00Z',
               }),
               dict({
-                'duration': 3600.0,
+                'duration': 'PT1H',
                 'free_busy_type': 'FREE',
-                'start': '1997-03-08T20:00:00+00:00',
+                'start': '1997-03-08T20:00:00Z',
               }),
               dict({
-                'end': '1997-03-09T00:00:00+00:00',
+                'end': '1997-03-09T00:00:00Z',
                 'free_busy_type': 'FREE',
-                'start': '1997-03-08T23:00:00+00:00',
+                'start': '1997-03-08T23:00:00Z',
               }),
             ]),
             'uid': '19970901T130000Z-123401@example.com',
@@ -509,12 +630,13 @@
       dict({
         'events': list([
           dict({
-            'dtend': '1996-09-20T22:00:00+00:00',
-            'dtstamp': '1996-07-04T12:00:00+00:00',
-            'dtstart': '1996-09-18T14:30:00+00:00',
+            'dtend': '1996-09-20T22:00:00Z',
+            'dtstamp': '1996-07-04T12:00:00Z',
+            'dtstart': '1996-09-18T14:30:00Z',
             'extras': list([
               dict({
                 'name': 'dresscode',
+                'params': None,
                 'value': 'CASUAL',
               }),
               dict({
@@ -551,7 +673,7 @@
               2. Telephone Conference: ABC Corp. sales representative called to discuss new printer. Promised to get us a demo by Friday.
               3. Henry Miller (Handsoff Insurance): Car was totaled by tree. Is looking into a loaner car. 555-2323 (tel).
             ''',
-            'dtstamp': '1997-09-01T13:00:00+00:00',
+            'dtstamp': '1997-09-01T13:00:00Z',
             'dtstart': '1997-03-17',
             'summary': 'Staff meeting minutes',
             'uid': '19970901T130000Z-123405@example.com',
@@ -570,7 +692,7 @@
         'journal': list([
           dict({
             'classification': 'PUBLIC',
-            'dtstamp': '1997-09-01T13:00:00+00:00',
+            'dtstamp': '1997-09-01T13:00:00Z',
             'dtstart': '1997-03-17',
             'status': 'FINAL',
             'summary': 'Staff meeting minutes',
@@ -595,14 +717,14 @@
               'FINANCE',
             ]),
             'classification': 'CONFIDENTIAL',
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'due': '2007-05-01',
             'status': 'NEEDS-ACTION',
             'summary': 'Submit Quebec Income Tax Return for 2006',
             'uid': '20070313T123432Z-456553@example.com',
           }),
           dict({
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'related_to': list([
               dict({
                 'reltype': 'PARENT',
@@ -631,14 +753,14 @@
               'FINANCE',
             ]),
             'classification': 'CONFIDENTIAL',
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'due': '2007-05-01',
             'status': 'NEEDS-ACTION',
             'summary': 'Submit Quebec Income Tax Return for 2006',
             'uid': '20070313T123432Z-456553@example.com',
           }),
           dict({
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'related_to': list([
               dict({
                 'reltype': 'PARENT',
@@ -661,12 +783,12 @@
       dict({
         'events': list([
           dict({
-            'created': '2022-07-31T19:02:07+00:00',
+            'created': '2022-07-31T19:02:07Z',
             'description': '',
             'dtend': '2022-08-02T09:30:00-07:00',
-            'dtstamp': '2022-07-31T19:04:08+00:00',
+            'dtstamp': '2022-07-31T19:04:08Z',
             'dtstart': '2022-08-02T09:00:00-07:00',
-            'last_modified': '2022-07-31T19:02:07+00:00',
+            'last_modified': '2022-07-31T19:02:07Z',
             'location': '',
             'rrule': dict({
               'freq': 'DAILY',
@@ -690,12 +812,12 @@
       dict({
         'events': list([
           dict({
-            'created': '2022-07-31T19:02:07+00:00',
+            'created': '2022-07-31T19:02:07Z',
             'description': '',
             'dtend': '2022-08-03',
-            'dtstamp': '2022-07-31T19:04:08+00:00',
+            'dtstamp': '2022-07-31T19:04:08Z',
             'dtstart': '2022-08-02',
-            'last_modified': '2022-07-31T19:02:07+00:00',
+            'last_modified': '2022-07-31T19:02:07Z',
             'location': '',
             'rrule': dict({
               'freq': 'DAILY',
@@ -730,9 +852,11 @@
             'rrule': dict({
               'by_weekday': list([
                 dict({
+                  'occurrence': None,
                   'weekday': 'SU',
                 }),
                 dict({
+                  'occurrence': None,
                   'weekday': 'SA',
                 }),
               ]),
@@ -755,7 +879,7 @@
         'events': list([
           dict({
             'dtend': '2022-08-02',
-            'dtstamp': '2022-07-31T19:04:08+00:00',
+            'dtstamp': '2022-07-31T19:04:08Z',
             'dtstart': '2022-08-01',
             'exdate': list([
               '2022-09-01',
@@ -784,12 +908,12 @@
       dict({
         'events': list([
           dict({
-            'created': '2022-07-31T19:03:27+00:00',
+            'created': '2022-07-31T19:03:27Z',
             'description': '',
             'dtend': '2022-08-02',
-            'dtstamp': '2022-07-31T19:04:08+00:00',
+            'dtstamp': '2022-07-31T19:04:08Z',
             'dtstart': '2022-08-01',
-            'last_modified': '2022-07-31T19:03:39+00:00',
+            'last_modified': '2022-07-31T19:03:39Z',
             'location': '',
             'recurrence_id': '20220901',
             'rrule': dict({
@@ -817,12 +941,12 @@
       dict({
         'events': list([
           dict({
-            'created': '2022-07-31T19:02:07+00:00',
+            'created': '2022-07-31T19:02:07Z',
             'description': '',
             'dtend': '2022-08-03',
-            'dtstamp': '2022-07-31T19:04:08+00:00',
+            'dtstamp': '2022-07-31T19:04:08Z',
             'dtstart': '2022-08-02',
-            'last_modified': '2022-07-31T19:02:07+00:00',
+            'last_modified': '2022-07-31T19:02:07Z',
             'location': '',
             'rrule': dict({
               'freq': 'DAILY',
@@ -847,16 +971,17 @@
       dict({
         'events': list([
           dict({
-            'created': '2022-07-31T19:02:40+00:00',
+            'created': '2022-07-31T19:02:40Z',
             'description': '',
             'dtend': '2022-08-05',
-            'dtstamp': '2022-07-31T19:04:08+00:00',
+            'dtstamp': '2022-07-31T19:04:08Z',
             'dtstart': '2022-08-04',
-            'last_modified': '2022-07-31T19:02:51+00:00',
+            'last_modified': '2022-07-31T19:02:51Z',
             'location': '',
             'rrule': dict({
               'by_weekday': list([
                 dict({
+                  'occurrence': None,
                   'weekday': 'TH',
                 }),
               ]),
@@ -887,7 +1012,7 @@
               'SPECIAL OCCASION',
             ]),
             'classification': 'CONFIDENTIAL',
-            'dtstamp': '1997-09-01T13:00:00+00:00',
+            'dtstamp': '1997-09-01T13:00:00Z',
             'dtstart': '1997-11-02',
             'rrule': dict({
               'freq': 'YEARLY',
@@ -924,16 +1049,16 @@
                     }),
                   ]),
                   'freq': 'YEARLY',
-                  'until': '1973-04-29T07:00:00+00:00',
+                  'until': '1973-04-29T07:00:00Z',
                 }),
                 'tz_name': list([
                   'EDT',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
               }),
               dict({
@@ -945,10 +1070,10 @@
                   'EDT',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
               }),
               dict({
@@ -964,16 +1089,16 @@
                     }),
                   ]),
                   'freq': 'YEARLY',
-                  'until': '1986-04-27T07:00:00+00:00',
+                  'until': '1986-04-27T07:00:00Z',
                 }),
                 'tz_name': list([
                   'EDT',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
               }),
               dict({
@@ -989,16 +1114,16 @@
                     }),
                   ]),
                   'freq': 'YEARLY',
-                  'until': '2006-04-02T07:00:00+00:00',
+                  'until': '2006-04-02T07:00:00Z',
                 }),
                 'tz_name': list([
                   'EDT',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
               }),
               dict({
@@ -1019,14 +1144,14 @@
                   'EDT',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
               }),
             ]),
-            'last_modified': '2005-08-09T05:00:00+00:00',
+            'last_modified': '2005-08-09T05:00:00Z',
             'standard': list([
               dict({
                 'dtstart': '1967-10-29T02:00:00',
@@ -1041,16 +1166,16 @@
                     }),
                   ]),
                   'freq': 'YEARLY',
-                  'until': '2006-10-29T06:00:00+00:00',
+                  'until': '2006-10-29T06:00:00Z',
                 }),
                 'tz_name': list([
                   'EST',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
               }),
               dict({
@@ -1071,10 +1196,10 @@
                   'EST',
                 ]),
                 'tz_offset_from': dict({
-                  'offset': -14400.0,
+                  'offset': '-PT4H',
                 }),
                 'tz_offset_to': dict({
-                  'offset': -18000.0,
+                  'offset': '-PT5H',
                 }),
               }),
             ]),
@@ -1098,16 +1223,16 @@
               'FINANCE',
             ]),
             'classification': 'CONFIDENTIAL',
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'due': '2007-05-01T11:00:00-07:00',
             'status': 'NEEDS-ACTION',
             'summary': 'Submit Quebec Income Tax Return for 2006',
             'uid': '20070313T123432Z-456553@example.com',
           }),
           dict({
-            'completed': '2007-07-07T10:00:00+00:00',
-            'dtstamp': '2007-05-14T10:32:11+00:00',
-            'due': '2007-07-09T13:00:00+00:00',
+            'completed': '2007-07-07T10:00:00Z',
+            'dtstamp': '2007-05-14T10:32:11Z',
+            'due': '2007-07-09T13:00:00Z',
             'priority': 1,
             'status': 'NEEDS-ACTION',
             'summary': 'Submit Revised Internet-Draft',
@@ -1119,7 +1244,7 @@
               'FINANCE',
             ]),
             'classification': 'CONFIDENTIAL',
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'due': '2007-05-01T11:00:00',
             'status': 'NEEDS-ACTION',
             'summary': 'Floating due datetime',
@@ -1143,17 +1268,17 @@
               'FINANCE',
             ]),
             'classification': 'CONFIDENTIAL',
-            'dtstamp': '2007-03-13T12:34:32+00:00',
+            'dtstamp': '2007-03-13T12:34:32Z',
             'due': '2007-05-01',
             'status': 'NEEDS-ACTION',
             'summary': 'Submit Quebec Income Tax Return for 2006',
             'uid': '20070313T123432Z-456553@example.com',
           }),
           dict({
-            'completed': '2007-07-07T10:00:00+00:00',
-            'dtstamp': '2007-05-14T10:32:11+00:00',
-            'dtstart': '2007-05-14T11:00:00+00:00',
-            'due': '2007-07-09T13:00:00+00:00',
+            'completed': '2007-07-07T10:00:00Z',
+            'dtstamp': '2007-05-14T10:32:11Z',
+            'dtstart': '2007-05-14T11:00:00Z',
+            'due': '2007-07-09T13:00:00Z',
             'priority': 1,
             'status': 'NEEDS-ACTION',
             'summary': 'Submit Revised Internet-Draft',
@@ -1175,7 +1300,7 @@
             'alarms': list([
               dict({
                 'action': 'AUDIO',
-                'duration': 3600.0,
+                'duration': 'PT1H',
                 'extras': list([
                   dict({
                     'name': 'attach',
@@ -1191,7 +1316,7 @@
                   }),
                 ]),
                 'repeat': 4,
-                'trigger': '1998-04-03T12:00:00+00:00',
+                'trigger': '1998-04-03T12:00:00Z',
               }),
             ]),
             'attendees': list([
@@ -1200,7 +1325,7 @@
                 'uri': 'mailto:jqpublic@example.com',
               }),
             ]),
-            'dtstamp': '1998-01-30T13:45:00+00:00',
+            'dtstamp': '1998-01-30T13:45:00Z',
             'due': '1998-04-15T00:00:00',
             'organizer': dict({
               'uri': 'mailto:unclesam@example.com',
@@ -1295,6 +1420,40 @@
   END:VCALENDAR
   '''
 # ---
+# name: test_serialize[datetime_vtimezone_plus]
+  '''
+  BEGIN:VCALENDAR
+  PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20230313T011226
+  UID:1e19f31b-c13c-11ed-8431-066a07ffbaf5
+  DTSTART;TZID=Europe/Berlin:20230312T181210
+  DTEND;TZID=Europe/Berlin:20230312T191210
+  SUMMARY:Event 1
+  CREATED:20230313T011226
+  SEQUENCE:0
+  END:VEVENT
+  BEGIN:VTIMEZONE
+  TZID:Europe/Berlin
+  BEGIN:STANDARD
+  DTSTART:20101107T020000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0100
+  RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:20100314T020000
+  TZOFFSETTO:+0100
+  TZOFFSETFROM:+0200
+  RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+  TZNAME:PDT
+  END:DAYLIGHT
+  END:VTIMEZONE
+  END:VCALENDAR
+  '''
+# ---
 # name: test_serialize[description_altrep]
   '''
   BEGIN:VCALENDAR
@@ -1310,6 +1469,28 @@
   END:VEVENT
   END:VCALENDAR
   '''
+# ---
+# name: test_serialize[duration_negative]
+  '''
+  BEGIN:VCALENDAR
+  PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20070423T123432Z
+  UID:20070423T123432Z-541111@example.com
+  DTSTART:20070628
+  DTEND:20070709
+  SUMMARY:Festival International de Jazz de Montreal
+  TRANSP:TRANSPARENT
+  BEGIN:VALARM
+  ACTION:AUDIO
+  TRIGGER:19970317T133000Z
+  DURATION:-P1W6DT15H
+  REPEAT:4
+  END:VALARM
+  END:VEVENT
+  END:VCALENDAR
+  '''
 # ---
 # name: test_serialize[empty]
   ''
diff -pruN 9.0.0-2/tests/__snapshots__/test_store.ambr 12.1.0-1/tests/__snapshots__/test_store.ambr
--- 9.0.0-2/tests/__snapshots__/test_store.ambr	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/__snapshots__/test_store.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -25,6 +25,50 @@
     }),
   ])
 # ---
+# name: test_add_todo_with_status[completed]
+  list([
+    dict({
+      'completed': '2022-09-03T09:38:05+00:00',
+      'created': '2022-09-03T09:38:05+00:00',
+      'dtstamp': '2022-09-03T09:38:05+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:00:00',
+      'sequence': 0,
+      'status': <TodoStatus.COMPLETED: 'COMPLETED'>,
+      'summary': 'Do chores',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
+# name: test_add_todo_with_status[completed_with_timestamp]
+  list([
+    dict({
+      'completed': '2020-01-01T00:00:00+00:00',
+      'created': '2022-09-03T09:38:05+00:00',
+      'dtstamp': '2022-09-03T09:38:05+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:00:00',
+      'sequence': 0,
+      'status': <TodoStatus.COMPLETED: 'COMPLETED'>,
+      'summary': 'Do chores',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
+# name: test_add_todo_with_status[needs_action]
+  list([
+    dict({
+      'created': '2022-09-03T09:38:05+00:00',
+      'dtstamp': '2022-09-03T09:38:05+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:00:00',
+      'sequence': 0,
+      'status': <TodoStatus.NEEDS_ACTION: 'NEEDS-ACTION'>,
+      'summary': 'Do chores',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
 # name: test_convert_single_instance_to_recurring
   list([
     dict({
@@ -726,6 +770,82 @@
     }),
   ])
 # ---
+# name: test_edit_todo_status[completed]
+  list([
+    dict({
+      'completed': '2022-09-03T09:38:15+00:00',
+      'created': '2022-09-03T09:38:05+00:00',
+      'dtstamp': '2022-09-03T09:38:15+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:00:00',
+      'last_modified': '2022-09-03T09:38:15+00:00',
+      'sequence': 1,
+      'status': <TodoStatus.COMPLETED: 'COMPLETED'>,
+      'summary': 'Monday morning items',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
+# name: test_edit_todo_status[completed_again]
+  list([
+    dict({
+      'completed': '2022-09-03T09:38:15+00:00',
+      'created': '2022-09-03T09:38:35+00:00',
+      'dtstamp': '2022-09-03T09:39:05+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:05:00',
+      'last_modified': '2022-09-03T09:39:05+00:00',
+      'sequence': 3,
+      'status': <TodoStatus.COMPLETED: 'COMPLETED'>,
+      'summary': 'Monday morning items (Delayed)',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
+# name: test_edit_todo_status[edit_summary]
+  list([
+    dict({
+      'completed': '2022-09-03T09:38:15+00:00',
+      'created': '2022-09-03T09:38:15+00:00',
+      'dtstamp': '2022-09-03T09:38:35+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:05:00',
+      'last_modified': '2022-09-03T09:38:35+00:00',
+      'sequence': 2,
+      'status': <TodoStatus.COMPLETED: 'COMPLETED'>,
+      'summary': 'Monday morning items (Delayed)',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
+# name: test_edit_todo_status[initial]
+  list([
+    dict({
+      'created': '2022-09-03T09:38:05+00:00',
+      'dtstamp': '2022-09-03T09:38:05+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:00:00',
+      'sequence': 0,
+      'summary': 'Monday morning items',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
+# name: test_edit_todo_status[needs_action]
+  list([
+    dict({
+      'created': '2022-09-03T09:39:05+00:00',
+      'dtstamp': '2022-09-03T09:39:45+00:00',
+      'dtstart': '2022-08-28T09:00:00',
+      'due': '2022-08-29T09:05:00',
+      'last_modified': '2022-09-03T09:39:45+00:00',
+      'sequence': 4,
+      'status': <TodoStatus.NEEDS_ACTION: 'NEEDS-ACTION'>,
+      'summary': 'Monday morning items (Delayed)',
+      'uid': 'mock-uid-1',
+    }),
+  ])
+# ---
 # name: test_modify_todo_rrule_for_this_and_future[2024-01-05]
   list([
     dict({
@@ -913,6 +1033,7 @@
   BEGIN:VTODO
   DTSTAMP:20240109T100005Z
   UID:mock-uid-1
+  COMPLETED:20240109T100005Z
   CREATED:20240109T100005Z
   DTSTART:20240109
   DUE:20240110
@@ -1029,6 +1150,7 @@
   BEGIN:VTODO
   DTSTAMP:20240109T100005Z
   UID:mock-uid-1
+  COMPLETED:20240109T100005Z
   CREATED:20240109T100005Z
   DTSTART:20240109
   DUE:20240110
@@ -1062,6 +1184,7 @@
   BEGIN:VTODO
   DTSTAMP:20240109T100005Z
   UID:mock-uid-1
+  COMPLETED:20240109T100005Z
   CREATED:20240109T100005Z
   DTSTART:20240109
   DUE:20240110
@@ -1074,6 +1197,7 @@
   BEGIN:VTODO
   DTSTAMP:20240110T100000Z
   UID:mock-uid-1
+  COMPLETED:20240110T100000Z
   CREATED:20240109T100005Z
   DTSTART:20240109
   DUE:20240110
@@ -1108,6 +1232,7 @@
   BEGIN:VTODO
   DTSTAMP:20240109T100005Z
   UID:mock-uid-1
+  COMPLETED:20240109T100005Z
   CREATED:20240109T100005Z
   DTSTART:20240109
   DUE:20240110
@@ -1120,6 +1245,7 @@
   BEGIN:VTODO
   DTSTAMP:20240110T100000Z
   UID:mock-uid-1
+  COMPLETED:20240110T100000Z
   CREATED:20240110T100000Z
   DTSTART:20240109
   DUE:20240110
diff -pruN 9.0.0-2/tests/compat/__snapshots__/test_make_compat.ambr 12.1.0-1/tests/compat/__snapshots__/test_make_compat.ambr
--- 9.0.0-2/tests/compat/__snapshots__/test_make_compat.ambr	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/__snapshots__/test_make_compat.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,226 @@
+# serializer version: 1
+# name: test_make_compat[office_356_custom_timezone]
+  '''
+  BEGIN:VCALENDAR
+  METHOD:PUBLISH
+  PRODID:Microsoft Exchange Server 2010
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250508T124800Z
+  UID:040000008200E00074C5B7101A82E0080000000032281124038FDA01000000000000000
+   010000000BE5193C6B024BB458D91AD30FFFD71BF
+  DTSTART;TZID=CET:20240502T110000
+  DTEND;TZID=CET:20240502T120000
+  SUMMARY:Zajęty
+  CLASS:PUBLIC
+  PRIORITY:5
+  RRULE:FREQ=WEEKLY;UNTIL=20240502T090000Z;INTERVAL=2;BYDAY=TH
+  SEQUENCE:46
+  STATUS:CONFIRMED
+  TRANSP:OPAQUE
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20250508T124800Z
+  UID:040000008200E00074C5B7101A82E0080000000088E248D3DC4EDA01000000000000000
+   010000000FC71CD8C02E70C40B4D15EB1417E2150
+  DTSTART;TZID=CET:20240521T150000
+  DTEND;TZID=CET:20240521T160000
+  SUMMARY:Wstępna akceptacja
+  CLASS:PUBLIC
+  PRIORITY:5
+  RRULE:FREQ=WEEKLY;UNTIL=20260505T130000Z;INTERVAL=2;BYDAY=TU
+  EXDATE;TZID=CET:20241231T150000
+  EXDATE;TZID=CET:20250225T150000
+  SEQUENCE:5
+  STATUS:CONFIRMED
+  TRANSP:OPAQUE
+  END:VEVENT
+  BEGIN:VTIMEZONE
+  TZID:Central European Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T030000
+  TZOFFSETTO:+0100
+  TZOFFSETFROM:+0200
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T020000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0100
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:Eastern Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T020000
+  TZOFFSETTO:-0500
+  TZOFFSETFROM:-0400
+  RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T020000
+  TZOFFSETTO:-0400
+  TZOFFSETFROM:-0500
+  RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:Customized Time Zone
+  BEGIN:STANDARD
+  DTSTART:16010101T030000
+  TZOFFSETTO:+0100
+  TZOFFSETFROM:+0200
+  RRULE:FREQ=YEARLY;BYDAY=4SU;BYMONTH=10
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T020000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0100
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:South Africa Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0200
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0200
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:Greenwich Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0000
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0000
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:Turkey Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0300
+  TZOFFSETFROM:+0300
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0300
+  TZOFFSETFROM:+0300
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:GMT Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T020000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0100
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T010000
+  TZOFFSETTO:+0100
+  TZOFFSETFROM:+0000
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:SE Asia Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0700
+  TZOFFSETFROM:+0700
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0700
+  TZOFFSETFROM:+0700
+  END:DAYLIGHT
+  END:VTIMEZONE
+  END:VCALENDAR
+  '''
+# ---
+# name: test_make_compat[office_365_extended_timezone]
+  '''
+  BEGIN:VCALENDAR
+  METHOD:PUBLISH
+  PRODID:Microsoft Exchange Server 2010
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250417T155647Z
+  UID:040000008200E00074C5B7101A82E00800000000687C546B5596DA01000000000000000
+   010000000309AE93C8C3A94489F90ADBEA30C2F2B
+  DTSTART;TZID=CET:20240426T140000
+  DTEND;TZID=CET:20240426T150000
+  SUMMARY:Uffe
+  CLASS:PUBLIC
+  LOCATION:
+  PRIORITY:5
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:OPAQUE
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
+# name: test_make_compat[office_365_invalid_timezone]
+  '''
+  BEGIN:VCALENDAR
+  METHOD:PUBLISH
+  PRODID:Microsoft Exchange Server 2010
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250417T155647Z
+  UID:040000008200E00074C5B7101A82E00800000000687C546B5596DA01000000000000000
+   010000000309AE93C8C3A94489F90ADBEA30C2F2B
+  DTSTART:20240426T140000
+  DTEND:20240426T150000
+  SUMMARY:Uffe
+  CLASS:PUBLIC
+  LOCATION:
+  PRIORITY:5
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:OPAQUE
+  END:VEVENT
+  BEGIN:VTIMEZONE
+  TZID:W. Europe Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T030000
+  TZOFFSETTO:+0100
+  TZOFFSETFROM:+0200
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T020000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0100
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:UTC
+  BEGIN:STANDARD
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0000
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0000
+  END:DAYLIGHT
+  END:VTIMEZONE
+  END:VCALENDAR
+  '''
+# ---
diff -pruN 9.0.0-2/tests/compat/__snapshots__/test_timezone_compat.ambr 12.1.0-1/tests/compat/__snapshots__/test_timezone_compat.ambr
--- 9.0.0-2/tests/compat/__snapshots__/test_timezone_compat.ambr	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/__snapshots__/test_timezone_compat.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,75 @@
+# serializer version: 1
+# name: test_extended_timezone_compat
+  '''
+  BEGIN:VCALENDAR
+  METHOD:PUBLISH
+  PRODID:Microsoft Exchange Server 2010
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250417T155647Z
+  UID:040000008200E00074C5B7101A82E00800000000687C546B5596DA01000000000000000
+   010000000309AE93C8C3A94489F90ADBEA30C2F2B
+  DTSTART;TZID=CET:20240426T140000
+  DTEND;TZID=CET:20240426T150000
+  SUMMARY:Uffe
+  CLASS:PUBLIC
+  LOCATION:
+  PRIORITY:5
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:OPAQUE
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
+# name: test_invalid_timezone_compat
+  '''
+  BEGIN:VCALENDAR
+  METHOD:PUBLISH
+  PRODID:Microsoft Exchange Server 2010
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250417T155647Z
+  UID:040000008200E00074C5B7101A82E00800000000687C546B5596DA01000000000000000
+   010000000309AE93C8C3A94489F90ADBEA30C2F2B
+  DTSTART:20240426T140000
+  DTEND:20240426T150000
+  SUMMARY:Uffe
+  CLASS:PUBLIC
+  LOCATION:
+  PRIORITY:5
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:OPAQUE
+  END:VEVENT
+  BEGIN:VTIMEZONE
+  TZID:W. Europe Standard Time
+  BEGIN:STANDARD
+  DTSTART:16010101T030000
+  TZOFFSETTO:+0100
+  TZOFFSETFROM:+0200
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T020000
+  TZOFFSETTO:+0200
+  TZOFFSETFROM:+0100
+  RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+  END:DAYLIGHT
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:UTC
+  BEGIN:STANDARD
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0000
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:16010101T000000
+  TZOFFSETTO:+0000
+  TZOFFSETFROM:+0000
+  END:DAYLIGHT
+  END:VTIMEZONE
+  END:VCALENDAR
+  '''
+# ---
diff -pruN 9.0.0-2/tests/compat/test_make_compat.py 12.1.0-1/tests/compat/test_make_compat.py
--- 9.0.0-2/tests/compat/test_make_compat.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/test_make_compat.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,57 @@
+"""Tests for all compatibility modules."""
+
+import pathlib
+
+import pytest
+from syrupy import SnapshotAssertion
+
+from ical.exceptions import CalendarParseError
+from ical.calendar_stream import CalendarStream, IcsCalendarStream
+from ical.store import TodoStore
+from ical.compat import enable_compat_mode, timezone_compat
+
+TESTDATA_PATH = pathlib.Path("tests/compat/testdata/")
+TESTDATA_FILES = list(sorted(TESTDATA_PATH.glob("*.ics")))
+TESTDATA_IDS = [x.stem for x in TESTDATA_FILES]
+
+
+@pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
+def test_make_compat(filename: pathlib.Path, snapshot: SnapshotAssertion) -> None:
+    """Test to read golden files and verify they are parsed."""
+    with filename.open() as ics_file:
+        ics = ics_file.read()
+        with enable_compat_mode(ics) as compat_ics:
+            assert timezone_compat.is_allow_invalid_timezones_enabled()
+            assert timezone_compat.is_extended_timezones_enabled()
+            calendar = IcsCalendarStream.calendar_from_ics(compat_ics)
+
+    new_ics = IcsCalendarStream.calendar_to_ics(calendar)
+    assert new_ics == snapshot
+
+    # The output content can be parsed back correctly
+    IcsCalendarStream.calendar_from_ics(new_ics)
+
+
+@pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
+def test_parse_failure(filename: pathlib.Path, snapshot: SnapshotAssertion) -> None:
+    """Test to read golden files and verify they are parsed."""
+    with filename.open() as ics_file:
+        ics = ics_file.read()
+        with pytest.raises(CalendarParseError):
+            IcsCalendarStream.calendar_from_ics(ics)
+
+
+@pytest.mark.parametrize(
+    "ics",
+    [
+        "invalid",
+        "PRODID:not-exchange",
+        "BEGIN:VCALENDAR\nPRODID:not-exchange\nVERSION:2.0\nEND:VCALENDAR",
+    ],
+)
+def test_make_compat_not_enabled(ics: str) -> None:
+    """Test to read golden files and verify they are parsed."""
+    with enable_compat_mode(ics) as compat_ics:
+        assert compat_ics == ics
+        assert not timezone_compat.is_allow_invalid_timezones_enabled()
+        assert not timezone_compat.is_extended_timezones_enabled()
diff -pruN 9.0.0-2/tests/compat/test_timezone_compat.py 12.1.0-1/tests/compat/test_timezone_compat.py
--- 9.0.0-2/tests/compat/test_timezone_compat.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/test_timezone_compat.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,58 @@
+"""Tests for the extended timezone component."""
+
+import pathlib
+
+import pytest
+from syrupy import SnapshotAssertion
+
+from ical.exceptions import CalendarParseError
+from ical.calendar_stream import CalendarStream, IcsCalendarStream
+from ical.store import TodoStore
+from ical.compat import timezone_compat
+
+TESTDATA_PATH = pathlib.Path("tests/compat/testdata/")
+OFFICE_365_EXTENDED_TIMEZONE = TESTDATA_PATH / "office_365_extended_timezone.ics"
+OFFICE_365_INVALID_TIMEZONE = TESTDATA_PATH / "office_365_invalid_timezone.ics"
+
+
+def test_extended_timezone_fail() -> None:
+    """Test Office 365 extended timezone."""
+
+    with pytest.raises(
+        CalendarParseError,
+        match="Expected DATE-TIME TZID value 'W. Europe Standard Time' to be valid timezone",
+    ):
+        IcsCalendarStream.calendar_from_ics(
+            OFFICE_365_EXTENDED_TIMEZONE.read_text(encoding="utf-8")
+        )
+
+
+def test_extended_timezone_compat(snapshot: SnapshotAssertion) -> None:
+    """Test Office 365 extended timezone with compat enabled."""
+    with timezone_compat.enable_extended_timezones():
+        calendar = IcsCalendarStream.calendar_from_ics(
+            OFFICE_365_EXTENDED_TIMEZONE.read_text(encoding="utf-8")
+        )
+    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot
+
+
+def test_invalid_timezone_fail() -> None:
+    """Test Office 365 invalid timezone."""
+
+    with pytest.raises(
+        CalendarParseError,
+        match="Expected DATE-TIME TZID value 'Customized Time Zone' to be valid timezone",
+    ):
+        IcsCalendarStream.calendar_from_ics(
+            OFFICE_365_INVALID_TIMEZONE.read_text(encoding="utf-8")
+        )
+
+
+def test_invalid_timezone_compat(snapshot: SnapshotAssertion) -> None:
+    """Test Office 365 invalid timezone."""
+
+    with timezone_compat.enable_allow_invalid_timezones():
+        calendar = IcsCalendarStream.calendar_from_ics(
+            OFFICE_365_INVALID_TIMEZONE.read_text(encoding="utf-8")
+        )
+    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot
diff -pruN 9.0.0-2/tests/compat/testdata/office_356_custom_timezone.ics 12.1.0-1/tests/compat/testdata/office_356_custom_timezone.ics
--- 9.0.0-2/tests/compat/testdata/office_356_custom_timezone.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/testdata/office_356_custom_timezone.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,167 @@
+BEGIN:VCALENDAR
+METHOD:PUBLISH
+PRODID:Microsoft Exchange Server 2010
+VERSION:2.0
+X-WR-CALNAME:Kalendarz
+BEGIN:VTIMEZONE
+TZID:Central European Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T030000
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T020000
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T020000
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T020000
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:Customized Time Zone
+BEGIN:STANDARD
+DTSTART:16010101T030000
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=4SU;BYMONTH=10
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T020000
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:South Africa Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T000000
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T000000
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:Greenwich Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T000000
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T000000
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:Turkey Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T000000
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T000000
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0300
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:GMT Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T020000
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T010000
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:SE Asia Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T000000
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T000000
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0700
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+RRULE:FREQ=WEEKLY;UNTIL=20240502T090000Z;INTERVAL=2;BYDAY=TH;WKST=SU
+UID:040000008200E00074C5B7101A82E0080000000032281124038FDA01000000000000000
+ 010000000BE5193C6B024BB458D91AD30FFFD71BF
+SUMMARY:Zajęty
+DTSTART;TZID=Central European Standard Time:20240502T110000
+DTEND;TZID=Central European Standard Time:20240502T120000
+CLASS:PUBLIC
+PRIORITY:5
+DTSTAMP:20250508T124800Z
+TRANSP:OPAQUE
+STATUS:CONFIRMED
+SEQUENCE:46
+X-MICROSOFT-CDO-APPT-SEQUENCE:46
+X-MICROSOFT-CDO-BUSYSTATUS:BUSY
+X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
+X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
+X-MICROSOFT-CDO-IMPORTANCE:1
+X-MICROSOFT-CDO-INSTTYPE:1
+X-MICROSOFT-DONOTFORWARDMEETING:FALSE
+X-MICROSOFT-DISALLOW-COUNTER:FALSE
+X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
+X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
+END:VEVENT
+BEGIN:VEVENT
+RRULE:FREQ=WEEKLY;UNTIL=20260505T130000Z;INTERVAL=2;BYDAY=TU;WKST=SU
+EXDATE;TZID=Central European Standard Time:20241231T150000,20250225T150000
+UID:040000008200E00074C5B7101A82E0080000000088E248D3DC4EDA01000000000000000
+ 010000000FC71CD8C02E70C40B4D15EB1417E2150
+SUMMARY:Wstępna akceptacja
+DTSTART;TZID=Central European Standard Time:20240521T150000
+DTEND;TZID=Central European Standard Time:20240521T160000
+CLASS:PUBLIC
+PRIORITY:5
+DTSTAMP:20250508T124800Z
+TRANSP:OPAQUE
+STATUS:CONFIRMED
+SEQUENCE:5
+X-MICROSOFT-CDO-APPT-SEQUENCE:5
+X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
+X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
+X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
+X-MICROSOFT-CDO-IMPORTANCE:1
+X-MICROSOFT-CDO-INSTTYPE:1
+X-MICROSOFT-DONOTFORWARDMEETING:FALSE
+X-MICROSOFT-DISALLOW-COUNTER:FALSE
+X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
+X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/compat/testdata/office_365_extended_timezone.ics 12.1.0-1/tests/compat/testdata/office_365_extended_timezone.ics
--- 9.0.0-2/tests/compat/testdata/office_365_extended_timezone.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/testdata/office_365_extended_timezone.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,30 @@
+BEGIN:VCALENDAR
+METHOD:PUBLISH
+PRODID:Microsoft Exchange Server 2010
+VERSION:2.0
+X-WR-CALNAME:Kalender
+BEGIN:VEVENT
+UID:040000008200E00074C5B7101A82E00800000000687C546B5596DA01000000000000000
+ 010000000309AE93C8C3A94489F90ADBEA30C2F2B
+SUMMARY:Uffe
+DTSTART;TZID=W. Europe Standard Time:20240426T140000
+DTEND;TZID=W. Europe Standard Time:20240426T150000
+CLASS:PUBLIC
+PRIORITY:5
+DTSTAMP:20250417T155647Z
+TRANSP:OPAQUE
+STATUS:CONFIRMED
+SEQUENCE:0
+LOCATION:
+X-MICROSOFT-CDO-APPT-SEQUENCE:0
+X-MICROSOFT-CDO-BUSYSTATUS:BUSY
+X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
+X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
+X-MICROSOFT-CDO-IMPORTANCE:1
+X-MICROSOFT-CDO-INSTTYPE:0
+X-MICROSOFT-DONOTFORWARDMEETING:FALSE
+X-MICROSOFT-DISALLOW-COUNTER:FALSE
+X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
+X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/compat/testdata/office_365_invalid_timezone.ics 12.1.0-1/tests/compat/testdata/office_365_invalid_timezone.ics
--- 9.0.0-2/tests/compat/testdata/office_365_invalid_timezone.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/compat/testdata/office_365_invalid_timezone.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,58 @@
+BEGIN:VCALENDAR
+METHOD:PUBLISH
+PRODID:Microsoft Exchange Server 2010
+VERSION:2.0
+X-WR-CALNAME:Kalender
+BEGIN:VTIMEZONE
+TZID:W. Europe Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T030000
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T020000
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:UTC
+BEGIN:STANDARD
+DTSTART:16010101T000000
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T000000
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:040000008200E00074C5B7101A82E00800000000687C546B5596DA01000000000000000
+ 010000000309AE93C8C3A94489F90ADBEA30C2F2B
+SUMMARY:Uffe
+DTSTART;TZID=Customized Time Zone:20240426T140000
+DTEND;TZID=Customized Time Zone:20240426T150000
+CLASS:PUBLIC
+PRIORITY:5
+DTSTAMP:20250417T155647Z
+TRANSP:OPAQUE
+STATUS:CONFIRMED
+SEQUENCE:0
+LOCATION:
+X-MICROSOFT-CDO-APPT-SEQUENCE:0
+X-MICROSOFT-CDO-BUSYSTATUS:BUSY
+X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
+X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
+X-MICROSOFT-CDO-IMPORTANCE:1
+X-MICROSOFT-CDO-INSTTYPE:0
+X-MICROSOFT-DONOTFORWARDMEETING:FALSE
+X-MICROSOFT-DISALLOW-COUNTER:FALSE
+X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
+X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/conftest.py 12.1.0-1/tests/conftest.py
--- 9.0.0-2/tests/conftest.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/conftest.py	2025-11-14 02:06:41.000000000 +0000
@@ -6,14 +6,9 @@ import json
 from typing import Any
 from unittest.mock import patch
 
+from pydantic_core import to_jsonable_python
 import pytest
 
-try:
-    from pydantic.v1.json import pydantic_encoder
-except ImportError:
-    from pydantic.json import pydantic_encoder  # type: ignore[no-redef]
-
-
 PRODID = "-//example//1.2.3"
 
 
@@ -26,7 +21,7 @@ class DataclassEncoder(json.JSONEncoder)
             return {k: v for (k, v) in dataclasses.asdict(o).items() if v}
         if isinstance(o, dict):
             return {k: v for (k, v) in o.items() if v}
-        return pydantic_encoder(o)
+        return to_jsonable_python(o)
 
 
 @pytest.fixture
diff -pruN 9.0.0-2/tests/examples/__snapshots__/test_ics_examples.ambr 12.1.0-1/tests/examples/__snapshots__/test_ics_examples.ambr
--- 9.0.0-2/tests/examples/__snapshots__/test_ics_examples.ambr	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/examples/__snapshots__/test_ics_examples.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,2018 @@
+# serializer version: 1
+# name: test_iterate_events[apple_ical]
+  list([
+    Event(dtstamp=datetime.datetime(2022, 9, 25, 19, 15, 45, tzinfo=datetime.timezone.utc), uid='A409C8CF-31E9-4234-BE8A-6CE2B6BB875A', dtstart=datetime.datetime(2022, 9, 12, 9, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), dtend=datetime.datetime(2022, 9, 12, 10, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), duration=None, summary='New Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2022, 9, 25, 19, 15, 43, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2022, 9, 25, 19, 15, 43, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id=None, related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=1, status=None, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 9, 25, 19, 22, 30, tzinfo=datetime.timezone.utc), uid='E53B06A1-9F72-41D9-9446-68E335D2D4F4', dtstart=datetime.datetime(2022, 9, 13, 9, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), dtend=datetime.datetime(2022, 9, 13, 10, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), duration=None, summary='Daily', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2022, 9, 25, 19, 15, 59, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2022, 9, 24, 17, 6, 16, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20220913T090000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2022, 9, 26, 15, 59, 59, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=1, status=None, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 9, 25, 19, 22, 30, tzinfo=datetime.timezone.utc), uid='E53B06A1-9F72-41D9-9446-68E335D2D4F4', dtstart=datetime.datetime(2022, 9, 14, 9, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), dtend=datetime.datetime(2022, 9, 14, 10, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), duration=None, summary='Daily', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2022, 9, 25, 19, 15, 59, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2022, 9, 24, 17, 6, 16, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20220914T090000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2022, 9, 26, 15, 59, 59, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=1, status=None, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 9, 25, 19, 22, 30, tzinfo=datetime.timezone.utc), uid='E53B06A1-9F72-41D9-9446-68E335D2D4F4', dtstart=datetime.datetime(2022, 9, 15, 9, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), dtend=datetime.datetime(2022, 9, 15, 10, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), duration=None, summary='Daily', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2022, 9, 25, 19, 15, 59, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2022, 9, 24, 17, 6, 16, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20220915T090000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2022, 9, 26, 15, 59, 59, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=1, status=None, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 9, 25, 19, 22, 30, tzinfo=datetime.timezone.utc), uid='E53B06A1-9F72-41D9-9446-68E335D2D4F4', dtstart=datetime.datetime(2022, 9, 16, 9, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), dtend=datetime.datetime(2022, 9, 16, 10, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Los_Angeles')), duration=None, summary='Daily', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2022, 9, 25, 19, 15, 59, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2022, 9, 24, 17, 6, 16, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20220916T090000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2022, 9, 26, 15, 59, 59, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=1, status=None, transparency=None, url=None, extras=[], alarm=[]),
+  ])
+# ---
+# name: test_iterate_events[extended_values]
+  list([
+  ])
+# ---
+# name: test_iterate_events[google_calendar_invalid_offset]
+  list([
+    Event(dtstamp=datetime.datetime(2025, 5, 11, 23, 39, 45, tzinfo=datetime.timezone.utc), uid='KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.google.com', dtstart=datetime.datetime(2003, 2, 3, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), dtend=datetime.datetime(2003, 2, 3, 19, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), duration=None, summary='Event Summary', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2006, 3, 15, 21, 4, 21, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2023, 2, 20, 3, 40, 45, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20030203T170000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2003, 2, 13, 16, 0, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[datetime.datetime(2003, 2, 8, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), datetime.datetime(2003, 2, 9, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires'))], request_status=None, sequence=3, status=<EventStatus.TENTATIVE: 'TENTATIVE'>, transparency='OPAQUE', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 11, 23, 39, 45, tzinfo=datetime.timezone.utc), uid='KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.google.com', dtstart=datetime.datetime(2003, 2, 4, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), dtend=datetime.datetime(2003, 2, 4, 19, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), duration=None, summary='Event Summary', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2006, 3, 15, 21, 4, 21, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2023, 2, 20, 3, 40, 45, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20030204T170000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2003, 2, 13, 16, 0, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[datetime.datetime(2003, 2, 8, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), datetime.datetime(2003, 2, 9, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires'))], request_status=None, sequence=3, status=<EventStatus.TENTATIVE: 'TENTATIVE'>, transparency='OPAQUE', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 11, 23, 39, 45, tzinfo=datetime.timezone.utc), uid='KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.google.com', dtstart=datetime.datetime(2003, 2, 5, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), dtend=datetime.datetime(2003, 2, 5, 19, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), duration=None, summary='Event Summary', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2006, 3, 15, 21, 4, 21, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2023, 2, 20, 3, 40, 45, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20030205T170000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2003, 2, 13, 16, 0, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[datetime.datetime(2003, 2, 8, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), datetime.datetime(2003, 2, 9, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires'))], request_status=None, sequence=3, status=<EventStatus.TENTATIVE: 'TENTATIVE'>, transparency='OPAQUE', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 11, 23, 39, 45, tzinfo=datetime.timezone.utc), uid='KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.google.com', dtstart=datetime.datetime(2003, 2, 6, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), dtend=datetime.datetime(2003, 2, 6, 19, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), duration=None, summary='Event Summary', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2006, 3, 15, 21, 4, 21, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2023, 2, 20, 3, 40, 45, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20030206T170000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2003, 2, 13, 16, 0, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[datetime.datetime(2003, 2, 8, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), datetime.datetime(2003, 2, 9, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires'))], request_status=None, sequence=3, status=<EventStatus.TENTATIVE: 'TENTATIVE'>, transparency='OPAQUE', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 11, 23, 39, 45, tzinfo=datetime.timezone.utc), uid='KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.google.com', dtstart=datetime.datetime(2003, 2, 7, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), dtend=datetime.datetime(2003, 2, 7, 19, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), duration=None, summary='Event Summary', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2006, 3, 15, 21, 4, 21, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2023, 2, 20, 3, 40, 45, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20030207T170000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=datetime.datetime(2003, 2, 13, 16, 0, tzinfo=datetime.timezone.utc), count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[datetime.datetime(2003, 2, 8, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires')), datetime.datetime(2003, 2, 9, 17, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Argentina/Buenos_Aires'))], request_status=None, sequence=3, status=<EventStatus.TENTATIVE: 'TENTATIVE'>, transparency='OPAQUE', url=None, extras=[], alarm=[]),
+  ])
+# ---
+# name: test_iterate_events[google_calendar_public_holidays]
+  list([
+    Event(dtstamp=datetime.datetime(2022, 7, 30, 15, 3, 14, tzinfo=datetime.timezone.utc), uid='20210101_fokaslga04sgnfruusv1tomhs4@google.com', dtstart=datetime.date(2021, 1, 1), dtend=datetime.date(2021, 1, 2), duration=None, summary="New Year's Day", attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2021, 9, 10, 19, 0, 34, tzinfo=datetime.timezone.utc), description='Public holiday', geo=None, last_modified=datetime.datetime(2021, 9, 10, 19, 0, 34, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id=None, related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 7, 30, 15, 3, 14, tzinfo=datetime.timezone.utc), uid='20210118_1po1bsgspnatou2qf9gahqc7rk@google.com', dtstart=datetime.date(2021, 1, 18), dtend=datetime.date(2021, 1, 19), duration=None, summary='Martin Luther King Jr. Day', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2021, 9, 10, 19, 0, 23, tzinfo=datetime.timezone.utc), description='Public holiday', geo=None, last_modified=datetime.datetime(2021, 9, 10, 19, 0, 23, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id=None, related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 7, 30, 15, 3, 14, tzinfo=datetime.timezone.utc), uid='20210120_vtpup7q2um8qbtqccvosgkvmgs@google.com', dtstart=datetime.date(2021, 1, 20), dtend=datetime.date(2021, 1, 21), duration=None, summary='Inauguration Day (regional holiday)', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2021, 9, 10, 19, 0, 25, tzinfo=datetime.timezone.utc), description='Public holiday in District of Columbia, Maryland, Virginia', geo=None, last_modified=datetime.datetime(2021, 9, 10, 19, 0, 25, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id=None, related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 7, 30, 15, 3, 14, tzinfo=datetime.timezone.utc), uid='20210201_0j09arjnv4r8gm0oldpkgua31s@google.com', dtstart=datetime.date(2021, 2, 1), dtend=datetime.date(2021, 2, 2), duration=None, summary='First Day of Black History Month', attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2021, 9, 10, 19, 0, 23, tzinfo=datetime.timezone.utc), description='Observance\nTo hide observances, go to Google Calendar Settings > Holidays in United States', geo=None, last_modified=datetime.datetime(2021, 9, 10, 19, 0, 23, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id=None, related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2022, 7, 30, 15, 3, 14, tzinfo=datetime.timezone.utc), uid='20210214_reo046tof5lk55gc5kkrlkj778@google.com', dtstart=datetime.date(2021, 2, 14), dtend=datetime.date(2021, 2, 15), duration=None, summary="Valentine's Day", attendees=[], categories=[], classification=<Classification.PUBLIC: 'PUBLIC'>, comment=[], contacts=[], created=datetime.datetime(2021, 9, 10, 19, 0, 23, tzinfo=datetime.timezone.utc), description='Observance\nTo hide observances, go to Google Calendar Settings > Holidays in United States', geo=None, last_modified=datetime.datetime(2021, 9, 10, 19, 0, 23, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id=None, related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+  ])
+# ---
+# name: test_iterate_events[recurring_event]
+  list([
+    Event(dtstamp=datetime.datetime(2025, 5, 4, 15, 1, 36, tzinfo=datetime.timezone.utc), uid='v8rukz8ier7ijmn@google.com', dtstart=datetime.date(2025, 5, 5), dtend=datetime.date(2025, 5, 6), duration=None, summary='Some Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2025, 5, 4, 14, 56, 10, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2025, 5, 4, 14, 57, 29, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20250505', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 4, 15, 1, 36, tzinfo=datetime.timezone.utc), uid='v8rukz8ier7ijmn@google.com', dtstart=datetime.date(2025, 5, 6), dtend=datetime.date(2025, 5, 7), duration=None, summary='Some Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2025, 5, 4, 14, 56, 10, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2025, 5, 4, 14, 57, 29, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20250506', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 4, 15, 1, 36, tzinfo=datetime.timezone.utc), uid='v8rukz8ier7ijmn@google.com', dtstart=datetime.date(2025, 5, 7), dtend=datetime.date(2025, 5, 8), duration=None, summary='Some Modified Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2025, 5, 4, 14, 56, 10, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2025, 5, 4, 14, 57, 38, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20250507', related_to=[], related=[], resources=[], rrule=None, rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 4, 15, 1, 36, tzinfo=datetime.timezone.utc), uid='v8rukz8ier7ijmn@google.com', dtstart=datetime.date(2025, 5, 7), dtend=datetime.date(2025, 5, 8), duration=None, summary='Some Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2025, 5, 4, 14, 56, 10, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2025, 5, 4, 14, 57, 29, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20250507', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2025, 5, 4, 15, 1, 36, tzinfo=datetime.timezone.utc), uid='v8rukz8ier7ijmn@google.com', dtstart=datetime.date(2025, 5, 8), dtend=datetime.date(2025, 5, 9), duration=None, summary='Some Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=datetime.datetime(2025, 5, 4, 14, 56, 10, tzinfo=datetime.timezone.utc), description=None, geo=None, last_modified=datetime.datetime(2025, 5, 4, 14, 57, 29, tzinfo=datetime.timezone.utc), location=None, organizer=None, priority=None, recurrence_id='20250508', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.DAILY: 'DAILY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency='TRANSPARENT', url=None, extras=[], alarm=[]),
+  ])
+# ---
+# name: test_iterate_events[store_edit_bugs]
+  list([
+    Event(dtstamp=datetime.datetime(2021, 8, 5, 16, 33, 53, tzinfo=datetime.timezone.utc), uid='HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me', dtstart=datetime.datetime(2021, 9, 4, 11, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), dtend=datetime.datetime(2021, 9, 4, 12, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), duration=None, summary='My Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=None, description='Example', geo=None, last_modified=None, location=None, organizer=None, priority=None, recurrence_id='20210904T110000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.WEEKLY: 'WEEKLY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2021, 8, 5, 16, 33, 53, tzinfo=datetime.timezone.utc), uid='HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me', dtstart=datetime.datetime(2021, 9, 11, 11, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), dtend=datetime.datetime(2021, 9, 11, 12, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), duration=None, summary='My Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=None, description='Example', geo=None, last_modified=None, location=None, organizer=None, priority=None, recurrence_id='20210911T110000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.WEEKLY: 'WEEKLY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2021, 8, 5, 16, 33, 53, tzinfo=datetime.timezone.utc), uid='HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me', dtstart=datetime.datetime(2021, 9, 18, 11, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), dtend=datetime.datetime(2021, 9, 18, 12, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), duration=None, summary='My Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=None, description='Example', geo=None, last_modified=None, location=None, organizer=None, priority=None, recurrence_id='20210918T110000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.WEEKLY: 'WEEKLY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2021, 8, 5, 16, 33, 53, tzinfo=datetime.timezone.utc), uid='HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me', dtstart=datetime.datetime(2021, 9, 25, 11, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), dtend=datetime.datetime(2021, 9, 25, 12, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), duration=None, summary='My Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=None, description='Example', geo=None, last_modified=None, location=None, organizer=None, priority=None, recurrence_id='20210925T110000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.WEEKLY: 'WEEKLY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency=None, url=None, extras=[], alarm=[]),
+    Event(dtstamp=datetime.datetime(2021, 8, 5, 16, 33, 53, tzinfo=datetime.timezone.utc), uid='HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me', dtstart=datetime.datetime(2021, 10, 2, 11, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), dtend=datetime.datetime(2021, 10, 2, 12, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Amsterdam')), duration=None, summary='My Event', attendees=[], categories=[], classification=None, comment=[], contacts=[], created=None, description='Example', geo=None, last_modified=None, location=None, organizer=None, priority=None, recurrence_id='20211002T110000', related_to=[], related=[], resources=[], rrule=Recur(freq=<Frequency.WEEKLY: 'WEEKLY'>, until=None, count=None, interval=1, by_weekday=[], by_month_day=[], by_month=[], by_setpos=[]), rdate=[], exdate=[], request_status=None, sequence=0, status=<EventStatus.CONFIRMED: 'CONFIRMED'>, transparency=None, url=None, extras=[], alarm=[]),
+  ])
+# ---
+# name: test_parse[apple_ical]
+  '''
+  BEGIN:VCALENDAR
+  PRODID:-//caldav.icloud.com//CALDAVJ 2514B607//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20220925T191543Z
+  UID:001BE545-52F9-4099-ACFC-A14FF63C4701
+  DTSTART;TZID=America/Los_Angeles:20220927T090000
+  DTEND;TZID=America/Los_Angeles:20220927T100000
+  SUMMARY:New Event
+  CREATED:20220925T061541Z
+  LAST-MODIFIED:20220925T061541Z
+  SEQUENCE:1
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20231015T180900Z
+  UID:020C71BB-A981-4520-83E9-98E488A60863
+  DTSTART:20231011
+  DTEND:20231013
+  SUMMARY:Multi-day event
+  CREATED:20231015T180900Z
+  SEQUENCE:0
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20231015T180532Z
+  UID:3B4E9E16-8D79-422F-B48F-888861099B5B
+  DTSTART:20231015
+  DTEND:20231018
+  SUMMARY:Multi-day event
+  CREATED:20231015T180532Z
+  SEQUENCE:0
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220924T152626Z
+  UID:543E8A23-5A51-4489-8117-55241E8A1E30
+  DTSTART;TZID=America/Los_Angeles:20220920T090000
+  DTEND;TZID=America/Los_Angeles:20220920T110000
+  SUMMARY:Example
+  CREATED:20220924T152551Z
+  DESCRIPTION:Test description
+  LAST-MODIFIED:20220924T152623Z
+  SEQUENCE:1
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220924T170617Z
+  UID:6D0A3855-9577-40D3-AE87-9624657C7561
+  DTSTART;TZID=America/Los_Angeles:20220926T090000
+  DTEND;TZID=America/Los_Angeles:20220926T100000
+  SUMMARY:Daily
+  CREATED:20220924T170609Z
+  LAST-MODIFIED:20220925T191650Z
+  RRULE:FREQ=DAILY
+  SEQUENCE:1
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220925T191545Z
+  UID:A409C8CF-31E9-4234-BE8A-6CE2B6BB875A
+  DTSTART;TZID=America/Los_Angeles:20220912T090000
+  DTEND;TZID=America/Los_Angeles:20220912T100000
+  SUMMARY:New Event
+  CREATED:20220925T191543Z
+  LAST-MODIFIED:20220925T191543Z
+  SEQUENCE:1
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220925T192230Z
+  UID:E53B06A1-9F72-41D9-9446-68E335D2D4F4
+  DTSTART;TZID=America/Los_Angeles:20220913T090000
+  DTEND;TZID=America/Los_Angeles:20220913T100000
+  SUMMARY:Daily
+  CREATED:20220925T191559Z
+  LAST-MODIFIED:20220924T170616Z
+  RRULE:FREQ=DAILY;UNTIL=20220926T155959Z
+  SEQUENCE:1
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220924T162627Z
+  UID:F17B5DBD-1915-4654-90A5-1D068739A75F
+  DTSTART;TZID=America/Los_Angeles:20220922T090000
+  DTEND;TZID=America/Los_Angeles:20220922T100000
+  SUMMARY:bar
+  CREATED:20220924T162621Z
+  DESCRIPTION:foo
+  LAST-MODIFIED:20220924T162627Z
+  SEQUENCE:1
+  END:VEVENT
+  BEGIN:VTIMEZONE
+  TZID:America/Los_Angeles
+  BEGIN:STANDARD
+  DTSTART:18831118T120702
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0752
+  RDATE:18831118T120702
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:19181027T020000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0700
+  RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYDAY=-1SU;BYMONTH=10
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:19450930T020000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0700
+  RDATE:19450930T020000
+  RDATE:19490101T020000
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:19460101T000000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0800
+  RDATE:19460101T000000
+  RDATE:19670101T000000
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:19500924T020000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0700
+  RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYDAY=-1SU;BYMONTH=9
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:19621028T020000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0700
+  RRULE:FREQ=YEARLY;UNTIL=19661030T090000Z;BYDAY=-1SU;BYMONTH=10
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:19671029T020000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0700
+  RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYDAY=-1SU;BYMONTH=10
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:STANDARD
+  DTSTART:20071104T020000
+  TZOFFSETTO:-0800
+  TZOFFSETFROM:-0700
+  RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+  TZNAME:PST
+  END:STANDARD
+  BEGIN:DAYLIGHT
+  DTSTART:19180331T020000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYDAY=-1SU;BYMONTH=3
+  TZNAME:PDT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19420209T020000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RDATE:19420209T020000
+  TZNAME:PWT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19450814T160000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0700
+  RDATE:19450814T160000
+  TZNAME:PPT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19480314T020100
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RDATE:19480314T020100
+  RDATE:19740106T020000
+  RDATE:19750223T020000
+  TZNAME:PDT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19500430T010000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYDAY=-1SU;BYMONTH=4
+  TZNAME:PDT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19670430T020000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYDAY=-1SU;BYMONTH=4
+  TZNAME:PDT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19760425T020000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYDAY=-1SU;BYMONTH=4
+  TZNAME:PDT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:19870405T020000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYDAY=1SU;BYMONTH=4
+  TZNAME:PDT
+  END:DAYLIGHT
+  BEGIN:DAYLIGHT
+  DTSTART:20070311T020000
+  TZOFFSETTO:-0700
+  TZOFFSETFROM:-0800
+  RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+  TZNAME:PDT
+  END:DAYLIGHT
+  END:VTIMEZONE
+  END:VCALENDAR
+  '''
+# ---
+# name: test_parse[extended_values]
+  '''
+  BEGIN:VCALENDAR
+  PRODID:-//github.com/allenporter/ical//8.2.0//EN
+  VERSION:2.0
+  BEGIN:VTODO
+  DTSTAMP:20250313T123432Z
+  UID:20070313T123432Z-456553@example.com
+  CATEGORIES:FAMILY
+  CATEGORIES:FINANCE
+  DUE:20070501
+  STATUS:NEEDS-ACTION
+  SUMMARY:Submit Quebec Income Tax Return for 2006
+  END:VTODO
+  END:VCALENDAR
+  '''
+# ---
+# name: test_parse[google_calendar_invalid_offset]
+  '''
+  BEGIN:VCALENDAR
+  CALSCALE:GREGORIAN
+  METHOD:PUBLISH
+  PRODID:-//Google Inc//Google Calendar 70.9054//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250511T233945Z
+  UID:KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.goo
+   gle.com
+  DTSTART;TZID=America/Argentina/Buenos_Aires:20030203T170000
+  DTEND;TZID=America/Argentina/Buenos_Aires:20030203T190000
+  SUMMARY:Event Summary
+  CLASS:PUBLIC
+  CREATED:20060315T210421Z
+  LAST-MODIFIED:20230220T034045Z
+  RRULE:FREQ=DAILY;UNTIL=20030213T160000Z
+  EXDATE;TZID=America/Argentina/Buenos_Aires:20030208T170000
+  EXDATE;TZID=America/Argentina/Buenos_Aires:20030209T170000
+  SEQUENCE:3
+  STATUS:TENTATIVE
+  TRANSP:OPAQUE
+  END:VEVENT
+  BEGIN:VTIMEZONE
+  TZID:America/Sao_Paulo
+  BEGIN:STANDARD
+  DTSTART:19700101T000000
+  TZOFFSETTO:-0300
+  TZOFFSETFROM:-0300
+  TZNAME:GMT-3
+  END:STANDARD
+  END:VTIMEZONE
+  BEGIN:VTIMEZONE
+  TZID:America/Argentina/Buenos_Aires
+  BEGIN:STANDARD
+  DTSTART:19700101T000000
+  TZOFFSETTO:-0300
+  TZOFFSETFROM:-0300
+  TZNAME:GMT-3
+  END:STANDARD
+  END:VTIMEZONE
+  END:VCALENDAR
+  '''
+# ---
+# name: test_parse[google_calendar_public_holidays]
+  '''
+  BEGIN:VCALENDAR
+  CALSCALE:GREGORIAN
+  METHOD:PUBLISH
+  PRODID:-//Google Inc//Google Calendar 70.9054//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231110_rhv0a9kca8mmmdo4ei84ubu46s@google.com
+  DTSTART:20231110
+  DTEND:20231111
+  SUMMARY:Veterans Day (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230102_qn82d48cimkdg6jtog71ssphi8@google.com
+  DTSTART:20230102
+  DTEND:20230103
+  SUMMARY:New Year's Day (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211231_pjp0d08vkhqsv10an7hs3u2a9c@google.com
+  DTSTART:20211231
+  DTEND:20220101
+  SUMMARY:New Year's Day (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220620_2ggfpo9bnaj019jh2jn4m15934@google.com
+  DTSTART:20220620
+  DTEND:20220621
+  SUMMARY:Juneteenth (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210618_vg7iiogg0qtjhpp3mrs1oeq48s@google.com
+  DTSTART:20210618
+  DTEND:20210619
+  SUMMARY:Juneteenth (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210705_2vtd20oge5alkavuvoogkf021k@google.com
+  DTSTART:20210705
+  DTEND:20210706
+  SUMMARY:Independence Day (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221226_j7qpbluailblij0c1i09uuia8o@google.com
+  DTSTART:20221226
+  DTEND:20221227
+  SUMMARY:Christmas Day (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211224_9fvbilr0017a8t853k466rquoc@google.com
+  DTSTART:20211224
+  DTEND:20211225
+  SUMMARY:Christmas Day (substitute)
+  CLASS:PUBLIC
+  CREATED:20220126T031327Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20220126T031327Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230514_4tku8pd1d4vqvrompkbqt51bps@google.com
+  DTSTART:20230514
+  DTEND:20230515
+  SUMMARY:Mother's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220117_a8pam0i5kuqajqn3gih7bsdfn4@google.com
+  DTSTART:20220117
+  DTEND:20220118
+  SUMMARY:Martin Luther King Jr. Day
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220704_7mjropb9h0lmq9902t7jhanq94@google.com
+  DTSTART:20220704
+  DTEND:20220705
+  SUMMARY:Independence Day
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211031_hb7ms1o1dfan5l41e7npt91sks@google.com
+  DTSTART:20211031
+  DTEND:20211101
+  SUMMARY:Halloween
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210915_mki3pbd3g88fds6gfomm419oqg@google.com
+  DTSTART:20210915
+  DTEND:20210916
+  SUMMARY:First Day of Hispanic Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211102_00haicklogosrcbanisb2cudd4@google.com
+  DTSTART:20211102
+  DTEND:20211103
+  SUMMARY:Election Day
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211107_n3rolco9cpvq95g7nqvlqsf0l0@google.com
+  DTSTART:20211107
+  DTEND:20211108
+  SUMMARY:Daylight Saving Time ends
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211225_56c03granps4dfloccthnu4288@google.com
+  DTSTART:20211225
+  DTEND:20211226
+  SUMMARY:Christmas Day
+  CLASS:PUBLIC
+  CREATED:20210910T190037Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190037Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211125_342uhr2rqf1qtvaqlg7nf58l94@google.com
+  DTSTART:20211125
+  DTEND:20211126
+  SUMMARY:Thanksgiving Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230418_fdjpuvbba1bjjqobbvpsf062fs@google.com
+  DTSTART:20230418
+  DTEND:20230419
+  SUMMARY:Tax Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220317_mnqa8ubhi14rjesehu00kn46fg@google.com
+  DTSTART:20220317
+  DTEND:20220318
+  SUMMARY:St. Patrick's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210101_fokaslga04sgnfruusv1tomhs4@google.com
+  DTSTART:20210101
+  DTEND:20210102
+  SUMMARY:New Year's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221125_5fsp6cfd26fr9m158ot932b994@google.com
+  DTSTART:20221125
+  DTEND:20221126
+  SUMMARY:Native American Heritage Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220508_5j9tt75njq2mc9s84ktghv5uo4@google.com
+  DTSTART:20220508
+  DTEND:20220509
+  SUMMARY:Mother's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220530_mubrcfb1ema52icfs7jvo52i8o@google.com
+  DTSTART:20220530
+  DTEND:20220531
+  SUMMARY:Memorial Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230601_2vhknhkbc0vkcd1ks1orb0qtq4@google.com
+  DTSTART:20230601
+  DTEND:20230602
+  SUMMARY:First Day of LGBTQ+ Pride Month
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230501_k826tj3euiqb7bd2bknnvrduvs@google.com
+  DTSTART:20230501
+  DTEND:20230502
+  SUMMARY:First Day of Asian Pacific American Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231107_fc8f1530s41qftcnc9c75jccok@google.com
+  DTSTART:20231107
+  DTEND:20231108
+  SUMMARY:Election Day
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210404_u6jdgtbhpnu5uff5es0g2u55p8@google.com
+  DTSTART:20210404
+  DTEND:20210405
+  SUMMARY:Easter Sunday
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231105_drikm9rqmroskv6c07ug7t5l8o@google.com
+  DTSTART:20231105
+  DTEND:20231106
+  SUMMARY:Daylight Saving Time ends
+  CLASS:PUBLIC
+  CREATED:20210910T190034Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190034Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231231_ucldqhu3apcoop6nflgm07k0c4@google.com
+  DTSTART:20231231
+  DTEND:20240101
+  SUMMARY:New Year's Eve
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231124_6g4mhi5vinqr5kpe2j2p09bumc@google.com
+  DTSTART:20231124
+  DTEND:20231125
+  SUMMARY:Native American Heritage Day
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211126_f7p24k9moujg3knjk3gqn0uqi0@google.com
+  DTSTART:20211126
+  DTEND:20211127
+  SUMMARY:Native American Heritage Day
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210619_25s49v545th8e2g1l0s1age4q8@google.com
+  DTSTART:20210619
+  DTEND:20210620
+  SUMMARY:Juneteenth
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210614_f0h43n320f06b6sl5km26hlgqo@google.com
+  DTSTART:20210614
+  DTEND:20210615
+  SUMMARY:Flag Day
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220301_jmeh9p188joa4s1f7udqmi7vcg@google.com
+  DTSTART:20220301
+  DTEND:20220302
+  SUMMARY:First Day of Women's History Month
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220915_6lba3248elmatsabr013c544ns@google.com
+  DTSTART:20220915
+  DTEND:20220916
+  SUMMARY:First Day of Hispanic Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220501_4nvga8ab05san3rljmk8gogmek@google.com
+  DTSTART:20220501
+  DTEND:20220502
+  SUMMARY:First Day of Asian Pacific American Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221010_h9m1g7t7hs8jujq8o3ub5fmapc@google.com
+  DTSTART:20221010
+  DTEND:20221011
+  SUMMARY:Columbus Day
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211011_je106i2o07ulmn1oqkhg3bpt20@google.com
+  DTSTART:20211011
+  DTEND:20211012
+  SUMMARY:Columbus Day
+  CLASS:PUBLIC
+  CREATED:20210910T190032Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190032Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221111_lv2fh3r4enk5a5742uidp649a0@google.com
+  DTSTART:20221111
+  DTEND:20221112
+  SUMMARY:Veterans Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230214_d59pfu6h8u8fq6s4sj2lnoo5gs@google.com
+  DTSTART:20230214
+  DTEND:20230215
+  SUMMARY:Valentine's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210317_t1pnk6k84rhic9mntdrsmqevo0@google.com
+  DTSTART:20210317
+  DTEND:20210318
+  SUMMARY:St. Patrick's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230101_nhnms9gk6eamd27mbtcnbma84k@google.com
+  DTSTART:20230101
+  DTEND:20230102
+  SUMMARY:New Year's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210509_d805mmucb0345vqgfv7f4jdjc8@google.com
+  DTSTART:20210509
+  DTEND:20210510
+  SUMMARY:Mother's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210531_8em61chstgmokrolkqfg29fo64@google.com
+  DTSTART:20210531
+  DTEND:20210601
+  SUMMARY:Memorial Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230704_1ri8najbdk2o7uj1f8t8a1o6ks@google.com
+  DTSTART:20230704
+  DTEND:20230705
+  SUMMARY:Independence Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210601_g4mul0focalhvsr7uncrdjsj2o@google.com
+  DTSTART:20210601
+  DTEND:20210602
+  SUMMARY:First Day of LGBTQ+ Pride Month
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230915_ph91tpp5mb73h9ihafa7cqnmb0@google.com
+  DTSTART:20230915
+  DTEND:20230916
+  SUMMARY:First Day of Hispanic Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221101_ek6rjrt8667gnvq9gm3h88ad98@google.com
+  DTSTART:20221101
+  DTEND:20221102
+  SUMMARY:First Day of American Indian Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230618_l6s2hg250270pbl2f5maovouno@google.com
+  DTSTART:20230618
+  DTEND:20230619
+  SUMMARY:Father's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230410_d8pdh1sdo610bu7kbv15mrpvak@google.com
+  DTSTART:20230410
+  DTEND:20230411
+  SUMMARY:Easter Monday
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220418_0jkinfo1hgk7sane6d06im3m0c@google.com
+  DTSTART:20220418
+  DTEND:20220419
+  SUMMARY:Easter Monday
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210314_lkgovfdmgtrqni8f31fis31c5c@google.com
+  DTSTART:20210314
+  DTEND:20210315
+  SUMMARY:Daylight Saving Time starts
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220505_gnpcourkrjsdqgd6l5p8m00kko@google.com
+  DTSTART:20220505
+  DTEND:20220506
+  SUMMARY:Cinco de Mayo
+  CLASS:PUBLIC
+  CREATED:20210910T190030Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190030Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220214_hahfjb9tapacrm71nkh6qs6egk@google.com
+  DTSTART:20220214
+  DTEND:20220215
+  SUMMARY:Valentine's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220418_e5hpiqfqkmoe4d34p9d3fcio8s@google.com
+  DTSTART:20220418
+  DTEND:20220419
+  SUMMARY:Tax Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210517_2eh4j1ptkb9tn4euk2u03voqdc@google.com
+  DTSTART:20210517
+  DTEND:20210518
+  SUMMARY:Tax Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211231_9cev8pie19qapks49npm04l9rc@google.com
+  DTSTART:20211231
+  DTEND:20220101
+  SUMMARY:New Year's Eve
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230529_f0vqs3ucctachbjeqeqbc9f3os@google.com
+  DTSTART:20230529
+  DTEND:20230530
+  SUMMARY:Memorial Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230116_jqnr1evsqf4psdprffkt3seirs@google.com
+  DTSTART:20230116
+  DTEND:20230117
+  SUMMARY:Martin Luther King Jr. Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220619_ik9o5ivf47d0lpgavip4bvg8t8@google.com
+  DTSTART:20220619
+  DTEND:20220620
+  SUMMARY:Juneteenth
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231009_t9s1rpkceqp8vjg2g2606tq8bc@google.com
+  DTSTART:20231009
+  DTEND:20231010
+  SUMMARY:Indigenous Peoples' Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211011_q11lvsl9kfvn0ub3dmu4mo8pig@google.com
+  DTSTART:20211011
+  DTEND:20211012
+  SUMMARY:Indigenous Peoples' Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231031_36klpu9coljcnm9nfgjth27al4@google.com
+  DTSTART:20231031
+  DTEND:20231101
+  SUMMARY:Halloween
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220619_7ctrqsm38ndrv6oopsqviti6rk@google.com
+  DTSTART:20220619
+  DTEND:20220620
+  SUMMARY:Father's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221108_homlier8gatje3hh76f2ai5lio@google.com
+  DTSTART:20221108
+  DTEND:20221109
+  SUMMARY:Election Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231009_e8vvu38c3icj97ls28mtfidkp4@google.com
+  DTSTART:20231009
+  DTEND:20231010
+  SUMMARY:Columbus Day
+  CLASS:PUBLIC
+  CREATED:20210910T190028Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190028Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220221_9107h5bvj0daipoo5oq1fr1j7g@google.com
+  DTSTART:20220221
+  DTEND:20220222
+  SUMMARY:Presidents' Day
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230619_t1h5lk8nd1lbhfatjsib3lpuag@google.com
+  DTSTART:20230619
+  DTEND:20230620
+  SUMMARY:Juneteenth
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221010_e5gn60nvooi7b5n63lgt95svvc@google.com
+  DTSTART:20221010
+  DTEND:20221011
+  SUMMARY:Indigenous Peoples' Day
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221031_6glp9tsh22arlfd0ob8jbpneqs@google.com
+  DTSTART:20221031
+  DTEND:20221101
+  SUMMARY:Halloween
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210301_lai8o9lsk6jcleuj0u8rshla2g@google.com
+  DTSTART:20210301
+  DTEND:20210302
+  SUMMARY:First Day of Women's History Month
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230201_jqf6jfp34j27r3htoj5djp243o@google.com
+  DTSTART:20230201
+  DTEND:20230202
+  SUMMARY:First Day of Black History Month
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220201_mu85q94gmfjqkf7je57t4koff0@google.com
+  DTSTART:20220201
+  DTEND:20220202
+  SUMMARY:First Day of Black History Month
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231101_tvl7hiji8jipl7hrutr4h62v5o@google.com
+  DTSTART:20231101
+  DTEND:20231102
+  SUMMARY:First Day of American Indian Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210620_kvil948slg8fre7sp0udqaske0@google.com
+  DTSTART:20210620
+  DTEND:20210621
+  SUMMARY:Father's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230409_75pm8qfnrbseuaga8d13e1glo4@google.com
+  DTSTART:20230409
+  DTEND:20230410
+  SUMMARY:Easter Sunday
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230312_lt6srv5ushtc031pd4s5t6ri7k@google.com
+  DTSTART:20230312
+  DTEND:20230313
+  SUMMARY:Daylight Saving Time starts
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220313_4k6mqpjvh52h82uasjatksbtpk@google.com
+  DTSTART:20220313
+  DTEND:20220314
+  SUMMARY:Daylight Saving Time starts
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221106_lgt8p48405gsmojtl6jcoenne0@google.com
+  DTSTART:20221106
+  DTEND:20221107
+  SUMMARY:Daylight Saving Time ends
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230505_tl426lafthi6vvnjlms6b0u0n8@google.com
+  DTSTART:20230505
+  DTEND:20230506
+  SUMMARY:Cinco de Mayo
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210505_dg1j991u2tog58jf2omo6ueu44@google.com
+  DTSTART:20210505
+  DTEND:20210506
+  SUMMARY:Cinco de Mayo
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221224_mr7j751ra55nn0kd1lf4objb9g@google.com
+  DTSTART:20221224
+  DTEND:20221225
+  SUMMARY:Christmas Eve
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221225_j9ti48so951iffnrvplkvirvmg@google.com
+  DTSTART:20221225
+  DTEND:20221226
+  SUMMARY:Christmas Day
+  CLASS:PUBLIC
+  CREATED:20210910T190027Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190027Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231123_6b64ndbva1c6ptufj345j4opno@google.com
+  DTSTART:20231123
+  DTEND:20231124
+  SUMMARY:Thanksgiving Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230317_mam3qbsfcdm0jhm86rme5mfbos@google.com
+  DTSTART:20230317
+  DTEND:20230318
+  SUMMARY:St. Patrick's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230220_icou39sbkm37nn1nrktk0ne0k0@google.com
+  DTSTART:20230220
+  DTEND:20230221
+  SUMMARY:Presidents' Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210215_bjeb700bsa2s8f3llppic71ips@google.com
+  DTSTART:20210215
+  DTEND:20210216
+  SUMMARY:Presidents' Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220101_s1t4egh3li0g082fqkuvevmkq4@google.com
+  DTSTART:20220101
+  DTEND:20220102
+  SUMMARY:New Year's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230904_sv1h93jbkec423gmvvebn3eblk@google.com
+  DTSTART:20230904
+  DTEND:20230905
+  SUMMARY:Labor Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210906_tp5ib7il1bg4990u7cjncaelk8@google.com
+  DTSTART:20210906
+  DTEND:20210907
+  SUMMARY:Labor Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210120_vtpup7q2um8qbtqccvosgkvmgs@google.com
+  DTSTART:20210120
+  DTEND:20210121
+  SUMMARY:Inauguration Day (regional holiday)
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Public holiday in District of Columbia\, Maryland\, Virginia
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230614_jntb38u1dq4oedjihsmvu0auj8@google.com
+  DTSTART:20230614
+  DTEND:20230615
+  SUMMARY:Flag Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220614_afb0e5hutl5v33gf1a3gvqg070@google.com
+  DTSTART:20220614
+  DTEND:20220615
+  SUMMARY:Flag Day
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20230301_6555jab2tqmq1ip9mikifjpbp0@google.com
+  DTSTART:20230301
+  DTEND:20230302
+  SUMMARY:First Day of Women's History Month
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220601_i22r3so7ahvvng92aakskg64o4@google.com
+  DTSTART:20220601
+  DTEND:20220602
+  SUMMARY:First Day of LGBTQ+ Pride Month
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210501_0ss4p7f8jhdrr35och32c0n6n8@google.com
+  DTSTART:20210501
+  DTEND:20210502
+  SUMMARY:First Day of Asian Pacific American Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231224_84424vvnc1o6o6ranpihu0b33k@google.com
+  DTSTART:20231224
+  DTEND:20231225
+  SUMMARY:Christmas Eve
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211224_vu488ou57f09b0nqdmlat6mork@google.com
+  DTSTART:20211224
+  DTEND:20211225
+  SUMMARY:Christmas Eve
+  CLASS:PUBLIC
+  CREATED:20210910T190025Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190025Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231111_ggtdplapook243vpjat2er758c@google.com
+  DTSTART:20231111
+  DTEND:20231112
+  SUMMARY:Veterans Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211111_dpg443k4rllrj1j4nuicsaujs0@google.com
+  DTSTART:20211111
+  DTEND:20211112
+  SUMMARY:Veterans Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210214_reo046tof5lk55gc5kkrlkj778@google.com
+  DTSTART:20210214
+  DTEND:20210215
+  SUMMARY:Valentine's Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221124_q2bltm9681722h5dm8b4nksen4@google.com
+  DTSTART:20221124
+  DTEND:20221125
+  SUMMARY:Thanksgiving Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20221231_sis3hnml9ikf19e59a6etn9qug@google.com
+  DTSTART:20221231
+  DTEND:20230101
+  SUMMARY:New Year's Eve
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210118_1po1bsgspnatou2qf9gahqc7rk@google.com
+  DTSTART:20210118
+  DTEND:20210119
+  SUMMARY:Martin Luther King Jr. Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220905_9qfkiuho50ingbggv94h4svbis@google.com
+  DTSTART:20220905
+  DTEND:20220906
+  SUMMARY:Labor Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210704_rkahlg7dv9hhgsa4hmjtr7ag8c@google.com
+  DTSTART:20210704
+  DTEND:20210705
+  SUMMARY:Independence Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210201_0j09arjnv4r8gm0oldpkgua31s@google.com
+  DTSTART:20210201
+  DTEND:20210202
+  SUMMARY:First Day of Black History Month
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20211101_stnvv736fobeq1tpsqjc9eoke0@google.com
+  DTSTART:20211101
+  DTEND:20211102
+  SUMMARY:First Day of American Indian Heritage Month
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20220417_3s7sr1qa2d9o9oe5cbgd3b6ju0@google.com
+  DTSTART:20220417
+  DTEND:20220418
+  SUMMARY:Easter Sunday
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20210405_6gqtfbnqna8nc2uhejk6g1jpjo@google.com
+  DTSTART:20210405
+  DTEND:20210406
+  SUMMARY:Easter Monday
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Observance\nTo hide observances\, go to Google Calendar 
+   Settings > Holidays in United States
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20220730T150314Z
+  UID:20231225_ep50rip4a58phj35sevloms2hg@google.com
+  DTSTART:20231225
+  DTEND:20231226
+  SUMMARY:Christmas Day
+  CLASS:PUBLIC
+  CREATED:20210910T190023Z
+  DESCRIPTION:Public holiday
+  LAST-MODIFIED:20210910T190023Z
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
+# name: test_parse[recurring_event]
+  '''
+  BEGIN:VCALENDAR
+  CALSCALE:GREGORIAN
+  METHOD:PUBLISH
+  PRODID:-//Google Inc//Google Calendar 70.9054//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20250504T150136Z
+  UID:v8rukz8ier7ijmn@google.com
+  DTSTART:20250505
+  DTEND:20250506
+  SUMMARY:Some Event
+  CREATED:20250504T145610Z
+  LAST-MODIFIED:20250504T145729Z
+  RRULE:FREQ=DAILY
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  BEGIN:VEVENT
+  DTSTAMP:20250504T150136Z
+  UID:v8rukz8ier7ijmn@google.com
+  DTSTART:20250507
+  DTEND:20250508
+  SUMMARY:Some Modified Event
+  CREATED:20250504T145610Z
+  LAST-MODIFIED:20250504T145738Z
+  RECURRENCE-ID:20250507
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  TRANSP:TRANSPARENT
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
+# name: test_parse[store_edit_bugs]
+  '''
+  BEGIN:VCALENDAR
+  CALSCALE:GREGORIAN
+  METHOD:PUBLISH
+  PRODID:-//homeassistant.io//local_calendar 1.0//EN
+  VERSION:2.0
+  BEGIN:VEVENT
+  DTSTAMP:20210805T163353Z
+  UID:HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me
+  DTSTART;TZID=Europe/Amsterdam:20210904T110000
+  DTEND;TZID=Europe/Amsterdam:20210904T120000
+  SUMMARY:My Event
+  DESCRIPTION:Example
+  RRULE:FREQ=WEEKLY
+  SEQUENCE:0
+  STATUS:CONFIRMED
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
diff -pruN 9.0.0-2/tests/examples/test_ics_examples.py 12.1.0-1/tests/examples/test_ics_examples.py
--- 9.0.0-2/tests/examples/test_ics_examples.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/examples/test_ics_examples.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,16 +1,31 @@
 """Test that parses .ics files from known good repositories."""
 
 from pathlib import Path
+from itertools import islice
 
 import pytest
+from syrupy import SnapshotAssertion
 
-from ical.calendar_stream import CalendarStream
+from ical.calendar_stream import IcsCalendarStream
 
 TEST_DIR = Path("tests/examples")
+TEST_FILES = sorted(list(TEST_DIR.glob("testdata/*.ics")))
+TEST_IDS = [x.stem for x in TEST_FILES]
 
 
-@pytest.mark.parametrize("filename", list(TEST_DIR.glob("testdata/*.ics")))
-def test_parse(filename: Path) -> None:
+@pytest.mark.parametrize("filename", TEST_FILES, ids=TEST_IDS)
+def test_parse(filename: Path, snapshot: SnapshotAssertion) -> None:
     """Test to read golden files and verify they are parsed."""
     with filename.open() as ics_file:
-        CalendarStream.from_ics(ics_file.read())
+        calendar = IcsCalendarStream.calendar_from_ics(ics_file.read())
+
+    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot
+
+
+@pytest.mark.parametrize("filename", TEST_FILES, ids=TEST_IDS)
+def test_iterate_events(filename: Path, snapshot: SnapshotAssertion) -> None:
+    """Test to read golden files and verify they are parsed."""
+    with filename.open() as ics_file:
+        calendar = IcsCalendarStream.calendar_from_ics(ics_file.read())
+
+    assert list(islice(iter(calendar.timeline), 5)) == snapshot
diff -pruN 9.0.0-2/tests/examples/testdata/apple_ical.ics 12.1.0-1/tests/examples/testdata/apple_ical.ics
--- 9.0.0-2/tests/examples/testdata/apple_ical.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/examples/testdata/apple_ical.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,217 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//caldav.icloud.com//CALDAVJ 2514B607//EN
+X-WR-CALNAME:Home
+X-APPLE-CALENDAR-COLOR:#ff2d55
+BEGIN:VEVENT
+CREATED:20220925T061541Z
+UID:001BE545-52F9-4099-ACFC-A14FF63C4701
+DTEND;TZID=America/Los_Angeles:20220927T100000
+SUMMARY:New Event
+LAST-MODIFIED:20220925T061541Z
+DTSTAMP:20220925T191543Z
+DTSTART;TZID=America/Los_Angeles:20220927T090000
+SEQUENCE:1
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20231015T180900Z
+SUMMARY:Multi-day event
+TZID:America/Los_Angeles
+SEQUENCE:0
+UID:020C71BB-A981-4520-83E9-98E488A60863
+CREATED:20231015T180900Z
+DTSTART;VALUE=DATE:20231011
+DTEND;VALUE=DATE:20231013
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20231015T180532Z
+SUMMARY:Multi-day event
+TZID:America/Los_Angeles
+SEQUENCE:0
+UID:3B4E9E16-8D79-422F-B48F-888861099B5B
+CREATED:20231015T180532Z
+DTSTART;VALUE=DATE:20231015
+DTEND;VALUE=DATE:20231018
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20220924T152551Z
+UID:543E8A23-5A51-4489-8117-55241E8A1E30
+DTEND;TZID=America/Los_Angeles:20220920T110000
+SUMMARY:Example
+LAST-MODIFIED:20220924T152623Z
+DTSTAMP:20220924T152626Z
+DTSTART;TZID=America/Los_Angeles:20220920T090000
+SEQUENCE:1
+DESCRIPTION:Test description
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20220924T170609Z
+UID:6D0A3855-9577-40D3-AE87-9624657C7561
+RRULE:FREQ=DAILY;INTERVAL=1
+DTEND;TZID=America/Los_Angeles:20220926T100000
+SUMMARY:Daily
+LAST-MODIFIED:20220925T191650Z
+DTSTAMP:20220924T170617Z
+DTSTART;TZID=America/Los_Angeles:20220926T090000
+SEQUENCE:1
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20220925T191543Z
+UID:A409C8CF-31E9-4234-BE8A-6CE2B6BB875A
+DTEND;TZID=America/Los_Angeles:20220912T100000
+SUMMARY:New Event
+LAST-MODIFIED:20220925T191543Z
+DTSTAMP:20220925T191545Z
+DTSTART;TZID=America/Los_Angeles:20220912T090000
+SEQUENCE:1
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20220925T191559Z
+UID:E53B06A1-9F72-41D9-9446-68E335D2D4F4
+RRULE:FREQ=DAILY;UNTIL=20220926T155959Z;INTERVAL=1
+DTEND;TZID=America/Los_Angeles:20220913T100000
+SUMMARY:Daily
+LAST-MODIFIED:20220924T170616Z
+DTSTAMP:20220925T192230Z
+DTSTART;TZID=America/Los_Angeles:20220913T090000
+SEQUENCE:1
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20220924T162621Z
+UID:F17B5DBD-1915-4654-90A5-1D068739A75F
+DTEND;TZID=America/Los_Angeles:20220922T100000
+SUMMARY:bar
+LAST-MODIFIED:20220924T162627Z
+DTSTAMP:20220924T162627Z
+DTSTART;TZID=America/Los_Angeles:20220922T090000
+SEQUENCE:1
+DESCRIPTION:foo
+END:VEVENT
+BEGIN:VTIMEZONE
+TZID:America/Los_Angeles
+X-LIC-LOCATION:America/Los_Angeles
+BEGIN:STANDARD
+DTSTART:18831118T120702
+RDATE:18831118T120702
+TZNAME:PST
+TZOFFSETFROM:-075258
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYMONTH=3;BYDAY=-1SU
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYMONTH=10;BYDAY=-1SU
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:PWT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T160000
+RDATE:19450814T160000
+TZNAME:PPT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19450930T020000
+RDATE:19450930T020000
+RDATE:19490101T020000
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+RDATE:19670101T000000
+TZNAME:PST
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19480314T020100
+RDATE:19480314T020100
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19500430T010000
+RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYMONTH=4;BYDAY=-1SU
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19500924T020000
+RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYMONTH=9;BYDAY=-1SU
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19621028T020000
+RRULE:FREQ=YEARLY;UNTIL=19661030T090000Z;BYMONTH=10;BYDAY=-1SU
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYMONTH=4;BYDAY=-1SU
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19671029T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYMONTH=10;BYDAY=-1SU
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYMONTH=4;BYDAY=-1SU
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYMONTH=4;BYDAY=1SU
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/examples/testdata/extended_values.ics 12.1.0-1/tests/examples/testdata/extended_values.ics
--- 9.0.0-2/tests/examples/testdata/extended_values.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/examples/testdata/extended_values.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,14 @@
+BEGIN:VCALENDAR
+PRODID:-//github.com/allenporter/ical//8.2.0//EN
+VERSION:2.0
+BEGIN:VTODO
+UID:20070313T123432Z-456553@example.com
+DTSTAMP:20250313T123432Z
+DUE;VALUE=DATE:20070501
+SUMMARY:Submit Quebec Income Tax Return for 2006
+CLASS:HERPADERPA
+CATEGORIES:FAMILY,FINANCE
+X-HER-PADERPA:foobar
+STATUS:NEEDS-ACTION
+END:VTODO
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/examples/testdata/google_calendar_invalid_offset.ics 12.1.0-1/tests/examples/testdata/google_calendar_invalid_offset.ics
--- 9.0.0-2/tests/examples/testdata/google_calendar_invalid_offset.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/examples/testdata/google_calendar_invalid_offset.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,45 @@
+BEGIN:VCALENDAR
+PRODID:-//Google Inc//Google Calendar 70.9054//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+X-WR-CALNAME:Compromissos
+X-WR-TIMEZONE:Etc/GMT
+BEGIN:VTIMEZONE
+TZID:America/Sao_Paulo
+X-LIC-LOCATION:America/Sao_Paulo
+BEGIN:STANDARD
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0300
+TZNAME:GMT-3
+DTSTART:19700101T000000
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VTIMEZONE
+TZID:America/Argentina/Buenos_Aires
+X-LIC-LOCATION:America/Argentina/Buenos_Aires
+BEGIN:STANDARD
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0300
+TZNAME:GMT-3
+DTSTART:19700101T000000
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTART;TZID=America/Argentina/Buenos_Aires:20030203T170000
+DTEND;TZID=America/Argentina/Buenos_Aires:20030203T190000
+RRULE:FREQ=DAILY;UNTIL=20030213T160000Z
+EXDATE;VALUE=DATE:20030208
+EXDATE;VALUE=DATE:20030209
+DTSTAMP:20250511T233945Z
+UID:KOrganizer-854889822.731//199594j26139acq39nj78tbhac@group.calendar.goo
+ gle.com
+CLASS:PUBLIC
+CREATED:20060315T210421Z
+LAST-MODIFIED:20230220T034045Z
+SEQUENCE:3
+STATUS:TENTATIVE
+SUMMARY:Event Summary
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/examples/testdata/recurring_event.ics 12.1.0-1/tests/examples/testdata/recurring_event.ics
--- 9.0.0-2/tests/examples/testdata/recurring_event.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/examples/testdata/recurring_event.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+PRODID:-//Google Inc//Google Calendar 70.9054//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+X-WR-CALNAME:Public Recurrence Test
+X-WR-TIMEZONE:America/Los_Angeles
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20250505
+DTEND;VALUE=DATE:20250506
+RRULE:FREQ=DAILY
+DTSTAMP:20250504T150136Z
+UID:v8rukz8ier7ijmn@google.com
+CREATED:20250504T145610Z
+LAST-MODIFIED:20250504T145729Z
+SEQUENCE:0
+STATUS:CONFIRMED
+SUMMARY:Some Event
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20250507
+DTEND;VALUE=DATE:20250508
+DTSTAMP:20250504T150136Z
+UID:v8rukz8ier7ijmn@google.com
+RECURRENCE-ID;VALUE=DATE:20250507
+CREATED:20250504T145610Z
+LAST-MODIFIED:20250504T145738Z
+SEQUENCE:0
+STATUS:CONFIRMED
+SUMMARY:Some Modified Event
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/examples/testdata/store_edit_bugs.ics 12.1.0-1/tests/examples/testdata/store_edit_bugs.ics
--- 9.0.0-2/tests/examples/testdata/store_edit_bugs.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/examples/testdata/store_edit_bugs.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,17 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+PRODID:-//homeassistant.io//local_calendar 1.0//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20210805T163353Z
+UID:HX7KXxJM9ZyvyH8D00BMVP-K9drT@proton.me
+DTSTART;TZID=Europe/Amsterdam:20210904T110000
+DTEND;TZID=Europe/Amsterdam:20210904T120000
+SUMMARY:My Event
+DESCRIPTION:Example
+RRULE:FREQ=WEEKLY
+SEQUENCE:0
+STATUS:CONFIRMED
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/__snapshots__/test_component.ambr 12.1.0-1/tests/parsing/__snapshots__/test_component.ambr
--- 9.0.0-2/tests/parsing/__snapshots__/test_component.ambr	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/__snapshots__/test_component.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -16,6 +16,21 @@
   END:VEVENT
   '''
 # ---
+# name: test_encode_contentlines[emoji]
+  '''
+  BEGIN:VCALENDAR
+  VERSION:2.0
+  PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B2@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19971225
+  DTEND:19971226
+  SUMMARY:🎄
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
 # name: test_encode_contentlines[fold]
   '''
   BEGIN:VEVENT
@@ -38,10 +53,94 @@
   END:VCALENDAR
   '''
 # ---
+# name: test_encode_contentlines[languages]
+  '''
+  BEGIN:VCALENDAR
+  VERSION:2.0
+  PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B2@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:žmogus
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B3@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:中文
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B4@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:кириллица
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B5@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:Ελληνικά
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B6@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:עִברִית
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B7@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:日本語
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B8@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:한국어
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B9@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:ไทย
+  END:VEVENT
+  BEGIN:VEVENT
+  UID:19970610T172345Z-AF23B10@example.com
+  DTSTAMP:19970610T172345Z
+  DTSTART:19970714T170000Z
+  DTEND:19970715T040000Z
+  SUMMARY:देवनागरी
+  END:VEVENT
+  END:VCALENDAR
+  '''
+# ---
 # name: test_encode_contentlines[params]
   '''
   BEGIN:VCALENDAR
-  NAME;PARAM-NAME=PARAM-VALUE:VALUE
+  NAME;PARAM-NAME=PARAM-VALUE1:VALUE
+  NAME;PARAM-NAME=PARAM+VALUE2:VALUE
+  NAME;PARAM-NAME=PARAM VALUE3:VALUE
+  NAME;PARAM-NAME="PARAM:VALUE4":VALUE
+  DESCRIPTION:
+  DESCRIPTION;TYPE=:
+  END:VCALENDAR
+  '''
+# ---
+# name: test_encode_contentlines[params_empty]
+  '''
+  BEGIN:VCALENDAR
+  NAME;PARAM-NAME=:VALUE
+  NAME;PARAM-NAME=,Value2,,VALUE4,VALUE5:VALUE
   END:VCALENDAR
   '''
 # ---
@@ -60,6 +159,29 @@
   END:VCALENDAR
   '''
 # ---
+# name: test_encode_contentlines[unicode]
+  '''
+  BEGIN:VCALENDAR
+  PRODID:-//ABC Corporation//NONSGML My Product//EN
+  VERSION:2.0
+  BEGIN:VTODO
+  DTSTAMP:19980130T134500Z
+  SEQUENCE:2
+  UID:uid4@example.com
+  DUE:19980415T000000
+  STATUS:NEEDS-ACTION
+  SUMMARY:Birthday
+  BEGIN:VALARM
+  ACTION:AUDIO
+  TRIGGER:19980403T120000Z
+  ATTACH;FILENAME=Fødselsdag_40.pdf:https://someurl.com
+  REPEAT:4
+  DURATION:PT1H
+  END:VALARM
+  END:VTODO
+  END:VCALENDAR
+  '''
+# ---
 # name: test_encode_contentlines[vcalendar_emoji]
   '''
   BEGIN:VEVENT
@@ -99,6 +221,111 @@
   END:VTODO
   '''
 # ---
+# name: test_encode_contentlines[x-name]
+  '''
+  BEGIN:VEVENT
+  X-DESCRIPTION:This is a description
+  X-ICAL-DESCRIPTION:This is a description
+  X-ICAL-1:This is another x-name
+  END:VEVENT
+  '''
+# ---
+# name: test_invalid_contentlines[invalid]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid property line, expected (';', ':') after property name",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_iana-token]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid property name 'DES.RIPTION'",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_param_eol copy]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    'Unexpected end of line: unclosed quoted parameter value.',
+  )
+# ---
+# name: test_invalid_contentlines[invalid_param_eol_quoted]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    'Unexpected end of line: missing parameter value delimiter.',
+  )
+# ---
+# name: test_invalid_contentlines[invalid_param_name-1]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid parameter name 'PARAM NAME'",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_param_name-2]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid parameter name 'PARAM+NAME'",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_param_value]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid parameter format: missing '=' after parameter name part ';:VALUE'",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_params_list]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    'Unexpected end of line. Expected parameter value or delimiter.',
+  )
+# ---
+# name: test_invalid_contentlines[invalid_quoted_missing_value]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Unexpected end of line after parameter value 'PARAM-VAL'. Expected delimiter (',', ';', ':').",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_quoted_name]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    'Invalid property name \'"NAME"\'',
+  )
+# ---
+# name: test_invalid_contentlines[invalid_quoted_param_extra_end]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Expected (',', ';', ':') after parameter value, got 'e'",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_quoted_param_extra_start]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    'Parameter value \'extra"QUOTED-VALUE"\' for parameter \'PARAM-NAME\' is improperly quoted',
+  )
+# ---
+# name: test_invalid_contentlines[invalid_quoted_params]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    'Unexpected end of line: unclosed quoted parameter value.',
+  )
+# ---
+# name: test_invalid_contentlines[invalid_x-name-1]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid property name 'X-DES.RIPTION'",
+  )
+# ---
+# name: test_invalid_contentlines[invalid_x-name-2]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid property name 'X-,'",
+  )
+# ---
+# name: test_invalid_contentlines[missing_colon]
+  tuple(
+    'Calendar contents are not valid ICS format, see the detailed_error for more information',
+    "Invalid parameter format: missing '=' after parameter name part 'This is a description'",
+  )
+# ---
 # name: test_parse_contentlines[attendee]
   list([
     dict({
@@ -160,6 +387,59 @@
     }),
   ])
 # ---
+# name: test_parse_contentlines[emoji]
+  list([
+    dict({
+      'components': list([
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B2@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19971225',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19971226',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': '🎄',
+            }),
+          ]),
+        }),
+      ]),
+      'name': 'vcalendar',
+      'properties': list([
+        dict({
+          'name': 'version',
+          'params': None,
+          'value': '2.0',
+        }),
+        dict({
+          'name': 'prodid',
+          'params': None,
+          'value': '-//hacksw/handcal//NONSGML v1.0//EN',
+        }),
+      ]),
+    }),
+  ])
+# ---
 # name: test_parse_contentlines[fold]
   list([
     dict({
@@ -227,6 +507,315 @@
     }),
   ])
 # ---
+# name: test_parse_contentlines[languages]
+  list([
+    dict({
+      'components': list([
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B2@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'žmogus',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B3@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': '中文',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B4@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'кириллица',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B5@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'Ελληνικά',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B6@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'עִברִית',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B7@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': '日本語',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B8@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': '한국어',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B9@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'ไทย',
+            }),
+          ]),
+        }),
+        dict({
+          'components': list([
+          ]),
+          'name': 'vevent',
+          'properties': list([
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': '19970610T172345Z-AF23B10@example.com',
+            }),
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19970610T172345Z',
+            }),
+            dict({
+              'name': 'dtstart',
+              'params': None,
+              'value': '19970714T170000Z',
+            }),
+            dict({
+              'name': 'dtend',
+              'params': None,
+              'value': '19970715T040000Z',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'देवनागरी',
+            }),
+          ]),
+        }),
+      ]),
+      'name': 'vcalendar',
+      'properties': list([
+        dict({
+          'name': 'version',
+          'params': None,
+          'value': '2.0',
+        }),
+        dict({
+          'name': 'prodid',
+          'params': None,
+          'value': '-//hacksw/handcal//NONSGML v1.0//EN',
+        }),
+      ]),
+    }),
+  ])
+# ---
 # name: test_parse_contentlines[params]
   list([
     dict({
@@ -238,7 +827,97 @@
             dict({
               'name': 'PARAM-NAME',
               'values': list([
-                'PARAM-VALUE',
+                'PARAM-VALUE1',
+              ]),
+            }),
+          ]),
+          'value': 'VALUE',
+        }),
+        dict({
+          'name': 'name',
+          'params': list([
+            dict({
+              'name': 'PARAM-NAME',
+              'values': list([
+                'PARAM+VALUE2',
+              ]),
+            }),
+          ]),
+          'value': 'VALUE',
+        }),
+        dict({
+          'name': 'name',
+          'params': list([
+            dict({
+              'name': 'PARAM-NAME',
+              'values': list([
+                'PARAM VALUE3',
+              ]),
+            }),
+          ]),
+          'value': 'VALUE',
+        }),
+        dict({
+          'name': 'name',
+          'params': list([
+            dict({
+              'name': 'PARAM-NAME',
+              'values': list([
+                'PARAM:VALUE4',
+              ]),
+            }),
+          ]),
+          'value': 'VALUE',
+        }),
+        dict({
+          'name': 'description',
+          'params': None,
+          'value': '',
+        }),
+        dict({
+          'name': 'description',
+          'params': list([
+            dict({
+              'name': 'TYPE',
+              'values': list([
+                '',
+              ]),
+            }),
+          ]),
+          'value': '',
+        }),
+      ]),
+    }),
+  ])
+# ---
+# name: test_parse_contentlines[params_empty]
+  list([
+    dict({
+      'name': 'vcalendar',
+      'properties': list([
+        dict({
+          'name': 'name',
+          'params': list([
+            dict({
+              'name': 'PARAM-NAME',
+              'values': list([
+                '',
+              ]),
+            }),
+          ]),
+          'value': 'VALUE',
+        }),
+        dict({
+          'name': 'name',
+          'params': list([
+            dict({
+              'name': 'PARAM-NAME',
+              'values': list([
+                '',
+                'Value2',
+                '',
+                'VALUE4',
+                'VALUE5',
               ]),
             }),
           ]),
@@ -302,6 +981,103 @@
     }),
   ])
 # ---
+# name: test_parse_contentlines[unicode]
+  list([
+    dict({
+      'components': list([
+        dict({
+          'components': list([
+            dict({
+              'components': list([
+              ]),
+              'name': 'valarm',
+              'properties': list([
+                dict({
+                  'name': 'action',
+                  'params': None,
+                  'value': 'AUDIO',
+                }),
+                dict({
+                  'name': 'trigger',
+                  'params': None,
+                  'value': '19980403T120000Z',
+                }),
+                dict({
+                  'name': 'attach',
+                  'params': list([
+                    dict({
+                      'name': 'FILENAME',
+                      'values': list([
+                        'Fødselsdag_40.pdf',
+                      ]),
+                    }),
+                  ]),
+                  'value': 'https://someurl.com',
+                }),
+                dict({
+                  'name': 'repeat',
+                  'params': None,
+                  'value': '4',
+                }),
+                dict({
+                  'name': 'duration',
+                  'params': None,
+                  'value': 'PT1H',
+                }),
+              ]),
+            }),
+          ]),
+          'name': 'vtodo',
+          'properties': list([
+            dict({
+              'name': 'dtstamp',
+              'params': None,
+              'value': '19980130T134500Z',
+            }),
+            dict({
+              'name': 'sequence',
+              'params': None,
+              'value': '2',
+            }),
+            dict({
+              'name': 'uid',
+              'params': None,
+              'value': 'uid4@example.com',
+            }),
+            dict({
+              'name': 'due',
+              'params': None,
+              'value': '19980415T000000',
+            }),
+            dict({
+              'name': 'status',
+              'params': None,
+              'value': 'NEEDS-ACTION',
+            }),
+            dict({
+              'name': 'summary',
+              'params': None,
+              'value': 'Birthday',
+            }),
+          ]),
+        }),
+      ]),
+      'name': 'vcalendar',
+      'properties': list([
+        dict({
+          'name': 'prodid',
+          'params': None,
+          'value': '-//ABC Corporation//NONSGML My Product//EN',
+        }),
+        dict({
+          'name': 'version',
+          'params': None,
+          'value': '2.0',
+        }),
+      ]),
+    }),
+  ])
+# ---
 # name: test_parse_contentlines[vcalendar_emoji]
   list([
     dict({
@@ -439,5 +1215,29 @@
         }),
       ]),
     }),
+  ])
+# ---
+# name: test_parse_contentlines[x-name]
+  list([
+    dict({
+      'name': 'vevent',
+      'properties': list([
+        dict({
+          'name': 'x-description',
+          'params': None,
+          'value': 'This is a description',
+        }),
+        dict({
+          'name': 'x-ical-description',
+          'params': None,
+          'value': 'This is a description',
+        }),
+        dict({
+          'name': 'x-ical-1',
+          'params': None,
+          'value': 'This is another x-name',
+        }),
+      ]),
+    }),
   ])
 # ---
diff -pruN 9.0.0-2/tests/parsing/__snapshots__/test_property.ambr 12.1.0-1/tests/parsing/__snapshots__/test_property.ambr
--- 9.0.0-2/tests/parsing/__snapshots__/test_property.ambr	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/__snapshots__/test_property.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -3,17 +3,32 @@
   list([
     ParsedProperty(name='begin', value='VEVENT', params=None),
     ParsedProperty(name='attendee', value='mailto: jsmith@example.com', params=[ParsedPropertyParameter(name='RSVP', values=['TRUE']), ParsedPropertyParameter(name='ROLE', values=['REQ-PARTICIPANT'])]),
-    ParsedProperty(name='attendee', value='jdoe@example.com","mailto:jqpublic @example.com":mailto:jsmith@example.com', params=[ParsedPropertyParameter(name='DELEGATED-TO', values=['"mailto'])]),
+    ParsedProperty(name='attendee', value='mailto:jsmith@example.com', params=[ParsedPropertyParameter(name='DELEGATED-TO', values=['mailto:jdoe@example.com', 'mailto:jqpublic @example.com'])]),
     ParsedProperty(name='end', value='VEVENT', params=None),
   ])
 # ---
 # name: test_from_ics[comma]
   list([
     ParsedProperty(name='begin', value='VEVENT', params=None),
-    ParsedProperty(name='description', value='part1.0001@example.org":The Fall\'98 Wild Wizards Conference - - Las Vegas\\, NV\\, USA', params=[ParsedPropertyParameter(name='ALTREP', values=['"cid'])]),
+    ParsedProperty(name='description', value="The Fall'98 Wild Wizards Conference - - Las Vegas\\, NV\\, USA", params=[ParsedPropertyParameter(name='ALTREP', values=['cid:part1.0001@example.org'])]),
     ParsedProperty(name='end', value='VEVENT', params=None),
   ])
 # ---
+# name: test_from_ics[emoji]
+  list([
+    ParsedProperty(name='begin', value='VCALENDAR', params=None),
+    ParsedProperty(name='version', value='2.0', params=None),
+    ParsedProperty(name='prodid', value='-//hacksw/handcal//NONSGML v1.0//EN', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B2@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19971225', params=None),
+    ParsedProperty(name='dtend', value='19971226', params=None),
+    ParsedProperty(name='summary', value='🎄', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='end', value='VCALENDAR', params=None),
+  ])
+# ---
 # name: test_from_ics[fold]
   list([
     ParsedProperty(name='begin', value='VEVENT', params=None),
@@ -36,18 +51,102 @@
     ParsedProperty(name='end', value='VCALENDAR', params=None),
   ])
 # ---
+# name: test_from_ics[languages]
+  list([
+    ParsedProperty(name='begin', value='VCALENDAR', params=None),
+    ParsedProperty(name='version', value='2.0', params=None),
+    ParsedProperty(name='prodid', value='-//hacksw/handcal//NONSGML v1.0//EN', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B2@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='žmogus', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B3@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='中文', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B4@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='кириллица', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B5@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='Ελληνικά', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B6@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='עִברִית', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B7@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='日本語', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B8@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='한국어', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B9@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='ไทย', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='uid', value='19970610T172345Z-AF23B10@example.com', params=None),
+    ParsedProperty(name='dtstamp', value='19970610T172345Z', params=None),
+    ParsedProperty(name='dtstart', value='19970714T170000Z', params=None),
+    ParsedProperty(name='dtend', value='19970715T040000Z', params=None),
+    ParsedProperty(name='summary', value='देवनागरी', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+    ParsedProperty(name='end', value='VCALENDAR', params=None),
+  ])
+# ---
 # name: test_from_ics[params]
   list([
     ParsedProperty(name='begin', value='VCALENDAR', params=None),
-    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM-VALUE'])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM-VALUE1'])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM+VALUE2'])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM VALUE3'])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM:VALUE4'])]),
+    ParsedProperty(name='description', value='', params=None),
+    ParsedProperty(name='description', value='', params=[ParsedPropertyParameter(name='TYPE', values=[''])]),
+    ParsedProperty(name='end', value='VCALENDAR', params=None),
+  ])
+# ---
+# name: test_from_ics[params_empty]
+  list([
+    ParsedProperty(name='begin', value='VCALENDAR', params=None),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=[''])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['', 'Value2', '', 'VALUE4', 'VALUE5'])]),
     ParsedProperty(name='end', value='VCALENDAR', params=None),
   ])
 # ---
 # name: test_from_ics[params_quoted]
   list([
     ParsedProperty(name='begin', value='VCALENDAR', params=None),
-    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['"PARAM-VALUE"'])]),
-    ParsedProperty(name='name', value='VALUE":VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['"PARAM'])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM-VALUE'])]),
+    ParsedProperty(name='name', value='VALUE', params=[ParsedPropertyParameter(name='PARAM-NAME', values=['PARAM:VALUE'])]),
     ParsedProperty(name='end', value='VCALENDAR', params=None),
   ])
 # ---
@@ -58,6 +157,29 @@
     ParsedProperty(name='end', value='VCALENDAR', params=None),
   ])
 # ---
+# name: test_from_ics[unicode]
+  list([
+    ParsedProperty(name='begin', value='VCALENDAR', params=None),
+    ParsedProperty(name='prodid', value='-//ABC Corporation//NONSGML My Product//EN', params=None),
+    ParsedProperty(name='version', value='2.0', params=None),
+    ParsedProperty(name='begin', value='VTODO', params=None),
+    ParsedProperty(name='dtstamp', value='19980130T134500Z', params=None),
+    ParsedProperty(name='sequence', value='2', params=None),
+    ParsedProperty(name='uid', value='uid4@example.com', params=None),
+    ParsedProperty(name='due', value='19980415T000000', params=None),
+    ParsedProperty(name='status', value='NEEDS-ACTION', params=None),
+    ParsedProperty(name='summary', value='Birthday', params=None),
+    ParsedProperty(name='begin', value='VALARM', params=None),
+    ParsedProperty(name='action', value='AUDIO', params=None),
+    ParsedProperty(name='trigger', value='19980403T120000Z', params=None),
+    ParsedProperty(name='attach', value='https://someurl.com', params=[ParsedPropertyParameter(name='FILENAME', values=['Fødselsdag_40.pdf'])]),
+    ParsedProperty(name='repeat', value='4', params=None),
+    ParsedProperty(name='duration', value='PT1H', params=None),
+    ParsedProperty(name='end', value='VALARM', params=None),
+    ParsedProperty(name='end', value='VTODO', params=None),
+    ParsedProperty(name='end', value='VCALENDAR', params=None),
+  ])
+# ---
 # name: test_from_ics[vcalendar_emoji]
   list([
     ParsedProperty(name='begin', value='VEVENT', params=None),
@@ -97,3 +219,12 @@
     ParsedProperty(name='end', value='VTODO', params=None),
   ])
 # ---
+# name: test_from_ics[x-name]
+  list([
+    ParsedProperty(name='begin', value='VEVENT', params=None),
+    ParsedProperty(name='x-description', value='This is a description', params=None),
+    ParsedProperty(name='x-ical-description', value='This is a description', params=None),
+    ParsedProperty(name='x-ical-1', value='This is another x-name', params=None),
+    ParsedProperty(name='end', value='VEVENT', params=None),
+  ])
+# ---
diff -pruN 9.0.0-2/tests/parsing/test_component.py 12.1.0-1/tests/parsing/test_component.py
--- 9.0.0-2/tests/parsing/test_component.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/test_component.py	2025-11-14 02:06:41.000000000 +0000
@@ -7,11 +7,16 @@ from typing import Any
 import pytest
 from syrupy import SnapshotAssertion
 
+from ical.exceptions import CalendarParseError
 from ical.parsing.component import encode_content, parse_content
 
-TESTDATA_PATH = pathlib.Path("tests/parsing/testdata/")
+TESTDATA_PATH = pathlib.Path("tests/parsing/testdata/valid/")
 TESTDATA_FILES = list(TESTDATA_PATH.glob("*.ics"))
-TESTDATA_IDS = [ x.stem for x in TESTDATA_FILES ]
+TESTDATA_IDS = [x.stem for x in TESTDATA_FILES]
+
+INVALID_TESTDATA_PATH = pathlib.Path("tests/parsing/testdata/invalid/")
+INVALID_TESTDATA_FILES = list(INVALID_TESTDATA_PATH.glob("*.ics"))
+INVALID_TESTDATA_IDS = [x.stem for x in INVALID_TESTDATA_FILES]
 
 
 @pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
@@ -25,13 +30,25 @@ def test_parse_contentlines(
 
 
 @pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
-def test_encode_contentlines(filename: pathlib.Path, snapshot: SnapshotAssertion) -> None:
+def test_encode_contentlines(
+    filename: pathlib.Path, snapshot: SnapshotAssertion
+) -> None:
     """Fixture to read golden file and serialize back to same format."""
     values = parse_content(filename.read_text())
     ics = encode_content(values)
     assert ics == snapshot
 
 
+@pytest.mark.parametrize("filename", INVALID_TESTDATA_FILES, ids=INVALID_TESTDATA_IDS)
+def test_invalid_contentlines(
+    filename: pathlib.Path, snapshot: SnapshotAssertion, json_encoder: json.JSONEncoder
+) -> None:
+    """Fixture to read file inputs that should fail parsing."""
+    with pytest.raises(CalendarParseError) as exc_info:
+        parse_content(filename.read_text())
+    assert (str(exc_info.value), exc_info.value.detailed_error) == snapshot
+
+
 @pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
 def test_parse_contentlines_benchmark(
     filename: pathlib.Path, json_encoder: json.JSONEncoder, benchmark: Any
diff -pruN 9.0.0-2/tests/parsing/test_property.py 12.1.0-1/tests/parsing/test_property.py
--- 9.0.0-2/tests/parsing/test_property.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/test_property.py	2025-11-14 02:06:41.000000000 +0000
@@ -10,15 +10,16 @@ import pathlib
 import pytest
 from syrupy import SnapshotAssertion
 
+from ical.exceptions import CalendarParseError
 from ical.parsing.property import (
     ParsedProperty,
     ParsedPropertyParameter,
-    parse_basic_ics_properties,
+    parse_contentlines,
 )
 from ical.parsing.component import unfolded_lines
 
 
-TESTDATA_PATH = pathlib.Path("tests/parsing/testdata/")
+TESTDATA_PATH = pathlib.Path("tests/parsing/testdata/valid/")
 TESTDATA_FILES = list(TESTDATA_PATH.glob("*.ics"))
 TESTDATA_IDS = [x.stem for x in TESTDATA_FILES]
 
@@ -26,9 +27,10 @@ TESTDATA_IDS = [x.stem for x in TESTDATA
 @pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
 def test_from_ics(filename: str, snapshot: SnapshotAssertion) -> None:
     """Fixture to read golden file and compare to golden output."""
-    properties = list(parse_basic_ics_properties(unfolded_lines(filename.read_text())))
+    properties = list(parse_contentlines(unfolded_lines(filename.read_text())))
     assert properties == snapshot
 
+
 @pytest.mark.parametrize(
     "ics",
     [
@@ -37,10 +39,51 @@ def test_from_ics(filename: str, snapsho
         "PROP;PARAM:VALUE",
         ";VALUE",
         ";:VALUE",
-    ]
+    ],
 )
 def test_invalid_format(ics: str) -> None:
     """Test parsing invalid property format."""
-    with pytest.raises(ValueError):
-        r = list(parse_basic_ics_properties([ics]))
-        assert r == 'a'
+    with pytest.raises(CalendarParseError):
+        list(parse_contentlines([ics]))
+
+
+@pytest.mark.parametrize(
+    "ics",
+    [
+        "X-TEST-BLANK;VALUE=URI;X-TEST-BLANK-PARAM=:VALUE",
+        "X-TEST-BLANK;VALUE=URI;X-TEST-BLANK-PARAM=:VALUE",
+        "X-TEST-BLANK;VALUE=URI;X-TEST-BLANK-PARAM=:VALUE",
+        "X-TEST-BLANK;VALUE=URI;X-TEST-BLANK-PARAM=:VALUE",
+    ],
+)
+def test_blank_parameters(ics: str) -> None:
+    """Test parsing invalid property format."""
+    properties = list(parse_contentlines([ics]))
+    assert len(properties) == 1
+    prop = properties[0]
+    assert prop.name == "x-test-blank"
+    assert prop.value == "VALUE"
+    assert len(prop.params) == 2
+    assert prop.params[0].name == "VALUE"
+    assert prop.params[0].values == ["URI"]
+    assert prop.params[1].name == "X-TEST-BLANK-PARAM"
+    assert prop.params[1].values == [""]
+
+
+@pytest.mark.parametrize(
+    "ics",
+    [
+        "BEGIN:VEVENT",
+        "begin:VEVENT",
+        "Begin:VEVENT",
+        "bEgiN:VEVENT",
+    ],
+)
+def test_mixed_case_property_name(ics: str) -> None:
+    """Test property name is case-insensitive."""
+    properties = list(parse_contentlines([ics]))
+    assert len(properties) == 1
+    prop = properties[0]
+    assert prop.name == "begin"
+    assert prop.value == "VEVENT"
+    assert prop.params is None
diff -pruN 9.0.0-2/tests/parsing/test_unicode.py 12.1.0-1/tests/parsing/test_unicode.py
--- 9.0.0-2/tests/parsing/test_unicode.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/test_unicode.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,65 +0,0 @@
-"""Tests for unicode specific handling."""
-
-import pytest
-
-from ical.parsing.unicode import SAFE_CHAR, VALUE_CHAR
-from ical.parsing.emoji import EMOJI
-import emoji
-
-
-def test_safe_char_excludes() -> None:
-    """Test that the safe char definition excludes the right set of characters."""
-    assert '"' not in SAFE_CHAR
-    assert ";" not in SAFE_CHAR
-    assert "," not in SAFE_CHAR
-
-    assert "a" in SAFE_CHAR
-
-
-def test_safe_char() -> None:
-    """Test some basic values that should be in safe char."""
-    assert "a" in SAFE_CHAR
-    assert "-" in SAFE_CHAR
-    assert "🎄" in SAFE_CHAR
-
-
-def test_value_char() -> None:
-    """Test some basic values that should be in value char."""
-    assert "a" in VALUE_CHAR
-    assert "-" in VALUE_CHAR
-    assert '"' in VALUE_CHAR
-    assert ";" in VALUE_CHAR
-    assert "," in VALUE_CHAR
-    assert "🎄" in VALUE_CHAR
-
-
-@pytest.mark.parametrize(
-    "word",
-    [
-        "žmogus",
-        "中文",
-        "кириллица",
-        "Ελληνικά",
-        "עִברִית",
-        "日本語",
-        "한국어",
-        "ไทย",
-        "देवनागरी",
-    ],
-)
-def test_languages(word: str) -> None:
-    """Test basic values in non-english character sets are valid."""
-    for char in word:
-        assert char in VALUE_CHAR
-
-
-def test_emoji_import() -> None:
-    """Test that the emoji library import is in sync"""
-    # Verify every emoji is a valid character
-    for char in emoji.EMOJI_DATA.keys():
-        assert char in VALUE_CHAR
-
-    # Verify at a lower level they are equivalent in the EMOJI set
-    found = set(EMOJI)
-    expected = set(emoji.EMOJI_DATA.keys())
-    assert found == expected
diff -pruN 9.0.0-2/tests/parsing/testdata/attendee.ics 12.1.0-1/tests/parsing/testdata/attendee.ics
--- 9.0.0-2/tests/parsing/testdata/attendee.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/attendee.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,6 +0,0 @@
-BEGIN:VEVENT
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:mailto:
-  jsmith@example.com
-ATTENDEE;DELEGATED-TO="mailto:jdoe@example.com","mailto:jqpublic
-  @example.com":mailto:jsmith@example.com
-END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/comma.ics 12.1.0-1/tests/parsing/testdata/comma.ics
--- 9.0.0-2/tests/parsing/testdata/comma.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/comma.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-BEGIN:VEVENT
-DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild
-  Wizards Conference - - Las Vegas\, NV\, USA
-END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/fold.ics 12.1.0-1/tests/parsing/testdata/fold.ics
--- 9.0.0-2/tests/parsing/testdata/fold.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/fold.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-BEGIN:VEVENT
-DESCRIPTION:This is a lo
-  ng description
-  that exists on a long line.
-END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/icalendar_object.ics 12.1.0-1/tests/parsing/testdata/icalendar_object.ics
--- 9.0.0-2/tests/parsing/testdata/icalendar_object.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/icalendar_object.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,11 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//hacksw/handcal//NONSGML v1.0//EN
-BEGIN:VEVENT
-UID:19970610T172345Z-AF23B2@example.com
-DTSTAMP:19970610T172345Z
-DTSTART:19970714T170000Z
-DTEND:19970715T040000Z
-SUMMARY:Bastille Day Party
-END:VEVENT
-END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1 @@
+invalid
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_iana-token.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_iana-token.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_iana-token.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_iana-token.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VEVENT
+DES.RIPTION:This is a description
+END:VEVENT
diff -pruN "9.0.0-2/tests/parsing/testdata/invalid/invalid_param_eol copy.ics" "12.1.0-1/tests/parsing/testdata/invalid/invalid_param_eol copy.ics"
--- "9.0.0-2/tests/parsing/testdata/invalid/invalid_param_eol copy.ics"	1970-01-01 00:00:00.000000000 +0000
+++ "12.1.0-1/tests/parsing/testdata/invalid/invalid_param_eol copy.ics"	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME="PARAM-VAL
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_eol_quoted.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_eol_quoted.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_eol_quoted.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_eol_quoted.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME=PARAMVAL
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_name-1.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_name-1.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_name-1.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_name-1.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VEVENT
+NAME;PARAM NAME=PARAM-VALUE:VALUE
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_name-2.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_name-2.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_name-2.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_name-2.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VEVENT
+NAME;PARAM+NAME=PARAM-VALUE:VALUE
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_value.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_value.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_param_value.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_param_value.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+DESCRIPTION;;:VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_params_list.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_params_list.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_params_list.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_params_list.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME=,
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_missing_value.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_missing_value.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_missing_value.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_missing_value.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME="PARAM-VAL"
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_name.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_name.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_name.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_name.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+"NAME":VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_param_extra_end.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_param_extra_end.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_param_extra_end.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_param_extra_end.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME="QUOTED-VALUE"extra:VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_param_extra_start.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_param_extra_start.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_param_extra_start.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_param_extra_start.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME=extra"QUOTED-VALUE":VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_params.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_params.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_quoted_params.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_quoted_params.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME="QUOTED-PARAM:QUOTED-VALUE:VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_x-name-1.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_x-name-1.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_x-name-1.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_x-name-1.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VEVENT
+X-DES.RIPTION:This is a description
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/invalid_x-name-2.ics 12.1.0-1/tests/parsing/testdata/invalid/invalid_x-name-2.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/invalid_x-name-2.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/invalid_x-name-2.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VEVENT
+X-,:This is a description
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/invalid/missing_colon.ics 12.1.0-1/tests/parsing/testdata/invalid/missing_colon.ics
--- 9.0.0-2/tests/parsing/testdata/invalid/missing_colon.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/invalid/missing_colon.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VEVENT
+DESCRIPTION;This is a description
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/params.ics 12.1.0-1/tests/parsing/testdata/params.ics
--- 9.0.0-2/tests/parsing/testdata/params.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/params.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-BEGIN:VCALENDAR
-NAME;PARAM-NAME=PARAM-VALUE:VALUE
-END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/params_quoted.ics 12.1.0-1/tests/parsing/testdata/params_quoted.ics
--- 9.0.0-2/tests/parsing/testdata/params_quoted.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/params_quoted.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-BEGIN:VCALENDAR
-NAME;PARAM-NAME="PARAM-VALUE":VALUE
-NAME;PARAM-NAME="PARAM:VALUE":VALUE
-END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/rdate.ics 12.1.0-1/tests/parsing/testdata/rdate.ics
--- 9.0.0-2/tests/parsing/testdata/rdate.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/rdate.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-BEGIN:VCALENDAR
-RDATE;VALUE=DATE:19970304,19970504,19970704,19970904
-END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/attendee.ics 12.1.0-1/tests/parsing/testdata/valid/attendee.ics
--- 9.0.0-2/tests/parsing/testdata/valid/attendee.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/attendee.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,6 @@
+BEGIN:VEVENT
+ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT:mailto:
+  jsmith@example.com
+ATTENDEE;DELEGATED-TO="mailto:jdoe@example.com","mailto:jqpublic
+  @example.com":mailto:jsmith@example.com
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/comma.ics 12.1.0-1/tests/parsing/testdata/valid/comma.ics
--- 9.0.0-2/tests/parsing/testdata/valid/comma.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/comma.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,4 @@
+BEGIN:VEVENT
+DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild
+  Wizards Conference - - Las Vegas\, NV\, USA
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/emoji.ics 12.1.0-1/tests/parsing/testdata/valid/emoji.ics
--- 9.0.0-2/tests/parsing/testdata/valid/emoji.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/emoji.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,11 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B2@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19971225
+DTEND:19971226
+SUMMARY:🎄
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/fold.ics 12.1.0-1/tests/parsing/testdata/valid/fold.ics
--- 9.0.0-2/tests/parsing/testdata/valid/fold.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/fold.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,5 @@
+BEGIN:VEVENT
+DESCRIPTION:This is a lo
+  ng description
+  that exists on a long line.
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/icalendar_object.ics 12.1.0-1/tests/parsing/testdata/valid/icalendar_object.ics
--- 9.0.0-2/tests/parsing/testdata/valid/icalendar_object.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/icalendar_object.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,11 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B2@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:Bastille Day Party
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/languages.ics 12.1.0-1/tests/parsing/testdata/valid/languages.ics
--- 9.0.0-2/tests/parsing/testdata/valid/languages.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/languages.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,67 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B2@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:žmogus
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B3@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:中文
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B4@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:кириллица
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B5@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:Ελληνικά
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B6@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:עִברִית
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B7@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:日本語
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B8@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:한국어
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B9@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:ไทย
+END:VEVENT
+BEGIN:VEVENT
+UID:19970610T172345Z-AF23B10@example.com
+DTSTAMP:19970610T172345Z
+DTSTART:19970714T170000Z
+DTEND:19970715T040000Z
+SUMMARY:देवनागरी
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/params.ics 12.1.0-1/tests/parsing/testdata/valid/params.ics
--- 9.0.0-2/tests/parsing/testdata/valid/params.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/params.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,8 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME=PARAM-VALUE1:VALUE
+NAME;PARAM-NAME=PARAM+VALUE2:VALUE
+NAME;PARAM-NAME=PARAM VALUE3:VALUE
+NAME;PARAM-NAME="PARAM:VALUE4":VALUE
+DESCRIPTION:
+DESCRIPTION;TYPE=:
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/params_empty.ics 12.1.0-1/tests/parsing/testdata/valid/params_empty.ics
--- 9.0.0-2/tests/parsing/testdata/valid/params_empty.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/params_empty.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,4 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME="":VALUE
+NAME;PARAM-NAME="",Value2,"",VALUE4,"VALUE5":VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/params_quoted.ics 12.1.0-1/tests/parsing/testdata/valid/params_quoted.ics
--- 9.0.0-2/tests/parsing/testdata/valid/params_quoted.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/params_quoted.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,4 @@
+BEGIN:VCALENDAR
+NAME;PARAM-NAME="PARAM-VALUE":VALUE
+NAME;PARAM-NAME="PARAM:VALUE":VALUE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/rdate.ics 12.1.0-1/tests/parsing/testdata/valid/rdate.ics
--- 9.0.0-2/tests/parsing/testdata/valid/rdate.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/rdate.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,3 @@
+BEGIN:VCALENDAR
+RDATE;VALUE=DATE:19970304,19970504,19970704,19970904
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/unicode.ics 12.1.0-1/tests/parsing/testdata/valid/unicode.ics
--- 9.0.0-2/tests/parsing/testdata/valid/unicode.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/unicode.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+PRODID:-//ABC Corporation//NONSGML My Product//EN
+VERSION:2.0
+BEGIN:VTODO
+DTSTAMP:19980130T134500Z
+SEQUENCE:2
+UID:uid4@example.com
+DUE:19980415T000000
+STATUS:NEEDS-ACTION
+SUMMARY:Birthday
+BEGIN:VALARM
+ACTION:AUDIO
+TRIGGER:19980403T120000Z
+ATTACH;FILENAME=Fødselsdag_40.pdf:https://someurl.com
+REPEAT:4
+DURATION:PT1H
+END:VALARM
+END:VTODO
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/vcalendar_emoji.ics 12.1.0-1/tests/parsing/testdata/valid/vcalendar_emoji.ics
--- 9.0.0-2/tests/parsing/testdata/valid/vcalendar_emoji.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/vcalendar_emoji.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,9 @@
+BEGIN:VEVENT
+DTSTAMP:20221202T075310
+UID:5deea302-7216-11ed-b1b6-48d2240d04ae
+DTSTART:20221202T085500
+DTEND:20221202T090000
+SUMMARY:🎄emojis!
+CREATED:20221202T075310
+SEQUENCE:0
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/vevent.ics 12.1.0-1/tests/parsing/testdata/valid/vevent.ics
--- 9.0.0-2/tests/parsing/testdata/valid/vevent.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/vevent.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,9 @@
+BEGIN:VEVENT
+UID:19970901T130000Z-123401@example.com
+DTSTAMP:19970901T130000Z
+DTSTART:19970903T163000Z
+DTEND:19970903T190000Z
+SUMMARY:Annual Employee Review
+CLASS:PRIVATE
+CATEGORIES:BUSINESS,HUMAN RESOURCES
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/vtodo.ics 12.1.0-1/tests/parsing/testdata/valid/vtodo.ics
--- 9.0.0-2/tests/parsing/testdata/valid/vtodo.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/vtodo.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,9 @@
+BEGIN:VTODO
+UID:20070313T123432Z-456553@example.com
+DTSTAMP:20070313T123432Z
+DUE;VALUE=DATE:20070501
+SUMMARY:Submit Quebec Income Tax Return for 2006
+CLASS:CONFIDENTIAL
+CATEGORIES:FAMILY,FINANCE
+STATUS:NEEDS-ACTION
+END:VTODO
diff -pruN 9.0.0-2/tests/parsing/testdata/valid/x-name.ics 12.1.0-1/tests/parsing/testdata/valid/x-name.ics
--- 9.0.0-2/tests/parsing/testdata/valid/x-name.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/valid/x-name.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,5 @@
+BEGIN:VEVENT
+X-DESCRIPTION:This is a description
+X-ICAL-DESCRIPTION:This is a description
+X-ICAL-1:This is another x-name
+END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/vcalendar_emoji.ics 12.1.0-1/tests/parsing/testdata/vcalendar_emoji.ics
--- 9.0.0-2/tests/parsing/testdata/vcalendar_emoji.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/vcalendar_emoji.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,9 +0,0 @@
-BEGIN:VEVENT
-DTSTAMP:20221202T075310
-UID:5deea302-7216-11ed-b1b6-48d2240d04ae
-DTSTART:20221202T085500
-DTEND:20221202T090000
-SUMMARY:🎄emojis!
-CREATED:20221202T075310
-SEQUENCE:0
-END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/vevent.ics 12.1.0-1/tests/parsing/testdata/vevent.ics
--- 9.0.0-2/tests/parsing/testdata/vevent.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/vevent.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,9 +0,0 @@
-BEGIN:VEVENT
-UID:19970901T130000Z-123401@example.com
-DTSTAMP:19970901T130000Z
-DTSTART:19970903T163000Z
-DTEND:19970903T190000Z
-SUMMARY:Annual Employee Review
-CLASS:PRIVATE
-CATEGORIES:BUSINESS,HUMAN RESOURCES
-END:VEVENT
diff -pruN 9.0.0-2/tests/parsing/testdata/vtodo.ics 12.1.0-1/tests/parsing/testdata/vtodo.ics
--- 9.0.0-2/tests/parsing/testdata/vtodo.ics	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/parsing/testdata/vtodo.ics	1970-01-01 00:00:00.000000000 +0000
@@ -1,9 +0,0 @@
-BEGIN:VTODO
-UID:20070313T123432Z-456553@example.com
-DTSTAMP:20070313T123432Z
-DUE;VALUE=DATE:20070501
-SUMMARY:Submit Quebec Income Tax Return for 2006
-CLASS:CONFIDENTIAL
-CATEGORIES:FAMILY,FINANCE
-STATUS:NEEDS-ACTION
-END:VTODO
diff -pruN 9.0.0-2/tests/test_alarm.py 12.1.0-1/tests/test_alarm.py
--- 9.0.0-2/tests/test_alarm.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_alarm.py	2025-11-14 02:06:41.000000000 +0000
@@ -48,7 +48,9 @@ def test_duration_and_repeat() -> None:
 
 def test_display_required_fields() -> None:
     """Test required fields for action DISPLAY."""
-    with pytest.raises(CalendarParseError, match="Description value is required for action DISPLAY"):
+    with pytest.raises(
+        CalendarParseError, match="Description value is required for action DISPLAY"
+    ):
         Alarm(action="DISPLAY", trigger=datetime.timedelta(minutes=-5))
 
     alarm = Alarm(
@@ -60,10 +62,23 @@ def test_display_required_fields() -> No
     assert alarm.description == "Notification description"
 
 
+def test_empty_display_field() -> None:
+    """Test required fields for action DISPLAY."""
+    alarm = Alarm(
+        action="DISPLAY",
+        trigger=datetime.timedelta(minutes=-5),
+        description="",
+    )
+    assert alarm.action == "DISPLAY"
+    assert alarm.description == ""
+
+
 def test_email_required_fields() -> None:
     """Test required fields for action EMAIL."""
     # Missing multiple fields
-    with pytest.raises(CalendarParseError, match="Description value is required for action EMAIL"):
+    with pytest.raises(
+        CalendarParseError, match="Description value is required for action EMAIL"
+    ):
         Alarm(action="EMAIL", trigger=datetime.timedelta(minutes=-5))
 
     # Missing summary
diff -pruN 9.0.0-2/tests/test_calendar.py 12.1.0-1/tests/test_calendar.py
--- 9.0.0-2/tests/test_calendar.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_calendar.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,4 +1,5 @@
 """Tests for timeline related calendar eents."""
+
 from __future__ import annotations
 
 from collections.abc import Generator
diff -pruN 9.0.0-2/tests/test_calendar_stream.py 12.1.0-1/tests/test_calendar_stream.py
--- 9.0.0-2/tests/test_calendar_stream.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_calendar_stream.py	2025-11-14 02:06:41.000000000 +0000
@@ -16,51 +16,47 @@ from ical.store import TodoStore
 MAX_ITERATIONS = 30
 TESTDATA_PATH = pathlib.Path("tests/testdata/")
 TESTDATA_FILES = list(TESTDATA_PATH.glob("*.ics"))
-TESTDATA_IDS = [ x.stem for x in TESTDATA_FILES ]
+TESTDATA_IDS = [x.stem for x in TESTDATA_FILES]
 
 
 def test_empty_ics(mock_prodid: Generator[None, None, None]) -> None:
     """Test serialization of an empty ics file."""
     calendar = IcsCalendarStream.calendar_from_ics("")
     ics = IcsCalendarStream.calendar_to_ics(calendar)
-    assert (
-        ics
-        == textwrap.dedent("""\
+    assert ics == textwrap.dedent(
+        """\
             BEGIN:VCALENDAR
             PRODID:-//example//1.2.3
             VERSION:2.0
             END:VCALENDAR"""
-    ))
+    )
 
     calendar.prodid = "-//example//1.2.4"
     ics = IcsCalendarStream.calendar_to_ics(calendar)
-    assert (
-        ics
-        == textwrap.dedent("""\
+    assert ics == textwrap.dedent(
+        """\
             BEGIN:VCALENDAR
             PRODID:-//example//1.2.4
             VERSION:2.0
-            END:VCALENDAR""")
+            END:VCALENDAR"""
     )
 
 
 @pytest.mark.parametrize("filename", TESTDATA_FILES, ids=TESTDATA_IDS)
-def test_parse(filename: pathlib.Path, snapshot: SnapshotAssertion, json_encoder: json.JSONEncoder) -> None:
+def test_parse(
+    filename: pathlib.Path, snapshot: SnapshotAssertion, json_encoder: json.JSONEncoder
+) -> None:
     """Fixture to read golden file and compare to golden output."""
     cal = CalendarStream.from_ics(filename.read_text())
-    data = json.loads(
-        cal.json(exclude_unset=True, exclude_none=True, encoder=json_encoder.default)
-    )
+    data = json.loads(cal.model_dump_json(exclude_unset=True, exclude_none=True))
     assert snapshot == data
 
     # Re-parse the data object to verify we get the original data values
     # back. This effectively confirms that all fields can be parsed from the
     # python native format in addition to rfc5545.
-    cal_reparsed = CalendarStream.parse_obj(data)
+    cal_reparsed = CalendarStream.model_validate(data)
     data_reparsed = json.loads(
-        cal_reparsed.json(
-            exclude_unset=True, exclude_none=True, encoder=json_encoder.default
-        )
+        cal_reparsed.model_dump_json(exclude_unset=True, exclude_none=True)
     )
     assert data_reparsed == data
 
@@ -97,16 +93,72 @@ def test_todo_list_iteration(filename: p
         assert todo is not None
 
 
-def test_invalid_ics() -> None:
-    """Test parsing failures for ics content."""
-    with pytest.raises(CalendarParseError, match="Failed to parse calendar stream"):
-        IcsCalendarStream.calendar_from_ics("invalid")
+@pytest.mark.parametrize(
+    "content",
+    [
+        textwrap.dedent(
+            """\
+            invalid
+            """
+        ),
+        textwrap.dedent(
+            """\
+            BEGIN:VCALENDAR
+            VERSION:\x007
+            END:VCALENDAR
+            """
+        ),
+        textwrap.dedent(
+            """\
+            BEGIN:VCALENDAR
+            PROD\uc27fID://example
+            END:VCALENDAR
+            """
+        ),
+        textwrap.dedent(
+            """\
+            BEGIN:VCALENDAR
+            ATTENDEE;MEM\x007ER="mailto:DEV-GROUP@example.com":mailto:joecool@example.com
+            END:VCALENDAR
+            """
+        ),
+        textwrap.dedent(
+            """\
+            BEGIN:VCALENDAR
+            ATTENDEE;MEMBER="mailto:DEV-GROUP\x00example.com":mailto:joecool@example.com
+            END:VCALENDAR
+            """
+        ),
+    ],
+    ids=[
+        "invalid",
+        "control-char-value",
+        "control-char-name",
+        "control-param-name",
+        "control-param-value",
+    ],
+)
+def test_invalid_ics(content: str) -> None:
+    """Test parsing failures for ics content.
+
+    These are tested here so we can add escape sequences. Most other invalid
+    encodings are tested in the yaml testdata/ files.
+    """
+    with pytest.raises(
+        CalendarParseError,
+        match="^Calendar contents are not valid ICS format, see the detailed_error for more information$",
+    ):
+        IcsCalendarStream.calendar_from_ics(content)
 
 
 def test_component_failure() -> None:
-    with pytest.raises(CalendarParseError, match="Failed to parse component"):
+    with pytest.raises(
+        CalendarParseError,
+        match="^Failed to parse calendar EVENT component: Value error, Unexpected dtstart value '2022-07-24 12:00:00' was datetime but dtend value '2022-07-24' was not datetime$",
+    ):
         IcsCalendarStream.calendar_from_ics(
-            textwrap.dedent("""\
+            textwrap.dedent(
+                """\
                 BEGIN:VCALENDAR
                 PRODID:-//example//1.2.3
                 VERSION:2.0
@@ -115,13 +167,16 @@ def test_component_failure() -> None:
                 DTEND:20220724
                 END:VEVENT
                 END:VCALENDAR
-            """))
-        
+            """
+            )
+        )
+
 
 def test_multiple_calendars() -> None:
     with pytest.raises(CalendarParseError, match="more than one calendar"):
         IcsCalendarStream.calendar_from_ics(
-            textwrap.dedent("""\
+            textwrap.dedent(
+                """\
                 BEGIN:VCALENDAR
                 PRODID:-//example//1.2.3
                 VERSION:2.0
@@ -130,4 +185,6 @@ def test_multiple_calendars() -> None:
                 PRODID:-//example//1.2.3
                 VERSION:2.0
                 END:VCALENDAR
-            """))
+            """
+            )
+        )
diff -pruN 9.0.0-2/tests/test_component.py 12.1.0-1/tests/test_component.py
--- 9.0.0-2/tests/test_component.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_component.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,12 +1,16 @@
 """Tests for component encoding and decoding."""
 
+from pydantic import field_serializer
+import pytest
 import datetime
+import zoneinfo
 from typing import Optional, Union
 
 from ical.component import ComponentModel
+from ical.exceptions import CalendarParseError, ParameterValueError
 from ical.parsing.component import ParsedComponent
-from ical.parsing.property import ParsedProperty
-from ical.types.data_types import DATA_TYPE
+from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
+from ical.types.data_types import serialize_field
 
 
 def test_encode_component() -> None:
@@ -27,12 +31,9 @@ def test_encode_component() -> None:
         single_component: OtherComponent
         dt: datetime.datetime
 
-        class Config:
-            """Pydantic model configuration."""
+        serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
-            json_encoders = DATA_TYPE.encode_property_json
-
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "text_value": "Example text",
             "repeated_text_value": ["a", "b", "c"],
@@ -86,7 +87,7 @@ def test_list_parser() -> None:
 
         dt: list[datetime.datetime]
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "dt": [
                 ParsedProperty(name="dt", value="20220724T120000"),
@@ -108,7 +109,7 @@ def test_list_union_parser() -> None:
 
         dt: list[Union[datetime.datetime, datetime.date]]
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "dt": [
                 ParsedProperty(name="dt", value="20220724T120000"),
@@ -130,7 +131,88 @@ def test_optional_field_parser() -> None
 
         dt: Optional[datetime.datetime] = None
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {"dt": [ParsedProperty(name="dt", value="20220724T120000")]}
     )
     assert model.dt == datetime.datetime(2022, 7, 24, 12, 0, 0)
+
+
+def test_union_parser() -> None:
+    """Test for a union value."""
+
+    class TestModel(ComponentModel):
+        """Model under test."""
+
+        dt: Union[datetime.datetime, datetime.date]
+
+    with pytest.raises(CalendarParseError, match=".*Expected one value for field: dt"):
+        model = TestModel.model_validate(
+            {
+                "dt": [
+                    ParsedProperty(name="dt", value="20220724T120000"),
+                    ParsedProperty(name="dt", value="20220725"),
+                ],
+            },
+        )
+
+    model = TestModel.model_validate(
+        {
+            "dt": [
+                ParsedProperty(name="dt", value="20220724T120000"),
+            ],
+        }
+    )
+    assert model.dt == datetime.datetime(2022, 7, 24, 12, 0, 0)
+
+    model = TestModel.model_validate(
+        {
+            "dt": [
+                ParsedProperty(name="dt", value="20220725"),
+            ],
+        }
+    )
+    assert model.dt == datetime.date(2022, 7, 25)
+
+    model = TestModel.model_validate(
+        {
+            "dt": [
+                ParsedProperty(
+                    name="dt",
+                    value="20220724T120000",
+                    params=[ParsedPropertyParameter("TZID", ["America/New_York"])],
+                ),
+            ],
+        }
+    )
+    assert model.dt == datetime.datetime(
+        2022, 7, 24, 12, 0, 0, tzinfo=zoneinfo.ZoneInfo(key="America/New_York")
+    )
+    assert model.dt != datetime.datetime(2022, 7, 24, 12, 0, 0)
+
+    with pytest.raises(
+        CalendarParseError,
+        match="Expected DATE-TIME TZID value 'America/New_Mork' to be valid timezone.*",
+    ):
+        model = TestModel.model_validate(
+            {
+                "dt": [
+                    ParsedProperty(
+                        name="dt",
+                        value="20220724T120000",
+                        params=[ParsedPropertyParameter("TZID", ["America/New_Mork"])],
+                    ),
+                ],
+            }
+        )
+
+    with pytest.raises(
+        CalendarParseError,
+        match=".*Failed to validate: .* as datetime or date, due to: .*Expected value to match DATE-TIME pattern: .*Expected value to match DATE pattern: .*",
+    ):
+        model = TestModel.model_validate(
+            {
+                "dt": [
+                    ParsedProperty(name="dt", value="2025NotADateOrADateTime"),
+                ],
+            }
+        )
diff -pruN 9.0.0-2/tests/test_event.py 12.1.0-1/tests/test_event.py
--- 9.0.0-2/tests/test_event.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_event.py	2025-11-14 02:06:41.000000000 +0000
@@ -8,11 +8,7 @@ from unittest.mock import patch
 import zoneinfo
 
 import pytest
-
-try:
-    from pydantic.v1 import ValidationError
-except ImportError:
-    from pydantic import ValidationError
+from pydantic import ValidationError
 
 from ical.event import Event
 from ical.exceptions import CalendarParseError
@@ -366,7 +362,7 @@ def test_parse_event_timezones(
     start_str: str, end_str: str, start: datetime | date, end: datetime | date
 ) -> None:
     """Test parsing date/times from strings."""
-    event = Event.parse_obj(
+    event = Event.model_validate(
         {
             "summary": SUMMARY,
             "start": start_str,
@@ -415,17 +411,28 @@ def test_all_day_timespan_timezone_expli
     assert timespan.end == dtend
 
 
-def test_validate_assignment() -> None:
+def test_validate_assignment_1() -> None:
     """Test date type validations."""
-
     event = Event(summary=SUMMARY, start=date(2022, 9, 6), end=date(2022, 9, 7))
 
     # Validation on assignment ensures the start/end types can't be mismatched
     with pytest.raises(ValidationError):
         event.dtstart = datetime(2022, 9, 6, 6, 0, 0)
+
+
+def test_validate_assignment_2() -> None:
+    """Test date type validations."""
+    event = Event(summary=SUMMARY, start=date(2022, 9, 6), end=date(2022, 9, 7))
+
+    # Validation on assignment ensures the start/end types can't be mismatched
     with pytest.raises(ValidationError):
         event.dtend = datetime(2022, 9, 10, 6, 0, 0)
 
+
+def test_validate_assignment_3() -> None:
+    """Test date type validations."""
+    event = Event(summary=SUMMARY, start=date(2022, 9, 6), end=date(2022, 9, 7))
+
     # But updates that are valid are OK
     event.dtstart = date(2022, 9, 5)
     event.dtend = date(2022, 9, 10)
diff -pruN 9.0.0-2/tests/test_freebusy.py 12.1.0-1/tests/test_freebusy.py
--- 9.0.0-2/tests/test_freebusy.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_freebusy.py	2025-11-14 02:06:41.000000000 +0000
@@ -115,7 +115,9 @@ def test_free_busy() -> None:
 
 def test_free_busy_requires_utc() -> None:
     """Test freebusy start date conversions."""
-    with pytest.raises(CalendarParseError, match=r"Freebusy time must be in UTC format.*"):
+    with pytest.raises(
+        CalendarParseError, match=r"Freebusy time must be in UTC format.*"
+    ):
         FreeBusy(
             start=datetime.date(2022, 8, 7),
             end=datetime.date(2022, 8, 10),
diff -pruN 9.0.0-2/tests/test_journal.py 12.1.0-1/tests/test_journal.py
--- 9.0.0-2/tests/test_journal.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_journal.py	2025-11-14 02:06:41.000000000 +0000
@@ -27,11 +27,14 @@ def test_journal() -> None:
 
 def test_status() -> None:
     """Test Journal status."""
-    journal = Journal.parse_obj({"status": "DRAFT"})
+    journal = Journal.model_validate({"status": "DRAFT"})
     assert journal.status == JournalStatus.DRAFT
 
-    with pytest.raises(CalendarParseError):
-        Journal.parse_obj({"status": "invalid-status"})
+    with pytest.raises(
+        CalendarParseError,
+        match="^Failed to parse calendar JOURNAL component: Input should be 'DRAFT', 'FINAL' or 'CANCELLED'$",
+    ):
+        Journal.model_validate({"status": "invalid-status"})
 
 
 def test_start_datetime() -> None:
@@ -41,9 +44,15 @@ def test_start_datetime() -> None:
     assert journal.start
     assert journal.start.isoformat() == "2022-08-07"
 
-    with patch(
-        "ical.util.local_timezone", return_value=zoneinfo.ZoneInfo("America/Regina")
-    ), patch("ical.journal.local_timezone", return_value=zoneinfo.ZoneInfo("America/Regina")):
+    with (
+        patch(
+            "ical.util.local_timezone", return_value=zoneinfo.ZoneInfo("America/Regina")
+        ),
+        patch(
+            "ical.journal.local_timezone",
+            return_value=zoneinfo.ZoneInfo("America/Regina"),
+        ),
+    ):
         assert journal.start_datetime.isoformat() == "2022-08-07T06:00:00+00:00"
         assert not journal.recurring
 
@@ -56,7 +65,13 @@ def test_start_datetime() -> None:
 def test_computed_duration_date() -> None:
     """Test computed duration for a date."""
 
-    journal = Journal(start=datetime.date(2022, 8, 7,))
+    journal = Journal(
+        start=datetime.date(
+            2022,
+            8,
+            7,
+        )
+    )
     assert journal.start
     assert journal.computed_duration == datetime.timedelta(days=1)
 
diff -pruN 9.0.0-2/tests/test_recurrence.py 12.1.0-1/tests/test_recurrence.py
--- 9.0.0-2/tests/test_recurrence.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_recurrence.py	2025-11-14 02:06:41.000000000 +0000
@@ -56,7 +56,7 @@ def test_from_contentlines_rdate() -> No
     ]
     component = parse_content("\n".join(content))
     assert component
-    orig_recurrences = Recurrences.parse_obj(component[0].as_dict())
+    orig_recurrences = Recurrences.model_validate(component[0].as_dict())
     recurrences = Recurrences.from_basic_contentlines(lines)
     assert recurrences.rrule == [
         Recur(
@@ -133,7 +133,7 @@ def test_from_contentlines_date_values(
     # assert content == 'a'
     component = parse_content("\n".join(content))
     assert component
-    orig_recurrences = Recurrences.parse_obj(component[0].as_dict())
+    orig_recurrences = Recurrences.model_validate(component[0].as_dict())
 
     # Parse using optimized parser
     recurrences = Recurrences.from_basic_contentlines(lines)
@@ -210,7 +210,11 @@ def test_as_rrule_with_date() -> None:
             "EXDATE:20220803T060000Z",
         ]
     )
-    assert list(recurrences.as_rrule(datetime.datetime(2022, 8, 2, 6, 0, 0, tzinfo=datetime.UTC))) == [
+    assert list(
+        recurrences.as_rrule(
+            datetime.datetime(2022, 8, 2, 6, 0, 0, tzinfo=datetime.UTC)
+        )
+    ) == [
         datetime.datetime(2022, 8, 2, 6, 0, 0, tzinfo=datetime.UTC),
         datetime.datetime(2022, 8, 4, 6, 0, 0, tzinfo=datetime.UTC),
     ]
@@ -257,7 +261,6 @@ def test_ics() -> None:
     ]
 
 
-
 def test_mismatch_date_and_datetime_types() -> None:
     """Test parsing a recurrence rule from a string."""
     recurrences = Recurrences.from_basic_contentlines(
diff -pruN 9.0.0-2/tests/test_store.py 12.1.0-1/tests/test_store.py
--- 9.0.0-2/tests/test_store.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_store.py	2025-11-14 02:06:41.000000000 +0000
@@ -9,6 +9,8 @@ import zoneinfo
 from collections.abc import Callable, Generator
 from typing import Any
 from unittest.mock import patch
+import itertools
+import pathlib
 
 import pytest
 from freezegun import freeze_time
@@ -25,6 +27,7 @@ from ical.types import RelationshipType,
 
 TZ = zoneinfo.ZoneInfo("America/Los_Angeles")
 
+
 @pytest.fixture(name="calendar")
 def mock_calendar() -> Calendar:
     """Fixture to create a calendar."""
@@ -53,8 +56,9 @@ def mock_uid() -> Generator[None, None,
         counter += 1
         return f"mock-uid-{counter}"
 
-    with patch("ical.event.uid_factory", new=func), patch(
-        "ical.todo.uid_factory", new=func
+    with (
+        patch("ical.event.uid_factory", new=func),
+        patch("ical.todo.uid_factory", new=func),
     ):
         yield
 
@@ -80,7 +84,7 @@ def mock_fetch_events(
     """Fixture to return events on the calendar."""
 
     def _func(keys: set[str] | None = None) -> list[dict[str, Any]]:
-        return [compact_dict(event.dict(), keys) for event in calendar.timeline]
+        return [compact_dict(event.model_dump(), keys) for event in calendar.timeline]
 
     return _func
 
@@ -92,7 +96,9 @@ def mock_fetch_todos(
     """Fixture to return todos on the calendar."""
 
     def _func(keys: set[str] | None = None) -> list[dict[str, Any]]:
-        return [compact_dict(todo.dict(), keys) for todo in todo_store.todo_list()]
+        return [
+            compact_dict(todo.model_dump(), keys) for todo in todo_store.todo_list()
+        ]
 
     return _func
 
@@ -418,7 +424,10 @@ def test_edit_recurring_all_day_event_in
         recurrence_id="20220905",
     )
 
-    assert fetch_events({"uid", "recurrence_id", "sequence", "dtstart", "summary"}) == snapshot
+    assert (
+        fetch_events({"uid", "recurrence_id", "sequence", "dtstart", "summary"})
+        == snapshot
+    )
 
 
 @pytest.mark.parametrize(
@@ -838,6 +847,43 @@ def test_timezone_for_datetime(
     assert calendar.timezones[1].tz_id == "America/New_York"
 
 
+def test_timezone_for_dtend(
+    calendar: Calendar,
+    store: EventStore,
+) -> None:
+    """Test adding an event to the store and retrieval."""
+    store.add(
+        Event(
+            uid="mock-uid-1",
+            summary="Monday meeting",
+            start=datetime.datetime(
+                2022, 8, 29, 9, 0, 0, tzinfo=zoneinfo.ZoneInfo("America/Los_Angeles")
+            ),
+            end=datetime.datetime(
+                2022, 8, 29, 8, 30, 0, tzinfo=zoneinfo.ZoneInfo("America/New_York")
+            ),
+        )
+    )
+    assert len(calendar.events) == 1
+    assert len(calendar.timezones) == 2
+    assert calendar.timezones[0].tz_id == "America/Los_Angeles"
+    assert calendar.timezones[1].tz_id == "America/New_York"
+
+    store.edit(
+        "mock-uid-1",
+        Event(
+            end=datetime.datetime(
+                2022, 8, 29, 8, 30, 0, tzinfo=zoneinfo.ZoneInfo("America/Denver")
+            ),
+        ),
+    )
+    assert len(calendar.events) == 1
+    assert len(calendar.timezones) == 3
+    assert calendar.timezones[0].tz_id == "America/Los_Angeles"
+    assert calendar.timezones[1].tz_id == "America/New_York"
+    assert calendar.timezones[2].tz_id == "America/Denver"
+
+
 def test_timezone_offset_not_supported(
     calendar: Calendar,
     store: EventStore,
@@ -850,7 +896,9 @@ def test_timezone_offset_not_supported(
         start=datetime.datetime(2022, 8, 29, 9, 0, 0, tzinfo=tzinfo),
         end=datetime.datetime(2022, 8, 29, 9, 30, 0, tzinfo=tzinfo),
     )
-    with pytest.raises(StoreError, match=r"No timezone information available for event: UTC-08:00"):
+    with pytest.raises(
+        StoreError, match=r"No timezone information available for event: UTC-08:00"
+    ):
         store.add(event)
     assert not calendar.events
     assert not calendar.timezones
@@ -946,7 +994,7 @@ def test_add_and_delete_todo(
     fetch_todos: Callable[..., list[dict[str, Any]]],
     snapshot: SnapshotAssertion,
 ) -> None:
-    """Test adding a todoto the store and retrieval."""
+    """Test adding a todo to the store and retrieval."""
     todo_store.add(
         Todo(
             summary="Monday meeting",
@@ -958,6 +1006,32 @@ def test_add_and_delete_todo(
     assert fetch_todos() == []
 
 
+@pytest.mark.parametrize(
+    "status",
+    [
+        {"status": "NEEDS-ACTION"},
+        {"status": "COMPLETED"},
+        {"status": "COMPLETED", "completed": "2020-01-01T00:00:00+00:00"},
+    ],
+    ids=["needs_action", "completed", "completed_with_timestamp"],
+)
+def test_add_todo_with_status(
+    todo_store: TodoStore,
+    fetch_todos: Callable[..., list[dict[str, Any]]],
+    snapshot: SnapshotAssertion,
+    status: dict[str, Any],
+) -> None:
+    """Test adding a todo to the store with a status."""
+    todo_store.add(
+        Todo(
+            summary="Do chores",
+            due="2022-08-29T09:00:00",
+            **status,
+        )
+    )
+    assert fetch_todos() == snapshot
+
+
 def test_edit_todo(
     todo_store: TodoStore,
     fetch_todos: Callable[..., list[dict[str, Any]]],
@@ -989,6 +1063,58 @@ def test_edit_todo(
     assert fetch_todos() == snapshot
 
 
+def test_edit_todo_status(
+    todo_store: TodoStore,
+    fetch_todos: Callable[..., list[dict[str, Any]]],
+    frozen_time: FrozenDateTimeFactory,
+    snapshot: SnapshotAssertion,
+) -> None:
+    """Test changing todo status updates completed timestamp."""
+    todo_store.add(
+        Todo(
+            summary="Monday morning items",
+            due="2022-08-29T09:00:00",
+        )
+    )
+    assert fetch_todos() == snapshot(name="initial")
+
+    frozen_time.tick(delta=datetime.timedelta(seconds=10))
+
+    todo_store.edit(
+        "mock-uid-1",
+        Todo(status="COMPLETED"),
+    )
+
+    assert fetch_todos() == snapshot(name="completed")
+
+    frozen_time.tick(delta=datetime.timedelta(seconds=20))
+    # Test that modifying other fields does not change the completion time
+    todo_store.edit(
+        "mock-uid-1",
+        Todo(due="2022-08-29T09:05:00", summary="Monday morning items (Delayed)"),
+    )
+
+    assert fetch_todos() == snapshot(name="edit_summary")
+
+    frozen_time.tick(delta=datetime.timedelta(seconds=30))
+    # Test that setting status again does not change the completion time
+    todo_store.edit(
+        "mock-uid-1",
+        Todo(status="COMPLETED"),
+    )
+
+    assert fetch_todos() == snapshot(name="completed_again")
+
+    frozen_time.tick(delta=datetime.timedelta(seconds=40))
+
+    todo_store.edit(
+        "mock-uid-1",
+        Todo(status="NEEDS-ACTION"),
+    )
+
+    assert fetch_todos() == snapshot(name="needs_action")
+
+
 def test_todo_store_invalid_uid(todo_store: TodoStore) -> None:
     """Edit a todo that does not exist."""
     with pytest.raises(StoreError, match="No existing"):
@@ -1166,17 +1292,23 @@ def test_recurring_todo_item_edit_series
             rrule=Recur.from_rrule("FREQ=DAILY;COUNT=10"),
         )
     )
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="initial")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="initial")
 
     # Mark the entire series as completed
     todo_store.edit("mock-uid-1", Todo(status="COMPLETED"))
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="completed")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="completed")
 
     # Advance to the next day.
     frozen_time.move_to("2024-01-10T10:00:00")
 
     # All instances are completed
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="next_instance")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="next_instance")
 
     assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot
 
@@ -1204,7 +1336,9 @@ def test_recurring_todo_item_edit_single
     )
     # There is a single underlying instance
     assert len(calendar.todos) == 1
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="initial")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="initial")
 
     # Mark a single instance as completed
     todo_store.edit("mock-uid-1", Todo(status="COMPLETED"), recurrence_id="20240109")
@@ -1212,11 +1346,15 @@ def test_recurring_todo_item_edit_single
     assert len(calendar.todos) == 2
 
     # Collapsed view of a single item
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="completed")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="completed")
 
     # Advance to the next day and a new incomplete instance appears
     frozen_time.move_to("2024-01-10T10:00:00")
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="next_instance")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="next_instance")
 
     # Mark the new instance as completed
     todo_store.edit("mock-uid-1", Todo(status="COMPLETED"), recurrence_id="20240110")
@@ -1226,10 +1364,14 @@ def test_recurring_todo_item_edit_single
     # Also edit the instance summary and verify that it can be modified again
     todo_store.edit("mock-uid-1", Todo(summary="Walk cat"), recurrence_id="20240110")
     assert len(calendar.todos) == 3
-    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(name="result_ics_modified")
+    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(
+        name="result_ics_modified"
+    )
 
     # Collapsed view of the same item
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="next_instance_completed")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="next_instance_completed")
 
     # Delete a single instance and the following days instance appears. This is
     # not really a common operation, but still worth exercsing the behavior.
@@ -1237,14 +1379,20 @@ def test_recurring_todo_item_edit_single
 
     # Now only two underlying objects
     # The prior instance is the latest on the list
-    assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name="next_instance_deleted")
+    assert fetch_todos(
+        ["uid", "recurrence_id", "due", "summary", "status"]
+    ) == snapshot(name="next_instance_deleted")
 
-    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(name="next_instance_deleted_ics")
+    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(
+        name="next_instance_deleted_ics"
+    )
 
     # Delete the entire series
     todo_store.delete("mock-uid-1")
     assert not calendar.todos
-    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(name="deleted_series_ics")
+    assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(
+        name="deleted_series_ics"
+    )
 
 
 def test_delete_todo_series(
@@ -1353,18 +1501,19 @@ def test_modify_todo_rrule_for_this_and_
             summary="Wash car (Su)",
             dtstart="2024-01-21",
             due="2024-01-22",
-            rrule=Recur.from_rrule("FREQ=WEEKLY;BYDAY=SU;COUNT=10")
+            rrule=Recur.from_rrule("FREQ=WEEKLY;BYDAY=SU;COUNT=10"),
         ),
         recurrence_id="20240120",
-        recurrence_range=Range.THIS_AND_FUTURE
+        recurrence_range=Range.THIS_AND_FUTURE,
     )
 
     assert IcsCalendarStream.calendar_to_ics(calendar) == snapshot(name="ics")
 
     for date in ("2024-01-05", "2024-01-12", "2024-01-19", "2024-01-26"):
         frozen_time.move_to(date)
-        assert fetch_todos(["uid", "recurrence_id", "due", "summary", "status"]) == snapshot(name=date)
-
+        assert fetch_todos(
+            ["uid", "recurrence_id", "due", "summary", "status"]
+        ) == snapshot(name=date)
 
 
 def test_modify_todo_due_without_dtstart(
@@ -1393,18 +1542,20 @@ def test_modify_todo_due_without_dtstart
     todos = list(todo_store.todo_list())
     assert len(todos) == 1
     todo = todos[0]
-    assert todo.due == datetime.datetime(2024, 1, 1, 10, 0, 0, tzinfo=datetime.timezone.utc)
+    assert todo.due == datetime.datetime(
+        2024, 1, 1, 10, 0, 0, tzinfo=datetime.timezone.utc
+    )
     assert isinstance(todo.dtstart, datetime.datetime)
     assert todo.dtstart < todo.due
-             
+
 
 @pytest.mark.parametrize(
-        ("due", "expected_tz"),
-        [
-            (None, TZ),
-            ("2024-01-07T10:00:00Z", datetime.timezone.utc),
-            ("2024-01-07T10:00:00-05:00", zoneinfo.ZoneInfo("America/New_York")),
-        ],
+    ("due", "expected_tz"),
+    [
+        (None, TZ),
+        ("2024-01-07T10:00:00Z", datetime.timezone.utc),
+        ("2024-01-07T10:00:00-05:00", zoneinfo.ZoneInfo("America/New_York")),
+    ],
 )
 def test_dtstart_timezone(
     calendar: Calendar,
@@ -1424,4 +1575,338 @@ def test_dtstart_timezone(
     todo = todos[0]
     assert todo.due is None
     assert todo.dtstart.tzinfo == TZ
-                                        
\ No newline at end of file
+
+
+@pytest.mark.parametrize(
+    ("calendar"),
+    [
+        IcsCalendarStream.calendar_from_ics(
+            pathlib.Path("tests/examples/testdata/store_edit_bugs.ics").read_text()
+        ),
+    ],
+)
+def test_store_edit_year_overrun_edit_once(
+    calendar: Calendar,
+    store: EventStore,
+) -> None:
+    """Exercise a bug where the year gets overrun when editing an event.
+
+    The bug was caused by not properly handling the timezone when editing a recurring event.
+    """
+
+    assert len(calendar.events) == 1
+
+    viewer_tz = zoneinfo.ZoneInfo("America/New_York")
+    calendar_tz = zoneinfo.ZoneInfo("Europe/Amsterdam")
+
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    # Pick an arbitrary event in the series
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(
+        2024, 10, 12, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T110000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 11, 0, 0, tzinfo=calendar_tz
+    )
+
+    # Move event2 one hour earlier (9am in calendar tz)
+    update_dtstart = event2.dtstart.astimezone(viewer_tz)
+    assert update_dtstart == datetime.datetime(2024, 10, 12, 5, 0, 0, tzinfo=viewer_tz)
+    update_dtstart -= datetime.timedelta(hours=1)
+
+    store.edit(
+        event2.uid,
+        Event(
+            dtstart=update_dtstart,
+            end=update_dtstart + datetime.timedelta(hours=1),
+        ),
+        recurrence_id=event2.recurrence_id,
+        recurrence_range=Range.NONE,
+    )
+
+    # The edited event has its own entry in the calendar
+    assert len(calendar.events) == 2
+
+    # Verify that event2 was updated to begin 1 hour earlier.
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(
+        2024, 10, 12, 10, 0, 0, tzinfo=calendar_tz
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T110000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event4 = next(iter)
+    assert event4.recurrence_id == "20241026T110000"
+    assert event4.dtstart == datetime.datetime(
+        2024, 10, 26, 11, 0, 0, tzinfo=calendar_tz
+    )
+
+    # Edit all events after event3
+    update_dtstart = event3.dtstart.astimezone(viewer_tz)
+    update_dtstart -= datetime.timedelta(minutes=30)
+
+    store.edit(
+        event3.uid,
+        Event(
+            dtstart=update_dtstart,
+            end=update_dtstart + datetime.timedelta(hours=1),
+        ),
+        recurrence_id=event3.recurrence_id,
+        recurrence_range=Range.THIS_AND_FUTURE,
+    )
+
+    # The edited event has its own entry in the calendar
+    assert len(calendar.events) == 3
+
+    # Verify event3 and beyond are now updated.
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(
+        2024, 10, 12, 10, 0, 0, tzinfo=calendar_tz
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T043000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 10, 30, 0, tzinfo=calendar_tz
+    )
+    event4 = next(iter)
+    assert event4.recurrence_id == "20241026T043000"
+    assert event4.dtstart == datetime.datetime(
+        2024, 10, 26, 10, 30, 0, tzinfo=calendar_tz
+    )
+
+
+@pytest.mark.parametrize(
+    ("calendar"),
+    [
+        IcsCalendarStream.calendar_from_ics(
+            pathlib.Path("tests/examples/testdata/store_edit_bugs.ics").read_text()
+        ),
+    ],
+)
+def test_store_edit_year_overrun_edit_this_and_future(
+    calendar: Calendar,
+    store: EventStore,
+) -> None:
+    """Exercise a bug where the year gets overrun when editing an event.
+
+    The bug was caused by not properly handling the timezone when editing a recurring event.
+    """
+
+    assert len(calendar.events) == 1
+
+    viewer_tz = zoneinfo.ZoneInfo("America/New_York")
+    calendar_tz = zoneinfo.ZoneInfo("Europe/Amsterdam")
+
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    # Pick an arbitrary event in the series
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(
+        2024, 10, 12, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T110000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 11, 0, 0, tzinfo=calendar_tz
+    )
+
+    # Move event2 one hour earlier (9am in calendar tz)
+    update_dtstart = event2.dtstart.astimezone(viewer_tz)
+    assert update_dtstart == datetime.datetime(2024, 10, 12, 5, 0, 0, tzinfo=viewer_tz)
+    update_dtstart -= datetime.timedelta(hours=1)
+
+    store.edit(
+        event2.uid,
+        Event(
+            dtstart=update_dtstart,
+            end=update_dtstart + datetime.timedelta(hours=1),
+        ),
+        recurrence_id=event2.recurrence_id,
+        recurrence_range=Range.THIS_AND_FUTURE,
+    )
+
+    store = EventStore(calendar)
+    # The edited event has its own entry in the calendar
+    assert len(calendar.events) == 2
+
+    # Verify that event2 was updated to begin 1 hour earlier.
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T040000"
+    assert event2.dtstart == datetime.datetime(
+        2024, 10, 12, 10, 0, 0, tzinfo=calendar_tz
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T040000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 10, 0, 0, tzinfo=calendar_tz
+    )
+
+
+@pytest.mark.parametrize(
+    ("calendar"),
+    [
+        IcsCalendarStream.calendar_from_ics(
+            pathlib.Path("tests/examples/testdata/store_edit_bugs.ics").read_text()
+        ),
+    ],
+)
+def test_store_edit_year_override_set_floating_dates(
+    calendar: Calendar,
+    store: EventStore,
+) -> None:
+    """Exercise a bug where the year gets overrun when editing an event.
+
+    This makes the edits using floating dates.
+    """
+
+    assert len(calendar.events) == 1
+
+    viewer_tz = zoneinfo.ZoneInfo("America/New_York")
+    calendar_tz = zoneinfo.ZoneInfo("Europe/Amsterdam")
+
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    # Pick an arbitrary event in the series
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(
+        2024, 10, 12, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T110000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 11, 0, 0, tzinfo=calendar_tz
+    )
+
+    # Move event2 one hour earlier (9am in calendar tz)
+    update_dtstart = event2.dtstart.astimezone(viewer_tz)
+    assert update_dtstart == datetime.datetime(
+        2024, 10, 12, 11, 0, 0, tzinfo=calendar_tz
+    )
+    assert update_dtstart == datetime.datetime(2024, 10, 12, 5, 0, 0, tzinfo=viewer_tz)
+    update_dtstart -= datetime.timedelta(hours=1)
+    update_dtstart = update_dtstart.replace(tzinfo=None)
+    assert update_dtstart == datetime.datetime(2024, 10, 12, 4, 0, 0)
+
+    store.edit(
+        event2.uid,
+        Event(
+            dtstart=update_dtstart,
+            end=update_dtstart + datetime.timedelta(hours=1),
+        ),
+        recurrence_id=event2.recurrence_id,
+        recurrence_range=Range.NONE,
+    )
+
+    # The edited event has its own entry in the calendar
+    assert len(calendar.events) == 2
+
+    # Verify that event2 was updated to begin 1 hour earlier.
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(
+        2024,
+        10,
+        12,
+        4,
+        0,
+        0,
+    )
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T110000"
+    assert event3.dtstart == datetime.datetime(
+        2024, 10, 19, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event4 = next(iter)
+    assert event4.recurrence_id == "20241026T110000"
+    assert event4.dtstart == datetime.datetime(
+        2024, 10, 26, 11, 0, 0, tzinfo=calendar_tz
+    )
+
+    # Edit all events after event3
+    update_dtstart = event3.dtstart.astimezone(viewer_tz)
+    update_dtstart -= datetime.timedelta(minutes=30)
+    update_dtstart = update_dtstart.replace(tzinfo=None)
+
+    store.edit(
+        event3.uid,
+        Event(
+            dtstart=update_dtstart,
+            end=update_dtstart + datetime.timedelta(hours=1),
+        ),
+        recurrence_id=event3.recurrence_id,
+        recurrence_range=Range.THIS_AND_FUTURE,
+    )
+
+    # The edited event has its own entry in the calendar
+    assert len(calendar.events) == 3
+
+    # Verify event3 and beyond are now updated.
+    timeline = calendar.timeline_tz(tzinfo=viewer_tz)
+    iter = timeline.active_after(datetime.datetime(2024, 10, 1, tzinfo=viewer_tz))
+    event1 = next(iter)
+    assert event1.recurrence_id == "20241005T110000"
+    assert event1.dtstart == datetime.datetime(
+        2024, 10, 5, 11, 0, 0, tzinfo=calendar_tz
+    )
+    event2 = next(iter)
+    assert event2.recurrence_id == "20241012T110000"
+    assert event2.dtstart == datetime.datetime(2024, 10, 12, 4, 0, 0)
+    event3 = next(iter)
+    assert event3.recurrence_id == "20241019T043000"
+    assert event3.dtstart == datetime.datetime(2024, 10, 19, 4, 30, 0)
+    event4 = next(iter)
+    assert event4.recurrence_id == "20241026T043000"
+    assert event4.dtstart == datetime.datetime(2024, 10, 26, 4, 30, 0)
diff -pruN 9.0.0-2/tests/test_timeline.py 12.1.0-1/tests/test_timeline.py
--- 9.0.0-2/tests/test_timeline.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_timeline.py	2025-11-14 02:06:41.000000000 +0000
@@ -68,27 +68,42 @@ def test_journal_timeline() -> None:
     )
     assert journal.recurring
 
-    with patch(
-        "ical.util.local_timezone", return_value=zoneinfo.ZoneInfo("America/Regina")
-    ), patch("ical.journal.local_timezone", return_value=zoneinfo.ZoneInfo("America/Regina")):
+    with (
+        patch(
+            "ical.util.local_timezone", return_value=zoneinfo.ZoneInfo("America/Regina")
+        ),
+        patch(
+            "ical.journal.local_timezone",
+            return_value=zoneinfo.ZoneInfo("America/Regina"),
+        ),
+    ):
         timeline = generic_timeline([journal], TZ)
         assert list(timeline) == [
-            Journal.copy(journal, update={"recurrence_id": "20220807"}),
-            Journal.copy(
+            Journal.model_copy(journal, update={"recurrence_id": "20220807"}),
+            Journal.model_copy(
                 journal,
-                update={"dtstart": datetime.date(2022, 8, 8), "recurrence_id": "20220808"},
+                update={
+                    "dtstart": datetime.date(2022, 8, 8),
+                    "recurrence_id": "20220808",
+                },
             ),
-            Journal.copy(
+            Journal.model_copy(
                 journal,
-                update={"dtstart": datetime.date(2022, 8, 9), "recurrence_id": "20220809"},
+                update={
+                    "dtstart": datetime.date(2022, 8, 9),
+                    "recurrence_id": "20220809",
+                },
             ),
         ]
         assert list(
             timeline.overlapping(datetime.date(2022, 8, 7), datetime.date(2022, 8, 9))
         ) == [
-            Journal.copy(journal, update={"recurrence_id": "20220807"}),
-            Journal.copy(
+            Journal.model_copy(journal, update={"recurrence_id": "20220807"}),
+            Journal.model_copy(
                 journal,
-                update={"dtstart": datetime.date(2022, 8, 8), "recurrence_id": "20220808"},
+                update={
+                    "dtstart": datetime.date(2022, 8, 8),
+                    "recurrence_id": "20220808",
+                },
             ),
         ]
diff -pruN 9.0.0-2/tests/test_timezone.py 12.1.0-1/tests/test_timezone.py
--- 9.0.0-2/tests/test_timezone.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_timezone.py	2025-11-14 02:06:41.000000000 +0000
@@ -27,7 +27,9 @@ TEST_RECUR = Recur(
 
 def test_requires_subcompnent() -> None:
     """Test Timezone constructor."""
-    with pytest.raises(CalendarParseError, match=r"At least one standard or daylight.*"):
+    with pytest.raises(
+        CalendarParseError, match=r"At least one standard or daylight.*"
+    ):
         Timezone(tz_id="America/New_York")
 
 
@@ -78,7 +80,7 @@ def test_timezone_observence_start_time_
 
 @freeze_time("2022-08-22 12:30:00")
 def test_from_tzif_timezoneinfo_with_dst(
-    mock_prodid: Generator[None, None, None]
+    mock_prodid: Generator[None, None, None],
 ) -> None:
     """Verify a timezone created from a tzif timezone info with DST information."""
 
@@ -139,7 +141,7 @@ def test_from_tzif_timezoneinfo_with_dst
 
 @freeze_time("2022-08-22 12:30:00")
 def test_from_tzif_timezoneinfo_fixed_offset(
-    mock_prodid: Generator[None, None, None]
+    mock_prodid: Generator[None, None, None],
 ) -> None:
     """Verify a timezone created from a tzif timezone info with a fixed offset"""
 
@@ -158,8 +160,8 @@ def test_from_tzif_timezoneinfo_fixed_of
        TZID:Asia/Tokyo
        BEGIN:STANDARD
        DTSTART:20100101T000000
-       TZOFFSETTO:0900
-       TZOFFSETFROM:0900
+       TZOFFSETTO:+0900
+       TZOFFSETFROM:+0900
        TZNAME:JST
        END:STANDARD
        END:VTIMEZONE
@@ -175,14 +177,12 @@ def test_invalid_tzif_key() -> None:
         Timezone.from_tzif("invalid")
 
 
-
 @freeze_time("2022-08-22 12:30:00")
-def test_clear_old_dtstamp(
-    mock_prodid: Generator[None, None, None]
-) -> None:
+def test_clear_old_dtstamp(mock_prodid: Generator[None, None, None]) -> None:
     """Verify a timezone created from a tzif timezone info with a fixed offset"""
 
-    stream = IcsCalendarStream.from_ics(inspect.cleandoc("""
+    stream = IcsCalendarStream.from_ics(
+        inspect.cleandoc("""
        BEGIN:VCALENDAR
        PRODID:-//example//1.2.3
        VERSION:2.0
@@ -191,13 +191,14 @@ def test_clear_old_dtstamp(
        TZID:Asia/Tokyo
        BEGIN:STANDARD
        DTSTART:20100101T000000
-       TZOFFSETTO:0900
-       TZOFFSETFROM:0900
+       TZOFFSETTO:+0900
+       TZOFFSETFROM:+0900
        TZNAME:JST
        END:STANDARD
        END:VTIMEZONE
        END:VCALENDAR
-    """))
+    """)
+    )
     # DTSTAMP is omitted from the output
     assert stream.ics() == inspect.cleandoc("""
        BEGIN:VCALENDAR
@@ -207,8 +208,8 @@ def test_clear_old_dtstamp(
        TZID:Asia/Tokyo
        BEGIN:STANDARD
        DTSTART:20100101T000000
-       TZOFFSETTO:0900
-       TZOFFSETFROM:0900
+       TZOFFSETTO:+0900
+       TZOFFSETFROM:+0900
        TZNAME:JST
        END:STANDARD
        END:VTIMEZONE
diff -pruN 9.0.0-2/tests/test_todo.py 12.1.0-1/tests/test_todo.py
--- 9.0.0-2/tests/test_todo.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/test_todo.py	2025-11-14 02:06:41.000000000 +0000
@@ -40,7 +40,10 @@ def test_duration() -> None:
     assert todo.duration
 
     # Both due and Duration can't be set
-    with pytest.raises(CalendarParseError):
+    with pytest.raises(
+        CalendarParseError,
+        match="Failed to parse calendar TODO component: Value error, Only one of due or duration may be set.",
+    ):
         Todo(
             start=datetime.date(2022, 8, 7),
             duration=datetime.timedelta(days=1),
@@ -48,7 +51,10 @@ def test_duration() -> None:
         )
 
     # Duration requires start date
-    with pytest.raises(CalendarParseError):
+    with pytest.raises(
+        CalendarParseError,
+        match="^Failed to parse calendar TODO component: Value error, Duration requires that dtstart is specified$",
+    ):
         Todo(duration=datetime.timedelta(days=1))
 
     todo = Todo(start=datetime.date(2022, 8, 7), due=datetime.date(2022, 8, 8))
@@ -62,6 +68,21 @@ def test_duration() -> None:
         assert todo.start_datetime.isoformat() == "2022-08-07T06:00:00+00:00"
 
 
+def test_dtstart_date_duration_hours_invalid():
+    """Test that a Todo with datetime as dtstart and duration with seconds or microseconds
+    (in practice anything smaller than days) fails to validate"""
+
+    with pytest.raises(CalendarParseError):
+        Todo(dtstart=datetime.date(2022, 8, 7), duration=datetime.timedelta(hours=1))
+
+
+def test_computed_duration_no_start_duration():
+    """Test that a Todo without start and due or duration takes a whole day"""
+    todo = Todo()
+
+    assert todo.computed_duration == datetime.timedelta(days=1)
+
+
 @pytest.mark.parametrize(
     ("params"),
     [
@@ -78,6 +99,11 @@ def test_duration() -> None:
         ),
         (
             {
+                "duration": datetime.timedelta(hours=1),
+            }
+        ),
+        (
+            {
                 "start": datetime.datetime(2022, 9, 6, 6, 0, 0),
                 "due": datetime.datetime(
                     2022, 9, 7, 6, 0, 0, tzinfo=zoneinfo.ZoneInfo("America/Regina")
@@ -145,6 +171,35 @@ def test_timestamp_start_due() -> None:
     assert ts.end.isoformat() == "2022-08-07T00:00:00-06:00"
 
 
+def test_timespan_start_duration() -> None:
+    """Test that duration is taken into account in timespan calculation"""
+
+    duration = datetime.timedelta(hours=1)
+    todo = Todo(
+        dtstart=datetime.datetime(2025, 10, 27, 0, 0, 0, tzinfo=_TEST_TZ),
+        duration=duration,
+    )
+    timespan = todo.timespan
+    assert timespan.start.isoformat() == "2025-10-27T00:00:00+01:00"
+    assert timespan.end.isoformat() == "2025-10-27T01:00:00+01:00"
+    assert timespan.duration == duration
+
+
+def test_timespan_start_date_duration() -> None:
+    """Test that timestamp for todo with date-typed start and set due spans the whole day"""
+
+    duration = datetime.timedelta(days=1)
+    todo = Todo(
+        dtstart=datetime.date(2025, 10, 27),
+        duration=duration,
+    )
+
+    timespan = todo.timespan_of(_TEST_TZ)
+    assert timespan.start.isoformat() == "2025-10-27T00:00:00+01:00"
+    assert timespan.end.isoformat() == "2025-10-28T00:00:00+01:00"
+    assert timespan.duration == duration
+
+
 def test_timespan_missing_dtstart() -> None:
     """Test a timespan of a Todo without a dtstart."""
     todo = Todo(summary="Example", due=datetime.date(2022, 8, 7))
@@ -164,16 +219,24 @@ def test_timespan_missing_dtstart() -> N
 def test_timespan_fallback() -> None:
     """Test a timespan of a Todo with no explicit dtstart and due date"""
 
-    with freeze_time("2022-09-03T09:38:05", tz_offset=10), patch(
-        "ical.todo.local_timezone", return_value=zoneinfo.ZoneInfo("Pacific/Honolulu")
+    with (
+        freeze_time("2022-09-03T09:38:05", tz_offset=10),
+        patch(
+            "ical.todo.local_timezone",
+            return_value=zoneinfo.ZoneInfo("Pacific/Honolulu"),
+        ),
     ):
         todo = Todo(summary="Example")
         ts = todo.timespan
     assert ts.start.isoformat() == "2022-09-03T00:00:00-10:00"
     assert ts.end.isoformat() == "2022-09-04T00:00:00-10:00"
 
-    with freeze_time("2022-09-03T09:38:05", tz_offset=10), patch(
-        "ical.todo.local_timezone", return_value=zoneinfo.ZoneInfo("Pacific/Honolulu")
+    with (
+        freeze_time("2022-09-03T09:38:05", tz_offset=10),
+        patch(
+            "ical.todo.local_timezone",
+            return_value=zoneinfo.ZoneInfo("Pacific/Honolulu"),
+        ),
     ):
         ts = todo.timespan_of(zoneinfo.ZoneInfo("America/Regina"))
     assert ts.start.isoformat() == "2022-09-03T00:00:00-06:00"
@@ -300,3 +363,73 @@ def test_repair_out_of_order_due_and_dts
     assert len(calendar.todos) == 1
     assert calendar.todos[0].due == datetime.date(2024, 3, 18)
     assert calendar.todos[0].dtstart == datetime.date(2024, 3, 17)
+
+
+@pytest.mark.parametrize(
+    "dtstart, duration",
+    (
+        (
+            datetime.datetime(2025, 10, 27, 0, 0, 0, tzinfo=_TEST_TZ),
+            datetime.timedelta(hours=1),
+        ),
+        (
+            datetime.datetime(2025, 10, 27, 0, 0, 0, tzinfo=_TEST_TZ),
+            datetime.timedelta(days=1),
+        ),
+        (datetime.date(2025, 10, 27), datetime.timedelta(days=1)),
+    ),
+)
+def test_computed_duration(
+    dtstart: datetime.datetime | datetime.date, duration: datetime.timedelta
+) -> None:
+    """Test that computed_duration is the same as duration when set"""
+
+    todo = Todo(
+        dtstart=dtstart,
+        duration=duration,
+    )
+
+    assert todo.computed_duration == duration
+
+
+@pytest.mark.parametrize(
+    "start, end",
+    (
+        (datetime.date(2025, 10, 27), None),
+        (None, datetime.date(2025, 10, 27)),
+        (None, None),
+    ),
+)
+def test_default_computed_duration(
+    start: datetime.datetime | datetime.date | None,
+    end: datetime.datetime | datetime.date | None,
+) -> None:
+    """Test that computed_duration is no duration or start & end are defined"""
+
+    todo = Todo(
+        dtstart=start,
+        due = end,
+    )
+    assert todo.computed_duration == datetime.timedelta(days=1)
+
+
+def test_default_computed_duration_zero() -> None:
+    """Test the default duration when no due or end time are set."""
+    start = datetime.datetime(2025, 10, 27, 0, 0, 0, tzinfo=_TEST_TZ)
+    todo = Todo(
+        dtstart=start,
+    )
+
+    assert todo.end == start
+
+    assert todo.computed_duration == datetime.timedelta()
+
+
+def test_default_end_date() -> None:
+    """Test that when only start is set and it's a date, end is the next day"""
+    start = datetime.date(2025, 10, 27)
+    todo = Todo(
+        dtstart=start,
+    )
+
+    assert todo.end == start + datetime.timedelta(days=1)
diff -pruN 9.0.0-2/tests/testdata/datetime_vtimezone_plus.ics 12.1.0-1/tests/testdata/datetime_vtimezone_plus.ics
--- 9.0.0-2/tests/testdata/datetime_vtimezone_plus.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/testdata/datetime_vtimezone_plus.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,30 @@
+BEGIN:VCALENDAR
+PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20230313T011226
+UID:1e19f31b-c13c-11ed-8431-066a07ffbaf5
+DTSTART;TZID=Europe/Berlin:20230312T181210
+DTEND;TZID=Europe/Berlin:20230312T191210
+SUMMARY:Event 1
+CREATED:20230313T011226
+SEQUENCE:0
+END:VEVENT
+BEGIN:VTIMEZONE
+TZID:Europe/Berlin
+BEGIN:STANDARD
+DTSTART:20101107T020000
+TZOFFSETTO:+0200
+TZOFFSETFROM:+0100
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:PST
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20100314T020000
+TZOFFSETTO:+0100
+TZOFFSETFROM:+0200
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:PDT
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/testdata/duration_negative.ics 12.1.0-1/tests/testdata/duration_negative.ics
--- 9.0.0-2/tests/testdata/duration_negative.ics	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/testdata/duration_negative.ics	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+PRODID:-//hacksw/handcal//NONSGML v1.0//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20070423T123432Z
+UID:20070423T123432Z-541111@example.com
+DTSTART;VALUE=DATE:20070628
+DTEND;VALUE=DATE:20070709
+SUMMARY:Festival International de Jazz de Montreal
+TRANSP:TRANSPARENT
+BEGIN:VALARM
+TRIGGER;VALUE=DATE-TIME:19970317T133000Z
+REPEAT:4
+DURATION:-P1W6DT15H
+ACTION:AUDIO
+ATTACH;FMTTYPE=audio/basic:ftp://example.com/pub/sounds/bell-01.aud
+END:VALARM
+END:VEVENT
+END:VCALENDAR
diff -pruN 9.0.0-2/tests/types/test_boolean.py 12.1.0-1/tests/types/test_boolean.py
--- 9.0.0-2/tests/types/test_boolean.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_boolean.py	2025-11-14 02:06:41.000000000 +0000
@@ -16,18 +16,20 @@ class FakeModel(ComponentModel):
 def test_bool() -> None:
     """Test for boolean fields."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"example": [ParsedProperty(name="example", value="TRUE")]}
     )
     assert model.example
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"example": [ParsedProperty(name="example", value="FALSE")]}
     )
     assert not model.example
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj({"example": [ParsedProperty(name="example", value="efd")]})
+        FakeModel.model_validate(
+            {"example": [ParsedProperty(name="example", value="efd")]}
+        )
 
     # Populate based on bool object
     model = FakeModel(example=True)
diff -pruN 9.0.0-2/tests/types/test_cal_address.py 12.1.0-1/tests/types/test_cal_address.py
--- 9.0.0-2/tests/types/test_cal_address.py	1970-01-01 00:00:00.000000000 +0000
+++ 12.1.0-1/tests/types/test_cal_address.py	2025-11-14 02:06:41.000000000 +0000
@@ -0,0 +1,63 @@
+"""Tests for RELATED-TO data types."""
+
+from pydantic import field_serializer
+import pytest
+from ical.exceptions import CalendarParseError
+
+from ical.component import ComponentModel
+from ical.parsing.component import ParsedComponent
+from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
+from ical.types import CalAddress, Role
+from ical.types.data_types import serialize_field
+
+
+class FakeModel(ComponentModel):
+    """Model under test."""
+
+    example: CalAddress
+
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
+
+
+def test_caladdress_role() -> None:
+    """Test for no explicit reltype specified."""
+    model = FakeModel.model_validate(
+        {
+            "example": [
+                ParsedProperty(
+                    name="attendee",
+                    value="mailto:mrbig@example.com",
+                    params=[
+                        ParsedPropertyParameter(name="ROLE", values=["CHAIR"]),
+                        ParsedPropertyParameter(name="CUTYPE", values=["INDIVIDUAL"]),
+                    ],
+                )
+            ]
+        },
+    )
+    assert model.example
+    assert model.example.uri == "mailto:mrbig@example.com"
+    assert model.example.role == Role.CHAIR
+    assert model.example.user_type == "INDIVIDUAL"
+
+
+def test_caladdress_role_parse_failure() -> None:
+    """Test for no explicit reltype specified."""
+    model = FakeModel.model_validate(
+        {
+            "example": [
+                ParsedProperty(
+                    name="attendee",
+                    value="mailto:mrbig@example.com",
+                    params=[
+                        ParsedPropertyParameter(name="ROLE", values=["OTHER-ROLE"]),
+                        ParsedPropertyParameter(name="CUTYPE", values=["OTHER-CUTYPE"]),
+                    ],
+                )
+            ]
+        },
+    )
+    assert model.example
+    assert model.example.uri == "mailto:mrbig@example.com"
+    assert model.example.role == "OTHER-ROLE"
+    assert model.example.user_type == "OTHER-CUTYPE"
diff -pruN 9.0.0-2/tests/types/test_date.py 12.1.0-1/tests/types/test_date.py
--- 9.0.0-2/tests/types/test_date.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_date.py	2025-11-14 02:06:41.000000000 +0000
@@ -18,7 +18,7 @@ def test_date_parser() -> None:
 
         d: datetime.date
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "d": [ParsedProperty(name="d", value="20220724")],
         }
@@ -26,7 +26,7 @@ def test_date_parser() -> None:
     assert model.d == datetime.date(2022, 7, 24)
 
     with pytest.raises(CalendarParseError):
-        TestModel.parse_obj(
+        TestModel.model_validate(
             {
                 "d": [
                     ParsedProperty(
@@ -50,14 +50,14 @@ def test_union_date_parser() -> None:
 
         d: Union[datetime.datetime, datetime.date]
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "d": [ParsedProperty(name="d", value="20220724")],
         }
     )
     assert model.d == datetime.date(2022, 7, 24)
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "d": [ParsedProperty(name="d", value="20220724T120000")],
         }
diff -pruN 9.0.0-2/tests/types/test_date_time.py 12.1.0-1/tests/types/test_date_time.py
--- 9.0.0-2/tests/types/test_date_time.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_date_time.py	2025-11-14 02:06:41.000000000 +0000
@@ -3,6 +3,7 @@
 import datetime
 from typing import Union
 
+from pydantic import field_serializer
 import pytest
 
 
@@ -10,7 +11,7 @@ from ical.exceptions import CalendarPars
 from ical.component import ComponentModel
 from ical.parsing.component import ParsedComponent
 from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
-from ical.types.data_types import DATA_TYPE
+from ical.types.data_types import serialize_field
 from ical.tzif import timezoneinfo
 
 
@@ -22,7 +23,7 @@ def test_datedatime_parser() -> None:
 
         dt: datetime.datetime
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "dt": [ParsedProperty(name="dt", value="20220724T120000")],
         }
@@ -42,7 +43,7 @@ def test_datedatime_value_parser() -> No
 
         dt: Union[datetime.datetime, datetime.date]
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "dt": [
                 ParsedProperty(
@@ -56,7 +57,7 @@ def test_datedatime_value_parser() -> No
         }
     )
     assert model.dt == datetime.datetime(2022, 7, 24, 12, 0, 0)
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "dt": [
                 ParsedProperty(
@@ -72,7 +73,7 @@ def test_datedatime_value_parser() -> No
     assert model.dt == datetime.date(2022, 7, 24)
 
     with pytest.raises(CalendarParseError):
-        TestModel.parse_obj(
+        TestModel.model_validate(
             {
                 "dt": [
                     ParsedProperty(
@@ -87,7 +88,7 @@ def test_datedatime_value_parser() -> No
         )
 
     with pytest.raises(CalendarParseError):
-        TestModel.parse_obj(
+        TestModel.model_validate(
             {
                 "dt": [
                     ParsedProperty(
@@ -110,12 +111,9 @@ def test_datedatime_parameter_encoder()
 
         dt: datetime.datetime
 
-        class Config:
-            """Pydantic model configuration."""
+        serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
-            json_encoders = DATA_TYPE.encode_property_json
-
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {
             "dt": [
                 ParsedProperty(
@@ -147,7 +145,7 @@ def test_datedatime_parameter_encoder()
     )
 
     with pytest.raises(CalendarParseError, match="valid timezone"):
-        TestModel.parse_obj(
+        TestModel.model_validate(
             {
                 "dt": [
                     ParsedProperty(
diff -pruN 9.0.0-2/tests/types/test_duration.py 12.1.0-1/tests/types/test_duration.py
--- 9.0.0-2/tests/types/test_duration.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_duration.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,11 +2,12 @@
 
 import datetime
 
+from pydantic import field_serializer
 import pytest
 
 from ical.component import ComponentModel
 from ical.parsing.property import ParsedProperty
-from ical.types.data_types import DATA_TYPE
+from ical.types.data_types import serialize_field
 
 
 class FakeModel(ComponentModel):
@@ -14,10 +15,7 @@ class FakeModel(ComponentModel):
 
     duration: datetime.timedelta
 
-    class Config:
-        """Pydantic model configuration."""
-
-        json_encoders = DATA_TYPE.encode_property_json
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
 
 @pytest.mark.parametrize(
@@ -30,12 +28,13 @@ class FakeModel(ComponentModel):
         ),
         ("P7W", datetime.timedelta(days=7 * 7), "P7W"),
         ("-P7W", datetime.timedelta(days=-7 * 7), "-P7W"),
+        ("-P1W6DT15H", datetime.timedelta(days=-(7 + 6), hours=-15), "-P1W6DT15H"),
     ],
 )
 def test_duration(value: str, duration: datetime.timedelta, encoded_value: str) -> None:
     """Test for duration fields."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"duration": [ParsedProperty(name="duration", value=value)]}
     )
     assert model.duration == duration
diff -pruN 9.0.0-2/tests/types/test_float.py 12.1.0-1/tests/types/test_float.py
--- 9.0.0-2/tests/types/test_float.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_float.py	2025-11-14 02:06:41.000000000 +0000
@@ -16,7 +16,7 @@ class FakeModel(ComponentModel):
 def test_float() -> None:
     """Test for float fields."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "example": [
                 ParsedProperty(name="example", value="45"),
@@ -28,7 +28,9 @@ def test_float() -> None:
     assert model.example == [45, -46.2, 47.32]
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj({"example": [ParsedProperty(name="example", value="a")]})
+        FakeModel.model_validate(
+            {"example": [ParsedProperty(name="example", value="a")]}
+        )
 
     model = FakeModel(example=[1, -2.2, 3.5])
     assert model.example == [1, -2.2, 3.5]
diff -pruN 9.0.0-2/tests/types/test_geo.py 12.1.0-1/tests/types/test_geo.py
--- 9.0.0-2/tests/types/test_geo.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_geo.py	2025-11-14 02:06:41.000000000 +0000
@@ -16,11 +16,11 @@ def test_geo() -> None:
 
         geo: Geo
 
-    model = TestModel.parse_obj(
+    model = TestModel.model_validate(
         {"geo": [ParsedProperty(name="geo", value="120.0;-30.1")]}
     )
     assert model.geo.lat == 120.0
     assert model.geo.lng == -30.1
 
     with pytest.raises(CalendarParseError):
-        TestModel.parse_obj({"geo": [ParsedProperty(name="geo", value="10")]})
+        TestModel.model_validate({"geo": [ParsedProperty(name="geo", value="10")]})
diff -pruN 9.0.0-2/tests/types/test_integer.py 12.1.0-1/tests/types/test_integer.py
--- 9.0.0-2/tests/types/test_integer.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_integer.py	2025-11-14 02:06:41.000000000 +0000
@@ -16,7 +16,7 @@ class FakeModel(ComponentModel):
 def test_integer() -> None:
     """Test for int fields."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "example": [
                 ParsedProperty(name="example", value="45"),
@@ -28,4 +28,6 @@ def test_integer() -> None:
     assert model.example == [45, -46, 47]
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj({"example": [ParsedProperty(name="example", value="a")]})
+        FakeModel.model_validate(
+            {"example": [ParsedProperty(name="example", value="a")]}
+        )
diff -pruN 9.0.0-2/tests/types/test_period.py 12.1.0-1/tests/types/test_period.py
--- 9.0.0-2/tests/types/test_period.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_period.py	2025-11-14 02:06:41.000000000 +0000
@@ -2,6 +2,7 @@
 
 import datetime
 
+from pydantic import field_serializer
 import pytest
 from ical.exceptions import CalendarParseError
 
@@ -9,7 +10,7 @@ from ical.component import ComponentMode
 from ical.parsing.component import ParsedComponent
 from ical.parsing.property import ParsedProperty
 from ical.types import Period
-from ical.types.data_types import DATA_TYPE
+from ical.types.data_types import serialize_field
 
 
 class FakeModel(ComponentModel):
@@ -17,17 +18,14 @@ class FakeModel(ComponentModel):
 
     example: Period
 
-    class Config:
-        """Pydantic model configuration."""
-
-        json_encoders = DATA_TYPE.encode_property_json
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
 
 def test_period() -> None:
     """Test for period fields."""
 
     # Time period with end date
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "example": [
                 ParsedProperty(
@@ -46,7 +44,7 @@ def test_period() -> None:
     )
 
     # Time period with duration
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"example": [ParsedProperty(name="example", value="19970101T180000Z/PT5H30M")]},
     )
     assert model.example.start == datetime.datetime(
@@ -60,20 +58,22 @@ def test_period() -> None:
     )
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj({"example": [ParsedProperty(name="example", value="a")]})
+        FakeModel.model_validate(
+            {"example": [ParsedProperty(name="example", value="a")]}
+        )
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj(
+        FakeModel.model_validate(
             {"example": [ParsedProperty(name="example", value="19970101T180000Z/a")]}
         )
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj(
+        FakeModel.model_validate(
             {"example": [ParsedProperty(name="example", value="a/19970102T070000Z")]}
         )
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj(
+        FakeModel.model_validate(
             {"example": [ParsedProperty(name="example", value="a/PT5H30M")]}
         )
 
diff -pruN 9.0.0-2/tests/types/test_priority.py 12.1.0-1/tests/types/test_priority.py
--- 9.0.0-2/tests/types/test_priority.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_priority.py	2025-11-14 02:06:41.000000000 +0000
@@ -17,14 +17,14 @@ class FakeModel(ComponentModel):
 def test_priority() -> None:
     """Test for priority fields."""
 
-    model = FakeModel.parse_obj({"pri": [ParsedProperty(name="dt", value="1")]})
+    model = FakeModel.model_validate({"pri": [ParsedProperty(name="dt", value="1")]})
     assert model.pri == 1
 
-    model = FakeModel.parse_obj({"pri": [ParsedProperty(name="dt", value="9")]})
+    model = FakeModel.model_validate({"pri": [ParsedProperty(name="dt", value="9")]})
     assert model.pri == 9
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj({"pri": [ParsedProperty(name="dt", value="-1")]})
+        FakeModel.model_validate({"pri": [ParsedProperty(name="dt", value="-1")]})
 
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj({"pri": [ParsedProperty(name="dt", value="10")]})
+        FakeModel.model_validate({"pri": [ParsedProperty(name="dt", value="10")]})
diff -pruN 9.0.0-2/tests/types/test_recur.py 12.1.0-1/tests/types/test_recur.py
--- 9.0.0-2/tests/types/test_recur.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_recur.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,4 +1,5 @@
 """Tests for timeline related calendar eents."""
+
 from __future__ import annotations
 
 import datetime
@@ -32,7 +33,7 @@ class FakeModel(ComponentModel):
 def test_recurrence_id_datetime() -> None:
     """Test a recurrence id datetime field."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "recurrence_id": [
                 ParsedProperty(name="recurrence_id", value="20220724T120000")
@@ -45,7 +46,7 @@ def test_recurrence_id_datetime() -> Non
 def test_recurrence_id_date() -> None:
     """Test a recurrence id date field."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"recurrence_id": [ParsedProperty(name="recurrence_id", value="20220724")]}
     )
     assert model.recurrence_id == "20220724"
@@ -54,7 +55,7 @@ def test_recurrence_id_date() -> None:
 def test_recurrence_id_ignore_params() -> None:
     """Test property parameter values are ignored."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "recurrence_id": [
                 ParsedProperty(
@@ -72,7 +73,7 @@ def test_recurrence_id_ignore_params() -
 
 def test_invalid_recurrence_id() -> None:
     """Test for a recurrence id that is not a valid DATE or DATE-TIME string."""
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"recurrence_id": [ParsedProperty(name="recurrence_id", value="invalid")]}
     )
     assert model.recurrence_id == "invalid"
diff -pruN 9.0.0-2/tests/types/test_related.py 12.1.0-1/tests/types/test_related.py
--- 9.0.0-2/tests/types/test_related.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_related.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,6 +1,6 @@
 """Tests for RELATED-TO data types."""
 
-
+from pydantic import field_serializer
 import pytest
 from ical.exceptions import CalendarParseError
 
@@ -8,7 +8,7 @@ from ical.component import ComponentMode
 from ical.parsing.component import ParsedComponent
 from ical.parsing.property import ParsedProperty, ParsedPropertyParameter
 from ical.types import RelatedTo, RelationshipType
-from ical.types.data_types import DATA_TYPE
+from ical.types.data_types import serialize_field
 
 
 class FakeModel(ComponentModel):
@@ -16,15 +16,12 @@ class FakeModel(ComponentModel):
 
     example: RelatedTo
 
-    class Config:
-        """Pydantic model configuration."""
-
-        json_encoders = DATA_TYPE.encode_property_json
+    serialize_fields = field_serializer("*")(serialize_field)  # type: ignore[pydantic-field]
 
 
 def test_default_reltype() -> None:
     """Test for no explicit reltype specified."""
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "example": [
                 ParsedProperty(
@@ -51,7 +48,7 @@ def test_default_reltype() -> None:
 def test_reltype(reltype: str) -> None:
     """Test for no explicit reltype specified."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {
             "example": [
                 ParsedProperty(
@@ -69,7 +66,7 @@ def test_reltype(reltype: str) -> None:
 
 def test_invalid_reltype() -> None:
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj(
+        model = FakeModel.model_validate(
             {
                 "example": [
                     ParsedProperty(
@@ -88,7 +85,7 @@ def test_invalid_reltype() -> None:
 
 def test_too_many_reltype_values() -> None:
     with pytest.raises(CalendarParseError):
-        FakeModel.parse_obj(
+        FakeModel.model_validate(
             {
                 "example": [
                     ParsedProperty(
diff -pruN 9.0.0-2/tests/types/test_text.py 12.1.0-1/tests/types/test_text.py
--- 9.0.0-2/tests/types/test_text.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_text.py	2025-11-14 02:06:41.000000000 +0000
@@ -21,12 +21,12 @@ def test_text() -> None:
             value="Project XYZ Final Review\\nConference Room - 3B\\nCome Prepared.",
         )
     )
-    model = Model.parse_obj(component.as_dict())
-    assert model == {
-        "text_value": "\n".join(
+    model = Model.model_validate(component.as_dict())
+    assert model == Model(
+        text_value="\n".join(
             ["Project XYZ Final Review", "Conference Room - 3B", "Come Prepared."]
         )
-    }
+    )
     assert model.__encode_component_root__() == ParsedComponent(
         name="Model",
         properties=[
@@ -40,7 +40,5 @@ def test_text() -> None:
 
 def test_text_from_obj() -> None:
     """Test text when creating from an object."""
-    model = Model.parse_obj({"text_value": "some-value"})
-    assert model == {
-        "text_value": "some-value",
-    }
+    model = Model.model_validate({"text_value": "some-value"})
+    assert model == Model(text_value="some-value")
diff -pruN 9.0.0-2/tests/types/test_utc_offset.py 12.1.0-1/tests/types/test_utc_offset.py
--- 9.0.0-2/tests/types/test_utc_offset.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/types/test_utc_offset.py	2025-11-14 02:06:41.000000000 +0000
@@ -19,12 +19,12 @@ class FakeModel(ComponentModel):
 def test_utc_offset() -> None:
     """Test for UTC offset fields."""
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"example": [ParsedProperty(name="example", value="-0400")]}
     )
     assert model.example.offset == datetime.timedelta(hours=-4)
 
-    model = FakeModel.parse_obj(
+    model = FakeModel.model_validate(
         {"example": [ParsedProperty(name="example", value="0500")]}
     )
     assert model.example.offset == datetime.timedelta(hours=5)
@@ -33,6 +33,29 @@ def test_utc_offset() -> None:
     assert model.example.offset == datetime.timedelta(hours=5)
 
     with pytest.raises(CalendarParseError, match=r".*match UTC-OFFSET pattern.*"):
-        FakeModel.parse_obj(
+        FakeModel.model_validate(
             {"example": [ParsedProperty(name="example", value="abcdef")]},
         )
+
+
+def test_optional_seconds() -> None:
+    """Test for UTC offset fields with optional seconds."""
+    model = FakeModel.model_validate(
+        {"example": [ParsedProperty(name="example", value="+0019")]}
+    )
+    assert model.example.offset == datetime.timedelta(minutes=19)
+
+    model = FakeModel.model_validate(
+        {"example": [ParsedProperty(name="example", value="+001932")]}
+    )
+    assert model.example.offset == datetime.timedelta(minutes=19, seconds=32)
+
+    model = FakeModel.model_validate(
+        {"example": [ParsedProperty(name="example", value="-0019")]}
+    )
+    assert model.example.offset == datetime.timedelta(minutes=-19)
+
+    model = FakeModel.model_validate(
+        {"example": [ParsedProperty(name="example", value="-001932")]}
+    )
+    assert model.example.offset == datetime.timedelta(minutes=-19, seconds=-32)
diff -pruN 9.0.0-2/tests/tzif/__snapshots__/test_rfc8536.ambr 12.1.0-1/tests/tzif/__snapshots__/test_rfc8536.ambr
--- 9.0.0-2/tests/tzif/__snapshots__/test_rfc8536.ambr	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/tzif/__snapshots__/test_rfc8536.ambr	2025-11-14 02:06:41.000000000 +0000
@@ -121,7 +121,7 @@
       'dst_start': None,
       'std': dict({
         'name': 'HST',
-        'offset': -36000.0,
+        'offset': '-PT10H',
       }),
     }),
     'transitions': list([
diff -pruN 9.0.0-2/tests/tzif/test_timezoneinfo.py 12.1.0-1/tests/tzif/test_timezoneinfo.py
--- 9.0.0-2/tests/tzif/test_timezoneinfo.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/tzif/test_timezoneinfo.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,10 +1,12 @@
 """Tests for the tzif library."""
 
 import datetime
+from unittest.mock import patch
 import zoneinfo
 
 import pytest
 
+
 from ical.tzif import timezoneinfo, tz_rule
 
 
@@ -162,3 +164,19 @@ def test_all_zoneinfo(key: str) -> None:
 
     # Verify there is a paresable tz rule
     timezoneinfo.TzInfo.from_timezoneinfo(result)
+
+
+def test_read_tzinfo_value_error() -> None:
+    """Test TzInfo implementation for known date/times."""
+    with (
+        patch("ical.tzif.timezoneinfo._read_tzdata_timezones", return_value=["X/Y"]),
+        patch("ical.tzif.timezoneinfo._find_tzfile"),
+        patch(
+            "ical.tzif.timezoneinfo.read_tzif",
+            side_effect=ValueError("zoneinfo file did not contain magic header"),
+        ),
+        pytest.raises(
+            timezoneinfo.TimezoneInfoError, match="Unable to load tzdata file: X/Y"
+        ),
+    ):
+        timezoneinfo.read_tzinfo("X/Y")
diff -pruN 9.0.0-2/tests/tzif/test_tz_rule.py 12.1.0-1/tests/tzif/test_tz_rule.py
--- 9.0.0-2/tests/tzif/test_tz_rule.py	2025-01-05 02:02:47.000000000 +0000
+++ 12.1.0-1/tests/tzif/test_tz_rule.py	2025-11-14 02:06:41.000000000 +0000
@@ -1,7 +1,7 @@
 """Tests for the tzif library."""
 
 import datetime
-from typing import cast
+from typing import cast, Any
 
 import pytest
 
@@ -213,14 +213,12 @@ def test_iran_rule_offset() -> None:
     assert rule.dst_end.time == datetime.timedelta(hours=24)
 
 
-def test_invalid_time() -> None:
-    """Test validation of fields with an invalid time value."""
-    with pytest.raises(ValueError, match="time was not parse tree dict"):
-        tz_rule.RuleDate.parse_obj(
-            {
-                "month": 3,
-                "week_of_month": 1,
-                "day_of_week": 0,
-                "time": 0.12345,
-            }
-        )
+def test_parse_tz_rule_benchmark(benchmark: Any) -> None:
+    """Benchmark to measure the speed of parsing."""
+
+    def parse() -> None:
+        tz_rule.parse_tz_rule("EST5")
+        tz_rule.parse_tz_rule("EST+5EDT,M3.2.0,M11.1.0")
+        tz_rule.parse_tz_rule("<-03>3<-02>,M3.5.0/-2,M10.5.0/-1")
+
+    benchmark(parse)
