├── src ├── vite-env.d.ts ├── config.ts ├── main.tsx ├── App.module.css ├── Document.module.css ├── aiKeyboardShortcut.ts ├── Document.tsx ├── customTextAlign.ts ├── Toolbar.module.css ├── NavMenu.module.css ├── stores.ts ├── Stats.tsx ├── index.css ├── App.tsx ├── assets │ └── react.svg ├── Settings.tsx ├── completion.ts ├── NavMenu.tsx └── Toolbar.tsx ├── .prettierrc.yaml ├── public └── favicon.png ├── functions ├── api │ ├── test.ts │ └── complete.ts └── tsconfig.json ├── vite.config.ts ├── tsconfig.node.json ├── index.html ├── tsconfig.json ├── package.json ├── README.md ├── .gitignore ├── LICENSE.md └── yarn.lock /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | trailingComma: "all" 2 | singleQuote: true 3 | printWidth: 100 4 | -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/typpo/arkose/HEAD/public/favicon.png -------------------------------------------------------------------------------- /functions/api/test.ts: -------------------------------------------------------------------------------- 1 | export async function onRequestGet() { 2 | return new Response('it works'); 3 | } 4 | -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | OpenAI: { 3 | apiKey: import.meta.env.VITE_OPENAI_API_KEY, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "CommonJS", 5 | "lib": ["ES2020"], 6 | "types": ["@cloudflare/workers-types"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"], 9 | "exclude": ["functions/**/*"] 10 | } 11 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 7 | 8 | 9 | 10 | ) 11 | -------------------------------------------------------------------------------- /src/App.module.css: -------------------------------------------------------------------------------- 1 | .app { 2 | height: 100%; 3 | } 4 | 5 | .documentContainer { 6 | background-color: #f8f9fa; 7 | min-height: 100vh; 8 | padding: 6rem; 9 | } 10 | 11 | @media (max-width: 1024px) { 12 | .documentContainer { 13 | padding: 6rem 2rem; 14 | } 15 | } 16 | 17 | @media (max-width: 768px) { 18 | .documentContainer { 19 | padding: 6rem 0.5rem; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Document.module.css: -------------------------------------------------------------------------------- 1 | .page { 2 | background-color: #fff; 3 | max-width: 1024px; 4 | min-height: 100vh; 5 | margin: 0 auto; 6 | padding: 4rem 6rem; 7 | 8 | box-shadow: 0 1px 3px 1px rgb(60 64 67 / 15%); 9 | } 10 | 11 | @media (max-width: 1024px) { 12 | .page { 13 | padding: 4rem; 14 | } 15 | } 16 | 17 | @media (max-width: 768px) { 18 | .page { 19 | padding: 2rem; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | GPT-3 Writer | Arkose 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/aiKeyboardShortcut.ts: -------------------------------------------------------------------------------- 1 | import { Extension } from '@tiptap/core'; 2 | 3 | import { doCompletion } from './completion'; 4 | 5 | const aiKeyboardShortcut = Extension.create({ 6 | name: 'GPT-3 extension', 7 | addKeyboardShortcuts() { 8 | return { 9 | 'Mod-Enter': () => { 10 | doCompletion(this.editor); 11 | return true; 12 | }, 13 | }; 14 | }, 15 | }); 16 | 17 | export default aiKeyboardShortcut; 18 | -------------------------------------------------------------------------------- /src/Document.tsx: -------------------------------------------------------------------------------- 1 | import { EditorContent } from '@tiptap/react'; 2 | 3 | import type { Editor } from '@tiptap/core'; 4 | 5 | import styles from './Document.module.css'; 6 | 7 | interface DocumentProps { 8 | editor: Editor; 9 | } 10 | 11 | export default function Document({ editor }: DocumentProps) { 12 | return ( 13 |
14 | { 18 | e.stopPropagation(); 19 | }} 20 | /> 21 |
22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /src/customTextAlign.ts: -------------------------------------------------------------------------------- 1 | import TextAlign from '@tiptap/extension-text-align'; 2 | 3 | const CustomTextAlign = TextAlign.extend({ 4 | addKeyboardShortcuts() { 5 | return { 6 | 'Mod-Shift-l': () => this.editor.chain().focus().setTextAlign('left').run(), 7 | 'Mod-Shift-e': () => this.editor.chain().focus().setTextAlign('center').run(), 8 | // Don't override refresh 9 | // 'Mod-Shift-r': () => this.editor.chain().focus().setTextAlign('right').run(), 10 | 'Mod-Shift-j': () => this.editor.chain().focus().setTextAlign('justify').run(), 11 | }; 12 | }, 13 | }); 14 | 15 | export default CustomTextAlign; 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "exclude": ["functions/**/*"], 21 | "references": [{ "path": "./tsconfig.node.json" }] 22 | } 23 | -------------------------------------------------------------------------------- /src/Toolbar.module.css: -------------------------------------------------------------------------------- 1 | .toolbar { 2 | position: fixed; 3 | top: 3rem; /* match navmenu height */ 4 | left: 0; 5 | width: 100%; 6 | 7 | background-color: #fff; 8 | border-top: 1px solid #dadce0; 9 | border-bottom: 1px solid #dadce0; 10 | z-index: 1; 11 | } 12 | 13 | /* Gutter and actions match navmenu */ 14 | .gutter { 15 | padding: 0 6rem; 16 | } 17 | 18 | .actions { 19 | height: 2em; 20 | display: flex; 21 | align-items: center; 22 | max-width: calc(1024px + 6rem * 2); 23 | margin: 0 auto; 24 | gap: 3rem; 25 | } 26 | 27 | @media (max-width: 1024px) { 28 | .gutter { 29 | padding: 0 2rem; 30 | } 31 | } 32 | 33 | @media (max-width: 768px) { 34 | .gutter { 35 | padding: 0 0.5rem; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/NavMenu.module.css: -------------------------------------------------------------------------------- 1 | .navbar { 2 | position: fixed; 3 | top: 0; 4 | left: 0; 5 | width: 100%; 6 | background-color: #fff; 7 | border-bottom: 1px solid #dadce0; 8 | z-index: 1; 9 | } 10 | 11 | .gutter { 12 | /* Match doc gutter */ 13 | padding: 0 6rem; 14 | } 15 | 16 | .menus { 17 | display: flex; 18 | align-items: center; 19 | justify-content: space-between; 20 | height: 3em; 21 | max-width: calc(1024px + 6rem * 2); 22 | margin: 0 auto; 23 | } 24 | 25 | .menuLeft { 26 | display: flex; 27 | gap: 1.5rem; 28 | } 29 | 30 | .brand { 31 | cursor: pointer; 32 | font-size: 9pt; 33 | opacity: 0.5; 34 | margin-top: 4px; 35 | } 36 | 37 | .brand img { 38 | vertical-align: middle; 39 | margin-top: -3px; 40 | margin-left: 4px; 41 | width: 20px; 42 | height: auto; 43 | } 44 | 45 | .menuTopLevel { 46 | cursor: pointer; 47 | user-select: none; 48 | } 49 | 50 | .saveStatus { 51 | margin-left: auto; 52 | font-size: 0.8rem; 53 | } 54 | 55 | .success { 56 | color: #98af99; 57 | } 58 | 59 | .notice { 60 | font-size: 0.8rem; 61 | color: #333; 62 | } 63 | 64 | @media (max-width: 1024px) { 65 | .gutter { 66 | padding: 0 2rem; 67 | } 68 | } 69 | 70 | @media (max-width: 768px) { 71 | .gutter { 72 | padding: 0 0.5rem; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/stores.ts: -------------------------------------------------------------------------------- 1 | import store from 'store'; 2 | import { proxy, subscribe, useSnapshot } from 'valtio'; 3 | import { v4 as uuidv4 } from 'uuid'; 4 | 5 | import Config from './config'; 6 | 7 | import type { JSONContent } from '@tiptap/core'; 8 | 9 | export const statsStore = proxy( 10 | store.get('stats') || { 11 | tokensUsed: 0, 12 | }, 13 | ); 14 | 15 | subscribe(statsStore, () => { 16 | store.set('stats', statsStore); 17 | }); 18 | 19 | export const settingsStore = proxy( 20 | store.get('settings') || { 21 | apiKey: Config.OpenAI.apiKey || 'YOUR_API_KEY', 22 | lookbackChars: 1024, 23 | maxTokens: 256, 24 | temperature: 0.7, 25 | }, 26 | ); 27 | 28 | subscribe(settingsStore, () => { 29 | store.set('settings', settingsStore); 30 | }); 31 | 32 | export const documentStore = proxy<{ content: JSONContent | null }>( 33 | store.get('document') || { 34 | content: null, 35 | }, 36 | ); 37 | 38 | subscribe(documentStore, () => { 39 | store.set('document', documentStore); 40 | }); 41 | 42 | let currentUser = store.get('user'); 43 | if (!currentUser) { 44 | currentUser = { 45 | uuid: uuidv4(), 46 | remainingCompletions: 100, 47 | }; 48 | store.set('user', currentUser); 49 | } 50 | export const userStore = proxy(currentUser); 51 | 52 | subscribe(userStore, () => { 53 | store.set('user', userStore); 54 | }); 55 | -------------------------------------------------------------------------------- /src/Stats.tsx: -------------------------------------------------------------------------------- 1 | import Box from '@mui/material/Box'; 2 | import Button from '@mui/material/Button'; 3 | import Dialog from '@mui/material/Dialog'; 4 | import DialogActions from '@mui/material/DialogActions'; 5 | import DialogContent from '@mui/material/DialogContent'; 6 | import DialogContentText from '@mui/material/DialogContentText'; 7 | import DialogTitle from '@mui/material/DialogTitle'; 8 | import { useSnapshot } from 'valtio'; 9 | 10 | import { statsStore } from './stores'; 11 | 12 | import type { Editor } from '@tiptap/core'; 13 | 14 | export default function Stats({ 15 | open, 16 | onClose, 17 | editor, 18 | }: { 19 | open: boolean; 20 | onClose: () => void; 21 | editor: Editor; 22 | }) { 23 | const { tokensUsed } = useSnapshot(statsStore); 24 | return ( 25 | 26 | Stats 27 | 28 | 29 | Word count: {editor.getText().split(/\s/).length} 30 | OpenAI tokens used: {tokensUsed} 31 | 32 | Cost estimate: ${((tokensUsed / 1000.0) * 0.02).toFixed(2)} 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: -apple-system, BlinkMacSystemFont, Arial, sans-serif; 3 | font-size: 14pt; 4 | line-height: 24px; 5 | font-weight: 400; 6 | 7 | font-synthesis: none; 8 | text-rendering: optimizeLegibility; 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | -webkit-text-size-adjust: 100%; 12 | } 13 | 14 | html, 15 | body { 16 | margin: 0; 17 | } 18 | 19 | .MuiMenu-paper { 20 | transition-duration: 0s !important; 21 | } 22 | 23 | .ProseMirror { 24 | min-height: 100vh; 25 | } 26 | 27 | .ProseMirror-focused { 28 | outline: none; 29 | } 30 | 31 | .ProseMirror h1, 32 | .ProseMirror h2, 33 | .ProseMirror h3, 34 | .ProseMirror h4, 35 | .ProseMirror h5, 36 | .ProseMirror h6 { 37 | line-height: 1.2; 38 | } 39 | 40 | .ProseMirror p.is-editor-empty:first-child::before { 41 | color: #adb5bd; 42 | content: attr(data-placeholder); 43 | float: left; 44 | height: 0; 45 | pointer-events: none; 46 | } 47 | 48 | .ProseMirror blockquote { 49 | border-left: 4px solid #e9ecef; 50 | color: #6c757d; 51 | margin: 0; 52 | padding: 0 1em; 53 | } 54 | 55 | .ProseMirror code { 56 | background-color: #f8f9fa; 57 | border-radius: 3px; 58 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; 59 | font-size: 0.9em; 60 | padding: 0 0.2em; 61 | } 62 | 63 | .ProseMirror pre { 64 | background-color: #f8f9fa; 65 | border-radius: 3px; 66 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; 67 | font-size: 0.9em; 68 | padding: 1em; 69 | } 70 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "arkose", 3 | "license": "AGPL-3.0", 4 | "version": "0.0.1", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@emotion/react": "^11.10.5", 13 | "@emotion/styled": "^11.10.5", 14 | "@mui/icons-material": "^5.10.9", 15 | "@mui/material": "^5.10.11", 16 | "@tiptap/extension-font-family": "^2.0.0-beta.202", 17 | "@tiptap/extension-link": "^2.0.0-beta.202", 18 | "@tiptap/extension-placeholder": "^2.0.0-beta.202", 19 | "@tiptap/extension-text-align": "^2.0.0-beta.202", 20 | "@tiptap/extension-text-style": "^2.0.0-beta.202", 21 | "@tiptap/extension-underline": "^2.0.0-beta.202", 22 | "@tiptap/react": "^2.0.0-beta.202", 23 | "@tiptap/starter-kit": "^2.0.0-beta.202", 24 | "debounce": "^1.2.1", 25 | "file-saver": "^2.0.5", 26 | "prosemirror-docx": "^0.1.1", 27 | "react": "^18.2.0", 28 | "react-dom": "^18.2.0", 29 | "react-toastify": "^9.0.8", 30 | "store": "^2.0.12", 31 | "turndown": "^7.1.1", 32 | "uuid": "^9.0.0", 33 | "valtio": "^1.7.5" 34 | }, 35 | "devDependencies": { 36 | "@cloudflare/workers-types": "^3.18.0", 37 | "@types/debounce": "^1.2.1", 38 | "@types/file-saver": "^2.0.5", 39 | "@types/react": "^18.0.22", 40 | "@types/react-dom": "^18.0.7", 41 | "@types/store": "^2.0.2", 42 | "@types/turndown": "^5.0.1", 43 | "@types/uuid": "^8.3.4", 44 | "@upstash/ratelimit": "^0.1.5", 45 | "@upstash/redis": "^1.16.1", 46 | "@vitejs/plugin-react": "^2.2.0", 47 | "typescript": "^4.6.4", 48 | "vite": "^3.2.0" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /functions/api/complete.ts: -------------------------------------------------------------------------------- 1 | import { Ratelimit } from '@upstash/ratelimit'; 2 | import { Redis } from '@upstash/redis/cloudflare'; 3 | 4 | const REQUESTS_PER_DAY = 15; 5 | 6 | const cache = new Map(); 7 | 8 | export async function onRequestPost({ request, env }) { 9 | const ratelimit = new Ratelimit({ 10 | redis: Redis.fromEnv(env), 11 | limiter: Ratelimit.fixedWindow(REQUESTS_PER_DAY, '86400 s'), 12 | ephemeralCache: cache, 13 | }); 14 | 15 | const ip = request.headers.get('cf-connecting-ip'); 16 | const { success, limit, remaining, reset } = await ratelimit.limit(ip); 17 | if (!success) { 18 | return new Response( 19 | JSON.stringify({ 20 | error: `You have exceeded the limit of ${limit} requests per day`, 21 | }), 22 | { 23 | status: 429, 24 | headers: { 25 | 'Content-Type': 'application/json', 26 | 'X-RateLimit-Limit': String(limit), 27 | 'X-RateLimit-Remaining': String(remaining), 28 | 'X-RateLimit-Reset': String(reset), 29 | }, 30 | }, 31 | ); 32 | } 33 | 34 | const json = await request.json(); 35 | // TODO: Validate the request body 36 | 37 | const { OPENAI_API_KEY } = env; 38 | 39 | const resp = await fetch('https://api.openai.com/v1/engines/text-davinci-003/completions', { 40 | method: 'POST', 41 | headers: { 42 | 'Content-Type': 'application/json', 43 | authorization: `Bearer ${OPENAI_API_KEY}`, 44 | }, 45 | body: JSON.stringify({ 46 | ...json, 47 | user: request.headers.get('cf-connecting-ip') || json.user, 48 | top_p: 1, 49 | n: 1, 50 | best_of: 1, 51 | }), 52 | }); 53 | const data = await resp.json(); 54 | 55 | return new Response(JSON.stringify(data), { 56 | headers: { 57 | 'Content-Type': 'application/json', 58 | 'X-RateLimit-Limit': String(limit), 59 | 'X-RateLimit-Remaining': String(remaining), 60 | }, 61 | }); 62 | } 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Arkose, a GPT-3 enhanced document editor 2 | 3 | Arkose is a no-frills document editor that talks with OpenAI's GPT-3 language model API. 4 | 5 | Reasons to use Arkose: 6 | - **AI-assisted writing** - Writer's block? Boilerplate? Press a key to get AI help. 7 | - **Dirt cheap** - Bring your own GPT-3 API key. This is 50 to 2000x cheaper than commercial AI document editors. 8 | - **Private and lightweight** - Arkose is a client. Your documents are transmitted directly to GPT-3 without middle men. 9 | - **Write in Markdown** - Formatting, headings, bullets, code, etc. 10 | - **Portable** - Export your documents to other formats (markdown, html, docx, json) 11 | 12 | **[» Learn more at the wiki «](https://github.com/typpo/arkose/wiki)** 13 | 14 | ## Try it 15 | 16 | ### [» Try the demo «](https://arkose.pages.dev/) 17 | 18 | Press `⌘-Enter` or `Ctrl-Enter` to have GPT-3 contribute to your writing. 19 | 20 | Note that demo completions are proxied through a worker that adds my OpenAI key. Demo users are limited to N completions per day. To run unlimited completions, enter your OpenAI key in `Settings` and/or run this project locally. 21 | 22 | Completions work best when you've already written at least a few sentences. For more usage tips, [visit the wiki](https://github.com/typpo/arkose/wiki). 23 | 24 | ## Demos 25 | 26 | 27 | 28 | 29 | 30 | 31 | ## Setup and installation 32 | 33 | This project is built with vite. 34 | 35 | - `yarn dev` - launch local development server 36 | - `yarn build` - build for production in `dist/` 37 | - `yarn preview` - preview production build locally 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | venv 2 | .env.local 3 | .dev.vars 4 | 5 | ### Vim ### 6 | [._]*.s[a-w][a-z] 7 | [._]s[a-w][a-z] 8 | *.un~ 9 | Session.vim 10 | .netrwhist 11 | *~ 12 | 13 | 14 | ### OSX ### 15 | .DS_Store 16 | .AppleDouble 17 | .LSOverride 18 | 19 | # Icon must end with two \r 20 | Icon 21 | 22 | 23 | # Thumbnails 24 | ._* 25 | 26 | # Files that might appear in the root of a volume 27 | .DocumentRevisions-V100 28 | .fseventsd 29 | .Spotlight-V100 30 | .TemporaryItems 31 | .Trashes 32 | .VolumeIcon.icns 33 | 34 | # Directories potentially created on remote AFP share 35 | .AppleDB 36 | .AppleDesktop 37 | Network Trash Folder 38 | Temporary Items 39 | .apdisk 40 | 41 | 42 | ### Python ### 43 | # Byte-compiled / optimized / DLL files 44 | __pycache__/ 45 | *.py[cod] 46 | *$py.class 47 | 48 | # C extensions 49 | *.so 50 | 51 | # Distribution / packaging 52 | .Python 53 | env/ 54 | build/ 55 | develop-eggs/ 56 | dist/ 57 | downloads/ 58 | eggs/ 59 | .eggs/ 60 | lib/ 61 | lib64/ 62 | parts/ 63 | sdist/ 64 | var/ 65 | *.egg-info/ 66 | .installed.cfg 67 | *.egg 68 | 69 | # PyInstaller 70 | # Usually these files are written by a python script from a template 71 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 72 | *.manifest 73 | *.spec 74 | 75 | # Installer logs 76 | pip-log.txt 77 | pip-delete-this-directory.txt 78 | 79 | # Unit test / coverage reports 80 | htmlcov/ 81 | .tox/ 82 | .coverage 83 | .coverage.* 84 | .cache 85 | nosetests.xml 86 | coverage.xml 87 | *,cover 88 | 89 | # Translations 90 | *.mo 91 | *.pot 92 | 93 | # Django stuff: 94 | *.log 95 | 96 | # Sphinx documentation 97 | docs/_build/ 98 | 99 | # PyBuilder 100 | target/ 101 | 102 | 103 | ### Node ### 104 | # Logs 105 | logs 106 | *.log 107 | npm-debug.log* 108 | 109 | # Runtime data 110 | pids 111 | *.pid 112 | *.seed 113 | 114 | # Directory for instrumented libs generated by jscoverage/JSCover 115 | lib-cov 116 | 117 | # Coverage directory used by tools like istanbul 118 | coverage 119 | 120 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 121 | .grunt 122 | 123 | # node-waf configuration 124 | .lock-wscript 125 | 126 | # Compiled binary addons (http://nodejs.org/api/addons.html) 127 | build/Release 128 | 129 | # Dependency directory 130 | # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git 131 | node_modules 132 | 133 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import debounce from 'debounce'; 2 | import StarterKit from '@tiptap/starter-kit'; 3 | import Underline from '@tiptap/extension-underline'; 4 | import Link from '@tiptap/extension-link'; 5 | import Placeholder from '@tiptap/extension-placeholder'; 6 | import TextStyle from '@tiptap/extension-text-style'; 7 | import FontFamily from '@tiptap/extension-font-family'; 8 | import { useEditor } from '@tiptap/react'; 9 | import { ToastContainer } from 'react-toastify'; 10 | 11 | import Document from './Document'; 12 | import Toolbar from './Toolbar'; 13 | import NavMenu from './NavMenu'; 14 | import aiKeyboardShortcut from './aiKeyboardShortcut'; 15 | import CustomTextAlign from './customTextAlign'; 16 | 17 | import { documentStore } from './stores'; 18 | 19 | import type { Editor } from '@tiptap/core'; 20 | 21 | import 'react-toastify/dist/ReactToastify.css'; 22 | import styles from './App.module.css'; 23 | 24 | function App() { 25 | //const snap = useSnapshot(documentStore); 26 | const { content: initialContent } = documentStore; 27 | const editor = useEditor({ 28 | extensions: [ 29 | StarterKit, 30 | Underline, 31 | TextStyle, 32 | FontFamily, 33 | CustomTextAlign.configure({ 34 | types: ['heading', 'paragraph'], 35 | }), 36 | Link.configure({ 37 | openOnClick: true, 38 | }), 39 | Placeholder.configure({ 40 | placeholder: 41 | window.innerWidth <= 768 42 | ? `Start writing... then press 'Arkose' to generate text with AI` 43 | : `Start writing... then press ${ 44 | window.navigator.platform.startsWith('Mac') ? '⌘' : 'Ctrl' 45 | }+Enter to generate text with AI`, 46 | }), 47 | aiKeyboardShortcut, 48 | ], 49 | content: JSON.parse(JSON.stringify(initialContent)), 50 | autofocus: 'end', 51 | onUpdate: debounce(({ editor }: { editor: Editor }) => { 52 | if (editor) { 53 | documentStore.content = editor.getJSON(); 54 | } 55 | }, 100), 56 | }); 57 | if (!editor) { 58 | return
Loading...
; 59 | } 60 | 61 | const handleNewDocument = () => { 62 | editor.commands.setContent(''); 63 | editor.commands.focus(0); 64 | }; 65 | 66 | return ( 67 |
68 | 69 | 70 | 71 |
72 | 73 |
74 |
75 | ); 76 | } 77 | 78 | export default App; 79 | -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Settings.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Box from '@mui/material/Box'; 3 | import Button from '@mui/material/Button'; 4 | import TextField from '@mui/material/TextField'; 5 | import Dialog from '@mui/material/Dialog'; 6 | import DialogActions from '@mui/material/DialogActions'; 7 | import DialogContent from '@mui/material/DialogContent'; 8 | import DialogContentText from '@mui/material/DialogContentText'; 9 | import DialogTitle from '@mui/material/DialogTitle'; 10 | 11 | import { settingsStore } from './stores'; 12 | import { useSnapshot } from 'valtio'; 13 | 14 | export default function Settings({ open, onClose }: { open: boolean; onClose: () => void }) { 15 | const { apiKey, lookbackChars, maxTokens, temperature } = useSnapshot(settingsStore); 16 | 17 | const [hasErrorLookbackChars, setHasErrorLookbackChars] = React.useState(false); 18 | const [hasErrorMaxTokens, setHasErrorMaxTokens] = React.useState(false); 19 | const [hasErrorTemperature, setHasErrorTemperature] = React.useState(false); 20 | 21 | return ( 22 | 23 | OpenAI GPT-3 Settings 24 | 25 | 26 | 27 | This AI-enabled word processor uses GPT-3 from OpenAI. You may use it for free, but you 28 | must provide your own API key. 29 | 30 | 31 | 32 | { 42 | settingsStore.apiKey = e.target.value; 43 | }} 44 | value={apiKey} 45 | /> 46 | 47 | 48 | { 60 | const newVal = parseInt(e.target.value, 10); 61 | if (!isNaN(newVal) && newVal >= 1 && newVal <= 4000) { 62 | settingsStore.lookbackChars = newVal; 63 | setHasErrorLookbackChars(false); 64 | } else { 65 | setHasErrorLookbackChars(true); 66 | } 67 | }} 68 | defaultValue={lookbackChars} 69 | /> 70 | 71 | 72 | { 84 | const newVal = parseInt(e.target.value, 10); 85 | if (!isNaN(newVal) && newVal >= 1 && newVal <= 4000) { 86 | settingsStore.maxTokens = newVal; 87 | setHasErrorMaxTokens(false); 88 | } else { 89 | setHasErrorMaxTokens(true); 90 | } 91 | }} 92 | defaultValue={maxTokens} 93 | /> 94 | 95 | 96 | { 108 | const newVal = Number(e.target.value); 109 | if (!isNaN(newVal) && newVal >= 0 && newVal <= 1) { 110 | settingsStore.temperature = newVal; 111 | setHasErrorTemperature(false); 112 | } else { 113 | setHasErrorTemperature(true); 114 | } 115 | }} 116 | defaultValue={temperature} 117 | /> 118 | 119 | 120 | 121 | 122 | 123 | 124 | ); 125 | } 126 | -------------------------------------------------------------------------------- /src/completion.ts: -------------------------------------------------------------------------------- 1 | import { toast } from 'react-toastify'; 2 | import { snapshot } from 'valtio/vanilla'; 3 | import { getText, getTextSerializersFromSchema } from '@tiptap/core'; 4 | 5 | import { settingsStore, statsStore, userStore } from './stores'; 6 | 7 | import type { Schema, Node as ProseMirrorNode } from 'prosemirror-model'; 8 | import type { Editor } from '@tiptap/core'; 9 | 10 | export enum CompletionResult { 11 | Success = 1, 12 | Empty = 2, 13 | Error = 3, 14 | AlreadyGenerating = 4, 15 | } 16 | 17 | const MIN_NUM_WORDS = 4; 18 | 19 | function getTextFromDocument(schema: Schema, node: ProseMirrorNode) { 20 | // https://github.com/ueberdosis/tiptap/blob/4851fc5e9b6daccc15a1839e471db489401eca0c/packages/core/src/Editor.ts#L428 21 | return getText(node, { 22 | blockSeparator: '\n\n', 23 | textSerializers: { 24 | ...getTextSerializersFromSchema(schema), 25 | }, 26 | }); 27 | } 28 | 29 | let isGenerating = false; 30 | 31 | export async function doCompletion(editor: Editor) { 32 | if (isGenerating) { 33 | console.info('Refusing to do completion, already generating'); 34 | return CompletionResult.AlreadyGenerating; 35 | } 36 | isGenerating = true; 37 | 38 | const { apiKey, lookbackChars, maxTokens, temperature } = snapshot(settingsStore); 39 | const { tokensUsed } = snapshot(statsStore); 40 | const { uuid } = snapshot(userStore); 41 | // TODO(ian): Handle selections 42 | const pos = editor.state.selection.$anchor.pos; 43 | const start = lookbackChars ? Math.max(0, pos - lookbackChars) : 0; 44 | const before = getTextFromDocument(editor.schema, editor.state.doc.cut(start, pos)); 45 | const beforeTrimmed = before.trim(); 46 | if (!beforeTrimmed || beforeTrimmed.split(/\s/).length < MIN_NUM_WORDS) { 47 | toast.error('AI completion works best if you write more.'); 48 | isGenerating = false; 49 | return; 50 | } 51 | const after = getTextFromDocument( 52 | editor.schema, 53 | editor.state.doc.cut(pos, editor.state.doc.content.size), 54 | ); 55 | console.log('%c Text before:', 'font-size: 18px; font-weight: bold'); 56 | console.log(before); 57 | console.log('%c Text after:', 'font-size: 18px; font-weight: bold'); 58 | console.log(after); 59 | 60 | editor.setEditable(false); 61 | const loadingToast = toast.loading('Generating text...'); 62 | 63 | const apiUrl = 64 | !apiKey || apiKey === 'YOUR_API_KEY' 65 | ? '/api/complete' 66 | : 'https://api.openai.com/v1/engines/text-davinci-003/completions'; 67 | let completion; 68 | try { 69 | const resp = await fetch(apiUrl, { 70 | method: 'POST', 71 | headers: { 72 | 'Content-Type': 'application/json', 73 | Authorization: `Bearer ${apiKey}`, 74 | }, 75 | body: JSON.stringify({ 76 | prompt: before.trim(), 77 | suffix: after.trim() ? after : undefined, 78 | max_tokens: maxTokens, 79 | temperature: temperature, 80 | best_of: 1, 81 | presence_penalty: 0, 82 | user: uuid, 83 | }), 84 | }); 85 | const remaining = resp.headers.get('X-RateLimit-Remaining'); 86 | if (remaining) { 87 | console.log('updating remaining', remaining); 88 | userStore.remainingCompletions = parseInt(remaining, 10); 89 | } 90 | if (resp.status === 429) { 91 | throw new Error( 92 | `You've run out of requests for today. Sign up for OpenAI and add your API key in Settings.`, 93 | ); 94 | } else if (!resp.ok) { 95 | throw new Error(`Error talking to OpenAI (${resp.status}). Check the console for more info.`); 96 | } 97 | completion = await resp.json(); 98 | } catch (err: any) { 99 | console.error(err); 100 | toast.error(err.toString(), { 101 | hideProgressBar: true, 102 | }); 103 | return CompletionResult.Error; 104 | } finally { 105 | toast.dismiss(loadingToast); 106 | editor.setEditable(true); 107 | isGenerating = false; 108 | } 109 | const completedText = completion.choices[0].text as string | null; 110 | if (!completedText?.trim()) { 111 | toast.error("The AI didn't have anything to say. Try writing a bit more.", { 112 | hideProgressBar: true, 113 | }); 114 | return CompletionResult.Empty; 115 | } 116 | 117 | console.log('%c Completion:', 'font-size: 18px; font-weight: bold'); 118 | console.log(completedText); 119 | const paragraphTexts = completedText.trim().split(/\n\n/g); 120 | if (!before.endsWith(' ') && !before.endsWith('\n')) { 121 | // Add a space 122 | paragraphTexts[0] = paragraphTexts[0] + ' '; 123 | } 124 | let nodes = paragraphTexts.map((text) => ({ 125 | type: 'paragraph', 126 | content: [{ type: 'text', text }], 127 | })); 128 | if (!before.endsWith('\n') && !completedText.startsWith('\n')) { 129 | // Insert the text in the current paragraph 130 | editor.commands.insertContent(paragraphTexts[0]); 131 | nodes = nodes.slice(1); 132 | } 133 | editor.commands.insertContent(nodes); 134 | 135 | // Approximate ratio of tokens:words is 1000:750 136 | const numTokensBefore = Math.round(before.split(/\s/).length * 1.33); 137 | const generated = Math.round(completedText.split(/\s/).length * 1.33); 138 | statsStore.tokensUsed = tokensUsed + generated + numTokensBefore; 139 | 140 | return CompletionResult.Success; 141 | } 142 | -------------------------------------------------------------------------------- /src/NavMenu.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import Divider from '@mui/material/Divider'; 4 | import Menu from '@mui/material/Menu'; 5 | import MenuItem from '@mui/material/MenuItem'; 6 | import ListItemIcon from '@mui/material/ListItemIcon'; 7 | import ListItemText from '@mui/material/ListItemText'; 8 | import GithubIcon from '@mui/icons-material/GitHub'; 9 | import HelpOutlineIcon from '@mui/icons-material/HelpOutline'; 10 | import { saveAs } from 'file-saver'; 11 | import { ToastContainer } from 'react-toastify'; 12 | import { useSnapshot } from 'valtio'; 13 | 14 | import Settings from './Settings'; 15 | import Stats from './Stats'; 16 | import { userStore } from './stores'; 17 | 18 | import Logo from '../public/favicon.png'; 19 | 20 | import type { Editor } from '@tiptap/core'; 21 | 22 | import styles from './NavMenu.module.css'; 23 | import { doCompletion } from './completion'; 24 | 25 | interface NavMenuProps { 26 | editor: Editor; 27 | onCreateNewDocument: () => void; 28 | saved: boolean; 29 | } 30 | 31 | export default function NavMenu({ editor, saved, onCreateNewDocument }: NavMenuProps) { 32 | const { remainingCompletions } = useSnapshot(userStore); 33 | const [settingsOpen, setSettingsOpen] = React.useState(false); 34 | const [statsOpen, setStatsOpen] = React.useState(false); 35 | const [fileAnchorEl, setFileAnchorEl] = React.useState(null); 36 | const [aboutAnchorEl, setAboutAnchorEl] = React.useState(null); 37 | 38 | const handleClose = () => { 39 | setFileAnchorEl(null); 40 | setAboutAnchorEl(null); 41 | editor.commands.focus(); 42 | }; 43 | 44 | const handleCreateNewDocument = () => { 45 | const resp = confirm( 46 | 'Are you sure you want to create a new document, overwriting your current one?', 47 | ); 48 | if (resp) { 49 | onCreateNewDocument(); 50 | } 51 | handleClose(); 52 | }; 53 | 54 | const handleOpenDocument = () => { 55 | const input = document.createElement('input'); 56 | input.type = 'file'; 57 | input.accept = '.json,application/json'; 58 | input.click(); 59 | input.onchange = (e: Event) => { 60 | const files = (e?.target as HTMLInputElement)?.files; 61 | if (!files) { 62 | return; 63 | } 64 | const file = files[0]; 65 | if (!file) { 66 | return; 67 | } 68 | const reader = new FileReader(); 69 | reader.readAsText(file, 'utf-8'); 70 | reader.onload = (e: ProgressEvent) => { 71 | const text = e?.target?.result; 72 | if (!text) { 73 | return; 74 | } 75 | editor.commands.setContent(JSON.parse(text as string)); 76 | }; 77 | }; 78 | handleClose(); 79 | }; 80 | 81 | const handleSaveHtml = () => { 82 | const html = editor.getHTML(); 83 | const htmlStyles = ` 102 | `; 103 | saveAs(new Blob([`${htmlStyles}${html}`]), 'document.html'); 104 | handleClose(); 105 | }; 106 | 107 | const handleSaveMarkdown = async () => { 108 | const Turndown = (await import('turndown')).default; 109 | const html = editor.getHTML(); 110 | const md = new Turndown().turndown(html); 111 | saveAs(new Blob([md]), 'document.md'); 112 | handleClose(); 113 | }; 114 | 115 | const handleSaveDocx = async () => { 116 | const { defaultDocxSerializer, writeDocx } = await import('prosemirror-docx'); 117 | const { Packer } = await import('docx'); 118 | const wordDocument = defaultDocxSerializer.serialize(editor.state.doc, { 119 | getImageBuffer: () => Buffer.from([]), 120 | }); 121 | 122 | saveAs(await Packer.toBlob(wordDocument), 'document.docx'); 123 | handleClose(); 124 | }; 125 | 126 | const handleSaveJson = () => { 127 | saveAs(new Blob([JSON.stringify(editor.getJSON())]), 'document.json'); 128 | handleClose(); 129 | }; 130 | 131 | return ( 132 |
133 |
134 |
135 |
136 |
140 | fileAnchorEl ? setFileAnchorEl(null) : setFileAnchorEl(event.currentTarget) 141 | } 142 | > 143 | File 144 |
145 | 159 | New 160 | 161 | Open 162 | Save 163 | 164 | Export HTML 165 | Export Markdown 166 | Export DOCX 167 | 168 |
setSettingsOpen(true)} 172 | > 173 | Settings 174 |
175 | { 178 | setSettingsOpen(false); 179 | handleClose(); 180 | }} 181 | /> 182 |
setStatsOpen(true)}> 183 | Stats 184 |
185 | { 189 | setStatsOpen(false); 190 | handleClose(); 191 | }} 192 | /> 193 |
197 | aboutAnchorEl ? setAboutAnchorEl(null) : setAboutAnchorEl(event.currentTarget) 198 | } 199 | > 200 | About 201 |
202 | 216 | { 218 | window.open('https://github.com/typpo/arkose/wiki', '_blank'); 219 | }} 220 | > 221 | 222 | 223 | 224 | User manual 225 | 226 | { 228 | window.open('https://github.com/typpo/arkose', '_blank'); 229 | }} 230 | > 231 | 232 | 233 | 234 | Source code 235 | 236 | 237 | {remainingCompletions <= 5 && ( 238 |
239 | {remainingCompletions} completions remaining.{' '} 240 | 244 | Learn more 245 | 246 |
247 | )} 248 |
249 |
250 |
doCompletion(editor)}> 251 | Arkose 252 | Arkose logo 253 |
254 |
255 | {/* 256 |
257 | {saved ? ✓ Saved : null} 258 |
259 | */} 260 |
261 |
262 | 263 |
264 | ); 265 | } 266 | -------------------------------------------------------------------------------- /src/Toolbar.tsx: -------------------------------------------------------------------------------- 1 | import BoldIcon from '@mui/icons-material/FormatBold'; 2 | import ItalicIcon from '@mui/icons-material/FormatItalic'; 3 | import UnderlineIcon from '@mui/icons-material/FormatUnderlined'; 4 | import FormatClearIcon from '@mui/icons-material/FormatClear'; 5 | import FormatListBulletedIcon from '@mui/icons-material/FormatListBulleted'; 6 | import FormatListNumberedIcon from '@mui/icons-material/FormatListNumbered'; 7 | import FormatQuoteIcon from '@mui/icons-material/FormatQuote'; 8 | import FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft'; 9 | import FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter'; 10 | import FormatAlignRightIcon from '@mui/icons-material/FormatAlignRight'; 11 | import LinkIcon from '@mui/icons-material/Link'; 12 | import TextField from '@mui/material/TextField'; 13 | import IconButton from '@mui/material/IconButton'; 14 | import Stack from '@mui/material/Stack'; 15 | 16 | import type { Editor } from '@tiptap/core'; 17 | import type { Level } from '@tiptap/extension-heading'; 18 | 19 | import styles from './Toolbar.module.css'; 20 | import { MenuItem } from '@mui/material'; 21 | 22 | interface ToolbarProps { 23 | editor: Editor; 24 | } 25 | 26 | const FONT_FAMILIES = [ 27 | { label: 'Sans', value: 'Arial, Helvetica, sans-serif' }, 28 | { label: 'Serif', value: 'Georgia, serif' }, 29 | { label: 'Mono', value: 'Courier New, Courier, monospace' }, 30 | ]; 31 | 32 | const FONT_SIZE_TYPES = [ 33 | { label: 'Normal', value: -1 }, 34 | { label: 'Heading 1', value: 1 }, 35 | { label: 'Heading 2', value: 2 }, 36 | { label: 'Heading 3', value: 3 }, 37 | { label: 'Heading 4', value: 4 }, 38 | { label: 'Heading 5', value: 5 }, 39 | { label: 'Heading 6', value: 6 }, 40 | ]; 41 | 42 | export default function Toolbar({ editor }: ToolbarProps) { 43 | // Reference: https://tiptap.dev/installation/react#5-the-complete-setup 44 | // TODO(ian): Add tooltips with keyboard shortcuts 45 | 46 | const activeNode = editor.state.selection.$head.parent; 47 | const activeHeading = activeNode.type.name === 'heading' ? activeNode.attrs.level : -1; 48 | // TODO(ian): Font family state is still inaccurate if a single node has multiple styles. 49 | const activeFontFamily = 50 | // @ts-ignore: .content exists on the actual Fragment object 51 | activeNode.content.content[0]?.marks.attrs?.fontFamily || FONT_FAMILIES[0].value; 52 | const isCodeActive = editor.isActive('code') || editor.isActive('codeBlock'); 53 | 54 | return ( 55 |
56 |
57 |
58 | 59 | editor.chain().focus().setFontFamily(e.target.value).run()} 68 | size="small" 69 | disabled={isCodeActive} 70 | > 71 | {FONT_FAMILIES.map((option) => ( 72 | 77 | {option.label} 78 | 79 | ))} 80 | 81 | { 86 | const val = Number(e.target.value); 87 | if (val === -1) { 88 | editor.chain().focus().setParagraph().run() 89 | } else { 90 | const level = val as Level; 91 | editor.chain().focus().toggleHeading({ level }).run(); 92 | } 93 | }} 94 | size="small" 95 | > 96 | {FONT_SIZE_TYPES.map((option) => ( 97 | 105 | {option.label} 106 | 107 | ))} 108 | 109 | editor.chain().focus().toggleBold().run()} 113 | disabled={!editor.can().chain().focus().toggleBold().run()} 114 | color={editor.isActive('bold') ? 'primary' : 'default'} 115 | > 116 | 117 | 118 | editor.chain().focus().toggleItalic().run()} 121 | disabled={!editor.can().chain().focus().toggleItalic().run()} 122 | color={editor.isActive('italic') ? 'primary' : 'default'} 123 | > 124 | 125 | 126 | editor.chain().focus().toggleUnderline().run()} 129 | disabled={!editor.can().chain().focus().toggleUnderline().run()} 130 | color={editor.isActive('underline') ? 'primary' : 'default'} 131 | > 132 | 133 | 134 | 137 | editor.chain().focus().unsetAllMarks().unsetFontFamily().setParagraph().run() 138 | } 139 | > 140 | 141 | 142 | editor.chain().focus().toggleBulletList().run()} 145 | disabled={!editor.can().chain().focus().toggleBulletList().run()} 146 | color={editor.isActive('bulletList') ? 'primary' : 'default'} 147 | > 148 | 149 | 150 | editor.chain().focus().toggleOrderedList().run()} 153 | disabled={!editor.can().chain().focus().toggleOrderedList().run()} 154 | color={editor.isActive('orderedList') ? 'primary' : 'default'} 155 | > 156 | 157 | 158 | editor.chain().focus().toggleBlockquote().run()} 161 | disabled={!editor.can().chain().focus().toggleBlockquote().run()} 162 | color={editor.isActive('blockquote') ? 'primary' : 'default'} 163 | > 164 | 165 | 166 | { 169 | const previousUrl = editor.getAttributes('link').href; 170 | const url = window.prompt('Enter a URL', previousUrl); 171 | if (url === null || url === '') { 172 | editor.chain().focus().extendMarkRange('link').unsetLink().run(); 173 | return; 174 | } 175 | editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run(); 176 | }} 177 | disabled={ 178 | !editor.can().chain().focus().unsetLink().run() || 179 | editor.view.state.selection.content().size < 1 180 | } 181 | color={editor.isActive('link') ? 'primary' : 'default'} 182 | > 183 | 184 | 185 | editor.chain().focus().setTextAlign('left').run()} 188 | disabled={!editor.can().chain().focus().setTextAlign('left').run()} 189 | //color={editor.isActive({ textAlign: 'left' }) ? 'primary' : 'default'} 190 | > 191 | 192 | 193 | editor.chain().focus().setTextAlign('center').run()} 196 | disabled={!editor.can().chain().focus().setTextAlign('center').run()} 197 | color={editor.isActive({ textAlign: 'center' }) ? 'primary' : 'default'} 198 | > 199 | 200 | 201 | editor.chain().focus().setTextAlign('right').run()} 204 | disabled={!editor.can().chain().focus().setTextAlign('right').run()} 205 | color={editor.isActive({ textAlign: 'right' }) ? 'primary' : 'default'} 206 | > 207 | 208 | 209 | 210 |
211 |
212 |
213 | ); 214 | } 215 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.2.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" 8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.1.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": 14 | version "7.18.6" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" 16 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== 17 | dependencies: 18 | "@babel/highlight" "^7.18.6" 19 | 20 | "@babel/compat-data@^7.20.0": 21 | version "7.20.0" 22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.0.tgz#9b61938c5f688212c7b9ae363a819df7d29d4093" 23 | integrity sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w== 24 | 25 | "@babel/core@^7.19.6": 26 | version "7.19.6" 27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" 28 | integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== 29 | dependencies: 30 | "@ampproject/remapping" "^2.1.0" 31 | "@babel/code-frame" "^7.18.6" 32 | "@babel/generator" "^7.19.6" 33 | "@babel/helper-compilation-targets" "^7.19.3" 34 | "@babel/helper-module-transforms" "^7.19.6" 35 | "@babel/helpers" "^7.19.4" 36 | "@babel/parser" "^7.19.6" 37 | "@babel/template" "^7.18.10" 38 | "@babel/traverse" "^7.19.6" 39 | "@babel/types" "^7.19.4" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.1" 44 | semver "^6.3.0" 45 | 46 | "@babel/generator@^7.19.6", "@babel/generator@^7.20.0": 47 | version "7.20.0" 48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.0.tgz#0bfc5379e0efb05ca6092091261fcdf7ec36249d" 49 | integrity sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w== 50 | dependencies: 51 | "@babel/types" "^7.20.0" 52 | "@jridgewell/gen-mapping" "^0.3.2" 53 | jsesc "^2.5.1" 54 | 55 | "@babel/helper-annotate-as-pure@^7.18.6": 56 | version "7.18.6" 57 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" 58 | integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== 59 | dependencies: 60 | "@babel/types" "^7.18.6" 61 | 62 | "@babel/helper-compilation-targets@^7.19.3": 63 | version "7.20.0" 64 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" 65 | integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== 66 | dependencies: 67 | "@babel/compat-data" "^7.20.0" 68 | "@babel/helper-validator-option" "^7.18.6" 69 | browserslist "^4.21.3" 70 | semver "^6.3.0" 71 | 72 | "@babel/helper-environment-visitor@^7.18.9": 73 | version "7.18.9" 74 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" 75 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== 76 | 77 | "@babel/helper-function-name@^7.19.0": 78 | version "7.19.0" 79 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" 80 | integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== 81 | dependencies: 82 | "@babel/template" "^7.18.10" 83 | "@babel/types" "^7.19.0" 84 | 85 | "@babel/helper-hoist-variables@^7.18.6": 86 | version "7.18.6" 87 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" 88 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== 89 | dependencies: 90 | "@babel/types" "^7.18.6" 91 | 92 | "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": 93 | version "7.18.6" 94 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" 95 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== 96 | dependencies: 97 | "@babel/types" "^7.18.6" 98 | 99 | "@babel/helper-module-transforms@^7.19.6": 100 | version "7.19.6" 101 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" 102 | integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== 103 | dependencies: 104 | "@babel/helper-environment-visitor" "^7.18.9" 105 | "@babel/helper-module-imports" "^7.18.6" 106 | "@babel/helper-simple-access" "^7.19.4" 107 | "@babel/helper-split-export-declaration" "^7.18.6" 108 | "@babel/helper-validator-identifier" "^7.19.1" 109 | "@babel/template" "^7.18.10" 110 | "@babel/traverse" "^7.19.6" 111 | "@babel/types" "^7.19.4" 112 | 113 | "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0": 114 | version "7.19.0" 115 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" 116 | integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== 117 | 118 | "@babel/helper-simple-access@^7.19.4": 119 | version "7.19.4" 120 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" 121 | integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== 122 | dependencies: 123 | "@babel/types" "^7.19.4" 124 | 125 | "@babel/helper-split-export-declaration@^7.18.6": 126 | version "7.18.6" 127 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" 128 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== 129 | dependencies: 130 | "@babel/types" "^7.18.6" 131 | 132 | "@babel/helper-string-parser@^7.19.4": 133 | version "7.19.4" 134 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" 135 | integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== 136 | 137 | "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": 138 | version "7.19.1" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 140 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 141 | 142 | "@babel/helper-validator-option@^7.18.6": 143 | version "7.18.6" 144 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" 145 | integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== 146 | 147 | "@babel/helpers@^7.19.4": 148 | version "7.20.0" 149 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.0.tgz#27c8ffa8cc32a2ed3762fba48886e7654dbcf77f" 150 | integrity sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ== 151 | dependencies: 152 | "@babel/template" "^7.18.10" 153 | "@babel/traverse" "^7.20.0" 154 | "@babel/types" "^7.20.0" 155 | 156 | "@babel/highlight@^7.18.6": 157 | version "7.18.6" 158 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 159 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 160 | dependencies: 161 | "@babel/helper-validator-identifier" "^7.18.6" 162 | chalk "^2.0.0" 163 | js-tokens "^4.0.0" 164 | 165 | "@babel/parser@^7.18.10", "@babel/parser@^7.19.6", "@babel/parser@^7.20.0": 166 | version "7.20.0" 167 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046" 168 | integrity sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg== 169 | 170 | "@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": 171 | version "7.18.6" 172 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" 173 | integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== 174 | dependencies: 175 | "@babel/helper-plugin-utils" "^7.18.6" 176 | 177 | "@babel/plugin-transform-react-jsx-development@^7.18.6": 178 | version "7.18.6" 179 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" 180 | integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== 181 | dependencies: 182 | "@babel/plugin-transform-react-jsx" "^7.18.6" 183 | 184 | "@babel/plugin-transform-react-jsx-self@^7.18.6": 185 | version "7.18.6" 186 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" 187 | integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== 188 | dependencies: 189 | "@babel/helper-plugin-utils" "^7.18.6" 190 | 191 | "@babel/plugin-transform-react-jsx-source@^7.19.6": 192 | version "7.19.6" 193 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" 194 | integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== 195 | dependencies: 196 | "@babel/helper-plugin-utils" "^7.19.0" 197 | 198 | "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.19.0": 199 | version "7.19.0" 200 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" 201 | integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== 202 | dependencies: 203 | "@babel/helper-annotate-as-pure" "^7.18.6" 204 | "@babel/helper-module-imports" "^7.18.6" 205 | "@babel/helper-plugin-utils" "^7.19.0" 206 | "@babel/plugin-syntax-jsx" "^7.18.6" 207 | "@babel/types" "^7.19.0" 208 | 209 | "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": 210 | version "7.20.0" 211 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a" 212 | integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== 213 | dependencies: 214 | regenerator-runtime "^0.13.10" 215 | 216 | "@babel/template@^7.18.10": 217 | version "7.18.10" 218 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" 219 | integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== 220 | dependencies: 221 | "@babel/code-frame" "^7.18.6" 222 | "@babel/parser" "^7.18.10" 223 | "@babel/types" "^7.18.10" 224 | 225 | "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.0": 226 | version "7.20.0" 227 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.0.tgz#538c4c6ce6255f5666eba02252a7b59fc2d5ed98" 228 | integrity sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ== 229 | dependencies: 230 | "@babel/code-frame" "^7.18.6" 231 | "@babel/generator" "^7.20.0" 232 | "@babel/helper-environment-visitor" "^7.18.9" 233 | "@babel/helper-function-name" "^7.19.0" 234 | "@babel/helper-hoist-variables" "^7.18.6" 235 | "@babel/helper-split-export-declaration" "^7.18.6" 236 | "@babel/parser" "^7.20.0" 237 | "@babel/types" "^7.20.0" 238 | debug "^4.1.0" 239 | globals "^11.1.0" 240 | 241 | "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.20.0": 242 | version "7.20.0" 243 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.0.tgz#52c94cf8a7e24e89d2a194c25c35b17a64871479" 244 | integrity sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg== 245 | dependencies: 246 | "@babel/helper-string-parser" "^7.19.4" 247 | "@babel/helper-validator-identifier" "^7.19.1" 248 | to-fast-properties "^2.0.0" 249 | 250 | "@cloudflare/workers-types@^3.18.0": 251 | version "3.18.0" 252 | resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-3.18.0.tgz#b4177cbe9306d7df4654db594d6e77c036341d2e" 253 | integrity sha512-ehKOJVLMeR+tZkYhWEaLYQxl0TaIZu/kE86HF3/RidR8Xv5LuQxpbh+XXAoKVqsaphWLhIgBhgnlN5HGdheXSQ== 254 | 255 | "@emotion/babel-plugin@^11.10.5": 256 | version "11.10.5" 257 | resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" 258 | integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== 259 | dependencies: 260 | "@babel/helper-module-imports" "^7.16.7" 261 | "@babel/plugin-syntax-jsx" "^7.17.12" 262 | "@babel/runtime" "^7.18.3" 263 | "@emotion/hash" "^0.9.0" 264 | "@emotion/memoize" "^0.8.0" 265 | "@emotion/serialize" "^1.1.1" 266 | babel-plugin-macros "^3.1.0" 267 | convert-source-map "^1.5.0" 268 | escape-string-regexp "^4.0.0" 269 | find-root "^1.1.0" 270 | source-map "^0.5.7" 271 | stylis "4.1.3" 272 | 273 | "@emotion/cache@^11.10.3", "@emotion/cache@^11.10.5": 274 | version "11.10.5" 275 | resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" 276 | integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== 277 | dependencies: 278 | "@emotion/memoize" "^0.8.0" 279 | "@emotion/sheet" "^1.2.1" 280 | "@emotion/utils" "^1.2.0" 281 | "@emotion/weak-memoize" "^0.3.0" 282 | stylis "4.1.3" 283 | 284 | "@emotion/hash@^0.9.0": 285 | version "0.9.0" 286 | resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" 287 | integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== 288 | 289 | "@emotion/is-prop-valid@^1.2.0": 290 | version "1.2.0" 291 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" 292 | integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== 293 | dependencies: 294 | "@emotion/memoize" "^0.8.0" 295 | 296 | "@emotion/memoize@^0.8.0": 297 | version "0.8.0" 298 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" 299 | integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== 300 | 301 | "@emotion/react@^11.10.5": 302 | version "11.10.5" 303 | resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" 304 | integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== 305 | dependencies: 306 | "@babel/runtime" "^7.18.3" 307 | "@emotion/babel-plugin" "^11.10.5" 308 | "@emotion/cache" "^11.10.5" 309 | "@emotion/serialize" "^1.1.1" 310 | "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" 311 | "@emotion/utils" "^1.2.0" 312 | "@emotion/weak-memoize" "^0.3.0" 313 | hoist-non-react-statics "^3.3.1" 314 | 315 | "@emotion/serialize@^1.1.1": 316 | version "1.1.1" 317 | resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" 318 | integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== 319 | dependencies: 320 | "@emotion/hash" "^0.9.0" 321 | "@emotion/memoize" "^0.8.0" 322 | "@emotion/unitless" "^0.8.0" 323 | "@emotion/utils" "^1.2.0" 324 | csstype "^3.0.2" 325 | 326 | "@emotion/sheet@^1.2.1": 327 | version "1.2.1" 328 | resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" 329 | integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== 330 | 331 | "@emotion/styled@^11.10.5": 332 | version "11.10.5" 333 | resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" 334 | integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== 335 | dependencies: 336 | "@babel/runtime" "^7.18.3" 337 | "@emotion/babel-plugin" "^11.10.5" 338 | "@emotion/is-prop-valid" "^1.2.0" 339 | "@emotion/serialize" "^1.1.1" 340 | "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" 341 | "@emotion/utils" "^1.2.0" 342 | 343 | "@emotion/unitless@^0.8.0": 344 | version "0.8.0" 345 | resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" 346 | integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== 347 | 348 | "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": 349 | version "1.0.0" 350 | resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" 351 | integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== 352 | 353 | "@emotion/utils@^1.2.0": 354 | version "1.2.0" 355 | resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" 356 | integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== 357 | 358 | "@emotion/weak-memoize@^0.3.0": 359 | version "0.3.0" 360 | resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" 361 | integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== 362 | 363 | "@esbuild/android-arm@0.15.12": 364 | version "0.15.12" 365 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz#e548b10a5e55b9e10537a049ebf0bc72c453b769" 366 | integrity sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA== 367 | 368 | "@esbuild/linux-loong64@0.15.12": 369 | version "0.15.12" 370 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz#475b33a2631a3d8ca8aa95ee127f9a61d95bf9c1" 371 | integrity sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw== 372 | 373 | "@jridgewell/gen-mapping@^0.1.0": 374 | version "0.1.1" 375 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" 376 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== 377 | dependencies: 378 | "@jridgewell/set-array" "^1.0.0" 379 | "@jridgewell/sourcemap-codec" "^1.4.10" 380 | 381 | "@jridgewell/gen-mapping@^0.3.2": 382 | version "0.3.2" 383 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 384 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 385 | dependencies: 386 | "@jridgewell/set-array" "^1.0.1" 387 | "@jridgewell/sourcemap-codec" "^1.4.10" 388 | "@jridgewell/trace-mapping" "^0.3.9" 389 | 390 | "@jridgewell/resolve-uri@3.1.0": 391 | version "3.1.0" 392 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 393 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 394 | 395 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": 396 | version "1.1.2" 397 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 398 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 399 | 400 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": 401 | version "1.4.14" 402 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 403 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 404 | 405 | "@jridgewell/trace-mapping@^0.3.9": 406 | version "0.3.17" 407 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" 408 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== 409 | dependencies: 410 | "@jridgewell/resolve-uri" "3.1.0" 411 | "@jridgewell/sourcemap-codec" "1.4.14" 412 | 413 | "@mui/base@5.0.0-alpha.103": 414 | version "5.0.0-alpha.103" 415 | resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.103.tgz#90a91d1eba29ffa0bb243b25e6b1db3a9b4beeda" 416 | integrity sha512-fJIyB2df3CHn7D26WHnutnY7vew6aytTlhmRJz6GX7ag19zU2GcOUhJAzY5qwWcrXKnlYgzimhEjaEnuiUWU4g== 417 | dependencies: 418 | "@babel/runtime" "^7.19.0" 419 | "@emotion/is-prop-valid" "^1.2.0" 420 | "@mui/types" "^7.2.0" 421 | "@mui/utils" "^5.10.9" 422 | "@popperjs/core" "^2.11.6" 423 | clsx "^1.2.1" 424 | prop-types "^15.8.1" 425 | react-is "^18.2.0" 426 | 427 | "@mui/core-downloads-tracker@^5.10.11": 428 | version "5.10.11" 429 | resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.11.tgz#e91640dfd2bd62c7f5b27da7e540f5d07e5cbc50" 430 | integrity sha512-u5ff+UCFDHcR8MoQ8tuJR4c35vt7T/ki3aMEE2O3XQoGs8KJSrBiisFpFKyldg9/W2NSyoZxN+kxEGIfRxh+9Q== 431 | 432 | "@mui/icons-material@^5.10.9": 433 | version "5.10.9" 434 | resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.10.9.tgz#f9522c49797caf30146acc576e37ecb4f95bbc38" 435 | integrity sha512-sqClXdEM39WKQJOQ0ZCPTptaZgqwibhj2EFV9N0v7BU1PO8y4OcX/a2wIQHn4fNuDjIZktJIBrmU23h7aqlGgg== 436 | dependencies: 437 | "@babel/runtime" "^7.19.0" 438 | 439 | "@mui/material@^5.10.11": 440 | version "5.10.11" 441 | resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.10.11.tgz#73c38b29d2df5e2f9a0825b363279bb0a2aa40df" 442 | integrity sha512-KJ0wPCTbv6sFzwA3dgg0gowdfF+SRl7D510J9l6Nl/KFX0EawcewQudqKY4slYGFXniKa5PykqokpaWXsCCPqg== 443 | dependencies: 444 | "@babel/runtime" "^7.19.0" 445 | "@mui/base" "5.0.0-alpha.103" 446 | "@mui/core-downloads-tracker" "^5.10.11" 447 | "@mui/system" "^5.10.10" 448 | "@mui/types" "^7.2.0" 449 | "@mui/utils" "^5.10.9" 450 | "@types/react-transition-group" "^4.4.5" 451 | clsx "^1.2.1" 452 | csstype "^3.1.1" 453 | prop-types "^15.8.1" 454 | react-is "^18.2.0" 455 | react-transition-group "^4.4.5" 456 | 457 | "@mui/private-theming@^5.10.9": 458 | version "5.10.9" 459 | resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.10.9.tgz#c427bfa736455703975cdb108dbde6a174ba7971" 460 | integrity sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg== 461 | dependencies: 462 | "@babel/runtime" "^7.19.0" 463 | "@mui/utils" "^5.10.9" 464 | prop-types "^15.8.1" 465 | 466 | "@mui/styled-engine@^5.10.8": 467 | version "5.10.8" 468 | resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.10.8.tgz#2db411e4278f06f70ccb6b5cd56ace67109513f6" 469 | integrity sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw== 470 | dependencies: 471 | "@babel/runtime" "^7.19.0" 472 | "@emotion/cache" "^11.10.3" 473 | csstype "^3.1.1" 474 | prop-types "^15.8.1" 475 | 476 | "@mui/system@^5.10.10": 477 | version "5.10.10" 478 | resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.10.tgz#fbc34f29a3b62268c3d2b2be92819a35fc52de90" 479 | integrity sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA== 480 | dependencies: 481 | "@babel/runtime" "^7.19.0" 482 | "@mui/private-theming" "^5.10.9" 483 | "@mui/styled-engine" "^5.10.8" 484 | "@mui/types" "^7.2.0" 485 | "@mui/utils" "^5.10.9" 486 | clsx "^1.2.1" 487 | csstype "^3.1.1" 488 | prop-types "^15.8.1" 489 | 490 | "@mui/types@^7.2.0": 491 | version "7.2.0" 492 | resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.0.tgz#91380c2d42420f51f404120f7a9270eadd6f5c23" 493 | integrity sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA== 494 | 495 | "@mui/utils@^5.10.9": 496 | version "5.10.9" 497 | resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.10.9.tgz#9dc455f9230f43eeb81d96a9a4bdb3855bb9ea39" 498 | integrity sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA== 499 | dependencies: 500 | "@babel/runtime" "^7.19.0" 501 | "@types/prop-types" "^15.7.5" 502 | "@types/react-is" "^16.7.1 || ^17.0.0" 503 | prop-types "^15.8.1" 504 | react-is "^18.2.0" 505 | 506 | "@popperjs/core@^2.11.6", "@popperjs/core@^2.9.0": 507 | version "2.11.6" 508 | resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" 509 | integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== 510 | 511 | "@tiptap/core@^2.0.0-beta.202": 512 | version "2.0.0-beta.202" 513 | resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.202.tgz#be4c6a200e81875c552e1cc15ae9c6cdd86c37c2" 514 | integrity sha512-KnOcZBtkWoDT7EsVLiJr9DyBnQcKJQHI8kOhNIL0snUrksr25q8xBW05iYqw6cGAF7iu1cFM80VikfgefsZUpw== 515 | dependencies: 516 | prosemirror-commands "^1.3.1" 517 | prosemirror-keymap "^1.2.0" 518 | prosemirror-model "^1.18.1" 519 | prosemirror-schema-list "^1.2.2" 520 | prosemirror-state "^1.4.1" 521 | prosemirror-transform "^1.7.0" 522 | prosemirror-view "^1.28.2" 523 | 524 | "@tiptap/extension-blockquote@^2.0.0-beta.202": 525 | version "2.0.0-beta.202" 526 | resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.202.tgz#91168b32387ed0ce4d03dd3b6c802682287ede3c" 527 | integrity sha512-weLbMxM7VfI4hJsThw1+mB4jbQnVFizmzRlGU40LKMzEU5yIgIhuaomQ02Z7V0cRgfXsoKX9oc0BYGiO0Ra6/g== 528 | 529 | "@tiptap/extension-bold@^2.0.0-beta.202": 530 | version "2.0.0-beta.202" 531 | resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.202.tgz#877309e7b84701c22865517f09cbc5d288aa9369" 532 | integrity sha512-AsfoChIleoSbY9gAuhbLF8BAEhHPrRKofmU09xJ62SBkL1rtgci8YzJYhL9leQCM4n1MQZEDeVf0ho75HeTPMA== 533 | 534 | "@tiptap/extension-bubble-menu@^2.0.0-beta.202": 535 | version "2.0.0-beta.202" 536 | resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.202.tgz#614999a0ca42fe5e8868b154ea5c53d058288462" 537 | integrity sha512-Xa0BO5liIHitaxj70JbbmiC70Yg9+EcF9airfI32uOFNHwgEKyXVb5MRyQadRSmXnwPMPLVGWgf3Kg/5rnDqeg== 538 | dependencies: 539 | prosemirror-state "^1.4.1" 540 | prosemirror-view "^1.28.2" 541 | tippy.js "^6.3.7" 542 | 543 | "@tiptap/extension-bullet-list@^2.0.0-beta.202": 544 | version "2.0.0-beta.202" 545 | resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.202.tgz#1826ec86a83cc2feba3f90b3015c0e642a925f8c" 546 | integrity sha512-Su+GvRGyW9FTBtcFjvNkkYwzDRo+1O2YTNOZi1Z/OkDqbg3g89kRue78avs0nHW7HEgdhCap+z8KtAPrie4eBg== 547 | 548 | "@tiptap/extension-code-block@^2.0.0-beta.202": 549 | version "2.0.0-beta.202" 550 | resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.202.tgz#a76fcb90e8e22082bedd9853f7a9bd0a541a800e" 551 | integrity sha512-tfK9khIroGjsXQvk2K/9z1/UyQrB4+zghkjyK1xikzRmhgfOeqQzA0TDrFrz7ywFXmSFQ7GnnYAp+RW6r6wyUg== 552 | dependencies: 553 | prosemirror-state "^1.4.1" 554 | 555 | "@tiptap/extension-code@^2.0.0-beta.202": 556 | version "2.0.0-beta.202" 557 | resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.0.0-beta.202.tgz#5d4352a6cc4a2d16262472fb11c54cfca24bd40a" 558 | integrity sha512-XwAr7ysSWJVZWHNXDaNBTPH1CTyVxHnPv/PiCWTGhf8Fkx7R7xW2QCUKx4ablwxFlTY7H8xGmCujaewUQBdO5w== 559 | 560 | "@tiptap/extension-document@^2.0.0-beta.202": 561 | version "2.0.0-beta.202" 562 | resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.202.tgz#fa2b1a42075b1a6bfbcd9564289dfbf7347c903c" 563 | integrity sha512-UsDSe93QtnuDrUo11wYCMtp7XlTIBvL5HNhx+enLRY7B8nUhX+d78u1BzspTpCkMYKcdwDmAGfIYMqqPViPEvA== 564 | 565 | "@tiptap/extension-dropcursor@^2.0.0-beta.202": 566 | version "2.0.0-beta.202" 567 | resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.202.tgz#a7e2b3c66dfb5c05077c05991fccd5e4166bdc1d" 568 | integrity sha512-4Q3LnqvMnxP0KdX7tIgCoTCKg949rg351m0wguVb1bo4v9lA0zfJpSgqjQ1Xs2vaYVBwkFjLoqrfhTRn5mnopQ== 569 | dependencies: 570 | prosemirror-dropcursor "1.5.0" 571 | 572 | "@tiptap/extension-floating-menu@^2.0.0-beta.202": 573 | version "2.0.0-beta.202" 574 | resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.202.tgz#9f895a04cd93cf4b41542ef3b09f3c90bfd0e215" 575 | integrity sha512-09liirOFsPDFRLS2FiFdnfzyyOQwwyVXLzI6MzUOw5RZbOsGJ5kB8jZdkXvsAIiOs0YYsH3fyOyWirIwSRhBTQ== 576 | dependencies: 577 | prosemirror-state "^1.4.1" 578 | prosemirror-view "^1.28.2" 579 | tippy.js "^6.3.7" 580 | 581 | "@tiptap/extension-font-family@^2.0.0-beta.202": 582 | version "2.0.0-beta.202" 583 | resolved "https://registry.yarnpkg.com/@tiptap/extension-font-family/-/extension-font-family-2.0.0-beta.202.tgz#f5b561a79e7562e2c6f12f2cd1484a4c38740b82" 584 | integrity sha512-vxRFyCULuaZOqeW/heAc7fL+LgAmuxUyScdWFxnWEBxwzHn0U1L29evr8SC7Vwo7TowV/u9+6lgCeoP7GuKq1g== 585 | 586 | "@tiptap/extension-gapcursor@^2.0.0-beta.202": 587 | version "2.0.0-beta.202" 588 | resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.202.tgz#567fb6281068db7fb5da2092550e83e01530d8cf" 589 | integrity sha512-jOPMPPnTfVuc5YpFTcQM42/cg1J3+OeHitYb1/vBMpaNinVijuafsK14xDoVP8+sydKVgtBzYkfP/faN82I9iA== 590 | dependencies: 591 | prosemirror-gapcursor "^1.3.1" 592 | 593 | "@tiptap/extension-hard-break@^2.0.0-beta.202": 594 | version "2.0.0-beta.202" 595 | resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.202.tgz#f82c29f71082ae44c361964fb42e6e78d339dc29" 596 | integrity sha512-Nr9BXeP+dXS5vLP/C2voTrhl+4YkDHBtPlc+5xm5NPBn04slTGSPO2lgV3YrMsfUOMNXHqeob1lq4qiLF4pybQ== 597 | 598 | "@tiptap/extension-heading@^2.0.0-beta.202": 599 | version "2.0.0-beta.202" 600 | resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.202.tgz#da12041c626825f8a3f3173ac922e11f2df55cbf" 601 | integrity sha512-sF271jSWHgtoJLDNFLS7eyUcUStl7mBDQNJIENWVI+lFu2Ax8GmO7AoB74Q6L5Zaw4h73L6TAvaafHIXurz7tA== 602 | 603 | "@tiptap/extension-history@^2.0.0-beta.202": 604 | version "2.0.0-beta.202" 605 | resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.0.0-beta.202.tgz#d94770367a1a7b4e8f81f36d8b1731ca1fbc6879" 606 | integrity sha512-BLwaOWmFHBQjOonojYHl1Po27IHxgjSAPw+ijMKtKzqa2msJRJevjC4tBaX5s/YrB7PQ2tFE7rfJED4HLjBm6w== 607 | dependencies: 608 | prosemirror-history "^1.3.0" 609 | 610 | "@tiptap/extension-horizontal-rule@^2.0.0-beta.202": 611 | version "2.0.0-beta.202" 612 | resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.202.tgz#12da36ea8ede0e720c7b2e5d1a2dd4c255798b2f" 613 | integrity sha512-ut2Im/TNQynnuqdoY9yOjMDUKmxn97ERVEpqcQSaIgqBuF6bjk60Wa13ob6oS2g6vqXxwWFrnQVz48A9TcF5FQ== 614 | dependencies: 615 | prosemirror-state "^1.4.1" 616 | 617 | "@tiptap/extension-italic@^2.0.0-beta.202": 618 | version "2.0.0-beta.202" 619 | resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.202.tgz#0a991167dd06064bdf3c811d638d04cea9029206" 620 | integrity sha512-vgSLy4KDp6AmnAHLHXe/nWeNbLnyUXxmf4U4+esebAV5Hu2F7LgceknFt9D8AGEtYUU+/fYKSeE2NGJgTQG9lA== 621 | 622 | "@tiptap/extension-link@^2.0.0-beta.202": 623 | version "2.0.0-beta.202" 624 | resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.202.tgz#2b10ef877937bf2d491fffaf3e0545105f61b6fb" 625 | integrity sha512-/9bZd43dMkzmo7SCCDtEscgdFKCat9yZAyAyg+PHYdhI8Lbqv5GfjxzBbx58v7jEP1eDKFnwTDFVwAsxCE9f0w== 626 | dependencies: 627 | linkifyjs "^3.0.5" 628 | prosemirror-model "^1.18.1" 629 | prosemirror-state "^1.4.1" 630 | 631 | "@tiptap/extension-list-item@^2.0.0-beta.202": 632 | version "2.0.0-beta.202" 633 | resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.202.tgz#32bc4beacb0f692abfc8283760292a6354f070dc" 634 | integrity sha512-15yAsO+CCM8ievdX4oxg8kMBVFqhzVAw7pU6E8KL76kIwWCIIyVW6hU3VZdglyBVnAG0ws5/DaZ4VRFtVPRDvg== 635 | 636 | "@tiptap/extension-ordered-list@^2.0.0-beta.202": 637 | version "2.0.0-beta.202" 638 | resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.202.tgz#5b5987d3a1c98e579071e70485db2e82bf638ed9" 639 | integrity sha512-PpJn8EtS8MLZ4NN9R3crmrivbjTMHjuSE2Ab3Y9TdeR9x9DIF23O/EkunnkPUiBUx6sNADprEWJIQesgpakrtw== 640 | 641 | "@tiptap/extension-paragraph@^2.0.0-beta.202": 642 | version "2.0.0-beta.202" 643 | resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.202.tgz#5a395a8107bfc767f80335a0cf7f89278ad0cf20" 644 | integrity sha512-QI86DMUAz5froDJJXpbFV0I+iSFikjhQ8W5clYDbnrP/clRI/FYxklQ3oxSk4VzGBGB5EaBJf+jD7htLKb39UA== 645 | 646 | "@tiptap/extension-placeholder@^2.0.0-beta.202": 647 | version "2.0.0-beta.202" 648 | resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.0.0-beta.202.tgz#fe3b032619dea30858f16135cef3b5e8f871d1c7" 649 | integrity sha512-HIJwyhLs7Aq3jH4JRpNlpjFtF7PyoOO6YgqLu2GYhUCVQeVEuqD8zKe8Xphja92cHB5jVLteOspa7FFfWr+9NA== 650 | dependencies: 651 | prosemirror-model "^1.18.1" 652 | prosemirror-state "^1.4.1" 653 | prosemirror-view "^1.28.2" 654 | 655 | "@tiptap/extension-strike@^2.0.0-beta.202": 656 | version "2.0.0-beta.202" 657 | resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.202.tgz#8bf200fb044e5b2401edef26e26920b94ab35249" 658 | integrity sha512-cs87UI/VTkmSfIwlHpm7nAPXok2bAQvxmNJ1y7UPzTATVl+ixP1F4aIkwiYk+X7rE/Sys+09PGg1Pr1shwUUkQ== 659 | 660 | "@tiptap/extension-text-align@^2.0.0-beta.202": 661 | version "2.0.0-beta.202" 662 | resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.0.0-beta.202.tgz#37c73e884fb0d9ebe2a519d398b2da52672b7a4b" 663 | integrity sha512-cB5SBKRTn730BBwtPQaKfc7uYgI7bGuD1UbsdF8UY93vIsRjdRO4McNlvgfDrb8WrD460PsOOXx18YwX1+3T/Q== 664 | 665 | "@tiptap/extension-text-style@^2.0.0-beta.202": 666 | version "2.0.0-beta.202" 667 | resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.0.0-beta.202.tgz#73706d44434787a88ddd2cbc5feb17cb48cd26cd" 668 | integrity sha512-dTA3rdkSkANGXtObNEEk7h6+pEOP4iANZF8D0RiNK+c5dKpCfKswVAuddm5q2PMcgYgep5bv/sorAqOIire2rQ== 669 | 670 | "@tiptap/extension-text@^2.0.0-beta.202": 671 | version "2.0.0-beta.202" 672 | resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.0-beta.202.tgz#d0152f547572a14c4e0e88287acb2b0c311fef04" 673 | integrity sha512-6UsfU9xvKTxHfZYxVJy5DSQ0ibnhC403KLRQ4ePwpJql0TotBx93/CBfPCVLFEwF86HNhf1fFUCx+j2wuwVxmA== 674 | 675 | "@tiptap/extension-underline@^2.0.0-beta.202": 676 | version "2.0.0-beta.202" 677 | resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.0.0-beta.202.tgz#68104f46c3bde4b36f8bbf902a02befc8221c98f" 678 | integrity sha512-aZ2BdBDopL7KNDQZZ707VIF6S2FUHGMQxJvfGPrgvCHY5lu34B9F/FGCMPd5VAZC0vaJlHTQ30FWkeQjIDetWg== 679 | 680 | "@tiptap/react@^2.0.0-beta.202": 681 | version "2.0.0-beta.202" 682 | resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.0.0-beta.202.tgz#a74e11c7d765d660e82b484bda211da1218d6c19" 683 | integrity sha512-K0vjWOhqBFSN68wdIWvfUOer38GbBdOi80cZH7bafZQbka2gD8l6v0qknwM4KxOiq9FpqGBOVmGQs0ukgWGSDA== 684 | dependencies: 685 | "@tiptap/extension-bubble-menu" "^2.0.0-beta.202" 686 | "@tiptap/extension-floating-menu" "^2.0.0-beta.202" 687 | prosemirror-view "^1.28.2" 688 | 689 | "@tiptap/starter-kit@^2.0.0-beta.202": 690 | version "2.0.0-beta.202" 691 | resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.202.tgz#0605dfb9fa7b8d16778795b402115a92886541f1" 692 | integrity sha512-hmtHgSKMAYtPNA12pa6kPortaKtsz4D6a18KncP26cWkuIwSBZLANls8L7vBISAcbIKRrSizsmqDBoDrFqtQcg== 693 | dependencies: 694 | "@tiptap/core" "^2.0.0-beta.202" 695 | "@tiptap/extension-blockquote" "^2.0.0-beta.202" 696 | "@tiptap/extension-bold" "^2.0.0-beta.202" 697 | "@tiptap/extension-bullet-list" "^2.0.0-beta.202" 698 | "@tiptap/extension-code" "^2.0.0-beta.202" 699 | "@tiptap/extension-code-block" "^2.0.0-beta.202" 700 | "@tiptap/extension-document" "^2.0.0-beta.202" 701 | "@tiptap/extension-dropcursor" "^2.0.0-beta.202" 702 | "@tiptap/extension-gapcursor" "^2.0.0-beta.202" 703 | "@tiptap/extension-hard-break" "^2.0.0-beta.202" 704 | "@tiptap/extension-heading" "^2.0.0-beta.202" 705 | "@tiptap/extension-history" "^2.0.0-beta.202" 706 | "@tiptap/extension-horizontal-rule" "^2.0.0-beta.202" 707 | "@tiptap/extension-italic" "^2.0.0-beta.202" 708 | "@tiptap/extension-list-item" "^2.0.0-beta.202" 709 | "@tiptap/extension-ordered-list" "^2.0.0-beta.202" 710 | "@tiptap/extension-paragraph" "^2.0.0-beta.202" 711 | "@tiptap/extension-strike" "^2.0.0-beta.202" 712 | "@tiptap/extension-text" "^2.0.0-beta.202" 713 | 714 | "@types/debounce@^1.2.1": 715 | version "1.2.1" 716 | resolved "https://registry.yarnpkg.com/@types/debounce/-/debounce-1.2.1.tgz#79b65710bc8b6d44094d286aecf38e44f9627852" 717 | integrity sha512-epMsEE85fi4lfmJUH/89/iV/LI+F5CvNIvmgs5g5jYFPfhO2S/ae8WSsLOKWdwtoaZw9Q2IhJ4tQ5tFCcS/4HA== 718 | 719 | "@types/file-saver@^2.0.5": 720 | version "2.0.5" 721 | resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.5.tgz#9ee342a5d1314bb0928375424a2f162f97c310c7" 722 | integrity sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ== 723 | 724 | "@types/node@*", "@types/node@^18.0.0": 725 | version "18.11.9" 726 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" 727 | integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== 728 | 729 | "@types/parse-json@^4.0.0": 730 | version "4.0.0" 731 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 732 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 733 | 734 | "@types/prop-types@*", "@types/prop-types@^15.7.5": 735 | version "15.7.5" 736 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 737 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 738 | 739 | "@types/react-dom@^18.0.7": 740 | version "18.0.8" 741 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.8.tgz#d2606d855186cd42cc1b11e63a71c39525441685" 742 | integrity sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw== 743 | dependencies: 744 | "@types/react" "*" 745 | 746 | "@types/react-is@^16.7.1 || ^17.0.0": 747 | version "17.0.3" 748 | resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" 749 | integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== 750 | dependencies: 751 | "@types/react" "*" 752 | 753 | "@types/react-transition-group@^4.4.5": 754 | version "4.4.5" 755 | resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" 756 | integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== 757 | dependencies: 758 | "@types/react" "*" 759 | 760 | "@types/react@*", "@types/react@^18.0.22": 761 | version "18.0.24" 762 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.24.tgz#2f79ed5b27f08d05107aab45c17919754cc44c20" 763 | integrity sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q== 764 | dependencies: 765 | "@types/prop-types" "*" 766 | "@types/scheduler" "*" 767 | csstype "^3.0.2" 768 | 769 | "@types/scheduler@*": 770 | version "0.16.2" 771 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 772 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 773 | 774 | "@types/store@^2.0.2": 775 | version "2.0.2" 776 | resolved "https://registry.yarnpkg.com/@types/store/-/store-2.0.2.tgz#6263d4f1aab225032ea55b17d94f3b725a21c943" 777 | integrity sha512-ZPHnXkzmGMfk+pHqAGzTSpA9CbsHmJLgkvOl5w52LZ0XTxB1ZIHWZzQ7lEtjTNWScBbsQekg8TjApMXkMe4nkw== 778 | 779 | "@types/turndown@^5.0.1": 780 | version "5.0.1" 781 | resolved "https://registry.yarnpkg.com/@types/turndown/-/turndown-5.0.1.tgz#fcda7b02cda4c9d445be1440036df20f335b9387" 782 | integrity sha512-N8Ad4e3oJxh9n9BiZx9cbe/0M3kqDpOTm2wzj13wdDUxDPjfjloWIJaquZzWE1cYTAHpjOH3rcTnXQdpEfS/SQ== 783 | 784 | "@types/uuid@^8.3.4": 785 | version "8.3.4" 786 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" 787 | integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== 788 | 789 | "@upstash/ratelimit@^0.1.5": 790 | version "0.1.5" 791 | resolved "https://registry.yarnpkg.com/@upstash/ratelimit/-/ratelimit-0.1.5.tgz#345fe6e21c047213564c9abfc125ef92a60834c6" 792 | integrity sha512-v0zq3Xpq42HQBvXDvm0C4djYvKC5TjHG29uCpbIQcOw0znJNroHewI8y4Yk4tBeEF1rvj2RjDkFihjCp6uTExQ== 793 | 794 | "@upstash/redis@^1.16.1": 795 | version "1.16.1" 796 | resolved "https://registry.yarnpkg.com/@upstash/redis/-/redis-1.16.1.tgz#75ba5581ca224081bdce930bfb5acb80a0feb0c7" 797 | integrity sha512-tejZ5vvWthxDFe3gebZodlRY3qqiQU20TxtL/fL7yddHAeduWeKN1GcSC9WBJJA0avZUAgLk/FSHL5N+HM04AA== 798 | dependencies: 799 | isomorphic-fetch "^3.0.0" 800 | 801 | "@vitejs/plugin-react@^2.2.0": 802 | version "2.2.0" 803 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz#1b9f63b8b6bc3f56258d20cd19b33f5cc761ce6e" 804 | integrity sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA== 805 | dependencies: 806 | "@babel/core" "^7.19.6" 807 | "@babel/plugin-transform-react-jsx" "^7.19.0" 808 | "@babel/plugin-transform-react-jsx-development" "^7.18.6" 809 | "@babel/plugin-transform-react-jsx-self" "^7.18.6" 810 | "@babel/plugin-transform-react-jsx-source" "^7.19.6" 811 | magic-string "^0.26.7" 812 | react-refresh "^0.14.0" 813 | 814 | ansi-styles@^3.2.1: 815 | version "3.2.1" 816 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 817 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 818 | dependencies: 819 | color-convert "^1.9.0" 820 | 821 | babel-plugin-macros@^3.1.0: 822 | version "3.1.0" 823 | resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" 824 | integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== 825 | dependencies: 826 | "@babel/runtime" "^7.12.5" 827 | cosmiconfig "^7.0.0" 828 | resolve "^1.19.0" 829 | 830 | browserslist@^4.21.3: 831 | version "4.21.4" 832 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" 833 | integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== 834 | dependencies: 835 | caniuse-lite "^1.0.30001400" 836 | electron-to-chromium "^1.4.251" 837 | node-releases "^2.0.6" 838 | update-browserslist-db "^1.0.9" 839 | 840 | buffer-image-size@^0.6.4: 841 | version "0.6.4" 842 | resolved "https://registry.yarnpkg.com/buffer-image-size/-/buffer-image-size-0.6.4.tgz#357e8173e951ced3b5a2785c695993aa29dbcac4" 843 | integrity sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ== 844 | dependencies: 845 | "@types/node" "*" 846 | 847 | callsites@^3.0.0: 848 | version "3.1.0" 849 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 850 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 851 | 852 | caniuse-lite@^1.0.30001400: 853 | version "1.0.30001426" 854 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz#58da20446ccd0cb1dfebd11d2350c907ee7c2eaa" 855 | integrity sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A== 856 | 857 | chalk@^2.0.0: 858 | version "2.4.2" 859 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 860 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 861 | dependencies: 862 | ansi-styles "^3.2.1" 863 | escape-string-regexp "^1.0.5" 864 | supports-color "^5.3.0" 865 | 866 | clsx@^1.1.1, clsx@^1.2.1: 867 | version "1.2.1" 868 | resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" 869 | integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== 870 | 871 | color-convert@^1.9.0: 872 | version "1.9.3" 873 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 874 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 875 | dependencies: 876 | color-name "1.1.3" 877 | 878 | color-name@1.1.3: 879 | version "1.1.3" 880 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 881 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 882 | 883 | convert-source-map@^1.5.0, convert-source-map@^1.7.0: 884 | version "1.9.0" 885 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 886 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 887 | 888 | core-util-is@~1.0.0: 889 | version "1.0.3" 890 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 891 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 892 | 893 | cosmiconfig@^7.0.0: 894 | version "7.0.1" 895 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" 896 | integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== 897 | dependencies: 898 | "@types/parse-json" "^4.0.0" 899 | import-fresh "^3.2.1" 900 | parse-json "^5.0.0" 901 | path-type "^4.0.0" 902 | yaml "^1.10.0" 903 | 904 | csstype@^3.0.2, csstype@^3.1.1: 905 | version "3.1.1" 906 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" 907 | integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== 908 | 909 | debounce@^1.2.1: 910 | version "1.2.1" 911 | resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" 912 | integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== 913 | 914 | debug@^4.1.0: 915 | version "4.3.4" 916 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 917 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 918 | dependencies: 919 | ms "2.1.2" 920 | 921 | docx@^7.3.0: 922 | version "7.6.0" 923 | resolved "https://registry.yarnpkg.com/docx/-/docx-7.6.0.tgz#a86a4091fea4e3ee12bd2398c14ee7241f562d11" 924 | integrity sha512-qltcAiLXnHX9Bfn6PJiyWx42O379ml3v7u4uGis5kM8LDZAK/gIvRii01mKE+VcuFtyLW+w12TzC/BC/kQ/NJg== 925 | dependencies: 926 | "@types/node" "^18.0.0" 927 | jszip "^3.1.5" 928 | nanoid "^3.1.20" 929 | xml "^1.0.1" 930 | xml-js "^1.6.8" 931 | 932 | dom-helpers@^5.0.1: 933 | version "5.2.1" 934 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" 935 | integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== 936 | dependencies: 937 | "@babel/runtime" "^7.8.7" 938 | csstype "^3.0.2" 939 | 940 | domino@^2.1.6: 941 | version "2.1.6" 942 | resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" 943 | integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== 944 | 945 | electron-to-chromium@^1.4.251: 946 | version "1.4.284" 947 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" 948 | integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== 949 | 950 | error-ex@^1.3.1: 951 | version "1.3.2" 952 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 953 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 954 | dependencies: 955 | is-arrayish "^0.2.1" 956 | 957 | esbuild-android-64@0.15.12: 958 | version "0.15.12" 959 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz#5e8151d5f0a748c71a7fbea8cee844ccf008e6fc" 960 | integrity sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q== 961 | 962 | esbuild-android-arm64@0.15.12: 963 | version "0.15.12" 964 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz#5ee72a6baa444bc96ffcb472a3ba4aba2cc80666" 965 | integrity sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA== 966 | 967 | esbuild-darwin-64@0.15.12: 968 | version "0.15.12" 969 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz#70047007e093fa1b3ba7ef86f9b3fa63db51fe25" 970 | integrity sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q== 971 | 972 | esbuild-darwin-arm64@0.15.12: 973 | version "0.15.12" 974 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz#41c951f23d9a70539bcca552bae6e5196696ae04" 975 | integrity sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw== 976 | 977 | esbuild-freebsd-64@0.15.12: 978 | version "0.15.12" 979 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz#a761b5afd12bbedb7d56c612e9cfa4d2711f33f0" 980 | integrity sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw== 981 | 982 | esbuild-freebsd-arm64@0.15.12: 983 | version "0.15.12" 984 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz#6b0839d4d58deabc6cbd96276eb8cbf94f7f335e" 985 | integrity sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g== 986 | 987 | esbuild-linux-32@0.15.12: 988 | version "0.15.12" 989 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz#bd50bfe22514d434d97d5150977496e2631345b4" 990 | integrity sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA== 991 | 992 | esbuild-linux-64@0.15.12: 993 | version "0.15.12" 994 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz#074bb2b194bf658245f8490f29c01ffcdfa8c931" 995 | integrity sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA== 996 | 997 | esbuild-linux-arm64@0.15.12: 998 | version "0.15.12" 999 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz#3bf789c4396dc032875a122988efd6f3733f28f5" 1000 | integrity sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ== 1001 | 1002 | esbuild-linux-arm@0.15.12: 1003 | version "0.15.12" 1004 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz#b91b5a8d470053f6c2c9c8a5e67ec10a71fe4a67" 1005 | integrity sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A== 1006 | 1007 | esbuild-linux-mips64le@0.15.12: 1008 | version "0.15.12" 1009 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz#2fb54099ada3c950a7536dfcba46172c61e580e2" 1010 | integrity sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A== 1011 | 1012 | esbuild-linux-ppc64le@0.15.12: 1013 | version "0.15.12" 1014 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz#9e3b8c09825fb27886249dfb3142a750df29a1b7" 1015 | integrity sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg== 1016 | 1017 | esbuild-linux-riscv64@0.15.12: 1018 | version "0.15.12" 1019 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz#923d0f5b6e12ee0d1fe116b08e4ae4478fe40693" 1020 | integrity sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA== 1021 | 1022 | esbuild-linux-s390x@0.15.12: 1023 | version "0.15.12" 1024 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz#3b1620220482b96266a0c6d9d471d451a1eab86f" 1025 | integrity sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww== 1026 | 1027 | esbuild-netbsd-64@0.15.12: 1028 | version "0.15.12" 1029 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz#276730f80da646859b1af5a740e7802d8cd73e42" 1030 | integrity sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w== 1031 | 1032 | esbuild-openbsd-64@0.15.12: 1033 | version "0.15.12" 1034 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz#bd0eea1dd2ca0722ed489d88c26714034429f8ae" 1035 | integrity sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw== 1036 | 1037 | esbuild-sunos-64@0.15.12: 1038 | version "0.15.12" 1039 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz#5e56bf9eef3b2d92360d6d29dcde7722acbecc9e" 1040 | integrity sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg== 1041 | 1042 | esbuild-windows-32@0.15.12: 1043 | version "0.15.12" 1044 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz#a4f1a301c1a2fa7701fcd4b91ef9d2620cf293d0" 1045 | integrity sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw== 1046 | 1047 | esbuild-windows-64@0.15.12: 1048 | version "0.15.12" 1049 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz#bc2b467541744d653be4fe64eaa9b0dbbf8e07f6" 1050 | integrity sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA== 1051 | 1052 | esbuild-windows-arm64@0.15.12: 1053 | version "0.15.12" 1054 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz#9a7266404334a86be800957eaee9aef94c3df328" 1055 | integrity sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA== 1056 | 1057 | esbuild@^0.15.9: 1058 | version "0.15.12" 1059 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.12.tgz#6c8e22d6d3b7430d165c33848298d3fc9a1f251c" 1060 | integrity sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng== 1061 | optionalDependencies: 1062 | "@esbuild/android-arm" "0.15.12" 1063 | "@esbuild/linux-loong64" "0.15.12" 1064 | esbuild-android-64 "0.15.12" 1065 | esbuild-android-arm64 "0.15.12" 1066 | esbuild-darwin-64 "0.15.12" 1067 | esbuild-darwin-arm64 "0.15.12" 1068 | esbuild-freebsd-64 "0.15.12" 1069 | esbuild-freebsd-arm64 "0.15.12" 1070 | esbuild-linux-32 "0.15.12" 1071 | esbuild-linux-64 "0.15.12" 1072 | esbuild-linux-arm "0.15.12" 1073 | esbuild-linux-arm64 "0.15.12" 1074 | esbuild-linux-mips64le "0.15.12" 1075 | esbuild-linux-ppc64le "0.15.12" 1076 | esbuild-linux-riscv64 "0.15.12" 1077 | esbuild-linux-s390x "0.15.12" 1078 | esbuild-netbsd-64 "0.15.12" 1079 | esbuild-openbsd-64 "0.15.12" 1080 | esbuild-sunos-64 "0.15.12" 1081 | esbuild-windows-32 "0.15.12" 1082 | esbuild-windows-64 "0.15.12" 1083 | esbuild-windows-arm64 "0.15.12" 1084 | 1085 | escalade@^3.1.1: 1086 | version "3.1.1" 1087 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1088 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1089 | 1090 | escape-string-regexp@^1.0.5: 1091 | version "1.0.5" 1092 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1093 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1094 | 1095 | escape-string-regexp@^4.0.0: 1096 | version "4.0.0" 1097 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1098 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1099 | 1100 | file-saver@^2.0.5: 1101 | version "2.0.5" 1102 | resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" 1103 | integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== 1104 | 1105 | find-root@^1.1.0: 1106 | version "1.1.0" 1107 | resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" 1108 | integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== 1109 | 1110 | fsevents@~2.3.2: 1111 | version "2.3.2" 1112 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1113 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1114 | 1115 | function-bind@^1.1.1: 1116 | version "1.1.1" 1117 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1118 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1119 | 1120 | gensync@^1.0.0-beta.2: 1121 | version "1.0.0-beta.2" 1122 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1123 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1124 | 1125 | globals@^11.1.0: 1126 | version "11.12.0" 1127 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1128 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1129 | 1130 | has-flag@^3.0.0: 1131 | version "3.0.0" 1132 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1133 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1134 | 1135 | has@^1.0.3: 1136 | version "1.0.3" 1137 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1138 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1139 | dependencies: 1140 | function-bind "^1.1.1" 1141 | 1142 | hoist-non-react-statics@^3.3.1: 1143 | version "3.3.2" 1144 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" 1145 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== 1146 | dependencies: 1147 | react-is "^16.7.0" 1148 | 1149 | immediate@~3.0.5: 1150 | version "3.0.6" 1151 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 1152 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== 1153 | 1154 | import-fresh@^3.2.1: 1155 | version "3.3.0" 1156 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1157 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1158 | dependencies: 1159 | parent-module "^1.0.0" 1160 | resolve-from "^4.0.0" 1161 | 1162 | inherits@~2.0.3: 1163 | version "2.0.4" 1164 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1165 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1166 | 1167 | is-arrayish@^0.2.1: 1168 | version "0.2.1" 1169 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1170 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1171 | 1172 | is-core-module@^2.9.0: 1173 | version "2.11.0" 1174 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 1175 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 1176 | dependencies: 1177 | has "^1.0.3" 1178 | 1179 | isarray@~1.0.0: 1180 | version "1.0.0" 1181 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1182 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1183 | 1184 | isomorphic-fetch@^3.0.0: 1185 | version "3.0.0" 1186 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" 1187 | integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== 1188 | dependencies: 1189 | node-fetch "^2.6.1" 1190 | whatwg-fetch "^3.4.1" 1191 | 1192 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1193 | version "4.0.0" 1194 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1195 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1196 | 1197 | jsesc@^2.5.1: 1198 | version "2.5.2" 1199 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1200 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1201 | 1202 | json-parse-even-better-errors@^2.3.0: 1203 | version "2.3.1" 1204 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1205 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1206 | 1207 | json5@^2.2.1: 1208 | version "2.2.1" 1209 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" 1210 | integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== 1211 | 1212 | jszip@^3.1.5: 1213 | version "3.10.1" 1214 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" 1215 | integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== 1216 | dependencies: 1217 | lie "~3.3.0" 1218 | pako "~1.0.2" 1219 | readable-stream "~2.3.6" 1220 | setimmediate "^1.0.5" 1221 | 1222 | lie@~3.3.0: 1223 | version "3.3.0" 1224 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 1225 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1226 | dependencies: 1227 | immediate "~3.0.5" 1228 | 1229 | lines-and-columns@^1.1.6: 1230 | version "1.2.4" 1231 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 1232 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 1233 | 1234 | linkifyjs@^3.0.5: 1235 | version "3.0.5" 1236 | resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.5.tgz#99e51a3a0c0e232fcb63ebb89eea3ff923378f34" 1237 | integrity sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg== 1238 | 1239 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1240 | version "1.4.0" 1241 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1242 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1243 | dependencies: 1244 | js-tokens "^3.0.0 || ^4.0.0" 1245 | 1246 | magic-string@^0.26.7: 1247 | version "0.26.7" 1248 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" 1249 | integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== 1250 | dependencies: 1251 | sourcemap-codec "^1.4.8" 1252 | 1253 | ms@2.1.2: 1254 | version "2.1.2" 1255 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1256 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1257 | 1258 | nanoid@^3.1.20, nanoid@^3.3.4: 1259 | version "3.3.4" 1260 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 1261 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 1262 | 1263 | node-fetch@^2.6.1: 1264 | version "2.6.7" 1265 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 1266 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 1267 | dependencies: 1268 | whatwg-url "^5.0.0" 1269 | 1270 | node-releases@^2.0.6: 1271 | version "2.0.6" 1272 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" 1273 | integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== 1274 | 1275 | object-assign@^4.1.1: 1276 | version "4.1.1" 1277 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1278 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1279 | 1280 | orderedmap@^2.0.0: 1281 | version "2.1.0" 1282 | resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.0.tgz#819457082fa3a06abd316d83a281a1ca467437cd" 1283 | integrity sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA== 1284 | 1285 | pako@~1.0.2: 1286 | version "1.0.11" 1287 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 1288 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 1289 | 1290 | parent-module@^1.0.0: 1291 | version "1.0.1" 1292 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1293 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1294 | dependencies: 1295 | callsites "^3.0.0" 1296 | 1297 | parse-json@^5.0.0: 1298 | version "5.2.0" 1299 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1300 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1301 | dependencies: 1302 | "@babel/code-frame" "^7.0.0" 1303 | error-ex "^1.3.1" 1304 | json-parse-even-better-errors "^2.3.0" 1305 | lines-and-columns "^1.1.6" 1306 | 1307 | path-parse@^1.0.7: 1308 | version "1.0.7" 1309 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1310 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1311 | 1312 | path-type@^4.0.0: 1313 | version "4.0.0" 1314 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1315 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1316 | 1317 | picocolors@^1.0.0: 1318 | version "1.0.0" 1319 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1320 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1321 | 1322 | postcss@^8.4.18: 1323 | version "8.4.18" 1324 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" 1325 | integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== 1326 | dependencies: 1327 | nanoid "^3.3.4" 1328 | picocolors "^1.0.0" 1329 | source-map-js "^1.0.2" 1330 | 1331 | process-nextick-args@~2.0.0: 1332 | version "2.0.1" 1333 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1334 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1335 | 1336 | prop-types@^15.6.2, prop-types@^15.8.1: 1337 | version "15.8.1" 1338 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" 1339 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1340 | dependencies: 1341 | loose-envify "^1.4.0" 1342 | object-assign "^4.1.1" 1343 | react-is "^16.13.1" 1344 | 1345 | prosemirror-commands@^1.3.1: 1346 | version "1.3.1" 1347 | resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.3.1.tgz#926c88801eebaa50363d4658850b41406d375a31" 1348 | integrity sha512-XTporPgoECkOQACVw0JTe3RZGi+fls3/byqt+tXwGTkD7qLuB4KdVrJamDMJf4kfKga3uB8hZ+kUUyZ5oWpnfg== 1349 | dependencies: 1350 | prosemirror-model "^1.0.0" 1351 | prosemirror-state "^1.0.0" 1352 | prosemirror-transform "^1.0.0" 1353 | 1354 | prosemirror-docx@^0.1.1: 1355 | version "0.1.1" 1356 | resolved "https://registry.yarnpkg.com/prosemirror-docx/-/prosemirror-docx-0.1.1.tgz#a82e7592ef6999509dff898352d823f365f4f89b" 1357 | integrity sha512-tdOlMo6bEvqi+8Kfwm9hGvfOMS02LPnf1nhjipr6c7GfF4b7pzJoyjWjiDgnkbWj8R29EZuYw7Xll3V2nRVliA== 1358 | dependencies: 1359 | buffer-image-size "^0.6.4" 1360 | docx "^7.3.0" 1361 | prosemirror-model "^1.18.1" 1362 | 1363 | prosemirror-dropcursor@1.5.0: 1364 | version "1.5.0" 1365 | resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.5.0.tgz#edbc61d6f71f9f924130eec8e85b0861357957c9" 1366 | integrity sha512-vy7i77ddKyXlu8kKBB3nlxLBnsWyKUmQIPB5x8RkYNh01QNp/qqGmdd5yZefJs0s3rtv5r7Izfu2qbtr+tYAMQ== 1367 | dependencies: 1368 | prosemirror-state "^1.0.0" 1369 | prosemirror-transform "^1.1.0" 1370 | prosemirror-view "^1.1.0" 1371 | 1372 | prosemirror-gapcursor@^1.3.1: 1373 | version "1.3.1" 1374 | resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.1.tgz#8cfd874592e4504d63720e14ed680c7866e64554" 1375 | integrity sha512-GKTeE7ZoMsx5uVfc51/ouwMFPq0o8YrZ7Hx4jTF4EeGbXxBveUV8CGv46mSHuBBeXGmvu50guoV2kSnOeZZnUA== 1376 | dependencies: 1377 | prosemirror-keymap "^1.0.0" 1378 | prosemirror-model "^1.0.0" 1379 | prosemirror-state "^1.0.0" 1380 | prosemirror-view "^1.0.0" 1381 | 1382 | prosemirror-history@^1.3.0: 1383 | version "1.3.0" 1384 | resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.3.0.tgz#bf5a1ff7759aca759ddf0c722c2fa5b14fb0ddc1" 1385 | integrity sha512-qo/9Wn4B/Bq89/YD+eNWFbAytu6dmIM85EhID+fz9Jcl9+DfGEo8TTSrRhP15+fFEoaPqpHSxlvSzSEbmlxlUA== 1386 | dependencies: 1387 | prosemirror-state "^1.2.2" 1388 | prosemirror-transform "^1.0.0" 1389 | rope-sequence "^1.3.0" 1390 | 1391 | prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.0: 1392 | version "1.2.0" 1393 | resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.0.tgz#d5cc9da9b712020690a994b50b92a0e448a60bf5" 1394 | integrity sha512-TdSfu+YyLDd54ufN/ZeD1VtBRYpgZnTPnnbY+4R08DDgs84KrIPEPbJL8t1Lm2dkljFx6xeBE26YWH3aIzkPKg== 1395 | dependencies: 1396 | prosemirror-state "^1.0.0" 1397 | w3c-keyname "^2.2.0" 1398 | 1399 | prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1: 1400 | version "1.18.1" 1401 | resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.18.1.tgz#1d5d6b6de7b983ee67a479dc607165fdef3935bd" 1402 | integrity sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw== 1403 | dependencies: 1404 | orderedmap "^2.0.0" 1405 | 1406 | prosemirror-schema-list@^1.2.2: 1407 | version "1.2.2" 1408 | resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.2.2.tgz#bafda37b72367d39accdcaf6ddf8fb654a16e8e5" 1409 | integrity sha512-rd0pqSDp86p0MUMKG903g3I9VmElFkQpkZ2iOd3EOVg1vo5Cst51rAsoE+5IPy0LPXq64eGcCYlW1+JPNxOj2w== 1410 | dependencies: 1411 | prosemirror-model "^1.0.0" 1412 | prosemirror-state "^1.0.0" 1413 | prosemirror-transform "^1.0.0" 1414 | 1415 | prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.1: 1416 | version "1.4.2" 1417 | resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.2.tgz#f93bd8a33a4454efab917ba9b738259d828db7e5" 1418 | integrity sha512-puuzLD2mz/oTdfgd8msFbe0A42j5eNudKAAPDB0+QJRw8cO1ygjLmhLrg9RvDpf87Dkd6D4t93qdef00KKNacQ== 1419 | dependencies: 1420 | prosemirror-model "^1.0.0" 1421 | prosemirror-transform "^1.0.0" 1422 | prosemirror-view "^1.27.0" 1423 | 1424 | prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.7.0: 1425 | version "1.7.0" 1426 | resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.7.0.tgz#a8a0768f3ee6418d26ebef435beda9d43c65e472" 1427 | integrity sha512-O4T697Cqilw06Zvc3Wm+e237R6eZtJL/xGMliCi+Uo8VL6qHk6afz1qq0zNjT3eZMuYwnP8ZS0+YxX/tfcE9TQ== 1428 | dependencies: 1429 | prosemirror-model "^1.0.0" 1430 | 1431 | prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2: 1432 | version "1.29.0" 1433 | resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.29.0.tgz#5a9baa32a3c520442ad443f4bbf5ec7400e55b4e" 1434 | integrity sha512-bifVd5aD9uCNtpLL1AyhquG/cVbNZSv+ALBxTEGYv51a6OHDhq+aOuzqq4MermNdeBdT+5uyURXCALgzk0EN5g== 1435 | dependencies: 1436 | prosemirror-model "^1.16.0" 1437 | prosemirror-state "^1.0.0" 1438 | prosemirror-transform "^1.1.0" 1439 | 1440 | proxy-compare@2.3.0: 1441 | version "2.3.0" 1442 | resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.3.0.tgz#ac9633ae52918ff9c9fcc54dfe6316c7a02d20ee" 1443 | integrity sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ== 1444 | 1445 | react-dom@^18.2.0: 1446 | version "18.2.0" 1447 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 1448 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 1449 | dependencies: 1450 | loose-envify "^1.1.0" 1451 | scheduler "^0.23.0" 1452 | 1453 | react-is@^16.13.1, react-is@^16.7.0: 1454 | version "16.13.1" 1455 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1456 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1457 | 1458 | react-is@^18.2.0: 1459 | version "18.2.0" 1460 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 1461 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 1462 | 1463 | react-refresh@^0.14.0: 1464 | version "0.14.0" 1465 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" 1466 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== 1467 | 1468 | react-toastify@^9.0.8: 1469 | version "9.0.8" 1470 | resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-9.0.8.tgz#3876c89fc6211a29027b3075010b5ec39ebe4f7e" 1471 | integrity sha512-EwM+teWt49HSHx+67qI08yLAW1zAsBxCXLCsUfxHYv1W7/R3ZLhrqKalh7j+kjgPna1h5LQMSMwns4tB4ww2yQ== 1472 | dependencies: 1473 | clsx "^1.1.1" 1474 | 1475 | react-transition-group@^4.4.5: 1476 | version "4.4.5" 1477 | resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" 1478 | integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== 1479 | dependencies: 1480 | "@babel/runtime" "^7.5.5" 1481 | dom-helpers "^5.0.1" 1482 | loose-envify "^1.4.0" 1483 | prop-types "^15.6.2" 1484 | 1485 | react@^18.2.0: 1486 | version "18.2.0" 1487 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 1488 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 1489 | dependencies: 1490 | loose-envify "^1.1.0" 1491 | 1492 | readable-stream@~2.3.6: 1493 | version "2.3.7" 1494 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1495 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1496 | dependencies: 1497 | core-util-is "~1.0.0" 1498 | inherits "~2.0.3" 1499 | isarray "~1.0.0" 1500 | process-nextick-args "~2.0.0" 1501 | safe-buffer "~5.1.1" 1502 | string_decoder "~1.1.1" 1503 | util-deprecate "~1.0.1" 1504 | 1505 | regenerator-runtime@^0.13.10: 1506 | version "0.13.10" 1507 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" 1508 | integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== 1509 | 1510 | resolve-from@^4.0.0: 1511 | version "4.0.0" 1512 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1513 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1514 | 1515 | resolve@^1.19.0, resolve@^1.22.1: 1516 | version "1.22.1" 1517 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1518 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1519 | dependencies: 1520 | is-core-module "^2.9.0" 1521 | path-parse "^1.0.7" 1522 | supports-preserve-symlinks-flag "^1.0.0" 1523 | 1524 | rollup@^2.79.1: 1525 | version "2.79.1" 1526 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" 1527 | integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== 1528 | optionalDependencies: 1529 | fsevents "~2.3.2" 1530 | 1531 | rope-sequence@^1.3.0: 1532 | version "1.3.3" 1533 | resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.3.tgz#3f67fc106288b84b71532b4a5fd9d4881e4457f0" 1534 | integrity sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q== 1535 | 1536 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1537 | version "5.1.2" 1538 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1539 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1540 | 1541 | sax@^1.2.4: 1542 | version "1.2.4" 1543 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1544 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1545 | 1546 | scheduler@^0.23.0: 1547 | version "0.23.0" 1548 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 1549 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 1550 | dependencies: 1551 | loose-envify "^1.1.0" 1552 | 1553 | semver@^6.3.0: 1554 | version "6.3.0" 1555 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1556 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1557 | 1558 | setimmediate@^1.0.5: 1559 | version "1.0.5" 1560 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1561 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 1562 | 1563 | source-map-js@^1.0.2: 1564 | version "1.0.2" 1565 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1566 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1567 | 1568 | source-map@^0.5.7: 1569 | version "0.5.7" 1570 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1571 | integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== 1572 | 1573 | sourcemap-codec@^1.4.8: 1574 | version "1.4.8" 1575 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1576 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1577 | 1578 | store@^2.0.12: 1579 | version "2.0.12" 1580 | resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" 1581 | integrity sha512-eO9xlzDpXLiMr9W1nQ3Nfp9EzZieIQc10zPPMP5jsVV7bLOziSFFBP0XoDXACEIFtdI+rIz0NwWVA/QVJ8zJtw== 1582 | 1583 | string_decoder@~1.1.1: 1584 | version "1.1.1" 1585 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1586 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1587 | dependencies: 1588 | safe-buffer "~5.1.0" 1589 | 1590 | stylis@4.1.3: 1591 | version "4.1.3" 1592 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" 1593 | integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== 1594 | 1595 | supports-color@^5.3.0: 1596 | version "5.5.0" 1597 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1598 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1599 | dependencies: 1600 | has-flag "^3.0.0" 1601 | 1602 | supports-preserve-symlinks-flag@^1.0.0: 1603 | version "1.0.0" 1604 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1605 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1606 | 1607 | tippy.js@^6.3.7: 1608 | version "6.3.7" 1609 | resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" 1610 | integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== 1611 | dependencies: 1612 | "@popperjs/core" "^2.9.0" 1613 | 1614 | to-fast-properties@^2.0.0: 1615 | version "2.0.0" 1616 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1617 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 1618 | 1619 | tr46@~0.0.3: 1620 | version "0.0.3" 1621 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1622 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1623 | 1624 | turndown@^7.1.1: 1625 | version "7.1.1" 1626 | resolved "https://registry.yarnpkg.com/turndown/-/turndown-7.1.1.tgz#96992f2d9b40a1a03d3ea61ad31b5a5c751ef77f" 1627 | integrity sha512-BEkXaWH7Wh7e9bd2QumhfAXk5g34+6QUmmWx+0q6ThaVOLuLUqsnkq35HQ5SBHSaxjSfSM7US5o4lhJNH7B9MA== 1628 | dependencies: 1629 | domino "^2.1.6" 1630 | 1631 | typescript@^4.6.4: 1632 | version "4.8.4" 1633 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" 1634 | integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== 1635 | 1636 | update-browserslist-db@^1.0.9: 1637 | version "1.0.10" 1638 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" 1639 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== 1640 | dependencies: 1641 | escalade "^3.1.1" 1642 | picocolors "^1.0.0" 1643 | 1644 | use-sync-external-store@1.2.0: 1645 | version "1.2.0" 1646 | resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" 1647 | integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== 1648 | 1649 | util-deprecate@~1.0.1: 1650 | version "1.0.2" 1651 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1652 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1653 | 1654 | uuid@^9.0.0: 1655 | version "9.0.0" 1656 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" 1657 | integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== 1658 | 1659 | valtio@^1.7.5: 1660 | version "1.7.5" 1661 | resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.7.5.tgz#02a3ee207b4c7552294bbccb68d5f73c9f60302f" 1662 | integrity sha512-YGgYA1fkjDWIJuI2Z178GWxocd7f+AGfwe7vSL9+WKWfQuzWBEMqIIZ2UnEuy58DpEOYFSQTLfxQGOFIatEpmQ== 1663 | dependencies: 1664 | proxy-compare "2.3.0" 1665 | use-sync-external-store "1.2.0" 1666 | 1667 | vite@^3.2.0: 1668 | version "3.2.1" 1669 | resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.1.tgz#dc1f54568300a7acdd89c8611e2719c21f1334f4" 1670 | integrity sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ== 1671 | dependencies: 1672 | esbuild "^0.15.9" 1673 | postcss "^8.4.18" 1674 | resolve "^1.22.1" 1675 | rollup "^2.79.1" 1676 | optionalDependencies: 1677 | fsevents "~2.3.2" 1678 | 1679 | w3c-keyname@^2.2.0: 1680 | version "2.2.6" 1681 | resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f" 1682 | integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg== 1683 | 1684 | webidl-conversions@^3.0.0: 1685 | version "3.0.1" 1686 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1687 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1688 | 1689 | whatwg-fetch@^3.4.1: 1690 | version "3.6.2" 1691 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" 1692 | integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== 1693 | 1694 | whatwg-url@^5.0.0: 1695 | version "5.0.0" 1696 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1697 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1698 | dependencies: 1699 | tr46 "~0.0.3" 1700 | webidl-conversions "^3.0.0" 1701 | 1702 | xml-js@^1.6.8: 1703 | version "1.6.11" 1704 | resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" 1705 | integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== 1706 | dependencies: 1707 | sax "^1.2.4" 1708 | 1709 | xml@^1.0.1: 1710 | version "1.0.1" 1711 | resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" 1712 | integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== 1713 | 1714 | yaml@^1.10.0: 1715 | version "1.10.2" 1716 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1717 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1718 | --------------------------------------------------------------------------------