diff --git a/.config.example.toml b/.config.example.toml index 30754e8..b436762 100644 --- a/.config.example.toml +++ b/.config.example.toml @@ -1,5 +1,6 @@ version = 1 +dev = false app_url = "http://192.168.1.40:3030" [server] diff --git a/.gitignore b/.gitignore index bd16c79..e9f5f9b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ vite.config.js.timestamp-* vite.config.ts.timestamp-* .idea .vscode +dist \ No newline at end of file diff --git a/.idea/forwardedPorts.xml b/.idea/forwardedPorts.xml deleted file mode 100644 index 778a9f1..0000000 --- a/.idea/forwardedPorts.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..e6ef9c4 Binary files /dev/null and b/bun.lockb differ diff --git a/cmd/make:route.go b/cmd/make:route.go new file mode 100644 index 0000000..caf49b1 --- /dev/null +++ b/cmd/make:route.go @@ -0,0 +1,39 @@ +/* +Copyright © 2024 NAME HERE +*/ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// make:routeCmd represents the make:route command +var makeRouteCmd = &cobra.Command{ + Use: "make:route", + Short: "A brief description of your command", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("make:route called") + }, +} + +func init() { + rootCmd.AddCommand(makeRouteCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // make:routeCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + // make:routeCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} diff --git a/cmd/root.go b/cmd/root.go index 560db49..e290dec 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -70,7 +70,7 @@ func initConfig() { viper.AutomaticEnv() // read in environment variables that match // If a config file is found, read it in. - if err := viper.ReadInConfig(); err == nil { + if err := viper.ReadInConfig(); err != nil { fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed()) } } diff --git a/cmd/run.go b/cmd/run.go index a75b636..40cca4c 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -1,15 +1,42 @@ /* Copyright © 2024 NAME HERE - */ package cmd import ( "fmt" - + "git.shadowhosting.xyz/shadow/utils" + "github.com/goccy/go-json" + "github.com/gofiber/fiber/v2" + "github.com/gofiber/template/html/v2" "github.com/spf13/cobra" + "github.com/spf13/viper" + "log" + "os" + "strings" ) +func viteAsset(src string) string { + file, err := os.ReadFile("dist/.vite/manifest.json") + if err != nil { + log.Fatalln(err) + } + + var viteManifestData map[string]map[string]interface{} + + if err := json.Unmarshal(file, &viteManifestData); err != nil { + log.Fatalln(err) + } + + src = strings.TrimPrefix(src, "/") + + if _, ok := viteManifestData[src]; ok { + return "/" + viteManifestData[src]["file"].(string) + } else { + return "" + } +} + // runCmd represents the run command var runCmd = &cobra.Command{ Use: "run", @@ -21,7 +48,34 @@ Cobra is a CLI library for Go that empowers applications. This application is a tool to generate the needed files to quickly create a Cobra application.`, Run: func(cmd *cobra.Command, args []string) { - fmt.Println("run called") + + if viper.GetBool("dev") { + go utils.RunViteServer() + } + + engine := html.New("./dist", ".html") + + if viper.GetBool("dev") { + engine.Reload(true) + } + + engine.AddFunc("viteAsset", viteAsset) + + app := fiber.New(fiber.Config{ + AppName: "shadow", + EnableIPValidation: true, + Views: engine, + ViewsLayout: "index", + }) + + app.Static("/assets", "./dist/assets") + + app.Get("/", func(ctx *fiber.Ctx) error { + return ctx.Render("views/index", fiber.Map{}) + }) + + log.Fatal(app.Listen(fmt.Sprintf("%s:%d", viper.GetString("server.host"), viper.GetInt32("server.port")))) + }, } diff --git a/frontend/.eslintignore b/frontend/.eslintignore deleted file mode 100644 index 3897265..0000000 --- a/frontend/.eslintignore +++ /dev/null @@ -1,13 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example - -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml -package-lock.json -yarn.lock diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs deleted file mode 100644 index 419521f..0000000 --- a/frontend/.eslintrc.cjs +++ /dev/null @@ -1,30 +0,0 @@ -/** @type { import("eslint").Linter.Config } */ -module.exports = { - root: true, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:svelte/recommended' - ], - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - }, - overrides: [ - { - files: ['*.svelte'], - parser: 'svelte-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser' - } - } - ] -}; diff --git a/frontend/.npmrc b/frontend/.npmrc deleted file mode 100644 index b6f27f1..0000000 --- a/frontend/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/frontend/.svelte-kit/ambient.d.ts b/frontend/.svelte-kit/ambient.d.ts deleted file mode 100644 index ed716b2..0000000 --- a/frontend/.svelte-kit/ambient.d.ts +++ /dev/null @@ -1,179 +0,0 @@ - -// this file is generated — do not edit it - - -/// - -/** - * Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured). - * - * _Unlike_ [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination. - * - * ```ts - * import { API_KEY } from '$env/static/private'; - * ``` - * - * Note that all environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed: - * - * ``` - * MY_FEATURE_FLAG="" - * ``` - * - * You can override `.env` values from the command line like so: - * - * ```bash - * MY_FEATURE_FLAG="enabled" npm run dev - * ``` - */ -declare module '$env/static/private' { - export const TERM_SESSION_ID: string; - export const USER: string; - export const npm_config_user_agent: string; - export const SSH_CLIENT: string; - export const XDG_SESSION_TYPE: string; - export const BUN_INSTALL: string; - export const npm_node_execpath: string; - export const SHLVL: string; - export const MOTD_SHOWN: string; - export const HOME: string; - export const OLDPWD: string; - export const npm_package_json: string; - export const SSH_TTY: string; - export const TERMINAL_EMULATOR: string; - export const _INTELLIJ_FORCE_SET_GOPATH: string; - export const npm_config_local_prefix: string; - export const GOROOT: string; - export const DBUS_SESSION_BUS_ADDRESS: string; - export const GOLAND_JDK: string; - export const LOGNAME: string; - export const GO111MODULE: string; - export const _: string; - export const XDG_SESSION_CLASS: string; - export const REMOTE_DEV_LAUNCHER_NAME_FOR_USAGE: string; - export const TERM: string; - export const XDG_SESSION_ID: string; - export const PATH: string; - export const NODE: string; - export const npm_package_name: string; - export const XDG_RUNTIME_DIR: string; - export const LANG: string; - export const GOLAND_VM_OPTIONS: string; - export const SSH_AUTH_SOCK: string; - export const SHELL: string; - export const npm_package_version: string; - export const npm_lifecycle_event: string; - export const GOPATH: string; - export const NODE_PATH: string; - export const REMOTE_DEV_NON_INTERACTIVE: string; - export const GOLAND_PROPERTIES: string; - export const _INTELLIJ_FORCE_SET_GOROOT: string; - export const _INTELLIJ_FORCE_PREPEND_PATH: string; - export const GPG_TTY: string; - export const PWD: string; - export const npm_execpath: string; - export const IDEA_RESTART_VIA_EXIT_CODE: string; - export const SSH_CONNECTION: string; - export const _INTELLIJ_FORCE_SET_GO111MODULE: string; - export const NODE_ENV: string; -} - -/** - * Similar to [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. - * - * Values are replaced statically at build time. - * - * ```ts - * import { PUBLIC_BASE_URL } from '$env/static/public'; - * ``` - */ -declare module '$env/static/public' { - -} - -/** - * This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://kit.svelte.dev/docs/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured). - * - * This module cannot be imported into client-side code. - * - * Dynamic environment variables cannot be used during prerendering. - * - * ```ts - * import { env } from '$env/dynamic/private'; - * console.log(env.DEPLOYMENT_SPECIFIC_VARIABLE); - * ``` - * - * > In `dev`, `$env/dynamic` always includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter. - */ -declare module '$env/dynamic/private' { - export const env: { - TERM_SESSION_ID: string; - USER: string; - npm_config_user_agent: string; - SSH_CLIENT: string; - XDG_SESSION_TYPE: string; - BUN_INSTALL: string; - npm_node_execpath: string; - SHLVL: string; - MOTD_SHOWN: string; - HOME: string; - OLDPWD: string; - npm_package_json: string; - SSH_TTY: string; - TERMINAL_EMULATOR: string; - _INTELLIJ_FORCE_SET_GOPATH: string; - npm_config_local_prefix: string; - GOROOT: string; - DBUS_SESSION_BUS_ADDRESS: string; - GOLAND_JDK: string; - LOGNAME: string; - GO111MODULE: string; - _: string; - XDG_SESSION_CLASS: string; - REMOTE_DEV_LAUNCHER_NAME_FOR_USAGE: string; - TERM: string; - XDG_SESSION_ID: string; - PATH: string; - NODE: string; - npm_package_name: string; - XDG_RUNTIME_DIR: string; - LANG: string; - GOLAND_VM_OPTIONS: string; - SSH_AUTH_SOCK: string; - SHELL: string; - npm_package_version: string; - npm_lifecycle_event: string; - GOPATH: string; - NODE_PATH: string; - REMOTE_DEV_NON_INTERACTIVE: string; - GOLAND_PROPERTIES: string; - _INTELLIJ_FORCE_SET_GOROOT: string; - _INTELLIJ_FORCE_PREPEND_PATH: string; - GPG_TTY: string; - PWD: string; - npm_execpath: string; - IDEA_RESTART_VIA_EXIT_CODE: string; - SSH_CONNECTION: string; - _INTELLIJ_FORCE_SET_GO111MODULE: string; - NODE_ENV: string; - [key: `PUBLIC_${string}`]: undefined; - [key: `${string}`]: string | undefined; - } -} - -/** - * Similar to [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. - * - * Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests — when possible, use `$env/static/public` instead. - * - * Dynamic environment variables cannot be used during prerendering. - * - * ```ts - * import { env } from '$env/dynamic/public'; - * console.log(env.PUBLIC_DEPLOYMENT_SPECIFIC_VARIABLE); - * ``` - */ -declare module '$env/dynamic/public' { - export const env: { - [key: `PUBLIC_${string}`]: string | undefined; - } -} diff --git a/frontend/.svelte-kit/generated/client/app.js b/frontend/.svelte-kit/generated/client/app.js deleted file mode 100644 index 8a3c0b2..0000000 --- a/frontend/.svelte-kit/generated/client/app.js +++ /dev/null @@ -1,27 +0,0 @@ -export { matchers } from './matchers.js'; - -export const nodes = [ - () => import('./nodes/0'), - () => import('./nodes/1'), - () => import('./nodes/2'), - () => import('./nodes/3'), - () => import('./nodes/4'), - () => import('./nodes/5') -]; - -export const server_loads = []; - -export const dictionary = { - "/": [2], - "/about": [3], - "/sverdle": [~4], - "/sverdle/how-to-play": [5] - }; - -export const hooks = { - handleError: (({ error }) => { console.error(error) }), - - reroute: (() => {}) -}; - -export { default as root } from '../root.svelte'; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/matchers.js b/frontend/.svelte-kit/generated/client/matchers.js deleted file mode 100644 index f6bd30a..0000000 --- a/frontend/.svelte-kit/generated/client/matchers.js +++ /dev/null @@ -1 +0,0 @@ -export const matchers = {}; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/nodes/0.js b/frontend/.svelte-kit/generated/client/nodes/0.js deleted file mode 100644 index fed1375..0000000 --- a/frontend/.svelte-kit/generated/client/nodes/0.js +++ /dev/null @@ -1 +0,0 @@ -export { default as component } from "../../../../src/routes/+layout.svelte"; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/nodes/1.js b/frontend/.svelte-kit/generated/client/nodes/1.js deleted file mode 100644 index 5cf36cc..0000000 --- a/frontend/.svelte-kit/generated/client/nodes/1.js +++ /dev/null @@ -1 +0,0 @@ -export { default as component } from "../../../../node_modules/.pnpm/@sveltejs+kit@2.5.7_@sveltejs+vite-plugin-svelte@3.1.0_svelte@4.2.15_vite@5.2.10__svelte@4.2.15_vite@5.2.10/node_modules/@sveltejs/kit/src/runtime/components/error.svelte"; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/nodes/2.js b/frontend/.svelte-kit/generated/client/nodes/2.js deleted file mode 100644 index 740a1cf..0000000 --- a/frontend/.svelte-kit/generated/client/nodes/2.js +++ /dev/null @@ -1,3 +0,0 @@ -import * as universal from "../../../../src/routes/+page.ts"; -export { universal }; -export { default as component } from "../../../../src/routes/+page.svelte"; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/nodes/3.js b/frontend/.svelte-kit/generated/client/nodes/3.js deleted file mode 100644 index 868463b..0000000 --- a/frontend/.svelte-kit/generated/client/nodes/3.js +++ /dev/null @@ -1,3 +0,0 @@ -import * as universal from "../../../../src/routes/about/+page.ts"; -export { universal }; -export { default as component } from "../../../../src/routes/about/+page.svelte"; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/nodes/4.js b/frontend/.svelte-kit/generated/client/nodes/4.js deleted file mode 100644 index acc5a87..0000000 --- a/frontend/.svelte-kit/generated/client/nodes/4.js +++ /dev/null @@ -1 +0,0 @@ -export { default as component } from "../../../../src/routes/sverdle/+page.svelte"; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/client/nodes/5.js b/frontend/.svelte-kit/generated/client/nodes/5.js deleted file mode 100644 index b3874ce..0000000 --- a/frontend/.svelte-kit/generated/client/nodes/5.js +++ /dev/null @@ -1,3 +0,0 @@ -import * as universal from "../../../../src/routes/sverdle/how-to-play/+page.ts"; -export { universal }; -export { default as component } from "../../../../src/routes/sverdle/how-to-play/+page.svelte"; \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/root.svelte b/frontend/.svelte-kit/generated/root.svelte deleted file mode 100644 index 1172dda..0000000 --- a/frontend/.svelte-kit/generated/root.svelte +++ /dev/null @@ -1,57 +0,0 @@ - - - - -{#if constructors[1]} - - - -{:else} - -{/if} - -{#if mounted} -
- {#if navigated} - {title} - {/if} -
-{/if} \ No newline at end of file diff --git a/frontend/.svelte-kit/generated/server/internal.js b/frontend/.svelte-kit/generated/server/internal.js deleted file mode 100644 index ab3ac1f..0000000 --- a/frontend/.svelte-kit/generated/server/internal.js +++ /dev/null @@ -1,34 +0,0 @@ - -import root from '../root.svelte'; -import { set_building, set_prerendering } from '__sveltekit/environment'; -import { set_assets } from '__sveltekit/paths'; -import { set_manifest, set_read_implementation } from '__sveltekit/server'; -import { set_private_env, set_public_env, set_safe_public_env } from '../../../node_modules/.pnpm/@sveltejs+kit@2.5.7_@sveltejs+vite-plugin-svelte@3.1.0_svelte@4.2.15_vite@5.2.10__svelte@4.2.15_vite@5.2.10/node_modules/@sveltejs/kit/src/runtime/shared-server.js'; - -export const options = { - app_dir: "_app", - app_template_contains_nonce: false, - csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}}, - csrf_check_origin: true, - embedded: false, - env_public_prefix: 'PUBLIC_', - env_private_prefix: '', - hooks: null, // added lazily, via `get_hooks` - preload_strategy: "modulepreload", - root, - service_worker: false, - templates: { - app: ({ head, body, assets, nonce, env }) => "\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t" + head + "\n\t\n\t\n\t\t
" + body + "
\n\t\n\n", - error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t
\n\t\t\t" + status + "\n\t\t\t
\n\t\t\t\t

" + message + "

\n\t\t\t
\n\t\t
\n\t\n\n" - }, - version_hash: "1wjmj0y" -}; - -export async function get_hooks() { - return { - - - }; -} - -export { set_assets, set_building, set_manifest, set_prerendering, set_private_env, set_public_env, set_read_implementation, set_safe_public_env }; diff --git a/frontend/.svelte-kit/non-ambient.d.ts b/frontend/.svelte-kit/non-ambient.d.ts deleted file mode 100644 index 46bd7fb..0000000 --- a/frontend/.svelte-kit/non-ambient.d.ts +++ /dev/null @@ -1,25 +0,0 @@ - -// this file is generated — do not edit it - - -declare module "svelte/elements" { - export interface HTMLAttributes { - 'data-sveltekit-keepfocus'?: true | '' | 'off' | undefined | null; - 'data-sveltekit-noscroll'?: true | '' | 'off' | undefined | null; - 'data-sveltekit-preload-code'?: - | true - | '' - | 'eager' - | 'viewport' - | 'hover' - | 'tap' - | 'off' - | undefined - | null; - 'data-sveltekit-preload-data'?: true | '' | 'hover' | 'tap' | 'off' | undefined | null; - 'data-sveltekit-reload'?: true | '' | 'off' | undefined | null; - 'data-sveltekit-replacestate'?: true | '' | 'off' | undefined | null; - } -} - -export {}; diff --git a/frontend/.svelte-kit/tsconfig.json b/frontend/.svelte-kit/tsconfig.json deleted file mode 100644 index 4564577..0000000 --- a/frontend/.svelte-kit/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "compilerOptions": { - "paths": { - "$lib": [ - "../src/lib" - ], - "$lib/*": [ - "../src/lib/*" - ] - }, - "rootDirs": [ - "..", - "./types" - ], - "verbatimModuleSyntax": true, - "isolatedModules": true, - "lib": [ - "esnext", - "DOM", - "DOM.Iterable" - ], - "moduleResolution": "bundler", - "module": "esnext", - "noEmit": true, - "target": "esnext" - }, - "include": [ - "ambient.d.ts", - "non-ambient.d.ts", - "./types/**/$types.d.ts", - "../vite.config.js", - "../vite.config.ts", - "../src/**/*.js", - "../src/**/*.ts", - "../src/**/*.svelte", - "../tests/**/*.js", - "../tests/**/*.ts", - "../tests/**/*.svelte" - ], - "exclude": [ - "../node_modules/**", - "../src/service-worker.js", - "../src/service-worker.ts", - "../src/service-worker.d.ts" - ] -} \ No newline at end of file diff --git a/frontend/.svelte-kit/types/route_meta_data.json b/frontend/.svelte-kit/types/route_meta_data.json deleted file mode 100644 index fad3f79..0000000 --- a/frontend/.svelte-kit/types/route_meta_data.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "/": [ - "src/routes/+page.ts" - ], - "/about": [ - "src/routes/about/+page.ts" - ], - "/sverdle": [ - "src/routes/sverdle/+page.server.ts" - ], - "/sverdle/how-to-play": [ - "src/routes/sverdle/how-to-play/+page.ts" - ] -} \ No newline at end of file diff --git a/frontend/.svelte-kit/types/src/routes/$types.d.ts b/frontend/.svelte-kit/types/src/routes/$types.d.ts deleted file mode 100644 index 1714c5d..0000000 --- a/frontend/.svelte-kit/types/src/routes/$types.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageParentData = EnsureDefined; -type LayoutRouteId = RouteId | "/" | "/about" | "/sverdle" | "/sverdle/how-to-play" | null -type LayoutParams = RouteParams & { } -type LayoutParentData = EnsureDefined<{}>; - -export type PageServerData = null; -export type PageLoad = OutputDataShape> = Kit.Load; -export type PageLoadEvent = Parameters[0]; -export type PageData = Expand> & OptionalUnion>>>; -export type LayoutServerData = null; -export type LayoutData = Expand; \ No newline at end of file diff --git a/frontend/.svelte-kit/types/src/routes/about/$types.d.ts b/frontend/.svelte-kit/types/src/routes/about/$types.d.ts deleted file mode 100644 index 79a1381..0000000 --- a/frontend/.svelte-kit/types/src/routes/about/$types.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/about'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageParentData = EnsureDefined; - -export type PageServerData = null; -export type PageLoad = OutputDataShape> = Kit.Load; -export type PageLoadEvent = Parameters[0]; -export type PageData = Expand> & OptionalUnion>>>; \ No newline at end of file diff --git a/frontend/.svelte-kit/types/src/routes/sverdle/$types.d.ts b/frontend/.svelte-kit/types/src/routes/sverdle/$types.d.ts deleted file mode 100644 index 4e2a5a5..0000000 --- a/frontend/.svelte-kit/types/src/routes/sverdle/$types.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/sverdle'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = EnsureDefined; -type PageParentData = EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('../../../../../src/routes/sverdle/+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/frontend/.svelte-kit/types/src/routes/sverdle/how-to-play/$types.d.ts b/frontend/.svelte-kit/types/src/routes/sverdle/how-to-play/$types.d.ts deleted file mode 100644 index ec56538..0000000 --- a/frontend/.svelte-kit/types/src/routes/sverdle/how-to-play/$types.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/sverdle/how-to-play'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageParentData = EnsureDefined; - -export type PageServerData = null; -export type PageLoad = OutputDataShape> = Kit.Load; -export type PageLoadEvent = Parameters[0]; -export type PageData = Expand> & OptionalUnion>>>; \ No newline at end of file diff --git a/frontend/bun.lockb b/frontend/bun.lockb deleted file mode 100755 index d807e17..0000000 Binary files a/frontend/bun.lockb and /dev/null differ diff --git a/frontend/package.json b/frontend/package.json deleted file mode 100644 index 4df4e73..0000000 --- a/frontend/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "shadow", - "version": "0.0.1", - "scripts": { - "dev:bun": "bun --bun run dev:node", - "dev:node": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "npm run test:integration && npm run test:unit", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "eslint .", - "test:integration": "playwright test", - "test:unit": "vitest" - }, - "devDependencies": { - "@fontsource/fira-mono": "^4.5.10", - "@neoconfetti/svelte": "^1.0.0", - "@playwright/test": "^1.28.1", - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@types/eslint": "^8.56.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0", - "eslint-plugin-svelte": "^2.35.1", - "svelte": "^4.2.7", - "svelte-check": "^3.6.0", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^5.0.3", - "vitest": "^1.2.0" - }, - "type": "module" -} diff --git a/frontend/playwright.config.ts b/frontend/playwright.config.ts deleted file mode 100644 index 1c5d7a1..0000000 --- a/frontend/playwright.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 - }, - testDir: 'tests', - testMatch: /(.+\.)?(test|spec)\.[jt]s/ -}; - -export default config; diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml deleted file mode 100644 index 8c6ce14..0000000 --- a/frontend/pnpm-lock.yaml +++ /dev/null @@ -1,2774 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@fontsource/fira-mono': - specifier: ^4.5.10 - version: 4.5.10 - '@neoconfetti/svelte': - specifier: ^1.0.0 - version: 1.0.0 - '@playwright/test': - specifier: ^1.28.1 - version: 1.43.1 - '@sveltejs/adapter-auto': - specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10)) - '@sveltejs/kit': - specifier: ^2.0.0 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10) - '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.10) - '@types/eslint': - specifier: ^8.56.0 - version: 8.56.10 - '@typescript-eslint/eslint-plugin': - specifier: ^7.0.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': - specifier: ^7.0.0 - version: 7.7.0(eslint@8.57.0)(typescript@5.4.5) - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.37.0(eslint@8.57.0)(svelte@4.2.15) - svelte: - specifier: ^4.2.7 - version: 4.2.15 - svelte-check: - specifier: ^3.6.0 - version: 3.6.9(postcss-load-config@3.1.4(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15) - tslib: - specifier: ^2.4.1 - version: 2.6.2 - typescript: - specifier: ^5.0.0 - version: 5.4.5 - vite: - specifier: ^5.0.3 - version: 5.2.10 - vitest: - specifier: ^1.2.0 - version: 1.5.0 - -packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@fontsource/fira-mono@4.5.10': - resolution: {integrity: sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==} - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@neoconfetti/svelte@1.0.0': - resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@playwright/test@1.43.1': - resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} - engines: {node: '>=16'} - hasBin: true - - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - - '@rollup/rollup-android-arm-eabi@4.16.0': - resolution: {integrity: sha512-4fDVBAfWYlw2CtYgHEWarAYSozTx5OYLsSM/cdGW7H51FwI10DaGnjKgdqWyWXY/VjugelzriCiKf1UdM20Bxg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.16.0': - resolution: {integrity: sha512-JltUBgsKgN108NO4/hj0B/dJYNrqqmdRCtUet5tFDi/w+0tvQP0FToyWBV4HKBcSX4cvFChrCyt5Rh4FX6M6QQ==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.16.0': - resolution: {integrity: sha512-UwF7tkWf0roggMRv7Vrkof7VgX9tEZIc4vbaQl0/HNX3loWlcum+0ODp1Qsd8s7XvQGT+Zboxx1qxav3vq8YDw==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.16.0': - resolution: {integrity: sha512-RIY42wn6+Yb0qD29T7Dvm9/AhxrkGDf7X5dgI6rUFXR19+vCLh3u45yLcKOayu2ZQEba9rf/+BX3EggVwckiIw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.16.0': - resolution: {integrity: sha512-r2TGCIKzqk8VwjOvW7sveledh6aPao131ejUfZNIyFlWBCruF4HOu51KtLArDa7LL6qKd0vkgxGX3/2NmYpWig==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.16.0': - resolution: {integrity: sha512-/QwaDp0RXQTtm25wQFSl02zEm9oveRXr9qAHbdxWCm9YG9dR8esqpyqzS/3GgHDm7jHktPNz9gTENfoUKRCcXQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.16.0': - resolution: {integrity: sha512-iypHsz7YEfoyNL0iHbQ7B7pY6hpymvvMgFXXaMd5+WCtvJ9zqWPZKFmo78UeWzWNmTP9JtPiNIQt6efRxx/MNA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.16.0': - resolution: {integrity: sha512-7UpYcO0uVeomnoL5MpQhrS0FT7xZUJrEXtKVLmps5bRA7x5AiA1PDuPnMbxcOBWjIM2HHIG1t3ndnRTVMIbk5A==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.16.0': - resolution: {integrity: sha512-FSuFy4/hOQy0lH135ifnElP/6dKoHcZGHovsaRY0jrfNRR2yjMnVYaqNHKGKy0b/1I8DkD/JtclgJfq7SPti1w==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.16.0': - resolution: {integrity: sha512-qxAB8MiHuDI8jU0D+WI9Gym3fvUJHA/AjKRXxbEH921SB3AeKQStq1FKFA59dAoqqCArjJ1voXM/gMvgEc1q4Q==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.16.0': - resolution: {integrity: sha512-j/9yBgWFlNFBfG/S1M2zkBNLeLkNVG59T5c4tlmlrxU+XITWJ3aMVWdpcZ/+mu7auGZftAXueAgAE9mb4lAlag==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.16.0': - resolution: {integrity: sha512-SjsBA1a9wrEleNneGEsR40HdxKdwCatyHC547o/XINqwPW4cqTYiNy/lL1WTJYWU/KgWIb8HH4SgmFStbWoBzw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.16.0': - resolution: {integrity: sha512-YKCs7ghJZ5po6/qgfONiXyFKOKcTK4Kerzk/Kc89QK0JT94Qg4NurL+3Y3rZh5am2tu1OlvHPpBHQNBE8cFgJQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.16.0': - resolution: {integrity: sha512-+wtkF+z2nw0ZwwHji01wOW0loxFl24lBNxPtVAXtnPPDL9Ew0EhiCMOegXe/EAH3Zlr8Iw9tyPJXB3DltQLEyw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.16.0': - resolution: {integrity: sha512-7qLyKTL7Lf2g0B8bduETVAEI3WVUVwBRVcECojVevPNVAmi19IW1P2X+uMSwhmWNy36Q/qEvxXsfts1I8wpawg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.16.0': - resolution: {integrity: sha512-tkfxXt+7c3Ecgn7ln9NJPdBM+QKwQdmFFpgAP+FYhAuRS5y3tY8xeza82gFjbPpytkHmaQnVdMtuzbToCz2tuw==} - cpu: [x64] - os: [win32] - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sveltejs/adapter-auto@3.2.0': - resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 - - '@sveltejs/kit@2.5.7': - resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} - engines: {node: '>=18.13'} - hasBin: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@sveltejs/vite-plugin-svelte@3.1.0': - resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/eslint@8.56.10': - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/pug@2.0.10': - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@typescript-eslint/eslint-plugin@7.7.0': - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.7.0': - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@7.7.0': - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.7.0': - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@7.7.0': - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@7.7.0': - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@7.7.0': - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@7.7.0': - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@vitest/expect@1.5.0': - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} - - '@vitest/runner@1.5.0': - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} - - '@vitest/snapshot@1.5.0': - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} - - '@vitest/spy@1.5.0': - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} - - '@vitest/utils@1.5.0': - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - devalue@5.0.0: - resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-compat-utils@0.5.0: - resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-plugin-svelte@2.37.0: - resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 - peerDependenciesMeta: - svelte: - optional: true - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - known-css-properties@0.30.0: - resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} - - playwright-core@1.43.1: - resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} - engines: {node: '>=16'} - hasBin: true - - playwright@1.43.1: - resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} - engines: {node: '>=16'} - hasBin: true - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 - - postcss-scss@4.0.9: - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - rollup@4.16.0: - resolution: {integrity: sha512-joxy/Hd4Ee289394//Q1aoebcxXyHasDieCTk8YtP4G4al4TUlx85EnuCLrfrdtLzrna9kNjH++Sx063wxSgmA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - sorcery@0.11.0: - resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} - hasBin: true - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - svelte-check@3.6.9: - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - - svelte-eslint-parser@0.34.1: - resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 - peerDependenciesMeta: - svelte: - optional: true - - svelte-hmr@0.16.0: - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - - svelte-preprocess@5.1.4: - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - - svelte@4.2.15: - resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} - engines: {node: '>=16'} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vite-node@1.5.0: - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite@5.2.10: - resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - - vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@esbuild/aix-ppc64@0.20.2': - optional: true - - '@esbuild/android-arm64@0.20.2': - optional: true - - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-x64@0.20.2': - optional: true - - '@esbuild/darwin-arm64@0.20.2': - optional: true - - '@esbuild/darwin-x64@0.20.2': - optional: true - - '@esbuild/freebsd-arm64@0.20.2': - optional: true - - '@esbuild/freebsd-x64@0.20.2': - optional: true - - '@esbuild/linux-arm64@0.20.2': - optional: true - - '@esbuild/linux-arm@0.20.2': - optional: true - - '@esbuild/linux-ia32@0.20.2': - optional: true - - '@esbuild/linux-loong64@0.20.2': - optional: true - - '@esbuild/linux-mips64el@0.20.2': - optional: true - - '@esbuild/linux-ppc64@0.20.2': - optional: true - - '@esbuild/linux-riscv64@0.20.2': - optional: true - - '@esbuild/linux-s390x@0.20.2': - optional: true - - '@esbuild/linux-x64@0.20.2': - optional: true - - '@esbuild/netbsd-x64@0.20.2': - optional: true - - '@esbuild/openbsd-x64@0.20.2': - optional: true - - '@esbuild/sunos-x64@0.20.2': - optional: true - - '@esbuild/win32-arm64@0.20.2': - optional: true - - '@esbuild/win32-ia32@0.20.2': - optional: true - - '@esbuild/win32-x64@0.20.2': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.10.0': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@fontsource/fira-mono@4.5.10': {} - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.3': {} - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@neoconfetti/svelte@1.0.0': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@playwright/test@1.43.1': - dependencies: - playwright: 1.43.1 - - '@polka/url@1.0.0-next.25': {} - - '@rollup/rollup-android-arm-eabi@4.16.0': - optional: true - - '@rollup/rollup-android-arm64@4.16.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.16.0': - optional: true - - '@rollup/rollup-darwin-x64@4.16.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.16.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.16.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.16.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.16.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.16.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.16.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.16.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.16.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.16.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.16.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.16.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.16.0': - optional: true - - '@sinclair/typebox@0.27.8': {} - - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10))': - dependencies: - '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10) - import-meta-resolve: 4.0.0 - - '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10)': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.10) - '@types/cookie': 0.6.0 - cookie: 0.6.0 - devalue: 5.0.0 - esm-env: 1.0.0 - import-meta-resolve: 4.0.0 - kleur: 4.1.5 - magic-string: 0.30.10 - mrmime: 2.0.0 - sade: 1.8.1 - set-cookie-parser: 2.6.0 - sirv: 2.0.4 - svelte: 4.2.15 - tiny-glob: 0.2.9 - vite: 5.2.10 - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10)': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.10) - debug: 4.3.4 - svelte: 4.2.15 - vite: 5.2.10 - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10)': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10))(svelte@4.2.15)(vite@5.2.10) - debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.10 - svelte: 4.2.15 - svelte-hmr: 0.16.0(svelte@4.2.15) - vite: 5.2.10 - vitefu: 0.2.5(vite@5.2.10) - transitivePeerDependencies: - - supports-color - - '@types/cookie@0.6.0': {} - - '@types/eslint@8.56.10': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.5': {} - - '@types/json-schema@7.0.15': {} - - '@types/pug@2.0.10': {} - - '@types/semver@7.5.8': {} - - '@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@7.7.0': - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - - '@typescript-eslint/type-utils@7.7.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@7.7.0': {} - - '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@7.7.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - eslint: 8.57.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@7.7.0': - dependencies: - '@typescript-eslint/types': 7.7.0 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.2.0': {} - - '@vitest/expect@1.5.0': - dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - chai: 4.4.1 - - '@vitest/runner@1.5.0': - dependencies: - '@vitest/utils': 1.5.0 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/snapshot@1.5.0': - dependencies: - magic-string: 0.30.10 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/spy@1.5.0': - dependencies: - tinyspy: 2.2.1 - - '@vitest/utils@1.5.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - array-union@2.1.0: {} - - assertion-error@1.1.0: {} - - axobject-query@4.0.0: - dependencies: - dequal: 2.0.3 - - balanced-match@1.0.2: {} - - binary-extensions@2.3.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - buffer-crc32@0.2.13: {} - - cac@6.7.14: {} - - callsites@3.1.0: {} - - chai@4.4.1: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - code-red@1.0.4: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.5 - acorn: 8.11.3 - estree-walker: 3.0.3 - periscopic: 3.1.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - concat-map@0.0.1: {} - - confbox@0.1.7: {} - - cookie@0.6.0: {} - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.0 - - cssesc@3.0.0: {} - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - dequal@2.0.3: {} - - detect-indent@6.1.0: {} - - devalue@5.0.0: {} - - diff-sequences@29.6.3: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - es6-promise@3.3.1: {} - - esbuild@0.20.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - - escape-string-regexp@4.0.0: {} - - eslint-compat-utils@0.5.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - semver: 7.6.0 - - eslint-plugin-svelte@2.37.0(eslint@8.57.0)(svelte@4.2.15): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4 - eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) - esutils: 2.0.3 - known-css-properties: 0.30.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38) - postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte-eslint-parser: 0.34.1(svelte@4.2.15) - optionalDependencies: - svelte: 4.2.15 - transitivePeerDependencies: - - supports-color - - ts-node - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint@8.57.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - esm-env@1.0.0: {} - - espree@9.6.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.5 - - esutils@2.0.3: {} - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - flatted@3.3.1: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.2: - optional: true - - fsevents@2.3.3: - optional: true - - get-func-name@2.0.2: {} - - get-stream@8.0.1: {} - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globalyzer@0.1.0: {} - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - globrex@0.1.2: {} - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - has-flag@4.0.0: {} - - human-signals@5.0.0: {} - - ignore@5.3.1: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-meta-resolve@4.0.0: {} - - imurmurhash@0.1.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-path-inside@3.0.3: {} - - is-reference@3.0.2: - dependencies: - '@types/estree': 1.0.5 - - is-stream@3.0.0: {} - - isexe@2.0.0: {} - - js-tokens@9.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kleur@4.1.5: {} - - known-css-properties@0.30.0: {} - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@2.1.0: {} - - local-pkg@0.5.0: - dependencies: - mlly: 1.6.1 - pkg-types: 1.1.0 - - locate-character@3.0.0: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.merge@4.6.2: {} - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - mdn-data@2.0.30: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mimic-fn@4.0.0: {} - - min-indent@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mlly@1.6.1: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.0 - ufo: 1.5.3 - - mri@1.2.0: {} - - mrmime@2.0.0: {} - - ms@2.1.2: {} - - nanoid@3.3.7: {} - - natural-compare@1.4.0: {} - - normalize-path@3.0.0: {} - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-type@4.0.0: {} - - pathe@1.1.2: {} - - pathval@1.1.1: {} - - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.5 - estree-walker: 3.0.3 - is-reference: 3.0.2 - - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - pkg-types@1.1.0: - dependencies: - confbox: 0.1.7 - mlly: 1.6.1 - pathe: 1.1.2 - - playwright-core@1.43.1: {} - - playwright@1.43.1: - dependencies: - playwright-core: 1.43.1 - optionalDependencies: - fsevents: 2.3.2 - - postcss-load-config@3.1.4(postcss@8.4.38): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.38 - - postcss-safe-parser@6.0.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-scss@4.0.9(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-selector-parser@6.0.16: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - prelude-ls@1.2.1: {} - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - - punycode@2.3.1: {} - - queue-microtask@1.2.3: {} - - react-is@18.2.0: {} - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - resolve-from@4.0.0: {} - - reusify@1.0.4: {} - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rollup@4.16.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.16.0 - '@rollup/rollup-android-arm64': 4.16.0 - '@rollup/rollup-darwin-arm64': 4.16.0 - '@rollup/rollup-darwin-x64': 4.16.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.16.0 - '@rollup/rollup-linux-arm-musleabihf': 4.16.0 - '@rollup/rollup-linux-arm64-gnu': 4.16.0 - '@rollup/rollup-linux-arm64-musl': 4.16.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.16.0 - '@rollup/rollup-linux-riscv64-gnu': 4.16.0 - '@rollup/rollup-linux-s390x-gnu': 4.16.0 - '@rollup/rollup-linux-x64-gnu': 4.16.0 - '@rollup/rollup-linux-x64-musl': 4.16.0 - '@rollup/rollup-win32-arm64-msvc': 4.16.0 - '@rollup/rollup-win32-ia32-msvc': 4.16.0 - '@rollup/rollup-win32-x64-msvc': 4.16.0 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - sade@1.8.1: - dependencies: - mri: 1.2.0 - - sander@0.5.1: - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - rimraf: 2.7.1 - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - set-cookie-parser@2.6.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - siginfo@2.0.0: {} - - signal-exit@4.1.0: {} - - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 2.0.0 - totalist: 3.0.1 - - slash@3.0.0: {} - - sorcery@0.11.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - buffer-crc32: 0.2.13 - minimist: 1.2.8 - sander: 0.5.1 - - source-map-js@1.2.0: {} - - stackback@0.0.2: {} - - std-env@3.7.0: {} - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-final-newline@3.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@3.1.1: {} - - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - svelte-check@3.6.9(postcss-load-config@3.1.4(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 4.2.15 - svelte-preprocess: 5.1.4(postcss-load-config@3.1.4(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - - svelte-eslint-parser@0.34.1(svelte@4.2.15): - dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.4.38 - postcss-scss: 4.0.9(postcss@8.4.38) - optionalDependencies: - svelte: 4.2.15 - - svelte-hmr@0.16.0(svelte@4.2.15): - dependencies: - svelte: 4.2.15 - - svelte-preprocess@5.1.4(postcss-load-config@3.1.4(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5): - dependencies: - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.10 - sorcery: 0.11.0 - strip-indent: 3.0.0 - svelte: 4.2.15 - optionalDependencies: - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38) - typescript: 5.4.5 - - svelte@4.2.15: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.10 - periscopic: 3.1.0 - - text-table@0.2.0: {} - - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - - tinybench@2.8.0: {} - - tinypool@0.8.4: {} - - tinyspy@2.2.1: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - totalist@3.0.1: {} - - ts-api-utils@1.3.0(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - - tslib@2.6.2: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.20.2: {} - - typescript@5.4.5: {} - - ufo@1.5.3: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - util-deprecate@1.0.2: {} - - vite-node@1.5.0: - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.10 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite@5.2.10: - dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.16.0 - optionalDependencies: - fsevents: 2.3.3 - - vitefu@0.2.5(vite@5.2.10): - optionalDependencies: - vite: 5.2.10 - - vitest@1.5.0: - dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.2.10 - vite-node: 1.5.0 - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - why-is-node-running@2.2.2: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - wrappy@1.0.2: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yocto-queue@0.1.0: {} - - yocto-queue@1.0.0: {} diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts deleted file mode 100644 index 743f07b..0000000 --- a/frontend/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/frontend/src/app.html b/frontend/src/app.html deleted file mode 100644 index 77a5ff5..0000000 --- a/frontend/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/frontend/src/lib/images/github.svg b/frontend/src/lib/images/github.svg deleted file mode 100644 index bc5d249..0000000 --- a/frontend/src/lib/images/github.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/frontend/src/lib/images/svelte-logo.svg b/frontend/src/lib/images/svelte-logo.svg deleted file mode 100644 index 49492a8..0000000 --- a/frontend/src/lib/images/svelte-logo.svg +++ /dev/null @@ -1 +0,0 @@ -svelte-logo \ No newline at end of file diff --git a/frontend/src/lib/images/svelte-welcome.png b/frontend/src/lib/images/svelte-welcome.png deleted file mode 100644 index fe7d2d6..0000000 Binary files a/frontend/src/lib/images/svelte-welcome.png and /dev/null differ diff --git a/frontend/src/lib/images/svelte-welcome.webp b/frontend/src/lib/images/svelte-welcome.webp deleted file mode 100644 index 6ec1a28..0000000 Binary files a/frontend/src/lib/images/svelte-welcome.webp and /dev/null differ diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte deleted file mode 100644 index 9c7445f..0000000 --- a/frontend/src/routes/+layout.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - -
-
- -
- -
- - -
- - diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte deleted file mode 100644 index 97201ef..0000000 --- a/frontend/src/routes/+page.svelte +++ /dev/null @@ -1,59 +0,0 @@ - - - - Home - - - -
-

- - - - Welcome - - - - to your new
SvelteKit app -

- -

- try editing src/routes/+page.svelte -

- - -
- - diff --git a/frontend/src/routes/+page.ts b/frontend/src/routes/+page.ts deleted file mode 100644 index a72419a..0000000 --- a/frontend/src/routes/+page.ts +++ /dev/null @@ -1,3 +0,0 @@ -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/frontend/src/routes/Counter.svelte b/frontend/src/routes/Counter.svelte deleted file mode 100644 index 96ef556..0000000 --- a/frontend/src/routes/Counter.svelte +++ /dev/null @@ -1,102 +0,0 @@ - - -
- - -
-
- - {Math.floor($displayed_count)} -
-
- - -
- - diff --git a/frontend/src/routes/Header.svelte b/frontend/src/routes/Header.svelte deleted file mode 100644 index 368b721..0000000 --- a/frontend/src/routes/Header.svelte +++ /dev/null @@ -1,129 +0,0 @@ - - -
-
- - SvelteKit - -
- - - -
- - GitHub - -
-
- - diff --git a/frontend/src/routes/about/+page.svelte b/frontend/src/routes/about/+page.svelte deleted file mode 100644 index 7f7946d..0000000 --- a/frontend/src/routes/about/+page.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - About - - - -
-

About this app

- -

- This is a SvelteKit app. You can make your own by typing the - following into your command line and following the prompts: -

- -
npm create svelte@latest
- -

- The page you're looking at is purely static HTML, with no client-side interactivity needed. - Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening - the devtools network panel and reloading. -

- -

- The Sverdle page illustrates SvelteKit's data loading and form handling. Try - using it with JavaScript disabled! -

-
diff --git a/frontend/src/routes/about/+page.ts b/frontend/src/routes/about/+page.ts deleted file mode 100644 index e739ef4..0000000 --- a/frontend/src/routes/about/+page.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { dev } from '$app/environment'; - -// we don't need any JS on this page, though we'll load -// it in dev so that we get hot module replacement -export const csr = dev; - -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/frontend/src/routes/styles.css b/frontend/src/routes/styles.css deleted file mode 100644 index 1441d94..0000000 --- a/frontend/src/routes/styles.css +++ /dev/null @@ -1,107 +0,0 @@ -@import '@fontsource/fira-mono'; - -:root { - --font-body: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, - Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; - --font-mono: 'Fira Mono', monospace; - --color-bg-0: rgb(202, 216, 228); - --color-bg-1: hsl(209, 36%, 86%); - --color-bg-2: hsl(224, 44%, 95%); - --color-theme-1: #ff3e00; - --color-theme-2: #4075a6; - --color-text: rgba(0, 0, 0, 0.7); - --column-width: 42rem; - --column-margin-top: 4rem; - font-family: var(--font-body); - color: var(--color-text); -} - -body { - min-height: 100vh; - margin: 0; - background-attachment: fixed; - background-color: var(--color-bg-1); - background-size: 100vw 100vh; - background-image: radial-gradient( - 50% 50% at 50% 50%, - rgba(255, 255, 255, 0.75) 0%, - rgba(255, 255, 255, 0) 100% - ), - linear-gradient(180deg, var(--color-bg-0) 0%, var(--color-bg-1) 15%, var(--color-bg-2) 50%); -} - -h1, -h2, -p { - font-weight: 400; -} - -p { - line-height: 1.5; -} - -a { - color: var(--color-theme-1); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -h1 { - font-size: 2rem; - text-align: center; -} - -h2 { - font-size: 1rem; -} - -pre { - font-size: 16px; - font-family: var(--font-mono); - background-color: rgba(255, 255, 255, 0.45); - border-radius: 3px; - box-shadow: 2px 2px 6px rgb(255 255 255 / 25%); - padding: 0.5em; - overflow-x: auto; - color: var(--color-text); -} - -.text-column { - display: flex; - max-width: 48rem; - flex: 0.6; - flex-direction: column; - justify-content: center; - margin: 0 auto; -} - -input, -button { - font-size: inherit; - font-family: inherit; -} - -button:focus:not(:focus-visible) { - outline: none; -} - -@media (min-width: 720px) { - h1 { - font-size: 2.4rem; - } -} - -.visually-hidden { - border: 0; - clip: rect(0 0 0 0); - height: auto; - margin: 0; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - white-space: nowrap; -} diff --git a/frontend/src/routes/sverdle/+page.server.ts b/frontend/src/routes/sverdle/+page.server.ts deleted file mode 100644 index 7279af5..0000000 --- a/frontend/src/routes/sverdle/+page.server.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { fail } from '@sveltejs/kit'; -import { Game } from './game'; -import type { PageServerLoad, Actions } from './$types'; - -export const load = (({ cookies }) => { - const game = new Game(cookies.get('sverdle')); - - return { - /** - * The player's guessed words so far - */ - guesses: game.guesses, - - /** - * An array of strings like '__x_c' corresponding to the guesses, where 'x' means - * an exact match, and 'c' means a close match (right letter, wrong place) - */ - answers: game.answers, - - /** - * The correct answer, revealed if the game is over - */ - answer: game.answers.length >= 6 ? game.answer : null - }; -}) satisfies PageServerLoad; - -export const actions = { - /** - * Modify game state in reaction to a keypress. If client-side JavaScript - * is available, this will happen in the browser instead of here - */ - update: async ({ request, cookies }) => { - const game = new Game(cookies.get('sverdle')); - - const data = await request.formData(); - const key = data.get('key'); - - const i = game.answers.length; - - if (key === 'backspace') { - game.guesses[i] = game.guesses[i].slice(0, -1); - } else { - game.guesses[i] += key; - } - - cookies.set('sverdle', game.toString(), { path: '/' }); - }, - - /** - * Modify game state in reaction to a guessed word. This logic always runs on - * the server, so that people can't cheat by peeking at the JavaScript - */ - enter: async ({ request, cookies }) => { - const game = new Game(cookies.get('sverdle')); - - const data = await request.formData(); - const guess = data.getAll('guess') as string[]; - - if (!game.enter(guess)) { - return fail(400, { badGuess: true }); - } - - cookies.set('sverdle', game.toString(), { path: '/' }); - }, - - restart: async ({ cookies }) => { - cookies.delete('sverdle', { path: '/' }); - } -} satisfies Actions; diff --git a/frontend/src/routes/sverdle/+page.svelte b/frontend/src/routes/sverdle/+page.svelte deleted file mode 100644 index 517abd8..0000000 --- a/frontend/src/routes/sverdle/+page.svelte +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - Sverdle - - - -

Sverdle

- -
{ - // prevent default callback from resetting the form - return ({ update }) => { - update({ reset: false }); - }; - }} -> - How to play - -
- {#each Array.from(Array(6).keys()) as row (row)} - {@const current = row === i} -

Row {row + 1}

-
- {#each Array.from(Array(5).keys()) as column (column)} - {@const guess = current ? currentGuess : data.guesses[row]} - {@const answer = data.answers[row]?.[column]} - {@const value = guess?.[column] ?? ''} - {@const selected = current && column === guess.length} - {@const exact = answer === 'x'} - {@const close = answer === 'c'} - {@const missing = answer === '_'} -
- {value} - - {#if exact} - (correct) - {:else if close} - (present) - {:else if missing} - (absent) - {:else} - empty - {/if} - - -
- {/each} -
- {/each} -
- -
- {#if won || data.answers.length >= 6} - {#if !won && data.answer} -

the answer was "{data.answer}"

- {/if} - - {:else} -
- - - - - {#each ['qwertyuiop', 'asdfghjkl', 'zxcvbnm'] as row} -
- {#each row as letter} - - {/each} -
- {/each} -
- {/if} -
-
- -{#if won} -
-{/if} - - diff --git a/frontend/src/routes/sverdle/game.test.ts b/frontend/src/routes/sverdle/game.test.ts deleted file mode 100644 index 99028b6..0000000 --- a/frontend/src/routes/sverdle/game.test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { describe, it, expect } from 'vitest'; -import { Game } from './game'; - -describe('game test', () => { - it('returns true when a valid word is entered', () => { - const game = new Game(); - expect(game.enter('zorro'.split(''))).toBe(true); - }); -}); diff --git a/frontend/src/routes/sverdle/game.ts b/frontend/src/routes/sverdle/game.ts deleted file mode 100644 index 72aef85..0000000 --- a/frontend/src/routes/sverdle/game.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { words, allowed } from './words.server'; - -export class Game { - index: number; - guesses: string[]; - answers: string[]; - answer: string; - - /** - * Create a game object from the player's cookie, or initialise a new game - */ - constructor(serialized: string | undefined = undefined) { - if (serialized) { - const [index, guesses, answers] = serialized.split('-'); - - this.index = +index; - this.guesses = guesses ? guesses.split(' ') : []; - this.answers = answers ? answers.split(' ') : []; - } else { - this.index = Math.floor(Math.random() * words.length); - this.guesses = ['', '', '', '', '', '']; - this.answers = []; - } - - this.answer = words[this.index]; - } - - /** - * Update game state based on a guess of a five-letter word. Returns - * true if the guess was valid, false otherwise - */ - enter(letters: string[]) { - const word = letters.join(''); - const valid = allowed.has(word); - - if (!valid) return false; - - this.guesses[this.answers.length] = word; - - const available = Array.from(this.answer); - const answer = Array(5).fill('_'); - - // first, find exact matches - for (let i = 0; i < 5; i += 1) { - if (letters[i] === available[i]) { - answer[i] = 'x'; - available[i] = ' '; - } - } - - // then find close matches (this has to happen - // in a second step, otherwise an early close - // match can prevent a later exact match) - for (let i = 0; i < 5; i += 1) { - if (answer[i] === '_') { - const index = available.indexOf(letters[i]); - if (index !== -1) { - answer[i] = 'c'; - available[index] = ' '; - } - } - } - - this.answers.push(answer.join('')); - - return true; - } - - /** - * Serialize game state so it can be set as a cookie - */ - toString() { - return `${this.index}-${this.guesses.join(' ')}-${this.answers.join(' ')}`; - } -} diff --git a/frontend/src/routes/sverdle/how-to-play/+page.svelte b/frontend/src/routes/sverdle/how-to-play/+page.svelte deleted file mode 100644 index e8e2cec..0000000 --- a/frontend/src/routes/sverdle/how-to-play/+page.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - How to play Sverdle - - - -
-

How to play Sverdle

- -

- Sverdle is a clone of Wordle, the - word guessing game. To play, enter a five-letter English word. For example: -

- -
- r - i - t - z - y -
- -

- The y is in the right place. r and - t - are the right letters, but in the wrong place. The other letters are wrong, and can be discarded. - Let's make another guess: -

- -
- p - a - r - t - y -
- -

This time we guessed right! You have six guesses to get the word.

- -

- Unlike the original Wordle, Sverdle runs on the server instead of in the browser, making it - impossible to cheat. It uses <form> and cookies to submit data, meaning you can - even play with JavaScript disabled! -

-
- - diff --git a/frontend/src/routes/sverdle/how-to-play/+page.ts b/frontend/src/routes/sverdle/how-to-play/+page.ts deleted file mode 100644 index e739ef4..0000000 --- a/frontend/src/routes/sverdle/how-to-play/+page.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { dev } from '$app/environment'; - -// we don't need any JS on this page, though we'll load -// it in dev so that we get hot module replacement -export const csr = dev; - -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/frontend/src/routes/sverdle/reduced-motion.ts b/frontend/src/routes/sverdle/reduced-motion.ts deleted file mode 100644 index 7a4e95e..0000000 --- a/frontend/src/routes/sverdle/reduced-motion.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { readable } from 'svelte/store'; -import { browser } from '$app/environment'; - -const reduced_motion_query = '(prefers-reduced-motion: reduce)'; - -const get_initial_motion_preference = () => { - if (!browser) return false; - return window.matchMedia(reduced_motion_query).matches; -}; - -export const reduced_motion = readable(get_initial_motion_preference(), (set) => { - if (browser) { - const set_reduced_motion = (event: MediaQueryListEvent) => { - set(event.matches); - }; - const media_query_list = window.matchMedia(reduced_motion_query); - media_query_list.addEventListener('change', set_reduced_motion); - - return () => { - media_query_list.removeEventListener('change', set_reduced_motion); - }; - } -}); diff --git a/frontend/src/routes/sverdle/words.server.ts b/frontend/src/routes/sverdle/words.server.ts deleted file mode 100644 index 56082a3..0000000 --- a/frontend/src/routes/sverdle/words.server.ts +++ /dev/null @@ -1,12980 +0,0 @@ -/** The list of possible words */ -export const words = [ - 'aback', - 'abase', - 'abate', - 'abbey', - 'abbot', - 'abhor', - 'abide', - 'abled', - 'abode', - 'abort', - 'about', - 'above', - 'abuse', - 'abyss', - 'acorn', - 'acrid', - 'actor', - 'acute', - 'adage', - 'adapt', - 'adept', - 'admin', - 'admit', - 'adobe', - 'adopt', - 'adore', - 'adorn', - 'adult', - 'affix', - 'afire', - 'afoot', - 'afoul', - 'after', - 'again', - 'agape', - 'agate', - 'agent', - 'agile', - 'aging', - 'aglow', - 'agony', - 'agora', - 'agree', - 'ahead', - 'aider', - 'aisle', - 'alarm', - 'album', - 'alert', - 'algae', - 'alibi', - 'alien', - 'align', - 'alike', - 'alive', - 'allay', - 'alley', - 'allot', - 'allow', - 'alloy', - 'aloft', - 'alone', - 'along', - 'aloof', - 'aloud', - 'alpha', - 'altar', - 'alter', - 'amass', - 'amaze', - 'amber', - 'amble', - 'amend', - 'amiss', - 'amity', - 'among', - 'ample', - 'amply', - 'amuse', - 'angel', - 'anger', - 'angle', - 'angry', - 'angst', - 'anime', - 'ankle', - 'annex', - 'annoy', - 'annul', - 'anode', - 'antic', - 'anvil', - 'aorta', - 'apart', - 'aphid', - 'aping', - 'apnea', - 'apple', - 'apply', - 'apron', - 'aptly', - 'arbor', - 'ardor', - 'arena', - 'argue', - 'arise', - 'armor', - 'aroma', - 'arose', - 'array', - 'arrow', - 'arson', - 'artsy', - 'ascot', - 'ashen', - 'aside', - 'askew', - 'assay', - 'asset', - 'atoll', - 'atone', - 'attic', - 'audio', - 'audit', - 'augur', - 'aunty', - 'avail', - 'avert', - 'avian', - 'avoid', - 'await', - 'awake', - 'award', - 'aware', - 'awash', - 'awful', - 'awoke', - 'axial', - 'axiom', - 'axion', - 'azure', - 'bacon', - 'badge', - 'badly', - 'bagel', - 'baggy', - 'baker', - 'baler', - 'balmy', - 'banal', - 'banjo', - 'barge', - 'baron', - 'basal', - 'basic', - 'basil', - 'basin', - 'basis', - 'baste', - 'batch', - 'bathe', - 'baton', - 'batty', - 'bawdy', - 'bayou', - 'beach', - 'beady', - 'beard', - 'beast', - 'beech', - 'beefy', - 'befit', - 'began', - 'begat', - 'beget', - 'begin', - 'begun', - 'being', - 'belch', - 'belie', - 'belle', - 'belly', - 'below', - 'bench', - 'beret', - 'berry', - 'berth', - 'beset', - 'betel', - 'bevel', - 'bezel', - 'bible', - 'bicep', - 'biddy', - 'bigot', - 'bilge', - 'billy', - 'binge', - 'bingo', - 'biome', - 'birch', - 'birth', - 'bison', - 'bitty', - 'black', - 'blade', - 'blame', - 'bland', - 'blank', - 'blare', - 'blast', - 'blaze', - 'bleak', - 'bleat', - 'bleed', - 'bleep', - 'blend', - 'bless', - 'blimp', - 'blind', - 'blink', - 'bliss', - 'blitz', - 'bloat', - 'block', - 'bloke', - 'blond', - 'blood', - 'bloom', - 'blown', - 'bluer', - 'bluff', - 'blunt', - 'blurb', - 'blurt', - 'blush', - 'board', - 'boast', - 'bobby', - 'boney', - 'bongo', - 'bonus', - 'booby', - 'boost', - 'booth', - 'booty', - 'booze', - 'boozy', - 'borax', - 'borne', - 'bosom', - 'bossy', - 'botch', - 'bough', - 'boule', - 'bound', - 'bowel', - 'boxer', - 'brace', - 'braid', - 'brain', - 'brake', - 'brand', - 'brash', - 'brass', - 'brave', - 'bravo', - 'brawl', - 'brawn', - 'bread', - 'break', - 'breed', - 'briar', - 'bribe', - 'brick', - 'bride', - 'brief', - 'brine', - 'bring', - 'brink', - 'briny', - 'brisk', - 'broad', - 'broil', - 'broke', - 'brood', - 'brook', - 'broom', - 'broth', - 'brown', - 'brunt', - 'brush', - 'brute', - 'buddy', - 'budge', - 'buggy', - 'bugle', - 'build', - 'built', - 'bulge', - 'bulky', - 'bully', - 'bunch', - 'bunny', - 'burly', - 'burnt', - 'burst', - 'bused', - 'bushy', - 'butch', - 'butte', - 'buxom', - 'buyer', - 'bylaw', - 'cabal', - 'cabby', - 'cabin', - 'cable', - 'cacao', - 'cache', - 'cacti', - 'caddy', - 'cadet', - 'cagey', - 'cairn', - 'camel', - 'cameo', - 'canal', - 'candy', - 'canny', - 'canoe', - 'canon', - 'caper', - 'caput', - 'carat', - 'cargo', - 'carol', - 'carry', - 'carve', - 'caste', - 'catch', - 'cater', - 'catty', - 'caulk', - 'cause', - 'cavil', - 'cease', - 'cedar', - 'cello', - 'chafe', - 'chaff', - 'chain', - 'chair', - 'chalk', - 'champ', - 'chant', - 'chaos', - 'chard', - 'charm', - 'chart', - 'chase', - 'chasm', - 'cheap', - 'cheat', - 'check', - 'cheek', - 'cheer', - 'chess', - 'chest', - 'chick', - 'chide', - 'chief', - 'child', - 'chili', - 'chill', - 'chime', - 'china', - 'chirp', - 'chock', - 'choir', - 'choke', - 'chord', - 'chore', - 'chose', - 'chuck', - 'chump', - 'chunk', - 'churn', - 'chute', - 'cider', - 'cigar', - 'cinch', - 'circa', - 'civic', - 'civil', - 'clack', - 'claim', - 'clamp', - 'clang', - 'clank', - 'clash', - 'clasp', - 'class', - 'clean', - 'clear', - 'cleat', - 'cleft', - 'clerk', - 'click', - 'cliff', - 'climb', - 'cling', - 'clink', - 'cloak', - 'clock', - 'clone', - 'close', - 'cloth', - 'cloud', - 'clout', - 'clove', - 'clown', - 'cluck', - 'clued', - 'clump', - 'clung', - 'coach', - 'coast', - 'cobra', - 'cocoa', - 'colon', - 'color', - 'comet', - 'comfy', - 'comic', - 'comma', - 'conch', - 'condo', - 'conic', - 'copse', - 'coral', - 'corer', - 'corny', - 'couch', - 'cough', - 'could', - 'count', - 'coupe', - 'court', - 'coven', - 'cover', - 'covet', - 'covey', - 'cower', - 'coyly', - 'crack', - 'craft', - 'cramp', - 'crane', - 'crank', - 'crash', - 'crass', - 'crate', - 'crave', - 'crawl', - 'craze', - 'crazy', - 'creak', - 'cream', - 'credo', - 'creed', - 'creek', - 'creep', - 'creme', - 'crepe', - 'crept', - 'cress', - 'crest', - 'crick', - 'cried', - 'crier', - 'crime', - 'crimp', - 'crisp', - 'croak', - 'crock', - 'crone', - 'crony', - 'crook', - 'cross', - 'croup', - 'crowd', - 'crown', - 'crude', - 'cruel', - 'crumb', - 'crump', - 'crush', - 'crust', - 'crypt', - 'cubic', - 'cumin', - 'curio', - 'curly', - 'curry', - 'curse', - 'curve', - 'curvy', - 'cutie', - 'cyber', - 'cycle', - 'cynic', - 'daddy', - 'daily', - 'dairy', - 'daisy', - 'dally', - 'dance', - 'dandy', - 'datum', - 'daunt', - 'dealt', - 'death', - 'debar', - 'debit', - 'debug', - 'debut', - 'decal', - 'decay', - 'decor', - 'decoy', - 'decry', - 'defer', - 'deign', - 'deity', - 'delay', - 'delta', - 'delve', - 'demon', - 'demur', - 'denim', - 'dense', - 'depot', - 'depth', - 'derby', - 'deter', - 'detox', - 'deuce', - 'devil', - 'diary', - 'dicey', - 'digit', - 'dilly', - 'dimly', - 'diner', - 'dingo', - 'dingy', - 'diode', - 'dirge', - 'dirty', - 'disco', - 'ditch', - 'ditto', - 'ditty', - 'diver', - 'dizzy', - 'dodge', - 'dodgy', - 'dogma', - 'doing', - 'dolly', - 'donor', - 'donut', - 'dopey', - 'doubt', - 'dough', - 'dowdy', - 'dowel', - 'downy', - 'dowry', - 'dozen', - 'draft', - 'drain', - 'drake', - 'drama', - 'drank', - 'drape', - 'drawl', - 'drawn', - 'dread', - 'dream', - 'dress', - 'dried', - 'drier', - 'drift', - 'drill', - 'drink', - 'drive', - 'droit', - 'droll', - 'drone', - 'drool', - 'droop', - 'dross', - 'drove', - 'drown', - 'druid', - 'drunk', - 'dryer', - 'dryly', - 'duchy', - 'dully', - 'dummy', - 'dumpy', - 'dunce', - 'dusky', - 'dusty', - 'dutch', - 'duvet', - 'dwarf', - 'dwell', - 'dwelt', - 'dying', - 'eager', - 'eagle', - 'early', - 'earth', - 'easel', - 'eaten', - 'eater', - 'ebony', - 'eclat', - 'edict', - 'edify', - 'eerie', - 'egret', - 'eight', - 'eject', - 'eking', - 'elate', - 'elbow', - 'elder', - 'elect', - 'elegy', - 'elfin', - 'elide', - 'elite', - 'elope', - 'elude', - 'email', - 'embed', - 'ember', - 'emcee', - 'empty', - 'enact', - 'endow', - 'enema', - 'enemy', - 'enjoy', - 'ennui', - 'ensue', - 'enter', - 'entry', - 'envoy', - 'epoch', - 'epoxy', - 'equal', - 'equip', - 'erase', - 'erect', - 'erode', - 'error', - 'erupt', - 'essay', - 'ester', - 'ether', - 'ethic', - 'ethos', - 'etude', - 'evade', - 'event', - 'every', - 'evict', - 'evoke', - 'exact', - 'exalt', - 'excel', - 'exert', - 'exile', - 'exist', - 'expel', - 'extol', - 'extra', - 'exult', - 'eying', - 'fable', - 'facet', - 'faint', - 'fairy', - 'faith', - 'false', - 'fancy', - 'fanny', - 'farce', - 'fatal', - 'fatty', - 'fault', - 'fauna', - 'favor', - 'feast', - 'fecal', - 'feign', - 'fella', - 'felon', - 'femme', - 'femur', - 'fence', - 'feral', - 'ferry', - 'fetal', - 'fetch', - 'fetid', - 'fetus', - 'fever', - 'fewer', - 'fiber', - 'fibre', - 'ficus', - 'field', - 'fiend', - 'fiery', - 'fifth', - 'fifty', - 'fight', - 'filer', - 'filet', - 'filly', - 'filmy', - 'filth', - 'final', - 'finch', - 'finer', - 'first', - 'fishy', - 'fixer', - 'fizzy', - 'fjord', - 'flack', - 'flail', - 'flair', - 'flake', - 'flaky', - 'flame', - 'flank', - 'flare', - 'flash', - 'flask', - 'fleck', - 'fleet', - 'flesh', - 'flick', - 'flier', - 'fling', - 'flint', - 'flirt', - 'float', - 'flock', - 'flood', - 'floor', - 'flora', - 'floss', - 'flour', - 'flout', - 'flown', - 'fluff', - 'fluid', - 'fluke', - 'flume', - 'flung', - 'flunk', - 'flush', - 'flute', - 'flyer', - 'foamy', - 'focal', - 'focus', - 'foggy', - 'foist', - 'folio', - 'folly', - 'foray', - 'force', - 'forge', - 'forgo', - 'forte', - 'forth', - 'forty', - 'forum', - 'found', - 'foyer', - 'frail', - 'frame', - 'frank', - 'fraud', - 'freak', - 'freed', - 'freer', - 'fresh', - 'friar', - 'fried', - 'frill', - 'frisk', - 'fritz', - 'frock', - 'frond', - 'front', - 'frost', - 'froth', - 'frown', - 'froze', - 'fruit', - 'fudge', - 'fugue', - 'fully', - 'fungi', - 'funky', - 'funny', - 'furor', - 'furry', - 'fussy', - 'fuzzy', - 'gaffe', - 'gaily', - 'gamer', - 'gamma', - 'gamut', - 'gassy', - 'gaudy', - 'gauge', - 'gaunt', - 'gauze', - 'gavel', - 'gawky', - 'gayer', - 'gayly', - 'gazer', - 'gecko', - 'geeky', - 'geese', - 'genie', - 'genre', - 'ghost', - 'ghoul', - 'giant', - 'giddy', - 'gipsy', - 'girly', - 'girth', - 'given', - 'giver', - 'glade', - 'gland', - 'glare', - 'glass', - 'glaze', - 'gleam', - 'glean', - 'glide', - 'glint', - 'gloat', - 'globe', - 'gloom', - 'glory', - 'gloss', - 'glove', - 'glyph', - 'gnash', - 'gnome', - 'godly', - 'going', - 'golem', - 'golly', - 'gonad', - 'goner', - 'goody', - 'gooey', - 'goofy', - 'goose', - 'gorge', - 'gouge', - 'gourd', - 'grace', - 'grade', - 'graft', - 'grail', - 'grain', - 'grand', - 'grant', - 'grape', - 'graph', - 'grasp', - 'grass', - 'grate', - 'grave', - 'gravy', - 'graze', - 'great', - 'greed', - 'green', - 'greet', - 'grief', - 'grill', - 'grime', - 'grimy', - 'grind', - 'gripe', - 'groan', - 'groin', - 'groom', - 'grope', - 'gross', - 'group', - 'grout', - 'grove', - 'growl', - 'grown', - 'gruel', - 'gruff', - 'grunt', - 'guard', - 'guava', - 'guess', - 'guest', - 'guide', - 'guild', - 'guile', - 'guilt', - 'guise', - 'gulch', - 'gully', - 'gumbo', - 'gummy', - 'guppy', - 'gusto', - 'gusty', - 'gypsy', - 'habit', - 'hairy', - 'halve', - 'handy', - 'happy', - 'hardy', - 'harem', - 'harpy', - 'harry', - 'harsh', - 'haste', - 'hasty', - 'hatch', - 'hater', - 'haunt', - 'haute', - 'haven', - 'havoc', - 'hazel', - 'heady', - 'heard', - 'heart', - 'heath', - 'heave', - 'heavy', - 'hedge', - 'hefty', - 'heist', - 'helix', - 'hello', - 'hence', - 'heron', - 'hilly', - 'hinge', - 'hippo', - 'hippy', - 'hitch', - 'hoard', - 'hobby', - 'hoist', - 'holly', - 'homer', - 'honey', - 'honor', - 'horde', - 'horny', - 'horse', - 'hotel', - 'hotly', - 'hound', - 'house', - 'hovel', - 'hover', - 'howdy', - 'human', - 'humid', - 'humor', - 'humph', - 'humus', - 'hunch', - 'hunky', - 'hurry', - 'husky', - 'hussy', - 'hutch', - 'hydro', - 'hyena', - 'hymen', - 'hyper', - 'icily', - 'icing', - 'ideal', - 'idiom', - 'idiot', - 'idler', - 'idyll', - 'igloo', - 'iliac', - 'image', - 'imbue', - 'impel', - 'imply', - 'inane', - 'inbox', - 'incur', - 'index', - 'inept', - 'inert', - 'infer', - 'ingot', - 'inlay', - 'inlet', - 'inner', - 'input', - 'inter', - 'intro', - 'ionic', - 'irate', - 'irony', - 'islet', - 'issue', - 'itchy', - 'ivory', - 'jaunt', - 'jazzy', - 'jelly', - 'jerky', - 'jetty', - 'jewel', - 'jiffy', - 'joint', - 'joist', - 'joker', - 'jolly', - 'joust', - 'judge', - 'juice', - 'juicy', - 'jumbo', - 'jumpy', - 'junta', - 'junto', - 'juror', - 'kappa', - 'karma', - 'kayak', - 'kebab', - 'khaki', - 'kinky', - 'kiosk', - 'kitty', - 'knack', - 'knave', - 'knead', - 'kneed', - 'kneel', - 'knelt', - 'knife', - 'knock', - 'knoll', - 'known', - 'koala', - 'krill', - 'label', - 'labor', - 'laden', - 'ladle', - 'lager', - 'lance', - 'lanky', - 'lapel', - 'lapse', - 'large', - 'larva', - 'lasso', - 'latch', - 'later', - 'lathe', - 'latte', - 'laugh', - 'layer', - 'leach', - 'leafy', - 'leaky', - 'leant', - 'leapt', - 'learn', - 'lease', - 'leash', - 'least', - 'leave', - 'ledge', - 'leech', - 'leery', - 'lefty', - 'legal', - 'leggy', - 'lemon', - 'lemur', - 'leper', - 'level', - 'lever', - 'libel', - 'liege', - 'light', - 'liken', - 'lilac', - 'limbo', - 'limit', - 'linen', - 'liner', - 'lingo', - 'lipid', - 'lithe', - 'liver', - 'livid', - 'llama', - 'loamy', - 'loath', - 'lobby', - 'local', - 'locus', - 'lodge', - 'lofty', - 'logic', - 'login', - 'loopy', - 'loose', - 'lorry', - 'loser', - 'louse', - 'lousy', - 'lover', - 'lower', - 'lowly', - 'loyal', - 'lucid', - 'lucky', - 'lumen', - 'lumpy', - 'lunar', - 'lunch', - 'lunge', - 'lupus', - 'lurch', - 'lurid', - 'lusty', - 'lying', - 'lymph', - 'lynch', - 'lyric', - 'macaw', - 'macho', - 'macro', - 'madam', - 'madly', - 'mafia', - 'magic', - 'magma', - 'maize', - 'major', - 'maker', - 'mambo', - 'mamma', - 'mammy', - 'manga', - 'mange', - 'mango', - 'mangy', - 'mania', - 'manic', - 'manly', - 'manor', - 'maple', - 'march', - 'marry', - 'marsh', - 'mason', - 'masse', - 'match', - 'matey', - 'mauve', - 'maxim', - 'maybe', - 'mayor', - 'mealy', - 'meant', - 'meaty', - 'mecca', - 'medal', - 'media', - 'medic', - 'melee', - 'melon', - 'mercy', - 'merge', - 'merit', - 'merry', - 'metal', - 'meter', - 'metro', - 'micro', - 'midge', - 'midst', - 'might', - 'milky', - 'mimic', - 'mince', - 'miner', - 'minim', - 'minor', - 'minty', - 'minus', - 'mirth', - 'miser', - 'missy', - 'mocha', - 'modal', - 'model', - 'modem', - 'mogul', - 'moist', - 'molar', - 'moldy', - 'money', - 'month', - 'moody', - 'moose', - 'moral', - 'moron', - 'morph', - 'mossy', - 'motel', - 'motif', - 'motor', - 'motto', - 'moult', - 'mound', - 'mount', - 'mourn', - 'mouse', - 'mouth', - 'mover', - 'movie', - 'mower', - 'mucky', - 'mucus', - 'muddy', - 'mulch', - 'mummy', - 'munch', - 'mural', - 'murky', - 'mushy', - 'music', - 'musky', - 'musty', - 'myrrh', - 'nadir', - 'naive', - 'nanny', - 'nasal', - 'nasty', - 'natal', - 'naval', - 'navel', - 'needy', - 'neigh', - 'nerdy', - 'nerve', - 'never', - 'newer', - 'newly', - 'nicer', - 'niche', - 'niece', - 'night', - 'ninja', - 'ninny', - 'ninth', - 'noble', - 'nobly', - 'noise', - 'noisy', - 'nomad', - 'noose', - 'north', - 'nosey', - 'notch', - 'novel', - 'nudge', - 'nurse', - 'nutty', - 'nylon', - 'nymph', - 'oaken', - 'obese', - 'occur', - 'ocean', - 'octal', - 'octet', - 'odder', - 'oddly', - 'offal', - 'offer', - 'often', - 'olden', - 'older', - 'olive', - 'ombre', - 'omega', - 'onion', - 'onset', - 'opera', - 'opine', - 'opium', - 'optic', - 'orbit', - 'order', - 'organ', - 'other', - 'otter', - 'ought', - 'ounce', - 'outdo', - 'outer', - 'outgo', - 'ovary', - 'ovate', - 'overt', - 'ovine', - 'ovoid', - 'owing', - 'owner', - 'oxide', - 'ozone', - 'paddy', - 'pagan', - 'paint', - 'paler', - 'palsy', - 'panel', - 'panic', - 'pansy', - 'papal', - 'paper', - 'parer', - 'parka', - 'parry', - 'parse', - 'party', - 'pasta', - 'paste', - 'pasty', - 'patch', - 'patio', - 'patsy', - 'patty', - 'pause', - 'payee', - 'payer', - 'peace', - 'peach', - 'pearl', - 'pecan', - 'pedal', - 'penal', - 'pence', - 'penne', - 'penny', - 'perch', - 'peril', - 'perky', - 'pesky', - 'pesto', - 'petal', - 'petty', - 'phase', - 'phone', - 'phony', - 'photo', - 'piano', - 'picky', - 'piece', - 'piety', - 'piggy', - 'pilot', - 'pinch', - 'piney', - 'pinky', - 'pinto', - 'piper', - 'pique', - 'pitch', - 'pithy', - 'pivot', - 'pixel', - 'pixie', - 'pizza', - 'place', - 'plaid', - 'plain', - 'plait', - 'plane', - 'plank', - 'plant', - 'plate', - 'plaza', - 'plead', - 'pleat', - 'plied', - 'plier', - 'pluck', - 'plumb', - 'plume', - 'plump', - 'plunk', - 'plush', - 'poesy', - 'point', - 'poise', - 'poker', - 'polar', - 'polka', - 'polyp', - 'pooch', - 'poppy', - 'porch', - 'poser', - 'posit', - 'posse', - 'pouch', - 'pound', - 'pouty', - 'power', - 'prank', - 'prawn', - 'preen', - 'press', - 'price', - 'prick', - 'pride', - 'pried', - 'prime', - 'primo', - 'print', - 'prior', - 'prism', - 'privy', - 'prize', - 'probe', - 'prone', - 'prong', - 'proof', - 'prose', - 'proud', - 'prove', - 'prowl', - 'proxy', - 'prude', - 'prune', - 'psalm', - 'pubic', - 'pudgy', - 'puffy', - 'pulpy', - 'pulse', - 'punch', - 'pupal', - 'pupil', - 'puppy', - 'puree', - 'purer', - 'purge', - 'purse', - 'pushy', - 'putty', - 'pygmy', - 'quack', - 'quail', - 'quake', - 'qualm', - 'quark', - 'quart', - 'quash', - 'quasi', - 'queen', - 'queer', - 'quell', - 'query', - 'quest', - 'queue', - 'quick', - 'quiet', - 'quill', - 'quilt', - 'quirk', - 'quite', - 'quota', - 'quote', - 'quoth', - 'rabbi', - 'rabid', - 'racer', - 'radar', - 'radii', - 'radio', - 'rainy', - 'raise', - 'rajah', - 'rally', - 'ralph', - 'ramen', - 'ranch', - 'randy', - 'range', - 'rapid', - 'rarer', - 'raspy', - 'ratio', - 'ratty', - 'raven', - 'rayon', - 'razor', - 'reach', - 'react', - 'ready', - 'realm', - 'rearm', - 'rebar', - 'rebel', - 'rebus', - 'rebut', - 'recap', - 'recur', - 'recut', - 'reedy', - 'refer', - 'refit', - 'regal', - 'rehab', - 'reign', - 'relax', - 'relay', - 'relic', - 'remit', - 'renal', - 'renew', - 'repay', - 'repel', - 'reply', - 'rerun', - 'reset', - 'resin', - 'retch', - 'retro', - 'retry', - 'reuse', - 'revel', - 'revue', - 'rhino', - 'rhyme', - 'rider', - 'ridge', - 'rifle', - 'right', - 'rigid', - 'rigor', - 'rinse', - 'ripen', - 'riper', - 'risen', - 'riser', - 'risky', - 'rival', - 'river', - 'rivet', - 'roach', - 'roast', - 'robin', - 'robot', - 'rocky', - 'rodeo', - 'roger', - 'rogue', - 'roomy', - 'roost', - 'rotor', - 'rouge', - 'rough', - 'round', - 'rouse', - 'route', - 'rover', - 'rowdy', - 'rower', - 'royal', - 'ruddy', - 'ruder', - 'rugby', - 'ruler', - 'rumba', - 'rumor', - 'rupee', - 'rural', - 'rusty', - 'sadly', - 'safer', - 'saint', - 'salad', - 'sally', - 'salon', - 'salsa', - 'salty', - 'salve', - 'salvo', - 'sandy', - 'saner', - 'sappy', - 'sassy', - 'satin', - 'satyr', - 'sauce', - 'saucy', - 'sauna', - 'saute', - 'savor', - 'savoy', - 'savvy', - 'scald', - 'scale', - 'scalp', - 'scaly', - 'scamp', - 'scant', - 'scare', - 'scarf', - 'scary', - 'scene', - 'scent', - 'scion', - 'scoff', - 'scold', - 'scone', - 'scoop', - 'scope', - 'score', - 'scorn', - 'scour', - 'scout', - 'scowl', - 'scram', - 'scrap', - 'scree', - 'screw', - 'scrub', - 'scrum', - 'scuba', - 'sedan', - 'seedy', - 'segue', - 'seize', - 'semen', - 'sense', - 'sepia', - 'serif', - 'serum', - 'serve', - 'setup', - 'seven', - 'sever', - 'sewer', - 'shack', - 'shade', - 'shady', - 'shaft', - 'shake', - 'shaky', - 'shale', - 'shall', - 'shalt', - 'shame', - 'shank', - 'shape', - 'shard', - 'share', - 'shark', - 'sharp', - 'shave', - 'shawl', - 'shear', - 'sheen', - 'sheep', - 'sheer', - 'sheet', - 'sheik', - 'shelf', - 'shell', - 'shied', - 'shift', - 'shine', - 'shiny', - 'shire', - 'shirk', - 'shirt', - 'shoal', - 'shock', - 'shone', - 'shook', - 'shoot', - 'shore', - 'shorn', - 'short', - 'shout', - 'shove', - 'shown', - 'showy', - 'shrew', - 'shrub', - 'shrug', - 'shuck', - 'shunt', - 'shush', - 'shyly', - 'siege', - 'sieve', - 'sight', - 'sigma', - 'silky', - 'silly', - 'since', - 'sinew', - 'singe', - 'siren', - 'sissy', - 'sixth', - 'sixty', - 'skate', - 'skier', - 'skiff', - 'skill', - 'skimp', - 'skirt', - 'skulk', - 'skull', - 'skunk', - 'slack', - 'slain', - 'slang', - 'slant', - 'slash', - 'slate', - 'slave', - 'sleek', - 'sleep', - 'sleet', - 'slept', - 'slice', - 'slick', - 'slide', - 'slime', - 'slimy', - 'sling', - 'slink', - 'sloop', - 'slope', - 'slosh', - 'sloth', - 'slump', - 'slung', - 'slunk', - 'slurp', - 'slush', - 'slyly', - 'smack', - 'small', - 'smart', - 'smash', - 'smear', - 'smell', - 'smelt', - 'smile', - 'smirk', - 'smite', - 'smith', - 'smock', - 'smoke', - 'smoky', - 'smote', - 'snack', - 'snail', - 'snake', - 'snaky', - 'snare', - 'snarl', - 'sneak', - 'sneer', - 'snide', - 'sniff', - 'snipe', - 'snoop', - 'snore', - 'snort', - 'snout', - 'snowy', - 'snuck', - 'snuff', - 'soapy', - 'sober', - 'soggy', - 'solar', - 'solid', - 'solve', - 'sonar', - 'sonic', - 'sooth', - 'sooty', - 'sorry', - 'sound', - 'south', - 'sower', - 'space', - 'spade', - 'spank', - 'spare', - 'spark', - 'spasm', - 'spawn', - 'speak', - 'spear', - 'speck', - 'speed', - 'spell', - 'spelt', - 'spend', - 'spent', - 'sperm', - 'spice', - 'spicy', - 'spied', - 'spiel', - 'spike', - 'spiky', - 'spill', - 'spilt', - 'spine', - 'spiny', - 'spire', - 'spite', - 'splat', - 'split', - 'spoil', - 'spoke', - 'spoof', - 'spook', - 'spool', - 'spoon', - 'spore', - 'sport', - 'spout', - 'spray', - 'spree', - 'sprig', - 'spunk', - 'spurn', - 'spurt', - 'squad', - 'squat', - 'squib', - 'stack', - 'staff', - 'stage', - 'staid', - 'stain', - 'stair', - 'stake', - 'stale', - 'stalk', - 'stall', - 'stamp', - 'stand', - 'stank', - 'stare', - 'stark', - 'start', - 'stash', - 'state', - 'stave', - 'stead', - 'steak', - 'steal', - 'steam', - 'steed', - 'steel', - 'steep', - 'steer', - 'stein', - 'stern', - 'stick', - 'stiff', - 'still', - 'stilt', - 'sting', - 'stink', - 'stint', - 'stock', - 'stoic', - 'stoke', - 'stole', - 'stomp', - 'stone', - 'stony', - 'stood', - 'stool', - 'stoop', - 'store', - 'stork', - 'storm', - 'story', - 'stout', - 'stove', - 'strap', - 'straw', - 'stray', - 'strip', - 'strut', - 'stuck', - 'study', - 'stuff', - 'stump', - 'stung', - 'stunk', - 'stunt', - 'style', - 'suave', - 'sugar', - 'suing', - 'suite', - 'sulky', - 'sully', - 'sumac', - 'sunny', - 'super', - 'surer', - 'surge', - 'surly', - 'sushi', - 'swami', - 'swamp', - 'swarm', - 'swash', - 'swath', - 'swear', - 'sweat', - 'sweep', - 'sweet', - 'swell', - 'swept', - 'swift', - 'swill', - 'swine', - 'swing', - 'swirl', - 'swish', - 'swoon', - 'swoop', - 'sword', - 'swore', - 'sworn', - 'swung', - 'synod', - 'syrup', - 'tabby', - 'table', - 'taboo', - 'tacit', - 'tacky', - 'taffy', - 'taint', - 'taken', - 'taker', - 'tally', - 'talon', - 'tamer', - 'tango', - 'tangy', - 'taper', - 'tapir', - 'tardy', - 'tarot', - 'taste', - 'tasty', - 'tatty', - 'taunt', - 'tawny', - 'teach', - 'teary', - 'tease', - 'teddy', - 'teeth', - 'tempo', - 'tenet', - 'tenor', - 'tense', - 'tenth', - 'tepee', - 'tepid', - 'terra', - 'terse', - 'testy', - 'thank', - 'theft', - 'their', - 'theme', - 'there', - 'these', - 'theta', - 'thick', - 'thief', - 'thigh', - 'thing', - 'think', - 'third', - 'thong', - 'thorn', - 'those', - 'three', - 'threw', - 'throb', - 'throw', - 'thrum', - 'thumb', - 'thump', - 'thyme', - 'tiara', - 'tibia', - 'tidal', - 'tiger', - 'tight', - 'tilde', - 'timer', - 'timid', - 'tipsy', - 'titan', - 'tithe', - 'title', - 'toast', - 'today', - 'toddy', - 'token', - 'tonal', - 'tonga', - 'tonic', - 'tooth', - 'topaz', - 'topic', - 'torch', - 'torso', - 'torus', - 'total', - 'totem', - 'touch', - 'tough', - 'towel', - 'tower', - 'toxic', - 'toxin', - 'trace', - 'track', - 'tract', - 'trade', - 'trail', - 'train', - 'trait', - 'tramp', - 'trash', - 'trawl', - 'tread', - 'treat', - 'trend', - 'triad', - 'trial', - 'tribe', - 'trice', - 'trick', - 'tried', - 'tripe', - 'trite', - 'troll', - 'troop', - 'trope', - 'trout', - 'trove', - 'truce', - 'truck', - 'truer', - 'truly', - 'trump', - 'trunk', - 'truss', - 'trust', - 'truth', - 'tryst', - 'tubal', - 'tuber', - 'tulip', - 'tulle', - 'tumor', - 'tunic', - 'turbo', - 'tutor', - 'twang', - 'tweak', - 'tweed', - 'tweet', - 'twice', - 'twine', - 'twirl', - 'twist', - 'twixt', - 'tying', - 'udder', - 'ulcer', - 'ultra', - 'umbra', - 'uncle', - 'uncut', - 'under', - 'undid', - 'undue', - 'unfed', - 'unfit', - 'unify', - 'union', - 'unite', - 'unity', - 'unlit', - 'unmet', - 'unset', - 'untie', - 'until', - 'unwed', - 'unzip', - 'upper', - 'upset', - 'urban', - 'urine', - 'usage', - 'usher', - 'using', - 'usual', - 'usurp', - 'utile', - 'utter', - 'vague', - 'valet', - 'valid', - 'valor', - 'value', - 'valve', - 'vapid', - 'vapor', - 'vault', - 'vaunt', - 'vegan', - 'venom', - 'venue', - 'verge', - 'verse', - 'verso', - 'verve', - 'vicar', - 'video', - 'vigil', - 'vigor', - 'villa', - 'vinyl', - 'viola', - 'viper', - 'viral', - 'virus', - 'visit', - 'visor', - 'vista', - 'vital', - 'vivid', - 'vixen', - 'vocal', - 'vodka', - 'vogue', - 'voice', - 'voila', - 'vomit', - 'voter', - 'vouch', - 'vowel', - 'vying', - 'wacky', - 'wafer', - 'wager', - 'wagon', - 'waist', - 'waive', - 'waltz', - 'warty', - 'waste', - 'watch', - 'water', - 'waver', - 'waxen', - 'weary', - 'weave', - 'wedge', - 'weedy', - 'weigh', - 'weird', - 'welch', - 'welsh', - 'wench', - 'whack', - 'whale', - 'wharf', - 'wheat', - 'wheel', - 'whelp', - 'where', - 'which', - 'whiff', - 'while', - 'whine', - 'whiny', - 'whirl', - 'whisk', - 'white', - 'whole', - 'whoop', - 'whose', - 'widen', - 'wider', - 'widow', - 'width', - 'wield', - 'wight', - 'willy', - 'wimpy', - 'wince', - 'winch', - 'windy', - 'wiser', - 'wispy', - 'witch', - 'witty', - 'woken', - 'woman', - 'women', - 'woody', - 'wooer', - 'wooly', - 'woozy', - 'wordy', - 'world', - 'worry', - 'worse', - 'worst', - 'worth', - 'would', - 'wound', - 'woven', - 'wrack', - 'wrath', - 'wreak', - 'wreck', - 'wrest', - 'wring', - 'wrist', - 'write', - 'wrong', - 'wrote', - 'wrung', - 'wryly', - 'yacht', - 'yearn', - 'yeast', - 'yield', - 'young', - 'youth', - 'zebra', - 'zesty', - 'zonal' -]; - -/** The list of valid guesses, of which the list of possible words is a subset */ -export const allowed = new Set([ - ...words, - 'aahed', - 'aalii', - 'aargh', - 'aarti', - 'abaca', - 'abaci', - 'abacs', - 'abaft', - 'abaka', - 'abamp', - 'aband', - 'abash', - 'abask', - 'abaya', - 'abbas', - 'abbed', - 'abbes', - 'abcee', - 'abeam', - 'abear', - 'abele', - 'abers', - 'abets', - 'abies', - 'abler', - 'ables', - 'ablet', - 'ablow', - 'abmho', - 'abohm', - 'aboil', - 'aboma', - 'aboon', - 'abord', - 'abore', - 'abram', - 'abray', - 'abrim', - 'abrin', - 'abris', - 'absey', - 'absit', - 'abuna', - 'abune', - 'abuts', - 'abuzz', - 'abyes', - 'abysm', - 'acais', - 'acari', - 'accas', - 'accoy', - 'acerb', - 'acers', - 'aceta', - 'achar', - 'ached', - 'aches', - 'achoo', - 'acids', - 'acidy', - 'acing', - 'acini', - 'ackee', - 'acker', - 'acmes', - 'acmic', - 'acned', - 'acnes', - 'acock', - 'acold', - 'acred', - 'acres', - 'acros', - 'acted', - 'actin', - 'acton', - 'acyls', - 'adaws', - 'adays', - 'adbot', - 'addax', - 'added', - 'adder', - 'addio', - 'addle', - 'adeem', - 'adhan', - 'adieu', - 'adios', - 'adits', - 'adman', - 'admen', - 'admix', - 'adobo', - 'adown', - 'adoze', - 'adrad', - 'adred', - 'adsum', - 'aduki', - 'adunc', - 'adust', - 'advew', - 'adyta', - 'adzed', - 'adzes', - 'aecia', - 'aedes', - 'aegis', - 'aeons', - 'aerie', - 'aeros', - 'aesir', - 'afald', - 'afara', - 'afars', - 'afear', - 'aflaj', - 'afore', - 'afrit', - 'afros', - 'agama', - 'agami', - 'agars', - 'agast', - 'agave', - 'agaze', - 'agene', - 'agers', - 'agger', - 'aggie', - 'aggri', - 'aggro', - 'aggry', - 'aghas', - 'agila', - 'agios', - 'agism', - 'agist', - 'agita', - 'aglee', - 'aglet', - 'agley', - 'agloo', - 'aglus', - 'agmas', - 'agoge', - 'agone', - 'agons', - 'agood', - 'agria', - 'agrin', - 'agros', - 'agued', - 'agues', - 'aguna', - 'aguti', - 'aheap', - 'ahent', - 'ahigh', - 'ahind', - 'ahing', - 'ahint', - 'ahold', - 'ahull', - 'ahuru', - 'aidas', - 'aided', - 'aides', - 'aidoi', - 'aidos', - 'aiery', - 'aigas', - 'aight', - 'ailed', - 'aimed', - 'aimer', - 'ainee', - 'ainga', - 'aioli', - 'aired', - 'airer', - 'airns', - 'airth', - 'airts', - 'aitch', - 'aitus', - 'aiver', - 'aiyee', - 'aizle', - 'ajies', - 'ajiva', - 'ajuga', - 'ajwan', - 'akees', - 'akela', - 'akene', - 'aking', - 'akita', - 'akkas', - 'alaap', - 'alack', - 'alamo', - 'aland', - 'alane', - 'alang', - 'alans', - 'alant', - 'alapa', - 'alaps', - 'alary', - 'alate', - 'alays', - 'albas', - 'albee', - 'alcid', - 'alcos', - 'aldea', - 'alder', - 'aldol', - 'aleck', - 'alecs', - 'alefs', - 'aleft', - 'aleph', - 'alews', - 'aleye', - 'alfas', - 'algal', - 'algas', - 'algid', - 'algin', - 'algor', - 'algum', - 'alias', - 'alifs', - 'aline', - 'alist', - 'aliya', - 'alkie', - 'alkos', - 'alkyd', - 'alkyl', - 'allee', - 'allel', - 'allis', - 'allod', - 'allyl', - 'almah', - 'almas', - 'almeh', - 'almes', - 'almud', - 'almug', - 'alods', - 'aloed', - 'aloes', - 'aloha', - 'aloin', - 'aloos', - 'alowe', - 'altho', - 'altos', - 'alula', - 'alums', - 'alure', - 'alvar', - 'alway', - 'amahs', - 'amain', - 'amate', - 'amaut', - 'amban', - 'ambit', - 'ambos', - 'ambry', - 'ameba', - 'ameer', - 'amene', - 'amens', - 'ament', - 'amias', - 'amice', - 'amici', - 'amide', - 'amido', - 'amids', - 'amies', - 'amiga', - 'amigo', - 'amine', - 'amino', - 'amins', - 'amirs', - 'amlas', - 'amman', - 'ammon', - 'ammos', - 'amnia', - 'amnic', - 'amnio', - 'amoks', - 'amole', - 'amort', - 'amour', - 'amove', - 'amowt', - 'amped', - 'ampul', - 'amrit', - 'amuck', - 'amyls', - 'anana', - 'anata', - 'ancho', - 'ancle', - 'ancon', - 'andro', - 'anear', - 'anele', - 'anent', - 'angas', - 'anglo', - 'anigh', - 'anile', - 'anils', - 'anima', - 'animi', - 'anion', - 'anise', - 'anker', - 'ankhs', - 'ankus', - 'anlas', - 'annal', - 'annas', - 'annat', - 'anoas', - 'anole', - 'anomy', - 'ansae', - 'antae', - 'antar', - 'antas', - 'anted', - 'antes', - 'antis', - 'antra', - 'antre', - 'antsy', - 'anura', - 'anyon', - 'apace', - 'apage', - 'apaid', - 'apayd', - 'apays', - 'apeak', - 'apeek', - 'apers', - 'apert', - 'apery', - 'apgar', - 'aphis', - 'apian', - 'apiol', - 'apish', - 'apism', - 'apode', - 'apods', - 'apoop', - 'aport', - 'appal', - 'appay', - 'appel', - 'appro', - 'appui', - 'appuy', - 'apres', - 'apses', - 'apsis', - 'apsos', - 'apted', - 'apter', - 'aquae', - 'aquas', - 'araba', - 'araks', - 'arame', - 'arars', - 'arbas', - 'arced', - 'archi', - 'arcos', - 'arcus', - 'ardeb', - 'ardri', - 'aread', - 'areae', - 'areal', - 'arear', - 'areas', - 'areca', - 'aredd', - 'arede', - 'arefy', - 'areic', - 'arene', - 'arepa', - 'arere', - 'arete', - 'arets', - 'arett', - 'argal', - 'argan', - 'argil', - 'argle', - 'argol', - 'argon', - 'argot', - 'argus', - 'arhat', - 'arias', - 'ariel', - 'ariki', - 'arils', - 'ariot', - 'arish', - 'arked', - 'arled', - 'arles', - 'armed', - 'armer', - 'armet', - 'armil', - 'arnas', - 'arnut', - 'aroba', - 'aroha', - 'aroid', - 'arpas', - 'arpen', - 'arrah', - 'arras', - 'arret', - 'arris', - 'arroz', - 'arsed', - 'arses', - 'arsey', - 'arsis', - 'artal', - 'artel', - 'artic', - 'artis', - 'aruhe', - 'arums', - 'arval', - 'arvee', - 'arvos', - 'aryls', - 'asana', - 'ascon', - 'ascus', - 'asdic', - 'ashed', - 'ashes', - 'ashet', - 'asked', - 'asker', - 'askoi', - 'askos', - 'aspen', - 'asper', - 'aspic', - 'aspie', - 'aspis', - 'aspro', - 'assai', - 'assam', - 'asses', - 'assez', - 'assot', - 'aster', - 'astir', - 'astun', - 'asura', - 'asway', - 'aswim', - 'asyla', - 'ataps', - 'ataxy', - 'atigi', - 'atilt', - 'atimy', - 'atlas', - 'atman', - 'atmas', - 'atmos', - 'atocs', - 'atoke', - 'atoks', - 'atoms', - 'atomy', - 'atony', - 'atopy', - 'atria', - 'atrip', - 'attap', - 'attar', - 'atuas', - 'audad', - 'auger', - 'aught', - 'aulas', - 'aulic', - 'auloi', - 'aulos', - 'aumil', - 'aunes', - 'aunts', - 'aurae', - 'aural', - 'aurar', - 'auras', - 'aurei', - 'aures', - 'auric', - 'auris', - 'aurum', - 'autos', - 'auxin', - 'avale', - 'avant', - 'avast', - 'avels', - 'avens', - 'avers', - 'avgas', - 'avine', - 'avion', - 'avise', - 'aviso', - 'avize', - 'avows', - 'avyze', - 'awarn', - 'awato', - 'awave', - 'aways', - 'awdls', - 'aweel', - 'aweto', - 'awing', - 'awmry', - 'awned', - 'awner', - 'awols', - 'awork', - 'axels', - 'axile', - 'axils', - 'axing', - 'axite', - 'axled', - 'axles', - 'axman', - 'axmen', - 'axoid', - 'axone', - 'axons', - 'ayahs', - 'ayaya', - 'ayelp', - 'aygre', - 'ayins', - 'ayont', - 'ayres', - 'ayrie', - 'azans', - 'azide', - 'azido', - 'azine', - 'azlon', - 'azoic', - 'azole', - 'azons', - 'azote', - 'azoth', - 'azuki', - 'azurn', - 'azury', - 'azygy', - 'azyme', - 'azyms', - 'baaed', - 'baals', - 'babas', - 'babel', - 'babes', - 'babka', - 'baboo', - 'babul', - 'babus', - 'bacca', - 'bacco', - 'baccy', - 'bacha', - 'bachs', - 'backs', - 'baddy', - 'baels', - 'baffs', - 'baffy', - 'bafts', - 'baghs', - 'bagie', - 'bahts', - 'bahus', - 'bahut', - 'bails', - 'bairn', - 'baisa', - 'baith', - 'baits', - 'baiza', - 'baize', - 'bajan', - 'bajra', - 'bajri', - 'bajus', - 'baked', - 'baken', - 'bakes', - 'bakra', - 'balas', - 'balds', - 'baldy', - 'baled', - 'bales', - 'balks', - 'balky', - 'balls', - 'bally', - 'balms', - 'baloo', - 'balsa', - 'balti', - 'balun', - 'balus', - 'bambi', - 'banak', - 'banco', - 'bancs', - 'banda', - 'bandh', - 'bands', - 'bandy', - 'baned', - 'banes', - 'bangs', - 'bania', - 'banks', - 'banns', - 'bants', - 'bantu', - 'banty', - 'banya', - 'bapus', - 'barbe', - 'barbs', - 'barby', - 'barca', - 'barde', - 'bardo', - 'bards', - 'bardy', - 'bared', - 'barer', - 'bares', - 'barfi', - 'barfs', - 'baric', - 'barks', - 'barky', - 'barms', - 'barmy', - 'barns', - 'barny', - 'barps', - 'barra', - 'barre', - 'barro', - 'barry', - 'barye', - 'basan', - 'based', - 'basen', - 'baser', - 'bases', - 'basho', - 'basij', - 'basks', - 'bason', - 'basse', - 'bassi', - 'basso', - 'bassy', - 'basta', - 'basti', - 'basto', - 'basts', - 'bated', - 'bates', - 'baths', - 'batik', - 'batta', - 'batts', - 'battu', - 'bauds', - 'bauks', - 'baulk', - 'baurs', - 'bavin', - 'bawds', - 'bawks', - 'bawls', - 'bawns', - 'bawrs', - 'bawty', - 'bayed', - 'bayer', - 'bayes', - 'bayle', - 'bayts', - 'bazar', - 'bazoo', - 'beads', - 'beaks', - 'beaky', - 'beals', - 'beams', - 'beamy', - 'beano', - 'beans', - 'beany', - 'beare', - 'bears', - 'beath', - 'beats', - 'beaty', - 'beaus', - 'beaut', - 'beaux', - 'bebop', - 'becap', - 'becke', - 'becks', - 'bedad', - 'bedel', - 'bedes', - 'bedew', - 'bedim', - 'bedye', - 'beedi', - 'beefs', - 'beeps', - 'beers', - 'beery', - 'beets', - 'befog', - 'begad', - 'begar', - 'begem', - 'begot', - 'begum', - 'beige', - 'beigy', - 'beins', - 'bekah', - 'belah', - 'belar', - 'belay', - 'belee', - 'belga', - 'bells', - 'belon', - 'belts', - 'bemad', - 'bemas', - 'bemix', - 'bemud', - 'bends', - 'bendy', - 'benes', - 'benet', - 'benga', - 'benis', - 'benne', - 'benni', - 'benny', - 'bento', - 'bents', - 'benty', - 'bepat', - 'beray', - 'beres', - 'bergs', - 'berko', - 'berks', - 'berme', - 'berms', - 'berob', - 'beryl', - 'besat', - 'besaw', - 'besee', - 'beses', - 'besit', - 'besom', - 'besot', - 'besti', - 'bests', - 'betas', - 'beted', - 'betes', - 'beths', - 'betid', - 'beton', - 'betta', - 'betty', - 'bever', - 'bevor', - 'bevue', - 'bevvy', - 'bewet', - 'bewig', - 'bezes', - 'bezil', - 'bezzy', - 'bhais', - 'bhaji', - 'bhang', - 'bhats', - 'bhels', - 'bhoot', - 'bhuna', - 'bhuts', - 'biach', - 'biali', - 'bialy', - 'bibbs', - 'bibes', - 'biccy', - 'bices', - 'bided', - 'bider', - 'bides', - 'bidet', - 'bidis', - 'bidon', - 'bield', - 'biers', - 'biffo', - 'biffs', - 'biffy', - 'bifid', - 'bigae', - 'biggs', - 'biggy', - 'bigha', - 'bight', - 'bigly', - 'bigos', - 'bijou', - 'biked', - 'biker', - 'bikes', - 'bikie', - 'bilbo', - 'bilby', - 'biled', - 'biles', - 'bilgy', - 'bilks', - 'bills', - 'bimah', - 'bimas', - 'bimbo', - 'binal', - 'bindi', - 'binds', - 'biner', - 'bines', - 'bings', - 'bingy', - 'binit', - 'binks', - 'bints', - 'biogs', - 'biont', - 'biota', - 'biped', - 'bipod', - 'birds', - 'birks', - 'birle', - 'birls', - 'biros', - 'birrs', - 'birse', - 'birsy', - 'bises', - 'bisks', - 'bisom', - 'bitch', - 'biter', - 'bites', - 'bitos', - 'bitou', - 'bitsy', - 'bitte', - 'bitts', - 'bivia', - 'bivvy', - 'bizes', - 'bizzo', - 'bizzy', - 'blabs', - 'blads', - 'blady', - 'blaer', - 'blaes', - 'blaff', - 'blags', - 'blahs', - 'blain', - 'blams', - 'blart', - 'blase', - 'blash', - 'blate', - 'blats', - 'blatt', - 'blaud', - 'blawn', - 'blaws', - 'blays', - 'blear', - 'blebs', - 'blech', - 'blees', - 'blent', - 'blert', - 'blest', - 'blets', - 'bleys', - 'blimy', - 'bling', - 'blini', - 'blins', - 'bliny', - 'blips', - 'blist', - 'blite', - 'blits', - 'blive', - 'blobs', - 'blocs', - 'blogs', - 'blook', - 'bloop', - 'blore', - 'blots', - 'blows', - 'blowy', - 'blubs', - 'blude', - 'bluds', - 'bludy', - 'blued', - 'blues', - 'bluet', - 'bluey', - 'bluid', - 'blume', - 'blunk', - 'blurs', - 'blype', - 'boabs', - 'boaks', - 'boars', - 'boart', - 'boats', - 'bobac', - 'bobak', - 'bobas', - 'bobol', - 'bobos', - 'bocca', - 'bocce', - 'bocci', - 'boche', - 'bocks', - 'boded', - 'bodes', - 'bodge', - 'bodhi', - 'bodle', - 'boeps', - 'boets', - 'boeuf', - 'boffo', - 'boffs', - 'bogan', - 'bogey', - 'boggy', - 'bogie', - 'bogle', - 'bogue', - 'bogus', - 'bohea', - 'bohos', - 'boils', - 'boing', - 'boink', - 'boite', - 'boked', - 'bokeh', - 'bokes', - 'bokos', - 'bolar', - 'bolas', - 'bolds', - 'boles', - 'bolix', - 'bolls', - 'bolos', - 'bolts', - 'bolus', - 'bomas', - 'bombe', - 'bombo', - 'bombs', - 'bonce', - 'bonds', - 'boned', - 'boner', - 'bones', - 'bongs', - 'bonie', - 'bonks', - 'bonne', - 'bonny', - 'bonza', - 'bonze', - 'booai', - 'booay', - 'boobs', - 'boody', - 'booed', - 'boofy', - 'boogy', - 'boohs', - 'books', - 'booky', - 'bools', - 'booms', - 'boomy', - 'boong', - 'boons', - 'boord', - 'boors', - 'boose', - 'boots', - 'boppy', - 'borak', - 'boral', - 'boras', - 'borde', - 'bords', - 'bored', - 'boree', - 'borel', - 'borer', - 'bores', - 'borgo', - 'boric', - 'borks', - 'borms', - 'borna', - 'boron', - 'borts', - 'borty', - 'bortz', - 'bosie', - 'bosks', - 'bosky', - 'boson', - 'bosun', - 'botas', - 'botel', - 'botes', - 'bothy', - 'botte', - 'botts', - 'botty', - 'bouge', - 'bouks', - 'boult', - 'bouns', - 'bourd', - 'bourg', - 'bourn', - 'bouse', - 'bousy', - 'bouts', - 'bovid', - 'bowat', - 'bowed', - 'bower', - 'bowes', - 'bowet', - 'bowie', - 'bowls', - 'bowne', - 'bowrs', - 'bowse', - 'boxed', - 'boxen', - 'boxes', - 'boxla', - 'boxty', - 'boyar', - 'boyau', - 'boyed', - 'boyfs', - 'boygs', - 'boyla', - 'boyos', - 'boysy', - 'bozos', - 'braai', - 'brach', - 'brack', - 'bract', - 'brads', - 'braes', - 'brags', - 'brail', - 'braks', - 'braky', - 'brame', - 'brane', - 'brank', - 'brans', - 'brant', - 'brast', - 'brats', - 'brava', - 'bravi', - 'braws', - 'braxy', - 'brays', - 'braza', - 'braze', - 'bream', - 'brede', - 'breds', - 'breem', - 'breer', - 'brees', - 'breid', - 'breis', - 'breme', - 'brens', - 'brent', - 'brere', - 'brers', - 'breve', - 'brews', - 'breys', - 'brier', - 'bries', - 'brigs', - 'briki', - 'briks', - 'brill', - 'brims', - 'brins', - 'brios', - 'brise', - 'briss', - 'brith', - 'brits', - 'britt', - 'brize', - 'broch', - 'brock', - 'brods', - 'brogh', - 'brogs', - 'brome', - 'bromo', - 'bronc', - 'brond', - 'brool', - 'broos', - 'brose', - 'brosy', - 'brows', - 'brugh', - 'bruin', - 'bruit', - 'brule', - 'brume', - 'brung', - 'brusk', - 'brust', - 'bruts', - 'buats', - 'buaze', - 'bubal', - 'bubas', - 'bubba', - 'bubbe', - 'bubby', - 'bubus', - 'buchu', - 'bucko', - 'bucks', - 'bucku', - 'budas', - 'budis', - 'budos', - 'buffa', - 'buffe', - 'buffi', - 'buffo', - 'buffs', - 'buffy', - 'bufos', - 'bufty', - 'buhls', - 'buhrs', - 'buiks', - 'buist', - 'bukes', - 'bulbs', - 'bulgy', - 'bulks', - 'bulla', - 'bulls', - 'bulse', - 'bumbo', - 'bumfs', - 'bumph', - 'bumps', - 'bumpy', - 'bunas', - 'bunce', - 'bunco', - 'bunde', - 'bundh', - 'bunds', - 'bundt', - 'bundu', - 'bundy', - 'bungs', - 'bungy', - 'bunia', - 'bunje', - 'bunjy', - 'bunko', - 'bunks', - 'bunns', - 'bunts', - 'bunty', - 'bunya', - 'buoys', - 'buppy', - 'buran', - 'buras', - 'burbs', - 'burds', - 'buret', - 'burfi', - 'burgh', - 'burgs', - 'burin', - 'burka', - 'burke', - 'burks', - 'burls', - 'burns', - 'buroo', - 'burps', - 'burqa', - 'burro', - 'burrs', - 'burry', - 'bursa', - 'burse', - 'busby', - 'buses', - 'busks', - 'busky', - 'bussu', - 'busti', - 'busts', - 'busty', - 'buteo', - 'butes', - 'butle', - 'butoh', - 'butts', - 'butty', - 'butut', - 'butyl', - 'buzzy', - 'bwana', - 'bwazi', - 'byded', - 'bydes', - 'byked', - 'bykes', - 'byres', - 'byrls', - 'byssi', - 'bytes', - 'byway', - 'caaed', - 'cabas', - 'caber', - 'cabob', - 'caboc', - 'cabre', - 'cacas', - 'cacks', - 'cacky', - 'cadee', - 'cades', - 'cadge', - 'cadgy', - 'cadie', - 'cadis', - 'cadre', - 'caeca', - 'caese', - 'cafes', - 'caffs', - 'caged', - 'cager', - 'cages', - 'cagot', - 'cahow', - 'caids', - 'cains', - 'caird', - 'cajon', - 'cajun', - 'caked', - 'cakes', - 'cakey', - 'calfs', - 'calid', - 'calif', - 'calix', - 'calks', - 'calla', - 'calls', - 'calms', - 'calmy', - 'calos', - 'calpa', - 'calps', - 'calve', - 'calyx', - 'caman', - 'camas', - 'cames', - 'camis', - 'camos', - 'campi', - 'campo', - 'camps', - 'campy', - 'camus', - 'caned', - 'caneh', - 'caner', - 'canes', - 'cangs', - 'canid', - 'canna', - 'canns', - 'canso', - 'canst', - 'canto', - 'cants', - 'canty', - 'capas', - 'caped', - 'capes', - 'capex', - 'caphs', - 'capiz', - 'caple', - 'capon', - 'capos', - 'capot', - 'capri', - 'capul', - 'carap', - 'carbo', - 'carbs', - 'carby', - 'cardi', - 'cards', - 'cardy', - 'cared', - 'carer', - 'cares', - 'caret', - 'carex', - 'carks', - 'carle', - 'carls', - 'carns', - 'carny', - 'carob', - 'carom', - 'caron', - 'carpi', - 'carps', - 'carrs', - 'carse', - 'carta', - 'carte', - 'carts', - 'carvy', - 'casas', - 'casco', - 'cased', - 'cases', - 'casks', - 'casky', - 'casts', - 'casus', - 'cates', - 'cauda', - 'cauks', - 'cauld', - 'cauls', - 'caums', - 'caups', - 'cauri', - 'causa', - 'cavas', - 'caved', - 'cavel', - 'caver', - 'caves', - 'cavie', - 'cawed', - 'cawks', - 'caxon', - 'ceaze', - 'cebid', - 'cecal', - 'cecum', - 'ceded', - 'ceder', - 'cedes', - 'cedis', - 'ceiba', - 'ceili', - 'ceils', - 'celeb', - 'cella', - 'celli', - 'cells', - 'celom', - 'celts', - 'cense', - 'cento', - 'cents', - 'centu', - 'ceorl', - 'cepes', - 'cerci', - 'cered', - 'ceres', - 'cerge', - 'ceria', - 'ceric', - 'cerne', - 'ceroc', - 'ceros', - 'certs', - 'certy', - 'cesse', - 'cesta', - 'cesti', - 'cetes', - 'cetyl', - 'cezve', - 'chace', - 'chack', - 'chaco', - 'chado', - 'chads', - 'chaft', - 'chais', - 'chals', - 'chams', - 'chana', - 'chang', - 'chank', - 'chape', - 'chaps', - 'chapt', - 'chara', - 'chare', - 'chark', - 'charr', - 'chars', - 'chary', - 'chats', - 'chave', - 'chavs', - 'chawk', - 'chaws', - 'chaya', - 'chays', - 'cheep', - 'chefs', - 'cheka', - 'chela', - 'chelp', - 'chemo', - 'chems', - 'chere', - 'chert', - 'cheth', - 'chevy', - 'chews', - 'chewy', - 'chiao', - 'chias', - 'chibs', - 'chica', - 'chich', - 'chico', - 'chics', - 'chiel', - 'chiks', - 'chile', - 'chimb', - 'chimo', - 'chimp', - 'chine', - 'ching', - 'chink', - 'chino', - 'chins', - 'chips', - 'chirk', - 'chirl', - 'chirm', - 'chiro', - 'chirr', - 'chirt', - 'chiru', - 'chits', - 'chive', - 'chivs', - 'chivy', - 'chizz', - 'choco', - 'chocs', - 'chode', - 'chogs', - 'choil', - 'choko', - 'choky', - 'chola', - 'choli', - 'cholo', - 'chomp', - 'chons', - 'choof', - 'chook', - 'choom', - 'choon', - 'chops', - 'chota', - 'chott', - 'chout', - 'choux', - 'chowk', - 'chows', - 'chubs', - 'chufa', - 'chuff', - 'chugs', - 'chums', - 'churl', - 'churr', - 'chuse', - 'chuts', - 'chyle', - 'chyme', - 'chynd', - 'cibol', - 'cided', - 'cides', - 'ciels', - 'ciggy', - 'cilia', - 'cills', - 'cimar', - 'cimex', - 'cinct', - 'cines', - 'cinqs', - 'cions', - 'cippi', - 'circs', - 'cires', - 'cirls', - 'cirri', - 'cisco', - 'cissy', - 'cists', - 'cital', - 'cited', - 'citer', - 'cites', - 'cives', - 'civet', - 'civie', - 'civvy', - 'clach', - 'clade', - 'clads', - 'claes', - 'clags', - 'clame', - 'clams', - 'clans', - 'claps', - 'clapt', - 'claro', - 'clart', - 'clary', - 'clast', - 'clats', - 'claut', - 'clave', - 'clavi', - 'claws', - 'clays', - 'cleck', - 'cleek', - 'cleep', - 'clefs', - 'clegs', - 'cleik', - 'clems', - 'clepe', - 'clept', - 'cleve', - 'clews', - 'clied', - 'clies', - 'clift', - 'clime', - 'cline', - 'clint', - 'clipe', - 'clips', - 'clipt', - 'clits', - 'cloam', - 'clods', - 'cloff', - 'clogs', - 'cloke', - 'clomb', - 'clomp', - 'clonk', - 'clons', - 'cloop', - 'cloot', - 'clops', - 'clote', - 'clots', - 'clour', - 'clous', - 'clows', - 'cloye', - 'cloys', - 'cloze', - 'clubs', - 'clues', - 'cluey', - 'clunk', - 'clype', - 'cnida', - 'coact', - 'coady', - 'coala', - 'coals', - 'coaly', - 'coapt', - 'coarb', - 'coate', - 'coati', - 'coats', - 'cobbs', - 'cobby', - 'cobia', - 'coble', - 'cobza', - 'cocas', - 'cocci', - 'cocco', - 'cocks', - 'cocky', - 'cocos', - 'codas', - 'codec', - 'coded', - 'coden', - 'coder', - 'codes', - 'codex', - 'codon', - 'coeds', - 'coffs', - 'cogie', - 'cogon', - 'cogue', - 'cohab', - 'cohen', - 'cohoe', - 'cohog', - 'cohos', - 'coifs', - 'coign', - 'coils', - 'coins', - 'coirs', - 'coits', - 'coked', - 'cokes', - 'colas', - 'colby', - 'colds', - 'coled', - 'coles', - 'coley', - 'colic', - 'colin', - 'colls', - 'colly', - 'colog', - 'colts', - 'colza', - 'comae', - 'comal', - 'comas', - 'combe', - 'combi', - 'combo', - 'combs', - 'comby', - 'comer', - 'comes', - 'comix', - 'commo', - 'comms', - 'commy', - 'compo', - 'comps', - 'compt', - 'comte', - 'comus', - 'coned', - 'cones', - 'coney', - 'confs', - 'conga', - 'conge', - 'congo', - 'conia', - 'conin', - 'conks', - 'conky', - 'conne', - 'conns', - 'conte', - 'conto', - 'conus', - 'convo', - 'cooch', - 'cooed', - 'cooee', - 'cooer', - 'cooey', - 'coofs', - 'cooks', - 'cooky', - 'cools', - 'cooly', - 'coomb', - 'cooms', - 'coomy', - 'coons', - 'coops', - 'coopt', - 'coost', - 'coots', - 'cooze', - 'copal', - 'copay', - 'coped', - 'copen', - 'coper', - 'copes', - 'coppy', - 'copra', - 'copsy', - 'coqui', - 'coram', - 'corbe', - 'corby', - 'cords', - 'cored', - 'cores', - 'corey', - 'corgi', - 'coria', - 'corks', - 'corky', - 'corms', - 'corni', - 'corno', - 'corns', - 'cornu', - 'corps', - 'corse', - 'corso', - 'cosec', - 'cosed', - 'coses', - 'coset', - 'cosey', - 'cosie', - 'costa', - 'coste', - 'costs', - 'cotan', - 'coted', - 'cotes', - 'coths', - 'cotta', - 'cotts', - 'coude', - 'coups', - 'courb', - 'courd', - 'coure', - 'cours', - 'couta', - 'couth', - 'coved', - 'coves', - 'covin', - 'cowal', - 'cowan', - 'cowed', - 'cowks', - 'cowls', - 'cowps', - 'cowry', - 'coxae', - 'coxal', - 'coxed', - 'coxes', - 'coxib', - 'coyau', - 'coyed', - 'coyer', - 'coypu', - 'cozed', - 'cozen', - 'cozes', - 'cozey', - 'cozie', - 'craal', - 'crabs', - 'crags', - 'craic', - 'craig', - 'crake', - 'crame', - 'crams', - 'crans', - 'crape', - 'craps', - 'crapy', - 'crare', - 'craws', - 'crays', - 'creds', - 'creel', - 'crees', - 'crems', - 'crena', - 'creps', - 'crepy', - 'crewe', - 'crews', - 'crias', - 'cribs', - 'cries', - 'crims', - 'crine', - 'crios', - 'cripe', - 'crips', - 'crise', - 'crith', - 'crits', - 'croci', - 'crocs', - 'croft', - 'crogs', - 'cromb', - 'crome', - 'cronk', - 'crons', - 'crool', - 'croon', - 'crops', - 'crore', - 'crost', - 'crout', - 'crows', - 'croze', - 'cruck', - 'crudo', - 'cruds', - 'crudy', - 'crues', - 'cruet', - 'cruft', - 'crunk', - 'cruor', - 'crura', - 'cruse', - 'crusy', - 'cruve', - 'crwth', - 'cryer', - 'ctene', - 'cubby', - 'cubeb', - 'cubed', - 'cuber', - 'cubes', - 'cubit', - 'cuddy', - 'cuffo', - 'cuffs', - 'cuifs', - 'cuing', - 'cuish', - 'cuits', - 'cukes', - 'culch', - 'culet', - 'culex', - 'culls', - 'cully', - 'culms', - 'culpa', - 'culti', - 'cults', - 'culty', - 'cumec', - 'cundy', - 'cunei', - 'cunit', - 'cunts', - 'cupel', - 'cupid', - 'cuppa', - 'cuppy', - 'curat', - 'curbs', - 'curch', - 'curds', - 'curdy', - 'cured', - 'curer', - 'cures', - 'curet', - 'curfs', - 'curia', - 'curie', - 'curli', - 'curls', - 'curns', - 'curny', - 'currs', - 'cursi', - 'curst', - 'cusec', - 'cushy', - 'cusks', - 'cusps', - 'cuspy', - 'cusso', - 'cusum', - 'cutch', - 'cuter', - 'cutes', - 'cutey', - 'cutin', - 'cutis', - 'cutto', - 'cutty', - 'cutup', - 'cuvee', - 'cuzes', - 'cwtch', - 'cyano', - 'cyans', - 'cycad', - 'cycas', - 'cyclo', - 'cyder', - 'cylix', - 'cymae', - 'cymar', - 'cymas', - 'cymes', - 'cymol', - 'cysts', - 'cytes', - 'cyton', - 'czars', - 'daals', - 'dabba', - 'daces', - 'dacha', - 'dacks', - 'dadah', - 'dadas', - 'dados', - 'daffs', - 'daffy', - 'dagga', - 'daggy', - 'dagos', - 'dahls', - 'daiko', - 'daine', - 'daint', - 'daker', - 'daled', - 'dales', - 'dalis', - 'dalle', - 'dalts', - 'daman', - 'damar', - 'dames', - 'damme', - 'damns', - 'damps', - 'dampy', - 'dancy', - 'dangs', - 'danio', - 'danks', - 'danny', - 'dants', - 'daraf', - 'darbs', - 'darcy', - 'dared', - 'darer', - 'dares', - 'darga', - 'dargs', - 'daric', - 'daris', - 'darks', - 'darky', - 'darns', - 'darre', - 'darts', - 'darzi', - 'dashi', - 'dashy', - 'datal', - 'dated', - 'dater', - 'dates', - 'datos', - 'datto', - 'daube', - 'daubs', - 'dauby', - 'dauds', - 'dault', - 'daurs', - 'dauts', - 'daven', - 'davit', - 'dawah', - 'dawds', - 'dawed', - 'dawen', - 'dawks', - 'dawns', - 'dawts', - 'dayan', - 'daych', - 'daynt', - 'dazed', - 'dazer', - 'dazes', - 'deads', - 'deair', - 'deals', - 'deans', - 'deare', - 'dearn', - 'dears', - 'deary', - 'deash', - 'deave', - 'deaws', - 'deawy', - 'debag', - 'debby', - 'debel', - 'debes', - 'debts', - 'debud', - 'debur', - 'debus', - 'debye', - 'decad', - 'decaf', - 'decan', - 'decko', - 'decks', - 'decos', - 'dedal', - 'deeds', - 'deedy', - 'deely', - 'deems', - 'deens', - 'deeps', - 'deere', - 'deers', - 'deets', - 'deeve', - 'deevs', - 'defat', - 'deffo', - 'defis', - 'defog', - 'degas', - 'degum', - 'degus', - 'deice', - 'deids', - 'deify', - 'deils', - 'deism', - 'deist', - 'deked', - 'dekes', - 'dekko', - 'deled', - 'deles', - 'delfs', - 'delft', - 'delis', - 'dells', - 'delly', - 'delos', - 'delph', - 'delts', - 'deman', - 'demes', - 'demic', - 'demit', - 'demob', - 'demoi', - 'demos', - 'dempt', - 'denar', - 'denay', - 'dench', - 'denes', - 'denet', - 'denis', - 'dents', - 'deoxy', - 'derat', - 'deray', - 'dered', - 'deres', - 'derig', - 'derma', - 'derms', - 'derns', - 'derny', - 'deros', - 'derro', - 'derry', - 'derth', - 'dervs', - 'desex', - 'deshi', - 'desis', - 'desks', - 'desse', - 'devas', - 'devel', - 'devis', - 'devon', - 'devos', - 'devot', - 'dewan', - 'dewar', - 'dewax', - 'dewed', - 'dexes', - 'dexie', - 'dhaba', - 'dhaks', - 'dhals', - 'dhikr', - 'dhobi', - 'dhole', - 'dholl', - 'dhols', - 'dhoti', - 'dhows', - 'dhuti', - 'diact', - 'dials', - 'diane', - 'diazo', - 'dibbs', - 'diced', - 'dicer', - 'dices', - 'dicht', - 'dicks', - 'dicky', - 'dicot', - 'dicta', - 'dicts', - 'dicty', - 'diddy', - 'didie', - 'didos', - 'didst', - 'diebs', - 'diels', - 'diene', - 'diets', - 'diffs', - 'dight', - 'dikas', - 'diked', - 'diker', - 'dikes', - 'dikey', - 'dildo', - 'dilli', - 'dills', - 'dimbo', - 'dimer', - 'dimes', - 'dimps', - 'dinar', - 'dined', - 'dines', - 'dinge', - 'dings', - 'dinic', - 'dinks', - 'dinky', - 'dinna', - 'dinos', - 'dints', - 'diols', - 'diota', - 'dippy', - 'dipso', - 'diram', - 'direr', - 'dirke', - 'dirks', - 'dirls', - 'dirts', - 'disas', - 'disci', - 'discs', - 'dishy', - 'disks', - 'disme', - 'dital', - 'ditas', - 'dited', - 'dites', - 'ditsy', - 'ditts', - 'ditzy', - 'divan', - 'divas', - 'dived', - 'dives', - 'divis', - 'divna', - 'divos', - 'divot', - 'divvy', - 'diwan', - 'dixie', - 'dixit', - 'diyas', - 'dizen', - 'djinn', - 'djins', - 'doabs', - 'doats', - 'dobby', - 'dobes', - 'dobie', - 'dobla', - 'dobra', - 'dobro', - 'docht', - 'docks', - 'docos', - 'docus', - 'doddy', - 'dodos', - 'doeks', - 'doers', - 'doest', - 'doeth', - 'doffs', - 'dogan', - 'doges', - 'dogey', - 'doggo', - 'doggy', - 'dogie', - 'dohyo', - 'doilt', - 'doily', - 'doits', - 'dojos', - 'dolce', - 'dolci', - 'doled', - 'doles', - 'dolia', - 'dolls', - 'dolma', - 'dolor', - 'dolos', - 'dolts', - 'domal', - 'domed', - 'domes', - 'domic', - 'donah', - 'donas', - 'donee', - 'doner', - 'donga', - 'dongs', - 'donko', - 'donna', - 'donne', - 'donny', - 'donsy', - 'doobs', - 'dooce', - 'doody', - 'dooks', - 'doole', - 'dools', - 'dooly', - 'dooms', - 'doomy', - 'doona', - 'doorn', - 'doors', - 'doozy', - 'dopas', - 'doped', - 'doper', - 'dopes', - 'dorad', - 'dorba', - 'dorbs', - 'doree', - 'dores', - 'doric', - 'doris', - 'dorks', - 'dorky', - 'dorms', - 'dormy', - 'dorps', - 'dorrs', - 'dorsa', - 'dorse', - 'dorts', - 'dorty', - 'dosai', - 'dosas', - 'dosed', - 'doseh', - 'doser', - 'doses', - 'dosha', - 'dotal', - 'doted', - 'doter', - 'dotes', - 'dotty', - 'douar', - 'douce', - 'doucs', - 'douks', - 'doula', - 'douma', - 'doums', - 'doups', - 'doura', - 'douse', - 'douts', - 'doved', - 'doven', - 'dover', - 'doves', - 'dovie', - 'dowar', - 'dowds', - 'dowed', - 'dower', - 'dowie', - 'dowle', - 'dowls', - 'dowly', - 'downa', - 'downs', - 'dowps', - 'dowse', - 'dowts', - 'doxed', - 'doxes', - 'doxie', - 'doyen', - 'doyly', - 'dozed', - 'dozer', - 'dozes', - 'drabs', - 'drack', - 'draco', - 'draff', - 'drags', - 'drail', - 'drams', - 'drant', - 'draps', - 'drats', - 'drave', - 'draws', - 'drays', - 'drear', - 'dreck', - 'dreed', - 'dreer', - 'drees', - 'dregs', - 'dreks', - 'drent', - 'drere', - 'drest', - 'dreys', - 'dribs', - 'drice', - 'dries', - 'drily', - 'drips', - 'dript', - 'droid', - 'droil', - 'droke', - 'drole', - 'drome', - 'drony', - 'droob', - 'droog', - 'drook', - 'drops', - 'dropt', - 'drouk', - 'drows', - 'drubs', - 'drugs', - 'drums', - 'drupe', - 'druse', - 'drusy', - 'druxy', - 'dryad', - 'dryas', - 'dsobo', - 'dsomo', - 'duads', - 'duals', - 'duans', - 'duars', - 'dubbo', - 'ducal', - 'ducat', - 'duces', - 'ducks', - 'ducky', - 'ducts', - 'duddy', - 'duded', - 'dudes', - 'duels', - 'duets', - 'duett', - 'duffs', - 'dufus', - 'duing', - 'duits', - 'dukas', - 'duked', - 'dukes', - 'dukka', - 'dulce', - 'dules', - 'dulia', - 'dulls', - 'dulse', - 'dumas', - 'dumbo', - 'dumbs', - 'dumka', - 'dumky', - 'dumps', - 'dunam', - 'dunch', - 'dunes', - 'dungs', - 'dungy', - 'dunks', - 'dunno', - 'dunny', - 'dunsh', - 'dunts', - 'duomi', - 'duomo', - 'duped', - 'duper', - 'dupes', - 'duple', - 'duply', - 'duppy', - 'dural', - 'duras', - 'dured', - 'dures', - 'durgy', - 'durns', - 'duroc', - 'duros', - 'duroy', - 'durra', - 'durrs', - 'durry', - 'durst', - 'durum', - 'durzi', - 'dusks', - 'dusts', - 'duxes', - 'dwaal', - 'dwale', - 'dwalm', - 'dwams', - 'dwang', - 'dwaum', - 'dweeb', - 'dwile', - 'dwine', - 'dyads', - 'dyers', - 'dyked', - 'dykes', - 'dykey', - 'dykon', - 'dynel', - 'dynes', - 'dzhos', - 'eagre', - 'ealed', - 'eales', - 'eaned', - 'eards', - 'eared', - 'earls', - 'earns', - 'earnt', - 'earst', - 'eased', - 'easer', - 'eases', - 'easle', - 'easts', - 'eathe', - 'eaved', - 'eaves', - 'ebbed', - 'ebbet', - 'ebons', - 'ebook', - 'ecads', - 'eched', - 'eches', - 'echos', - 'ecrus', - 'edema', - 'edged', - 'edger', - 'edges', - 'edile', - 'edits', - 'educe', - 'educt', - 'eejit', - 'eensy', - 'eeven', - 'eevns', - 'effed', - 'egads', - 'egers', - 'egest', - 'eggar', - 'egged', - 'egger', - 'egmas', - 'ehing', - 'eider', - 'eidos', - 'eigne', - 'eiked', - 'eikon', - 'eilds', - 'eisel', - 'ejido', - 'ekkas', - 'elain', - 'eland', - 'elans', - 'elchi', - 'eldin', - 'elemi', - 'elfed', - 'eliad', - 'elint', - 'elmen', - 'eloge', - 'elogy', - 'eloin', - 'elops', - 'elpee', - 'elsin', - 'elute', - 'elvan', - 'elven', - 'elver', - 'elves', - 'emacs', - 'embar', - 'embay', - 'embog', - 'embow', - 'embox', - 'embus', - 'emeer', - 'emend', - 'emerg', - 'emery', - 'emeus', - 'emics', - 'emirs', - 'emits', - 'emmas', - 'emmer', - 'emmet', - 'emmew', - 'emmys', - 'emoji', - 'emong', - 'emote', - 'emove', - 'empts', - 'emule', - 'emure', - 'emyde', - 'emyds', - 'enarm', - 'enate', - 'ended', - 'ender', - 'endew', - 'endue', - 'enews', - 'enfix', - 'eniac', - 'enlit', - 'enmew', - 'ennog', - 'enoki', - 'enols', - 'enorm', - 'enows', - 'enrol', - 'ensew', - 'ensky', - 'entia', - 'enure', - 'enurn', - 'envoi', - 'enzym', - 'eorls', - 'eosin', - 'epact', - 'epees', - 'ephah', - 'ephas', - 'ephod', - 'ephor', - 'epics', - 'epode', - 'epopt', - 'epris', - 'eques', - 'equid', - 'erbia', - 'erevs', - 'ergon', - 'ergos', - 'ergot', - 'erhus', - 'erica', - 'erick', - 'erics', - 'ering', - 'erned', - 'ernes', - 'erose', - 'erred', - 'erses', - 'eruct', - 'erugo', - 'eruvs', - 'erven', - 'ervil', - 'escar', - 'escot', - 'esile', - 'eskar', - 'esker', - 'esnes', - 'esses', - 'estoc', - 'estop', - 'estro', - 'etage', - 'etape', - 'etats', - 'etens', - 'ethal', - 'ethne', - 'ethyl', - 'etics', - 'etnas', - 'ettin', - 'ettle', - 'etuis', - 'etwee', - 'etyma', - 'eughs', - 'euked', - 'eupad', - 'euros', - 'eusol', - 'evens', - 'evert', - 'evets', - 'evhoe', - 'evils', - 'evite', - 'evohe', - 'ewers', - 'ewest', - 'ewhow', - 'ewked', - 'exams', - 'exeat', - 'execs', - 'exeem', - 'exeme', - 'exfil', - 'exies', - 'exine', - 'exing', - 'exits', - 'exode', - 'exome', - 'exons', - 'expat', - 'expos', - 'exude', - 'exuls', - 'exurb', - 'eyass', - 'eyers', - 'eyots', - 'eyras', - 'eyres', - 'eyrie', - 'eyrir', - 'ezine', - 'fabby', - 'faced', - 'facer', - 'faces', - 'facia', - 'facta', - 'facts', - 'faddy', - 'faded', - 'fader', - 'fades', - 'fadge', - 'fados', - 'faena', - 'faery', - 'faffs', - 'faffy', - 'faggy', - 'fagin', - 'fagot', - 'faiks', - 'fails', - 'faine', - 'fains', - 'fairs', - 'faked', - 'faker', - 'fakes', - 'fakey', - 'fakie', - 'fakir', - 'falaj', - 'falls', - 'famed', - 'fames', - 'fanal', - 'fands', - 'fanes', - 'fanga', - 'fango', - 'fangs', - 'fanks', - 'fanon', - 'fanos', - 'fanum', - 'faqir', - 'farad', - 'farci', - 'farcy', - 'fards', - 'fared', - 'farer', - 'fares', - 'farle', - 'farls', - 'farms', - 'faros', - 'farro', - 'farse', - 'farts', - 'fasci', - 'fasti', - 'fasts', - 'fated', - 'fates', - 'fatly', - 'fatso', - 'fatwa', - 'faugh', - 'fauld', - 'fauns', - 'faurd', - 'fauts', - 'fauve', - 'favas', - 'favel', - 'faver', - 'faves', - 'favus', - 'fawns', - 'fawny', - 'faxed', - 'faxes', - 'fayed', - 'fayer', - 'fayne', - 'fayre', - 'fazed', - 'fazes', - 'feals', - 'feare', - 'fears', - 'feart', - 'fease', - 'feats', - 'feaze', - 'feces', - 'fecht', - 'fecit', - 'fecks', - 'fedex', - 'feebs', - 'feeds', - 'feels', - 'feens', - 'feers', - 'feese', - 'feeze', - 'fehme', - 'feint', - 'feist', - 'felch', - 'felid', - 'fells', - 'felly', - 'felts', - 'felty', - 'femal', - 'femes', - 'femmy', - 'fends', - 'fendy', - 'fenis', - 'fenks', - 'fenny', - 'fents', - 'feods', - 'feoff', - 'ferer', - 'feres', - 'feria', - 'ferly', - 'fermi', - 'ferms', - 'ferns', - 'ferny', - 'fesse', - 'festa', - 'fests', - 'festy', - 'fetas', - 'feted', - 'fetes', - 'fetor', - 'fetta', - 'fetts', - 'fetwa', - 'feuar', - 'feuds', - 'feued', - 'feyed', - 'feyer', - 'feyly', - 'fezes', - 'fezzy', - 'fiars', - 'fiats', - 'fibro', - 'fices', - 'fiche', - 'fichu', - 'ficin', - 'ficos', - 'fides', - 'fidge', - 'fidos', - 'fiefs', - 'fient', - 'fiere', - 'fiers', - 'fiest', - 'fifed', - 'fifer', - 'fifes', - 'fifis', - 'figgy', - 'figos', - 'fiked', - 'fikes', - 'filar', - 'filch', - 'filed', - 'files', - 'filii', - 'filks', - 'fille', - 'fillo', - 'fills', - 'filmi', - 'films', - 'filos', - 'filum', - 'finca', - 'finds', - 'fined', - 'fines', - 'finis', - 'finks', - 'finny', - 'finos', - 'fiord', - 'fiqhs', - 'fique', - 'fired', - 'firer', - 'fires', - 'firie', - 'firks', - 'firms', - 'firns', - 'firry', - 'firth', - 'fiscs', - 'fisks', - 'fists', - 'fisty', - 'fitch', - 'fitly', - 'fitna', - 'fitte', - 'fitts', - 'fiver', - 'fives', - 'fixed', - 'fixes', - 'fixit', - 'fjeld', - 'flabs', - 'flaff', - 'flags', - 'flaks', - 'flamm', - 'flams', - 'flamy', - 'flane', - 'flans', - 'flaps', - 'flary', - 'flats', - 'flava', - 'flawn', - 'flaws', - 'flawy', - 'flaxy', - 'flays', - 'fleam', - 'fleas', - 'fleek', - 'fleer', - 'flees', - 'flegs', - 'fleme', - 'fleur', - 'flews', - 'flexi', - 'flexo', - 'fleys', - 'flics', - 'flied', - 'flies', - 'flimp', - 'flims', - 'flips', - 'flirs', - 'flisk', - 'flite', - 'flits', - 'flitt', - 'flobs', - 'flocs', - 'floes', - 'flogs', - 'flong', - 'flops', - 'flors', - 'flory', - 'flosh', - 'flota', - 'flote', - 'flows', - 'flubs', - 'flued', - 'flues', - 'fluey', - 'fluky', - 'flump', - 'fluor', - 'flurr', - 'fluty', - 'fluyt', - 'flyby', - 'flype', - 'flyte', - 'foals', - 'foams', - 'foehn', - 'fogey', - 'fogie', - 'fogle', - 'fogou', - 'fohns', - 'foids', - 'foils', - 'foins', - 'folds', - 'foley', - 'folia', - 'folic', - 'folie', - 'folks', - 'folky', - 'fomes', - 'fonda', - 'fonds', - 'fondu', - 'fones', - 'fonly', - 'fonts', - 'foods', - 'foody', - 'fools', - 'foots', - 'footy', - 'foram', - 'forbs', - 'forby', - 'fordo', - 'fords', - 'forel', - 'fores', - 'forex', - 'forks', - 'forky', - 'forme', - 'forms', - 'forts', - 'forza', - 'forze', - 'fossa', - 'fosse', - 'fouat', - 'fouds', - 'fouer', - 'fouet', - 'foule', - 'fouls', - 'fount', - 'fours', - 'fouth', - 'fovea', - 'fowls', - 'fowth', - 'foxed', - 'foxes', - 'foxie', - 'foyle', - 'foyne', - 'frabs', - 'frack', - 'fract', - 'frags', - 'fraim', - 'franc', - 'frape', - 'fraps', - 'frass', - 'frate', - 'frati', - 'frats', - 'fraus', - 'frays', - 'frees', - 'freet', - 'freit', - 'fremd', - 'frena', - 'freon', - 'frere', - 'frets', - 'fribs', - 'frier', - 'fries', - 'frigs', - 'frise', - 'frist', - 'frith', - 'frits', - 'fritt', - 'frize', - 'frizz', - 'froes', - 'frogs', - 'frons', - 'frore', - 'frorn', - 'frory', - 'frosh', - 'frows', - 'frowy', - 'frugs', - 'frump', - 'frush', - 'frust', - 'fryer', - 'fubar', - 'fubby', - 'fubsy', - 'fucks', - 'fucus', - 'fuddy', - 'fudgy', - 'fuels', - 'fuero', - 'fuffs', - 'fuffy', - 'fugal', - 'fuggy', - 'fugie', - 'fugio', - 'fugle', - 'fugly', - 'fugus', - 'fujis', - 'fulls', - 'fumed', - 'fumer', - 'fumes', - 'fumet', - 'fundi', - 'funds', - 'fundy', - 'fungo', - 'fungs', - 'funks', - 'fural', - 'furan', - 'furca', - 'furls', - 'furol', - 'furrs', - 'furth', - 'furze', - 'furzy', - 'fused', - 'fusee', - 'fusel', - 'fuses', - 'fusil', - 'fusks', - 'fusts', - 'fusty', - 'futon', - 'fuzed', - 'fuzee', - 'fuzes', - 'fuzil', - 'fyces', - 'fyked', - 'fykes', - 'fyles', - 'fyrds', - 'fytte', - 'gabba', - 'gabby', - 'gable', - 'gaddi', - 'gades', - 'gadge', - 'gadid', - 'gadis', - 'gadje', - 'gadjo', - 'gadso', - 'gaffs', - 'gaged', - 'gager', - 'gages', - 'gaids', - 'gains', - 'gairs', - 'gaita', - 'gaits', - 'gaitt', - 'gajos', - 'galah', - 'galas', - 'galax', - 'galea', - 'galed', - 'gales', - 'galls', - 'gally', - 'galop', - 'galut', - 'galvo', - 'gamas', - 'gamay', - 'gamba', - 'gambe', - 'gambo', - 'gambs', - 'gamed', - 'games', - 'gamey', - 'gamic', - 'gamin', - 'gamme', - 'gammy', - 'gamps', - 'ganch', - 'gandy', - 'ganef', - 'ganev', - 'gangs', - 'ganja', - 'ganof', - 'gants', - 'gaols', - 'gaped', - 'gaper', - 'gapes', - 'gapos', - 'gappy', - 'garbe', - 'garbo', - 'garbs', - 'garda', - 'gares', - 'garis', - 'garms', - 'garni', - 'garre', - 'garth', - 'garum', - 'gases', - 'gasps', - 'gaspy', - 'gasts', - 'gatch', - 'gated', - 'gater', - 'gates', - 'gaths', - 'gator', - 'gauch', - 'gaucy', - 'gauds', - 'gauje', - 'gault', - 'gaums', - 'gaumy', - 'gaups', - 'gaurs', - 'gauss', - 'gauzy', - 'gavot', - 'gawcy', - 'gawds', - 'gawks', - 'gawps', - 'gawsy', - 'gayal', - 'gazal', - 'gazar', - 'gazed', - 'gazes', - 'gazon', - 'gazoo', - 'geals', - 'geans', - 'geare', - 'gears', - 'geats', - 'gebur', - 'gecks', - 'geeks', - 'geeps', - 'geest', - 'geist', - 'geits', - 'gelds', - 'gelee', - 'gelid', - 'gelly', - 'gelts', - 'gemel', - 'gemma', - 'gemmy', - 'gemot', - 'genal', - 'genas', - 'genes', - 'genet', - 'genic', - 'genii', - 'genip', - 'genny', - 'genoa', - 'genom', - 'genro', - 'gents', - 'genty', - 'genua', - 'genus', - 'geode', - 'geoid', - 'gerah', - 'gerbe', - 'geres', - 'gerle', - 'germs', - 'germy', - 'gerne', - 'gesse', - 'gesso', - 'geste', - 'gests', - 'getas', - 'getup', - 'geums', - 'geyan', - 'geyer', - 'ghast', - 'ghats', - 'ghaut', - 'ghazi', - 'ghees', - 'ghest', - 'ghyll', - 'gibed', - 'gibel', - 'giber', - 'gibes', - 'gibli', - 'gibus', - 'gifts', - 'gigas', - 'gighe', - 'gigot', - 'gigue', - 'gilas', - 'gilds', - 'gilet', - 'gills', - 'gilly', - 'gilpy', - 'gilts', - 'gimel', - 'gimme', - 'gimps', - 'gimpy', - 'ginch', - 'ginge', - 'gings', - 'ginks', - 'ginny', - 'ginzo', - 'gipon', - 'gippo', - 'gippy', - 'girds', - 'girls', - 'girns', - 'giron', - 'giros', - 'girrs', - 'girsh', - 'girts', - 'gismo', - 'gisms', - 'gists', - 'gitch', - 'gites', - 'giust', - 'gived', - 'gives', - 'gizmo', - 'glace', - 'glads', - 'glady', - 'glaik', - 'glair', - 'glams', - 'glans', - 'glary', - 'glaum', - 'glaur', - 'glazy', - 'gleba', - 'glebe', - 'gleby', - 'glede', - 'gleds', - 'gleed', - 'gleek', - 'glees', - 'gleet', - 'gleis', - 'glens', - 'glent', - 'gleys', - 'glial', - 'glias', - 'glibs', - 'gliff', - 'glift', - 'glike', - 'glime', - 'glims', - 'glisk', - 'glits', - 'glitz', - 'gloam', - 'globi', - 'globs', - 'globy', - 'glode', - 'glogg', - 'gloms', - 'gloop', - 'glops', - 'glost', - 'glout', - 'glows', - 'gloze', - 'glued', - 'gluer', - 'glues', - 'gluey', - 'glugs', - 'glume', - 'glums', - 'gluon', - 'glute', - 'gluts', - 'gnarl', - 'gnarr', - 'gnars', - 'gnats', - 'gnawn', - 'gnaws', - 'gnows', - 'goads', - 'goafs', - 'goals', - 'goary', - 'goats', - 'goaty', - 'goban', - 'gobar', - 'gobbi', - 'gobbo', - 'gobby', - 'gobis', - 'gobos', - 'godet', - 'godso', - 'goels', - 'goers', - 'goest', - 'goeth', - 'goety', - 'gofer', - 'goffs', - 'gogga', - 'gogos', - 'goier', - 'gojis', - 'golds', - 'goldy', - 'goles', - 'golfs', - 'golpe', - 'golps', - 'gombo', - 'gomer', - 'gompa', - 'gonch', - 'gonef', - 'gongs', - 'gonia', - 'gonif', - 'gonks', - 'gonna', - 'gonof', - 'gonys', - 'gonzo', - 'gooby', - 'goods', - 'goofs', - 'googs', - 'gooks', - 'gooky', - 'goold', - 'gools', - 'gooly', - 'goons', - 'goony', - 'goops', - 'goopy', - 'goors', - 'goory', - 'goosy', - 'gopak', - 'gopik', - 'goral', - 'goras', - 'gored', - 'gores', - 'goris', - 'gorms', - 'gormy', - 'gorps', - 'gorse', - 'gorsy', - 'gosht', - 'gosse', - 'gotch', - 'goths', - 'gothy', - 'gotta', - 'gouch', - 'gouks', - 'goura', - 'gouts', - 'gouty', - 'gowan', - 'gowds', - 'gowfs', - 'gowks', - 'gowls', - 'gowns', - 'goxes', - 'goyim', - 'goyle', - 'graal', - 'grabs', - 'grads', - 'graff', - 'graip', - 'grama', - 'grame', - 'gramp', - 'grams', - 'grana', - 'grans', - 'grapy', - 'gravs', - 'grays', - 'grebe', - 'grebo', - 'grece', - 'greek', - 'grees', - 'grege', - 'grego', - 'grein', - 'grens', - 'grese', - 'greve', - 'grews', - 'greys', - 'grice', - 'gride', - 'grids', - 'griff', - 'grift', - 'grigs', - 'grike', - 'grins', - 'griot', - 'grips', - 'gript', - 'gripy', - 'grise', - 'grist', - 'grisy', - 'grith', - 'grits', - 'grize', - 'groat', - 'grody', - 'grogs', - 'groks', - 'groma', - 'grone', - 'groof', - 'grosz', - 'grots', - 'grouf', - 'grovy', - 'grows', - 'grrls', - 'grrrl', - 'grubs', - 'grued', - 'grues', - 'grufe', - 'grume', - 'grump', - 'grund', - 'gryce', - 'gryde', - 'gryke', - 'grype', - 'grypt', - 'guaco', - 'guana', - 'guano', - 'guans', - 'guars', - 'gucks', - 'gucky', - 'gudes', - 'guffs', - 'gugas', - 'guids', - 'guimp', - 'guiro', - 'gulag', - 'gular', - 'gulas', - 'gules', - 'gulet', - 'gulfs', - 'gulfy', - 'gulls', - 'gulph', - 'gulps', - 'gulpy', - 'gumma', - 'gummi', - 'gumps', - 'gundy', - 'gunge', - 'gungy', - 'gunks', - 'gunky', - 'gunny', - 'guqin', - 'gurdy', - 'gurge', - 'gurls', - 'gurly', - 'gurns', - 'gurry', - 'gursh', - 'gurus', - 'gushy', - 'gusla', - 'gusle', - 'gusli', - 'gussy', - 'gusts', - 'gutsy', - 'gutta', - 'gutty', - 'guyed', - 'guyle', - 'guyot', - 'guyse', - 'gwine', - 'gyals', - 'gyans', - 'gybed', - 'gybes', - 'gyeld', - 'gymps', - 'gynae', - 'gynie', - 'gynny', - 'gynos', - 'gyoza', - 'gypos', - 'gyppo', - 'gyppy', - 'gyral', - 'gyred', - 'gyres', - 'gyron', - 'gyros', - 'gyrus', - 'gytes', - 'gyved', - 'gyves', - 'haafs', - 'haars', - 'hable', - 'habus', - 'hacek', - 'hacks', - 'hadal', - 'haded', - 'hades', - 'hadji', - 'hadst', - 'haems', - 'haets', - 'haffs', - 'hafiz', - 'hafts', - 'haggs', - 'hahas', - 'haick', - 'haika', - 'haiks', - 'haiku', - 'hails', - 'haily', - 'hains', - 'haint', - 'hairs', - 'haith', - 'hajes', - 'hajis', - 'hajji', - 'hakam', - 'hakas', - 'hakea', - 'hakes', - 'hakim', - 'hakus', - 'halal', - 'haled', - 'haler', - 'hales', - 'halfa', - 'halfs', - 'halid', - 'hallo', - 'halls', - 'halma', - 'halms', - 'halon', - 'halos', - 'halse', - 'halts', - 'halva', - 'halwa', - 'hamal', - 'hamba', - 'hamed', - 'hames', - 'hammy', - 'hamza', - 'hanap', - 'hance', - 'hanch', - 'hands', - 'hangi', - 'hangs', - 'hanks', - 'hanky', - 'hansa', - 'hanse', - 'hants', - 'haole', - 'haoma', - 'hapax', - 'haply', - 'happi', - 'hapus', - 'haram', - 'hards', - 'hared', - 'hares', - 'harim', - 'harks', - 'harls', - 'harms', - 'harns', - 'haros', - 'harps', - 'harts', - 'hashy', - 'hasks', - 'hasps', - 'hasta', - 'hated', - 'hates', - 'hatha', - 'hauds', - 'haufs', - 'haugh', - 'hauld', - 'haulm', - 'hauls', - 'hault', - 'hauns', - 'hause', - 'haver', - 'haves', - 'hawed', - 'hawks', - 'hawms', - 'hawse', - 'hayed', - 'hayer', - 'hayey', - 'hayle', - 'hazan', - 'hazed', - 'hazer', - 'hazes', - 'heads', - 'heald', - 'heals', - 'heame', - 'heaps', - 'heapy', - 'heare', - 'hears', - 'heast', - 'heats', - 'heben', - 'hebes', - 'hecht', - 'hecks', - 'heder', - 'hedgy', - 'heeds', - 'heedy', - 'heels', - 'heeze', - 'hefte', - 'hefts', - 'heids', - 'heigh', - 'heils', - 'heirs', - 'hejab', - 'hejra', - 'heled', - 'heles', - 'helio', - 'hells', - 'helms', - 'helos', - 'helot', - 'helps', - 'helve', - 'hemal', - 'hemes', - 'hemic', - 'hemin', - 'hemps', - 'hempy', - 'hench', - 'hends', - 'henge', - 'henna', - 'henny', - 'henry', - 'hents', - 'hepar', - 'herbs', - 'herby', - 'herds', - 'heres', - 'herls', - 'herma', - 'herms', - 'herns', - 'heros', - 'herry', - 'herse', - 'hertz', - 'herye', - 'hesps', - 'hests', - 'hetes', - 'heths', - 'heuch', - 'heugh', - 'hevea', - 'hewed', - 'hewer', - 'hewgh', - 'hexad', - 'hexed', - 'hexer', - 'hexes', - 'hexyl', - 'heyed', - 'hiant', - 'hicks', - 'hided', - 'hider', - 'hides', - 'hiems', - 'highs', - 'hight', - 'hijab', - 'hijra', - 'hiked', - 'hiker', - 'hikes', - 'hikoi', - 'hilar', - 'hilch', - 'hillo', - 'hills', - 'hilts', - 'hilum', - 'hilus', - 'himbo', - 'hinau', - 'hinds', - 'hings', - 'hinky', - 'hinny', - 'hints', - 'hiois', - 'hiply', - 'hired', - 'hiree', - 'hirer', - 'hires', - 'hissy', - 'hists', - 'hithe', - 'hived', - 'hiver', - 'hives', - 'hizen', - 'hoaed', - 'hoagy', - 'hoars', - 'hoary', - 'hoast', - 'hobos', - 'hocks', - 'hocus', - 'hodad', - 'hodja', - 'hoers', - 'hogan', - 'hogen', - 'hoggs', - 'hoghs', - 'hohed', - 'hoick', - 'hoied', - 'hoiks', - 'hoing', - 'hoise', - 'hokas', - 'hoked', - 'hokes', - 'hokey', - 'hokis', - 'hokku', - 'hokum', - 'holds', - 'holed', - 'holes', - 'holey', - 'holks', - 'holla', - 'hollo', - 'holme', - 'holms', - 'holon', - 'holos', - 'holts', - 'homas', - 'homed', - 'homes', - 'homey', - 'homie', - 'homme', - 'homos', - 'honan', - 'honda', - 'honds', - 'honed', - 'honer', - 'hones', - 'hongi', - 'hongs', - 'honks', - 'honky', - 'hooch', - 'hoods', - 'hoody', - 'hooey', - 'hoofs', - 'hooka', - 'hooks', - 'hooky', - 'hooly', - 'hoons', - 'hoops', - 'hoord', - 'hoors', - 'hoosh', - 'hoots', - 'hooty', - 'hoove', - 'hopak', - 'hoped', - 'hoper', - 'hopes', - 'hoppy', - 'horah', - 'horal', - 'horas', - 'horis', - 'horks', - 'horme', - 'horns', - 'horst', - 'horsy', - 'hosed', - 'hosel', - 'hosen', - 'hoser', - 'hoses', - 'hosey', - 'hosta', - 'hosts', - 'hotch', - 'hoten', - 'hotty', - 'houff', - 'houfs', - 'hough', - 'houri', - 'hours', - 'houts', - 'hovea', - 'hoved', - 'hoven', - 'hoves', - 'howbe', - 'howes', - 'howff', - 'howfs', - 'howks', - 'howls', - 'howre', - 'howso', - 'hoxed', - 'hoxes', - 'hoyas', - 'hoyed', - 'hoyle', - 'hubby', - 'hucks', - 'hudna', - 'hudud', - 'huers', - 'huffs', - 'huffy', - 'huger', - 'huggy', - 'huhus', - 'huias', - 'hulas', - 'hules', - 'hulks', - 'hulky', - 'hullo', - 'hulls', - 'hully', - 'humas', - 'humfs', - 'humic', - 'humps', - 'humpy', - 'hunks', - 'hunts', - 'hurds', - 'hurls', - 'hurly', - 'hurra', - 'hurst', - 'hurts', - 'hushy', - 'husks', - 'husos', - 'hutia', - 'huzza', - 'huzzy', - 'hwyls', - 'hydra', - 'hyens', - 'hygge', - 'hying', - 'hykes', - 'hylas', - 'hyleg', - 'hyles', - 'hylic', - 'hymns', - 'hynde', - 'hyoid', - 'hyped', - 'hypes', - 'hypha', - 'hyphy', - 'hypos', - 'hyrax', - 'hyson', - 'hythe', - 'iambi', - 'iambs', - 'ibrik', - 'icers', - 'iched', - 'iches', - 'ichor', - 'icier', - 'icker', - 'ickle', - 'icons', - 'ictal', - 'ictic', - 'ictus', - 'idant', - 'ideas', - 'idees', - 'ident', - 'idled', - 'idles', - 'idola', - 'idols', - 'idyls', - 'iftar', - 'igapo', - 'igged', - 'iglus', - 'ihram', - 'ikans', - 'ikats', - 'ikons', - 'ileac', - 'ileal', - 'ileum', - 'ileus', - 'iliad', - 'ilial', - 'ilium', - 'iller', - 'illth', - 'imago', - 'imams', - 'imari', - 'imaum', - 'imbar', - 'imbed', - 'imide', - 'imido', - 'imids', - 'imine', - 'imino', - 'immew', - 'immit', - 'immix', - 'imped', - 'impis', - 'impot', - 'impro', - 'imshi', - 'imshy', - 'inapt', - 'inarm', - 'inbye', - 'incel', - 'incle', - 'incog', - 'incus', - 'incut', - 'indew', - 'india', - 'indie', - 'indol', - 'indow', - 'indri', - 'indue', - 'inerm', - 'infix', - 'infos', - 'infra', - 'ingan', - 'ingle', - 'inion', - 'inked', - 'inker', - 'inkle', - 'inned', - 'innit', - 'inorb', - 'inrun', - 'inset', - 'inspo', - 'intel', - 'intil', - 'intis', - 'intra', - 'inula', - 'inure', - 'inurn', - 'inust', - 'invar', - 'inwit', - 'iodic', - 'iodid', - 'iodin', - 'iotas', - 'ippon', - 'irade', - 'irids', - 'iring', - 'irked', - 'iroko', - 'irone', - 'irons', - 'isbas', - 'ishes', - 'isled', - 'isles', - 'isnae', - 'issei', - 'istle', - 'items', - 'ither', - 'ivied', - 'ivies', - 'ixias', - 'ixnay', - 'ixora', - 'ixtle', - 'izard', - 'izars', - 'izzat', - 'jaaps', - 'jabot', - 'jacal', - 'jacks', - 'jacky', - 'jaded', - 'jades', - 'jafas', - 'jaffa', - 'jagas', - 'jager', - 'jaggs', - 'jaggy', - 'jagir', - 'jagra', - 'jails', - 'jaker', - 'jakes', - 'jakey', - 'jalap', - 'jalop', - 'jambe', - 'jambo', - 'jambs', - 'jambu', - 'james', - 'jammy', - 'jamon', - 'janes', - 'janns', - 'janny', - 'janty', - 'japan', - 'japed', - 'japer', - 'japes', - 'jarks', - 'jarls', - 'jarps', - 'jarta', - 'jarul', - 'jasey', - 'jaspe', - 'jasps', - 'jatos', - 'jauks', - 'jaups', - 'javas', - 'javel', - 'jawan', - 'jawed', - 'jaxie', - 'jeans', - 'jeats', - 'jebel', - 'jedis', - 'jeels', - 'jeely', - 'jeeps', - 'jeers', - 'jeeze', - 'jefes', - 'jeffs', - 'jehad', - 'jehus', - 'jelab', - 'jello', - 'jells', - 'jembe', - 'jemmy', - 'jenny', - 'jeons', - 'jerid', - 'jerks', - 'jerry', - 'jesse', - 'jests', - 'jesus', - 'jetes', - 'jeton', - 'jeune', - 'jewed', - 'jewie', - 'jhala', - 'jiaos', - 'jibba', - 'jibbs', - 'jibed', - 'jiber', - 'jibes', - 'jiffs', - 'jiggy', - 'jigot', - 'jihad', - 'jills', - 'jilts', - 'jimmy', - 'jimpy', - 'jingo', - 'jinks', - 'jinne', - 'jinni', - 'jinns', - 'jirds', - 'jirga', - 'jirre', - 'jisms', - 'jived', - 'jiver', - 'jives', - 'jivey', - 'jnana', - 'jobed', - 'jobes', - 'jocko', - 'jocks', - 'jocky', - 'jocos', - 'jodel', - 'joeys', - 'johns', - 'joins', - 'joked', - 'jokes', - 'jokey', - 'jokol', - 'joled', - 'joles', - 'jolls', - 'jolts', - 'jolty', - 'jomon', - 'jomos', - 'jones', - 'jongs', - 'jonty', - 'jooks', - 'joram', - 'jorum', - 'jotas', - 'jotty', - 'jotun', - 'joual', - 'jougs', - 'jouks', - 'joule', - 'jours', - 'jowar', - 'jowed', - 'jowls', - 'jowly', - 'joyed', - 'jubas', - 'jubes', - 'jucos', - 'judas', - 'judgy', - 'judos', - 'jugal', - 'jugum', - 'jujus', - 'juked', - 'jukes', - 'jukus', - 'julep', - 'jumar', - 'jumby', - 'jumps', - 'junco', - 'junks', - 'junky', - 'jupes', - 'jupon', - 'jural', - 'jurat', - 'jurel', - 'jures', - 'justs', - 'jutes', - 'jutty', - 'juves', - 'juvie', - 'kaama', - 'kabab', - 'kabar', - 'kabob', - 'kacha', - 'kacks', - 'kadai', - 'kades', - 'kadis', - 'kafir', - 'kagos', - 'kagus', - 'kahal', - 'kaiak', - 'kaids', - 'kaies', - 'kaifs', - 'kaika', - 'kaiks', - 'kails', - 'kaims', - 'kaing', - 'kains', - 'kakas', - 'kakis', - 'kalam', - 'kales', - 'kalif', - 'kalis', - 'kalpa', - 'kamas', - 'kames', - 'kamik', - 'kamis', - 'kamme', - 'kanae', - 'kanas', - 'kandy', - 'kaneh', - 'kanes', - 'kanga', - 'kangs', - 'kanji', - 'kants', - 'kanzu', - 'kaons', - 'kapas', - 'kaphs', - 'kapok', - 'kapow', - 'kapus', - 'kaput', - 'karas', - 'karat', - 'karks', - 'karns', - 'karoo', - 'karos', - 'karri', - 'karst', - 'karsy', - 'karts', - 'karzy', - 'kasha', - 'kasme', - 'katal', - 'katas', - 'katis', - 'katti', - 'kaugh', - 'kauri', - 'kauru', - 'kaury', - 'kaval', - 'kavas', - 'kawas', - 'kawau', - 'kawed', - 'kayle', - 'kayos', - 'kazis', - 'kazoo', - 'kbars', - 'kebar', - 'kebob', - 'kecks', - 'kedge', - 'kedgy', - 'keech', - 'keefs', - 'keeks', - 'keels', - 'keema', - 'keeno', - 'keens', - 'keeps', - 'keets', - 'keeve', - 'kefir', - 'kehua', - 'keirs', - 'kelep', - 'kelim', - 'kells', - 'kelly', - 'kelps', - 'kelpy', - 'kelts', - 'kelty', - 'kembo', - 'kembs', - 'kemps', - 'kempt', - 'kempy', - 'kenaf', - 'kench', - 'kendo', - 'kenos', - 'kente', - 'kents', - 'kepis', - 'kerbs', - 'kerel', - 'kerfs', - 'kerky', - 'kerma', - 'kerne', - 'kerns', - 'keros', - 'kerry', - 'kerve', - 'kesar', - 'kests', - 'ketas', - 'ketch', - 'ketes', - 'ketol', - 'kevel', - 'kevil', - 'kexes', - 'keyed', - 'keyer', - 'khadi', - 'khafs', - 'khans', - 'khaph', - 'khats', - 'khaya', - 'khazi', - 'kheda', - 'kheth', - 'khets', - 'khoja', - 'khors', - 'khoum', - 'khuds', - 'kiaat', - 'kiack', - 'kiang', - 'kibbe', - 'kibbi', - 'kibei', - 'kibes', - 'kibla', - 'kicks', - 'kicky', - 'kiddo', - 'kiddy', - 'kidel', - 'kidge', - 'kiefs', - 'kiers', - 'kieve', - 'kievs', - 'kight', - 'kikes', - 'kikoi', - 'kiley', - 'kilim', - 'kills', - 'kilns', - 'kilos', - 'kilps', - 'kilts', - 'kilty', - 'kimbo', - 'kinas', - 'kinda', - 'kinds', - 'kindy', - 'kines', - 'kings', - 'kinin', - 'kinks', - 'kinos', - 'kiore', - 'kipes', - 'kippa', - 'kipps', - 'kirby', - 'kirks', - 'kirns', - 'kirri', - 'kisan', - 'kissy', - 'kists', - 'kited', - 'kiter', - 'kites', - 'kithe', - 'kiths', - 'kitul', - 'kivas', - 'kiwis', - 'klang', - 'klaps', - 'klett', - 'klick', - 'klieg', - 'kliks', - 'klong', - 'kloof', - 'kluge', - 'klutz', - 'knags', - 'knaps', - 'knarl', - 'knars', - 'knaur', - 'knawe', - 'knees', - 'knell', - 'knish', - 'knits', - 'knive', - 'knobs', - 'knops', - 'knosp', - 'knots', - 'knout', - 'knowe', - 'knows', - 'knubs', - 'knurl', - 'knurr', - 'knurs', - 'knuts', - 'koans', - 'koaps', - 'koban', - 'kobos', - 'koels', - 'koffs', - 'kofta', - 'kogal', - 'kohas', - 'kohen', - 'kohls', - 'koine', - 'kojis', - 'kokam', - 'kokas', - 'koker', - 'kokra', - 'kokum', - 'kolas', - 'kolos', - 'kombu', - 'konbu', - 'kondo', - 'konks', - 'kooks', - 'kooky', - 'koori', - 'kopek', - 'kophs', - 'kopje', - 'koppa', - 'korai', - 'koras', - 'korat', - 'kores', - 'korma', - 'koros', - 'korun', - 'korus', - 'koses', - 'kotch', - 'kotos', - 'kotow', - 'koura', - 'kraal', - 'krabs', - 'kraft', - 'krais', - 'krait', - 'krang', - 'krans', - 'kranz', - 'kraut', - 'krays', - 'kreep', - 'kreng', - 'krewe', - 'krona', - 'krone', - 'kroon', - 'krubi', - 'krunk', - 'ksars', - 'kubie', - 'kudos', - 'kudus', - 'kudzu', - 'kufis', - 'kugel', - 'kuias', - 'kukri', - 'kukus', - 'kulak', - 'kulan', - 'kulas', - 'kulfi', - 'kumis', - 'kumys', - 'kuris', - 'kurre', - 'kurta', - 'kurus', - 'kusso', - 'kutas', - 'kutch', - 'kutis', - 'kutus', - 'kuzus', - 'kvass', - 'kvell', - 'kwela', - 'kyack', - 'kyaks', - 'kyang', - 'kyars', - 'kyats', - 'kybos', - 'kydst', - 'kyles', - 'kylie', - 'kylin', - 'kylix', - 'kyloe', - 'kynde', - 'kynds', - 'kypes', - 'kyrie', - 'kytes', - 'kythe', - 'laari', - 'labda', - 'labia', - 'labis', - 'labra', - 'laced', - 'lacer', - 'laces', - 'lacet', - 'lacey', - 'lacks', - 'laddy', - 'laded', - 'lader', - 'lades', - 'laers', - 'laevo', - 'lagan', - 'lahal', - 'lahar', - 'laich', - 'laics', - 'laids', - 'laigh', - 'laika', - 'laiks', - 'laird', - 'lairs', - 'lairy', - 'laith', - 'laity', - 'laked', - 'laker', - 'lakes', - 'lakhs', - 'lakin', - 'laksa', - 'laldy', - 'lalls', - 'lamas', - 'lambs', - 'lamby', - 'lamed', - 'lamer', - 'lames', - 'lamia', - 'lammy', - 'lamps', - 'lanai', - 'lanas', - 'lanch', - 'lande', - 'lands', - 'lanes', - 'lanks', - 'lants', - 'lapin', - 'lapis', - 'lapje', - 'larch', - 'lards', - 'lardy', - 'laree', - 'lares', - 'largo', - 'laris', - 'larks', - 'larky', - 'larns', - 'larnt', - 'larum', - 'lased', - 'laser', - 'lases', - 'lassi', - 'lassu', - 'lassy', - 'lasts', - 'latah', - 'lated', - 'laten', - 'latex', - 'lathi', - 'laths', - 'lathy', - 'latke', - 'latus', - 'lauan', - 'lauch', - 'lauds', - 'laufs', - 'laund', - 'laura', - 'laval', - 'lavas', - 'laved', - 'laver', - 'laves', - 'lavra', - 'lavvy', - 'lawed', - 'lawer', - 'lawin', - 'lawks', - 'lawns', - 'lawny', - 'laxed', - 'laxer', - 'laxes', - 'laxly', - 'layed', - 'layin', - 'layup', - 'lazar', - 'lazed', - 'lazes', - 'lazos', - 'lazzi', - 'lazzo', - 'leads', - 'leady', - 'leafs', - 'leaks', - 'leams', - 'leans', - 'leany', - 'leaps', - 'leare', - 'lears', - 'leary', - 'leats', - 'leavy', - 'leaze', - 'leben', - 'leccy', - 'ledes', - 'ledgy', - 'ledum', - 'leear', - 'leeks', - 'leeps', - 'leers', - 'leese', - 'leets', - 'leeze', - 'lefte', - 'lefts', - 'leger', - 'leges', - 'legge', - 'leggo', - 'legit', - 'lehrs', - 'lehua', - 'leirs', - 'leish', - 'leman', - 'lemed', - 'lemel', - 'lemes', - 'lemma', - 'lemme', - 'lends', - 'lenes', - 'lengs', - 'lenis', - 'lenos', - 'lense', - 'lenti', - 'lento', - 'leone', - 'lepid', - 'lepra', - 'lepta', - 'lered', - 'leres', - 'lerps', - 'lesbo', - 'leses', - 'lests', - 'letch', - 'lethe', - 'letup', - 'leuch', - 'leuco', - 'leuds', - 'leugh', - 'levas', - 'levee', - 'leves', - 'levin', - 'levis', - 'lewis', - 'lexes', - 'lexis', - 'lezes', - 'lezza', - 'lezzy', - 'liana', - 'liane', - 'liang', - 'liard', - 'liars', - 'liart', - 'liber', - 'libra', - 'libri', - 'lichi', - 'licht', - 'licit', - 'licks', - 'lidar', - 'lidos', - 'liefs', - 'liens', - 'liers', - 'lieus', - 'lieve', - 'lifer', - 'lifes', - 'lifts', - 'ligan', - 'liger', - 'ligge', - 'ligne', - 'liked', - 'liker', - 'likes', - 'likin', - 'lills', - 'lilos', - 'lilts', - 'liman', - 'limas', - 'limax', - 'limba', - 'limbi', - 'limbs', - 'limby', - 'limed', - 'limen', - 'limes', - 'limey', - 'limma', - 'limns', - 'limos', - 'limpa', - 'limps', - 'linac', - 'linch', - 'linds', - 'lindy', - 'lined', - 'lines', - 'liney', - 'linga', - 'lings', - 'lingy', - 'linin', - 'links', - 'linky', - 'linns', - 'linny', - 'linos', - 'lints', - 'linty', - 'linum', - 'linux', - 'lions', - 'lipas', - 'lipes', - 'lipin', - 'lipos', - 'lippy', - 'liras', - 'lirks', - 'lirot', - 'lisks', - 'lisle', - 'lisps', - 'lists', - 'litai', - 'litas', - 'lited', - 'liter', - 'lites', - 'litho', - 'liths', - 'litre', - 'lived', - 'liven', - 'lives', - 'livor', - 'livre', - 'llano', - 'loach', - 'loads', - 'loafs', - 'loams', - 'loans', - 'loast', - 'loave', - 'lobar', - 'lobed', - 'lobes', - 'lobos', - 'lobus', - 'loche', - 'lochs', - 'locie', - 'locis', - 'locks', - 'locos', - 'locum', - 'loden', - 'lodes', - 'loess', - 'lofts', - 'logan', - 'loges', - 'loggy', - 'logia', - 'logie', - 'logoi', - 'logon', - 'logos', - 'lohan', - 'loids', - 'loins', - 'loipe', - 'loirs', - 'lokes', - 'lolls', - 'lolly', - 'lolog', - 'lomas', - 'lomed', - 'lomes', - 'loner', - 'longa', - 'longe', - 'longs', - 'looby', - 'looed', - 'looey', - 'loofa', - 'loofs', - 'looie', - 'looks', - 'looky', - 'looms', - 'loons', - 'loony', - 'loops', - 'loord', - 'loots', - 'loped', - 'loper', - 'lopes', - 'loppy', - 'loral', - 'loran', - 'lords', - 'lordy', - 'lorel', - 'lores', - 'loric', - 'loris', - 'losed', - 'losel', - 'losen', - 'loses', - 'lossy', - 'lotah', - 'lotas', - 'lotes', - 'lotic', - 'lotos', - 'lotsa', - 'lotta', - 'lotte', - 'lotto', - 'lotus', - 'loued', - 'lough', - 'louie', - 'louis', - 'louma', - 'lound', - 'louns', - 'loupe', - 'loups', - 'loure', - 'lours', - 'loury', - 'louts', - 'lovat', - 'loved', - 'loves', - 'lovey', - 'lovie', - 'lowan', - 'lowed', - 'lowes', - 'lownd', - 'lowne', - 'lowns', - 'lowps', - 'lowry', - 'lowse', - 'lowts', - 'loxed', - 'loxes', - 'lozen', - 'luach', - 'luaus', - 'lubed', - 'lubes', - 'lubra', - 'luces', - 'lucks', - 'lucre', - 'ludes', - 'ludic', - 'ludos', - 'luffa', - 'luffs', - 'luged', - 'luger', - 'luges', - 'lulls', - 'lulus', - 'lumas', - 'lumbi', - 'lumme', - 'lummy', - 'lumps', - 'lunas', - 'lunes', - 'lunet', - 'lungi', - 'lungs', - 'lunks', - 'lunts', - 'lupin', - 'lured', - 'lurer', - 'lures', - 'lurex', - 'lurgi', - 'lurgy', - 'lurks', - 'lurry', - 'lurve', - 'luser', - 'lushy', - 'lusks', - 'lusts', - 'lusus', - 'lutea', - 'luted', - 'luter', - 'lutes', - 'luvvy', - 'luxed', - 'luxer', - 'luxes', - 'lweis', - 'lyams', - 'lyard', - 'lyart', - 'lyase', - 'lycea', - 'lycee', - 'lycra', - 'lymes', - 'lynes', - 'lyres', - 'lysed', - 'lyses', - 'lysin', - 'lysis', - 'lysol', - 'lyssa', - 'lyted', - 'lytes', - 'lythe', - 'lytic', - 'lytta', - 'maaed', - 'maare', - 'maars', - 'mabes', - 'macas', - 'maced', - 'macer', - 'maces', - 'mache', - 'machi', - 'machs', - 'macks', - 'macle', - 'macon', - 'madge', - 'madid', - 'madre', - 'maerl', - 'mafic', - 'mages', - 'maggs', - 'magot', - 'magus', - 'mahoe', - 'mahua', - 'mahwa', - 'maids', - 'maiko', - 'maiks', - 'maile', - 'maill', - 'mails', - 'maims', - 'mains', - 'maire', - 'mairs', - 'maise', - 'maist', - 'makar', - 'makes', - 'makis', - 'makos', - 'malam', - 'malar', - 'malas', - 'malax', - 'males', - 'malic', - 'malik', - 'malis', - 'malls', - 'malms', - 'malmy', - 'malts', - 'malty', - 'malus', - 'malva', - 'malwa', - 'mamas', - 'mamba', - 'mamee', - 'mamey', - 'mamie', - 'manas', - 'manat', - 'mandi', - 'maneb', - 'maned', - 'maneh', - 'manes', - 'manet', - 'mangs', - 'manis', - 'manky', - 'manna', - 'manos', - 'manse', - 'manta', - 'manto', - 'manty', - 'manul', - 'manus', - 'mapau', - 'maqui', - 'marae', - 'marah', - 'maras', - 'marcs', - 'mardy', - 'mares', - 'marge', - 'margs', - 'maria', - 'marid', - 'marka', - 'marks', - 'marle', - 'marls', - 'marly', - 'marms', - 'maron', - 'maror', - 'marra', - 'marri', - 'marse', - 'marts', - 'marvy', - 'masas', - 'mased', - 'maser', - 'mases', - 'mashy', - 'masks', - 'massa', - 'massy', - 'masts', - 'masty', - 'masus', - 'matai', - 'mated', - 'mater', - 'mates', - 'maths', - 'matin', - 'matlo', - 'matte', - 'matts', - 'matza', - 'matzo', - 'mauby', - 'mauds', - 'mauls', - 'maund', - 'mauri', - 'mausy', - 'mauts', - 'mauzy', - 'maven', - 'mavie', - 'mavin', - 'mavis', - 'mawed', - 'mawks', - 'mawky', - 'mawns', - 'mawrs', - 'maxed', - 'maxes', - 'maxis', - 'mayan', - 'mayas', - 'mayed', - 'mayos', - 'mayst', - 'mazed', - 'mazer', - 'mazes', - 'mazey', - 'mazut', - 'mbira', - 'meads', - 'meals', - 'meane', - 'means', - 'meany', - 'meare', - 'mease', - 'meath', - 'meats', - 'mebos', - 'mechs', - 'mecks', - 'medii', - 'medle', - 'meeds', - 'meers', - 'meets', - 'meffs', - 'meins', - 'meint', - 'meiny', - 'meith', - 'mekka', - 'melas', - 'melba', - 'melds', - 'melic', - 'melik', - 'mells', - 'melts', - 'melty', - 'memes', - 'memos', - 'menad', - 'mends', - 'mened', - 'menes', - 'menge', - 'mengs', - 'mensa', - 'mense', - 'mensh', - 'menta', - 'mento', - 'menus', - 'meous', - 'meows', - 'merch', - 'mercs', - 'merde', - 'mered', - 'merel', - 'merer', - 'meres', - 'meril', - 'meris', - 'merks', - 'merle', - 'merls', - 'merse', - 'mesal', - 'mesas', - 'mesel', - 'meses', - 'meshy', - 'mesic', - 'mesne', - 'meson', - 'messy', - 'mesto', - 'meted', - 'metes', - 'metho', - 'meths', - 'metic', - 'metif', - 'metis', - 'metol', - 'metre', - 'meuse', - 'meved', - 'meves', - 'mewed', - 'mewls', - 'meynt', - 'mezes', - 'mezze', - 'mezzo', - 'mhorr', - 'miaou', - 'miaow', - 'miasm', - 'miaul', - 'micas', - 'miche', - 'micht', - 'micks', - 'micky', - 'micos', - 'micra', - 'middy', - 'midgy', - 'midis', - 'miens', - 'mieve', - 'miffs', - 'miffy', - 'mifty', - 'miggs', - 'mihas', - 'mihis', - 'miked', - 'mikes', - 'mikra', - 'mikva', - 'milch', - 'milds', - 'miler', - 'miles', - 'milfs', - 'milia', - 'milko', - 'milks', - 'mille', - 'mills', - 'milor', - 'milos', - 'milpa', - 'milts', - 'milty', - 'miltz', - 'mimed', - 'mimeo', - 'mimer', - 'mimes', - 'mimsy', - 'minae', - 'minar', - 'minas', - 'mincy', - 'minds', - 'mined', - 'mines', - 'minge', - 'mings', - 'mingy', - 'minis', - 'minke', - 'minks', - 'minny', - 'minos', - 'mints', - 'mired', - 'mires', - 'mirex', - 'mirid', - 'mirin', - 'mirks', - 'mirky', - 'mirly', - 'miros', - 'mirvs', - 'mirza', - 'misch', - 'misdo', - 'mises', - 'misgo', - 'misos', - 'missa', - 'mists', - 'misty', - 'mitch', - 'miter', - 'mites', - 'mitis', - 'mitre', - 'mitts', - 'mixed', - 'mixen', - 'mixer', - 'mixes', - 'mixte', - 'mixup', - 'mizen', - 'mizzy', - 'mneme', - 'moans', - 'moats', - 'mobby', - 'mobes', - 'mobey', - 'mobie', - 'moble', - 'mochi', - 'mochs', - 'mochy', - 'mocks', - 'moder', - 'modes', - 'modge', - 'modii', - 'modus', - 'moers', - 'mofos', - 'moggy', - 'mohel', - 'mohos', - 'mohrs', - 'mohua', - 'mohur', - 'moile', - 'moils', - 'moira', - 'moire', - 'moits', - 'mojos', - 'mokes', - 'mokis', - 'mokos', - 'molal', - 'molas', - 'molds', - 'moled', - 'moles', - 'molla', - 'molls', - 'molly', - 'molto', - 'molts', - 'molys', - 'momes', - 'momma', - 'mommy', - 'momus', - 'monad', - 'monal', - 'monas', - 'monde', - 'mondo', - 'moner', - 'mongo', - 'mongs', - 'monic', - 'monie', - 'monks', - 'monos', - 'monte', - 'monty', - 'moobs', - 'mooch', - 'moods', - 'mooed', - 'mooks', - 'moola', - 'mooli', - 'mools', - 'mooly', - 'moong', - 'moons', - 'moony', - 'moops', - 'moors', - 'moory', - 'moots', - 'moove', - 'moped', - 'moper', - 'mopes', - 'mopey', - 'moppy', - 'mopsy', - 'mopus', - 'morae', - 'moras', - 'morat', - 'moray', - 'morel', - 'mores', - 'moria', - 'morne', - 'morns', - 'morra', - 'morro', - 'morse', - 'morts', - 'mosed', - 'moses', - 'mosey', - 'mosks', - 'mosso', - 'moste', - 'mosts', - 'moted', - 'moten', - 'motes', - 'motet', - 'motey', - 'moths', - 'mothy', - 'motis', - 'motte', - 'motts', - 'motty', - 'motus', - 'motza', - 'mouch', - 'moues', - 'mould', - 'mouls', - 'moups', - 'moust', - 'mousy', - 'moved', - 'moves', - 'mowas', - 'mowed', - 'mowra', - 'moxas', - 'moxie', - 'moyas', - 'moyle', - 'moyls', - 'mozed', - 'mozes', - 'mozos', - 'mpret', - 'mucho', - 'mucic', - 'mucid', - 'mucin', - 'mucks', - 'mucor', - 'mucro', - 'mudge', - 'mudir', - 'mudra', - 'muffs', - 'mufti', - 'mugga', - 'muggs', - 'muggy', - 'muhly', - 'muids', - 'muils', - 'muirs', - 'muist', - 'mujik', - 'mulct', - 'muled', - 'mules', - 'muley', - 'mulga', - 'mulie', - 'mulla', - 'mulls', - 'mulse', - 'mulsh', - 'mumms', - 'mumps', - 'mumsy', - 'mumus', - 'munga', - 'munge', - 'mungo', - 'mungs', - 'munis', - 'munts', - 'muntu', - 'muons', - 'muras', - 'mured', - 'mures', - 'murex', - 'murid', - 'murks', - 'murls', - 'murly', - 'murra', - 'murre', - 'murri', - 'murrs', - 'murry', - 'murti', - 'murva', - 'musar', - 'musca', - 'mused', - 'muser', - 'muses', - 'muset', - 'musha', - 'musit', - 'musks', - 'musos', - 'musse', - 'mussy', - 'musth', - 'musts', - 'mutch', - 'muted', - 'muter', - 'mutes', - 'mutha', - 'mutis', - 'muton', - 'mutts', - 'muxed', - 'muxes', - 'muzak', - 'muzzy', - 'mvule', - 'myall', - 'mylar', - 'mynah', - 'mynas', - 'myoid', - 'myoma', - 'myope', - 'myops', - 'myopy', - 'mysid', - 'mythi', - 'myths', - 'mythy', - 'myxos', - 'mzees', - 'naams', - 'naans', - 'nabes', - 'nabis', - 'nabks', - 'nabla', - 'nabob', - 'nache', - 'nacho', - 'nacre', - 'nadas', - 'naeve', - 'naevi', - 'naffs', - 'nagas', - 'naggy', - 'nagor', - 'nahal', - 'naiad', - 'naifs', - 'naiks', - 'nails', - 'naira', - 'nairu', - 'naked', - 'naker', - 'nakfa', - 'nalas', - 'naled', - 'nalla', - 'named', - 'namer', - 'names', - 'namma', - 'namus', - 'nanas', - 'nance', - 'nancy', - 'nandu', - 'nanna', - 'nanos', - 'nanua', - 'napas', - 'naped', - 'napes', - 'napoo', - 'nappa', - 'nappe', - 'nappy', - 'naras', - 'narco', - 'narcs', - 'nards', - 'nares', - 'naric', - 'naris', - 'narks', - 'narky', - 'narre', - 'nashi', - 'natch', - 'nates', - 'natis', - 'natty', - 'nauch', - 'naunt', - 'navar', - 'naves', - 'navew', - 'navvy', - 'nawab', - 'nazes', - 'nazir', - 'nazis', - 'nduja', - 'neafe', - 'neals', - 'neaps', - 'nears', - 'neath', - 'neats', - 'nebek', - 'nebel', - 'necks', - 'neddy', - 'needs', - 'neeld', - 'neele', - 'neemb', - 'neems', - 'neeps', - 'neese', - 'neeze', - 'negro', - 'negus', - 'neifs', - 'neist', - 'neive', - 'nelis', - 'nelly', - 'nemas', - 'nemns', - 'nempt', - 'nenes', - 'neons', - 'neper', - 'nepit', - 'neral', - 'nerds', - 'nerka', - 'nerks', - 'nerol', - 'nerts', - 'nertz', - 'nervy', - 'nests', - 'netes', - 'netop', - 'netts', - 'netty', - 'neuks', - 'neume', - 'neums', - 'nevel', - 'neves', - 'nevus', - 'newbs', - 'newed', - 'newel', - 'newie', - 'newsy', - 'newts', - 'nexts', - 'nexus', - 'ngaio', - 'ngana', - 'ngati', - 'ngoma', - 'ngwee', - 'nicad', - 'nicht', - 'nicks', - 'nicol', - 'nidal', - 'nided', - 'nides', - 'nidor', - 'nidus', - 'niefs', - 'nieve', - 'nifes', - 'niffs', - 'niffy', - 'nifty', - 'niger', - 'nighs', - 'nihil', - 'nikab', - 'nikah', - 'nikau', - 'nills', - 'nimbi', - 'nimbs', - 'nimps', - 'niner', - 'nines', - 'ninon', - 'nipas', - 'nippy', - 'niqab', - 'nirls', - 'nirly', - 'nisei', - 'nisse', - 'nisus', - 'niter', - 'nites', - 'nitid', - 'niton', - 'nitre', - 'nitro', - 'nitry', - 'nitty', - 'nival', - 'nixed', - 'nixer', - 'nixes', - 'nixie', - 'nizam', - 'nkosi', - 'noahs', - 'nobby', - 'nocks', - 'nodal', - 'noddy', - 'nodes', - 'nodus', - 'noels', - 'noggs', - 'nohow', - 'noils', - 'noily', - 'noint', - 'noirs', - 'noles', - 'nolls', - 'nolos', - 'nomas', - 'nomen', - 'nomes', - 'nomic', - 'nomoi', - 'nomos', - 'nonas', - 'nonce', - 'nones', - 'nonet', - 'nongs', - 'nonis', - 'nonny', - 'nonyl', - 'noobs', - 'nooit', - 'nooks', - 'nooky', - 'noons', - 'noops', - 'nopal', - 'noria', - 'noris', - 'norks', - 'norma', - 'norms', - 'nosed', - 'noser', - 'noses', - 'notal', - 'noted', - 'noter', - 'notes', - 'notum', - 'nould', - 'noule', - 'nouls', - 'nouns', - 'nouny', - 'noups', - 'novae', - 'novas', - 'novum', - 'noway', - 'nowed', - 'nowls', - 'nowts', - 'nowty', - 'noxal', - 'noxes', - 'noyau', - 'noyed', - 'noyes', - 'nubby', - 'nubia', - 'nucha', - 'nuddy', - 'nuder', - 'nudes', - 'nudie', - 'nudzh', - 'nuffs', - 'nugae', - 'nuked', - 'nukes', - 'nulla', - 'nulls', - 'numbs', - 'numen', - 'nummy', - 'nunny', - 'nurds', - 'nurdy', - 'nurls', - 'nurrs', - 'nutso', - 'nutsy', - 'nyaff', - 'nyala', - 'nying', - 'nyssa', - 'oaked', - 'oaker', - 'oakum', - 'oared', - 'oases', - 'oasis', - 'oasts', - 'oaten', - 'oater', - 'oaths', - 'oaves', - 'obang', - 'obeah', - 'obeli', - 'obeys', - 'obias', - 'obied', - 'obiit', - 'obits', - 'objet', - 'oboes', - 'obole', - 'oboli', - 'obols', - 'occam', - 'ocher', - 'oches', - 'ochre', - 'ochry', - 'ocker', - 'ocrea', - 'octad', - 'octan', - 'octas', - 'octyl', - 'oculi', - 'odahs', - 'odals', - 'odeon', - 'odeum', - 'odism', - 'odist', - 'odium', - 'odors', - 'odour', - 'odyle', - 'odyls', - 'ofays', - 'offed', - 'offie', - 'oflag', - 'ofter', - 'ogams', - 'ogeed', - 'ogees', - 'oggin', - 'ogham', - 'ogive', - 'ogled', - 'ogler', - 'ogles', - 'ogmic', - 'ogres', - 'ohias', - 'ohing', - 'ohmic', - 'ohone', - 'oidia', - 'oiled', - 'oiler', - 'oinks', - 'oints', - 'ojime', - 'okapi', - 'okays', - 'okehs', - 'okras', - 'oktas', - 'oldie', - 'oleic', - 'olein', - 'olent', - 'oleos', - 'oleum', - 'olios', - 'ollas', - 'ollav', - 'oller', - 'ollie', - 'ology', - 'olpae', - 'olpes', - 'omasa', - 'omber', - 'ombus', - 'omens', - 'omers', - 'omits', - 'omlah', - 'omovs', - 'omrah', - 'oncer', - 'onces', - 'oncet', - 'oncus', - 'onely', - 'oners', - 'onery', - 'onium', - 'onkus', - 'onlay', - 'onned', - 'ontic', - 'oobit', - 'oohed', - 'oomph', - 'oonts', - 'ooped', - 'oorie', - 'ooses', - 'ootid', - 'oozed', - 'oozes', - 'opahs', - 'opals', - 'opens', - 'opepe', - 'oping', - 'oppos', - 'opsin', - 'opted', - 'opter', - 'orach', - 'oracy', - 'orals', - 'orang', - 'orant', - 'orate', - 'orbed', - 'orcas', - 'orcin', - 'ordos', - 'oread', - 'orfes', - 'orgia', - 'orgic', - 'orgue', - 'oribi', - 'oriel', - 'orixa', - 'orles', - 'orlon', - 'orlop', - 'ormer', - 'ornis', - 'orpin', - 'orris', - 'ortho', - 'orval', - 'orzos', - 'oscar', - 'oshac', - 'osier', - 'osmic', - 'osmol', - 'ossia', - 'ostia', - 'otaku', - 'otary', - 'ottar', - 'ottos', - 'oubit', - 'oucht', - 'ouens', - 'ouija', - 'oulks', - 'oumas', - 'oundy', - 'oupas', - 'ouped', - 'ouphe', - 'ouphs', - 'ourie', - 'ousel', - 'ousts', - 'outby', - 'outed', - 'outre', - 'outro', - 'outta', - 'ouzel', - 'ouzos', - 'ovals', - 'ovels', - 'ovens', - 'overs', - 'ovist', - 'ovoli', - 'ovolo', - 'ovule', - 'owche', - 'owies', - 'owled', - 'owler', - 'owlet', - 'owned', - 'owres', - 'owrie', - 'owsen', - 'oxbow', - 'oxers', - 'oxeye', - 'oxids', - 'oxies', - 'oxime', - 'oxims', - 'oxlip', - 'oxter', - 'oyers', - 'ozeki', - 'ozzie', - 'paals', - 'paans', - 'pacas', - 'paced', - 'pacer', - 'paces', - 'pacey', - 'pacha', - 'packs', - 'pacos', - 'pacta', - 'pacts', - 'padis', - 'padle', - 'padma', - 'padre', - 'padri', - 'paean', - 'paedo', - 'paeon', - 'paged', - 'pager', - 'pages', - 'pagle', - 'pagod', - 'pagri', - 'paiks', - 'pails', - 'pains', - 'paire', - 'pairs', - 'paisa', - 'paise', - 'pakka', - 'palas', - 'palay', - 'palea', - 'paled', - 'pales', - 'palet', - 'palis', - 'palki', - 'palla', - 'palls', - 'pally', - 'palms', - 'palmy', - 'palpi', - 'palps', - 'palsa', - 'pampa', - 'panax', - 'pance', - 'panda', - 'pands', - 'pandy', - 'paned', - 'panes', - 'panga', - 'pangs', - 'panim', - 'panko', - 'panne', - 'panni', - 'panto', - 'pants', - 'panty', - 'paoli', - 'paolo', - 'papas', - 'papaw', - 'papes', - 'pappi', - 'pappy', - 'parae', - 'paras', - 'parch', - 'pardi', - 'pards', - 'pardy', - 'pared', - 'paren', - 'pareo', - 'pares', - 'pareu', - 'parev', - 'parge', - 'pargo', - 'paris', - 'parki', - 'parks', - 'parky', - 'parle', - 'parly', - 'parma', - 'parol', - 'parps', - 'parra', - 'parrs', - 'parti', - 'parts', - 'parve', - 'parvo', - 'paseo', - 'pases', - 'pasha', - 'pashm', - 'paska', - 'paspy', - 'passe', - 'pasts', - 'pated', - 'paten', - 'pater', - 'pates', - 'paths', - 'patin', - 'patka', - 'patly', - 'patte', - 'patus', - 'pauas', - 'pauls', - 'pavan', - 'paved', - 'paven', - 'paver', - 'paves', - 'pavid', - 'pavin', - 'pavis', - 'pawas', - 'pawaw', - 'pawed', - 'pawer', - 'pawks', - 'pawky', - 'pawls', - 'pawns', - 'paxes', - 'payed', - 'payor', - 'paysd', - 'peage', - 'peags', - 'peaks', - 'peaky', - 'peals', - 'peans', - 'peare', - 'pears', - 'peart', - 'pease', - 'peats', - 'peaty', - 'peavy', - 'peaze', - 'pebas', - 'pechs', - 'pecke', - 'pecks', - 'pecky', - 'pedes', - 'pedis', - 'pedro', - 'peece', - 'peeks', - 'peels', - 'peens', - 'peeoy', - 'peepe', - 'peeps', - 'peers', - 'peery', - 'peeve', - 'peggy', - 'peghs', - 'peins', - 'peise', - 'peize', - 'pekan', - 'pekes', - 'pekin', - 'pekoe', - 'pelas', - 'pelau', - 'peles', - 'pelfs', - 'pells', - 'pelma', - 'pelon', - 'pelta', - 'pelts', - 'pends', - 'pendu', - 'pened', - 'penes', - 'pengo', - 'penie', - 'penis', - 'penks', - 'penna', - 'penni', - 'pents', - 'peons', - 'peony', - 'pepla', - 'pepos', - 'peppy', - 'pepsi', - 'perai', - 'perce', - 'percs', - 'perdu', - 'perdy', - 'perea', - 'peres', - 'peris', - 'perks', - 'perms', - 'perns', - 'perog', - 'perps', - 'perry', - 'perse', - 'perst', - 'perts', - 'perve', - 'pervo', - 'pervs', - 'pervy', - 'pesos', - 'pests', - 'pesty', - 'petar', - 'peter', - 'petit', - 'petre', - 'petri', - 'petti', - 'petto', - 'pewee', - 'pewit', - 'peyse', - 'phage', - 'phang', - 'phare', - 'pharm', - 'pheer', - 'phene', - 'pheon', - 'phese', - 'phial', - 'phish', - 'phizz', - 'phlox', - 'phoca', - 'phono', - 'phons', - 'phots', - 'phpht', - 'phuts', - 'phyla', - 'phyle', - 'piani', - 'pians', - 'pibal', - 'pical', - 'picas', - 'piccy', - 'picks', - 'picot', - 'picra', - 'picul', - 'piend', - 'piers', - 'piert', - 'pieta', - 'piets', - 'piezo', - 'pight', - 'pigmy', - 'piing', - 'pikas', - 'pikau', - 'piked', - 'piker', - 'pikes', - 'pikey', - 'pikis', - 'pikul', - 'pilae', - 'pilaf', - 'pilao', - 'pilar', - 'pilau', - 'pilaw', - 'pilch', - 'pilea', - 'piled', - 'pilei', - 'piler', - 'piles', - 'pilis', - 'pills', - 'pilow', - 'pilum', - 'pilus', - 'pimas', - 'pimps', - 'pinas', - 'pined', - 'pines', - 'pingo', - 'pings', - 'pinko', - 'pinks', - 'pinna', - 'pinny', - 'pinon', - 'pinot', - 'pinta', - 'pints', - 'pinup', - 'pions', - 'piony', - 'pious', - 'pioye', - 'pioys', - 'pipal', - 'pipas', - 'piped', - 'pipes', - 'pipet', - 'pipis', - 'pipit', - 'pippy', - 'pipul', - 'pirai', - 'pirls', - 'pirns', - 'pirog', - 'pisco', - 'pises', - 'pisky', - 'pisos', - 'pissy', - 'piste', - 'pitas', - 'piths', - 'piton', - 'pitot', - 'pitta', - 'piums', - 'pixes', - 'pized', - 'pizes', - 'plaas', - 'plack', - 'plage', - 'plans', - 'plaps', - 'plash', - 'plasm', - 'plast', - 'plats', - 'platt', - 'platy', - 'playa', - 'plays', - 'pleas', - 'plebe', - 'plebs', - 'plena', - 'pleon', - 'plesh', - 'plews', - 'plica', - 'plies', - 'plims', - 'pling', - 'plink', - 'ploat', - 'plods', - 'plong', - 'plonk', - 'plook', - 'plops', - 'plots', - 'plotz', - 'plouk', - 'plows', - 'ploye', - 'ploys', - 'plues', - 'pluff', - 'plugs', - 'plums', - 'plumy', - 'pluot', - 'pluto', - 'plyer', - 'poach', - 'poaka', - 'poake', - 'poboy', - 'pocks', - 'pocky', - 'podal', - 'poddy', - 'podex', - 'podge', - 'podgy', - 'podia', - 'poems', - 'poeps', - 'poets', - 'pogey', - 'pogge', - 'pogos', - 'pohed', - 'poilu', - 'poind', - 'pokal', - 'poked', - 'pokes', - 'pokey', - 'pokie', - 'poled', - 'poler', - 'poles', - 'poley', - 'polio', - 'polis', - 'polje', - 'polks', - 'polls', - 'polly', - 'polos', - 'polts', - 'polys', - 'pombe', - 'pomes', - 'pommy', - 'pomos', - 'pomps', - 'ponce', - 'poncy', - 'ponds', - 'pones', - 'poney', - 'ponga', - 'pongo', - 'pongs', - 'pongy', - 'ponks', - 'ponts', - 'ponty', - 'ponzu', - 'poods', - 'pooed', - 'poofs', - 'poofy', - 'poohs', - 'pooja', - 'pooka', - 'pooks', - 'pools', - 'poons', - 'poops', - 'poopy', - 'poori', - 'poort', - 'poots', - 'poove', - 'poovy', - 'popes', - 'poppa', - 'popsy', - 'porae', - 'poral', - 'pored', - 'porer', - 'pores', - 'porge', - 'porgy', - 'porin', - 'porks', - 'porky', - 'porno', - 'porns', - 'porny', - 'porta', - 'ports', - 'porty', - 'posed', - 'poses', - 'posey', - 'posho', - 'posts', - 'potae', - 'potch', - 'poted', - 'potes', - 'potin', - 'potoo', - 'potsy', - 'potto', - 'potts', - 'potty', - 'pouff', - 'poufs', - 'pouke', - 'pouks', - 'poule', - 'poulp', - 'poult', - 'poupe', - 'poupt', - 'pours', - 'pouts', - 'powan', - 'powin', - 'pownd', - 'powns', - 'powny', - 'powre', - 'poxed', - 'poxes', - 'poynt', - 'poyou', - 'poyse', - 'pozzy', - 'praam', - 'prads', - 'prahu', - 'prams', - 'prana', - 'prang', - 'praos', - 'prase', - 'prate', - 'prats', - 'pratt', - 'praty', - 'praus', - 'prays', - 'predy', - 'preed', - 'prees', - 'preif', - 'prems', - 'premy', - 'prent', - 'preon', - 'preop', - 'preps', - 'presa', - 'prese', - 'prest', - 'preve', - 'prexy', - 'preys', - 'prial', - 'pricy', - 'prief', - 'prier', - 'pries', - 'prigs', - 'prill', - 'prima', - 'primi', - 'primp', - 'prims', - 'primy', - 'prink', - 'prion', - 'prise', - 'priss', - 'proas', - 'probs', - 'prods', - 'proem', - 'profs', - 'progs', - 'proin', - 'proke', - 'prole', - 'proll', - 'promo', - 'proms', - 'pronk', - 'props', - 'prore', - 'proso', - 'pross', - 'prost', - 'prosy', - 'proto', - 'proul', - 'prows', - 'proyn', - 'prunt', - 'pruta', - 'pryer', - 'pryse', - 'pseud', - 'pshaw', - 'psion', - 'psoae', - 'psoai', - 'psoas', - 'psora', - 'psych', - 'psyop', - 'pubco', - 'pubes', - 'pubis', - 'pucan', - 'pucer', - 'puces', - 'pucka', - 'pucks', - 'puddy', - 'pudge', - 'pudic', - 'pudor', - 'pudsy', - 'pudus', - 'puers', - 'puffa', - 'puffs', - 'puggy', - 'pugil', - 'puhas', - 'pujah', - 'pujas', - 'pukas', - 'puked', - 'puker', - 'pukes', - 'pukey', - 'pukka', - 'pukus', - 'pulao', - 'pulas', - 'puled', - 'puler', - 'pules', - 'pulik', - 'pulis', - 'pulka', - 'pulks', - 'pulli', - 'pulls', - 'pully', - 'pulmo', - 'pulps', - 'pulus', - 'pumas', - 'pumie', - 'pumps', - 'punas', - 'punce', - 'punga', - 'pungs', - 'punji', - 'punka', - 'punks', - 'punky', - 'punny', - 'punto', - 'punts', - 'punty', - 'pupae', - 'pupas', - 'pupus', - 'purda', - 'pured', - 'pures', - 'purin', - 'puris', - 'purls', - 'purpy', - 'purrs', - 'pursy', - 'purty', - 'puses', - 'pusle', - 'pussy', - 'putid', - 'puton', - 'putti', - 'putto', - 'putts', - 'puzel', - 'pwned', - 'pyats', - 'pyets', - 'pygal', - 'pyins', - 'pylon', - 'pyned', - 'pynes', - 'pyoid', - 'pyots', - 'pyral', - 'pyran', - 'pyres', - 'pyrex', - 'pyric', - 'pyros', - 'pyxed', - 'pyxes', - 'pyxie', - 'pyxis', - 'pzazz', - 'qadis', - 'qaids', - 'qajaq', - 'qanat', - 'qapik', - 'qibla', - 'qophs', - 'qorma', - 'quads', - 'quaff', - 'quags', - 'quair', - 'quais', - 'quaky', - 'quale', - 'quant', - 'quare', - 'quass', - 'quate', - 'quats', - 'quayd', - 'quays', - 'qubit', - 'quean', - 'queme', - 'quena', - 'quern', - 'queyn', - 'queys', - 'quich', - 'quids', - 'quiff', - 'quims', - 'quina', - 'quine', - 'quino', - 'quins', - 'quint', - 'quipo', - 'quips', - 'quipu', - 'quire', - 'quirt', - 'quist', - 'quits', - 'quoad', - 'quods', - 'quoif', - 'quoin', - 'quoit', - 'quoll', - 'quonk', - 'quops', - 'qursh', - 'quyte', - 'rabat', - 'rabic', - 'rabis', - 'raced', - 'races', - 'rache', - 'racks', - 'racon', - 'radge', - 'radix', - 'radon', - 'raffs', - 'rafts', - 'ragas', - 'ragde', - 'raged', - 'ragee', - 'rager', - 'rages', - 'ragga', - 'raggs', - 'raggy', - 'ragis', - 'ragus', - 'rahed', - 'rahui', - 'raias', - 'raids', - 'raiks', - 'raile', - 'rails', - 'raine', - 'rains', - 'raird', - 'raita', - 'raits', - 'rajas', - 'rajes', - 'raked', - 'rakee', - 'raker', - 'rakes', - 'rakia', - 'rakis', - 'rakus', - 'rales', - 'ramal', - 'ramee', - 'ramet', - 'ramie', - 'ramin', - 'ramis', - 'rammy', - 'ramps', - 'ramus', - 'ranas', - 'rance', - 'rands', - 'ranee', - 'ranga', - 'rangi', - 'rangs', - 'rangy', - 'ranid', - 'ranis', - 'ranke', - 'ranks', - 'rants', - 'raped', - 'raper', - 'rapes', - 'raphe', - 'rappe', - 'rared', - 'raree', - 'rares', - 'rarks', - 'rased', - 'raser', - 'rases', - 'rasps', - 'rasse', - 'rasta', - 'ratal', - 'ratan', - 'ratas', - 'ratch', - 'rated', - 'ratel', - 'rater', - 'rates', - 'ratha', - 'rathe', - 'raths', - 'ratoo', - 'ratos', - 'ratus', - 'rauns', - 'raupo', - 'raved', - 'ravel', - 'raver', - 'raves', - 'ravey', - 'ravin', - 'rawer', - 'rawin', - 'rawly', - 'rawns', - 'raxed', - 'raxes', - 'rayah', - 'rayas', - 'rayed', - 'rayle', - 'rayne', - 'razed', - 'razee', - 'razer', - 'razes', - 'razoo', - 'readd', - 'reads', - 'reais', - 'reaks', - 'realo', - 'reals', - 'reame', - 'reams', - 'reamy', - 'reans', - 'reaps', - 'rears', - 'reast', - 'reata', - 'reate', - 'reave', - 'rebbe', - 'rebec', - 'rebid', - 'rebit', - 'rebop', - 'rebuy', - 'recal', - 'recce', - 'recco', - 'reccy', - 'recit', - 'recks', - 'recon', - 'recta', - 'recti', - 'recto', - 'redan', - 'redds', - 'reddy', - 'reded', - 'redes', - 'redia', - 'redid', - 'redip', - 'redly', - 'redon', - 'redos', - 'redox', - 'redry', - 'redub', - 'redux', - 'redye', - 'reech', - 'reede', - 'reeds', - 'reefs', - 'reefy', - 'reeks', - 'reeky', - 'reels', - 'reens', - 'reest', - 'reeve', - 'refed', - 'refel', - 'reffo', - 'refis', - 'refix', - 'refly', - 'refry', - 'regar', - 'reges', - 'reggo', - 'regie', - 'regma', - 'regna', - 'regos', - 'regur', - 'rehem', - 'reifs', - 'reify', - 'reiki', - 'reiks', - 'reink', - 'reins', - 'reird', - 'reist', - 'reive', - 'rejig', - 'rejon', - 'reked', - 'rekes', - 'rekey', - 'relet', - 'relie', - 'relit', - 'rello', - 'reman', - 'remap', - 'remen', - 'remet', - 'remex', - 'remix', - 'renay', - 'rends', - 'reney', - 'renga', - 'renig', - 'renin', - 'renne', - 'renos', - 'rente', - 'rents', - 'reoil', - 'reorg', - 'repeg', - 'repin', - 'repla', - 'repos', - 'repot', - 'repps', - 'repro', - 'reran', - 'rerig', - 'resat', - 'resaw', - 'resay', - 'resee', - 'reses', - 'resew', - 'resid', - 'resit', - 'resod', - 'resow', - 'resto', - 'rests', - 'resty', - 'resus', - 'retag', - 'retax', - 'retem', - 'retia', - 'retie', - 'retox', - 'revet', - 'revie', - 'rewan', - 'rewax', - 'rewed', - 'rewet', - 'rewin', - 'rewon', - 'rewth', - 'rexes', - 'rezes', - 'rheas', - 'rheme', - 'rheum', - 'rhies', - 'rhime', - 'rhine', - 'rhody', - 'rhomb', - 'rhone', - 'rhumb', - 'rhyne', - 'rhyta', - 'riads', - 'rials', - 'riant', - 'riata', - 'ribas', - 'ribby', - 'ribes', - 'riced', - 'ricer', - 'rices', - 'ricey', - 'richt', - 'ricin', - 'ricks', - 'rides', - 'ridgy', - 'ridic', - 'riels', - 'riems', - 'rieve', - 'rifer', - 'riffs', - 'rifte', - 'rifts', - 'rifty', - 'riggs', - 'rigol', - 'riled', - 'riles', - 'riley', - 'rille', - 'rills', - 'rimae', - 'rimed', - 'rimer', - 'rimes', - 'rimus', - 'rinds', - 'rindy', - 'rines', - 'rings', - 'rinks', - 'rioja', - 'riots', - 'riped', - 'ripes', - 'ripps', - 'rises', - 'rishi', - 'risks', - 'risps', - 'risus', - 'rites', - 'ritts', - 'ritzy', - 'rivas', - 'rived', - 'rivel', - 'riven', - 'rives', - 'riyal', - 'rizas', - 'roads', - 'roams', - 'roans', - 'roars', - 'roary', - 'roate', - 'robed', - 'robes', - 'roble', - 'rocks', - 'roded', - 'rodes', - 'roguy', - 'rohes', - 'roids', - 'roils', - 'roily', - 'roins', - 'roist', - 'rojak', - 'rojis', - 'roked', - 'roker', - 'rokes', - 'rolag', - 'roles', - 'rolfs', - 'rolls', - 'romal', - 'roman', - 'romeo', - 'romps', - 'ronde', - 'rondo', - 'roneo', - 'rones', - 'ronin', - 'ronne', - 'ronte', - 'ronts', - 'roods', - 'roofs', - 'roofy', - 'rooks', - 'rooky', - 'rooms', - 'roons', - 'roops', - 'roopy', - 'roosa', - 'roose', - 'roots', - 'rooty', - 'roped', - 'roper', - 'ropes', - 'ropey', - 'roque', - 'roral', - 'rores', - 'roric', - 'rorid', - 'rorie', - 'rorts', - 'rorty', - 'rosed', - 'roses', - 'roset', - 'roshi', - 'rosin', - 'rosit', - 'rosti', - 'rosts', - 'rotal', - 'rotan', - 'rotas', - 'rotch', - 'roted', - 'rotes', - 'rotis', - 'rotls', - 'roton', - 'rotos', - 'rotte', - 'rouen', - 'roues', - 'roule', - 'rouls', - 'roums', - 'roups', - 'roupy', - 'roust', - 'routh', - 'routs', - 'roved', - 'roven', - 'roves', - 'rowan', - 'rowed', - 'rowel', - 'rowen', - 'rowie', - 'rowme', - 'rownd', - 'rowth', - 'rowts', - 'royne', - 'royst', - 'rozet', - 'rozit', - 'ruana', - 'rubai', - 'rubby', - 'rubel', - 'rubes', - 'rubin', - 'ruble', - 'rubli', - 'rubus', - 'ruche', - 'rucks', - 'rudas', - 'rudds', - 'rudes', - 'rudie', - 'rudis', - 'rueda', - 'ruers', - 'ruffe', - 'ruffs', - 'rugae', - 'rugal', - 'ruggy', - 'ruing', - 'ruins', - 'rukhs', - 'ruled', - 'rules', - 'rumal', - 'rumbo', - 'rumen', - 'rumes', - 'rumly', - 'rummy', - 'rumpo', - 'rumps', - 'rumpy', - 'runch', - 'runds', - 'runed', - 'runes', - 'rungs', - 'runic', - 'runny', - 'runts', - 'runty', - 'rupia', - 'rurps', - 'rurus', - 'rusas', - 'ruses', - 'rushy', - 'rusks', - 'rusma', - 'russe', - 'rusts', - 'ruths', - 'rutin', - 'rutty', - 'ryals', - 'rybat', - 'ryked', - 'rykes', - 'rymme', - 'rynds', - 'ryots', - 'ryper', - 'saags', - 'sabal', - 'sabed', - 'saber', - 'sabes', - 'sabha', - 'sabin', - 'sabir', - 'sable', - 'sabot', - 'sabra', - 'sabre', - 'sacks', - 'sacra', - 'saddo', - 'sades', - 'sadhe', - 'sadhu', - 'sadis', - 'sados', - 'sadza', - 'safed', - 'safes', - 'sagas', - 'sager', - 'sages', - 'saggy', - 'sagos', - 'sagum', - 'saheb', - 'sahib', - 'saice', - 'saick', - 'saics', - 'saids', - 'saiga', - 'sails', - 'saims', - 'saine', - 'sains', - 'sairs', - 'saist', - 'saith', - 'sajou', - 'sakai', - 'saker', - 'sakes', - 'sakia', - 'sakis', - 'sakti', - 'salal', - 'salat', - 'salep', - 'sales', - 'salet', - 'salic', - 'salix', - 'salle', - 'salmi', - 'salol', - 'salop', - 'salpa', - 'salps', - 'salse', - 'salto', - 'salts', - 'salue', - 'salut', - 'saman', - 'samas', - 'samba', - 'sambo', - 'samek', - 'samel', - 'samen', - 'sames', - 'samey', - 'samfu', - 'sammy', - 'sampi', - 'samps', - 'sands', - 'saned', - 'sanes', - 'sanga', - 'sangh', - 'sango', - 'sangs', - 'sanko', - 'sansa', - 'santo', - 'sants', - 'saola', - 'sapan', - 'sapid', - 'sapor', - 'saran', - 'sards', - 'sared', - 'saree', - 'sarge', - 'sargo', - 'sarin', - 'saris', - 'sarks', - 'sarky', - 'sarod', - 'saros', - 'sarus', - 'saser', - 'sasin', - 'sasse', - 'satai', - 'satay', - 'sated', - 'satem', - 'sates', - 'satis', - 'sauba', - 'sauch', - 'saugh', - 'sauls', - 'sault', - 'saunt', - 'saury', - 'sauts', - 'saved', - 'saver', - 'saves', - 'savey', - 'savin', - 'sawah', - 'sawed', - 'sawer', - 'saxes', - 'sayed', - 'sayer', - 'sayid', - 'sayne', - 'sayon', - 'sayst', - 'sazes', - 'scabs', - 'scads', - 'scaff', - 'scags', - 'scail', - 'scala', - 'scall', - 'scams', - 'scand', - 'scans', - 'scapa', - 'scape', - 'scapi', - 'scarp', - 'scars', - 'scart', - 'scath', - 'scats', - 'scatt', - 'scaud', - 'scaup', - 'scaur', - 'scaws', - 'sceat', - 'scena', - 'scend', - 'schav', - 'schmo', - 'schul', - 'schwa', - 'sclim', - 'scody', - 'scogs', - 'scoog', - 'scoot', - 'scopa', - 'scops', - 'scots', - 'scoug', - 'scoup', - 'scowp', - 'scows', - 'scrab', - 'scrae', - 'scrag', - 'scran', - 'scrat', - 'scraw', - 'scray', - 'scrim', - 'scrip', - 'scrob', - 'scrod', - 'scrog', - 'scrow', - 'scudi', - 'scudo', - 'scuds', - 'scuff', - 'scuft', - 'scugs', - 'sculk', - 'scull', - 'sculp', - 'sculs', - 'scums', - 'scups', - 'scurf', - 'scurs', - 'scuse', - 'scuta', - 'scute', - 'scuts', - 'scuzz', - 'scyes', - 'sdayn', - 'sdein', - 'seals', - 'seame', - 'seams', - 'seamy', - 'seans', - 'seare', - 'sears', - 'sease', - 'seats', - 'seaze', - 'sebum', - 'secco', - 'sechs', - 'sects', - 'seder', - 'sedes', - 'sedge', - 'sedgy', - 'sedum', - 'seeds', - 'seeks', - 'seeld', - 'seels', - 'seely', - 'seems', - 'seeps', - 'seepy', - 'seers', - 'sefer', - 'segar', - 'segni', - 'segno', - 'segol', - 'segos', - 'sehri', - 'seifs', - 'seils', - 'seine', - 'seirs', - 'seise', - 'seism', - 'seity', - 'seiza', - 'sekos', - 'sekts', - 'selah', - 'seles', - 'selfs', - 'sella', - 'selle', - 'sells', - 'selva', - 'semee', - 'semes', - 'semie', - 'semis', - 'senas', - 'sends', - 'senes', - 'sengi', - 'senna', - 'senor', - 'sensa', - 'sensi', - 'sente', - 'senti', - 'sents', - 'senvy', - 'senza', - 'sepad', - 'sepal', - 'sepic', - 'sepoy', - 'septa', - 'septs', - 'serac', - 'serai', - 'seral', - 'sered', - 'serer', - 'seres', - 'serfs', - 'serge', - 'seric', - 'serin', - 'serks', - 'seron', - 'serow', - 'serra', - 'serre', - 'serrs', - 'serry', - 'servo', - 'sesey', - 'sessa', - 'setae', - 'setal', - 'seton', - 'setts', - 'sewan', - 'sewar', - 'sewed', - 'sewel', - 'sewen', - 'sewin', - 'sexed', - 'sexer', - 'sexes', - 'sexto', - 'sexts', - 'seyen', - 'shads', - 'shags', - 'shahs', - 'shako', - 'shakt', - 'shalm', - 'shaly', - 'shama', - 'shams', - 'shand', - 'shans', - 'shaps', - 'sharn', - 'shash', - 'shaul', - 'shawm', - 'shawn', - 'shaws', - 'shaya', - 'shays', - 'shchi', - 'sheaf', - 'sheal', - 'sheas', - 'sheds', - 'sheel', - 'shend', - 'shent', - 'sheol', - 'sherd', - 'shere', - 'shero', - 'shets', - 'sheva', - 'shewn', - 'shews', - 'shiai', - 'shiel', - 'shier', - 'shies', - 'shill', - 'shily', - 'shims', - 'shins', - 'ships', - 'shirr', - 'shirs', - 'shish', - 'shiso', - 'shist', - 'shite', - 'shits', - 'shiur', - 'shiva', - 'shive', - 'shivs', - 'shlep', - 'shlub', - 'shmek', - 'shmoe', - 'shoat', - 'shoed', - 'shoer', - 'shoes', - 'shogi', - 'shogs', - 'shoji', - 'shojo', - 'shola', - 'shool', - 'shoon', - 'shoos', - 'shope', - 'shops', - 'shorl', - 'shote', - 'shots', - 'shott', - 'showd', - 'shows', - 'shoyu', - 'shred', - 'shris', - 'shrow', - 'shtik', - 'shtum', - 'shtup', - 'shule', - 'shuln', - 'shuls', - 'shuns', - 'shura', - 'shute', - 'shuts', - 'shwas', - 'shyer', - 'sials', - 'sibbs', - 'sibyl', - 'sices', - 'sicht', - 'sicko', - 'sicks', - 'sicky', - 'sidas', - 'sided', - 'sider', - 'sides', - 'sidha', - 'sidhe', - 'sidle', - 'sield', - 'siens', - 'sient', - 'sieth', - 'sieur', - 'sifts', - 'sighs', - 'sigil', - 'sigla', - 'signa', - 'signs', - 'sijos', - 'sikas', - 'siker', - 'sikes', - 'silds', - 'siled', - 'silen', - 'siler', - 'siles', - 'silex', - 'silks', - 'sills', - 'silos', - 'silts', - 'silty', - 'silva', - 'simar', - 'simas', - 'simba', - 'simis', - 'simps', - 'simul', - 'sinds', - 'sined', - 'sines', - 'sings', - 'sinhs', - 'sinks', - 'sinky', - 'sinus', - 'siped', - 'sipes', - 'sippy', - 'sired', - 'siree', - 'sires', - 'sirih', - 'siris', - 'siroc', - 'sirra', - 'sirup', - 'sisal', - 'sises', - 'sista', - 'sists', - 'sitar', - 'sited', - 'sites', - 'sithe', - 'sitka', - 'situp', - 'situs', - 'siver', - 'sixer', - 'sixes', - 'sixmo', - 'sixte', - 'sizar', - 'sized', - 'sizel', - 'sizer', - 'sizes', - 'skags', - 'skail', - 'skald', - 'skank', - 'skart', - 'skats', - 'skatt', - 'skaws', - 'skean', - 'skear', - 'skeds', - 'skeed', - 'skeef', - 'skeen', - 'skeer', - 'skees', - 'skeet', - 'skegg', - 'skegs', - 'skein', - 'skelf', - 'skell', - 'skelm', - 'skelp', - 'skene', - 'skens', - 'skeos', - 'skeps', - 'skers', - 'skets', - 'skews', - 'skids', - 'skied', - 'skies', - 'skiey', - 'skimo', - 'skims', - 'skink', - 'skins', - 'skint', - 'skios', - 'skips', - 'skirl', - 'skirr', - 'skite', - 'skits', - 'skive', - 'skivy', - 'sklim', - 'skoal', - 'skody', - 'skoff', - 'skogs', - 'skols', - 'skool', - 'skort', - 'skosh', - 'skran', - 'skrik', - 'skuas', - 'skugs', - 'skyed', - 'skyer', - 'skyey', - 'skyfs', - 'skyre', - 'skyrs', - 'skyte', - 'slabs', - 'slade', - 'slaes', - 'slags', - 'slaid', - 'slake', - 'slams', - 'slane', - 'slank', - 'slaps', - 'slart', - 'slats', - 'slaty', - 'slaws', - 'slays', - 'slebs', - 'sleds', - 'sleer', - 'slews', - 'sleys', - 'slier', - 'slily', - 'slims', - 'slipe', - 'slips', - 'slipt', - 'slish', - 'slits', - 'slive', - 'sloan', - 'slobs', - 'sloes', - 'slogs', - 'sloid', - 'slojd', - 'slomo', - 'sloom', - 'sloot', - 'slops', - 'slopy', - 'slorm', - 'slots', - 'slove', - 'slows', - 'sloyd', - 'slubb', - 'slubs', - 'slued', - 'slues', - 'sluff', - 'slugs', - 'sluit', - 'slums', - 'slurb', - 'slurs', - 'sluse', - 'sluts', - 'slyer', - 'slype', - 'smaak', - 'smaik', - 'smalm', - 'smalt', - 'smarm', - 'smaze', - 'smeek', - 'smees', - 'smeik', - 'smeke', - 'smerk', - 'smews', - 'smirr', - 'smirs', - 'smits', - 'smogs', - 'smoko', - 'smolt', - 'smoor', - 'smoot', - 'smore', - 'smorg', - 'smout', - 'smowt', - 'smugs', - 'smurs', - 'smush', - 'smuts', - 'snabs', - 'snafu', - 'snags', - 'snaps', - 'snarf', - 'snark', - 'snars', - 'snary', - 'snash', - 'snath', - 'snaws', - 'snead', - 'sneap', - 'snebs', - 'sneck', - 'sneds', - 'sneed', - 'snees', - 'snell', - 'snibs', - 'snick', - 'snies', - 'snift', - 'snigs', - 'snips', - 'snipy', - 'snirt', - 'snits', - 'snobs', - 'snods', - 'snoek', - 'snoep', - 'snogs', - 'snoke', - 'snood', - 'snook', - 'snool', - 'snoot', - 'snots', - 'snowk', - 'snows', - 'snubs', - 'snugs', - 'snush', - 'snyes', - 'soaks', - 'soaps', - 'soare', - 'soars', - 'soave', - 'sobas', - 'socas', - 'soces', - 'socko', - 'socks', - 'socle', - 'sodas', - 'soddy', - 'sodic', - 'sodom', - 'sofar', - 'sofas', - 'softa', - 'softs', - 'softy', - 'soger', - 'sohur', - 'soils', - 'soily', - 'sojas', - 'sojus', - 'sokah', - 'soken', - 'sokes', - 'sokol', - 'solah', - 'solan', - 'solas', - 'solde', - 'soldi', - 'soldo', - 'solds', - 'soled', - 'solei', - 'soler', - 'soles', - 'solon', - 'solos', - 'solum', - 'solus', - 'soman', - 'somas', - 'sonce', - 'sonde', - 'sones', - 'songs', - 'sonly', - 'sonne', - 'sonny', - 'sonse', - 'sonsy', - 'sooey', - 'sooks', - 'sooky', - 'soole', - 'sools', - 'sooms', - 'soops', - 'soote', - 'soots', - 'sophs', - 'sophy', - 'sopor', - 'soppy', - 'sopra', - 'soral', - 'soras', - 'sorbo', - 'sorbs', - 'sorda', - 'sordo', - 'sords', - 'sored', - 'soree', - 'sorel', - 'sorer', - 'sores', - 'sorex', - 'sorgo', - 'sorns', - 'sorra', - 'sorta', - 'sorts', - 'sorus', - 'soths', - 'sotol', - 'souce', - 'souct', - 'sough', - 'souks', - 'souls', - 'soums', - 'soups', - 'soupy', - 'sours', - 'souse', - 'souts', - 'sowar', - 'sowce', - 'sowed', - 'sowff', - 'sowfs', - 'sowle', - 'sowls', - 'sowms', - 'sownd', - 'sowne', - 'sowps', - 'sowse', - 'sowth', - 'soyas', - 'soyle', - 'soyuz', - 'sozin', - 'spacy', - 'spado', - 'spaed', - 'spaer', - 'spaes', - 'spags', - 'spahi', - 'spail', - 'spain', - 'spait', - 'spake', - 'spald', - 'spale', - 'spall', - 'spalt', - 'spams', - 'spane', - 'spang', - 'spans', - 'spard', - 'spars', - 'spart', - 'spate', - 'spats', - 'spaul', - 'spawl', - 'spaws', - 'spayd', - 'spays', - 'spaza', - 'spazz', - 'speal', - 'spean', - 'speat', - 'specs', - 'spect', - 'speel', - 'speer', - 'speil', - 'speir', - 'speks', - 'speld', - 'spelk', - 'speos', - 'spets', - 'speug', - 'spews', - 'spewy', - 'spial', - 'spica', - 'spick', - 'spics', - 'spide', - 'spier', - 'spies', - 'spiff', - 'spifs', - 'spiks', - 'spile', - 'spims', - 'spina', - 'spink', - 'spins', - 'spirt', - 'spiry', - 'spits', - 'spitz', - 'spivs', - 'splay', - 'splog', - 'spode', - 'spods', - 'spoom', - 'spoor', - 'spoot', - 'spork', - 'sposh', - 'spots', - 'sprad', - 'sprag', - 'sprat', - 'spred', - 'sprew', - 'sprit', - 'sprod', - 'sprog', - 'sprue', - 'sprug', - 'spuds', - 'spued', - 'spuer', - 'spues', - 'spugs', - 'spule', - 'spume', - 'spumy', - 'spurs', - 'sputa', - 'spyal', - 'spyre', - 'squab', - 'squaw', - 'squeg', - 'squid', - 'squit', - 'squiz', - 'stabs', - 'stade', - 'stags', - 'stagy', - 'staig', - 'stane', - 'stang', - 'staph', - 'staps', - 'starn', - 'starr', - 'stars', - 'stats', - 'staun', - 'staws', - 'stays', - 'stean', - 'stear', - 'stedd', - 'stede', - 'steds', - 'steek', - 'steem', - 'steen', - 'steil', - 'stela', - 'stele', - 'stell', - 'steme', - 'stems', - 'stend', - 'steno', - 'stens', - 'stent', - 'steps', - 'stept', - 'stere', - 'stets', - 'stews', - 'stewy', - 'steys', - 'stich', - 'stied', - 'sties', - 'stilb', - 'stile', - 'stime', - 'stims', - 'stimy', - 'stipa', - 'stipe', - 'stire', - 'stirk', - 'stirp', - 'stirs', - 'stive', - 'stivy', - 'stoae', - 'stoai', - 'stoas', - 'stoat', - 'stobs', - 'stoep', - 'stogy', - 'stoit', - 'stoln', - 'stoma', - 'stond', - 'stong', - 'stonk', - 'stonn', - 'stook', - 'stoor', - 'stope', - 'stops', - 'stopt', - 'stoss', - 'stots', - 'stott', - 'stoun', - 'stoup', - 'stour', - 'stown', - 'stowp', - 'stows', - 'strad', - 'strae', - 'strag', - 'strak', - 'strep', - 'strew', - 'stria', - 'strig', - 'strim', - 'strop', - 'strow', - 'stroy', - 'strum', - 'stubs', - 'stude', - 'studs', - 'stull', - 'stulm', - 'stumm', - 'stums', - 'stuns', - 'stupa', - 'stupe', - 'sture', - 'sturt', - 'styed', - 'styes', - 'styli', - 'stylo', - 'styme', - 'stymy', - 'styre', - 'styte', - 'subah', - 'subas', - 'subby', - 'suber', - 'subha', - 'succi', - 'sucks', - 'sucky', - 'sucre', - 'sudds', - 'sudor', - 'sudsy', - 'suede', - 'suent', - 'suers', - 'suete', - 'suets', - 'suety', - 'sugan', - 'sughs', - 'sugos', - 'suhur', - 'suids', - 'suint', - 'suits', - 'sujee', - 'sukhs', - 'sukuk', - 'sulci', - 'sulfa', - 'sulfo', - 'sulks', - 'sulph', - 'sulus', - 'sumis', - 'summa', - 'sumos', - 'sumph', - 'sumps', - 'sunis', - 'sunks', - 'sunna', - 'sunns', - 'sunup', - 'supes', - 'supra', - 'surah', - 'sural', - 'suras', - 'surat', - 'surds', - 'sured', - 'sures', - 'surfs', - 'surfy', - 'surgy', - 'surra', - 'sused', - 'suses', - 'susus', - 'sutor', - 'sutra', - 'sutta', - 'swabs', - 'swack', - 'swads', - 'swage', - 'swags', - 'swail', - 'swain', - 'swale', - 'swaly', - 'swamy', - 'swang', - 'swank', - 'swans', - 'swaps', - 'swapt', - 'sward', - 'sware', - 'swarf', - 'swart', - 'swats', - 'swayl', - 'sways', - 'sweal', - 'swede', - 'sweed', - 'sweel', - 'sweer', - 'swees', - 'sweir', - 'swelt', - 'swerf', - 'sweys', - 'swies', - 'swigs', - 'swile', - 'swims', - 'swink', - 'swipe', - 'swire', - 'swiss', - 'swith', - 'swits', - 'swive', - 'swizz', - 'swobs', - 'swole', - 'swoln', - 'swops', - 'swopt', - 'swots', - 'swoun', - 'sybbe', - 'sybil', - 'syboe', - 'sybow', - 'sycee', - 'syces', - 'sycon', - 'syens', - 'syker', - 'sykes', - 'sylis', - 'sylph', - 'sylva', - 'symar', - 'synch', - 'syncs', - 'synds', - 'syned', - 'synes', - 'synth', - 'syped', - 'sypes', - 'syphs', - 'syrah', - 'syren', - 'sysop', - 'sythe', - 'syver', - 'taals', - 'taata', - 'taber', - 'tabes', - 'tabid', - 'tabis', - 'tabla', - 'tabor', - 'tabun', - 'tabus', - 'tacan', - 'taces', - 'tacet', - 'tache', - 'tacho', - 'tachs', - 'tacks', - 'tacos', - 'tacts', - 'taels', - 'tafia', - 'taggy', - 'tagma', - 'tahas', - 'tahrs', - 'taiga', - 'taigs', - 'taiko', - 'tails', - 'tains', - 'taira', - 'taish', - 'taits', - 'tajes', - 'takas', - 'takes', - 'takhi', - 'takin', - 'takis', - 'takky', - 'talak', - 'talaq', - 'talar', - 'talas', - 'talcs', - 'talcy', - 'talea', - 'taler', - 'tales', - 'talks', - 'talky', - 'talls', - 'talma', - 'talpa', - 'taluk', - 'talus', - 'tamal', - 'tamed', - 'tames', - 'tamin', - 'tamis', - 'tammy', - 'tamps', - 'tanas', - 'tanga', - 'tangi', - 'tangs', - 'tanhs', - 'tanka', - 'tanks', - 'tanky', - 'tanna', - 'tansy', - 'tanti', - 'tanto', - 'tanty', - 'tapas', - 'taped', - 'tapen', - 'tapes', - 'tapet', - 'tapis', - 'tappa', - 'tapus', - 'taras', - 'tardo', - 'tared', - 'tares', - 'targa', - 'targe', - 'tarns', - 'taroc', - 'tarok', - 'taros', - 'tarps', - 'tarre', - 'tarry', - 'tarsi', - 'tarts', - 'tarty', - 'tasar', - 'tased', - 'taser', - 'tases', - 'tasks', - 'tassa', - 'tasse', - 'tasso', - 'tatar', - 'tater', - 'tates', - 'taths', - 'tatie', - 'tatou', - 'tatts', - 'tatus', - 'taube', - 'tauld', - 'tauon', - 'taupe', - 'tauts', - 'tavah', - 'tavas', - 'taver', - 'tawai', - 'tawas', - 'tawed', - 'tawer', - 'tawie', - 'tawse', - 'tawts', - 'taxed', - 'taxer', - 'taxes', - 'taxis', - 'taxol', - 'taxon', - 'taxor', - 'taxus', - 'tayra', - 'tazza', - 'tazze', - 'teade', - 'teads', - 'teaed', - 'teaks', - 'teals', - 'teams', - 'tears', - 'teats', - 'teaze', - 'techs', - 'techy', - 'tecta', - 'teels', - 'teems', - 'teend', - 'teene', - 'teens', - 'teeny', - 'teers', - 'teffs', - 'teggs', - 'tegua', - 'tegus', - 'tehrs', - 'teiid', - 'teils', - 'teind', - 'teins', - 'telae', - 'telco', - 'teles', - 'telex', - 'telia', - 'telic', - 'tells', - 'telly', - 'teloi', - 'telos', - 'temed', - 'temes', - 'tempi', - 'temps', - 'tempt', - 'temse', - 'tench', - 'tends', - 'tendu', - 'tenes', - 'tenge', - 'tenia', - 'tenne', - 'tenno', - 'tenny', - 'tenon', - 'tents', - 'tenty', - 'tenue', - 'tepal', - 'tepas', - 'tepoy', - 'terai', - 'teras', - 'terce', - 'terek', - 'teres', - 'terfe', - 'terfs', - 'terga', - 'terms', - 'terne', - 'terns', - 'terry', - 'terts', - 'tesla', - 'testa', - 'teste', - 'tests', - 'tetes', - 'teths', - 'tetra', - 'tetri', - 'teuch', - 'teugh', - 'tewed', - 'tewel', - 'tewit', - 'texas', - 'texes', - 'texts', - 'thack', - 'thagi', - 'thaim', - 'thale', - 'thali', - 'thana', - 'thane', - 'thang', - 'thans', - 'thanx', - 'tharm', - 'thars', - 'thaws', - 'thawy', - 'thebe', - 'theca', - 'theed', - 'theek', - 'thees', - 'thegn', - 'theic', - 'thein', - 'thelf', - 'thema', - 'thens', - 'theow', - 'therm', - 'thesp', - 'thete', - 'thews', - 'thewy', - 'thigs', - 'thilk', - 'thill', - 'thine', - 'thins', - 'thiol', - 'thirl', - 'thoft', - 'thole', - 'tholi', - 'thoro', - 'thorp', - 'thous', - 'thowl', - 'thrae', - 'thraw', - 'thrid', - 'thrip', - 'throe', - 'thuds', - 'thugs', - 'thuja', - 'thunk', - 'thurl', - 'thuya', - 'thymi', - 'thymy', - 'tians', - 'tiars', - 'tical', - 'ticca', - 'ticed', - 'tices', - 'tichy', - 'ticks', - 'ticky', - 'tiddy', - 'tided', - 'tides', - 'tiers', - 'tiffs', - 'tifos', - 'tifts', - 'tiges', - 'tigon', - 'tikas', - 'tikes', - 'tikis', - 'tikka', - 'tilak', - 'tiled', - 'tiler', - 'tiles', - 'tills', - 'tilly', - 'tilth', - 'tilts', - 'timbo', - 'timed', - 'times', - 'timon', - 'timps', - 'tinas', - 'tinct', - 'tinds', - 'tinea', - 'tined', - 'tines', - 'tinge', - 'tings', - 'tinks', - 'tinny', - 'tints', - 'tinty', - 'tipis', - 'tippy', - 'tired', - 'tires', - 'tirls', - 'tiros', - 'tirrs', - 'titch', - 'titer', - 'titis', - 'titre', - 'titty', - 'titup', - 'tiyin', - 'tiyns', - 'tizes', - 'tizzy', - 'toads', - 'toady', - 'toaze', - 'tocks', - 'tocky', - 'tocos', - 'todde', - 'toeas', - 'toffs', - 'toffy', - 'tofts', - 'tofus', - 'togae', - 'togas', - 'toged', - 'toges', - 'togue', - 'tohos', - 'toile', - 'toils', - 'toing', - 'toise', - 'toits', - 'tokay', - 'toked', - 'toker', - 'tokes', - 'tokos', - 'tolan', - 'tolar', - 'tolas', - 'toled', - 'toles', - 'tolls', - 'tolly', - 'tolts', - 'tolus', - 'tolyl', - 'toman', - 'tombs', - 'tomes', - 'tomia', - 'tommy', - 'tomos', - 'tondi', - 'tondo', - 'toned', - 'toner', - 'tones', - 'toney', - 'tongs', - 'tonka', - 'tonks', - 'tonne', - 'tonus', - 'tools', - 'tooms', - 'toons', - 'toots', - 'toped', - 'topee', - 'topek', - 'toper', - 'topes', - 'tophe', - 'tophi', - 'tophs', - 'topis', - 'topoi', - 'topos', - 'toppy', - 'toque', - 'torah', - 'toran', - 'toras', - 'torcs', - 'tores', - 'toric', - 'torii', - 'toros', - 'torot', - 'torrs', - 'torse', - 'torsi', - 'torsk', - 'torta', - 'torte', - 'torts', - 'tosas', - 'tosed', - 'toses', - 'toshy', - 'tossy', - 'toted', - 'toter', - 'totes', - 'totty', - 'touks', - 'touns', - 'tours', - 'touse', - 'tousy', - 'touts', - 'touze', - 'touzy', - 'towed', - 'towie', - 'towns', - 'towny', - 'towse', - 'towsy', - 'towts', - 'towze', - 'towzy', - 'toyed', - 'toyer', - 'toyon', - 'toyos', - 'tozed', - 'tozes', - 'tozie', - 'trabs', - 'trads', - 'tragi', - 'traik', - 'trams', - 'trank', - 'tranq', - 'trans', - 'trant', - 'trape', - 'traps', - 'trapt', - 'trass', - 'trats', - 'tratt', - 'trave', - 'trayf', - 'trays', - 'treck', - 'treed', - 'treen', - 'trees', - 'trefa', - 'treif', - 'treks', - 'trema', - 'trems', - 'tress', - 'trest', - 'trets', - 'trews', - 'treyf', - 'treys', - 'triac', - 'tride', - 'trier', - 'tries', - 'triff', - 'trigo', - 'trigs', - 'trike', - 'trild', - 'trill', - 'trims', - 'trine', - 'trins', - 'triol', - 'trior', - 'trios', - 'trips', - 'tripy', - 'trist', - 'troad', - 'troak', - 'troat', - 'trock', - 'trode', - 'trods', - 'trogs', - 'trois', - 'troke', - 'tromp', - 'trona', - 'tronc', - 'trone', - 'tronk', - 'trons', - 'trooz', - 'troth', - 'trots', - 'trows', - 'troys', - 'trued', - 'trues', - 'trugo', - 'trugs', - 'trull', - 'tryer', - 'tryke', - 'tryma', - 'tryps', - 'tsade', - 'tsadi', - 'tsars', - 'tsked', - 'tsuba', - 'tsubo', - 'tuans', - 'tuart', - 'tuath', - 'tubae', - 'tubar', - 'tubas', - 'tubby', - 'tubed', - 'tubes', - 'tucks', - 'tufas', - 'tuffe', - 'tuffs', - 'tufts', - 'tufty', - 'tugra', - 'tuile', - 'tuina', - 'tuism', - 'tuktu', - 'tules', - 'tulpa', - 'tulsi', - 'tumid', - 'tummy', - 'tumps', - 'tumpy', - 'tunas', - 'tunds', - 'tuned', - 'tuner', - 'tunes', - 'tungs', - 'tunny', - 'tupek', - 'tupik', - 'tuple', - 'tuque', - 'turds', - 'turfs', - 'turfy', - 'turks', - 'turme', - 'turms', - 'turns', - 'turnt', - 'turps', - 'turrs', - 'tushy', - 'tusks', - 'tusky', - 'tutee', - 'tutti', - 'tutty', - 'tutus', - 'tuxes', - 'tuyer', - 'twaes', - 'twain', - 'twals', - 'twank', - 'twats', - 'tways', - 'tweel', - 'tween', - 'tweep', - 'tweer', - 'twerk', - 'twerp', - 'twier', - 'twigs', - 'twill', - 'twilt', - 'twink', - 'twins', - 'twiny', - 'twire', - 'twirp', - 'twite', - 'twits', - 'twoer', - 'twyer', - 'tyees', - 'tyers', - 'tyiyn', - 'tykes', - 'tyler', - 'tymps', - 'tynde', - 'tyned', - 'tynes', - 'typal', - 'typed', - 'types', - 'typey', - 'typic', - 'typos', - 'typps', - 'typto', - 'tyran', - 'tyred', - 'tyres', - 'tyros', - 'tythe', - 'tzars', - 'udals', - 'udons', - 'ugali', - 'ugged', - 'uhlan', - 'uhuru', - 'ukase', - 'ulama', - 'ulans', - 'ulema', - 'ulmin', - 'ulnad', - 'ulnae', - 'ulnar', - 'ulnas', - 'ulpan', - 'ulvas', - 'ulyie', - 'ulzie', - 'umami', - 'umbel', - 'umber', - 'umble', - 'umbos', - 'umbre', - 'umiac', - 'umiak', - 'umiaq', - 'ummah', - 'ummas', - 'ummed', - 'umped', - 'umphs', - 'umpie', - 'umpty', - 'umrah', - 'umras', - 'unais', - 'unapt', - 'unarm', - 'unary', - 'unaus', - 'unbag', - 'unban', - 'unbar', - 'unbed', - 'unbid', - 'unbox', - 'uncap', - 'unces', - 'uncia', - 'uncos', - 'uncoy', - 'uncus', - 'undam', - 'undee', - 'undos', - 'undug', - 'uneth', - 'unfix', - 'ungag', - 'unget', - 'ungod', - 'ungot', - 'ungum', - 'unhat', - 'unhip', - 'unica', - 'units', - 'unjam', - 'unked', - 'unket', - 'unkid', - 'unlaw', - 'unlay', - 'unled', - 'unlet', - 'unlid', - 'unman', - 'unmew', - 'unmix', - 'unpay', - 'unpeg', - 'unpen', - 'unpin', - 'unred', - 'unrid', - 'unrig', - 'unrip', - 'unsaw', - 'unsay', - 'unsee', - 'unsew', - 'unsex', - 'unsod', - 'untax', - 'untin', - 'unwet', - 'unwit', - 'unwon', - 'upbow', - 'upbye', - 'updos', - 'updry', - 'upend', - 'upjet', - 'uplay', - 'upled', - 'uplit', - 'upped', - 'upran', - 'uprun', - 'upsee', - 'upsey', - 'uptak', - 'upter', - 'uptie', - 'uraei', - 'urali', - 'uraos', - 'urare', - 'urari', - 'urase', - 'urate', - 'urbex', - 'urbia', - 'urdee', - 'ureal', - 'ureas', - 'uredo', - 'ureic', - 'urena', - 'urent', - 'urged', - 'urger', - 'urges', - 'urial', - 'urite', - 'urman', - 'urnal', - 'urned', - 'urped', - 'ursae', - 'ursid', - 'urson', - 'urubu', - 'urvas', - 'users', - 'usnea', - 'usque', - 'usure', - 'usury', - 'uteri', - 'uveal', - 'uveas', - 'uvula', - 'vacua', - 'vaded', - 'vades', - 'vagal', - 'vagus', - 'vails', - 'vaire', - 'vairs', - 'vairy', - 'vakas', - 'vakil', - 'vales', - 'valis', - 'valse', - 'vamps', - 'vampy', - 'vanda', - 'vaned', - 'vanes', - 'vangs', - 'vants', - 'vaped', - 'vaper', - 'vapes', - 'varan', - 'varas', - 'vardy', - 'varec', - 'vares', - 'varia', - 'varix', - 'varna', - 'varus', - 'varve', - 'vasal', - 'vases', - 'vasts', - 'vasty', - 'vatic', - 'vatus', - 'vauch', - 'vaute', - 'vauts', - 'vawte', - 'vaxes', - 'veale', - 'veals', - 'vealy', - 'veena', - 'veeps', - 'veers', - 'veery', - 'vegas', - 'veges', - 'vegie', - 'vegos', - 'vehme', - 'veils', - 'veily', - 'veins', - 'veiny', - 'velar', - 'velds', - 'veldt', - 'veles', - 'vells', - 'velum', - 'venae', - 'venal', - 'vends', - 'vendu', - 'veney', - 'venge', - 'venin', - 'vents', - 'venus', - 'verbs', - 'verra', - 'verry', - 'verst', - 'verts', - 'vertu', - 'vespa', - 'vesta', - 'vests', - 'vetch', - 'vexed', - 'vexer', - 'vexes', - 'vexil', - 'vezir', - 'vials', - 'viand', - 'vibes', - 'vibex', - 'vibey', - 'viced', - 'vices', - 'vichy', - 'viers', - 'views', - 'viewy', - 'vifda', - 'viffs', - 'vigas', - 'vigia', - 'vilde', - 'viler', - 'villi', - 'vills', - 'vimen', - 'vinal', - 'vinas', - 'vinca', - 'vined', - 'viner', - 'vines', - 'vinew', - 'vinic', - 'vinos', - 'vints', - 'viold', - 'viols', - 'vired', - 'vireo', - 'vires', - 'virga', - 'virge', - 'virid', - 'virls', - 'virtu', - 'visas', - 'vised', - 'vises', - 'visie', - 'visne', - 'vison', - 'visto', - 'vitae', - 'vitas', - 'vitex', - 'vitro', - 'vitta', - 'vivas', - 'vivat', - 'vivda', - 'viver', - 'vives', - 'vizir', - 'vizor', - 'vleis', - 'vlies', - 'vlogs', - 'voars', - 'vocab', - 'voces', - 'voddy', - 'vodou', - 'vodun', - 'voema', - 'vogie', - 'voids', - 'voile', - 'voips', - 'volae', - 'volar', - 'voled', - 'voles', - 'volet', - 'volks', - 'volta', - 'volte', - 'volti', - 'volts', - 'volva', - 'volve', - 'vomer', - 'voted', - 'votes', - 'vouge', - 'voulu', - 'vowed', - 'vower', - 'voxel', - 'vozhd', - 'vraic', - 'vrils', - 'vroom', - 'vrous', - 'vrouw', - 'vrows', - 'vuggs', - 'vuggy', - 'vughs', - 'vughy', - 'vulgo', - 'vulns', - 'vulva', - 'vutty', - 'waacs', - 'wacke', - 'wacko', - 'wacks', - 'wadds', - 'waddy', - 'waded', - 'wader', - 'wades', - 'wadge', - 'wadis', - 'wadts', - 'waffs', - 'wafts', - 'waged', - 'wages', - 'wagga', - 'wagyu', - 'wahoo', - 'waide', - 'waifs', - 'waift', - 'wails', - 'wains', - 'wairs', - 'waite', - 'waits', - 'wakas', - 'waked', - 'waken', - 'waker', - 'wakes', - 'wakfs', - 'waldo', - 'walds', - 'waled', - 'waler', - 'wales', - 'walie', - 'walis', - 'walks', - 'walla', - 'walls', - 'wally', - 'walty', - 'wamed', - 'wames', - 'wamus', - 'wands', - 'waned', - 'wanes', - 'waney', - 'wangs', - 'wanks', - 'wanky', - 'wanle', - 'wanly', - 'wanna', - 'wants', - 'wanty', - 'wanze', - 'waqfs', - 'warbs', - 'warby', - 'wards', - 'wared', - 'wares', - 'warez', - 'warks', - 'warms', - 'warns', - 'warps', - 'warre', - 'warst', - 'warts', - 'wases', - 'washy', - 'wasms', - 'wasps', - 'waspy', - 'wasts', - 'watap', - 'watts', - 'wauff', - 'waugh', - 'wauks', - 'waulk', - 'wauls', - 'waurs', - 'waved', - 'waves', - 'wavey', - 'wawas', - 'wawes', - 'wawls', - 'waxed', - 'waxer', - 'waxes', - 'wayed', - 'wazir', - 'wazoo', - 'weald', - 'weals', - 'weamb', - 'weans', - 'wears', - 'webby', - 'weber', - 'wecht', - 'wedel', - 'wedgy', - 'weeds', - 'weeke', - 'weeks', - 'weels', - 'weems', - 'weens', - 'weeny', - 'weeps', - 'weepy', - 'weest', - 'weete', - 'weets', - 'wefte', - 'wefts', - 'weids', - 'weils', - 'weirs', - 'weise', - 'weize', - 'wekas', - 'welds', - 'welke', - 'welks', - 'welkt', - 'wells', - 'welly', - 'welts', - 'wembs', - 'wends', - 'wenge', - 'wenny', - 'wents', - 'weros', - 'wersh', - 'wests', - 'wetas', - 'wetly', - 'wexed', - 'wexes', - 'whamo', - 'whams', - 'whang', - 'whaps', - 'whare', - 'whata', - 'whats', - 'whaup', - 'whaur', - 'wheal', - 'whear', - 'wheen', - 'wheep', - 'wheft', - 'whelk', - 'whelm', - 'whens', - 'whets', - 'whews', - 'wheys', - 'whids', - 'whift', - 'whigs', - 'whilk', - 'whims', - 'whins', - 'whios', - 'whips', - 'whipt', - 'whirr', - 'whirs', - 'whish', - 'whiss', - 'whist', - 'whits', - 'whity', - 'whizz', - 'whomp', - 'whoof', - 'whoot', - 'whops', - 'whore', - 'whorl', - 'whort', - 'whoso', - 'whows', - 'whump', - 'whups', - 'whyda', - 'wicca', - 'wicks', - 'wicky', - 'widdy', - 'wides', - 'wiels', - 'wifed', - 'wifes', - 'wifey', - 'wifie', - 'wifty', - 'wigan', - 'wigga', - 'wiggy', - 'wikis', - 'wilco', - 'wilds', - 'wiled', - 'wiles', - 'wilga', - 'wilis', - 'wilja', - 'wills', - 'wilts', - 'wimps', - 'winds', - 'wined', - 'wines', - 'winey', - 'winge', - 'wings', - 'wingy', - 'winks', - 'winna', - 'winns', - 'winos', - 'winze', - 'wiped', - 'wiper', - 'wipes', - 'wired', - 'wirer', - 'wires', - 'wirra', - 'wised', - 'wises', - 'wisha', - 'wisht', - 'wisps', - 'wists', - 'witan', - 'wited', - 'wites', - 'withe', - 'withs', - 'withy', - 'wived', - 'wiver', - 'wives', - 'wizen', - 'wizes', - 'woads', - 'woald', - 'wocks', - 'wodge', - 'woful', - 'wojus', - 'woker', - 'wokka', - 'wolds', - 'wolfs', - 'wolly', - 'wolve', - 'wombs', - 'womby', - 'womyn', - 'wonga', - 'wongi', - 'wonks', - 'wonky', - 'wonts', - 'woods', - 'wooed', - 'woofs', - 'woofy', - 'woold', - 'wools', - 'woons', - 'woops', - 'woopy', - 'woose', - 'woosh', - 'wootz', - 'words', - 'works', - 'worms', - 'wormy', - 'worts', - 'wowed', - 'wowee', - 'woxen', - 'wrang', - 'wraps', - 'wrapt', - 'wrast', - 'wrate', - 'wrawl', - 'wrens', - 'wrick', - 'wried', - 'wrier', - 'wries', - 'writs', - 'wroke', - 'wroot', - 'wroth', - 'wryer', - 'wuddy', - 'wudus', - 'wulls', - 'wurst', - 'wuses', - 'wushu', - 'wussy', - 'wuxia', - 'wyled', - 'wyles', - 'wynds', - 'wynns', - 'wyted', - 'wytes', - 'xebec', - 'xenia', - 'xenic', - 'xenon', - 'xeric', - 'xerox', - 'xerus', - 'xoana', - 'xrays', - 'xylan', - 'xylem', - 'xylic', - 'xylol', - 'xylyl', - 'xysti', - 'xysts', - 'yaars', - 'yabas', - 'yabba', - 'yabby', - 'yacca', - 'yacka', - 'yacks', - 'yaffs', - 'yager', - 'yages', - 'yagis', - 'yahoo', - 'yaird', - 'yakka', - 'yakow', - 'yales', - 'yamen', - 'yampy', - 'yamun', - 'yangs', - 'yanks', - 'yapok', - 'yapon', - 'yapps', - 'yappy', - 'yarak', - 'yarco', - 'yards', - 'yarer', - 'yarfa', - 'yarks', - 'yarns', - 'yarrs', - 'yarta', - 'yarto', - 'yates', - 'yauds', - 'yauld', - 'yaups', - 'yawed', - 'yawey', - 'yawls', - 'yawns', - 'yawny', - 'yawps', - 'ybore', - 'yclad', - 'ycled', - 'ycond', - 'ydrad', - 'ydred', - 'yeads', - 'yeahs', - 'yealm', - 'yeans', - 'yeard', - 'years', - 'yecch', - 'yechs', - 'yechy', - 'yedes', - 'yeeds', - 'yeesh', - 'yeggs', - 'yelks', - 'yells', - 'yelms', - 'yelps', - 'yelts', - 'yenta', - 'yente', - 'yerba', - 'yerds', - 'yerks', - 'yeses', - 'yesks', - 'yests', - 'yesty', - 'yetis', - 'yetts', - 'yeuks', - 'yeuky', - 'yeven', - 'yeves', - 'yewen', - 'yexed', - 'yexes', - 'yfere', - 'yiked', - 'yikes', - 'yills', - 'yince', - 'yipes', - 'yippy', - 'yirds', - 'yirks', - 'yirrs', - 'yirth', - 'yites', - 'yitie', - 'ylems', - 'ylike', - 'ylkes', - 'ymolt', - 'ympes', - 'yobbo', - 'yobby', - 'yocks', - 'yodel', - 'yodhs', - 'yodle', - 'yogas', - 'yogee', - 'yoghs', - 'yogic', - 'yogin', - 'yogis', - 'yoick', - 'yojan', - 'yoked', - 'yokel', - 'yoker', - 'yokes', - 'yokul', - 'yolks', - 'yolky', - 'yomim', - 'yomps', - 'yonic', - 'yonis', - 'yonks', - 'yoofs', - 'yoops', - 'yores', - 'yorks', - 'yorps', - 'youks', - 'yourn', - 'yours', - 'yourt', - 'youse', - 'yowed', - 'yowes', - 'yowie', - 'yowls', - 'yowza', - 'yrapt', - 'yrent', - 'yrivd', - 'yrneh', - 'ysame', - 'ytost', - 'yuans', - 'yucas', - 'yucca', - 'yucch', - 'yucko', - 'yucks', - 'yucky', - 'yufts', - 'yugas', - 'yuked', - 'yukes', - 'yukky', - 'yukos', - 'yulan', - 'yules', - 'yummo', - 'yummy', - 'yumps', - 'yupon', - 'yuppy', - 'yurta', - 'yurts', - 'yuzus', - 'zabra', - 'zacks', - 'zaida', - 'zaidy', - 'zaire', - 'zakat', - 'zaman', - 'zambo', - 'zamia', - 'zanja', - 'zante', - 'zanza', - 'zanze', - 'zappy', - 'zarfs', - 'zaris', - 'zatis', - 'zaxes', - 'zayin', - 'zazen', - 'zeals', - 'zebec', - 'zebub', - 'zebus', - 'zedas', - 'zeins', - 'zendo', - 'zerda', - 'zerks', - 'zeros', - 'zests', - 'zetas', - 'zexes', - 'zezes', - 'zhomo', - 'zibet', - 'ziffs', - 'zigan', - 'zilas', - 'zilch', - 'zilla', - 'zills', - 'zimbi', - 'zimbs', - 'zinco', - 'zincs', - 'zincy', - 'zineb', - 'zines', - 'zings', - 'zingy', - 'zinke', - 'zinky', - 'zippo', - 'zippy', - 'ziram', - 'zitis', - 'zizel', - 'zizit', - 'zlote', - 'zloty', - 'zoaea', - 'zobos', - 'zobus', - 'zocco', - 'zoeae', - 'zoeal', - 'zoeas', - 'zoism', - 'zoist', - 'zombi', - 'zonae', - 'zonda', - 'zoned', - 'zoner', - 'zones', - 'zonks', - 'zooea', - 'zooey', - 'zooid', - 'zooks', - 'zooms', - 'zoons', - 'zooty', - 'zoppa', - 'zoppo', - 'zoril', - 'zoris', - 'zorro', - 'zouks', - 'zowee', - 'zowie', - 'zulus', - 'zupan', - 'zupas', - 'zuppa', - 'zurfs', - 'zuzim', - 'zygal', - 'zygon', - 'zymes', - 'zymic' -]); diff --git a/frontend/static/favicon.png b/frontend/static/favicon.png deleted file mode 100644 index 825b9e6..0000000 Binary files a/frontend/static/favicon.png and /dev/null differ diff --git a/frontend/static/robots.txt b/frontend/static/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/frontend/static/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js deleted file mode 100644 index 2b35fe1..0000000 --- a/frontend/svelte.config.js +++ /dev/null @@ -1,18 +0,0 @@ -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), - - kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter() - } -}; - -export default config; diff --git a/frontend/tests/test.ts b/frontend/tests/test.ts deleted file mode 100644 index 09d2c03..0000000 --- a/frontend/tests/test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { expect, test } from '@playwright/test'; - -test('about page has expected h1', async ({ page }) => { - await page.goto('/about'); - await expect(page.getByRole('heading', { name: 'About this app' })).toBeVisible(); -}); diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json deleted file mode 100644 index fc93cbd..0000000 --- a/frontend/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in -} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts deleted file mode 100644 index 37b6a84..0000000 --- a/frontend/vite.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - plugins: [sveltekit()], - test: { - include: ['src/**/*.{test,spec}.{js,ts}'] - } -}); diff --git a/go.mod b/go.mod index 31bb49a..4b08d39 100644 --- a/go.mod +++ b/go.mod @@ -9,11 +9,15 @@ require ( require ( github.com/andybalholm/brotli v1.1.0 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/fatih/color v1.16.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/goccy/go-yaml v1.11.3 // indirect github.com/gofiber/fiber/v2 v2.52.4 // indirect + github.com/gofiber/template v1.8.3 // indirect + github.com/gofiber/template/html/v2 v2.1.1 // indirect + github.com/gofiber/utils v1.1.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -25,6 +29,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml/v2 v2.2.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect diff --git a/go.sum b/go.sum index ecfc3f7..ddaa5d7 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,6 @@ github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -13,6 +14,12 @@ github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I= github.com/goccy/go-yaml v1.11.3/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM= github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc= +github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8= +github.com/gofiber/template/html/v2 v2.1.1 h1:QEy3O3EBkvwDthy5bXVGUseOyO6ldJoiDxlF4+MJiV8= +github.com/gofiber/template/html/v2 v2.1.1/go.mod h1:2G0GHHOUx70C1LDncoBpe4T6maQbNa4x1CVNFW0wju0= +github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= +github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -40,6 +47,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= diff --git a/main.go b/main.go index 39ad611..2e47708 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,5 @@ /* Copyright © 2024 NAME HERE - */ package main diff --git a/package.json b/package.json new file mode 100644 index 0000000..b6aeef4 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "shadow", + "type": "module", + "scripts": { + "dev": "bun run vite build --watch --debug" + }, + "devDependencies": { + "@types/bun": "latest", + "autoprefixer": "^10.4.19", + "glob": "^10.3.12", + "postcss": "^8.4.38", + "tailwindcss": "^3.4.3", + "ts-node": "^10.9.2", + "vite": "^5.2.10" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "vitest": "^1.5.0" + } +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..ea52a08 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + } +} \ No newline at end of file diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..95f5908 --- /dev/null +++ b/src/index.html @@ -0,0 +1,13 @@ + + + + + {{ block "meta" . }}{{end}} + {{ template "title" . }} + {{ block "scripts" . }}{{end}} + + + +{{ template "body" . }} + + \ No newline at end of file diff --git a/src/styles/app.css b/src/styles/app.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/src/styles/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/src/views/index.html b/src/views/index.html new file mode 100644 index 0000000..663cf91 --- /dev/null +++ b/src/views/index.html @@ -0,0 +1,10 @@ +{{ define "title" }} Hello World! {{end}} + +{{ define "body" }} + +

+ Hello world! +

+ + +{{end}} \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..910be09 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,15 @@ +import type { Config } from 'tailwindcss'; + +export default { + darkMode: 'selector', + content: [ + './src/**/*.html', + './src/**/*.js', + './src/**/*.ts', + './src/index.html', + ], + theme: { + extend: {}, + }, + plugins: [], +} satisfies Config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..934a60f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src/scripts" + ] +} diff --git a/utils/vite_dev.go b/utils/vite_dev.go new file mode 100644 index 0000000..16f1aab --- /dev/null +++ b/utils/vite_dev.go @@ -0,0 +1,143 @@ +package utils + +import ( + "bufio" + "fmt" + "github.com/spf13/viper" + "io" + "log" + "os" + "os/exec" + "sync" +) + +//func DevWatcher(engine *html.Engine) { +// +// watcher, err := fsnotify.NewWatcher() +// if err != nil { +// log.Fatalln(err) +// } +// defer watcher.Close() +// +// err = watcher.Add("./src") +// if err != nil { +// log.Fatalln(err) +// } +// +// if err := filepath.Walk("./src", func(path string, info fs.FileInfo, err error) error { +// +// if err != nil { +// return err +// } +// +// if info.IsDir() { +// err = watcher.Add(path) +// if err != nil { +// return err +// } +// } +// +// return nil +// }); err != nil { +// log.Fatalln(err) +// } +// +// err = watcher.Add("./dist/.vite/manifest.json") +// if err != nil { +// log.Fatalln(err) +// } +// +// for { +// select { +// case event, ok := <-watcher.Events: +// if !ok { +// return +// } +// +// fmt.Println(event) +// +// if event.Op&fsnotify.Write == fsnotify.Write { +// +// if filepath.Ext(event.Name) == ".gohtml" { +// +// fmt.Println("Ayo, I updated") +// engine = html.New("./src", ".gohtml") +// +// } else if strings.Contains(event.Name, "manifest.json") { +// +// engine = html.New("./src", ".gohtml") +// +// } +// +// } +// case err, ok := <-watcher.Errors: +// if !ok { +// return +// } +// log.Println("Error:", err) +// } +// +// } +// +//} + +func RunViteServer() { + if viper.GetBool("dev") { + + go func() { + + cmd := exec.Command("bun", "run", "dev") + + stdout, err := cmd.StdoutPipe() + if err != nil { + log.Fatalln(err) + } + + defer stdout.Close() + + stderr, err := cmd.StderrPipe() + if err != nil { + log.Fatalln(err) + } + + defer stderr.Close() + + if err := cmd.Start(); err != nil { + log.Fatalln(err) + } + + var wg sync.WaitGroup + wg.Add(2) + + go func() { + defer wg.Done() + io.Copy(os.Stdout, stderr) + }() + + go func() { + defer wg.Done() + + scanner := bufio.NewScanner(stdout) + + for scanner.Scan() { + + output := scanner.Text() + + fmt.Println("VITE (Bun) | " + output) + + } + + }() + + err = cmd.Wait() + wg.Wait() + + if cmd.ProcessState.ExitCode() != 0 { + fmt.Println("Command failed with non-zero exit status") + return + } + + }() + + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..e09f16b --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'vitest/config'; +import path from "path"; +import { glob } from "glob"; + +export default defineConfig({ + plugins: [], + root: "src", + build: { + manifest: true, + outDir: path.join(__dirname, "dist"), + rollupOptions: { + input: glob.sync([path.resolve(__dirname, "src", "**/*.html"),path.resolve(__dirname, "src", "**/*.js"), path.resolve(__dirname, "src", "**/*.css")]), + }, + emptyOutDir: true, + }, + test: { + include: ['src/**/*.{test,spec}.{js,ts}'] + } +}); \ No newline at end of file