diff --git a/.changeset/README.md b/.changeset/README.md
new file mode 100644
index 0000000..e5b6d8d
--- /dev/null
+++ b/.changeset/README.md
@@ -0,0 +1,8 @@
+# Changesets
+
+Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
+with multi-package repos, or single-package repos to help you version and publish your code. You can
+find the full documentation for it [in our repository](https://github.com/changesets/changesets)
+
+We have a quick list of common questions to get you started engaging with this project in
+[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
diff --git a/.changeset/config.json b/.changeset/config.json
new file mode 100644
index 0000000..1bce994
--- /dev/null
+++ b/.changeset/config.json
@@ -0,0 +1,13 @@
+{
+ "$schema": "https://unpkg.com/@changesets/config@1.5.0/schema.json",
+ "changelog": ["@changesets/changelog-github", { "repo": "eyuelberga/keywrite" }],
+ "commit": false,
+ "linked": [],
+ "access": "public",
+ "baseBranch": "main",
+ "updateInternalDependencies": "patch",
+ "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
+ "onlyUpdatePeerDependentsWhenOutOfRange": true
+ },
+ "ignore": []
+}
diff --git a/.commitlintrc b/.commitlintrc
new file mode 100644
index 0000000..0df1d25
--- /dev/null
+++ b/.commitlintrc
@@ -0,0 +1,5 @@
+{
+ "extends": [
+ "@commitlint/config-conventional"
+ ]
+}
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..f06235c
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+node_modules
+dist
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..4f9617c
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,13 @@
+{
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "plugins": ["@typescript-eslint"],
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended",
+ "prettier/@typescript-eslint",
+ "plugin:prettier/recommended"
+ ],
+ "rules": {}
+}
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..3227aab
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,50 @@
+---
+name: Report a bug 🐛
+about: Something isn't working as expected? Here is the right place to report.
+---
+
+
+
+# 🐛 Bug report
+
+> Provide a brief description of the bug here
+
+## 💥 Steps to reproduce
+
+> Clear and concise reproduction steps are important for us to be able to triage
+> your issue in a timely manner
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+## 💻 Link to reproduction
+
+> Please create a minimal reproduction in CodeSandbox
+
+## 🧐 Expected behavior
+
+> Tell us what you expect to happen.
+
+## 🧭 Possible Solution
+
+> Not compulsory, but suggesting a fix would be great!
+
+## 🌍 System information
+
+| Software | Version(s) |
+| ---------------- | ---------- |
+| Keywrite | |
+| Browser | |
+| Operating System | |
+
+## 📝 Additional information
+
+- Screenshots or code
+- Notes or link to ideas
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..8ab97b0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Ask a question
+ url: https://github.com/eyuelberga/keywrite/discussions
+ about: Ask questions and discuss topics with other community members
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..a3f7b22
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,33 @@
+---
+name: Request a feature or enhancement 🙋
+about: Want a feature to be added to Keywrite?
+---
+
+
+
+# 🚀 Feature request
+
+> Please describe your request in one or two sentences.
+
+## 🧱 Problem Statement / Justification
+
+> Please provide valid reason(s) why this should added to Keywrite.
+>
+> If this feature is related to a problem you've noticed. Mention it as well
+
+## ✅ Proposed solution or API
+
+> Please provide code snippets, gists, or links to the ideal design or API
+
+## ↩️ Alternatives
+
+> What alternative solutions have you considered before making this request?
+
+## 📝 Additional Information
+
+> What resources (links, screenshots, etc.) do you have to assist this effort?
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..6e7ab85
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,28 @@
+
+
+Closes #
+
+## 📝 Description
+
+> Add a brief description
+
+## ⛳️ Current behavior (updates)
+
+> Please describe the current behavior that you are modifying
+
+## 🚀 New behavior
+
+> Please describe the behavior or changes this PR adds
+
+## 💣 Is this a breaking change (Yes/No):
+
+
+
+## 📝 Additional Information
diff --git a/.github/stale.yml b/.github/stale.yml
new file mode 100644
index 0000000..02032cd
--- /dev/null
+++ b/.github/stale.yml
@@ -0,0 +1,24 @@
+# Number of days of inactivity before an issue becomes stale
+daysUntilStale: 30
+# Number of days of inactivity before a stale issue is closed
+daysUntilClose: 5
+# Issues with these labels will never be considered stale
+exemptLabels:
+ - 'not stale'
+ - 'Priority: High 🚨'
+# Label to use when marking an issue as stale
+staleLabel: stale
+# Comment to post when marking an issue as stale. Set to `false` to disable
+markComment: >
+ Hi!
+
+ This issue hasn't seen any activity recently. We close inactive issues after
+ 35 days to manage the volume of issues we receive.
+
+ If we missed this issue or you want to keep it open, please reply here. That
+ will reset the timer and allow more time for this issue to be addressed before
+ it is closed.
+# Comment to post when closing a stale issue. Set to `false` to disable
+closeComment: false
+unmarkComment: false
+only: issues
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
new file mode 100644
index 0000000..77be83d
--- /dev/null
+++ b/.github/workflows/pr.yml
@@ -0,0 +1,43 @@
+name: PR Workflow
+
+on:
+ pull_request:
+ branches:
+ - main
+ - develop
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get Yarn cache path
+ id: yarn-cache
+ run: echo "::set-output name=dir::$(yarn cache dir)"
+
+ - name: Checkout
+ uses: actions/checkout@v1
+
+ - name: Enable node
+ uses: actions/setup-node@v1
+ with:
+ node-version: 12.x
+
+ - name: Load Yarn cache
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.yarn-cache.outputs.dir }}
+ key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-yarn-
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
+ - name: Build packages
+ run: yarn build
+
+ - name: Lint types and code
+ run: yarn lint
+
+ - name: Run tests
+ run: yarn test
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..8b001a1
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,53 @@
+name: Publish to NPM
+
+on:
+ push:
+ paths:
+ - 'packages/**'
+ branches:
+ - main
+
+jobs:
+ release:
+ name: Release
+ runs-on: ubuntu-latest
+ steps:
+ - id: yarn-cache
+ name: Get Yarn cache path
+ run: echo "::set-output name=dir::$(yarn cache dir)"
+
+ - name: Checkout Repo
+ uses: actions/checkout@main
+ with:
+ # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
+ fetch-depth: 0
+
+ - name: Setup Node.js 12.x
+ uses: actions/setup-node@main
+ with:
+ node-version: 12.x
+
+ - uses: actions/cache@70655ec8323daeeaa7ef06d7c56e1b9191396cbe
+ name: Load Yarn cache
+ with:
+ path: ${{ steps.yarn-cache.outputs.dir }}
+ key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-yarn-
+
+ - name: Install Dependencies
+ run: yarn install --frozen-lockfile
+
+ - name: Setup CI Git User
+ run: |
+ git config --global user.email "eyuel.berga@yahoo.com"
+ git config --global user.name "eyuelberga"
+
+ - name: Publish packages
+ uses: changesets/action@main
+ with:
+ publish: yarn release
+ commit: 'chore(release): version packages'
+ env:
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..41a81ce
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,106 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# Next.js build output
+.next
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and *not* Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+.idea/
\ No newline at end of file
diff --git a/.huskyrc b/.huskyrc
new file mode 100644
index 0000000..557b291
--- /dev/null
+++ b/.huskyrc
@@ -0,0 +1,7 @@
+{
+ "hooks": {
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
+ "pre-commit": "lint-staged",
+ "prepare-commit-msg": "exec < /dev/tty && git cz --hook"
+ }
+}
diff --git a/.lintstagedrc b/.lintstagedrc
new file mode 100644
index 0000000..67d9ddf
--- /dev/null
+++ b/.lintstagedrc
@@ -0,0 +1,8 @@
+{
+ "**/*.{ts,tsx,js,jsx}": [
+ "prettier --write"
+ ],
+ "**/*.{md,yml,json,babelrc,eslintrc,prettierrc}": [
+ "prettier --write"
+ ]
+}
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..c8c6a54
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ semi: true,
+ trailingComma: 'all',
+ singleQuote: true,
+ printWidth: 120,
+ tabWidth: 4,
+};
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..65aa940
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+ - stable
+install:
+ - yarn install
+script:
+ - yarn lint
+ - yarn build
+ - yarn test
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..3b6f835
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,132 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+- The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+- Trolling, insulting or derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+eyuel.berga@yahoo.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][mozilla coc].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][faq]. Translations are available
+at [https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
+[mozilla coc]: https://github.com/mozilla/diversity
+[faq]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..e7e21d5
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,136 @@
+Thanks for showing interest to contribute to Keywrite
+
+When it comes to open source, there are different ways you can contribute, all
+of which are valuable. Here's a few guidelines that should help you as you
+prepare your contribution.
+
+## Setup the Project
+
+The following steps will get you up and running to contribute to Keywrite:
+
+1. Fork the repo (click the Fork button at the top right of
+ [this page](https://github.com/eyuelberga/keywrite))
+
+2. Clone your fork locally
+
+```sh
+git clone https://github.com//keywrite.git
+cd keywrite
+```
+
+3. Setup all the dependencies and packages by running `yarn install`. This
+ command will install dependencies for the repo.
+
+## Development
+
+Keywrite uses a monorepo structure and we treat each component has an independent package
+that can be consumed in isolation.
+
+### Tooling
+
+- [Lerna](https://lerna.js.org/) to manage installation of dependencies and
+ running various scripts. We also have yarn workspaces enabled by default.
+- [Changeset](https://github.com/atlassian/changesets) for changes
+ documentation, changelog generation, and release management.
+
+### Commands
+
+**`yarn lint`**: lint all packages.
+
+**`yarn build`**: run build for all packages.
+
+**`yarn test`**: run test for all packages.
+
+**`yarn release`**: publish changed packages.
+
+#### Yarn Workspace
+
+Since we're using yarn workspaces, this enables us
+to run commands within packages directly from the root.
+
+Each package is named this way: `@keywrite/[package]`. Let's say we want to
+build the core package. Here's how to do it:
+
+```bash
+yarn workspace @keywrite/core build
+
+```
+
+## Think you found a bug?
+
+Please conform to the issue template and provide a clear path to reproduction
+with a code example.
+
+## Proposing new or changed API?
+
+Please provide thoughtful comments and some sample API code. Proposals that
+don't line up with our roadmap or don't have a thoughtful explanation will be
+closed.
+
+## Making a Pull Request?
+
+Pull requests will be merged after passing all status checks.
+
+### Commit Convention
+
+Before you create a Pull Request, please check whether your commits comply with
+the commit conventions used in this repository.
+
+When you create a commit we kindly ask you to follow the convention
+`category(scope or module): message` in your commit message while using one of
+the following categories:
+
+- `feat / feature`: all changes that introduce completely new code or new
+ features
+- `fix`: changes that fix a bug (ideally you will additionally reference an
+ issue if present)
+- `refactor`: any code related change that is not a fix nor a feature
+- `docs`: changing existing or creating new documentation (i.e. README, docs for
+ usage of a lib or cli usage)
+- `build`: all changes regarding the build of the software, changes to
+ dependencies or the addition of new dependencies
+- `test`: all changes regarding tests (adding new tests or changing existing
+ ones)
+- `ci`: all changes regarding the configuration of continuous integration (i.e.
+ github actions, ci system)
+- `chore`: all changes to the repository that do not fit into any of the above
+ categories
+
+If you are interested in the detailed specification you can visit
+https://www.conventionalcommits.org/ or check out the
+[Angular Commit Message Guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines).
+
+### Steps to PR
+
+1. Fork of the keywrite repository and clone your fork
+
+2. Create a new branch out of the `develop` branch. We follow the convention
+ `[type/scope]`. For example `fix/core` or `docs/title-typo`. `type`
+ can be either `docs`, `fix`, `feat`, `build`, or any other conventional
+ commit type. `scope` is just a short id that describes the scope of work.
+
+3. Make and commit your changes following the
+ [commit convention](https://github.com/keywrite/keywrite/blob/main/CONTRIBUTING.md#commit-convention).
+ As you develop, you can run `yarn workspace @keywrite/ build` and
+ `yarn workspace @keywrite/ test` to make sure everything works as expected. Please
+ note that you might have to run `yarn install` first in order to build all
+ dependencies.
+
+4. Run `yarn changeset` to create a detailed description of your changes. This
+ will be used to generate a changelog when we publish an update.
+ [Learn more about Changeset](https://github.com/atlassian/changesets/tree/main/packages/cli).
+ Please note that you might have to run `git fetch origin main:main`
+ (where origin will be your fork on GitHub) before `yarn changeset` works.
+
+> If you made minor changes like CI config, prettier, etc, you can run
+> `yarn changeset add --empty` to generate an empty changeset file to document
+> your changes.
+
+### Tests
+
+All commits that fix bugs or add features need a test.
+
+## License
+
+By contributing your code to the keywrite GitHub repository, you agree to
+license your contribution under the MIT license.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..5b173b3
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Eyuel Berga Woldemichael
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 52bf91c..a5afd53 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,16 @@
-
+
-
-
+
+
-
+
diff --git a/configure-references.js b/configure-references.js
new file mode 100644
index 0000000..f0b6338
--- /dev/null
+++ b/configure-references.js
@@ -0,0 +1,51 @@
+#!/usr/bin/env node
+
+// @ts-check
+/* eslint-disable */
+
+const fs = require('fs');
+const util = require('util');
+const exec = util.promisify(require('child_process').exec);
+const path = require('path');
+const isCI = require('is-ci');
+
+const config = JSON.parse(fs.readFileSync('tsconfig.json').toString());
+config.files = [];
+config.references = [];
+
+(async function () {
+ if (isCI) {
+ // dont run it on CI
+ return;
+ }
+
+ const { stdout, stderr } = await exec('yarn workspaces info --json');
+
+ const lines = stdout.split('\n');
+ const depthTree = lines.slice(1, lines.length - 2).join('\n');
+ const workspaces = JSON.parse(depthTree);
+
+ for (const name in workspaces) {
+ const workspace = workspaces[name];
+ const location = path.resolve(process.cwd(), workspace.location);
+ const tsconfigPath = path.resolve(location, 'tsconfig.json');
+ if (fs.existsSync(tsconfigPath)) {
+ config.references.push({
+ path: workspace.location,
+ });
+ const workspaceConfig = JSON.parse(fs.readFileSync(tsconfigPath).toString());
+ workspaceConfig.compilerOptions.composite = true;
+ workspaceConfig.references = [];
+ for (const dependency of workspace.workspaceDependencies) {
+ const dependecyLocation = path.resolve(process.cwd(), workspaces[dependency].location);
+ if (fs.existsSync(path.resolve(dependecyLocation, 'tsconfig.json'))) {
+ workspaceConfig.references.push({
+ path: path.relative(location, dependecyLocation),
+ });
+ }
+ }
+ fs.writeFileSync(tsconfigPath, JSON.stringify(workspaceConfig, undefined, 4));
+ }
+ }
+ fs.writeFileSync('tsconfig.json', JSON.stringify(config, undefined, 4));
+})();
diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..9678f4a
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,18 @@
+# Keywrite
+
+> This project intends to solve problems that developers face when trying to add support for typing Ge'ez based texts on web and hybrid applications using standard keyboard.
+
+## Features 🚀
+
+- Ease of Use: Keywrite can be integrated to most modern web frameworks with ease.
+- Flexible Keyboard Layouts: You can configure Keywrite with different keyboard layouts and also use multiple layouts in one instance.
+- Extendable: Keywrite can also be extended easily to support different use-cases.
+
+## Contributing
+
+Feel like contributing? That's awesome! We have a
+[contributing guide](./CONTRIBUTING.md) to help guide you.
+
+## License
+
+MIT © [Eyuel Berga](https://github.com/eyuelberga)
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
new file mode 100644
index 0000000..1636e70
--- /dev/null
+++ b/docs/_coverpage.md
@@ -0,0 +1,8 @@
+
+
+# Keywrite 0.1.2
+
+> ⌨️ Typing Ethiopic scripts made easy
+
+[GitHub](https://github.com/eyuelberga/keywrite)
+[Get Started](#keywrite)
diff --git a/docs/_media/favicon.ico b/docs/_media/favicon.ico
new file mode 100644
index 0000000..ffefb5f
Binary files /dev/null and b/docs/_media/favicon.ico differ
diff --git a/docs/_media/logo.png b/docs/_media/logo.png
new file mode 100644
index 0000000..a82a94e
Binary files /dev/null and b/docs/_media/logo.png differ
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
new file mode 100644
index 0000000..9500176
--- /dev/null
+++ b/docs/_sidebar.md
@@ -0,0 +1,8 @@
+
+
+- **Get Started**
+ - [Installation](/installation)
+- **Basic**
+ - [Adding to web](/add_to_web)
+ - [Enable/disable keyboard](/enable_disable)
+ - [Configuring multiple keyboard-layouts](/multiple_layout)
diff --git a/docs/add_to_web.md b/docs/add_to_web.md
new file mode 100644
index 0000000..f458800
--- /dev/null
+++ b/docs/add_to_web.md
@@ -0,0 +1,13 @@
+# Adding Keywrite to web
+
+> Keywrite supports web integration through the `@keywrite/web` package.
+> You can use it on a simple site or along with a web framework like React or Vue.
+
+```javascript
+import { KeywriteWeb } from '@keywrite/web';
+
+// add to HTMLInputElement
+new KeywriteWeb(document.querySelector('input'));
+// add to HTMLTextAreaElement
+new KeywriteWeb(document.querySelector('textarea'));
+```
diff --git a/docs/custom_layout.md b/docs/custom_layout.md
new file mode 100644
index 0000000..a0d4f44
--- /dev/null
+++ b/docs/custom_layout.md
@@ -0,0 +1,8 @@
+# Creating your own layout
+
+layout definition files are simple json objects. They map keyboard input characters
+to special values. It is possible to manually write a layout definition that will work with Keywrite,
+but we provide a package that can help you with this.
+
+You can write layout definitions in a `.csv` file format and the
+`@keywrite/layout-generator` package will generate the layout for you.
diff --git a/docs/enable_disable.md b/docs/enable_disable.md
new file mode 100644
index 0000000..07b5dfa
--- /dev/null
+++ b/docs/enable_disable.md
@@ -0,0 +1,25 @@
+# Enabling/Disabling Keywrite
+
+By default Keywrite is enabled when initialized. This can be overridden by
+setting the `on` parameter during initialization.
+
+```javascript
+import { KeywriteWeb } from '@keywrite/web';
+
+// add to HTMLInputElement without enabling it
+new KeywriteWeb(document.querySelector('input'), false);
+```
+
+It is also possible to toggle between on and off states during run time by changing the
+values of the `on` property on the `KeywriteWeb` instance.
+
+```javascript
+import { KeywriteWeb } from '@keywrite/web';
+
+// add to HTMLInputElement without enabling it
+const myInstance = new KeywriteWeb(document.querySelector('input'), false);
+
+// change the on property to enable it
+
+myInstance.on = true;
+```
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..e32436e
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+ Keywrite - ⌨️ Typing Ethiopic scripts made easy
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/installation.md b/docs/installation.md
new file mode 100644
index 0000000..6066ced
--- /dev/null
+++ b/docs/installation.md
@@ -0,0 +1,12 @@
+# Installing Keywrite
+
+To use Keywrite on web projects, all you need to do is install the
+`@keywrite/web` package:
+
+```sh
+$ yarn add @keywrite/web
+
+# or
+
+$ npm install @keywrite/web
+```
diff --git a/docs/multiple_layout.md b/docs/multiple_layout.md
new file mode 100644
index 0000000..0560d10
--- /dev/null
+++ b/docs/multiple_layout.md
@@ -0,0 +1,24 @@
+# Using Keywrite with multiple keyboard layouts
+
+It is possible to add more than one keyboard layout to one instance. This could
+be beneficial in cases when you want users to pick from a selection of
+input methods.
+
+multiple layout definitions can be added during initialization.
+
+```javascript
+import { KeywriteWeb } from '@keywrite/web';
+
+// keyboard layout definitions
+import layout1 from './layout1';
+import layout2 from './layout2';
+import layout3 from './layout3';
+
+// add to HTMLInputElement with multiple layout definitions
+// the parameter accepts a map of layout name and its definition
+new KeywriteWeb(document.querySelector('input'), true, {
+ default: layout1,
+ typewriter: layout2,
+ mnemonic: layout3,
+});
+```
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 0000000..f6d8a49
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,22 @@
+module.exports = {
+ preset: 'ts-jest',
+ testEnvironment: 'node',
+ collectCoverage: true,
+ coverageReporters: ['text', 'html'],
+ collectCoverageFrom: ['src/**/*.ts'],
+ coverageThreshold: {
+ global: {
+ branches: 90,
+ functions: 100,
+ lines: 95,
+ statements: 95,
+ },
+ },
+ transform: { '.(ts|tsx)$': 'ts-jest/dist' },
+ transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'],
+ globals: {
+ 'ts-jest': {
+ tsconfig: 'tsconfig.json',
+ },
+ },
+};
diff --git a/lerna.json b/lerna.json
new file mode 100644
index 0000000..5812a97
--- /dev/null
+++ b/lerna.json
@@ -0,0 +1,16 @@
+{
+ "packages": ["packages/*"],
+ "version": "independent",
+ "npmClient": "yarn",
+ "useWorkspaces": true,
+ "registry": "https://registry.npmjs.org/",
+ "command": {
+ "version": { "exact": true },
+ "publish": {
+ "conventionalCommits": true,
+ "message": "chore(release): publish",
+ "ignoreChanges": ["**/tests/**"],
+ "allowBranch": "main"
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..fcb17a8
--- /dev/null
+++ b/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "keywrite",
+ "private": true,
+ "author": "Eyuel Berga Woldemichael ",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/eyuelberga/keywrite.git"
+ },
+ "scripts": {
+ "prepare": "node ./configure-references.js",
+ "build": "lerna run build --stream --no-private",
+ "lint": "lerna run lint --stream --parallel --no-private",
+ "test": "lerna run test --stream --no-private",
+ "commit": "git-cz",
+ "release": "changeset publish",
+ "version": "changeset version"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "11.0.0",
+ "@commitlint/config-conventional": "11.0.0",
+ "@typescript-eslint/eslint-plugin": "4.14.2",
+ "@typescript-eslint/parser": "4.14.2",
+ "commitizen": "4.2.3",
+ "cz-conventional-changelog": "3.3.0",
+ "eslint": "^7.19.0",
+ "eslint-config-prettier": "7.2.0",
+ "eslint-plugin-prettier": "3.3.1",
+ "husky": "4.3.8",
+ "jest": "^26.6.3",
+ "lerna": "^3.22.1",
+ "lint-staged": "10.5.3",
+ "prettier": "2.2.1",
+ "ts-jest": "26.5.0",
+ "typescript": "^4.1.3"
+ },
+ "workspaces": [
+ "packages/*"
+ ],
+ "dependencies": {
+ "@changesets/changelog-github": "0.2.8",
+ "@changesets/cli": "2.14.1"
+ },
+ "version": "0.0.0"
+}
diff --git a/packages/core/README.md b/packages/core/README.md
new file mode 100644
index 0000000..cf58d1b
--- /dev/null
+++ b/packages/core/README.md
@@ -0,0 +1,25 @@
+## @keywrite/core
+
+This package contains the core module for Keywrite. It doesn't do much by itself,
+but can be extended to support different use cases
+
+## Installation
+
+```sh
+$ yarn add @keywrite/core
+
+# or
+
+$ npm install @keywrite/core
+```
+
+## Basic usage
+
+By extending the exported class from `@keywrite/core` you can add
+app-specific logic. The most important method you would use would be the `write` method. This method
+takes in a character and resolves it into a special symbol as per the layout
+specification and returns the symbol and replacement state(if previous character needs to be replaced with the new symbol).
+
+## License
+
+MIT © [Eyuel Berga](https://github.com/eyuelberga)
diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js
new file mode 100644
index 0000000..a13adf5
--- /dev/null
+++ b/packages/core/jest.config.js
@@ -0,0 +1,5 @@
+const baseConfig = require('../../jest.config');
+
+module.exports = {
+ ...baseConfig,
+};
diff --git a/packages/core/package.json b/packages/core/package.json
new file mode 100644
index 0000000..5184ce5
--- /dev/null
+++ b/packages/core/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "@keywrite/core",
+ "version": "0.1.0",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "directory": "packages/core",
+ "url": "https://github.com/eyuelberga/keywrite.git"
+ },
+ "scripts": {
+ "clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
+ "prepack": "yarn build",
+ "build": "yarn clean && tsc --build && cp \"./package.json\" ./dist/",
+ "test": "jest --passWithNoTests",
+ "lint": "eslint \"./src/**/*.{ts,tsx}\" --max-warnings=10"
+ },
+ "dependencies": {},
+ "devDependencies": {}
+}
diff --git a/packages/core/src/Keywrite.ts b/packages/core/src/Keywrite.ts
new file mode 100644
index 0000000..555712e
--- /dev/null
+++ b/packages/core/src/Keywrite.ts
@@ -0,0 +1,93 @@
+export type KeyboardLayout = Record;
+export interface SymbolMap {
+ value: string | null;
+ next: KeyboardLayout | null;
+}
+
+export class Keywrite {
+ private level: number;
+ private scope: KeyboardLayout;
+ private keyboardLayouts: Record;
+ private currentLayout: string;
+ protected keyBlacklist: string[] = [
+ 'Shift',
+ 'CapsLock',
+ 'Alt',
+ 'Control',
+ 'Meta',
+ 'Backspace',
+ 'Space',
+ 'End',
+ 'Home',
+ 'PageUp',
+ 'PageDown',
+ 'ArrowLeft',
+ 'ArrowUp',
+ 'ArrowRight',
+ 'ArrowDown',
+ 'Delete',
+ 'Escape',
+ 'Insert',
+ 'Enter',
+ 'Tab',
+ ];
+
+ constructor(layouts: Record) {
+ this.level = 0;
+ this.scope = {};
+ this.keyboardLayouts = layouts;
+ this.currentLayout = Object.keys(this.keyboardLayouts)[0];
+ }
+ get current(): string {
+ return this.currentLayout;
+ }
+
+ set current(layout: string) {
+ if (layout in this.keyboardLayouts) {
+ this.currentLayout = layout;
+ this.resetScope();
+ } else {
+ throw new Error('Layout does not exists');
+ }
+ }
+
+ get layouts(): string[] {
+ return Object.keys(this.keyboardLayouts);
+ }
+ setLayouts(layouts: Record): void {
+ this.keyboardLayouts = layouts;
+ this.currentLayout = Object.keys(this.keyboardLayouts)[0];
+ this.resetScope();
+ }
+ public write(char: string): { symbol: string; replace: boolean } {
+ const symbol = this.getSymbolFromScope(char);
+ const replace = this.updateScope(char);
+ return { symbol, replace };
+ }
+ private updateScope(char: string): boolean {
+ // should replace previous character
+ const replace = !!(this.level > 0 && this.scope[char]);
+ const nextScope = this.scope[char]?.next;
+ if (nextScope) {
+ this.scope = nextScope;
+ this.level += 1;
+ } else {
+ this.resetScope();
+ }
+ return replace;
+ }
+ protected resetScope(): void {
+ this.scope = this.keyboardLayouts[this.currentLayout];
+ this.level = 0;
+ }
+
+ private getSymbolFromScope(char: string): string {
+ const valueFromScope = this.scope[char]?.value;
+ if (valueFromScope) {
+ return valueFromScope;
+ } else {
+ this.resetScope();
+ return this.scope[char]?.value || char;
+ }
+ }
+}
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
new file mode 100644
index 0000000..c962179
--- /dev/null
+++ b/packages/core/src/index.ts
@@ -0,0 +1 @@
+export * from './Keywrite';
diff --git a/packages/core/tests/Keywrite.spec.ts b/packages/core/tests/Keywrite.spec.ts
new file mode 100644
index 0000000..34429b2
--- /dev/null
+++ b/packages/core/tests/Keywrite.spec.ts
@@ -0,0 +1,139 @@
+import { Keywrite } from '../src';
+describe('Keywrite.ts', () => {
+ let instance: any = null;
+ const layouts = {
+ layout1: {
+ a: { value: 'አ', next: null },
+ i: {
+ value: 'ኢ',
+ next: {
+ e: {
+ value: 'ኤ',
+ next: null,
+ },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ h: {
+ value: 'ሽ',
+ next: {
+ a: {
+ value: 'ሻ',
+ next: null,
+ },
+ e: {
+ value: 'ሸ',
+ next: {
+ e: {
+ value: 'ሼ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሺ',
+ next: {
+ e: {
+ value: 'ሼ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሹ',
+ next: {
+ a: {
+ value: 'ሿ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሾ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ },
+ layout2: { b: { value: 'b', next: null }, a: { value: 'ኢ', next: null } },
+ };
+ beforeEach(() => {
+ instance = new Keywrite(layouts);
+ });
+ it('should set current keyboard-layout to first on map by default', () => {
+ expect(instance.current).toBe('layout1');
+ });
+ it('should set current keyboard-layout using name', () => {
+ const newLayout = 'layout2';
+ instance.current = newLayout;
+ expect(instance.current).toBe(newLayout);
+ });
+ it("should throw error if input for current keyboard-layout doesn't exist on map", () => {
+ const unknownLayout = 'layout-unknown';
+ expect(() => {
+ instance.current = unknownLayout;
+ }).toThrow();
+ });
+ it('should get all avaliable keyboard-layout names ', () => {
+ expect(instance.layouts).toContain('layout1');
+ expect(instance.layouts).toContain('layout2');
+ });
+ it('should set new keyboard-layout map ', () => {
+ const newLayouts = {
+ layout3: { a: { value: 'a', next: null } },
+ layout4: { b: { value: 'b', next: null } },
+ };
+ instance.setLayouts(newLayouts);
+ expect(instance.layouts).toContain('layout3');
+ expect(instance.layouts).toContain('layout4');
+ });
+
+ it('should update current layout when new keyboard-layout map is set ', () => {
+ const newLayouts = {
+ layout3: { a: { value: 'a', next: null } },
+ layout4: { b: { value: 'b', next: null } },
+ };
+ instance.setLayouts(newLayouts);
+ expect(instance.current).toBe('layout3');
+ });
+
+ it('should be able to use new layout after change', () => {
+ expect(instance.write('a')).toEqual({ symbol: 'አ', replace: false });
+ const newLayout = 'layout2';
+ instance.current = newLayout;
+ expect(instance.write('a')).toEqual({ symbol: 'ኢ', replace: false });
+ });
+
+ it('should be able to use new layout after new keyboard-layout map is set ', () => {
+ expect(instance.write('a')).toEqual({ symbol: 'አ', replace: false });
+ const newLayouts = {
+ layout3: { a: { value: '@', next: null } },
+ layout4: { b: { value: '&', next: null } },
+ };
+ instance.setLayouts(newLayouts);
+ expect(instance.write('a')).toEqual({ symbol: '@', replace: false });
+ });
+
+ it("should not replace last character if it doesn't exist in current scope", () => {
+ expect(instance.write('a')).toEqual({ symbol: 'አ', replace: false });
+ expect(instance.write('i')).toEqual({ symbol: 'ኢ', replace: false });
+ });
+ it('should replace last character if it does exist in current scope', () => {
+ // two-level nesting
+ expect(instance.write('i')).toEqual({ symbol: 'ኢ', replace: false });
+ expect(instance.write('e')).toEqual({ symbol: 'ኤ', replace: true });
+ // four-level nesting
+ expect(instance.write('s')).toEqual({ symbol: 'ስ', replace: false });
+ expect(instance.write('h')).toEqual({ symbol: 'ሽ', replace: true });
+ expect(instance.write('i')).toEqual({ symbol: 'ሺ', replace: true });
+ expect(instance.write('e')).toEqual({ symbol: 'ሼ', replace: true });
+ });
+ it("should return exact character if it doesn't exist in scope", () => {
+ expect(instance.write('1')).toEqual({ symbol: '1', replace: false });
+ expect(instance.write('/')).toEqual({ symbol: '/', replace: false });
+ });
+});
diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json
new file mode 100644
index 0000000..2b97c45
--- /dev/null
+++ b/packages/core/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "composite": true
+ },
+ "include": ["src/**/*"],
+ "references": []
+}
diff --git a/packages/ethiopic-layouts/README.md b/packages/ethiopic-layouts/README.md
new file mode 100644
index 0000000..bcad9e9
--- /dev/null
+++ b/packages/ethiopic-layouts/README.md
@@ -0,0 +1 @@
+## @keywrite/layouts
diff --git a/packages/ethiopic-layouts/jest.config.js b/packages/ethiopic-layouts/jest.config.js
new file mode 100644
index 0000000..a13adf5
--- /dev/null
+++ b/packages/ethiopic-layouts/jest.config.js
@@ -0,0 +1,5 @@
+const baseConfig = require('../../jest.config');
+
+module.exports = {
+ ...baseConfig,
+};
diff --git a/packages/ethiopic-layouts/package.json b/packages/ethiopic-layouts/package.json
new file mode 100644
index 0000000..f0245b5
--- /dev/null
+++ b/packages/ethiopic-layouts/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@keywrite/ethiopic-layouts",
+ "version": "0.1.0",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "directory": "packages/ethiopic-layouts",
+ "url": "https://github.com/eyuelberga/keywrite.git"
+ },
+ "scripts": {
+ "clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
+ "prepack": "yarn build",
+ "build": "yarn clean && tsc --build && cp \"./package.json\" ./dist/",
+ "test": "jest --passWithNoTests",
+ "generate": "ts-node src/generate-from-csv.ts",
+ "lint": "eslint \"./src/**/*.{ts,tsx}\" --max-warnings=10"
+ },
+ "devDependencies": {
+ "@keywrite/layout-generator": "^0.1.0",
+ "@keywrite/core": "^0.1.0",
+ "csv-parser": "^3.0.0",
+ "ts-node": "^9.1.1"
+ }
+}
diff --git a/packages/ethiopic-layouts/src/ET.ts b/packages/ethiopic-layouts/src/ET.ts
new file mode 100644
index 0000000..cf5694d
--- /dev/null
+++ b/packages/ethiopic-layouts/src/ET.ts
@@ -0,0 +1,1258 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Ethiopic(Language Neutral)', regions: ['ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ O: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ h: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ O: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ },
+ },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ O: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ O: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ U: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ O: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ Y: { value: 'ፙ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ U: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ O: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ Y: { value: 'ፙ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: { a: { value: 'ⶃ', next: null }, A: { value: 'ⶃ', next: null } } },
+ O: { value: 'ሶ', next: { a: { value: 'ⶃ', next: null }, A: { value: 'ⶃ', next: null } } },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ O: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ Y: { value: 'ፘ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ O: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ Y: { value: 'ፘ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ O: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ x: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ X: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ O: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ x: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ X: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ O: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ Y: {
+ value: 'ⷅ',
+ next: {
+ e: { value: 'ⷀ', next: null },
+ E: { value: 'ⷀ', next: null },
+ u: { value: 'ⷁ', next: null },
+ U: { value: 'ⷁ', next: null },
+ i: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ I: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ a: { value: 'ⷃ', next: null },
+ A: { value: 'ⷃ', next: null },
+ o: { value: 'ⷆ', next: null },
+ O: { value: 'ⷆ', next: null },
+ },
+ },
+ },
+ },
+ Q: {
+ value: 'ቕ',
+ next: {
+ e: { value: 'ቐ', next: null },
+ E: { value: 'ቐ', next: null },
+ u: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ U: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ i: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ I: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ a: { value: 'ቓ', next: null },
+ A: { value: 'ቓ', next: null },
+ o: { value: 'ቖ', next: null },
+ O: { value: 'ቖ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ U: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ O: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ U: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ O: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ V: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: { a: { value: 'ⶆ', next: null }, A: { value: 'ⶆ', next: null } } },
+ O: { value: 'ቶ', next: { a: { value: 'ⶆ', next: null }, A: { value: 'ⶆ', next: null } } },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: { a: { value: 'ⶇ', next: null }, A: { value: 'ⶇ', next: null } } },
+ O: { value: 'ቾ', next: { a: { value: 'ⶇ', next: null }, A: { value: 'ⶇ', next: null } } },
+ c: {
+ value: 'ⶭ',
+ next: {
+ e: { value: 'ⶨ', next: null },
+ E: { value: 'ⶨ', next: null },
+ u: { value: 'ⶩ', next: null },
+ U: { value: 'ⶩ', next: null },
+ i: { value: 'ⶪ', next: { e: { value: 'ⶬ', next: null }, E: { value: 'ⶬ', next: null } } },
+ I: { value: 'ⶪ', next: { e: { value: 'ⶬ', next: null }, E: { value: 'ⶬ', next: null } } },
+ a: { value: 'ⶫ', next: null },
+ A: { value: 'ⶫ', next: null },
+ o: { value: 'ⶮ', next: null },
+ O: { value: 'ⶮ', next: null },
+ },
+ },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: { a: { value: 'ⶈ', next: null }, A: { value: 'ⶈ', next: null } } },
+ O: { value: 'ኖ', next: { a: { value: 'ⶈ', next: null }, A: { value: 'ⶈ', next: null } } },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: { a: { value: 'ⶉ', next: null }, A: { value: 'ⶉ', next: null } } },
+ O: { value: 'ኞ', next: { a: { value: 'ⶉ', next: null }, A: { value: 'ⶉ', next: null } } },
+ },
+ },
+ a: {
+ value: 'እ',
+ next: {
+ e: { value: '', next: { e: { value: 'ኧ', next: null }, E: { value: 'ኧ', next: null } } },
+ E: { value: 'አ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: { a: { value: 'ⶊ', next: null }, A: { value: 'ⶊ', next: null } } },
+ O: { value: 'ኦ', next: { a: { value: 'ⶊ', next: null }, A: { value: 'ⶊ', next: null } } },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ O: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ Y: {
+ value: 'ⷍ',
+ next: {
+ e: { value: 'ⷈ', next: null },
+ E: { value: 'ⷈ', next: null },
+ u: { value: 'ⷉ', next: null },
+ U: { value: 'ⷉ', next: null },
+ i: { value: 'ⷊ', next: { e: { value: 'ⷌ', next: null }, E: { value: 'ⷌ', next: null } } },
+ I: { value: 'ⷊ', next: { e: { value: 'ⷌ', next: null }, E: { value: 'ⷌ', next: null } } },
+ a: { value: 'ⷋ', next: null },
+ A: { value: 'ⷋ', next: null },
+ o: { value: 'ⷎ', next: null },
+ O: { value: 'ⷎ', next: null },
+ },
+ },
+ },
+ },
+ K: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ O: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ Y: {
+ value: 'ⷕ',
+ next: {
+ e: { value: 'ⷐ', next: null },
+ E: { value: 'ⷐ', next: null },
+ u: { value: 'ⷑ', next: null },
+ U: { value: 'ⷑ', next: null },
+ i: { value: 'ⷒ', next: { e: { value: 'ⷔ', next: null }, E: { value: 'ⷔ', next: null } } },
+ I: { value: 'ⷒ', next: { e: { value: 'ⷔ', next: null }, E: { value: 'ⷔ', next: null } } },
+ a: { value: 'ⷓ', next: null },
+ A: { value: 'ⷓ', next: null },
+ o: { value: 'ⷖ', next: null },
+ O: { value: 'ⷖ', next: null },
+ },
+ },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ O: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ O: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ O: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ Z: {
+ value: 'ⶵ',
+ next: {
+ e: { value: 'ⶰ', next: null },
+ E: { value: 'ⶰ', next: null },
+ u: { value: 'ⶱ', next: null },
+ U: { value: 'ⶱ', next: null },
+ i: { value: 'ⶲ', next: { e: { value: 'ⶴ', next: null }, E: { value: 'ⶴ', next: null } } },
+ I: { value: 'ⶲ', next: { e: { value: 'ⶴ', next: null }, E: { value: 'ⶴ', next: null } } },
+ a: { value: 'ⶳ', next: null },
+ A: { value: 'ⶳ', next: null },
+ o: { value: 'ⶶ', next: null },
+ O: { value: 'ⶶ', next: null },
+ },
+ },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ O: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ O: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: { a: { value: 'ⶌ', next: null }, A: { value: 'ⶌ', next: null } } },
+ O: { value: 'ዶ', next: { a: { value: 'ⶌ', next: null }, A: { value: 'ⶌ', next: null } } },
+ },
+ },
+ D: {
+ value: 'ዽ',
+ next: {
+ e: { value: 'ዸ', next: null },
+ E: { value: 'ዸ', next: null },
+ u: { value: 'ዹ', next: { a: { value: 'ዿ', next: null }, A: { value: 'ዿ', next: null } } },
+ U: { value: 'ዹ', next: { a: { value: 'ዿ', next: null }, A: { value: 'ዿ', next: null } } },
+ i: { value: 'ዺ', next: { e: { value: 'ዼ', next: null }, E: { value: 'ዼ', next: null } } },
+ I: { value: 'ዺ', next: { e: { value: 'ዼ', next: null }, E: { value: 'ዼ', next: null } } },
+ a: { value: 'ዻ', next: null },
+ A: { value: 'ዻ', next: null },
+ o: { value: 'ዾ', next: { a: { value: 'ⶍ', next: null }, A: { value: 'ⶍ', next: null } } },
+ O: { value: 'ዾ', next: { a: { value: 'ⶍ', next: null }, A: { value: 'ⶍ', next: null } } },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ O: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ O: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ O: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ Y: {
+ value: 'ⷝ',
+ next: {
+ e: { value: 'ⷘ', next: null },
+ E: { value: 'ⷘ', next: null },
+ u: { value: 'ⷙ', next: null },
+ U: { value: 'ⷙ', next: null },
+ i: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ I: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ a: { value: 'ⷛ', next: null },
+ A: { value: 'ⷛ', next: null },
+ o: { value: 'ⷞ', next: null },
+ O: { value: 'ⷞ', next: null },
+ },
+ },
+ },
+ },
+ G: {
+ value: 'ጝ',
+ next: {
+ e: { value: 'ጘ', next: null },
+ E: { value: 'ጘ', next: null },
+ u: {
+ value: 'ጙ',
+ next: {
+ e: { value: 'ⶓ', next: null },
+ E: { value: 'ⶓ', next: null },
+ u: { value: 'ⶖ', next: null },
+ U: { value: 'ⶖ', next: null },
+ i: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ I: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ a: { value: 'ጟ', next: null },
+ A: { value: 'ጟ', next: null },
+ },
+ },
+ U: {
+ value: 'ጙ',
+ next: {
+ e: { value: 'ⶓ', next: null },
+ E: { value: 'ⶓ', next: null },
+ u: { value: 'ⶖ', next: null },
+ U: { value: 'ⶖ', next: null },
+ i: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ I: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ a: { value: 'ጟ', next: null },
+ A: { value: 'ጟ', next: null },
+ },
+ },
+ i: { value: 'ጚ', next: { e: { value: 'ጜ', next: null }, E: { value: 'ጜ', next: null } } },
+ I: { value: 'ጚ', next: { e: { value: 'ጜ', next: null }, E: { value: 'ጜ', next: null } } },
+ a: { value: 'ጛ', next: null },
+ A: { value: 'ጛ', next: null },
+ o: { value: 'ጞ', next: null },
+ O: { value: 'ጞ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: { a: { value: 'ⶏ', next: null }, A: { value: 'ⶏ', next: null } } },
+ O: { value: 'ጦ', next: { a: { value: 'ⶏ', next: null }, A: { value: 'ⶏ', next: null } } },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: { a: { value: 'ⶐ', next: null }, A: { value: 'ⶐ', next: null } } },
+ O: { value: 'ጮ', next: { a: { value: 'ⶐ', next: null }, A: { value: 'ⶐ', next: null } } },
+ C: {
+ value: 'ⶽ',
+ next: {
+ e: { value: 'ⶸ', next: null },
+ E: { value: 'ⶸ', next: null },
+ u: { value: 'ⶹ', next: null },
+ U: { value: 'ⶹ', next: null },
+ i: { value: 'ⶺ', next: { e: { value: 'ⶼ', next: null }, E: { value: 'ⶼ', next: null } } },
+ I: { value: 'ⶺ', next: { e: { value: 'ⶼ', next: null }, E: { value: 'ⶼ', next: null } } },
+ a: { value: 'ⶻ', next: null },
+ A: { value: 'ⶻ', next: null },
+ o: { value: 'ⶾ', next: null },
+ O: { value: 'ⶾ', next: null },
+ },
+ },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: { a: { value: 'ⶑ', next: null }, A: { value: 'ⶑ', next: null } } },
+ O: { value: 'ጶ', next: { a: { value: 'ⶑ', next: null }, A: { value: 'ⶑ', next: null } } },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: { a: { value: 'ፇ', next: null }, A: { value: 'ፇ', next: null } } },
+ O: { value: 'ፆ', next: { a: { value: 'ፇ', next: null }, A: { value: 'ፇ', next: null } } },
+ },
+ },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ U: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ Y: { value: 'ፚ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ U: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ Y: { value: 'ፚ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: {
+ value: 'ፑ',
+ next: {
+ e: { value: 'ᎌ', next: null },
+ E: { value: 'ᎌ', next: null },
+ u: { value: 'ᎍ', next: null },
+ U: { value: 'ᎍ', next: null },
+ i: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ I: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ a: { value: 'ፗ', next: null },
+ A: { value: 'ፗ', next: null },
+ },
+ },
+ U: {
+ value: 'ፑ',
+ next: {
+ e: { value: 'ᎌ', next: null },
+ E: { value: 'ᎌ', next: null },
+ u: { value: 'ᎍ', next: null },
+ U: { value: 'ᎍ', next: null },
+ i: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ I: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ a: { value: 'ፗ', next: null },
+ A: { value: 'ፗ', next: null },
+ },
+ },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: { a: { value: 'ⶒ', next: null }, A: { value: 'ⶒ', next: null } } },
+ O: { value: 'ፖ', next: { a: { value: 'ⶒ', next: null }, A: { value: 'ⶒ', next: null } } },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/am-ET.ts b/packages/ethiopic-layouts/src/am-ET.ts
new file mode 100644
index 0000000..10e96ac
--- /dev/null
+++ b/packages/ethiopic-layouts/src/am-ET.ts
@@ -0,0 +1,907 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Amharic', regions: ['am-ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ h: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: null },
+ O: { value: 'ኆ', next: null },
+ },
+ },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ V: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: {
+ value: 'እ',
+ next: {
+ e: { value: '', next: { e: { value: 'ኧ', next: null }, E: { value: 'ኧ', next: null } } },
+ E: { value: '', next: { e: { value: 'ኧ', next: null }, E: { value: 'ኧ', next: null } } },
+ },
+ },
+ E: {
+ value: 'እ',
+ next: {
+ e: { value: '', next: { e: { value: 'ኧ', next: null }, E: { value: 'ኧ', next: null } } },
+ E: { value: '', next: { e: { value: 'ኧ', next: null }, E: { value: 'ኧ', next: null } } },
+ },
+ },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: { value: 'ኹ', next: null },
+ U: { value: 'ኹ', next: null },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: null },
+ O: { value: 'ፆ', next: null },
+ },
+ },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ U: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/awn-ET_byn-ER_xan-ET.ts b/packages/ethiopic-layouts/src/awn-ET_byn-ER_xan-ET.ts
new file mode 100644
index 0000000..bd4f46d
--- /dev/null
+++ b/packages/ethiopic-layouts/src/awn-ET_byn-ER_xan-ET.ts
@@ -0,0 +1,829 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Awngi, Blin, Xamtanga', regions: ['awn-ET', 'byn-ER', 'xan-ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቕ',
+ next: {
+ e: { value: 'ቐ', next: null },
+ E: { value: 'ቐ', next: null },
+ u: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ U: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ i: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ I: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ a: { value: 'ቓ', next: null },
+ A: { value: 'ቓ', next: null },
+ o: { value: 'ቖ', next: null },
+ O: { value: 'ቖ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ U: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ጝ',
+ next: {
+ e: { value: 'ጘ', next: null },
+ E: { value: 'ጘ', next: null },
+ u: {
+ value: 'ጙ',
+ next: {
+ e: { value: 'ⶓ', next: null },
+ E: { value: 'ⶓ', next: null },
+ u: { value: 'ⶖ', next: null },
+ U: { value: 'ⶖ', next: null },
+ i: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ I: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ a: { value: 'ጟ', next: null },
+ A: { value: 'ጟ', next: null },
+ },
+ },
+ U: {
+ value: 'ጙ',
+ next: {
+ e: { value: 'ⶓ', next: null },
+ E: { value: 'ⶓ', next: null },
+ u: { value: 'ⶖ', next: null },
+ U: { value: 'ⶖ', next: null },
+ i: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ I: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ a: { value: 'ጟ', next: null },
+ A: { value: 'ጟ', next: null },
+ },
+ },
+ i: { value: 'ጚ', next: { e: { value: 'ጜ', next: null }, E: { value: 'ጜ', next: null } } },
+ I: { value: 'ጚ', next: { e: { value: 'ጜ', next: null }, E: { value: 'ጜ', next: null } } },
+ a: { value: 'ጛ', next: null },
+ A: { value: 'ጛ', next: null },
+ o: { value: 'ጞ', next: null },
+ O: { value: 'ጞ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ U: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ V: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/bcq-ET.ts b/packages/ethiopic-layouts/src/bcq-ET.ts
new file mode 100644
index 0000000..21a5e19
--- /dev/null
+++ b/packages/ethiopic-layouts/src/bcq-ET.ts
@@ -0,0 +1,649 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Bench', regions: ['bcq-ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ u: { value: 'ሑ', next: null },
+ U: { value: 'ሑ', next: null },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ u: { value: 'ሱ', next: null },
+ U: { value: 'ሱ', next: null },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ x: {
+ value: 'ⶥ',
+ next: {
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ X: {
+ value: 'ⶥ',
+ next: {
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ x: {
+ value: 'ⶥ',
+ next: {
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ X: {
+ value: 'ⶥ',
+ next: {
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ v: {
+ value: 'ብ',
+ next: {
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ V: {
+ value: 'ብ',
+ next: {
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ u: { value: 'ቱ', next: null },
+ U: { value: 'ቱ', next: null },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ u: { value: 'ቹ', next: null },
+ U: { value: 'ቹ', next: null },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ c: {
+ value: 'ⶭ',
+ next: {
+ u: { value: 'ⶩ', next: null },
+ U: { value: 'ⶩ', next: null },
+ i: { value: 'ⶪ', next: { e: { value: 'ⶬ', next: null }, E: { value: 'ⶬ', next: null } } },
+ I: { value: 'ⶪ', next: { e: { value: 'ⶬ', next: null }, E: { value: 'ⶬ', next: null } } },
+ a: { value: 'ⶫ', next: null },
+ A: { value: 'ⶫ', next: null },
+ o: { value: 'ⶮ', next: null },
+ O: { value: 'ⶮ', next: null },
+ },
+ },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ u: { value: 'ኑ', next: null },
+ U: { value: 'ኑ', next: null },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ን',
+ next: {
+ u: { value: 'ኑ', next: null },
+ U: { value: 'ኑ', next: null },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ u: { value: 'ኩ', next: null },
+ U: { value: 'ኩ', next: null },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ክ',
+ next: {
+ u: { value: 'ኩ', next: null },
+ U: { value: 'ኩ', next: null },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ u: { value: 'ዙ', next: null },
+ U: { value: 'ዙ', next: null },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ u: { value: 'ዡ', next: null },
+ U: { value: 'ዡ', next: null },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ Z: {
+ value: 'ⶵ',
+ next: {
+ u: { value: 'ⶱ', next: null },
+ U: { value: 'ⶱ', next: null },
+ i: { value: 'ⶲ', next: { e: { value: 'ⶴ', next: null }, E: { value: 'ⶴ', next: null } } },
+ I: { value: 'ⶲ', next: { e: { value: 'ⶴ', next: null }, E: { value: 'ⶴ', next: null } } },
+ a: { value: 'ⶳ', next: null },
+ A: { value: 'ⶳ', next: null },
+ o: { value: 'ⶶ', next: null },
+ O: { value: 'ⶶ', next: null },
+ },
+ },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ u: { value: 'ጡ', next: null },
+ U: { value: 'ጡ', next: null },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ u: { value: 'ጩ', next: null },
+ U: { value: 'ጩ', next: null },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ C: {
+ value: 'ⶽ',
+ next: {
+ u: { value: 'ⶹ', next: null },
+ U: { value: 'ⶹ', next: null },
+ i: { value: 'ⶺ', next: { e: { value: 'ⶼ', next: null }, E: { value: 'ⶼ', next: null } } },
+ I: { value: 'ⶺ', next: { e: { value: 'ⶼ', next: null }, E: { value: 'ⶼ', next: null } } },
+ a: { value: 'ⶻ', next: null },
+ A: { value: 'ⶻ', next: null },
+ o: { value: 'ⶾ', next: null },
+ O: { value: 'ⶾ', next: null },
+ },
+ },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ u: { value: 'ጱ', next: null },
+ U: { value: 'ጱ', next: null },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ u: { value: 'ጹ', next: null },
+ U: { value: 'ጹ', next: null },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ u: { value: 'ፑ', next: null },
+ U: { value: 'ፑ', next: null },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/csv/ET.csv b/packages/ethiopic-layouts/src/csv/ET.csv
new file mode 100644
index 0000000..6023715
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/ET.csv
@@ -0,0 +1,54 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE],+Y
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ,ሇ,ኈ,ኍ,ኊ,ኋ,ኌ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ,ⶀ, , , ,ሏ, ,
+H,ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , ,ሗ, ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ,ⶁ,ᎀ,ᎃ,ᎁ,ሟ,ᎂ,ፙ
+ss,ሠ,ሡ,ሢ,ሣ,ሤ,ሥ,ሦ, , , , ,ሧ, ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ,ⶂ, , , ,ሯ, ,ፘ
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ,ⶃ, , , ,ሷ, ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ,ⶄ, , , ,ሿ, ,
+[xX][xX],ⶠ,ⶡ,ⶢ,ⶣ,ⶤ,ⶥ,ⶦ, , , , , , ,
+q,ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ,ቇ,ቈ,ቍ,ቊ,ቋ,ቌ,
+Q,ቐ,ቑ,ቒ,ቓ,ቔ,ቕ,ቖ, ,ቘ,ቝ,ቚ,ቛ,ቜ,
+qY,ⷀ,ⷁ,ⷂ,ⷃ,ⷄ,ⷅ,ⷆ, , , , , , ,
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ,ⶅ,ᎄ,ᎇ,ᎅ,ቧ,ᎆ,
+[vV],ቨ,ቩ,ቪ,ቫ,ቬ,ቭ,ቮ, , , , ,ቯ, ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ,ⶆ, , , ,ቷ, ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ,ⶇ, , , ,ቿ, ,
+cc,ⶨ,ⶩ,ⶪ,ⶫ,ⶬ,ⶭ,ⶮ, , , , , , ,
+hh,ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ,ኇ,ኈ,ኍ,ኊ,ኋ,ኌ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ,ⶈ, , , ,ኗ, ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ,ⶉ, , , ,ኟ, ,
+a,አ,ኡ,ኢ,ኣ,ኤ,እ,ኦ,ⶊ, , , , , ,
+[kK],ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ,ኯ,ኰ,ኵ,ኲ,ኳ,ኴ,
+kY,ⷈ,ⷉ,ⷊ,ⷋ,ⷌ,ⷍ,ⷎ, , , , , , ,
+KY,ⷐ,ⷑ,ⷒ,ⷓ,ⷔ,ⷕ,ⷖ, , , , , , ,
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ,ዏ, , , , , ,
+A,ዕ,ዑ,ዒ,ዓ,ዔ,ዐ,ዖ, , , , , , ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ,ⶋ, , , ,ዟ, ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , ,ዧ, ,
+ZZ,ⶰ,ⶱ,ⶲ,ⶳ,ⶴ,ⶵ,ⶶ, , , , , , ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ,ዯ, , , , , ,
+d,ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ,ⶌ, , , ,ዷ, ,
+D,ዸ,ዹ,ዺ,ዻ,ዼ,ዽ,ዾ,ⶍ, , , ,ዿ, ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ,ⶎ, , , ,ጇ, ,
+g,ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ,ጏ,ጐ,ጕ,ጒ,ጓ,ጔ,
+G,ጘ,ጙ,ጚ,ጛ,ጜ,ጝ,ጞ, ,ⶓ,ⶖ,ⶔ,ጟ,ⶕ,
+gY,ⷘ,ⷙ,ⷚ,ⷛ,ⷜ,ⷝ,ⷞ, , , , , , ,
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ,ⶏ, , , ,ጧ, ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ,ⶐ, , , ,ጯ, ,
+CC,ⶸ,ⶹ,ⶺ,ⶻ,ⶼ,ⶽ,ⶾ, , , , , , ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ,ⶑ, , , ,ጷ, ,
+S,ጸ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , ,ጿ, ,
+SS,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ,ፇ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, ,ᎈ,ᎉ,ᎋ,ፏ,ᎊ,ፚ
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ,ⶒ,ᎌ,ᎍ,ᎏ,ፗ,ᎎ,
+ae,ኧ, ,,,,,,,,,,,,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
+E,,,,,,ዕ,,,,,,,
+I,ዔ,,,,,ዒ,,,,,,,
+O,,,,,,ዖ,,,,,,,
+U,,,,,,ዑ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/am-ET.csv b/packages/ethiopic-layouts/src/csv/am-ET.csv
new file mode 100644
index 0000000..0031b71
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/am-ET.csv
@@ -0,0 +1,44 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , ,ሏ,
+H,ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , ,ሗ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , ,ሟ,
+ss,ሠ,ሡ,ሢ,ሣ,ሤ,ሥ,ሦ, , , , ,ሧ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , ,ሯ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , ,ሷ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , ,ሿ,
+[qQ],ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, ,ቈ,ቍ,ቊ,ቋ,ቌ
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , ,ቧ,
+[vV],ቨ,ቩ,ቪ,ቫ,ቬ,ቭ,ቮ, , , , ,ቯ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , ,ቷ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , ,ቿ,
+hh,ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , ,ኗ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , ,ኟ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+k,ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, ,ኰ,ኵ,ኲ,ኳ,ኴ
+K,ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, , , , , ,
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+A,ዕ,ዑ,ዒ,ዓ,ዔ,ዐ,ዖ, , , , , ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , ,ዟ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , ,ዧ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , ,ዷ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , ,ጇ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, ,ጐ,ጕ,ጒ,ጓ,ጔ
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , ,ጧ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , ,ጯ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , ,ጷ,
+S,ጸ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , ,ጿ,
+SS,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , ,ፏ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , ,ፗ,
+a[eE][eE],ኧ, ,,,,,,,,,,,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
+E,,,,,,ዕ,,,,,,,
+I,ዔ,,,,,ዒ,,,,,,,
+O,,,,,,ዖ,,,,,,,
+U,,,,,,ዑ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/awn-ET_byn-ER_xan-ET.csv b/packages/ethiopic-layouts/src/csv/awn-ET_byn-ER_xan-ET.csv
new file mode 100644
index 0000000..fe4d832
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/awn-ET_byn-ER_xan-ET.csv
@@ -0,0 +1,42 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, , , , , ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , ,ሏ,
+H,ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , ,ሗ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , ,ሟ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , ,ሷ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , ,ሯ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , ,ሿ,
+q,ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, ,ቈ,ቍ,ቊ,ቋ,ቌ
+Q,ቐ,ቑ,ቒ,ቓ,ቔ,ቕ,ቖ, ,ቘ,ቝ,ቚ,ቛ,ቜ
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , ,ቧ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , ,ቷ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , ,ኗ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+k,ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, ,ኰ,ኵ,ኲ,ኳ,ኴ
+K,ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, ,ዀ,ዅ,ዂ,ዃ,ዄ
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+A,ዕ,ዑ,ዒ,ዓ,ዔ,ዐ,ዖ, , , , , ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , ,ዷ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , ,ጇ,
+g,ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, ,ጐ,ጕ,ጒ,ጓ,ጔ
+G,ጘ,ጙ,ጚ,ጛ,ጜ,ጝ,ጞ, ,ⶓ,ⶖ,ⶔ,ጟ,ⶕ
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , ,ጧ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , ,ጯ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , ,ፏ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , ,ቿ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , ,ኟ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , ,ዟ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , ,ዧ,
+S,ጸ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , ,ጿ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , ,ጷ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , ,ፗ,
+[vV],ቨ,ቩ,ቪ,ቫ,ቬ,ቭ,ቮ, , , , ,ቯ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
+E,,,,,,ዕ,,,,,,,
+I,ዔ,,,,,ዒ,,,,,,,
+O,,,,,,ዖ,,,,,,,
+U,,,,,,ዑ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/bcq-ET.csv b/packages/ethiopic-layouts/src/csv/bcq-ET.csv
new file mode 100644
index 0000000..40a1ee0
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/bcq-ET.csv
@@ -0,0 +1,36 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, , , , , ,
+[lL], ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , , ,
+H, ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , , ,
+[mM], ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , , ,
+ss, ,ሡ,ሢ,ሣ,ሤ,ሥ,ሦ, , , , , ,
+[rR], ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , , ,
+s, ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , , ,
+[xX], ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , , ,
+[xX][xX], ,ⶡ,ⶢ,ⶣ,ⶤ,ⶥ,ⶦ, , , , , ,
+[qQ], ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, , , , , ,
+[bBvV], ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , , ,
+t, ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , , ,
+c, ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , , ,
+cc, ,ⶩ,ⶪ,ⶫ,ⶬ,ⶭ,ⶮ, , , , , ,
+[nN], ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , , ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+[kK], ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, , , , , ,
+[wW], ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+z, ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , , ,
+Z, ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , , ,
+ZZ, ,ⶱ,ⶲ,ⶳ,ⶴ,ⶵ,ⶶ, , , , , ,
+[yY], ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD], ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , , ,
+[jJ], ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , , ,
+[gG], ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, , , , , ,
+T, ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , , ,
+C, ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , , ,
+CC, ,ⶹ,ⶺ,ⶻ,ⶼ,ⶽ,ⶾ, , , , , ,
+P, ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , , ,
+S, ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , , ,
+p, ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , , ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/gez-ET_gez-ER.csv b/packages/ethiopic-layouts/src/csv/gez-ET_gez-ER.csv
new file mode 100644
index 0000000..2af7c14
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/gez-ET_gez-ER.csv
@@ -0,0 +1,37 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , ,ሏ,
+H,ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , ,ሗ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , ,ሟ,
+ss,ሠ,ሡ,ሢ,ሣ,ሤ,ሥ,ሦ, , , , ,ሧ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , ,ሯ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , ,ሷ,
+[qQ],ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, ,ቈ,ቍ,ቊ,ቋ,ቌ
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , ,ቧ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , ,ቷ,
+[xX],ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+hh,ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+[nN],ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , ,ኗ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+[kK],ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, ,ኰ,ኵ,ኲ,ኳ,ኴ
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+A,ዕ,ዑ,ዒ,ዓ,ዔ,ዐ,ዖ, , , , , ,
+[zZ],ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , ,ዟ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+d,ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , ,ዷ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, ,ጐ,ጕ,ጒ,ጓ,ጔ
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , ,ጧ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , ,ጷ,
+S,ጸ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , ,ጿ,
+D,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ, , , , , ,
+SS,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , ,ፏ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , ,ፗ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
+E,,,,,,ዕ,,,,,,,
+I,ዔ,,,,,ዒ,,,,,,,
+O,,,,,,ዖ,,,,,,,
+U,,,,,,ዑ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/har-ET.csv b/packages/ethiopic-layouts/src/csv/har-ET.csv
new file mode 100644
index 0000000..7de98ce
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/har-ET.csv
@@ -0,0 +1,29 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+[hH],ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , , ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , , ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , , ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , , ,
+[sS],ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , , ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , , ,
+[qQ],ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, , , , , ,
+[bBvVpP],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , , ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , , ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , , ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , , ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , , ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+k,ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, , , , , ,
+K,ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, , , , , ,
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+[zZ],ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , , ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , , ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , , ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, , , , , ,
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , , ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , , ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/mym-ET_muz-ET_suq-ET_mdx-ET.csv b/packages/ethiopic-layouts/src/csv/mym-ET_muz-ET_suq-ET_mdx-ET.csv
new file mode 100644
index 0000000..47542fa
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/mym-ET_muz-ET_suq-ET_mdx-ET.csv
@@ -0,0 +1,34 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+[hH],ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ,ሇ, , , , ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ,ⶀ, , , , ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ,ⶁ, , , , ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ,ⶂ, , , , ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ,ⶃ, , , , ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ,ⶄ, , , , ,
+[qQ],ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ,ቇ, , , , ,
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ,ⶅ, , , , ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ,ⶆ, , , , ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ,ⶇ, , , , ,
+[fF],ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ,ኇ, , , , ,
+hh,ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ,ኇ, , , , ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ,ⶈ, , , , ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ,ⶉ, , , , ,
+a,አ,ኡ,ኢ,ኣ,ኤ,እ,ኦ,ⶊ, , , , ,
+[kK],ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ,ኯ, , , , ,
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ,ዏ, , , , ,
+[zZ],ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ,ⶋ, , , , ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ,ዯ, , , , ,
+d,ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ,ⶌ, , , , ,
+D,ዸ,ዹ,ዺ,ዻ,ዼ,ዽ,ዾ,ⶍ, , , , ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ,ⶎ, , , , ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ,ጏ, , , , ,
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ,ⶏ, , , , ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ,ⶐ, , , , ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ,ⶑ, , , , ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ,ⶒ, , , , ,
+S,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ,ፇ, , , , ,
+ee, , , , , ,ዕ, , , , , , ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/punctuation.csv b/packages/ethiopic-layouts/src/csv/punctuation.csv
new file mode 100644
index 0000000..0ce79b8
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/punctuation.csv
@@ -0,0 +1,6 @@
+KEY,_,:,",",",,",;,-,::,<,<<,>,>>
+:,፡,።,፥,,,፦,:,,,,
+",",፣,,፥,",",,,,,,,
+;,፤,,,,;,,,,,,
+<,‹,,,,,,,«,<,,
+>,›,,,,,,,,,»,>
diff --git a/packages/ethiopic-layouts/src/csv/sgw-ET.csv b/packages/ethiopic-layouts/src/csv/sgw-ET.csv
new file mode 100644
index 0000000..c109cd8
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/sgw-ET.csv
@@ -0,0 +1,36 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+[hH],ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, ,ዀ,ዅ,ዂ,ዃ,ዄ
+KY,ⷐ,ⷑ,ⷒ,ⷓ,ⷔ,ⷕ,ⷖ, , , , , ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , ,ሏ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, ,ᎀ,ᎃ,ᎁ,ሟ,ᎂ
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , ,ሯ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , ,ሷ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , ,ሿ,
+[qQ],ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, ,ቈ,ቍ,ቊ,ቋ,ቌ
+[qQ]Y,ⷀ,ⷁ,ⷂ,ⷃ,ⷄ,ⷅ,ⷆ, , , , , ,
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, ,ᎄ,ᎇ,ᎅ,ቧ,ᎆ
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , ,ቷ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , ,ቿ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , ,ኗ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , ,ኟ,
+a,ኧ,ኡ,ኢ,አ,ኤ,እ,ኦ, , , , , ,
+[kK],ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, ,ኰ,ኵ,ኲ,ኳ,ኴ
+kY,ⷈ,ⷉ,ⷊ,ⷋ,ⷌ,ⷍ,ⷎ, , , , , ,
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , ,ዟ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , ,ዧ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , ,ዷ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , ,ጇ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, ,ጐ,ጕ,ጒ,ጓ,ጔ
+[gG]Y,ⷘ,ⷙ,ⷚ,ⷛ,ⷜ,ⷝ,ⷞ, , , , , ,
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , ,ጧ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , ,ጯ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , ,ጷ,
+S,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, ,ᎈ,ᎉ,ᎋ,ፏ,ᎊ
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, ,ᎌ,ᎍ,ᎏ,ፗ,ᎎ
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/ti-ER.csv b/packages/ethiopic-layouts/src/csv/ti-ER.csv
new file mode 100644
index 0000000..ffd3346
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/ti-ER.csv
@@ -0,0 +1,41 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, , , , , ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , ,ሏ,
+H,ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , ,ሗ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , ,ሟ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , ,ሯ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , ,ሷ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , ,ሿ,
+q,ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, ,ቈ,ቍ,ቊ,ቋ,ቌ
+Q,ቐ,ቑ,ቒ,ቓ,ቔ,ቕ,ቖ, ,ቘ,ቝ,ቚ,ቛ,ቜ
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , ,ቧ,
+[vV],ቨ,ቩ,ቪ,ቫ,ቬ,ቭ,ቮ, , , , ,ቯ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , ,ቷ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , ,ቿ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , ,ኗ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , ,ኟ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+k,ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, ,ኰ,ኵ,ኲ,ኳ,ኴ
+K,ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, ,ዀ,ዅ,ዂ,ዃ,ዄ
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+A,ዕ,ዑ,ዒ,ዓ,ዔ,ዐ,ዖ, , , , , ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , ,ዟ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , ,ዧ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , ,ዷ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , ,ጇ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, ,ጐ,ጕ,ጒ,ጓ,ጔ
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , ,ጧ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , ,ጯ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , ,ጷ,
+S,ጸ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , ,ጿ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , ,ፏ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , ,ፗ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
+E,,,,,,ዕ,,,,,,,
+I,ዔ,,,,,ዒ,,,,,,,
+O,,,,,,ዖ,,,,,,,
+U,,,,,,ዑ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/ti-ET.csv b/packages/ethiopic-layouts/src/csv/ti-ET.csv
new file mode 100644
index 0000000..10b5ce9
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/ti-ET.csv
@@ -0,0 +1,44 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+h,ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , ,ሏ,
+H,ሐ,ሑ,ሒ,ሓ,ሔ,ሕ,ሖ, , , , ,ሗ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , ,ሟ,
+ss,ሠ,ሡ,ሢ,ሣ,ሤ,ሥ,ሦ, , , , ,ሧ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , ,ሯ,
+s,ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , ,ሷ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , ,ሿ,
+q,ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, ,ቈ,ቍ,ቊ,ቋ,ቌ
+Q,ቐ,ቑ,ቒ,ቓ,ቔ,ቕ,ቖ, ,ቘ,ቝ,ቚ,ቛ,ቜ
+[bB],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , ,ቧ,
+[vV],ቨ,ቩ,ቪ,ቫ,ቬ,ቭ,ቮ, , , , ,ቯ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , ,ቷ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , ,ቿ,
+hh,ኀ,ኁ,ኂ,ኃ,ኄ,ኅ,ኆ, ,ኈ,ኍ,ኊ,ኋ,ኌ
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , ,ኗ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , ,ኟ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+k,ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, ,ኰ,ኵ,ኲ,ኳ,ኴ
+K,ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, ,ዀ,ዅ,ዂ,ዃ,ዄ
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+A,ዕ,ዑ,ዒ,ዓ,ዔ,ዐ,ዖ, , , , , ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , ,ዟ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , ,ዧ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , ,ዷ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , ,ጇ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, ,ጐ,ጕ,ጒ,ጓ,ጔ
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , ,ጧ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , ,ጯ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , ,ጷ,
+S,ጸ,ጹ,ጺ,ጻ,ጼ,ጽ,ጾ, , , , ,ጿ,
+SS,ፀ,ፁ,ፂ,ፃ,ፄ,ፅ,ፆ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , ,ፏ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , ,ፗ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
+E,,,,,,ዕ,,,,,,,
+I,ዔ,,,,,ዒ,,,,,,,
+O,,,,,,ዖ,,,,,,,
+U,,,,,,ዑ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/csv/xst-ET.csv b/packages/ethiopic-layouts/src/csv/xst-ET.csv
new file mode 100644
index 0000000..f5234bd
--- /dev/null
+++ b/packages/ethiopic-layouts/src/csv/xst-ET.csv
@@ -0,0 +1,32 @@
+KEY,+[eE],+[uU],+[iI],+[aA],+[iI][eE],_,+[oO],+[oO][aA],+[uU][eE],+[uU][uU],+[uU][iI],+[uU][aA],+[uU][iI][eE]
+[hH],ሀ,ሁ,ሂ,ሃ,ሄ,ህ,ሆ, , , , , ,
+[lL],ለ,ሉ,ሊ,ላ,ሌ,ል,ሎ, , , , , ,
+[mM],መ,ሙ,ሚ,ማ,ሜ,ም,ሞ, , , , , ,
+[rR],ረ,ሩ,ሪ,ራ,ሬ,ር,ሮ, , , , , ,
+[sS],ሰ,ሱ,ሲ,ሳ,ሴ,ስ,ሶ, , , , , ,
+[xX],ሸ,ሹ,ሺ,ሻ,ሼ,ሽ,ሾ, , , , , ,
+[qQ],ቀ,ቁ,ቂ,ቃ,ቄ,ቅ,ቆ, , , , , ,
+[bBvV],በ,ቡ,ቢ,ባ,ቤ,ብ,ቦ, , , , , ,
+t,ተ,ቱ,ቲ,ታ,ቴ,ት,ቶ, , , , , ,
+c,ቸ,ቹ,ቺ,ቻ,ቼ,ች,ቾ, , , , , ,
+n,ነ,ኑ,ኒ,ና,ኔ,ን,ኖ, , , , , ,
+N,ኘ,ኙ,ኚ,ኛ,ኜ,ኝ,ኞ, , , , , ,
+a,እ,ኡ,ኢ,ኣ,ኤ,አ,ኦ, , , , , ,
+k,ከ,ኩ,ኪ,ካ,ኬ,ክ,ኮ, , , , , ,
+K,ኸ,ኹ,ኺ,ኻ,ኼ,ኽ,ኾ, , , , , ,
+[wW],ወ,ዉ,ዊ,ዋ,ዌ,ው,ዎ, , , , , ,
+z,ዘ,ዙ,ዚ,ዛ,ዜ,ዝ,ዞ, , , , , ,
+Z,ዠ,ዡ,ዢ,ዣ,ዤ,ዥ,ዦ, , , , , ,
+[yY],የ,ዩ,ዪ,ያ,ዬ,ይ,ዮ, , , , , ,
+[dD],ደ,ዱ,ዲ,ዳ,ዴ,ድ,ዶ, , , , , ,
+[jJ],ጀ,ጁ,ጂ,ጃ,ጄ,ጅ,ጆ, , , , , ,
+[gG],ገ,ጉ,ጊ,ጋ,ጌ,ግ,ጎ, , , , , ,
+T,ጠ,ጡ,ጢ,ጣ,ጤ,ጥ,ጦ, , , , , ,
+C,ጨ,ጩ,ጪ,ጫ,ጬ,ጭ,ጮ, , , , , ,
+P,ጰ,ጱ,ጲ,ጳ,ጴ,ጵ,ጶ, , , , , ,
+[fF],ፈ,ፉ,ፊ,ፋ,ፌ,ፍ,ፎ, , , , , ,
+p,ፐ,ፑ,ፒ,ፓ,ፔ,ፕ,ፖ, , , , , ,
+e,,,,,,እ,,,,,,,
+i,ኤ,,,,,ኢ,,,,,,,
+o,,,,,,ኦ,,,,,,,
+u,,,,,,ኡ,,,,,,,
diff --git a/packages/ethiopic-layouts/src/generate-from-csv.ts b/packages/ethiopic-layouts/src/generate-from-csv.ts
new file mode 100644
index 0000000..d6c1ad3
--- /dev/null
+++ b/packages/ethiopic-layouts/src/generate-from-csv.ts
@@ -0,0 +1,52 @@
+import { generateMapForRow } from '@keywrite/layout-generator';
+import csvParser from 'csv-parser';
+import fs from 'fs';
+import layouts from './layouts';
+const punctuation = {};
+fs.createReadStream(`${__dirname}/csv/punctuation.csv`)
+ .pipe(csvParser())
+ .on('data', (row) => {
+ generateMapForRow(punctuation, row);
+ })
+ .on('end', () => {
+ console.log('layout successfully generated for punctuation');
+ });
+for (const [code, { name, path }] of Object.entries(layouts)) {
+ const layout = {};
+ fs.createReadStream(`${__dirname}/csv/${path}.csv`)
+ .pipe(csvParser())
+ .on('data', (row) => {
+ generateMapForRow(layout, row);
+ })
+ .on('end', () => {
+ console.log(`layout successfully generated for ${name}`);
+ const meta = {
+ name,
+ regions: code.split('_'),
+ };
+
+ fs.writeFileSync(
+ `${__dirname}/${code}.ts`,
+ `import { KeyboardLayout } from '@keywrite/core';
+ type LayoutMeta = {name: string; regions: string[];};
+ type LayoutSpec = { meta:LayoutMeta; layout: KeyboardLayout; };
+ const layout : LayoutSpec = ${JSON.stringify({ meta, layout: { ...layout, ...punctuation } })};
+ export default layout;
+ `,
+ );
+ });
+}
+// write index indexFile
+// const layoutMap:Record = {}
+let index = `
+import { KeyboardLayout } from '@keywrite/core';
+const layouts:Record = {};`;
+for (const { path, name } of Object.values(layouts)) {
+ const layout = name.replace(/[^a-zA-Z]/g, '');
+ index += `
+ import ${layout} from './${path}';
+ layouts[${layout}.meta.name] = ${layout}.layout;
+ `;
+}
+index += `export default layouts;`;
+fs.writeFileSync(`${__dirname}/index.ts`, index);
diff --git a/packages/ethiopic-layouts/src/gez-ET_gez-ER.ts b/packages/ethiopic-layouts/src/gez-ET_gez-ER.ts
new file mode 100644
index 0000000..062b2c8
--- /dev/null
+++ b/packages/ethiopic-layouts/src/gez-ET_gez-ER.ts
@@ -0,0 +1,877 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: "Ge'ez", regions: ['gez-ET', 'gez-ER'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ h: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: null },
+ O: { value: 'ኆ', next: null },
+ },
+ },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ x: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: null },
+ O: { value: 'ኆ', next: null },
+ },
+ },
+ X: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: null },
+ O: { value: 'ኆ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: null },
+ O: { value: 'ፆ', next: null },
+ },
+ },
+ },
+ },
+ D: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: null },
+ O: { value: 'ፆ', next: null },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ U: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/har-ET.ts b/packages/ethiopic-layouts/src/har-ET.ts
new file mode 100644
index 0000000..53caf8c
--- /dev/null
+++ b/packages/ethiopic-layouts/src/har-ET.ts
@@ -0,0 +1,666 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Harari', regions: ['har-ET'] },
+ layout: {
+ h: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: null },
+ U: { value: 'ሑ', next: null },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: null },
+ U: { value: 'ሑ', next: null },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: null },
+ U: { value: 'ሱ', next: null },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ S: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: null },
+ U: { value: 'ሱ', next: null },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ v: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ V: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ p: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ P: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: null },
+ U: { value: 'ቱ', next: null },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: null },
+ U: { value: 'ቹ', next: null },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: null },
+ U: { value: 'ኑ', next: null },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: null },
+ U: { value: 'ኙ', next: null },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: { value: 'ኩ', next: null },
+ U: { value: 'ኩ', next: null },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: { value: 'ኹ', next: null },
+ U: { value: 'ኹ', next: null },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: null },
+ U: { value: 'ዙ', next: null },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: null },
+ U: { value: 'ዙ', next: null },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: null },
+ U: { value: 'ጡ', next: null },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: null },
+ U: { value: 'ጩ', next: null },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: null },
+ U: { value: 'ፉ', next: null },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: null },
+ U: { value: 'ፉ', next: null },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/index.ts b/packages/ethiopic-layouts/src/index.ts
new file mode 100644
index 0000000..25e315f
--- /dev/null
+++ b/packages/ethiopic-layouts/src/index.ts
@@ -0,0 +1,35 @@
+import { KeyboardLayout } from '@keywrite/core';
+const layouts: Record = {};
+import Amharic from './am-ET';
+layouts[Amharic.meta.name] = Amharic.layout;
+
+import AwngiBlinXamtanga from './awn-ET_byn-ER_xan-ET';
+layouts[AwngiBlinXamtanga.meta.name] = AwngiBlinXamtanga.layout;
+
+import Bench from './bcq-ET';
+layouts[Bench.meta.name] = Bench.layout;
+
+import DiziMeenMursiSuri from './mym-ET_muz-ET_suq-ET_mdx-ET';
+layouts[DiziMeenMursiSuri.meta.name] = DiziMeenMursiSuri.layout;
+
+import Geez from './gez-ET_gez-ER';
+layouts[Geez.meta.name] = Geez.layout;
+
+import Harari from './har-ET';
+layouts[Harari.meta.name] = Harari.layout;
+
+import Sebatbeit from './sgw-ET';
+layouts[Sebatbeit.meta.name] = Sebatbeit.layout;
+
+import Silte from './xst-ET';
+layouts[Silte.meta.name] = Silte.layout;
+
+import TigrinyaEritrean from './ti-ER';
+layouts[TigrinyaEritrean.meta.name] = TigrinyaEritrean.layout;
+
+import TigrinyaEthiopia from './ti-ET';
+layouts[TigrinyaEthiopia.meta.name] = TigrinyaEthiopia.layout;
+
+import EthiopicLanguageNeutral from './ET';
+layouts[EthiopicLanguageNeutral.meta.name] = EthiopicLanguageNeutral.layout;
+export default layouts;
diff --git a/packages/ethiopic-layouts/src/layouts.ts b/packages/ethiopic-layouts/src/layouts.ts
new file mode 100644
index 0000000..510ab0b
--- /dev/null
+++ b/packages/ethiopic-layouts/src/layouts.ts
@@ -0,0 +1,45 @@
+type LayoutMeta = { path: string; name: string };
+const layouts: Record = {
+ 'am-ET': { path: 'am-ET', name: 'Amharic' },
+ 'awn-ET_byn-ER_xan-ET': {
+ path: 'awn-ET_byn-ER_xan-ET',
+ name: 'Awngi, Blin, Xamtanga',
+ },
+ 'bcq-ET': {
+ path: 'bcq-ET',
+ name: 'Bench',
+ },
+ 'mym-ET_muz-ET_suq-ET_mdx-ET': {
+ path: 'mym-ET_muz-ET_suq-ET_mdx-ET',
+ name: "Dizi, Me'en, Mursi, Suri",
+ },
+ 'gez-ET_gez-ER': {
+ path: 'gez-ET_gez-ER',
+ name: "Ge'ez",
+ },
+ 'har-ET': {
+ path: 'har-ET',
+ name: 'Harari',
+ },
+ 'sgw-ET': {
+ path: 'sgw-ET',
+ name: 'Sebatbeit',
+ },
+ 'xst-ET': {
+ path: 'xst-ET',
+ name: "Silt'e",
+ },
+ 'ti-ER': {
+ path: 'ti-ER',
+ name: 'Tigrinya(Eritrean)',
+ },
+ 'ti-ET': {
+ path: 'ti-ET',
+ name: 'Tigrinya(Ethiopia)',
+ },
+ ET: {
+ path: 'ET',
+ name: 'Ethiopic(Language Neutral)',
+ },
+};
+export default layouts;
diff --git a/packages/ethiopic-layouts/src/mym-ET_muz-ET_suq-ET_mdx-ET.ts b/packages/ethiopic-layouts/src/mym-ET_muz-ET_suq-ET_mdx-ET.ts
new file mode 100644
index 0000000..0e90654
--- /dev/null
+++ b/packages/ethiopic-layouts/src/mym-ET_muz-ET_suq-ET_mdx-ET.ts
@@ -0,0 +1,651 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: "Dizi, Me'en, Mursi, Suri", regions: ['mym-ET', 'muz-ET', 'suq-ET', 'mdx-ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ O: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ h: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: { value: 'ኁ', next: null },
+ U: { value: 'ኁ', next: null },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ O: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ },
+ },
+ },
+ },
+ H: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ O: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ O: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ O: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ O: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ O: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ O: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ O: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: null },
+ U: { value: 'ሱ', next: null },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: { a: { value: 'ⶃ', next: null }, A: { value: 'ⶃ', next: null } } },
+ O: { value: 'ሶ', next: { a: { value: 'ⶃ', next: null }, A: { value: 'ⶃ', next: null } } },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ O: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ O: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ O: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ O: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ O: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ O: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: null },
+ U: { value: 'ቱ', next: null },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: { a: { value: 'ⶆ', next: null }, A: { value: 'ⶆ', next: null } } },
+ O: { value: 'ቶ', next: { a: { value: 'ⶆ', next: null }, A: { value: 'ⶆ', next: null } } },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: null },
+ U: { value: 'ቹ', next: null },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: { a: { value: 'ⶇ', next: null }, A: { value: 'ⶇ', next: null } } },
+ O: { value: 'ቾ', next: { a: { value: 'ⶇ', next: null }, A: { value: 'ⶇ', next: null } } },
+ },
+ },
+ f: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: { value: 'ኁ', next: null },
+ U: { value: 'ኁ', next: null },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ O: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ },
+ },
+ F: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: { value: 'ኁ', next: null },
+ U: { value: 'ኁ', next: null },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ O: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: null },
+ U: { value: 'ኑ', next: null },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: { a: { value: 'ⶈ', next: null }, A: { value: 'ⶈ', next: null } } },
+ O: { value: 'ኖ', next: { a: { value: 'ⶈ', next: null }, A: { value: 'ⶈ', next: null } } },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: null },
+ U: { value: 'ኙ', next: null },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: { a: { value: 'ⶉ', next: null }, A: { value: 'ⶉ', next: null } } },
+ O: { value: 'ኞ', next: { a: { value: 'ⶉ', next: null }, A: { value: 'ⶉ', next: null } } },
+ },
+ },
+ a: {
+ value: 'እ',
+ next: {
+ e: { value: 'አ', next: null },
+ E: { value: 'አ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: { a: { value: 'ⶊ', next: null }, A: { value: 'ⶊ', next: null } } },
+ O: { value: 'ኦ', next: { a: { value: 'ⶊ', next: null }, A: { value: 'ⶊ', next: null } } },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: { value: 'ኩ', next: null },
+ U: { value: 'ኩ', next: null },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ O: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ },
+ },
+ K: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: { value: 'ኩ', next: null },
+ U: { value: 'ኩ', next: null },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ O: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ O: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ O: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: null },
+ U: { value: 'ዙ', next: null },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ O: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ },
+ },
+ Z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: null },
+ U: { value: 'ዙ', next: null },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ O: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ O: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ O: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: { a: { value: 'ⶌ', next: null }, A: { value: 'ⶌ', next: null } } },
+ O: { value: 'ዶ', next: { a: { value: 'ⶌ', next: null }, A: { value: 'ⶌ', next: null } } },
+ },
+ },
+ D: {
+ value: 'ዽ',
+ next: {
+ e: { value: 'ዸ', next: null },
+ E: { value: 'ዸ', next: null },
+ u: { value: 'ዹ', next: null },
+ U: { value: 'ዹ', next: null },
+ i: { value: 'ዺ', next: { e: { value: 'ዼ', next: null }, E: { value: 'ዼ', next: null } } },
+ I: { value: 'ዺ', next: { e: { value: 'ዼ', next: null }, E: { value: 'ዼ', next: null } } },
+ a: { value: 'ዻ', next: null },
+ A: { value: 'ዻ', next: null },
+ o: { value: 'ዾ', next: { a: { value: 'ⶍ', next: null }, A: { value: 'ⶍ', next: null } } },
+ O: { value: 'ዾ', next: { a: { value: 'ⶍ', next: null }, A: { value: 'ⶍ', next: null } } },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ O: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ O: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ O: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ O: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: null },
+ U: { value: 'ጡ', next: null },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: { a: { value: 'ⶏ', next: null }, A: { value: 'ⶏ', next: null } } },
+ O: { value: 'ጦ', next: { a: { value: 'ⶏ', next: null }, A: { value: 'ⶏ', next: null } } },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: null },
+ U: { value: 'ጩ', next: null },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: { a: { value: 'ⶐ', next: null }, A: { value: 'ⶐ', next: null } } },
+ O: { value: 'ጮ', next: { a: { value: 'ⶐ', next: null }, A: { value: 'ⶐ', next: null } } },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: null },
+ U: { value: 'ጱ', next: null },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: { a: { value: 'ⶑ', next: null }, A: { value: 'ⶑ', next: null } } },
+ O: { value: 'ጶ', next: { a: { value: 'ⶑ', next: null }, A: { value: 'ⶑ', next: null } } },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: null },
+ U: { value: 'ፑ', next: null },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: { a: { value: 'ⶒ', next: null }, A: { value: 'ⶒ', next: null } } },
+ O: { value: 'ፖ', next: { a: { value: 'ⶒ', next: null }, A: { value: 'ⶒ', next: null } } },
+ },
+ },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: { a: { value: 'ፇ', next: null }, A: { value: 'ፇ', next: null } } },
+ O: { value: 'ፆ', next: { a: { value: 'ፇ', next: null }, A: { value: 'ፇ', next: null } } },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/sgw-ET.ts b/packages/ethiopic-layouts/src/sgw-ET.ts
new file mode 100644
index 0000000..bb5e92d
--- /dev/null
+++ b/packages/ethiopic-layouts/src/sgw-ET.ts
@@ -0,0 +1,1071 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Sebatbeit', regions: ['sgw-ET'] },
+ layout: {
+ h: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ U: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ H: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ U: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ K: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ U: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ U: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ Y: {
+ value: 'ⷅ',
+ next: {
+ e: { value: 'ⷀ', next: null },
+ E: { value: 'ⷀ', next: null },
+ u: { value: 'ⷁ', next: null },
+ U: { value: 'ⷁ', next: null },
+ i: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ I: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ a: { value: 'ⷃ', next: null },
+ A: { value: 'ⷃ', next: null },
+ o: { value: 'ⷆ', next: null },
+ O: { value: 'ⷆ', next: null },
+ },
+ },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ Y: {
+ value: 'ⷅ',
+ next: {
+ e: { value: 'ⷀ', next: null },
+ E: { value: 'ⷀ', next: null },
+ u: { value: 'ⷁ', next: null },
+ U: { value: 'ⷁ', next: null },
+ i: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ I: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ a: { value: 'ⷃ', next: null },
+ A: { value: 'ⷃ', next: null },
+ o: { value: 'ⷆ', next: null },
+ O: { value: 'ⷆ', next: null },
+ },
+ },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ U: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ U: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ a: {
+ value: 'እ',
+ next: {
+ e: { value: 'ኧ', next: null },
+ E: { value: 'ኧ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'አ', next: null },
+ A: { value: 'አ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ Y: {
+ value: 'ⷍ',
+ next: {
+ e: { value: 'ⷈ', next: null },
+ E: { value: 'ⷈ', next: null },
+ u: { value: 'ⷉ', next: null },
+ U: { value: 'ⷉ', next: null },
+ i: { value: 'ⷊ', next: { e: { value: 'ⷌ', next: null }, E: { value: 'ⷌ', next: null } } },
+ I: { value: 'ⷊ', next: { e: { value: 'ⷌ', next: null }, E: { value: 'ⷌ', next: null } } },
+ a: { value: 'ⷋ', next: null },
+ A: { value: 'ⷋ', next: null },
+ o: { value: 'ⷎ', next: null },
+ O: { value: 'ⷎ', next: null },
+ },
+ },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ Y: {
+ value: 'ⷝ',
+ next: {
+ e: { value: 'ⷘ', next: null },
+ E: { value: 'ⷘ', next: null },
+ u: { value: 'ⷙ', next: null },
+ U: { value: 'ⷙ', next: null },
+ i: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ I: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ a: { value: 'ⷛ', next: null },
+ A: { value: 'ⷛ', next: null },
+ o: { value: 'ⷞ', next: null },
+ O: { value: 'ⷞ', next: null },
+ },
+ },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ Y: {
+ value: 'ⷝ',
+ next: {
+ e: { value: 'ⷘ', next: null },
+ E: { value: 'ⷘ', next: null },
+ u: { value: 'ⷙ', next: null },
+ U: { value: 'ⷙ', next: null },
+ i: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ I: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ a: { value: 'ⷛ', next: null },
+ A: { value: 'ⷛ', next: null },
+ o: { value: 'ⷞ', next: null },
+ O: { value: 'ⷞ', next: null },
+ },
+ },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: null },
+ O: { value: 'ፆ', next: null },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ U: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ U: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: {
+ value: 'ፑ',
+ next: {
+ e: { value: 'ᎌ', next: null },
+ E: { value: 'ᎌ', next: null },
+ u: { value: 'ᎍ', next: null },
+ U: { value: 'ᎍ', next: null },
+ i: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ I: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ a: { value: 'ፗ', next: null },
+ A: { value: 'ፗ', next: null },
+ },
+ },
+ U: {
+ value: 'ፑ',
+ next: {
+ e: { value: 'ᎌ', next: null },
+ E: { value: 'ᎌ', next: null },
+ u: { value: 'ᎍ', next: null },
+ U: { value: 'ᎍ', next: null },
+ i: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ I: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ a: { value: 'ፗ', next: null },
+ A: { value: 'ፗ', next: null },
+ },
+ },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/ti-ER.ts b/packages/ethiopic-layouts/src/ti-ER.ts
new file mode 100644
index 0000000..ed80e2a
--- /dev/null
+++ b/packages/ethiopic-layouts/src/ti-ER.ts
@@ -0,0 +1,829 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Tigrinya(Eritrean)', regions: ['ti-ER'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቕ',
+ next: {
+ e: { value: 'ቐ', next: null },
+ E: { value: 'ቐ', next: null },
+ u: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ U: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ i: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ I: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ a: { value: 'ቓ', next: null },
+ A: { value: 'ቓ', next: null },
+ o: { value: 'ቖ', next: null },
+ O: { value: 'ቖ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ V: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ U: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ U: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/ti-ET.ts b/packages/ethiopic-layouts/src/ti-ET.ts
new file mode 100644
index 0000000..e11db50
--- /dev/null
+++ b/packages/ethiopic-layouts/src/ti-ET.ts
@@ -0,0 +1,919 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Tigrinya(Ethiopia)', regions: ['ti-ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ h: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: null },
+ O: { value: 'ኆ', next: null },
+ },
+ },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ U: { value: 'ሙ', next: { a: { value: 'ሟ', next: null }, A: { value: 'ሟ', next: null } } },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቕ',
+ next: {
+ e: { value: 'ቐ', next: null },
+ E: { value: 'ቐ', next: null },
+ u: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ U: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ i: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ I: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ a: { value: 'ቓ', next: null },
+ A: { value: 'ቓ', next: null },
+ o: { value: 'ቖ', next: null },
+ O: { value: 'ቖ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ U: { value: 'ቡ', next: { a: { value: 'ቧ', next: null }, A: { value: 'ቧ', next: null } } },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ V: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ U: {
+ value: 'ኹ',
+ next: {
+ e: { value: 'ዀ', next: null },
+ E: { value: 'ዀ', next: null },
+ u: { value: 'ዅ', next: null },
+ U: { value: 'ዅ', next: null },
+ i: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ I: { value: 'ዂ', next: { e: { value: 'ዄ', next: null }, E: { value: 'ዄ', next: null } } },
+ a: { value: 'ዃ', next: null },
+ A: { value: 'ዃ', next: null },
+ },
+ },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: null },
+ O: { value: 'ፆ', next: null },
+ },
+ },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ U: { value: 'ፉ', next: { a: { value: 'ፏ', next: null }, A: { value: 'ፏ', next: null } } },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ U: { value: 'ፑ', next: { a: { value: 'ፗ', next: null }, A: { value: 'ፗ', next: null } } },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/src/xst-ET.ts b/packages/ethiopic-layouts/src/xst-ET.ts
new file mode 100644
index 0000000..b992e1d
--- /dev/null
+++ b/packages/ethiopic-layouts/src/xst-ET.ts
@@ -0,0 +1,666 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: "Silt'e", regions: ['xst-ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ H: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: { value: 'ሁ', next: null },
+ U: { value: 'ሁ', next: null },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: null },
+ U: { value: 'ሉ', next: null },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: null },
+ O: { value: 'ሎ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: { value: 'ሙ', next: null },
+ U: { value: 'ሙ', next: null },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: null },
+ O: { value: 'ሞ', next: null },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: null },
+ U: { value: 'ሩ', next: null },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: null },
+ O: { value: 'ሮ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: null },
+ U: { value: 'ሱ', next: null },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ S: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: null },
+ U: { value: 'ሱ', next: null },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: null },
+ O: { value: 'ሶ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: null },
+ U: { value: 'ሹ', next: null },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: null },
+ O: { value: 'ሾ', next: null },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ Q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: { value: 'ቁ', next: null },
+ U: { value: 'ቁ', next: null },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: null },
+ O: { value: 'ቆ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ v: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ V: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: { value: 'ቡ', next: null },
+ U: { value: 'ቡ', next: null },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: null },
+ O: { value: 'ቦ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: null },
+ U: { value: 'ቱ', next: null },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: null },
+ O: { value: 'ቶ', next: null },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: null },
+ U: { value: 'ቹ', next: null },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: null },
+ O: { value: 'ቾ', next: null },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: null },
+ U: { value: 'ኑ', next: null },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: null },
+ O: { value: 'ኖ', next: null },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: null },
+ U: { value: 'ኙ', next: null },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: null },
+ O: { value: 'ኞ', next: null },
+ },
+ },
+ a: {
+ value: 'አ',
+ next: {
+ e: { value: 'እ', next: null },
+ E: { value: 'እ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: null },
+ O: { value: 'ኦ', next: null },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: { value: 'ኩ', next: null },
+ U: { value: 'ኩ', next: null },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: null },
+ O: { value: 'ኮ', next: null },
+ },
+ },
+ K: {
+ value: 'ኽ',
+ next: {
+ e: { value: 'ኸ', next: null },
+ E: { value: 'ኸ', next: null },
+ u: { value: 'ኹ', next: null },
+ U: { value: 'ኹ', next: null },
+ i: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ I: { value: 'ኺ', next: { e: { value: 'ኼ', next: null }, E: { value: 'ኼ', next: null } } },
+ a: { value: 'ኻ', next: null },
+ A: { value: 'ኻ', next: null },
+ o: { value: 'ኾ', next: null },
+ O: { value: 'ኾ', next: null },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: null },
+ O: { value: 'ዎ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: null },
+ U: { value: 'ዙ', next: null },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: null },
+ O: { value: 'ዞ', next: null },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: null },
+ U: { value: 'ዡ', next: null },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: null },
+ O: { value: 'ዮ', next: null },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ D: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: null },
+ U: { value: 'ዱ', next: null },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: null },
+ O: { value: 'ዶ', next: null },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: null },
+ U: { value: 'ጁ', next: null },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: null },
+ O: { value: 'ጆ', next: null },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ G: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: { value: 'ጉ', next: null },
+ U: { value: 'ጉ', next: null },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: null },
+ O: { value: 'ጎ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: null },
+ U: { value: 'ጡ', next: null },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: null },
+ O: { value: 'ጦ', next: null },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: null },
+ U: { value: 'ጩ', next: null },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: null },
+ O: { value: 'ጮ', next: null },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: null },
+ U: { value: 'ጱ', next: null },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: null },
+ O: { value: 'ጶ', next: null },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: null },
+ U: { value: 'ፉ', next: null },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: { value: 'ፉ', next: null },
+ U: { value: 'ፉ', next: null },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: { value: 'ፑ', next: null },
+ U: { value: 'ፑ', next: null },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: null },
+ O: { value: 'ፖ', next: null },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/ethiopic-layouts/tsconfig.json b/packages/ethiopic-layouts/tsconfig.json
new file mode 100644
index 0000000..e2317b1
--- /dev/null
+++ b/packages/ethiopic-layouts/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "composite": true
+ },
+ "exclude": ["src/layouts.ts", "src/generate-from-csv.ts"],
+ "references": [
+ {
+ "path": "../layout-generator"
+ },
+ {
+ "path": "../core"
+ }
+ ]
+}
diff --git a/packages/layout-generator/README.md b/packages/layout-generator/README.md
new file mode 100644
index 0000000..0d4cf76
--- /dev/null
+++ b/packages/layout-generator/README.md
@@ -0,0 +1 @@
+## @keywrite/layout-generator
diff --git a/packages/layout-generator/jest.config.js b/packages/layout-generator/jest.config.js
new file mode 100644
index 0000000..a13adf5
--- /dev/null
+++ b/packages/layout-generator/jest.config.js
@@ -0,0 +1,5 @@
+const baseConfig = require('../../jest.config');
+
+module.exports = {
+ ...baseConfig,
+};
diff --git a/packages/layout-generator/package.json b/packages/layout-generator/package.json
new file mode 100644
index 0000000..e71ec26
--- /dev/null
+++ b/packages/layout-generator/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@keywrite/layout-generator",
+ "version": "0.1.0",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "directory": "packages/layout-generator",
+ "url": "https://github.com/eyuelberga/keywrite.git"
+ },
+ "scripts": {
+ "clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
+ "prepack": "yarn build",
+ "build": "yarn clean && tsc --build && cp \"./package.json\" ./dist/",
+ "test": "jest --passWithNoTests",
+ "lint": "eslint \"./src/**/*.{ts,tsx}\" --max-warnings=10"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "@keywrite/core": "^0.1.0"
+ }
+}
diff --git a/packages/layout-generator/src/core.ts b/packages/layout-generator/src/core.ts
new file mode 100644
index 0000000..2cc6f16
--- /dev/null
+++ b/packages/layout-generator/src/core.ts
@@ -0,0 +1,40 @@
+import { toSequence, setDeep, toPath } from './utils';
+import { ObjectPath } from './interfaces';
+import { KeyboardLayout } from '@keywrite/core';
+const generateKeymap = (keys: string[]) => {
+ const keymap: Record = {};
+ keys.forEach((key) => {
+ const combination = toSequence(key);
+ keymap[key] = combination;
+ });
+ return keymap;
+};
+const filterKeys = (row: Record, keyCol: string, defaultCol: string): string[] => {
+ return Object.keys(row).filter((k) => {
+ return k !== keyCol && k !== defaultCol && row[k].trim();
+ });
+};
+const setSymbolMap = (layout: KeyboardLayout, value: string, path: ObjectPath): void => {
+ const symbolMap = { value, next: null };
+ setDeep(layout, path, symbolMap);
+};
+
+export const generateMapForRow = (
+ layout: KeyboardLayout,
+ row: Record,
+ keyCol = 'KEY',
+ defaultCol = '_',
+): void => {
+ const primaryPaths = toPath(toSequence(row[keyCol]));
+ for (const primary of primaryPaths) {
+ setSymbolMap(layout, row[defaultCol], `${primary}`);
+ const relevantKeys = filterKeys(row, keyCol, defaultCol);
+ const keymap = generateKeymap(relevantKeys);
+ for (const key of relevantKeys) {
+ const paths = toPath(keymap[key], primary);
+ for (const path of paths) {
+ setSymbolMap(layout, row[key], path);
+ }
+ }
+ }
+};
diff --git a/packages/layout-generator/src/index.ts b/packages/layout-generator/src/index.ts
new file mode 100644
index 0000000..aabced9
--- /dev/null
+++ b/packages/layout-generator/src/index.ts
@@ -0,0 +1,3 @@
+export * from './utils';
+export * from './core';
+export * from './interfaces';
diff --git a/packages/layout-generator/src/interfaces.ts b/packages/layout-generator/src/interfaces.ts
new file mode 100644
index 0000000..d9cf37b
--- /dev/null
+++ b/packages/layout-generator/src/interfaces.ts
@@ -0,0 +1 @@
+export type ObjectPath = string | string[];
diff --git a/packages/layout-generator/src/utils.ts b/packages/layout-generator/src/utils.ts
new file mode 100644
index 0000000..d0c3959
--- /dev/null
+++ b/packages/layout-generator/src/utils.ts
@@ -0,0 +1,55 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { ObjectPath } from './interfaces';
+export const resolvePath = (path: ObjectPath, obj: Record, separator = '.'): any => {
+ const properties = Array.isArray(path) ? path : path.split(separator);
+ return properties.reduce((prev, curr) => prev && prev[curr], obj);
+};
+export const toSequence = (key: string): string[] => {
+ // match all inclosed in square brackets, or any word character and some selected symbols
+ const matches = key.match(/\[.*?\]|\w|[<>,.;:]/g);
+ if (matches) {
+ //eslint-disable-next-line
+ return matches.map((k) => k.replace(/[\]\[()+]/g, ''));
+ }
+ return [];
+};
+// Create a nested structure of objects along path within obj. Only overwrites the final value.
+export const setDeep = (obj: Record, path: ObjectPath, value: any, separator = '.') => {
+ const properties = Array.isArray(path) ? path : path.split(separator);
+ return (setStructure(obj, properties.slice(0, -1))[properties[properties.length - 1]] = value);
+};
+// Set obj[key] to value if key is not in object, and return obj[key]
+const setDefault = (obj: Record, key: any, value: any) => {
+ if (!obj[key]) {
+ obj[key] = value;
+ }
+ return obj[key];
+};
+
+// Create a nested structure of objects along path within obj. Does not overwrite any value.
+const setStructure = (obj: Record, path: string[]) =>
+ path.reduce((obj, segment) => setDefault(obj, segment, {}), obj);
+// create path combination
+export const toPath = (sequence: string[], previous?: string): string[] => {
+ const pathList: string[] = [];
+ const addPrevious = previous ? `${previous}.next.` : '';
+ if (sequence.length > 1) {
+ for (const c of sequence[0]) {
+ for (const c2 of sequence[1]) {
+ if (sequence[2]) {
+ for (const c3 of sequence[2]) {
+ pathList.push(`${addPrevious}${c}.next.${c2}.next.${c3}`);
+ }
+ } else {
+ pathList.push(`${addPrevious}${c}.next.${c2}`);
+ }
+ }
+ }
+ } else if (sequence.length) {
+ for (const c of sequence[0]) {
+ pathList.push(`${addPrevious}${c}`);
+ }
+ }
+
+ return pathList;
+};
diff --git a/packages/layout-generator/tests/core.spec.ts b/packages/layout-generator/tests/core.spec.ts
new file mode 100644
index 0000000..78faa7c
--- /dev/null
+++ b/packages/layout-generator/tests/core.spec.ts
@@ -0,0 +1,197 @@
+import { generateMapForRow } from '../src/core';
+describe('core.ts', () => {
+ it('should work as expected', () => {
+ const layout = {};
+ const row = {
+ KEY: 'h',
+ '+[eE]': 'ሀ',
+ '+[uU]': 'ሁ',
+ '+[iI]': 'ሂ',
+ '+[aA]': 'ሃ',
+ '+[iI][eE]': 'ሄ',
+ _: 'ህ',
+ '+[oO]': 'ሆ',
+ '+[oO][aA]': ' ',
+ '+[uU][eE]': 'ኈ',
+ '+[uU][uU]': 'ኍ',
+ '+[uU][iI]': 'ኊ',
+ '+[uU][aA]': 'ኋ',
+ '+[uU][iI][eE]': 'ኌ',
+ };
+ generateMapForRow(layout, row);
+ expect(layout).toEqual({
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ I: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ I: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: {
+ value: 'ሂ',
+ next: {
+ e: { value: 'ሄ', next: null },
+ E: { value: 'ሄ', next: null },
+ },
+ },
+ I: {
+ value: 'ሂ',
+ next: {
+ e: { value: 'ሄ', next: null },
+ E: { value: 'ሄ', next: null },
+ },
+ },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ });
+ });
+ it('should work custom key and default columns', () => {
+ const layout = {};
+ const row = {
+ CODE: 'h',
+ '+[eE]': 'ሀ',
+ '+[uU]': 'ሁ',
+ '+[iI]': 'ሂ',
+ '+[aA]': 'ሃ',
+ '+[iI][eE]': 'ሄ',
+ DEFAULT: 'ህ',
+ '+[oO]': 'ሆ',
+ '+[oO][aA]': ' ',
+ '+[uU][eE]': 'ኈ',
+ '+[uU][uU]': 'ኍ',
+ '+[uU][iI]': 'ኊ',
+ '+[uU][aA]': 'ኋ',
+ '+[uU][iI][eE]': 'ኌ',
+ };
+ generateMapForRow(layout, row, 'CODE', 'DEFAULT');
+ expect(layout).toEqual({
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ I: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ I: {
+ value: 'ኊ',
+ next: {
+ e: { value: 'ኌ', next: null },
+ E: { value: 'ኌ', next: null },
+ },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: {
+ value: 'ሂ',
+ next: {
+ e: { value: 'ሄ', next: null },
+ E: { value: 'ሄ', next: null },
+ },
+ },
+ I: {
+ value: 'ሂ',
+ next: {
+ e: { value: 'ሄ', next: null },
+ E: { value: 'ሄ', next: null },
+ },
+ },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: null },
+ O: { value: 'ሆ', next: null },
+ },
+ },
+ });
+ });
+});
diff --git a/packages/layout-generator/tests/utils.spec.ts b/packages/layout-generator/tests/utils.spec.ts
new file mode 100644
index 0000000..306639f
--- /dev/null
+++ b/packages/layout-generator/tests/utils.spec.ts
@@ -0,0 +1,117 @@
+import { resolvePath, toSequence, setDeep, toPath } from '../src';
+const expectArrayEquivalence = (actual: T[], expected: T[]) => {
+ expect(actual).toEqual(expect.arrayContaining(expected));
+ expect(expected).toEqual(expect.arrayContaining(actual));
+};
+
+describe('utils.ts', () => {
+ describe('resolvePath', () => {
+ it('should work with both array and string paths', () => {
+ const obj: Record = { val1: { val2: { val3: 'value3' } } };
+ const expectedValue = 'value3';
+ const stringPath = 'val1.val2.val3';
+ const arrayPath = ['val1', 'val2', 'val3'];
+ expect(resolvePath(stringPath, obj)).toBe(expectedValue);
+ expect(resolvePath(arrayPath, obj)).toBe(expectedValue);
+ });
+ it('should work with a custom separator', () => {
+ const obj: Record = { val1: { val2: { val3: 'value3' } } };
+ const expectedValue = 'value3';
+ const stringPath = 'val1:val2:val3';
+ expect(resolvePath(stringPath, obj, ':')).toBe(expectedValue);
+ });
+ });
+
+ describe('toSequence', () => {
+ it('square brackets means OR', () => {
+ expect(toSequence('+[eE]')).toStrictEqual(['eE']);
+ expect(toSequence('[qQ]')).toStrictEqual(['qQ']);
+ });
+ it('multiple characters without brackets means a SEQUENCE', () => {
+ expect(toSequence('hh')).toStrictEqual(['h', 'h']);
+ expect(toSequence('SS')).toStrictEqual(['S', 'S']);
+ });
+ it('should work will various key patterns', () => {
+ expect(toSequence('+[aA] +[iI][eE]')).toStrictEqual(['aA', 'iI', 'eE']);
+ expect(toSequence('+[uU][iI][eE]')).toStrictEqual(['uU', 'iI', 'eE']);
+ expect(toSequence('a[eE][eE]')).toStrictEqual(['a', 'eE', 'eE']);
+ expect(toSequence('[xX][xX]')).toStrictEqual(['xX', 'xX']);
+ });
+ it('should return empty array if no sequence in key', () => {
+ expect(toSequence('')).toStrictEqual([]);
+ });
+ });
+
+ describe('setDeep', () => {
+ it('should overwrite object value', () => {
+ const obj: Record = { val1: { val2: { val3: 1 } } };
+ const path = ['val1', 'val2', 'val3'];
+ const value = 10;
+ setDeep(obj, path, value);
+ expect(obj?.val1?.val2?.val3).toEqual(value);
+ });
+ it('should create path if it does not exist on object', () => {
+ const obj: Record = { val1: null };
+ const path = ['val1', 'val2', 'val3'];
+ const value = 10;
+ setDeep(obj, path, value);
+ expect(obj?.val1?.val2?.val3).toEqual(value);
+ });
+ it('should work with path string', () => {
+ const obj: Record = {};
+ const path = 'val1.val2.val3';
+ const value = 10;
+ setDeep(obj, path, value);
+ expect(obj?.val1?.val2?.val3).toEqual(value);
+ });
+ it('should work with custom path separator', () => {
+ const obj: Record = {};
+ const path = 'val1:val2:val3';
+ const value = 10;
+ setDeep(obj, path, value, ':');
+ expect(obj?.val1?.val2?.val3).toEqual(value);
+ });
+ });
+
+ describe('toPath', () => {
+ it('should generate all possible path from sequence', () => {
+ expectArrayEquivalence(toPath(['aA', 'iI', 'eE']), [
+ 'a.next.i.next.e',
+ 'a.next.i.next.E',
+ 'a.next.I.next.e',
+ 'a.next.I.next.E',
+ 'A.next.i.next.e',
+ 'A.next.i.next.E',
+ 'A.next.I.next.e',
+ 'A.next.I.next.E',
+ ]);
+ expectArrayEquivalence(toPath(['h', 'h']), ['h.next.h']);
+ expectArrayEquivalence(toPath(['s']), ['s']);
+ expectArrayEquivalence(toPath(['xX', 'xX']), ['x.next.x', 'x.next.X', 'X.next.x', 'X.next.X']);
+ });
+
+ it('should concatinate with previous path if given', () => {
+ expectArrayEquivalence(toPath(['aA', 'iI', 'eE'], 'previous.path'), [
+ 'previous.path.next.a.next.i.next.e',
+ 'previous.path.next.a.next.i.next.E',
+ 'previous.path.next.a.next.I.next.e',
+ 'previous.path.next.a.next.I.next.E',
+ 'previous.path.next.A.next.i.next.e',
+ 'previous.path.next.A.next.i.next.E',
+ 'previous.path.next.A.next.I.next.e',
+ 'previous.path.next.A.next.I.next.E',
+ ]);
+ expectArrayEquivalence(toPath(['h', 'h'], 'previous.path'), ['previous.path.next.h.next.h']);
+ expectArrayEquivalence(toPath(['s'], 'previous.path'), ['previous.path.next.s']);
+ expectArrayEquivalence(toPath(['xX', 'xX'], 'previous.path'), [
+ 'previous.path.next.x.next.x',
+ 'previous.path.next.x.next.X',
+ 'previous.path.next.X.next.x',
+ 'previous.path.next.X.next.X',
+ ]);
+ });
+ it('should return empty array if no sequence', () => {
+ expectArrayEquivalence(toPath([]), []);
+ });
+ });
+});
diff --git a/packages/layout-generator/tsconfig.json b/packages/layout-generator/tsconfig.json
new file mode 100644
index 0000000..06a5b68
--- /dev/null
+++ b/packages/layout-generator/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "composite": true
+ },
+ "include": ["src/**/*"],
+ "references": [
+ {
+ "path": "../core"
+ }
+ ]
+}
diff --git a/packages/web/README.md b/packages/web/README.md
new file mode 100644
index 0000000..d15f97b
--- /dev/null
+++ b/packages/web/README.md
@@ -0,0 +1,31 @@
+## @keywrite/web
+
+Keywrite is a Javascript library that allows you to type non-latin scripts in any web based application using a standard keyboard.
+
+## Installation
+
+```sh
+$ yarn add @keywrite/web
+
+# or
+
+$ npm install @keywrite/web
+```
+
+## Basic usage
+
+```javascript
+import { KeywriteWeb } from '@keywrite/web';
+
+// keyboard layout definition
+import layout from './layout';
+
+// add to HTMLInputElement
+new KeywriteWeb(document.querySelector('input'));
+// add to HTMLTextAreaElement
+new KeywriteWeb(document.querySelector('textarea'));
+```
+
+## License
+
+MIT © [Eyuel Berga](https://github.com/eyuelberga)
diff --git a/packages/web/jest.config.js b/packages/web/jest.config.js
new file mode 100644
index 0000000..a13adf5
--- /dev/null
+++ b/packages/web/jest.config.js
@@ -0,0 +1,5 @@
+const baseConfig = require('../../jest.config');
+
+module.exports = {
+ ...baseConfig,
+};
diff --git a/packages/web/package.json b/packages/web/package.json
new file mode 100644
index 0000000..d041c64
--- /dev/null
+++ b/packages/web/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@keywrite/web",
+ "version": "0.1.0",
+ "main": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "directory": "packages/web",
+ "url": "https://github.com/eyuelberga/keywrite.git"
+ },
+ "scripts": {
+ "clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
+ "prepack": "yarn build",
+ "build": "yarn clean && tsc --build && cp \"./package.json\" ./dist/",
+ "test": "jest --passWithNoTests",
+ "lint": "eslint \"./src/**/*.{ts,tsx}\" --max-warnings=10"
+ },
+ "dependencies": {
+ "@keywrite/core": "^0.1.0"
+ },
+ "devDependencies": {}
+}
diff --git a/packages/web/src/ET.ts b/packages/web/src/ET.ts
new file mode 100644
index 0000000..cf5694d
--- /dev/null
+++ b/packages/web/src/ET.ts
@@ -0,0 +1,1258 @@
+import { KeyboardLayout } from '@keywrite/core';
+type LayoutMeta = { name: string; regions: string[] };
+type LayoutSpec = { meta: LayoutMeta; layout: KeyboardLayout };
+const layout: LayoutSpec = {
+ meta: { name: 'Ethiopic(Language Neutral)', regions: ['ET'] },
+ layout: {
+ h: {
+ value: 'ህ',
+ next: {
+ e: { value: 'ሀ', next: null },
+ E: { value: 'ሀ', next: null },
+ u: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ሁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ I: { value: 'ኊ', next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } } },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ I: { value: 'ሂ', next: { e: { value: 'ሄ', next: null }, E: { value: 'ሄ', next: null } } },
+ a: { value: 'ሃ', next: null },
+ A: { value: 'ሃ', next: null },
+ o: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ O: { value: 'ሆ', next: { a: { value: 'ሇ', next: null }, A: { value: 'ሇ', next: null } } },
+ h: {
+ value: 'ኅ',
+ next: {
+ e: { value: 'ኀ', next: null },
+ E: { value: 'ኀ', next: null },
+ u: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ U: {
+ value: 'ኁ',
+ next: {
+ e: { value: 'ኈ', next: null },
+ E: { value: 'ኈ', next: null },
+ u: { value: 'ኍ', next: null },
+ U: { value: 'ኍ', next: null },
+ i: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ I: {
+ value: 'ኊ',
+ next: { e: { value: 'ኌ', next: null }, E: { value: 'ኌ', next: null } },
+ },
+ a: { value: 'ኋ', next: null },
+ A: { value: 'ኋ', next: null },
+ },
+ },
+ i: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ I: { value: 'ኂ', next: { e: { value: 'ኄ', next: null }, E: { value: 'ኄ', next: null } } },
+ a: { value: 'ኃ', next: null },
+ A: { value: 'ኃ', next: null },
+ o: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ O: { value: 'ኆ', next: { a: { value: 'ኇ', next: null }, A: { value: 'ኇ', next: null } } },
+ },
+ },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ O: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ },
+ },
+ L: {
+ value: 'ል',
+ next: {
+ e: { value: 'ለ', next: null },
+ E: { value: 'ለ', next: null },
+ u: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ U: { value: 'ሉ', next: { a: { value: 'ሏ', next: null }, A: { value: 'ሏ', next: null } } },
+ i: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ I: { value: 'ሊ', next: { e: { value: 'ሌ', next: null }, E: { value: 'ሌ', next: null } } },
+ a: { value: 'ላ', next: null },
+ A: { value: 'ላ', next: null },
+ o: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ O: { value: 'ሎ', next: { a: { value: 'ⶀ', next: null }, A: { value: 'ⶀ', next: null } } },
+ },
+ },
+ H: {
+ value: 'ሕ',
+ next: {
+ e: { value: 'ሐ', next: null },
+ E: { value: 'ሐ', next: null },
+ u: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ U: { value: 'ሑ', next: { a: { value: 'ሗ', next: null }, A: { value: 'ሗ', next: null } } },
+ i: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ I: { value: 'ሒ', next: { e: { value: 'ሔ', next: null }, E: { value: 'ሔ', next: null } } },
+ a: { value: 'ሓ', next: null },
+ A: { value: 'ሓ', next: null },
+ o: { value: 'ሖ', next: null },
+ O: { value: 'ሖ', next: null },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ U: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ O: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ Y: { value: 'ፙ', next: null },
+ },
+ },
+ M: {
+ value: 'ም',
+ next: {
+ e: { value: 'መ', next: null },
+ E: { value: 'መ', next: null },
+ u: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ U: {
+ value: 'ሙ',
+ next: {
+ e: { value: 'ᎀ', next: null },
+ E: { value: 'ᎀ', next: null },
+ u: { value: 'ᎃ', next: null },
+ U: { value: 'ᎃ', next: null },
+ i: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ I: { value: 'ᎁ', next: { e: { value: 'ᎂ', next: null }, E: { value: 'ᎂ', next: null } } },
+ a: { value: 'ሟ', next: null },
+ A: { value: 'ሟ', next: null },
+ },
+ },
+ i: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ I: { value: 'ሚ', next: { e: { value: 'ሜ', next: null }, E: { value: 'ሜ', next: null } } },
+ a: { value: 'ማ', next: null },
+ A: { value: 'ማ', next: null },
+ o: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ O: { value: 'ሞ', next: { a: { value: 'ⶁ', next: null }, A: { value: 'ⶁ', next: null } } },
+ Y: { value: 'ፙ', next: null },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ e: { value: 'ሰ', next: null },
+ E: { value: 'ሰ', next: null },
+ u: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ U: { value: 'ሱ', next: { a: { value: 'ሷ', next: null }, A: { value: 'ሷ', next: null } } },
+ i: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ I: { value: 'ሲ', next: { e: { value: 'ሴ', next: null }, E: { value: 'ሴ', next: null } } },
+ a: { value: 'ሳ', next: null },
+ A: { value: 'ሳ', next: null },
+ o: { value: 'ሶ', next: { a: { value: 'ⶃ', next: null }, A: { value: 'ⶃ', next: null } } },
+ O: { value: 'ሶ', next: { a: { value: 'ⶃ', next: null }, A: { value: 'ⶃ', next: null } } },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ O: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ Y: { value: 'ፘ', next: null },
+ },
+ },
+ R: {
+ value: 'ር',
+ next: {
+ e: { value: 'ረ', next: null },
+ E: { value: 'ረ', next: null },
+ u: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ U: { value: 'ሩ', next: { a: { value: 'ሯ', next: null }, A: { value: 'ሯ', next: null } } },
+ i: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ I: { value: 'ሪ', next: { e: { value: 'ሬ', next: null }, E: { value: 'ሬ', next: null } } },
+ a: { value: 'ራ', next: null },
+ A: { value: 'ራ', next: null },
+ o: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ O: { value: 'ሮ', next: { a: { value: 'ⶂ', next: null }, A: { value: 'ⶂ', next: null } } },
+ Y: { value: 'ፘ', next: null },
+ },
+ },
+ x: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ O: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ x: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ X: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ },
+ },
+ X: {
+ value: 'ሽ',
+ next: {
+ e: { value: 'ሸ', next: null },
+ E: { value: 'ሸ', next: null },
+ u: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ U: { value: 'ሹ', next: { a: { value: 'ሿ', next: null }, A: { value: 'ሿ', next: null } } },
+ i: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ I: { value: 'ሺ', next: { e: { value: 'ሼ', next: null }, E: { value: 'ሼ', next: null } } },
+ a: { value: 'ሻ', next: null },
+ A: { value: 'ሻ', next: null },
+ o: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ O: { value: 'ሾ', next: { a: { value: 'ⶄ', next: null }, A: { value: 'ⶄ', next: null } } },
+ x: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ X: {
+ value: 'ⶥ',
+ next: {
+ e: { value: 'ⶠ', next: null },
+ E: { value: 'ⶠ', next: null },
+ u: { value: 'ⶡ', next: null },
+ U: { value: 'ⶡ', next: null },
+ i: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ I: { value: 'ⶢ', next: { e: { value: 'ⶤ', next: null }, E: { value: 'ⶤ', next: null } } },
+ a: { value: 'ⶣ', next: null },
+ A: { value: 'ⶣ', next: null },
+ o: { value: 'ⶦ', next: null },
+ O: { value: 'ⶦ', next: null },
+ },
+ },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ e: { value: 'ቀ', next: null },
+ E: { value: 'ቀ', next: null },
+ u: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ U: {
+ value: 'ቁ',
+ next: {
+ e: { value: 'ቈ', next: null },
+ E: { value: 'ቈ', next: null },
+ u: { value: 'ቍ', next: null },
+ U: { value: 'ቍ', next: null },
+ i: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ I: { value: 'ቊ', next: { e: { value: 'ቌ', next: null }, E: { value: 'ቌ', next: null } } },
+ a: { value: 'ቋ', next: null },
+ A: { value: 'ቋ', next: null },
+ },
+ },
+ i: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ I: { value: 'ቂ', next: { e: { value: 'ቄ', next: null }, E: { value: 'ቄ', next: null } } },
+ a: { value: 'ቃ', next: null },
+ A: { value: 'ቃ', next: null },
+ o: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ O: { value: 'ቆ', next: { a: { value: 'ቇ', next: null }, A: { value: 'ቇ', next: null } } },
+ Y: {
+ value: 'ⷅ',
+ next: {
+ e: { value: 'ⷀ', next: null },
+ E: { value: 'ⷀ', next: null },
+ u: { value: 'ⷁ', next: null },
+ U: { value: 'ⷁ', next: null },
+ i: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ I: { value: 'ⷂ', next: { e: { value: 'ⷄ', next: null }, E: { value: 'ⷄ', next: null } } },
+ a: { value: 'ⷃ', next: null },
+ A: { value: 'ⷃ', next: null },
+ o: { value: 'ⷆ', next: null },
+ O: { value: 'ⷆ', next: null },
+ },
+ },
+ },
+ },
+ Q: {
+ value: 'ቕ',
+ next: {
+ e: { value: 'ቐ', next: null },
+ E: { value: 'ቐ', next: null },
+ u: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ U: {
+ value: 'ቑ',
+ next: {
+ e: { value: 'ቘ', next: null },
+ E: { value: 'ቘ', next: null },
+ u: { value: 'ቝ', next: null },
+ U: { value: 'ቝ', next: null },
+ i: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ I: { value: 'ቚ', next: { e: { value: 'ቜ', next: null }, E: { value: 'ቜ', next: null } } },
+ a: { value: 'ቛ', next: null },
+ A: { value: 'ቛ', next: null },
+ },
+ },
+ i: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ I: { value: 'ቒ', next: { e: { value: 'ቔ', next: null }, E: { value: 'ቔ', next: null } } },
+ a: { value: 'ቓ', next: null },
+ A: { value: 'ቓ', next: null },
+ o: { value: 'ቖ', next: null },
+ O: { value: 'ቖ', next: null },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ U: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ O: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ },
+ },
+ B: {
+ value: 'ብ',
+ next: {
+ e: { value: 'በ', next: null },
+ E: { value: 'በ', next: null },
+ u: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ U: {
+ value: 'ቡ',
+ next: {
+ e: { value: 'ᎄ', next: null },
+ E: { value: 'ᎄ', next: null },
+ u: { value: 'ᎇ', next: null },
+ U: { value: 'ᎇ', next: null },
+ i: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ I: { value: 'ᎅ', next: { e: { value: 'ᎆ', next: null }, E: { value: 'ᎆ', next: null } } },
+ a: { value: 'ቧ', next: null },
+ A: { value: 'ቧ', next: null },
+ },
+ },
+ i: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ I: { value: 'ቢ', next: { e: { value: 'ቤ', next: null }, E: { value: 'ቤ', next: null } } },
+ a: { value: 'ባ', next: null },
+ A: { value: 'ባ', next: null },
+ o: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ O: { value: 'ቦ', next: { a: { value: 'ⶅ', next: null }, A: { value: 'ⶅ', next: null } } },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ V: {
+ value: 'ቭ',
+ next: {
+ e: { value: 'ቨ', next: null },
+ E: { value: 'ቨ', next: null },
+ u: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ U: { value: 'ቩ', next: { a: { value: 'ቯ', next: null }, A: { value: 'ቯ', next: null } } },
+ i: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ I: { value: 'ቪ', next: { e: { value: 'ቬ', next: null }, E: { value: 'ቬ', next: null } } },
+ a: { value: 'ቫ', next: null },
+ A: { value: 'ቫ', next: null },
+ o: { value: 'ቮ', next: null },
+ O: { value: 'ቮ', next: null },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ e: { value: 'ተ', next: null },
+ E: { value: 'ተ', next: null },
+ u: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ U: { value: 'ቱ', next: { a: { value: 'ቷ', next: null }, A: { value: 'ቷ', next: null } } },
+ i: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ I: { value: 'ቲ', next: { e: { value: 'ቴ', next: null }, E: { value: 'ቴ', next: null } } },
+ a: { value: 'ታ', next: null },
+ A: { value: 'ታ', next: null },
+ o: { value: 'ቶ', next: { a: { value: 'ⶆ', next: null }, A: { value: 'ⶆ', next: null } } },
+ O: { value: 'ቶ', next: { a: { value: 'ⶆ', next: null }, A: { value: 'ⶆ', next: null } } },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ e: { value: 'ቸ', next: null },
+ E: { value: 'ቸ', next: null },
+ u: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ U: { value: 'ቹ', next: { a: { value: 'ቿ', next: null }, A: { value: 'ቿ', next: null } } },
+ i: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ I: { value: 'ቺ', next: { e: { value: 'ቼ', next: null }, E: { value: 'ቼ', next: null } } },
+ a: { value: 'ቻ', next: null },
+ A: { value: 'ቻ', next: null },
+ o: { value: 'ቾ', next: { a: { value: 'ⶇ', next: null }, A: { value: 'ⶇ', next: null } } },
+ O: { value: 'ቾ', next: { a: { value: 'ⶇ', next: null }, A: { value: 'ⶇ', next: null } } },
+ c: {
+ value: 'ⶭ',
+ next: {
+ e: { value: 'ⶨ', next: null },
+ E: { value: 'ⶨ', next: null },
+ u: { value: 'ⶩ', next: null },
+ U: { value: 'ⶩ', next: null },
+ i: { value: 'ⶪ', next: { e: { value: 'ⶬ', next: null }, E: { value: 'ⶬ', next: null } } },
+ I: { value: 'ⶪ', next: { e: { value: 'ⶬ', next: null }, E: { value: 'ⶬ', next: null } } },
+ a: { value: 'ⶫ', next: null },
+ A: { value: 'ⶫ', next: null },
+ o: { value: 'ⶮ', next: null },
+ O: { value: 'ⶮ', next: null },
+ },
+ },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ e: { value: 'ነ', next: null },
+ E: { value: 'ነ', next: null },
+ u: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ U: { value: 'ኑ', next: { a: { value: 'ኗ', next: null }, A: { value: 'ኗ', next: null } } },
+ i: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ I: { value: 'ኒ', next: { e: { value: 'ኔ', next: null }, E: { value: 'ኔ', next: null } } },
+ a: { value: 'ና', next: null },
+ A: { value: 'ና', next: null },
+ o: { value: 'ኖ', next: { a: { value: 'ⶈ', next: null }, A: { value: 'ⶈ', next: null } } },
+ O: { value: 'ኖ', next: { a: { value: 'ⶈ', next: null }, A: { value: 'ⶈ', next: null } } },
+ },
+ },
+ N: {
+ value: 'ኝ',
+ next: {
+ e: { value: 'ኘ', next: null },
+ E: { value: 'ኘ', next: null },
+ u: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ U: { value: 'ኙ', next: { a: { value: 'ኟ', next: null }, A: { value: 'ኟ', next: null } } },
+ i: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ I: { value: 'ኚ', next: { e: { value: 'ኜ', next: null }, E: { value: 'ኜ', next: null } } },
+ a: { value: 'ኛ', next: null },
+ A: { value: 'ኛ', next: null },
+ o: { value: 'ኞ', next: { a: { value: 'ⶉ', next: null }, A: { value: 'ⶉ', next: null } } },
+ O: { value: 'ኞ', next: { a: { value: 'ⶉ', next: null }, A: { value: 'ⶉ', next: null } } },
+ },
+ },
+ a: {
+ value: 'እ',
+ next: {
+ e: { value: '', next: { e: { value: 'ኧ', next: null }, E: { value: 'ኧ', next: null } } },
+ E: { value: 'አ', next: null },
+ u: { value: 'ኡ', next: null },
+ U: { value: 'ኡ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ I: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ a: { value: 'ኣ', next: null },
+ A: { value: 'ኣ', next: null },
+ o: { value: 'ኦ', next: { a: { value: 'ⶊ', next: null }, A: { value: 'ⶊ', next: null } } },
+ O: { value: 'ኦ', next: { a: { value: 'ⶊ', next: null }, A: { value: 'ⶊ', next: null } } },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ O: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ Y: {
+ value: 'ⷍ',
+ next: {
+ e: { value: 'ⷈ', next: null },
+ E: { value: 'ⷈ', next: null },
+ u: { value: 'ⷉ', next: null },
+ U: { value: 'ⷉ', next: null },
+ i: { value: 'ⷊ', next: { e: { value: 'ⷌ', next: null }, E: { value: 'ⷌ', next: null } } },
+ I: { value: 'ⷊ', next: { e: { value: 'ⷌ', next: null }, E: { value: 'ⷌ', next: null } } },
+ a: { value: 'ⷋ', next: null },
+ A: { value: 'ⷋ', next: null },
+ o: { value: 'ⷎ', next: null },
+ O: { value: 'ⷎ', next: null },
+ },
+ },
+ },
+ },
+ K: {
+ value: 'ክ',
+ next: {
+ e: { value: 'ከ', next: null },
+ E: { value: 'ከ', next: null },
+ u: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ U: {
+ value: 'ኩ',
+ next: {
+ e: { value: 'ኰ', next: null },
+ E: { value: 'ኰ', next: null },
+ u: { value: 'ኵ', next: null },
+ U: { value: 'ኵ', next: null },
+ i: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ I: { value: 'ኲ', next: { e: { value: 'ኴ', next: null }, E: { value: 'ኴ', next: null } } },
+ a: { value: 'ኳ', next: null },
+ A: { value: 'ኳ', next: null },
+ },
+ },
+ i: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ I: { value: 'ኪ', next: { e: { value: 'ኬ', next: null }, E: { value: 'ኬ', next: null } } },
+ a: { value: 'ካ', next: null },
+ A: { value: 'ካ', next: null },
+ o: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ O: { value: 'ኮ', next: { a: { value: 'ኯ', next: null }, A: { value: 'ኯ', next: null } } },
+ Y: {
+ value: 'ⷕ',
+ next: {
+ e: { value: 'ⷐ', next: null },
+ E: { value: 'ⷐ', next: null },
+ u: { value: 'ⷑ', next: null },
+ U: { value: 'ⷑ', next: null },
+ i: { value: 'ⷒ', next: { e: { value: 'ⷔ', next: null }, E: { value: 'ⷔ', next: null } } },
+ I: { value: 'ⷒ', next: { e: { value: 'ⷔ', next: null }, E: { value: 'ⷔ', next: null } } },
+ a: { value: 'ⷓ', next: null },
+ A: { value: 'ⷓ', next: null },
+ o: { value: 'ⷖ', next: null },
+ O: { value: 'ⷖ', next: null },
+ },
+ },
+ },
+ },
+ w: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ O: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ },
+ },
+ W: {
+ value: 'ው',
+ next: {
+ e: { value: 'ወ', next: null },
+ E: { value: 'ወ', next: null },
+ u: { value: 'ዉ', next: null },
+ U: { value: 'ዉ', next: null },
+ i: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ I: { value: 'ዊ', next: { e: { value: 'ዌ', next: null }, E: { value: 'ዌ', next: null } } },
+ a: { value: 'ዋ', next: null },
+ A: { value: 'ዋ', next: null },
+ o: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ O: { value: 'ዎ', next: { a: { value: 'ዏ', next: null }, A: { value: 'ዏ', next: null } } },
+ },
+ },
+ A: {
+ value: 'ዐ',
+ next: {
+ e: { value: 'ዕ', next: null },
+ E: { value: 'ዕ', next: null },
+ u: { value: 'ዑ', next: null },
+ U: { value: 'ዑ', next: null },
+ i: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ a: { value: 'ዓ', next: null },
+ A: { value: 'ዓ', next: null },
+ o: { value: 'ዖ', next: null },
+ O: { value: 'ዖ', next: null },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ e: { value: 'ዘ', next: null },
+ E: { value: 'ዘ', next: null },
+ u: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ U: { value: 'ዙ', next: { a: { value: 'ዟ', next: null }, A: { value: 'ዟ', next: null } } },
+ i: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ I: { value: 'ዚ', next: { e: { value: 'ዜ', next: null }, E: { value: 'ዜ', next: null } } },
+ a: { value: 'ዛ', next: null },
+ A: { value: 'ዛ', next: null },
+ o: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ O: { value: 'ዞ', next: { a: { value: 'ⶋ', next: null }, A: { value: 'ⶋ', next: null } } },
+ },
+ },
+ Z: {
+ value: 'ዥ',
+ next: {
+ e: { value: 'ዠ', next: null },
+ E: { value: 'ዠ', next: null },
+ u: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ U: { value: 'ዡ', next: { a: { value: 'ዧ', next: null }, A: { value: 'ዧ', next: null } } },
+ i: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ I: { value: 'ዢ', next: { e: { value: 'ዤ', next: null }, E: { value: 'ዤ', next: null } } },
+ a: { value: 'ዣ', next: null },
+ A: { value: 'ዣ', next: null },
+ o: { value: 'ዦ', next: null },
+ O: { value: 'ዦ', next: null },
+ Z: {
+ value: 'ⶵ',
+ next: {
+ e: { value: 'ⶰ', next: null },
+ E: { value: 'ⶰ', next: null },
+ u: { value: 'ⶱ', next: null },
+ U: { value: 'ⶱ', next: null },
+ i: { value: 'ⶲ', next: { e: { value: 'ⶴ', next: null }, E: { value: 'ⶴ', next: null } } },
+ I: { value: 'ⶲ', next: { e: { value: 'ⶴ', next: null }, E: { value: 'ⶴ', next: null } } },
+ a: { value: 'ⶳ', next: null },
+ A: { value: 'ⶳ', next: null },
+ o: { value: 'ⶶ', next: null },
+ O: { value: 'ⶶ', next: null },
+ },
+ },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ O: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ },
+ },
+ Y: {
+ value: 'ይ',
+ next: {
+ e: { value: 'የ', next: null },
+ E: { value: 'የ', next: null },
+ u: { value: 'ዩ', next: null },
+ U: { value: 'ዩ', next: null },
+ i: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ I: { value: 'ዪ', next: { e: { value: 'ዬ', next: null }, E: { value: 'ዬ', next: null } } },
+ a: { value: 'ያ', next: null },
+ A: { value: 'ያ', next: null },
+ o: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ O: { value: 'ዮ', next: { a: { value: 'ዯ', next: null }, A: { value: 'ዯ', next: null } } },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ e: { value: 'ደ', next: null },
+ E: { value: 'ደ', next: null },
+ u: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ U: { value: 'ዱ', next: { a: { value: 'ዷ', next: null }, A: { value: 'ዷ', next: null } } },
+ i: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ I: { value: 'ዲ', next: { e: { value: 'ዴ', next: null }, E: { value: 'ዴ', next: null } } },
+ a: { value: 'ዳ', next: null },
+ A: { value: 'ዳ', next: null },
+ o: { value: 'ዶ', next: { a: { value: 'ⶌ', next: null }, A: { value: 'ⶌ', next: null } } },
+ O: { value: 'ዶ', next: { a: { value: 'ⶌ', next: null }, A: { value: 'ⶌ', next: null } } },
+ },
+ },
+ D: {
+ value: 'ዽ',
+ next: {
+ e: { value: 'ዸ', next: null },
+ E: { value: 'ዸ', next: null },
+ u: { value: 'ዹ', next: { a: { value: 'ዿ', next: null }, A: { value: 'ዿ', next: null } } },
+ U: { value: 'ዹ', next: { a: { value: 'ዿ', next: null }, A: { value: 'ዿ', next: null } } },
+ i: { value: 'ዺ', next: { e: { value: 'ዼ', next: null }, E: { value: 'ዼ', next: null } } },
+ I: { value: 'ዺ', next: { e: { value: 'ዼ', next: null }, E: { value: 'ዼ', next: null } } },
+ a: { value: 'ዻ', next: null },
+ A: { value: 'ዻ', next: null },
+ o: { value: 'ዾ', next: { a: { value: 'ⶍ', next: null }, A: { value: 'ⶍ', next: null } } },
+ O: { value: 'ዾ', next: { a: { value: 'ⶍ', next: null }, A: { value: 'ⶍ', next: null } } },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ O: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ },
+ },
+ J: {
+ value: 'ጅ',
+ next: {
+ e: { value: 'ጀ', next: null },
+ E: { value: 'ጀ', next: null },
+ u: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ U: { value: 'ጁ', next: { a: { value: 'ጇ', next: null }, A: { value: 'ጇ', next: null } } },
+ i: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ I: { value: 'ጂ', next: { e: { value: 'ጄ', next: null }, E: { value: 'ጄ', next: null } } },
+ a: { value: 'ጃ', next: null },
+ A: { value: 'ጃ', next: null },
+ o: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ O: { value: 'ጆ', next: { a: { value: 'ⶎ', next: null }, A: { value: 'ⶎ', next: null } } },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ e: { value: 'ገ', next: null },
+ E: { value: 'ገ', next: null },
+ u: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ U: {
+ value: 'ጉ',
+ next: {
+ e: { value: 'ጐ', next: null },
+ E: { value: 'ጐ', next: null },
+ u: { value: 'ጕ', next: null },
+ U: { value: 'ጕ', next: null },
+ i: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ I: { value: 'ጒ', next: { e: { value: 'ጔ', next: null }, E: { value: 'ጔ', next: null } } },
+ a: { value: 'ጓ', next: null },
+ A: { value: 'ጓ', next: null },
+ },
+ },
+ i: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ I: { value: 'ጊ', next: { e: { value: 'ጌ', next: null }, E: { value: 'ጌ', next: null } } },
+ a: { value: 'ጋ', next: null },
+ A: { value: 'ጋ', next: null },
+ o: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ O: { value: 'ጎ', next: { a: { value: 'ጏ', next: null }, A: { value: 'ጏ', next: null } } },
+ Y: {
+ value: 'ⷝ',
+ next: {
+ e: { value: 'ⷘ', next: null },
+ E: { value: 'ⷘ', next: null },
+ u: { value: 'ⷙ', next: null },
+ U: { value: 'ⷙ', next: null },
+ i: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ I: { value: 'ⷚ', next: { e: { value: 'ⷜ', next: null }, E: { value: 'ⷜ', next: null } } },
+ a: { value: 'ⷛ', next: null },
+ A: { value: 'ⷛ', next: null },
+ o: { value: 'ⷞ', next: null },
+ O: { value: 'ⷞ', next: null },
+ },
+ },
+ },
+ },
+ G: {
+ value: 'ጝ',
+ next: {
+ e: { value: 'ጘ', next: null },
+ E: { value: 'ጘ', next: null },
+ u: {
+ value: 'ጙ',
+ next: {
+ e: { value: 'ⶓ', next: null },
+ E: { value: 'ⶓ', next: null },
+ u: { value: 'ⶖ', next: null },
+ U: { value: 'ⶖ', next: null },
+ i: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ I: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ a: { value: 'ጟ', next: null },
+ A: { value: 'ጟ', next: null },
+ },
+ },
+ U: {
+ value: 'ጙ',
+ next: {
+ e: { value: 'ⶓ', next: null },
+ E: { value: 'ⶓ', next: null },
+ u: { value: 'ⶖ', next: null },
+ U: { value: 'ⶖ', next: null },
+ i: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ I: { value: 'ⶔ', next: { e: { value: 'ⶕ', next: null }, E: { value: 'ⶕ', next: null } } },
+ a: { value: 'ጟ', next: null },
+ A: { value: 'ጟ', next: null },
+ },
+ },
+ i: { value: 'ጚ', next: { e: { value: 'ጜ', next: null }, E: { value: 'ጜ', next: null } } },
+ I: { value: 'ጚ', next: { e: { value: 'ጜ', next: null }, E: { value: 'ጜ', next: null } } },
+ a: { value: 'ጛ', next: null },
+ A: { value: 'ጛ', next: null },
+ o: { value: 'ጞ', next: null },
+ O: { value: 'ጞ', next: null },
+ },
+ },
+ T: {
+ value: 'ጥ',
+ next: {
+ e: { value: 'ጠ', next: null },
+ E: { value: 'ጠ', next: null },
+ u: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ U: { value: 'ጡ', next: { a: { value: 'ጧ', next: null }, A: { value: 'ጧ', next: null } } },
+ i: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ I: { value: 'ጢ', next: { e: { value: 'ጤ', next: null }, E: { value: 'ጤ', next: null } } },
+ a: { value: 'ጣ', next: null },
+ A: { value: 'ጣ', next: null },
+ o: { value: 'ጦ', next: { a: { value: 'ⶏ', next: null }, A: { value: 'ⶏ', next: null } } },
+ O: { value: 'ጦ', next: { a: { value: 'ⶏ', next: null }, A: { value: 'ⶏ', next: null } } },
+ },
+ },
+ C: {
+ value: 'ጭ',
+ next: {
+ e: { value: 'ጨ', next: null },
+ E: { value: 'ጨ', next: null },
+ u: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ U: { value: 'ጩ', next: { a: { value: 'ጯ', next: null }, A: { value: 'ጯ', next: null } } },
+ i: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ I: { value: 'ጪ', next: { e: { value: 'ጬ', next: null }, E: { value: 'ጬ', next: null } } },
+ a: { value: 'ጫ', next: null },
+ A: { value: 'ጫ', next: null },
+ o: { value: 'ጮ', next: { a: { value: 'ⶐ', next: null }, A: { value: 'ⶐ', next: null } } },
+ O: { value: 'ጮ', next: { a: { value: 'ⶐ', next: null }, A: { value: 'ⶐ', next: null } } },
+ C: {
+ value: 'ⶽ',
+ next: {
+ e: { value: 'ⶸ', next: null },
+ E: { value: 'ⶸ', next: null },
+ u: { value: 'ⶹ', next: null },
+ U: { value: 'ⶹ', next: null },
+ i: { value: 'ⶺ', next: { e: { value: 'ⶼ', next: null }, E: { value: 'ⶼ', next: null } } },
+ I: { value: 'ⶺ', next: { e: { value: 'ⶼ', next: null }, E: { value: 'ⶼ', next: null } } },
+ a: { value: 'ⶻ', next: null },
+ A: { value: 'ⶻ', next: null },
+ o: { value: 'ⶾ', next: null },
+ O: { value: 'ⶾ', next: null },
+ },
+ },
+ },
+ },
+ P: {
+ value: 'ጵ',
+ next: {
+ e: { value: 'ጰ', next: null },
+ E: { value: 'ጰ', next: null },
+ u: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ U: { value: 'ጱ', next: { a: { value: 'ጷ', next: null }, A: { value: 'ጷ', next: null } } },
+ i: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ I: { value: 'ጲ', next: { e: { value: 'ጴ', next: null }, E: { value: 'ጴ', next: null } } },
+ a: { value: 'ጳ', next: null },
+ A: { value: 'ጳ', next: null },
+ o: { value: 'ጶ', next: { a: { value: 'ⶑ', next: null }, A: { value: 'ⶑ', next: null } } },
+ O: { value: 'ጶ', next: { a: { value: 'ⶑ', next: null }, A: { value: 'ⶑ', next: null } } },
+ },
+ },
+ S: {
+ value: 'ጽ',
+ next: {
+ e: { value: 'ጸ', next: null },
+ E: { value: 'ጸ', next: null },
+ u: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ U: { value: 'ጹ', next: { a: { value: 'ጿ', next: null }, A: { value: 'ጿ', next: null } } },
+ i: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ I: { value: 'ጺ', next: { e: { value: 'ጼ', next: null }, E: { value: 'ጼ', next: null } } },
+ a: { value: 'ጻ', next: null },
+ A: { value: 'ጻ', next: null },
+ o: { value: 'ጾ', next: null },
+ O: { value: 'ጾ', next: null },
+ S: {
+ value: 'ፅ',
+ next: {
+ e: { value: 'ፀ', next: null },
+ E: { value: 'ፀ', next: null },
+ u: { value: 'ፁ', next: null },
+ U: { value: 'ፁ', next: null },
+ i: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ I: { value: 'ፂ', next: { e: { value: 'ፄ', next: null }, E: { value: 'ፄ', next: null } } },
+ a: { value: 'ፃ', next: null },
+ A: { value: 'ፃ', next: null },
+ o: { value: 'ፆ', next: { a: { value: 'ፇ', next: null }, A: { value: 'ፇ', next: null } } },
+ O: { value: 'ፆ', next: { a: { value: 'ፇ', next: null }, A: { value: 'ፇ', next: null } } },
+ },
+ },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ U: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ Y: { value: 'ፚ', next: null },
+ },
+ },
+ F: {
+ value: 'ፍ',
+ next: {
+ e: { value: 'ፈ', next: null },
+ E: { value: 'ፈ', next: null },
+ u: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ U: {
+ value: 'ፉ',
+ next: {
+ e: { value: 'ᎈ', next: null },
+ E: { value: 'ᎈ', next: null },
+ u: { value: 'ᎉ', next: null },
+ U: { value: 'ᎉ', next: null },
+ i: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ I: { value: 'ᎋ', next: { e: { value: 'ᎊ', next: null }, E: { value: 'ᎊ', next: null } } },
+ a: { value: 'ፏ', next: null },
+ A: { value: 'ፏ', next: null },
+ },
+ },
+ i: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ I: { value: 'ፊ', next: { e: { value: 'ፌ', next: null }, E: { value: 'ፌ', next: null } } },
+ a: { value: 'ፋ', next: null },
+ A: { value: 'ፋ', next: null },
+ o: { value: 'ፎ', next: null },
+ O: { value: 'ፎ', next: null },
+ Y: { value: 'ፚ', next: null },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ e: { value: 'ፐ', next: null },
+ E: { value: 'ፐ', next: null },
+ u: {
+ value: 'ፑ',
+ next: {
+ e: { value: 'ᎌ', next: null },
+ E: { value: 'ᎌ', next: null },
+ u: { value: 'ᎍ', next: null },
+ U: { value: 'ᎍ', next: null },
+ i: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ I: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ a: { value: 'ፗ', next: null },
+ A: { value: 'ፗ', next: null },
+ },
+ },
+ U: {
+ value: 'ፑ',
+ next: {
+ e: { value: 'ᎌ', next: null },
+ E: { value: 'ᎌ', next: null },
+ u: { value: 'ᎍ', next: null },
+ U: { value: 'ᎍ', next: null },
+ i: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ I: { value: 'ᎏ', next: { e: { value: 'ᎎ', next: null }, E: { value: 'ᎎ', next: null } } },
+ a: { value: 'ፗ', next: null },
+ A: { value: 'ፗ', next: null },
+ },
+ },
+ i: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ I: { value: 'ፒ', next: { e: { value: 'ፔ', next: null }, E: { value: 'ፔ', next: null } } },
+ a: { value: 'ፓ', next: null },
+ A: { value: 'ፓ', next: null },
+ o: { value: 'ፖ', next: { a: { value: 'ⶒ', next: null }, A: { value: 'ⶒ', next: null } } },
+ O: { value: 'ፖ', next: { a: { value: 'ⶒ', next: null }, A: { value: 'ⶒ', next: null } } },
+ },
+ },
+ e: { value: 'እ', next: null },
+ i: { value: 'ኢ', next: { e: { value: 'ኤ', next: null }, E: { value: 'ኤ', next: null } } },
+ o: { value: 'ኦ', next: null },
+ u: { value: 'ኡ', next: null },
+ E: { value: 'ዕ', next: null },
+ I: { value: 'ዒ', next: { e: { value: 'ዔ', next: null }, E: { value: 'ዔ', next: null } } },
+ O: { value: 'ዖ', next: null },
+ U: { value: 'ዑ', next: null },
+ ':': {
+ value: '፡',
+ next: { ':': { value: '።', next: { ':': { value: ':', next: null } } }, ',': { value: '፥', next: null } },
+ },
+ ',': { value: '፣', next: { ',': { value: '፥', next: { ',': { value: ',', next: null } } } } },
+ ';': { value: '፤', next: { ';': { value: ';', next: null } } },
+ '<': { value: '‹', next: { '<': { value: '«', next: { '<': { value: '<', next: null } } } } },
+ '>': { value: '›', next: { '>': { value: '»', next: { '>': { value: '>', next: null } } } } },
+ },
+};
+export default layout;
diff --git a/packages/web/src/KeywriteWeb.ts b/packages/web/src/KeywriteWeb.ts
new file mode 100644
index 0000000..b75df2a
--- /dev/null
+++ b/packages/web/src/KeywriteWeb.ts
@@ -0,0 +1,79 @@
+import { Keywrite, KeyboardLayout } from '@keywrite/core';
+
+export type Input = HTMLInputElement | HTMLTextAreaElement;
+export class KeywriteWeb extends Keywrite {
+ public on: boolean;
+ private input: Input;
+
+ constructor(input: Input, layouts: Record, on = true) {
+ super(layouts);
+
+ this.on = on;
+ this.input = input;
+ this.addEvents();
+ }
+ private addEvents(): void {
+ this.input.addEventListener('keydown' as const, (e) => {
+ //eslint-disable-next-line
+ this.keyDownEventHandler(e as any);
+ });
+ this.input.addEventListener('focusout', () => {
+ this.focusOutEventHandler();
+ });
+ }
+ private changeInputValue(newValue: string): void {
+ const e = new window.Event('input', { bubbles: true });
+ this.setNativeValue(this.input, newValue);
+ this.input.dispatchEvent(e);
+ }
+ private writeSymbol(symbol: string, replace: boolean): void {
+ const index = this.input.selectionStart || 0;
+ if (replace) {
+ this.changeInputValue(this.replaceStringAt(this.input.value, symbol, index));
+ this.input.setSelectionRange(index, index);
+ } else {
+ this.changeInputValue(this.insertStringAt(this.input.value, symbol, index));
+ this.input.setSelectionRange(index + 1, index + 1);
+ }
+ }
+ private resolveSymbol(event: KeyboardEvent): boolean {
+ if (event.ctrlKey || event.altKey || event.metaKey) {
+ return false;
+ } else {
+ event.preventDefault();
+ return true;
+ }
+ }
+ private keyDownEventHandler(event: KeyboardEvent): void {
+ if (this.on) {
+ if (this.keyBlacklist.indexOf(event.key) === -1) {
+ const char = event.key;
+ const { symbol, replace } = this.write(char);
+ if (this.resolveSymbol(event)) {
+ this.writeSymbol(symbol, replace);
+ }
+ } else {
+ this.resetScope();
+ }
+ }
+ }
+ private focusOutEventHandler(): void {
+ if (this.on) {
+ this.resetScope();
+ }
+ }
+ private insertStringAt(string: string, stringToInsert: string, index: number): string {
+ if (index > 0) {
+ return string.substring(0, index) + stringToInsert + string.substr(index);
+ }
+ return stringToInsert + string;
+ }
+ private replaceStringAt(string: string, stringToInsert: string, index: number): string {
+ return string.substring(0, index - 1) + stringToInsert + string.substr(index);
+ }
+ private setNativeValue(element: Input, value: string): void {
+ const prototype = Object.getPrototypeOf(element);
+ const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype, 'value')?.set;
+ prototypeValueSetter?.call(element, value);
+ }
+}
diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts
new file mode 100644
index 0000000..bbfb9fa
--- /dev/null
+++ b/packages/web/src/index.ts
@@ -0,0 +1 @@
+export * from './KeywriteWeb';
diff --git a/packages/web/tests/KeywriteWeb.spec.ts b/packages/web/tests/KeywriteWeb.spec.ts
new file mode 100644
index 0000000..6741010
--- /dev/null
+++ b/packages/web/tests/KeywriteWeb.spec.ts
@@ -0,0 +1,121 @@
+/**
+ * @jest-environment jsdom
+ */
+import { KeywriteWeb } from '../src';
+import Layout from './layout';
+import { simulateTyping, simulateFocusout } from './utils';
+describe('KeywriteWeb.ts', () => {
+ let input: any = null;
+ let textarea: any = null;
+ const KeyboardLayouts = { layout1: Layout };
+ beforeEach(() => {
+ document.body.innerHTML = `
+
+
+ `;
+ // set reference to the input elements
+ input = document.querySelector('input') as HTMLInputElement;
+ textarea = document.querySelector('textarea') as HTMLTextAreaElement;
+ });
+ it('should work with HTMLInputElement & HTMLTextAreaElement', () => {
+ const newInstance1 = new KeywriteWeb(input, KeyboardLayouts);
+ const newInstance2 = new KeywriteWeb(textarea, KeyboardLayouts);
+ expect(newInstance1).toBeDefined();
+ expect(newInstance2).toBeDefined();
+ });
+ it('should be able to turn on after initialization', () => {
+ const inputInstance = new KeywriteWeb(input, KeyboardLayouts, false);
+ const textareaInstance = new KeywriteWeb(textarea, KeyboardLayouts, false);
+ const text = 'selam selam';
+ const expectedText = 'ሰላም ሰላም';
+ // input
+ inputInstance.on = true;
+ expect(inputInstance.on).toEqual(true);
+ simulateTyping(input, text);
+ expect(input.value).toEqual(expectedText);
+ // textarea
+ textareaInstance.on = true;
+ expect(textareaInstance.on).toEqual(true);
+ simulateTyping(textarea, text);
+ expect(input.value).toEqual(expectedText);
+ });
+ it('should be able to turn off after initialization', () => {
+ const inputInstance = new KeywriteWeb(input, KeyboardLayouts, true);
+ const textareaInstance = new KeywriteWeb(textarea, KeyboardLayouts, true);
+ const text = 'selam';
+ const expectedText = 'selam';
+ // input
+ inputInstance.on = false;
+ expect(inputInstance.on).toEqual(false);
+ simulateTyping(input, text);
+ simulateFocusout(input);
+ expect(input.value).toEqual(expectedText);
+ // textarea
+ textareaInstance.on = false;
+ expect(textareaInstance.on).toEqual(false);
+ simulateTyping(textarea, text);
+ simulateFocusout(textarea);
+ expect(input.value).toEqual(expectedText);
+ });
+ it('should not write character if (CTRL) key had been triggered ', () => {
+ new KeywriteWeb(input, KeyboardLayouts, true);
+ new KeywriteWeb(textarea, KeyboardLayouts, true);
+
+ const text = ['s', 'e', 'l', 'Control', 'a', 'm'];
+ const expectedText = 'ሰልም';
+ // input
+ simulateTyping(input, text);
+ expect(input.value).toEqual(expectedText);
+ // textarea
+ simulateTyping(textarea, text);
+ expect(input.value).toEqual(expectedText);
+ });
+
+ it('should not write character if (ALT) key had been triggered ', () => {
+ new KeywriteWeb(input, KeyboardLayouts, true);
+ new KeywriteWeb(textarea, KeyboardLayouts, true);
+
+ const text = ['s', 'e', 'l', 'Alt', 'a', 'm'];
+ const expectedText = 'ሰልም';
+ // input
+ simulateTyping(input, text);
+ expect(input.value).toEqual(expectedText);
+ // textarea
+ simulateTyping(textarea, text);
+ expect(input.value).toEqual(expectedText);
+ });
+
+ it('should not write character if (META) key had been triggered ', () => {
+ new KeywriteWeb(input, KeyboardLayouts, true);
+ new KeywriteWeb(textarea, KeyboardLayouts, true);
+
+ const text = ['s', 'e', 'l', 'Meta', 'a', 'm'];
+ const expectedText = 'ሰልም';
+ // input
+ simulateTyping(input, text);
+ expect(input.value).toEqual(expectedText);
+ // textarea
+ simulateTyping(textarea, text);
+ expect(input.value).toEqual(expectedText);
+ });
+
+ it('should reset scope if input looses focus', () => {
+ new KeywriteWeb(input, KeyboardLayouts, true);
+ new KeywriteWeb(textarea, KeyboardLayouts, true);
+ const texts = [
+ ['s', 'e', 'l'],
+ ['a', 'm'],
+ ];
+ const expectedText = 'ሰልአም';
+ for (const text of texts) {
+ // input
+ simulateTyping(input, text);
+ simulateFocusout(input);
+ // textarea
+ simulateTyping(textarea, text);
+ simulateFocusout(textarea);
+ }
+ expect(input.value).toEqual(expectedText);
+ expect(input.value).toEqual(expectedText);
+ });
+});
diff --git a/packages/web/tests/layout.ts b/packages/web/tests/layout.ts
new file mode 100644
index 0000000..f78d928
--- /dev/null
+++ b/packages/web/tests/layout.ts
@@ -0,0 +1,1848 @@
+export default {
+ a: {
+ value: 'አ',
+ next: null,
+ },
+ e: {
+ value: 'እ',
+ next: {
+ e: {
+ value: 'ኤ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኢ',
+ next: {
+ e: {
+ value: 'ኤ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ኦ',
+ next: null,
+ },
+ u: {
+ value: 'ኡ',
+ next: null,
+ },
+ w: {
+ value: 'ው',
+ next: {
+ a: {
+ value: 'ዋ',
+ next: null,
+ },
+ i: {
+ value: 'ዊ',
+ next: {
+ e: {
+ value: 'ዌ',
+ next: null,
+ },
+ },
+ },
+ e: {
+ value: 'ወ',
+ next: {
+ e: {
+ value: 'ዌ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ዉ',
+ next: null,
+ },
+ o: {
+ value: 'ዎ',
+ next: null,
+ },
+ },
+ },
+ s: {
+ value: 'ስ',
+ next: {
+ a: {
+ value: 'ሳ',
+ next: null,
+ },
+ e: {
+ value: 'ሰ',
+ next: {
+ e: {
+ value: 'ሴ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሲ',
+ next: {
+ e: {
+ value: 'ሴ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ሽ',
+ next: {
+ a: {
+ value: 'ሻ',
+ next: null,
+ },
+ e: {
+ value: 'ሸ',
+ next: {
+ e: {
+ value: 'ሼ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሺ',
+ next: {
+ e: {
+ value: 'ሼ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሹ',
+ next: {
+ a: {
+ value: 'ሿ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሾ',
+ next: null,
+ },
+ },
+ },
+ z: {
+ value: 'ሥ',
+ next: {
+ a: {
+ value: 'ሣ',
+ next: null,
+ },
+ e: {
+ value: 'ሠ',
+ next: {
+ e: {
+ value: 'ሤ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሢ',
+ next: {
+ e: {
+ value: 'ሤ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሡ',
+ next: {
+ a: {
+ value: 'ሧ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሦ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሱ',
+ next: {
+ a: {
+ value: 'ሷ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሶ',
+ next: null,
+ },
+ },
+ },
+ v: {
+ value: 'ቭ',
+ next: {
+ a: {
+ value: 'ቫ',
+ next: null,
+ },
+ e: {
+ value: 'ቨ',
+ next: {
+ e: {
+ value: 'ቬ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቪ',
+ next: {
+ e: {
+ value: 'ቬ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ቩ',
+ next: {
+ a: {
+ value: 'ቯ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ቮ',
+ next: null,
+ },
+ },
+ },
+ y: {
+ value: 'ይ',
+ next: {
+ a: {
+ value: 'ያ',
+ next: null,
+ },
+ e: {
+ value: 'የ',
+ next: {
+ e: {
+ value: 'ዬ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ዪ',
+ next: {
+ e: {
+ value: 'ዬ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ዩ',
+ next: null,
+ },
+ o: {
+ value: 'ዮ',
+ next: {
+ a: {
+ value: 'ዯ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ x: {
+ value: 'ኅ',
+ next: {
+ a: {
+ value: 'ኃ',
+ next: null,
+ },
+ e: {
+ value: 'ኀ',
+ next: {
+ e: {
+ value: 'ኄ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ኍ',
+ next: {
+ a: {
+ value: 'ኋ',
+ next: null,
+ },
+ e: {
+ value: 'ኈ',
+ next: {
+ e: {
+ value: 'ኌ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኊ',
+ next: {
+ e: {
+ value: 'ኌ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ i: {
+ value: 'ኂ',
+ next: {
+ e: {
+ value: 'ኄ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ኁ',
+ next: {
+ a: {
+ value: 'ኋ',
+ next: null,
+ },
+ e: {
+ value: 'ኈ',
+ next: {
+ e: {
+ value: 'ኌ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኊ',
+ next: {
+ e: {
+ value: 'ኌ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ o: {
+ value: 'ኆ',
+ next: {
+ a: {
+ value: 'ኇ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ r: {
+ value: 'ር',
+ next: {
+ a: {
+ value: 'ራ',
+ next: null,
+ },
+ e: {
+ value: 'ረ',
+ next: {
+ e: {
+ value: 'ሬ',
+ next: null,
+ },
+ },
+ },
+ y: {
+ value: null,
+ next: {
+ a: {
+ value: 'ፘ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሪ',
+ next: {
+ e: {
+ value: 'ሬ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሩ',
+ next: {
+ a: {
+ value: 'ሯ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሮ',
+ next: null,
+ },
+ },
+ },
+ q: {
+ value: 'ቅ',
+ next: {
+ a: {
+ value: 'ቃ',
+ next: null,
+ },
+ e: {
+ value: 'ቀ',
+ next: {
+ e: {
+ value: 'ቄ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ቍ',
+ next: {
+ a: {
+ value: 'ቋ',
+ next: null,
+ },
+ e: {
+ value: 'ቈ',
+ next: {
+ e: {
+ value: 'ቌ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቊ',
+ next: {
+ e: {
+ value: 'ቌ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ i: {
+ value: 'ቂ',
+ next: {
+ e: {
+ value: 'ቄ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ቕ',
+ next: {
+ a: {
+ value: 'ቓ',
+ next: null,
+ },
+ e: {
+ value: 'ቐ',
+ next: {
+ e: {
+ value: 'ቔ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ቝ',
+ next: {
+ a: {
+ value: 'ቛ',
+ next: null,
+ },
+ e: {
+ value: 'ቘ',
+ next: {
+ e: {
+ value: 'ቜ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቚ',
+ next: {
+ e: {
+ value: 'ቜ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ i: {
+ value: 'ቒ',
+ next: {
+ e: {
+ value: 'ቔ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ቑ',
+ next: {
+ a: {
+ value: 'ቛ',
+ next: null,
+ },
+ e: {
+ value: 'ቘ',
+ next: {
+ e: {
+ value: 'ቜ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቚ',
+ next: {
+ e: {
+ value: 'ቜ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ o: {
+ value: 'ቖ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ቁ',
+ next: {
+ a: {
+ value: 'ቋ',
+ next: null,
+ },
+ e: {
+ value: 'ቈ',
+ next: {
+ e: {
+ value: 'ቌ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቊ',
+ next: {
+ e: {
+ value: 'ቌ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ o: {
+ value: 'ቆ',
+ next: {
+ a: {
+ value: 'ቇ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ c: {
+ value: 'ች',
+ next: {
+ a: {
+ value: 'ቻ',
+ next: null,
+ },
+ e: {
+ value: 'ቸ',
+ next: {
+ e: {
+ value: 'ቼ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቺ',
+ next: {
+ e: {
+ value: 'ቼ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ጭ',
+ next: {
+ a: {
+ value: 'ጫ',
+ next: null,
+ },
+ e: {
+ value: 'ጨ',
+ next: {
+ e: {
+ value: 'ጬ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጪ',
+ next: {
+ e: {
+ value: 'ጬ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጩ',
+ next: {
+ a: {
+ value: 'ጯ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ጮ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ቹ',
+ next: {
+ a: {
+ value: 'ቿ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ቾ',
+ next: null,
+ },
+ },
+ },
+ b: {
+ value: 'ብ',
+ next: {
+ a: {
+ value: 'ባ',
+ next: null,
+ },
+ e: {
+ value: 'በ',
+ next: {
+ e: {
+ value: 'ቤ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቢ',
+ next: {
+ e: {
+ value: 'ቤ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ቡ',
+ next: {
+ a: {
+ value: 'ቧ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ቦ',
+ next: null,
+ },
+ },
+ },
+ d: {
+ value: 'ድ',
+ next: {
+ a: {
+ value: 'ዳ',
+ next: null,
+ },
+ e: {
+ value: 'ደ',
+ next: {
+ e: {
+ value: 'ዴ',
+ next: null,
+ },
+ },
+ },
+ d: {
+ value: 'ዽ',
+ next: {
+ a: {
+ value: 'ዻ',
+ next: null,
+ },
+ e: {
+ value: 'ዸ',
+ next: {
+ e: {
+ value: 'ዼ',
+ next: null,
+ },
+ },
+ },
+
+ i: {
+ value: 'ዺ',
+ next: {
+ e: {
+ value: 'ዼ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ዹ',
+ next: {
+ a: {
+ value: 'ዿ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ዾ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ዲ',
+ next: {
+ e: {
+ value: 'ዴ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ዱ',
+ next: {
+ a: {
+ value: 'ዷ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ዶ',
+ next: null,
+ },
+ },
+ },
+ g: {
+ value: 'ግ',
+ next: {
+ a: {
+ value: 'ጋ',
+ next: null,
+ },
+ e: {
+ value: 'ገ',
+ next: {
+ e: {
+ value: 'ጌ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ጕ',
+ next: {
+ a: {
+ value: 'ጓ',
+ next: null,
+ },
+ e: {
+ value: 'ጐ',
+ next: {
+ e: {
+ value: 'ጔ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጒ',
+ next: {
+ e: {
+ value: 'ጔ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ g: {
+ value: 'ጝ',
+ next: {
+ a: {
+ value: 'ጛ',
+ next: null,
+ },
+ e: {
+ value: 'ጘ',
+ next: {
+ e: {
+ value: 'ጜ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጚ',
+ next: {
+ e: {
+ value: 'ጜ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጙ',
+ next: {
+ a: {
+ value: 'ጟ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ጞ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጊ',
+ next: {
+ e: {
+ value: 'ጌ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጉ',
+ next: {
+ a: {
+ value: 'ጓ',
+ next: null,
+ },
+ e: {
+ value: 'ጐ',
+ next: {
+ e: {
+ value: 'ጔ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጒ',
+ next: {
+ e: {
+ value: 'ጔ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ o: {
+ value: 'ጎ',
+ next: {
+ a: {
+ value: 'ጏ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ f: {
+ value: 'ፍ',
+ next: {
+ a: {
+ value: 'ፋ',
+ next: null,
+ },
+ e: {
+ value: 'ፈ',
+ next: {
+ e: {
+ value: 'ፌ',
+ next: null,
+ },
+ },
+ },
+ y: {
+ value: null,
+ next: {
+ a: {
+ value: 'ፚ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ፊ',
+ next: {
+ e: {
+ value: 'ፌ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ፉ',
+ next: {
+ a: {
+ value: 'ፏ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ፎ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ህ',
+ next: {
+ a: {
+ value: 'ሃ',
+ next: null,
+ },
+ e: {
+ value: 'ሀ',
+ next: {
+ e: {
+ value: 'ሄ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሂ',
+ next: {
+ e: {
+ value: 'ሄ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ሕ',
+ next: {
+ a: {
+ value: 'ሓ',
+ next: null,
+ },
+ e: {
+ value: 'ሐ',
+ next: {
+ e: {
+ value: 'ሔ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሒ',
+ next: {
+ e: {
+ value: 'ሔ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሑ',
+ next: {
+ a: {
+ value: 'ሗ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሖ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሁ',
+ next: null,
+ },
+ o: {
+ value: 'ሆ',
+ next: null,
+ },
+ },
+ },
+ k: {
+ value: 'ክ',
+ next: {
+ a: {
+ value: 'ካ',
+ next: null,
+ },
+ e: {
+ value: 'ከ',
+ next: {
+ e: {
+ value: 'ኬ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ኵ',
+ next: {
+ a: {
+ value: 'ኳ',
+ next: null,
+ },
+ e: {
+ value: 'ኰ',
+ next: {
+ e: {
+ value: 'ኴ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኲ',
+ next: {
+ e: {
+ value: 'ኴ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ x: {
+ value: 'ኽ',
+ next: {
+ a: {
+ value: 'ኻ',
+ next: null,
+ },
+ e: {
+ value: 'ኸ',
+ next: {
+ e: {
+ value: 'ኼ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ዅ',
+ next: {
+ a: {
+ value: 'ዃ',
+ next: null,
+ },
+ e: {
+ value: 'ዀ',
+ next: {
+ e: {
+ value: 'ዄ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ዂ',
+ next: {
+ e: {
+ value: 'ዄ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ i: {
+ value: 'ኺ',
+ next: {
+ e: {
+ value: 'ኼ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ኹ',
+ next: null,
+ },
+ o: {
+ value: 'ኾ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኪ',
+ next: {
+ e: {
+ value: 'ኬ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ኩ',
+ next: {
+ a: {
+ value: 'ኳ',
+ next: null,
+ },
+ e: {
+ value: 'ኰ',
+ next: {
+ e: {
+ value: 'ኴ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኲ',
+ next: {
+ e: {
+ value: 'ኴ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ o: {
+ value: 'ኮ',
+ next: {
+ a: {
+ value: 'ኯ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ j: {
+ value: 'ጅ',
+ next: {
+ a: {
+ value: 'ጃ',
+ next: null,
+ },
+ e: {
+ value: 'ጀ',
+ next: {
+ e: {
+ value: 'ጄ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጂ',
+ next: {
+ e: {
+ value: 'ጄ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጁ',
+ next: {
+ a: {
+ value: 'ጇ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ጆ',
+ next: null,
+ },
+ },
+ },
+ m: {
+ value: 'ም',
+ next: {
+ a: {
+ value: 'ማ',
+ next: null,
+ },
+ e: {
+ value: 'መ',
+ next: {
+ e: {
+ value: 'ሜ',
+ next: null,
+ },
+ },
+ },
+ y: {
+ value: null,
+ next: {
+ a: {
+ value: 'ፙ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሚ',
+ next: {
+ e: {
+ value: 'ሜ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሙ',
+ next: {
+ a: {
+ value: 'ሟ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሞ',
+ next: null,
+ },
+ },
+ },
+ l: {
+ value: 'ል',
+ next: {
+ a: {
+ value: 'ላ',
+ next: null,
+ },
+ e: {
+ value: 'ለ',
+ next: {
+ e: {
+ value: 'ሌ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ሊ',
+ next: {
+ e: {
+ value: 'ሌ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ሉ',
+ next: {
+ a: {
+ value: 'ሏ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ሎ',
+ next: null,
+ },
+ },
+ },
+ n: {
+ value: 'ን',
+ next: {
+ a: {
+ value: 'ና',
+ next: null,
+ },
+ e: {
+ value: 'ነ',
+ next: {
+ e: {
+ value: 'ኔ',
+ next: null,
+ },
+ },
+ },
+ y: {
+ value: 'ኝ',
+ next: {
+ a: {
+ value: 'ኛ',
+ next: null,
+ },
+ e: {
+ value: 'ኘ',
+ next: {
+ e: {
+ value: 'ኜ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኚ',
+ next: {
+ e: {
+ value: 'ኜ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ኙ',
+ next: {
+ a: {
+ value: 'ኟ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ኞ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ኒ',
+ next: {
+ e: {
+ value: 'ኔ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ኑ',
+ next: {
+ a: {
+ value: 'ኗ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ኖ',
+ next: null,
+ },
+ },
+ },
+ '1': {
+ value: '፩',
+ next: {
+ '0': {
+ value: '፲',
+ next: {
+ '0': {
+ value: '፻',
+ next: {
+ '0': {
+ value: '፲፻',
+ next: {
+ '0': {
+ value: '፻፻',
+ next: {
+ '0': {
+ value: '፲፻፻',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ p: {
+ value: 'ፕ',
+ next: {
+ a: {
+ value: 'ፓ',
+ next: null,
+ },
+ e: {
+ value: 'ፐ',
+ next: {
+ e: {
+ value: 'ፔ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ፒ',
+ next: {
+ e: {
+ value: 'ፔ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ጵ',
+ next: {
+ a: {
+ value: 'ጳ',
+ next: null,
+ },
+ e: {
+ value: 'ጰ',
+ next: {
+ e: {
+ value: 'ጴ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጲ',
+ next: {
+ e: {
+ value: 'ጴ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጱ',
+ next: {
+ a: {
+ value: 'ጷ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ጶ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ፑ',
+ next: {
+ a: {
+ value: 'ፗ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ፖ',
+ next: null,
+ },
+ },
+ },
+ '3': {
+ value: '፫',
+ next: {
+ '0': {
+ value: '፴',
+ next: null,
+ },
+ },
+ },
+ '2': {
+ value: '፪',
+ next: {
+ '0': {
+ value: '፳',
+ next: null,
+ },
+ },
+ },
+ '5': {
+ value: '፭',
+ next: {
+ '0': {
+ value: '፶',
+ next: null,
+ },
+ },
+ },
+ '4': {
+ value: '፬',
+ next: {
+ '0': {
+ value: '፵',
+ next: null,
+ },
+ },
+ },
+ '7': {
+ value: '፯',
+ next: {
+ '0': {
+ value: '፸',
+ next: null,
+ },
+ },
+ },
+ '6': {
+ value: '፮',
+ next: {
+ '0': {
+ value: '፷',
+ next: null,
+ },
+ },
+ },
+ '9': {
+ value: '፱',
+ next: {
+ '0': {
+ value: '፺',
+ next: null,
+ },
+ },
+ },
+ '8': {
+ value: '፰',
+ next: {
+ '0': {
+ value: '፹',
+ next: null,
+ },
+ },
+ },
+ z: {
+ value: 'ዝ',
+ next: {
+ a: {
+ value: 'ዛ',
+ next: null,
+ },
+ e: {
+ value: 'ዘ',
+ next: {
+ e: {
+ value: 'ዜ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ዚ',
+ next: {
+ e: {
+ value: 'ዜ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ዥ',
+ next: {
+ a: {
+ value: 'ዣ',
+ next: null,
+ },
+ e: {
+ value: 'ዠ',
+ next: {
+ e: {
+ value: 'ዤ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ዢ',
+ next: {
+ e: {
+ value: 'ዤ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ዡ',
+ next: {
+ a: {
+ value: 'ዧ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ዦ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ዙ',
+ next: {
+ a: {
+ value: 'ዟ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ዞ',
+ next: null,
+ },
+ },
+ },
+ t: {
+ value: 'ት',
+ next: {
+ a: {
+ value: 'ታ',
+ next: null,
+ },
+ e: {
+ value: 'ተ',
+ next: {
+ e: {
+ value: 'ቴ',
+ next: null,
+ },
+ },
+ },
+ s: {
+ value: 'ጽ',
+ next: {
+ a: {
+ value: 'ጻ',
+ next: null,
+ },
+ e: {
+ value: 'ጸ',
+ next: {
+ e: {
+ value: 'ጼ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጺ',
+ next: {
+ e: {
+ value: 'ጼ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጹ',
+ next: {
+ a: {
+ value: 'ጿ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ጾ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ቲ',
+ next: {
+ e: {
+ value: 'ቴ',
+ next: null,
+ },
+ },
+ },
+ h: {
+ value: 'ጥ',
+ next: {
+ a: {
+ value: 'ጣ',
+ next: null,
+ },
+ e: {
+ value: 'ጠ',
+ next: {
+ e: {
+ value: 'ጤ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ጢ',
+ next: {
+ e: {
+ value: 'ጤ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ጡ',
+ next: {
+ a: {
+ value: 'ጧ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ጦ',
+ next: null,
+ },
+ },
+ },
+ z: {
+ value: 'ፅ',
+ next: {
+ a: {
+ value: 'ፃ',
+ next: null,
+ },
+ e: {
+ value: 'ፀ',
+ next: {
+ e: {
+ value: 'ፄ',
+ next: null,
+ },
+ },
+ },
+ i: {
+ value: 'ፂ',
+ next: {
+ e: {
+ value: 'ፄ',
+ next: null,
+ },
+ },
+ },
+ u: {
+ value: 'ፁ',
+ next: {
+ a: {
+ value: 'ፇ',
+ next: null,
+ },
+ },
+ },
+ w: {
+ value: 'ፆ',
+ next: {
+ a: {
+ value: 'ፇ',
+ next: null,
+ },
+ },
+ },
+ },
+ },
+ u: {
+ value: 'ቱ',
+ next: {
+ a: {
+ value: 'ቷ',
+ next: null,
+ },
+ },
+ },
+ o: {
+ value: 'ቶ',
+ next: null,
+ },
+ },
+ },
+ ':': {
+ value: '፡',
+ next: {
+ ':': {
+ value: '።',
+ next: null,
+ },
+ },
+ },
+ '.': {
+ value: '።',
+ next: null,
+ },
+ ';': {
+ value: '፤',
+ next: null,
+ },
+ ',': {
+ value: '፣',
+ next: null,
+ },
+ '/': {
+ value: '፨',
+ next: null,
+ },
+};
diff --git a/packages/web/tests/utils.ts b/packages/web/tests/utils.ts
new file mode 100644
index 0000000..6683818
--- /dev/null
+++ b/packages/web/tests/utils.ts
@@ -0,0 +1,45 @@
+export const simulateTyping = (element: HTMLInputElement | HTMLTextAreaElement, text: string | string[]) => {
+ const list = Array.isArray(text) ? text.entries() : text.split('').entries();
+ for (const [i, char] of list) {
+ const lastIndex = i - 1;
+ element.dispatchEvent(
+ new window.KeyboardEvent('keydown', {
+ key: char,
+ code: char,
+ bubbles: true,
+ ctrlKey: lastIndex > -1 && text[lastIndex] === 'Control',
+ shiftKey: lastIndex > -1 && text[lastIndex] === 'Shift',
+ altKey: lastIndex > -1 && text[lastIndex] === 'Alt',
+ metaKey: lastIndex > -1 && text[lastIndex] === 'Meta',
+ }),
+ );
+ element.dispatchEvent(
+ new window.KeyboardEvent('keyup', {
+ key: char,
+ code: char,
+ bubbles: true,
+ }),
+ );
+ element.dispatchEvent(
+ new window.KeyboardEvent('keypress', {
+ key: char,
+ code: char,
+ bubbles: true,
+ }),
+ );
+ element.dispatchEvent(
+ new window.Event('input', {
+ bubbles: true,
+ }),
+ );
+ element.setAttribute('value', element.value + char);
+ }
+};
+
+export const simulateFocusout = (element: HTMLInputElement | HTMLTextAreaElement) => {
+ element.dispatchEvent(
+ new window.Event('focusout', {
+ bubbles: true,
+ }),
+ );
+};
diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json
new file mode 100644
index 0000000..97a3201
--- /dev/null
+++ b/packages/web/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.build.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "composite": true,
+ "downlevelIteration": true,
+ "module": "es6",
+ "moduleResolution": "node"
+ },
+ "include": ["src/**/*"],
+ "references": [
+ {
+ "path": "../core"
+ }
+ ]
+}
diff --git a/tsconfig.build.json b/tsconfig.build.json
new file mode 100644
index 0000000..a707a8b
--- /dev/null
+++ b/tsconfig.build.json
@@ -0,0 +1,16 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "outDir": "./dist",
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "jsx": "react",
+ "strict": true,
+ "declaration": true,
+ "declarationMap": true,
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..9c6b3c1
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "jsx": "react",
+ "baseUrl": "./packages",
+ "paths": {
+ "@keywrite/core/*": ["core/src/*"],
+ "@keywrite/web/*": ["web/src/*"],
+ "@keywrite/ethiopic-layouts/*": ["ethiopic-layouts/src/*"],
+ "@keywrite/layout-generator/*": ["layout-generator/src/*"]
+ }
+ },
+ "files": [],
+ "references": [
+ {
+ "path": "packages/core"
+ },
+ {
+ "path": "packages/ethiopic-layouts"
+ },
+ {
+ "path": "packages/layout-generator"
+ },
+ {
+ "path": "packages/web"
+ }
+ ]
+}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..76c75e9
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,9008 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/core@^7.1.0", "@babel/core@^7.7.5":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
+ integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/generator" "^7.12.10"
+ "@babel/helper-module-transforms" "^7.12.1"
+ "@babel/helpers" "^7.12.5"
+ "@babel/parser" "^7.12.10"
+ "@babel/template" "^7.12.7"
+ "@babel/traverse" "^7.12.10"
+ "@babel/types" "^7.12.10"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.1"
+ json5 "^2.1.2"
+ lodash "^4.17.19"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
+ integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
+ dependencies:
+ "@babel/types" "^7.12.11"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-function-name@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
+ integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.12.10"
+ "@babel/template" "^7.12.7"
+ "@babel/types" "^7.12.11"
+
+"@babel/helper-get-function-arity@^7.12.10":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
+ integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
+ dependencies:
+ "@babel/types" "^7.12.10"
+
+"@babel/helper-member-expression-to-functions@^7.12.7":
+ version "7.12.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
+ integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
+ dependencies:
+ "@babel/types" "^7.12.7"
+
+"@babel/helper-module-imports@^7.12.1":
+ version "7.12.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
+ integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
+ dependencies:
+ "@babel/types" "^7.12.5"
+
+"@babel/helper-module-transforms@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
+ integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.1"
+ "@babel/helper-replace-supers" "^7.12.1"
+ "@babel/helper-simple-access" "^7.12.1"
+ "@babel/helper-split-export-declaration" "^7.11.0"
+ "@babel/helper-validator-identifier" "^7.10.4"
+ "@babel/template" "^7.10.4"
+ "@babel/traverse" "^7.12.1"
+ "@babel/types" "^7.12.1"
+ lodash "^4.17.19"
+
+"@babel/helper-optimise-call-expression@^7.12.10":
+ version "7.12.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
+ integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
+ dependencies:
+ "@babel/types" "^7.12.10"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
+ integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
+
+"@babel/helper-replace-supers@^7.12.1":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
+ integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.12.7"
+ "@babel/helper-optimise-call-expression" "^7.12.10"
+ "@babel/traverse" "^7.12.10"
+ "@babel/types" "^7.12.11"
+
+"@babel/helper-simple-access@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
+ integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
+ dependencies:
+ "@babel/types" "^7.12.1"
+
+"@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
+ integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
+ dependencies:
+ "@babel/types" "^7.12.11"
+
+"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
+
+"@babel/helpers@^7.12.5":
+ version "7.12.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
+ integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
+ dependencies:
+ "@babel/template" "^7.10.4"
+ "@babel/traverse" "^7.12.5"
+ "@babel/types" "^7.12.5"
+
+"@babel/highlight@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
+ integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.10.4"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
+ integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-bigint@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
+ integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.8.3":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978"
+ integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-import-meta@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-top-level-await@^7.8.3":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
+ integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/runtime@^7.10.4", "@babel/runtime@^7.11.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
+ integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3":
+ version "7.12.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
+ integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/parser" "^7.12.7"
+ "@babel/types" "^7.12.7"
+
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
+ integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
+ dependencies:
+ "@babel/code-frame" "^7.12.11"
+ "@babel/generator" "^7.12.11"
+ "@babel/helper-function-name" "^7.12.11"
+ "@babel/helper-split-export-declaration" "^7.12.11"
+ "@babel/parser" "^7.12.11"
+ "@babel/types" "^7.12.12"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
+"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
+ integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
+"@bcoe/v8-coverage@^0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
+ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+
+"@changesets/apply-release-plan@^4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-4.2.0.tgz#f1005815f27c3238f66507e90c6ae14d8fc62b41"
+ integrity sha512-/vt6UwgQldhOw93Gb8llI5OuYGlJt2+U45AfcXsoxzl8gZzCmChGm3vUaQJYbmtL8TbL8OOVXHRIKJJidMNPKw==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+ "@changesets/config" "^1.5.0"
+ "@changesets/get-version-range-type" "^0.3.2"
+ "@changesets/git" "^1.0.5"
+ "@changesets/types" "^3.3.0"
+ "@manypkg/get-packages" "^1.0.1"
+ detect-indent "^6.0.0"
+ fs-extra "^7.0.1"
+ lodash.startcase "^4.4.0"
+ outdent "^0.5.0"
+ prettier "^1.19.1"
+ resolve-from "^5.0.0"
+ semver "^5.4.1"
+
+"@changesets/assemble-release-plan@^4.0.0", "@changesets/assemble-release-plan@^4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@changesets/assemble-release-plan/-/assemble-release-plan-4.1.0.tgz#091e5e768dfe51835937e71d1ebaca1c9d6de55b"
+ integrity sha512-dMqe2L5Pn4UGTW89kOuuCuZD3pQFZj1Sxv92ZW4S98sXGsxcb2PdW+PeHbQ7tawkCYCOvzhXxAlN4OdF2DlDKQ==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+ "@changesets/errors" "^0.1.4"
+ "@changesets/get-dependents-graph" "^1.2.0"
+ "@changesets/types" "^3.3.0"
+ "@manypkg/get-packages" "^1.0.1"
+ semver "^5.4.1"
+
+"@changesets/changelog-github@0.2.8":
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/@changesets/changelog-github/-/changelog-github-0.2.8.tgz#b17569205e5e8da65cc9a3ceb16e2c78f0463236"
+ integrity sha512-XO/6J/EvndQ+SOhRLvWUun5DLnuTmukpjhtFbHbQSNzzGvRUIyQ2//v6R5sgcazDGLoJixP7MaATEhYeppf+Cg==
+ dependencies:
+ "@changesets/get-github-info" "^0.4.5"
+ "@changesets/types" "^3.0.0"
+ dotenv "^8.1.0"
+
+"@changesets/cli@2.14.1":
+ version "2.14.1"
+ resolved "https://registry.yarnpkg.com/@changesets/cli/-/cli-2.14.1.tgz#ef6ba9f69e4dd5f6cde4220e032200e3039a52f8"
+ integrity sha512-ydU2ZUP/s7nHQmz8TrliT+kE2dJUpZYKh8MBHrkV6suchCBhT4DmoP4VDF9M4215r18iPbMpE1TjskzXGXB8eQ==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+ "@changesets/apply-release-plan" "^4.2.0"
+ "@changesets/assemble-release-plan" "^4.1.0"
+ "@changesets/config" "^1.5.0"
+ "@changesets/errors" "^0.1.4"
+ "@changesets/get-dependents-graph" "^1.2.0"
+ "@changesets/get-release-plan" "^2.0.1"
+ "@changesets/git" "^1.1.0"
+ "@changesets/logger" "^0.0.5"
+ "@changesets/pre" "^1.0.4"
+ "@changesets/read" "^0.4.6"
+ "@changesets/types" "^3.3.0"
+ "@changesets/write" "^0.1.3"
+ "@manypkg/get-packages" "^1.0.1"
+ "@types/semver" "^6.0.0"
+ boxen "^1.3.0"
+ chalk "^2.1.0"
+ enquirer "^2.3.0"
+ external-editor "^3.1.0"
+ fs-extra "^7.0.1"
+ human-id "^1.0.2"
+ is-ci "^2.0.0"
+ meow "^6.0.0"
+ outdent "^0.5.0"
+ p-limit "^2.2.0"
+ preferred-pm "^3.0.0"
+ semver "^5.4.1"
+ spawndamnit "^2.0.0"
+ term-size "^2.1.0"
+ tty-table "^2.8.10"
+
+"@changesets/config@^1.2.0", "@changesets/config@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@changesets/config/-/config-1.5.0.tgz#6d58b01e45916318d3f39e9cde86a5d69dc58ed8"
+ integrity sha512-Bl9nLVYcwFCpd9jpzcOsExZk1NuTYX20D2YWHCdS1xll3W0yOdSUlWLUCCfugN1l3+yTR6iDW6q9o6vpCevWvA==
+ dependencies:
+ "@changesets/errors" "^0.1.4"
+ "@changesets/get-dependents-graph" "^1.2.0"
+ "@changesets/logger" "^0.0.5"
+ "@changesets/types" "^3.3.0"
+ "@manypkg/get-packages" "^1.0.1"
+ fs-extra "^7.0.1"
+ micromatch "^4.0.2"
+
+"@changesets/errors@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@changesets/errors/-/errors-0.1.4.tgz#f79851746c43679a66b383fdff4c012f480f480d"
+ integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==
+ dependencies:
+ extendable-error "^0.1.5"
+
+"@changesets/get-dependents-graph@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@changesets/get-dependents-graph/-/get-dependents-graph-1.2.0.tgz#6986927a5fec60bc6fcc76f966efae2ac30c05ed"
+ integrity sha512-96NInEKpEZH8KvmXyh42PynXVAdq3kQ9VjAeswHtJ3umUCeTF42b/KVXaov+5P1RNnaUVtRuEwzs4syGuowDTw==
+ dependencies:
+ "@changesets/types" "^3.3.0"
+ "@manypkg/get-packages" "^1.0.1"
+ chalk "^2.1.0"
+ fs-extra "^7.0.1"
+ semver "^5.4.1"
+
+"@changesets/get-github-info@^0.4.5":
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/@changesets/get-github-info/-/get-github-info-0.4.5.tgz#53d46e03f7794cd439e6530dce1029cc149cd313"
+ integrity sha512-tknjYi9ti3AIbGrDHfeJ1bBbXJi/FdV6AWH0oA4JFrCRe2IoczAJo2MeU+3banQx5TlL1fOTeUOM1YAK+sJB2g==
+ dependencies:
+ dataloader "^1.4.0"
+ node-fetch "^2.5.0"
+
+"@changesets/get-release-plan@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@changesets/get-release-plan/-/get-release-plan-2.0.1.tgz#b95d8f1a3cc719ff4b42b9b9aae72458d8787c13"
+ integrity sha512-+x5N9/Iaka+c0Kq7+3JsboMNyffKYlWPmdm+VeafDcMwJFhBDkxm84qaCJ93ydmnzQOTig6gYVqw0k8BbHExyQ==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+ "@changesets/assemble-release-plan" "^4.0.0"
+ "@changesets/config" "^1.2.0"
+ "@changesets/pre" "^1.0.4"
+ "@changesets/read" "^0.4.6"
+ "@changesets/types" "^3.1.0"
+ "@manypkg/get-packages" "^1.0.1"
+
+"@changesets/get-version-range-type@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67"
+ integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==
+
+"@changesets/git@^1.0.5", "@changesets/git@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@changesets/git/-/git-1.1.0.tgz#ecaa8058ac87b450c09da0e74b68e6854cd0742c"
+ integrity sha512-f/2rQynT+JiAL/V0V/GQdXhLkcb86ELg3UwH3fQO4wVdfUbE9NHIHq9ohJdH1Ymh0Lv48F/b38aWZ5v2sKiF3w==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+ "@changesets/errors" "^0.1.4"
+ "@changesets/types" "^3.1.1"
+ "@manypkg/get-packages" "^1.0.1"
+ is-subdir "^1.1.1"
+ spawndamnit "^2.0.0"
+
+"@changesets/logger@^0.0.5":
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/@changesets/logger/-/logger-0.0.5.tgz#68305dd5a643e336be16a2369cb17cdd8ed37d4c"
+ integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==
+ dependencies:
+ chalk "^2.1.0"
+
+"@changesets/parse@^0.3.6":
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/@changesets/parse/-/parse-0.3.7.tgz#1368136e2b83d5cff11b4d383a3032723530db99"
+ integrity sha512-8yqKulslq/7V2VRBsJqPgjnZMoehYqhJm5lEOXJPZ2rcuSdyj8+p/2vq2vRDBJT2m0rP+C9G8DujsGYQIFZezw==
+ dependencies:
+ "@changesets/types" "^3.0.0"
+ js-yaml "^3.13.1"
+
+"@changesets/pre@^1.0.4":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@changesets/pre/-/pre-1.0.5.tgz#91e5e3b31b4a85ce37de72f6511a786f62f29b51"
+ integrity sha512-p43aAQY3aijhDnBLCriPao5YArlRjD4mSHRJq9PsBhljVLWqQQXcn6seSd77d+bD1tATLhB8tQ2eYoxMtMydXQ==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@changesets/errors" "^0.1.4"
+ "@changesets/types" "^3.0.0"
+ "@manypkg/get-packages" "^1.0.1"
+ fs-extra "^7.0.1"
+
+"@changesets/read@^0.4.6":
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/@changesets/read/-/read-0.4.6.tgz#1c03e709a870a070fc95490ffa696297d23458f7"
+ integrity sha512-rOd8dsF/Lgyy2SYlDalb3Ts/meDI2AcKPXYhSXIW3k6+ZLlj6Pt+nmgV5Ut8euyH7loibklNTDemfvMffF4xig==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@changesets/git" "^1.0.5"
+ "@changesets/logger" "^0.0.5"
+ "@changesets/parse" "^0.3.6"
+ "@changesets/types" "^3.0.0"
+ chalk "^2.1.0"
+ fs-extra "^7.0.1"
+ p-filter "^2.1.0"
+
+"@changesets/types@^3.0.0", "@changesets/types@^3.1.0", "@changesets/types@^3.1.1", "@changesets/types@^3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@changesets/types/-/types-3.3.0.tgz#04cd8184b2d2da760667bd89bf9b930938dbd96e"
+ integrity sha512-rJamRo+OD/MQekImfIk07JZwYSB18iU6fYL8xOg0gfAiTh1a1+OlR1fPIxm55I7RsWw812is2YcPPwXdIewrhA==
+
+"@changesets/write@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@changesets/write/-/write-0.1.3.tgz#00ae575af50274773d7493e77fb96838a08ad8ad"
+ integrity sha512-q79rbwlVmTNKP9O6XxcMDj81CEOn/kQHbTFdRleW0tFUv98S1EyEAE9vLPPzO6WnQipHnaozxB1zMhHy0aQn8Q==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ "@changesets/types" "^3.0.0"
+ fs-extra "^7.0.1"
+ human-id "^1.0.2"
+ prettier "^1.18.2"
+
+"@cnakazawa/watch@^1.0.3":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
+ integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==
+ dependencies:
+ exec-sh "^0.3.2"
+ minimist "^1.2.0"
+
+"@commitlint/cli@11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-11.0.0.tgz#698199bc52afed50aa28169237758fa14a67b5d3"
+ integrity sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ "@commitlint/format" "^11.0.0"
+ "@commitlint/lint" "^11.0.0"
+ "@commitlint/load" "^11.0.0"
+ "@commitlint/read" "^11.0.0"
+ chalk "4.1.0"
+ core-js "^3.6.1"
+ get-stdin "8.0.0"
+ lodash "^4.17.19"
+ resolve-from "5.0.0"
+ resolve-global "1.0.0"
+ yargs "^15.1.0"
+
+"@commitlint/config-conventional@11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-11.0.0.tgz#3fa300a1b639273946de3c3f15e1cda518333422"
+ integrity sha512-SNDRsb5gLuDd2PL83yCOQX6pE7gevC79UPFx+GLbLfw6jGnnbO9/tlL76MLD8MOViqGbo7ZicjChO9Gn+7tHhA==
+ dependencies:
+ conventional-changelog-conventionalcommits "^4.3.1"
+
+"@commitlint/ensure@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-11.0.0.tgz#3e796b968ab5b72bc6f8a6040076406306c987fb"
+ integrity sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug==
+ dependencies:
+ "@commitlint/types" "^11.0.0"
+ lodash "^4.17.19"
+
+"@commitlint/execute-rule@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-11.0.0.tgz#3ed60ab7a33019e58d90e2d891b75d7df77b4b4d"
+ integrity sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ==
+
+"@commitlint/format@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-11.0.0.tgz#ac47b0b9ca46540c0082c721b290794e67bdc51b"
+ integrity sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg==
+ dependencies:
+ "@commitlint/types" "^11.0.0"
+ chalk "^4.0.0"
+
+"@commitlint/is-ignored@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-11.0.0.tgz#7b803eda56276dbe7fec51eb1510676198468f39"
+ integrity sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg==
+ dependencies:
+ "@commitlint/types" "^11.0.0"
+ semver "7.3.2"
+
+"@commitlint/lint@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-11.0.0.tgz#01e062cd1b0e7c3d756aa2c246462e0b6a3348a4"
+ integrity sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ==
+ dependencies:
+ "@commitlint/is-ignored" "^11.0.0"
+ "@commitlint/parse" "^11.0.0"
+ "@commitlint/rules" "^11.0.0"
+ "@commitlint/types" "^11.0.0"
+
+"@commitlint/load@>6.1.1", "@commitlint/load@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-11.0.0.tgz#f736562f0ffa7e773f8808fea93319042ee18211"
+ integrity sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg==
+ dependencies:
+ "@commitlint/execute-rule" "^11.0.0"
+ "@commitlint/resolve-extends" "^11.0.0"
+ "@commitlint/types" "^11.0.0"
+ chalk "4.1.0"
+ cosmiconfig "^7.0.0"
+ lodash "^4.17.19"
+ resolve-from "^5.0.0"
+
+"@commitlint/message@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-11.0.0.tgz#83554c3cbbc884fd07b473593bc3e94bcaa3ee05"
+ integrity sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA==
+
+"@commitlint/parse@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-11.0.0.tgz#d18b08cf67c35d02115207d7009306a2e8e7c901"
+ integrity sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A==
+ dependencies:
+ conventional-changelog-angular "^5.0.0"
+ conventional-commits-parser "^3.0.0"
+
+"@commitlint/read@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-11.0.0.tgz#f24240548c63587bba139fa5a364cab926077016"
+ integrity sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g==
+ dependencies:
+ "@commitlint/top-level" "^11.0.0"
+ fs-extra "^9.0.0"
+ git-raw-commits "^2.0.0"
+
+"@commitlint/resolve-extends@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-11.0.0.tgz#158ecbe27d4a2a51d426111a01478e216fbb1036"
+ integrity sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw==
+ dependencies:
+ import-fresh "^3.0.0"
+ lodash "^4.17.19"
+ resolve-from "^5.0.0"
+ resolve-global "^1.0.0"
+
+"@commitlint/rules@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-11.0.0.tgz#bdb310cc6fc55c9f8d7d917a22b69055c535c375"
+ integrity sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA==
+ dependencies:
+ "@commitlint/ensure" "^11.0.0"
+ "@commitlint/message" "^11.0.0"
+ "@commitlint/to-lines" "^11.0.0"
+ "@commitlint/types" "^11.0.0"
+
+"@commitlint/to-lines@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-11.0.0.tgz#86dea151c10eea41e39ea96fa4de07839258a7fe"
+ integrity sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw==
+
+"@commitlint/top-level@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-11.0.0.tgz#bb2d1b6e5ed3be56874633b59e1f7de118c32783"
+ integrity sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA==
+ dependencies:
+ find-up "^5.0.0"
+
+"@commitlint/types@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-11.0.0.tgz#719cf05fcc1abb6533610a2e0f5dd1e61eac14fe"
+ integrity sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ==
+
+"@eslint/eslintrc@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318"
+ integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ lodash "^4.17.20"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@evocateur/libnpmaccess@^3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845"
+ integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==
+ dependencies:
+ "@evocateur/npm-registry-fetch" "^4.0.0"
+ aproba "^2.0.0"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ npm-package-arg "^6.1.0"
+
+"@evocateur/libnpmpublish@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a"
+ integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==
+ dependencies:
+ "@evocateur/npm-registry-fetch" "^4.0.0"
+ aproba "^2.0.0"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ lodash.clonedeep "^4.5.0"
+ normalize-package-data "^2.4.0"
+ npm-package-arg "^6.1.0"
+ semver "^5.5.1"
+ ssri "^6.0.1"
+
+"@evocateur/npm-registry-fetch@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66"
+ integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==
+ dependencies:
+ JSONStream "^1.3.4"
+ bluebird "^3.5.1"
+ figgy-pudding "^3.4.1"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
+ npm-package-arg "^6.1.0"
+ safe-buffer "^5.1.2"
+
+"@evocateur/pacote@^9.6.3":
+ version "9.6.5"
+ resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5"
+ integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==
+ dependencies:
+ "@evocateur/npm-registry-fetch" "^4.0.0"
+ bluebird "^3.5.3"
+ cacache "^12.0.3"
+ chownr "^1.1.2"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.1.0"
+ glob "^7.1.4"
+ infer-owner "^1.0.4"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
+ minimatch "^3.0.4"
+ minipass "^2.3.5"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ normalize-package-data "^2.5.0"
+ npm-package-arg "^6.1.0"
+ npm-packlist "^1.4.4"
+ npm-pick-manifest "^3.0.0"
+ osenv "^0.1.5"
+ promise-inflight "^1.0.1"
+ promise-retry "^1.1.1"
+ protoduck "^5.0.1"
+ rimraf "^2.6.3"
+ safe-buffer "^5.2.0"
+ semver "^5.7.0"
+ ssri "^6.0.1"
+ tar "^4.4.10"
+ unique-filename "^1.1.1"
+ which "^1.3.1"
+
+"@istanbuljs/load-nyc-config@^1.0.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
+ integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
+ dependencies:
+ camelcase "^5.3.1"
+ find-up "^4.1.0"
+ get-package-type "^0.1.0"
+ js-yaml "^3.13.1"
+ resolve-from "^5.0.0"
+
+"@istanbuljs/schema@^0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
+ integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
+
+"@jest/console@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2"
+ integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^26.6.2"
+ jest-util "^26.6.2"
+ slash "^3.0.0"
+
+"@jest/core@^26.6.3":
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad"
+ integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/reporters" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.4"
+ jest-changed-files "^26.6.2"
+ jest-config "^26.6.3"
+ jest-haste-map "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-resolve "^26.6.2"
+ jest-resolve-dependencies "^26.6.3"
+ jest-runner "^26.6.3"
+ jest-runtime "^26.6.3"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ jest-watcher "^26.6.2"
+ micromatch "^4.0.2"
+ p-each-series "^2.1.0"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+ strip-ansi "^6.0.0"
+
+"@jest/environment@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c"
+ integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==
+ dependencies:
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ jest-mock "^26.6.2"
+
+"@jest/fake-timers@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad"
+ integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@sinonjs/fake-timers" "^6.0.1"
+ "@types/node" "*"
+ jest-message-util "^26.6.2"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+
+"@jest/globals@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a"
+ integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ expect "^26.6.2"
+
+"@jest/reporters@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6"
+ integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==
+ dependencies:
+ "@bcoe/v8-coverage" "^0.2.3"
+ "@jest/console" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.2"
+ graceful-fs "^4.2.4"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^4.0.3"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.0.2"
+ jest-haste-map "^26.6.2"
+ jest-resolve "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ slash "^3.0.0"
+ source-map "^0.6.0"
+ string-length "^4.0.1"
+ terminal-link "^2.0.0"
+ v8-to-istanbul "^7.0.0"
+ optionalDependencies:
+ node-notifier "^8.0.0"
+
+"@jest/source-map@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535"
+ integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==
+ dependencies:
+ callsites "^3.0.0"
+ graceful-fs "^4.2.4"
+ source-map "^0.6.0"
+
+"@jest/test-result@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18"
+ integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
+"@jest/test-sequencer@^26.6.3":
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17"
+ integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==
+ dependencies:
+ "@jest/test-result" "^26.6.2"
+ graceful-fs "^4.2.4"
+ jest-haste-map "^26.6.2"
+ jest-runner "^26.6.3"
+ jest-runtime "^26.6.3"
+
+"@jest/transform@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b"
+ integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^26.6.2"
+ babel-plugin-istanbul "^6.0.0"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-haste-map "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-util "^26.6.2"
+ micromatch "^4.0.2"
+ pirates "^4.0.1"
+ slash "^3.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "^3.0.0"
+
+"@jest/types@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
+ integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+
+"@lerna/add@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b"
+ integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==
+ dependencies:
+ "@evocateur/pacote" "^9.6.3"
+ "@lerna/bootstrap" "3.21.0"
+ "@lerna/command" "3.21.0"
+ "@lerna/filter-options" "3.20.0"
+ "@lerna/npm-conf" "3.16.0"
+ "@lerna/validation-error" "3.13.0"
+ dedent "^0.7.0"
+ npm-package-arg "^6.1.0"
+ p-map "^2.1.0"
+ semver "^6.2.0"
+
+"@lerna/bootstrap@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6"
+ integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==
+ dependencies:
+ "@lerna/command" "3.21.0"
+ "@lerna/filter-options" "3.20.0"
+ "@lerna/has-npm-version" "3.16.5"
+ "@lerna/npm-install" "3.16.5"
+ "@lerna/package-graph" "3.18.5"
+ "@lerna/pulse-till-done" "3.13.0"
+ "@lerna/rimraf-dir" "3.16.5"
+ "@lerna/run-lifecycle" "3.16.2"
+ "@lerna/run-topologically" "3.18.5"
+ "@lerna/symlink-binary" "3.17.0"
+ "@lerna/symlink-dependencies" "3.17.0"
+ "@lerna/validation-error" "3.13.0"
+ dedent "^0.7.0"
+ get-port "^4.2.0"
+ multimatch "^3.0.0"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+ p-finally "^1.0.0"
+ p-map "^2.1.0"
+ p-map-series "^1.0.0"
+ p-waterfall "^1.0.0"
+ read-package-tree "^5.1.6"
+ semver "^6.2.0"
+
+"@lerna/changed@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b"
+ integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==
+ dependencies:
+ "@lerna/collect-updates" "3.20.0"
+ "@lerna/command" "3.21.0"
+ "@lerna/listable" "3.18.5"
+ "@lerna/output" "3.13.0"
+
+"@lerna/check-working-tree@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa"
+ integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==
+ dependencies:
+ "@lerna/collect-uncommitted" "3.16.5"
+ "@lerna/describe-ref" "3.16.5"
+ "@lerna/validation-error" "3.13.0"
+
+"@lerna/child-process@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2"
+ integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==
+ dependencies:
+ chalk "^2.3.1"
+ execa "^1.0.0"
+ strong-log-transformer "^2.0.0"
+
+"@lerna/clean@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d"
+ integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==
+ dependencies:
+ "@lerna/command" "3.21.0"
+ "@lerna/filter-options" "3.20.0"
+ "@lerna/prompt" "3.18.5"
+ "@lerna/pulse-till-done" "3.13.0"
+ "@lerna/rimraf-dir" "3.16.5"
+ p-map "^2.1.0"
+ p-map-series "^1.0.0"
+ p-waterfall "^1.0.0"
+
+"@lerna/cli@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242"
+ integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==
+ dependencies:
+ "@lerna/global-options" "3.13.0"
+ dedent "^0.7.0"
+ npmlog "^4.1.2"
+ yargs "^14.2.2"
+
+"@lerna/collect-uncommitted@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63"
+ integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ chalk "^2.3.1"
+ figgy-pudding "^3.5.1"
+ npmlog "^4.1.2"
+
+"@lerna/collect-updates@3.20.0":
+ version "3.20.0"
+ resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1"
+ integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/describe-ref" "3.16.5"
+ minimatch "^3.0.4"
+ npmlog "^4.1.2"
+ slash "^2.0.0"
+
+"@lerna/command@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7"
+ integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/package-graph" "3.18.5"
+ "@lerna/project" "3.21.0"
+ "@lerna/validation-error" "3.13.0"
+ "@lerna/write-log-file" "3.13.0"
+ clone-deep "^4.0.1"
+ dedent "^0.7.0"
+ execa "^1.0.0"
+ is-ci "^2.0.0"
+ npmlog "^4.1.2"
+
+"@lerna/conventional-commits@3.22.0":
+ version "3.22.0"
+ resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz#2798f4881ee2ef457bdae027ab7d0bf0af6f1e09"
+ integrity sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==
+ dependencies:
+ "@lerna/validation-error" "3.13.0"
+ conventional-changelog-angular "^5.0.3"
+ conventional-changelog-core "^3.1.6"
+ conventional-recommended-bump "^5.0.0"
+ fs-extra "^8.1.0"
+ get-stream "^4.0.0"
+ lodash.template "^4.5.0"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+ pify "^4.0.1"
+ semver "^6.2.0"
+
+"@lerna/create-symlink@3.16.2":
+ version "3.16.2"
+ resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967"
+ integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==
+ dependencies:
+ "@zkochan/cmd-shim" "^3.1.0"
+ fs-extra "^8.1.0"
+ npmlog "^4.1.2"
+
+"@lerna/create@3.22.0":
+ version "3.22.0"
+ resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.22.0.tgz#d6bbd037c3dc5b425fe5f6d1b817057c278f7619"
+ integrity sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==
+ dependencies:
+ "@evocateur/pacote" "^9.6.3"
+ "@lerna/child-process" "3.16.5"
+ "@lerna/command" "3.21.0"
+ "@lerna/npm-conf" "3.16.0"
+ "@lerna/validation-error" "3.13.0"
+ camelcase "^5.0.0"
+ dedent "^0.7.0"
+ fs-extra "^8.1.0"
+ globby "^9.2.0"
+ init-package-json "^1.10.3"
+ npm-package-arg "^6.1.0"
+ p-reduce "^1.0.0"
+ pify "^4.0.1"
+ semver "^6.2.0"
+ slash "^2.0.0"
+ validate-npm-package-license "^3.0.3"
+ validate-npm-package-name "^3.0.0"
+ whatwg-url "^7.0.0"
+
+"@lerna/describe-ref@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0"
+ integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ npmlog "^4.1.2"
+
+"@lerna/diff@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d"
+ integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/command" "3.21.0"
+ "@lerna/validation-error" "3.13.0"
+ npmlog "^4.1.2"
+
+"@lerna/exec@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26"
+ integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/command" "3.21.0"
+ "@lerna/filter-options" "3.20.0"
+ "@lerna/profiler" "3.20.0"
+ "@lerna/run-topologically" "3.18.5"
+ "@lerna/validation-error" "3.13.0"
+ p-map "^2.1.0"
+
+"@lerna/filter-options@3.20.0":
+ version "3.20.0"
+ resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b"
+ integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==
+ dependencies:
+ "@lerna/collect-updates" "3.20.0"
+ "@lerna/filter-packages" "3.18.0"
+ dedent "^0.7.0"
+ figgy-pudding "^3.5.1"
+ npmlog "^4.1.2"
+
+"@lerna/filter-packages@3.18.0":
+ version "3.18.0"
+ resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70"
+ integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==
+ dependencies:
+ "@lerna/validation-error" "3.13.0"
+ multimatch "^3.0.0"
+ npmlog "^4.1.2"
+
+"@lerna/get-npm-exec-opts@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5"
+ integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==
+ dependencies:
+ npmlog "^4.1.2"
+
+"@lerna/get-packed@3.16.0":
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff"
+ integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==
+ dependencies:
+ fs-extra "^8.1.0"
+ ssri "^6.0.1"
+ tar "^4.4.8"
+
+"@lerna/github-client@3.22.0":
+ version "3.22.0"
+ resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.22.0.tgz#5d816aa4f76747ed736ae64ff962b8f15c354d95"
+ integrity sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@octokit/plugin-enterprise-rest" "^6.0.1"
+ "@octokit/rest" "^16.28.4"
+ git-url-parse "^11.1.2"
+ npmlog "^4.1.2"
+
+"@lerna/gitlab-client@3.15.0":
+ version "3.15.0"
+ resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6"
+ integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==
+ dependencies:
+ node-fetch "^2.5.0"
+ npmlog "^4.1.2"
+ whatwg-url "^7.0.0"
+
+"@lerna/global-options@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1"
+ integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==
+
+"@lerna/has-npm-version@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326"
+ integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ semver "^6.2.0"
+
+"@lerna/import@3.22.0":
+ version "3.22.0"
+ resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.22.0.tgz#1a5f0394f38e23c4f642a123e5e1517e70d068d2"
+ integrity sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/command" "3.21.0"
+ "@lerna/prompt" "3.18.5"
+ "@lerna/pulse-till-done" "3.13.0"
+ "@lerna/validation-error" "3.13.0"
+ dedent "^0.7.0"
+ fs-extra "^8.1.0"
+ p-map-series "^1.0.0"
+
+"@lerna/info@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f"
+ integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==
+ dependencies:
+ "@lerna/command" "3.21.0"
+ "@lerna/output" "3.13.0"
+ envinfo "^7.3.1"
+
+"@lerna/init@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c"
+ integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/command" "3.21.0"
+ fs-extra "^8.1.0"
+ p-map "^2.1.0"
+ write-json-file "^3.2.0"
+
+"@lerna/link@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b"
+ integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==
+ dependencies:
+ "@lerna/command" "3.21.0"
+ "@lerna/package-graph" "3.18.5"
+ "@lerna/symlink-dependencies" "3.17.0"
+ p-map "^2.1.0"
+ slash "^2.0.0"
+
+"@lerna/list@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2"
+ integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==
+ dependencies:
+ "@lerna/command" "3.21.0"
+ "@lerna/filter-options" "3.20.0"
+ "@lerna/listable" "3.18.5"
+ "@lerna/output" "3.13.0"
+
+"@lerna/listable@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a"
+ integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==
+ dependencies:
+ "@lerna/query-graph" "3.18.5"
+ chalk "^2.3.1"
+ columnify "^1.5.4"
+
+"@lerna/log-packed@3.16.0":
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16"
+ integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==
+ dependencies:
+ byte-size "^5.0.1"
+ columnify "^1.5.4"
+ has-unicode "^2.0.1"
+ npmlog "^4.1.2"
+
+"@lerna/npm-conf@3.16.0":
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827"
+ integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==
+ dependencies:
+ config-chain "^1.1.11"
+ pify "^4.0.1"
+
+"@lerna/npm-dist-tag@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55"
+ integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==
+ dependencies:
+ "@evocateur/npm-registry-fetch" "^4.0.0"
+ "@lerna/otplease" "3.18.5"
+ figgy-pudding "^3.5.1"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+
+"@lerna/npm-install@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3"
+ integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/get-npm-exec-opts" "3.13.0"
+ fs-extra "^8.1.0"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+ signal-exit "^3.0.2"
+ write-pkg "^3.1.0"
+
+"@lerna/npm-publish@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af"
+ integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==
+ dependencies:
+ "@evocateur/libnpmpublish" "^1.2.2"
+ "@lerna/otplease" "3.18.5"
+ "@lerna/run-lifecycle" "3.16.2"
+ figgy-pudding "^3.5.1"
+ fs-extra "^8.1.0"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+ pify "^4.0.1"
+ read-package-json "^2.0.13"
+
+"@lerna/npm-run-script@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15"
+ integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ "@lerna/get-npm-exec-opts" "3.13.0"
+ npmlog "^4.1.2"
+
+"@lerna/otplease@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231"
+ integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==
+ dependencies:
+ "@lerna/prompt" "3.18.5"
+ figgy-pudding "^3.5.1"
+
+"@lerna/output@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989"
+ integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==
+ dependencies:
+ npmlog "^4.1.2"
+
+"@lerna/pack-directory@3.16.4":
+ version "3.16.4"
+ resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693"
+ integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==
+ dependencies:
+ "@lerna/get-packed" "3.16.0"
+ "@lerna/package" "3.16.0"
+ "@lerna/run-lifecycle" "3.16.2"
+ figgy-pudding "^3.5.1"
+ npm-packlist "^1.4.4"
+ npmlog "^4.1.2"
+ tar "^4.4.10"
+ temp-write "^3.4.0"
+
+"@lerna/package-graph@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b"
+ integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==
+ dependencies:
+ "@lerna/prerelease-id-from-version" "3.16.0"
+ "@lerna/validation-error" "3.13.0"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+ semver "^6.2.0"
+
+"@lerna/package@3.16.0":
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c"
+ integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==
+ dependencies:
+ load-json-file "^5.3.0"
+ npm-package-arg "^6.1.0"
+ write-pkg "^3.1.0"
+
+"@lerna/prerelease-id-from-version@3.16.0":
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1"
+ integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==
+ dependencies:
+ semver "^6.2.0"
+
+"@lerna/profiler@3.20.0":
+ version "3.20.0"
+ resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051"
+ integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ fs-extra "^8.1.0"
+ npmlog "^4.1.2"
+ upath "^1.2.0"
+
+"@lerna/project@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d"
+ integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==
+ dependencies:
+ "@lerna/package" "3.16.0"
+ "@lerna/validation-error" "3.13.0"
+ cosmiconfig "^5.1.0"
+ dedent "^0.7.0"
+ dot-prop "^4.2.0"
+ glob-parent "^5.0.0"
+ globby "^9.2.0"
+ load-json-file "^5.3.0"
+ npmlog "^4.1.2"
+ p-map "^2.1.0"
+ resolve-from "^4.0.0"
+ write-json-file "^3.2.0"
+
+"@lerna/prompt@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1"
+ integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==
+ dependencies:
+ inquirer "^6.2.0"
+ npmlog "^4.1.2"
+
+"@lerna/publish@3.22.1":
+ version "3.22.1"
+ resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.22.1.tgz#b4f7ce3fba1e9afb28be4a1f3d88222269ba9519"
+ integrity sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==
+ dependencies:
+ "@evocateur/libnpmaccess" "^3.1.2"
+ "@evocateur/npm-registry-fetch" "^4.0.0"
+ "@evocateur/pacote" "^9.6.3"
+ "@lerna/check-working-tree" "3.16.5"
+ "@lerna/child-process" "3.16.5"
+ "@lerna/collect-updates" "3.20.0"
+ "@lerna/command" "3.21.0"
+ "@lerna/describe-ref" "3.16.5"
+ "@lerna/log-packed" "3.16.0"
+ "@lerna/npm-conf" "3.16.0"
+ "@lerna/npm-dist-tag" "3.18.5"
+ "@lerna/npm-publish" "3.18.5"
+ "@lerna/otplease" "3.18.5"
+ "@lerna/output" "3.13.0"
+ "@lerna/pack-directory" "3.16.4"
+ "@lerna/prerelease-id-from-version" "3.16.0"
+ "@lerna/prompt" "3.18.5"
+ "@lerna/pulse-till-done" "3.13.0"
+ "@lerna/run-lifecycle" "3.16.2"
+ "@lerna/run-topologically" "3.18.5"
+ "@lerna/validation-error" "3.13.0"
+ "@lerna/version" "3.22.1"
+ figgy-pudding "^3.5.1"
+ fs-extra "^8.1.0"
+ npm-package-arg "^6.1.0"
+ npmlog "^4.1.2"
+ p-finally "^1.0.0"
+ p-map "^2.1.0"
+ p-pipe "^1.2.0"
+ semver "^6.2.0"
+
+"@lerna/pulse-till-done@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110"
+ integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==
+ dependencies:
+ npmlog "^4.1.2"
+
+"@lerna/query-graph@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86"
+ integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==
+ dependencies:
+ "@lerna/package-graph" "3.18.5"
+ figgy-pudding "^3.5.1"
+
+"@lerna/resolve-symlink@3.16.0":
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386"
+ integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==
+ dependencies:
+ fs-extra "^8.1.0"
+ npmlog "^4.1.2"
+ read-cmd-shim "^1.0.1"
+
+"@lerna/rimraf-dir@3.16.5":
+ version "3.16.5"
+ resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09"
+ integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==
+ dependencies:
+ "@lerna/child-process" "3.16.5"
+ npmlog "^4.1.2"
+ path-exists "^3.0.0"
+ rimraf "^2.6.2"
+
+"@lerna/run-lifecycle@3.16.2":
+ version "3.16.2"
+ resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00"
+ integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==
+ dependencies:
+ "@lerna/npm-conf" "3.16.0"
+ figgy-pudding "^3.5.1"
+ npm-lifecycle "^3.1.2"
+ npmlog "^4.1.2"
+
+"@lerna/run-topologically@3.18.5":
+ version "3.18.5"
+ resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3"
+ integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==
+ dependencies:
+ "@lerna/query-graph" "3.18.5"
+ figgy-pudding "^3.5.1"
+ p-queue "^4.0.0"
+
+"@lerna/run@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891"
+ integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==
+ dependencies:
+ "@lerna/command" "3.21.0"
+ "@lerna/filter-options" "3.20.0"
+ "@lerna/npm-run-script" "3.16.5"
+ "@lerna/output" "3.13.0"
+ "@lerna/profiler" "3.20.0"
+ "@lerna/run-topologically" "3.18.5"
+ "@lerna/timer" "3.13.0"
+ "@lerna/validation-error" "3.13.0"
+ p-map "^2.1.0"
+
+"@lerna/symlink-binary@3.17.0":
+ version "3.17.0"
+ resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a"
+ integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==
+ dependencies:
+ "@lerna/create-symlink" "3.16.2"
+ "@lerna/package" "3.16.0"
+ fs-extra "^8.1.0"
+ p-map "^2.1.0"
+
+"@lerna/symlink-dependencies@3.17.0":
+ version "3.17.0"
+ resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a"
+ integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==
+ dependencies:
+ "@lerna/create-symlink" "3.16.2"
+ "@lerna/resolve-symlink" "3.16.0"
+ "@lerna/symlink-binary" "3.17.0"
+ fs-extra "^8.1.0"
+ p-finally "^1.0.0"
+ p-map "^2.1.0"
+ p-map-series "^1.0.0"
+
+"@lerna/timer@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781"
+ integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==
+
+"@lerna/validation-error@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3"
+ integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==
+ dependencies:
+ npmlog "^4.1.2"
+
+"@lerna/version@3.22.1":
+ version "3.22.1"
+ resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.22.1.tgz#9805a9247a47ee62d6b81bd9fa5fb728b24b59e2"
+ integrity sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==
+ dependencies:
+ "@lerna/check-working-tree" "3.16.5"
+ "@lerna/child-process" "3.16.5"
+ "@lerna/collect-updates" "3.20.0"
+ "@lerna/command" "3.21.0"
+ "@lerna/conventional-commits" "3.22.0"
+ "@lerna/github-client" "3.22.0"
+ "@lerna/gitlab-client" "3.15.0"
+ "@lerna/output" "3.13.0"
+ "@lerna/prerelease-id-from-version" "3.16.0"
+ "@lerna/prompt" "3.18.5"
+ "@lerna/run-lifecycle" "3.16.2"
+ "@lerna/run-topologically" "3.18.5"
+ "@lerna/validation-error" "3.13.0"
+ chalk "^2.3.1"
+ dedent "^0.7.0"
+ load-json-file "^5.3.0"
+ minimatch "^3.0.4"
+ npmlog "^4.1.2"
+ p-map "^2.1.0"
+ p-pipe "^1.2.0"
+ p-reduce "^1.0.0"
+ p-waterfall "^1.0.0"
+ semver "^6.2.0"
+ slash "^2.0.0"
+ temp-write "^3.4.0"
+ write-json-file "^3.2.0"
+
+"@lerna/write-log-file@3.13.0":
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26"
+ integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==
+ dependencies:
+ npmlog "^4.1.2"
+ write-file-atomic "^2.3.0"
+
+"@manypkg/find-root@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f"
+ integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ "@types/node" "^12.7.1"
+ find-up "^4.1.0"
+ fs-extra "^8.1.0"
+
+"@manypkg/get-packages@^1.0.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.1.tgz#7c7e72d0061ab2e61d2ce4da58ce91290a60ac8d"
+ integrity sha512-J6VClfQSVgR6958eIDTGjfdCrELy1eT+SHeoSMomnvRQVktZMnEA5edIr5ovRFNw5y+Bk/jyoevPzGYod96mhw==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ "@manypkg/find-root" "^1.1.0"
+ fs-extra "^8.1.0"
+ globby "^11.0.0"
+ read-yaml-file "^1.1.0"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.scandir@2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
+ integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.4"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
+ integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
+ integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.4"
+ fastq "^1.6.0"
+
+"@octokit/auth-token@^2.4.0":
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3"
+ integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+
+"@octokit/endpoint@^6.0.1":
+ version "6.0.11"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1"
+ integrity sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ is-plain-object "^5.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/openapi-types@^3.4.1":
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-3.4.1.tgz#317f78cede7f387046e6bad2041e01ddf9607e96"
+ integrity sha512-7Sjm3UwEAM11f+ck9+qlyEfgl8hCk5sSZBU2qcWY8+8ibowjqcwxhhtvY0/pjHPF8mcvmedFpGmmIYs2qM9/+Q==
+
+"@octokit/plugin-enterprise-rest@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437"
+ integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==
+
+"@octokit/plugin-paginate-rest@^1.1.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc"
+ integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==
+ dependencies:
+ "@octokit/types" "^2.0.1"
+
+"@octokit/plugin-request-log@^1.0.0":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d"
+ integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==
+
+"@octokit/plugin-rest-endpoint-methods@2.4.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e"
+ integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==
+ dependencies:
+ "@octokit/types" "^2.0.1"
+ deprecation "^2.3.1"
+
+"@octokit/request-error@^1.0.2":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801"
+ integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==
+ dependencies:
+ "@octokit/types" "^2.0.0"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request-error@^2.0.0":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143"
+ integrity sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request@^5.2.0":
+ version "5.4.14"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96"
+ integrity sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==
+ dependencies:
+ "@octokit/endpoint" "^6.0.1"
+ "@octokit/request-error" "^2.0.0"
+ "@octokit/types" "^6.7.1"
+ deprecation "^2.0.0"
+ is-plain-object "^5.0.0"
+ node-fetch "^2.6.1"
+ once "^1.4.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/rest@^16.28.4":
+ version "16.43.2"
+ resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b"
+ integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==
+ dependencies:
+ "@octokit/auth-token" "^2.4.0"
+ "@octokit/plugin-paginate-rest" "^1.1.1"
+ "@octokit/plugin-request-log" "^1.0.0"
+ "@octokit/plugin-rest-endpoint-methods" "2.4.0"
+ "@octokit/request" "^5.2.0"
+ "@octokit/request-error" "^1.0.2"
+ atob-lite "^2.0.0"
+ before-after-hook "^2.0.0"
+ btoa-lite "^1.0.0"
+ deprecation "^2.0.0"
+ lodash.get "^4.4.2"
+ lodash.set "^4.3.2"
+ lodash.uniq "^4.5.0"
+ octokit-pagination-methods "^1.1.0"
+ once "^1.4.0"
+ universal-user-agent "^4.0.0"
+
+"@octokit/types@^2.0.0", "@octokit/types@^2.0.1":
+ version "2.16.2"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2"
+ integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==
+ dependencies:
+ "@types/node" ">= 8"
+
+"@octokit/types@^6.0.3", "@octokit/types@^6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.7.1.tgz#01fdc5bbc67bf10ab0ca0aa2461d19ff9dd67fb7"
+ integrity sha512-OzRXbizUfixgzTjlSZQj+yuo0J9vAMOLtpsIm3JjQUsI3CcLXZnVaxRIWtYD+iwHznnvG9fJlPHM6SRp77fUcw==
+ dependencies:
+ "@octokit/openapi-types" "^3.4.1"
+ "@types/node" ">= 8"
+
+"@sinonjs/commons@^1.7.0":
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b"
+ integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==
+ dependencies:
+ type-detect "4.0.8"
+
+"@sinonjs/fake-timers@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40"
+ integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==
+ dependencies:
+ "@sinonjs/commons" "^1.7.0"
+
+"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
+ version "7.1.12"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
+ integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8"
+ integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be"
+ integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0"
+ integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/glob@^7.1.1":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
+ integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/graceful-fs@^4.1.2":
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753"
+ integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
+ integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
+
+"@types/istanbul-lib-report@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
+ integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+
+"@types/istanbul-reports@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821"
+ integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==
+ dependencies:
+ "@types/istanbul-lib-report" "*"
+
+"@types/jest@26.x":
+ version "26.0.20"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307"
+ integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==
+ dependencies:
+ jest-diff "^26.0.0"
+ pretty-format "^26.0.0"
+
+"@types/json-schema@^7.0.3":
+ version "7.0.7"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
+ integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
+
+"@types/minimatch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+
+"@types/minimist@^1.2.0":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
+ integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==
+
+"@types/node@*", "@types/node@>= 8":
+ version "14.14.22"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18"
+ integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==
+
+"@types/node@^12.7.1":
+ version "12.19.16"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.16.tgz#15753af35cbef636182d8d8ca55b37c8583cecb3"
+ integrity sha512-7xHmXm/QJ7cbK2laF+YYD7gb5MggHIIQwqyjin3bpEGiSuvScMQ5JZZXPvRipi1MwckTQbJZROMns/JxdnIL1Q==
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
+ integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/prettier@^2.0.0":
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.6.tgz#f4b1efa784e8db479cdb8b14403e2144b1e9ff03"
+ integrity sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA==
+
+"@types/semver@^6.0.0":
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.2.tgz#5c27df09ca39e3c9beb4fae6b95f4d71426df0a9"
+ integrity sha512-RxAwYt4rGwK5GyoRwuP0jT6ZHAVTdz2EqgsHmX0PYNjGsko+OeT4WFXXTs/lM3teJUJodM+SNtAL5/pXIJ61IQ==
+
+"@types/stack-utils@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff"
+ integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==
+
+"@types/yargs-parser@*":
+ version "20.2.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
+ integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==
+
+"@types/yargs@^15.0.0":
+ version "15.0.13"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc"
+ integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==
+ dependencies:
+ "@types/yargs-parser" "*"
+
+"@typescript-eslint/eslint-plugin@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.2.tgz#47a15803cfab89580b96933d348c2721f3d2f6fe"
+ integrity sha512-uMGfG7GFYK/nYutK/iqYJv6K/Xuog/vrRRZX9aEP4Zv1jsYXuvFUMDFLhUnc8WFv3D2R5QhNQL3VYKmvLS5zsQ==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.14.2"
+ "@typescript-eslint/scope-manager" "4.14.2"
+ debug "^4.1.1"
+ functional-red-black-tree "^1.0.1"
+ lodash "^4.17.15"
+ regexpp "^3.0.0"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/experimental-utils@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.2.tgz#9df35049d1d36b6cbaba534d703648b9e1f05cbb"
+ integrity sha512-mV9pmET4C2y2WlyHmD+Iun8SAEqkLahHGBkGqDVslHkmoj3VnxnGP4ANlwuxxfq1BsKdl/MPieDbohCEQgKrwA==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/scope-manager" "4.14.2"
+ "@typescript-eslint/types" "4.14.2"
+ "@typescript-eslint/typescript-estree" "4.14.2"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/parser@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.2.tgz#31e216e4baab678a56e539f9db9862e2542c98d0"
+ integrity sha512-ipqSP6EuUsMu3E10EZIApOJgWSpcNXeKZaFeNKQyzqxnQl8eQCbV+TSNsl+s2GViX2d18m1rq3CWgnpOxDPgHg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.14.2"
+ "@typescript-eslint/types" "4.14.2"
+ "@typescript-eslint/typescript-estree" "4.14.2"
+ debug "^4.1.1"
+
+"@typescript-eslint/scope-manager@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.14.2.tgz#64cbc9ca64b60069aae0c060b2bf81163243b266"
+ integrity sha512-cuV9wMrzKm6yIuV48aTPfIeqErt5xceTheAgk70N1V4/2Ecj+fhl34iro/vIssJlb7XtzcaD07hWk7Jk0nKghg==
+ dependencies:
+ "@typescript-eslint/types" "4.14.2"
+ "@typescript-eslint/visitor-keys" "4.14.2"
+
+"@typescript-eslint/types@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.2.tgz#d96da62be22dc9dc6a06647f3633815350fb3174"
+ integrity sha512-LltxawRW6wXy4Gck6ZKlBD05tCHQUj4KLn4iR69IyRiDHX3d3NCAhO+ix5OR2Q+q9bjCrHE/HKt+riZkd1At8Q==
+
+"@typescript-eslint/typescript-estree@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.2.tgz#9c5ebd8cae4d7b014f890acd81e8e17f309c9df9"
+ integrity sha512-ESiFl8afXxt1dNj8ENEZT12p+jl9PqRur+Y19m0Z/SPikGL6rqq4e7Me60SU9a2M28uz48/8yct97VQYaGl0Vg==
+ dependencies:
+ "@typescript-eslint/types" "4.14.2"
+ "@typescript-eslint/visitor-keys" "4.14.2"
+ debug "^4.1.1"
+ globby "^11.0.1"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/visitor-keys@4.14.2":
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.2.tgz#997cbe2cb0690e1f384a833f64794e98727c70c6"
+ integrity sha512-KBB+xLBxnBdTENs/rUgeUKO0UkPBRs2vD09oMRRIkj5BEN8PX1ToXV532desXfpQnZsYTyLLviS7JrPhdL154w==
+ dependencies:
+ "@typescript-eslint/types" "4.14.2"
+ eslint-visitor-keys "^2.0.0"
+
+"@zkochan/cmd-shim@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e"
+ integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==
+ dependencies:
+ is-windows "^1.0.0"
+ mkdirp-promise "^5.0.1"
+ mz "^2.5.0"
+
+JSONStream@^1.0.4, JSONStream@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
+abab@^2.0.3:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
+ integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+acorn-globals@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
+ integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+
+acorn-jsx@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
+ integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
+
+acorn-walk@^7.1.1:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
+acorn@^7.1.1, acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+agent-base@4, agent-base@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
+ integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+agent-base@~4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
+ integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+agentkeepalive@^3.4.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67"
+ integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==
+ dependencies:
+ humanize-ms "^1.2.1"
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.4.tgz#827e5f5ae32f5e5c1637db61f253a112229b5e2f"
+ integrity sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
+ dependencies:
+ string-width "^2.0.0"
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
+ansi-escapes@^4.2.1, ansi-escapes@^4.3.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
+ integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
+ dependencies:
+ type-fest "^0.11.0"
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@^3.0.3:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.0.3, aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+aproba@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
+ integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+arg@^4.1.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+ integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-differ@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1"
+ integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-ify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
+ integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
+
+array-union@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asap@^2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+ integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
+
+asn1@~0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
+atob-lite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696"
+ integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+aws4@^1.8.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
+ integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
+
+babel-jest@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056"
+ integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==
+ dependencies:
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/babel__core" "^7.1.7"
+ babel-plugin-istanbul "^6.0.0"
+ babel-preset-jest "^26.6.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ slash "^3.0.0"
+
+babel-plugin-istanbul@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765"
+ integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@istanbuljs/load-nyc-config" "^1.0.0"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-instrument "^4.0.0"
+ test-exclude "^6.0.0"
+
+babel-plugin-jest-hoist@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d"
+ integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.0.0"
+ "@types/babel__traverse" "^7.0.6"
+
+babel-preset-current-node-syntax@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
+ integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
+ dependencies:
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-bigint" "^7.8.3"
+ "@babel/plugin-syntax-class-properties" "^7.8.3"
+ "@babel/plugin-syntax-import-meta" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.8.3"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-top-level-await" "^7.8.3"
+
+babel-preset-jest@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee"
+ integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==
+ dependencies:
+ babel-plugin-jest-hoist "^26.6.2"
+ babel-preset-current-node-syntax "^1.0.0"
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+before-after-hook@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.1.tgz#99ae36992b5cfab4a83f6bee74ab27835f28f405"
+ integrity sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==
+
+better-path-resolve@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d"
+ integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==
+ dependencies:
+ is-windows "^1.0.0"
+
+bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+boxen@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
+ cli-boxes "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+breakword@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.5.tgz#fd420a417f55016736b5b615161cae1c8f819810"
+ integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==
+ dependencies:
+ wcwidth "^1.0.1"
+
+browser-process-hrtime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
+ integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
+bs-logger@0.x:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
+ integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
+ dependencies:
+ fast-json-stable-stringify "2.x"
+
+bser@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+ integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
+ dependencies:
+ node-int64 "^0.4.0"
+
+btoa-lite@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
+ integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc=
+
+buffer-from@1.x, buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+builtins@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
+ integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
+
+byline@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
+ integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
+
+byte-size@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191"
+ integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==
+
+cacache@^12.0.0, cacache@^12.0.3:
+ version "12.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cachedir@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e"
+ integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase-keys@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
+ integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=
+ dependencies:
+ camelcase "^4.1.0"
+ map-obj "^2.0.0"
+ quick-lru "^1.0.0"
+
+camelcase-keys@^6.2.2:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
+ integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+ dependencies:
+ camelcase "^5.3.1"
+ map-obj "^4.0.0"
+ quick-lru "^4.0.1"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^4.0.0, camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
+ integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+
+capture-exit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
+ integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
+ dependencies:
+ rsvp "^4.8.4"
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
+chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+char-regex@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
+ integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+chownr@^1.1.1, chownr@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+cjs-module-lexer@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f"
+ integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
+
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-truncate@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
+ dependencies:
+ slice-ansi "^3.0.0"
+ string-width "^4.2.0"
+
+cli-width@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
+ integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+clone-deep@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
+ dependencies:
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.2"
+ shallow-clone "^3.0.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collect-v8-coverage@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
+ integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+columnify@^1.5.4:
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
+ integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=
+ dependencies:
+ strip-ansi "^3.0.0"
+ wcwidth "^1.0.0"
+
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^6.2.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+
+commitizen@4.2.3, commitizen@^4.0.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.3.tgz#088d0ef72500240d331b11e02e288223667c1475"
+ integrity sha512-pYlYEng7XMV2TW4xtjDKBGqeJ0Teq2zyRSx2S3Ml1XAplHSlJZK8vm1KdGclpMEZuGafbS5TeHXIVnHk8RWIzQ==
+ dependencies:
+ cachedir "2.2.0"
+ cz-conventional-changelog "3.2.0"
+ dedent "0.7.0"
+ detect-indent "6.0.0"
+ find-node-modules "2.0.0"
+ find-root "1.1.0"
+ fs-extra "8.1.0"
+ glob "7.1.4"
+ inquirer "6.5.2"
+ is-utf8 "^0.2.1"
+ lodash "^4.17.20"
+ minimist "1.2.5"
+ strip-bom "4.0.0"
+ strip-json-comments "3.0.1"
+
+compare-func@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3"
+ integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==
+ dependencies:
+ array-ify "^1.0.0"
+ dot-prop "^5.1.0"
+
+compare-versions@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
+ integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+concat-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
+ integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^3.0.2"
+ typedarray "^0.0.6"
+
+config-chain@^1.1.11:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
+ integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+conventional-changelog-angular@^5.0.0, conventional-changelog-angular@^5.0.3:
+ version "5.0.12"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9"
+ integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==
+ dependencies:
+ compare-func "^2.0.0"
+ q "^1.5.1"
+
+conventional-changelog-conventionalcommits@^4.3.1:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz#a02e0b06d11d342fdc0f00c91d78265ed0bc0a62"
+ integrity sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==
+ dependencies:
+ compare-func "^2.0.0"
+ lodash "^4.17.15"
+ q "^1.5.1"
+
+conventional-changelog-core@^3.1.6:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb"
+ integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==
+ dependencies:
+ conventional-changelog-writer "^4.0.6"
+ conventional-commits-parser "^3.0.3"
+ dateformat "^3.0.0"
+ get-pkg-repo "^1.0.0"
+ git-raw-commits "2.0.0"
+ git-remote-origin-url "^2.0.0"
+ git-semver-tags "^2.0.3"
+ lodash "^4.2.1"
+ normalize-package-data "^2.3.5"
+ q "^1.5.1"
+ read-pkg "^3.0.0"
+ read-pkg-up "^3.0.0"
+ through2 "^3.0.0"
+
+conventional-changelog-preset-loader@^2.1.1:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c"
+ integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==
+
+conventional-changelog-writer@^4.0.6:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f"
+ integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==
+ dependencies:
+ compare-func "^2.0.0"
+ conventional-commits-filter "^2.0.7"
+ dateformat "^3.0.0"
+ handlebars "^4.7.6"
+ json-stringify-safe "^5.0.1"
+ lodash "^4.17.15"
+ meow "^8.0.0"
+ semver "^6.0.0"
+ split "^1.0.0"
+ through2 "^4.0.0"
+
+conventional-commit-types@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz#7c9214e58eae93e85dd66dbfbafe7e4fffa2365b"
+ integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==
+
+conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3"
+ integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==
+ dependencies:
+ lodash.ismatch "^4.4.0"
+ modify-values "^1.0.0"
+
+conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.0.tgz#9e261b139ca4b7b29bcebbc54460da36894004ca"
+ integrity sha512-XmJiXPxsF0JhAKyfA2Nn+rZwYKJ60nanlbSWwwkGwLQFbugsc0gv1rzc7VbbUWAzJfR1qR87/pNgv9NgmxtBMQ==
+ dependencies:
+ JSONStream "^1.0.4"
+ is-text-path "^1.0.1"
+ lodash "^4.17.15"
+ meow "^8.0.0"
+ split2 "^2.0.0"
+ through2 "^4.0.0"
+ trim-off-newlines "^1.0.0"
+
+conventional-recommended-bump@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba"
+ integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==
+ dependencies:
+ concat-stream "^2.0.0"
+ conventional-changelog-preset-loader "^2.1.1"
+ conventional-commits-filter "^2.0.2"
+ conventional-commits-parser "^3.0.3"
+ git-raw-commits "2.0.0"
+ git-semver-tags "^2.0.3"
+ meow "^4.0.0"
+ q "^1.5.1"
+
+convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-js@^3.6.1:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0"
+ integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^5.1.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+cosmiconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
+ integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+create-require@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+ integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
+
+cross-spawn@^5.0.1, cross-spawn@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.0:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+cssom@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+cssom@~0.3.6:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
+csv-generate@^3.2.4:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.3.0.tgz#0e25658f1bb9806d94fec7b270896a35c7eedf1a"
+ integrity sha512-EXSru4QwEWKwM7wwsJbhrZC+mHEJrhQFoXlohHs80CAU8Qhlv9gaw1sjzNiC3Hr3oUx5skDmEiAlz+tnKWV0RA==
+
+csv-parse@^4.8.8:
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.15.1.tgz#fc5a0a1b24eaa6d4c24892daa387c46f7f92f8d2"
+ integrity sha512-TXIvRtNp0fqMJbk3yPR35bQIDzMH4khDwduElzE7Fl1wgnl25mnWYLSLqd/wS5GsDoX1rWtysivEYMNsz5jKwQ==
+
+csv-parser@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/csv-parser/-/csv-parser-3.0.0.tgz#b88a6256d79e090a97a1b56451f9327b01d710e7"
+ integrity sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==
+ dependencies:
+ minimist "^1.2.0"
+
+csv-stringify@^5.3.6:
+ version "5.6.1"
+ resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.1.tgz#d790bca20f20ed5a8887a3dce3ac458d611cd2e0"
+ integrity sha512-JlQlNZMiuRGSFbLXFNGoBtsORXlkqf4Dfq8Ee0Jo4RVJj3YAUzevagUx24mDrQJLDF7aYz6Ne8kqA8WWBaYt2A==
+
+csv@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/csv/-/csv-5.3.2.tgz#50b344e25dfbb8c62684a1bcec18c22468b2161e"
+ integrity sha512-odDyucr9OgJTdGM2wrMbJXbOkJx3nnUX3Pt8SFOwlAMOpsUQlz1dywvLMXJWX/4Ib0rjfOsaawuuwfI5ucqBGQ==
+ dependencies:
+ csv-generate "^3.2.4"
+ csv-parse "^4.8.8"
+ csv-stringify "^5.3.6"
+ stream-transform "^2.0.1"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
+
+cz-conventional-changelog@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz#6aef1f892d64113343d7e455529089ac9f20e477"
+ integrity sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==
+ dependencies:
+ chalk "^2.4.1"
+ commitizen "^4.0.3"
+ conventional-commit-types "^3.0.0"
+ lodash.map "^4.5.1"
+ longest "^2.0.1"
+ word-wrap "^1.0.3"
+ optionalDependencies:
+ "@commitlint/load" ">6.1.1"
+
+cz-conventional-changelog@3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2"
+ integrity sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==
+ dependencies:
+ chalk "^2.4.1"
+ commitizen "^4.0.3"
+ conventional-commit-types "^3.0.0"
+ lodash.map "^4.5.1"
+ longest "^2.0.1"
+ word-wrap "^1.0.3"
+ optionalDependencies:
+ "@commitlint/load" ">6.1.1"
+
+dargs@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
+ integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+dargs@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
+ integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+data-urls@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
+ integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+ dependencies:
+ abab "^2.0.3"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+
+dataloader@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8"
+ integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==
+
+dateformat@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
+ integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
+
+debug@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@^2.2.0, debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
+ dependencies:
+ ms "2.1.2"
+
+debuglog@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
+ integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
+
+decamelize-keys@^1.0.0, decamelize-keys@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
+ integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
+ dependencies:
+ decamelize "^1.1.0"
+ map-obj "^1.0.0"
+
+decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decimal.js@^10.2.0:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3"
+ integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+dedent@0.7.0, dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-is@^0.1.3, deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+deprecation@^2.0.0, deprecation@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
+ integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
+
+detect-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
+
+detect-indent@6.0.0, detect-indent@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd"
+ integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==
+
+detect-indent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
+ integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
+
+detect-newline@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
+ integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
+
+dezalgo@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
+ integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
+ dependencies:
+ asap "^2.0.0"
+ wrappy "1"
+
+diff-sequences@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
+ integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
+
+diff@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
+ integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+
+dir-glob@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
+ integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
+ dependencies:
+ path-type "^3.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+domexception@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
+ integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+ dependencies:
+ webidl-conversions "^5.0.0"
+
+dot-prop@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4"
+ integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==
+ dependencies:
+ is-obj "^1.0.0"
+
+dot-prop@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+dotenv@^8.1.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
+ integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
+
+duplexer@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+emittery@^0.7.1:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82"
+ integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+encoding@^0.1.11:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enquirer@^2.3.0, enquirer@^2.3.5, enquirer@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
+env-paths@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
+ integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
+
+envinfo@^7.3.1:
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320"
+ integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==
+
+err-code@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
+ integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.18.0-next.1:
+ version "1.18.0-next.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
+ integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.2.2"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.1"
+ object-inspect "^1.9.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.3"
+ string.prototype.trimstart "^1.0.3"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-promise@^4.0.3:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
+es6-promisify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
+ dependencies:
+ es6-promise "^4.0.3"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+escodegen@^1.14.1:
+ version "1.14.3"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-config-prettier@7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9"
+ integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==
+
+eslint-plugin-prettier@3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7"
+ integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+eslint-scope@^5.0.0, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+ integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
+eslint@^7.19.0:
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.19.0.tgz#6719621b196b5fad72e43387981314e5d0dc3f41"
+ integrity sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@eslint/eslintrc" "^0.3.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^6.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash "^4.17.20"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.4"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^7.3.0, espree@^7.3.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
+ integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^1.3.0"
+
+esprima@^4.0.0, esprima@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+ integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+eventemitter3@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
+ integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
+
+exec-sh@^0.3.2:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
+ integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==
+
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^4.0.0, execa@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+expect@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417"
+ integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ ansi-styles "^4.0.0"
+ jest-get-type "^26.3.0"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-regex-util "^26.0.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+extendable-error@^0.1.5:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96"
+ integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==
+
+external-editor@^3.0.3, external-editor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
+fast-glob@^2.2.6:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
+ integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-glob@^3.1.1:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
+ integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
+
+fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastq@^1.6.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e"
+ integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==
+ dependencies:
+ reusify "^1.0.4"
+
+fb-watchman@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
+ integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
+ dependencies:
+ bser "2.1.1"
+
+figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+ integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+figures@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
+ integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-node-modules@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69"
+ integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw==
+ dependencies:
+ findup-sync "^3.0.0"
+ merge "^1.2.1"
+
+find-root@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+find-up@^4.0.0, find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+find-versions@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965"
+ integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==
+ dependencies:
+ semver-regex "^3.1.2"
+
+find-yarn-workspace-root2@1.2.16:
+ version "1.2.16"
+ resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9"
+ integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==
+ dependencies:
+ micromatch "^4.0.2"
+ pkg-dir "^4.2.0"
+
+findup-sync@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
+ dependencies:
+ detect-file "^1.0.0"
+ is-glob "^4.0.0"
+ micromatch "^3.0.4"
+ resolve-dir "^1.0.1"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
+ integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@8.1.0, fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
+ dependencies:
+ minipass "^2.6.0"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^2.1.2:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f"
+ integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+genfun@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537"
+ integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==
+
+gensync@^1.0.0-beta.1:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e"
+ integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
+get-package-type@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
+ integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
+
+get-pkg-repo@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
+ integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ meow "^3.3.0"
+ normalize-package-data "^2.3.0"
+ parse-github-repo-url "^1.3.0"
+ through2 "^2.0.0"
+
+get-port@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119"
+ integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==
+
+get-stdin@8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
+ integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.0.0, get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+ dependencies:
+ assert-plus "^1.0.0"
+
+git-raw-commits@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5"
+ integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==
+ dependencies:
+ dargs "^4.0.1"
+ lodash.template "^4.0.2"
+ meow "^4.0.0"
+ split2 "^2.0.0"
+ through2 "^2.0.0"
+
+git-raw-commits@^2.0.0:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1"
+ integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==
+ dependencies:
+ dargs "^7.0.0"
+ lodash "^4.17.15"
+ meow "^8.0.0"
+ split2 "^3.0.0"
+ through2 "^4.0.0"
+
+git-remote-origin-url@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f"
+ integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=
+ dependencies:
+ gitconfiglocal "^1.0.0"
+ pify "^2.3.0"
+
+git-semver-tags@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34"
+ integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==
+ dependencies:
+ meow "^4.0.0"
+ semver "^6.0.0"
+
+git-up@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c"
+ integrity sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==
+ dependencies:
+ is-ssh "^1.3.0"
+ parse-url "^5.0.0"
+
+git-url-parse@^11.1.2:
+ version "11.4.4"
+ resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.4.4.tgz#5d747debc2469c17bc385719f7d0427802d83d77"
+ integrity sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw==
+ dependencies:
+ git-up "^4.0.0"
+
+gitconfiglocal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b"
+ integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=
+ dependencies:
+ ini "^1.3.2"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@^5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+ integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+
+glob@7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-dirs@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
+ dependencies:
+ ini "^1.3.4"
+
+global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globby@^11.0.0, globby@^11.0.1:
+ version "11.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
+ integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globby@^9.2.0:
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d"
+ integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^1.0.2"
+ dir-glob "^2.2.2"
+ fast-glob "^2.2.6"
+ glob "^7.1.3"
+ ignore "^4.0.3"
+ pify "^4.0.1"
+ slash "^2.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+ integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+
+graceful-fs@^4.1.5:
+ version "4.2.5"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.5.tgz#bc18864a6c9fc7b303f2e2abdb9155ad178fbe29"
+ integrity sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==
+
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+ integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
+
+handlebars@^4.7.6:
+ version "4.7.6"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
+ integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
+ dependencies:
+ minimist "^1.2.5"
+ neo-async "^2.6.0"
+ source-map "^0.6.1"
+ wordwrap "^1.0.0"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
+hard-rejection@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
+ integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+has-unicode@^2.0.0, has-unicode@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
+hosted-git-info@^2.1.4, hosted-git-info@^2.7.1:
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+
+hosted-git-info@^3.0.6:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d"
+ integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==
+ dependencies:
+ lru-cache "^6.0.0"
+
+html-encoding-sniffer@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
+ integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+ dependencies:
+ whatwg-encoding "^1.0.5"
+
+html-escaper@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+ integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+
+http-cache-semantics@^3.8.1:
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
+ integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
+
+http-proxy-agent@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405"
+ integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==
+ dependencies:
+ agent-base "4"
+ debug "3.1.0"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-proxy-agent@^2.2.3:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
+ integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
+ dependencies:
+ agent-base "^4.3.0"
+ debug "^3.1.0"
+
+human-id@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3"
+ integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
+ integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=
+ dependencies:
+ ms "^2.0.0"
+
+husky@4.3.8:
+ version "4.3.8"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d"
+ integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==
+ dependencies:
+ chalk "^4.0.0"
+ ci-info "^2.0.0"
+ compare-versions "^3.6.0"
+ cosmiconfig "^7.0.0"
+ find-versions "^4.0.0"
+ opencollective-postinstall "^2.0.2"
+ pkg-dir "^5.0.0"
+ please-upgrade-node "^3.2.0"
+ slash "^3.0.0"
+ which-pm-runs "^1.0.0"
+
+iconv-lite@0.4.24, iconv-lite@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
+ integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore-walk@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
+ integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^4.0.3, ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.4:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+import-local@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
+ integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
+ dependencies:
+ pkg-dir "^4.2.0"
+ resolve-cwd "^3.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indent-string@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+infer-owner@^1.0.3, infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@^1.3.2, ini@^1.3.4:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+init-package-json@^1.10.3:
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe"
+ integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==
+ dependencies:
+ glob "^7.1.1"
+ npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0"
+ promzard "^0.3.0"
+ read "~1.0.1"
+ read-package-json "1 || 2"
+ semver "2.x || 3.x || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+ validate-npm-package-name "^3.0.0"
+
+inquirer@6.5.2, inquirer@^6.2.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca"
+ integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==
+ dependencies:
+ ansi-escapes "^3.2.0"
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.3"
+ figures "^2.0.0"
+ lodash "^4.17.12"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^6.4.0"
+ string-width "^2.1.0"
+ strip-ansi "^5.1.0"
+ through "^2.3.6"
+
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+
+ip@1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4, is-callable@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
+ integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
+is-core-module@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
+ dependencies:
+ has "^1.0.3"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+ integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-docker@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156"
+ integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-finite@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
+ integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-generator-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+ integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-negative-zero@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.0, is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
+is-potential-custom-element-name@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397"
+ integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c=
+
+is-regex@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
+ integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-symbols "^1.0.1"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-ssh@^1.3.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b"
+ integrity sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==
+ dependencies:
+ protocols "^1.1.0"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-subdir@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4"
+ integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==
+ dependencies:
+ better-path-resolve "1.0.0"
+
+is-symbol@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ dependencies:
+ has-symbols "^1.0.1"
+
+is-text-path@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
+ integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=
+ dependencies:
+ text-extensions "^1.0.0"
+
+is-typedarray@^1.0.0, is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0, is-utf8@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+istanbul-lib-coverage@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
+ integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
+
+istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
+ integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
+ dependencies:
+ "@babel/core" "^7.7.5"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.0.0"
+ semver "^6.3.0"
+
+istanbul-lib-report@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
+ integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
+ dependencies:
+ istanbul-lib-coverage "^3.0.0"
+ make-dir "^3.0.0"
+ supports-color "^7.1.0"
+
+istanbul-lib-source-maps@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9"
+ integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^3.0.0"
+ source-map "^0.6.1"
+
+istanbul-reports@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
+ integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
+ dependencies:
+ html-escaper "^2.0.0"
+ istanbul-lib-report "^3.0.0"
+
+jest-changed-files@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0"
+ integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ execa "^4.0.0"
+ throat "^5.0.0"
+
+jest-cli@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a"
+ integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==
+ dependencies:
+ "@jest/core" "^26.6.3"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.4"
+ import-local "^3.0.2"
+ is-ci "^2.0.0"
+ jest-config "^26.6.3"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ prompts "^2.0.1"
+ yargs "^15.4.1"
+
+jest-config@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349"
+ integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/test-sequencer" "^26.6.3"
+ "@jest/types" "^26.6.2"
+ babel-jest "^26.6.3"
+ chalk "^4.0.0"
+ deepmerge "^4.2.2"
+ glob "^7.1.1"
+ graceful-fs "^4.2.4"
+ jest-environment-jsdom "^26.6.2"
+ jest-environment-node "^26.6.2"
+ jest-get-type "^26.3.0"
+ jest-jasmine2 "^26.6.3"
+ jest-regex-util "^26.0.0"
+ jest-resolve "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ micromatch "^4.0.2"
+ pretty-format "^26.6.2"
+
+jest-diff@^26.0.0, jest-diff@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
+ integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^26.6.2"
+ jest-get-type "^26.3.0"
+ pretty-format "^26.6.2"
+
+jest-docblock@^26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5"
+ integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==
+ dependencies:
+ detect-newline "^3.0.0"
+
+jest-each@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb"
+ integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ jest-get-type "^26.3.0"
+ jest-util "^26.6.2"
+ pretty-format "^26.6.2"
+
+jest-environment-jsdom@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e"
+ integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+ jsdom "^16.4.0"
+
+jest-environment-node@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c"
+ integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==
+ dependencies:
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ jest-mock "^26.6.2"
+ jest-util "^26.6.2"
+
+jest-get-type@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
+ integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==
+
+jest-haste-map@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa"
+ integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/graceful-fs" "^4.1.2"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-regex-util "^26.0.0"
+ jest-serializer "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ micromatch "^4.0.2"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.1.2"
+
+jest-jasmine2@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd"
+ integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@jest/environment" "^26.6.2"
+ "@jest/source-map" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ expect "^26.6.2"
+ is-generator-fn "^2.0.0"
+ jest-each "^26.6.2"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-runtime "^26.6.3"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ pretty-format "^26.6.2"
+ throat "^5.0.0"
+
+jest-leak-detector@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af"
+ integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==
+ dependencies:
+ jest-get-type "^26.3.0"
+ pretty-format "^26.6.2"
+
+jest-matcher-utils@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a"
+ integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^26.6.2"
+ jest-get-type "^26.3.0"
+ pretty-format "^26.6.2"
+
+jest-message-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07"
+ integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@jest/types" "^26.6.2"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ micromatch "^4.0.2"
+ pretty-format "^26.6.2"
+ slash "^3.0.0"
+ stack-utils "^2.0.2"
+
+jest-mock@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302"
+ integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+
+jest-pnp-resolver@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
+ integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
+
+jest-regex-util@^26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
+ integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==
+
+jest-resolve-dependencies@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6"
+ integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-snapshot "^26.6.2"
+
+jest-resolve@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507"
+ integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^26.6.2"
+ read-pkg-up "^7.0.1"
+ resolve "^1.18.1"
+ slash "^3.0.0"
+
+jest-runner@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159"
+ integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ emittery "^0.7.1"
+ exit "^0.1.2"
+ graceful-fs "^4.2.4"
+ jest-config "^26.6.3"
+ jest-docblock "^26.0.0"
+ jest-haste-map "^26.6.2"
+ jest-leak-detector "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-resolve "^26.6.2"
+ jest-runtime "^26.6.3"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ source-map-support "^0.5.6"
+ throat "^5.0.0"
+
+jest-runtime@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b"
+ integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==
+ dependencies:
+ "@jest/console" "^26.6.2"
+ "@jest/environment" "^26.6.2"
+ "@jest/fake-timers" "^26.6.2"
+ "@jest/globals" "^26.6.2"
+ "@jest/source-map" "^26.6.2"
+ "@jest/test-result" "^26.6.2"
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+ cjs-module-lexer "^0.6.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.4"
+ jest-config "^26.6.3"
+ jest-haste-map "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-mock "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-resolve "^26.6.2"
+ jest-snapshot "^26.6.2"
+ jest-util "^26.6.2"
+ jest-validate "^26.6.2"
+ slash "^3.0.0"
+ strip-bom "^4.0.0"
+ yargs "^15.4.1"
+
+jest-serializer@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1"
+ integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==
+ dependencies:
+ "@types/node" "*"
+ graceful-fs "^4.2.4"
+
+jest-snapshot@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84"
+ integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==
+ dependencies:
+ "@babel/types" "^7.0.0"
+ "@jest/types" "^26.6.2"
+ "@types/babel__traverse" "^7.0.4"
+ "@types/prettier" "^2.0.0"
+ chalk "^4.0.0"
+ expect "^26.6.2"
+ graceful-fs "^4.2.4"
+ jest-diff "^26.6.2"
+ jest-get-type "^26.3.0"
+ jest-haste-map "^26.6.2"
+ jest-matcher-utils "^26.6.2"
+ jest-message-util "^26.6.2"
+ jest-resolve "^26.6.2"
+ natural-compare "^1.4.0"
+ pretty-format "^26.6.2"
+ semver "^7.3.2"
+
+jest-util@^26.1.0, jest-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1"
+ integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ is-ci "^2.0.0"
+ micromatch "^4.0.2"
+
+jest-validate@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec"
+ integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ camelcase "^6.0.0"
+ chalk "^4.0.0"
+ jest-get-type "^26.3.0"
+ leven "^3.1.0"
+ pretty-format "^26.6.2"
+
+jest-watcher@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975"
+ integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==
+ dependencies:
+ "@jest/test-result" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ jest-util "^26.6.2"
+ string-length "^4.0.1"
+
+jest-worker@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
+jest@^26.6.3:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef"
+ integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==
+ dependencies:
+ "@jest/core" "^26.6.3"
+ import-local "^3.0.2"
+ jest-cli "^26.6.3"
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
+jsdom@^16.4.0:
+ version "16.4.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb"
+ integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==
+ dependencies:
+ abab "^2.0.3"
+ acorn "^7.1.1"
+ acorn-globals "^6.0.0"
+ cssom "^0.4.4"
+ cssstyle "^2.2.0"
+ data-urls "^2.0.0"
+ decimal.js "^10.2.0"
+ domexception "^2.0.1"
+ escodegen "^1.14.1"
+ html-encoding-sniffer "^2.0.1"
+ is-potential-custom-element-name "^1.0.0"
+ nwsapi "^2.2.0"
+ parse5 "5.1.1"
+ request "^2.88.2"
+ request-promise-native "^1.0.8"
+ saxes "^5.0.0"
+ symbol-tree "^3.2.4"
+ tough-cookie "^3.0.1"
+ w3c-hr-time "^1.0.2"
+ w3c-xmlserializer "^2.0.0"
+ webidl-conversions "^6.1.0"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+ ws "^7.2.3"
+ xml-name-validator "^3.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@2.x, json5@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+kleur@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
+lerna@^3.22.1:
+ version "3.22.1"
+ resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62"
+ integrity sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==
+ dependencies:
+ "@lerna/add" "3.21.0"
+ "@lerna/bootstrap" "3.21.0"
+ "@lerna/changed" "3.21.0"
+ "@lerna/clean" "3.21.0"
+ "@lerna/cli" "3.18.5"
+ "@lerna/create" "3.22.0"
+ "@lerna/diff" "3.21.0"
+ "@lerna/exec" "3.21.0"
+ "@lerna/import" "3.22.0"
+ "@lerna/info" "3.21.0"
+ "@lerna/init" "3.21.0"
+ "@lerna/link" "3.21.0"
+ "@lerna/list" "3.21.0"
+ "@lerna/publish" "3.22.1"
+ "@lerna/run" "3.21.0"
+ "@lerna/version" "3.22.1"
+ import-local "^2.0.0"
+ npmlog "^4.1.2"
+
+leven@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+lines-and-columns@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+lint-staged@10.5.3:
+ version "10.5.3"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.3.tgz#c682838b3eadd4c864d1022da05daa0912fb1da5"
+ integrity sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg==
+ dependencies:
+ chalk "^4.1.0"
+ cli-truncate "^2.1.0"
+ commander "^6.2.0"
+ cosmiconfig "^7.0.0"
+ debug "^4.2.0"
+ dedent "^0.7.0"
+ enquirer "^2.3.6"
+ execa "^4.1.0"
+ listr2 "^3.2.2"
+ log-symbols "^4.0.0"
+ micromatch "^4.0.2"
+ normalize-path "^3.0.0"
+ please-upgrade-node "^3.2.0"
+ string-argv "0.3.1"
+ stringify-object "^3.3.0"
+
+listr2@^3.2.2:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.3.1.tgz#87b57cc0b8541fa794b814c8bcb76f1211cfbf5c"
+ integrity sha512-8Zoxe7s/8nNr4bJ8bdAduHD8uJce+exmMmUWTXlq0WuUdffnH3muisHPHPFtW2vvOfohIsq7FGCaguUxN/h3Iw==
+ dependencies:
+ chalk "^4.1.0"
+ cli-truncate "^2.1.0"
+ figures "^3.2.0"
+ indent-string "^4.0.0"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.6.3"
+ through "^2.3.8"
+ wrap-ansi "^7.0.0"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+load-json-file@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3"
+ integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==
+ dependencies:
+ graceful-fs "^4.1.15"
+ parse-json "^4.0.0"
+ pify "^4.0.1"
+ strip-bom "^3.0.0"
+ type-fest "^0.3.0"
+
+load-yaml-file@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d"
+ integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==
+ dependencies:
+ graceful-fs "^4.1.5"
+ js-yaml "^3.13.0"
+ pify "^4.0.1"
+ strip-bom "^3.0.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash._reinterpolate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+ integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.get@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+
+lodash.ismatch@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37"
+ integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=
+
+lodash.map@^4.5.1:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
+ integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=
+
+lodash.set@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
+ integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
+
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
+lodash.startcase@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
+ integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=
+
+lodash.template@^4.0.2, lodash.template@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
+ integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
+ integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash@4.x, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1:
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
+log-symbols@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
+ integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
+ dependencies:
+ chalk "^4.0.0"
+
+log-update@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+ dependencies:
+ ansi-escapes "^4.3.0"
+ cli-cursor "^3.1.0"
+ slice-ansi "^4.0.0"
+ wrap-ansi "^6.2.0"
+
+longest@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8"
+ integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g=
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+macos-release@^2.2.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac"
+ integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==
+
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+make-error@1.x, make-error@^1.1.1:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+
+make-fetch-happen@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd"
+ integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==
+ dependencies:
+ agentkeepalive "^3.4.1"
+ cacache "^12.0.0"
+ http-cache-semantics "^3.8.1"
+ http-proxy-agent "^2.1.0"
+ https-proxy-agent "^2.2.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ node-fetch-npm "^2.0.2"
+ promise-retry "^1.1.1"
+ socks-proxy-agent "^4.0.0"
+ ssri "^6.0.0"
+
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+ dependencies:
+ tmpl "1.0.x"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
+ integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
+
+map-obj@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5"
+ integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+meow@^3.3.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+meow@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975"
+ integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==
+ dependencies:
+ camelcase-keys "^4.0.0"
+ decamelize-keys "^1.0.0"
+ loud-rejection "^1.0.0"
+ minimist "^1.1.3"
+ minimist-options "^3.0.1"
+ normalize-package-data "^2.3.4"
+ read-pkg-up "^3.0.0"
+ redent "^2.0.0"
+ trim-newlines "^2.0.0"
+
+meow@^6.0.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467"
+ integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==
+ dependencies:
+ "@types/minimist" "^1.2.0"
+ camelcase-keys "^6.2.2"
+ decamelize-keys "^1.1.0"
+ hard-rejection "^2.1.0"
+ minimist-options "^4.0.2"
+ normalize-package-data "^2.5.0"
+ read-pkg-up "^7.0.1"
+ redent "^3.0.0"
+ trim-newlines "^3.0.0"
+ type-fest "^0.13.1"
+ yargs-parser "^18.1.3"
+
+meow@^8.0.0:
+ version "8.1.2"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"
+ integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==
+ dependencies:
+ "@types/minimist" "^1.2.0"
+ camelcase-keys "^6.2.2"
+ decamelize-keys "^1.1.0"
+ hard-rejection "^2.1.0"
+ minimist-options "4.1.0"
+ normalize-package-data "^3.0.0"
+ read-pkg-up "^7.0.1"
+ redent "^3.0.0"
+ trim-newlines "^3.0.0"
+ type-fest "^0.18.0"
+ yargs-parser "^20.2.3"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.2.3, merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+merge@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
+ integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
+
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.0.5"
+
+mime-db@1.45.0:
+ version "1.45.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
+ integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
+
+mime-types@^2.1.12, mime-types@~2.1.19:
+ version "2.1.28"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
+ integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
+ dependencies:
+ mime-db "1.45.0"
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+min-indent@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
+ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist-options@4.1.0, minimist-options@^4.0.2:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
+ integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+ kind-of "^6.0.3"
+
+minimist-options@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954"
+ integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+
+minimist@1.2.5, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.2.1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
+ dependencies:
+ minipass "^2.9.0"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mixme@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.4.0.tgz#a1aee27f0d63cc905e1cc6ddc98abf94d414435e"
+ integrity sha512-B4Sm1CDC5+ov5AYxSkyeT5HLtiDgNOLKwFlq34wr8E2O3zRdTvQiLzo599Jt9cir6VJrSenOlgvdooVYCQJIYw==
+
+mkdirp-promise@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"
+ integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=
+ dependencies:
+ mkdirp "*"
+
+mkdirp@*, mkdirp@1.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mkdirp@^0.5.0, mkdirp@^0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+modify-values@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
+ integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@^2.0.0, ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+multimatch@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b"
+ integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==
+ dependencies:
+ array-differ "^2.0.3"
+ array-union "^1.0.2"
+ arrify "^1.0.1"
+ minimatch "^3.0.4"
+
+mute-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+ integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
+
+mute-stream@~0.0.4:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+mz@^2.5.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+neo-async@^2.6.0:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-fetch-npm@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
+ integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==
+ dependencies:
+ encoding "^0.1.11"
+ json-parse-better-errors "^1.0.0"
+ safe-buffer "^5.1.1"
+
+node-fetch@^2.5.0, node-fetch@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
+node-gyp@^5.0.2:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e"
+ integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==
+ dependencies:
+ env-paths "^2.2.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.2"
+ mkdirp "^0.5.1"
+ nopt "^4.0.1"
+ npmlog "^4.1.2"
+ request "^2.88.0"
+ rimraf "^2.6.3"
+ semver "^5.7.1"
+ tar "^4.4.12"
+ which "^1.3.1"
+
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+
+node-modules-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+ integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
+node-notifier@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1"
+ integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==
+ dependencies:
+ growly "^1.3.0"
+ is-wsl "^2.2.0"
+ semver "^7.3.2"
+ shellwords "^0.1.1"
+ uuid "^8.3.0"
+ which "^2.0.2"
+
+nopt@^4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
+ integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-package-data@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a"
+ integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==
+ dependencies:
+ hosted-git-info "^3.0.6"
+ resolve "^1.17.0"
+ semver "^7.3.2"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-url@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+npm-bundled@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
+ integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
+ dependencies:
+ npm-normalize-package-bin "^1.0.1"
+
+npm-lifecycle@^3.1.2:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309"
+ integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==
+ dependencies:
+ byline "^5.0.0"
+ graceful-fs "^4.1.15"
+ node-gyp "^5.0.2"
+ resolve-from "^4.0.0"
+ slide "^1.1.6"
+ uid-number "0.0.6"
+ umask "^1.1.0"
+ which "^1.3.1"
+
+npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
+ integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+
+"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7"
+ integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==
+ dependencies:
+ hosted-git-info "^2.7.1"
+ osenv "^0.1.5"
+ semver "^5.6.0"
+ validate-npm-package-name "^3.0.0"
+
+npm-packlist@^1.4.4:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
+ integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+ npm-normalize-package-bin "^1.0.1"
+
+npm-pick-manifest@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7"
+ integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ npm-package-arg "^6.0.0"
+ semver "^5.4.1"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+npmlog@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+nwsapi@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
+ integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
+ integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544"
+ integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+octokit-pagination-methods@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
+ integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+opencollective-postinstall@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
+ integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
+
+optionator@^0.8.1:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-name@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
+ integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
+ dependencies:
+ macos-release "^2.2.0"
+ windows-release "^3.1.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4, osenv@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+outdent@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff"
+ integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==
+
+p-each-series@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a"
+ integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==
+
+p-filter@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c"
+ integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==
+ dependencies:
+ p-map "^2.0.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0, p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+p-map-series@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca"
+ integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=
+ dependencies:
+ p-reduce "^1.0.0"
+
+p-map@^2.0.0, p-map@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-pipe@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9"
+ integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k=
+
+p-queue@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346"
+ integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==
+ dependencies:
+ eventemitter3 "^3.1.0"
+
+p-reduce@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
+ integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+p-waterfall@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00"
+ integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA=
+ dependencies:
+ p-reduce "^1.0.0"
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-github-repo-url@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50"
+ integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A=
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+
+parse-path@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf"
+ integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==
+ dependencies:
+ is-ssh "^1.3.0"
+ protocols "^1.4.0"
+ qs "^6.9.4"
+ query-string "^6.13.8"
+
+parse-url@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59"
+ integrity sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA==
+ dependencies:
+ is-ssh "^1.3.0"
+ normalize-url "^3.3.0"
+ parse-path "^4.0.0"
+ protocols "^1.4.0"
+
+parse5@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
+ integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+pify@^2.0.0, pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pirates@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
+ integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
+ dependencies:
+ node-modules-regexp "^1.0.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+pkg-dir@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
+ integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
+ dependencies:
+ find-up "^5.0.0"
+
+please-upgrade-node@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+preferred-pm@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.2.tgz#bbdbef1014e34a7490349bf70d6d244b8d57a5e1"
+ integrity sha512-yGIxyBkK/OWOppgCXfOeOXOeNrddyK1DzqS6XpOokRZb2ogXTpHRhKDTO7d0pjF/2p2sV9pEkKL4e0tNZI1y2A==
+ dependencies:
+ find-up "^5.0.0"
+ find-yarn-workspace-root2 "1.2.16"
+ path-exists "^4.0.0"
+ which-pm "2.0.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
+ integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
+
+prettier@^1.18.2, prettier@^1.19.1:
+ version "1.19.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
+ integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
+
+pretty-format@^26.0.0, pretty-format@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
+ integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ ansi-regex "^5.0.0"
+ ansi-styles "^4.0.0"
+ react-is "^17.0.1"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+promise-retry@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d"
+ integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=
+ dependencies:
+ err-code "^1.0.0"
+ retry "^0.10.0"
+
+prompts@^2.0.1:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
+ integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+promzard@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee"
+ integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=
+ dependencies:
+ read "1"
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+ integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+
+protocols@^1.1.0, protocols@^1.4.0:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8"
+ integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==
+
+protoduck@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f"
+ integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==
+ dependencies:
+ genfun "^5.0.0"
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+psl@^1.1.28:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+q@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+qs@^6.9.4:
+ version "6.9.6"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
+ integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==
+
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+query-string@^6.13.8:
+ version "6.13.8"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.8.tgz#8cf231759c85484da3cf05a851810d8e825c1159"
+ integrity sha512-jxJzQI2edQPE/NPUOusNjO/ZOGqr1o2OBa/3M00fU76FsLXDVbJDv/p7ng5OdQyorKrkRz1oqfwmbe5MAMePQg==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
+quick-lru@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
+ integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
+
+quick-lru@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
+ integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+
+react-is@^17.0.1:
+ version "17.0.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339"
+ integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==
+
+read-cmd-shim@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16"
+ integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==
+ dependencies:
+ graceful-fs "^4.1.2"
+
+"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a"
+ integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==
+ dependencies:
+ glob "^7.1.1"
+ json-parse-even-better-errors "^2.3.0"
+ normalize-package-data "^2.0.0"
+ npm-normalize-package-bin "^1.0.0"
+
+read-package-tree@^5.1.6:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636"
+ integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==
+ dependencies:
+ read-package-json "^2.0.0"
+ readdir-scoped-modules "^1.0.0"
+ util-promisify "^2.1.0"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
+ integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^3.0.0"
+
+read-pkg-up@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
+ integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
+ dependencies:
+ find-up "^4.1.0"
+ read-pkg "^5.2.0"
+ type-fest "^0.8.1"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+read-pkg@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
+ integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^5.0.0"
+ type-fest "^0.6.0"
+
+read-yaml-file@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8"
+ integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==
+ dependencies:
+ graceful-fs "^4.1.5"
+ js-yaml "^3.6.1"
+ pify "^4.0.1"
+ strip-bom "^3.0.0"
+
+read@1, read@~1.0.1:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
+ integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
+ dependencies:
+ mute-stream "~0.0.4"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdir-scoped-modules@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
+ integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
+ dependencies:
+ debuglog "^1.0.1"
+ dezalgo "^1.0.0"
+ graceful-fs "^4.1.2"
+ once "^1.3.0"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+redent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa"
+ integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=
+ dependencies:
+ indent-string "^3.0.0"
+ strip-indent "^2.0.0"
+
+redent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
+ integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
+ dependencies:
+ indent-string "^4.0.0"
+ strip-indent "^3.0.0"
+
+regenerator-runtime@^0.13.4:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexpp@^3.0.0, regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request-promise-core@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
+ integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==
+ dependencies:
+ lodash "^4.17.19"
+
+request-promise-native@^1.0.8:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28"
+ integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
+ dependencies:
+ request-promise-core "1.1.4"
+ stealthy-require "^1.1.1"
+ tough-cookie "^2.3.3"
+
+request@^2.88.0, request@^2.88.2:
+ version "2.88.2"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-cwd@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
+ dependencies:
+ resolve-from "^5.0.0"
+
+resolve-dir@^1.0.0, resolve-dir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
+resolve-from@5.0.0, resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-global@1.0.0, resolve-global@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255"
+ integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==
+ dependencies:
+ global-dirs "^0.1.1"
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@^1.10.0, resolve@^1.17.0, resolve@^1.18.1:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
+ integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
+ dependencies:
+ is-core-module "^2.1.0"
+ path-parse "^1.0.6"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
+ integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^3.0.0, rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rsvp@^4.8.4:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
+run-async@^2.2.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-parallel@^1.1.9:
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef"
+ integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^6.4.0, rxjs@^6.6.3:
+ version "6.6.3"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
+ integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sane@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
+ integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
+ dependencies:
+ "@cnakazawa/watch" "^1.0.3"
+ anymatch "^2.0.0"
+ capture-exit "^2.0.0"
+ exec-sh "^0.3.2"
+ execa "^1.0.0"
+ fb-watchman "^2.0.0"
+ micromatch "^3.1.4"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+
+saxes@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
+ integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+ dependencies:
+ xmlchars "^2.2.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+semver-regex@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807"
+ integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==
+
+"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+ integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+
+semver@7.x, semver@^7.2.1, semver@^7.3.2:
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+shallow-clone@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
+ dependencies:
+ kind-of "^6.0.2"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shellwords@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+ integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+sisteransi@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+ integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slide@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+ integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=
+
+smart-buffer@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba"
+ integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==
+
+smartwrap@^1.2.3:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.2.5.tgz#45ee3e09ac234e5f7f17c16e916f511834f3cd23"
+ integrity sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==
+ dependencies:
+ breakword "^1.0.5"
+ grapheme-splitter "^1.0.4"
+ strip-ansi "^6.0.0"
+ wcwidth "^1.0.1"
+ yargs "^15.1.0"
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+socks-proxy-agent@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386"
+ integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==
+ dependencies:
+ agent-base "~4.2.1"
+ socks "~2.3.2"
+
+socks@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3"
+ integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==
+ dependencies:
+ ip "1.1.5"
+ smart-buffer "^4.1.0"
+
+sort-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
+ integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+source-map-resolve@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.17, source-map-support@^0.5.6:
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@^0.5.0, source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+spawndamnit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad"
+ integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==
+ dependencies:
+ cross-spawn "^5.1.0"
+ signal-exit "^3.0.2"
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
+ integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
+
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+split2@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
+ integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==
+ dependencies:
+ through2 "^2.0.2"
+
+split2@^3.0.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f"
+ integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==
+ dependencies:
+ readable-stream "^3.0.0"
+
+split@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
+ integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==
+ dependencies:
+ through "2"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+sshpk@^1.7.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.0, ssri@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+stack-utils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277"
+ integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+stealthy-require@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+ integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+stream-transform@^2.0.1:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.0.4.tgz#911ff7556d1e25c237e95d783f6739d9e0b4a61c"
+ integrity sha512-LQXH1pUksoef5Ijo6+2ihnjLLZtZuoqu1vhut6a7xZ77nrLA/shbbx2FAzVC/nkb6wwrPzOO98700mv4HDQcWg==
+ dependencies:
+ mixme "^0.4.0"
+
+strict-uri-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+ integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
+
+string-argv@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+ integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
+
+string-length@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1"
+ integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==
+ dependencies:
+ char-regex "^1.0.2"
+ strip-ansi "^6.0.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+ integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string.prototype.trimend@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
+ integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
+ integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-bom@4.0.0, strip-bom@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+ integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
+
+strip-indent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
+ integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+ dependencies:
+ min-indent "^1.0.0"
+
+strip-json-comments@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
+ integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+strong-log-transformer@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10"
+ integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==
+ dependencies:
+ duplexer "^0.1.1"
+ minimist "^1.2.0"
+ through "^2.3.4"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.0.0, supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-hyperlinks@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47"
+ integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==
+ dependencies:
+ has-flag "^4.0.0"
+ supports-color "^7.0.0"
+
+symbol-tree@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+table@^6.0.4:
+ version "6.0.7"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
+ integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==
+ dependencies:
+ ajv "^7.0.2"
+ lodash "^4.17.20"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.0"
+
+tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
+ version "4.4.13"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
+ integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
+ dependencies:
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.8.6"
+ minizlib "^1.2.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.3"
+
+temp-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
+ integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=
+
+temp-write@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492"
+ integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ is-stream "^1.1.0"
+ make-dir "^1.0.0"
+ pify "^3.0.0"
+ temp-dir "^1.0.0"
+ uuid "^3.0.1"
+
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
+ dependencies:
+ execa "^0.7.0"
+
+term-size@^2.1.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
+ integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
+
+terminal-link@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
+ integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ supports-hyperlinks "^2.0.0"
+
+test-exclude@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
+ integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
+ dependencies:
+ "@istanbuljs/schema" "^0.1.2"
+ glob "^7.1.4"
+ minimatch "^3.0.4"
+
+text-extensions@^1.0.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
+ integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
+ integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
+throat@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
+ integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
+
+through2@^2.0.0, through2@^2.0.2:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through2@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4"
+ integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "2 || 3"
+
+through2@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
+ integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==
+ dependencies:
+ readable-stream "3"
+
+through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+ integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+tough-cookie@^2.3.3, tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
+ integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+ dependencies:
+ ip-regex "^2.1.0"
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
+ dependencies:
+ punycode "^2.1.0"
+
+tr46@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
+ integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
+ dependencies:
+ punycode "^2.1.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+trim-newlines@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
+ integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=
+
+trim-newlines@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30"
+ integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==
+
+trim-off-newlines@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
+ integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
+
+ts-jest@26.5.0:
+ version "26.5.0"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.0.tgz#3e3417d91bc40178a6716d7dacc5b0505835aa21"
+ integrity sha512-Ya4IQgvIFNa2Mgq52KaO8yBw2W8tWp61Ecl66VjF0f5JaV8u50nGoptHVILOPGoI7SDnShmEqnYQEmyHdQ+56g==
+ dependencies:
+ "@types/jest" "26.x"
+ bs-logger "0.x"
+ buffer-from "1.x"
+ fast-json-stable-stringify "2.x"
+ jest-util "^26.1.0"
+ json5 "2.x"
+ lodash "4.x"
+ make-error "1.x"
+ mkdirp "1.x"
+ semver "7.x"
+ yargs-parser "20.x"
+
+ts-node@^9.1.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
+ integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
+ dependencies:
+ arg "^4.1.0"
+ create-require "^1.1.0"
+ diff "^4.0.1"
+ make-error "^1.1.1"
+ source-map-support "^0.5.17"
+ yn "3.1.1"
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tsutils@^3.17.1:
+ version "3.20.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
+ integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==
+ dependencies:
+ tslib "^1.8.1"
+
+tty-table@^2.8.10:
+ version "2.8.13"
+ resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-2.8.13.tgz#d484a416381973eaebbdf19c79136b390e5c6d70"
+ integrity sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ==
+ dependencies:
+ chalk "^3.0.0"
+ csv "^5.3.1"
+ smartwrap "^1.2.3"
+ strip-ansi "^6.0.0"
+ wcwidth "^1.0.1"
+ yargs "^15.1.0"
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
+ integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+
+type-fest@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
+ integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
+
+type-fest@^0.18.0:
+ version "0.18.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
+ integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
+
+type-fest@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
+ integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
+
+type-fest@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
+ integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
+ integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
+
+uglify-js@^3.1.4:
+ version "3.12.6"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.6.tgz#f884584fcc42e10bca70db5cb32e8625c2c42535"
+ integrity sha512-aqWHe3DfQmZUDGWBbabZ2eQnJlQd1fKlMUu7gV+MiTuDzdgDw31bI3wA2jLLsV/hNcDP26IfyEgSVoft5+0SVw==
+
+uid-number@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+umask@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d"
+ integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+universal-user-agent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557"
+ integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==
+ dependencies:
+ os-name "^3.1.0"
+
+universal-user-agent@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
+ integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util-promisify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53"
+ integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+
+uuid@^3.0.1, uuid@^3.3.2:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.0:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@^2.0.3:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
+ integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
+
+v8-to-istanbul@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07"
+ integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.1"
+ convert-source-map "^1.6.0"
+ source-map "^0.7.3"
+
+validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+validate-npm-package-name@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
+ integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34=
+ dependencies:
+ builtins "^1.0.3"
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+w3c-hr-time@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
+ integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+ dependencies:
+ browser-process-hrtime "^1.0.0"
+
+w3c-xmlserializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
+ integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+ dependencies:
+ xml-name-validator "^3.0.0"
+
+walker@^1.0.7, walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+ dependencies:
+ makeerror "1.0.x"
+
+wcwidth@^1.0.0, wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
+webidl-conversions@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
+ integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
+
+webidl-conversions@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
+ integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+
+whatwg-encoding@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
+whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+whatwg-url@^8.0.0:
+ version "8.4.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837"
+ integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^2.0.2"
+ webidl-conversions "^6.1.0"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which-pm-runs@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
+ integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
+
+which-pm@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae"
+ integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==
+ dependencies:
+ load-yaml-file "^0.2.0"
+ path-exists "^4.0.0"
+
+which@^1.2.14, which@^1.2.9, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1, which@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
+windows-release@^3.1.0:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999"
+ integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==
+ dependencies:
+ execa "^1.0.0"
+
+word-wrap@^1.0.3, word-wrap@^1.2.3, word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wordwrap@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
+ integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
+write-file-atomic@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
+write-json-file@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f"
+ integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=
+ dependencies:
+ detect-indent "^5.0.0"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ pify "^3.0.0"
+ sort-keys "^2.0.0"
+ write-file-atomic "^2.0.0"
+
+write-json-file@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a"
+ integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==
+ dependencies:
+ detect-indent "^5.0.0"
+ graceful-fs "^4.1.15"
+ make-dir "^2.1.0"
+ pify "^4.0.1"
+ sort-keys "^2.0.0"
+ write-file-atomic "^2.4.2"
+
+write-pkg@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21"
+ integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==
+ dependencies:
+ sort-keys "^2.0.0"
+ write-json-file "^2.2.0"
+
+ws@^7.2.3:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
+ integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
+
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+xmlchars@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
+xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+ integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+
+yargs-parser@20.x, yargs-parser@^20.2.3:
+ version "20.2.4"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
+ integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
+
+yargs-parser@^15.0.1:
+ version "15.0.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3"
+ integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^18.1.2, yargs-parser@^18.1.3:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@^14.2.2:
+ version "14.2.3"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"
+ integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==
+ dependencies:
+ cliui "^5.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^15.0.1"
+
+yargs@^15.1.0, yargs@^15.4.1:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
+yn@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+ integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==