initial commit

This commit is contained in:
lingdocs 2021-03-09 16:39:13 +04:00
commit fd9b80a2cc
97 changed files with 36538 additions and 0 deletions

27
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,27 @@
name: CI
on:
push:
branches: [ '*' ]
pull_request:
branches: [ '*' ]
workflow_dispatch:
jobs:
ci:
runs-on: ubuntu-latest
env:
LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }}
strategy:
matrix:
node-version: [12.x, 14.x, 15.x]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: yarn install
- run: yarn build-website
- run: yarn build-library
- run: yarn test-ci

27
.gitignore vendored Normal file
View File

@ -0,0 +1,27 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
/dist
/dist-cjs
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/src/verbs.ts

2
.npmrc Normal file
View File

@ -0,0 +1,2 @@
@lingdocs:registry=https://reg.lingdocs.com
//reg.lingdocs.com/:_authToken=${LINGDOCS_NPM_TOKEN}

8
LICENSE Normal file
View File

@ -0,0 +1,8 @@
The MIT License (MIT)
Copyright © 2021 lingdocs.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

36
README.md Normal file
View File

@ -0,0 +1,36 @@
# pashto-inflector
[![Netlify Status](https://api.netlify.com/api/v1/badges/ca3a7720-876f-4375-a77e-2e7bfdcee48a/deploy-status)](https://app.netlify.com/sites/pashto-verbs/deploys)
![build](https://github.com/lingdocs/pashto-inflector/actions/workflows/main.yml/badge.svg)
A pashto inflection and verb conjugation engine, as well as functions and components for modifying and displaying Pashto text.
Also includes the [Pashto Verb Explorer](https://verbs.lingdocs.com) website.
## Development
The Pashto Verb Explorer website can be used to view and play with the verb conjugations and various components.
```
yarn start
```
## Building
### Website
To build the Pashto [Pashto Verb Explorer](https://verbs.lingdocs.com) website:
```
yarn build-website
```
This outputs a site at `/build`
### Library
To build the `pashto-inflector` library ready for publishing to NPM:
```
yarn build-library
```

59
get-verbs.js Normal file
View File

@ -0,0 +1,59 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
const fs = require("fs");
const fetch = require("node-fetch");
const path = require("path");
const collectionPath = path.join(".", "verbs");
const verbTsFiles = fs.readdirSync(collectionPath)
const allTsS = [...new Set(verbTsFiles.reduce((arr, fileName) => {
const TsS = require("./verbs/"+fileName);
return [...arr, ...TsS];
}, []))];
fetch(process.env.LINGDOCS_DICTIONARY_URL).then(res => res.json()).then(data => {
const entries = data.entries;
const allVerbs = getFromTsS(entries);
const content = `
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { DictionaryEntry } from "./types";
const verbs: {
entry: DictionaryEntry,
complement?: DictionaryEntry,
}[] = ${JSON.stringify(allVerbs)};
export default verbs;`;
fs.writeFileSync("./src/verbs.ts", content);
console.log("fetched verbs from dictionary");
});
function getFromTsS(entries) {
return allTsS.map(ts => {
const entry = entries.find(x => ts === x.ts);
if (!entry) {
console.log("couldn't find ts", ts);
return undefined;
}
if (entry.c && entry.c.includes("comp.")) {
const complement = entries.find(x => entry.l === x.ts);
return {
entry,
complement,
};
}
return { entry };
}).filter(x => x);
}

29
library-tsconfig.json Normal file
View File

@ -0,0 +1,29 @@
{
"compilerOptions": {
"target": "es6",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"downlevelIteration": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "ES6",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"declaration": true,
"jsx": "react-jsx",
"outDir": "dist"
},
"files": [
"src/library.ts",
"src/images.d.ts"
]
}

3
netlify.toml Normal file
View File

@ -0,0 +1,3 @@
[build]
command = "yarn build-website"
publish = "build"

78
package.json Normal file
View File

@ -0,0 +1,78 @@
{
"name": "@lingdocs/pashto-inflector",
"version": "0.1.7",
"author": "lingdocs.com",
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
"homepage": "https://github.com/lingdocs/pashto-inflector#readme",
"license": "MIT",
"main": "dist-cjs/library.js",
"module": "dist/library.js",
"types": "dist/library.d.ts",
"private": false,
"files": [
"dist",
"dist-cjs",
"README.md",
"LICENSE"
],
"repository": {
"type": "git",
"url": "https://github.com/lingdocs/pashto-inflector.git"
},
"dependencies": {
"classnames": "^2.2.6"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^17.1.0",
"@rollup/plugin-image": "^2.0.6",
"@rollup/plugin-node-resolve": "^11.2.0",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/jest": "^26.0.20",
"@types/node": "^14.14.32",
"@types/react": "^17.0.3",
"@types/react-dom": "^17.0.2",
"node-fetch": "^2.6.1",
"react": "^17.0.1",
"react-bootstrap": "^1.5.1",
"react-dom": "^17.0.1",
"react-scripts": "4.0.3",
"rimraf": "^3.0.2",
"rollup": "^2.41.0",
"typescript": "^4.2.3",
"web-vitals": "^1.0.1"
},
"peerDependencies": {
"react": "^17.0.1",
"react-bootstrap": "^1.5.1",
"react-dom": "^17.0.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"build-website": "node get-verbs.js && npm run build",
"build-library": "rimraf dist && rimraf dist-cjs && tsc --project library-tsconfig.json && cp src/components/verb-info/*.svg dist/components/verb-info && rollup -c",
"test-ci": "npm run test -- --watchAll=false"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
public/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

BIN
public/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

33
public/index.html Normal file
View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="A playground for exploring Pashto verbs with all their forms and conjugations" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/apple-touch-icon.png" />
<meta name="keywords" content="Pashto, Verbs, Conjugation, Grammar, Linguistics" />
<meta name="author" content="lingdocs.com" />
<link rel="canonical" href="https://verbs.lingdocs.com/" />
<meta property="og:site_name" content="Pashto Verb Explorer"/>
<meta property="og:title" content="Pashto Verb Explorer">
<meta property="og:description" content="A playground for exploring Pashto verbs with all their forms and conjugations">
<meta property="og:image" content="https://verbs.lingdocs.com/android-chrome-512x512.png">
<meta property="og:url" content="https://verbs.lingdocs.com/">
<meta property="og:author" content="lingdocs.com">
<meta property="og:type" content="website">
<meta name="twitter:title" content="Pashto Verb Explorer">
<meta name="twitter:description" content="A playground for exploring Pashto verbs with all their forms and conjugations">
<meta name="twitter:image" content="https://verbs.lingdocs.com/android-chrome-512x512.png">
<meta name="twitter:card" content="summary_large_image">
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>Pashto Verb Explorer</title>
</head>
<body class="d-flex flex-column h-100" id="root">
<noscript>You need to enable JavaScript to run this app.</noscript>
</body>
</html>

25
public/manifest.json Normal file
View File

@ -0,0 +1,25 @@
{
"short_name": "Verb Explorer",
"name": "Pashto Verb Explorer",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

3
public/robots.txt Normal file
View File

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

34
rollup.config.js Normal file
View File

@ -0,0 +1,34 @@
import image from '@rollup/plugin-image';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import pkg from './package.json';
const banner = `
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
`;
export default {
input: 'dist/library.js',
external: ["react", "react-dom", "react-bootstrap"],
output: [{
file: pkg.main,
format: 'cjs',
sourcemap: true,
banner,
}],
plugins: [
// peerDepsExternal(),
commonjs(),
nodeResolve({
resolveOnly: ['classnames'],
}),
// use base64 image inlining for the cjs version so that the .svg s can get cosumed by node 12 etc.
image(),
]
}

263
src/App.css Normal file
View File

@ -0,0 +1,263 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
:root {
--secondary: #00c1fc;
--primary: #ffda54;
/* change with theme */
--theme-shade: #fefefe;
--close: #f5f5f5;
--closer: #eee;
--farther: #555;
--farthest: #333;
--high-contrast: #444;
--input-bg: #fafafa;
}
[data-theme="dark"] {
--theme-shade: #121418;
--close: #1d1f25;
--closer: #2c3039;
--farther: #bbb;
--farthest: #999;
--high-contrast: #cfcfcf;
--input-bg: #ccc;
}
[data-p-text-size="larger"] {
--p-text-size: 1.3rem
}
[data-p-text-size="largest"] {
--p-text-size: 1.6rem
}
body {
background-color: var(--theme-shade);
color: var(--high-contrast);
}
.p-text {
font-size: var(--p-text-size);
}
pre {
color: var(--high-contrast);
}
.card {
background: var(--closer);
}
.list-group {
background: var(--closer);
}
.list-group-item {
background: var(--closer);
}
hr {
border-top: 1px solid var(--farther);
}
/* maybe call .box-alt? */
.bg-light {
background-color: var(--closer) !important;
color: var(--high-contrast);
}
.bg-white {
background-color: var(--theme-shade) !important;
}
/* TODO: better handling of modals across light and dark modes */
.modal-body, .modal-title {
color:#1d1f25;
}
.table {
color: var(--high-contrast);
}
.width-limiter {
max-width: 700px;
}
.thin-column {
max-width: 1rem;
}
.word {
margin-bottom: 1.25rem;
}
.word:hover {
cursor: pointer;
}
.word-non-clickable:hover {
cursor: inherit;
}
.word-extra-info {
color: var(--farther);
margin-left: 1rem;
margin-top: 0.25rem;
}
.definition {
margin-top: 0.5rem;
margin-left: 1rem;
}
code {
color: #333;
}
kbd {
background-color: #eee;
border-radius: 3px;
border: 1px solid #b4b4b4;
box-shadow: 0 1px 1px rgba(0, 0, 0,
.2), 0 2px 0 0 rgba(255, 255, 255,
.7) inset;
color: #333;
display: inline-block;
font-size: .85em;
font-weight: 700;
line-height: 1;
padding: 2px 4px;
white-space: nowrap;
}
.recording-banner {
position: fixed;
width: 100%;
height: 16.5%;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgb(244, 66, 66, 0.9);
z-index: 2;
}
/* Remove blue glow thing */
textarea:focus,
input[type="text"]:focus,
input[type="search"]:focus,
button:focus {
border-color: var(--farther);
box-shadow: none;
outline: 0 none;
}
.clickable {
cursor: pointer;
}
.bottom-left {
position: fixed;
bottom: 2em;
left: 2em;
}
.bottom-right {
position: fixed;
bottom: 2em;
right: 2em;
}
.input-group {
border-color: red !important;
}
input {
background-color: var(--input-bg) !important;
}
.clear-search-button {
background-color: var(--input-bg) !important;
}
.clear-search-button:hover {
color: inherit;
cursor: pointer;
background-color: var(--input-bg) !important;
}
.clear-search-button:active {
background-color: var(--input-bg) !important;
color: var(--input-bg) !important;
}
.form-control-clear:hover {
cursor: pointer;
}
.theme-toggle-button {
position: fixed;
top: 90px;
right: 30px;
font-size: 20px;
}
.back-button {
position: fixed;
bottom: 20px;
right: 20px;
}
.bottom-nav-item {
display: flex;
flex-direction: column;
align-items: center;
}
.plain-link {
color: inherit;
}
.plain-link:hover {
text-decoration: none;
color: var(--farther);
}
.clickable:hover {
color: var(--farther);
}
.clear-search-button {
background-color: white;
margin-left: -2px;
color: #444;
border-radius: 0;
border-color: var(--farther);
}
.clear-search-button:hover {
color: #555;
}
.btn.bg-white:active,
.btn.bg-white:hover {
color: #555 !important;
}
.btn-group.full-width {
display: flex;
}
.full-width .btn {
flex: 1;
}
.clickable:hover {
cursor: pointer;
}

8
src/App.test.js Normal file
View File

@ -0,0 +1,8 @@
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders', () => {
render(<App />);
const linkElement = screen.getByText(/pashto verb explorer/i);
expect(linkElement).toBeInTheDocument();
});

395
src/App.tsx Normal file
View File

@ -0,0 +1,395 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useEffect, useState } from "react";
import ConjugationViewer from "./components/ConjugationViewer";
import verbs from "./verbs";
import Pashto from "./components/Pashto";
import Phonetics from "./components/Phonetics";
import { conjugateVerb } from "./lib/verb-conjugation";
import { getVerbInfo } from "./lib/verb-info";
import ButtonSelect from "./components/ButtonSelect";
import {
clamp
} from "./lib/p-text-helpers";
import {
randomNumber,
} from "./lib/misc-helpers";
import {
Modal
} from "react-bootstrap";
import * as T from "./types";
import defualtTextOptions from "./lib/default-text-options";
import InlinePs from "./components/InlinePs";
type VerbType = "simple" | "stative compound" | "dynamic compound";
const verbTypes: VerbType[] = [
"simple",
"stative compound",
"dynamic compound",
];
const transitivities: T.Transitivity[] = [
"transitive",
"intransitive",
"grammatically transitive",
];
const allVerbs = verbs.map((v: any) => ({
verb: v,
info: getVerbInfo(v.entry, v.complement),
}));
function App() {
const [verbTs, setVerbTs] = useState<number>(0);
const [verbTypeShowing, setVerbTypeShowing] = useState<VerbType>("simple");
const [regularIrregular, setRegularIrregular] = useState<"regular" | "irregular">("regular");
const [transitivityShowing, setTransitivityShowing] = useState<T.Transitivity>("intransitive");
const [showingTextOptions, setShowingTextOptions] = useState<boolean>(false);
const [textOptions, setTextOptions] = useState<T.TextOptions>(defualtTextOptions);
const [aayTailType, setAayTailType] = useState<T.AayTail>("aay");
const [theme, setTheme] = useState<"light" | "dark">("light");
// const onlyGrammTrans = (arr: Transitivity[]) => (
// arr.length === 1 && arr[0] === "grammatically transitive"
// );
// const ensureSimpleVerbTypeSelected = () => {
// if (!verbTypesShowing.includes["simple"]) {
// setVerbTypesShowing([...verbTypesShowing, "simple"]);
// }
// }
useEffect(() => {
const verbTsRaw = localStorage.getItem("verbTs");
const verbTypeShowing = localStorage.getItem("verbTypeShowing") as undefined | VerbType;
const regularIrregular = localStorage.getItem("regularIrregular") as "regular" | "irregular";
const transitivitiyShowing = localStorage.getItem("transitivityShowing") as undefined | T.Transitivity;
const theme = localStorage.getItem("theme");
const textOptionst = localStorage.getItem("textOptions");
const aayTailType = localStorage.getItem("aayType");
if (regularIrregular) {
setRegularIrregular(regularIrregular);
}
if (verbTsRaw) {
setVerbTs(JSON.parse(verbTsRaw));
}
if (verbTypeShowing) {
setVerbTypeShowing(verbTypeShowing);
}
if (transitivitiyShowing) {
setTransitivityShowing(transitivitiyShowing);
}
if (theme) {
setTheme(theme as "light" | "dark");
}
if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
setTheme("dark");
}
if (textOptionst) {
setTextOptions(JSON.parse(textOptionst) as T.TextOptions);
}
if (aayTailType) {
setAayTailType(aayTailType as T.AayTail);
}
}, []);
useEffect(() => {
localStorage.setItem("verbTs", verbTs.toString());
localStorage.setItem("regularIrregular", regularIrregular);
localStorage.setItem("verbTypeShowing", verbTypeShowing);
localStorage.setItem("transitivityShowing", transitivityShowing);
localStorage.setItem("textOptions", JSON.stringify(textOptions));
localStorage.setItem("theme", theme);
localStorage.setItem("aayType", aayTailType);
});
useEffect(() => {
document.documentElement.setAttribute("data-theme", theme);
}, [theme])
const handleVerbIndexChange = (e: any) => {
console.log("changing to", e.target.value);
setVerbTs(parseInt(e.target.value));
}
const handleTypeSelection = (e: any) => {
const type = e.target.value as VerbType;
if (type === "dynamic compound") {
setTransitivityShowing("transitive");
}
if (type === "stative compound" && transitivityShowing === "grammatically transitive") {
setTransitivityShowing("transitive");
}
setVerbTypeShowing(type);
}
const handleTransitivitySelection = (e: any) => {
const transitivity = e.target.value as T.Transitivity;
if (transitivity === "grammatically transitive") {
setVerbTypeShowing("simple");
}
setTransitivityShowing(e.target.value as T.Transitivity);
}
const isRegularVerb = (entry: T.DictionaryEntry): boolean => (
!entry.l && !entry.psp && !entry.ssp && !entry.prp && !entry.pprtp && !entry.noOo && !entry.sepOo
);
const verbsAvailable = allVerbs.filter((verb) => (
(
(verb.info.type === "transitive or grammatically transitive simple" && verbTypeShowing === "simple") && (transitivityShowing === "transitive" || transitivityShowing === "grammatically transitive")
) ||
((
verbTypeShowing === verb.info.type ||
(verbTypeShowing === "stative compound" && verb.info.type === "dynamic or stative compound") ||
(verbTypeShowing === "dynamic compound" && verb.info.type === "dynamic or stative compound") ||
(verbTypeShowing === "dynamic compound" && verb.info.type === "dynamic or generative stative compound") ||
(verbTypeShowing === "stative compound" && verb.info.type === "dynamic or generative stative compound")
)
&& (
transitivityShowing === verb.info.transitivity
))
)).filter((verb) => {
if (verbTypeShowing !== "simple") {
return true;
}
return regularIrregular === "regular"
? isRegularVerb(verb.verb.entry)
: !isRegularVerb(verb.verb.entry);
}).sort((a, b) => a.verb.entry.p.localeCompare(b.verb.entry.p, "ps"));
const v = (() => {
const vFound = verbsAvailable.find(v => v.verb.entry.ts === verbTs);
if (vFound) return vFound;
if (verbsAvailable.length === 0) return undefined;
const vTopOfList = verbsAvailable[0];
setVerbTs(vTopOfList.verb.entry.ts);
return vTopOfList;
})();
const pickRandomVerb = () => {
let newIndex: number;
do {
newIndex = randomNumber(0, verbsAvailable.length);
} while(verbsAvailable[newIndex].verb.entry.ts === verbTs);
setVerbTs(verbsAvailable[newIndex].verb.entry.ts);
};
const makeVerbLabel = (entry: T.DictionaryEntry): string => (
`${entry.p} - ${clamp(entry.e, 20)}`
);
const conjugation = v
? conjugateVerb(v.verb.entry, aayTailType, v.verb.complement)
: undefined;
if (v) {
console.log("Verb chosen:");
console.log(v.verb);
console.log("Conjugation of verb:")
console.log(conjugation);
}
console.log(verbTypeShowing);
console.log(textOptions);
return <>
<main className="flex-shrink-0 mb-4">
<div className="container">
<div style={{ position: "absolute", top: "1.5rem", right: "1.5rem", display: "flex", flexDirection: "row" }}>
<div
className="clickable mr-3"
onClick={() => setShowingTextOptions(true)}
>
<i className="fa-lg fas fa-cog" />
</div>
<div
className="clickable"
onClick={() => setTheme(theme === "light" ? "dark" : "light")}
>
<i className={`fa-lg fas fa-${theme === "light" ? "sun" : "moon"}`} />
</div>
</div>
<div className="text-center" style={{ marginTop: "3rem", marginBottom: "1rem" }}>
<h1 className="display-4 mt-2">Pashto Verb Explorer</h1>
<p>by <a href="https://www.lingdocs.com">LingDocs</a></p>
<p className="lead my-4">
Each form is made from one simple <samp>formula</samp> which <a href="https://www.lingdocs.com/blog/pashto-verbs-master-chart">works for all verbs</a>. 👨🔬
</p>
<p>Choose a verb 👇, look at its roots and stems 🌳, see how all the forms are made and what they mean. 🤓</p>
</div>
<div className="d-block mx-auto card" style={{ maxWidth: "700px", background: "var(--closer)"}}>
<div className="card-body">
<div className="row">
<div className="col-sm-6">
{(v && conjugation) ?
<div>
<div className="mb-1">Select a verb:</div>
<div className="input-group">
<select className="custom-select" value={verbTs} onChange={handleVerbIndexChange}>
{verbsAvailable.length
? verbsAvailable.map((v, i) => (
<option value={v.verb.entry.ts} key={i} dir="ltr">
{"\u200E"}{makeVerbLabel(v.verb.entry)}
</option>
))
: <option>Select a verb type</option>
}
</select>
<div className="input-group-append">
<button className="btn btn-secondary" onClick={pickRandomVerb}>
<i className="fas fa-random" />
</button>
</div>
</div>
<div className="my-3">
<div>
<strong>
<Pashto opts={textOptions}>{v.verb.entry}</Pashto>
{` `}-{` `}
<Phonetics opts={textOptions}>{v.verb.entry}</Phonetics>
</strong>
{` `}
<em>{v.verb.entry.c}</em>
</div>
<div className="ml-3">{v.verb.entry.e}</div>
</div>
</div>
: <div className="alert alert-warning mb-4" role="alert">
No such verbs available...
</div>
}
</div>
<div className="col-sm-6">
<h6>Verb type:</h6>
<div onChange={handleTypeSelection}>
{verbTypes.map((type) => (
<div key={type} className="form-check">
<input
className="form-check-input"
type="radio"
name="verb-type"
checked={verbTypeShowing === type}
value={type}
/>
<label className="form-check-label">
{type}
</label>
</div>
))}
</div>
{verbTypeShowing === "simple" &&
<div className="mt-2">
<ButtonSelect
small
options={[
{ label: "regular", value: "regular" },
{ label: "irregular", value: "irregular" },
]}
value={regularIrregular}
handleChange={(p) => {
setRegularIrregular(p as "regular" | "irregular");
}}
/>
</div>
}
<h6 className="mt-2">Transitivity:</h6>
<div onChange={handleTransitivitySelection}>
{transitivities.map((transitivity) => (
<div key={transitivity} className="form-check">
<input
className="form-check-input"
type="radio"
name="transitivity"
checked={transitivityShowing === transitivity}
value={transitivity}
/>
<label className="form-check-label">
{transitivity}
</label>
</div>
))}
</div>
</div>
</div>
</div>
</div>
{conjugation && <ConjugationViewer
conjugation={conjugation}
textOptions={textOptions}
/>}
</div>
</main>
<Modal show={showingTextOptions} onHide={() => setShowingTextOptions(false)}>
<Modal.Header closeButton>
<Modal.Title>Settings</Modal.Title>
</Modal.Header>
<Modal.Body>
<h6>Pashto Spelling</h6>
<ButtonSelect
options={[
{ label: "🇦🇫 Afghan", value: "Afghan" },
{ label: "🇵🇰 Pakistani", value: "Pakistani" },
]}
value={textOptions.spelling}
handleChange={(p) => {
setTextOptions({
...textOptions,
spelling: p as "Afghan" | "Pakistani",
});
if (p === "Pakistani") setAayTailType("ey");
}}
/>
{textOptions.spelling !== "Pakistani" && <>
<h6 className="mt-3">Non-Inflecting Tail Spelling</h6>
<ButtonSelect
options={[
{ label: <InlinePs opts={textOptions}>{{ p: "ی", f: "ey" }}</InlinePs>, value: "ey" },
{ label: <InlinePs opts={textOptions}>{{ p: "ای", f: "aay" }}</InlinePs>, value: "aay" },
]}
value={aayTailType}
handleChange={(p) => setAayTailType(p as "ey" | "aay")}
/>
</>}
<h6 className="mt-3">Diacritics</h6>
<ButtonSelect
options={[
{ label: "On", value: "true" },
{ label: "Off", value: "false" },
]}
value={textOptions.diacritics.toString()}
handleChange={(p) => setTextOptions({ ...textOptions, diacritics: p === "true" })}
/>
<h6 className="mt-3">Pashto Text Size</h6>
<ButtonSelect
options={[
{ label: "Normal", value: "normal" },
{ label: "Large", value: "larger" },
{ label: "X-Large", value: "largest" },
]}
value={textOptions.pTextSize}
handleChange={(p) => setTextOptions({ ...textOptions, pTextSize: p as "normal" | "larger" | "largest" })}
/>
<h6 className="mt-3">Phonetics</h6>
<ButtonSelect
options={[
{ label: "LingDocs", value: "lingdocs" },
{ label: "IPA", value: "ipa" },
{ label: "ALAC", value: "alalc" },
{ label: "None", value: "none" },
]}
value={textOptions.phonetics}
handleChange={(p) => setTextOptions({ ...textOptions, phonetics: p as "lingdocs" | "ipa" | "none" | "alalc" })}
/>
</Modal.Body>
<Modal.Footer>
<button type="button" className="btn btn-primary clb" onClick={() => setShowingTextOptions(false)}>
Close
</button>
</Modal.Footer>
</Modal>
<footer className="footer mt-auto py-3" style={{ backgroundColor: "#f5f5f5" }}>
<div className="container">
<span className="text-muted">Copyright © 2020 <a href="https://www.lingdocs.com">lingdocs.com</a> all rights reserverd</span>
</div>
</footer>
</>
}
export default App;

View File

@ -0,0 +1,46 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import classNames from "classnames";
type PickerProps = {
options: { label: any, value: string }[],
value: string,
handleChange: (payload: string) => void,
small?: boolean,
xSmall?: boolean,
}
function ButtonSelect(props: PickerProps) {
return (
<div className="d-inline-flex flex-row justify-content-center">
<div className="btn-group">
{props.options.map((option) => (
<button
key={option.value}
type="button"
className={classNames(
"btn",
"btn-outline-secondary",
{ active: props.value === option.value },
{ "btn-sm": props.small || props.xSmall }
)}
onClick={() => props.handleChange(option.value)}
style={props.xSmall ? {
fontSize: "small",
} : {}}
>
{option.label}
</button>
))}
</div>
</div>
);
}
export default ButtonSelect;

View File

@ -0,0 +1,41 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
type Props = {
label: string,
options: { label: any, name: string, disabled?: boolean }[],
checked: string[],
handleChange: (p: { name: string, checked: boolean }) => void;
}
export default function (props: Props) {
function handleCheck(e: any) {
props.handleChange({
name: e.target.name as string,
checked: e.target.checked as boolean,
});
}
return (
<div className="text-center">
<span className="mr-2">{props.label}</span>
{props.options.map((option) => (
<div className="form-check form-check-inline">
<input
className="form-check-input"
type="checkbox"
name={option.name}
onChange={handleCheck}
checked={props.checked.includes(option.name)}
disabled={option.disabled}
/>
<label className="form-check-label">{option.label}</label>
</div>
))}
</div>
);
}

View File

@ -0,0 +1,383 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useEffect, useReducer } from "react";
import VerbInfo from "./verb-info/VerbInfo";
import VerbFormDisplay from "./VerbFormDisplay";
import ButtonSelect from "./ButtonSelect";
import Hider from "./Hider";
import { getForms } from "../lib/conjugation-forms";
import PersonSelection from "./PersonSelection";
import {
personIsAllowed,
randomPerson,
incrementPerson,
} from "../lib/misc-helpers";
import * as T from "../types";
const VerbChoiceWarning = () => (
<>
<div className="alert alert-warning d-block mx-auto mt-3" role="alert" style={{ maxWidth: "500px" }}>
<i className="fas fa-exclamation-triangle" /> This verb can be used in different ways!
</div>
<p>Choose which way to use it:</p>
</>
);
const stateLocalStorageName = "explorerState6";
type Difficulty = "beginner" | "advanced";
// remember to increment the stateLocalStorageName whenever changing
// the State type
type State = {
mode: "chart" | "sentence";
subject: T.Person,
object: T.Person,
negative: boolean,
compoundTypeSelected: "stative" | "dynamic";
transitivitySelected: "transitive" | "grammatically transitive";
compoundComplementVersionSelected: "sing" | "plur";
showingStemsAndRoots: boolean;
difficulty: Difficulty;
formsOpened: string[];
showingFormInfo: boolean;
}
type Action = {
type: "choose compound type",
payload: "stative" | "dynamic",
} | {
type: "set forms opened",
payload: string,
} | {
type: "set difficulty",
payload: Difficulty,
} | {
type: "set compound complement version",
payload: "sing" | "plur",
} | {
type: "toggle showingStemsAndRoots",
} | {
type: "setState",
payload: State,
} | {
type: "setMode",
payload: "chart" | "sentence",
} | {
type: "setPerson",
payload: { setting: "subject" | "object", person: T.Person },
} | {
type: "randomPerson",
payload: "subject" | "object",
} | {
type: "setShowingFormInfo",
payload: boolean,
} | {
type: "setTransitivitySelected",
payload: "transitive" | "grammatically transitive",
} | {
type: "setNegative",
payload: boolean,
};
function oppositeRole(x: "subject" | "object"): "subject" | "object" {
return x === "subject" ? "object" : "subject";
}
function reducer(state: State, action: Action): State {
function applyFormOpen(
payload: string,
formsOpened: string[],
): string[] {
if (formsOpened.includes(payload)) {
return formsOpened.filter((f) => f !== payload);
}
return [...formsOpened, payload];
}
function setPerson({ setting, person }: { setting: "subject" | "object", person: T.Person }): State {
let newPerson = person;
let otherPerson = state[oppositeRole(setting)];
let otherSetting = oppositeRole(setting);
while (!personIsAllowed(newPerson, otherPerson)) {
otherPerson = incrementPerson(otherPerson);
}
return { ...state, [setting]: newPerson, [otherSetting]: otherPerson };
}
switch(action.type) {
case "choose compound type":
return { ...state, compoundTypeSelected: action.payload };
case "set forms opened":
return {
...state,
formsOpened: applyFormOpen(action.payload, state.formsOpened),
};
case "set difficulty":
return { ...state, difficulty: action.payload };
case "set compound complement version":
return { ...state, compoundComplementVersionSelected: action.payload };
case "toggle showingStemsAndRoots":
return { ...state, showingStemsAndRoots: !state.showingStemsAndRoots };
case "setState":
return action.payload;
case "setMode":
return { ...state, mode: action.payload };
case "setPerson":
return setPerson(action.payload);
case "randomPerson":
return {
...state,
[action.payload]: randomPerson(
state[action.payload === "subject" ? "object" : "subject"]
),
};
case "setShowingFormInfo":
return {
...state,
showingFormInfo: action.payload,
};
case "setTransitivitySelected":
return {
...state,
transitivitySelected: action.payload,
};
case "setNegative":
return {
...state,
negative: action.payload,
};
default:
throw new Error();
}
}
const initialState: State = {
subject: 0,
object: 2,
negative: false,
compoundTypeSelected: "stative",
transitivitySelected: "transitive",
mode: "chart",
compoundComplementVersionSelected: "plur",
difficulty: "beginner",
showingStemsAndRoots: false,
showingFormInfo: false,
formsOpened: [],
};
function ConjugationViewer({ conjugation, textOptions }: {
conjugation: T.VerbOutput,
textOptions: T.TextOptions,
}) {
const [state, dispatch] = useReducer(reducer, initialState);
useEffect(() => {
const stateRaw = localStorage.getItem(stateLocalStorageName);
if (stateRaw) {
try {
const payload = JSON.parse(stateRaw) as State;
dispatch({ type: "setState", payload });
} catch (e) {
console.error("error parsing saved state JSON", e);
}
}
}, []);
const verbConj1 = ("dynamic" in conjugation)
? conjugation[state.compoundTypeSelected]
: ("transitive" in conjugation)
? conjugation[state.transitivitySelected === "transitive" ? "transitive" : "grammaticallyTransitive"]
: conjugation;
const verbConj = (verbConj1.singularForm && state.compoundComplementVersionSelected === "sing")
? verbConj1.singularForm
: verbConj1;
useEffect(() => {
localStorage.setItem(stateLocalStorageName, JSON.stringify(state));
});
const filterDifficulty = (f: T.DisplayForm): boolean => (
state.difficulty === "advanced" || !f.advanced
);
const forms = getForms({
conj: verbConj,
filterFunc: filterDifficulty,
mode: state.mode,
subject: state.subject,
object: state.object,
negative: state.negative,
});
return <div className="mb-4">
{"transitive" in conjugation && <div className="text-center my-2">
<VerbChoiceWarning />
<div>
<ButtonSelect
options={[
{
label: "Transitive", value: "transitive" },
{
label: "Grammatically Transitive",
value: "grammatically transitive",
},
]}
value={state.transitivitySelected}
handleChange={(p) => dispatch({ type: "setTransitivitySelected", payload: p as "transitive" | "grammatically transitive" })}
/>
</div>
</div>}
{"dynamic" in conjugation && <div className="text-center my-2">
<VerbChoiceWarning />
<div>
<ButtonSelect
options={[
{ label: "Dynamic", value: "dynamic" },
{
label: `${conjugation.info.type === "dynamic or generative stative compound" ? "Generative " : ""}Stative`,
value: "stative",
},
]}
value={state.compoundTypeSelected}
handleChange={(p) => dispatch({ type: "choose compound type", payload: p as "dynamic" | "stative" })}
/>
</div>
</div>}
{verbConj1.singularForm && <div className="text-center my-2">
<VerbChoiceWarning />
<div>
<ButtonSelect
small
options={[
// @ts-ignore - TODO - make this a bit safer
{ label: `Sing. ${verbConj1.info.objComplement.entry.p}`, value: "sing" },
// @ts-ignore - TODO - make this a bit safer
{ label: `Plur. ${verbConj1.info.objComplement.plural.p}`, value: "plur" },
]}
value={state.compoundComplementVersionSelected}
handleChange={(p) => dispatch({ type: "set compound complement version", payload: p as "sing" | "plur" })}
/>
</div>
</div>}
<VerbInfo
info={verbConj.info}
textOptions={textOptions}
showingStemsAndRoots={state.showingStemsAndRoots}
toggleShowingSar={() => dispatch({ type: "toggle showingStemsAndRoots" })}
/>
<div className="d-flex flex-row align-items-center justify-content-around flex-wrap mt-4 mb-2">
<div className="mb-3">
<ButtonSelect
options={[
{ label: `Charts`, value: "chart" },
{ label: `Sentences`, value: "sentence" },
]}
value={state.mode}
handleChange={(p) => dispatch({ type: "setMode", payload: p as "chart" | "sentence" })}
/>
</div>
<div className="mb-3">
<ButtonSelect
options={[
{ label: "👶 Beginner", value: "beginner" },
{ label: "🤓 Advanced", value: "advanced" },
]}
value={state.difficulty}
handleChange={(p) => dispatch({ type: "set difficulty", payload: p as Difficulty })}
/>
</div>
<div className="form-group form-check">
<input
type="checkbox"
className="form-check-input"
checked={state.showingFormInfo}
onChange={(e) => {
dispatch({ type: "setShowingFormInfo", payload: e.target.checked })
}}
/>
<label className="form-check-label">Show Form Info</label>
</div>
</div>
{state.mode === "sentence" &&
<div className="position-sticky pb-1" style={{ top: 0, background: "var(--theme-shade)", zIndex: 1000 }}>
<PersonSelection
subject={state.subject}
object={state.object}
info={verbConj.info}
handleChange={(payload: { setting: "subject" | "object", person: T.Person }) => dispatch({
type: "setPerson", payload,
})}
handleRandom={(payload: "subject" | "object") => dispatch({
type: "randomPerson", payload,
})}
textOptions={textOptions}
/>
<div className="mt-2 text-center">
<ButtonSelect
options={[
{ label: "Pos.", value: "false" },
{ label: "Neg.", value: "true" },
]}
value={state.negative.toString()}
handleChange={(p) => dispatch({ type: "setNegative", payload: p === "true" })}
/>
</div>
</div>
}
<FormsDisplay
forms={forms}
state={state}
handleChange={(payload: string) => dispatch({ type: "set forms opened", payload })}
verbConj={verbConj}
textOptions={textOptions}
/>
</div>;
}
function FormsDisplay({ forms, state, handleChange, textOptions, verbConj }: {
verbConj: T.VerbConjugation,
forms: T.DisplayFormItem[],
state: State,
handleChange: (p: string) => void,
textOptions: T.TextOptions,
}) {
function drawLevel(forms: T.DisplayFormItem[], level: number) {
return <div className="mt-3">
{forms.map((f, i) => {
if ("content" in f && f.content.length === 0) {
return null;
}
const showDividerLine = (item: T.DisplayFormItem, index: number): boolean => {
return (index !== 0) && ("content" in item || !item.aspect || (item.aspect === "imperfective"));
};
return <div key={`level1-${i}`}>
{showDividerLine(f, i) && <hr />}
<Hider
label={f.label}
hLevel={5+level}
aspect={"aspect" in f ? f.aspect : undefined}
showing={state.formsOpened.includes(f.label)}
handleChange={() => handleChange(f.label)}
>
{"content" in f ?
drawLevel(f.content, level + 1)
:
<VerbFormDisplay
displayForm={f}
textOptions={textOptions}
showingFormInfo={state.showingFormInfo}
info={verbConj.info}
/>
}
</Hider>
</div>;
})}
</div>
}
return <div style={{ marginBottom: "5rem" }}>
{drawLevel(forms, 0)}
</div>;
}
export default ConjugationViewer;

View File

@ -0,0 +1,42 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import Pashto from "./Pashto";
import Phonetics from "./Phonetics";
import * as T from "../types";
export default function({
children,
ex,
opts,
}: {
ex?: T.PsString | T.PsString[],
children: T.PsString | T.PsString[],
opts: T.TextOptions,
}) {
const examples = children || ex;
const Example = ({ children: text }: { children: T.PsString }) => (
<div className="mt-1 mb-3">
<div>
<Pashto opts={opts}>{text}</Pashto>
</div>
<div>
<Phonetics opts={opts}>{text}</Phonetics>
</div>
{text.e && <div className="text-muted">
{text.e}
</div>}
</div>
);
return Array.isArray(examples) ?
<div>
{examples.map((example, i) => <Example key={i}>{example}</Example>)}
</div>
:
<Example>{examples}</Example>;
}

58
src/components/Hider.tsx Normal file
View File

@ -0,0 +1,58 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { createElement } from "react";
import classNames from "classnames";
import * as T from "../types";
const caretRight = <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" className="bi bi-caret-right-fill" viewBox="0 0 16 16">
<path d="M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"/>
</svg>
const caretDown = <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" className="bi bi-caret-down-fill" viewBox="0 0 16 16">
<path d="M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/>
</svg>
const defaultLevel = 4;
const indentAfterLevel = 5;
function Hider(props: {
label: string,
showing: boolean,
aspect?: T.Aspect,
handleChange: () => void,
children: React.ReactNode,
hLevel?: number,
}) {
const hLev = Math.min((props.hLevel ? props.hLevel : defaultLevel), 6);
const extraMargin = (props.hLevel && (props.hLevel > indentAfterLevel))
? `ml-${(props.hLevel - indentAfterLevel) + 1}`
: "";
return <div className="mb-3">
{createElement(
`h${hLev}`,
{
onClick: props.handleChange,
className: classNames(
"clickable",
extraMargin,
),
},
<>
{props.showing ? caretDown : caretRight}
{` `}
{props.aspect
? <i className={`fas fa-${props.aspect === "imperfective" ? "video" : "camera"} mr-2`} />
: ""}
{props.label}
</>,
)}
{props.showing && props.children}
</div>
}
export default Hider;

View File

@ -0,0 +1,115 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useState } from "react";
import Pashto from "./Pashto";
import Phonetics from "./Phonetics";
import { Modal } from "react-bootstrap";
import * as T from "../types";
const explanation = (inf: T.Inflections, textOptions: T.TextOptions) => {
// @ts-ignore
const w = inf["masc" in inf ? "masc" : "fem"][0][0];
return <>
<p>In Pashto, <strong>nouns, pronouns, and adjectives</strong> get inflected when they are either:</p>
<ul>
<li>Plural</li>
<li>Sandwiched with a preposition/postposition (oblique), or</li>
<li>The subject of a transitive past tense verb</li>
</ul>
<p>Whatever the reason, the inflection looks the same.</p>
<h5>Double Inflection</h5>
<p>If there are <em>2 reasons</em> to inflect (ie. if a noun is plural <em>and</em> the subject of a transitive past tense verb) then you use the <strong>second inflection</strong>.</p>
<h5>Notes:</h5>
<p><small>Pronouns don't get inflected for being plural. Instead, they have a seperate plural form.</small></p>
<p><small>Not all nouns, pronouns, and adjectives can inflect. But if you're seeing this table here, it means that <Pashto opts={textOptions}>{w}</Pashto> does inflect.</small></p>
<p><small>Irregular nouns like پښتون or مېلمه often only take the 1st inflection when they're plural, and not for the other two reasons, depending on dialect. When there are two reasons to inflect, these will always take the double inflection.</small></p>
<p><small>For prepositional/postpositional sandwiches of location like په ... کې and په ... باندې the first inflection of nouns (not of adjectives/pronouns) often doesn't happen. The second one always will though.</small></p>
</>
}
const InflectionTable = ({ inf, textOptions }: {
inf: T.Inflections,
textOptions: T.TextOptions,
}) => {
const [showingExplanation, setShowingExplanation] = useState(false);
/* istanbul ignore next */ // Insanely can't see the modal to close it
const handleCloseExplanation = () => setShowingExplanation(false);
const handleShowExplanation = () => setShowingExplanation(true);
return (
<div className="mt-4">
<div style={{ display: "flex", justifyContent: "space-between" }}>
<h5>Inflections:</h5>
<div className="clickable mr-2" onClick={handleShowExplanation} data-testid="help-button">
<i className={`fa fa-question-circle`}></i>
</div>
</div>
<table className="table">
<thead>
<tr>
<th></th>
{"masc" in inf && <th>Masculine</th>}
{"fem" in inf && <th>Feminine</th>}
</tr>
</thead>
<tbody>
{["Plain", "1st", "2nd"].map((title, i) => (
<tr key={title}>
<th scope="row" className="thin-column">{title}</th>
{"masc" in inf && <td>
{inf.masc[i].map((w, j) => (
<div key={`${i}-${j}-inflection-result`}>
<div>
<Pashto opts={textOptions}>
{w}
</Pashto>
</div>
<div>
<Phonetics opts={textOptions}>
{w}
</Phonetics>
</div>
</div>
))}
</td>}
{"fem" in inf && <td>
{inf.fem[i].map((w, j) => (
<div key={`${i}-${j}-inflection-result`}>
<div>
<Pashto opts={textOptions}>
{w}
</Pashto>
</div>
<div>
<Phonetics opts={textOptions}>
{w}
</Phonetics>
</div>
</div>
))}
</td>}
</tr>
))}
</tbody>
</table>
<Modal show={showingExplanation} onHide={handleCloseExplanation}>
<Modal.Header closeButton>
<Modal.Title>About Inflections</Modal.Title>
</Modal.Header>
<Modal.Body>{explanation(inf, textOptions)}</Modal.Body>
<Modal.Footer>
<button type="button" className="btn btn-primary clb" onClick={handleCloseExplanation}>
Close
</button>
</Modal.Footer>
</Modal>
</div>
);
};
export default InflectionTable;

View File

@ -0,0 +1,33 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import Pashto from "./Pashto";
import Phonetics from "./Phonetics";
import * as T from "../types";
function InlinePs ({
children,
ps,
opts,
}: {
ps?: T.PsString,
children: T.PsString,
opts: T.TextOptions,
}) {
const text = children || ps;
return (
<span>
<Pashto opts={opts}>{text}</Pashto>
{opts.phonetics !== "none" && " - "}
<Phonetics opts={opts}>{text}</Phonetics>
{text.e && <span className="text-muted"> ({text.e})</span>}
</span>
);
}
export default InlinePs;

34
src/components/Pashto.tsx Normal file
View File

@ -0,0 +1,34 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
convertAfToPkSpelling,
} from "../lib/convert-spelling";
import {
phoneticsToDiacritics
} from "../lib/phonetics-to-diacritics";
import * as T from "../types";
const Pashto = ({ opts, children: text }: {
opts: T.TextOptions,
children: T.PsString,
}) => {
const p = opts.diacritics
? (phoneticsToDiacritics(text.p, text.f) || text.p)
: text.p;
const style = opts.pTextSize === "normal"
? undefined
: { fontSize: opts.pTextSize === "larger" ? "large" : "larger" };
return (
<span className="p-text" dir="rtl" style={style}>
{opts.spelling === "Afghan" ? p : convertAfToPkSpelling(p)}
</span>
);
};
export default Pashto;

View File

@ -0,0 +1,60 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import * as T from "../types";
const persInfs: {
label: string;
value: T.PersonInflectionsField;
}[] = [
{
label: "masc. sing.",
value: "mascSing",
},
{
label: "fem. sing.",
value: "femSing",
},
{
label: "masc. plur.",
value: "mascPlur",
},
{
label: "fem. plur",
value: "femPlur",
}
];
function PersInfsPicker(props: {
transitivity: T.Transitivity,
persInf: T.PersonInflectionsField,
handleChange: (persInf: T.PersonInflectionsField) => void,
}) {
function hChange(e: any) {
const newValue = e.target.value as T.PersonInflectionsField;
props.handleChange(newValue);
}
return (
<div className="my-2" style={{ display: "flex", flexDirection: "row", alignItems: "center", justifyContent: "center" }}>
<div className="mr-2">
When the <strong>{props.transitivity === "intransitive" ? "subject" : "object"}</strong> is
</div>
<div>
<select className="form-control form-control-sm d-inline-block" value={props.persInf} id="verb_info_pers_select" onChange={hChange}>
{persInfs.map((pers) => (
<option key={pers.value} value={pers.value}>
{pers.label}
</option>
))}
</select>
</div>
</div>
);
}
export default PersInfsPicker;

View File

@ -0,0 +1,107 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { persons } from "../lib/grammar-units";
import InlinePs from "../components/InlinePs";
import * as T from "../types";
function PersonSelect(props: {
setting: "subject" | "object",
value: T.Person,
locked?: boolean,
handleChange: (person: T.Person) => void,
handleRandom: () => void,
}) {
return (
!props.locked ? <div className="input-group" style={{ maxWidth: "30rem" }}>
<select
className="custom-select"
value={props.value}
onChange={(e: any) => props.handleChange(
parseInt(e.target.value) as T.Person
)}
>
{persons.map((p) => (
<option value={p.person} key={"subject"+p.person}>
{p.label[props.setting]}
</option>
))}
</select>
<div className="input-group-append" onClick={props.handleRandom}>
<button className="btn btn-secondary">
<i className="fas fa-random" />
</button>
</div>
</div> : <input
className="form-control"
type="text"
placeholder={persons[props.value].label[props.setting]}
readOnly
/>
);
}
function PersonSelection(props: {
subject: T.Person,
object: T.Person,
info: T.NonComboVerbInfo,
handleRandom: (setting: "subject" | "object") => void,
handleChange: (payload: { setting: "subject" | "object", person: T.Person }) => void,
textOptions: T.TextOptions,
}) {
function getComp(comp: T.ObjComplement) {
const c = comp.plural
? comp.plural
: comp.entry;
return <InlinePs opts={props.textOptions}>{c}</InlinePs>;
}
return (
<div className="row align-items-baseline">
<div className="col">
<label className="form-label">
<strong>{props.info.transitivity === "intransitive" ? "Subject" : "Subject/Agent"}</strong>
</label>
<PersonSelect
setting="subject"
value={props.subject}
handleChange={(person: T.Person) => props.handleChange({ setting: "subject", person })}
handleRandom={() => props.handleRandom("subject")}
/>
</div>
{(props.info.type === "dynamic compound" || props.info.type === "generative stative compound") ? <div className="col">
<label className="form-label"><strong>Object is the complement ({getComp(props.info.objComplement)})</strong></label>
<PersonSelect
setting="object"
value={props.info.objComplement.person}
locked
handleChange={(person: T.Person) => props.handleChange({ setting: "object", person })}
handleRandom={() => props.handleRandom("object")}
/>
</div> : props.info.transitivity === "transitive" ? <div className="col">
<label className="form-label"><strong>Object</strong></label>
<PersonSelect
setting="object"
value={props.object}
handleChange={(person: T.Person) => props.handleChange({ setting: "object", person })}
handleRandom={() => props.handleRandom("object")}
/>
</div> : props.info.transitivity === "grammatically transitive" ? <div className="col">
<label className="form-label"><strong>Object is unspoken</strong></label>
<PersonSelect
setting="object"
value={10}
locked
handleChange={(person: T.Person) => props.handleChange({ setting: "object", person })}
handleRandom={() => props.handleRandom("object")}
/>
</div> : null}
</div>
);
}
export default PersonSelection;

View File

@ -0,0 +1,31 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
translatePhonetics,
} from "../lib/translate-phonetics";
import * as T from "../types";
const Phonetics = ({ opts, children: text }: {
opts: T.TextOptions,
children: T.PsString,
}) => {
if (opts.phonetics === "none") {
return null;
}
return <span className="f-text">
{opts.phonetics === "lingdocs"
? text.f
: translatePhonetics(text.f, {
dialect: opts.dialect,
system: opts.phonetics,
})}
</span>
};
export default Phonetics;

View File

@ -0,0 +1,26 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import Pashto from "./Pashto";
import Phonetics from "./Phonetics";
import * as T from "../types";
function SingleItemDisplay({ item, textOptions, english }: {
item: T.PsString,
textOptions: T.TextOptions,
english?: T.EnglishBlock | string,
}) {
const eng = Array.isArray(english) ? english[0][0] : english;
return <div className="text-center mt-3 mb-2">
<div><Pashto opts={textOptions}>{item}</Pashto></div>
<div><Phonetics opts={textOptions}>{item}</Phonetics></div>
{eng && <div>{eng}</div>}
</div>;
}
export default SingleItemDisplay;

View File

@ -0,0 +1,113 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useEffect, useState } from "react";
import PersonInfsPicker from "./PersInfsPicker";
import InflectionsTable from "./InflectionsTable";
import SingleItemDisplay from "./SingleItemDisplay";
import ButtonSelect from "./ButtonSelect";
import VerbTable from "./VerbTable";
import {
getEnglishPersonInfo,
isSentenceForm,
} from "../lib/misc-helpers";
import {
isAllOne,
} from "../lib/p-text-helpers";
import * as T from "../types";
function agreementInfo(info: T.NonComboVerbInfo, displayForm: T.DisplayForm): React.ReactNode {
if (!displayForm.past) {
return null;
}
const beginning = "Verb agrees with the ";
const agreesWith = (info.transitivity !== "intransitive" && displayForm.past && !displayForm.passive)
? "object"
: "subject";
const extraExplanation = (!displayForm.past)
? ""
: (info.transitivity === "grammatically transitive")
? " which is an unwritten 3rd pers. masc. object."
: (info.type === "generative stative compound" || info.type === "dynamic compound")
? ` which is the complement ${info.objComplement.plural ? info.objComplement.plural.p : info.objComplement.entry.p} (${getEnglishPersonInfo(info.objComplement.person)})`
: ""
return <><strong>Note:</strong> {beginning}<strong>{agreesWith}</strong>{extraExplanation}</>
}
function VerbFormDisplay({ displayForm, textOptions, info, showingFormInfo, english }: {
displayForm: T.DisplayForm | T.VerbForm,
english?: T.EnglishBlock | string,
textOptions: T.TextOptions,
showingFormInfo: boolean,
info?: T.NonComboVerbInfo,
}) {
const [persInf, setPersInf] = useState<T.PersonInflectionsField>("mascSing");
const [length, setLength] = useState<T.Length>("long");
const [showingExplanation, setShowingExplanation] = useState<boolean>(false);
const block = "label" in displayForm ? displayForm.form : displayForm;
const chosenPersInf = "mascSing" in block
? block[persInf]
: block;
const form = "long" in chosenPersInf
? chosenPersInf[length] || chosenPersInf.short
: chosenPersInf;
useEffect(() => {
if (length === "mini" && !("mini" in chosenPersInf)) {
setLength("long");
}
setPersInf("mascSing");
setShowingExplanation(false);
}, [block]);
const hasVariations = (!("masc" in form)) && (!("p" in form)) && (!isSentenceForm(form)) && !isAllOne(form as T.VerbBlock | T.ImperativeBlock);
return <>
{(("label" in displayForm && info) && showingFormInfo) && <>
{(hasVariations || displayForm.past) && <p className="small text-muted">
{agreementInfo(info, displayForm)}
</p>}
<div className="mb-1 d-flex justify-content-between align-items-center">
<samp>Formula: {displayForm.formula}</samp>
<button className="btn btn-sm btn-outline-secondary text-nowrap ml-2" onClick={() => setShowingExplanation(!showingExplanation)}>
<i className={`fas fa-caret-${showingExplanation ? "down" : "right"}`} /> Meaning
</button>
</div>
{showingExplanation && <div className="my-2">
{displayForm.explanation}
</div>}
</>}
{"long" in chosenPersInf &&
<div className="text-center">
<ButtonSelect
small
options={[
{ label: "Long", value: "long" },
{ label: "Short", value: "short" },
..."mini" in chosenPersInf ? [{
label: "Mini", value: "mini",
}] : [],
]}
value={length}
handleChange={(p) => setLength(p as T.Length)}
/>
</div>
}
{("mascSing" in block && info) && <PersonInfsPicker
persInf={persInf}
handleChange={(p) => setPersInf(p)}
transitivity={info.transitivity}
/>}
{"masc" in form ?
<InflectionsTable inf={form} textOptions={textOptions} />
: "p" in form ?
<SingleItemDisplay item={form} english={english} textOptions={textOptions} />
:
<VerbTable block={form} english={english} textOptions={textOptions} />
}
</>
}
export default VerbFormDisplay;

View File

@ -0,0 +1,159 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useState, useEffect } from "react";
import Pashto from "./Pashto";
import Phonetics from "./Phonetics";
import {
psStringEquals,
isAllOne,
addEnglish,
} from "../lib/p-text-helpers";
import { isSentenceForm } from "../lib/misc-helpers";
import * as T from "../types";
const arrowDown = <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" className="bi bi-caret-down" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M3.204 5L8 10.481 12.796 5H3.204zm-.753.659l4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659z"/>
</svg>;
const genderAbbrev = (gender: "masc" | "fem" | undefined): " m." | " f." | "" => (
gender === "masc"
? " m."
: gender === "fem"
? " f."
: ""
);
const minifyTableGender = (block: T.VerbBlock | T.ImperativeBlock): Array<T.PersonLine | {
masc: T.PersonLine,
fem: T.PersonLine,
}> => {
// @ts-ignore
return block.reduce((table, person, i, src) => {
const isFem = i % 2 !== 0;
if (isFem) {
return table;
}
const femPersAhead = src[i+1];
const femPersIsTheSame = (
psStringEquals(person[0][0], femPersAhead[0][0]) &&
psStringEquals(person[1][0], femPersAhead[1][0])
);
if (femPersAhead && !femPersIsTheSame) {
return [...table, {
masc: person,
fem: femPersAhead,
}];
}
return [...table, person];
}, []);
};
function Cell({ item, textOptions, center, noBorder }: {
item: T.ArrayOneOrMore<T.PsString>,
textOptions: T.TextOptions,
center?: boolean,
noBorder?: boolean,
}) {
const [version, setVersion] = useState(0);
useEffect(() => setVersion(0), [item]);
function advanceVersion() {
setVersion((version + 1) % item.length);
}
const w = item[version] || item[0];
return (
<td style={noBorder ? { border: "none" } : {}}>
<div style={{
display: "flex",
flexDirection: "row",
flexWrap: "wrap",
justifyContent: center ? "center" : "space-between",
alignItems: "center",
}}>
<div>
<div>
<Pashto opts={textOptions}>{w}</Pashto>
</div>
<div>
<Phonetics opts={textOptions}>{w}</Phonetics>
</div>
{w.e && <div className="text-muted">{w.e}</div>}
</div>
{item.length > 1 &&
<button className="btn btn-sm btn-light mx-2" onClick={advanceVersion}>
ver. {version + 1}/{item.length} {arrowDown}
</button>
}
</div>
</td>
);
}
function VerbTable({ block, textOptions, english }: {
block: T.VerbBlock | T.ImperativeBlock | T.ArrayOneOrMore<T.PsString>,
english?: T.EnglishBlock | string,
textOptions: T.TextOptions,
}) {
const blockWEng = english ? addEnglish(english, block) : block;
if (isSentenceForm(blockWEng) || isAllOne(blockWEng as T.VerbBlock | T.ImperativeBlock)) {
const item = isSentenceForm(blockWEng)
? block as unknown as T.ArrayOneOrMore<T.PsString>
: (() => {
const b = block as T.ImperativeBlock | T.VerbBlock
return b[0][0];
})();
return <table className="table text-center">
<tbody>
<tr>
<Cell item={item} textOptions={textOptions} center noBorder />
</tr>
</tbody>
</table>
}
const bl = blockWEng as T.VerbBlock | T.ImperativeBlock;
const b = minifyTableGender(bl);
return <table className="table mt-2" style={{ tableLayout: "fixed" }}>
<thead>
<tr>
<th scope="col" style={{ width: "3rem" }}></th>
<th scope="col">Singular</th>
<th scope="col">Plural</th>
</tr>
</thead>
<tbody>
{b.reduce((rows: React.ReactNode[], person, i, arr) => {
function drawRow({ line, gender }: { line: T.PersonLine, gender?: "masc" | "fem" }) {
const pers = arr.length > 1 ? ["1st", "2nd", "3rd"] : ["2nd"];
const rowLabel = `${pers[i]}${genderAbbrev(gender)}`;
const color = !gender
? "inherit"
: gender === "masc"
? "#78c8ed"
: "#ff99aa";
return (
<tr key={`${i}${gender}`}>
<th scope="row" style={{ color }}>{rowLabel}</th>
<Cell item={line[0]} textOptions={textOptions} />
<Cell item={line[1]} textOptions={textOptions} />
</tr>
);
}
return "masc" in person
? [
...rows,
drawRow({ line: person.masc, gender: "masc" }),
drawRow({ line: person.fem, gender: "fem" }),
]
: [...rows, drawRow({ line: person })];
}, [])}
</tbody>
</table>
}
export default VerbTable;

View File

@ -0,0 +1,198 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
CSSProperties,
useState,
} from "react";
import {
pickPersInf,
hasPersInfs,
noPersInfs,
} from "../../lib/misc-helpers";
import VerbInfoItemDisplay from "./VerbInfoItemDisplay";
import PersonInfsPicker from "../PersInfsPicker";
import VerbTypeInfo from "./VerbTypeInfo";
import Hider from "../Hider";
import * as T from "../../types";
import fadedTree from "./faded-tree.svg";
// import camera from "../icons/camera-fill";
// import video from "../icons/camera-video-fill";
const indentR = {
paddingLeft: "1rem",
};
const title: CSSProperties = {
fontWeight: "bolder",
marginBottom: "0.5rem",
marginTop: "0.5rem",
};
export function RootsAndStems({ textOptions, info }: {
textOptions: T.TextOptions,
info: T.NonComboVerbInfo,
}) {
const hasPerfectiveSplit = !!(info.root.perfectiveSplit || info.stem.perfectiveSplit);
const showPersInf = hasPersInfs(info);
const [persInf, setPersInf] = useState<T.PersonInflectionsField>("mascSing");
const [split, setSplit] = useState<boolean>(false);
const perfectiveStem = (info.stem.perfectiveSplit && split)
? info.stem.perfectiveSplit
: info.stem.perfective;
const perfectiveRoot = (info.root.perfectiveSplit && split)
? info.root.perfectiveSplit
: info.root.perfective;
const colClass = "col col-md-5 px-0 mb-1";
const rowClass = "row justify-content-between";
return (
<div className="mt-3">
{showPersInf && <PersonInfsPicker
persInf={persInf}
handleChange={(p) => setPersInf(p)}
transitivity={info.transitivity}
/>}
<div className="verb-info" style={{
textAlign: "center",
maxWidth: "500px",
margin: "0 auto",
backgroundImage: `url(${fadedTree})`,
backgroundRepeat: "no-repeat",
backgroundPosition: "50% 35%",
backgroundSize: "50%",
}}>
{/* <div style={{
fontSize: "larger",
}}>
{info.def}
</div>
{info.subDef &&
<div style={{ fontSize: "smaller", color: "grey" }}>
{info.subDef}
</div>
} */}
<div style={{
border: "2px solid black",
padding: "1rem",
margin: "0.25rem",
}} className="container">
<div className={rowClass + " align-items-center"}>
<div className={colClass}>
<i className="fas fa-video fa-lg" />
</div>
<div className={colClass}>
<div className="d-flex flex-row justify-content-center align-items-center">
<div>
<i className="fas fa-camera fa-lg mx-3" />
</div>
{hasPerfectiveSplit && <div>
<button
className="btn btn-sm btn-outline-secondary"
onClick={() => setSplit(!split)}
>
split
</button>
</div>}
</div>
</div>
</div>
<div className={rowClass}>
<div className={colClass}>
<div style={title}>
<div>Imperfective Stem</div>
</div>
<div style={indentR}>
<VerbInfoItemDisplay
item={pickPersInf(info.stem.imperfective, persInf)}
textOptions={textOptions}
tails
/>
</div>
</div>
<div className={colClass}>
<div style={title}>
<div>Perfective Stem</div>
</div>
<div style={indentR}>
<VerbInfoItemDisplay
item={pickPersInf(perfectiveStem, persInf)}
textOptions={textOptions}
tails
/>
</div>
</div>
</div>
<div className={rowClass}>
<div className={colClass}>
<div style={title}>
<div>Imperfective Root</div>
</div>
<div style={indentR}>
<VerbInfoItemDisplay
item={pickPersInf(info.root.imperfective, persInf)}
textOptions={textOptions}
/>
</div>
</div>
<div className={colClass}>
<div>
<div style={title}>
<div>Perfective Root</div>
</div>
<div style={indentR}>
<VerbInfoItemDisplay
item={pickPersInf(perfectiveRoot, persInf)}
textOptions={textOptions}
/>
</div>
</div>
</div>
</div>
<div className="text-center">
<div style={title}>Past Participle</div>
<VerbInfoItemDisplay
item={pickPersInf(info.participle.past, persInf)}
textOptions={textOptions}
/>
</div>
</div>
</div>
</div>
);
}
function VerbInfo({ info, textOptions, showingStemsAndRoots, toggleShowingSar }: {
info: T.NonComboVerbInfo,
textOptions: T.TextOptions,
showingStemsAndRoots: boolean,
toggleShowingSar: () => void,
}) {
const inf = noPersInfs(info.root.imperfective).long;
return (
<div className="my-3">
<VerbTypeInfo
info={info}
textOptions={textOptions}
/>
<Hider
showing={showingStemsAndRoots}
label={`🌳 Roots and Stems for ${inf.p}`}
handleChange={toggleShowingSar}
hLevel={4}
>
<RootsAndStems
textOptions={textOptions}
info={info}
/>
</Hider>
</div>
);
}
export default VerbInfo;

View File

@ -0,0 +1,81 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useEffect, useState } from "react";
import ButtonSelect from "../ButtonSelect";
import Pashto from "../Pashto";
import Phonetics from "../Phonetics";
import * as T from "../../types";
import { concatPsString } from "../../lib/p-text-helpers";
type InputItem = T.SingleOrLengthOpts<T.PsString | [T.PsString, T.PsString]>;
function VerbInfoItemDisplay({ item, textOptions, tails }: {
item: InputItem,
textOptions: T.TextOptions,
tails?: boolean,
}) {
const [length, setLength] = useState<T.Length>("long");
const getL = (x: InputItem): T.PsString | [T.PsString, T.PsString] => (
"long" in x
? x[length] || x.short
: x
);
useEffect(() => {
setLength((length === "mini" && !("mini" in item)) ? "short" : length);
}, [item]);
// const lengthsAvailable = "long" in item
// ? [...["long", "short"], ..."mini" in item ? ["mini"] : []]
// : [];
const text = getL(item);
function addTails(text: T.PsString): T.PsString {
return concatPsString(text, { p: "ـ", f: ""});
}
return <>
{Array.isArray(text) ?
<div>
<div className="text-center" dir="rtl">
<Pashto opts={textOptions}>{text[0]}</Pashto>
<span className="mx-1"> __ </span>
<Pashto opts={textOptions}>{tails ? addTails(text[1]) : text[1]}</Pashto>
</div>
<div className="text-center">
<Phonetics opts={textOptions}>{text[0]}</Phonetics>
<span className="mx-1"> __ </span>
<Phonetics opts={textOptions}>{tails ? addTails(text[1]) : text[1]}</Phonetics>
</div>
</div>
:
<div>
<div className="text-center">
<Pashto opts={textOptions}>{tails ? addTails(text) : text}</Pashto>
</div>
<div className="text-center">
<Phonetics opts={textOptions}>{tails ? addTails(text) : text}</Phonetics>
</div>
</div>
}
{"long" in item && <div className="mt-2 text-center">
<ButtonSelect
xSmall
options={[
{ label: "Long", value: "long" },
{ label: "Short", value: "short" },
..."mini" in item ? [{
label: "Mini", value: "mini",
}] : [],
]}
value={length}
handleChange={(p) => setLength(p as T.Length)}
/>
</div>}
</>;
}
export default VerbInfoItemDisplay;

View File

@ -0,0 +1,297 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { useState } from "react";
import InlinePs from "../InlinePs";
import Pashto from "../Pashto";
import Phonetics from "../Phonetics";
import {
makePsString
} from "../../lib/p-text-helpers";
import { Modal } from "react-bootstrap";
import stativeCompTrans from "./stative-compound-transitive.svg";
import stativeCompIntrans from "./stative-compound-intransitive.svg";
import dynamicCompTrans from "./dynamic-compound-transitive.svg";
import dynamicCompIntrans from "./dynamic-compound-intransitive.svg";
import generativeStatCompTrans from "./generative-stative-compound-transitive.svg";
import generativeStatCompIntrans from "./generative-stative-compound-intransitive.svg";
import intransitiveDiagram from "./intransitive.svg";
import transitiveDiagramPresent from "./transitive-present.svg";
import transitiveDiagramPast from "./transitive-past.svg";
import gramTransitiveDiagramPresent from "./grammatically-transitive-present.svg";
import gramTransitiveDiagramPast from "./grammatically-transitive-past.svg";
import * as T from "../../types";
function CompoundFormula({ a, b }: {
a: React.ReactNode,
b: React.ReactNode,
}) {
return (
<div className="row align-items-center mb-3">
<div className="col-5 text-center">
{a}
</div>
<div className="col-2 text-center" style={{ fontSize: "2.5rem" }}>
<strong>+</strong>
</div>
<div className="col-5 text-center">
{b}
</div>
</div>
);
}
function ExplanationImage({ src, alt }: {
src: any,
alt?: string,
}) {
return (
<img
src={src}
alt={alt}
className="mx-auto d-block mb-2"
style={{ maxWidth: "100%" }}
/>
);
}
const typeInfo = (
type: string,
opts: T.TextOptions,
) => {
return type === "simple"
? <>
<p>A <strong>simple verb</strong> is a verb that is just one piece. It can't be broken down into different words with different meanings, like compound verbs can.</p>
</>
: type === "stative compound"
? <>
<p>A <strong>stative compound</strong> talks about <strong>something changing from one state to another</strong>.</p>
<CompoundFormula
a={<>
<div style={{ fontSize: "larger" }}>
<strong>Complement</strong>
</div>
<div>Adjective, Noun, or Adverb</div>
</>}
b={<>
<div style={{ fontSize: "larger" }}>
<strong>Aux. Verb</strong>
</div>
<div>
<div className="small text-muted">With transitive:</div>
<div><InlinePs opts={opts}>{{ p: "کول", f: "kawul" }}</InlinePs> (to make)</div>
<div className="small text-muted">With intransitive:</div>
<div><InlinePs opts={opts}>{{ p: "کېدل", f: "kedul" }}</InlinePs> (to become)</div>
</div>
</>}
/>
<h4>Transitive stative compounds</h4>
<ExplanationImage src={stativeCompTrans} />
<h4>Intransitive stative compounds</h4>
<ExplanationImage src={stativeCompIntrans} />
<p>It's important to remember that the aux. verbs used for these compounds <InlinePs opts={opts}>{{ p: "کول", f: "kawul" }}</InlinePs> (to make) and <InlinePs opts={opts}>{{ p: "کېدل", f: "kedul" }}</InlinePs> (to become) will never, ever take a <InlinePs opts={opts}>{{ p: "و", f: "oo" }}</InlinePs> prefix. 🚫</p>
<h5>A couple of other notes:</h5>
<p>In the imperfective aspect, the complement and aux. verb are often fused together. For example: <InlinePs opts={opts}>{{ p: "پوخ", f: "pokh" }}</InlinePs> + <InlinePs opts={opts}>{{ p: "کول", f: "kawul" }}</InlinePs> = <InlinePs opts={opts}>{{ p: "بخول", f: "pakhawul" }}</InlinePs>. But they always stay broken apart in the perfective aspect.</p>
<p>When complements are nouns or adverbs, they act (and carry a meaning) almost as if they were adjectives.</p>
</>
: type === "dynamic compound"
? <>
<p>A <strong>dynamic compound</strong> talks about <strong>some action being done</strong>.</p>
<CompoundFormula
a={<>
<div style={{ fontSize: "larger" }}>
<strong>Complement</strong>
</div>
<div>Noun (action or activity)</div>
</>}
b={<>
<div style={{ fontSize: "larger" }}>
<strong>Aux. Verb</strong>
</div>
</>}
/>
<h4>Transitive Dynamic Compounds</h4>
<p>These talk about someone doing an action or activity.</p>
<ExplanationImage src={dynamicCompTrans} />
<p>There is a subject/agent doing the action, and <em>the action or activity is the object of the sentence</em>. It's important to remember that with these compounds, the object of the sentence is included inside the compound, and you can't have any other object in the sentence.</p>
<h4>Intransitive Dynamic Compounds</h4>
<p>These talk about an action or activity happening.</p>
<ExplanationImage src={dynamicCompIntrans} />
<p>Here the complement, the activity included in the compound, is the subject of the sentence.</p>
<h6>Other notes:</h6>
<p>Dynamic compounds made with <InlinePs opts={opts}>{{ p: "کول", f: "kawul" }}</InlinePs> (to do) will also have an intransitive version made with <InlinePs opts={opts}>{{ p: "کېدل", f: "kedul" }}</InlinePs> (to happen).</p>
<p>Dynamic compounds made with <InlinePs opts={opts}>{{ p: "کول", f: "kawul" }}</InlinePs> (to do) or <InlinePs opts={opts}>{{ p: "کېدل", f: "kedul" }}</InlinePs> (to happen) will <em>always</em> take a <InlinePs opts={opts}>{{ p: "و", f: "oo" }}</InlinePs> prefix in the perfective aspect.</p>
</>
: type === "generative stative compound"
? <>
<p><strong>Generative stative compounds</strong> are strange compounds that seem to behave like a cross between a stative compound and a dynamic compound.</p>
<ul>
<li>The object is included in the compound... like with dynamic compounds</li>
<li>But they also use <InlinePs opts={opts}>{{ p: "کول", f: "kawul" }}</InlinePs> (to make), the verb that never gets the <InlinePs opts={opts}>{{ p: "و", f: "oo" }}</InlinePs> prefix... like with stative compounds</li>
</ul>
<p>This may seem quite confusing at first.</p>
<p>We can think of these verbs as <strong>stative compounds</strong> but <strong>with an implied complement</strong> meaning something like "existing." So they talk about some thing being created or brought out into existence.</p>
<h4>Transitive Generative Stative Compounds</h4>
<ExplanationImage src={generativeStatCompTrans} />
<h4>Intransitive Generative Stative Compounds</h4>
<ExplanationImage src={generativeStatCompIntrans} />
</>
: null;
};
const transitivityInfo = (
type: string,
textOptions: T.TextOptions,
) => {
return type === "transitive"
? <>
<p><strong>Transitive</strong> verbs are <strong>verbs that take an object</strong>.</p>
<p>Transitive verbs are especially difficult because <strong>they work totally differently in the past tense</strong>. (They are ergative in the past tense only.) This takes a lot of hard work for the learner to get used to!</p>
<h4>In all non-past forms</h4>
<ul>
<li>The subject is not inflected</li>
<li>The object is not inflected, or it can alse be an enclitic (mini) pronoun (exception: the object is inflected when it's a 1st or 2nd person pronoun)</li>
<li>The verb agrees with the <strong>subject</strong></li>
</ul>
<ExplanationImage src={transitiveDiagramPresent} />
<h4>In the past tense</h4>
<ul>
<li>The subject is inflected, or it can be an enclitic (mini) pronoun</li>
<li>The object is not inflected</li>
<li>The verb agrees with the <strong>object</strong></li>
</ul>
<ExplanationImage src={transitiveDiagramPast} />
</>
: type === "intransitive"
? <>
<p><strong>Intransitive</strong> verbs are <strong>verbs that don't take an object</strong>. They only take a subject, which is a person or thing that experiences the action of the verb.</p>
<p>- The subject is always a <em>uninflected/plain</em> noun or pronoun.</p>
<p>- The verb always agrees with the subject.</p>
<ExplanationImage src={intransitiveDiagram} />
</>
: type === "grammatically transitive"
? <>
<p><strong>Gramatically transitive</strong> verbs are <strong>verbs that don't appear to have an object, but actually work as if they do</strong>!</p>
<p>These work just like transitive verbs, except that the object is an implied (unspoken) 3rd person masculine plural entity.</p>
<h4>In all non-past forms</h4>
<ExplanationImage src={gramTransitiveDiagramPresent} />
<h4>In the past tense</h4>
<ExplanationImage src={gramTransitiveDiagramPast} />
</>
: null;
}
function CompoundBreakdown({ info, textOptions }: {
info: T.NonComboVerbInfo,
textOptions: T.TextOptions,
}) {
const isComplement = ("complement" in info || "objComplement" in info);
if (!isComplement) {
return null;
}
const complement = ((): T.PsString => {
if ("objComplement" in info) {
return info.objComplement.plural
? info.objComplement.plural
: makePsString(info.objComplement.entry.p, info.objComplement.entry.f)
}
if ("complement" in info) {
return info.complement.masc[0][0];
}
else return makePsString("aa", "aa");
})();
const aux = ((): { ps: T.PsString, e: string } => {
if (info.type === "stative compound" || info.type === "generative stative compound") {
return info.transitivity === "transitive"
? { ps: { p: "کول", f: "kawul" }, e: "to make"}
: { ps: { p: "کېدل", f: "kedul" }, e: "to become"};
}
if (!("auxVerb" in info)) return { ps: {p: "", f: ""}, e: ""};
const kawulDyn = info.type === "dynamic compound" && info.auxVerb.p === "کول";
return {
ps: makePsString(info.auxVerb.p, info.auxVerb.f),
e: kawulDyn ? "to do" : "",
}
})();
return (
<div className="d-block mx-auto my-3" style={{ maxWidth: "400px" }}>
<CompoundFormula
a={<div className="compound-breakdown">
<div>
<Pashto opts={textOptions}>{complement}</Pashto>
</div>
<div>
<Phonetics opts={textOptions}>{complement}</Phonetics>
</div>
</div>}
b={<div className="compound-breakdown">
<div>
<Pashto opts={textOptions}>{aux.ps}</Pashto>
</div>
<div>
<Phonetics opts={textOptions}>{aux.ps}</Phonetics>
</div>
{aux.e && <div>{aux.e}</div>}
</div>}
/>
</div>
);
}
function VerbTypeInfo({ info, textOptions }: {
info: T.NonComboVerbInfo,
textOptions: T.TextOptions,
}) {
const [showingTypeModal, setShowingTypeModal] = useState<boolean>(false);
const [showingTransModal, setShowingTransModal] = useState<boolean>(false);
return (
<div>
<div className="text-center my-2">
This is a
<button
className="btn btn-light mx-2 my-1"
onClick={() => setShowingTypeModal(true)}
>
<strong>{info.type}</strong> <i className={`fa fa-question-circle`}></i>
</button>
verb and it's
<button
className="btn btn-light mx-2 my-1"
onClick={() => setShowingTransModal(true)}
>
<strong>{info.transitivity}</strong> <i className={`fa fa-question-circle`}></i>
</button>
</div>
<CompoundBreakdown info={info} textOptions={textOptions} />
<Modal show={showingTypeModal} onHide={() => setShowingTypeModal(false)}>
<Modal.Header closeButton>
<Modal.Title>About {info.type} verbs</Modal.Title>
</Modal.Header>
<Modal.Body>{typeInfo(info.type, textOptions)}</Modal.Body>
<Modal.Footer>
<button type="button" className="btn btn-primary clb" onClick={() => setShowingTypeModal(false)}>
Close
</button>
</Modal.Footer>
</Modal>
<Modal show={showingTransModal} onHide={() => setShowingTransModal(false)}>
<Modal.Header closeButton>
<Modal.Title>What does "{info.transitivity}" mean?</Modal.Title>
</Modal.Header>
<Modal.Body>{transitivityInfo(info.transitivity, textOptions)}</Modal.Body>
<Modal.Footer>
<button type="button" className="btn btn-primary clb" onClick={() => setShowingTransModal(false)}>
Close
</button>
</Modal.Footer>
</Modal>
</div>
);
}
export default VerbTypeInfo;

View File

@ -0,0 +1,324 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="297.34714"
height="165.47572"
viewBox="0 0 78.673093 43.78212"
version="1.1"
id="svg8"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="dynamic-compound-intransitive.svg">
<defs
id="defs2">
<rect
id="rect892"
height="29.132379"
width="41.694046"
y="54.62747"
x="96.452177" />
<rect
x="0.59185642"
y="111.02134"
width="117.06405"
height="47.573975"
id="rect977" />
<rect
x="94.136192"
y="43.13488"
width="37.685005"
height="23.786987"
id="rect971" />
<rect
id="rect5078"
height="23.20262"
width="28.145405"
y="66.437157"
x="2.3806393" />
<rect
x="59.391151"
y="69.861832"
width="27.796032"
height="20.045214"
id="rect2967" />
<rect
x="70.349205"
y="14.269771"
width="25.123337"
height="14.967094"
id="rect2961" />
<rect
x="24.646114"
y="17.477007"
width="30.468725"
height="12.294398"
id="rect2180" />
<rect
x="58.322075"
y="55.963818"
width="37.685001"
height="12.828937"
id="rect2174" />
<rect
x="1.6609344"
y="57.300163"
width="42.228584"
height="20.312485"
id="rect2168" />
<rect
x="-6.9490075"
y="37.952274"
width="39.823158"
height="16.036173"
id="rect962" />
<rect
x="11.759859"
y="56.126602"
width="37.417732"
height="23.519718"
id="rect894" />
<rect
x="75.102737"
y="14.432554"
width="47.841248"
height="13.363476"
id="rect886" />
<rect
x="35.279579"
y="23.252449"
width="34.210499"
height="13.363476"
id="rect880" />
<rect
x="59.868374"
y="102.89877"
width="88.733482"
height="34.477768"
id="rect855" />
<rect
x="52.652096"
y="99.691536"
width="92.475258"
height="33.94323"
id="rect849" />
<rect
x="52.715843"
y="47.507061"
width="67.822716"
height="20.112129"
id="rect843" />
<rect
x="47.625"
y="45.357143"
width="92.98214"
height="43.845238"
id="rect835" />
<rect
id="rect886-3"
height="38.060673"
width="54.312309"
y="14.432554"
x="75.102737" />
<rect
id="rect925"
height="13.363476"
width="47.841248"
y="14.432554"
x="75.102737" />
</defs>
<sodipodi:namedview
fit-margin-bottom="10"
fit-margin-right="10"
fit-margin-left="10"
fit-margin-top="10"
lock-margins="true"
units="px"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="165.53043"
inkscape:cy="24.157692"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
inkscape:window-width="1541"
inkscape:window-height="1030"
inkscape:window-x="2512"
inkscape:window-y="165"
inkscape:window-maximized="0"
showguides="false"
inkscape:snap-global="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-49.68001,-44.471228)"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
id="text833"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect835);fill:#000000;fill-opacity:1;stroke:none;" />
<path
d="M 52.715843,47.507061 H 125.31727 V 85.217514 H 52.715843 Z"
style="fill:#ffffff;stroke:#000000;stroke-width:0.78;stroke-miterlimit:4;stroke-dasharray:none"
id="rect839" />
<g
aria-label="+"
transform="translate(61.471991,43.252482)"
id="text2178"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect2180);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 29.514389,20.205069 v 2.878369 h 2.878368 v 0.878496 h -2.878368 v 2.878368 h -0.868162 v -2.878368 h -2.878368 v -0.878496 h 2.878368 v -2.878369 z"
id="path3000" />
</g>
<g
id="g1048"
transform="translate(0,0.87984573)">
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect2168);fill:#000000;fill-opacity:1;stroke:none"
id="text2166"
transform="matrix(0.74399477,0,0,0.74399477,53.91504,10.288093)"
aria-label="Subject">
<path
id="path2985"
d="M 7.3238752,59.202468 V 60.22049 Q 6.7295981,59.936271 6.2025002,59.796745 5.6754023,59.657219 5.1844777,59.657219 q -0.8526584,0 -1.3177448,0.330728 -0.4599188,0.330728 -0.4599188,0.940508 0,0.511595 0.30489,0.775144 0.3100576,0.258382 1.1678836,0.418578 l 0.6304505,0.129191 q 1.1678836,0.222208 1.7208197,0.785479 0.5581037,0.558104 0.5581037,1.498612 0,1.121375 -0.7544735,1.700149 -0.7493059,0.578774 -2.201409,0.578774 -0.5477684,0 -1.1678837,-0.124023 -0.6149475,-0.124023 -1.2764038,-0.366901 v -1.074867 q 0.6356181,0.356566 1.2453981,0.537433 0.6097799,0.180867 1.1988894,0.180867 0.8939994,0 1.3797563,-0.351398 0.485757,-0.351399 0.485757,-1.00252 0,-0.568439 -0.3513987,-0.888832 -0.346231,-0.320393 -1.1420455,-0.480589 L 4.5695301,63.119529 Q 3.4016465,62.886986 2.8797162,62.390894 2.3577859,61.894801 2.3577859,61.011137 q 0,-1.02319 0.7183001,-1.612299 0.7234677,-0.58911 1.9895363,-0.58911 0.5426008,0 1.1058721,0.09819 0.5632713,0.09819 1.1523808,0.294555 z" />
<path
id="path2987"
d="m 9.2772379,64.38043 v -3.503651 h 0.9508431 v 3.467478 q 0,0.821652 0.320393,1.235062 0.320393,0.408243 0.961179,0.408243 0.769976,0 1.214392,-0.490925 0.449583,-0.490924 0.449583,-1.338415 v -3.281443 h 0.950844 v 5.787742 h -0.950844 v -0.888832 q -0.346231,0.527098 -0.806149,0.785479 -0.454751,0.253214 -1.059364,0.253214 -0.997352,0 -1.5141144,-0.620115 Q 9.2772379,65.574152 9.2772379,64.38043 Z m 2.3926111,-3.643177 z" />
<path
id="path2989"
d="m 20.248109,63.775818 q 0,-1.049029 -0.43408,-1.643306 -0.428913,-0.599444 -1.183387,-0.599444 -0.754473,0 -1.188554,0.599444 -0.428913,0.594277 -0.428913,1.643306 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.183387,-0.594277 0.43408,-0.599445 0.43408,-1.648473 z m -3.234934,-2.020542 q 0.299722,-0.516763 0.754473,-0.764809 0.459919,-0.253214 1.095537,-0.253214 1.054196,0 1.710485,0.837156 0.661456,0.837155 0.661456,2.201409 0,1.364253 -0.661456,2.201409 -0.656289,0.837155 -1.710485,0.837155 -0.635618,0 -1.095537,-0.248046 -0.454751,-0.253214 -0.754473,-0.769976 v 0.868161 h -0.956011 v -8.040827 h 0.956011 z" />
<path
id="path2991"
d="m 22.811252,60.876779 h 0.950843 v 5.891095 q 0,1.105872 -0.423745,1.601964 -0.418578,0.496092 -1.353918,0.496092 h -0.361734 v -0.80615 h 0.253214 q 0.5426,0 0.73897,-0.253214 0.19637,-0.248046 0.19637,-1.038692 z m 0,-2.253085 h 0.950843 v 1.204057 h -0.950843 z" />
<path
id="path2993"
d="m 30.69705,63.532939 v 0.465087 h -4.371813 q 0.06201,0.981849 0.58911,1.498611 0.532265,0.511595 1.477941,0.511595 0.547768,0 1.059364,-0.134358 0.516762,-0.134358 1.02319,-0.403075 v 0.899167 q -0.511595,0.217041 -1.049029,0.330728 -0.537433,0.113688 -1.090369,0.113688 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.806149 -0.80615,-2.180738 0,-1.421097 0.764809,-2.253085 0.769976,-0.837156 2.072218,-0.837156 1.167884,0 1.844843,0.754474 0.682127,0.749305 0.682127,2.041212 z m -0.950844,-0.279052 q -0.01034,-0.780311 -0.439248,-1.245398 -0.423745,-0.465086 -1.126543,-0.465086 -0.795814,0 -1.276403,0.449583 -0.475422,0.449584 -0.547769,1.266069 z" />
<path
id="path2995"
d="m 36.422782,61.098987 v 0.888832 q -0.403075,-0.222208 -0.811318,-0.330728 -0.403075,-0.113688 -0.816485,-0.113688 -0.925005,0 -1.4366,0.589109 -0.511595,0.583942 -0.511595,1.643306 0,1.059363 0.511595,1.648473 0.511595,0.583941 1.4366,0.583941 0.41341,0 0.816485,-0.10852 0.408243,-0.113688 0.811318,-0.335896 v 0.878497 q -0.397908,0.186035 -0.826821,0.279052 -0.423745,0.09302 -0.904334,0.09302 -1.30741,0 -2.077386,-0.821653 -0.769977,-0.821652 -0.769977,-2.216911 0,-1.41593 0.775144,-2.227248 0.780312,-0.811317 2.13423,-0.811317 0.439249,0 0.857826,0.09302 0.418578,0.08785 0.811318,0.268717 z" />
<path
id="path2997"
d="m 39.027265,59.233474 v 1.643305 h 1.958531 v 0.738971 h -1.958531 v 3.141917 q 0,0.707965 0.191202,0.909502 0.19637,0.201537 0.790647,0.201537 h 0.976682 v 0.795815 h -0.976682 q -1.100704,0 -1.519282,-0.408243 -0.418578,-0.41341 -0.418578,-1.498611 V 61.61575 h -0.697629 v -0.738971 h 0.697629 v -1.643305 z" />
</g>
<g
aria-label="noun activity"
transform="translate(-3.4745038,-5.8986082)"
id="text2965"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect2967);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 68.787012,73.066094 v 2.095996 h -0.570508 v -2.077393 q 0,-0.492993 -0.192236,-0.737939 -0.192237,-0.244947 -0.576709,-0.244947 -0.461988,0 -0.728638,0.294556 -0.26665,0.294556 -0.26665,0.803052 v 1.962671 h -0.573609 v -3.472657 h 0.573609 v 0.539502 q 0.204638,-0.313159 0.48059,-0.468188 0.279053,-0.155029 0.641822,-0.155029 0.598413,0 0.905371,0.37207 0.306958,0.36897 0.306958,1.088306 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3025" />
<path
d="m 71.276782,72.089409 q -0.458886,0 -0.725537,0.359668 -0.26665,0.356567 -0.26665,0.979785 0,0.623218 0.26355,0.982886 0.26665,0.356567 0.728637,0.356567 0.455786,0 0.722437,-0.359668 0.26665,-0.359668 0.26665,-0.979785 0,-0.617016 -0.26665,-0.976684 -0.266651,-0.362769 -0.722437,-0.362769 z m 0,-0.483691 q 0.744141,0 1.168921,0.483691 0.42478,0.483691 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.42478,0.483692 -1.168921,0.483692 -0.747241,0 -1.172021,-0.483692 -0.42168,-0.486792 -0.42168,-1.339453 0,-0.855762 0.42168,-1.339453 0.42478,-0.483691 1.172021,-0.483691 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3027" />
<path
d="m 73.75415,73.791631 v -2.102198 h 0.570508 v 2.080494 q 0,0.492993 0.192236,0.74104 0.192237,0.244946 0.576709,0.244946 0.461988,0 0.728638,-0.294556 0.269751,-0.294555 0.269751,-0.803051 V 71.689433 H 76.6625 v 3.472657 h -0.570508 v -0.533301 q -0.207739,0.31626 -0.483692,0.471289 -0.272851,0.151929 -0.63562,0.151929 -0.598413,0 -0.908471,-0.372071 -0.310059,-0.37207 -0.310059,-1.088305 z m 1.435571,-2.185913 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3029" />
<path
d="m 80.730468,73.066094 v 2.095996 h -0.570507 v -2.077393 q 0,-0.492993 -0.192237,-0.737939 -0.192236,-0.244947 -0.576709,-0.244947 -0.461987,0 -0.728637,0.294556 -0.266651,0.294556 -0.266651,0.803052 v 1.962671 h -0.573608 v -3.472657 h 0.573608 v 0.539502 q 0.204639,-0.313159 0.480591,-0.468188 0.279053,-0.155029 0.641821,-0.155029 0.598413,0 0.905371,0.37207 0.306958,0.36897 0.306958,1.088306 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3031" />
<path
d="m 63.757861,80.718958 q -0.69143,0 -0.958081,0.15813 -0.26665,0.158129 -0.26665,0.539502 0,0.303857 0.198438,0.483691 0.201538,0.176733 0.545703,0.176733 0.474389,0 0.759643,-0.334863 0.288355,-0.337964 0.288355,-0.896069 v -0.127124 z m 1.137915,-0.235645 v 1.981275 h -0.570507 v -0.5271 q -0.195337,0.31626 -0.486792,0.468188 -0.291455,0.148829 -0.713135,0.148829 -0.533301,0 -0.849561,-0.297657 -0.313159,-0.300757 -0.313159,-0.803051 0,-0.586011 0.390674,-0.883667 0.393774,-0.297657 1.172022,-0.297657 h 0.799951 v -0.05581 q 0,-0.393775 -0.26045,-0.607715 -0.257348,-0.217041 -0.725537,-0.217041 -0.297656,0 -0.579809,0.07131 -0.282154,0.07131 -0.542603,0.213941 v -0.5271 q 0.313159,-0.120923 0.607715,-0.179834 0.294556,-0.06201 0.573609,-0.06201 0.753442,0 1.125512,0.390673 0.37207,0.390674 0.37207,1.184424 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3033" />
<path
d="m 68.573071,79.125257 v 0.5333 q -0.241845,-0.133325 -0.486792,-0.198437 -0.241845,-0.06821 -0.489892,-0.06821 -0.555005,0 -0.861963,0.353467 -0.306958,0.350366 -0.306958,0.985986 0,0.63562 0.306958,0.989087 0.306958,0.350366 0.861963,0.350366 0.248047,0 0.489892,-0.06511 0.244947,-0.06821 0.486792,-0.201538 v 0.527099 q -0.238745,0.111621 -0.496093,0.167432 -0.254248,0.05581 -0.542603,0.05581 -0.784448,0 -1.246435,-0.492994 -0.461988,-0.492993 -0.461988,-1.330151 0,-0.84956 0.465088,-1.336352 0.468189,-0.486792 1.280542,-0.486792 0.26355,0 0.514697,0.05581 0.251148,0.05271 0.486792,0.161231 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3035" />
<path
d="m 70.135767,78.005945 v 0.985986 h 1.175122 v 0.443384 h -1.175122 v 1.885156 q 0,0.424781 0.114722,0.545703 0.117822,0.120923 0.474389,0.120923 h 0.586011 v 0.477491 h -0.586011 q -0.660425,0 -0.911572,-0.244947 -0.251147,-0.248047 -0.251147,-0.89917 v -1.885156 h -0.41858 v -0.443384 h 0.41858 v -0.985986 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3037" />
<path
d="m 72.064332,78.991931 h 0.570507 v 3.472657 h -0.570507 z m 0,-1.351855 h 0.570507 v 0.722436 h -0.570507 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3039" />
<path
d="m 73.416187,78.991931 h 0.604614 l 1.085205,2.914551 1.085205,-2.914551 h 0.604614 l -1.302246,3.472657 h -0.775146 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3041" />
<path
d="m 77.583374,78.991931 h 0.570507 v 3.472657 h -0.570507 z m 0,-1.351855 h 0.570507 v 0.722436 h -0.570507 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3043" />
<path
d="m 79.908814,78.005945 v 0.985986 h 1.175122 v 0.443384 h -1.175122 v 1.885156 q 0,0.424781 0.114722,0.545703 0.117822,0.120923 0.47439,0.120923 h 0.58601 v 0.477491 h -0.58601 q -0.660425,0 -0.911573,-0.244947 -0.251147,-0.248047 -0.251147,-0.89917 v -1.885156 h -0.418579 v -0.443384 h 0.418579 v -0.985986 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3045" />
<path
d="m 83.282251,82.787048 q -0.241846,0.620118 -0.471289,0.809253 -0.229443,0.189136 -0.613916,0.189136 H 81.74126 v -0.47749 h 0.334863 q 0.235645,0 0.365869,-0.111621 0.130225,-0.111621 0.288355,-0.5271 l 0.102319,-0.260449 -1.404565,-3.416846 h 0.604614 l 1.085205,2.716114 1.085205,-2.716114 h 0.604614 z"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
id="path3047" />
</g>
</g>
<text
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect5078);fill:#000000;fill-opacity:1;stroke:none;"
id="text5076"
xml:space="preserve" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect892);fill:#000000;fill-opacity:1;stroke:none"
id="text890"
transform="translate(-7.4835468,-1.3363476)"
aria-label="aux.
verb">
<path
id="path913"
style="text-align:center;text-anchor:middle"
d="m 109.50702,61.081319 q -1.15238,0 -1.59679,0.263549 -0.44442,0.263549 -0.44442,0.899167 0,0.506427 0.33073,0.80615 0.33589,0.294554 0.9095,0.294554 0.79065,0 1.26607,-0.558103 0.48059,-0.563272 0.48059,-1.493444 v -0.211873 z m 1.89652,-0.39274 v 3.302114 h -0.95084 v -0.878497 q -0.32556,0.527098 -0.81132,0.780312 -0.48576,0.248046 -1.18855,0.248046 -0.88883,0 -1.41593,-0.496092 -0.52193,-0.50126 -0.52193,-1.338415 0,-0.976682 0.65112,-1.472774 0.65629,-0.496092 1.95336,-0.496092 h 1.33325 v -0.09302 q 0,-0.656288 -0.43408,-1.012854 -0.42891,-0.361734 -1.20923,-0.361734 -0.49609,0 -0.96634,0.118855 -0.47026,0.118856 -0.90434,0.356566 V 58.4665 q 0.52193,-0.201538 1.01286,-0.299723 0.49092,-0.103352 0.95601,-0.103352 1.25573,0 1.87585,0.651121 0.62011,0.651121 0.62011,1.974033 z" />
<path
id="path915"
style="text-align:center;text-anchor:middle"
d="m 113.26906,61.706602 v -3.503651 h 0.95084 v 3.467477 q 0,0.821653 0.32039,1.235063 0.32039,0.408243 0.96118,0.408243 0.76998,0 1.21439,-0.490925 0.44959,-0.490924 0.44959,-1.338415 v -3.281443 h 0.95084 v 5.787742 h -0.95084 v -0.888832 q -0.34623,0.527098 -0.80615,0.785479 -0.45475,0.253214 -1.05937,0.253214 -0.99735,0 -1.51411,-0.620115 -0.51676,-0.620115 -0.51676,-1.813837 z m 2.39261,-3.643177 z" />
<path
id="path917"
style="text-align:center;text-anchor:middle"
d="m 124.89622,58.202951 -2.09289,2.816356 2.20141,2.971386 h -1.12138 l -1.68465,-2.273756 -1.68464,2.273756 h -1.12138 l 2.24792,-3.028229 -2.05671,-2.759513 h 1.12137 l 1.53479,2.061883 1.53478,-2.061883 z" />
<path
id="path919"
style="text-align:center;text-anchor:middle"
d="m 126.48268,62.678116 h 1.09037 v 1.312577 h -1.09037 z" />
<path
id="path921"
style="text-align:center;text-anchor:middle"
d="m 105.68815,71.432077 h 1.00768 l 1.80867,4.857569 1.80867,-4.857569 h 1.00769 l -2.1704,5.787742 h -1.29191 z" />
<path
id="path923"
style="text-align:center;text-anchor:middle"
d="m 117.58402,74.088237 v 0.465086 h -4.37181 q 0.062,0.981849 0.58911,1.498612 0.53227,0.511595 1.47794,0.511595 0.54777,0 1.05937,-0.134358 0.51676,-0.134358 1.02319,-0.403075 v 0.899167 q -0.5116,0.21704 -1.04903,0.330728 -0.53744,0.113688 -1.09037,0.113688 -1.38493,0 -2.19624,-0.80615 -0.80615,-0.80615 -0.80615,-2.180738 0,-1.421098 0.76481,-2.253086 0.76997,-0.837155 2.07221,-0.837155 1.16789,0 1.84485,0.754473 0.68212,0.749306 0.68212,2.041213 z m -0.95084,-0.279052 q -0.0103,-0.780311 -0.43925,-1.245398 -0.42374,-0.465086 -1.12654,-0.465086 -0.79581,0 -1.2764,0.449583 -0.47543,0.449584 -0.54777,1.266069 z" />
<path
id="path925"
style="text-align:center;text-anchor:middle"
d="m 122.49844,72.320909 q -0.1602,-0.09302 -0.3514,-0.134359 -0.18604,-0.04651 -0.41341,-0.04651 -0.80615,0 -1.24023,0.527098 -0.42891,0.52193 -0.42891,1.503779 v 3.0489 h -0.95602 v -5.787742 h 0.95602 v 0.899167 q 0.29972,-0.527098 0.78031,-0.780312 0.48059,-0.258381 1.16788,-0.258381 0.0982,0 0.21704,0.0155 0.11886,0.01033 0.26355,0.03617 z" />
<path
id="path927"
style="text-align:center;text-anchor:middle"
d="m 127.6609,74.331115 q 0,-1.049028 -0.43408,-1.643305 -0.42892,-0.599445 -1.18339,-0.599445 -0.75447,0 -1.18855,0.599445 -0.42892,0.594277 -0.42892,1.643305 0,1.049029 0.42892,1.648473 0.43408,0.594277 1.18855,0.594277 0.75447,0 1.18339,-0.594277 0.43408,-0.599444 0.43408,-1.648473 z m -3.23494,-2.020542 q 0.29972,-0.516762 0.75448,-0.764808 0.45991,-0.253214 1.09553,-0.253214 1.0542,0 1.71049,0.837155 0.66145,0.837156 0.66145,2.201409 0,1.364254 -0.66145,2.201409 -0.65629,0.837156 -1.71049,0.837156 -0.63562,0 -1.09553,-0.248046 -0.45476,-0.253214 -0.75448,-0.769976 v 0.868161 h -0.95601 v -8.040827 h 0.95601 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 55 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,639 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="generative-stative-compound-intransitive.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 183.52051 59.552219"
height="59.552219mm"
width="183.52051mm">
<defs
id="defs2">
<rect
x="154.42224"
y="22.091473"
width="121.33036"
height="77.67411"
id="rect1091" />
<rect
x="22.192841"
y="58.108963"
width="54.389351"
height="16.570711"
id="rect1013" />
<rect
id="rect1861"
height="29.534964"
width="51.949112"
y="14.93006"
x="13.418155" />
<rect
id="rect1855"
height="27.025297"
width="24.568453"
y="60.098213"
x="105.64435" />
<rect
id="rect1025"
height="15.308036"
width="48.947918"
y="62.177082"
x="137.77232" />
<rect
id="rect962"
height="16.036173"
width="39.823158"
y="37.952274"
x="-6.9490075" />
<rect
id="rect894"
height="23.519718"
width="37.417732"
y="56.126602"
x="11.759859" />
<rect
id="rect886"
height="13.363476"
width="47.841248"
y="14.432554"
x="75.102737" />
<rect
id="rect880"
height="13.363476"
width="34.210499"
y="23.252449"
x="35.279579" />
<rect
id="rect855"
height="34.477768"
width="88.733482"
y="102.89877"
x="59.868374" />
<rect
id="rect849"
height="33.94323"
width="92.475258"
y="99.691536"
x="52.652096" />
<rect
id="rect843"
height="20.112129"
width="67.822716"
y="47.507061"
x="52.715843" />
<rect
id="rect835"
height="43.845238"
width="92.98214"
y="45.357143"
x="47.625" />
<rect
x="75.102737"
y="14.432554"
width="54.312309"
height="38.060673"
id="rect886-3" />
<rect
x="75.102737"
y="14.432554"
width="47.841248"
height="13.363476"
id="rect925" />
<rect
x="11.759859"
y="56.126602"
width="37.417732"
height="23.519718"
id="rect894-9" />
<rect
x="11.759859"
y="56.126602"
width="37.417732"
height="23.519718"
id="rect1002" />
</defs>
<sodipodi:namedview
fit-margin-left="5"
fit-margin-bottom="10"
fit-margin-right="5"
fit-margin-top="10"
inkscape:window-maximized="1"
inkscape:window-y="-9"
inkscape:window-x="1911"
inkscape:window-height="1361"
inkscape:window-width="2560"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="278.38405"
inkscape:cx="503.34881"
inkscape:zoom="1.4"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:snap-bbox="true"
inkscape:snap-global="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(1.5880211,-41.935222)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g1172">
<g
transform="translate(114.04453,0.80182124)"
id="g994-1">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-81" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-57" />
</g>
<g
transform="translate(130.0807,0.80182124)"
id="g994-3">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-5" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-7" />
</g>
<g
transform="translate(145.8496,0.80182124)"
id="g994-8">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-2" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-8" />
</g>
<g
id="g994-1-0"
transform="translate(-9.7012598,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-81-0" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-57-5" />
</g>
<g
id="g994-3-9"
transform="translate(6.3349112,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-5-3" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-7-3" />
</g>
<g
id="g994-8-7"
transform="translate(22.103811,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-2-1" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-8-6" />
</g>
<g
id="g994-80-3"
transform="translate(39.47633,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-9-8" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-1-0" />
</g>
<path
id="path1132"
d="M 9.3549106,79.280506 H 164.83968"
style="fill:none;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.9769335,89.769346 H 164.99624"
id="path1132-5"
sodipodi:nodetypes="cc" />
</g>
<text
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect835);fill:#000000;fill-opacity:1;stroke:none;"
id="text833"
xml:space="preserve" />
<path
d="M 3.8019789,53.38699 H 119.30371 V 91.097443 H 3.8019789 Z"
style="fill:#ffffff;stroke:#000000;stroke-width:0.78;stroke-miterlimit:4;stroke-dasharray:none"
id="rect839"
sodipodi:nodetypes="ccccc" />
<path
id="path890-6-2"
d="m 123.65189,59.410552 8.42708,0.45043 0.13076,2.787304 4.14686,-4.474386 -4.86402,-5.89691 -0.19328,2.981903 -7.51927,0.327088 z"
style="fill:#b3b3b3;stroke:#b3b3b3;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1025);fill:#000000;fill-opacity:1;stroke:none;"
id="text1023"
xml:space="preserve" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.75;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="text1031"
aria-label="changed subject"
transform="translate(-3.4017857,0.1889881)">
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1091);fill:#000000;fill-opacity:1;stroke:none"
id="text1089"
transform="translate(-56.129465,34.206845)"
aria-label="subject
brought into
existence">
<path
id="path1835"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 205.41652,23.883937 v 0.599447 q -0.26871,-0.137804 -0.5581,-0.206706 -0.28939,-0.0689 -0.59945,-0.0689 -0.47198,0 -0.70969,0.144694 -0.23426,0.144694 -0.23426,0.434082 0,0.220486 0.1688,0.347955 0.16881,0.124024 0.67869,0.237712 l 0.21704,0.04823 q 0.67524,0.144694 0.95774,0.409967 0.28594,0.261827 0.28594,0.733806 0,0.537435 -0.42719,0.850939 -0.42375,0.313504 -1.16789,0.313504 -0.31006,0 -0.64768,-0.06201 -0.33417,-0.05857 -0.70624,-0.179145 V 26.83294 q 0.3514,0.18259 0.69246,0.275608 0.34107,0.08957 0.67524,0.08957 0.44786,0 0.68902,-0.151585 0.24116,-0.155029 0.24116,-0.434082 0,-0.258382 -0.1757,-0.396186 -0.17226,-0.137804 -0.76137,-0.265273 l -0.22049,-0.05168 q -0.58911,-0.124024 -0.85093,-0.378961 -0.26183,-0.258382 -0.26183,-0.706245 0,-0.544326 0.38585,-0.840604 0.38585,-0.296278 1.09554,-0.296278 0.3514,0 0.66146,0.05168 0.31006,0.05168 0.57188,0.15503 z" />
<path
id="path1837"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 206.57063,26.106025 v -2.335777 h 0.6339 v 2.311661 q 0,0.54777 0.2136,0.823378 0.21359,0.272163 0.64078,0.272163 0.51332,0 0.8096,-0.327284 0.29973,-0.327285 0.29973,-0.892281 v -2.187637 h 0.63389 v 3.85851 h -0.63389 v -0.592557 q -0.23083,0.3514 -0.53744,0.523655 -0.30317,0.16881 -0.70624,0.16881 -0.66491,0 -1.00942,-0.413412 -0.34451,-0.413412 -0.34451,-1.209229 z m 1.59508,-2.428794 z" />
<path
id="path1839"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 213.88457,25.702948 q 0,-0.699355 -0.28938,-1.095541 -0.28595,-0.399631 -0.78893,-0.399631 -0.50298,0 -0.79237,0.399631 -0.28595,0.396186 -0.28595,1.095541 0,0.699355 0.28595,1.098986 0.28939,0.396187 0.79237,0.396187 0.50298,0 0.78893,-0.396187 0.28938,-0.399631 0.28938,-1.098986 z m -2.15663,-1.347033 q 0.19982,-0.34451 0.50299,-0.509875 0.30661,-0.168809 0.73036,-0.168809 0.7028,0 1.14033,0.558106 0.44097,0.558105 0.44097,1.467611 0,0.909506 -0.44097,1.467612 -0.43753,0.558106 -1.14033,0.558106 -0.42375,0 -0.73036,-0.165365 -0.30317,-0.16881 -0.50299,-0.51332 v 0.578777 h -0.63734 v -5.360572 h 0.63734 z" />
<path
id="path1841"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 215.59334,23.770248 h 0.6339 v 3.927412 q 0,0.737251 -0.2825,1.06798 -0.27905,0.330729 -0.90261,0.330729 h -0.24116 v -0.537435 h 0.16881 q 0.36174,0 0.49265,-0.16881 0.13091,-0.165364 0.13091,-0.692464 z m 0,-1.502062 h 0.6339 v 0.802707 h -0.6339 z" />
<path
id="path1843"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 220.85056,25.541029 v 0.310058 h -2.91455 q 0.0413,0.654569 0.39274,0.999079 0.35485,0.341064 0.9853,0.341064 0.36518,0 0.70624,-0.08957 0.34451,-0.08957 0.68213,-0.268718 v 0.599447 q -0.34106,0.144694 -0.69935,0.220486 -0.35829,0.07579 -0.72692,0.07579 -0.92328,0 -1.46416,-0.537436 -0.53744,-0.537435 -0.53744,-1.453831 0,-0.947402 0.50988,-1.502062 0.51332,-0.558106 1.38148,-0.558106 0.77859,0 1.2299,0.502984 0.45475,0.499539 0.45475,1.360814 z m -0.6339,-0.186036 q -0.007,-0.520209 -0.29283,-0.830268 -0.2825,-0.310059 -0.75103,-0.310059 -0.53054,0 -0.85094,0.299723 -0.31695,0.299724 -0.36518,0.844049 z" />
<path
id="path1845"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 224.66773,23.918388 v 0.592556 q -0.26872,-0.148139 -0.54088,-0.220486 -0.26872,-0.07579 -0.54432,-0.07579 -0.61668,0 -0.95774,0.392741 -0.34107,0.389296 -0.34107,1.095541 0,0.706245 0.34107,1.098986 0.34106,0.389296 0.95774,0.389296 0.2756,0 0.54432,-0.07235 0.27216,-0.07579 0.54088,-0.223931 v 0.585667 q -0.26527,0.124023 -0.55121,0.186035 -0.2825,0.06201 -0.6029,0.06201 -0.87161,0 -1.38493,-0.547771 -0.51332,-0.54777 -0.51332,-1.477947 0,-0.943957 0.51677,-1.484837 0.52021,-0.54088 1.42282,-0.54088 0.29284,0 0.57189,0.06201 0.27905,0.05857 0.54088,0.179146 z" />
<path
id="path1847"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 226.40406,22.674707 v 1.095541 h 1.30569 v 0.492649 h -1.30569 v 2.09462 q 0,0.471978 0.12747,0.606337 0.13091,0.134359 0.5271,0.134359 h 0.65112 v 0.530545 h -0.65112 q -0.73381,0 -1.01286,-0.272163 -0.27905,-0.275608 -0.27905,-0.999078 v -2.09462 h -0.46509 v -0.492649 h 0.46509 v -1.095541 z" />
<path
id="path1849"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 196.76244,33.111285 q 0,-0.699355 -0.28939,-1.095541 -0.28594,-0.399632 -0.78893,-0.399632 -0.50298,0 -0.79237,0.399632 -0.28594,0.396186 -0.28594,1.095541 0,0.699355 0.28594,1.098986 0.28939,0.396186 0.79237,0.396186 0.50299,0 0.78893,-0.396186 0.28939,-0.399631 0.28939,-1.098986 z m -2.15663,-1.347033 q 0.19981,-0.34451 0.50298,-0.509875 0.30662,-0.16881 0.73036,-0.16881 0.7028,0 1.14033,0.558106 0.44097,0.558106 0.44097,1.467612 0,0.909506 -0.44097,1.467611 -0.43753,0.558106 -1.14033,0.558106 -0.42374,0 -0.73036,-0.165364 -0.30317,-0.16881 -0.50298,-0.51332 v 0.578776 h -0.63734 v -5.360572 h 0.63734 z" />
<path
id="path1851"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 200.70708,31.771142 q -0.1068,-0.06201 -0.23427,-0.08957 -0.12402,-0.03101 -0.27561,-0.03101 -0.53743,0 -0.82682,0.3514 -0.28594,0.347955 -0.28594,1.002524 v 2.032607 h -0.63735 v -3.858509 h 0.63735 v 0.599447 q 0.19981,-0.3514 0.52021,-0.52021 0.32039,-0.172255 0.77859,-0.172255 0.0654,0 0.14469,0.01034 0.0792,0.0069 0.1757,0.02412 z" />
<path
id="path1853"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 202.72246,31.623003 q -0.50988,0 -0.80615,0.399631 -0.29628,0.396186 -0.29628,1.088651 0,0.692464 0.29283,1.092096 0.29628,0.396186 0.8096,0.396186 0.50643,0 0.80271,-0.399631 0.29627,-0.399632 0.29627,-1.088651 0,-0.685575 -0.29627,-1.085206 -0.29628,-0.403076 -0.80271,-0.403076 z m 0,-0.537436 q 0.82682,0 1.2988,0.537436 0.47198,0.537435 0.47198,1.488282 0,0.947402 -0.47198,1.488282 -0.47198,0.537435 -1.2988,0.537435 -0.83027,0 -1.30225,-0.537435 -0.46853,-0.54088 -0.46853,-1.488282 0,-0.950847 0.46853,-1.488282 0.47198,-0.537436 1.30225,-0.537436 z" />
<path
id="path1855"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 205.47509,33.514361 v -2.335776 h 0.6339 v 2.311661 q 0,0.54777 0.2136,0.823378 0.21359,0.272163 0.64078,0.272163 0.51332,0 0.8096,-0.327285 0.29973,-0.327284 0.29973,-0.89228 v -2.187637 h 0.63389 v 3.858509 h -0.63389 v -0.592556 q -0.23083,0.3514 -0.53744,0.523654 -0.30317,0.16881 -0.70624,0.16881 -0.66491,0 -1.00942,-0.413412 -0.34451,-0.413411 -0.34451,-1.209229 z m 1.59508,-2.428794 z" />
<path
id="path1857"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 212.55821,33.063053 q 0,-0.689019 -0.28594,-1.06798 -0.2825,-0.378961 -0.79582,-0.378961 -0.50987,0 -0.79581,0.378961 -0.2825,0.378961 -0.2825,1.06798 0,0.685575 0.2825,1.064536 0.28594,0.37896 0.79581,0.37896 0.51332,0 0.79582,-0.37896 0.28594,-0.378961 0.28594,-1.064536 z m 0.6339,1.495173 q 0,0.985298 -0.43753,1.464166 -0.43752,0.482314 -1.34014,0.482314 -0.33417,0 -0.63045,-0.05168 -0.29628,-0.04823 -0.57533,-0.151585 v -0.616672 q 0.27905,0.151584 0.55121,0.223931 0.27217,0.07235 0.55466,0.07235 0.62357,0 0.93363,-0.327284 0.31005,-0.323839 0.31005,-0.981853 V 34.35841 q -0.19637,0.341065 -0.50298,0.509875 -0.30661,0.168809 -0.73381,0.168809 -0.70969,0 -1.14377,-0.54088 -0.43408,-0.54088 -0.43408,-1.433161 0,-0.895725 0.43408,-1.436605 0.43408,-0.540881 1.14377,-0.540881 0.4272,0 0.73381,0.16881 0.30661,0.16881 0.50298,0.509875 v -0.585667 h 0.6339 z" />
<path
id="path1859"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 217.70519,32.708208 v 2.328886 h -0.6339 v -2.308215 q 0,-0.547771 -0.21359,-0.819933 -0.2136,-0.272163 -0.64079,-0.272163 -0.51332,0 -0.8096,0.327284 -0.29628,0.327285 -0.29628,0.892281 v 2.180746 h -0.63734 v -5.360572 h 0.63734 v 2.10151 q 0.22738,-0.347955 0.53399,-0.52021 0.31006,-0.172255 0.71314,-0.172255 0.6649,0 1.00596,0.413412 0.34107,0.409967 0.34107,1.209229 z" />
<path
id="path1861"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 219.60344,30.083044 v 1.095541 h 1.30569 v 0.492649 h -1.30569 v 2.094619 q 0,0.471979 0.12747,0.606338 0.13091,0.134358 0.5271,0.134358 h 0.65112 v 0.530545 h -0.65112 q -0.73381,0 -1.01286,-0.272162 -0.27906,-0.275608 -0.27906,-0.999079 v -2.094619 h -0.46508 v -0.492649 h 0.46508 v -1.095541 z" />
<path
id="path1863"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 223.99249,31.178585 h 0.6339 v 3.858509 h -0.6339 z m 0,-1.502063 h 0.6339 v 0.802708 h -0.6339 z" />
<path
id="path1865"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 229.15669,32.708208 v 2.328886 h -0.63389 v -2.308215 q 0,-0.547771 -0.2136,-0.819933 -0.2136,-0.272163 -0.64079,-0.272163 -0.51332,0 -0.8096,0.327284 -0.29627,0.327285 -0.29627,0.892281 v 2.180746 h -0.63735 v -3.858509 h 0.63735 v 0.599447 q 0.22737,-0.347955 0.53399,-0.52021 0.31006,-0.172255 0.71313,-0.172255 0.66491,0 1.00597,0.413412 0.34106,0.409967 0.34106,1.209229 z" />
<path
id="path1867"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 231.05494,30.083044 v 1.095541 h 1.3057 v 0.492649 h -1.3057 v 2.094619 q 0,0.471979 0.12747,0.606338 0.13092,0.134358 0.5271,0.134358 h 0.65113 v 0.530545 h -0.65113 q -0.7338,0 -1.01286,-0.272162 -0.27905,-0.275608 -0.27905,-0.999079 v -2.094619 h -0.46509 v -0.492649 h 0.46509 v -1.095541 z" />
<path
id="path1869"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 234.69296,31.623003 q -0.50987,0 -0.80615,0.399631 -0.29628,0.396186 -0.29628,1.088651 0,0.692464 0.29284,1.092096 0.29628,0.396186 0.80959,0.396186 0.50643,0 0.80271,-0.399631 0.29628,-0.399632 0.29628,-1.088651 0,-0.685575 -0.29628,-1.085206 -0.29628,-0.403076 -0.80271,-0.403076 z m 0,-0.537436 q 0.82683,0 1.29881,0.537436 0.47198,0.537435 0.47198,1.488282 0,0.947402 -0.47198,1.488282 -0.47198,0.537435 -1.29881,0.537435 -0.83026,0 -1.30224,-0.537435 -0.46854,-0.54088 -0.46854,-1.488282 0,-0.950847 0.46854,-1.488282 0.47198,-0.537436 1.30224,-0.537436 z" />
<path
id="path1871"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 202.1299,40.357702 v 0.310059 h -2.91455 q 0.0413,0.654568 0.39274,0.999078 0.35485,0.341065 0.9853,0.341065 0.36518,0 0.70624,-0.08957 0.34451,-0.08957 0.68213,-0.268718 v 0.599447 q -0.34106,0.144695 -0.69935,0.220487 -0.35829,0.07579 -0.72692,0.07579 -0.92328,0 -1.46416,-0.537435 -0.53744,-0.537436 -0.53744,-1.453832 0,-0.947401 0.50987,-1.502062 0.51332,-0.558106 1.38149,-0.558106 0.77859,0 1.2299,0.502984 0.45475,0.499539 0.45475,1.360814 z m -0.6339,-0.186035 q -0.007,-0.52021 -0.29283,-0.830269 -0.2825,-0.310059 -0.75103,-0.310059 -0.53055,0 -0.85094,0.299724 -0.31695,0.299723 -0.36518,0.844049 z" />
<path
id="path1873"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 206.25368,38.586922 -1.39526,1.877578 1.46761,1.980931 h -0.74759 l -1.1231,-1.515843 -1.1231,1.515843 h -0.74759 l 1.49862,-2.018827 -1.37115,-1.839682 h 0.74759 l 1.02319,1.374594 1.0232,-1.374594 z" />
<path
id="path1875"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 207.22176,38.586922 h 0.63389 v 3.858509 h -0.63389 z m 0,-1.502063 h 0.63389 v 0.802708 h -0.63389 z" />
<path
id="path1877"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 211.63837,38.70061 v 0.599447 q -0.26872,-0.137804 -0.5581,-0.206706 -0.28939,-0.0689 -0.59945,-0.0689 -0.47198,0 -0.70969,0.144694 -0.23427,0.144694 -0.23427,0.434082 0,0.220487 0.16881,0.347955 0.16881,0.124024 0.67869,0.237712 l 0.21704,0.04823 q 0.67524,0.144694 0.95773,0.409967 0.28595,0.261827 0.28595,0.733806 0,0.537435 -0.4272,0.850939 -0.42374,0.313504 -1.16788,0.313504 -0.31006,0 -0.64768,-0.06201 -0.33418,-0.05857 -0.70625,-0.179145 v -0.654569 q 0.3514,0.182591 0.69247,0.275608 0.34106,0.08957 0.67524,0.08957 0.44786,0 0.68902,-0.151584 0.24115,-0.15503 0.24115,-0.434083 0,-0.258382 -0.1757,-0.396186 -0.17225,-0.137804 -0.76136,-0.265273 l -0.22049,-0.05168 q -0.58911,-0.124024 -0.85094,-0.378961 -0.26183,-0.258382 -0.26183,-0.706245 0,-0.544325 0.38586,-0.840604 0.38585,-0.296278 1.09554,-0.296278 0.3514,0 0.66145,0.05168 0.31006,0.05168 0.57189,0.15503 z" />
<path
id="path1879"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 213.48494,37.491381 v 1.095541 h 1.3057 v 0.492649 h -1.3057 v 2.094619 q 0,0.471978 0.12747,0.606337 0.13092,0.134359 0.5271,0.134359 h 0.65113 v 0.530545 h -0.65113 q -0.7338,0 -1.01286,-0.272163 -0.27905,-0.275608 -0.27905,-0.999078 v -2.094619 h -0.46509 v -0.492649 h 0.46509 v -1.095541 z" />
<path
id="path1881"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 218.9282,40.357702 v 0.310059 h -2.91456 q 0.0413,0.654568 0.39275,0.999078 0.35484,0.341065 0.98529,0.341065 0.36518,0 0.70625,-0.08957 0.34451,-0.08957 0.68213,-0.268718 v 0.599447 q -0.34107,0.144695 -0.69936,0.220487 -0.35829,0.07579 -0.72691,0.07579 -0.92329,0 -1.46417,-0.537435 -0.53743,-0.537436 -0.53743,-1.453832 0,-0.947401 0.50987,-1.502062 0.51332,-0.558106 1.38148,-0.558106 0.7786,0 1.2299,0.502984 0.45476,0.499539 0.45476,1.360814 z m -0.6339,-0.186035 q -0.007,-0.52021 -0.29283,-0.830269 -0.2825,-0.310059 -0.75104,-0.310059 -0.53054,0 -0.85093,0.299724 -0.31695,0.299723 -0.36518,0.844049 z" />
<path
id="path1883"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 223.176,40.116545 v 2.328886 h -0.63389 v -2.308215 q 0,-0.547771 -0.2136,-0.819934 -0.2136,-0.272162 -0.64079,-0.272162 -0.51332,0 -0.8096,0.327284 -0.29627,0.327284 -0.29627,0.89228 v 2.180747 h -0.63735 v -3.858509 h 0.63735 v 0.599447 q 0.22737,-0.347955 0.53399,-0.52021 0.31005,-0.172255 0.71313,-0.172255 0.6649,0 1.00597,0.413412 0.34106,0.409966 0.34106,1.209229 z" />
<path
id="path1885"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 227.22399,38.735061 v 0.592557 q -0.26871,-0.14814 -0.54088,-0.220487 -0.26871,-0.07579 -0.54432,-0.07579 -0.61668,0 -0.95774,0.392741 -0.34106,0.389296 -0.34106,1.095541 0,0.706245 0.34106,1.098987 0.34106,0.389296 0.95774,0.389296 0.27561,0 0.54432,-0.07235 0.27217,-0.07579 0.54088,-0.223932 v 0.585667 q -0.26527,0.124023 -0.55121,0.186035 -0.2825,0.06201 -0.60289,0.06201 -0.87161,0 -1.38493,-0.547771 -0.51332,-0.54777 -0.51332,-1.477947 0,-0.943956 0.51676,-1.484837 0.52021,-0.54088 1.42283,-0.54088 0.29283,0 0.57188,0.06201 0.27906,0.05857 0.54088,0.179145 z" />
<path
id="path1887"
style="font-size:7.05556px;line-height:1.05;text-align:center;text-anchor:middle;fill:#666666"
d="m 231.63372,40.357702 v 0.310059 h -2.91455 q 0.0413,0.654568 0.39274,0.999078 0.35484,0.341065 0.98529,0.341065 0.36518,0 0.70625,-0.08957 0.34451,-0.08957 0.68213,-0.268718 v 0.599447 q -0.34107,0.144695 -0.69936,0.220487 -0.35829,0.07579 -0.72691,0.07579 -0.92329,0 -1.46417,-0.537435 -0.53743,-0.537436 -0.53743,-1.453832 0,-0.947401 0.50987,-1.502062 0.51332,-0.558106 1.38149,-0.558106 0.77859,0 1.2299,0.502984 0.45475,0.499539 0.45475,1.360814 z m -0.6339,-0.186035 q -0.007,-0.52021 -0.29283,-0.830269 -0.2825,-0.310059 -0.75103,-0.310059 -0.53055,0 -0.85094,0.299724 -0.31695,0.299723 -0.36518,0.844049 z" />
</g>
</g>
<g
aria-label="+"
transform="translate(52.088462,45.532048)"
id="text1124"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1126);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 34.687306,24.561394 v 2.302703 h 2.302703 v 0.702799 h -2.302703 v 2.302703 h -0.694531 v -2.302703 h -2.302703 v -0.702799 h 2.302703 v -2.302703 z"
style="font-size:8.46667px"
id="path1226" />
</g>
<g
id="g1065"
transform="translate(-12.428033)">
<g
aria-label="کېدل"
transform="translate(0.56696429,-0.18898803)"
id="text1853"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1855);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 123.70022,69.461396 h -1.70532 v -0.950843 h 1.60197 q 0.76481,0 0.99735,-0.537434 0.0827,-0.186034 0.0827,-0.372069 0,-0.356566 -0.27905,-0.697629 l -1.60197,-1.963698 q -0.25838,-0.315226 -0.25838,-0.733803 0,-0.180867 0.0517,-0.351399 0.1602,-0.60978 0.69763,-0.831988 l 3.84988,-1.601964 v 0.961178 l -3.07474,1.291907 q -0.3669,0.155029 -0.47542,0.361734 -0.031,0.05684 -0.031,0.186034 0,0.165364 0.16019,0.356567 l 1.4211,1.705317 q 0.5271,0.635618 0.5271,1.271236 0,0.583942 -0.3204,1.105872 -0.49092,0.800982 -1.6433,0.800982 z"
id="path1926" />
<path
d="m 120.43945,69.01698 q -0.39791,0.444416 -1.18339,0.444416 h -0.46509 v -0.950843 h 0.18087 q 0.5116,0 0.73897,-0.227376 0.25321,-0.253214 0.25321,-0.800982 V 66.36082 h 0.95085 v 1.121375 q 0,0.547768 0.25321,0.800982 0.22738,0.227376 0.73897,0.227376 h 0.28422 v 0.950843 h -0.56844 q -0.77514,0 -1.18338,-0.444416 z m -0.38758,2.253085 h 0.77515 v 0.775144 h -0.77515 z m 0,-1.291906 h 0.77515 v 0.775144 h -0.77515 z"
id="path1928" />
<path
d="m 116.15548,66.490011 q -0.29455,-0.630451 -1.23506,-1.421098 h 1.17305 q 0.50126,0.403075 0.92501,1.11104 0.41858,0.692462 0.41858,1.297074 0,0.377237 0.42891,0.80615 0.22737,0.227376 0.73897,0.227376 h 0.38757 v 0.950843 h -0.67179 q -0.75964,0 -1.2609,-0.671792 -0.48059,0.661457 -1.55029,0.831988 -0.23771,0.03617 -0.47025,0.03617 -0.5271,0 -1.05937,-0.19637 v -0.950843 q 0.59428,0.21704 1.02836,0.21704 0.17053,0 0.34623,-0.04651 0.88883,-0.253213 1.0697,-0.831988 0.0413,-0.139526 0.0413,-0.356566 0,-0.351398 -0.31006,-1.002519 z"
id="path1930" />
<path
d="m 111.0292,69.084159 q 0.40307,-0.651121 0.40307,-1.824172 v -5.839418 h 0.95085 v 5.839418 q 0,1.638138 -0.50643,2.382276 -0.62528,0.91467 -1.97403,1.255733 -0.69247,0.1757 -1.13171,0.1757 -0.49093,0 -0.86817,-0.113688 -1.50894,-0.475422 -1.51411,-1.886184 -0.005,-0.713133 0.32556,-1.188554 h 0.95084 q -0.33589,0.594277 -0.33589,1.188554 0,0.671791 0.85782,0.992184 0.20671,0.08268 0.58395,0.08268 0.41341,0 0.97668,-0.175699 0.89916,-0.273884 1.28157,-0.888832 z"
id="path1932" />
</g>
<g
aria-label="to become"
transform="matrix(0.96154424,0,0,0.96154424,78.952615,57.256132)"
id="text1859"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.65;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1861);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 37.367896,16.659795 v 0.985986 h 1.175122 v 0.443384 h -1.175122 v 1.885156 q 0,0.42478 0.114721,0.545703 0.117822,0.120923 0.47439,0.120923 h 0.586011 v 0.47749 h -0.586011 q -0.660425,0 -0.911572,-0.244946 -0.251148,-0.248047 -0.251148,-0.89917 v -1.885156 h -0.418579 v -0.443384 h 0.418579 v -0.985986 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1935" />
<path
d="m 40.642114,18.045757 q -0.458886,0 -0.725537,0.359668 -0.26665,0.356567 -0.26665,0.979785 0,0.623217 0.26355,0.982885 0.26665,0.356568 0.728637,0.356568 0.455786,0 0.722437,-0.359668 0.26665,-0.359668 0.26665,-0.979785 0,-0.617017 -0.26665,-0.976685 -0.266651,-0.362768 -0.722437,-0.362768 z m 0,-0.483692 q 0.744141,0 1.168921,0.483692 0.42478,0.483691 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.42478,0.483691 -1.168921,0.483691 -0.747241,0 -1.172021,-0.483691 -0.42168,-0.486792 -0.42168,-1.339453 0,-0.855762 0.42168,-1.339453 0.42478,-0.483692 1.172021,-0.483692 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1937" />
<path
d="m 29.777661,26.264354 q 0,-0.629419 -0.260449,-0.985986 -0.257349,-0.359668 -0.710034,-0.359668 -0.452686,0 -0.713135,0.359668 -0.257348,0.356567 -0.257348,0.985986 0,0.629419 0.257348,0.989087 0.260449,0.356568 0.713135,0.356568 0.452685,0 0.710034,-0.356568 0.260449,-0.359668 0.260449,-0.989087 z m -1.940966,-1.212329 q 0.179833,-0.310058 0.452685,-0.458886 0.275952,-0.151929 0.657324,-0.151929 0.63252,0 1.026294,0.502295 0.396875,0.502295 0.396875,1.320849 0,0.818555 -0.396875,1.32085 -0.393774,0.502295 -1.026294,0.502295 -0.381372,0 -0.657324,-0.148828 -0.272852,-0.151929 -0.452685,-0.461988 v 0.520899 H 27.263086 V 23.17307 h 0.573609 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1939" />
<path
d="m 34.285913,26.118627 v 0.279053 h -2.623095 q 0.03721,0.589111 0.353466,0.899169 0.319361,0.306958 0.886768,0.306958 0.328662,0 0.63562,-0.08061 0.310059,-0.08062 0.613916,-0.241845 v 0.539501 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654224,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483691,-0.483691 -0.483691,-1.308447 0,-0.852661 0.458887,-1.351855 0.461987,-0.502295 1.243335,-0.502295 0.700732,0 1.106909,0.452685 0.409277,0.449585 0.409277,1.224732 z m -0.570508,-0.167432 q -0.0062,-0.468188 -0.263549,-0.747241 -0.254248,-0.279053 -0.675928,-0.279053 -0.47749,0 -0.765845,0.269751 -0.285254,0.269751 -0.328662,0.759644 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1941" />
<path
d="m 37.721362,24.658251 v 0.533301 q -0.241845,-0.133326 -0.486792,-0.198438 -0.241845,-0.06821 -0.489892,-0.06821 -0.555005,0 -0.861963,0.353467 -0.306958,0.350366 -0.306958,0.985986 0,0.63562 0.306958,0.989087 0.306958,0.350366 0.861963,0.350366 0.248047,0 0.489892,-0.06511 0.244947,-0.06821 0.486792,-0.201538 v 0.5271 q -0.238745,0.111621 -0.496093,0.167431 -0.254248,0.05581 -0.542603,0.05581 -0.784448,0 -1.246435,-0.492993 -0.461988,-0.492993 -0.461988,-1.330152 0,-0.84956 0.465088,-1.336352 0.468189,-0.486792 1.280542,-0.486792 0.26355,0 0.514697,0.05581 0.251148,0.05271 0.486792,0.161231 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1943" />
<path
d="m 40.065406,24.924901 q -0.458887,0 -0.725537,0.359668 -0.266651,0.356568 -0.266651,0.979785 0,0.623218 0.26355,0.982886 0.266651,0.356567 0.728638,0.356567 0.455786,0 0.722436,-0.359668 0.266651,-0.359667 0.266651,-0.979785 0,-0.617016 -0.266651,-0.976684 -0.26665,-0.362769 -0.722436,-0.362769 z m 0,-0.483691 q 0.74414,0 1.168921,0.483691 0.42478,0.483692 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.424781,0.483692 -1.168921,0.483692 -0.747241,0 -1.172022,-0.483692 -0.421679,-0.486792 -0.421679,-1.339453 0,-0.855761 0.421679,-1.339453 0.424781,-0.483691 1.172022,-0.483691 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1945" />
<path
d="m 45.305396,25.191552 q 0.21394,-0.384473 0.511596,-0.567408 0.297657,-0.182934 0.700733,-0.182934 0.542602,0 0.837158,0.381372 0.294556,0.378271 0.294556,1.079004 v 2.095996 H 47.07583 v -2.077393 q 0,-0.499194 -0.176733,-0.74104 -0.176734,-0.241845 -0.539502,-0.241845 -0.443384,0 -0.700733,0.294555 -0.257348,0.294556 -0.257348,0.803052 v 1.962671 h -0.573609 v -2.077393 q 0,-0.502295 -0.176733,-0.74104 -0.176733,-0.241845 -0.545703,-0.241845 -0.437183,0 -0.694531,0.297656 -0.257349,0.294555 -0.257349,0.799951 v 1.962671 h -0.573608 v -3.472656 h 0.573608 v 0.539502 q 0.195337,-0.319361 0.468189,-0.471289 0.272851,-0.151929 0.648022,-0.151929 0.378271,0 0.641821,0.192236 0.266651,0.192237 0.393775,0.558106 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1947" />
<path
d="m 51.760814,26.118627 v 0.279053 h -2.623095 q 0.03721,0.589111 0.353467,0.899169 0.31936,0.306958 0.886767,0.306958 0.328662,0 0.63562,-0.08061 0.310059,-0.08062 0.613916,-0.241845 v 0.539501 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654223,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483692,-0.483691 -0.483692,-1.308447 0,-0.852661 0.458887,-1.351855 0.461987,-0.502295 1.243335,-0.502295 0.700732,0 1.106909,0.452685 0.409277,0.449585 0.409277,1.224732 z m -0.570507,-0.167432 q -0.0062,-0.468188 -0.26355,-0.747241 -0.254248,-0.279053 -0.675928,-0.279053 -0.47749,0 -0.765845,0.269751 -0.285254,0.269751 -0.328662,0.759644 z"
style="font-size:6.35px;text-align:center;text-anchor:middle"
id="path1949" />
</g>
</g>
<g
transform="translate(-8.0007503,4.6950101)"
id="g1005">
<g
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect940);fill:#000000;fill-opacity:1;stroke:none"
id="text938"
transform="translate(5.3453905,-0.80180863)"
aria-label="&quot;existing&quot;">
<path
id="path1034"
style="fill:#666666"
d="m 53.313696,58.377759 v 1.720825 h -0.527099 v -1.720825 z m 1.172022,0 v 1.720825 h -0.5271 v -1.720825 z" />
<path
id="path1036"
style="fill:#666666"
d="m 58.671509,61.127978 v 0.279053 h -2.623096 q 0.03721,0.589112 0.353467,0.89917 0.31936,0.306958 0.886767,0.306958 0.328662,0 0.63562,-0.08062 0.310059,-0.08062 0.613916,-0.241846 V 62.8302 q -0.306958,0.130225 -0.629418,0.198438 -0.322461,0.06821 -0.654224,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483691,-0.483691 -0.483691,-1.308447 0,-0.852661 0.458886,-1.351856 0.461988,-0.502295 1.243335,-0.502295 0.700733,0 1.106909,0.452686 0.409278,0.449585 0.409278,1.224731 z m -0.570508,-0.167431 q -0.0062,-0.468189 -0.26355,-0.747241 -0.254248,-0.279053 -0.675928,-0.279053 -0.47749,0 -0.765844,0.269751 -0.285254,0.269751 -0.328662,0.759643 z" />
<path
id="path1038"
style="fill:#666666"
d="m 62.38291,59.534277 -1.255737,1.68982 1.320849,1.782837 h -0.672827 l -1.010791,-1.364258 -1.010791,1.364258 h -0.672827 l 1.348755,-1.816944 -1.234033,-1.655713 h 0.672827 l 0.920874,1.237134 0.920874,-1.237134 z" />
<path
id="path1040"
style="fill:#666666"
d="m 63.254175,59.534277 h 0.570508 v 3.472657 h -0.570508 z m 0,-1.351855 h 0.570508 v 0.722436 h -0.570508 z" />
<path
id="path1042"
style="fill:#666666"
d="m 67.229125,59.636597 v 0.539502 q -0.241845,-0.124024 -0.502295,-0.186036 -0.260449,-0.06201 -0.539501,-0.06201 -0.424781,0 -0.638721,0.130224 -0.21084,0.130225 -0.21084,0.390674 0,0.198438 0.151929,0.313159 0.151928,0.111621 0.610815,0.213941 l 0.195337,0.04341 q 0.607715,0.130225 0.861963,0.36897 0.257349,0.235644 0.257349,0.660424 0,0.483692 -0.384473,0.765845 -0.381372,0.282154 -1.051099,0.282154 -0.279052,0 -0.58291,-0.05581 -0.300757,-0.05271 -0.63562,-0.161231 v -0.589111 q 0.31626,0.164331 0.623218,0.248047 0.306958,0.08062 0.607715,0.08062 0.403076,0 0.620117,-0.136426 0.217041,-0.139526 0.217041,-0.390673 0,-0.232544 -0.15813,-0.356568 -0.155029,-0.124023 -0.68523,-0.238745 l -0.198437,-0.04651 q -0.5302,-0.111621 -0.765845,-0.341064 -0.235644,-0.232544 -0.235644,-0.63562 0,-0.489893 0.347265,-0.756543 0.347266,-0.266651 0.985987,-0.266651 0.316259,0 0.595312,0.04651 0.279053,0.04651 0.514697,0.139527 z" />
<path
id="path1044"
style="fill:#666666"
d="m 68.89104,58.548291 v 0.985986 h 1.175122 v 0.443384 H 68.89104 v 1.885156 q 0,0.424781 0.114722,0.545703 0.117822,0.120923 0.474389,0.120923 h 0.586011 v 0.477491 h -0.586011 q -0.660425,0 -0.911572,-0.244947 -0.251148,-0.248047 -0.251148,-0.89917 v -1.885156 h -0.418579 v -0.443384 h 0.418579 v -0.985986 z" />
<path
id="path1046"
style="fill:#666666"
d="m 70.819604,59.534277 h 0.570508 v 3.472657 h -0.570508 z m 0,-1.351855 h 0.570508 v 0.722436 h -0.570508 z" />
<path
id="path1048"
style="fill:#666666"
d="m 75.467383,60.910937 v 2.095997 h -0.570508 v -2.077393 q 0,-0.492993 -0.192236,-0.737939 -0.192236,-0.244947 -0.576709,-0.244947 -0.461987,0 -0.728638,0.294556 -0.26665,0.294556 -0.26665,0.803052 v 1.962671 h -0.573608 v -3.472657 h 0.573608 v 0.539502 q 0.204639,-0.313159 0.480591,-0.468188 0.279053,-0.15503 0.641821,-0.15503 0.598413,0 0.905371,0.372071 0.306958,0.36897 0.306958,1.088305 z" />
<path
id="path1050"
style="fill:#666666"
d="m 78.896631,61.230298 q 0,-0.620117 -0.257348,-0.961182 -0.254248,-0.341064 -0.716236,-0.341064 -0.458886,0 -0.716235,0.341064 -0.254248,0.341065 -0.254248,0.961182 0,0.617016 0.254248,0.958081 0.257349,0.341064 0.716235,0.341064 0.461988,0 0.716236,-0.341064 0.257348,-0.341065 0.257348,-0.958081 z m 0.570508,1.345654 q 0,0.886768 -0.393774,1.317749 -0.393775,0.434082 -1.206128,0.434082 -0.300757,0 -0.567408,-0.04651 -0.26665,-0.04341 -0.517797,-0.136425 v -0.555005 q 0.251147,0.136425 0.496093,0.201538 0.244947,0.06511 0.499195,0.06511 0.561206,0 0.840258,-0.294556 0.279053,-0.291455 0.279053,-0.883667 v -0.282153 q -0.176733,0.306958 -0.452685,0.458887 -0.275952,0.151929 -0.660425,0.151929 -0.638721,0 -1.029395,-0.486792 -0.390673,-0.486792 -0.390673,-1.289844 0,-0.806153 0.390673,-1.292945 0.390674,-0.486792 1.029395,-0.486792 0.384473,0 0.660425,0.151929 0.275952,0.151929 0.452685,0.458887 v -0.5271 h 0.570508 z" />
<path
id="path1052"
style="fill:#666666"
d="m 81.181763,58.377759 v 1.720825 h -0.5271 v -1.720825 z m 1.172022,0 v 1.720825 h -0.5271 v -1.720825 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect940-0);fill:#000000;fill-opacity:1;stroke:none"
id="text938-4"
transform="translate(-18.06801,9.7650822)"
aria-label="implied complement">
<path
id="path1068"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 82.145606,59.057476 h 0.443729 v 2.700956 h -0.443729 z m 0,-1.051443 h 0.443729 v 0.561895 h -0.443729 z" />
<path
id="path1070"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 85.618263,59.575963 q 0.166398,-0.299034 0.397909,-0.441316 0.23151,-0.142283 0.545014,-0.142283 0.422024,0 0.651123,0.296623 0.229099,0.294211 0.229099,0.839225 v 1.63022 h -0.44614 v -1.61575 q 0,-0.388263 -0.137459,-0.576365 -0.137459,-0.188102 -0.419613,-0.188102 -0.344854,0 -0.545014,0.229099 -0.20016,0.229099 -0.20016,0.624596 v 1.526522 h -0.44614 v -1.61575 q 0,-0.390674 -0.137459,-0.576365 -0.13746,-0.188102 -0.424436,-0.188102 -0.340031,0 -0.540191,0.23151 -0.20016,0.229099 -0.20016,0.622185 v 1.526522 h -0.44614 v -2.700956 h 0.44614 v 0.419613 q 0.151928,-0.248391 0.364146,-0.366558 0.212218,-0.118167 0.504018,-0.118167 0.294211,0 0.499194,0.149517 0.207395,0.149518 0.306269,0.434082 z" />
<path
id="path1072"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 88.758124,61.353289 v 1.432471 h -0.44614 v -3.728284 h 0.44614 v 0.409967 q 0.139871,-0.241157 0.352089,-0.356912 0.21463,-0.118167 0.511252,-0.118167 0.49196,0 0.798229,0.390674 0.308681,0.390674 0.308681,1.027328 0,0.636654 -0.308681,1.027327 -0.306269,0.390674 -0.798229,0.390674 -0.296622,0 -0.511252,-0.115755 -0.212218,-0.118167 -0.352089,-0.359323 z m 1.509641,-0.942923 q 0,-0.489548 -0.202571,-0.766879 -0.20016,-0.279741 -0.552249,-0.279741 -0.352089,0 -0.554661,0.279741 -0.20016,0.277331 -0.20016,0.766879 0,0.489548 0.20016,0.76929 0.202572,0.27733 0.554661,0.27733 0.352089,0 0.552249,-0.27733 0.202571,-0.279742 0.202571,-0.76929 z" />
<path
id="path1074"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 91.463903,58.006033 h 0.443728 v 3.752399 h -0.443728 z" />
<path
id="path1076"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 92.833673,59.057476 h 0.443728 v 2.700956 h -0.443728 z m 0,-1.051443 h 0.443728 v 0.561895 h -0.443728 z" />
<path
id="path1078"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 96.513724,60.297022 v 0.217041 h -2.040186 q 0.02894,0.458198 0.274919,0.699355 0.248391,0.238745 0.689708,0.238745 0.255626,0 0.494372,-0.0627 0.241156,-0.0627 0.47749,-0.188102 v 0.419613 q -0.238745,0.101285 -0.489548,0.15434 -0.250803,0.05305 -0.508841,0.05305 -0.6463,0 -1.024916,-0.376204 -0.376205,-0.376205 -0.376205,-1.017682 0,-0.663181 0.356912,-1.051443 0.359324,-0.390674 0.967039,-0.390674 0.545014,0 0.860929,0.352089 0.318327,0.349677 0.318327,0.952569 z m -0.443728,-0.130225 q -0.0048,-0.364146 -0.204983,-0.581187 -0.197749,-0.217041 -0.525722,-0.217041 -0.371381,0 -0.595657,0.209806 -0.221864,0.209806 -0.255626,0.590834 z" />
<path
id="path1080"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 99.019343,59.467443 v -1.46141 h 0.443729 v 3.752399 h -0.443729 v -0.405143 q -0.139871,0.241156 -0.3545,0.359323 -0.212218,0.115755 -0.511253,0.115755 -0.489548,0 -0.798228,-0.390674 -0.306269,-0.390673 -0.306269,-1.027327 0,-0.636654 0.306269,-1.027328 0.30868,-0.390674 0.798228,-0.390674 0.299035,0 0.511253,0.118167 0.214629,0.115755 0.3545,0.356912 z m -1.512053,0.942923 q 0,0.489548 0.20016,0.76929 0.202572,0.27733 0.554661,0.27733 0.352089,0 0.55466,-0.27733 0.202572,-0.279742 0.202572,-0.76929 0,-0.489548 -0.202572,-0.766879 -0.202571,-0.279741 -0.55466,-0.279741 -0.352089,0 -0.554661,0.279741 -0.20016,0.277331 -0.20016,0.766879 z" />
<path
id="path1082"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 77.693853,65.334788 v 0.41479 q -0.188102,-0.103697 -0.378616,-0.15434 -0.188102,-0.05306 -0.381028,-0.05306 -0.43167,0 -0.670416,0.274919 -0.238745,0.272507 -0.238745,0.766878 0,0.494372 0.238745,0.76929 0.238746,0.272507 0.670416,0.272507 0.192926,0 0.381028,-0.05064 0.190514,-0.05305 0.378616,-0.156751 v 0.409966 q -0.185691,0.08682 -0.385851,0.130225 -0.197748,0.04341 -0.422024,0.04341 -0.610127,0 -0.96945,-0.383439 -0.359324,-0.38344 -0.359324,-1.034563 0,-0.660769 0.361735,-1.039385 0.364147,-0.378616 0.995978,-0.378616 0.204983,0 0.40032,0.04341 0.195337,0.041 0.378616,0.125401 z" />
<path
id="path1084"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 79.516998,65.542183 q -0.356912,0 -0.564307,0.279742 -0.207395,0.27733 -0.207395,0.762055 0,0.484725 0.204983,0.764467 0.207395,0.27733 0.566719,0.27733 0.3545,0 0.561895,-0.279741 0.207395,-0.279742 0.207395,-0.762056 0,-0.479902 -0.207395,-0.759643 -0.207395,-0.282154 -0.561895,-0.282154 z m 0,-0.376204 q 0.578776,0 0.909161,0.376204 0.330384,0.376205 0.330384,1.041797 0,0.663181 -0.330384,1.041797 -0.330385,0.376205 -0.909161,0.376205 -0.581188,0 -0.911573,-0.376205 -0.327973,-0.378616 -0.327973,-1.041797 0,-0.665592 0.327973,-1.041797 0.330385,-0.376204 0.911573,-0.376204 z" />
<path
id="path1086"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 83.592547,65.749578 q 0.166398,-0.299034 0.397909,-0.441317 0.23151,-0.142282 0.545014,-0.142282 0.422024,0 0.651123,0.296622 0.229099,0.294212 0.229099,0.839226 v 1.630219 h -0.44614 v -1.61575 q 0,-0.388262 -0.137459,-0.576364 -0.13746,-0.188103 -0.419613,-0.188103 -0.344854,0 -0.545014,0.229099 -0.200161,0.229099 -0.200161,0.624596 v 1.526522 h -0.446139 v -1.61575 q 0,-0.390674 -0.13746,-0.576364 -0.137459,-0.188103 -0.424436,-0.188103 -0.340031,0 -0.540191,0.231511 -0.20016,0.229099 -0.20016,0.622184 v 1.526522 h -0.44614 v -2.700955 h 0.44614 v 0.419613 q 0.151929,-0.248392 0.364147,-0.366559 0.212218,-0.118166 0.504017,-0.118166 0.294212,0 0.499195,0.149517 0.207395,0.149517 0.306269,0.434082 z" />
<path
id="path1088"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 86.732407,67.526903 v 1.432471 h -0.44614 v -3.728283 h 0.44614 v 0.409966 q 0.139871,-0.241156 0.352089,-0.356912 0.214629,-0.118166 0.511252,-0.118166 0.49196,0 0.798229,0.390674 0.308681,0.390674 0.308681,1.027327 0,0.636654 -0.308681,1.027328 -0.306269,0.390674 -0.798229,0.390674 -0.296623,0 -0.511252,-0.115755 -0.212218,-0.118167 -0.352089,-0.359324 z m 1.509641,-0.942923 q 0,-0.489548 -0.202571,-0.766878 -0.20016,-0.279742 -0.552249,-0.279742 -0.352089,0 -0.554661,0.279742 -0.20016,0.27733 -0.20016,0.766878 0,0.489548 0.20016,0.76929 0.202572,0.277331 0.554661,0.277331 0.352089,0 0.552249,-0.277331 0.202571,-0.279742 0.202571,-0.76929 z" />
<path
id="path1090"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 89.438187,64.179648 h 0.443728 v 3.752398 h -0.443728 z" />
<path
id="path1092"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 93.118238,66.470637 v 0.217041 h -2.040186 q 0.02894,0.458197 0.274919,0.699354 0.248391,0.238745 0.689708,0.238745 0.255626,0 0.494371,-0.0627 0.241157,-0.0627 0.477491,-0.188103 v 0.419613 q -0.238745,0.101286 -0.489548,0.15434 -0.250803,0.05306 -0.508841,0.05306 -0.6463,0 -1.024916,-0.376205 -0.376205,-0.376204 -0.376205,-1.017681 0,-0.663181 0.356912,-1.051443 0.359324,-0.390674 0.967039,-0.390674 0.545014,0 0.860929,0.352089 0.318327,0.349677 0.318327,0.952569 z M 92.67451,66.340412 q -0.0048,-0.364147 -0.204983,-0.581188 -0.197749,-0.217041 -0.525722,-0.217041 -0.371382,0 -0.595657,0.209807 -0.221865,0.209806 -0.255626,0.590834 z" />
<path
id="path1094"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 95.949418,65.749578 q 0.166398,-0.299034 0.397908,-0.441317 0.231511,-0.142282 0.545014,-0.142282 0.422025,0 0.651124,0.296622 0.229098,0.294212 0.229098,0.839226 v 1.630219 h -0.446139 v -1.61575 q 0,-0.388262 -0.13746,-0.576364 -0.137459,-0.188103 -0.419613,-0.188103 -0.344854,0 -0.545014,0.229099 -0.20016,0.229099 -0.20016,0.624596 v 1.526522 h -0.44614 v -1.61575 q 0,-0.390674 -0.137459,-0.576364 -0.137459,-0.188103 -0.424436,-0.188103 -0.340031,0 -0.540191,0.231511 -0.20016,0.229099 -0.20016,0.622184 v 1.526522 h -0.44614 v -2.700955 h 0.44614 v 0.419613 q 0.151929,-0.248392 0.364146,-0.366559 0.212218,-0.118166 0.504018,-0.118166 0.294211,0 0.499195,0.149517 0.207394,0.149517 0.306269,0.434082 z" />
<path
id="path1096"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 100.9703,66.470637 v 0.217041 h -2.040186 q 0.02894,0.458197 0.274919,0.699354 0.248391,0.238745 0.689708,0.238745 0.255629,0 0.494369,-0.0627 0.24116,-0.0627 0.47749,-0.188103 v 0.419613 q -0.23874,0.101286 -0.48955,0.15434 -0.2508,0.05306 -0.508836,0.05306 -0.6463,0 -1.024916,-0.376205 -0.376205,-0.376204 -0.376205,-1.017681 0,-0.663181 0.356912,-1.051443 0.359324,-0.390674 0.967039,-0.390674 0.545016,0 0.860926,0.352089 0.31833,0.349677 0.31833,0.952569 z m -0.44373,-0.130225 q -0.005,-0.364147 -0.20498,-0.581188 -0.19775,-0.217041 -0.525723,-0.217041 -0.371381,0 -0.595657,0.209807 -0.221864,0.209806 -0.255626,0.590834 z" />
<path
id="path1098"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 103.94376,66.301827 v 1.630219 h -0.44372 v -1.61575 q 0,-0.383439 -0.14952,-0.573953 -0.14952,-0.190514 -0.44855,-0.190514 -0.35933,0 -0.56672,0.229099 -0.2074,0.229099 -0.2074,0.624596 v 1.526522 h -0.44614 v -2.700955 h 0.44614 v 0.419613 q 0.15917,-0.243569 0.3738,-0.364147 0.21704,-0.120578 0.49919,-0.120578 0.46543,0 0.70418,0.289388 0.23874,0.286976 0.23874,0.84646 z" />
<path
id="path1100"
style="font-size:4.93889px;line-height:1.25;text-align:center;text-anchor:middle;fill:#666666"
d="m 105.27254,64.464213 v 0.766878 h 0.91398 v 0.344854 h -0.91398 v 1.466233 q 0,0.330385 0.0892,0.424436 0.0916,0.09405 0.36897,0.09405 h 0.45578 v 0.371381 h -0.45578 q -0.51367,0 -0.709,-0.190513 -0.19534,-0.192926 -0.19534,-0.699355 v -1.466233 h -0.32556 V 65.23109 h 0.32556 v -0.766878 z" />
</g>
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1013);fill:#000000;fill-opacity:1;stroke:none"
id="text1011"
transform="translate(-14.165285,7.4155566)"
aria-label="subject">
<path
id="path1890"
style="font-size:7.76111px"
d="m 25.630531,63.353815 v 0.659391 q -0.29559,-0.151584 -0.613916,-0.227376 -0.318327,-0.07579 -0.659392,-0.07579 -0.519175,0 -0.780658,0.159163 -0.257693,0.159163 -0.257693,0.47749 0,0.242535 0.185691,0.38275 0.18569,0.136426 0.746552,0.261483 l 0.238745,0.05305 q 0.742762,0.159164 1.05351,0.450963 0.314537,0.28801 0.314537,0.807186 0,0.591178 -0.469911,0.936032 -0.466121,0.344854 -1.284676,0.344854 -0.341064,0 -0.712446,-0.06821 -0.367591,-0.06442 -0.776869,-0.197059 v -0.720025 q 0.38654,0.200849 0.761711,0.303168 0.375171,0.09853 0.742762,0.09853 0.492649,0 0.757921,-0.166742 0.265273,-0.170533 0.265273,-0.477491 0,-0.28422 -0.19327,-0.435804 -0.18948,-0.151584 -0.837503,-0.2918 l -0.242534,-0.05684 q -0.648023,-0.136425 -0.936033,-0.416856 -0.28801,-0.284221 -0.28801,-0.776869 0,-0.598758 0.424436,-0.924664 0.424436,-0.325906 1.205094,-0.325906 0.38654,0 0.727604,0.05685 0.341065,0.05684 0.629075,0.170532 z" />
<path
id="path1892"
style="font-size:7.76111px"
d="m 26.900048,65.79811 v -2.569352 h 0.697287 v 2.542824 q 0,0.602547 0.234956,0.905716 0.234955,0.299379 0.704866,0.299379 0.564651,0 0.890557,-0.360013 0.329696,-0.360012 0.329696,-0.981507 v -2.406399 h 0.697287 v 4.244357 H 29.75741 v -0.651812 q -0.253904,0.386539 -0.591179,0.57602 -0.333485,0.18569 -0.776868,0.18569 -0.731394,0 -1.110355,-0.454752 -0.37896,-0.454753 -0.37896,-1.330151 z m 1.754587,-2.671672 z" />
<path
id="path1894"
style="font-size:7.76111px"
d="m 34.945378,65.354726 q 0,-0.76929 -0.318326,-1.205094 -0.314537,-0.439594 -0.86782,-0.439594 -0.553282,0 -0.871609,0.439594 -0.314537,0.435804 -0.314537,1.205094 0,0.76929 0.314537,1.208884 0.318327,0.435804 0.871609,0.435804 0.553283,0 0.86782,-0.435804 0.318326,-0.439594 0.318326,-1.208884 z m -2.372292,-1.481735 q 0.219797,-0.378961 0.553282,-0.560862 0.337275,-0.185691 0.803396,-0.185691 0.77308,0 1.25436,0.613916 0.485069,0.613916 0.485069,1.614372 0,1.000455 -0.485069,1.614371 -0.48128,0.613916 -1.25436,0.613916 -0.466121,0 -0.803396,-0.181901 -0.333485,-0.18569 -0.553282,-0.564651 v 0.636654 H 31.872009 V 61.57649 h 0.701077 z" />
<path
id="path1896"
style="font-size:7.76111px"
d="m 36.825022,63.228758 h 0.697287 v 4.320149 q 0,0.810975 -0.310748,1.174777 -0.306958,0.363802 -0.992876,0.363802 h -0.265272 v -0.591178 h 0.18569 q 0.397909,0 0.541914,-0.185691 0.144005,-0.181901 0.144005,-0.76171 z m 0,-1.652268 h 0.697287 v 0.882978 h -0.697287 z" />
<path
id="path1898"
style="font-size:7.76111px"
d="m 42.607959,65.176614 v 0.341065 h -3.206005 q 0.04547,0.720025 0.432015,1.098985 0.390329,0.375171 1.083826,0.375171 0.401698,0 0.776869,-0.09853 0.378961,-0.09853 0.750342,-0.295589 v 0.659391 q -0.375171,0.159164 -0.76929,0.242535 -0.394119,0.08337 -0.799606,0.08337 -1.015614,0 -1.610582,-0.591178 -0.591178,-0.591178 -0.591178,-1.599213 0,-1.042141 0.560861,-1.652268 0.564651,-0.613916 1.519631,-0.613916 0.856451,0 1.352889,0.553283 0.500228,0.549492 0.500228,1.496893 z m -0.697287,-0.204638 q -0.0076,-0.57223 -0.322117,-0.913295 -0.310747,-0.341064 -0.826133,-0.341064 -0.583599,0 -0.936033,0.329695 -0.348643,0.329696 -0.401698,0.928453 z" />
<path
id="path1900"
style="font-size:7.76111px"
d="m 46.80684,63.391711 v 0.651812 q -0.29559,-0.162953 -0.594968,-0.242535 -0.29559,-0.08337 -0.598758,-0.08337 -0.678339,0 -1.05351,0.432015 -0.375171,0.428225 -0.375171,1.205094 0,0.776869 0.375171,1.208884 0.375171,0.428225 1.05351,0.428225 0.303168,0 0.598758,-0.07958 0.299378,-0.08337 0.594968,-0.246324 v 0.644233 q -0.2918,0.136425 -0.606337,0.204638 -0.310748,0.06821 -0.663181,0.06821 -0.95877,0 -1.523421,-0.602547 -0.564651,-0.602547 -0.564651,-1.62574 0,-1.038352 0.568441,-1.63332 0.57223,-0.594968 1.565106,-0.594968 0.322117,0 0.629075,0.06821 0.306958,0.06442 0.594968,0.19706 z" />
<path
id="path1902"
style="font-size:7.76111px"
d="m 48.7168,62.023664 v 1.205094 h 1.43626 v 0.541913 H 48.7168 v 2.30408 q 0,0.519175 0.140215,0.66697 0.144005,0.147795 0.57981,0.147795 h 0.716235 v 0.583599 h -0.716235 q -0.807186,0 -1.114144,-0.299379 -0.306958,-0.303168 -0.306958,-1.098985 v -2.30408 h -0.511597 v -0.541913 h 0.511597 v -1.205094 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1126);fill:#000000;fill-opacity:1;stroke:none"
id="text1124-6"
transform="translate(8.8376619,45.532048)"
aria-label="+">
<path
id="path1226-9"
style="font-size:8.46667px"
d="m 34.687306,24.561394 v 2.302703 h 2.302703 v 0.702799 h -2.302703 v 2.302703 h -0.694531 v -2.302703 h -2.302703 v -0.702799 h 2.302703 v -2.302703 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 59 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 87 KiB

View File

@ -0,0 +1,589 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="gramattically-transitive-past.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 212.46637 92.675973"
height="350.27139"
width="803.02252">
<defs
id="defs2">
<rect
x="10.841692"
y="4.1634259"
width="100.76061"
height="33.408691"
id="rect4499" />
<rect
id="rect1391"
height="46.113094"
width="93.738098"
y="-70.55368"
x="-15.096844" />
<rect
id="rect1385"
height="25.324406"
width="51.404762"
y="-43.339394"
x="39.331726" />
<rect
id="rect1379"
height="25.324406"
width="78.997025"
y="35.657631"
x="38.953751" />
<rect
id="rect1373"
height="23.434525"
width="29.104168"
y="33.389771"
x="57.474583" />
<rect
id="rect1360"
height="77.422302"
width="112.6993"
y="6.553463"
x="4.935894" />
<rect
id="rect1354"
height="35.151787"
width="93.738098"
y="118.46915"
x="35.83614" />
<rect
id="rect1348"
height="28.348213"
width="76.351189"
y="116.23755"
x="-56.012074" />
<rect
id="rect1165"
height="44.73629"
width="50.263763"
y="61.904251"
x="35.529755" />
<rect
id="rect1113"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fillRule:evenodd;stroke:#000000;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path841" />
</marker>
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1113-9" />
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1141" />
</defs>
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="118"
inkscape:window-x="2167"
inkscape:window-height="1080"
inkscape:window-width="1515"
fit-margin-left="10"
fit-margin-bottom="10"
fit-margin-right="10"
fit-margin-top="10"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="text1358"
inkscape:document-units="mm"
inkscape:cy="-1.8078828"
inkscape:cx="406.88683"
inkscape:zoom="0.9899495"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:snap-global="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(52.843619,-52.585221)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<path
d="m 122.9777,85.081856 h 33.44172 V 118.52357 H 122.9777 Z"
style="opacity:1;fill:none;stroke:#000000;stroke-width:1.115;stroke-miterlimit:4;stroke-dasharray:none"
id="rect839-4" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1113-9);fill:#000000;fill-opacity:1;stroke:none"
id="text1111-8"
transform="translate(90.461538,-16.314846)"
aria-label="verb">
<path
id="path1187"
d="m 37.356241,115.83576 h 1.007687 l 1.808669,4.85757 1.80867,-4.85757 h 1.007687 l -2.170403,5.78775 h -1.291907 z" />
<path
id="path1189"
d="m 49.252118,118.49192 v 0.46509 h -4.371813 q 0.06201,0.98185 0.58911,1.49861 0.532265,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40308 v 0.89917 q -0.511595,0.21704 -1.049029,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04121 z m -0.950844,-0.27905 q -0.01033,-0.78031 -0.439248,-1.2454 -0.423745,-0.46508 -1.126543,-0.46508 -0.795814,0 -1.276403,0.44958 -0.475422,0.44958 -0.547769,1.26607 z" />
<path
id="path1191"
d="m 54.166531,116.7246 q -0.160196,-0.093 -0.351398,-0.13436 -0.186035,-0.0465 -0.41341,-0.0465 -0.80615,0 -1.240231,0.5271 -0.428913,0.52193 -0.428913,1.50378 v 3.0489 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.299723,-0.5271 0.780312,-0.78031 0.480589,-0.25838 1.167883,-0.25838 0.09819,0 0.217041,0.0155 0.118855,0.0103 0.263549,0.0362 z" />
<path
id="path1193"
d="m 59.32899,118.7348 q 0,-1.04903 -0.43408,-1.6433 -0.428913,-0.59945 -1.183387,-0.59945 -0.754473,0 -1.188554,0.59945 -0.428913,0.59427 -0.428913,1.6433 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188554,0.59428 0.754474,0 1.183387,-0.59428 0.43408,-0.59944 0.43408,-1.64847 z m -3.234934,-2.02054 q 0.299722,-0.51676 0.754474,-0.76481 0.459918,-0.25321 1.095536,-0.25321 1.054196,0 1.710485,0.83715 0.661456,0.83716 0.661456,2.20141 0,1.36426 -0.661456,2.20141 -0.656289,0.83716 -1.710485,0.83716 -0.635618,0 -1.095536,-0.24805 -0.454752,-0.25321 -0.754474,-0.76998 v 0.86817 h -0.956011 v -8.04083 h 0.956011 z" />
</g>
<g
transform="translate(7.9375,-1.5481652)"
id="g1333">
<path
style="fill:none;stroke:#000000;stroke-width:0.965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -57.795068,100.26406 9.342265,9.28984 h 40.1025978 l 9.589407,-9.589405"
id="path1169"
sodipodi:nodetypes="cccc" />
<g
aria-label="subject / agent"
transform="translate(-9.827381,-4.5357143)"
id="text1346"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1348);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m -35.814111,119.98481 v 0.89917 q -0.403075,-0.20671 -0.837156,-0.31006 -0.43408,-0.10335 -0.899167,-0.10335 -0.707965,0 -1.064531,0.21704 -0.351398,0.21704 -0.351398,0.65112 0,0.33073 0.253213,0.52193 0.253214,0.18603 1.018023,0.35657 l 0.32556,0.0723 q 1.012855,0.21704 1.436601,0.61495 0.428913,0.39274 0.428913,1.1007 0,0.80615 -0.640786,1.27641 -0.635618,0.47025 -1.751826,0.47025 -0.465086,0 -0.971513,-0.093 -0.50126,-0.0878 -1.059364,-0.26871 v -0.98185 q 0.527098,0.27388 1.038693,0.41341 0.511595,0.13436 1.012855,0.13436 0.671791,0 1.033525,-0.22738 0.361734,-0.23254 0.361734,-0.65112 0,-0.38757 -0.263549,-0.59428 -0.258381,-0.2067 -1.142045,-0.3979 l -0.330729,-0.0775 q -0.883664,-0.18603 -1.276403,-0.56844 -0.39274,-0.38757 -0.39274,-1.05936 0,-0.81649 0.578774,-1.2609 0.578774,-0.44442 1.643306,-0.44442 0.527097,0 0.992184,0.0775 0.465086,0.0775 0.857826,0.23254 z"
style="text-align:center;text-anchor:middle"
id="path3360" />
<path
d="m -34.082956,123.31793 v -3.50365 h 0.950843 v 3.46748 q 0,0.82165 0.320393,1.23506 0.320393,0.40824 0.961179,0.40824 0.769976,0 1.214392,-0.49092 0.449583,-0.49093 0.449583,-1.33842 v -3.28144 h 0.950844 v 5.78774 h -0.950844 v -0.88883 q -0.346231,0.5271 -0.806149,0.78548 -0.454751,0.25321 -1.059364,0.25321 -0.997352,0 -1.514114,-0.62011 -0.516763,-0.62012 -0.516763,-1.81384 z m 2.392611,-3.64318 z"
style="text-align:center;text-anchor:middle"
id="path3362" />
<path
d="m -23.112084,122.71332 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188555,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188555,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59944 0.434081,-1.64847 z m -3.234935,-2.02054 q 0.299723,-0.51677 0.754474,-0.76481 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710484,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656288,0.83715 -1.710484,0.83715 -0.635618,0 -1.095537,-0.24804 -0.454751,-0.25322 -0.754474,-0.76998 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z"
style="text-align:center;text-anchor:middle"
id="path3364" />
<path
d="m -20.548942,119.81428 h 0.950844 v 5.89109 q 0,1.10588 -0.423746,1.60197 -0.418577,0.49609 -1.353918,0.49609 h -0.361734 v -0.80615 h 0.253214 q 0.542601,0 0.738971,-0.25321 0.196369,-0.24805 0.196369,-1.0387 z m 0,-2.25309 h 0.950844 v 1.20406 h -0.950844 z"
style="text-align:center;text-anchor:middle"
id="path3366" />
<path
d="m -12.663144,122.47044 v 0.46509 h -4.371812 q 0.06201,0.98184 0.589109,1.49861 0.532266,0.51159 1.477941,0.51159 0.547769,0 1.059364,-0.13436 0.516763,-0.13435 1.02319,-0.40307 v 0.89917 q -0.511595,0.21704 -1.049028,0.33072 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.42109 0.764809,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844842,0.75448 0.682127,0.7493 0.682127,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78031 -0.439249,-1.2454 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44959 -0.475422,0.44958 -0.547768,1.26606 z"
style="text-align:center;text-anchor:middle"
id="path3368" />
<path
d="m -6.9374138,120.03649 v 0.88883 q -0.4030748,-0.22221 -0.8113174,-0.33073 -0.4030748,-0.11369 -0.816485,-0.11369 -0.9250052,0 -1.4365998,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.5115946,0.58394 1.4365998,0.58394 0.4134102,0 0.816485,-0.10852 0.4082426,-0.11369 0.8113174,-0.33589 v 0.87849 q -0.3979072,0.18604 -0.8268202,0.27905 -0.4237454,0.093 -0.9043347,0.093 -1.3074096,0 -2.0773863,-0.82165 -0.769976,-0.82165 -0.769976,-2.21691 0,-1.41593 0.775144,-2.22725 0.7803116,-0.81132 2.1342298,-0.81132 0.4392483,0 0.857826,0.093 0.4185778,0.0879 0.8113174,0.26872 z"
style="text-align:center;text-anchor:middle"
id="path3370" />
<path
d="m -4.3329304,118.17097 v 1.64331 h 1.9585306 v 0.73897 h -1.9585306 v 3.14192 q 0,0.70796 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766815 v 0.79581 h -0.9766815 q -1.1007045,0 -1.5192823,-0.40824 -0.4185777,-0.41341 -0.4185777,-1.49861 v -3.14192 h -0.6976296 v -0.73897 h 0.6976296 v -1.64331 z"
style="text-align:center;text-anchor:middle"
id="path3372" />
<path
d="M 3.9404424,117.88675 H 4.818939 l -2.6871659,8.69712 H 1.2532765 Z"
style="text-align:center;text-anchor:middle"
id="path3374" />
<path
d="m -29.504439,135.92177 q -1.152381,0 -1.596796,0.26355 -0.444416,0.26355 -0.444416,0.89917 0,0.50643 0.330728,0.80615 0.335896,0.29455 0.909502,0.29455 0.790647,0 1.266069,-0.5581 0.480589,-0.56327 0.480589,-1.49344 v -0.21188 z m 1.896519,-0.39274 v 3.30212 h -0.950843 v -0.8785 q -0.325561,0.5271 -0.811317,0.78031 -0.485757,0.24805 -1.188555,0.24805 -0.888831,0 -1.415929,-0.49609 -0.521931,-0.50126 -0.521931,-1.33842 0,-0.97668 0.651121,-1.47277 0.656289,-0.4961 1.953363,-0.4961 h 1.333248 v -0.093 q 0,-0.65629 -0.434081,-1.01286 -0.428913,-0.36173 -1.209224,-0.36173 -0.496093,0 -0.966347,0.11885 -0.470254,0.11886 -0.904334,0.35657 v -0.8785 q 0.52193,-0.20153 1.012855,-0.29972 0.490924,-0.10335 0.956011,-0.10335 1.255733,0 1.875848,0.65112 0.620115,0.65112 0.620115,1.97403 z"
style="text-align:center;text-anchor:middle"
id="path3376" />
<path
d="m -21.835681,135.8701 q 0,-1.03353 -0.428913,-1.60197 -0.423745,-0.56844 -1.193722,-0.56844 -0.764808,0 -1.193721,0.56844 -0.423746,0.56844 -0.423746,1.60197 0,1.02835 0.423746,1.59679 0.428913,0.56844 1.193721,0.56844 0.769977,0 1.193722,-0.56844 0.428913,-0.56844 0.428913,-1.59679 z m 0.950844,2.24275 q 0,1.47794 -0.656289,2.19624 -0.656289,0.72347 -2.010207,0.72347 -0.50126,0 -0.945676,-0.0775 -0.444415,-0.0724 -0.862993,-0.22737 v -0.92501 q 0.418578,0.22738 0.82682,0.3359 0.408243,0.10852 0.831988,0.10852 0.93534,0 1.400427,-0.49093 0.465086,-0.48575 0.465086,-1.47277 v -0.47026 q -0.294555,0.5116 -0.754473,0.76481 -0.459919,0.25322 -1.100705,0.25322 -1.064531,0 -1.715652,-0.81132 -0.651121,-0.81132 -0.651121,-2.14973 0,-1.34359 0.651121,-2.1549 0.651121,-0.81132 1.715652,-0.81132 0.640786,0 1.100705,0.25321 0.459918,0.25322 0.754473,0.76481 v -0.8785 h 0.950844 z"
style="text-align:center;text-anchor:middle"
id="path3378" />
<path
d="m -13.97572,135.69957 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49861 0.532266,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21704 -1.049028,0.33073 -0.537434,0.11369 -1.09037,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04122 z m -0.950844,-0.27906 q -0.01033,-0.78031 -0.439248,-1.24539 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44958 -0.475422,0.44959 -0.547769,1.26607 z"
style="text-align:center;text-anchor:middle"
id="path3380" />
<path
d="m -7.6040366,135.33783 v 3.49332 H -8.55488 v -3.46231 q 0,-0.82166 -0.3203928,-1.2299 -0.3203929,-0.40824 -0.9611786,-0.40824 -0.7699766,0 -1.2143926,0.49092 -0.444416,0.49093 -0.444416,1.33842 v 3.27111 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.341064,-0.52193 0.800983,-0.78031 0.465086,-0.25838 1.0696983,-0.25838 0.997352,0 1.508947,0.62011 0.5115951,0.61495 0.5115951,1.81384 z"
style="text-align:center;text-anchor:middle"
id="path3382" />
<path
d="m -4.7566745,131.4001 v 1.6433 h 1.9585305 v 0.73898 h -1.9585305 v 3.14191 q 0,0.70797 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766814 v 0.79582 h -0.9766814 q -1.1007045,0 -1.5192823,-0.40825 -0.4185778,-0.41341 -0.4185778,-1.49861 v -3.14191 h -0.6976296 v -0.73898 h 0.6976296 v -1.6433 z"
style="text-align:center;text-anchor:middle"
id="path3384" />
</g>
</g>
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1360);fill:#000000;fill-opacity:1;stroke:none"
id="text1358"
transform="translate(-120.88099,10.440184)"
aria-label="plain noun / pronoun ">
<g
aria-label="inflected noun / pronoun"
transform="matrix(0.91075878,0,0,0.91075878,44.423281,40.361891)"
id="text4497"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.95;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4499);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 28.822611,7.310097 h 0.760677 v 4.63021 h -0.760677 z m 0,-1.8024746 h 0.760677 v 0.963249 h -0.760677 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4503" />
<path
d="M 35.019651,9.1456446 V 11.940307 H 34.258974 V 9.1704493 q 0,-0.6573244 -0.256316,-0.9839196 -0.256315,-0.3265952 -0.768945,-0.3265952 -0.615984,0 -0.971518,0.392741 -0.355534,0.3927411 -0.355534,1.0707361 V 11.940307 H 31.14185 v -4.63021 h 0.764811 v 0.7193363 q 0.272852,-0.4175458 0.640788,-0.6242516 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919599 0.409278,1.4510748 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4505" />
<path
d="m 38.169847,5.5076224 h 2.116668 V 11.940307 H 39.521703 V 6.1401421 h -1.360124 q -0.409277,0 -0.570508,0.1653647 -0.157096,0.1653646 -0.157096,0.5953127 V 7.310097 h 1.252637 V 7.9012757 H 37.433975 V 11.940307 H 36.669163 V 7.9012757 H 35.941559 V 7.310097 h 0.727604 V 6.987636 q 0,-0.7730798 0.359668,-1.1244796 0.359668,-0.355534 1.141016,-0.355534 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4507" />
<path
d="m 45.846901,9.4350328 v 0.3720704 h -3.497463 q 0.04961,0.7854818 0.47129,1.1988938 0.425814,0.409277 1.182357,0.409277 0.438216,0 0.847494,-0.107487 0.413411,-0.107487 0.818555,-0.322461 v 0.719337 q -0.409278,0.173632 -0.839226,0.264583 -0.429948,0.09095 -0.872298,0.09095 -1.107944,0 -1.757,-0.644923 -0.644922,-0.644922 -0.644922,-1.7445966 0,-1.136882 0.611849,-1.8024747 0.615984,-0.6697268 1.657781,-0.6697268 0.93431,0 1.475879,0.603581 0.545704,0.5994468 0.545704,1.6329759 z M 45.086223,9.2117905 q -0.0083,-0.6242516 -0.3514,-0.996322 -0.338997,-0.3720705 -0.901237,-0.3720705 -0.636654,0 -1.021127,0.3596681 -0.380338,0.3596682 -0.438216,1.0128585 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4509" />
<path
d="M 50.427501,7.487864 V 8.198932 Q 50.10504,8.021165 49.778445,7.9343486 49.455984,7.843398 49.125255,7.843398 q -0.740007,0 -1.149285,0.4712893 -0.409277,0.4671551 -0.409277,1.3146489 0,0.8474938 0.409277,1.3187828 0.409278,0.467155 1.149285,0.467155 0.330729,0 0.65319,-0.08682 0.326595,-0.09095 0.649056,-0.268718 v 0.7028 q -0.318327,0.148828 -0.661458,0.223242 -0.338998,0.07442 -0.723471,0.07442 -1.045931,0 -1.661914,-0.657325 -0.615984,-0.657324 -0.615984,-1.7735358 0,-1.1327478 0.620118,-1.7818041 0.624251,-0.6490562 1.70739,-0.6490562 0.3514,0 0.686263,0.074414 0.334863,0.07028 0.649056,0.214974 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4511" />
<path
d="M 52.511097,5.9954481 V 7.310097 h 1.56683 v 0.5911787 h -1.56683 v 2.5135423 q 0,0.566374 0.152962,0.727605 0.157097,0.16123 0.63252,0.16123 h 0.781348 v 0.636654 h -0.781348 q -0.880567,0 -1.21543,-0.326595 -0.334863,-0.330729 -0.334863,-1.198894 V 7.9012757 H 51.18818 V 7.310097 h 0.558106 V 5.9954481 Z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4513" />
<path
d="m 59.042999,9.4350328 v 0.3720704 h -3.497462 q 0.04961,0.7854818 0.471289,1.1988938 0.425814,0.409277 1.182357,0.409277 0.438216,0 0.847494,-0.107487 0.413412,-0.107487 0.818555,-0.322461 v 0.719337 q -0.409277,0.173632 -0.839226,0.264583 -0.429948,0.09095 -0.872298,0.09095 -1.107943,0 -1.757,-0.644923 -0.644922,-0.644922 -0.644922,-1.7445966 0,-1.136882 0.61185,-1.8024747 0.615983,-0.6697268 1.65778,-0.6697268 0.93431,0 1.47588,0.603581 0.545703,0.5994468 0.545703,1.6329759 z M 58.282322,9.2117905 q -0.0083,-0.6242516 -0.3514,-0.996322 -0.338998,-0.3720705 -0.901238,-0.3720705 -0.636653,0 -1.021126,0.3596681 -0.380339,0.3596682 -0.438217,1.0128585 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4515" />
<path
d="M 63.338346,8.0128968 V 5.5076224 h 0.760677 v 6.4326846 h -0.760677 v -0.694531 q -0.239779,0.413411 -0.607715,0.615983 -0.363803,0.198438 -0.876433,0.198438 -0.839226,0 -1.368393,-0.669727 -0.525032,-0.669727 -0.525032,-1.7611338 0,-1.0914066 0.525032,-1.7611335 0.529167,-0.6697268 1.368393,-0.6697268 0.51263,0 0.876433,0.2025717 0.367936,0.1984376 0.607715,0.6118492 z m -2.592091,1.6164394 q 0,0.8392258 0.343131,1.3187828 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.950847,-0.475424 0.347266,-0.479557 0.347266,-1.3187828 0,-0.8392256 -0.347266,-1.3146489 -0.347266,-0.4795575 -0.950847,-0.4795575 -0.603581,0 -0.950847,0.4795575 -0.343131,0.4754233 -0.343131,1.3146489 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4517" />
<path
d="M 72.210162,9.1456446 V 11.940307 H 71.449484 V 9.1704493 q 0,-0.6573244 -0.256315,-0.9839196 -0.256315,-0.3265952 -0.768946,-0.3265952 -0.615983,0 -0.971517,0.392741 -0.355534,0.3927411 -0.355534,1.0707361 v 2.6168954 h -0.764811 v -4.63021 h 0.764811 v 0.7193363 q 0.272852,-0.4175458 0.640788,-0.6242516 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919599 0.409278,1.4510748 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4519" />
<path
d="m 75.529854,7.843398 q -0.61185,0 -0.967384,0.4795575 -0.355534,0.4754234 -0.355534,1.3063807 0,0.8309578 0.3514,1.3105148 0.355534,0.475423 0.971518,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.3063808 0,-0.8226891 -0.355534,-1.3022466 Q 76.137569,7.843398 75.529854,7.843398 Z m 0,-0.6449221 q 0.992187,0 1.558561,0.6449221 0.566374,0.6449222 0.566374,1.7859382 0,1.1368818 -0.566374,1.7859378 -0.566374,0.644923 -1.558561,0.644923 -0.996322,0 -1.562696,-0.644923 -0.56224,-0.649056 -0.56224,-1.7859378 0,-1.141016 0.56224,-1.7859382 0.566374,-0.6449221 1.562696,-0.6449221 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4521" />
<path
d="M 78.833014,10.113028 V 7.310097 h 0.760677 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.0707362 V 7.310097 h 0.760678 v 4.63021 h -0.760678 v -0.711068 q -0.276985,0.42168 -0.644922,0.628386 -0.363802,0.202572 -0.847494,0.202572 -0.797884,0 -1.211296,-0.496094 -0.413411,-0.496094 -0.413411,-1.451075 z M 80.74711,7.1984759 Z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4523" />
<path
d="M 88.134776,9.1456446 V 11.940307 H 87.374098 V 9.1704493 q 0,-0.6573244 -0.256315,-0.9839196 -0.256315,-0.3265952 -0.768946,-0.3265952 -0.615983,0 -0.971517,0.392741 -0.355534,0.3927411 -0.355534,1.0707361 v 2.6168954 h -0.764811 v -4.63021 h 0.764811 v 0.7193363 q 0.272852,-0.4175458 0.640788,-0.6242516 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919599 0.409278,1.4510748 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4525" />
<path
d="m 93.707563,5.7680717 h 0.7028 l -2.149741,6.9577173 h -0.702799 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4527" />
<path
d="m 45.177175,21.29991 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239778,-0.413411 0.603581,-0.611849 0.367936,-0.202572 0.876432,-0.202572 0.84336,0 1.368393,0.669727 0.529167,0.669727 0.529167,1.761134 0,1.091406 -0.529167,1.761133 -0.525033,0.669727 -1.368393,0.669727 -0.508496,0 -0.876432,-0.198438 -0.363803,-0.202571 -0.603581,-0.615983 z m 2.587956,-1.616439 q 0,-0.839226 -0.347265,-1.314649 -0.343132,-0.479558 -0.946713,-0.479558 -0.603581,0 -0.950847,0.479558 -0.343131,0.475423 -0.343131,1.314649 0,0.839225 0.343131,1.318783 0.347266,0.475423 0.950847,0.475423 0.603581,0 0.946713,-0.475423 0.347265,-0.479558 0.347265,-1.318783 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4529" />
<path
d="m 52.498694,18.075299 q -0.128157,-0.07441 -0.28112,-0.107487 -0.148828,-0.03721 -0.330729,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343131,0.417546 -0.343131,1.203028 v 2.439129 h -0.764812 v -4.630211 h 0.764812 v 0.719337 q 0.239778,-0.42168 0.624251,-0.624252 0.384473,-0.206706 0.93431,-0.206706 0.07855,0 0.173633,0.0124 0.09508,0.0083 0.21084,0.02894 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4531" />
<path
d="m 54.917153,17.897532 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.351399,1.310514 0.355534,0.475424 0.971518,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.82269 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4533" />
<path
d="m 62.147721,19.199779 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 58.26992 v -4.630211 h 0.764812 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4535" />
<path
d="m 65.467417,17.897532 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310514 0.355534,0.475424 0.971517,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.82269 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4537" />
<path
d="m 68.770575,20.167162 v -2.802931 h 0.760678 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256315,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760677 v 4.630211 h -0.760677 v -0.711068 q -0.276986,0.421679 -0.644922,0.628385 -0.363802,0.202572 -0.847494,0.202572 -0.797884,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4539" />
<path
d="m 78.072337,19.199779 v 2.794663 H 77.31166 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764812 v -4.630211 h 0.764812 v 0.719337 q 0.272851,-0.417546 0.640788,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path4541" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect982);fill:#999999;fill-opacity:1;stroke:none"
id="text980"
transform="matrix(0.82417526,0,0,0.82417526,127.75251,22.723474)"
aria-label="implied 3rd. pers. masc. sing.">
<path
id="path1035"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 50.656106,43.693185 h 0.950843 v 5.787742 h -0.950843 z m 0,-2.253085 h 0.950843 v 1.204057 h -0.950843 z" />
<path
id="path1037"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 58.097488,44.804225 q 0.356566,-0.640786 0.852658,-0.945676 0.496093,-0.30489 1.167884,-0.30489 0.904335,0 1.395259,0.635618 0.490925,0.630451 0.490925,1.798335 v 3.493315 h -0.956011 v -3.46231 q 0,-0.831988 -0.294555,-1.235063 -0.294555,-0.403074 -0.899167,-0.403074 -0.738971,0 -1.167884,0.490924 -0.428913,0.490925 -0.428913,1.338415 v 3.271108 h -0.956011 v -3.46231 q 0,-0.837155 -0.294554,-1.235063 -0.294555,-0.403074 -0.909503,-0.403074 -0.728635,0 -1.157548,0.496092 -0.428913,0.490924 -0.428913,1.333247 v 3.271108 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.325561,-0.532265 0.780312,-0.785479 0.454751,-0.253214 1.080034,-0.253214 0.63045,0 1.069698,0.320393 0.444416,0.320393 0.656289,0.930173 z" />
<path
id="path1039"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 64.825738,48.612766 v 3.06957 h -0.956011 v -7.989151 h 0.956011 v 0.878497 q 0.299722,-0.516763 0.754474,-0.764809 0.459918,-0.253214 1.095536,-0.253214 1.054196,0 1.710485,0.837156 0.661456,0.837155 0.661456,2.201409 0,1.364253 -0.661456,2.201409 -0.656289,0.837155 -1.710485,0.837155 -0.635618,0 -1.095536,-0.248046 -0.454752,-0.253213 -0.754474,-0.769976 z m 3.234934,-2.020542 q 0,-1.049028 -0.43408,-1.643305 -0.428913,-0.599445 -1.183387,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.183387,-0.594277 0.43408,-0.599445 0.43408,-1.648473 z" />
<path
id="path1041"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 70.623814,41.4401 h 0.950843 v 8.040827 h -0.950843 z" />
<path
id="path1043"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 73.559027,43.693185 h 0.950844 v 5.787742 h -0.950844 z m 0,-2.253085 h 0.950844 v 1.204057 h -0.950844 z" />
<path
id="path1045"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 81.444825,46.349345 v 0.465087 h -4.371812 q 0.06201,0.981849 0.589109,1.498612 0.532266,0.511595 1.477941,0.511595 0.547769,0 1.059364,-0.134359 0.516763,-0.134358 1.02319,-0.403075 v 0.899167 q -0.511595,0.217041 -1.049028,0.330729 -0.537433,0.113687 -1.09037,0.113687 -1.384924,0 -2.196241,-0.806149 -0.80615,-0.80615 -0.80615,-2.180739 0,-1.421097 0.764809,-2.253085 0.769976,-0.837156 2.072218,-0.837156 1.167884,0 1.844843,0.754474 0.682127,0.749306 0.682127,2.041212 z m -0.950843,-0.279051 q -0.01034,-0.780312 -0.439249,-1.245399 -0.423745,-0.465086 -1.126542,-0.465086 -0.795815,0 -1.276404,0.449584 -0.475422,0.449583 -0.547769,1.266068 z" />
<path
id="path1047"
style="text-align:center;text-anchor:middle;fill:#999999"
d="M 86.813989,44.571682 V 41.4401 h 0.950843 v 8.040827 h -0.950843 v -0.868161 q -0.299723,0.516763 -0.759641,0.769976 -0.454751,0.248046 -1.095537,0.248046 -1.049028,0 -1.710485,-0.837155 -0.656288,-0.837156 -0.656288,-2.201409 0,-1.364254 0.656288,-2.201409 0.661457,-0.837156 1.710485,-0.837156 0.640786,0 1.095537,0.253214 0.459918,0.248046 0.759641,0.764809 z m -3.240102,2.020542 q 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.188554,-0.594277 0.434081,-0.599445 0.434081,-1.648473 0,-1.049028 -0.434081,-1.643305 -0.43408,-0.599445 -1.188554,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 z" />
<path
id="path1049"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 48.061957,58.550114 q 0.749306,0.160196 1.167884,0.666623 0.423745,0.506428 0.423745,1.250566 0,1.142046 -0.785479,1.767329 -0.78548,0.625282 -2.232415,0.625282 -0.485757,0 -1.00252,-0.09819 -0.511595,-0.09302 -1.059363,-0.284219 v -1.007687 q 0.434081,0.253213 0.950843,0.382404 0.516763,0.129191 1.080034,0.129191 0.981849,0 1.493444,-0.387572 0.516763,-0.387572 0.516763,-1.126543 0,-0.682127 -0.480589,-1.064531 Q 47.658882,59.0152 46.806224,59.0152 h -0.899167 v -0.857826 h 0.940508 q 0.769976,0 1.178219,-0.30489 0.408242,-0.310058 0.408242,-0.888832 0,-0.594277 -0.423745,-0.909502 -0.418578,-0.320393 -1.204057,-0.320393 -0.428913,0 -0.919838,0.09302 -0.490924,0.09302 -1.080034,0.289387 v -0.930172 q 0.594277,-0.165364 1.11104,-0.248046 0.52193,-0.08268 0.981849,-0.08268 1.188554,0 1.881016,0.542601 0.692462,0.537433 0.692462,1.457271 0,0.640786 -0.366901,1.085202 -0.366902,0.439248 -1.043861,0.60978 z" />
<path
id="path1051"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 54.857386,57.811143 q -0.160196,-0.09302 -0.351398,-0.134358 -0.186035,-0.04651 -0.41341,-0.04651 -0.80615,0 -1.240231,0.527098 -0.428913,0.52193 -0.428913,1.503779 v 3.0489 H 51.467423 V 56.92231 h 0.956011 v 0.899167 q 0.299722,-0.527098 0.780312,-0.780311 0.480589,-0.258382 1.167883,-0.258382 0.09819,0 0.217041,0.0155 0.118855,0.01033 0.263549,0.03617 z" />
<path
id="path1053"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 59.48758,57.800808 v -3.131582 h 0.950843 v 8.040827 H 59.48758 v -0.868161 q -0.299722,0.516763 -0.759641,0.769976 -0.454751,0.248046 -1.095537,0.248046 -1.049028,0 -1.710484,-0.837155 -0.656289,-0.837156 -0.656289,-2.201409 0,-1.364254 0.656289,-2.201409 0.661456,-0.837156 1.710484,-0.837156 0.640786,0 1.095537,0.253214 0.459919,0.248046 0.759641,0.764809 z m -3.240102,2.020542 q 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.188554,-0.594277 0.434081,-0.599445 0.434081,-1.648473 0,-1.049028 -0.434081,-1.643305 -0.43408,-0.599445 -1.188554,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 z" />
<path
id="path1055"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 62.531312,61.397476 h 1.090369 v 1.312577 h -1.090369 z" />
<path
id="path1057"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 70.055376,61.841892 v 3.06957 h -0.956011 v -7.989151 h 0.956011 v 0.878497 q 0.299722,-0.516763 0.754473,-0.764809 0.459919,-0.253214 1.095537,-0.253214 1.054196,0 1.710485,0.837156 0.661456,0.837155 0.661456,2.201409 0,1.364253 -0.661456,2.201409 -0.656289,0.837155 -1.710485,0.837155 -0.635618,0 -1.095537,-0.248046 -0.454751,-0.253213 -0.754473,-0.769976 z M 73.29031,59.82135 q 0,-1.049028 -0.43408,-1.643305 -0.428913,-0.599445 -1.183387,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.183387,-0.594277 0.43408,-0.599445 0.43408,-1.648473 z" />
<path
id="path1059"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 80.804039,59.578471 v 0.465087 h -4.371812 q 0.06201,0.981849 0.58911,1.498612 0.532265,0.511595 1.477941,0.511595 0.547768,0 1.059363,-0.134359 0.516763,-0.134358 1.02319,-0.403075 v 0.899167 q -0.511595,0.217041 -1.049028,0.330729 -0.537433,0.113687 -1.090369,0.113687 -1.384924,0 -2.196241,-0.806149 -0.80615,-0.80615 -0.80615,-2.180739 0,-1.421097 0.764809,-2.253085 0.769976,-0.837156 2.072218,-0.837156 1.167884,0 1.844843,0.754474 0.682126,0.749306 0.682126,2.041212 z M 79.853196,59.29942 q -0.01033,-0.780312 -0.439248,-1.245399 -0.423746,-0.465086 -1.126543,-0.465086 -0.795814,0 -1.276404,0.449584 -0.475421,0.449583 -0.547768,1.266068 z" />
<path
id="path1061"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 85.718452,57.811143 q -0.160196,-0.09302 -0.351398,-0.134358 -0.186035,-0.04651 -0.413411,-0.04651 -0.806149,0 -1.24023,0.527098 -0.428913,0.52193 -0.428913,1.503779 v 3.0489 H 82.328489 V 56.922311 H 83.2845 v 0.899167 q 0.299722,-0.527098 0.780312,-0.780311 0.480589,-0.258382 1.167883,-0.258382 0.09818,0 0.217041,0.0155 0.118855,0.01033 0.263549,0.03617 z" />
<path
id="path1063"
style="text-align:center;text-anchor:middle;fill:#999999"
d="M 90.415825,57.092843 V 57.99201 Q 90.01275,57.785305 89.578669,57.681952 89.144589,57.5786 88.679502,57.5786 q -0.707965,0 -1.064531,0.21704 -0.351399,0.21704 -0.351399,0.651121 0,0.330728 0.253214,0.52193 0.253214,0.186035 1.018023,0.356567 l 0.32556,0.07235 q 1.012855,0.217041 1.4366,0.614948 0.428913,0.39274 0.428913,1.100705 0,0.806149 -0.640785,1.276403 -0.635618,0.470254 -1.751826,0.470254 -0.465086,0 -0.971514,-0.09302 -0.501259,-0.08785 -1.059363,-0.268717 v -0.981849 q 0.527098,0.273885 1.038693,0.413411 0.511595,0.134358 1.012855,0.134358 0.671791,0 1.033525,-0.227376 0.361734,-0.232543 0.361734,-0.651121 0,-0.387572 -0.263549,-0.594277 -0.258381,-0.206705 -1.142046,-0.397907 l -0.330728,-0.07751 q -0.883664,-0.186035 -1.276403,-0.568439 -0.39274,-0.387572 -0.39274,-1.059364 0,-0.816485 0.578774,-1.260901 0.578774,-0.444416 1.643305,-0.444416 0.527098,0 0.992185,0.07752 0.465086,0.07751 0.857826,0.232543 z" />
<path
id="path1065"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 92.379525,61.397476 h 1.09037 v 1.312577 h -1.09037 z" />
<path
id="path1067"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 44.620317,71.262477 q 0.356567,-0.640786 0.852659,-0.945676 0.496092,-0.30489 1.167884,-0.30489 0.904334,0 1.395259,0.635618 0.490924,0.630451 0.490924,1.798334 v 3.493316 h -0.956011 v -3.46231 q 0,-0.831988 -0.294554,-1.235063 -0.294555,-0.403074 -0.899167,-0.403074 -0.738971,0 -1.167884,0.490924 -0.428913,0.490925 -0.428913,1.338415 v 3.271108 h -0.956011 v -3.46231 q 0,-0.837155 -0.294555,-1.235063 -0.294554,-0.403074 -0.909502,-0.403074 -0.728635,0 -1.157548,0.496092 -0.428913,0.490924 -0.428913,1.333247 v 3.271108 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.32556,-0.532265 0.780311,-0.785479 0.454751,-0.253214 1.080034,-0.253214 0.630451,0 1.069699,0.320393 0.444416,0.320393 0.656288,0.930173 z" />
<path
id="path1069"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 53.059052,73.029805 q -1.152381,0 -1.596797,0.263549 -0.444416,0.263549 -0.444416,0.899167 0,0.506428 0.330728,0.80615 0.335896,0.294555 0.909503,0.294555 0.790647,0 1.266068,-0.558104 0.480589,-0.563271 0.480589,-1.493444 v -0.211873 z m 1.896519,-0.392739 v 3.302113 h -0.950844 v -0.878496 q -0.32556,0.527098 -0.811317,0.780311 -0.485757,0.248046 -1.188554,0.248046 -0.888832,0 -1.41593,-0.496092 -0.52193,-0.50126 -0.52193,-1.338415 0,-0.976682 0.651121,-1.472774 0.656288,-0.496092 1.953363,-0.496092 h 1.333247 v -0.09302 q 0,-0.656289 -0.43408,-1.012855 -0.428913,-0.361734 -1.209225,-0.361734 -0.496092,0 -0.966346,0.118855 -0.470254,0.118856 -0.904335,0.356567 v -0.878497 q 0.521931,-0.201537 1.012855,-0.299722 0.490925,-0.103353 0.956011,-0.103353 1.255733,0 1.875849,0.651121 0.620115,0.651121 0.620115,1.974034 z" />
<path
id="path1071"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 60.608955,70.321969 v 0.899167 q -0.403075,-0.206705 -0.837156,-0.310058 -0.43408,-0.103352 -0.899167,-0.103352 -0.707965,0 -1.064531,0.21704 -0.351398,0.21704 -0.351398,0.651121 0,0.330728 0.253213,0.52193 0.253214,0.186035 1.018023,0.356567 l 0.32556,0.07235 q 1.012855,0.217041 1.4366,0.614948 0.428913,0.39274 0.428913,1.100704 0,0.80615 -0.640785,1.276404 -0.635618,0.470254 -1.751826,0.470254 -0.465086,0 -0.971514,-0.09302 -0.501259,-0.08785 -1.059363,-0.268717 v -0.981849 q 0.527098,0.273885 1.038693,0.413411 0.511595,0.134358 1.012855,0.134358 0.671791,0 1.033525,-0.227376 0.361734,-0.232543 0.361734,-0.651121 0,-0.387572 -0.263549,-0.594277 -0.258381,-0.206705 -1.142045,-0.397907 l -0.330729,-0.07751 q -0.883664,-0.186035 -1.276403,-0.568439 -0.39274,-0.387572 -0.39274,-1.059364 0,-0.816485 0.578774,-1.260901 0.578774,-0.444416 1.643305,-0.444416 0.527098,0 0.992185,0.07752 0.465086,0.07751 0.857826,0.232543 z" />
<path
id="path1073"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 66.6034,70.373645 v 0.888832 q -0.403074,-0.222208 -0.811317,-0.330728 -0.403075,-0.113688 -0.816485,-0.113688 -0.925005,0 -1.4366,0.589109 -0.511595,0.583942 -0.511595,1.643306 0,1.059363 0.511595,1.648473 0.511595,0.583942 1.4366,0.583942 0.41341,0 0.816485,-0.108521 0.408243,-0.113687 0.811317,-0.335895 v 0.878496 q -0.397907,0.186035 -0.82682,0.279052 -0.423745,0.09302 -0.904335,0.09302 -1.307409,0 -2.077386,-0.821652 -0.769976,-0.821653 -0.769976,-2.216912 0,-1.41593 0.775144,-2.227247 0.780312,-0.811318 2.13423,-0.811318 0.439248,0 0.857826,0.09302 0.418578,0.08785 0.811317,0.268716 z" />
<path
id="path1075"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 68.401736,74.626602 h 1.090369 v 1.312577 h -1.090369 z" />
<path
id="path1077"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 78.695648,70.321969 v 0.899167 q -0.403075,-0.206705 -0.837156,-0.310058 -0.434081,-0.103352 -0.899167,-0.103352 -0.707965,0 -1.064531,0.21704 -0.351399,0.21704 -0.351399,0.651121 0,0.330728 0.253214,0.52193 0.253214,0.186035 1.018023,0.356567 l 0.32556,0.07235 q 1.012855,0.217041 1.4366,0.614948 0.428913,0.39274 0.428913,1.100704 0,0.80615 -0.640785,1.276404 -0.635619,0.470254 -1.751826,0.470254 -0.465086,0 -0.971514,-0.09302 -0.50126,-0.08785 -1.059363,-0.268717 v -0.981849 q 0.527098,0.273885 1.038693,0.413411 0.511595,0.134358 1.012855,0.134358 0.671791,0 1.033525,-0.227376 0.361734,-0.232543 0.361734,-0.651121 0,-0.387572 -0.263549,-0.594277 -0.258382,-0.206705 -1.142046,-0.397907 l -0.330728,-0.07751 q -0.883664,-0.186035 -1.276404,-0.568439 -0.392739,-0.387572 -0.392739,-1.059364 0,-0.816485 0.578774,-1.260901 0.578774,-0.444416 1.643305,-0.444416 0.527098,0 0.992185,0.07752 0.465086,0.07751 0.857826,0.232543 z" />
<path
id="path1079"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 80.52499,70.151437 h 0.950843 v 5.787742 H 80.52499 Z m 0,-2.253085 h 0.950843 v 1.204057 H 80.52499 Z" />
<path
id="path1081"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 88.271262,72.445863 v 3.493316 h -0.950844 v -3.46231 q 0,-0.821652 -0.320393,-1.229895 -0.320392,-0.408242 -0.961178,-0.408242 -0.769977,0 -1.214393,0.490924 -0.444415,0.490925 -0.444415,1.338415 v 3.271108 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.341063,-0.52193 0.800982,-0.780311 0.465086,-0.258382 1.069698,-0.258382 0.997352,0 1.508947,0.620115 0.511596,0.614948 0.511596,1.813837 z" />
<path
id="path1083"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 93.986657,72.978129 q 0,-1.033525 -0.428913,-1.601964 -0.423746,-0.568439 -1.193722,-0.568439 -0.764809,0 -1.193722,0.568439 -0.423745,0.568439 -0.423745,1.601964 0,1.028358 0.423745,1.596797 0.428913,0.568439 1.193722,0.568439 0.769976,0 1.193722,-0.568439 0.428913,-0.568439 0.428913,-1.596797 z m 0.950843,2.24275 q 0,1.477941 -0.656289,2.196241 -0.656288,0.723468 -2.010207,0.723468 -0.501259,0 -0.945675,-0.07751 -0.444416,-0.07235 -0.862994,-0.227376 v -0.925005 q 0.418578,0.227376 0.82682,0.335896 0.408243,0.10852 0.831988,0.10852 0.935341,0 1.400427,-0.490925 0.465087,-0.485757 0.465087,-1.472773 v -0.470254 q -0.294555,0.511595 -0.754474,0.764808 -0.459919,0.253214 -1.100704,0.253214 -1.064532,0 -1.715653,-0.811317 -0.651121,-0.811318 -0.651121,-2.149733 0,-1.343583 0.651121,-2.1549 0.651121,-0.811318 1.715653,-0.811318 0.640785,0 1.100704,0.253214 0.459919,0.253214 0.754474,0.764809 V 70.151437 H 94.9375 Z" />
<path
id="path1085"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 97.030388,74.626602 h 1.09037 v 1.312577 h -1.09037 z" />
</g>
<path
sodipodi:nodetypes="cccc"
id="path1169-1"
d="m 154.51473,89.585299 9.34226,9.289855 h 40.1026 L 213.549,89.28574"
style="fill:none;stroke:#808080;stroke-width:0.964999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1354);fill:#808080;fill-opacity:1;stroke:none"
id="text1352"
transform="translate(131.61628,-14.422261)"
aria-label="object">
<path
style="fill:#808080"
id="path4403"
d="m 39.076039,122.71137 q -0.764808,0 -1.209224,0.59945 -0.444416,0.59427 -0.444416,1.63297 0,1.03869 0.439248,1.63813 0.444416,0.59428 1.214392,0.59428 0.759642,0 1.204058,-0.59944 0.444415,-0.59945 0.444415,-1.63297 0,-1.02836 -0.444415,-1.62781 -0.444416,-0.60461 -1.204058,-0.60461 z m 0,-0.80615 q 1.240231,0 1.948196,0.80615 0.707965,0.80615 0.707965,2.23242 0,1.42109 -0.707965,2.23241 -0.707965,0.80615 -1.948196,0.80615 -1.245398,0 -1.953362,-0.80615 -0.702798,-0.81132 -0.702798,-2.23241 0,-1.42627 0.702798,-2.23242 0.707964,-0.80615 1.953362,-0.80615 z" />
<path
style="fill:#808080"
id="path4405"
d="m 47.45793,124.94379 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188554,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04902 0.428913,1.64847 0.43408,0.59428 1.188554,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59945 0.434081,-1.64847 z m -3.234934,-2.02055 q 0.299722,-0.51676 0.754473,-0.7648 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710485,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656289,0.83715 -1.710485,0.83715 -0.635618,0 -1.095537,-0.24805 -0.454751,-0.25321 -0.754473,-0.76997 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z" />
<path
style="fill:#808080"
id="path4407"
d="m 50.021073,122.04475 h 0.950843 v 5.89109 q 0,1.10587 -0.423745,1.60197 -0.418578,0.49609 -1.353919,0.49609 h -0.361733 v -0.80615 h 0.253213 q 0.542601,0 0.738971,-0.25321 0.19637,-0.24805 0.19637,-1.0387 z m 0,-2.25309 h 0.950843 v 1.20406 h -0.950843 z" />
<path
style="fill:#808080"
id="path4409"
d="m 57.906871,124.70091 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49862 0.532266,0.51159 1.477942,0.51159 0.547768,0 1.059363,-0.13436 0.516763,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21705 -1.049028,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.806149,-0.80615 -0.806149,-2.18074 0,-1.42109 0.764808,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844843,0.75448 0.682126,0.7493 0.682126,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78032 -0.439248,-1.2454 -0.423746,-0.46509 -1.126543,-0.46509 -0.795814,0 -1.276404,0.44959 -0.475421,0.44958 -0.547768,1.26606 z" />
<path
style="fill:#808080"
id="path4411"
d="m 63.632602,122.26696 v 0.88883 q -0.403075,-0.22221 -0.811318,-0.33073 -0.403075,-0.11369 -0.816485,-0.11369 -0.925005,0 -1.4366,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.511595,0.58394 1.4366,0.58394 0.41341,0 0.816485,-0.10852 0.408243,-0.11369 0.811318,-0.33589 v 0.87849 q -0.397908,0.18604 -0.826821,0.27905 -0.423745,0.093 -0.904334,0.093 -1.30741,0 -2.077386,-0.82165 -0.769977,-0.82165 -0.769977,-2.21691 0,-1.41593 0.775144,-2.22725 0.780312,-0.81132 2.13423,-0.81132 0.439248,0 0.857826,0.093 0.418578,0.0879 0.811318,0.26872 z" />
<path
style="fill:#808080"
id="path4413"
d="m 66.237085,120.40144 v 1.64331 h 1.95853 v 0.73897 h -1.95853 v 3.14192 q 0,0.70796 0.191202,0.9095 0.19637,0.20154 0.790647,0.20154 h 0.976681 v 0.79581 h -0.976681 q -1.100705,0 -1.519282,-0.40824 -0.418578,-0.41341 -0.418578,-1.49861 v -3.14192 h -0.69763 v -0.73897 h 0.69763 v -1.64331 z" />
</g>
</g>
<text
xml:space="preserve"
id="text1371"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1373);fill:#000000;fill-opacity:1;stroke:none;"
transform="translate(5.342511,1.1060936)" />
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1385);fill:#000000;fill-opacity:1;stroke:none"
id="text1383"
transform="matrix(0.91075878,0,0,0.91075878,-60.316824,112.33249)"
aria-label="or">
<path
id="path3493"
style="shape-inside:url(#rect1385)"
d="m 41.924122,-39.945734 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path3495"
style="shape-inside:url(#rect1385)"
d="m 47.98887,-39.767967 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.421679 -0.343131,0.417546 -0.343131,1.203028 v 2.439129 H 45.27689 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624252 0.384473,-0.206705 0.934311,-0.206705 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.85;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1391);fill:#000000;fill-opacity:1;stroke:none"
id="text1389"
transform="matrix(0.91075878,0,0,0.91075878,-49.155624,146.73253)"
aria-label="enclitic (mini) pronoun">
<path
id="path3498"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 7.5745021,-65.810929 v 0.372071 H 4.0770398 q 0.049609,0.785482 0.4712892,1.198893 0.425814,0.409278 1.1823573,0.409278 0.4382163,0 0.8474938,-0.107487 0.4134116,-0.107487 0.818555,-0.322461 v 0.719336 q -0.4092775,0.173633 -0.8392256,0.264583 -0.4299481,0.09095 -0.8722985,0.09095 -1.1079432,0 -1.7569994,-0.644922 -0.6449222,-0.644922 -0.6449222,-1.744597 0,-1.136882 0.6118492,-1.802475 0.6159834,-0.669727 1.6577807,-0.669727 0.9343102,0 1.4758794,0.603581 0.5457034,0.599447 0.5457034,1.632977 z m -0.7606774,-0.223242 q -0.00827,-0.624252 -0.3513999,-0.996322 -0.3389975,-0.372071 -0.9012373,-0.372071 -0.6366539,0 -1.0211267,0.359668 -0.3803387,0.359669 -0.4382163,1.012859 z" />
<path
id="path3500"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 12.671867,-66.100317 v 2.794663 H 11.91119 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.9715173,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 8.7940662 v -4.630211 h 0.7648115 v 0.719337 q 0.2728517,-0.417546 0.6407883,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path3502"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 17.529454,-67.758098 v 0.711068 q -0.322461,-0.177767 -0.649056,-0.264583 -0.322461,-0.09095 -0.65319,-0.09095 -0.740007,0 -1.149285,0.47129 -0.409277,0.467155 -0.409277,1.314649 0,0.847493 0.409277,1.318783 0.409278,0.467155 1.149285,0.467155 0.330729,0 0.65319,-0.08682 0.326595,-0.09095 0.649056,-0.268717 v 0.7028 q -0.318327,0.148828 -0.661458,0.223242 -0.338998,0.07441 -0.723471,0.07441 -1.045931,0 -1.661914,-0.657325 -0.615984,-0.657324 -0.615984,-1.773535 0,-1.132748 0.620118,-1.781805 0.624251,-0.649056 1.70739,-0.649056 0.3514,0 0.686263,0.07441 0.334863,0.07028 0.649056,0.214974 z" />
<path
id="path3504"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 18.860639,-69.738339 h 0.760677 v 6.432685 h -0.760677 z" />
<path
id="path3506"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 21.208818,-67.935865 h 0.760677 v 4.630211 h -0.760677 z m 0,-1.802474 h 0.760677 v 0.963249 h -0.760677 z" />
<path
id="path3508"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 24.309404,-69.250514 v 1.314649 h 1.56683 v 0.591179 h -1.56683 v 2.513543 q 0,0.566374 0.152962,0.727604 0.157097,0.161231 0.63252,0.161231 h 0.781348 v 0.636654 h -0.781348 q -0.880567,0 -1.21543,-0.326596 -0.334864,-0.330729 -0.334864,-1.198893 v -2.513543 h -0.558105 v -0.591179 h 0.558105 v -1.314649 z" />
<path
id="path3510"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 26.880824,-67.935865 h 0.760678 v 4.630211 h -0.760678 z m 0,-1.802474 h 0.760678 v 0.963249 h -0.760678 z" />
<path
id="path3512"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 32.561099,-67.758098 v 0.711068 q -0.322461,-0.177767 -0.649056,-0.264583 -0.322461,-0.09095 -0.653191,-0.09095 -0.740006,0 -1.149284,0.47129 -0.409277,0.467155 -0.409277,1.314649 0,0.847493 0.409277,1.318783 0.409278,0.467155 1.149284,0.467155 0.33073,0 0.653191,-0.08682 0.326595,-0.09095 0.649056,-0.268717 v 0.7028 q -0.318327,0.148828 -0.661459,0.223242 -0.338997,0.07441 -0.72347,0.07441 -1.045931,0 -1.661915,-0.657325 -0.615983,-0.657324 -0.615983,-1.773535 0,-1.132748 0.620117,-1.781805 0.624252,-0.649056 1.70739,-0.649056 0.3514,0 0.686264,0.07441 0.334863,0.07028 0.649056,0.214974 z" />
<path
id="path3514"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 38.415007,-69.730071 q -0.553971,0.950847 -0.822689,1.881023 -0.268717,0.930176 -0.268717,1.885157 0,0.954981 0.268717,1.893425 0.272852,0.93431 0.822689,1.881023 h -0.661458 q -0.620118,-0.971517 -0.930177,-1.909962 -0.305924,-0.938444 -0.305924,-1.864486 0,-0.921908 0.305924,-1.856218 0.305925,-0.934311 0.930177,-1.909962 z" />
<path
id="path3516"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 43.49997,-67.04703 q 0.285254,-0.51263 0.682129,-0.756543 0.396875,-0.243913 0.934311,-0.243913 0.72347,0 1.116211,0.508497 0.392741,0.504362 0.392741,1.438672 v 2.794663 h -0.764811 v -2.769858 q 0,-0.665593 -0.235645,-0.988054 -0.235645,-0.322461 -0.719336,-0.322461 -0.591179,0 -0.934311,0.392741 -0.343131,0.392741 -0.343131,1.070736 v 2.616896 h -0.764812 v -2.769858 q 0,-0.669727 -0.235644,-0.988054 -0.235645,-0.322461 -0.727605,-0.322461 -0.58291,0 -0.926042,0.396875 -0.343132,0.392741 -0.343132,1.066602 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.26045,-0.425814 0.624252,-0.628386 0.363802,-0.202572 0.86403,-0.202572 0.504362,0 0.855762,0.256315 0.355534,0.256316 0.525033,0.744141 z" />
<path
id="path3518"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 48.146718,-67.935865 h 0.760678 v 4.630211 h -0.760678 z m 0,-1.802474 h 0.760678 v 0.963249 h -0.760678 z" />
<path
id="path3520"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 54.343756,-66.100317 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path3522"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 55.869245,-67.935865 h 0.760677 v 4.630211 h -0.760677 z m 0,-1.802474 h 0.760677 v 0.963249 h -0.760677 z" />
<path
id="path3524"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 58.097534,-69.730071 h 0.661459 q 0.620117,0.975651 0.926042,1.909962 0.310059,0.93431 0.310059,1.856218 0,0.926042 -0.310059,1.864486 -0.305925,0.938445 -0.926042,1.909962 h -0.661459 q 0.549838,-0.946713 0.818555,-1.881023 0.272852,-0.938444 0.272852,-1.893425 0,-0.954981 -0.272852,-1.885157 -0.268717,-0.930176 -0.818555,-1.881023 z" />
<path
id="path3526"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 15.726979,-55.004382 v 2.455665 h -0.764811 v -6.391344 h 0.764811 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367937,-0.202572 0.876433,-0.202572 0.84336,0 1.368392,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525032,0.669727 -1.368392,0.669727 -0.508496,0 -0.876433,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343131,-0.479557 -0.946712,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343132,0.475424 -0.343132,1.314649 0,0.839226 0.343132,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946712,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z" />
<path
id="path3528"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 23.048499,-58.228993 q -0.128158,-0.07441 -0.28112,-0.107487 -0.148828,-0.03721 -0.330729,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343132,0.417546 -0.343132,1.203028 v 2.439128 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.239779,-0.421679 0.624252,-0.624251 0.384473,-0.206706 0.93431,-0.206706 0.07855,0 0.173633,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
<path
id="path3530"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 25.466957,-58.40676 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.30638 0,0.830958 0.3514,1.310515 0.355534,0.475424 0.971517,0.475424 0.607716,0 0.96325,-0.479558 0.355534,-0.479557 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302246 -0.355534,-0.483692 -0.96325,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785939 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562695,-0.644922 -0.56224,-0.649057 -0.56224,-1.785939 0,-1.141016 0.56224,-1.785938 0.566373,-0.644922 1.562695,-0.644922 z" />
<path
id="path3532"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 32.697526,-57.104513 v 2.794662 h -0.760677 v -2.769857 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path3534"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 36.017222,-58.40676 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.30638 0,0.830958 0.3514,1.310515 0.355534,0.475424 0.971517,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302246 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785939 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649057 -0.56224,-1.785939 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path3536"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 39.32038,-56.13713 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256316,0.988054 0.256315,0.326595 0.768945,0.326595 0.615984,0 0.971518,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760677 v 4.63021 h -0.760677 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363803,0.202572 -0.847494,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z" />
<path
id="path3538"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 48.622142,-57.104513 v 2.794662 h -0.760677 v -2.769857 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417545 0.640788,-0.624251 0.372071,-0.206706 0.855763,-0.206706 0.797884,0 1.207161,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
</g>
<path
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;fill:none;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.46, 1.73;stroke-dashoffset:0;stroke-opacity:1"
d="m 65.472822,127.48303 -10e-7,14.69983 H 141.1101 v -18.4416"
id="path1161"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -0,0 +1,472 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="803.02252"
height="309.53973"
viewBox="0 0 212.46637 81.899055"
version="1.1"
id="svg8"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="grammatirally-transitive-present.svg">
<defs
id="defs2">
<rect
id="rect982"
height="72.949402"
width="64.255951"
y="40.11702"
x="37.063869" />
<rect
x="-15.096844"
y="-70.55368"
width="93.738098"
height="46.113094"
id="rect1391" />
<rect
x="39.331726"
y="-43.339394"
width="51.404762"
height="25.324406"
id="rect1385" />
<rect
x="38.953751"
y="35.657631"
width="78.997025"
height="25.324406"
id="rect1379" />
<rect
x="57.474583"
y="33.389771"
width="29.104168"
height="23.434525"
id="rect1373" />
<rect
x="4.935894"
y="6.553463"
width="112.6993"
height="77.422302"
id="rect1360" />
<rect
x="35.83614"
y="118.46915"
width="93.738098"
height="35.151787"
id="rect1354" />
<rect
x="-56.012074"
y="116.23755"
width="76.351189"
height="28.348213"
id="rect1348" />
<rect
x="35.529755"
y="61.904251"
width="50.263763"
height="44.73629"
id="rect1165" />
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1113" />
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path841"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fillRule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<rect
id="rect1113-9"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
<rect
id="rect1141"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="724.65767"
inkscape:cy="182.77907"
inkscape:document-units="mm"
inkscape:current-layer="text1163-1"
inkscape:document-rotation="0"
showgrid="false"
units="px"
fit-margin-top="10"
fit-margin-right="10"
fit-margin-bottom="10"
fit-margin-left="10"
inkscape:window-width="1515"
inkscape:window-height="1080"
inkscape:window-x="2167"
inkscape:window-y="118"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(52.843619,-63.362142)">
<path
id="rect839-4"
style="opacity:1;fill:none;stroke:#000000;stroke-width:1.115;stroke-miterlimit:4;stroke-dasharray:none"
d="m 122.9777,85.081856 h 33.44172 V 118.52357 H 122.9777 Z" />
<g
aria-label="verb"
transform="translate(90.461538,-16.314846)"
id="text1111-8"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1113-9);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 37.356241,115.83576 h 1.007687 l 1.808669,4.85757 1.80867,-4.85757 h 1.007687 l -2.170403,5.78775 h -1.291907 z"
id="path1187" />
<path
d="m 49.252118,118.49192 v 0.46509 h -4.371813 q 0.06201,0.98185 0.58911,1.49861 0.532265,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40308 v 0.89917 q -0.511595,0.21704 -1.049029,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04121 z m -0.950844,-0.27905 q -0.01033,-0.78031 -0.439248,-1.2454 -0.423745,-0.46508 -1.126543,-0.46508 -0.795814,0 -1.276403,0.44958 -0.475422,0.44958 -0.547769,1.26607 z"
id="path1189" />
<path
d="m 54.166531,116.7246 q -0.160196,-0.093 -0.351398,-0.13436 -0.186035,-0.0465 -0.41341,-0.0465 -0.80615,0 -1.240231,0.5271 -0.428913,0.52193 -0.428913,1.50378 v 3.0489 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.299723,-0.5271 0.780312,-0.78031 0.480589,-0.25838 1.167883,-0.25838 0.09819,0 0.217041,0.0155 0.118855,0.0103 0.263549,0.0362 z"
id="path1191" />
<path
d="m 59.32899,118.7348 q 0,-1.04903 -0.43408,-1.6433 -0.428913,-0.59945 -1.183387,-0.59945 -0.754473,0 -1.188554,0.59945 -0.428913,0.59427 -0.428913,1.6433 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188554,0.59428 0.754474,0 1.183387,-0.59428 0.43408,-0.59944 0.43408,-1.64847 z m -3.234934,-2.02054 q 0.299722,-0.51676 0.754474,-0.76481 0.459918,-0.25321 1.095536,-0.25321 1.054196,0 1.710485,0.83715 0.661456,0.83716 0.661456,2.20141 0,1.36426 -0.661456,2.20141 -0.656289,0.83716 -1.710485,0.83716 -0.635618,0 -1.095536,-0.24805 -0.454752,-0.25321 -0.754474,-0.76998 v 0.86817 h -0.956011 v -8.04083 h 0.956011 z"
id="path1193" />
</g>
<g
aria-label="plain noun / pronoun"
transform="translate(-81.650166,5.4265352)"
id="text1163"
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1165);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 51.876136,67.854117 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367936,-0.202572 0.876432,-0.202572 0.84336,0 1.368393,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669727 -1.368393,0.669727 -0.508496,0 -0.876432,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475424 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1196" />
<path
d="m 56.514614,62.115963 h 0.760678 v 6.432685 h -0.760678 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1198" />
<path
d="m 60.967057,66.221141 q -0.921908,0 -1.277442,0.21084 -0.355534,0.21084 -0.355534,0.719336 0,0.405143 0.264584,0.644922 0.268717,0.235645 0.727604,0.235645 0.63252,0 1.012859,-0.446485 0.384473,-0.450618 0.384473,-1.194759 v -0.169499 z m 1.517221,-0.314193 v 2.6417 h -0.760677 v -0.702799 q -0.26045,0.421679 -0.649057,0.624251 -0.388607,0.198438 -0.950846,0.198438 -0.711068,0 -1.132748,-0.396876 -0.417546,-0.401009 -0.417546,-1.070736 0,-0.781348 0.520899,-1.178223 0.525032,-0.396875 1.562696,-0.396875 h 1.066602 v -0.07441 q 0,-0.525033 -0.347266,-0.810287 -0.343132,-0.289388 -0.967383,-0.289388 -0.396876,0 -0.77308,0.09508 -0.376205,0.09508 -0.723471,0.285254 v -0.7028 q 0.417546,-0.161231 0.810287,-0.239779 0.392741,-0.08268 0.764812,-0.08268 1.00459,0 1.500684,0.520899 0.496094,0.520898 0.496094,1.579231 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1200" />
<path
d="m 64.055242,63.918438 h 0.760678 v 4.63021 h -0.760678 z m 0,-1.802475 h 0.760678 v 0.96325 h -0.760678 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1202" />
<path
d="m 70.252282,65.753986 v 2.794662 H 69.491605 V 65.77879 q 0,-0.657324 -0.256315,-0.983919 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1204" />
<path
d="m 51.88027,74.643985 v 2.794663 H 51.119593 V 74.66879 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1206" />
<path
d="m 55.199965,73.341738 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1208" />
<path
d="m 58.503124,75.611368 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359669,-0.392741 0.359669,-1.070736 v -2.625164 h 0.760677 v 4.630211 H 61.620248 V 76.72758 q -0.276986,0.42168 -0.644923,0.628385 -0.363802,0.202572 -0.847493,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1210" />
<path
d="m 67.804886,74.643985 v 2.794663 H 67.044208 V 74.66879 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1212" />
<path
d="m 73.377673,71.266412 h 0.7028 l -2.14974,6.957718 h -0.7028 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1214" />
<path
d="m 44.616628,85.634116 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239778,-0.413412 0.603581,-0.61185 0.367936,-0.202571 0.876432,-0.202571 0.84336,0 1.368393,0.669727 0.529167,0.669726 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669726 -1.368393,0.669726 -0.508496,0 -0.876432,-0.198437 -0.363803,-0.202572 -0.603581,-0.615983 z m 2.587956,-1.61644 q 0,-0.839226 -0.347265,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475423 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347265,-0.479557 0.347265,-1.318783 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1216" />
<path
d="m 51.938147,82.409505 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343131,0.417545 -0.343131,1.203027 v 2.439129 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624251 0.384473,-0.206706 0.934311,-0.206706 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1218" />
<path
d="m 54.356606,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1220" />
<path
d="m 61.587175,83.533984 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451074 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1222" />
<path
d="m 64.90687,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.562239,-0.649056 -0.562239,-1.785938 0,-1.141016 0.562239,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1224" />
<path
d="m 68.210028,84.501368 v -2.802931 h 0.760678 v 2.773992 q 0,0.657324 0.256315,0.988054 0.256315,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760678 v 4.63021 h -0.760678 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363802,0.202571 -0.847494,0.202571 -0.797884,0 -1.211296,-0.496094 -0.413412,-0.496093 -0.413412,-1.451074 z m 1.914096,-2.914552 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1226" />
<path
d="m 77.51179,83.533984 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451074 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1228" />
</g>
<g
id="g1333"
transform="translate(7.9375,-1.5481652)">
<path
sodipodi:nodetypes="cccc"
id="path1169"
d="m -57.795068,100.26406 9.342265,9.28984 h 40.1025978 l 9.589407,-9.589405"
style="fill:none;stroke:#000000;stroke-width:0.965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
aria-label="subject / agent"
transform="translate(-9.827381,-4.5357143)"
id="text1346"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1348);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m -35.814111,119.98481 v 0.89917 q -0.403075,-0.20671 -0.837156,-0.31006 -0.43408,-0.10335 -0.899167,-0.10335 -0.707965,0 -1.064531,0.21704 -0.351398,0.21704 -0.351398,0.65112 0,0.33073 0.253213,0.52193 0.253214,0.18603 1.018023,0.35657 l 0.32556,0.0723 q 1.012855,0.21704 1.436601,0.61495 0.428913,0.39274 0.428913,1.1007 0,0.80615 -0.640786,1.27641 -0.635618,0.47025 -1.751826,0.47025 -0.465086,0 -0.971513,-0.093 -0.50126,-0.0878 -1.059364,-0.26871 v -0.98185 q 0.527098,0.27388 1.038693,0.41341 0.511595,0.13436 1.012855,0.13436 0.671791,0 1.033525,-0.22738 0.361734,-0.23254 0.361734,-0.65112 0,-0.38757 -0.263549,-0.59428 -0.258381,-0.2067 -1.142045,-0.3979 l -0.330729,-0.0775 q -0.883664,-0.18603 -1.276403,-0.56844 -0.39274,-0.38757 -0.39274,-1.05936 0,-0.81649 0.578774,-1.2609 0.578774,-0.44442 1.643306,-0.44442 0.527097,0 0.992184,0.0775 0.465086,0.0775 0.857826,0.23254 z"
style="text-align:center;text-anchor:middle"
id="path4222" />
<path
d="m -34.082956,123.31793 v -3.50365 h 0.950843 v 3.46748 q 0,0.82165 0.320393,1.23506 0.320393,0.40824 0.961179,0.40824 0.769976,0 1.214392,-0.49092 0.449583,-0.49093 0.449583,-1.33842 v -3.28144 h 0.950844 v 5.78774 h -0.950844 v -0.88883 q -0.346231,0.5271 -0.806149,0.78548 -0.454751,0.25321 -1.059364,0.25321 -0.997352,0 -1.514114,-0.62011 -0.516763,-0.62012 -0.516763,-1.81384 z m 2.392611,-3.64318 z"
style="text-align:center;text-anchor:middle"
id="path4224" />
<path
d="m -23.112084,122.71332 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188555,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188555,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59944 0.434081,-1.64847 z m -3.234935,-2.02054 q 0.299723,-0.51677 0.754474,-0.76481 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710484,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656288,0.83715 -1.710484,0.83715 -0.635618,0 -1.095537,-0.24804 -0.454751,-0.25322 -0.754474,-0.76998 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z"
style="text-align:center;text-anchor:middle"
id="path4226" />
<path
d="m -20.548942,119.81428 h 0.950844 v 5.89109 q 0,1.10588 -0.423746,1.60197 -0.418577,0.49609 -1.353918,0.49609 h -0.361734 v -0.80615 h 0.253214 q 0.542601,0 0.738971,-0.25321 0.196369,-0.24805 0.196369,-1.0387 z m 0,-2.25309 h 0.950844 v 1.20406 h -0.950844 z"
style="text-align:center;text-anchor:middle"
id="path4228" />
<path
d="m -12.663144,122.47044 v 0.46509 h -4.371812 q 0.06201,0.98184 0.589109,1.49861 0.532266,0.51159 1.477941,0.51159 0.547769,0 1.059364,-0.13436 0.516763,-0.13435 1.02319,-0.40307 v 0.89917 q -0.511595,0.21704 -1.049028,0.33072 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.42109 0.764809,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844842,0.75448 0.682127,0.7493 0.682127,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78031 -0.439249,-1.2454 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44959 -0.475422,0.44958 -0.547768,1.26606 z"
style="text-align:center;text-anchor:middle"
id="path4230" />
<path
d="m -6.9374138,120.03649 v 0.88883 q -0.4030748,-0.22221 -0.8113174,-0.33073 -0.4030748,-0.11369 -0.816485,-0.11369 -0.9250052,0 -1.4365998,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.5115946,0.58394 1.4365998,0.58394 0.4134102,0 0.816485,-0.10852 0.4082426,-0.11369 0.8113174,-0.33589 v 0.87849 q -0.3979072,0.18604 -0.8268202,0.27905 -0.4237454,0.093 -0.9043347,0.093 -1.3074096,0 -2.0773863,-0.82165 -0.769976,-0.82165 -0.769976,-2.21691 0,-1.41593 0.775144,-2.22725 0.7803116,-0.81132 2.1342298,-0.81132 0.4392483,0 0.857826,0.093 0.4185778,0.0879 0.8113174,0.26872 z"
style="text-align:center;text-anchor:middle"
id="path4232" />
<path
d="m -4.3329304,118.17097 v 1.64331 h 1.9585306 v 0.73897 h -1.9585306 v 3.14192 q 0,0.70796 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766815 v 0.79581 h -0.9766815 q -1.1007045,0 -1.5192823,-0.40824 -0.4185777,-0.41341 -0.4185777,-1.49861 v -3.14192 h -0.6976296 v -0.73897 h 0.6976296 v -1.64331 z"
style="text-align:center;text-anchor:middle"
id="path4234" />
<path
d="M 3.9404424,117.88675 H 4.818939 l -2.6871659,8.69712 H 1.2532765 Z"
style="text-align:center;text-anchor:middle"
id="path4236" />
<path
d="m -29.504439,135.92177 q -1.152381,0 -1.596796,0.26355 -0.444416,0.26355 -0.444416,0.89917 0,0.50643 0.330728,0.80615 0.335896,0.29455 0.909502,0.29455 0.790647,0 1.266069,-0.5581 0.480589,-0.56327 0.480589,-1.49344 v -0.21188 z m 1.896519,-0.39274 v 3.30212 h -0.950843 v -0.8785 q -0.325561,0.5271 -0.811317,0.78031 -0.485757,0.24805 -1.188555,0.24805 -0.888831,0 -1.415929,-0.49609 -0.521931,-0.50126 -0.521931,-1.33842 0,-0.97668 0.651121,-1.47277 0.656289,-0.4961 1.953363,-0.4961 h 1.333248 v -0.093 q 0,-0.65629 -0.434081,-1.01286 -0.428913,-0.36173 -1.209224,-0.36173 -0.496093,0 -0.966347,0.11885 -0.470254,0.11886 -0.904334,0.35657 v -0.8785 q 0.52193,-0.20153 1.012855,-0.29972 0.490924,-0.10335 0.956011,-0.10335 1.255733,0 1.875848,0.65112 0.620115,0.65112 0.620115,1.97403 z"
style="text-align:center;text-anchor:middle"
id="path4238" />
<path
d="m -21.835681,135.8701 q 0,-1.03353 -0.428913,-1.60197 -0.423745,-0.56844 -1.193722,-0.56844 -0.764808,0 -1.193721,0.56844 -0.423746,0.56844 -0.423746,1.60197 0,1.02835 0.423746,1.59679 0.428913,0.56844 1.193721,0.56844 0.769977,0 1.193722,-0.56844 0.428913,-0.56844 0.428913,-1.59679 z m 0.950844,2.24275 q 0,1.47794 -0.656289,2.19624 -0.656289,0.72347 -2.010207,0.72347 -0.50126,0 -0.945676,-0.0775 -0.444415,-0.0724 -0.862993,-0.22737 v -0.92501 q 0.418578,0.22738 0.82682,0.3359 0.408243,0.10852 0.831988,0.10852 0.93534,0 1.400427,-0.49093 0.465086,-0.48575 0.465086,-1.47277 v -0.47026 q -0.294555,0.5116 -0.754473,0.76481 -0.459919,0.25322 -1.100705,0.25322 -1.064531,0 -1.715652,-0.81132 -0.651121,-0.81132 -0.651121,-2.14973 0,-1.34359 0.651121,-2.1549 0.651121,-0.81132 1.715652,-0.81132 0.640786,0 1.100705,0.25321 0.459918,0.25322 0.754473,0.76481 v -0.8785 h 0.950844 z"
style="text-align:center;text-anchor:middle"
id="path4240" />
<path
d="m -13.97572,135.69957 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49861 0.532266,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21704 -1.049028,0.33073 -0.537434,0.11369 -1.09037,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04122 z m -0.950844,-0.27906 q -0.01033,-0.78031 -0.439248,-1.24539 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44958 -0.475422,0.44959 -0.547769,1.26607 z"
style="text-align:center;text-anchor:middle"
id="path4242" />
<path
d="m -7.6040366,135.33783 v 3.49332 H -8.55488 v -3.46231 q 0,-0.82166 -0.3203928,-1.2299 -0.3203929,-0.40824 -0.9611786,-0.40824 -0.7699766,0 -1.2143926,0.49092 -0.444416,0.49093 -0.444416,1.33842 v 3.27111 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.341064,-0.52193 0.800983,-0.78031 0.465086,-0.25838 1.0696983,-0.25838 0.997352,0 1.508947,0.62011 0.5115951,0.61495 0.5115951,1.81384 z"
style="text-align:center;text-anchor:middle"
id="path4244" />
<path
d="m -4.7566745,131.4001 v 1.6433 h 1.9585305 v 0.73898 h -1.9585305 v 3.14191 q 0,0.70797 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766814 v 0.79582 h -0.9766814 q -1.1007045,0 -1.5192823,-0.40825 -0.4185778,-0.41341 -0.4185778,-1.49861 v -3.14191 h -0.6976296 v -0.73898 h 0.6976296 v -1.6433 z"
style="text-align:center;text-anchor:middle"
id="path4246" />
</g>
</g>
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1165);fill:#000000;fill-opacity:1;stroke:none"
id="text1163-1"
transform="translate(5.342511,1.1060936)"
aria-label="plain noun / pronoun">
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect982);fill:#999999;fill-opacity:1;stroke:none"
id="text980"
transform="matrix(0.82417527,0,0,0.82417527,4.7788419,30.747976)"
aria-label="implied
3rd. pers. masc. sing.">
<path
id="path1035"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 50.656106,43.693185 h 0.950843 v 5.787742 h -0.950843 z m 0,-2.253085 h 0.950843 v 1.204057 h -0.950843 z" />
<path
id="path1037"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 58.097488,44.804225 q 0.356566,-0.640786 0.852658,-0.945676 0.496093,-0.30489 1.167884,-0.30489 0.904335,0 1.395259,0.635618 0.490925,0.630451 0.490925,1.798335 v 3.493315 h -0.956011 v -3.46231 q 0,-0.831988 -0.294555,-1.235063 -0.294555,-0.403074 -0.899167,-0.403074 -0.738971,0 -1.167884,0.490924 -0.428913,0.490925 -0.428913,1.338415 v 3.271108 h -0.956011 v -3.46231 q 0,-0.837155 -0.294554,-1.235063 -0.294555,-0.403074 -0.909503,-0.403074 -0.728635,0 -1.157548,0.496092 -0.428913,0.490924 -0.428913,1.333247 v 3.271108 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.325561,-0.532265 0.780312,-0.785479 0.454751,-0.253214 1.080034,-0.253214 0.63045,0 1.069698,0.320393 0.444416,0.320393 0.656289,0.930173 z" />
<path
id="path1039"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 64.825738,48.612766 v 3.06957 h -0.956011 v -7.989151 h 0.956011 v 0.878497 q 0.299722,-0.516763 0.754474,-0.764809 0.459918,-0.253214 1.095536,-0.253214 1.054196,0 1.710485,0.837156 0.661456,0.837155 0.661456,2.201409 0,1.364253 -0.661456,2.201409 -0.656289,0.837155 -1.710485,0.837155 -0.635618,0 -1.095536,-0.248046 -0.454752,-0.253213 -0.754474,-0.769976 z m 3.234934,-2.020542 q 0,-1.049028 -0.43408,-1.643305 -0.428913,-0.599445 -1.183387,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.183387,-0.594277 0.43408,-0.599445 0.43408,-1.648473 z" />
<path
id="path1041"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 70.623814,41.4401 h 0.950843 v 8.040827 h -0.950843 z" />
<path
id="path1043"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 73.559027,43.693185 h 0.950844 v 5.787742 h -0.950844 z m 0,-2.253085 h 0.950844 v 1.204057 h -0.950844 z" />
<path
id="path1045"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 81.444825,46.349345 v 0.465087 h -4.371812 q 0.06201,0.981849 0.589109,1.498612 0.532266,0.511595 1.477941,0.511595 0.547769,0 1.059364,-0.134359 0.516763,-0.134358 1.02319,-0.403075 v 0.899167 q -0.511595,0.217041 -1.049028,0.330729 -0.537433,0.113687 -1.09037,0.113687 -1.384924,0 -2.196241,-0.806149 -0.80615,-0.80615 -0.80615,-2.180739 0,-1.421097 0.764809,-2.253085 0.769976,-0.837156 2.072218,-0.837156 1.167884,0 1.844843,0.754474 0.682127,0.749306 0.682127,2.041212 z m -0.950843,-0.279051 q -0.01034,-0.780312 -0.439249,-1.245399 -0.423745,-0.465086 -1.126542,-0.465086 -0.795815,0 -1.276404,0.449584 -0.475422,0.449583 -0.547769,1.266068 z" />
<path
id="path1047"
style="text-align:center;text-anchor:middle;fill:#999999"
d="M 86.813989,44.571682 V 41.4401 h 0.950843 v 8.040827 h -0.950843 v -0.868161 q -0.299723,0.516763 -0.759641,0.769976 -0.454751,0.248046 -1.095537,0.248046 -1.049028,0 -1.710485,-0.837155 -0.656288,-0.837156 -0.656288,-2.201409 0,-1.364254 0.656288,-2.201409 0.661457,-0.837156 1.710485,-0.837156 0.640786,0 1.095537,0.253214 0.459918,0.248046 0.759641,0.764809 z m -3.240102,2.020542 q 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.188554,-0.594277 0.434081,-0.599445 0.434081,-1.648473 0,-1.049028 -0.434081,-1.643305 -0.43408,-0.599445 -1.188554,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 z" />
<path
id="path1049"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 48.061957,58.550114 q 0.749306,0.160196 1.167884,0.666623 0.423745,0.506428 0.423745,1.250566 0,1.142046 -0.785479,1.767329 -0.78548,0.625282 -2.232415,0.625282 -0.485757,0 -1.00252,-0.09819 -0.511595,-0.09302 -1.059363,-0.284219 v -1.007687 q 0.434081,0.253213 0.950843,0.382404 0.516763,0.129191 1.080034,0.129191 0.981849,0 1.493444,-0.387572 0.516763,-0.387572 0.516763,-1.126543 0,-0.682127 -0.480589,-1.064531 Q 47.658882,59.0152 46.806224,59.0152 h -0.899167 v -0.857826 h 0.940508 q 0.769976,0 1.178219,-0.30489 0.408242,-0.310058 0.408242,-0.888832 0,-0.594277 -0.423745,-0.909502 -0.418578,-0.320393 -1.204057,-0.320393 -0.428913,0 -0.919838,0.09302 -0.490924,0.09302 -1.080034,0.289387 v -0.930172 q 0.594277,-0.165364 1.11104,-0.248046 0.52193,-0.08268 0.981849,-0.08268 1.188554,0 1.881016,0.542601 0.692462,0.537433 0.692462,1.457271 0,0.640786 -0.366901,1.085202 -0.366902,0.439248 -1.043861,0.60978 z" />
<path
id="path1051"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 54.857386,57.811143 q -0.160196,-0.09302 -0.351398,-0.134358 -0.186035,-0.04651 -0.41341,-0.04651 -0.80615,0 -1.240231,0.527098 -0.428913,0.52193 -0.428913,1.503779 v 3.0489 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.299722,-0.527098 0.780312,-0.780311 0.480589,-0.258382 1.167883,-0.258382 0.09819,0 0.217041,0.0155 0.118855,0.01033 0.263549,0.03617 z" />
<path
id="path1053"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 59.48758,57.800808 v -3.131582 h 0.950843 v 8.040827 H 59.48758 v -0.868161 q -0.299722,0.516763 -0.759641,0.769976 -0.454751,0.248046 -1.095537,0.248046 -1.049028,0 -1.710484,-0.837155 -0.656289,-0.837156 -0.656289,-2.201409 0,-1.364254 0.656289,-2.201409 0.661456,-0.837156 1.710484,-0.837156 0.640786,0 1.095537,0.253214 0.459919,0.248046 0.759641,0.764809 z m -3.240102,2.020542 q 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.188554,-0.594277 0.434081,-0.599445 0.434081,-1.648473 0,-1.049028 -0.434081,-1.643305 -0.43408,-0.599445 -1.188554,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 z" />
<path
id="path1055"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 62.531312,61.397476 h 1.090369 v 1.312577 h -1.090369 z" />
<path
id="path1057"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 70.055376,61.841892 v 3.06957 h -0.956011 v -7.989151 h 0.956011 v 0.878497 q 0.299722,-0.516763 0.754473,-0.764809 0.459919,-0.253214 1.095537,-0.253214 1.054196,0 1.710485,0.837156 0.661456,0.837155 0.661456,2.201409 0,1.364253 -0.661456,2.201409 -0.656289,0.837155 -1.710485,0.837155 -0.635618,0 -1.095537,-0.248046 -0.454751,-0.253213 -0.754473,-0.769976 z M 73.29031,59.82135 q 0,-1.049028 -0.43408,-1.643305 -0.428913,-0.599445 -1.183387,-0.599445 -0.754473,0 -1.188554,0.599445 -0.428913,0.594277 -0.428913,1.643305 0,1.049028 0.428913,1.648473 0.434081,0.594277 1.188554,0.594277 0.754474,0 1.183387,-0.594277 0.43408,-0.599445 0.43408,-1.648473 z" />
<path
id="path1059"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 80.804039,59.578471 v 0.465087 h -4.371812 q 0.06201,0.981849 0.58911,1.498612 0.532265,0.511595 1.477941,0.511595 0.547768,0 1.059363,-0.134359 0.516763,-0.134358 1.02319,-0.403075 v 0.899167 q -0.511595,0.217041 -1.049028,0.330729 -0.537433,0.113687 -1.090369,0.113687 -1.384924,0 -2.196241,-0.806149 -0.80615,-0.80615 -0.80615,-2.180739 0,-1.421097 0.764809,-2.253085 0.769976,-0.837156 2.072218,-0.837156 1.167884,0 1.844843,0.754474 0.682126,0.749306 0.682126,2.041212 z M 79.853196,59.29942 q -0.01033,-0.780312 -0.439248,-1.245399 -0.423746,-0.465086 -1.126543,-0.465086 -0.795814,0 -1.276404,0.449584 -0.475421,0.449583 -0.547768,1.266068 z" />
<path
id="path1061"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 85.718452,57.811143 q -0.160196,-0.09302 -0.351398,-0.134358 -0.186035,-0.04651 -0.413411,-0.04651 -0.806149,0 -1.24023,0.527098 -0.428913,0.52193 -0.428913,1.503779 v 3.0489 H 82.328489 V 56.922311 H 83.2845 v 0.899167 q 0.299722,-0.527098 0.780312,-0.780311 0.480589,-0.258382 1.167883,-0.258382 0.09818,0 0.217041,0.0155 0.118855,0.01033 0.263549,0.03617 z" />
<path
id="path1063"
style="text-align:center;text-anchor:middle;fill:#999999"
d="M 90.415825,57.092843 V 57.99201 Q 90.01275,57.785305 89.578669,57.681952 89.144589,57.5786 88.679502,57.5786 q -0.707965,0 -1.064531,0.21704 -0.351399,0.21704 -0.351399,0.651121 0,0.330728 0.253214,0.52193 0.253214,0.186035 1.018023,0.356567 l 0.32556,0.07235 q 1.012855,0.217041 1.4366,0.614948 0.428913,0.39274 0.428913,1.100705 0,0.806149 -0.640785,1.276403 -0.635618,0.470254 -1.751826,0.470254 -0.465086,0 -0.971514,-0.09302 -0.501259,-0.08785 -1.059363,-0.268717 v -0.981849 q 0.527098,0.273885 1.038693,0.413411 0.511595,0.134358 1.012855,0.134358 0.671791,0 1.033525,-0.227376 0.361734,-0.232543 0.361734,-0.651121 0,-0.387572 -0.263549,-0.594277 -0.258381,-0.206705 -1.142046,-0.397907 l -0.330728,-0.07751 q -0.883664,-0.186035 -1.276403,-0.568439 -0.39274,-0.387572 -0.39274,-1.059364 0,-0.816485 0.578774,-1.260901 0.578774,-0.444416 1.643305,-0.444416 0.527098,0 0.992185,0.07752 0.465086,0.07751 0.857826,0.232543 z" />
<path
id="path1065"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 92.379525,61.397476 h 1.09037 v 1.312577 h -1.09037 z" />
<path
id="path1067"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 44.620317,71.262477 q 0.356567,-0.640786 0.852659,-0.945676 0.496092,-0.30489 1.167884,-0.30489 0.904334,0 1.395259,0.635618 0.490924,0.630451 0.490924,1.798334 v 3.493316 h -0.956011 v -3.46231 q 0,-0.831988 -0.294554,-1.235063 -0.294555,-0.403074 -0.899167,-0.403074 -0.738971,0 -1.167884,0.490924 -0.428913,0.490925 -0.428913,1.338415 v 3.271108 h -0.956011 v -3.46231 q 0,-0.837155 -0.294555,-1.235063 -0.294554,-0.403074 -0.909502,-0.403074 -0.728635,0 -1.157548,0.496092 -0.428913,0.490924 -0.428913,1.333247 v 3.271108 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.32556,-0.532265 0.780311,-0.785479 0.454751,-0.253214 1.080034,-0.253214 0.630451,0 1.069699,0.320393 0.444416,0.320393 0.656288,0.930173 z" />
<path
id="path1069"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 53.059052,73.029805 q -1.152381,0 -1.596797,0.263549 -0.444416,0.263549 -0.444416,0.899167 0,0.506428 0.330728,0.80615 0.335896,0.294555 0.909503,0.294555 0.790647,0 1.266068,-0.558104 0.480589,-0.563271 0.480589,-1.493444 v -0.211873 z m 1.896519,-0.392739 v 3.302113 h -0.950844 v -0.878496 q -0.32556,0.527098 -0.811317,0.780311 -0.485757,0.248046 -1.188554,0.248046 -0.888832,0 -1.41593,-0.496092 -0.52193,-0.50126 -0.52193,-1.338415 0,-0.976682 0.651121,-1.472774 0.656288,-0.496092 1.953363,-0.496092 h 1.333247 v -0.09302 q 0,-0.656289 -0.43408,-1.012855 -0.428913,-0.361734 -1.209225,-0.361734 -0.496092,0 -0.966346,0.118855 -0.470254,0.118856 -0.904335,0.356567 v -0.878497 q 0.521931,-0.201537 1.012855,-0.299722 0.490925,-0.103353 0.956011,-0.103353 1.255733,0 1.875849,0.651121 0.620115,0.651121 0.620115,1.974034 z" />
<path
id="path1071"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 60.608955,70.321969 v 0.899167 q -0.403075,-0.206705 -0.837156,-0.310058 -0.43408,-0.103352 -0.899167,-0.103352 -0.707965,0 -1.064531,0.21704 -0.351398,0.21704 -0.351398,0.651121 0,0.330728 0.253213,0.52193 0.253214,0.186035 1.018023,0.356567 l 0.32556,0.07235 q 1.012855,0.217041 1.4366,0.614948 0.428913,0.39274 0.428913,1.100704 0,0.80615 -0.640785,1.276404 -0.635618,0.470254 -1.751826,0.470254 -0.465086,0 -0.971514,-0.09302 -0.501259,-0.08785 -1.059363,-0.268717 v -0.981849 q 0.527098,0.273885 1.038693,0.413411 0.511595,0.134358 1.012855,0.134358 0.671791,0 1.033525,-0.227376 0.361734,-0.232543 0.361734,-0.651121 0,-0.387572 -0.263549,-0.594277 -0.258381,-0.206705 -1.142045,-0.397907 l -0.330729,-0.07751 q -0.883664,-0.186035 -1.276403,-0.568439 -0.39274,-0.387572 -0.39274,-1.059364 0,-0.816485 0.578774,-1.260901 0.578774,-0.444416 1.643305,-0.444416 0.527098,0 0.992185,0.07752 0.465086,0.07751 0.857826,0.232543 z" />
<path
id="path1073"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 66.6034,70.373645 v 0.888832 q -0.403074,-0.222208 -0.811317,-0.330728 -0.403075,-0.113688 -0.816485,-0.113688 -0.925005,0 -1.4366,0.589109 -0.511595,0.583942 -0.511595,1.643306 0,1.059363 0.511595,1.648473 0.511595,0.583942 1.4366,0.583942 0.41341,0 0.816485,-0.108521 0.408243,-0.113687 0.811317,-0.335895 v 0.878496 q -0.397907,0.186035 -0.82682,0.279052 -0.423745,0.09302 -0.904335,0.09302 -1.307409,0 -2.077386,-0.821652 -0.769976,-0.821653 -0.769976,-2.216912 0,-1.41593 0.775144,-2.227247 0.780312,-0.811318 2.13423,-0.811318 0.439248,0 0.857826,0.09302 0.418578,0.08785 0.811317,0.268716 z" />
<path
id="path1075"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 68.401736,74.626602 h 1.090369 v 1.312577 h -1.090369 z" />
<path
id="path1077"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 78.695648,70.321969 v 0.899167 q -0.403075,-0.206705 -0.837156,-0.310058 -0.434081,-0.103352 -0.899167,-0.103352 -0.707965,0 -1.064531,0.21704 -0.351399,0.21704 -0.351399,0.651121 0,0.330728 0.253214,0.52193 0.253214,0.186035 1.018023,0.356567 l 0.32556,0.07235 q 1.012855,0.217041 1.4366,0.614948 0.428913,0.39274 0.428913,1.100704 0,0.80615 -0.640785,1.276404 -0.635619,0.470254 -1.751826,0.470254 -0.465086,0 -0.971514,-0.09302 -0.50126,-0.08785 -1.059363,-0.268717 v -0.981849 q 0.527098,0.273885 1.038693,0.413411 0.511595,0.134358 1.012855,0.134358 0.671791,0 1.033525,-0.227376 0.361734,-0.232543 0.361734,-0.651121 0,-0.387572 -0.263549,-0.594277 -0.258382,-0.206705 -1.142046,-0.397907 l -0.330728,-0.07751 q -0.883664,-0.186035 -1.276404,-0.568439 -0.392739,-0.387572 -0.392739,-1.059364 0,-0.816485 0.578774,-1.260901 0.578774,-0.444416 1.643305,-0.444416 0.527098,0 0.992185,0.07752 0.465086,0.07751 0.857826,0.232543 z" />
<path
id="path1079"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 80.52499,70.151437 h 0.950843 v 5.787742 H 80.52499 Z m 0,-2.253085 h 0.950843 v 1.204057 H 80.52499 Z" />
<path
id="path1081"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 88.271262,72.445863 v 3.493316 h -0.950844 v -3.46231 q 0,-0.821652 -0.320393,-1.229895 -0.320392,-0.408242 -0.961178,-0.408242 -0.769977,0 -1.214393,0.490924 -0.444415,0.490925 -0.444415,1.338415 v 3.271108 h -0.956011 v -5.787742 h 0.956011 v 0.899167 q 0.341063,-0.52193 0.800982,-0.780311 0.465086,-0.258382 1.069698,-0.258382 0.997352,0 1.508947,0.620115 0.511596,0.614948 0.511596,1.813837 z" />
<path
id="path1083"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 93.986657,72.978129 q 0,-1.033525 -0.428913,-1.601964 -0.423746,-0.568439 -1.193722,-0.568439 -0.764809,0 -1.193722,0.568439 -0.423745,0.568439 -0.423745,1.601964 0,1.028358 0.423745,1.596797 0.428913,0.568439 1.193722,0.568439 0.769976,0 1.193722,-0.568439 0.428913,-0.568439 0.428913,-1.596797 z m 0.950843,2.24275 q 0,1.477941 -0.656289,2.196241 -0.656288,0.723468 -2.010207,0.723468 -0.501259,0 -0.945675,-0.07751 -0.444416,-0.07235 -0.862994,-0.227376 v -0.925005 q 0.418578,0.227376 0.82682,0.335896 0.408243,0.10852 0.831988,0.10852 0.935341,0 1.400427,-0.490925 0.465087,-0.485757 0.465087,-1.472773 v -0.470254 q -0.294555,0.511595 -0.754474,0.764808 -0.459919,0.253214 -1.100704,0.253214 -1.064532,0 -1.715653,-0.811317 -0.651121,-0.811318 -0.651121,-2.149733 0,-1.343583 0.651121,-2.1549 0.651121,-0.811318 1.715653,-0.811318 0.640785,0 1.100704,0.253214 0.459919,0.253214 0.754474,0.764809 V 70.151437 H 94.9375 Z" />
<path
id="path1085"
style="text-align:center;text-anchor:middle;fill:#999999"
d="m 97.030388,74.626602 h 1.09037 v 1.312577 h -1.09037 z" />
</g>
<text
xml:space="preserve"
id="text1371"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1373);fill:#000000;fill-opacity:1;stroke:none;" />
<path
style="fill:none;stroke:#4d4d4d;stroke-width:0.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.46, 1.73;stroke-dashoffset:0;stroke-opacity:1"
d="m -25.930477,134.12776 v 6.94901 H 135.76759 v -18.4416"
id="path1161"
sodipodi:nodetypes="cccc" />
</g>
<path
sodipodi:nodetypes="cccc"
id="path1169-1"
d="m 36.883574,98.715892 9.342265,9.289858 h 40.102596 l 9.589405,-9.589418"
style="fill:none;stroke:#808080;stroke-width:0.964999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1354);fill:#808080;fill-opacity:1;stroke:none"
id="text1352"
transform="translate(13.985119,-5.2916667)"
aria-label="object">
<path
style="fill:#808080"
id="path4403"
d="m 39.076039,122.71137 q -0.764808,0 -1.209224,0.59945 -0.444416,0.59427 -0.444416,1.63297 0,1.03869 0.439248,1.63813 0.444416,0.59428 1.214392,0.59428 0.759642,0 1.204058,-0.59944 0.444415,-0.59945 0.444415,-1.63297 0,-1.02836 -0.444415,-1.62781 -0.444416,-0.60461 -1.204058,-0.60461 z m 0,-0.80615 q 1.240231,0 1.948196,0.80615 0.707965,0.80615 0.707965,2.23242 0,1.42109 -0.707965,2.23241 -0.707965,0.80615 -1.948196,0.80615 -1.245398,0 -1.953362,-0.80615 -0.702798,-0.81132 -0.702798,-2.23241 0,-1.42627 0.702798,-2.23242 0.707964,-0.80615 1.953362,-0.80615 z" />
<path
style="fill:#808080"
id="path4405"
d="m 47.45793,124.94379 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188554,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04902 0.428913,1.64847 0.43408,0.59428 1.188554,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59945 0.434081,-1.64847 z m -3.234934,-2.02055 q 0.299722,-0.51676 0.754473,-0.7648 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710485,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656289,0.83715 -1.710485,0.83715 -0.635618,0 -1.095537,-0.24805 -0.454751,-0.25321 -0.754473,-0.76997 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z" />
<path
style="fill:#808080"
id="path4407"
d="m 50.021073,122.04475 h 0.950843 v 5.89109 q 0,1.10587 -0.423745,1.60197 -0.418578,0.49609 -1.353919,0.49609 h -0.361733 v -0.80615 h 0.253213 q 0.542601,0 0.738971,-0.25321 0.19637,-0.24805 0.19637,-1.0387 z m 0,-2.25309 h 0.950843 v 1.20406 h -0.950843 z" />
<path
style="fill:#808080"
id="path4409"
d="m 57.906871,124.70091 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49862 0.532266,0.51159 1.477942,0.51159 0.547768,0 1.059363,-0.13436 0.516763,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21705 -1.049028,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.806149,-0.80615 -0.806149,-2.18074 0,-1.42109 0.764808,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844843,0.75448 0.682126,0.7493 0.682126,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78032 -0.439248,-1.2454 -0.423746,-0.46509 -1.126543,-0.46509 -0.795814,0 -1.276404,0.44959 -0.475421,0.44958 -0.547768,1.26606 z" />
<path
style="fill:#808080"
id="path4411"
d="m 63.632602,122.26696 v 0.88883 q -0.403075,-0.22221 -0.811318,-0.33073 -0.403075,-0.11369 -0.816485,-0.11369 -0.925005,0 -1.4366,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.511595,0.58394 1.4366,0.58394 0.41341,0 0.816485,-0.10852 0.408243,-0.11369 0.811318,-0.33589 v 0.87849 q -0.397908,0.18604 -0.826821,0.27905 -0.423745,0.093 -0.904334,0.093 -1.30741,0 -2.077386,-0.82165 -0.769977,-0.82165 -0.769977,-2.21691 0,-1.41593 0.775144,-2.22725 0.780312,-0.81132 2.13423,-0.81132 0.439248,0 0.857826,0.093 0.418578,0.0879 0.811318,0.26872 z" />
<path
style="fill:#808080"
id="path4413"
d="m 66.237085,120.40144 v 1.64331 h 1.95853 v 0.73897 h -1.95853 v 3.14192 q 0,0.70796 0.191202,0.9095 0.19637,0.20154 0.790647,0.20154 h 0.976681 v 0.79581 h -0.976681 q -1.100705,0 -1.519282,-0.40824 -0.418578,-0.41341 -0.418578,-1.49861 v -3.14192 h -0.69763 v -0.73897 h 0.69763 v -1.64331 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="intransitive.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 135.88185 67.253996"
height="254.18832"
width="513.56921">
<defs
id="defs2">
<rect
id="rect1165"
height="44.73629"
width="50.263763"
y="61.904251"
x="35.529755" />
<rect
id="rect1113"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fillRule:evenodd;stroke:#000000;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path841" />
</marker>
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1113-9" />
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1141" />
</defs>
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="32"
inkscape:window-x="1952"
inkscape:window-height="1080"
inkscape:window-width="1515"
fit-margin-left="10"
fit-margin-bottom="10"
fit-margin-right="10"
fit-margin-top="10"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="143.11867"
inkscape:cx="290.76106"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-23.740903,-66.686407)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<path
d="m 122.9777,85.081856 h 33.44172 V 118.52357 H 122.9777 Z"
style="opacity:1;fill:none;stroke:#000000;stroke-width:1.115;stroke-miterlimit:4;stroke-dasharray:none"
id="rect839-4" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1113-9);fill:#000000;fill-opacity:1;stroke:none"
id="text1111-8"
transform="translate(90.461538,-16.314846)"
aria-label="verb">
<path
id="path1187"
d="m 37.356241,115.83576 h 1.007687 l 1.808669,4.85757 1.80867,-4.85757 h 1.007687 l -2.170403,5.78775 h -1.291907 z" />
<path
id="path1189"
d="m 49.252118,118.49192 v 0.46509 h -4.371813 q 0.06201,0.98185 0.58911,1.49861 0.532265,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40308 v 0.89917 q -0.511595,0.21704 -1.049029,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04121 z m -0.950844,-0.27905 q -0.01033,-0.78031 -0.439248,-1.2454 -0.423745,-0.46508 -1.126543,-0.46508 -0.795814,0 -1.276403,0.44958 -0.475422,0.44958 -0.547769,1.26607 z" />
<path
id="path1191"
d="m 54.166531,116.7246 q -0.160196,-0.093 -0.351398,-0.13436 -0.186035,-0.0465 -0.41341,-0.0465 -0.80615,0 -1.240231,0.5271 -0.428913,0.52193 -0.428913,1.50378 v 3.0489 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.299723,-0.5271 0.780312,-0.78031 0.480589,-0.25838 1.167883,-0.25838 0.09819,0 0.217041,0.0155 0.118855,0.0103 0.263549,0.0362 z" />
<path
id="path1193"
d="m 59.32899,118.7348 q 0,-1.04903 -0.43408,-1.6433 -0.428913,-0.59945 -1.183387,-0.59945 -0.754473,0 -1.188554,0.59945 -0.428913,0.59427 -0.428913,1.6433 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188554,0.59428 0.754474,0 1.183387,-0.59428 0.43408,-0.59944 0.43408,-1.64847 z m -3.234934,-2.02054 q 0.299722,-0.51676 0.754474,-0.76481 0.459918,-0.25321 1.095536,-0.25321 1.054196,0 1.710485,0.83715 0.661456,0.83716 0.661456,2.20141 0,1.36426 -0.661456,2.20141 -0.656289,0.83716 -1.710485,0.83716 -0.635618,0 -1.095536,-0.24805 -0.454752,-0.25321 -0.754474,-0.76998 v 0.86817 h -0.956011 v -8.04083 h 0.956011 z" />
</g>
<path
sodipodi:nodetypes="cccc"
id="path1161"
d="m 55.85933,124.01306 v 6.94901 h 83.65536 v -7.21628"
style="fill:none;stroke:#4d4d4d;stroke-width:0.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.66, 1.33;stroke-dashoffset:0;stroke-opacity:1" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1113);fill:#000000;fill-opacity:1;stroke:none"
id="text1111"
transform="translate(-0.07274806,-3.3559295)"
aria-label="subject">
<path
id="path1171"
d="m 41.728053,116.0063 v 0.89916 q -0.403075,-0.2067 -0.837155,-0.31006 -0.434081,-0.10335 -0.899167,-0.10335 -0.707965,0 -1.064532,0.21704 -0.351398,0.21704 -0.351398,0.65112 0,0.33073 0.253213,0.52193 0.253214,0.18604 1.018023,0.35657 l 0.32556,0.0724 q 1.012855,0.21704 1.436601,0.61494 0.428913,0.39274 0.428913,1.10071 0,0.80615 -0.640786,1.2764 -0.635618,0.47026 -1.751825,0.47026 -0.465087,0 -0.971514,-0.093 -0.50126,-0.0879 -1.059364,-0.26872 v -0.98185 q 0.527098,0.27389 1.038693,0.41341 0.511595,0.13436 1.012855,0.13436 0.671792,0 1.033525,-0.22737 0.361734,-0.23255 0.361734,-0.65112 0,-0.38758 -0.263549,-0.59428 -0.258381,-0.20671 -1.142045,-0.39791 l -0.330728,-0.0775 q -0.883665,-0.18604 -1.276404,-0.56844 -0.39274,-0.38757 -0.39274,-1.05937 0,-0.81648 0.578774,-1.2609 0.578775,-0.44441 1.643306,-0.44441 0.527098,0 0.992184,0.0775 0.465086,0.0775 0.857826,0.23255 z" />
<path
id="path1173"
d="m 43.459208,119.33941 v -3.50365 h 0.950843 v 3.46748 q 0,0.82165 0.320393,1.23506 0.320393,0.40825 0.961179,0.40825 0.769976,0 1.214392,-0.49093 0.449584,-0.49092 0.449584,-1.33841 v -3.28145 h 0.950843 v 5.78775 h -0.950843 v -0.88884 q -0.346231,0.5271 -0.80615,0.78548 -0.454751,0.25322 -1.059364,0.25322 -0.997352,0 -1.514114,-0.62012 -0.516763,-0.62011 -0.516763,-1.81384 z m 2.392611,-3.64317 z" />
<path
id="path1175"
d="m 54.43008,118.7348 q 0,-1.04903 -0.434081,-1.6433 -0.428913,-0.59945 -1.183386,-0.59945 -0.754474,0 -1.188554,0.59945 -0.428913,0.59427 -0.428913,1.6433 0,1.04903 0.428913,1.64847 0.43408,0.59428 1.188554,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59944 0.434081,-1.64847 z m -3.234934,-2.02054 q 0.299722,-0.51676 0.754473,-0.76481 0.459919,-0.25321 1.095537,-0.25321 1.054196,0 1.710484,0.83715 0.661457,0.83716 0.661457,2.20141 0,1.36426 -0.661457,2.20141 -0.656288,0.83716 -1.710484,0.83716 -0.635618,0 -1.095537,-0.24805 -0.454751,-0.25321 -0.754473,-0.76998 v 0.86817 h -0.956011 v -8.04083 h 0.956011 z" />
<path
id="path1177"
d="m 56.993223,115.83576 h 0.950843 v 5.8911 q 0,1.10587 -0.423746,1.60196 -0.418577,0.49609 -1.353918,0.49609 h -0.361734 v -0.80615 h 0.253214 q 0.542601,0 0.738971,-0.25321 0.19637,-0.24805 0.19637,-1.03869 z m 0,-2.25308 h 0.950843 v 1.20406 h -0.950843 z" />
<path
id="path1179"
d="m 64.87902,118.49192 v 0.46509 h -4.371812 q 0.06201,0.98185 0.589109,1.49861 0.532266,0.5116 1.477942,0.5116 0.547768,0 1.059363,-0.13436 0.516763,-0.13436 1.02319,-0.40308 v 0.89917 q -0.511595,0.21704 -1.049028,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.806149,-0.80615 -0.806149,-2.18074 0,-1.4211 0.764808,-2.25309 0.769977,-0.83715 2.072219,-0.83715 1.167883,0 1.844842,0.75447 0.682127,0.74931 0.682127,2.04121 z m -0.950843,-0.27905 q -0.01033,-0.78031 -0.439248,-1.2454 -0.423746,-0.46508 -1.126543,-0.46508 -0.795815,0 -1.276404,0.44958 -0.475422,0.44958 -0.547768,1.26607 z" />
<path
id="path1181"
d="m 70.60475,116.05797 v 0.88883 q -0.403074,-0.2222 -0.811317,-0.33073 -0.403075,-0.11368 -0.816485,-0.11368 -0.925005,0 -1.4366,0.58911 -0.511595,0.58394 -0.511595,1.6433 0,1.05937 0.511595,1.64847 0.511595,0.58395 1.4366,0.58395 0.41341,0 0.816485,-0.10852 0.408243,-0.11369 0.811317,-0.3359 v 0.8785 q -0.397907,0.18603 -0.82682,0.27905 -0.423745,0.093 -0.904335,0.093 -1.307409,0 -2.077386,-0.82166 -0.769976,-0.82165 -0.769976,-2.21691 0,-1.41593 0.775144,-2.22725 0.780312,-0.81131 2.13423,-0.81131 0.439248,0 0.857826,0.093 0.418578,0.0879 0.811317,0.26872 z" />
<path
id="path1183"
d="m 73.209234,114.19246 v 1.6433 h 1.95853 v 0.73897 h -1.95853 v 3.14192 q 0,0.70797 0.191202,0.9095 0.19637,0.20154 0.790647,0.20154 h 0.976681 v 0.79582 h -0.976681 q -1.100705,0 -1.519282,-0.40825 -0.418578,-0.41341 -0.418578,-1.49861 v -3.14192 h -0.69763 v -0.73897 h 0.69763 v -1.6433 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1165);fill:#000000;fill-opacity:1;stroke:none"
id="text1163"
transform="translate(-5.3453906,9.0871639)"
aria-label="plain
noun /
pronoun">
<path
id="path1196"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 51.876136,67.854117 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367936,-0.202572 0.876432,-0.202572 0.84336,0 1.368393,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669727 -1.368393,0.669727 -0.508496,0 -0.876432,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475424 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z" />
<path
id="path1198"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 56.514614,62.115963 h 0.760678 v 6.432685 h -0.760678 z" />
<path
id="path1200"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 60.967057,66.221141 q -0.921908,0 -1.277442,0.21084 -0.355534,0.21084 -0.355534,0.719336 0,0.405143 0.264584,0.644922 0.268717,0.235645 0.727604,0.235645 0.63252,0 1.012859,-0.446485 0.384473,-0.450618 0.384473,-1.194759 v -0.169499 z m 1.517221,-0.314193 v 2.6417 h -0.760677 v -0.702799 q -0.26045,0.421679 -0.649057,0.624251 -0.388607,0.198438 -0.950846,0.198438 -0.711068,0 -1.132748,-0.396876 -0.417546,-0.401009 -0.417546,-1.070736 0,-0.781348 0.520899,-1.178223 0.525032,-0.396875 1.562696,-0.396875 h 1.066602 v -0.07441 q 0,-0.525033 -0.347266,-0.810287 -0.343132,-0.289388 -0.967383,-0.289388 -0.396876,0 -0.77308,0.09508 -0.376205,0.09508 -0.723471,0.285254 v -0.7028 q 0.417546,-0.161231 0.810287,-0.239779 0.392741,-0.08268 0.764812,-0.08268 1.00459,0 1.500684,0.520899 0.496094,0.520898 0.496094,1.579232 z" />
<path
id="path1202"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 64.055242,63.918438 h 0.760678 v 4.63021 h -0.760678 z m 0,-1.802475 h 0.760678 v 0.96325 h -0.760678 z" />
<path
id="path1204"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 70.252282,65.753986 v 2.794662 H 69.491605 V 65.77879 q 0,-0.657324 -0.256315,-0.983919 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path1206"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 51.88027,74.643985 v 2.794663 H 51.119593 V 74.66879 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path1208"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 55.199965,73.341738 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path1210"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 58.503124,75.611368 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359669,-0.392741 0.359669,-1.070736 v -2.625164 h 0.760677 v 4.630211 H 61.620248 V 76.72758 q -0.276986,0.42168 -0.644923,0.628385 -0.363802,0.202572 -0.847493,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z" />
<path
id="path1212"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 67.804886,74.643985 v 2.794663 H 67.044208 V 74.66879 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path1214"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 73.377673,71.266412 h 0.7028 l -2.14974,6.957718 h -0.7028 z" />
<path
id="path1216"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 44.616628,85.634116 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239778,-0.413412 0.603581,-0.61185 0.367936,-0.202571 0.876432,-0.202571 0.84336,0 1.368393,0.669727 0.529167,0.669726 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669726 -1.368393,0.669726 -0.508496,0 -0.876432,-0.198437 -0.363803,-0.202572 -0.603581,-0.615983 z m 2.587956,-1.61644 q 0,-0.839226 -0.347265,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475423 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347265,-0.479557 0.347265,-1.318783 z" />
<path
id="path1218"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 51.938147,82.409505 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343131,0.417545 -0.343131,1.203027 v 2.439129 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624251 0.384473,-0.206706 0.934311,-0.206706 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
<path
id="path1220"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 54.356606,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path1222"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 61.587175,83.533984 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451074 z" />
<path
id="path1224"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 64.90687,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.562239,-0.649056 -0.562239,-1.785938 0,-1.141016 0.562239,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path1226"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 68.210028,84.501368 v -2.802931 h 0.760678 v 2.773992 q 0,0.657324 0.256315,0.988054 0.256315,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760678 v 4.63021 h -0.760678 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363802,0.202571 -0.847494,0.202571 -0.797884,0 -1.211296,-0.496094 -0.413412,-0.496093 -0.413412,-1.451074 z m 1.914096,-2.914552 z" />
<path
id="path1228"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 77.51179,83.533984 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451074 z" />
</g>
<path
sodipodi:nodetypes="cccc"
id="path1169"
d="m 26.726954,97.018837 9.342265,9.289843 h 40.102597 l 9.589407,-9.589408"
style="fill:none;stroke:#000000;stroke-width:0.965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,571 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="stative-compound-intransitive.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 193.48419 61.820076"
height="61.820076mm"
width="193.48419mm">
<defs
id="defs2">
<rect
id="rect1861"
height="29.534964"
width="51.949112"
y="14.93006"
x="13.418155" />
<rect
id="rect1855"
height="27.025297"
width="24.568453"
y="60.098213"
x="105.64435" />
<rect
id="rect1025"
height="15.308036"
width="48.947918"
y="62.177082"
x="137.77232" />
<rect
id="rect962"
height="16.036173"
width="39.823158"
y="37.952274"
x="-6.9490075" />
<rect
id="rect894"
height="23.519718"
width="37.417732"
y="56.126602"
x="11.759859" />
<rect
id="rect886"
height="13.363476"
width="47.841248"
y="14.432554"
x="75.102737" />
<rect
id="rect880"
height="13.363476"
width="34.210499"
y="23.252449"
x="35.279579" />
<rect
id="rect855"
height="34.477768"
width="88.733482"
y="102.89877"
x="59.868374" />
<rect
id="rect849"
height="33.94323"
width="92.475258"
y="99.691536"
x="52.652096" />
<rect
id="rect843"
height="20.112129"
width="67.822716"
y="47.507061"
x="52.715843" />
<rect
id="rect835"
height="43.845238"
width="92.98214"
y="45.357143"
x="47.625" />
<rect
x="75.102737"
y="14.432554"
width="54.312309"
height="38.060673"
id="rect886-3" />
<rect
x="75.102737"
y="14.432554"
width="47.841248"
height="13.363476"
id="rect925" />
<rect
x="11.759859"
y="56.126602"
width="37.417732"
height="23.519718"
id="rect894-9" />
<rect
x="11.759859"
y="56.126602"
width="37.417732"
height="23.519718"
id="rect1002" />
</defs>
<sodipodi:namedview
fit-margin-left="5"
fit-margin-bottom="10"
fit-margin-right="5"
fit-margin-top="10"
inkscape:window-maximized="1"
inkscape:window-y="-9"
inkscape:window-x="1911"
inkscape:window-height="1361"
inkscape:window-width="2560"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="406.18454"
inkscape:cx="512.61051"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:snap-bbox="true"
inkscape:snap-global="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0.92597286,-39.667365)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g1172">
<g
transform="translate(114.04453,0.80182124)"
id="g994-1">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-81" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-57" />
</g>
<g
transform="translate(130.0807,0.80182124)"
id="g994-3">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-5" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-7" />
</g>
<g
transform="translate(145.8496,0.80182124)"
id="g994-8">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-2" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-8" />
</g>
<g
id="g994-1-0"
transform="translate(-9.7012598,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-81-0" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-57-5" />
</g>
<g
id="g994-3-9"
transform="translate(6.3349112,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-5-3" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-7-3" />
</g>
<g
id="g994-8-7"
transform="translate(22.103811,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-2-1" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-8-6" />
</g>
<g
id="g994-80-3"
transform="translate(39.47633,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-9-8" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-1-0" />
</g>
<path
id="path1132"
d="M 9.3549106,79.280506 H 182.27902"
style="fill:none;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.9769335,89.769346 H 181.90104"
id="path1132-5" />
</g>
<text
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect835);fill:#000000;fill-opacity:1;stroke:none;"
id="text833"
xml:space="preserve" />
<path
d="m 59.13031,53.38699 h 72.60143 V 91.097443 H 59.13031 Z"
style="fill:#ffffff;stroke:#000000;stroke-width:0.78;stroke-miterlimit:4;stroke-dasharray:none"
id="rect839" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect894);fill:#000000;fill-opacity:1;stroke:none"
id="text892"
transform="matrix(1.5178263,0,0,1.5178263,-13.264547,-22.158414)"
aria-label="subject">
<path
id="path1880"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 22.732449,58.125107 v 0.479557 q -0.214973,-0.110243 -0.446484,-0.165365 -0.23151,-0.05512 -0.479557,-0.05512 -0.377582,0 -0.567751,0.115755 -0.187413,0.115755 -0.187413,0.347265 0,0.176389 0.135048,0.278364 0.135047,0.09922 0.542946,0.190169 l 0.173633,0.03858 q 0.540191,0.115755 0.766189,0.327973 0.228754,0.209462 0.228754,0.587044 0,0.429947 -0.341753,0.68075 -0.338997,0.250803 -0.93431,0.250803 -0.248046,0 -0.518141,-0.04961 -0.26734,-0.04685 -0.564996,-0.143316 v -0.523654 q 0.28112,0.146072 0.553971,0.220486 0.272852,0.07166 0.540191,0.07166 0.358289,0 0.551215,-0.121267 0.192925,-0.124023 0.192925,-0.347265 0,-0.206706 -0.14056,-0.316949 -0.137804,-0.110243 -0.609092,-0.212217 l -0.176389,-0.04134 q -0.471289,-0.09922 -0.68075,-0.303168 -0.209462,-0.206705 -0.209462,-0.564995 0,-0.43546 0.30868,-0.672482 0.308681,-0.237022 0.876432,-0.237022 0.281119,0 0.529166,0.04134 0.248047,0.04134 0.457508,0.124023 z" />
<path
id="path1882"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 23.655734,59.902775 v -1.868618 h 0.507118 v 1.849325 q 0,0.438216 0.170877,0.658702 0.170876,0.21773 0.512629,0.21773 0.410656,0 0.647678,-0.261827 0.239778,-0.261827 0.239778,-0.713823 v -1.750107 h 0.507118 v 3.086803 h -0.507118 v -0.474045 q -0.184657,0.28112 -0.429947,0.418923 -0.242535,0.135048 -0.564995,0.135048 -0.531923,0 -0.80753,-0.330729 -0.275608,-0.330729 -0.275608,-0.967382 z m 1.276063,-1.943032 z" />
<path
id="path1884"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 29.50688,59.580314 q 0,-0.559483 -0.23151,-0.876431 -0.228754,-0.319705 -0.631141,-0.319705 -0.402387,0 -0.633897,0.319705 -0.228754,0.316948 -0.228754,0.876431 0,0.559483 0.228754,0.879188 0.23151,0.316948 0.633897,0.316948 0.402387,0 0.631141,-0.316948 0.23151,-0.319705 0.23151,-0.879188 z m -1.725302,-1.077625 q 0.159852,-0.275607 0.402387,-0.407899 0.24529,-0.135047 0.584288,-0.135047 0.562239,0 0.91226,0.446484 0.352778,0.446484 0.352778,1.174087 0,0.727604 -0.352778,1.174088 -0.350021,0.446484 -0.91226,0.446484 -0.338998,0 -0.584288,-0.132292 -0.242535,-0.135047 -0.402387,-0.410655 v 0.463021 h -0.509874 v -4.288452 h 0.509874 z" />
<path
id="path1886"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 30.873893,58.034157 h 0.507118 v 3.141924 q 0,0.5898 -0.225998,0.854383 -0.223242,0.264583 -0.722092,0.264583 H 30.239996 V 61.8651 h 0.135048 q 0.289387,0 0.394118,-0.135048 0.104731,-0.132291 0.104731,-0.553971 z m 0,-1.201649 h 0.507118 v 0.642165 h -0.507118 z" />
<path
id="path1888"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 35.079663,59.450779 v 0.248046 h -2.331639 q 0.03307,0.523655 0.314192,0.799262 0.283876,0.272851 0.788238,0.272851 0.292144,0 0.564995,-0.07166 0.275607,-0.07166 0.545703,-0.214973 v 0.479557 q -0.272852,0.115755 -0.559483,0.176388 -0.286632,0.06063 -0.581532,0.06063 -0.738628,0 -1.171332,-0.429948 -0.429947,-0.429947 -0.429947,-1.163063 0,-0.75792 0.407899,-1.201648 0.410655,-0.446484 1.105185,-0.446484 0.622873,0 0.983919,0.402386 0.363802,0.399631 0.363802,1.08865 z m -0.507118,-0.148828 q -0.0055,-0.416167 -0.234266,-0.664214 -0.225998,-0.248047 -0.600824,-0.248047 -0.424436,0 -0.680751,0.239779 -0.253559,0.239778 -0.292144,0.675238 z" />
<path
id="path1890"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 38.133393,58.152668 v 0.474045 q -0.214974,-0.118512 -0.432704,-0.176389 -0.214974,-0.06063 -0.435459,-0.06063 -0.493338,0 -0.766189,0.314193 -0.272852,0.311436 -0.272852,0.876431 0,0.564995 0.272852,0.879188 0.272851,0.311436 0.766189,0.311436 0.220485,0 0.435459,-0.05788 0.21773,-0.06063 0.432704,-0.179145 v 0.468533 q -0.212218,0.09922 -0.440972,0.148828 -0.225998,0.04961 -0.482313,0.04961 -0.697287,0 -1.107942,-0.438216 -0.410655,-0.438216 -0.410655,-1.182356 0,-0.755164 0.413411,-1.187868 0.416167,-0.432703 1.138259,-0.432703 0.234266,0 0.457508,0.04961 0.223242,0.04685 0.432704,0.143316 z" />
<path
id="path1892"
style="font-size:5.64444px;line-height:1.25;text-align:center;text-anchor:middle"
d="m 39.522455,57.157725 v 0.876432 h 1.044552 v 0.394118 h -1.044552 v 1.675693 q 0,0.377583 0.101975,0.485069 0.104731,0.107487 0.421679,0.107487 h 0.520898 v 0.424436 h -0.520898 q -0.587044,0 -0.810286,-0.21773 -0.223242,-0.220486 -0.223242,-0.799262 v -1.675693 h -0.37207 v -0.394118 h 0.37207 v -0.876432 z" />
</g>
<path
style="fill:#b3b3b3;stroke:#b3b3b3;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 41.076674,57.758014 8.427083,0.450429 0.130752,2.787304 4.146864,-4.474386 -4.864018,-5.896909 -0.193283,2.981902 -7.519265,0.327089 z"
id="path890-6" />
<g
id="g994-80"
transform="translate(163.22212,0.80182124)">
<path
d="m 24.078913,83.65535 a 5.0232186,5.0232186 0 0 1 -5.023218,5.023218 5.0232186,5.0232186 0 0 1 -5.023219,-5.023218 5.0232186,5.0232186 0 0 1 5.023219,-5.023219 5.0232186,5.0232186 0 0 1 5.023218,5.023219"
style="fill:#ffffff;stroke:#333333;stroke-width:0.514378;stroke-miterlimit:4;stroke-dasharray:none"
id="path917-9" />
<path
d="m 22.405765,83.65535 a 3.3500707,3.3500707 0 0 1 -3.35007,3.35007 3.3500707,3.3500707 0 0 1 -3.350071,-3.35007 3.3500707,3.3500707 0 0 1 3.350071,-3.350071 3.3500707,3.3500707 0 0 1 3.35007,3.350071"
style="fill:#ffffff;stroke:#333333;stroke-width:0.357698;stroke-miterlimit:4;stroke-dasharray:none"
id="path984-1" />
</g>
<path
id="path890-6-2"
d="m 136.50309,57.142695 8.42708,0.45043 0.13076,2.787304 4.14686,-4.474386 -4.86402,-5.89691 -0.19328,2.981903 -7.51927,0.327088 z"
style="fill:#b3b3b3;stroke:#b3b3b3;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1025);fill:#000000;fill-opacity:1;stroke:none;"
id="text1023"
xml:space="preserve" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.75;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="text1031"
aria-label="changed
subject">
<path
id="path1897"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 152.59929,62.435466 v 0.592556 q -0.26872,-0.148139 -0.54088,-0.220486 -0.26872,-0.07579 -0.54432,-0.07579 -0.61668,0 -0.95774,0.392741 -0.34107,0.389296 -0.34107,1.095541 0,0.706245 0.34107,1.098986 0.34106,0.389296 0.95774,0.389296 0.2756,0 0.54432,-0.07235 0.27216,-0.07579 0.54088,-0.223931 v 0.585667 q -0.26527,0.124023 -0.55121,0.186035 -0.2825,0.06201 -0.6029,0.06201 -0.87161,0 -1.38493,-0.547771 -0.51332,-0.54777 -0.51332,-1.477947 0,-0.943957 0.51677,-1.484837 0.52021,-0.54088 1.42282,-0.54088 0.29284,0 0.57189,0.06201 0.27905,0.05857 0.54088,0.179145 z" />
<path
id="path1899"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 156.916,63.81695 v 2.328886 h -0.6339 V 63.83762 q 0,-0.54777 -0.2136,-0.819933 -0.21359,-0.272163 -0.64078,-0.272163 -0.51332,0 -0.8096,0.327285 -0.29628,0.327284 -0.29628,0.89228 v 2.180747 h -0.63734 v -5.360572 h 0.63734 v 2.101509 q 0.22738,-0.347954 0.53399,-0.520209 0.31006,-0.172255 0.71314,-0.172255 0.6649,0 1.00596,0.413412 0.34107,0.409966 0.34107,1.209229 z" />
<path
id="path1901"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 159.94079,64.206246 q -0.76825,0 -1.06453,0.1757 -0.29628,0.1757 -0.29628,0.599447 0,0.337619 0.22049,0.537435 0.22393,0.196371 0.60633,0.196371 0.5271,0 0.84405,-0.372071 0.3204,-0.375516 0.3204,-0.995633 v -0.141249 z m 1.26436,-0.261828 v 2.201418 h -0.6339 v -0.585667 q -0.21704,0.3514 -0.54088,0.52021 -0.32384,0.165365 -0.79237,0.165365 -0.59256,0 -0.94396,-0.33073 -0.34796,-0.334174 -0.34796,-0.89228 0,-0.651123 0.43409,-0.981853 0.43752,-0.330729 1.30224,-0.330729 h 0.88884 v -0.06201 q 0,-0.437527 -0.28939,-0.675239 -0.28594,-0.241157 -0.80615,-0.241157 -0.33073,0 -0.64424,0.07924 -0.3135,0.07924 -0.60289,0.237712 v -0.585667 q 0.34796,-0.134358 0.67524,-0.199815 0.32728,-0.0689 0.63734,-0.0689 0.83716,0 1.25057,0.434082 0.41342,0.434082 0.41342,1.316027 z" />
<path
id="path1903"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 165.72167,63.81695 v 2.328886 h -0.6339 V 63.83762 q 0,-0.54777 -0.2136,-0.819933 -0.21359,-0.272163 -0.64078,-0.272163 -0.51332,0 -0.8096,0.327285 -0.29628,0.327284 -0.29628,0.89228 v 2.180747 h -0.63734 v -3.85851 h 0.63734 v 0.599447 q 0.22738,-0.347954 0.53399,-0.520209 0.31006,-0.172255 0.71314,-0.172255 0.6649,0 1.00596,0.413412 0.34107,0.409966 0.34107,1.209229 z" />
<path
id="path1905"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 169.53195,64.171795 q 0,-0.68902 -0.28595,-1.06798 -0.28249,-0.378961 -0.79581,-0.378961 -0.50988,0 -0.79582,0.378961 -0.2825,0.37896 -0.2825,1.06798 0,0.685574 0.2825,1.064535 0.28594,0.378961 0.79582,0.378961 0.51332,0 0.79581,-0.378961 0.28595,-0.378961 0.28595,-1.064535 z m 0.6339,1.495172 q 0,0.985298 -0.43753,1.464167 -0.43753,0.482314 -1.34014,0.482314 -0.33418,0 -0.63046,-0.05168 -0.29628,-0.04823 -0.57533,-0.151584 v -0.616673 q 0.27905,0.151585 0.55122,0.223932 0.27216,0.07235 0.55466,0.07235 0.62356,0 0.93362,-0.327285 0.31006,-0.323839 0.31006,-0.981852 v -0.313504 q -0.19637,0.341064 -0.50299,0.509874 -0.30661,0.16881 -0.7338,0.16881 -0.70969,0 -1.14377,-0.54088 -0.43409,-0.540881 -0.43409,-1.433161 0,-0.895726 0.43409,-1.436606 0.43408,-0.54088 1.14377,-0.54088 0.42719,0 0.7338,0.16881 0.30662,0.168809 0.50299,0.509874 v -0.585667 h 0.6339 z" />
<path
id="path1907"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 174.77194,64.058107 v 0.310058 h -2.91455 q 0.0413,0.654569 0.39274,0.999079 0.35484,0.341064 0.9853,0.341064 0.36518,0 0.70624,-0.08957 0.34451,-0.08957 0.68213,-0.268718 v 0.599447 q -0.34106,0.144694 -0.69935,0.220487 -0.35829,0.07579 -0.72692,0.07579 -0.92329,0 -1.46417,-0.537436 -0.53743,-0.537435 -0.53743,-1.453831 0,-0.947402 0.50987,-1.502062 0.51332,-0.558106 1.38149,-0.558106 0.77859,0 1.2299,0.502984 0.45475,0.499539 0.45475,1.360814 z m -0.6339,-0.186036 q -0.007,-0.520209 -0.29283,-0.830268 -0.2825,-0.310059 -0.75103,-0.310059 -0.53055,0 -0.85094,0.299724 -0.31695,0.299723 -0.36518,0.844048 z" />
<path
id="path1909"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 178.3514,62.872993 v -2.087729 h 0.6339 v 5.360572 h -0.6339 v -0.578777 q -0.19982,0.34451 -0.50643,0.51332 -0.30317,0.165365 -0.73036,0.165365 -0.69936,0 -1.14033,-0.558106 -0.43753,-0.558106 -0.43753,-1.467612 0,-0.909506 0.43753,-1.467611 0.44097,-0.558106 1.14033,-0.558106 0.42719,0 0.73036,0.16881 0.30661,0.165364 0.50643,0.509874 z m -2.16008,1.347033 q 0,0.699355 0.28595,1.098986 0.28938,0.396187 0.79237,0.396187 0.50298,0 0.79237,-0.396187 0.28939,-0.399631 0.28939,-1.098986 0,-0.699355 -0.28939,-1.095541 -0.28939,-0.399631 -0.79237,-0.399631 -0.50299,0 -0.79237,0.399631 -0.28595,0.396186 -0.28595,1.095541 z" />
<path
id="path1911"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 154.72147,70.338489 v 0.599447 q -0.26872,-0.137804 -0.5581,-0.206705 -0.28939,-0.0689 -0.59945,-0.0689 -0.47198,0 -0.70969,0.144694 -0.23427,0.144694 -0.23427,0.434082 0,0.220486 0.16881,0.347955 0.16881,0.124023 0.67869,0.237712 l 0.21704,0.04823 q 0.67524,0.144694 0.95773,0.409967 0.28595,0.261827 0.28595,0.733805 0,0.537436 -0.42719,0.85094 -0.42375,0.313503 -1.16789,0.313503 -0.31006,0 -0.64768,-0.06201 -0.33418,-0.05857 -0.70625,-0.179145 v -0.654569 q 0.3514,0.18259 0.69247,0.275608 0.34106,0.08957 0.67524,0.08957 0.44786,0 0.68902,-0.151584 0.24115,-0.155029 0.24115,-0.434082 0,-0.258383 -0.1757,-0.396186 -0.17225,-0.137804 -0.76136,-0.265273 l -0.22049,-0.05168 q -0.58911,-0.124024 -0.85094,-0.378961 -0.26183,-0.258383 -0.26183,-0.706245 0,-0.544326 0.38586,-0.840604 0.38585,-0.296278 1.09554,-0.296278 0.3514,0 0.66146,0.05168 0.31005,0.05168 0.57188,0.155029 z" />
<path
id="path1913"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 155.87558,72.560577 v -2.335776 h 0.6339 v 2.311661 q 0,0.54777 0.21359,0.823378 0.2136,0.272163 0.64079,0.272163 0.51332,0 0.8096,-0.327284 0.29972,-0.327285 0.29972,-0.892281 v -2.187637 h 0.6339 v 3.85851 h -0.6339 v -0.592557 q -0.23082,0.3514 -0.53743,0.523655 -0.30317,0.168809 -0.70625,0.168809 -0.6649,0 -1.00941,-0.413411 -0.34451,-0.413412 -0.34451,-1.20923 z m 1.59508,-2.428793 z" />
<path
id="path1915"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 163.18952,72.157501 q 0,-0.699355 -0.28939,-1.095541 -0.28594,-0.399631 -0.78892,-0.399631 -0.50299,0 -0.79238,0.399631 -0.28594,0.396186 -0.28594,1.095541 0,0.699355 0.28594,1.098986 0.28939,0.396186 0.79238,0.396186 0.50298,0 0.78892,-0.396186 0.28939,-0.399631 0.28939,-1.098986 z m -2.15663,-1.347033 q 0.19982,-0.34451 0.50298,-0.509875 0.30662,-0.168809 0.73037,-0.168809 0.7028,0 1.14032,0.558105 0.44098,0.558106 0.44098,1.467612 0,0.909506 -0.44098,1.467612 -0.43752,0.558105 -1.14032,0.558105 -0.42375,0 -0.73037,-0.165364 -0.30316,-0.16881 -0.50298,-0.51332 v 0.578777 h -0.63734 v -5.360572 h 0.63734 z" />
<path
id="path1917"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 164.89829,70.224801 h 0.6339 v 3.927412 q 0,0.73725 -0.2825,1.06798 -0.27905,0.330729 -0.90262,0.330729 h -0.24115 v -0.537435 h 0.16881 q 0.36173,0 0.49265,-0.16881 0.13091,-0.165364 0.13091,-0.692464 z m 0,-1.502062 h 0.6339 v 0.802707 h -0.6339 z" />
<path
id="path1919"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 170.15551,71.995581 v 0.310059 h -2.91455 q 0.0413,0.654569 0.39274,0.999079 0.35484,0.341064 0.9853,0.341064 0.36518,0 0.70624,-0.08957 0.34451,-0.08957 0.68213,-0.268718 v 0.599447 q -0.34106,0.144694 -0.69935,0.220486 -0.35829,0.07579 -0.72692,0.07579 -0.92329,0 -1.46417,-0.537435 -0.53743,-0.537435 -0.53743,-1.453831 0,-0.947402 0.50987,-1.502063 0.51332,-0.558105 1.38149,-0.558105 0.77859,0 1.2299,0.502984 0.45475,0.499539 0.45475,1.360813 z m -0.6339,-0.186035 q -0.007,-0.52021 -0.29283,-0.830268 -0.2825,-0.310059 -0.75103,-0.310059 -0.53055,0 -0.85094,0.299723 -0.31695,0.299724 -0.36518,0.844049 z" />
<path
id="path1921"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 173.97268,70.37294 v 0.592557 q -0.26872,-0.148139 -0.54088,-0.220486 -0.26872,-0.07579 -0.54433,-0.07579 -0.61667,0 -0.95773,0.392741 -0.34107,0.389296 -0.34107,1.095541 0,0.706245 0.34107,1.098986 0.34106,0.389296 0.95773,0.389296 0.27561,0 0.54433,-0.07235 0.27216,-0.07579 0.54088,-0.223931 v 0.585666 q -0.26527,0.124024 -0.55122,0.186036 -0.2825,0.06201 -0.60289,0.06201 -0.87161,0 -1.38493,-0.54777 -0.51332,-0.547771 -0.51332,-1.477947 0,-0.943957 0.51677,-1.484837 0.52021,-0.54088 1.42282,-0.54088 0.29283,0 0.57189,0.06201 0.27905,0.05857 0.54088,0.179145 z" />
<path
id="path1923"
style="font-size:7.05556px;text-align:center;text-anchor:middle;fill:#808080;stroke-width:0.264583"
d="m 175.70901,69.12926 v 1.095541 h 1.30569 v 0.492649 h -1.30569 v 2.09462 q 0,0.471978 0.12747,0.606337 0.13091,0.134359 0.5271,0.134359 h 0.65112 v 0.530545 h -0.65112 q -0.73381,0 -1.01286,-0.272163 -0.27906,-0.275608 -0.27906,-0.999078 v -2.09462 h -0.46508 v -0.492649 h 0.46508 V 69.12926 Z" />
</g>
<g
aria-label="complement"
transform="matrix(1.114528,0,0,1.114528,-6.7786464,-5.5245137)"
id="text1118"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1120);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 63.747459,60.844666 v 0.474045 q -0.214974,-0.118511 -0.432704,-0.176389 -0.214974,-0.06063 -0.43546,-0.06063 -0.493337,0 -0.766188,0.314192 -0.272852,0.311437 -0.272852,0.876432 0,0.564995 0.272852,0.879188 0.272851,0.311436 0.766188,0.311436 0.220486,0 0.43546,-0.05788 0.21773,-0.06063 0.432704,-0.179144 v 0.468532 q -0.212218,0.09922 -0.440972,0.148828 -0.225998,0.04961 -0.482313,0.04961 -0.697287,0 -1.107942,-0.438216 -0.410655,-0.438216 -0.410655,-1.182356 0,-0.755164 0.413411,-1.187868 0.416167,-0.432704 1.138259,-0.432704 0.234266,0 0.457508,0.04961 0.223242,0.04685 0.432704,0.143315 z"
style="font-size:5.64444px"
id="path1205" />
<path
d="m 65.831051,61.081689 q -0.407899,0 -0.644921,0.319704 -0.237023,0.316949 -0.237023,0.87092 0,0.553971 0.234267,0.873675 0.237022,0.316949 0.647677,0.316949 0.405143,0 0.642165,-0.319705 0.237023,-0.319704 0.237023,-0.870919 0,-0.548459 -0.237023,-0.868163 -0.237022,-0.322461 -0.642165,-0.322461 z m 0,-0.429948 q 0.661458,0 1.03904,0.429948 0.377582,0.429947 0.377582,1.190624 0,0.75792 -0.377582,1.190624 -0.377582,0.429948 -1.03904,0.429948 -0.664214,0 -1.041796,-0.429948 -0.374826,-0.432704 -0.374826,-1.190624 0,-0.760677 0.374826,-1.190624 0.377582,-0.429948 1.041796,-0.429948 z"
style="font-size:5.64444px"
id="path1207" />
<path
d="m 70.488817,61.318711 q 0.190169,-0.341753 0.454752,-0.504361 0.264583,-0.162609 0.622873,-0.162609 0.482313,0 0.74414,0.338997 0.261827,0.336241 0.261827,0.959114 v 1.863106 h -0.509874 v -1.846569 q 0,-0.443728 -0.157096,-0.658702 -0.157096,-0.214974 -0.479557,-0.214974 -0.394119,0 -0.622873,0.261827 -0.228754,0.261827 -0.228754,0.713823 v 1.744595 h -0.509874 v -1.846569 q 0,-0.446484 -0.157096,-0.658702 -0.157096,-0.214974 -0.485069,-0.214974 -0.388607,0 -0.617361,0.264583 -0.228754,0.261827 -0.228754,0.711067 v 1.744595 h -0.509874 v -3.086803 h 0.509874 v 0.479557 q 0.173633,-0.283875 0.416167,-0.418923 0.242535,-0.135048 0.57602,-0.135048 0.336241,0 0.570507,0.170877 0.237023,0.170876 0.350022,0.496093 z"
style="font-size:5.64444px"
id="path1209" />
<path
d="m 74.077225,63.349938 v 1.637108 h -0.509873 v -4.260891 h 0.509873 v 0.468533 q 0.159853,-0.275608 0.402387,-0.407899 0.245291,-0.135048 0.584288,-0.135048 0.562239,0 0.912261,0.446484 0.352777,0.446484 0.352777,1.174088 0,0.727604 -0.352777,1.174088 -0.350022,0.446484 -0.912261,0.446484 -0.338997,0 -0.584288,-0.132292 -0.242534,-0.135048 -0.402387,-0.410655 z m 1.725303,-1.077625 q 0,-0.559483 -0.23151,-0.876432 -0.228754,-0.319704 -0.631141,-0.319704 -0.402387,0 -0.633897,0.319704 -0.228755,0.316949 -0.228755,0.876432 0,0.559483 0.228755,0.879188 0.23151,0.316948 0.633897,0.316948 0.402387,0 0.631141,-0.316948 0.23151,-0.319705 0.23151,-0.879188 z"
style="font-size:5.64444px"
id="path1211" />
<path
d="m 77.169541,59.524507 h 0.507118 v 4.288451 h -0.507118 z"
style="font-size:5.64444px"
id="path1213" />
<path
d="m 81.375309,62.142777 v 0.248047 H 79.04367 q 0.03307,0.523654 0.314193,0.799262 0.283876,0.272851 0.788237,0.272851 0.292144,0 0.564995,-0.07166 0.275608,-0.07166 0.545703,-0.214974 v 0.479557 q -0.272851,0.115755 -0.559483,0.176389 -0.286632,0.06063 -0.581532,0.06063 -0.738628,0 -1.171331,-0.429948 -0.429948,-0.429948 -0.429948,-1.163063 0,-0.757921 0.407899,-1.201649 0.410655,-0.446484 1.105186,-0.446484 0.622873,0 0.983918,0.402387 0.363802,0.399631 0.363802,1.088649 z m -0.507117,-0.148828 q -0.0055,-0.416167 -0.234267,-0.664213 -0.225998,-0.248047 -0.600824,-0.248047 -0.424435,0 -0.68075,0.239778 -0.253559,0.239779 -0.292144,0.675239 z"
style="font-size:5.64444px"
id="path1215" />
<path
d="m 84.610941,61.318711 q 0.190169,-0.341753 0.454753,-0.504361 0.264583,-0.162609 0.622872,-0.162609 0.482313,0 0.74414,0.338997 0.261827,0.336241 0.261827,0.959114 v 1.863106 H 86.18466 v -1.846569 q 0,-0.443728 -0.157097,-0.658702 -0.157096,-0.214974 -0.479556,-0.214974 -0.394119,0 -0.622873,0.261827 -0.228754,0.261827 -0.228754,0.713823 v 1.744595 h -0.509874 v -1.846569 q 0,-0.446484 -0.157096,-0.658702 -0.157097,-0.214974 -0.485069,-0.214974 -0.388607,0 -0.617361,0.264583 -0.228754,0.261827 -0.228754,0.711067 v 1.744595 h -0.509874 v -3.086803 h 0.509874 v 0.479557 q 0.173632,-0.283875 0.416167,-0.418923 0.242534,-0.135048 0.576019,-0.135048 0.336242,0 0.570508,0.170877 0.237022,0.170876 0.350021,0.496093 z"
style="font-size:5.64444px"
id="path1217" />
<path
d="m 90.349089,62.142777 v 0.248047 H 88.01745 q 0.03307,0.523654 0.314193,0.799262 0.283875,0.272851 0.788237,0.272851 0.292144,0 0.564995,-0.07166 0.275608,-0.07166 0.545703,-0.214974 v 0.479557 q -0.272852,0.115755 -0.559483,0.176389 -0.286632,0.06063 -0.581532,0.06063 -0.738628,0 -1.171332,-0.429948 -0.429947,-0.429948 -0.429947,-1.163063 0,-0.757921 0.407899,-1.201649 0.410655,-0.446484 1.105186,-0.446484 0.622872,0 0.983918,0.402387 0.363802,0.399631 0.363802,1.088649 z m -0.507118,-0.148828 q -0.0055,-0.416167 -0.234266,-0.664213 -0.225998,-0.248047 -0.600824,-0.248047 -0.424436,0 -0.680751,0.239778 -0.253558,0.239779 -0.292143,0.675239 z"
style="font-size:5.64444px"
id="path1219" />
<path
d="m 93.747327,61.949852 v 1.863106 H 93.24021 v -1.846569 q 0,-0.438216 -0.170877,-0.655946 -0.170876,-0.21773 -0.51263,-0.21773 -0.410655,0 -0.647677,0.261827 -0.237023,0.261827 -0.237023,0.713823 v 1.744595 H 91.16213 v -3.086803 h 0.509873 v 0.479557 q 0.181901,-0.278363 0.427192,-0.416167 0.248047,-0.137804 0.570507,-0.137804 0.531923,0 0.804774,0.330729 0.272851,0.327973 0.272851,0.967382 z"
style="font-size:5.64444px"
id="path1221" />
<path
d="m 95.265927,59.849724 v 0.876431 h 1.044552 v 0.394119 h -1.044552 v 1.675693 q 0,0.377582 0.101975,0.485069 0.10473,0.107487 0.421679,0.107487 h 0.520898 v 0.424435 h -0.520898 q -0.587044,0 -0.810286,-0.217729 -0.223242,-0.220486 -0.223242,-0.799262 v -1.675693 h -0.37207 v -0.394119 h 0.37207 v -0.876431 z"
style="font-size:5.64444px"
id="path1223" />
</g>
<g
aria-label="+"
transform="translate(65.280768,46.193992)"
id="text1124"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1126);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 34.687306,24.561394 v 2.302703 h 2.302703 v 0.702799 h -2.302703 v 2.302703 h -0.694531 v -2.302703 h -2.302703 v -0.702799 h 2.302703 v -2.302703 z"
style="font-size:8.46667px"
id="path1226" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect3705);fill:#000000;fill-opacity:1;stroke:none"
id="text3703"
transform="matrix(0.78270576,0,0,0.78270576,-1.9931573,-23.312884)"
aria-label="adjective noun adverb">
<path
id="path3709"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 92.36543,121.08052 q -0.691431,0 -0.958081,0.15813 -0.266651,0.15813 -0.266651,0.5395 0,0.30386 0.198438,0.4837 0.201538,0.17673 0.545703,0.17673 0.47439,0 0.759644,-0.33486 0.288354,-0.33797 0.288354,-0.89607 v -0.12713 z m 1.137915,-0.23564 v 1.98127 h -0.570508 v -0.5271 q -0.195337,0.31626 -0.486792,0.46819 -0.291455,0.14883 -0.713135,0.14883 -0.5333,0 -0.84956,-0.29766 -0.313159,-0.30075 -0.313159,-0.80305 0,-0.58601 0.390673,-0.88367 0.393775,-0.29765 1.172022,-0.29765 h 0.799951 v -0.0558 q 0,-0.39378 -0.260449,-0.60772 -0.257349,-0.21704 -0.725537,-0.21704 -0.297656,0 -0.57981,0.0713 -0.282153,0.0713 -0.542602,0.21394 v -0.5271 q 0.313159,-0.12093 0.607715,-0.17984 0.294555,-0.062 0.573608,-0.062 0.753442,0 1.125513,0.39067 0.37207,0.39068 0.37207,1.18443 z" />
<path
id="path3711"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 96.966699,119.8806 v -1.87896 h 0.570508 v 4.82451 h -0.570508 v -0.5209 q -0.179834,0.31006 -0.455786,0.46199 -0.272851,0.14883 -0.657324,0.14883 -0.629419,0 -1.026294,-0.5023 -0.393774,-0.50229 -0.393774,-1.32085 0,-0.81855 0.393774,-1.32084 0.396875,-0.5023 1.026294,-0.5023 0.384473,0 0.657324,0.15193 0.275952,0.14883 0.455786,0.45889 z m -1.944067,1.21232 q 0,0.62942 0.257349,0.98909 0.260449,0.35657 0.713134,0.35657 0.452686,0 0.713135,-0.35657 0.260449,-0.35967 0.260449,-0.98909 0,-0.62941 -0.260449,-0.98598 -0.260449,-0.35967 -0.713135,-0.35967 -0.452685,0 -0.713134,0.35967 -0.257349,0.35657 -0.257349,0.98598 z" />
<path
id="path3713"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 98.712329,119.3535 h 0.570508 v 3.53466 q 0,0.66353 -0.254248,0.96119 -0.251148,0.29765 -0.812354,0.29765 h -0.217041 v -0.48369 h 0.151929 q 0.325562,0 0.443384,-0.15193 0.117822,-0.14883 0.117822,-0.62322 z m 0,-1.35186 h 0.570508 v 0.72244 h -0.570508 z" />
<path
id="path3715"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 103.44382,120.9472 v 0.27905 h -2.62309 q 0.0372,0.58911 0.35346,0.89917 0.31937,0.30696 0.88677,0.30696 0.32866,0 0.63562,-0.0806 0.31006,-0.0806 0.61392,-0.24184 v 0.5395 q -0.30696,0.13022 -0.62942,0.19844 -0.32246,0.0682 -0.65422,0.0682 -0.83096,0 -1.31775,-0.48369 -0.48369,-0.48369 -0.48369,-1.30845 0,-0.85266 0.45888,-1.35185 0.46199,-0.5023 1.24334,-0.5023 0.70073,0 1.10691,0.45269 0.40927,0.44958 0.40927,1.22473 z m -0.5705,-0.16743 q -0.006,-0.46819 -0.26355,-0.74725 -0.25425,-0.27905 -0.67593,-0.27905 -0.47749,0 -0.76585,0.26975 -0.28525,0.26975 -0.32866,0.75965 z" />
<path
id="path3717"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 106.87927,119.48682 v 0.5333 q -0.24184,-0.13332 -0.48679,-0.19844 -0.24184,-0.0682 -0.48989,-0.0682 -0.55501,0 -0.86196,0.35347 -0.30696,0.35036 -0.30696,0.98598 0,0.63562 0.30696,0.98909 0.30695,0.35037 0.86196,0.35037 0.24805,0 0.48989,-0.0651 0.24495,-0.0682 0.48679,-0.20154 v 0.5271 q -0.23874,0.11162 -0.49609,0.16743 -0.25425,0.0558 -0.5426,0.0558 -0.78445,0 -1.24644,-0.49299 -0.46199,-0.493 -0.46199,-1.33016 0,-0.84956 0.46509,-1.33635 0.46819,-0.48679 1.28054,-0.48679 0.26355,0 0.5147,0.0558 0.25115,0.0527 0.48679,0.16123 z" />
<path
id="path3719"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 108.44197,118.36751 v 0.98599 h 1.17512 v 0.44338 h -1.17512 v 1.88516 q 0,0.42478 0.11472,0.5457 0.11782,0.12092 0.47439,0.12092 h 0.58601 v 0.47749 h -0.58601 q -0.66043,0 -0.91157,-0.24494 -0.25115,-0.24805 -0.25115,-0.89917 v -1.88516 h -0.41858 v -0.44338 h 0.41858 v -0.98599 z" />
<path
id="path3721"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 110.37053,119.3535 h 0.57051 v 3.47265 h -0.57051 z m 0,-1.35186 h 0.57051 v 0.72244 h -0.57051 z" />
<path
id="path3723"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 111.72239,119.3535 h 0.60461 l 1.08521,2.91455 1.0852,-2.91455 h 0.60462 l -1.30225,3.47265 h -0.77515 z" />
<path
id="path3725"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 118.85994,120.9472 v 0.27905 h -2.6231 q 0.0372,0.58911 0.35347,0.89917 0.31936,0.30696 0.88677,0.30696 0.32866,0 0.63562,-0.0806 0.31005,-0.0806 0.61391,-0.24184 v 0.5395 q -0.30696,0.13022 -0.62942,0.19844 -0.32246,0.0682 -0.65422,0.0682 -0.83096,0 -1.31775,-0.48369 -0.48369,-0.48369 -0.48369,-1.30845 0,-0.85266 0.45889,-1.35185 0.46198,-0.5023 1.24333,-0.5023 0.70073,0 1.10691,0.45269 0.40928,0.44958 0.40928,1.22473 z m -0.57051,-0.16743 q -0.006,-0.46819 -0.26355,-0.74725 -0.25425,-0.27905 -0.67593,-0.27905 -0.47749,0 -0.76584,0.26975 -0.28526,0.26975 -0.32866,0.75965 z" />
<path
id="path3727"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 100.19131,128.03265 v 2.096 h -0.570509 v -2.07739 q 0,-0.493 -0.192236,-0.73794 -0.192237,-0.24495 -0.576709,-0.24495 -0.461988,0 -0.728638,0.29456 -0.266651,0.29455 -0.266651,0.80305 v 1.96267 h -0.573608 v -3.47266 h 0.573608 v 0.53951 q 0.204639,-0.31316 0.480591,-0.46819 0.279053,-0.15503 0.641822,-0.15503 0.598413,0 0.905371,0.37207 0.306959,0.36897 0.306959,1.0883 z" />
<path
id="path3729"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 102.68108,127.05597 q -0.45889,0 -0.72554,0.35967 -0.26665,0.35656 -0.26665,0.97978 0,0.62322 0.26355,0.98289 0.26665,0.35657 0.72864,0.35657 0.45579,0 0.72244,-0.35967 0.26665,-0.35967 0.26665,-0.97979 0,-0.61701 -0.26665,-0.97668 -0.26665,-0.36277 -0.72244,-0.36277 z m 0,-0.48369 q 0.74414,0 1.16892,0.48369 0.42478,0.48369 0.42478,1.33945 0,0.85266 -0.42478,1.33946 -0.42478,0.48369 -1.16892,0.48369 -0.74724,0 -1.17202,-0.48369 -0.42168,-0.4868 -0.42168,-1.33946 0,-0.85576 0.42168,-1.33945 0.42478,-0.48369 1.17202,-0.48369 z" />
<path
id="path3731"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 105.15845,128.75819 v -2.1022 h 0.5705 v 2.0805 q 0,0.49299 0.19224,0.74104 0.19224,0.24494 0.57671,0.24494 0.46199,0 0.72864,-0.29455 0.26975,-0.29456 0.26975,-0.80305 v -1.96888 h 0.57051 v 3.47266 h -0.57051 v -0.5333 q -0.20774,0.31626 -0.48369,0.47129 -0.27285,0.15193 -0.63562,0.15193 -0.59842,0 -0.90847,-0.37207 -0.31006,-0.37207 -0.31006,-1.08831 z m 1.43557,-2.18591 z" />
<path
id="path3733"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 112.13477,128.03265 v 2.096 h -0.57051 v -2.07739 q 0,-0.493 -0.19224,-0.73794 -0.19224,-0.24495 -0.57671,-0.24495 -0.46199,0 -0.72864,0.29456 -0.26665,0.29455 -0.26665,0.80305 v 1.96267 h -0.5736 v -3.47266 h 0.5736 v 0.53951 q 0.20464,-0.31316 0.48059,-0.46819 0.27906,-0.15503 0.64183,-0.15503 0.59841,0 0.90537,0.37207 0.30696,0.36897 0.30696,1.0883 z" />
<path
id="path3735"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 95.75127,135.68552 q -0.691431,0 -0.958081,0.15813 -0.266651,0.15813 -0.266651,0.5395 0,0.30386 0.198438,0.48369 0.201538,0.17673 0.545703,0.17673 0.474389,0 0.759643,-0.33486 0.288355,-0.33796 0.288355,-0.89607 v -0.12712 z m 1.137915,-0.23565 v 1.98128 h -0.570508 v -0.5271 q -0.195337,0.31626 -0.486792,0.46819 -0.291455,0.14882 -0.713135,0.14882 -0.533301,0 -0.84956,-0.29765 -0.31316,-0.30076 -0.31316,-0.80305 0,-0.58601 0.390674,-0.88367 0.393775,-0.29766 1.172022,-0.29766 h 0.799951 v -0.0558 q 0,-0.39377 -0.260449,-0.60771 -0.257349,-0.21704 -0.725537,-0.21704 -0.297657,0 -0.57981,0.0713 -0.282153,0.0713 -0.542603,0.21394 v -0.5271 q 0.31316,-0.12092 0.607715,-0.17983 0.294556,-0.062 0.573609,-0.062 0.753442,0 1.125512,0.39067 0.372071,0.39067 0.372071,1.18442 z" />
<path
id="path3737"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 100.35254,134.48559 v -1.87895 h 0.57051 v 4.82451 h -0.57051 v -0.5209 q -0.17983,0.31006 -0.455787,0.46199 -0.272851,0.14882 -0.657324,0.14882 -0.629419,0 -1.026294,-0.50229 -0.393774,-0.50229 -0.393774,-1.32085 0,-0.81855 0.393774,-1.32085 0.396875,-0.50229 1.026294,-0.50229 0.384473,0 0.657324,0.15192 0.275957,0.14883 0.455787,0.45889 z m -1.944068,1.21233 q 0,0.62942 0.257349,0.98909 0.260449,0.35656 0.713134,0.35656 0.452686,0 0.713135,-0.35656 0.26045,-0.35967 0.26045,-0.98909 0,-0.62942 -0.26045,-0.98599 -0.260449,-0.35966 -0.713135,-0.35966 -0.452685,0 -0.713134,0.35966 -0.257349,0.35657 -0.257349,0.98599 z" />
<path
id="path3739"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 101.68889,133.95849 h 0.60462 l 1.0852,2.91455 1.08521,-2.91455 h 0.60461 l -1.30225,3.47266 h -0.77514 z" />
<path
id="path3741"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 108.82644,135.55219 v 0.27906 h -2.62309 q 0.0372,0.58911 0.35346,0.89917 0.31936,0.30695 0.88677,0.30695 0.32866,0 0.63562,-0.0806 0.31006,-0.0806 0.61392,-0.24185 v 0.5395 q -0.30696,0.13023 -0.62942,0.19844 -0.32246,0.0682 -0.65423,0.0682 -0.83095,0 -1.31775,-0.48369 -0.48369,-0.48369 -0.48369,-1.30844 0,-0.85266 0.45889,-1.35186 0.46199,-0.50229 1.24333,-0.50229 0.70074,0 1.10691,0.45268 0.40928,0.44959 0.40928,1.22473 z m -0.57051,-0.16743 q -0.006,-0.46819 -0.26355,-0.74724 -0.25424,-0.27905 -0.67592,-0.27905 -0.47749,0 -0.76585,0.26975 -0.28525,0.26975 -0.32866,0.75964 z" />
<path
id="path3743"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 111.7751,134.49179 q -0.0961,-0.0558 -0.21084,-0.0806 -0.11162,-0.0279 -0.24805,-0.0279 -0.48369,0 -0.74414,0.31626 -0.25735,0.31316 -0.25735,0.90227 v 1.82935 h -0.57361 v -3.47266 h 0.57361 v 0.5395 q 0.17984,-0.31626 0.46819,-0.46818 0.28836,-0.15503 0.70073,-0.15503 0.0589,0 0.13023,0.009 0.0713,0.006 0.15813,0.0217 z" />
<path
id="path3745"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle;fill:#666666"
d="m 114.87258,135.69792 q 0,-0.62942 -0.26045,-0.98599 -0.25735,-0.35966 -0.71003,-0.35966 -0.45269,0 -0.71314,0.35966 -0.25734,0.35657 -0.25734,0.98599 0,0.62942 0.25734,0.98909 0.26045,0.35656 0.71314,0.35656 0.45268,0 0.71003,-0.35656 0.26045,-0.35967 0.26045,-0.98909 z m -1.94096,-1.21233 q 0.17983,-0.31006 0.45268,-0.45889 0.27595,-0.15192 0.65733,-0.15192 0.63252,0 1.02629,0.50229 0.39687,0.5023 0.39687,1.32085 0,0.81856 -0.39687,1.32085 -0.39377,0.50229 -1.02629,0.50229 -0.38138,0 -0.65733,-0.14882 -0.27285,-0.15193 -0.45268,-0.46199 v 0.5209 h -0.57361 v -4.82451 h 0.57361 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1855);fill:#000000;fill-opacity:1;stroke:none"
id="text1853"
transform="translate(0.56696429,-0.18898803)"
aria-label="کېدل">
<path
id="path1926"
d="m 123.70022,69.461396 h -1.70532 v -0.950843 h 1.60197 q 0.76481,0 0.99735,-0.537434 0.0827,-0.186034 0.0827,-0.372069 0,-0.356566 -0.27905,-0.697629 l -1.60197,-1.963698 q -0.25838,-0.315226 -0.25838,-0.733803 0,-0.180867 0.0517,-0.351399 0.1602,-0.60978 0.69763,-0.831988 l 3.84988,-1.601964 v 0.961178 l -3.07474,1.291907 q -0.3669,0.155029 -0.47542,0.361734 -0.031,0.05684 -0.031,0.186034 0,0.165364 0.16019,0.356567 l 1.4211,1.705317 q 0.5271,0.635618 0.5271,1.271236 0,0.583942 -0.3204,1.105872 -0.49092,0.800982 -1.6433,0.800982 z" />
<path
id="path1928"
d="m 120.43945,69.01698 q -0.39791,0.444416 -1.18339,0.444416 h -0.46509 v -0.950843 h 0.18087 q 0.5116,0 0.73897,-0.227376 0.25321,-0.253214 0.25321,-0.800982 V 66.36082 h 0.95085 v 1.121375 q 0,0.547768 0.25321,0.800982 0.22738,0.227376 0.73897,0.227376 h 0.28422 v 0.950843 h -0.56844 q -0.77514,0 -1.18338,-0.444416 z m -0.38758,2.253085 h 0.77515 v 0.775144 h -0.77515 z m 0,-1.291906 h 0.77515 v 0.775144 h -0.77515 z" />
<path
id="path1930"
d="m 116.15548,66.490011 q -0.29455,-0.630451 -1.23506,-1.421098 h 1.17305 q 0.50126,0.403075 0.92501,1.11104 0.41858,0.692462 0.41858,1.297074 0,0.377237 0.42891,0.80615 0.22737,0.227376 0.73897,0.227376 h 0.38757 v 0.950843 h -0.67179 q -0.75964,0 -1.2609,-0.671792 -0.48059,0.661457 -1.55029,0.831988 -0.23771,0.03617 -0.47025,0.03617 -0.5271,0 -1.05937,-0.19637 v -0.950843 q 0.59428,0.21704 1.02836,0.21704 0.17053,0 0.34623,-0.04651 0.88883,-0.253213 1.0697,-0.831988 0.0413,-0.139526 0.0413,-0.356566 0,-0.351398 -0.31006,-1.002519 z" />
<path
id="path1932"
d="m 111.0292,69.084159 q 0.40307,-0.651121 0.40307,-1.824172 v -5.839418 h 0.95085 v 5.839418 q 0,1.638138 -0.50643,2.382276 -0.62528,0.91467 -1.97403,1.255733 -0.69247,0.1757 -1.13171,0.1757 -0.49093,0 -0.86817,-0.113688 -1.50894,-0.475422 -1.51411,-1.886184 -0.005,-0.713133 0.32556,-1.188554 h 0.95084 q -0.33589,0.594277 -0.33589,1.188554 0,0.671791 0.85782,0.992184 0.20671,0.08268 0.58395,0.08268 0.41341,0 0.97668,-0.175699 0.89916,-0.273884 1.28157,-0.888832 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.65;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1861);fill:#000000;fill-opacity:1;stroke:none"
id="text1859"
transform="matrix(0.96154424,0,0,0.96154424,78.952615,57.256132)"
aria-label="to
become">
<path
id="path1935"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 37.367896,16.659795 v 0.985986 h 1.175122 v 0.443384 h -1.175122 v 1.885156 q 0,0.42478 0.114721,0.545703 0.117822,0.120923 0.47439,0.120923 h 0.586011 v 0.47749 h -0.586011 q -0.660425,0 -0.911572,-0.244946 -0.251148,-0.248047 -0.251148,-0.89917 v -1.885156 h -0.418579 v -0.443384 h 0.418579 v -0.985986 z" />
<path
id="path1937"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 40.642114,18.045757 q -0.458886,0 -0.725537,0.359668 -0.26665,0.356567 -0.26665,0.979785 0,0.623217 0.26355,0.982885 0.26665,0.356568 0.728637,0.356568 0.455786,0 0.722437,-0.359668 0.26665,-0.359668 0.26665,-0.979785 0,-0.617017 -0.26665,-0.976685 -0.266651,-0.362768 -0.722437,-0.362768 z m 0,-0.483692 q 0.744141,0 1.168921,0.483692 0.42478,0.483691 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.42478,0.483691 -1.168921,0.483691 -0.747241,0 -1.172021,-0.483691 -0.42168,-0.486792 -0.42168,-1.339453 0,-0.855762 0.42168,-1.339453 0.42478,-0.483692 1.172021,-0.483692 z" />
<path
id="path1939"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 29.777661,26.264354 q 0,-0.629419 -0.260449,-0.985986 -0.257349,-0.359668 -0.710034,-0.359668 -0.452686,0 -0.713135,0.359668 -0.257348,0.356567 -0.257348,0.985986 0,0.629419 0.257348,0.989087 0.260449,0.356568 0.713135,0.356568 0.452685,0 0.710034,-0.356568 0.260449,-0.359668 0.260449,-0.989087 z m -1.940966,-1.212329 q 0.179833,-0.310058 0.452685,-0.458886 0.275952,-0.151929 0.657324,-0.151929 0.63252,0 1.026294,0.502295 0.396875,0.502295 0.396875,1.320849 0,0.818555 -0.396875,1.32085 -0.393774,0.502295 -1.026294,0.502295 -0.381372,0 -0.657324,-0.148828 -0.272852,-0.151929 -0.452685,-0.461988 v 0.520899 H 27.263086 V 23.17307 h 0.573609 z" />
<path
id="path1941"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 34.285913,26.118627 v 0.279053 h -2.623095 q 0.03721,0.589111 0.353466,0.899169 0.319361,0.306958 0.886768,0.306958 0.328662,0 0.63562,-0.08061 0.310059,-0.08062 0.613916,-0.241845 v 0.539501 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654224,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483691,-0.483691 -0.483691,-1.308447 0,-0.852661 0.458887,-1.351855 0.461987,-0.502295 1.243335,-0.502295 0.700732,0 1.106909,0.452685 0.409277,0.449585 0.409277,1.224732 z m -0.570508,-0.167432 q -0.0062,-0.468188 -0.263549,-0.747241 -0.254248,-0.279053 -0.675928,-0.279053 -0.47749,0 -0.765845,0.269751 -0.285254,0.269751 -0.328662,0.759644 z" />
<path
id="path1943"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 37.721362,24.658251 v 0.533301 q -0.241845,-0.133326 -0.486792,-0.198438 -0.241845,-0.06821 -0.489892,-0.06821 -0.555005,0 -0.861963,0.353467 -0.306958,0.350366 -0.306958,0.985986 0,0.63562 0.306958,0.989087 0.306958,0.350366 0.861963,0.350366 0.248047,0 0.489892,-0.06511 0.244947,-0.06821 0.486792,-0.201538 v 0.5271 q -0.238745,0.111621 -0.496093,0.167431 -0.254248,0.05581 -0.542603,0.05581 -0.784448,0 -1.246435,-0.492993 -0.461988,-0.492993 -0.461988,-1.330152 0,-0.84956 0.465088,-1.336352 0.468189,-0.486792 1.280542,-0.486792 0.26355,0 0.514697,0.05581 0.251148,0.05271 0.486792,0.161231 z" />
<path
id="path1945"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 40.065406,24.924901 q -0.458887,0 -0.725537,0.359668 -0.266651,0.356568 -0.266651,0.979785 0,0.623218 0.26355,0.982886 0.266651,0.356567 0.728638,0.356567 0.455786,0 0.722436,-0.359668 0.266651,-0.359667 0.266651,-0.979785 0,-0.617016 -0.266651,-0.976684 -0.26665,-0.362769 -0.722436,-0.362769 z m 0,-0.483691 q 0.74414,0 1.168921,0.483691 0.42478,0.483692 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.424781,0.483692 -1.168921,0.483692 -0.747241,0 -1.172022,-0.483692 -0.421679,-0.486792 -0.421679,-1.339453 0,-0.855761 0.421679,-1.339453 0.424781,-0.483691 1.172022,-0.483691 z" />
<path
id="path1947"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 45.305396,25.191552 q 0.21394,-0.384473 0.511596,-0.567408 0.297657,-0.182934 0.700733,-0.182934 0.542602,0 0.837158,0.381372 0.294556,0.378271 0.294556,1.079004 v 2.095996 H 47.07583 v -2.077393 q 0,-0.499194 -0.176733,-0.74104 -0.176734,-0.241845 -0.539502,-0.241845 -0.443384,0 -0.700733,0.294555 -0.257348,0.294556 -0.257348,0.803052 v 1.962671 h -0.573609 v -2.077393 q 0,-0.502295 -0.176733,-0.74104 -0.176733,-0.241845 -0.545703,-0.241845 -0.437183,0 -0.694531,0.297656 -0.257349,0.294555 -0.257349,0.799951 v 1.962671 h -0.573608 v -3.472656 h 0.573608 v 0.539502 q 0.195337,-0.319361 0.468189,-0.471289 0.272851,-0.151929 0.648022,-0.151929 0.378271,0 0.641821,0.192236 0.266651,0.192237 0.393775,0.558106 z" />
<path
id="path1949"
style="font-size:6.35px;text-align:center;text-anchor:middle"
d="m 51.760814,26.118627 v 0.279053 h -2.623095 q 0.03721,0.589111 0.353467,0.899169 0.31936,0.306958 0.886767,0.306958 0.328662,0 0.63562,-0.08061 0.310059,-0.08062 0.613916,-0.241845 v 0.539501 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654223,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483692,-0.483691 -0.483692,-1.308447 0,-0.852661 0.458887,-1.351855 0.461987,-0.502295 1.243335,-0.502295 0.700732,0 1.106909,0.452685 0.409277,0.449585 0.409277,1.224732 z m -0.570507,-0.167432 q -0.0062,-0.468188 -0.26355,-0.747241 -0.254248,-0.279053 -0.675928,-0.279053 -0.47749,0 -0.765845,0.269751 -0.285254,0.269751 -0.328662,0.759644 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 81 KiB

View File

@ -0,0 +1,555 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="803.02252"
height="350.27139"
viewBox="0 0 212.46637 92.675973"
version="1.1"
id="svg8"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="transitive-past.svg">
<defs
id="defs2">
<rect
id="rect4499"
height="33.408691"
width="100.76061"
y="4.1634259"
x="10.841692" />
<rect
x="-15.096844"
y="-70.55368"
width="93.738098"
height="46.113094"
id="rect1391" />
<rect
x="39.331726"
y="-43.339394"
width="51.404762"
height="25.324406"
id="rect1385" />
<rect
x="38.953751"
y="35.657631"
width="78.997025"
height="25.324406"
id="rect1379" />
<rect
x="57.474583"
y="33.389771"
width="29.104168"
height="23.434525"
id="rect1373" />
<rect
x="4.935894"
y="6.553463"
width="112.6993"
height="77.422302"
id="rect1360" />
<rect
x="35.83614"
y="118.46915"
width="93.738098"
height="35.151787"
id="rect1354" />
<rect
x="-56.012074"
y="116.23755"
width="76.351189"
height="28.348213"
id="rect1348" />
<rect
x="35.529755"
y="61.904251"
width="50.263763"
height="44.73629"
id="rect1165" />
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1113" />
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path841"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fillRule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.8,0,0,0.8,10,0)" />
</marker>
<rect
id="rect1113-9"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
<rect
id="rect1141"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
</defs>
<sodipodi:namedview
inkscape:snap-global="false"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.9899495"
inkscape:cx="406.88683"
inkscape:cy="-1.8078828"
inkscape:document-units="mm"
inkscape:current-layer="text1358"
inkscape:document-rotation="0"
showgrid="false"
units="px"
fit-margin-top="10"
fit-margin-right="10"
fit-margin-bottom="10"
fit-margin-left="10"
inkscape:window-width="1515"
inkscape:window-height="1080"
inkscape:window-x="2167"
inkscape:window-y="118"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(52.843619,-52.585221)">
<path
id="rect839-4"
style="opacity:1;fill:none;stroke:#000000;stroke-width:1.115;stroke-miterlimit:4;stroke-dasharray:none"
d="m 122.9777,85.081856 h 33.44172 V 118.52357 H 122.9777 Z" />
<g
aria-label="verb"
transform="translate(90.461538,-16.314846)"
id="text1111-8"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1113-9);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 37.356241,115.83576 h 1.007687 l 1.808669,4.85757 1.80867,-4.85757 h 1.007687 l -2.170403,5.78775 h -1.291907 z"
id="path1187" />
<path
d="m 49.252118,118.49192 v 0.46509 h -4.371813 q 0.06201,0.98185 0.58911,1.49861 0.532265,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40308 v 0.89917 q -0.511595,0.21704 -1.049029,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04121 z m -0.950844,-0.27905 q -0.01033,-0.78031 -0.439248,-1.2454 -0.423745,-0.46508 -1.126543,-0.46508 -0.795814,0 -1.276403,0.44958 -0.475422,0.44958 -0.547769,1.26607 z"
id="path1189" />
<path
d="m 54.166531,116.7246 q -0.160196,-0.093 -0.351398,-0.13436 -0.186035,-0.0465 -0.41341,-0.0465 -0.80615,0 -1.240231,0.5271 -0.428913,0.52193 -0.428913,1.50378 v 3.0489 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.299723,-0.5271 0.780312,-0.78031 0.480589,-0.25838 1.167883,-0.25838 0.09819,0 0.217041,0.0155 0.118855,0.0103 0.263549,0.0362 z"
id="path1191" />
<path
d="m 59.32899,118.7348 q 0,-1.04903 -0.43408,-1.6433 -0.428913,-0.59945 -1.183387,-0.59945 -0.754473,0 -1.188554,0.59945 -0.428913,0.59427 -0.428913,1.6433 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188554,0.59428 0.754474,0 1.183387,-0.59428 0.43408,-0.59944 0.43408,-1.64847 z m -3.234934,-2.02054 q 0.299722,-0.51676 0.754474,-0.76481 0.459918,-0.25321 1.095536,-0.25321 1.054196,0 1.710485,0.83715 0.661456,0.83716 0.661456,2.20141 0,1.36426 -0.661456,2.20141 -0.656289,0.83716 -1.710485,0.83716 -0.635618,0 -1.095536,-0.24805 -0.454752,-0.25321 -0.754474,-0.76998 v 0.86817 h -0.956011 v -8.04083 h 0.956011 z"
id="path1193" />
</g>
<g
aria-label="plain noun / pronoun"
transform="translate(4.9451604,8.3665)"
id="text1163"
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1165);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 51.876136,67.854117 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367936,-0.202572 0.876432,-0.202572 0.84336,0 1.368393,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669727 -1.368393,0.669727 -0.508496,0 -0.876432,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475424 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1196" />
<path
d="m 56.514614,62.115963 h 0.760678 v 6.432685 h -0.760678 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1198" />
<path
d="m 60.967057,66.221141 q -0.921908,0 -1.277442,0.21084 -0.355534,0.21084 -0.355534,0.719336 0,0.405143 0.264584,0.644922 0.268717,0.235645 0.727604,0.235645 0.63252,0 1.012859,-0.446485 0.384473,-0.450618 0.384473,-1.194759 v -0.169499 z m 1.517221,-0.314193 v 2.6417 h -0.760677 v -0.702799 q -0.26045,0.421679 -0.649057,0.624251 -0.388607,0.198438 -0.950846,0.198438 -0.711068,0 -1.132748,-0.396876 -0.417546,-0.401009 -0.417546,-1.070736 0,-0.781348 0.520899,-1.178223 0.525032,-0.396875 1.562696,-0.396875 h 1.066602 v -0.07441 q 0,-0.525033 -0.347266,-0.810287 -0.343132,-0.289388 -0.967383,-0.289388 -0.396876,0 -0.77308,0.09508 -0.376205,0.09508 -0.723471,0.285254 v -0.7028 q 0.417546,-0.161231 0.810287,-0.239779 0.392741,-0.08268 0.764812,-0.08268 1.00459,0 1.500684,0.520899 0.496094,0.520898 0.496094,1.579231 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1200" />
<path
d="m 64.055242,63.918438 h 0.760678 v 4.63021 h -0.760678 z m 0,-1.802475 h 0.760678 v 0.96325 h -0.760678 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1202" />
<path
d="m 70.252282,65.753986 v 2.794662 H 69.491605 V 65.77879 q 0,-0.657324 -0.256315,-0.983919 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1204" />
<path
d="m 51.88027,74.643985 v 2.794663 H 51.119593 V 74.66879 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1206" />
<path
d="m 55.199965,73.341738 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1208" />
<path
d="m 58.503124,75.611368 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359669,-0.392741 0.359669,-1.070736 v -2.625164 h 0.760677 v 4.630211 H 61.620248 V 76.72758 q -0.276986,0.42168 -0.644923,0.628385 -0.363802,0.202572 -0.847493,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1210" />
<path
d="m 67.804886,74.643985 v 2.794663 H 67.044208 V 74.66879 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1212" />
<path
d="m 73.377673,71.266412 h 0.7028 l -2.14974,6.957718 h -0.7028 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1214" />
<path
d="m 44.616628,85.634116 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239778,-0.413412 0.603581,-0.61185 0.367936,-0.202571 0.876432,-0.202571 0.84336,0 1.368393,0.669727 0.529167,0.669726 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669726 -1.368393,0.669726 -0.508496,0 -0.876432,-0.198437 -0.363803,-0.202572 -0.603581,-0.615983 z m 2.587956,-1.61644 q 0,-0.839226 -0.347265,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475423 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347265,-0.479557 0.347265,-1.318783 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1216" />
<path
d="m 51.938147,82.409505 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343131,0.417545 -0.343131,1.203027 v 2.439129 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624251 0.384473,-0.206706 0.934311,-0.206706 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1218" />
<path
d="m 54.356606,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1220" />
<path
d="m 61.587175,83.533984 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451074 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1222" />
<path
d="m 64.90687,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.562239,-0.649056 -0.562239,-1.785938 0,-1.141016 0.562239,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1224" />
<path
d="m 68.210028,84.501368 v -2.802931 h 0.760678 v 2.773992 q 0,0.657324 0.256315,0.988054 0.256315,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760678 v 4.63021 h -0.760678 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363802,0.202571 -0.847494,0.202571 -0.797884,0 -1.211296,-0.496094 -0.413412,-0.496093 -0.413412,-1.451074 z m 1.914096,-2.914552 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1226" />
<path
d="m 77.51179,83.533984 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451074 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path1228" />
</g>
<g
id="g1333"
transform="translate(7.9375,-1.5481652)">
<path
sodipodi:nodetypes="cccc"
id="path1169"
d="m -57.795068,100.26406 9.342265,9.28984 h 40.1025978 l 9.589407,-9.589405"
style="fill:none;stroke:#000000;stroke-width:0.965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1348);fill:#000000;fill-opacity:1;stroke:none"
id="text1346"
transform="translate(-9.827381,-4.5357143)"
aria-label="subject /
agent">
<path
id="path3360"
style="text-align:center;text-anchor:middle"
d="m -35.814111,119.98481 v 0.89917 q -0.403075,-0.20671 -0.837156,-0.31006 -0.43408,-0.10335 -0.899167,-0.10335 -0.707965,0 -1.064531,0.21704 -0.351398,0.21704 -0.351398,0.65112 0,0.33073 0.253213,0.52193 0.253214,0.18603 1.018023,0.35657 l 0.32556,0.0723 q 1.012855,0.21704 1.436601,0.61495 0.428913,0.39274 0.428913,1.1007 0,0.80615 -0.640786,1.27641 -0.635618,0.47025 -1.751826,0.47025 -0.465086,0 -0.971513,-0.093 -0.50126,-0.0878 -1.059364,-0.26871 v -0.98185 q 0.527098,0.27388 1.038693,0.41341 0.511595,0.13436 1.012855,0.13436 0.671791,0 1.033525,-0.22738 0.361734,-0.23254 0.361734,-0.65112 0,-0.38757 -0.263549,-0.59428 -0.258381,-0.2067 -1.142045,-0.3979 l -0.330729,-0.0775 q -0.883664,-0.18603 -1.276403,-0.56844 -0.39274,-0.38757 -0.39274,-1.05936 0,-0.81649 0.578774,-1.2609 0.578774,-0.44442 1.643306,-0.44442 0.527097,0 0.992184,0.0775 0.465086,0.0775 0.857826,0.23254 z" />
<path
id="path3362"
style="text-align:center;text-anchor:middle"
d="m -34.082956,123.31793 v -3.50365 h 0.950843 v 3.46748 q 0,0.82165 0.320393,1.23506 0.320393,0.40824 0.961179,0.40824 0.769976,0 1.214392,-0.49092 0.449583,-0.49093 0.449583,-1.33842 v -3.28144 h 0.950844 v 5.78774 h -0.950844 v -0.88883 q -0.346231,0.5271 -0.806149,0.78548 -0.454751,0.25321 -1.059364,0.25321 -0.997352,0 -1.514114,-0.62011 -0.516763,-0.62012 -0.516763,-1.81384 z m 2.392611,-3.64318 z" />
<path
id="path3364"
style="text-align:center;text-anchor:middle"
d="m -23.112084,122.71332 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188555,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188555,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59944 0.434081,-1.64847 z m -3.234935,-2.02054 q 0.299723,-0.51677 0.754474,-0.76481 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710484,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656288,0.83715 -1.710484,0.83715 -0.635618,0 -1.095537,-0.24804 -0.454751,-0.25322 -0.754474,-0.76998 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z" />
<path
id="path3366"
style="text-align:center;text-anchor:middle"
d="m -20.548942,119.81428 h 0.950844 v 5.89109 q 0,1.10588 -0.423746,1.60197 -0.418577,0.49609 -1.353918,0.49609 h -0.361734 v -0.80615 h 0.253214 q 0.542601,0 0.738971,-0.25321 0.196369,-0.24805 0.196369,-1.0387 z m 0,-2.25309 h 0.950844 v 1.20406 h -0.950844 z" />
<path
id="path3368"
style="text-align:center;text-anchor:middle"
d="m -12.663144,122.47044 v 0.46509 h -4.371812 q 0.06201,0.98184 0.589109,1.49861 0.532266,0.51159 1.477941,0.51159 0.547769,0 1.059364,-0.13436 0.516763,-0.13435 1.02319,-0.40307 v 0.89917 q -0.511595,0.21704 -1.049028,0.33072 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.42109 0.764809,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844842,0.75448 0.682127,0.7493 0.682127,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78031 -0.439249,-1.2454 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44959 -0.475422,0.44958 -0.547768,1.26606 z" />
<path
id="path3370"
style="text-align:center;text-anchor:middle"
d="m -6.9374138,120.03649 v 0.88883 q -0.4030748,-0.22221 -0.8113174,-0.33073 -0.4030748,-0.11369 -0.816485,-0.11369 -0.9250052,0 -1.4365998,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.5115946,0.58394 1.4365998,0.58394 0.4134102,0 0.816485,-0.10852 0.4082426,-0.11369 0.8113174,-0.33589 v 0.87849 q -0.3979072,0.18604 -0.8268202,0.27905 -0.4237454,0.093 -0.9043347,0.093 -1.3074096,0 -2.0773863,-0.82165 -0.769976,-0.82165 -0.769976,-2.21691 0,-1.41593 0.775144,-2.22725 0.7803116,-0.81132 2.1342298,-0.81132 0.4392483,0 0.857826,0.093 0.4185778,0.0879 0.8113174,0.26872 z" />
<path
id="path3372"
style="text-align:center;text-anchor:middle"
d="m -4.3329304,118.17097 v 1.64331 h 1.9585306 v 0.73897 h -1.9585306 v 3.14192 q 0,0.70796 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766815 v 0.79581 h -0.9766815 q -1.1007045,0 -1.5192823,-0.40824 -0.4185777,-0.41341 -0.4185777,-1.49861 v -3.14192 h -0.6976296 v -0.73897 h 0.6976296 v -1.64331 z" />
<path
id="path3374"
style="text-align:center;text-anchor:middle"
d="M 3.9404424,117.88675 H 4.818939 l -2.6871659,8.69712 H 1.2532765 Z" />
<path
id="path3376"
style="text-align:center;text-anchor:middle"
d="m -29.504439,135.92177 q -1.152381,0 -1.596796,0.26355 -0.444416,0.26355 -0.444416,0.89917 0,0.50643 0.330728,0.80615 0.335896,0.29455 0.909502,0.29455 0.790647,0 1.266069,-0.5581 0.480589,-0.56327 0.480589,-1.49344 v -0.21188 z m 1.896519,-0.39274 v 3.30212 h -0.950843 v -0.8785 q -0.325561,0.5271 -0.811317,0.78031 -0.485757,0.24805 -1.188555,0.24805 -0.888831,0 -1.415929,-0.49609 -0.521931,-0.50126 -0.521931,-1.33842 0,-0.97668 0.651121,-1.47277 0.656289,-0.4961 1.953363,-0.4961 h 1.333248 v -0.093 q 0,-0.65629 -0.434081,-1.01286 -0.428913,-0.36173 -1.209224,-0.36173 -0.496093,0 -0.966347,0.11885 -0.470254,0.11886 -0.904334,0.35657 v -0.8785 q 0.52193,-0.20153 1.012855,-0.29972 0.490924,-0.10335 0.956011,-0.10335 1.255733,0 1.875848,0.65112 0.620115,0.65112 0.620115,1.97403 z" />
<path
id="path3378"
style="text-align:center;text-anchor:middle"
d="m -21.835681,135.8701 q 0,-1.03353 -0.428913,-1.60197 -0.423745,-0.56844 -1.193722,-0.56844 -0.764808,0 -1.193721,0.56844 -0.423746,0.56844 -0.423746,1.60197 0,1.02835 0.423746,1.59679 0.428913,0.56844 1.193721,0.56844 0.769977,0 1.193722,-0.56844 0.428913,-0.56844 0.428913,-1.59679 z m 0.950844,2.24275 q 0,1.47794 -0.656289,2.19624 -0.656289,0.72347 -2.010207,0.72347 -0.50126,0 -0.945676,-0.0775 -0.444415,-0.0724 -0.862993,-0.22737 v -0.92501 q 0.418578,0.22738 0.82682,0.3359 0.408243,0.10852 0.831988,0.10852 0.93534,0 1.400427,-0.49093 0.465086,-0.48575 0.465086,-1.47277 v -0.47026 q -0.294555,0.5116 -0.754473,0.76481 -0.459919,0.25322 -1.100705,0.25322 -1.064531,0 -1.715652,-0.81132 -0.651121,-0.81132 -0.651121,-2.14973 0,-1.34359 0.651121,-2.1549 0.651121,-0.81132 1.715652,-0.81132 0.640786,0 1.100705,0.25321 0.459918,0.25322 0.754473,0.76481 v -0.8785 h 0.950844 z" />
<path
id="path3380"
style="text-align:center;text-anchor:middle"
d="m -13.97572,135.69957 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49861 0.532266,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21704 -1.049028,0.33073 -0.537434,0.11369 -1.09037,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04122 z m -0.950844,-0.27906 q -0.01033,-0.78031 -0.439248,-1.24539 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44958 -0.475422,0.44959 -0.547769,1.26607 z" />
<path
id="path3382"
style="text-align:center;text-anchor:middle"
d="m -7.6040366,135.33783 v 3.49332 H -8.55488 v -3.46231 q 0,-0.82166 -0.3203928,-1.2299 -0.3203929,-0.40824 -0.9611786,-0.40824 -0.7699766,0 -1.2143926,0.49092 -0.444416,0.49093 -0.444416,1.33842 v 3.27111 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.341064,-0.52193 0.800983,-0.78031 0.465086,-0.25838 1.0696983,-0.25838 0.997352,0 1.508947,0.62011 0.5115951,0.61495 0.5115951,1.81384 z" />
<path
id="path3384"
style="text-align:center;text-anchor:middle"
d="m -4.7566745,131.4001 v 1.6433 h 1.9585305 v 0.73898 h -1.9585305 v 3.14191 q 0,0.70797 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766814 v 0.79582 h -0.9766814 q -1.1007045,0 -1.5192823,-0.40825 -0.4185778,-0.41341 -0.4185778,-1.49861 v -3.14191 h -0.6976296 v -0.73898 h 0.6976296 v -1.6433 z" />
</g>
</g>
<g
aria-label="plain noun /
pronoun
"
transform="translate(-120.88099,10.440184)"
id="text1358"
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1360);fill:#000000;fill-opacity:1;stroke:none">
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.95;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4499);fill:#000000;fill-opacity:1;stroke:none"
id="text4497"
transform="matrix(0.91075878,0,0,0.91075878,44.423281,40.361891)"
aria-label="inflected noun /
pronoun">
<path
id="path4503"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 28.822611,7.310097 h 0.760677 v 4.63021 h -0.760677 z m 0,-1.8024746 h 0.760677 v 0.963249 h -0.760677 z" />
<path
id="path4505"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 35.019651,9.1456446 V 11.940307 H 34.258974 V 9.1704493 q 0,-0.6573244 -0.256316,-0.9839196 -0.256315,-0.3265952 -0.768945,-0.3265952 -0.615984,0 -0.971518,0.392741 -0.355534,0.3927411 -0.355534,1.0707361 V 11.940307 H 31.14185 v -4.63021 h 0.764811 v 0.7193363 q 0.272852,-0.4175458 0.640788,-0.6242516 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919599 0.409278,1.4510748 z" />
<path
id="path4507"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 38.169847,5.5076224 h 2.116668 V 11.940307 H 39.521703 V 6.1401421 h -1.360124 q -0.409277,0 -0.570508,0.1653647 -0.157096,0.1653646 -0.157096,0.5953127 V 7.310097 h 1.252637 V 7.9012757 H 37.433975 V 11.940307 H 36.669163 V 7.9012757 H 35.941559 V 7.310097 h 0.727604 V 6.987636 q 0,-0.7730798 0.359668,-1.1244796 0.359668,-0.355534 1.141016,-0.355534 z" />
<path
id="path4509"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 45.846901,9.4350328 v 0.3720704 h -3.497463 q 0.04961,0.7854818 0.47129,1.1988938 0.425814,0.409277 1.182357,0.409277 0.438216,0 0.847494,-0.107487 0.413411,-0.107487 0.818555,-0.322461 v 0.719337 q -0.409278,0.173632 -0.839226,0.264583 -0.429948,0.09095 -0.872298,0.09095 -1.107944,0 -1.757,-0.644923 -0.644922,-0.644922 -0.644922,-1.7445966 0,-1.136882 0.611849,-1.8024747 0.615984,-0.6697268 1.657781,-0.6697268 0.93431,0 1.475879,0.603581 0.545704,0.5994468 0.545704,1.6329759 z M 45.086223,9.2117905 q -0.0083,-0.6242516 -0.3514,-0.996322 -0.338997,-0.3720705 -0.901237,-0.3720705 -0.636654,0 -1.021127,0.3596681 -0.380338,0.3596682 -0.438216,1.0128585 z" />
<path
id="path4511"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 50.427501,7.487864 V 8.198932 Q 50.10504,8.021165 49.778445,7.9343486 49.455984,7.843398 49.125255,7.843398 q -0.740007,0 -1.149285,0.4712893 -0.409277,0.4671551 -0.409277,1.3146489 0,0.8474938 0.409277,1.3187828 0.409278,0.467155 1.149285,0.467155 0.330729,0 0.65319,-0.08682 0.326595,-0.09095 0.649056,-0.268718 v 0.7028 q -0.318327,0.148828 -0.661458,0.223242 -0.338998,0.07442 -0.723471,0.07442 -1.045931,0 -1.661914,-0.657325 -0.615984,-0.657324 -0.615984,-1.7735358 0,-1.1327478 0.620118,-1.7818041 0.624251,-0.6490562 1.70739,-0.6490562 0.3514,0 0.686263,0.074414 0.334863,0.07028 0.649056,0.214974 z" />
<path
id="path4513"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 52.511097,5.9954481 V 7.310097 h 1.56683 v 0.5911787 h -1.56683 v 2.5135423 q 0,0.566374 0.152962,0.727605 0.157097,0.16123 0.63252,0.16123 h 0.781348 v 0.636654 h -0.781348 q -0.880567,0 -1.21543,-0.326595 -0.334863,-0.330729 -0.334863,-1.198894 V 7.9012757 H 51.18818 V 7.310097 h 0.558106 V 5.9954481 Z" />
<path
id="path4515"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 59.042999,9.4350328 v 0.3720704 h -3.497462 q 0.04961,0.7854818 0.471289,1.1988938 0.425814,0.409277 1.182357,0.409277 0.438216,0 0.847494,-0.107487 0.413412,-0.107487 0.818555,-0.322461 v 0.719337 q -0.409277,0.173632 -0.839226,0.264583 -0.429948,0.09095 -0.872298,0.09095 -1.107943,0 -1.757,-0.644923 -0.644922,-0.644922 -0.644922,-1.7445966 0,-1.136882 0.61185,-1.8024747 0.615983,-0.6697268 1.65778,-0.6697268 0.93431,0 1.47588,0.603581 0.545703,0.5994468 0.545703,1.6329759 z M 58.282322,9.2117905 q -0.0083,-0.6242516 -0.3514,-0.996322 -0.338998,-0.3720705 -0.901238,-0.3720705 -0.636653,0 -1.021126,0.3596681 -0.380339,0.3596682 -0.438217,1.0128585 z" />
<path
id="path4517"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 63.338346,8.0128968 V 5.5076224 h 0.760677 v 6.4326846 h -0.760677 v -0.694531 q -0.239779,0.413411 -0.607715,0.615983 -0.363803,0.198438 -0.876433,0.198438 -0.839226,0 -1.368393,-0.669727 -0.525032,-0.669727 -0.525032,-1.7611338 0,-1.0914066 0.525032,-1.7611335 0.529167,-0.6697268 1.368393,-0.6697268 0.51263,0 0.876433,0.2025717 0.367936,0.1984376 0.607715,0.6118492 z m -2.592091,1.6164394 q 0,0.8392258 0.343131,1.3187828 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.950847,-0.475424 0.347266,-0.479557 0.347266,-1.3187828 0,-0.8392256 -0.347266,-1.3146489 -0.347266,-0.4795575 -0.950847,-0.4795575 -0.603581,0 -0.950847,0.4795575 -0.343131,0.4754233 -0.343131,1.3146489 z" />
<path
id="path4519"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 72.210162,9.1456446 V 11.940307 H 71.449484 V 9.1704493 q 0,-0.6573244 -0.256315,-0.9839196 -0.256315,-0.3265952 -0.768946,-0.3265952 -0.615983,0 -0.971517,0.392741 -0.355534,0.3927411 -0.355534,1.0707361 v 2.6168954 h -0.764811 v -4.63021 h 0.764811 v 0.7193363 q 0.272852,-0.4175458 0.640788,-0.6242516 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919599 0.409278,1.4510748 z" />
<path
id="path4521"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 75.529854,7.843398 q -0.61185,0 -0.967384,0.4795575 -0.355534,0.4754234 -0.355534,1.3063807 0,0.8309578 0.3514,1.3105148 0.355534,0.475423 0.971518,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.3063808 0,-0.8226891 -0.355534,-1.3022466 Q 76.137569,7.843398 75.529854,7.843398 Z m 0,-0.6449221 q 0.992187,0 1.558561,0.6449221 0.566374,0.6449222 0.566374,1.7859382 0,1.1368818 -0.566374,1.7859378 -0.566374,0.644923 -1.558561,0.644923 -0.996322,0 -1.562696,-0.644923 -0.56224,-0.649056 -0.56224,-1.7859378 0,-1.141016 0.56224,-1.7859382 0.566374,-0.6449221 1.562696,-0.6449221 z" />
<path
id="path4523"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 78.833014,10.113028 V 7.310097 h 0.760677 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.0707362 V 7.310097 h 0.760678 v 4.63021 h -0.760678 v -0.711068 q -0.276985,0.42168 -0.644922,0.628386 -0.363802,0.202572 -0.847494,0.202572 -0.797884,0 -1.211296,-0.496094 -0.413411,-0.496094 -0.413411,-1.451075 z M 80.74711,7.1984759 Z" />
<path
id="path4525"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 88.134776,9.1456446 V 11.940307 H 87.374098 V 9.1704493 q 0,-0.6573244 -0.256315,-0.9839196 -0.256315,-0.3265952 -0.768946,-0.3265952 -0.615983,0 -0.971517,0.392741 -0.355534,0.3927411 -0.355534,1.0707361 v 2.6168954 h -0.764811 v -4.63021 h 0.764811 v 0.7193363 q 0.272852,-0.4175458 0.640788,-0.6242516 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919599 0.409278,1.4510748 z" />
<path
id="path4527"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 93.707563,5.7680717 h 0.7028 l -2.149741,6.9577173 h -0.702799 z" />
<path
id="path4529"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 45.177175,21.29991 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239778,-0.413411 0.603581,-0.611849 0.367936,-0.202572 0.876432,-0.202572 0.84336,0 1.368393,0.669727 0.529167,0.669727 0.529167,1.761134 0,1.091406 -0.529167,1.761133 -0.525033,0.669727 -1.368393,0.669727 -0.508496,0 -0.876432,-0.198438 -0.363803,-0.202571 -0.603581,-0.615983 z m 2.587956,-1.616439 q 0,-0.839226 -0.347265,-1.314649 -0.343132,-0.479558 -0.946713,-0.479558 -0.603581,0 -0.950847,0.479558 -0.343131,0.475423 -0.343131,1.314649 0,0.839225 0.343131,1.318783 0.347266,0.475423 0.950847,0.475423 0.603581,0 0.946713,-0.475423 0.347265,-0.479558 0.347265,-1.318783 z" />
<path
id="path4531"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 52.498694,18.075299 q -0.128157,-0.07441 -0.28112,-0.107487 -0.148828,-0.03721 -0.330729,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343131,0.417546 -0.343131,1.203028 v 2.439129 h -0.764812 v -4.630211 h 0.764812 v 0.719337 q 0.239778,-0.42168 0.624251,-0.624252 0.384473,-0.206706 0.93431,-0.206706 0.07855,0 0.173633,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
<path
id="path4533"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 54.917153,17.897532 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.351399,1.310514 0.355534,0.475424 0.971518,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.82269 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path4535"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 62.147721,19.199779 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 58.26992 v -4.630211 h 0.764812 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path4537"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 65.467417,17.897532 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310514 0.355534,0.475424 0.971517,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.82269 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path4539"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 68.770575,20.167162 v -2.802931 h 0.760678 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256315,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760677 v 4.630211 h -0.760677 v -0.711068 q -0.276986,0.421679 -0.644922,0.628385 -0.363802,0.202572 -0.847494,0.202572 -0.797884,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z" />
<path
id="path4541"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 78.072337,19.199779 v 2.794663 H 77.31166 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764812 v -4.630211 h 0.764812 v 0.719337 q 0.272851,-0.417546 0.640788,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
</g>
</g>
<text
transform="translate(5.342511,1.1060936)"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1373);fill:#000000;fill-opacity:1;stroke:none;"
id="text1371"
xml:space="preserve" />
<g
aria-label="or"
transform="matrix(0.91075878,0,0,0.91075878,-60.316824,112.33249)"
id="text1383"
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1385);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 41.924122,-39.945734 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z"
style="shape-inside:url(#rect1385)"
id="path3493" />
<path
d="m 47.98887,-39.767967 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.421679 -0.343131,0.417546 -0.343131,1.203028 v 2.439129 H 45.27689 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624252 0.384473,-0.206705 0.934311,-0.206705 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z"
style="shape-inside:url(#rect1385)"
id="path3495" />
</g>
<g
aria-label="enclitic (mini)
pronoun"
transform="matrix(0.91075878,0,0,0.91075878,-49.155624,146.73253)"
id="text1389"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.85;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1391);fill:#000000;fill-opacity:1;stroke:none">
<path
d="m 7.5745021,-65.810929 v 0.372071 H 4.0770398 q 0.049609,0.785482 0.4712892,1.198893 0.425814,0.409278 1.1823573,0.409278 0.4382163,0 0.8474938,-0.107487 0.4134116,-0.107487 0.818555,-0.322461 v 0.719336 q -0.4092775,0.173633 -0.8392256,0.264583 -0.4299481,0.09095 -0.8722985,0.09095 -1.1079432,0 -1.7569994,-0.644922 -0.6449222,-0.644922 -0.6449222,-1.744597 0,-1.136882 0.6118492,-1.802475 0.6159834,-0.669727 1.6577807,-0.669727 0.9343102,0 1.4758794,0.603581 0.5457034,0.599447 0.5457034,1.632977 z m -0.7606774,-0.223242 q -0.00827,-0.624252 -0.3513999,-0.996322 -0.3389975,-0.372071 -0.9012373,-0.372071 -0.6366539,0 -1.0211267,0.359668 -0.3803387,0.359669 -0.4382163,1.012859 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3498" />
<path
d="m 12.671867,-66.100317 v 2.794663 H 11.91119 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.9715173,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 8.7940662 v -4.630211 h 0.7648115 v 0.719337 q 0.2728517,-0.417546 0.6407883,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3500" />
<path
d="m 17.529454,-67.758098 v 0.711068 q -0.322461,-0.177767 -0.649056,-0.264583 -0.322461,-0.09095 -0.65319,-0.09095 -0.740007,0 -1.149285,0.47129 -0.409277,0.467155 -0.409277,1.314649 0,0.847493 0.409277,1.318783 0.409278,0.467155 1.149285,0.467155 0.330729,0 0.65319,-0.08682 0.326595,-0.09095 0.649056,-0.268717 v 0.7028 q -0.318327,0.148828 -0.661458,0.223242 -0.338998,0.07441 -0.723471,0.07441 -1.045931,0 -1.661914,-0.657325 -0.615984,-0.657324 -0.615984,-1.773535 0,-1.132748 0.620118,-1.781805 0.624251,-0.649056 1.70739,-0.649056 0.3514,0 0.686263,0.07441 0.334863,0.07028 0.649056,0.214974 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3502" />
<path
d="m 18.860639,-69.738339 h 0.760677 v 6.432685 h -0.760677 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3504" />
<path
d="m 21.208818,-67.935865 h 0.760677 v 4.630211 h -0.760677 z m 0,-1.802474 h 0.760677 v 0.963249 h -0.760677 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3506" />
<path
d="m 24.309404,-69.250514 v 1.314649 h 1.56683 v 0.591179 h -1.56683 v 2.513543 q 0,0.566374 0.152962,0.727604 0.157097,0.161231 0.63252,0.161231 h 0.781348 v 0.636654 h -0.781348 q -0.880567,0 -1.21543,-0.326596 -0.334864,-0.330729 -0.334864,-1.198893 v -2.513543 h -0.558105 v -0.591179 h 0.558105 v -1.314649 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3508" />
<path
d="m 26.880824,-67.935865 h 0.760678 v 4.630211 h -0.760678 z m 0,-1.802474 h 0.760678 v 0.963249 h -0.760678 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3510" />
<path
d="m 32.561099,-67.758098 v 0.711068 q -0.322461,-0.177767 -0.649056,-0.264583 -0.322461,-0.09095 -0.653191,-0.09095 -0.740006,0 -1.149284,0.47129 -0.409277,0.467155 -0.409277,1.314649 0,0.847493 0.409277,1.318783 0.409278,0.467155 1.149284,0.467155 0.33073,0 0.653191,-0.08682 0.326595,-0.09095 0.649056,-0.268717 v 0.7028 q -0.318327,0.148828 -0.661459,0.223242 -0.338997,0.07441 -0.72347,0.07441 -1.045931,0 -1.661915,-0.657325 -0.615983,-0.657324 -0.615983,-1.773535 0,-1.132748 0.620117,-1.781805 0.624252,-0.649056 1.70739,-0.649056 0.3514,0 0.686264,0.07441 0.334863,0.07028 0.649056,0.214974 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3512" />
<path
d="m 38.415007,-69.730071 q -0.553971,0.950847 -0.822689,1.881023 -0.268717,0.930176 -0.268717,1.885157 0,0.954981 0.268717,1.893425 0.272852,0.93431 0.822689,1.881023 h -0.661458 q -0.620118,-0.971517 -0.930177,-1.909962 -0.305924,-0.938444 -0.305924,-1.864486 0,-0.921908 0.305924,-1.856218 0.305925,-0.934311 0.930177,-1.909962 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3514" />
<path
d="m 43.49997,-67.04703 q 0.285254,-0.51263 0.682129,-0.756543 0.396875,-0.243913 0.934311,-0.243913 0.72347,0 1.116211,0.508497 0.392741,0.504362 0.392741,1.438672 v 2.794663 h -0.764811 v -2.769858 q 0,-0.665593 -0.235645,-0.988054 -0.235645,-0.322461 -0.719336,-0.322461 -0.591179,0 -0.934311,0.392741 -0.343131,0.392741 -0.343131,1.070736 v 2.616896 h -0.764812 v -2.769858 q 0,-0.669727 -0.235644,-0.988054 -0.235645,-0.322461 -0.727605,-0.322461 -0.58291,0 -0.926042,0.396875 -0.343132,0.392741 -0.343132,1.066602 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.26045,-0.425814 0.624252,-0.628386 0.363802,-0.202572 0.86403,-0.202572 0.504362,0 0.855762,0.256315 0.355534,0.256316 0.525033,0.744141 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3516" />
<path
d="m 48.146718,-67.935865 h 0.760678 v 4.630211 h -0.760678 z m 0,-1.802474 h 0.760678 v 0.963249 h -0.760678 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3518" />
<path
d="m 54.343756,-66.100317 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3520" />
<path
d="m 55.869245,-67.935865 h 0.760677 v 4.630211 h -0.760677 z m 0,-1.802474 h 0.760677 v 0.963249 h -0.760677 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3522" />
<path
d="m 58.097534,-69.730071 h 0.661459 q 0.620117,0.975651 0.926042,1.909962 0.310059,0.93431 0.310059,1.856218 0,0.926042 -0.310059,1.864486 -0.305925,0.938445 -0.926042,1.909962 h -0.661459 q 0.549838,-0.946713 0.818555,-1.881023 0.272852,-0.938444 0.272852,-1.893425 0,-0.954981 -0.272852,-1.885157 -0.268717,-0.930176 -0.818555,-1.881023 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3524" />
<path
d="m 15.726979,-55.004382 v 2.455665 h -0.764811 v -6.391344 h 0.764811 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367937,-0.202572 0.876433,-0.202572 0.84336,0 1.368392,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525032,0.669727 -1.368392,0.669727 -0.508496,0 -0.876433,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343131,-0.479557 -0.946712,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343132,0.475424 -0.343132,1.314649 0,0.839226 0.343132,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946712,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3526" />
<path
d="m 23.048499,-58.228993 q -0.128158,-0.07441 -0.28112,-0.107487 -0.148828,-0.03721 -0.330729,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343132,0.417546 -0.343132,1.203028 v 2.439128 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.239779,-0.421679 0.624252,-0.624251 0.384473,-0.206706 0.93431,-0.206706 0.07855,0 0.173633,0.0124 0.09508,0.0083 0.21084,0.02894 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3528" />
<path
d="m 25.466957,-58.40676 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.30638 0,0.830958 0.3514,1.310515 0.355534,0.475424 0.971517,0.475424 0.607716,0 0.96325,-0.479558 0.355534,-0.479557 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302246 -0.355534,-0.483692 -0.96325,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785939 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562695,-0.644922 -0.56224,-0.649057 -0.56224,-1.785939 0,-1.141016 0.56224,-1.785938 0.566373,-0.644922 1.562695,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3530" />
<path
d="m 32.697526,-57.104513 v 2.794662 h -0.760677 v -2.769857 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3532" />
<path
d="m 36.017222,-58.40676 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.30638 0,0.830958 0.3514,1.310515 0.355534,0.475424 0.971517,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302246 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785939 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649057 -0.56224,-1.785939 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3534" />
<path
d="m 39.32038,-56.13713 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256316,0.988054 0.256315,0.326595 0.768945,0.326595 0.615984,0 0.971518,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760677 v 4.63021 h -0.760677 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363803,0.202572 -0.847494,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3536" />
<path
d="m 48.622142,-57.104513 v 2.794662 h -0.760677 v -2.769857 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417545 0.640788,-0.624251 0.372071,-0.206706 0.855763,-0.206706 0.797884,0 1.207161,0.496094 0.409278,0.49196 0.409278,1.451075 z"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
id="path3538" />
</g>
<path
sodipodi:nodetypes="cccc"
id="path1161"
d="m 65.472822,127.48303 -10e-7,14.69983 H 141.1101 v -18.4416"
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;fill:none;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.46, 1.73;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g1344">
<path
style="fill:none;stroke:#000000;stroke-width:0.964999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 36.883574,98.715892 9.342265,9.289858 h 40.102596 l 9.589405,-9.589418"
id="path1169-1"
sodipodi:nodetypes="cccc" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1354);fill:#000000;fill-opacity:1;stroke:none"
id="text1352"
transform="translate(13.985119,-5.2916667)"
aria-label="object">
<path
id="path3541"
d="m 39.076039,122.71137 q -0.764808,0 -1.209224,0.59945 -0.444416,0.59427 -0.444416,1.63297 0,1.03869 0.439248,1.63813 0.444416,0.59428 1.214392,0.59428 0.759642,0 1.204058,-0.59944 0.444415,-0.59945 0.444415,-1.63297 0,-1.02836 -0.444415,-1.62781 -0.444416,-0.60461 -1.204058,-0.60461 z m 0,-0.80615 q 1.240231,0 1.948196,0.80615 0.707965,0.80615 0.707965,2.23242 0,1.42109 -0.707965,2.23241 -0.707965,0.80615 -1.948196,0.80615 -1.245398,0 -1.953362,-0.80615 -0.702798,-0.81132 -0.702798,-2.23241 0,-1.42627 0.702798,-2.23242 0.707964,-0.80615 1.953362,-0.80615 z" />
<path
id="path3543"
d="m 47.45793,124.94379 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188554,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04902 0.428913,1.64847 0.43408,0.59428 1.188554,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59945 0.434081,-1.64847 z m -3.234934,-2.02055 q 0.299722,-0.51676 0.754473,-0.7648 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710485,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656289,0.83715 -1.710485,0.83715 -0.635618,0 -1.095537,-0.24805 -0.454751,-0.25321 -0.754473,-0.76997 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z" />
<path
id="path3545"
d="m 50.021073,122.04475 h 0.950843 v 5.89109 q 0,1.10587 -0.423745,1.60197 -0.418578,0.49609 -1.353919,0.49609 h -0.361733 v -0.80615 h 0.253213 q 0.542601,0 0.738971,-0.25321 0.19637,-0.24805 0.19637,-1.0387 z m 0,-2.25309 h 0.950843 v 1.20406 h -0.950843 z" />
<path
id="path3547"
d="m 57.906871,124.70091 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49862 0.532266,0.51159 1.477942,0.51159 0.547768,0 1.059363,-0.13436 0.516763,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21705 -1.049028,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.806149,-0.80615 -0.806149,-2.18074 0,-1.42109 0.764808,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844843,0.75448 0.682126,0.7493 0.682126,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78032 -0.439248,-1.2454 -0.423746,-0.46509 -1.126543,-0.46509 -0.795814,0 -1.276404,0.44959 -0.475421,0.44958 -0.547768,1.26606 z" />
<path
id="path3549"
d="m 63.632602,122.26696 v 0.88883 q -0.403075,-0.22221 -0.811318,-0.33073 -0.403075,-0.11369 -0.816485,-0.11369 -0.925005,0 -1.4366,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.511595,0.58394 1.4366,0.58394 0.41341,0 0.816485,-0.10852 0.408243,-0.11369 0.811318,-0.33589 v 0.87849 q -0.397908,0.18604 -0.826821,0.27905 -0.423745,0.093 -0.904334,0.093 -1.30741,0 -2.077386,-0.82165 -0.769977,-0.82165 -0.769977,-2.21691 0,-1.41593 0.775144,-2.22725 0.780312,-0.81132 2.13423,-0.81132 0.439248,0 0.857826,0.093 0.418578,0.0879 0.811318,0.26872 z" />
<path
id="path3551"
d="m 66.237085,120.40144 v 1.64331 h 1.95853 v 0.73897 h -1.95853 v 3.14192 q 0,0.70796 0.191202,0.9095 0.19637,0.20154 0.790647,0.20154 h 0.976681 v 0.79581 h -0.976681 q -1.100705,0 -1.519282,-0.40824 -0.418578,-0.41341 -0.418578,-1.49861 v -3.14192 h -0.69763 v -0.73897 h 0.69763 v -1.64331 z" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,681 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="transitive-present.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 212.46637 114.62142"
height="433.21481"
width="803.02252">
<defs
id="defs2">
<rect
id="rect1391"
height="46.113094"
width="93.738098"
y="-70.55368"
x="-15.096844" />
<rect
id="rect1385"
height="25.324406"
width="51.404762"
y="-43.339394"
x="39.331726" />
<rect
id="rect1379"
height="25.324406"
width="78.997025"
y="35.657631"
x="38.953751" />
<rect
id="rect1373"
height="23.434525"
width="29.104168"
y="33.389771"
x="57.474583" />
<rect
id="rect1360"
height="77.422302"
width="112.6993"
y="6.553463"
x="4.935894" />
<rect
id="rect1354"
height="35.151787"
width="93.738098"
y="118.46915"
x="35.83614" />
<rect
id="rect1348"
height="28.348213"
width="76.351189"
y="116.23755"
x="-56.012074" />
<rect
id="rect1165"
height="44.73629"
width="50.263763"
y="61.904251"
x="35.529755" />
<rect
id="rect1113"
height="23.8125"
width="56.69643"
y="112.25893"
x="37.041668" />
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fillRule:evenodd;stroke:#000000;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path841" />
</marker>
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1113-9" />
<rect
x="37.041668"
y="112.25893"
width="56.69643"
height="23.8125"
id="rect1141" />
</defs>
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="118"
inkscape:window-x="2167"
inkscape:window-height="1080"
inkscape:window-width="1515"
fit-margin-left="10"
fit-margin-bottom="10"
fit-margin-right="10"
fit-margin-top="10"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="text1163-1"
inkscape:document-units="mm"
inkscape:cy="272.71875"
inkscape:cx="408.29075"
inkscape:zoom="0.49497475"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(52.843619,-30.639781)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<path
d="m 122.9777,85.081856 h 33.44172 V 118.52357 H 122.9777 Z"
style="opacity:1;fill:none;stroke:#000000;stroke-width:1.115;stroke-miterlimit:4;stroke-dasharray:none"
id="rect839-4" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1113-9);fill:#000000;fill-opacity:1;stroke:none"
id="text1111-8"
transform="translate(90.461538,-16.314846)"
aria-label="verb">
<path
id="path1187"
d="m 37.356241,115.83576 h 1.007687 l 1.808669,4.85757 1.80867,-4.85757 h 1.007687 l -2.170403,5.78775 h -1.291907 z" />
<path
id="path1189"
d="m 49.252118,118.49192 v 0.46509 h -4.371813 q 0.06201,0.98185 0.58911,1.49861 0.532265,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40308 v 0.89917 q -0.511595,0.21704 -1.049029,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04121 z m -0.950844,-0.27905 q -0.01033,-0.78031 -0.439248,-1.2454 -0.423745,-0.46508 -1.126543,-0.46508 -0.795814,0 -1.276403,0.44958 -0.475422,0.44958 -0.547769,1.26607 z" />
<path
id="path1191"
d="m 54.166531,116.7246 q -0.160196,-0.093 -0.351398,-0.13436 -0.186035,-0.0465 -0.41341,-0.0465 -0.80615,0 -1.240231,0.5271 -0.428913,0.52193 -0.428913,1.50378 v 3.0489 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.299723,-0.5271 0.780312,-0.78031 0.480589,-0.25838 1.167883,-0.25838 0.09819,0 0.217041,0.0155 0.118855,0.0103 0.263549,0.0362 z" />
<path
id="path1193"
d="m 59.32899,118.7348 q 0,-1.04903 -0.43408,-1.6433 -0.428913,-0.59945 -1.183387,-0.59945 -0.754473,0 -1.188554,0.59945 -0.428913,0.59427 -0.428913,1.6433 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188554,0.59428 0.754474,0 1.183387,-0.59428 0.43408,-0.59944 0.43408,-1.64847 z m -3.234934,-2.02054 q 0.299722,-0.51676 0.754474,-0.76481 0.459918,-0.25321 1.095536,-0.25321 1.054196,0 1.710485,0.83715 0.661456,0.83716 0.661456,2.20141 0,1.36426 -0.661456,2.20141 -0.656289,0.83716 -1.710485,0.83716 -0.635618,0 -1.095536,-0.24805 -0.454752,-0.25321 -0.754474,-0.76998 v 0.86817 h -0.956011 v -8.04083 h 0.956011 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1165);fill:#000000;fill-opacity:1;stroke:none"
id="text1163"
transform="translate(-81.650166,5.4265352)"
aria-label="plain noun / pronoun">
<path
id="path1196"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 51.876136,67.854117 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367936,-0.202572 0.876432,-0.202572 0.84336,0 1.368393,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669727 -1.368393,0.669727 -0.508496,0 -0.876432,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475424 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z" />
<path
id="path1198"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 56.514614,62.115963 h 0.760678 v 6.432685 h -0.760678 z" />
<path
id="path1200"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 60.967057,66.221141 q -0.921908,0 -1.277442,0.21084 -0.355534,0.21084 -0.355534,0.719336 0,0.405143 0.264584,0.644922 0.268717,0.235645 0.727604,0.235645 0.63252,0 1.012859,-0.446485 0.384473,-0.450618 0.384473,-1.194759 v -0.169499 z m 1.517221,-0.314193 v 2.6417 h -0.760677 v -0.702799 q -0.26045,0.421679 -0.649057,0.624251 -0.388607,0.198438 -0.950846,0.198438 -0.711068,0 -1.132748,-0.396876 -0.417546,-0.401009 -0.417546,-1.070736 0,-0.781348 0.520899,-1.178223 0.525032,-0.396875 1.562696,-0.396875 h 1.066602 v -0.07441 q 0,-0.525033 -0.347266,-0.810287 -0.343132,-0.289388 -0.967383,-0.289388 -0.396876,0 -0.77308,0.09508 -0.376205,0.09508 -0.723471,0.285254 v -0.7028 q 0.417546,-0.161231 0.810287,-0.239779 0.392741,-0.08268 0.764812,-0.08268 1.00459,0 1.500684,0.520899 0.496094,0.520898 0.496094,1.579231 z" />
<path
id="path1202"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 64.055242,63.918438 h 0.760678 v 4.63021 h -0.760678 z m 0,-1.802475 h 0.760678 v 0.96325 h -0.760678 z" />
<path
id="path1204"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 70.252282,65.753986 v 2.794662 H 69.491605 V 65.77879 q 0,-0.657324 -0.256315,-0.983919 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path1206"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 51.88027,74.643985 v 2.794663 H 51.119593 V 74.66879 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path1208"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 55.199965,73.341738 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.30638 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644923 0.566374,1.785939 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785939 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path1210"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 58.503124,75.611368 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359669,-0.392741 0.359669,-1.070736 v -2.625164 h 0.760677 v 4.630211 H 61.620248 V 76.72758 q -0.276986,0.42168 -0.644923,0.628385 -0.363802,0.202572 -0.847493,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z" />
<path
id="path1212"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 67.804886,74.643985 v 2.794663 H 67.044208 V 74.66879 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path1214"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 73.377673,71.266412 h 0.7028 l -2.14974,6.957718 h -0.7028 z" />
<path
id="path1216"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 44.616628,85.634116 v 2.455665 h -0.764812 v -6.391344 h 0.764812 v 0.7028 q 0.239778,-0.413412 0.603581,-0.61185 0.367936,-0.202571 0.876432,-0.202571 0.84336,0 1.368393,0.669727 0.529167,0.669726 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525033,0.669726 -1.368393,0.669726 -0.508496,0 -0.876432,-0.198437 -0.363803,-0.202572 -0.603581,-0.615983 z m 2.587956,-1.61644 q 0,-0.839226 -0.347265,-1.314649 -0.343132,-0.479557 -0.946713,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343131,0.475423 -0.343131,1.314649 0,0.839226 0.343131,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946713,-0.475424 0.347265,-0.479557 0.347265,-1.318783 z" />
<path
id="path1218"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 51.938147,82.409505 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343131,0.417545 -0.343131,1.203027 v 2.439129 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624251 0.384473,-0.206706 0.934311,-0.206706 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
<path
id="path1220"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 54.356606,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path1222"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 61.587175,83.533984 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451074 z" />
<path
id="path1224"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 64.90687,82.231738 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.562239,-0.649056 -0.562239,-1.785938 0,-1.141016 0.562239,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path1226"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 68.210028,84.501368 v -2.802931 h 0.760678 v 2.773992 q 0,0.657324 0.256315,0.988054 0.256315,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760678 v 4.63021 h -0.760678 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363802,0.202571 -0.847494,0.202571 -0.797884,0 -1.211296,-0.496094 -0.413412,-0.496093 -0.413412,-1.451074 z m 1.914096,-2.914552 z" />
<path
id="path1228"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 77.51179,83.533984 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657324 -0.256315,-0.983919 -0.256315,-0.326596 -0.768946,-0.326596 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451074 z" />
</g>
<g
transform="translate(7.9375,-1.5481652)"
id="g1333">
<path
style="fill:none;stroke:#000000;stroke-width:0.965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -57.795068,100.26406 9.342265,9.28984 h 40.1025978 l 9.589407,-9.589405"
id="path1169"
sodipodi:nodetypes="cccc" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1348);fill:#000000;fill-opacity:1;stroke:none"
id="text1346"
transform="translate(-9.827381,-4.5357143)"
aria-label="subject /
agent">
<path
id="path4222"
style="text-align:center;text-anchor:middle"
d="m -35.814111,119.98481 v 0.89917 q -0.403075,-0.20671 -0.837156,-0.31006 -0.43408,-0.10335 -0.899167,-0.10335 -0.707965,0 -1.064531,0.21704 -0.351398,0.21704 -0.351398,0.65112 0,0.33073 0.253213,0.52193 0.253214,0.18603 1.018023,0.35657 l 0.32556,0.0723 q 1.012855,0.21704 1.436601,0.61495 0.428913,0.39274 0.428913,1.1007 0,0.80615 -0.640786,1.27641 -0.635618,0.47025 -1.751826,0.47025 -0.465086,0 -0.971513,-0.093 -0.50126,-0.0878 -1.059364,-0.26871 v -0.98185 q 0.527098,0.27388 1.038693,0.41341 0.511595,0.13436 1.012855,0.13436 0.671791,0 1.033525,-0.22738 0.361734,-0.23254 0.361734,-0.65112 0,-0.38757 -0.263549,-0.59428 -0.258381,-0.2067 -1.142045,-0.3979 l -0.330729,-0.0775 q -0.883664,-0.18603 -1.276403,-0.56844 -0.39274,-0.38757 -0.39274,-1.05936 0,-0.81649 0.578774,-1.2609 0.578774,-0.44442 1.643306,-0.44442 0.527097,0 0.992184,0.0775 0.465086,0.0775 0.857826,0.23254 z" />
<path
id="path4224"
style="text-align:center;text-anchor:middle"
d="m -34.082956,123.31793 v -3.50365 h 0.950843 v 3.46748 q 0,0.82165 0.320393,1.23506 0.320393,0.40824 0.961179,0.40824 0.769976,0 1.214392,-0.49092 0.449583,-0.49093 0.449583,-1.33842 v -3.28144 h 0.950844 v 5.78774 h -0.950844 v -0.88883 q -0.346231,0.5271 -0.806149,0.78548 -0.454751,0.25321 -1.059364,0.25321 -0.997352,0 -1.514114,-0.62011 -0.516763,-0.62012 -0.516763,-1.81384 z m 2.392611,-3.64318 z" />
<path
id="path4226"
style="text-align:center;text-anchor:middle"
d="m -23.112084,122.71332 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188555,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04903 0.428913,1.64847 0.434081,0.59428 1.188555,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59944 0.434081,-1.64847 z m -3.234935,-2.02054 q 0.299723,-0.51677 0.754474,-0.76481 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710484,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656288,0.83715 -1.710484,0.83715 -0.635618,0 -1.095537,-0.24804 -0.454751,-0.25322 -0.754474,-0.76998 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z" />
<path
id="path4228"
style="text-align:center;text-anchor:middle"
d="m -20.548942,119.81428 h 0.950844 v 5.89109 q 0,1.10588 -0.423746,1.60197 -0.418577,0.49609 -1.353918,0.49609 h -0.361734 v -0.80615 h 0.253214 q 0.542601,0 0.738971,-0.25321 0.196369,-0.24805 0.196369,-1.0387 z m 0,-2.25309 h 0.950844 v 1.20406 h -0.950844 z" />
<path
id="path4230"
style="text-align:center;text-anchor:middle"
d="m -12.663144,122.47044 v 0.46509 h -4.371812 q 0.06201,0.98184 0.589109,1.49861 0.532266,0.51159 1.477941,0.51159 0.547769,0 1.059364,-0.13436 0.516763,-0.13435 1.02319,-0.40307 v 0.89917 q -0.511595,0.21704 -1.049028,0.33072 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.42109 0.764809,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844842,0.75448 0.682127,0.7493 0.682127,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78031 -0.439249,-1.2454 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44959 -0.475422,0.44958 -0.547768,1.26606 z" />
<path
id="path4232"
style="text-align:center;text-anchor:middle"
d="m -6.9374138,120.03649 v 0.88883 q -0.4030748,-0.22221 -0.8113174,-0.33073 -0.4030748,-0.11369 -0.816485,-0.11369 -0.9250052,0 -1.4365998,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.5115946,0.58394 1.4365998,0.58394 0.4134102,0 0.816485,-0.10852 0.4082426,-0.11369 0.8113174,-0.33589 v 0.87849 q -0.3979072,0.18604 -0.8268202,0.27905 -0.4237454,0.093 -0.9043347,0.093 -1.3074096,0 -2.0773863,-0.82165 -0.769976,-0.82165 -0.769976,-2.21691 0,-1.41593 0.775144,-2.22725 0.7803116,-0.81132 2.1342298,-0.81132 0.4392483,0 0.857826,0.093 0.4185778,0.0879 0.8113174,0.26872 z" />
<path
id="path4234"
style="text-align:center;text-anchor:middle"
d="m -4.3329304,118.17097 v 1.64331 h 1.9585306 v 0.73897 h -1.9585306 v 3.14192 q 0,0.70796 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766815 v 0.79581 h -0.9766815 q -1.1007045,0 -1.5192823,-0.40824 -0.4185777,-0.41341 -0.4185777,-1.49861 v -3.14192 h -0.6976296 v -0.73897 h 0.6976296 v -1.64331 z" />
<path
id="path4236"
style="text-align:center;text-anchor:middle"
d="M 3.9404424,117.88675 H 4.818939 l -2.6871659,8.69712 H 1.2532765 Z" />
<path
id="path4238"
style="text-align:center;text-anchor:middle"
d="m -29.504439,135.92177 q -1.152381,0 -1.596796,0.26355 -0.444416,0.26355 -0.444416,0.89917 0,0.50643 0.330728,0.80615 0.335896,0.29455 0.909502,0.29455 0.790647,0 1.266069,-0.5581 0.480589,-0.56327 0.480589,-1.49344 v -0.21188 z m 1.896519,-0.39274 v 3.30212 h -0.950843 v -0.8785 q -0.325561,0.5271 -0.811317,0.78031 -0.485757,0.24805 -1.188555,0.24805 -0.888831,0 -1.415929,-0.49609 -0.521931,-0.50126 -0.521931,-1.33842 0,-0.97668 0.651121,-1.47277 0.656289,-0.4961 1.953363,-0.4961 h 1.333248 v -0.093 q 0,-0.65629 -0.434081,-1.01286 -0.428913,-0.36173 -1.209224,-0.36173 -0.496093,0 -0.966347,0.11885 -0.470254,0.11886 -0.904334,0.35657 v -0.8785 q 0.52193,-0.20153 1.012855,-0.29972 0.490924,-0.10335 0.956011,-0.10335 1.255733,0 1.875848,0.65112 0.620115,0.65112 0.620115,1.97403 z" />
<path
id="path4240"
style="text-align:center;text-anchor:middle"
d="m -21.835681,135.8701 q 0,-1.03353 -0.428913,-1.60197 -0.423745,-0.56844 -1.193722,-0.56844 -0.764808,0 -1.193721,0.56844 -0.423746,0.56844 -0.423746,1.60197 0,1.02835 0.423746,1.59679 0.428913,0.56844 1.193721,0.56844 0.769977,0 1.193722,-0.56844 0.428913,-0.56844 0.428913,-1.59679 z m 0.950844,2.24275 q 0,1.47794 -0.656289,2.19624 -0.656289,0.72347 -2.010207,0.72347 -0.50126,0 -0.945676,-0.0775 -0.444415,-0.0724 -0.862993,-0.22737 v -0.92501 q 0.418578,0.22738 0.82682,0.3359 0.408243,0.10852 0.831988,0.10852 0.93534,0 1.400427,-0.49093 0.465086,-0.48575 0.465086,-1.47277 v -0.47026 q -0.294555,0.5116 -0.754473,0.76481 -0.459919,0.25322 -1.100705,0.25322 -1.064531,0 -1.715652,-0.81132 -0.651121,-0.81132 -0.651121,-2.14973 0,-1.34359 0.651121,-2.1549 0.651121,-0.81132 1.715652,-0.81132 0.640786,0 1.100705,0.25321 0.459918,0.25322 0.754473,0.76481 v -0.8785 h 0.950844 z" />
<path
id="path4242"
style="text-align:center;text-anchor:middle"
d="m -13.97572,135.69957 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49861 0.532266,0.5116 1.477941,0.5116 0.547769,0 1.059364,-0.13436 0.516762,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21704 -1.049028,0.33073 -0.537434,0.11369 -1.09037,0.11369 -1.384924,0 -2.196241,-0.80615 -0.80615,-0.80615 -0.80615,-2.18074 0,-1.4211 0.764809,-2.25309 0.769976,-0.83715 2.072218,-0.83715 1.167884,0 1.844843,0.75447 0.682127,0.74931 0.682127,2.04122 z m -0.950844,-0.27906 q -0.01033,-0.78031 -0.439248,-1.24539 -0.423745,-0.46509 -1.126542,-0.46509 -0.795815,0 -1.276404,0.44958 -0.475422,0.44959 -0.547769,1.26607 z" />
<path
id="path4244"
style="text-align:center;text-anchor:middle"
d="m -7.6040366,135.33783 v 3.49332 H -8.55488 v -3.46231 q 0,-0.82166 -0.3203928,-1.2299 -0.3203929,-0.40824 -0.9611786,-0.40824 -0.7699766,0 -1.2143926,0.49092 -0.444416,0.49093 -0.444416,1.33842 v 3.27111 h -0.956011 v -5.78775 h 0.956011 v 0.89917 q 0.341064,-0.52193 0.800983,-0.78031 0.465086,-0.25838 1.0696983,-0.25838 0.997352,0 1.508947,0.62011 0.5115951,0.61495 0.5115951,1.81384 z" />
<path
id="path4246"
style="text-align:center;text-anchor:middle"
d="m -4.7566745,131.4001 v 1.6433 h 1.9585305 v 0.73898 h -1.9585305 v 3.14191 q 0,0.70797 0.1912022,0.9095 0.1963698,0.20154 0.7906469,0.20154 h 0.9766814 v 0.79582 h -0.9766814 q -1.1007045,0 -1.5192823,-0.40825 -0.4185778,-0.41341 -0.4185778,-1.49861 v -3.14191 h -0.6976296 v -0.73898 h 0.6976296 v -1.6433 z" />
</g>
</g>
<g
aria-label="plain noun / pronoun"
transform="translate(5.342511,1.1060936)"
id="text1163-1"
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.05;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1165);fill:#000000;fill-opacity:1;stroke:none">
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1360);fill:#000000;fill-opacity:1;stroke:none"
id="text1358"
transform="translate(-0.6068181,24.568453)"
aria-label="plain noun /
pronoun
">
<path
id="path4249"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 37.724828,13.349221 v 2.455665 H 36.960016 V 9.4135428 h 0.764812 v 0.7028002 q 0.239779,-0.4134121 0.603581,-0.6118496 0.367936,-0.2025717 0.876432,-0.2025717 0.84336,0 1.368393,0.6697268 0.529167,0.6697265 0.529167,1.7611335 0,1.091407 -0.529167,1.761134 -0.525033,0.669726 -1.368393,0.669726 -0.508496,0 -0.876432,-0.198437 -0.363802,-0.202572 -0.603581,-0.615984 z m 2.587957,-1.616439 q 0,-0.839226 -0.347266,-1.314649 -0.343132,-0.4795574 -0.946713,-0.4795574 -0.603581,0 -0.950846,0.4795574 -0.343132,0.475423 -0.343132,1.314649 0,0.839226 0.343132,1.318783 0.347265,0.475423 0.950846,0.475423 0.603581,0 0.946713,-0.475423 0.347266,-0.479557 0.347266,-1.318783 z" />
<path
id="path4251"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 42.363306,7.6110681 h 0.760678 v 6.4326849 h -0.760678 z" />
<path
id="path4253"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 46.815749,11.716246 q -0.921908,0 -1.277442,0.210839 -0.355534,0.21084 -0.355534,0.719337 0,0.405143 0.264584,0.644922 0.268717,0.235644 0.727604,0.235644 0.63252,0 1.012859,-0.446484 0.384473,-0.450619 0.384473,-1.19476 v -0.169498 z m 1.517221,-0.314193 v 2.6417 h -0.760677 v -0.7028 q -0.26045,0.42168 -0.649057,0.624252 -0.388607,0.198437 -0.950846,0.198437 -0.711068,0 -1.132748,-0.396875 -0.417546,-0.401009 -0.417546,-1.070736 0,-0.781348 0.520899,-1.178223 0.525032,-0.396875 1.562696,-0.396875 h 1.066602 v -0.07441 q 0,-0.525033 -0.347266,-0.810287 -0.343132,-0.2893882 -0.967383,-0.2893882 -0.396876,0 -0.77308,0.095084 -0.376205,0.09508 -0.72347,0.285254 V 9.6243827 q 0.417545,-0.1612305 0.810286,-0.2397787 0.392741,-0.082682 0.764812,-0.082682 1.00459,0 1.500684,0.5208986 0.496094,0.5208987 0.496094,1.5792327 z" />
<path
id="path4255"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 49.903934,9.4135428 h 0.760678 v 4.6302102 h -0.760678 z m 0,-1.8024747 h 0.760678 v 0.9632491 h -0.760678 z" />
<path
id="path4257"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 56.100974,11.24909 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657324 -0.256315,-0.98392 -0.256316,-0.3265947 -0.768946,-0.3265947 -0.615983,0 -0.971517,0.3927407 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 52.223173 V 9.4135428 h 0.764812 v 0.7193362 q 0.272851,-0.4175457 0.640788,-0.6242515 0.37207,-0.2067058 0.855762,-0.2067058 0.797884,0 1.207162,0.4960939 0.409277,0.4919594 0.409277,1.4510744 z" />
<path
id="path4259"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 64.17077,11.24909 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657324 -0.256315,-0.98392 -0.256315,-0.3265947 -0.768945,-0.3265947 -0.615984,0 -0.971518,0.3927407 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 60.292969 V 9.4135428 h 0.764811 v 0.7193362 q 0.272852,-0.4175457 0.640788,-0.6242515 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919594 0.409278,1.4510744 z" />
<path
id="path4261"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 67.490464,9.9468438 q -0.611849,0 -0.967383,0.4795572 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.351399,1.310515 0.355534,0.475423 0.971518,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.4836912 -0.963249,-0.4836912 z m 0,-0.6449221 q 0.992188,0 1.558562,0.6449221 0.566373,0.6449222 0.566373,1.7859382 0,1.136882 -0.566373,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.7859382 0.566374,-0.6449221 1.562696,-0.6449221 z" />
<path
id="path4263"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="M 70.793624,12.216474 V 9.4135428 h 0.760677 v 2.7739922 q 0,0.657324 0.256315,0.988054 0.256316,0.326595 0.768946,0.326595 0.615983,0 0.971517,-0.392741 0.359668,-0.392741 0.359668,-1.070736 V 9.4135428 h 0.760678 v 4.6302102 h -0.760678 v -0.711068 q -0.276985,0.42168 -0.644922,0.628386 -0.363802,0.202571 -0.847493,0.202571 -0.797885,0 -1.211297,-0.496094 -0.413411,-0.496094 -0.413411,-1.451074 z M 72.70772,9.3019217 Z" />
<path
id="path4265"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 80.095386,11.24909 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657324 -0.256315,-0.98392 -0.256315,-0.3265947 -0.768945,-0.3265947 -0.615984,0 -0.971518,0.3927407 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 76.217585 V 9.4135428 h 0.764811 v 0.7193362 q 0.272852,-0.4175457 0.640788,-0.6242515 0.372071,-0.2067058 0.855762,-0.2067058 0.797885,0 1.207162,0.4960939 0.409278,0.4919594 0.409278,1.4510744 z" />
<path
id="path4267"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 85.668173,7.8715175 h 0.7028 l -2.14974,6.9577175 h -0.7028 z" />
<path
id="path4269"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 45.240651,23.932559 v 2.455665 H 44.47584 v -6.391343 h 0.764811 v 0.702799 q 0.239779,-0.413411 0.603581,-0.611849 0.367936,-0.202572 0.876433,-0.202572 0.843359,0 1.368392,0.669727 0.529167,0.669727 0.529167,1.761134 0,1.091406 -0.529167,1.761133 -0.525033,0.669727 -1.368392,0.669727 -0.508497,0 -0.876433,-0.198437 -0.363802,-0.202572 -0.603581,-0.615984 z m 2.587957,-1.616439 q 0,-0.839226 -0.347266,-1.314649 -0.343131,-0.479558 -0.946712,-0.479558 -0.603581,0 -0.950847,0.479558 -0.343132,0.475423 -0.343132,1.314649 0,0.839225 0.343132,1.318783 0.347266,0.475423 0.950847,0.475423 0.603581,0 0.946712,-0.475423 0.347266,-0.479558 0.347266,-1.318783 z" />
<path
id="path4271"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 52.562171,20.707949 q -0.128158,-0.07441 -0.28112,-0.107487 -0.148828,-0.03721 -0.330729,-0.03721 -0.644922,0 -0.992188,0.421679 -0.343132,0.417546 -0.343132,1.203028 v 2.439129 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.239779,-0.42168 0.624252,-0.624252 0.384473,-0.206706 0.93431,-0.206706 0.07855,0 0.173633,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
<path
id="path4273"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 54.980629,20.530182 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644923 q 0.992188,0 1.558562,0.644923 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.562239,-0.649056 -0.562239,-1.785938 0,-1.141016 0.562239,-1.785938 0.566374,-0.644923 1.562696,-0.644923 z" />
<path
id="path4275"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 62.211198,21.832428 v 2.794663 h -0.760677 v -2.769858 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855763,-0.206706 0.797884,0 1.207161,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path4277"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 65.530894,20.530182 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475423 -0.355534,1.306381 0,0.830957 0.351399,1.310515 0.355534,0.475423 0.971518,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644923 q 0.992188,0 1.558562,0.644923 0.566373,0.644922 0.566373,1.785938 0,1.136882 -0.566373,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644923 1.562696,-0.644923 z" />
<path
id="path4279"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 68.834052,22.799811 v -2.80293 h 0.760677 v 2.773992 q 0,0.657324 0.256316,0.988053 0.256315,0.326596 0.768945,0.326596 0.615983,0 0.971517,-0.392742 0.359669,-0.392741 0.359669,-1.070736 v -2.625163 h 0.760677 v 4.63021 h -0.760677 v -0.711068 q -0.276986,0.42168 -0.644923,0.628385 -0.363802,0.202572 -0.847493,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z" />
<path
id="path4281"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 78.135814,21.832428 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
</g>
<text
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1373);fill:#000000;fill-opacity:1;stroke:none;"
id="text1371"
xml:space="preserve" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1379);fill:#000000;fill-opacity:1;stroke:none"
id="text1377"
transform="translate(-17.742287,16.252976)"
aria-label="(but inflected if
1st or 2nd pers. pronoun)">
<path
id="path4284"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 56.069019,36.140654 q -0.415479,0.713135 -0.617017,1.410767 -0.201538,0.697632 -0.201538,1.413867 0,0.716235 0.201538,1.420068 0.204639,0.700733 0.617017,1.410767 h -0.496094 q -0.465088,-0.728638 -0.697632,-1.432471 -0.229443,-0.703833 -0.229443,-1.398364 0,-0.691431 0.229443,-1.392163 0.229444,-0.700733 0.697632,-1.432471 z" />
<path
id="path4286"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 59.6719,39.225737 q 0,-0.629419 -0.260449,-0.985986 -0.257349,-0.359668 -0.710035,-0.359668 -0.452685,0 -0.713134,0.359668 -0.257349,0.356567 -0.257349,0.985986 0,0.629419 0.257349,0.989087 0.260449,0.356567 0.713134,0.356567 0.452686,0 0.710035,-0.356567 0.260449,-0.359668 0.260449,-0.989087 z m -1.940967,-1.212329 q 0.179834,-0.310058 0.452686,-0.458887 0.275952,-0.151928 0.657324,-0.151928 0.632519,0 1.026294,0.502295 0.396875,0.502295 0.396875,1.320849 0,0.818555 -0.396875,1.32085 -0.393775,0.502295 -1.026294,0.502295 -0.381372,0 -0.657324,-0.148828 -0.272852,-0.151929 -0.452686,-0.461988 v 0.520899 h -0.573608 v -4.824512 h 0.573608 z" />
<path
id="path4288"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 61.150879,39.588506 v -2.102198 h 0.570508 v 2.080494 q 0,0.492993 0.192236,0.74104 0.192237,0.244946 0.576709,0.244946 0.461988,0 0.728638,-0.294556 0.269751,-0.294555 0.269751,-0.803051 v -1.968873 h 0.570508 v 3.472657 h -0.570508 v -0.533301 q -0.207739,0.31626 -0.483691,0.471289 -0.272852,0.151929 -0.63562,0.151929 -0.598414,0 -0.908472,-0.372071 -0.310059,-0.37207 -0.310059,-1.088305 z m 1.435572,-2.185913 z" />
<path
id="path4290"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 65.804859,36.500322 v 0.985986 h 1.175122 v 0.443384 h -1.175122 v 1.885156 q 0,0.424781 0.114721,0.545704 0.117823,0.120922 0.47439,0.120922 h 0.586011 v 0.477491 H 66.39397 q -0.660425,0 -0.911572,-0.244947 -0.251148,-0.248046 -0.251148,-0.89917 v -1.885156 h -0.418579 v -0.443384 h 0.418579 v -0.985986 z" />
<path
id="path4292"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 69.755005,37.486308 h 0.570508 v 3.472657 h -0.570508 z m 0,-1.351855 h 0.570508 v 0.722437 h -0.570508 z" />
<path
id="path4294"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 74.402783,38.862969 v 2.095996 h -0.570508 v -2.077393 q 0,-0.492993 -0.192236,-0.737939 -0.192237,-0.244947 -0.576709,-0.244947 -0.461988,0 -0.728638,0.294556 -0.26665,0.294556 -0.26665,0.803052 v 1.962671 h -0.573609 v -3.472657 h 0.573609 v 0.539502 q 0.204638,-0.313159 0.48059,-0.468188 0.279053,-0.155029 0.641822,-0.155029 0.598413,0 0.905371,0.37207 0.306958,0.36897 0.306958,1.088306 z" />
<path
id="path4296"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 76.765429,36.134453 h 1.5875 v 4.824512 h -0.573608 v -4.350122 h -1.020093 q -0.306958,0 -0.427881,0.124023 -0.117822,0.124024 -0.117822,0.446484 v 0.306958 h 0.939477 v 0.443384 h -0.939477 v 3.029273 h -0.573608 v -3.029273 h -0.545704 v -0.443384 h 0.545704 v -0.241845 q 0,-0.57981 0.269751,-0.84336 0.269751,-0.26665 0.855761,-0.26665 z" />
<path
id="path4298"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 82.523219,39.08001 v 0.279052 h -2.623096 q 0.03721,0.589112 0.353467,0.89917 0.31936,0.306958 0.886768,0.306958 0.328662,0 0.63562,-0.08062 0.310058,-0.08062 0.613916,-0.241846 v 0.539502 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654224,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483691,-0.483691 -0.483691,-1.308447 0,-0.852661 0.458886,-1.351855 0.461988,-0.502295 1.243335,-0.502295 0.700733,0 1.10691,0.452685 0.409277,0.449585 0.409277,1.224732 z m -0.570508,-0.167432 q -0.0062,-0.468188 -0.26355,-0.747241 -0.254248,-0.279053 -0.675927,-0.279053 -0.477491,0 -0.765845,0.269751 -0.285254,0.269751 -0.328662,0.759644 z" />
<path
id="path4300"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 85.958668,37.619634 v 0.5333 q -0.241846,-0.133325 -0.486792,-0.198437 -0.241846,-0.06821 -0.489892,-0.06821 -0.555005,0 -0.861963,0.353467 -0.306958,0.350366 -0.306958,0.985986 0,0.63562 0.306958,0.989087 0.306958,0.350366 0.861963,0.350366 0.248046,0 0.489892,-0.06511 0.244946,-0.06821 0.486792,-0.201538 v 0.527099 q -0.238745,0.111622 -0.496094,0.167432 -0.254248,0.05581 -0.542602,0.05581 -0.784448,0 -1.246436,-0.492993 -0.461987,-0.492994 -0.461987,-1.330152 0,-0.84956 0.465088,-1.336352 0.468188,-0.486792 1.280542,-0.486792 0.26355,0 0.514697,0.05581 0.251148,0.05271 0.486792,0.161231 z" />
<path
id="path4302"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 87.521362,36.500322 v 0.985986 h 1.175122 v 0.443384 h -1.175122 v 1.885156 q 0,0.424781 0.114722,0.545704 0.117822,0.120922 0.474389,0.120922 h 0.586011 v 0.477491 h -0.586011 q -0.660425,0 -0.911572,-0.244947 -0.251147,-0.248046 -0.251147,-0.89917 v -1.885156 h -0.41858 v -0.443384 h 0.41858 v -0.985986 z" />
<path
id="path4304"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 92.420287,39.08001 v 0.279052 h -2.623096 q 0.03721,0.589112 0.353467,0.89917 0.31936,0.306958 0.886768,0.306958 0.328662,0 0.63562,-0.08062 0.310058,-0.08062 0.613916,-0.241846 v 0.539502 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654224,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483691,-0.483691 -0.483691,-1.308447 0,-0.852661 0.458886,-1.351855 0.461988,-0.502295 1.243335,-0.502295 0.700733,0 1.10691,0.452685 0.409277,0.449585 0.409277,1.224732 z m -0.570508,-0.167432 q -0.0062,-0.468188 -0.26355,-0.747241 -0.254248,-0.279053 -0.675927,-0.279053 -0.477491,0 -0.765845,0.269751 -0.285254,0.269751 -0.328662,0.759644 z" />
<path
id="path4306"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 95.641796,38.013408 v -1.878955 h 0.570507 v 4.824512 h -0.570507 v -0.520899 q -0.179834,0.310059 -0.455786,0.461988 -0.272852,0.148828 -0.657325,0.148828 -0.629419,0 -1.026294,-0.502295 -0.393774,-0.502295 -0.393774,-1.32085 0,-0.818554 0.393774,-1.320849 0.396875,-0.502295 1.026294,-0.502295 0.384473,0 0.657325,0.151928 0.275952,0.148829 0.455786,0.458887 z m -1.944068,1.212329 q 0,0.629419 0.257349,0.989087 0.260449,0.356567 0.713135,0.356567 0.452685,0 0.713134,-0.356567 0.26045,-0.359668 0.26045,-0.989087 0,-0.629419 -0.26045,-0.985986 -0.260449,-0.359668 -0.713134,-0.359668 -0.452686,0 -0.713135,0.359668 -0.257349,0.356567 -0.257349,0.985986 z" />
<path
id="path4308"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 99.409009,37.486308 h 0.570508 v 3.472657 h -0.570508 z m 0,-1.351855 h 0.570508 v 0.722437 h -0.570508 z" />
<path
id="path4310"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 102.92817,36.134453 v 0.47439 h -0.5457 q -0.30696,0 -0.42788,0.124023 -0.11782,0.124024 -0.11782,0.446484 v 0.306958 h 0.93947 v 0.443384 h -0.93947 v 3.029273 h -0.57361 v -3.029273 h -0.54571 v -0.443384 h 0.54571 v -0.241845 q 0,-0.57981 0.26975,-0.84336 0.26975,-0.26665 0.85576,-0.26665 z" />
<path
id="path4312"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 54.038135,47.734363 h 1.023193 v -3.531567 l -1.11311,0.223242 V 43.85553 l 1.106909,-0.223242 h 0.626319 v 4.102075 h 1.023193 v 0.5271 h -2.666504 z" />
<path
id="path4314"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 60.105981,44.891126 v 0.539502 q -0.241845,-0.124024 -0.502294,-0.186036 -0.26045,-0.06201 -0.539502,-0.06201 -0.424781,0 -0.638721,0.130224 -0.21084,0.130225 -0.21084,0.390674 0,0.198438 0.151929,0.313159 0.151929,0.111621 0.610815,0.213941 l 0.195337,0.04341 q 0.607715,0.130225 0.861963,0.36897 0.257349,0.235644 0.257349,0.660425 0,0.483691 -0.384473,0.765844 -0.381372,0.282154 -1.051099,0.282154 -0.279052,0 -0.58291,-0.05581 -0.300757,-0.05271 -0.63562,-0.16123 v -0.589112 q 0.31626,0.164331 0.623218,0.248047 0.306958,0.08062 0.607715,0.08062 0.403076,0 0.620117,-0.136425 0.217041,-0.139527 0.217041,-0.390674 0,-0.232544 -0.15813,-0.356568 -0.155029,-0.124023 -0.685229,-0.238745 l -0.198438,-0.04651 q -0.5302,-0.111621 -0.765845,-0.341064 -0.235644,-0.232544 -0.235644,-0.63562 0,-0.489893 0.347265,-0.756543 0.347266,-0.26665 0.985987,-0.26665 0.31626,0 0.595312,0.04651 0.279053,0.04651 0.514697,0.139527 z" />
<path
id="path4316"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 61.767895,43.80282 v 0.985986 h 1.175123 v 0.443384 h -1.175123 v 1.885156 q 0,0.424781 0.114722,0.545703 0.117822,0.120923 0.47439,0.120923 h 0.586011 v 0.477491 h -0.586011 q -0.660425,0 -0.911572,-0.244947 -0.251148,-0.248047 -0.251148,-0.89917 V 45.23219 h -0.418579 v -0.443384 h 0.418579 V 43.80282 Z" />
<path
id="path4318"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 67.063696,45.188782 q -0.458887,0 -0.725537,0.359668 -0.26665,0.356567 -0.26665,0.979785 0,0.623218 0.263549,0.982886 0.266651,0.356567 0.728638,0.356567 0.455786,0 0.722437,-0.359668 0.26665,-0.359668 0.26665,-0.979785 0,-0.617017 -0.26665,-0.976685 -0.266651,-0.362768 -0.722437,-0.362768 z m 0,-0.483691 q 0.744141,0 1.168921,0.483691 0.42478,0.483691 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.42478,0.483692 -1.168921,0.483692 -0.747241,0 -1.172021,-0.483692 -0.42168,-0.486792 -0.42168,-1.339453 0,-0.855762 0.42168,-1.339453 0.42478,-0.483691 1.172021,-0.483691 z" />
<path
id="path4320"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 71.612255,45.322107 q -0.09612,-0.05581 -0.21084,-0.08062 -0.111621,-0.02791 -0.248046,-0.02791 -0.483692,0 -0.744141,0.316259 -0.257349,0.31316 -0.257349,0.902271 v 1.829346 h -0.573608 v -3.472657 h 0.573608 v 0.539502 q 0.179834,-0.316259 0.468189,-0.468188 0.288354,-0.155029 0.700732,-0.155029 0.05891,0 0.130225,0.0093 0.07131,0.0062 0.15813,0.0217 z" />
<path
id="path4322"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 74.858569,47.734363 h 2.185913 v 0.5271 h -2.939356 v -0.5271 q 0.356568,-0.36897 0.970484,-0.989087 0.617016,-0.623218 0.775146,-0.803052 0.300757,-0.337964 0.418579,-0.570507 0.120923,-0.235645 0.120923,-0.461988 0,-0.36897 -0.260449,-0.601513 -0.257349,-0.232544 -0.672827,-0.232544 -0.294556,0 -0.623218,0.102319 -0.325562,0.102319 -0.697632,0.310059 v -0.63252 q 0.378272,-0.151929 0.706934,-0.229443 0.328662,-0.07751 0.601513,-0.07751 0.719336,0 1.147217,0.359668 0.427881,0.359668 0.427881,0.961182 0,0.285253 -0.108521,0.542602 -0.10542,0.254248 -0.387573,0.601514 -0.07751,0.08992 -0.492993,0.520898 -0.415478,0.427881 -1.172021,1.199927 z" />
<path
id="path4324"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 81.16826,46.165466 v 2.095997 H 80.597752 V 46.18407 q 0,-0.492993 -0.192236,-0.737939 -0.192236,-0.244947 -0.576709,-0.244947 -0.461987,0 -0.728638,0.294556 -0.26665,0.294556 -0.26665,0.803052 v 1.962671 h -0.573608 v -3.472657 h 0.573608 v 0.539502 q 0.204639,-0.313159 0.480591,-0.468188 0.279053,-0.155029 0.641821,-0.155029 0.598413,0 0.905371,0.37207 0.306958,0.36897 0.306958,1.088305 z" />
<path
id="path4326"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 84.597508,45.315906 v -1.878955 h 0.570508 v 4.824512 h -0.570508 v -0.520899 q -0.179834,0.310059 -0.455786,0.461987 -0.272851,0.148829 -0.657324,0.148829 -0.629419,0 -1.026294,-0.502295 -0.393774,-0.502295 -0.393774,-1.32085 0,-0.818555 0.393774,-1.32085 0.396875,-0.502294 1.026294,-0.502294 0.384473,0 0.657324,0.151928 0.275952,0.148828 0.455786,0.458887 z m -1.944067,1.212329 q 0,0.629419 0.257348,0.989087 0.26045,0.356567 0.713135,0.356567 0.452686,0 0.713135,-0.356567 0.260449,-0.359668 0.260449,-0.989087 0,-0.629419 -0.260449,-0.985986 -0.260449,-0.359668 -0.713135,-0.359668 -0.452685,0 -0.713135,0.359668 -0.257348,0.356567 -0.257348,0.985986 z" />
<path
id="path4328"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 88.916624,47.740564 v 1.841748 h -0.573608 v -4.793506 h 0.573608 v 0.5271 q 0.179834,-0.310059 0.452686,-0.458887 0.275952,-0.151928 0.657324,-0.151928 0.632519,0 1.026294,0.502294 0.396875,0.502295 0.396875,1.32085 0,0.818555 -0.396875,1.32085 -0.393775,0.502295 -1.026294,0.502295 -0.381372,0 -0.657324,-0.148829 -0.272852,-0.151928 -0.452686,-0.461987 z m 1.940967,-1.212329 q 0,-0.629419 -0.260449,-0.985986 -0.257349,-0.359668 -0.710035,-0.359668 -0.452685,0 -0.713134,0.359668 -0.257349,0.356567 -0.257349,0.985986 0,0.629419 0.257349,0.989087 0.260449,0.356567 0.713134,0.356567 0.452686,0 0.710035,-0.356567 0.260449,-0.359668 0.260449,-0.989087 z" />
<path
id="path4330"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 95.365843,46.382508 v 0.279052 h -2.623096 q 0.03721,0.589112 0.353467,0.89917 0.31936,0.306958 0.886767,0.306958 0.328663,0 0.635621,-0.08062 0.310058,-0.08062 0.613916,-0.241846 v 0.539502 q -0.306958,0.130225 -0.629419,0.198438 -0.322461,0.06821 -0.654224,0.06821 -0.830957,0 -1.317749,-0.483692 -0.483691,-0.483691 -0.483691,-1.308447 0,-0.852661 0.458886,-1.351856 0.461988,-0.502294 1.243335,-0.502294 0.700733,0 1.106909,0.452685 0.409278,0.449585 0.409278,1.224732 z m -0.570508,-0.167432 q -0.0062,-0.468189 -0.26355,-0.747241 -0.254248,-0.279053 -0.675928,-0.279053 -0.47749,0 -0.765844,0.269751 -0.285254,0.269751 -0.328662,0.759643 z" />
<path
id="path4332"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 98.3145,45.322107 q -0.09612,-0.05581 -0.21084,-0.08062 -0.111621,-0.02791 -0.248047,-0.02791 -0.483691,0 -0.74414,0.316259 -0.257349,0.31316 -0.257349,0.902271 v 1.829346 h -0.573608 v -3.472657 h 0.573608 v 0.539502 q 0.179834,-0.316259 0.468189,-0.468188 0.288354,-0.155029 0.700732,-0.155029 0.05891,0 0.130225,0.0093 0.07131,0.0062 0.158129,0.0217 z" />
<path
id="path4334"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 101.13293,44.891126 v 0.539502 q -0.24184,-0.124024 -0.50229,-0.186036 -0.26045,-0.06201 -0.53951,-0.06201 -0.424775,0 -0.638716,0.130224 -0.21084,0.130225 -0.21084,0.390674 0,0.198438 0.151929,0.313159 0.151929,0.111621 0.610817,0.213941 l 0.19534,0.04341 q 0.60771,0.130225 0.86196,0.36897 0.25735,0.235644 0.25735,0.660425 0,0.483691 -0.38448,0.765844 -0.38137,0.282154 -1.051094,0.282154 -0.279053,0 -0.58291,-0.05581 -0.300757,-0.05271 -0.635621,-0.16123 v -0.589112 q 0.31626,0.164331 0.623218,0.248047 0.306958,0.08062 0.607715,0.08062 0.403072,0 0.620122,-0.136425 0.21704,-0.139527 0.21704,-0.390674 0,-0.232544 -0.15813,-0.356568 -0.15503,-0.124023 -0.685233,-0.238745 l -0.198438,-0.04651 q -0.5302,-0.111621 -0.765844,-0.341064 -0.235645,-0.232544 -0.235645,-0.63562 0,-0.489893 0.347266,-0.756543 0.347265,-0.26665 0.985984,-0.26665 0.31626,0 0.59531,0.04651 0.27906,0.04651 0.5147,0.139527 z" />
<path
id="path4336"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 102.31116,47.473914 h 0.65422 v 0.787549 h -0.65422 z" />
<path
id="path4338"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 65.17854,55.043062 v 1.841748 h -0.573608 v -4.793506 h 0.573608 v 0.5271 q 0.179834,-0.310059 0.452686,-0.458887 0.275952,-0.151929 0.657324,-0.151929 0.63252,0 1.026294,0.502295 0.396875,0.502295 0.396875,1.32085 0,0.818555 -0.396875,1.320849 -0.393774,0.502295 -1.026294,0.502295 -0.381372,0 -0.657324,-0.148828 -0.272852,-0.151928 -0.452686,-0.461987 z m 1.940967,-1.212329 q 0,-0.629419 -0.260449,-0.985986 -0.257349,-0.359668 -0.710034,-0.359668 -0.452686,0 -0.713135,0.359668 -0.257349,0.356567 -0.257349,0.985986 0,0.629419 0.257349,0.989087 0.260449,0.356567 0.713135,0.356567 0.452685,0 0.710034,-0.356567 0.260449,-0.359668 0.260449,-0.989087 z" />
<path
id="path4340"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 70.669678,52.624605 q -0.09612,-0.05581 -0.21084,-0.08062 -0.111621,-0.02791 -0.248047,-0.02791 -0.483691,0 -0.74414,0.31626 -0.257349,0.313159 -0.257349,0.902271 v 1.829345 h -0.573608 v -3.472656 h 0.573608 v 0.539502 q 0.179834,-0.31626 0.468188,-0.468188 0.288355,-0.15503 0.700733,-0.15503 0.05891,0 0.130224,0.0093 0.07131,0.0062 0.15813,0.0217 z" />
<path
id="path4342"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 72.483521,52.49128 q -0.458887,0 -0.725537,0.359668 -0.266651,0.356567 -0.266651,0.979785 0,0.623218 0.26355,0.982886 0.26665,0.356567 0.728638,0.356567 0.455786,0 0.722436,-0.359668 0.266651,-0.359668 0.266651,-0.979785 0,-0.617017 -0.266651,-0.976685 -0.26665,-0.362768 -0.722436,-0.362768 z m 0,-0.483692 q 0.74414,0 1.168921,0.483692 0.42478,0.483691 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.424781,0.483691 -1.168921,0.483691 -0.747242,0 -1.172022,-0.483691 -0.421679,-0.486792 -0.421679,-1.339453 0,-0.855762 0.421679,-1.339453 0.42478,-0.483692 1.172022,-0.483692 z" />
<path
id="path4344"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 77.906445,53.467964 v 2.095996 h -0.570508 v -2.077392 q 0,-0.492993 -0.192236,-0.73794 -0.192236,-0.244946 -0.576709,-0.244946 -0.461987,0 -0.728638,0.294556 -0.26665,0.294555 -0.26665,0.803052 v 1.96267 h -0.573608 v -3.472656 h 0.573608 v 0.539502 q 0.204639,-0.313159 0.480591,-0.468188 0.279052,-0.15503 0.641821,-0.15503 0.598413,0 0.905371,0.372071 0.306958,0.368969 0.306958,1.088305 z" />
<path
id="path4346"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 80.396216,52.49128 q -0.458887,0 -0.725537,0.359668 -0.266651,0.356567 -0.266651,0.979785 0,0.623218 0.26355,0.982886 0.26665,0.356567 0.728638,0.356567 0.455786,0 0.722436,-0.359668 0.266651,-0.359668 0.266651,-0.979785 0,-0.617017 -0.266651,-0.976685 -0.26665,-0.362768 -0.722436,-0.362768 z m 0,-0.483692 q 0.74414,0 1.168921,0.483692 0.42478,0.483691 0.42478,1.339453 0,0.852661 -0.42478,1.339453 -0.424781,0.483691 -1.168921,0.483691 -0.747242,0 -1.172022,-0.483691 -0.42168,-0.486792 -0.42168,-1.339453 0,-0.855762 0.42168,-1.339453 0.42478,-0.483692 1.172022,-0.483692 z" />
<path
id="path4348"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 82.873583,54.193501 v -2.102197 h 0.570508 v 2.080493 q 0,0.492994 0.192237,0.74104 0.192236,0.244947 0.576709,0.244947 0.461987,0 0.728637,-0.294556 0.269751,-0.294556 0.269751,-0.803052 v -1.968872 h 0.570508 v 3.472656 h -0.570508 v -0.5333 q -0.207739,0.316259 -0.483691,0.471289 -0.272852,0.151928 -0.63562,0.151928 -0.598413,0 -0.908472,-0.37207 -0.310059,-0.37207 -0.310059,-1.088306 z m 1.435572,-2.185913 z" />
<path
id="path4350"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 89.849902,53.467964 v 2.095996 h -0.570508 v -2.077392 q 0,-0.492993 -0.192236,-0.73794 -0.192237,-0.244946 -0.576709,-0.244946 -0.461988,0 -0.728638,0.294556 -0.26665,0.294555 -0.26665,0.803052 v 1.96267 h -0.573609 v -3.472656 h 0.573609 v 0.539502 q 0.204638,-0.313159 0.48059,-0.468188 0.279053,-0.15503 0.641822,-0.15503 0.598413,0 0.905371,0.372071 0.306958,0.368969 0.306958,1.088305 z" />
<path
id="path4352"
style="font-size:6.35px;line-height:1.15;text-align:center;text-anchor:middle"
d="m 90.904101,50.74565 h 0.496094 q 0.465088,0.731738 0.694531,1.432471 0.232544,0.700732 0.232544,1.392163 0,0.694531 -0.232544,1.398364 -0.229443,0.703833 -0.694531,1.432471 h -0.496094 q 0.412378,-0.710035 0.613916,-1.410767 0.204639,-0.703833 0.204639,-1.420068 0,-0.716236 -0.204639,-1.413867 -0.201538,-0.697632 -0.613916,-1.410767 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1385);fill:#000000;fill-opacity:1;stroke:none"
id="text1383"
transform="translate(17.164648,116.82151)"
aria-label="or">
<path
id="path4355"
style="shape-inside:url(#rect1385)"
d="m 41.924122,-39.945734 q -0.611849,0 -0.967383,0.479557 -0.355534,0.475424 -0.355534,1.306381 0,0.830957 0.3514,1.310515 0.355534,0.475423 0.971517,0.475423 0.607715,0 0.963249,-0.479557 0.355534,-0.479558 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302247 -0.355534,-0.483691 -0.963249,-0.483691 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785938 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649056 -0.56224,-1.785938 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path4357"
style="shape-inside:url(#rect1385)"
d="m 47.98887,-39.767967 q -0.128157,-0.07441 -0.281119,-0.107487 -0.148829,-0.03721 -0.33073,-0.03721 -0.644922,0 -0.992188,0.421679 -0.343131,0.417546 -0.343131,1.203028 v 2.439129 H 45.27689 v -4.63021 h 0.764812 v 0.719336 q 0.239778,-0.42168 0.624251,-0.624252 0.384473,-0.206705 0.934311,-0.206705 0.07855,0 0.173632,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
</g>
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:0.85;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1391);fill:#000000;fill-opacity:1;stroke:none"
id="text1389"
transform="translate(29.419485,154.59226)"
aria-label="enclitic (mini)
pronoun">
<path
id="path4360"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 7.5745021,-65.810929 v 0.372071 H 4.0770398 q 0.049609,0.785482 0.4712892,1.198893 0.425814,0.409278 1.1823573,0.409278 0.4382163,0 0.8474938,-0.107487 0.4134116,-0.107487 0.818555,-0.322461 v 0.719336 q -0.4092775,0.173633 -0.8392256,0.264583 -0.4299481,0.09095 -0.8722985,0.09095 -1.1079432,0 -1.7569994,-0.644922 -0.6449222,-0.644922 -0.6449222,-1.744597 0,-1.136882 0.6118492,-1.802475 0.6159834,-0.669727 1.6577807,-0.669727 0.9343102,0 1.4758794,0.603581 0.5457034,0.599447 0.5457034,1.632976 z m -0.7606774,-0.223242 q -0.00827,-0.624252 -0.3513999,-0.996322 -0.3389975,-0.372071 -0.9012373,-0.372071 -0.6366539,0 -1.0211267,0.359668 -0.3803387,0.359669 -0.4382163,1.012859 z" />
<path
id="path4362"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 12.671867,-66.100317 v 2.794663 H 11.91119 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.9715173,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 H 8.7940662 v -4.630211 h 0.7648115 v 0.719337 q 0.2728517,-0.417546 0.6407883,-0.624252 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path4364"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 17.529454,-67.758098 v 0.711068 q -0.322461,-0.177767 -0.649056,-0.264583 -0.322461,-0.09095 -0.65319,-0.09095 -0.740007,0 -1.149285,0.47129 -0.409277,0.467155 -0.409277,1.314649 0,0.847493 0.409277,1.318783 0.409278,0.467155 1.149285,0.467155 0.330729,0 0.65319,-0.08682 0.326595,-0.09095 0.649056,-0.268717 v 0.7028 q -0.318327,0.148828 -0.661458,0.223242 -0.338998,0.07441 -0.723471,0.07441 -1.045931,0 -1.661914,-0.657325 -0.615984,-0.657324 -0.615984,-1.773535 0,-1.132748 0.620118,-1.781805 0.624251,-0.649056 1.70739,-0.649056 0.3514,0 0.686263,0.07441 0.334863,0.07028 0.649056,0.214974 z" />
<path
id="path4366"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 18.860639,-69.738339 h 0.760677 v 6.432685 h -0.760677 z" />
<path
id="path4368"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 21.208818,-67.935865 h 0.760677 v 4.630211 h -0.760677 z m 0,-1.802474 h 0.760677 v 0.963249 h -0.760677 z" />
<path
id="path4370"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 24.309404,-69.250514 v 1.314649 h 1.56683 v 0.591179 h -1.56683 v 2.513543 q 0,0.566374 0.152962,0.727604 0.157097,0.161231 0.63252,0.161231 h 0.781348 v 0.636654 h -0.781348 q -0.880567,0 -1.21543,-0.326596 -0.334864,-0.330729 -0.334864,-1.198893 v -2.513543 h -0.558105 v -0.591179 h 0.558105 v -1.314649 z" />
<path
id="path4372"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 26.880824,-67.935865 h 0.760678 v 4.630211 h -0.760678 z m 0,-1.802474 h 0.760678 v 0.963249 h -0.760678 z" />
<path
id="path4374"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 32.561099,-67.758098 v 0.711068 q -0.322461,-0.177767 -0.649056,-0.264583 -0.322461,-0.09095 -0.653191,-0.09095 -0.740006,0 -1.149284,0.47129 -0.409277,0.467155 -0.409277,1.314649 0,0.847493 0.409277,1.318783 0.409278,0.467155 1.149284,0.467155 0.33073,0 0.653191,-0.08682 0.326595,-0.09095 0.649056,-0.268717 v 0.7028 q -0.318327,0.148828 -0.661459,0.223242 -0.338997,0.07441 -0.72347,0.07441 -1.045931,0 -1.661915,-0.657325 -0.615983,-0.657324 -0.615983,-1.773535 0,-1.132748 0.620117,-1.781805 0.624252,-0.649056 1.70739,-0.649056 0.3514,0 0.686264,0.07441 0.334863,0.07028 0.649056,0.214974 z" />
<path
id="path4376"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 38.415007,-69.730071 q -0.553971,0.950847 -0.822689,1.881023 -0.268717,0.930176 -0.268717,1.885157 0,0.954981 0.268717,1.893425 0.272852,0.93431 0.822689,1.881023 h -0.661458 q -0.620118,-0.971517 -0.930177,-1.909962 -0.305924,-0.938444 -0.305924,-1.864486 0,-0.921908 0.305924,-1.856218 0.305925,-0.934311 0.930177,-1.909962 z" />
<path
id="path4378"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 43.49997,-67.04703 q 0.285254,-0.51263 0.682129,-0.756543 0.396875,-0.243913 0.934311,-0.243913 0.72347,0 1.116211,0.508497 0.392741,0.504362 0.392741,1.438672 v 2.794663 h -0.764811 v -2.769858 q 0,-0.665593 -0.235645,-0.988054 -0.235645,-0.322461 -0.719336,-0.322461 -0.591179,0 -0.934311,0.392741 -0.343131,0.392741 -0.343131,1.070736 v 2.616896 h -0.764812 v -2.769858 q 0,-0.669727 -0.235644,-0.988054 -0.235645,-0.322461 -0.727605,-0.322461 -0.58291,0 -0.926042,0.396875 -0.343132,0.392741 -0.343132,1.066602 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.26045,-0.425814 0.624252,-0.628386 0.363802,-0.202572 0.86403,-0.202572 0.504362,0 0.855762,0.256315 0.355534,0.256316 0.525033,0.744141 z" />
<path
id="path4380"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 48.146718,-67.935865 h 0.760678 v 4.630211 h -0.760678 z m 0,-1.802474 h 0.760678 v 0.963249 h -0.760678 z" />
<path
id="path4382"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 54.343756,-66.100317 v 2.794663 h -0.760678 v -2.769858 q 0,-0.657325 -0.256315,-0.98392 -0.256315,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616896 h -0.764811 v -4.630211 h 0.764811 v 0.719337 q 0.272852,-0.417546 0.640788,-0.624252 0.372071,-0.206706 0.855762,-0.206706 0.797885,0 1.207162,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
<path
id="path4384"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 55.869245,-67.935865 h 0.760677 v 4.630211 h -0.760677 z m 0,-1.802474 h 0.760677 v 0.963249 h -0.760677 z" />
<path
id="path4386"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 58.097534,-69.730071 h 0.661459 q 0.620117,0.975651 0.926042,1.909962 0.310059,0.93431 0.310059,1.856218 0,0.926042 -0.310059,1.864486 -0.305925,0.938445 -0.926042,1.909962 h -0.661459 q 0.549838,-0.946713 0.818555,-1.881023 0.272852,-0.938444 0.272852,-1.893425 0,-0.954981 -0.272852,-1.885157 -0.268717,-0.930176 -0.818555,-1.881023 z" />
<path
id="path4388"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 15.726979,-55.004382 v 2.455665 h -0.764811 v -6.391344 h 0.764811 v 0.7028 q 0.239779,-0.413412 0.603581,-0.611849 0.367937,-0.202572 0.876433,-0.202572 0.84336,0 1.368392,0.669727 0.529167,0.669727 0.529167,1.761133 0,1.091407 -0.529167,1.761134 -0.525032,0.669727 -1.368392,0.669727 -0.508496,0 -0.876433,-0.198438 -0.363802,-0.202572 -0.603581,-0.615983 z m 2.587957,-1.61644 q 0,-0.839225 -0.347266,-1.314649 -0.343131,-0.479557 -0.946712,-0.479557 -0.603581,0 -0.950847,0.479557 -0.343132,0.475424 -0.343132,1.314649 0,0.839226 0.343132,1.318783 0.347266,0.475424 0.950847,0.475424 0.603581,0 0.946712,-0.475424 0.347266,-0.479557 0.347266,-1.318783 z" />
<path
id="path4390"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 23.048499,-58.228993 q -0.128158,-0.07441 -0.28112,-0.107487 -0.148828,-0.03721 -0.330729,-0.03721 -0.644922,0 -0.992188,0.42168 -0.343132,0.417546 -0.343132,1.203028 v 2.439128 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.239779,-0.421679 0.624252,-0.624251 0.384473,-0.206706 0.93431,-0.206706 0.07855,0 0.173633,0.0124 0.09508,0.0083 0.21084,0.02894 z" />
<path
id="path4392"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 25.466957,-58.40676 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.30638 0,0.830958 0.3514,1.310515 0.355534,0.475424 0.971517,0.475424 0.607716,0 0.96325,-0.479558 0.355534,-0.479557 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302246 -0.355534,-0.483692 -0.96325,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785939 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562695,-0.644922 -0.56224,-0.649057 -0.56224,-1.785939 0,-1.141016 0.56224,-1.785938 0.566373,-0.644922 1.562695,-0.644922 z" />
<path
id="path4394"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 32.697526,-57.104513 v 2.794662 h -0.760677 v -2.769857 q 0,-0.657325 -0.256315,-0.98392 -0.256316,-0.326595 -0.768946,-0.326595 -0.615983,0 -0.971517,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764812 v -4.63021 h 0.764812 v 0.719336 q 0.272851,-0.417545 0.640788,-0.624251 0.37207,-0.206706 0.855762,-0.206706 0.797884,0 1.207162,0.496094 0.409277,0.49196 0.409277,1.451075 z" />
<path
id="path4396"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 36.017222,-58.40676 q -0.611849,0 -0.967383,0.479558 -0.355534,0.475423 -0.355534,1.30638 0,0.830958 0.3514,1.310515 0.355534,0.475424 0.971517,0.475424 0.607715,0 0.963249,-0.479558 0.355534,-0.479557 0.355534,-1.306381 0,-0.822689 -0.355534,-1.302246 -0.355534,-0.483692 -0.963249,-0.483692 z m 0,-0.644922 q 0.992188,0 1.558562,0.644922 0.566374,0.644922 0.566374,1.785938 0,1.136882 -0.566374,1.785939 -0.566374,0.644922 -1.558562,0.644922 -0.996322,0 -1.562696,-0.644922 -0.56224,-0.649057 -0.56224,-1.785939 0,-1.141016 0.56224,-1.785938 0.566374,-0.644922 1.562696,-0.644922 z" />
<path
id="path4398"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 39.32038,-56.13713 v -2.802931 h 0.760677 v 2.773992 q 0,0.657325 0.256316,0.988054 0.256315,0.326595 0.768945,0.326595 0.615984,0 0.971518,-0.392741 0.359668,-0.392741 0.359668,-1.070736 v -2.625164 h 0.760677 v 4.63021 h -0.760677 v -0.711068 q -0.276986,0.42168 -0.644922,0.628386 -0.363803,0.202572 -0.847494,0.202572 -0.797885,0 -1.211296,-0.496094 -0.413412,-0.496094 -0.413412,-1.451075 z m 1.914096,-2.914552 z" />
<path
id="path4400"
style="font-size:8.46667px;text-align:center;text-anchor:middle"
d="m 48.622142,-57.104513 v 2.794662 h -0.760677 v -2.769857 q 0,-0.657325 -0.256316,-0.98392 -0.256315,-0.326595 -0.768945,-0.326595 -0.615984,0 -0.971518,0.392741 -0.355534,0.392741 -0.355534,1.070736 v 2.616895 h -0.764811 v -4.63021 h 0.764811 v 0.719336 q 0.272852,-0.417545 0.640788,-0.624251 0.372071,-0.206706 0.855763,-0.206706 0.797884,0 1.207161,0.496094 0.409278,0.49196 0.409278,1.451075 z" />
</g>
<path
sodipodi:nodetypes="cccc"
id="path1161"
d="m -25.930477,134.12776 v 6.94901 H 135.76759 v -18.4416"
style="fill:none;stroke:#4d4d4d;stroke-width:0.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.46, 1.73;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
id="g1344">
<path
sodipodi:nodetypes="cccc"
id="path1169-1"
d="m 36.883574,98.715892 9.342265,9.289858 h 40.102596 l 9.589405,-9.589418"
style="fill:none;stroke:#000000;stroke-width:0.964999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect1354);fill:#000000;fill-opacity:1;stroke:none"
id="text1352"
transform="translate(13.985119,-5.2916667)"
aria-label="object">
<path
id="path4403"
d="m 39.076039,122.71137 q -0.764808,0 -1.209224,0.59945 -0.444416,0.59427 -0.444416,1.63297 0,1.03869 0.439248,1.63813 0.444416,0.59428 1.214392,0.59428 0.759642,0 1.204058,-0.59944 0.444415,-0.59945 0.444415,-1.63297 0,-1.02836 -0.444415,-1.62781 -0.444416,-0.60461 -1.204058,-0.60461 z m 0,-0.80615 q 1.240231,0 1.948196,0.80615 0.707965,0.80615 0.707965,2.23242 0,1.42109 -0.707965,2.23241 -0.707965,0.80615 -1.948196,0.80615 -1.245398,0 -1.953362,-0.80615 -0.702798,-0.81132 -0.702798,-2.23241 0,-1.42627 0.702798,-2.23242 0.707964,-0.80615 1.953362,-0.80615 z" />
<path
id="path4405"
d="m 47.45793,124.94379 q 0,-1.04903 -0.434081,-1.64331 -0.428913,-0.59944 -1.183386,-0.59944 -0.754474,0 -1.188554,0.59944 -0.428913,0.59428 -0.428913,1.64331 0,1.04902 0.428913,1.64847 0.43408,0.59428 1.188554,0.59428 0.754473,0 1.183386,-0.59428 0.434081,-0.59945 0.434081,-1.64847 z m -3.234934,-2.02055 q 0.299722,-0.51676 0.754473,-0.7648 0.459919,-0.25322 1.095537,-0.25322 1.054196,0 1.710485,0.83716 0.661456,0.83715 0.661456,2.20141 0,1.36425 -0.661456,2.20141 -0.656289,0.83715 -1.710485,0.83715 -0.635618,0 -1.095537,-0.24805 -0.454751,-0.25321 -0.754473,-0.76997 v 0.86816 h -0.956011 v -8.04083 h 0.956011 z" />
<path
id="path4407"
d="m 50.021073,122.04475 h 0.950843 v 5.89109 q 0,1.10587 -0.423745,1.60197 -0.418578,0.49609 -1.353919,0.49609 h -0.361733 v -0.80615 h 0.253213 q 0.542601,0 0.738971,-0.25321 0.19637,-0.24805 0.19637,-1.0387 z m 0,-2.25309 h 0.950843 v 1.20406 h -0.950843 z" />
<path
id="path4409"
d="m 57.906871,124.70091 v 0.46508 h -4.371812 q 0.06201,0.98185 0.589109,1.49862 0.532266,0.51159 1.477942,0.51159 0.547768,0 1.059363,-0.13436 0.516763,-0.13436 1.02319,-0.40307 v 0.89916 q -0.511595,0.21705 -1.049028,0.33073 -0.537433,0.11369 -1.090369,0.11369 -1.384924,0 -2.196242,-0.80615 -0.806149,-0.80615 -0.806149,-2.18074 0,-1.42109 0.764808,-2.25308 0.769977,-0.83716 2.072219,-0.83716 1.167883,0 1.844843,0.75448 0.682126,0.7493 0.682126,2.04121 z m -0.950843,-0.27905 q -0.01034,-0.78032 -0.439248,-1.2454 -0.423746,-0.46509 -1.126543,-0.46509 -0.795814,0 -1.276404,0.44959 -0.475421,0.44958 -0.547768,1.26606 z" />
<path
id="path4411"
d="m 63.632602,122.26696 v 0.88883 q -0.403075,-0.22221 -0.811318,-0.33073 -0.403075,-0.11369 -0.816485,-0.11369 -0.925005,0 -1.4366,0.58911 -0.511595,0.58394 -0.511595,1.64331 0,1.05936 0.511595,1.64847 0.511595,0.58394 1.4366,0.58394 0.41341,0 0.816485,-0.10852 0.408243,-0.11369 0.811318,-0.33589 v 0.87849 q -0.397908,0.18604 -0.826821,0.27905 -0.423745,0.093 -0.904334,0.093 -1.30741,0 -2.077386,-0.82165 -0.769977,-0.82165 -0.769977,-2.21691 0,-1.41593 0.775144,-2.22725 0.780312,-0.81132 2.13423,-0.81132 0.439248,0 0.857826,0.093 0.418578,0.0879 0.811318,0.26872 z" />
<path
id="path4413"
d="m 66.237085,120.40144 v 1.64331 h 1.95853 v 0.73897 h -1.95853 v 3.14192 q 0,0.70796 0.191202,0.9095 0.19637,0.20154 0.790647,0.20154 h 0.976681 v 0.79581 h -0.976681 q -1.100705,0 -1.519282,-0.40824 -0.418578,-0.41341 -0.418578,-1.49861 v -3.14192 h -0.69763 v -0.73897 h 0.69763 v -1.64331 z" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 72 KiB

14
src/images.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
declare module '*.jpeg';
declare module '*.jpg';
declare module '*.jpeg';
declare module '*.png';
declare module '*.svg';
declare module '*.gif';

13
src/index.css Normal file
View File

@ -0,0 +1,13 @@
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}

17
src/index.js Normal file
View File

@ -0,0 +1,17 @@
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

View File

@ -0,0 +1,76 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { makePsString } from "./p-text-helpers";
import {
accentOnFront,
accentPastParticiple,
accentFSylsOnNFromEnd,
accentOnNFromEnd,
splitUpSyllables,
} from "./accent-helpers";
const toAccentFront = [
{
input: makePsString("پرېښودل", "prexodúl"),
output: makePsString("پرېښودل", "préxodul"),
},
{
input: {
long: makePsString("وګرځېد", "oogurdzed"),
short: makePsString("وګرځ", "oogurdz"),
},
output: {
long: makePsString("وګرځېد", "óogurdzed"),
short: makePsString("وګرځ", "óogurdz"),
},
},
];
test(`accentOnFront should work`, () => {
toAccentFront.forEach((item) => {
expect(accentOnFront(item.input)).toEqual(item.output);
});
});
const toAccentPastParticiple = [
{
input: makePsString("پرېښی", "prexey"),
output: makePsString("پرېښی", "préxey"),
},
{
input: makePsString("ازمویلی", "azmoyuley"),
output: makePsString("ازمویلی", "azmóyuley"),
},
];
test(`accentPastParticiple should work`, () => {
toAccentPastParticiple.forEach((item) => {
expect(accentPastParticiple(item.input)).toEqual(item.output);
});
});
test(`splitUpSyllables should work`, () => {
expect(splitUpSyllables("akheestul")).toEqual(["akh", "eest", "ul"]);
});
test(`accentOnFSylsOnNFromEnd should work`, () => {
expect(accentFSylsOnNFromEnd(["pu", "xtaa", "nu"], 0)).toBe("puxtaanú");
expect(accentFSylsOnNFromEnd(["leed", "ul", "ey"], 1)).toBe("leedúley");
});
test(`accentOnNFromEnd should work`, () => {
expect(accentOnNFromEnd({ p: "پښتانه", f: "puxtaanu" }, 0)).toEqual({
p: "پښتانه",
f: "puxtaanú",
});
expect(accentOnNFromEnd({ p: "لیدلی", f: "leedúley" }, 1)).toEqual({
p: "لیدلی",
f: "leedúley",
});
});

115
src/lib/accent-helpers.ts Normal file
View File

@ -0,0 +1,115 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { makePsString } from "./p-text-helpers";
import * as T from "../types";
/**
* Returns a Pashto string (or string with Length options) ensuring that
* the accent is on front
*
* @param s
*/
export function accentOnFront(s: T.SingleOrLengthOpts<T.PsString>): T.SingleOrLengthOpts<T.PsString> {
if ("long" in s) {
return {
short: accentOnFront(s.short) as T.PsString,
long: accentOnFront(s.long) as T.PsString,
};
}
return {
...s,
f: accentSyllable(removeAccents(s.f)),
};
}
/**
* Ensures an accent on a past participle ie. leedúley, préxey, azmóyuley
*
* @param s - the Pashto string (with Pashto and Phonetics) to ensure the accent on
*/
export function accentPastParticiple(s: T.PsString): T.PsString {
// check for accent placing in words like wáayuley and azmóyuley
const accentFallsOnThirdLast = (syls: string[]) => {
if (syls.length < 3) return false;
const secondLast = syls[syls.length-2];
const thirdLast = syls[syls.length-3];
const lastLetterOfThirdLast = thirdLast.slice(-1);
return (
(secondLast === "ul") && (lastLetterOfThirdLast === "y")
);
}
// remove all accents
const accentsRemoved = removeAccents(s.f);
// split up the syllables (preserving the spaces)
const syllables = splitUpSyllables(accentsRemoved);
// add an accent on the appropriate syllable
const n = accentFallsOnThirdLast(syllables) ? 2 : 1;
const accentedF = accentFSylsOnNFromEnd(syllables, n);
return makePsString(s.p, accentedF);
}
export function splitUpSyllables(s: string): string[] {
return s.match(/ |([^a|e|i|o|u| ]*(aa|a|ey|ee|e|oo|o|i|u)[^a|e|i|o|u| ]*)/g) as string[];
}
/**
* Returns a phonetic string with the accent placed n syllables from the end
*
* @param syls - an array of syllables in phonetic strings without accents (including spaces as extra items)
* @param n - the number of syllables from the end to put the accent
*/
export function accentFSylsOnNFromEnd(syls: string[], n: number): string {
return [
...syls.slice(0, syls.length-(n+1)), // before accent
accentSyllable(syls[syls.length-(n+1)]), // syllable to be accented
...(n !== 0) ? syls.slice(syls.length-n) : [], // after syllable to be accented
].join("");
}
export function accentOnNFromEnd(ps: T.PsString, n: number): T.PsString {
const fSyls = splitUpSyllables(removeAccents(ps.f));
return makePsString(
ps.p,
accentFSylsOnNFromEnd(fSyls, n),
);
}
function accentSyllable(s: string): string {
const replacer = [
{ vowel: "a", accented: "á" },
{ vowel: "e", accented: "é" },
{ vowel: "i", accented: "í" },
{ vowel: "o", accented: "ó" },
{ vowel: "u", accented: "ú" },
{ vowel: "U", accented: "Ú" },
];
return s.replace(/a|e|i|o|u|U/, (match) => {
const r = replacer.find((x) => x.vowel === match);
/* istanbul ignore next */
return r?.accented || "";
});
}
export function removeAccents(s: T.PsString): T.PsString;
export function removeAccents(s: string): string;
export function removeAccents(s: T.PsString | string): T.PsString | string {
if (typeof s !== "string") {
return makePsString(
s.p,
removeAccents(s.f),
);
}
return s.replace(/á/g, "a")
.replace(/é/g, "e")
.replace(/í/g, "i")
.replace(/ó/g, "o")
.replace(/ú/g, "u")
.replace(/Á/g, "A")
.replace(/Ú/g, "U");
}

485
src/lib/add-pronouns.ts Normal file
View File

@ -0,0 +1,485 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
ensureBaAt,
isAllOne,
isVerbBlock,
removeHead,
uniquePsStringArray,
splitOffLeapfrogWord,
removeObjComp,
psRemove,
psStringContains,
} from "../lib/p-text-helpers";
import {
getPersonFromVerbForm,
pickPersInf,
} from "../lib/misc-helpers";
import {
baParticle,
pronouns,
} from "../lib/grammar-units";
import {
removeAccents,
} from "../lib/accent-helpers";
import { concatPsString } from "../lib/p-text-helpers";
import * as T from "../types";
const pashtoCharacterRange = "\u0621-\u065f\u0670-\u06d3\u06d5"
function getSplitHead(split: T.SplitInfo | undefined, matrixKey: T.PersonInflectionsField) {
if (!split) {
return undefined;
}
const fromMatrix = pickPersInf(split, matrixKey)
// doesn't matter what length it is, the head will always be the same
const pair = "long" in fromMatrix ? fromMatrix.long : fromMatrix;
return pair[0];
}
function formHasVariations(form: T.VerbForm | T.ImperativeForm | T.ParticipleForm | T.SentenceForm): boolean {
if ("mascSing" in form) {
return formHasVariations(form.mascSing);
}
if ("long" in form) {
return formHasVariations(form.long);
}
if (!isVerbBlock(form)) {
return false;
}
return !isAllOne(form as T.VerbBlock);
}
type Pronouns = undefined | {
subject: T.PsString | [T.PsString, T.PsString],
object?: T.PsString | [T.PsString, T.PsString],
mini: T.PsString,
}
const nuParticle = { p: "نه", f: "nú" };
export default function addPronouns({ s, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }: {
s: T.SentenceForm,
subject: T.Person,
object: T.Person,
info: T.NonComboVerbInfo,
displayForm: T.DisplayFormForSentence,
intransitive: boolean,
ergative: boolean,
matrixKey: T.PersonInflectionsField,
negative: boolean,
}): T.SentenceForm {
if ("long" in s) {
return {
long: addPronouns({ s: s.long, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }) as T.ArrayOneOrMore<T.PsString>,
short: addPronouns({ s: s.short, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }) as T.ArrayOneOrMore<T.PsString>,
...s.mini ? {
mini: addPronouns({ s: s.mini, subject, object, info, displayForm, intransitive, ergative, matrixKey, negative }) as T.ArrayOneOrMore<T.PsString>,
} : {},
}
}
const firstOrSecondObjectPresent = [0,1,2,3,6,7,8,9].includes(object) && !displayForm.past;
const nearPronounPossible = (p: T.Person) => [4, 5, 10, 11].includes(p);
const noPronouns =
info.transitivity === "grammatically transitive" && displayForm.passive;
const noObjectPronoun =
intransitive || info.transitivity === "grammatically transitive" ||
info.type === "dynamic compound" || info.type === "generative stative compound";
const transDynCompPast =
info.transitivity === "transitive" && info.type === "dynamic compound" && displayForm.past;
const subjectPronoun = (getPersonFromVerbForm(
pronouns.far[ergative ? "inflected" : "plain"],
subject,
) as T.ArrayOneOrMore<T.PsString>)[0];
const nearSubjectPronoun = (getPersonFromVerbForm(
pronouns.near[ergative ? "inflected" : "plain"],
subject,
) as T.ArrayOneOrMore<T.PsString>)[0];
const objectPronoun = (getPersonFromVerbForm(
pronouns.far[firstOrSecondObjectPresent ? "inflected" : "plain"],
object,
) as T.ArrayOneOrMore<T.PsString>)[0];
const nearObjectPronoun = (getPersonFromVerbForm(
pronouns.near[firstOrSecondObjectPresent ? "inflected" : "plain"],
object,
) as T.ArrayOneOrMore<T.PsString>)[0];
const miniPronoun = (getPersonFromVerbForm(
pronouns.mini,
ergative ? subject : object,
) as T.ArrayOneOrMore<T.PsString>)[0];
const prns: Pronouns = noPronouns
? undefined
: noObjectPronoun
? {
subject: nearPronounPossible(subject) ? [subjectPronoun, nearSubjectPronoun] : subjectPronoun,
mini: miniPronoun,
} : {
subject: nearPronounPossible(subject) ? [subjectPronoun, nearSubjectPronoun] : subjectPronoun,
object: nearPronounPossible(object) ? [objectPronoun, nearObjectPronoun] : objectPronoun,
mini: miniPronoun,
};
function attachPronounsToVariation(ps: T.PsString, prns: Pronouns): T.ArrayOneOrMore<T.PsString> {
if (!prns) {
return [ps];
}
if (Array.isArray(prns.subject)) {
return [
...attachPronounsToVariation(ps, { ...prns, subject: prns.subject[0] }),
...attachPronounsToVariation(ps, { ...prns, subject: prns.subject[1] }),
] as T.ArrayOneOrMore<T.PsString>;
}
if (Array.isArray(prns.object)) {
return [
...attachPronounsToVariation(ps, { ...prns, object: prns.object[0] }),
...attachPronounsToVariation(ps, { ...prns, object: prns.object[1] }),
] as T.ArrayOneOrMore<T.PsString>;
}
const splitHead = (displayForm.aspect && displayForm.aspect === "perfective")
? getSplitHead(info[displayForm.past ? "root" : "stem"].perfectiveSplit, matrixKey)
: undefined;
const basicForms = (!prns.object)
// basic form with only one pronoun
? makeBasicPronounForm(ps, splitHead, displayForm, info, negative, prns.subject)
: [
// basic form two full pronouns
...makeBasicPronounForm(ps, splitHead, displayForm, info, negative, prns.subject, prns.object),
// basic form one full, one mini pronoun
...makeBasicPronounForm(
ps,
splitHead,
displayForm,
info,
negative,
ergative ? prns.object : prns.subject,
prns.mini,
),
] as T.ArrayOneOrMore<T.PsString>;
const ergativeGrammTrans = (info.transitivity === "grammatically transitive" && ergative);
const canWorkWithOnlyMini = (prns.object && !displayForm.secondPronounNeeded && formHasVariations(displayForm.form))
|| transDynCompPast || ergativeGrammTrans;
return [
...basicForms,
...canWorkWithOnlyMini
? makeOnlyMiniForm(ps, splitHead, displayForm, info, negative, prns.mini)
: [],
] as T.ArrayOneOrMore<T.PsString>;
}
// @ts-ignore
return s.reduce((variations, current) => (
[...variations, ...uniquePsStringArray(
attachPronounsToVariation(current, prns)
)]
), []) as T.ArrayOneOrMore<T.PsString>;
}
function nuMustGoAfterSplitHead(head: T.PsString) {
return (
["و", "وا"].includes(head.p)
||
head.p.slice(-1) === " " // compound splits
||
head.p.match(`[${pashtoCharacterRange}]* و`)
);
}
function spaceAfterSplitHead(head: T.PsString) {
if (nuMustGoAfterSplitHead(head) && head.p.slice(-1) !== " ") {
return { p: "", f: "-" }
}
return { p: " ", f: " " };
}
function makeBasicPronounForm(
ps: T.PsString,
splitHead: T.PsString | undefined,
displayForm: T.DisplayFormForSentence,
info: T.NonComboVerbInfo,
negative: boolean,
firstPronoun: T.PsString,
secondPronoun?: T.PsString,
): T.PsString[] {
if (!negative) {
return [
ensureBaAt(
concatPsString(
firstPronoun,
" ",
secondPronoun ? concatPsString(secondPronoun, " ") : "",
ps,
),
1)
];
}
const objComplement = getObjComplement(info);
function negativeWOutSplit() {
if (!displayForm.reorderWithNegative) {
return [
ensureBaAt(
concatPsString(
firstPronoun,
" ",
secondPronoun
? concatPsString(secondPronoun, " ")
: objComplement
? concatPsString(objComplement, " ")
: "",
nuParticle,
" ",
removeAccents(objComplement ? removeObjComp(objComplement, ps) : ps)
),
1),
];
}
const [beginning, end] = splitOffLeapfrogWord(ps);
return [
ensureBaAt(
objComplement ?
concatPsString(
firstPronoun,
" ",
objComplement,
" ",
nuParticle,
" ",
end,
" ",
removeAccents(removeObjComp(objComplement, beginning)),
)
: concatPsString(
firstPronoun,
" ",
secondPronoun ? concatPsString(secondPronoun, " ") : "",
nuParticle,
" ",
end,
" ",
removeAccents(beginning),
),
1),
ensureBaAt(
concatPsString(
firstPronoun,
" ",
secondPronoun ? concatPsString(secondPronoun, " ") : "",
removeAccents(beginning),
" ",
nuParticle,
" ",
end,
),
1),
];
}
function insertNegInSplit(splitHead: T.PsString) {
if (!displayForm.reorderWithNegative) {
return [
ensureBaAt(
concatPsString(
firstPronoun,
" ",
secondPronoun ? concatPsString(secondPronoun, " ") : "",
removeAccents(splitHead),
spaceAfterSplitHead(splitHead),
nuParticle,
" ",
removeHead(splitHead, ps),
),
1),
];
}
const [beginning, end] = splitOffLeapfrogWord(ps);
return [
ensureBaAt(
concatPsString(
firstPronoun,
" ",
secondPronoun ? concatPsString(secondPronoun, " ") : "",
removeAccents(splitHead),
spaceAfterSplitHead(splitHead),
nuParticle,
" ",
end,
" ",
removeHead(splitHead, beginning),
),
1),
ensureBaAt(
concatPsString(
firstPronoun,
" ",
secondPronoun ? concatPsString(secondPronoun, " ") : "",
removeAccents(splitHead),
spaceAfterSplitHead(splitHead),
nuParticle,
" ",
removeHead(splitHead, beginning),
" ",
end,
),
1),
];
}
if (splitHead) {
return nuMustGoAfterSplitHead(splitHead) ? insertNegInSplit(splitHead) : [
...insertNegInSplit(splitHead),
...negativeWOutSplit(),
]
}
return negativeWOutSplit();
}
function makeOnlyMiniForm(
ps: T.PsString,
splitHead: T.PsString | undefined,
displayForm: T.DisplayFormForSentence,
info: T.NonComboVerbInfo,
negative: boolean,
mini: T.PsString,
): T.PsString[] {
const objComplement = getObjComplement(info);
function reorderedNegativeAfterSplitHead(splitHead: T.PsString) {
const [beginning, end] = splitOffLeapfrogWord(ps);
return ensureBaAt(
objComplement ?
concatPsString(
objComplement,
" ",
mini,
" ",
removeAccents(removeObjComp(objComplement, splitHead)),
spaceAfterSplitHead(splitHead),
nuParticle,
" ",
end,
" ",
removeHead(splitHead, beginning),
)
: concatPsString(
removeAccents(splitHead),
spaceAfterSplitHead(splitHead),
mini,
" ",
nuParticle,
" ",
end,
" ",
removeHead(splitHead, beginning),
),
1)
}
if (splitHead) {
// only mini pronoun with split
if (!displayForm.reorderWithNegative || !negative) {
const safeSplitHead = removeObjComp(objComplement, splitHead);
return [ensureBaAt(
concatPsString(
objComplement ? concatPsString(objComplement, " ", mini, " ") : "",
negative ? removeAccents(safeSplitHead) : safeSplitHead,
spaceAfterSplitHead(safeSplitHead),
!objComplement ? concatPsString(mini, " ") : "",
negative ? concatPsString(nuParticle, " ") : "",
removeHead(splitHead, ps)
),
1)];
}
// if (!nuMustGoAfterSplitHead(splitHead)) {
// TODO: IS THIS A SEPERATELY NECESSARY THING FOR VERBS LIKE
// PREXODUL -- LIKE COULD YOU ALSO DO A VERSION WHERE THE SPLIT ISN'T USED
// return [reorderedNegativeAfterSplitHead(splitHead)];
// }
return [reorderedNegativeAfterSplitHead(splitHead)];
}
// only mini without split
if (!displayForm.reorderWithNegative || !negative) {
if (objComplement) {
return [
concatPsString(
objComplement,
" ",
concatPsString(mini, " "),
negative ? concatPsString(" ", nuParticle, " ") : "",
removeObjComp(objComplement, ps),
)
];
}
return [
concatPsString(
psRemove(ps, concatPsString(baParticle, " ")),
" ",
psStringContains(ps, concatPsString(baParticle, " ")) ? concatPsString(baParticle, " ") : "",
mini,
negative ? concatPsString(" ", nuParticle) : "",
)
];
}
const [beginning, end] = splitOffLeapfrogWord(ps);
if (objComplement) {
return [
ensureBaAt(
concatPsString(
objComplement,
" ",
mini,
" ",
nuParticle,
" ",
end,
" ",
removeObjComp(objComplement, beginning),
),
1),
ensureBaAt(
concatPsString(
objComplement,
" ",
mini,
" ",
removeObjComp(objComplement, beginning),
" ",
nuParticle,
" ",
end,
),
1),
]
}
return [
ensureBaAt(
concatPsString(
beginning,
" ",
mini,
" ",
nuParticle,
" ",
end,
),
1),
ensureBaAt(
concatPsString(
nuParticle,
" ",
end,
" ",
mini,
" ",
beginning,
),
1),
];
}
function getObjComplement(info: T.NonComboVerbInfo): T.PsString | undefined {
return info.type === "dynamic compound" ?
(info.objComplement.plural ? info.objComplement.plural : info.objComplement.entry) :
undefined;
}

View File

@ -0,0 +1,539 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
getPersonInflectionsKey,
pickPersInf,
getPersonFromVerbForm,
} from "./misc-helpers";
import addPronouns from "./add-pronouns";
import * as T from "../types";
type FilterFunc = (form: any) => boolean;
type MapFunc = (opts: {
subject: T.Person,
object: T.Person,
displayForm: T.DisplayFormForSentence,
info: T.NonComboVerbInfo,
negative: boolean,
}) => T.DisplayFormItem;
/**
* Used to apply a filter function on both the levels of forms and subgroups
*
* @param input
* @param func
*/
const formFilter = (
input: T.DisplayFormItem[],
func: FilterFunc | FilterFunc[]
): T.DisplayFormItem[] => {
// TODO: Better filtering that lets us filter things only in sub categories
// recursive madness to apply an array of filters 🤪
// i'm doing this because I couldn't get a compose function to work 🤷‍♂️
if (Array.isArray(func)) {
if (func.length === 0) return input;
return formFilter(
formFilter(input, func[0]),
func.slice(1),
);
}
return (
input.filter(func)
.map((f) => (
"content" in f
? { ...f, content: f.content.filter(func) }
: f
))
);
};
/**
* Used to apply a filter function on both the levels of forms and subgroups
*
* @param input
* @param func
*/
const formMap = (
input: T.DisplayFormItem[],
func: MapFunc,
info: T.NonComboVerbInfo,
subject: T.Person,
object: T.Person,
negative: boolean,
): T.DisplayFormItem[] => {
return (
input.map((f) => (
"content" in f
? { ...f, content: formMap(f.content, func, info, subject, object, negative) }
: func({ displayForm: f as T.DisplayFormForSentence, info, subject, object, negative })
))
);
};
const makeSentence = ({ subject, object, info, displayForm, negative }: {
subject: T.Person,
object: T.Person,
info: T.NonComboVerbInfo,
displayForm: T.DisplayFormForSentence,
negative: boolean,
}): T.DisplayForm => {
const intransitive = info.transitivity === "intransitive" || !!displayForm.passive;
const ergative = !intransitive && !!displayForm.past;
function chooseConjugation(g: T.SingleOrLengthOpts<T.VerbBlock>): T.SentenceForm {
const person = ergative
? object
: subject;
return getPersonFromVerbForm(g, person);
}
const f = displayForm.form;
// IMPORTANT TODO!!! -- IS THIS ALWAYS THE OBJECT HERE?
const matrixKey = getPersonInflectionsKey(object);
const matrixChosen = pickPersInf(f, matrixKey);
const conjugationChosen = chooseConjugation(matrixChosen);
const form = addPronouns({
s: conjugationChosen,
subject,
object,
info,
displayForm,
intransitive,
ergative,
matrixKey,
negative,
});
return {
...displayForm,
form,
};
}
export const getForms = ({ conj, filterFunc, mode, subject, object, negative } : {
conj: T.VerbConjugation,
filterFunc?: FilterFunc | FilterFunc[],
mode: "chart" | "sentence",
subject: T.Person,
object: T.Person,
negative: boolean,
}): T.DisplayFormItem[] => {
const forms: T.DisplayFormItem[] = [
{
label: "Present",
aspect: "imperfective",
form: conj.imperfective.nonImperative,
formula: "Imperfective Stem + Present Ending",
sentence: true,
explanation: "Something that is happening, happens generally, or is definitely about to happen. ('I am ____ing', 'I _____')",
},
{
label: "Subjunctive",
aspect: "perfective",
form: conj.perfective.nonImperative,
formula: "Perfective Stem + Present Ending",
sentence: true,
explanation: "Used for hypothetical statements about the desire, necessity, purpose, or possibility of something happening. Or for saying something should or shouldn't happen. ('Should I ____?', 'so that'll I'll _____')"
},
{
label: "Imperfective Future",
aspect: "imperfective",
form: conj.imperfective.future,
advanced: true,
formula: "به - ba + Present",
sentence: true,
explanation: "Saying something will happen, repeatedly or as an ongoing action",
},
{
label: "Perfective Future",
aspect: "perfective",
form: conj.perfective.future,
advanced: true,
formula: "به - ba + Subjunctive",
sentence: true,
explanation: "Saying something will happen as a one-time event - May also used when there is some doubt",
},
{
label: "Continuous Past",
aspect: "imperfective",
form: conj.imperfective.past,
formula: "Imperfective Root + Past Ending",
sentence: true,
explanation: "Saying something was happening, or would happen ('I was ____ing', 'I would ____')",
past: true,
},
{
label: "Simple Past",
aspect: "perfective",
form: conj.perfective.past,
formula: "Perfective Root + Past Ending",
sentence: true,
explanation: "Saying something happened ('I ____ed')",
past: true,
},
{
label: "Modal (ability/possibility)",
subgroup: "modal",
sentence: true,
content: [
{
label: "Present Modal",
aspect: "imperfective",
form: conj.imperfective.modal.nonImperative,
sentence: true,
formula: "Imperfective Root + Non-Inflectinig Ey-Tail + Subjunctive کېدل - to become",
explanation: "saying that something is possible currently or in general ('I can ____')",
reorderWithNegative: true,
},
{
label: "Subjunctive Modal",
aspect: "perfective",
form: conj.perfective.modal.nonImperative,
advanced: true,
sentence: true,
formula: "Perfective Root + Non-Inflectinig Ey-Tail + Subjunctive کېدل - to become",
explanation: "talking about the possibility of something in a subjunctive way ('so that I can ____')",
reorderWithNegative: true,
},
{
label: "Imperfective Future Modal",
aspect: "imperfective",
form: conj.imperfective.modal.future,
advanced: true,
sentence: true,
formula: "به - ba + Present Modal",
explanation: "saying that something will be possible in general or in an ongoing sense in the future ('I'll be able to ____')",
reorderWithNegative: true,
},
{
label: "Perfective Future Modal",
aspect: "perfective",
form: conj.perfective.modal.future,
advanced: true,
sentence: true,
formula: "به - ba + Subjunctive Modal",
explanation: "saying that something will be possible at a certain point in the future ('I'll be able to ____')",
reorderWithNegative: true,
},
{
label: "Continous Past Modal",
aspect: "imperfective",
form: conj.imperfective.modal.past,
advanced: true,
past: true,
sentence: true,
formula: "Imperfective Root + Non-Inflectinig Ey-Tail + Simple Past کېدل - to become",
explanation: "saying that something was possible in general, in an ongoing sense ('I was able to ____', ie. 'I could do ____ any time')",
reorderWithNegative: true,
},
{
label: "Simple Past Modal",
aspect: "perfective",
form: conj.perfective.modal.past,
formula: "Perfective Root + Non-Inflectinig Ey-Tail + Simple Past کېدل - to become",
explanation: "saying that something was possible at a certain point in time ('I was able to ____, at one particular point in time')",
past: true,
sentence: true,
advanced: true,
reorderWithNegative: true,
},
{
label: "Imperfective hypothetical/wildcard Past Modal",
aspect: "imperfective",
form: conj.imperfective.modal.hypotheticalPast,
formula: "Imperfective Root + Non-Inflectinig Ey-Tail + ش - sh + Non-Inflectinig Ey-Tail",
explanation: "saying that something was possible in general, in an ongoing sense ('I was able to ____', ie. 'I could do ____ any time'). This 'wildcard' form can be used either to talk about hypothetical things, or to avoid worrying about verb agreement",
past: true,
sentence: true,
advanced: true,
reorderWithNegative: true,
},
{
label: "Perfective hypothetical/wildcard Past Modal",
aspect: "perfective",
form: conj.perfective.modal.hypotheticalPast,
formula: "Perfective Root + Non-Inflectinig Ey-Tail + ش - sh + Non-Inflectinig Ey-Tail",
explanation: "saying that something was possible at a certain point in time ('I was able to ____, at one particular point in time'). This 'wildcard' form can be used either to talk about hypothetical things, or to avoid worrying about verb agreement",
past: true,
sentence: true,
advanced: true,
reorderWithNegative: true,
},
],
},
...conj.imperfective.imperative ?
[{
label: "Imperfective Imperative",
aspect: "imperfective",
form: conj.imperfective.imperative,
formula: "Imperfective Stem + Imperative Ending",
explanation: "Commanding someone/people to do something repeatedly, or in general",
} as T.DisplayForm] : [],
...conj.perfective.imperative ?
[{
label: "Perfective Imperative",
aspect: "perfective",
form: conj.perfective.imperative,
formula: "Perfective Stem + Imperative Ending",
explanation: "Commanding someone/people to do something one time",
} as T.DisplayForm] : [],
{
label: "Perfect",
subgroup: "perfect",
sentence: true,
content: [
{
label: "Half Perfect",
form: conj.perfect.halfPerfect,
past: true,
sentence: true,
formula: "Past participle inflected",
secondPronounNeeded: true,
explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect.",
},
{
label: "Past Perfect",
form: conj.perfect.past,
past: true,
sentence: true,
formula: "Past participle inflected + Past Equative",
explanation: "Talking about events that had happened in the past, or had affected a past situation ('I had ____ed')",
reorderWithNegative: true,
},
{
label: "Present Perfect",
form: conj.perfect.present,
past: true,
sentence: true,
formula: "Past participle inflected + Present Equative",
explanation: "Talking about that something happened in the past and it affects the present ('I have _____ed')",
reorderWithNegative: true,
},
{
label: "Subjunctive/Habitual Perfect",
form: conj.perfect.subjunctive,
past: true,
sentence: true,
formula: "Past participle inflected + Subjunctive/Habitual Equative",
explanation: "Talking about something that will have happened habitually, or expressing hope, desire, or judgement about an action having happened",
reorderWithNegative: true,
},
{
label: "Future/Presumptive Perfect",
form: conj.perfect.future,
advanced: true,
past: true,
sentence: true,
formula: "به - ba + Past participle Inflected + Future Equative",
explanation: "Talking about something that will have happened in the future, or guessing that the event will have occured presently ('I will have ____ed')",
reorderWithNegative: true,
},
{
label: "Affirmational Perfect",
form: conj.perfect.affirmational,
advanced: true,
past: true,
sentence: true,
explanation: "Affirming that an event will have taken place ('I will have ____ed')",
formula: "به - ba + Past Participle Inflected + Past Equative",
reorderWithNegative: true,
},
{
label: "Conterfactual/Past Subjunctive Perfect",
form: conj.perfect.pastSubjunctiveHypothetical,
advanced: true,
past: true,
sentence: true,
secondPronounNeeded: true,
explanation: "Talking about an event that would have hypothetically taken place (but didn't), or that should have taken place but didn't",
formula: "به - ba + Past Participle Inflected + Past Subjunctive / Hypothetical Equative",
reorderWithNegative: true,
},
],
},
{
label: "Hypothetical/Wish",
advanced: true,
form: conj.hypothetical,
formula: "Imperfective Root + Non-Inflecting Ey-Tail",
explanation: "Talking about a hypothetical, unreal situation, or something that is wished for ('If I ____')",
past: true,
},
{
label: "Participle",
subgroup: "participle",
advanced: true,
content: [
{
label: "Present Participle",
form: conj.participle.present,
formula: "Short form of Ininitive Root + ونکی - oonkey",
explanation: "Making a verb into a noun or adjective, talking about a person or thing that does or experiences something. Also used to say something is about to happen. ('____ing', '____er')",
},
{
label: "Past Participle",
form: conj.participle.past,
past: true,
formula: "Infinitive Root or Special Form + Inflecting Ey-Tail",
explanation: "Making a verb into a noun or adjective, talking about how a person or thing did or experienced something. ('____ed')",
},
],
},
...conj.passive ?
[{
label: "Passive",
subgroup: "passive",
advanced: true,
sentence: true,
content: [
{
label: "Passive Present",
aspect: "imperfective",
form: conj.passive.imperfective.nonImperative,
sentence: true,
passive: true,
formula: "Long Imperfective Root + Present کېدل - to become",
explanation: "Saying that something is being done or is done in general, without mentioning the subject/agent. ('I am being ____en')",
},
{
label: "Passive Subjunctive",
aspect: "perfective",
form: conj.passive.perfective.nonImperative,
sentence: true,
passive: true,
formula: "Long Perfective Root + Subjunctive کېدل - to become",
explanation: "Saying that something should be done, or giving a purpose for something being done etc., without mentioning the subject/agent. ('Should I be ____en?', 'So that I'll be ____en')"
},
{
label: "Passive Imperfective Future",
aspect: "imperfective",
form: conj.passive.imperfective.future,
sentence: true,
passive: true,
formula: "به - ba + Passive Present",
explanation: "Saying something will be done as a one-time event, without mentioning the subject/agent.",
},
{
label: "Passive Perfective Future",
aspect: "perfective",
form: conj.passive.perfective.future,
sentence: true,
passive: true,
formula: "به - ba + Passive Subjunctive",
explanation: "Saying something will be done in an ongoing or repeated sense, without mentioning the subject/agent."
},
{
label: "Passive Continuous Past",
aspect: "imperfective",
form: conj.passive.imperfective.past,
past: true,
sentence: true,
passive: true,
formula: "Long Imperfective Root + Continuous Past کېدل - to become",
explanation: "Saying that something was being done, or would be done, without mentioning the subject/agent. ('I was being ____en', 'I would be ____en')",
},
{
label: "Passive Simple Past",
aspect: "perfective",
form: conj.passive.perfective.past,
past: true,
sentence: true,
passive: true,
formula: "Long Perfective Root + Simple Past کېدل - to become",
explanation: "Saying that was done as a one-time event, without mentioning the subject/agent. ('I was ____en')"
},
{
label: "Passive Perfect",
subgroup: "passive perfect",
passive: true,
sentence: true,
content: [
{
label: "Passive Half Perfect",
form: conj.passive.perfect.halfPerfect,
past: true,
sentence: true,
passive: true,
formula: "Infinitive + کېدل (to be) past participle inflected",
explanation: "The base of all perfect forms. Used on it's own as a sort of weaker form of the present perfect. (Passive voice)",
},
{
label: "Passive Past Perfect",
form: conj.passive.perfect.past,
past: true,
sentence: true,
passive: true,
formula: "Infinitive + کېدل (to be) past participle inflected + Past Equative",
explanation: "Talking about events that had happened in the past, or had affected a past situation (Passive voice) ('I had been ____ed')",
},
{
label: "Passive Present Perfect",
form: conj.passive.perfect.present,
past: true,
sentence: true,
passive: true,
formula: "Infinitive + کېدل (to be) past participle inflected + Present Equative",
explanation: "Talking about that something happened in the past and it affects the present (Passive voice) ('I have been _____ed')",
},
{
label: "Passive Subjunctive/Habitual Perfect",
form: conj.passive.perfect.subjunctive,
past: true,
sentence: true,
passive: true,
formula: "Infinitive + کېدل (to be) past participle inflected + Subjunctive/Habitual Equative",
},
{
label: "Passive Future/Presumptive Perfect",
form: conj.passive.perfect.future,
advanced: true,
past: true,
sentence: true,
passive: true,
formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Future Equative",
explanation: "Talking about something that will have happened in the future, or guessing that the event will have occured presently (Passive voice) ('I will have been ____ed')",
},
{
label: "Passive Affirmational Perfect",
form: conj.passive.perfect.affirmational,
advanced: true,
past: true,
sentence: true,
passive: true,
explanation: "Affirming that an event will have taken place (Passive voice) ('I will have been ____ed')",
formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Equative"
},
{
label: "Passive Past Subjunctive / Hypothetical Perfect",
form: conj.passive.perfect.pastSubjunctiveHypothetical,
advanced: true,
past: true,
sentence: true,
passive: true,
explanation: "Talking about an event that would have hypothetically taken place, or that should have taken place (Passive voice) ('I would have been ____ed')",
formula: "به - ba + Infinitive + کېدل (to be) past participle inflected + Past Subjunctive / Hypothetical Equative"
},
],
},
]
} as T.DisplayFormSubgroup]
: [],
];
const initialFilter = filterFunc
? formFilter(forms, filterFunc)
: forms;
return mode === "chart"
? initialFilter
: formMap(
formFilter(initialFilter, (f) => f.sentence),
makeSentence,
conj.info,
subject,
object,
negative,
);
}

View File

@ -0,0 +1,40 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
convertAfToPkSpelling,
convertPkToAfSpelling,
} from "./convert-spelling";
const pairs = [
["سړی", "سړے"],
["موسیٰ", "موسیٰ"],
["فرمايي", "فرمائی"],
["چای", "چائ"],
["زوی", "زوئ"],
["ښويېدل", "ښوئېدل"],
["ويي", "وئی"],
["دوستي", "دوستی"],
["هييت", "هييت"],
["ښيي", "ښيی"],
["ستاينه", "ستائينه"],
["فرمايل", "فرمائيل"],
["ضمائر", "ضمائر"],
];
pairs.forEach((pair) => {
test(`${pair[0]} should be converted to ${pair[1]} in Pakistani spelling`, () => {
const converted = convertAfToPkSpelling(pair[0]);
expect(converted).toBe(pair[1]);
});
test(`${pair[1]} should be converted to ${pair[0]} in Afghan spelling`, () => {
const converted = convertPkToAfSpelling(pair[1]);
expect(converted).toBe(pair[0]);
});
});

View File

@ -0,0 +1,33 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
export function convertAfToPkSpelling(input: string): string {
const converted = input
.replace(/ای(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ائ")
.replace(/وی(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وئ")
.replace(/ی(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ے")
.replace(/ي(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ی")
.replace(/(?:ای|اي)(?=ي|ی|ې)/g, "ائ")
.replace(/(?:وی|وي)(?=ي|ی|ې)/g, "وئ")
.replace(/(?:ای|اي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ائي")
.replace(/(?:وی|وي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وئي");
return converted;
}
export function convertPkToAfSpelling(input: string): string {
const converted = input
.replace(/ی(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ي")
.replace(/ے(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ی")
.replace(/ائ(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ای")
.replace(/وئ(?![\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وی")
.replace(/(?:ائی|ائي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "اي")
.replace(/(?:وئی|وئي)(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "وي")
.replace(/ائ(?=ي|ی|ې)/g, "اي")
.replace(/وئ(?=ي|ی|ې)/g, "وي");
return converted;
}

View File

@ -0,0 +1,19 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { TextOptions } from "../types";
const defualtTextOptions: TextOptions = {
pTextSize: "normal",
spelling: "Afghan",
diacritics: false,
dialect: "standard",
phonetics: "lingdocs",
}
export default defualtTextOptions;

View File

@ -0,0 +1,407 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import * as T from "../types";
// TODO: Automatice syncing of aux verbs from dictionary
export const dynamicAuxVerbs: Array<
{
entry: T.DictionaryEntry,
complement?: T.DictionaryEntry,
}
> = [
{
entry: {"i":10058,"ts":1527812752,"p":"کول","f":"kawul","e":"to do (an action or activity)","c":"v. trans. irreg. dyn. aux.","ssp":"وکړ","ssf":"óokR","prp":"وکړل","prf":"óokRul","pprtp":"کړی","pprtf":"kúRey","diacExcept":true},
},
{
entry: {"i":10122,"ts":1527812754,"p":"کېدل","f":"kedul","e":"to happen, occur","c":"v. intrans. irreg. aux. dyn.","ssp":"وش","ssf":"óosh","prp":"وشول","prf":"óoshwul","pprtp":"شوی","pprtf":"shúwey","diacExcept":true},
},
{
entry: {
ts:1527813914,
p:"ورکول",
f:"wărkawul",
e:"to give (to him, her, them, others)",
c: "v. trans.",
i:12350,
},
},
{
entry: {
ts: 1527812157,
p: "تېرول",
f: "terawul",
e: "to pass (time), to take across, to pass, endure (difficulties)",
c: "v. stat. comp. trans.",
l: 1527813139,
i: 3459,
},
complement: {"i":3774,"ts":1527813139,"p":"تېر","f":"ter","e":"last, past, previous, passed, gone over","c":"adj."},
},
{
entry: {
ts: 1527815399,
p: "وهل",
f: "wahul",
e: "to hit",
c: "v. trans.",
i: 12183,
tppp: "واهه",
tppf: "waahu",
},
},
{
entry: {
ts: 1527817026,
p: "کښل",
f: "kxul",
e: "to drag, pull, take out, draw, get",
c: "v. trans.",
i: 8862,
},
},
{
entry: {
ts: 1527814084,
p: "لګول",
f: "lagawul",
e: "to touch, join, use, take, place",
c: "v. trans.",
i: 9794,
},
},
{
entry: {
ts: 1527814084,
p: "لګول",
f: "lagawul",
e: "to touch, join, use, take, place",
c: "v. trans.",
i: 9794,
}
},
{
entry: {
ts: 1527817013,
p: "ویل",
f: "wayl",
e: "to say, to tell",
c: "v. trans. indir.",
i: 12229,
},
},
{
entry: {
ts: 1527815396,
p: "وایل",
f: "waayul",
e: "to say, to tell",
c: "v. trans. indir.",
i: 11929,
},
},
{
entry: {
ts: 1527812447,
p: "اخستل",
f: "akhustul",
e: "to take, buy, purchase, receive; to shave, cut with scissors",
c: "v. trans.",
i: 251,
psp: "اخل",
psf: "akhl",
},
},
{
entry: {
ts: 1527817298,
p: "اخیستل",
f: "akheestul",
e: "to take, buy, purchase, receive; to shave, cut with scissors",
c: "v. trans.",
i: 266,
},
},
{
entry: {
ts: 1527814617,
p: "نیول",
f: "neewul",
e: "to catch, grab, take, arrest; bear (fruit)",
c: "v. trans. irreg.",
i: 11880,
psp: "نیس",
psf: "nees",
},
},
{
entry: {
ts: 1527811872,
p: "اچول",
f: "achawul",
e: "to pour, drop, throw, put on",
c: "v. trans.",
i: 194,
},
},
{
entry: {
ts: 1527812790,
p: "خوړل",
f: "khoRul",
e: "to eat, to bite",
c: "v. trans.",
i: 4769,
psp: "خور",
psf: "khor",
tppp: "خوړ",
tppf: "khoR",
},
},
{
entry: {
ts: 1527811868,
p: "غښتل",
f: "ghuxtul",
e: "to twist, curl, roll up, wrap up",
c: "v. trans.",
i: 7958,
},
},
{
entry: {
ts: 1527816127,
p: "اړول",
f: "aRawul",
e: "to turn over, flip over; convert, change; to move over to, establish oneself in a new spot; divert, turn away, hijack; oblige, force",
c: "v. trans.",
i: 389,
},
},
{
entry: {
ts: 1527812868,
p: "لرل",
f: "larul",
e: "to have, possess",
c: "v. trans.",
i: 9707,
tppp: "لاره",
tppf: "laaru",
},
},
{
entry: {
ts: 1527813572,
p: "رسول",
f: "rasawul",
e: "to deliver, to make arrive, provide, send, supply, bring to,",
c: "v. trans.",
i: 5897,
},
},
{
entry: {
ts: 1581619940636,
p: "باسل",
f: "baasul",
e: "to take out, extract, pull out, tear out",
c: "v. trans.",
i: 1115,
},
},
{
entry: {
ts: 1527816146,
p: "ایستل",
f: "eestul",
e: "to throw out, discard, chuck, toss; to extract, to take out",
c: "v. trans.",
i: 1025,
psp: "باس",
psf: "baas",
},
},
{
entry: {
ts: 1527818123,
p: "څنډل",
f: "tsanDúl",
e: "to shake out, shake off, brush aside",
c: "v. trans.",
i: 4975,
tppp: "څانډ",
tppf: "tsaanD",
},
},
{
entry: {
ts: 1527814862,
p: "وژل",
f: "wajzul",
e: "to kill, slaughter",
c: "v. trans. irreg.",
i: 12071,
psp: "وژن",
psf: "wajzn",
tppp: "واژه",
tppf: "waajzu",
},
},
{
entry: {
ts: 1527813019,
p: "ګرول",
f: "grawul",
e: "to scratch, scrape",
c: "v. trans.",
i: 9370,
},
},
{
entry: {
ts: 1527818260,
p: "بادول",
f: "baadawúl",
e: "to winnow, toss, throw to the wind, squander",
c: "v. stat. comp. trans.",
l: 1527816345,
i: 1088,
},
complement: {
ts: 1527816345,
p: "باد",
f: "baad",
e: "wind, air; swelling, rheumitism",
c: "n. m.",
i: 1076,
},
},
{
entry: {
ts: 1527815343,
p: "تېرېدل",
f: "teredul",
e: "to pass, go across, go by",
c: "v. stat. comp. intrans.",
l: 1527813139,
i: 3461,
},
complement: {
ts: 1527813139,
p: "تېر",
f: "ter",
e: "last, past, previous, passed, gone over",
c: "adj.",
i: 3449,
},
},
{
entry: {
ts: 1571859113828,
p: "پخول",
f: "pukhawul",
e: "to cook, prepare, to cause to ripen",
c: "v. stat. comp. trans.",
l: 1574867531681,
i: 2011,
},
complement: {
ts: 1574867531681,
p: "پوخ",
f: "pokh",
e: "mature, ripe, ready, cooked, able, skillful, experienced, tried, tested, true",
c: "adj. irreg.",
i: 2321,
infap: "پاخه",
infaf: "paakhu",
infbp: "پخ",
infbf: "pakh",
},
},
{
entry: {
ts: 1527817706,
p: "ټکول",
f: "Takawul",
e: "to knock, tap",
c: "v. trans.",
i: 3568,
},
},
{
entry: {
ts: 1527812869,
p: "لټول",
f: "luTawul",
e: "to search, seek",
c: "v. trans.",
i: 9686,
},
},
{
entry: {
ts: 1574784362578,
p: "ډنګول",
f: "Dangawul",
e: "to make sound, to make ring out, to meat to make a sound (like a symbal, pan, etc.)",
c: "v. trans.",
i: 5653,
},
},
{
entry: {
ts: 1527811289,
p: "کېنول",
f: "kenawul",
e: "to seat, to make or have someone sit down",
c: "v. trans.",
i: 9240,
noOo: true,
},
},
{
entry: {
ts: 1527812873,
p: "لوستل",
f: "lwustul",
e: "to read, study",
c: "v. trans. irreg.",
i: 10163,
psp: "لول",
psf: "lwul",
},
},
{
entry: {
i:4362,
ts:1527814586,
p:"چلول",
f:"chalawul",
e:"to drive, operate, handle, put forward, circulate",
c:"v. trans.",
},
},
{
entry: {"i":6731,"ts":1527815240,"p":"ساتل","f":"saatul","e":"to keep, protect, watch over; to hold","c":"v. trans."},
},
{
entry: {"i":11782,"ts":1527814053,"p":"موندل","f":"moondúl","e":"to find, acquire, discover, get","c":"v. trans. irreg.","psp":"موم","psf":"moom"},
},
{
entry: {"i":4212,"ts":1527812712,"p":"جوړول","f":"joRawul","e":"to make, form, build, mend","l":1527812711,"c":"v. stat. comp. trans."},
complement: {"i":4206,"ts":1527812711,"p":"جوړ","f":"joR","e":"well, healthy, whole, made","c":"adj."},
},
{
entry: {"i":13869,"ts":1527816865,"p":"وړل","f":"wuRúl, oRúl, wRul","e":"to take, carry, bear, move (inanimate objects); to win, earn (subjunctive یوسي - yósee or ویسي - wéesee, simple past یو یې وړلو - yo ye wRulo)","separationAtP":2,"separationAtF":2,"c":"v. trans. irreg.","ssp":"یوس","ssf":"yos","prp":"یوړل","prf":"yóRul","noOo":true,"diacExcept":true},
},
{
entry: {"i":6503,"ts":1527815214,"p":"راوړل","f":"raawRúl","e":"to bring, deliver (inanimate objects)","separationAtP":2,"separationAtF":3,"c":"v. trans. irreg.","noOo":true},
},
];

11
src/lib/fields.ts Normal file
View File

@ -0,0 +1,11 @@
import * as T from "../types";
export const dictionaryEntryTextFields: T.DictionaryEntryTextField[] = [
"p", "f", "e", "c", "infap", "infaf", "infbp", "infbf", "app", "apf", "ppp", "ppf", "psp", "psf", "ssp", "ssf", "prp", "prf", "pprtp", "pprtf", "tppp", "tppf",
];
export const dictionaryEntryBooleanFields: T.DictionaryEntryBooleanField[] = [
"noInf", "shortIntrans", "noOo", "sepOo", "diacExcept",
]
export const dictionaryEntryNumberFields: T.DictionaryEntryNumberField[] = [
"ts", "i", "l", "separationAtP", "separationAtF",
];

617
src/lib/grammar-units.ts Normal file
View File

@ -0,0 +1,617 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { kawulStat } from "./irregular-conjugations";
import * as T from "../types";
export const presentEndings: T.VerbBlock = [
[
[{
p: "م",
f: "um"
}],
[{
p: "و",
f: "oo"
}],
],
[
[{
p: "م",
f: "um"
}],
[{
p: "و",
f: "oo"
}],
],
[
[{
p: "ې",
f: "e"
}],
[{
p: "ئ",
f: "eyy"
}],
],
[
[{
p: "ې",
f: "e"
}],
[{
p: "ئ",
f: "eyy"
}],
],
[
[{
p: "ي",
f: "ee"
}],
[{
p: "ي",
f: "ee"
}],
],
[
[{
p: "ي",
f: "ee"
}],
[{
p: "ي",
f: "ee"
}],
],
];
export const pastEndings: T.VerbBlock = [
[
[{
p: "م",
f: "um"
}],
[{
p: "و",
f: "oo"
}]
],
[
[{
p: "م",
f: "um"
}],
[{
p: "و",
f: "oo"
}]
],
[
[{
p: "ې",
f: "e"
}],
[{
p: "ئ",
f: "eyy"
}]
],
[
[{
p: "ې",
f: "e"
}],
[{
p: "ئ",
f: "eyy"
}]
],
[
[{
p: "ه",
f: "u"
},
{
p: "و",
f: "o"
},
],
[{
p: "ل",
f: "ul"
}],
],
[
[{
p: "ه",
f: "a"
}],
[{
p: "ې",
f: "e"
}]
],
];
// TODO: MAKE THIS VARIABLE FOR DIALECTS!
export const aayTail: T.PsString = { p: "ی", f: "ey" };
export const subjPastEquative: T.PsString = {
p: "و" + aayTail.p,
f: "w" + aayTail.f,
};
export const equativeEndings: {
past: T.LengthOptions<T.VerbBlock>,
present: T.VerbBlock,
subjunctive: T.VerbBlock,
hypothetical: T.VerbBlock,
} = {
past: {
short: [
[
[{
p: "وم",
f: "wum"
}],
[{
p: "وو",
f: "woo"
}]
],
[
[{
p: "وم",
f: "wum"
}],
[{
p: "وو",
f: "woo"
}]
],
[
[{
p: "وې",
f: "we"
}],
[{
p: "وئ",
f: "weyy"
}]
],
[
[{
p: "وې",
f: "we"
}],
[{
p: "وئ",
f: "weyy"
}]
],
[
[{
p: "و",
f: "wo"
}],
[{
p: "ول",
f: "wul",
}, {
p: "وو",
f: "woo"
}]
],
[
[{
p: "وه",
f: "wa"
}],
[{
p: "وې",
f: "we"
}]
],
],
long: [
[
[{
p: "ولم",
f: "wulum"
}],
[{
p: "ولو",
f: "wuloo"
}]
],
[
[{
p: "ولم",
f: "wulum"
}],
[{
p: "ولو",
f: "wuloo"
}]
],
[
[{
p: "ولې",
f: "wule"
}],
[{
p: "ولئ",
f: "wuleyy"
}]
],
[
[{
p: "ولې",
f: "wule"
}],
[{
p: "ولئ",
f: "wuleyy"
}]
],
[
[{
p: "ولو",
f: "wulo"
}],
[{
p: "ول",
f: "wul",
},
{
p: "ولو",
f: "wuloo"
}]
],
[
[{
p: "وله",
f: "wula"
}],
[{
p: "ولې",
f: "wule"
}]
],
],
},
present: [
[
[{
p: "یم",
f: "yum"
}],
[{
p: "یو",
f: "yoo"
}]
],
[
[{
p: "یم",
f: "yum"
}],
[{
p: "یو",
f: "yoo"
}]
],
[
[{
p: "یې",
f: "ye"
}],
[{
p: "یئ",
f: "yeyy"
}]
],
[
[{
p: "یې",
f: "ye"
}],
[{
p: "یئ",
f: "yeyy"
}]
],
[
[{
p: "دی",
f: "dey"
}],
[{
p: "دي",
f: "dee"
}]
],
[
[{
p: "ده",
f: "da"
}],
[{
p: "دي",
f: "dee"
}]
],
],
subjunctive: [
[
[{
p: "یم",
f: "yum"
}],
[{
p: "یو",
f: "yoo"
}]
],
[
[{
p: "یم",
f: "yum"
}],
[{
p: "یو",
f: "yoo"
}]
],
[
[{
p: "یې",
f: "ye"
}],
[{
p: "یئ",
f: "yeyy"
}]
],
[
[{
p: "یې",
f: "ye"
}],
[{
p: "یئ",
f: "yeyy"
}]
],
[
[{
p: "وي",
f: "wee"
}],
[{
p: "وي",
f: "wee"
}]
],
[
[{
p: "وي",
f: "wee"
}],
[{
p: "وي",
f: "wee"
}]
],
],
hypothetical: [
[[subjPastEquative], [subjPastEquative]],
[[subjPastEquative], [subjPastEquative]],
[[subjPastEquative], [subjPastEquative]],
[[subjPastEquative], [subjPastEquative]],
[[subjPastEquative], [subjPastEquative]],
[[subjPastEquative], [subjPastEquative]],
],
};
export const emptyVerbBlock: T.VerbBlock = [
[[{p: "", f: ""}], [{p: "", f: ""}]],
[[{p: "", f: ""}], [{p: "", f: ""}]],
[[{p: "", f: ""}], [{p: "", f: ""}]],
[[{p: "", f: ""}], [{p: "", f: ""}]],
[[{p: "", f: ""}], [{p: "", f: ""}]],
[[{p: "", f: ""}], [{p: "", f: ""}]],
];
export const imperativeEndings: T.ImperativeBlock = [
// masc 2nd pers
[
[{ p: "ه", f: "a" }], // singular
[{ p: "ئ", f: "eyy" }], // plural
],
// fem 2nds pers
[
[{ p: "ه", f: "a" }], // singular
[{ p: "ئ", f: "eyy" }], // plural
],
];
export const ooPrefix: T.PsString = { p: "و", f: "oo" };
export const baParticle: T.PsString = { p: "به", f: "ba" };
export const presentParticipleSuffix: T.PsString = { p: "ونکی", f: "oonkey" };
const adjEndingsBlock = [
// singular plural
[
[{
p: `ی`,
f: `ey`
}],
[{
p: `ي`,
f: `ee`
}]
], // male
[
[{
p: `ې`,
f: `e`
}],
[{
p: `ې`,
f: `e`
}]
], // female
];
export const adjectiveEndings = [...adjEndingsBlock, ...adjEndingsBlock, ...adjEndingsBlock] as T.VerbBlock;
const ksPerf = kawulStat.info.root.perfective as T.LengthOptions<T.PsString>;
export const passiveStativeBridge = [
// TODO: SHORT AND LONG HERE??
{
short: ksPerf.long,
long: ksPerf.long,
},
{
short: {
p: ksPerf.short.p + aayTail.p,
f: ksPerf.short.f + aayTail.f,
},
long: {
p: ksPerf.long.p + aayTail.p,
f: ksPerf.long.f + aayTail.f,
},
},
];
const basePlainPronouns = [
[[{ p: "زه", f: "zu" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]],
[[{ p: "زه", f: "zu" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]],
[[{ p: "ته", f: "tu" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]],
[[{ p: "ته", f: "tu" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]],
];
const baseInflectedPronouns = [
[[{ p: "ما", f: "maa" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]],
[[{ p: "ما", f: "maa" }], [{ p: "مونږ", f: "moonG" }, { p: "موږ", f: "mooG" }]],
[[{ p: "تا", f: "taa" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]],
[[{ p: "تا", f: "taa" }], [{ p: "تاسو", f: "táaso" }, { p: "تاسې", f: "táase" }]],
];
const plainPronounsFar = [
...basePlainPronouns,
[[{ p: "هغه", f: "haghá" }], [{ p: "هغوي", f: "haghwée" }]],
[[{ p: "هغه", f: "haghá" }], [{ p: "هغوي", f: "haghwée" }]],
] as T.VerbBlock;
const plainPronounsNear = [
...basePlainPronouns,
[[{ p: "دی", f: "dey" }], [{ p: "دوي", f: "dwee" }]],
[[{ p: "دا", f: "daa" }], [{ p: "دوي", f: "dwee" }]],
] as T.VerbBlock;
const inflectedPronounsFar = [
...baseInflectedPronouns,
[[{ p: "هغهٔ", f: "haghú" }], [{ p: "هغوي", f: "haghwée" }]],
[[{ p: "هغې", f: "haghé" }], [{ p: "هغوي", f: "haghwée" }]],
] as T.VerbBlock;
const inflectedPronounsNear = [
...baseInflectedPronouns,
[[{ p: "دهٔ", f: "du" }], [{ p: "دوي", f: "dwee" }]],
[[{ p: "دې", f: "de" }], [{ p: "دوي", f: "dwee" }]],
] as T.VerbBlock;
const miniPronouns: T.VerbBlock = [
[[{ p: "مې", f: "me" }], [{ p: "مو", f: "mU" }]],
[[{ p: "مې", f: "me" }], [{ p: "مو", f: "mU" }]],
[[{ p: "دې", f: "de" }], [{ p: "مو", f: "mU" }]],
[[{ p: "دې", f: "de" }], [{ p: "مو", f: "mU" }]],
[[{ p: "یې", f: "ye" }], [{ p: "یې", f: "ye" }]],
[[{ p: "یې", f: "ye" }], [{ p: "یې", f: "ye" }]],
];
export const pronouns: {
far: {
inflected: T.VerbBlock;
plain: T.VerbBlock;
};
near: {
plain: T.VerbBlock;
inflected: T.VerbBlock;
};
mini: T.VerbBlock;
} = {
far: {
plain: plainPronounsFar,
inflected: inflectedPronounsFar,
},
near: {
plain: plainPronounsNear,
inflected: inflectedPronounsNear,
},
mini: miniPronouns,
};
export const persons = [
{
label: { subject: "I (m.)", object: "me (m.)" },
person: 0,
},
{
label: { subject: "I (f.)", object: "me (f.)" },
person: 1,
},
{
label: { subject: "You (m.)", object: "you (m.)" },
person: 2,
},
{
label: { subject: "You (f.)", object: "you (f.)" },
person: 3,
},
{
label: { subject: "He/it (m.)", object: "him/it (m.)" },
person: 4,
},
{
label: { subject: "She/it (f.)", object: "her/it (f.)" },
person: 5,
},
{
label: { subject: "We (m. pl.)", object: "us (m. pl.)" },
person: 6,
},
{
label: { subject: "We (f. pl.)", object: "us (f. pl.)" },
person: 7,
},
{
label: { subject: "You (m. pl.)", object: "you (m. pl.)" },
person: 8,
},
{
label: { subject: "You (f. pl.)", object: "you (f. pl.)" },
person: 9,
},
{
label: { subject: "They (m. pl.)", object: "them (m. pl.)" },
person: 10,
},
{
label: { subject: "They (f. pl.)", object: "them (f. pl.)" },
person: 11,
},
];

File diff suppressed because it is too large Load Diff

202
src/lib/misc-helpers.ts Normal file
View File

@ -0,0 +1,202 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import * as T from "../types";
// just for type safety
export function noPersInfs(s: T.OptionalPersonInflections<T.LengthOptions<T.PsString>>): T.LengthOptions<T.PsString>;
export function noPersInfs(s: T.FullForm<T.PsString>): T.SingleOrLengthOpts<T.PsString>;
export function noPersInfs(s:
T.OptionalPersonInflections<T.LengthOptions<T.PsString>> | T.FullForm<T.PsString>
): T.SingleOrLengthOpts<T.PsString> | T.LengthOptions<T.PsString> {
if ("mascSing" in s) {
// this path shouldn't be used, just for type safety
return s.mascSing;
}
return s;
}
export function pickPersInf<T>(s: T.OptionalPersonInflections<T>, persInf: T.PersonInflectionsField): T {
if ("mascSing" in s) {
return s[persInf];
}
return s;
}
// export function pickPersInf(
// s: T.OptionalPersonInflections<T.LengthOptions<T.PsString>>,
// persInf: T.PersonInflectionsField,
// ): T.LengthOptions<T.PsString>;
// export function pickPersInf(
// s: T.FullForm<T.PsString>,
// persInf: T.PersonInflectionsField,
// ): T.SingleOrLengthOpts<T.PsString>;
// export function pickPersInf(
// s: T.FullForm<T.VerbBlock>,
// persInf: T.PersonInflectionsField,
// ): T.SingleOrLengthOpts<T.VerbBlock>;
// export function pickPersInf(
// s: T.SplitInfo,
// persInf: T.PersonInflectionsField,
// ): T.SingleOrLengthOpts<[T.PsString, T.PsString]>;
// export function pickPersInf(
// s: T.OptionalPersonInflections<T.LengthOptions<T.PsString>> | T.FullForm<T.PsString> | T.FullForm<T.VerbBlock> | T.SplitInfo,
// persInf: T.PersonInflectionsField,
// ): T.SingleOrLengthOpts<T.PsString> | T.LengthOptions<T.PsString> | T.SingleOrLengthOpts<T.VerbBlock> | T.SingleOrLengthOpts<[T.PsString, T.PsString]> {
// if ("mascSing" in s) {
// return s[persInf];
// }
// return s;
// }
export function hasPersInfs(info: T.NonComboVerbInfo): boolean {
return (
"mascSing" in info.root.perfective ||
"mascSing" in info.stem.perfective ||
"mascSing" in info.participle.present ||
"mascSing" in info.participle.past
);
}
export function chooseParticipleInflection(
pPartInfs: T.SingleOrLengthOpts<T.UnisexInflections> | T.SingleOrLengthOpts<T.PsString>,
person: T.Person,
): T.SingleOrLengthOpts<T.PsString> {
if ("long" in pPartInfs) {
return {
short: chooseParticipleInflection(pPartInfs.short, person) as T.PsString,
long: chooseParticipleInflection(pPartInfs.long, person) as T.PsString,
};
}
if ("masc" in pPartInfs) {
const gender = personGender(person);
const infNum = personIsPlural(person) ? 1 : 0;
return pPartInfs[gender][infNum][0];
}
return pPartInfs; // already just one thing
}
export function getPersonNumber(gender: "masc" | "fem", number: "singular" | "plural"): T.Person {
const base = gender === "masc" ? 4 : 5;
return base + (number === "singular" ? 0 : 6);
}
export function getPersonInflectionsKey(person: T.Person): T.PersonInflectionsField {
return `${personGender(person)}${personIsPlural(person) ? "Plur" : "Sing"}` as T.PersonInflectionsField;
}
export function spaceInForm(form: T.FullForm<T.PsString>): boolean {
if ("mascSing" in form) {
return spaceInForm(form.mascSing);
}
if ("long" in form) {
return spaceInForm(form.long);
}
return form.p.includes(" ");
}
export function getPersonFromVerbForm(form: T.SingleOrLengthOpts<T.VerbBlock>, person: T.Person): T.SentenceForm {
if ("long" in form) {
return {
long: getPersonFromVerbForm(form.long, person) as T.ArrayOneOrMore<T.PsString>,
short: getPersonFromVerbForm(form.short, person) as T.ArrayOneOrMore<T.PsString>,
...form.mini ? {
mini: getPersonFromVerbForm(form.mini, person) as T.ArrayOneOrMore<T.PsString>,
} : {},
};
}
const [row, col] = getBlockRowCol(person);
return form[row][col];
}
export function getBlockRowCol(person: T.Person): [0 | 1 | 2 | 3 | 4 | 5, 0 | 1] {
const plural = personIsPlural(person)
const row = (plural ? (person - 6) : person) as 0 | 1 | 2 | 3 | 4 | 5;
const col = plural ? 1 : 0;
return [row, col];
}
export function getAuxTransitivity(trans: T.Transitivity): "transitive" | "intransitive" {
return trans === "intransitive" ? "intransitive" : "transitive";
}
export function personGender(person: T.Person): "masc" | "fem" {
return person % 2 === 0 ? "masc" : "fem";
}
export function personIsPlural(person: T.Person): boolean {
return person > 5;
}
export function getEnglishPersonInfo(person: T.Person): string {
const p = [0,1,6,7].includes(person)
? "1st pers"
: [2,3,8,9].includes(person)
? "2nd pers"
: "3rd pers";
const a = personIsPlural(person) ? "plur" : "sing";
const g = personGender(person);
return `${p}. ${a}. ${g}.`;
}
export function randomNumber(minInclusive: number, maxExclusive: number): number {
return Math.floor(Math.random() * (maxExclusive - minInclusive) + minInclusive);
}
/**
* Sees if a possiblePerson (for subject/object) is possible, given the other person
*
* @param possiblePerson
* @param existingPerson
*/
export function personIsAllowed(possiblePerson: T.Person, existingPerson: T.Person): boolean {
const isFirstPerson = (p: T.Person) => [0, 1, 6, 7].includes(p);
const isSecondPerson = (p: T.Person) => [2, 3, 8, 9].includes(p);
// can't have both subject and object be 1st person
if (isFirstPerson(possiblePerson) && isFirstPerson(existingPerson)) {
return false;
}
// can't have both subject and object be 2nd person
if (isSecondPerson(possiblePerson) && isSecondPerson(existingPerson)) {
return false;
}
// otherwise it's ok
return true;
}
/**
* Picks a random person while assuring that the other person is not in conflict
*
* @param other
*/
export function randomPerson(other: T.Person): T.Person {
let newPerson: T.Person;
do {
newPerson = randomNumber(0, 12);
} while(!personIsAllowed(newPerson, other));
return newPerson;
}
export function incrementPerson(p: T.Person): T.Person {
return (p + 1) % 12;
}
export function isSentenceForm(f: any): boolean {
if ("long" in f) {
return isSentenceForm(f.long);
}
return Array.isArray(f) && "p" in f[0];
}
// not being used
// export function isImperativeBlock(f: any): boolean {
// function isPersonLine(g: any): boolean {
// return Array.isArray(g) && Array.isArray(g[0]) && "p" in g[0][0];
// }
// return Array.isArray(f) && f.length === 2 && isPersonLine(f[0]);
// }

View File

@ -0,0 +1,978 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
concatPsString,
firstPhonetics,
makePsString,
removeEndingL,
yulEndingInfinitive,
mapVerbBlock,
allMascFirstInflection,
addToForm,
unisexInfToObjectMatrix,
complementInflects,
concatInflections,
psStringEquals,
removeRetroflexR,
} from "./p-text-helpers";
import * as T from "../types";
import {
pastEndings
} from "./grammar-units";
test(`concatPsString should work`, () => {
const input = concatPsString(
{ p: "لیکل", f: "leekul" },
{ p: "ی", f: "ey" },
" ",
{ p: "دی", f: "dey" },
);
expect(input).toEqual({ p: "لیکلی دی", f: "leekuley dey" });
// test with length options added
const inputWLength = concatPsString(
{ p: "خفه", f: "khufa" },
" ",
{
short: { p: "کړو", f: "kRo" },
long: { p: "کړلو", f: "kRulo" },
},
);
expect(inputWLength).toEqual({
short: { p: "خفه کړو", f: "khufa kRo" },
long: { p: "خفه کړلو", f: "khufa kRulo" },
});
// even with minin
const inputWMini = concatPsString(
{ p: "خفه", f: "khufa" },
" ",
{
short: { p: "کړی", f: "kRey" },
long: { p: "کړلی", f: "kRuley" },
},
" ",
{
mini: { p: "کو", f: "ko" },
short: { p: "کړو", f: "kRo" },
long: { p: "کړلو", f: "kRulo" },
},
);
expect(inputWMini).toEqual({
mini: { p: "خفه کړی کو", f: "khufa kRey ko" },
short: { p: "خفه کړی کړو", f: "khufa kRey kRo" },
long: { p: "خفه کړلی کړلو", f: "khufa kRuley kRulo" },
});
// also with personInflections
const inputWPersInfs = concatPsString(
{
mascSing: { p: "پوخ", f: "pokh" },
mascPlur: { p: "پاخه", f: "paakhu" },
femSing: { p: "پخه", f: "pakha" },
femPlur: { p: "پخې", f: "pakhe" },
},
" ",
{
short: { p: "ک", f: "k" },
long: { p: "کړ", f: "kR" },
},
);
expect(inputWPersInfs).toEqual({
mascSing: {
short: { p: "پوخ ک", f: "pokh k" },
long: { p: "پوخ کړ", f: "pokh kR" },
},
mascPlur: {
short: { p: "پاخه ک", f: "paakhu k" },
long: { p: "پاخه کړ", f: "paakhu kR" },
},
femSing: {
short: { p: "پخه ک", f: "pakha k" },
long: { p: "پخه کړ", f: "pakha kR" },
},
femPlur: {
short: { p: "پخې ک", f: "pakhe k" },
long: { p: "پخې کړ", f: "pakhe kR" },
},
});
});
test(`addToForm should work`, () => {
const block: T.VerbBlock = [
[[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]],
[[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]],
[[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]],
[[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]],
[[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]],
[[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]],
];
const result = addToForm([{ p: "خفه", f: "khufa" }, " "], block);
expect(result).toEqual([
[[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]],
[[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]],
[[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]],
[[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]],
[[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]],
[[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]],
]);
const result2 = addToForm([{
short: { p: "کړی", f: "kRey" },
long: { p: "کړلی", f: "kRuley" },
}, " "], block);
expect(result2).toEqual({
short: [
[[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]],
[[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]],
[[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]],
[[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]],
[[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]],
[[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]],
],
long: [
[[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]],
[[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]],
[[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]],
[[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]],
[[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]],
[[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]],
],
});
const result3 = addToForm([
{
masc: [
[{ p: "زوړ", f: "zoR" }],
[{ p: "زاړه", f: "zaaRu" }],
[{ p: "زړو", f: "zaRo" }],
],
fem: [
[{ p: "زړه", f: "zaRa" }],
[{ p: "زړې", f: "zaRe" }],
[{ p: "زړو", f: "zaRo" }],
],
},
" ",
[
{ p: "کړل", f: "kRul" },
{
short: { p: "کړی", f: "kRey" },
long: { p: "کړلی", f: "kRuley" },
},
],
" ",
], block);
const expected3 = {
long: [
[
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}],
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}]
],
[
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}],
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}],
],
[
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}],
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}]
],
[
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}],
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}],
],
[
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}],
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}]
],
[
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}],
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}],
],
],
short: [
[
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}],
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}]
],
[
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}],
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}],
],
[
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}],
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}]
],
[
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}],
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}],
],
[
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}],
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}]
],
[
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}],
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}],
],
],
};
expect(result3).toEqual(expected3);
// check with imperative
const impFormIntrans: T.ImperativeForm = [
[[{p: "شه", f: "sha"}], [{p: "شئ", f: "sheyy"}]],
[[{p: "شه", f: "sha"}], [{p: "شئ", f: "sheyy"}]],
];
const impFormTrans: T.ImperativeForm = [
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
];
const impFormTransOpts: T.ImperativeForm = {
short: [
[[{p: "که", f: "ka"}], [{p: "کئ", f: "keyy"}]],
[[{p: "که", f: "ka"}], [{p: "کئ", f: "keyy"}]],
],
long: [
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
],
}
const unisexComp: T.UnisexInflections = {
masc: [
[{ p: "زوړ", f: "zoR" }],
[{ p: "زاړه", f: "zaaRu" }],
[{ p: "زړو", f: "zaRo" }],
],
fem: [
[{ p: "زړه", f: "zaRa" }],
[{ p: "زړې", f: "zaRe" }],
[{ p: "زړو", f: "zaRo" }],
],
};
const objectMatrix: T.OptionalPersonInflections<T.PsString> = {
mascSing: { p: "زوړ", f: "zoR" },
mascPlur: { p: "زاړه", f: "zaaRu" },
femSing: { p: "زړه", f: "zaRa" },
femPlur: { p: "زړې", f: "zaRe" },
};
expect(addToForm([unisexComp, " "], impFormIntrans)).toEqual([
[[{p: "زوړ شه", f: "zoR sha"}], [{p: "زاړه شئ", f: "zaaRu sheyy"}]],
[[{p: "زړه شه", f: "zaRa sha"}], [{p: "زړې شئ", f: "zaRe sheyy"}]],
]);
expect(addToForm([objectMatrix, " "], impFormTrans)).toEqual({
mascSing: [
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
],
mascPlur: [
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
],
femSing: [
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
],
femPlur: [
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
],
});
expect(addToForm([objectMatrix, " "], impFormTransOpts)).toEqual({
mascSing: {
short: [
[[{p: "زوړ که", f: "zoR ka"}], [{p: "زوړ کئ", f: "zoR keyy"}]],
[[{p: "زوړ که", f: "zoR ka"}], [{p: "زوړ کئ", f: "zoR keyy"}]],
],
long: [
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
],
},
mascPlur: {
short: [
[[{p: "زاړه که", f: "zaaRu ka"}], [{p: "زاړه کئ", f: "zaaRu keyy"}]],
[[{p: "زاړه که", f: "zaaRu ka"}], [{p: "زاړه کئ", f: "zaaRu keyy"}]],
],
long: [
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
],
},
femSing: {
short: [
[[{p: "زړه که", f: "zaRa ka"}], [{p: "زړه کئ", f: "zaRa keyy"}]],
[[{p: "زړه که", f: "zaRa ka"}], [{p: "زړه کئ", f: "zaRa keyy"}]],
],
long: [
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
],
},
femPlur: {
short: [
[[{p: "زړې که", f: "zaRe ka"}], [{p: "زړې کئ", f: "zaRe keyy"}]],
[[{p: "زړې که", f: "zaRe ka"}], [{p: "زړې کئ", f: "zaRe keyy"}]],
],
long: [
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
],
},
});
const matrixBase: T.VerbForm = {
mascSing: [
[[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
[[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
[[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
[[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
[[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
[[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
],
mascPlur: [
[[{p: "ستړي ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
[[{p: "ستړي ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
[[{p: "ستړي ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
[[{p: "ستړي ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
[[{p: "ستړي ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
[[{p: "ستړي ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
],
femSing: [
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
],
femPlur: [
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
],
};
expect(addToForm([objectMatrix, " ", { p: "به", f: "ba" }, " "], matrixBase)).toEqual({
mascSing: [
[[{p: "زوړ به ستړی کوم", f: "zoR ba stuRey kawum"}], [{p: "زوړ به ستړی کوو", f: "zoR ba stuRey kawoo"}]],
[[{p: "زوړ به ستړی کوم", f: "zoR ba stuRey kawum"}], [{p: "زوړ به ستړی کوو", f: "zoR ba stuRey kawoo"}]],
[[{p: "زوړ به ستړی کوې", f: "zoR ba stuRey kawe"}], [{p: "زوړ به ستړی کوئ", f: "zoR ba stuRey kaweyy"}]],
[[{p: "زوړ به ستړی کوې", f: "zoR ba stuRey kawe"}], [{p: "زوړ به ستړی کوئ", f: "zoR ba stuRey kaweyy"}]],
[[{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}], [{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}]],
[[{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}], [{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}]],
],
mascPlur: [
[[{p: "زاړه به ستړي ستړي کوم", f: "zaaRu ba stuRee kawum"}], [{p: "زاړه به ستړي کوو", f: "zaaRu ba stuRee kawoo"}]],
[[{p: "زاړه به ستړي ستړي کوم", f: "zaaRu ba stuRee kawum"}], [{p: "زاړه به ستړي کوو", f: "zaaRu ba stuRee kawoo"}]],
[[{p: "زاړه به ستړي ستړي کوې", f: "zaaRu ba stuRee kawe"}], [{p: "زاړه به ستړي کوئ", f: "zaaRu ba stuRee kaweyy"}]],
[[{p: "زاړه به ستړي ستړي کوې", f: "zaaRu ba stuRee kawe"}], [{p: "زاړه به ستړي کوئ", f: "zaaRu ba stuRee kaweyy"}]],
[[{p: "زاړه به ستړي ستړي کوي", f: "zaaRu ba stuRee kawee"}], [{p: "زاړه به ستړي کوي", f: "zaaRu ba stuRee kawee"}]],
[[{p: "زاړه به ستړي ستړي کوي", f: "zaaRu ba stuRee kawee"}], [{p: "زاړه به ستړي کوي", f: "zaaRu ba stuRee kawee"}]],
],
femSing: [
[[{p: "زړه به ستړې کوم", f: "zaRa ba stuRe kawum"}], [{p: "زړه به ستړې کوو", f: "zaRa ba stuRe kawoo"}]],
[[{p: "زړه به ستړې کوم", f: "zaRa ba stuRe kawum"}], [{p: "زړه به ستړې کوو", f: "zaRa ba stuRe kawoo"}]],
[[{p: "زړه به ستړې کوې", f: "zaRa ba stuRe kawe"}], [{p: "زړه به ستړې کوئ", f: "zaRa ba stuRe kaweyy"}]],
[[{p: "زړه به ستړې کوې", f: "zaRa ba stuRe kawe"}], [{p: "زړه به ستړې کوئ", f: "zaRa ba stuRe kaweyy"}]],
[[{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}], [{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}]],
[[{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}], [{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}]],
],
femPlur: [
[[{p: "زړې به ستړې کوم", f: "zaRe ba stuRe kawum"}], [{p: "زړې به ستړې کوو", f: "zaRe ba stuRe kawoo"}]],
[[{p: "زړې به ستړې کوم", f: "zaRe ba stuRe kawum"}], [{p: "زړې به ستړې کوو", f: "zaRe ba stuRe kawoo"}]],
[[{p: "زړې به ستړې کوې", f: "zaRe ba stuRe kawe"}], [{p: "زړې به ستړې کوئ", f: "zaRe ba stuRe kaweyy"}]],
[[{p: "زړې به ستړې کوې", f: "zaRe ba stuRe kawe"}], [{p: "زړې به ستړې کوئ", f: "zaRe ba stuRe kaweyy"}]],
[[{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}], [{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}]],
[[{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}], [{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}]],
],
});
const kawulSimpPast: T.VerbForm = {
mini: [
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
[[{p: "که", f: "ku"}, {p: "کو", f: "ko"}], [{p: "کړل", f: "kRul"}, { p: "کو", f: "koo" }]],
[[{p: "که", f: "ka"}], [{p: "کې", f: "ke"}]],
],
short: [
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
[[{p: "کړه", f: "kRu"}, {p: "کړو", f: "kRo"}, {p: "کړ", f: "kuR"}], [{p: "کړل", f: "kRul"}, {p: "کړو", f: "kRoo" }]],
[[{p: "کړه", f: "kRa"}], [{p: "کړې", f: "kRe"}]],
],
long: [
[[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]],
[[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]],
[[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]],
[[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]],
[[{p: "کړله", f: "kRulu"}, {p: "کړلو", f: "kRulo"}], [{p: "کړل", f: "kRul"}, {p: "کړلو", f: "kRuloo"}]],
[[{p: "کړله", f: "kRula"}], [{p: "کړلې", f: "kRule"}]],
],
};
expect(addToForm([{ p: "به", f: "ba" }, " "], kawulSimpPast)).toEqual({
mini: [
[[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]],
[[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]],
[[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]],
[[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]],
[[{p: "به که", f: "ba ku"}, {p: "به کو", f: "ba ko"}], [{p: "به کړل", f: "ba kRul"}, { p: "به کو", f: "ba koo" }]],
[[{p: "به که", f: "ba ka"}], [{p: "به کې", f: "ba ke"}]],
],
short: [
[[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]],
[[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]],
[[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]],
[[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]],
[[{p: "به کړه", f: "ba kRu"}, {p: "به کړو", f: "ba kRo"}, {p: "به کړ", f: "ba kuR"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړو", f: "ba kRoo" }]],
[[{p: "به کړه", f: "ba kRa"}], [{p: "به کړې", f: "ba kRe"}]],
],
long: [
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
[[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]],
],
});
expect(addToForm([{
long: { p: "به", f: "ba" },
short: { p: "ب", f: "b" },
}, " "], kawulSimpPast)).toEqual({
mini: [
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
[[{p: "ب که", f: "b ku"}, {p: "ب کو", f: "b ko"}], [{p: "ب کړل", f: "b kRul"}, { p: "ب کو", f: "b koo" }]],
[[{p: "ب که", f: "b ka"}], [{p: "ب کې", f: "b ke"}]],
],
short: [
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
[[{p: "ب کړه", f: "b kRu"}, {p: "ب کړو", f: "b kRo"}, {p: "ب کړ", f: "b kuR"}], [{p: "ب کړل", f: "b kRul"}, {p: "ب کړو", f: "b kRoo" }]],
[[{p: "ب کړه", f: "b kRa"}], [{p: "ب کړې", f: "b kRe"}]],
],
long: [
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
[[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]],
],
});
expect(addToForm([[{
long: { p: "به", f: "ba" },
short: { p: "ب", f: "b" },
}], " "], kawulSimpPast)).toEqual({
mini: [
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
[[{p: "ب که", f: "b ku"}, {p: "ب کو", f: "b ko"}], [{p: "ب کړل", f: "b kRul"}, { p: "ب کو", f: "b koo" }]],
[[{p: "ب که", f: "b ka"}], [{p: "ب کې", f: "b ke"}]],
],
short: [
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
[[{p: "ب کړه", f: "b kRu"}, {p: "ب کړو", f: "b kRo"}, {p: "ب کړ", f: "b kuR"}], [{p: "ب کړل", f: "b kRul"}, {p: "ب کړو", f: "b kRoo" }]],
[[{p: "ب کړه", f: "b kRa"}], [{p: "ب کړې", f: "b kRe"}]],
],
long: [
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
[[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]],
[[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]],
],
});
expect(addToForm([{
short: { p: "لیک", f: "leek" },
long: { p: "لیکل", f: "leekul" },
}], pastEndings)).toEqual({
short: [
[[{ p: "لیکم", f: "leekum" }], [{ p: "لیکو", f: "leekoo" }]],
[[{ p: "لیکم", f: "leekum" }], [{ p: "لیکو", f: "leekoo" }]],
[[{ p: "لیکې", f: "leeke" }], [{ p: "لیکئ", f: "leekeyy" }]],
[[{ p: "لیکې", f: "leeke" }], [{ p: "لیکئ", f: "leekeyy" }]],
[[{ p: "لیکه", f: "leeku" }, { p: "لیکو", f: "leeko"}], [{ p: "لیکل", f: "leekul" }]],
[[{ p: "لیکه", f: "leeka"}], [{ p: "لیکې", f: "leeke" }]],
],
long: [
[[{ p: "لیکلم", f: "leekulum" }], [{ p: "لیکلو", f: "leekuloo" }]],
[[{ p: "لیکلم", f: "leekulum" }], [{ p: "لیکلو", f: "leekuloo" }]],
[[{ p: "لیکلې", f: "leekule" }], [{ p: "لیکلئ", f: "leekuleyy" }]],
[[{ p: "لیکلې", f: "leekule" }], [{ p: "لیکلئ", f: "leekuleyy" }]],
[[{ p: "لیکله", f: "leekulu" }, { p: "لیکلو", f: "leekulo"}], [{ p: "لیکل", f: "leekul"}]],
[[{ p: "لیکله", f: "leekula"}], [{ p: "لیکلې", f: "leekule" }]],
],
});
expect(addToForm([{
long: { p: "تتت", f: "ttt" },
short: { p: "تت", f: "tt" },
mini: { p: "ت", f: "t" },
}, " "], {
long: [
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
[[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]],
[[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]],
],
short: [
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
[[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]],
[[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]],
],
})).toEqual({
long: [
[[{p: "تتت کړم", f: "ttt kRum"}], [{p: "تتت کړو", f: "ttt kRoo"}]],
[[{p: "تتت کړم", f: "ttt kRum"}], [{p: "تتت کړو", f: "ttt kRoo"}]],
[[{p: "تتت کړې", f: "ttt kRe"}], [{p: "تتت کړئ", f: "ttt kReyy"}]],
[[{p: "تتت کړې", f: "ttt kRe"}], [{p: "تتت کړئ", f: "ttt kReyy"}]],
[[{p: "تتت کړي", f: "ttt kRee"}], [{p: "تتت کړي", f: "ttt kRee"}]],
[[{p: "تتت کړي", f: "ttt kRee"}], [{p: "تتت کړي", f: "ttt kRee"}]],
],
short: [
[[{p: "تت کم", f: "tt kum"}], [{p: "تت کو", f: "tt koo"}]],
[[{p: "تت کم", f: "tt kum"}], [{p: "تت کو", f: "tt koo"}]],
[[{p: "تت کې", f: "tt ke"}], [{p: "تت کئ", f: "tt keyy"}]],
[[{p: "تت کې", f: "tt ke"}], [{p: "تت کئ", f: "tt keyy"}]],
[[{p: "تت کي", f: "tt kee"}], [{p: "تت کي", f: "tt kee"}]],
[[{p: "تت کي", f: "tt kee"}], [{p: "تت کي", f: "tt kee"}]],
],
mini: [
[[{p: "ت کم", f: "t kum"}], [{p: "ت کو", f: "t koo"}]],
[[{p: "ت کم", f: "t kum"}], [{p: "ت کو", f: "t koo"}]],
[[{p: "ت کې", f: "t ke"}], [{p: "ت کئ", f: "t keyy"}]],
[[{p: "ت کې", f: "t ke"}], [{p: "ت کئ", f: "t keyy"}]],
[[{p: "ت کي", f: "t kee"}], [{p: "ت کي", f: "t kee"}]],
[[{p: "ت کي", f: "t kee"}], [{p: "ت کي", f: "t kee"}]],
],
});
});
test(`unisexInfToObjectMatrix`, () => {
expect(unisexInfToObjectMatrix({
masc: [
[{ p: "زوړ", f: "zoR" }],
[{ p: "زاړه", f: "zaaRu" }],
[{ p: "زړو", f: "zaRo" }],
],
fem: [
[{ p: "زړه", f: "zaRa" }],
[{ p: "زړې", f: "zaRe" }],
[{ p: "زړو", f: "zaRo" }],
],
})).toEqual({
mascSing: { p: "زوړ", f: "zoR" },
mascPlur: { p: "زاړه", f: "zaaRu" },
femSing: { p: "زړه", f: "zaRa" },
femPlur: { p: "زړې", f: "zaRe" },
});
});
test(`complementInflects`, () => {
expect(complementInflects({
masc: [
[{ p: "زوړ", f: "zoR" }],
[{ p: "زاړه", f: "zaaRu" }],
[{ p: "زړو", f: "zaRo" }],
],
fem: [
[{ p: "زړه", f: "zaRa" }],
[{ p: "زړې", f: "zaRe" }],
[{ p: "زړو", f: "zaRo" }],
],
})).toBe(true);
expect(complementInflects({
masc: [
[{ p: "خفه", f: "khufa" }],
[{ p: "خفه", f: "khufa" }],
[{ p: "خفه", f: "khufao" }],
],
fem: [
[{ p: "خفه", f: "khufa" }],
[{ p: "خفه", f: "khufa" }],
[{ p: "خفه", f: "khufa" }],
],
})).toBe(false);
});
test(`firstPhonetics should work`, () => {
expect(firstPhonetics("ist'imaal, istimaal")).toBe("ist'imaal");
expect(firstPhonetics("kor")).toBe("kor");
});
test(`makePsString should work`, () => {
expect(makePsString("کور", "kor")).toEqual({ p: "کور", f: "kor" });
});
test(`removeEndingL should work`, () => {
expect(removeEndingL(makePsString("لیدل", "leedúl"))).toEqual(
makePsString("لید", "leed"),
);
expect(removeEndingL(makePsString("لیدل", "leedul"))).toEqual(
makePsString("لید", "leed"),
);
expect(removeEndingL(makePsString("پرېښود", "prexod"))).toEqual(
makePsString("پرېښود", "prexod"),
);
});
test(`yulEndingInfinitive should work`, () => {
expect(yulEndingInfinitive({ p: "وایل", f: "waayul" })).toBe(true);
expect(yulEndingInfinitive({ p: "لیکل", f: "leekúl" })).toBe(false);
});
test(`mapVerbBlock should work`, () => {
expect(
mapVerbBlock(
(ps: T.PsString) => concatPsString({ p: "به", f: "ba" }, " ", ps),
[
[[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
[[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
[[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
[[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
[[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]],
[[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]],
],
)
).toEqual([
[[{p: "به کېدم", f: "ba kedum"}], [{p: "به کېدو", f: "ba kedoo"}]],
[[{p: "به کېدم", f: "ba kedum"}], [{p: "به کېدو", f: "ba kedoo"}]],
[[{p: "به کېدې", f: "ba kede"}], [{p: "به کېدئ", f: "ba kedeyy"}]],
[[{p: "به کېدې", f: "ba kede"}], [{p: "به کېدئ", f: "ba kedeyy"}]],
[[{p: "به کېده", f: "ba kedu"}, {p: "به کېدو", f: "ba kedo"}], [{p: "به کېدل", f: "ba kedul"}]],
[[{p: "به کېده", f: "ba keda"}], [{p: "به کېدې", f: "ba kede"}]],
])
})
// test(`allThirdPersMascPlur should work`, () => {
// expect(
// allThirdPersMascPlur([
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
// [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]]
// ])
// ).toEqual([
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// ]);
// expect(
// allThirdPersMascPlur({
// short: [
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
// [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]],
// ],
// long: [
// [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]],
// [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]],
// [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]],
// [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]],
// [[{p: "کېدله", f: "kedulu"}, {p: "کېدلو", f: "kedulo"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدله", f: "kedula"}], [{p: "کېدلې", f: "kedule"}]],
// ],
// })
// ).toEqual({
// short: [
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// ],
// long: [
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
// ],
// });
// const matrixBase: VerbForm = {
// mascSing: [
// [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
// [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
// [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
// [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// ],
// mascPlur: [
// [[{p: "ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
// [[{p: "ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
// [[{p: "ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
// [[{p: "ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// ],
// femSing: [
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// ],
// femPlur: [
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// ],
// };
// // NOTE: This should never really be used, because this is only used of the past tense
// // versions on grammatically transitive verbs and the objectMatrixes are only used with
// // present forms of verbs, but testing to cover all type safety
// expect(allThirdPersMascPlur(matrixBase)).toEqual({
// mascSing: [
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
// ],
// mascPlur: [
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
// ],
// femSing: [
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// ],
// femPlur: [
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
// ],
// });
// });
test(`allMascFirstInflection should work`, () => {
expect(
allMascFirstInflection({
masc: [
[{p: "زوړ", f: "zoR"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زړو", f: "zaRo"}],
],
fem: [
[{p: "زړه", f: "zaRa"}],
[{p: "زړې", f: "zaRe"}],
[{p: "زړو", f: "zaRo"}],
],
})
).toEqual({
masc: [
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
],
fem: [
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
],
})
expect(
allMascFirstInflection({
short: {
masc: [
[{p: "زوړ", f: "zoR"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زړو", f: "zaRo"}],
],
fem: [
[{p: "زړه", f: "zaRa"}],
[{p: "زړې", f: "zaRe"}],
[{p: "زړو", f: "zaRo"}],
],
},
long: {
masc: [
[{p: "زووړ", f: "zoooR"}],
[{p: "زاااړه", f: "zaaaaRu"}],
[{p: "زړو", f: "zaRo"}],
],
fem: [
[{p: "زړه", f: "zaRa"}],
[{p: "زړې", f: "zaRe"}],
[{p: "زړو", f: "zaRo"}],
],
}
})
).toEqual({
short: {
masc: [
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
],
fem: [
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زاړه", f: "zaaRu"}],
],
},
long: {
masc: [
[{p: "زاااړه", f: "zaaaaRu"}],
[{p: "زاااړه", f: "zaaaaRu"}],
[{p: "زاااړه", f: "zaaaaRu"}],
],
fem: [
[{p: "زاااړه", f: "zaaaaRu"}],
[{p: "زاااړه", f: "zaaaaRu"}],
[{p: "زاااړه", f: "zaaaaRu"}],
],
},
});
});
test('concat inflections', () => {
const unisexInfs: T.UnisexInflections = {
masc: [
[{ p: "زوړ", f: "zoR" }],
[{ p: "زاړه", f: "zaaRu" }],
[{ p: "زړو", f: "zaRo" }],
],
fem: [
[{ p: "زړه", f: "zaRa" }],
[{ p: "زړې", f: "zaRe" }],
[{ p: "زړو", f: "zaRo" }],
],
};
const partInfs: T.UnisexInflections = {
masc: [
[{p: "شوی", f: "shuwey"}],
[{p: "شوي", f: "shuwee"}],
[{p: "شویو", f: "shuwiyo" }, { p: "شوو", f: "shuwo" }],
],
fem: [
[{p: "شوې", f: "shuwe"}],
[{p: "شوې", f: "shuwe"}],
[{p: "شوو", f: "shuwo"}],
],
};
expect(concatInflections(unisexInfs, partInfs)).toEqual({
masc: [
[{p: "زوړ شوی", f: "zoR shuwey"}],
[{p: "زاړه شوي", f: "zaaRu shuwee"}],
[{p: "زړو شویو", f: "zaRo shuwiyo"}, {p: "زړو شوو", f: "zaRo shuwo"}],
],
fem: [
[{p: "زړه شوې", f: "zaRa shuwe"}],
[{p: "زړې شوې", f: "zaRe shuwe"}],
[{p: "زړو شوو", f: "zaRo shuwo"}],
],
});
// TODO: Should also work this way
// const unisexInfs2: UnisexInflections = {
// masc: [
// [{ p: "زوړ", f: "zoR" }, { p: "تور", f: "tor"}],
// [{ p: "زاړه", f: "zaaRu" }],
// [{ p: "زړو", f: "zaRo" }],
// ],
// fem: [
// [{ p: "زړه", f: "zaRa" }],
// [{ p: "زړې", f: "zaRe" }],
// [{ p: "زړو", f: "zaRo" }],
// ],
// };
// const partInfs2: UnisexInflections = {
// masc: [
// [{p: "شوی", f: "shuwey"}],
// [{p: "شوي", f: "shuwee"}],
// [{p: "شویو", f: "shuwiyo" }],
// ],
// fem: [
// [{p: "شوې", f: "shuwe"}],
// [{p: "شوې", f: "shuwe"}],
// [{p: "شوو", f: "shuwo"}],
// ],
// };
// expect(concatInflections(unisexInfs2, partInfs2)).toEqual({
// masc: [
// [{p: "زوړ شوی", f: "zoR shuwey"}, {p: "تور شوی", f: "tor shuwey"}],
// [{p: "زاړه شوي", f: "zaaRu shuwee"}],
// [{p: "زړو شویو", f: "zaRo shuwiyo"}],
// ],
// fem: [
// [{p: "زړه شوې", f: "zaRa shuwe"}],
// [{p: "زړې شوې", f: "zaRe shuwe"}],
// [{p: "زړو شوو", f: "zaRo shuwo"}],
// ],
// });
expect(concatInflections({ p: "خفه", f: "khufa" }, partInfs)).toEqual({
masc: [
[{p: "خفه شوی", f: "khufa shuwey"}],
[{p: "خفه شوي", f: "khufa shuwee"}],
[{p: "خفه شویو", f: "khufa shuwiyo"}, {p: "خفه شوو", f: "khufa shuwo"}],
],
fem: [
[{p: "خفه شوې", f: "khufa shuwe"}],
[{p: "خفه شوې", f: "khufa shuwe"}],
[{p: "خفه شوو", f: "khufa shuwo"}],
],
});
});
test("psStringEquals", () => {
expect(
psStringEquals({ p: "تور", f: "tor" }, { p: "تور", f: "tor" })
).toBe(true);
expect(
psStringEquals({ p: "بور", f: "bor" }, { p: "تور", f: "tor" })
).toBe(false);
});
test("removeRetroflexR", () => {
expect(
removeRetroflexR({ p: "وکړ", f: "óokR" }),
).toEqual({ p: "وک", f: "óok" });
});

713
src/lib/p-text-helpers.ts Normal file
View File

@ -0,0 +1,713 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
inflectRegularYeyUnisex,
} from "./pashto-inflector";
import { baParticle } from "./grammar-units";
import {
getBlockRowCol,
getPersonInflectionsKey,
} from "./misc-helpers";
import * as T from "../types";
/**
* Concats sections of Pashto text with Pashto and Phonetics
* in PsString type, also accepts spaces as " "
*
* @param items
*/
export function concatPsString(...items: Array<T.PsString | " " | "">): T.PsString;
export function concatPsString(...items: Array<T.PsString | T.LengthOptions<T.PsString> | " " | "">): T.LengthOptions<T.PsString>;
export function concatPsString(...items: Array<T.PsString | T.LengthOptions<T.PsString> | T.OptionalPersonInflections<T.LengthOptions<T.PsString>> | " " | "">): T.OptionalPersonInflections<T.LengthOptions<T.PsString>>;
export function concatPsString(...items: Array<T.PsString | T.FullForm<T.PsString> | " " | "">): T.FullForm<T.PsString>;
export function concatPsString(...items: Array<T.PsString | T.LengthOptions<T.PsString> | T.FullForm<T.PsString> | " " | "">): T.FullForm<T.PsString> {
const hasPersonInflections = items.some((x) => ((typeof x !== "string") && ("mascSing" in x)));
if (hasPersonInflections) {
const forceInflection = (
arr: Array<T.FullForm<T.PsString> | " " | "">,
inflection: T.PersonInflectionsField,
): Array<T.SingleOrLengthOpts<T.PsString> | " " | ""> => (
arr.map((element) => (typeof element !== "string" && "mascSing" in element)
? element[inflection]
: element
)
)
return {
mascSing: concatPsString(...forceInflection(items, "mascSing")),
mascPlur: concatPsString(...forceInflection(items, "mascPlur")),
femSing: concatPsString(...forceInflection(items, "femSing")),
femPlur: concatPsString(...forceInflection(items, "femPlur")),
};
}
const itemsWOutPersInfs = items as ("" | " " | T.SingleOrLengthOpts<T.PsString>)[];
const hasLengthOptions = itemsWOutPersInfs.some((x) => (typeof x !== "string") && ("long" in x));
if (hasLengthOptions) {
const forceLength = (
arr: Array<T.SingleOrLengthOpts<T.PsString> | " ">,
length: "long" | "short" | "mini",
): Array<T.PsString | " "> => (
arr.map((element) => (element !== " " && "long" in element)
? element[length] || element.short
: element
)
);
const hasMini = itemsWOutPersInfs.some((x) => typeof x !== "string" && ("mini" in x));
return {
...hasMini ? {
mini: concatPsString(...forceLength(items as Array<T.SingleOrLengthOpts<T.PsString> | " ">, "mini")),
} : {},
short: concatPsString(...forceLength(items as Array<T.SingleOrLengthOpts<T.PsString> | " ">, "short")),
long: concatPsString(...forceLength(items as Array<T.SingleOrLengthOpts<T.PsString> | " ">, "long")),
};
}
const itemsWOutLengthOptions = itemsWOutPersInfs as ("" | " " | T.PsString)[];
const concatField = (k: T.PsStringField): string => (
itemsWOutLengthOptions.map((item): string => {
if (item === " ") return " ";
if (item === "") return "";
return item[k];
}).join("")
);
return {
p: concatField("p"),
f: concatField("f"),
};
}
export function psFunction(ps: T.PsString, func: (s: string) => string): T.PsString {
return makePsString(
func(ps.p),
func(ps.f),
);
}
export function psIncludes(ps: T.PsString, inc: T.PsString): boolean {
return ps.p.includes(inc.p) && ps.f.includes(inc.f);
}
export function hasBaParticle(ps: T.PsString): boolean {
return psIncludes(ps, concatPsString(baParticle, " "));
}
export function psRemove(ps: T.PsString, remove: T.PsString): T.PsString {
return makePsString(
ps.p.replace(remove.p, ""),
ps.f.replace(remove.f, ""),
);
}
export function psInsertWord(ps: T.PsString, toInsert: T.PsString, pos: number): T.PsString {
const pWords = ps.p.split(" ");
const fWords = ps.f.split(" ");
const pIns = [...pWords.slice(0, pos), toInsert.p, ...pWords.slice(pos)];
const fIns = [...fWords.slice(0, pos), toInsert.f, ...fWords.slice(pos)];
return makePsString(
pIns.join(" "),
fIns.join(" "),
);
}
/**
* If a به - ba particle is present in a PsString form, ensure that it is placed in word pos
* If no به - ba is present, return as is
*
* @param ps
* @param pos
*/
export function ensureBaAt(ps: T.PsString, pos: number): T.PsString;
export function ensureBaAt(ps: T.SingleOrLengthOpts<T.PsString>, pos: number): T.SingleOrLengthOpts<T.PsString>;
export function ensureBaAt(ps: T.FullForm<T.PsString>, pos: number): T.FullForm<T.PsString>;
export function ensureBaAt(ps: T.FullForm<T.PsString>, pos: number): T.FullForm<T.PsString> {
if ("mascSing" in ps) {
return {
mascSing: ensureBaAt(ps.mascSing, pos),
mascPlur: ensureBaAt(ps.mascPlur, pos),
femSing: ensureBaAt(ps.femSing, pos),
femPlur: ensureBaAt(ps.femPlur, pos),
};
}
if ("long" in ps) {
return {
long: ensureBaAt(ps.long, pos),
short: ensureBaAt(ps.short, pos),
...ps.mini ? {
mini: ensureBaAt(ps.mini, pos),
} : {},
};
}
if (!psIncludes(ps, concatPsString(baParticle, " "))) {
return ps;
}
const baRemoved = psRemove(ps, concatPsString(baParticle, " "));
const baInserted = psInsertWord(baRemoved, baParticle, pos);
return baInserted;
}
/**
* Returns the first phonetics value in a comma-seperated list
*
* @param f - a phonetics string
*/
export function firstPhonetics(f: string): string {
return f.split(",")[0];
}
/**
* returs a PsString or DictionaryEntry ensuring only one phonetics variation
*
* @param ps
*/
export function removeFVariants(ps: T.PsString): T.PsString {
return {
...ps,
f: firstPhonetics(ps.f),
};
}
/**
* Lets us know if all the forms of a verb block are the same
*
* @param block
*/
export function isAllOne (block: T.VerbBlock | T.ImperativeBlock): boolean {
return block.reduce((isTheSame, row, i, src) => (
isTheSame &&
psStringEquals(row[0][0], src[0][0][0]) &&
psStringEquals(row[1][0], src[1][0][0])
), true) as unknown as boolean;
}
/**
* Creates a Pashto string structure
*
* @param p - the Pashto text
* @param f - the phonetics text
*/
export function makePsString(p: string, f: string): T.PsString {
return { p, f };
}
/**
* Retuns a Pashto string with the ل - ul on the end removed
*
* @param s
*/
export function removeEndingL(s: T.PsString): T.PsString {
const lOnEnd = (): boolean => {
const lastPLetter = s.p.slice(-1);
const lastFLetters = s.f.slice(-2);
return lastPLetter === "ل" && ["ul", "úl"].includes(lastFLetters);
};
if (!lOnEnd()) return s;
return {
p: s.p.substr(0, s.p.length-1),
f: s.f.substr(0, s.f.length-2),
};
}
function getMatchingInflection(
infs: T.UnisexInflections,
persNum: number,
singPlur: number,
): T.PsString {
return infs[persNum % 2 === 0 ? "masc" : "fem"][singPlur][0];
}
export function isVerbBlock(x: any) {
return (
Array.isArray(x) &&
(x.length === 6) &&
"p" in x[0][0][0]
);
}
type toAddToForm = Array<" " | T.SingleOrLengthOpts<T.PsString> | T.SingleOrLengthOpts<T.UnisexInflections> | T.SingleOrLengthOpts<T.PsString>[] | T.OptionalPersonInflections<T.PsString> | T.VerbBlock>;
type toAddToFormLengthChosen = Array<" " | T.PsString | T.UnisexInflections | T.PsString[] | T.OptionalPersonInflections<T.PsString> | T.VerbBlock>;
export function addToForm(
toAdd: toAddToForm,
base: T.VerbForm,
disableLCheck?: boolean,
): T.VerbForm;
export function addToForm(
toAdd: toAddToForm,
base: T.ImperativeForm,
disableLCheck?: boolean,
): T.ImperativeForm;
export function addToForm(
toAdd: toAddToForm,
base: T.VerbForm | T.ImperativeForm,
disableLCheck?: boolean,
): T.VerbForm | T.ImperativeForm {
function startsWithBa(ps: T.PsString): boolean {
const start = makePsString(
ps.p.slice(0, 3),
ps.f.slice(0, 3),
);
return psStringEquals(
start,
concatPsString(baParticle, " "),
);
}
function removeBa(ps: T.PsString): T.PsString {
return makePsString(
ps.p.slice(3),
ps.f.slice(3),
);
}
const toAddIncludesObjectMatrix = () => (
toAdd.some((x) => x !== " " && "mascSing" in x)
);
// TODO: Weird stuff with overloading throwing errors
function makeNonObjectMatrixForm(
base: T.VerbBlock | T.LengthOptions<T.VerbBlock>,
presObject?: "mascSing" | "mascPlur" | "femSing" | "femPlur",
): T.SingleOrLengthOpts<T.VerbBlock>;
function makeNonObjectMatrixForm(
base: T.ImperativeBlock | T.LengthOptions<T.ImperativeBlock> | T.VerbBlock | T.LengthOptions<T.VerbBlock>,
presObject?: "mascSing" | "mascPlur" | "femSing" | "femPlur",
): T.SingleOrLengthOpts<T.ImperativeBlock>;
function makeNonObjectMatrixForm(
base: T.SingleOrLengthOpts<T.VerbBlock> | T.SingleOrLengthOpts<T.ImperativeBlock>,
presObject?: "mascSing" | "mascPlur" | "femSing" | "femPlur",
): T.SingleOrLengthOpts<T.VerbBlock> | T.SingleOrLengthOpts<T.ImperativeBlock> {
function makeLengthOption(length: "short" | "long" | "mini"): T.ImperativeBlock;
function makeLengthOption(length: "short" | "long" | "mini"): T.VerbBlock;
function makeLengthOption(length: "short" | "long" | "mini"): T.ImperativeForm | T.VerbBlock {
// If the base is long and there are also length options in toAdd,
// then make the short and long versions of the base as variations on each item
const multiplyEachVariationBy = toAdd.reduce((acc, cur) => (
// make sure we don't make 6 variations when concating a verb block to a verb block!
(Array.isArray(cur) && !isVerbBlock(cur)) ? Math.max(acc, cur.length) : acc
), 1)
const b = "long" in base
? base[length] || base.short // in case mini does not exist
: base;
const addingLengthChosen: toAddToFormLengthChosen = toAdd.map((element) => {
if (element !== " " && "long" in element) {
return element[length] || element.short;
}
if (Array.isArray(element)) {
const arr = element as T.SingleOrLengthOpts<T.PsString>[] | T.VerbBlock;
return arr.map((e: any) => "long" in e ? (e[length] || e.short) : e)
}
return element;
});
const makeItem = (ps: T.PsString, persNum: number, singPlur: number, variation: number, verbBlock?: boolean): T.PsString => {
const add = addingLengthChosen.map((e) => {
if (e === " ") return e;
if (isVerbBlock(e)) {
const block = e as T.VerbBlock;
return block[persNum][singPlur][0];
}
const f = e as T.UnisexInflections | T.PsString[] | T.OptionalPersonInflections<T.PsString>;
if (Array.isArray(f)) {
return f[Math.min(variation, f.length-1)];
}
if ("masc" in f) {
return getMatchingInflection(f, persNum as number, singPlur as number);
}
if ("mascSing" in f) {
return f[presObject || /* istanbul ignore next */ "mascSing"];
}
return f;
});
// avoid adding the redundant ل on past verb endings
// TODO: If there's a ba in front, remove it and put it on the front
return (length === "long") && verbBlock && (ps.p === "ل") && !disableLCheck
? concatPsString(...add)
: startsWithBa(ps)
? concatPsString(baParticle, " ", ...add, removeBa(ps))
: concatPsString(...add, ps);
}
if (b.length === 6) {
return b.map((person, persNum) => (
person.map((item, singPlur) => (
// @ts-ignore
item.reduce((vars, ps) => {
const varIndexes = [...Array(multiplyEachVariationBy).keys()];
return [
...vars,
...varIndexes.map((varIndex) => (
makeItem(ps, persNum, singPlur, varIndex, true)
)),
];
}, []) as unknown as T.ArrayOneOrMore<T.PsString>
))
)) as T.VerbBlock;
}
// TODO: CHECK IF THE IMPERATIVE BLOCKS WORK??
return mapImperativeBlock((ps, persNumber, singPlur) => (
makeItem(ps, persNumber as number, singPlur as number, 0)
), b);
}
const useLengthOptions = (
("long" in base) ||
toAdd.some((element) => (
(element !== " " && "long" in element)
||
// @ts-ignore
(Array.isArray(element) && element.some((e) => "long" in e))
))
);
if (useLengthOptions) {
// might be totally unneccessary...
const miniInToAdd = toAdd.some((x) => (
x !== " " && "mini" in x
));
return {
long: makeLengthOption("long"),
short: makeLengthOption("short"),
...("mini" in base || miniInToAdd) ? {
mini: makeLengthOption("mini"),
} : {},
};
}
// there are no length options in any of the elements or base
return makeLengthOption("long");
}
if (toAddIncludesObjectMatrix() && !("mascSing" in base)) {
return {
mascSing: makeNonObjectMatrixForm(base, "mascSing"),
mascPlur: makeNonObjectMatrixForm(base, "mascPlur"),
femSing: makeNonObjectMatrixForm(base, "femSing"),
femPlur: makeNonObjectMatrixForm(base, "femPlur"),
};
}
if ("mascSing" in base) {
return {
// TODO: Is this really what we want to do?
// is there ever a case where we would want the object matrix of a compliment
// to line up with the object matrix of a base verb?
mascSing: makeNonObjectMatrixForm(base.mascSing, "mascSing"),
mascPlur: makeNonObjectMatrixForm(base.mascPlur, "mascPlur"),
femSing: makeNonObjectMatrixForm(base.femSing, "femSing"),
femPlur: makeNonObjectMatrixForm(base.femPlur, "femPlur"),
};
}
return makeNonObjectMatrixForm(base);
}
function mapImperativeBlock(f: (ps: T.PsString, i?: number, j?: number) => T.PsString, block: T.ImperativeBlock): T.ImperativeBlock {
return block.map((person, i) => (
person.map((item, j) => (
item.map((variation) => (
f(variation, i, j)
))
))
)) as T.ImperativeBlock;
}
export function mapVerbBlock(f: (ps: T.PsString, i?: number, j?: number) => T.PsString, block: T.VerbBlock): T.VerbBlock {
return block.map((person, i) => (
person.map((item, j) => (
item.map((variation) => (
f(variation, i, j)
))
))
)) as T.VerbBlock;
}
export function unisexInfToObjectMatrix(inf: T.UnisexInflections): T.OptionalPersonInflections<T.PsString> {
return {
mascSing: inf.masc[0][0],
mascPlur: inf.masc[1][0],
femSing: inf.fem[0][0],
femPlur: inf.fem[1][0],
};
}
export function concatInflections(
comp: T.PsString | T.SingleOrLengthOpts<T.UnisexInflections>, infs: T.SingleOrLengthOpts<T.UnisexInflections>
): T.SingleOrLengthOpts<T.UnisexInflections> {
const containsLengthOptions = "long" in infs || "long" in comp;
const ensureL = <T>(x: T.SingleOrLengthOpts<T>, length: "short" | "long"): T => (
("long" in x) ? x[length] : x
);
if (containsLengthOptions) {
return {
short: concatInflections(
ensureL(comp, "short"),
ensureL(infs, "short"),
) as T.UnisexInflections,
long: concatInflections(
ensureL(comp, "long"),
ensureL(infs, "long"),
) as T.UnisexInflections,
};
}
// now length options are removed
const complement = comp as T.PsString | T.UnisexInflections;
const infsOneL = infs as T.UnisexInflections;
const mapGender = (gender: "masc" | "fem") => (
infsOneL[gender].map((inf: T.ArrayOneOrMore<T.PsString>, i) => (
inf.map((variation) => {
const c = ("masc" in complement)
? complement[gender][i][0]
: complement;
return concatPsString(c, " ", variation)
})
)) as T.ArrayFixed<T.ArrayOneOrMore<T.PsString>, 3>
);
return {
masc: mapGender("masc"),
fem: mapGender("fem"),
};
}
/**
* Checks if a given infinitive ends in یل - yul such as وایل - waayul etc.
*
* @param s
*/
export function yulEndingInfinitive(s: T.PsString): boolean {
const pEnding = s.p.slice(-2);
const fEnding = s.f.slice(-3);
return ((pEnding === "یل") && (["yul", "yúl"].includes(fEnding)));
}
export function psStringFromEntry(entry: T.DictionaryEntry): T.PsString {
return makePsString(
entry.p,
firstPhonetics(entry.f),
);
}
export function allOnePersonInflection(block: T.ImperativeForm, person: T.Person): T.SingleOrLengthOpts<T.ImperativeBlock>;
export function allOnePersonInflection(block: T.VerbForm, person: T.Person): T.SingleOrLengthOpts<T.VerbBlock>;
export function allOnePersonInflection(block: T.SingleOrLengthOpts<T.UnisexInflections>, person: T.Person): T.SingleOrLengthOpts<T.UnisexInflections>;
export function allOnePersonInflection(
block: T.VerbForm | T.ImperativeForm | T.SingleOrLengthOpts<T.UnisexInflections>, person: T.Person
): T.SingleOrLengthOpts<T.VerbBlock> | T.SingleOrLengthOpts<T.ImperativeBlock> | T.SingleOrLengthOpts<T.UnisexInflections> {
if ("mascSing" in block) {
const key = getPersonInflectionsKey(person);
return block[key];
}
return block;
}
export function choosePersInf<T>(x: T.FullForm<T>, persInf: T.PersonInflectionsField): T.SingleOrLengthOpts<T> {
if ("mascSing" in x) {
return x[persInf];
}
return x;
}
export function allOnePersonVerbForm(block: T.VerbForm, person: T.Person): T.VerbForm {
if ("mascSing" in block) {
return {
mascSing: allOnePersonVerbForm(block.mascSing, person) as T.SingleOrLengthOpts<T.VerbBlock>,
mascPlur: allOnePersonVerbForm(block.mascPlur, person) as T.SingleOrLengthOpts<T.VerbBlock>,
femSing: allOnePersonVerbForm(block.femSing, person) as T.SingleOrLengthOpts<T.VerbBlock>,
femPlur: allOnePersonVerbForm(block.femPlur, person) as T.SingleOrLengthOpts<T.VerbBlock>,
};
}
if ("long" in block) {
return {
long: allOnePersonVerbForm(block.long, person) as T.VerbBlock,
short: allOnePersonVerbForm(block.short, person) as T.VerbBlock,
...block.mini ? {
mini: allOnePersonVerbForm(block.mini, person) as T.VerbBlock,
} : {},
};
}
const [row, col] = getBlockRowCol(person)
const p = block[row][col];
return [
[p, p],
[p, p],
[p, p],
[p, p],
[p, p],
[p, p],
];
}
/**
* Returns a set of inflections that are all masculine plural
* (for conjugating the past participle of gramatically transitive verbs)
*
* @param inflections
*/
export function allMascFirstInflection(inflections: T.SingleOrLengthOpts<T.UnisexInflections>): T.SingleOrLengthOpts<T.UnisexInflections> {
if ("long" in inflections) {
return {
long: allMascFirstInflection(inflections.long) as T.UnisexInflections,
short: allMascFirstInflection(inflections.short) as T.UnisexInflections,
};
}
const mp = inflections.masc[1];
return {
masc: [
mp,
mp,
mp,
],
fem: [
mp,
mp,
mp,
],
};
}
export function complementInflects(inf: T.UnisexInflections): boolean {
return (
(inf.masc[0][0].p !== inf.masc[2][0].p)
||
(inf.fem[0][0].p !== inf.fem[1][0].p)
||
(inf.masc[0][0].p !== inf.fem[0][0].p)
);
// OR MORE THOROUGH?
// const fm = inf.masc[0][0];
// return !(
// psStringEquals(inf.masc[1][0], fm) &&
// psStringEquals(inf.masc[2][0], fm) &&
// psStringEquals(inf.fem[1][0], fm) &&
// psStringEquals(inf.fem[2][0], fm)
// );
}
export function psStringEquals(ps1: T.PsString, ps2: T.PsString): boolean {
return (ps1.p === ps2.p) && (ps1.f === ps2.f);
}
export function removeRetroflexR(ps: T.PsString): T.PsString {
return {
p: ps.p.replace("ړ", ""),
f: ps.f.replace("R", ""),
};
}
export function inflectYey(ps: T.SingleOrLengthOpts<T.PsString>): T.SingleOrLengthOpts<T.UnisexInflections> {
if ("long" in ps) {
return {
long: inflectYey(ps.long) as T.UnisexInflections,
short: inflectYey(ps.short) as T.UnisexInflections,
}
}
return inflectRegularYeyUnisex(ps.p, ps.f);
}
export function clamp(s: string, chars: number): string {
return `${s.slice(0, 20)}${s.length > 20 ? "..." : ""}`;
}
export function addEnglish(
english: T.EnglishBlock | string,
ps: T.VerbBlock | T.ImperativeBlock | T.ArrayOneOrMore<T.PsString>,
) {
if (Array.isArray(ps[0]) && ps.length === 6) {
return mapVerbBlock((psString, i, j) => ({
...psString,
// @ts-ignore
e: typeof english === "string" ? english : english[i][j],
}), ps as T.VerbBlock)
}
if (Array.isArray(ps[0]) && ps.length === 2) {
return mapImperativeBlock((psString, i, j) => ({
...psString,
// @ts-ignore
e: typeof english === "string" ? english : english[i][j],
}), ps as T.ImperativeBlock)
}
const line = ps as T.ArrayOneOrMore<T.PsString>;
return line.map((psString) => (
{ ...psString, e: typeof english === "string" ? english : english[0][0] }
));
}
export function beginsWithDirectionalPronoun(ps: T.PsString): boolean {
const beginning = ps.p.slice(0, 2);
return ["را", "در", "ور"].includes(beginning);
}
export function checkForOoPrefix(ps: T.PsString): boolean {
return ps.p[0] === "و" && ["oo", "óo"].includes(ps.f.slice(0, 2));
}
export function startsWithBa(ps: T.PsString): boolean {
return (ps.p.slice(0, 3) === "به " && ps.f.slice(0, 3) === "ba ");
}
/**
* Removes a given head from a verb form, returning just the second half of the split
* It keeps به in front if there is a به at the beginning of the form
*
* @param head - the first part of a verb split
* @param ps - the whole verb form that needs the head removed
*/
export function removeHead(head: T.PsString, ps: T.PsString): T.PsString {
const hasBa = startsWithBa(ps);
const base = hasBa ? psRemove(ps, concatPsString(baParticle, " ")) : ps;
const chopped = {
p: base.p.slice(head.p.length),
f: base.f.slice(head.f.length),
};
return hasBa
? concatPsString(baParticle, " ", chopped)
: chopped;
}
export function uniquePsStringArray(arr: T.PsString[]): T.PsString[] {
return [
// @ts-ignore
...new Set(arr.map((o) => JSON.stringify(o))),
].map((string) => JSON.parse(string)) as T.PsString[];
}
export function splitOffLeapfrogWord(ps: T.PsString): [T.PsString, T.PsString] {
const pWords = ps.p.split(" ");
const fWords = ps.f.split(" ");
const beginning = makePsString(
pWords.slice(0, -1).join(" "),
fWords.slice(0, -1).join(" "),
);
const end = makePsString(
pWords.slice(-1).join(" "),
fWords.slice(-1).join(" "),
);
return [beginning, end];
}
export function removeObjComp(comp: T.PsString | undefined, ps: T.PsString): T.PsString {
if (!comp) {
return ps;
}
return makePsString(
ps.p.replace(comp.p + " ", ""),
ps.f.replace(comp.f + " ", ""),
);
}
export function psStringContains(ps: T.PsString, searchFor: T.PsString): boolean {
return (
ps.p.includes(searchFor.p)
&&
ps.f.includes(searchFor.f)
);
}
export function removeStartingTick(f: string): string {
if (f[0] === "`") {
return f.slice(1);
}
return f;
}
export function ensureShortWurShwaShift(ps: T.PsString): T.PsString {
if (ps.p.slice(-2) === "وړ" && ps.f.slice(-2) === "wR") {
return {
p: ps.p,
f: ps.f.slice(0, -2) + "wuR",
};
}
return ps;
}

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
export const pashtoConsonants = ["ب", "پ", "ت", "ټ", "ث", "ج", "چ", "ح", "خ", "څ", "ځ", "د", "ډ", "ذ", "ر", "ړ", "ز", "ژ", "ږ", "س", "ش", "ښ", "ص", "ض", "ط", "ظ", "غ", "ف", "ق", "ک", "ګ", "گ", "ل", "ل", "م", "ن", "ڼ"];

View File

@ -0,0 +1,636 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
// TODO: See if there are animate feminine words ending in ي and test
import {
inflectRegularYeyUnisex,
inflectWord,
} from "./pashto-inflector";
import * as T from "../types";
const adjectives: Array<{
in: T.DictionaryEntry,
out: T.Inflections | false,
}> = [
// irregular adj.
{
in: {
ts: 1527815451,
p: "زوړ",
f: "zoR",
e: "old",
c: "adj. irreg.",
i: 6264,
infap: "زاړه",
infaf: "zaaRu",
infbp: "زړ",
infbf: "zaR",
},
out: {
masc: [
[{p: "زوړ", f: "zoR"}],
[{p: "زاړه", f: "zaaRu"}],
[{p: "زړو", f: "zaRo"}],
],
fem: [
[{p: "زړه", f: "zaRa"}],
[{p: "زړې", f: "zaRe"}],
[{p: "زړو", f: "zaRo"}],
],
},
},
// regular adjective ending in ی
{
in: {
ts: 1527815306,
p: "ستړی",
f: "stúRey",
e: "tired",
c: "adj.",
i: 6564,
},
out: {
masc: [
[{p: "ستړی", f: "stúRey"}],
[{p: "ستړي", f: "stúRee"}],
[{p: "ستړیو", f: "stúRiyo"}, {p: "ستړو", f: "stúRo"}],
],
fem: [
[{p: "ستړې", f: "stúRe"}],
[{p: "ستړې", f: "stúRe"}],
[{p: "ستړو", f: "stúRo"}],
],
},
},
// regular adjective ending in ی with stress on the end
{
in: {
ts: 1527813636,
p: "وروستی",
f: "wroostéy",
e: "last, latest, recent",
c: "adj.",
i: 12026,
},
out: {
masc: [
[{p: "وروستی", f: "wroostéy"}],
[{p: "وروستي", f: "wroostée"}],
[{p: "وروستیو", f: "wroostiyo"}, {p: "وروستو", f: "wroostó"}],
],
fem: [
[{p: "وروستۍ", f: "wroostúy"}],
[{p: "وروستۍ", f: "wroostúy"}],
[{p: "وروستیو", f: "wroostúyo"}, {p: "وروستو", f: "wroostó"}],
],
},
},
// regular adjective ending in a consonant
{
in: {
ts: 1527813498,
p: "سپک",
f: "spuk",
e: "light; dishonorable, not respectable",
c: "adj.",
i: 6502,
},
out: {
masc: [
[{p: "سپک", f: "spuk"}],
[{p: "سپک", f: "spuk"}],
[{p: "سپکو", f: "spuko"}],
],
fem: [
[{p: "سپکه", f: "spuka"}],
[{p: "سپکې", f: "spuke"}],
[{p: "سپکو", f: "spuko"}],
],
},
},
{
in: {
ts: 1527812862,
p: "لوی",
f: "looy",
e: "big, great, large",
c: "adj.",
i: 9945,
},
out: {
masc: [
[{p: "لوی", f: "looy"}],
[{p: "لوی", f: "looy"}],
[{p: "لویو", f: "looyo"}],
],
fem: [
[{p: "لویه", f: "looya"}],
[{p: "لویې", f: "looye"}],
[{p: "لویو", f: "looyo"}],
],
},
},
{
in: {
ts: 1527811469,
p: "پوه",
f: "poh",
e: "understanding, having understood; intelligent, quick, wise, clever; expert",
c: "adj.",
i: 2430,
},
out: {
masc: [
[{p: "پوه", f: "poh"}],
[{p: "پوه", f: "poh"}],
[{p: "پوهو", f: "poho"}],
],
fem: [
[{p: "پوهه", f: "poha"}],
[{p: "پوهې", f: "pohe"}],
[{p: "پوهو", f: "poho"}],
],
},
},
// adjective non-inflecting
{
in: {
ts: 1527812798,
p: "خفه",
f: "khufa",
e: "sad, upset, angry; choked, suffocated",
c: "adj.",
i: 4631,
},
out: false,
},
{
in: {
ts: 1527814727,
p: "اجباري",
f: "ijbaaree",
e: "compulsory, obligatory",
c: "adj.",
i: 167,
},
out: false,
},
];
const nouns: Array<{
in: T.DictionaryEntry,
out: T.Inflections | false,
}> = [
// ## UNISEX
// Unisex noun irregular
{
in: {
ts: 1527812908,
p: "مېلمه",
f: "melmá",
e: "guest",
c: "n. m. irreg. unisex",
i: 11244,
infap: "مېلمانه",
infaf: "melmaanu",
infbp: "مېلمن",
infbf: "melman",
},
out: {
masc: [
[{p: "مېلمه", f: "melmá"}],
[{p: "مېلمانه", f: "melmaanu"}],
[{p: "مېلمنو", f: "melmano"}],
],
fem: [
[{p: "مېلمنه", f: "melmana"}],
[{p: "مېلمنې", f: "melmane"}],
[{p: "مېلمنو", f: "melmano"}],
],
},
},
// Unisex noun ending with ی
{
in: {
ts: 1527814159,
p: "ملګری",
f: "malgúrey",
e: "friend, companion",
c: "n. m. unisex",
i: 10943,
},
out: {
masc: [
[{p: "ملګری", f: "malgúrey"}],
[{p: "ملګري", f: "malgúree"}],
[{p: "ملګریو", f: "malgúriyo"}, {p: "ملګرو", f: "malgúro"}],
],
fem: [
[{p: "ملګرې", f: "malgúre"}],
[{p: "ملګرې", f: "malgúre"}],
[{p: "ملګرو", f: "malgúro"}],
],
},
},
// Unisex noun ending on ی with emphasis on the end
{
in: {
ts: 1527816431,
p: "ترورزی",
f: "trorzéy",
e: "cousin (son of paternal aunt)",
c: "n. m. unisex",
i: 2900,
},
out: {
masc: [
[{p: "ترورزی", f: "trorzéy"}],
[{p: "ترورزي", f: "trorzée"}],
[{p: "ترورزیو", f: "trorziyo"}, {p: "ترورزو", f: "trorzó"}],
],
fem: [
[{p: "ترورزۍ", f: "trorzúy"}],
[{p: "ترورزۍ", f: "trorzúy"}],
[{p: "ترورزیو", f: "trorzúyo"}, {p: "ترورزو", f: "trorzó"}],
],
},
},
// Unisex noun ending with a consanant
{
in: {
ts: 1527820043,
p: "چرګ",
f: "churg",
e: "rooster, cock; chicken, poultry",
c: "n. m. unisex",
i: 4101,
},
out: {
masc: [
[{p: "چرګ", f: "churg"}],
[{p: "چرګ", f: "churg"}],
[{p: "چرګو", f: "churgo"}],
],
fem: [
[{p: "چرګه", f: "churga"}],
[{p: "چرګې", f: "churge"}],
[{p: "چرګو", f: "churgo"}],
],
},
},
// ## MASCULINE
// Masculine regular ending in ی
{
in: {
ts: 1527815251,
p: "سړی",
f: "saRey",
e: "man",
c: "n. m.",
i: 6750,
},
out: {
masc: [
[{p: "سړی", f: "saRey"}],
[{p: "سړي", f: "saRee"}],
[{p: "سړیو", f: "saRiyo"}, {p: "سړو", f: "saRo"}],
],
},
},
// Masculine regular ending in ی with emphasis on end
{
in: {
ts: 1527818511,
p: "ترېلی",
f: "treléy",
e: "pool, reservoir",
c: "n. m.",
i: 2931,
},
out: {
masc: [
[{p: "ترېلی", f: "treléy"}],
[{p: "ترېلي", f: "trelée"}],
[{p: "ترېلیو", f: "treliyo"}, {p: "ترېلو", f: "trelo"}],
],
},
},
// Masculine ending in tob
{
in: {
i: 11998,
ts: 1586760783536,
p: "مشرتوب",
f: "mushurtob",
e: "leadership, authority, presidency",
c: "n. m.",
},
out: {
masc: [
[{p: "مشرتوب", f: "mushurtob"}],
[{p: "مشرتابه", f: "mushurtaabu"}],
[{p: "مشرتبو", f: "mushurtabo"}],
],
},
},
// Masculine irregular
{
in: {
ts: 1527813809,
p: "لمونځ",
f: "lamoondz",
e: "Muslim ritual prayers (namaz, salah, salat)",
c: "n. m. irreg.",
i: 9835,
infap: "لمانځه",
infaf: "lamaandzu",
infbp: "لمنځ",
infbf: "lamandz",
},
out: {
masc: [
[{p: "لمونځ", f: "lamoondz"}],
[{p: "لمانځه", f: "lamaandzu"}],
[{p: "لمنځو", f: "lamandzo"}],
],
},
},
// Masculine non-inflecting
{
in: {
ts: 1527812817,
p: "کتاب",
f: "kitaab",
e: "book",
c: "n. m.",
i: 8640,
},
out: false,
},
// ## FEMININE
// Feminine regular ending in ه
{
in: {
ts: 1527812797,
p: "ښځه",
f: "xudza",
e: "woman, wife",
c: "n. f.",
i: 7444,
},
out: {
fem: [
[{p: "ښځه", f: "xudza"}],
[{p: "ښځې", f: "xudze"}],
[{p: "ښځو", f: "xudzo"}],
],
},
},
{
in: {
ts: 1527821380,
p: "اره",
f: "ará",
e: "saw (the tool)",
c: "n. f.",
i: 365,
},
out: {
fem: [
[{p: "اره", f: "ará"}],
[{p: "ارې", f: "are"}],
[{p: "ارو", f: "aro"}],
],
},
},
// Feminine regular ending in ع - a'
{
in: {
ts: 1527820693,
p: "مرجع",
f: "marja'",
e: "reference, authority, body, place to go (for help, shelter, etc.)",
c: "n. f.",
i: 10661,
app: "مراجع",
apf: "maraají",
},
out: {
fem: [
[{p: "مرجع", f: "marja'"}],
[{p: "مرجعې", f: "marje"}],
[{p: "مرجعو", f: "marjo"}],
],
},
},
{
in: {
ts: 1527820212,
p: "منبع",
f: "manbá",
e: "source, origin, resource, cause",
c: "n. f.",
i: 11201,
app: "منابع",
apf: "manaabí",
},
out: {
fem: [
[{p: "منبع", f: "manbá"}],
[{p: "منبعې", f: "manbe"}],
[{p: "منبعو", f: "manbo"}],
],
},
},
// Feminine regular ending in ح - a
{
in: {
ts: 1527815506,
p: "ذبح",
f: "zabha",
e: "slaughter, killing, butchering",
c: "n. f.",
i: 5813,
},
out: {
fem: [
[{p: "ذبح", f: "zabha"}],
[{p: "ذبحې", f: "zabhe"}],
[{p: "ذبحو", f: "zabho"}],
],
},
},
// Feminine inanimate regular with missing ه
{
in: {
ts: 1527814150,
p: "لار",
f: "laar",
e: "road, way, path",
c: "n. f.",
i: 9593,
},
out: {
fem: [
[{p: "لار", f: "laar"}],
[{p: "لارې", f: "laare"}],
[{p: "لارو", f: "laaro"}],
],
},
},
// Feminine animate ending in a consonant
{
in: {
ts: 1527812928,
p: "مور",
f: "mor",
e: "mother, mom",
c: "n. f. anim.",
i: 11113,
},
out: false,
},
// Feminine regular inanimate ending in ي
{
in: {
ts: 1527811877,
p: "دوستي",
f: "dostee",
e: "friendship",
c: "n. f.",
i: 5503,
},
out: {
fem: [
[{p: "دوستي", f: "dostee"}],
[{p: "دوستۍ", f: "dostuy"}],
[{p: "دوستیو", f: "dostuyo"}],
],
},
},
// Feminine regular ending in ۍ
{
in: {
ts: 1527814203,
p: "کرسۍ",
f: "kUrsuy",
e: "chair, seat, stool",
c: "n. f.",
i: 8718,
},
out: {
fem: [
[{p: "کرسۍ", f: "kUrsuy"}],
[{p: "کرسۍ", f: "kUrsuy"}],
[{p: "کرسیو", f: "kUrsuyo"}, { p: "کرسو", f: "kUrso"}],
],
},
},
// Feminine regular ending in ا
{
in: {
ts: 1527812456,
p: "اړتیا",
f: "aRtiyaa, aRtyaa",
e: "need, necessity",
c: "n. f.",
i: 376,
},
out: {
fem: [
[{p: "اړتیا", f: "aRtiyaa"}],
[{p: "اړتیاوې", f: "aRtiyaawe"}],
[{p: "اړتیاوو", f: "aRtiyaawo"}],
],
},
},
// Feminine regular ending in اع
{
in: {
ts: 1527821388,
p: "وداع",
f: "widáa'",
e: "farewell, goodbye",
c: "n. f.",
i: 12205,
},
out: {
fem: [
[{p: "وداع", f: "widáa'"}],
[{p: "وداعوې", f: "widáawe"}],
[{p: "وداعوو", f: "widáawo"}],
],
},
},
// Word with no inflections
{
in: {
ts: 1527815402,
p: "وړ",
f: "waR",
e: "worthy of, deserving, -able",
c: "suff. / adj.",
i: 12045,
noInf: true,
},
out: false,
},
];
const others: T.DictionaryEntry[] = [
{
ts: 1527812612,
p: "ګنډل",
f: "ganDul",
e: "to sew, mend, make, knit",
c: "v. trans.",
i: 9448,
},
{
ts: 1527812457,
p: "اصلاً",
f: "aslan",
e: "actually",
c: "adv.",
i: 550,
},
];
adjectives.forEach((word) => {
test(`${word.in.p} should inflect properly`, () => {
expect(inflectWord(word.in)).toEqual(word.out);
});
});
nouns.forEach((word) => {
test(`${word.in.p} should inflect properly`, () => {
expect(inflectWord(word.in)).toEqual(word.out);
});
});
others.forEach((word) => {
test(`${word.p} should return false`, () => {
expect(inflectWord(word)).toEqual(false);
});
});
test(`inflectRegularYeyUnisex should work`, () => {
expect(inflectRegularYeyUnisex("لیدونکی", "leedóonkey")).toEqual({
masc: [
[{p: "لیدونکی", f: "leedóonkey" }],
[{p: "لیدونکي", f: "leedóonkee" }],
[{p: "لیدونکیو", f: "leedóonkiyo" }, {p: "لیدونکو", f: "leedóonko"}],
],
fem: [
[{p: "لیدونکې", f: "leedóonke" }],
[{p: "لیدونکې", f: "leedóonke" }],
[{p: "لیدونکو", f: "leedóonko"}],
],
});
})

315
src/lib/pashto-inflector.ts Normal file
View File

@ -0,0 +1,315 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { pashtoConsonants } from "./pashto-consonants";
import * as T from "../types";
const endingInSingleARegex = /[^a]'??[aá]'??$/;
const endingInHeyOrAynRegex = /[^ا][هع]$/;
const endingInAlefRegex = /اع?$/;
export function inflectWord(word: T.DictionaryEntry): T.Inflections | false {
// If it's a noun/adj, inflect accordingly
// TODO: What about n. f. / adj. that end in ي ??
if (word.noInf) {
return false;
}
if (word.c && (word.c.includes("adj.") || word.c.includes("unisex"))) {
return handleUnisexWord(word);
}
if (word.c && (word.c.includes("n. m."))) {
return handleMascNoun(word);
}
if (word.c && (word.c.includes("n. f."))) {
return handleFemNoun(word);
}
// It's not a noun/adj
return false;
}
// LEVEL 2 FUNCTIONS
function handleUnisexWord(word: T.DictionaryEntry): T.Inflections | false {
// Get first of comma seperated phonetics entries
const f = word.f.split(",")[0].trim();
// Get last letter of Pashto and last two letters of phonetics
// TODO: !!! Handle weird endings / symbols ' etc.
const pEnd = word.p.slice(-1);
if (word.infap && word.infaf && word.infbp && word.infbf) {
return inflectIrregularUnisex(word.p, f, [
{p: word.infap, f: word.infaf},
{p: word.infbp, f: word.infbf},
]);
}
if (pEnd === "ی" && f.slice(-2) === "ey") {
return inflectRegularYeyUnisex(word.p, f);
}
if (pEnd === "ی" && f.slice(-2) === "éy") {
return inflectEmphasizedYeyUnisex(word.p, f);
}
if (
pashtoConsonants.includes(pEnd) ||
word.p.slice(-2) === "وی" ||
word.p.slice(-2) === "ای" ||
(word.p.slice(-1) === "ه" && f.slice(-1) === "h")
) {
return inflectConsonantEndingUnisex(word.p, f);
}
return false;
}
function handleMascNoun(word: T.DictionaryEntry): T.Inflections | false {
// Get first of comma seperated phonetics entries
const f = word.f.split(",")[0].trim();
// Get last letter of Pashto and last two letters of phonetics
// TODO: !!! Handle weird endings / symbols ' etc.
const pEnd = word.p.slice(-1);
const fEnd = f.slice(-2);
if (word.infap && word.infaf && word.infbp && word.infbf) {
return inflectIrregularMasc(word.p, f, [
{p: word.infap, f: word.infaf},
{p: word.infbp, f: word.infbf},
]);
}
const isTobEnding = (word.p.slice(-3) === "توب" && ["tób", "tob"].includes(f.slice(-3)) && word.p.length > 3);
if (isTobEnding) {
return inflectTobMasc(word.p, f);
}
if (pEnd === "ی" && fEnd === "ey") {
return inflectRegularYeyMasc(word.p, f);
}
if (pEnd === "ی" && fEnd === "éy") {
return inflectRegularEmphasizedYeyMasc(word.p, f);
}
return false;
}
function handleFemNoun(word: T.DictionaryEntry): T.Inflections | false {
// Get first of comma seperated phonetics entries
const f = word.f.split(",")[0].trim();
/* istanbul ignore next */ // will always have word.c at this point
const c = word.c || "";
const animate = c.includes("anim.");
const pEnd = word.p.slice(-1);
if (endingInHeyOrAynRegex.test(word.p) && endingInSingleARegex.test(f)) {
return inflectRegularAFem(word.p, f);
}
if (word.p.slice(-1) === "ح" && endingInSingleARegex.test(f)) {
return inflectRegularAWithHimPEnding(word.p, f);
}
if (pashtoConsonants.includes(pEnd) && !animate) {
return inflectRegularInanMissingAFem(word.p, f);
}
if (pEnd === "ي" && (!animate)) {
return inflectRegularInanEeFem(word.p, f);
}
if (pEnd === "ۍ") {
return inflectRegularUyFem(word.p, f);
}
if (endingInAlefRegex.test(word.p)) {
return inflectRegularAaFem(word.p, f);
}
return false;
}
// LEVEL 3 FUNCTIONS
function inflectIrregularUnisex(p: string, f: string, inflections: Array<{p: string, f: string}>): T.Inflections {
return {
masc: [
[{p, f}],
[{p: inflections[0].p, f: inflections[0].f}],
[{p: `${inflections[1].p}و`, f: `${inflections[1].f}o`}],
],
fem: [
[{p: `${inflections[1].p}ه`, f: `${inflections[1].f}a`}],
[{p: `${inflections[1].p}ې`, f: `${inflections[1].f}e`}],
[{p: `${inflections[1].p}و`, f: `${inflections[1].f}o`}],
],
};
}
export function inflectRegularYeyUnisex(p: string, f: string): T.UnisexInflections {
const baseP = p.slice(0, -1);
const baseF = f.slice(0, -2);
return {
masc: [
[{p, f}],
[{p: `${baseP}ي`, f: `${baseF}ee`}],
[
{p: `${baseP}یو`, f: `${baseF}iyo`},
{p: `${baseP}و`, f: `${baseF}o`},
],
],
fem: [
[{p: `${baseP}ې`, f: `${baseF}e`}],
[{p: `${baseP}ې`, f: `${baseF}e`}],
[{p: `${baseP}و`, f: `${baseF}o`}],
],
};
}
function inflectEmphasizedYeyUnisex(p: string, f: string): T.UnisexInflections {
const baseP = p.slice(0, -1);
const baseF = f.slice(0, -2);
return {
masc: [
[{p, f}],
[{p: `${baseP}ي`, f: `${baseF}ée`}],
[
{p: `${baseP}یو`, f: `${baseF}iyo`},
{p: `${baseP}و`, f: `${baseF}ó`},
],
],
fem: [
[{p: `${baseP}ۍ`, f: `${baseF}úy`}],
[{p: `${baseP}ۍ`, f: `${baseF}úy`}],
[
{ p: `${baseP}یو`, f: `${baseF}úyo` },
{ p: `${baseP}و`, f: `${baseF}ó`, },
],
],
};
}
function inflectConsonantEndingUnisex(p: string, f: string): T.UnisexInflections {
return {
masc: [
[{p, f}],
[{p, f}],
[{p: `${p}و`, f: `${f}o`}],
],
fem: [
[{p: `${p}ه`, f: `${f}a`}],
[{p: `${p}ې`, f: `${f}e`}],
[{p: `${p}و`, f: `${f}o`}],
],
};
}
function inflectRegularYeyMasc(p: string, f: string): T.Inflections {
const baseP = p.slice(0, -1);
const baseF = f.slice(0, -2);
return {
masc: [
[{p, f}],
[{p: `${baseP}ي`, f: `${baseF}ee`}],
[
{p: `${baseP}یو`, f: `${baseF}iyo`},
{p: `${baseP}و`, f: `${baseF}o`},
],
],
};
}
function inflectTobMasc(p: string, f: string): T.Inflections {
const baseP = p.slice(0, -3);
const baseF = f.slice(0, -3);
return {
masc: [
[{p, f}],
[{p: `${baseP}تابه`, f: `${baseF}taabu`}],
[{p: `${baseP}تبو`, f: `${baseF}tabo`}],
],
};
}
function inflectRegularEmphasizedYeyMasc(p: string, f: string): T.Inflections {
const baseP = p.slice(0, -1);
const baseF = f.slice(0, -2);
return {
masc: [
[{p, f}],
[{p: `${baseP}ي`, f: `${baseF}ée`}],
[
{p: `${baseP}یو`, f: `${baseF}iyo`},
{p: `${baseP}و`, f: `${baseF}o`},
],
],
};
}
function inflectIrregularMasc(p: string, f: string, inflections: Array<{p: string, f: string}>): T.Inflections {
return {
masc: [
[{p, f}],
[{p: inflections[0].p, f: inflections[0].f}],
[{p: `${inflections[1].p}و`, f: `${inflections[1].f}o`}],
],
};
}
function inflectRegularAFem(p: string, f: string): T.Inflections {
const baseF = ["'", ""].includes(f.slice(-1)) ? f.slice(0, -2) : f.slice(0, -1);
const baseP = p.slice(-1) === "ع" ? p : p.slice(0, -1);
return {
fem: [
[{p, f}],
[{p: `${baseP}ې`, f: `${baseF}e`}],
[{p: `${baseP}و`, f: `${baseF}o`}],
],
};
}
function inflectRegularAWithHimPEnding(p: string, f: string): T.Inflections {
const baseF = f.slice(0, -1);
return {
fem: [
[{p, f}],
[{p: `${p}ې`, f: `${baseF}e`}],
[{p: `${p}و`, f: `${baseF}o`}],
],
};
}
function inflectRegularInanMissingAFem(p: string, f: string): T.Inflections {
return {
fem: [
[{p, f}],
[{p: `${p}ې`, f: `${f}e`}],
[{p: `${p}و`, f: `${f}o`}],
],
};
}
function inflectRegularInanEeFem(p: string, f: string): T.Inflections {
const baseP = p.slice(0, -1);
const baseF = f.slice(0, -2);
return {
fem: [
[{p, f}],
[{p: `${baseP}ۍ`, f: `${baseF}uy`}],
[{p: `${baseP}یو`, f: `${baseF}uyo`}],
],
};
}
function inflectRegularUyFem(p: string, f: string): T.Inflections {
const baseP = p.slice(0, -1);
const baseF = f.slice(0, -2);
return {
fem: [
[{p, f}],
[{p, f}],
[
{p: `${baseP}یو`, f: `${baseF}uyo`},
{p: `${baseP}و`, f: `${baseF}o`},
],
],
};
}
function inflectRegularAaFem(p: string, f: string): T.Inflections {
const baseF = ["'", ""].includes(f.slice(-1)) ? f.slice(0, -1) : f;
return {
fem: [
[{p, f}],
[{p: `${p}وې`, f: `${baseF}we`}],
[{p: `${p}وو`, f: `${baseF}wo`}],
],
};
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,493 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
const zwar = "َ";
const zwarakey = "ٙ";
const zer = "ِ";
const pesh = "ُ";
const sukun = "ْ";
const hamzaAbove = "ٔ";
const tashdeed = "ّ";
const wasla = "ٱ";
const daggerAlif = "ٰ";
const fathahan = "ً";
// TODO: THESE OTHER TRIGRAPHS??
const quadrigraphs = ["-Ul-"];
const trigraphs = ["eyy", "éyy", "-i-", "-U-"]; // , "aay", "áay", "ooy", "óoy"];
const digraphs = ["ắ", "aa", "áa", "ee", "ée", "ey", "éy", "oo", "óo", "kh", "gh", "ts", "dz", "jz", "ch", "sh"];
const endingDigraphs = ["uy", "úy"];
const willIgnore = ["?", " ", "`", ".", "…"];
export function splitFIntoPhonemes(f: string): string[] {
const result: string[] = [];
let index = 0;
while (index < f.length) {
const isLastTwoLetters = (index === f.length - 2 || f[index + 2] === " ");
const threeLetterChunk = f.slice(index, index + 3);
const fourLetterChunk = f.slice(index, index + 4);
if (quadrigraphs.includes(fourLetterChunk)) {
result.push(fourLetterChunk);
index += 4;
continue;
}
if (trigraphs.includes(threeLetterChunk)) {
result.push(threeLetterChunk);
index += 3;
continue;
}
const twoLetterChunk = f.slice(index, index + 2);
if (
digraphs.includes(twoLetterChunk) ||
(isLastTwoLetters && endingDigraphs.includes(twoLetterChunk))
) {
result.push(twoLetterChunk);
index += 2;
continue;
}
const singleLetter = f.slice(index, index + 1);
if (!willIgnore.includes(singleLetter)) {
result.push(singleLetter);
}
index++;
}
return result;
}
const phonemeTable = [
// consonants
{ phoneme: "b", possibilities: ["ب"], consonant: true },
{ phoneme: "p", possibilities: ["پ"], consonant: true },
{ phoneme: "t", possibilities: ["ت", "ط"], consonant: true },
{ phoneme: "T", possibilities: ["ټ"], consonant: true },
{ phoneme: "s", possibilities: ["س", "ص", "ث"], consonant: true },
{ phoneme: "j", possibilities: ["ج"], consonant: true },
{ phoneme: "ch", possibilities: ["چ"], consonant: true },
{ phoneme: "kh", possibilities: ["خ"], consonant: true },
{ phoneme: "ts", possibilities: ["څ"], consonant: true },
{ phoneme: "dz", possibilities: ["ځ"], consonant: true },
{ phoneme: "d", possibilities: ["د"], consonant: true },
{ phoneme: "D", possibilities: ["ډ"], consonant: true },
{ phoneme: "r", possibilities: ["ر"], consonant: true },
{ phoneme: "R", possibilities: ["ړ"], consonant: true },
{ phoneme: "z", possibilities: ["ز", "ذ", "ظ", "ض"], consonant: true },
{ phoneme: "jz", possibilities: ["ژ"], consonant: true },
{ phoneme: "G", possibilities: ["ږ"], consonant: true },
{ phoneme: "sh", possibilities: ["ش"], consonant: true },
{ phoneme: "x", possibilities: ["ښ"], consonant: true },
{ phoneme: "gh", possibilities: ["غ"], consonant: true },
{ phoneme: "f", possibilities: ["ف"], consonant: true },
{ phoneme: "q", possibilities: ["ق"], consonant: true },
{ phoneme: "k", possibilities: ["ک"], consonant: true },
{ phoneme: "g", possibilities: ["ګ"], consonant: true },
{ phoneme: "l", possibilities: ["ل"], consonant: true },
{ phoneme: "m", possibilities: ["م"], consonant: true },
{ phoneme: "n", possibilities: ["ن"], consonant: true },
{ phoneme: "N", possibilities: ["ڼ"], consonant: true },
{ phoneme: "h", possibilities: ["ه", "ح"], consonant: true, takesSukunOnEnding: true },
{ phoneme: "w", possibilities: ["و"], consonant: true },
{ phoneme: "y", possibilities: ["ی"], consonant: true },
{ phoneme: "'", possibilities: ["ع", "ئ"], consonant: true },
{ phoneme: "-i-", isIzafe: true },
{ phoneme: "-U-", possibilities: [" و ", "و"]},
{ phoneme: "-Ul-", possibilities: ["ال"]},
// vowels
{ phoneme: "aa", possibilities: ["ا"], beginning: ["آ", "ا"], endingPossibilities: ["ا", "یٰ"], isLongA: true, canStartWithAynBefore: true },
{ phoneme: "áa", possibilities: ["ا"], beginning: ["آ", "ا"], endingPossibilities: ["ا", "یٰ"], isLongA: true, canStartWithAynBefore: true },
{ phoneme: "ee", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ي"], diacritic: zer, canStartWithAynBefore: true },
{ phoneme: "ée", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ي"], diacritic: zer, canStartWithAynBefore: true },
{ phoneme: "e", possibilities: ["ې"], addAlefOnBeginning: true },
{ phoneme: "é", possibilities: ["ې"], addAlefOnBeginning: true },
{ phoneme: "o", possibilities: ["و"], addAlefOnBeginning: true },
{ phoneme: "ó", possibilities: ["و"], addAlefOnBeginning: true },
{ phoneme: "oo", possibilities: ["و"], addAlefOnBeginning: true, alsoCanBePrefix: true, diacritic: pesh },
{ phoneme: "óo", possibilities: ["و"], addAlefOnBeginning: true, diacritic: pesh },
{ phoneme: "ey", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ی"]},
{ phoneme: "éy", possibilities: ["ی"], addAlefOnBeginning: true, endingPossibilities: ["ی"]},
{ phoneme: "uy", possibilities: ["ۍ"], endingOnly: true },
{ phoneme: "úy", possibilities: ["ۍ"], endingOnly: true }, // THIS CAN ONLY COME AT THE END DEAL WITH THIS
{ phoneme: "eyy", possibilities: ["ئ"], endingOnly: true },
{ phoneme: "éyy", possibilities: ["ئ"], endingOnly: true },
{ phoneme: "a", diacritic: zwar, endingPossibilities: ["ه"], canComeAfterHeyEnding: true, canBeFirstPartOfFathahanEnding: true },
{ phoneme: "á", diacritic: zwar, endingPossibilities: ["ه"], canComeAfterHeyEnding: true, canBeFirstPartOfFathahanEnding: true },
{ phoneme: "ă", diacritic: zwar },
{ phoneme: "ắ", diacritic: zwar },
{ phoneme: "u", diacritic: zwarakey, endingPossibilities: ["ه"], hamzaOnEnd: true },
{ phoneme: "ú", diacritic: zwarakey, endingPossibilities: ["ه"], hamzaOnEnd: true },
{ phoneme: "i", diacritic: zer, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, canBeWasla: true, beginning: ["ا", "ع"] },
{ phoneme: "í", diacritic: zer, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, canBeWasla: true, beginning: ["ا", "ع"] },
{ phoneme: "U", diacritic: pesh, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, beginning: ["ا", "ع"] },
{ phoneme: "Ú", diacritic: pesh, endingPossibilities: ["ه"], takesDiacriticBeforeGurdaHeyEnding: true, beginning: ["ا", "ع"] },
];
function isSpace(s: string): boolean {
return [" ", "\xa0"].includes(s);
}
function isEndSpace(s: string): boolean {
return [" ", "\xa0", undefined].includes(s);
}
interface IDiacriticsErrorMessage {
error: string;
phoneme: string;
i: number;
}
function possibilityMatches(p: string, pIndex: number, possibilities: string[] | undefined): boolean {
/* istanbul ignore next */
if (!possibilities) {
return false;
}
for (const possibility of possibilities) {
if (p.slice(pIndex, pIndex + possibility.length) === possibility) {
return true;
}
}
return false;
}
function isPrefixedByDirectionalPronoun(i: number, phonemes: string[]): boolean {
const potentialPronounFourCharSlice = phonemes.slice(i - 4, i).join("");
const potentialPronounThreeCharSlice = phonemes.slice(i - 3, i).join("");
if (["wăr-", "war-", "dăr-", "dar-"].includes(potentialPronounFourCharSlice)) {
return true;
}
if (potentialPronounThreeCharSlice === "raa-") {
return true;
}
return false;
}
export function phoneticsToDiacritics(ps: string, ph: string, forbidOoPrefixes: boolean = false): string | undefined {
const phonemes = splitFIntoPhonemes(ph.trim().split(",")[0]);
const p = ps.trim();
let result = "";
let pIndex = 0;
const errored: IDiacriticsErrorMessage[] = [];
let previousPhonemeWasAConsonant = false;
phonemes.forEach((phoneme, i) => {
// on its own, only used for seperating directional pronouns
if (phoneme === "-") {
return;
}
const phonemeInfo = phonemeTable.find((element) => element.phoneme === phoneme);
if (!phonemeInfo) {
errored.push({ error: "phoneme info not found", phoneme, i });
return;
}
const isDoubleConsonant = (
phonemeInfo.consonant &&
phoneme === phonemes[i - 1] &&
// TODO: is this thourough enough to allow double consonants on the ending of the previous word?
!(isSpace(p[pIndex - 1]) && phonemeInfo.possibilities.includes(p[pIndex])) // avoid false double consonant ie ازل لیک azalleek
) ? true : false;
const isBeginning = !isDoubleConsonant && ((i === 0) || isSpace(p[pIndex - 1]) || (phonemes[i - 1] === "-Ul-") || isPrefixedByDirectionalPronoun(i, phonemes));
const upcomingAEndingAfterHey = (p[pIndex] === "ح" && isSpace(p[pIndex + 1]) && ["a", "á"].includes(phonemes[i + 1]));
// TODO: break this into a seperate function -- why can it sometimes be set to undefined?
const isEnding = (i === phonemes.length - 1) || ((
(phonemeInfo.possibilities && isSpace(p[pIndex + 1])) ||
(!phonemeInfo.possibilities && isSpace(p[pIndex])) ||
(
(!phonemeInfo.possibilities && isSpace(p[pIndex + 1])) &&
(possibilityMatches(p, pIndex, phonemeInfo.endingPossibilities) || (p[pIndex] === "ع" && phonemes[i + 1] !== "'"))
)
) && !upcomingAEndingAfterHey
&& // makes sure the next letter isn't a double consonant like haqq <-
!(
phonemeInfo.consonant && phoneme === phonemes[i + 1] // &&
// !(isSpace(p[pIndex + 1]) && phonemeInfo.possibilities.includes(p[pIndex]))
)
) || // can be the trailing double consanant on the end of a word
(
phonemeInfo.consonant && phoneme === phonemes[i - 1] &&
!(isEndSpace(p[pIndex - 1]) && phonemeInfo.possibilities.includes(p[pIndex]))
) || // can be یٰ ending
(
isEndSpace(p[pIndex + 2]) && (p.slice(pIndex, pIndex + 2) === "یٰ")
);
const isUofDu = phoneme === "u" && (
p.slice(pIndex - 2, pIndex) === "د " || // د as previous word
(p[pIndex] === undefined && p[pIndex - 1] === "د") || // د as the whole thing
p.slice(pIndex - 6, pIndex) === "د ... " // ... د is as the previous word
);
// TODO: Should p[pIndex - 1] also be in there ??? It messed up قطعه for instance
const isEndingAynVowel = isEnding && phonemeInfo.diacritic && [p[pIndex], p[pIndex - 1]].includes("ع") && p[pIndex] !== "ه";
const isMiddle = !isBeginning && !isEnding;
const isSilentWaw = (
p[pIndex] === "و" &&
p[pIndex - 1] === "خ" &&
p[pIndex + 1] === "ا" &&
["áa", "aa"].includes(phoneme)
);
const isAnAEndingAfterHey = isEnding && p[pIndex - 1] === "ح" && phonemeInfo.canComeAfterHeyEnding;
if (isDoubleConsonant) {
pIndex--;
if (isSpace(p[pIndex])) {
pIndex--;
}
}
if (isDoubleConsonant && p[pIndex] === "ع") {
// ridiculously ugly hack to take care of the extra ع that gets added in words like توقع
result = result.slice(0, -1);
pIndex--;
}
if (isSilentWaw) {
result += "(و)";
pIndex++;
}
// special check for Arabic wasla
if (p.slice(0, 3) === "بال" && phonemes[i - 1] === "b" && phonemeInfo.canBeWasla && phonemes[i + 1] === "l") {
result += phonemeInfo.diacritic + wasla;
pIndex++;
previousPhonemeWasAConsonant = false;
return;
}
// special check for fathahan ending
if (phonemeInfo.canBeFirstPartOfFathahanEnding && p.slice(pIndex, pIndex + 2) === "اً") {
result += "ا";
pIndex++;
return;
}
if (isEnding && phoneme === "n" && p[pIndex] === fathahan) {
result += fathahan;
pIndex++;
return;
}
// special check for words starting with عا or عی
if (isBeginning && phonemeInfo.canStartWithAynBefore && p[pIndex] === "ع" && phonemeInfo.possibilities.includes(p[pIndex + 1])) {
result += "ع";
result += phonemeInfo.diacritic ? phonemeInfo.diacritic : "";
result += p[pIndex + 1];
pIndex += 2;
return;
}
// special check for ؤ Ua
if (phoneme === "U" && phonemes[i + 1] === "a" && phonemes[i + 2] !== "a" && p[pIndex] === "و") {
result += "ؤ";
pIndex++;
return;
}
if (phoneme === "a" && phonemes[i - 1] === "U" && phonemes[i + 1] !== "a" && result.slice(-2) === "ؤ") {
previousPhonemeWasAConsonant = false;
return;
}
// special check for و wo
if (isBeginning && phoneme === "w" && phonemes[i + 1] === "o" && p[pIndex] === "و" && isEndSpace(p[pIndex + 1])) {
result += "و";
pIndex++;
return;
}
// TODO: isEndSpace here is redundant??
if (isEnding && phoneme === "o" && phonemes[i - 1] === "w" && p[pIndex - 1] === "و" && isEndSpace(p[pIndex])) {
pIndex++;
return;
}
// special check for ال - -Ul-
if (phoneme === "-Ul-" && p.slice(pIndex, pIndex + 2) === "ال") {
result += "اُل";
pIndex += 2;
return;
}
// special check for for أ in the middle of the word
if (!isBeginning && p[pIndex] === "أ" && phoneme === "a" && phonemes[i + 1] === "'" && phonemes[i + 2] === "a") {
result += "أ";
pIndex++;
return;
}
if (p[pIndex - 1] === "أ" && phonemes[i - 1] === "a" && phoneme === "'" && phonemes[i + 1] === "a") {
return;
}
if (p[pIndex - 1] === "أ" && phonemes[i - 2] === "a" && phonemes[i - 1] === "'" && phoneme === "a") {
previousPhonemeWasAConsonant = false;
return;
}
// special check for وو 'oo
if (!isBeginning && p[pIndex] === "و" && p[pIndex + 1] === "و" && phoneme === "'" && phonemes[i + 1] === "oo") {
result += "وُو";
pIndex += 2;
return;
}
if (p[pIndex - 2] === "و" && p[pIndex - 1] === "و" && phonemes[i - 1] === "'" && phoneme === "oo") {
previousPhonemeWasAConsonant = false;
return;
}
const prevLetterWasBeginningAyn = (p[pIndex - 1] === "ع" && isEndSpace && phoneme === "'");
// check if the phoneme lines up in the Pashto word
if (isBeginning && !isUofDu && phonemeInfo.addAlefOnBeginning) {
// TODO: Maybe a little bad because it doesn't loop through possibilities
if ((!phonemeInfo.alsoCanBePrefix || forbidOoPrefixes) && p.slice(pIndex, pIndex + 2) !== "ا" + phonemeInfo.possibilities[0]) {
errored.push({ error: "didn't start with an aleph", phoneme, i });
return;
}
if (p[pIndex] === "ا") {
result += "ا"; // same as result += p[pIndex]
pIndex++;
}
} else if (isBeginning && phonemeInfo.beginning && phonemeInfo.isLongA) {
if (!phonemeInfo.beginning.includes(p[pIndex])) {
errored.push({ error: "improper beginning letter", phoneme, i });
return;
}
result += p[pIndex];
pIndex++;
return;
} else if (
(isEnding && phonemeInfo.endingPossibilities) &&
!isUofDu &&
(
!possibilityMatches(p, pIndex, phonemeInfo.endingPossibilities) &&
!isEndingAynVowel && // allowing short vowels on the end of words ending with ع
!isAnAEndingAfterHey
)
) {
errored.push({ error: "bad ending", phoneme, i });
return;
} else if (
(isEnding && !phonemeInfo.endingPossibilities) &&
phonemeInfo.possibilities &&
!phonemeInfo.possibilities.includes(p[pIndex])
) {
// console.log(phoneme, p[pIndex]);
errored.push({ error: "bad ending 2", phoneme, i });
return;
} else if (
(phonemeInfo.possibilities && !isEnding) &&
(
!(phonemeInfo.possibilities.includes(p[pIndex])) &&
!(p[pIndex] === "ن" && (p[pIndex + 1] === "ب" && phoneme === "m")) && // && // exception case with نب === mb
!prevLetterWasBeginningAyn // exception case with words starting with ع like i'zzat
)
) {
errored.push({ error: "improper coressponding letter in middle of word", phoneme, i });
return;
}
// console.log(phoneme, pIndex, p[pIndex], isEnding);
// console.log(result);
// OK, it lines up with the Pashto word, we're good
// Now continue building the result string
// deal with starting with short vowels and alef
if (!isUofDu && isBeginning && !phonemeInfo.possibilities && !phonemeInfo.isIzafe) {
// TODO: WHY IS THIS HERE
if (!["ا", "ع"].includes(p[pIndex])) {
errored.push({ error: "bad beginning 2", phoneme, i });
return;
}
result += p[pIndex];
pIndex++;
}
// if the phoneme carries a diacritic insert it (before the letter if it's coming)
const isOoPrefix = (phonemeInfo.alsoCanBePrefix && isBeginning && (p[pIndex - 1] !== "ا"));
if (phonemeInfo.diacritic && !isEnding && !isOoPrefix) {
// using this hack to remove the space and put it after the zwarakey we're going to add after د
if (isUofDu && result.slice(-5) === " ... ") {
result = result.slice(0, -5) + zwarakey + " ... ";
} else if (isUofDu && result.slice(-1) === " ") {
result = result.slice(0, -1) + zwarakey + " ";
} else {
result += phonemeInfo.diacritic;
}
}
// TODO: The middle stuff might be unneccessary/unhelpful
const isACommaWithoutAyn = (phoneme === "'" && (p[pIndex] !== "ع" && !(isMiddle && p[pIndex] === "ئ")));
// if the previous phoneme was a consonant insert a sukun
// console.log("Will I go into the adding thing?");
if (!isBeginning && previousPhonemeWasAConsonant && phonemeInfo.consonant && phonemes[i - 1] !== "'" && p[pIndex] !== "ع") {
result += isDoubleConsonant ? tashdeed : sukun;
}
if (isEnding && isDoubleConsonant) {
// This is so ugly, extra space slipping in here
if (result.slice(-2) === " " + tashdeed) {
result = result.slice(0, -2) + tashdeed;
}
}
// if there's a pashto letter for the phoneme, insert it
if (!isEndingAynVowel && !isACommaWithoutAyn && (phonemeInfo.possibilities || isEnding)) {
// need the isSpace check to prevent weird behaviour with izafe
if (!isUofDu) {
if (isAnAEndingAfterHey) {
result += zwar;
if (p[pIndex] === " ") {
result += " ";
}
} else {
result += (isDoubleConsonant || isSpace(p[pIndex])) ? "" : p[pIndex];
}
}
pIndex++;
}
if (isEnding) {
if (isUofDu) {
result += zwarakey;
} else if (phonemeInfo.hamzaOnEnd) {
result += hamzaAbove;
} else if (phonemeInfo.takesSukunOnEnding) {
result += sukun;
} else if (p[pIndex] === daggerAlif) {
result += daggerAlif;
} else if (isEndSpace(p[pIndex]) && p[pIndex - 1] === "ه" && phonemeInfo.takesDiacriticBeforeGurdaHeyEnding) {
result = result.slice(0, -1) + phonemeInfo.diacritic + "ه";
}
}
if (isEnding && isEndingAynVowel) {
if (p[pIndex] === "ع") {
result += "ع";
pIndex++;
}
result += phonemeInfo.diacritic;
if (p[pIndex] === " ") {
result += " ";
pIndex++;
}
return;
}
previousPhonemeWasAConsonant = (!isEnding && phonemeInfo.consonant) ? true : false;
// ignore the ع or ئ if there's not a ' in the phonetics
const nextPhonemeInfo = phonemeTable.find((element) => phonemes[i + 1] === element.phoneme);
if (
["ع", "ئ"].includes(p[pIndex]) &&
![phonemes[i + 1], phonemes[i + 2]].includes("'") &&
!(nextPhonemeInfo && nextPhonemeInfo.diacritic && isEndSpace(p[pIndex + 1])) && // don't skip the ع on the end if there's another short letter coming after it
!(p[pIndex] === "ئ" && isEndSpace(p[pIndex + 1])) && // don't skip ئ on the end
!phonemeInfo.isIzafe
) {
result += p[pIndex]; // add "ئ" or "ع";
pIndex++;
}
// if we've arrived at the ellipses in the circumposition, skip over it
if (p.slice(pIndex, pIndex + 5) === " ... ") {
result += " ... ";
pIndex += 5;
return;
}
// if we've arrived at a space in the Pashto, move along before the next iteration
if (isSpace(p[pIndex]) && phonemes[i + 1] !== "-i-" && !upcomingAEndingAfterHey) {
result += " ";
pIndex++;
}
// need to move ahead one more with words eding in یٰ (because that's two characters)
if (p[pIndex] === daggerAlif && isSpace(p[pIndex + 1])) {
result += " ";
pIndex += 2;
}
if (phonemeInfo.isIzafe) {
result += zer + " ";
}
});
if (errored.length) {
// console.log(errored);
return undefined;
}
return result;
}

View File

@ -0,0 +1,31 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { standardizePashto } from "./standardize-pashto";
const testPairs = [
["گوگل", "ګوګل"],
["پك", "پک"],
["ځير", "ځیر"],
["چې یې راغی، ده ورمنډه کړه.", "چې یې راغی، ده ورمنډه کړه."],
["سړی.", "سړی."],
["زما پلار خو په جنت کښې دى.", "زما پلار خو په جنت کښې دی."],
["حتیٰ", "حتیٰ"],
["چېرته دى؟", "چېرته دی؟"],
["آب", "آب"],
["راکوي؛", "راکوي؛"],
["راکوي!", "راکوي!"],
["راکوي.", "راکوي."],
];
testPairs.forEach((pair) => {
test(`${pair[0]} should be converted to ${pair[1]}`, () => {
const result = standardizePashto(pair[0]);
expect(result).toBe(pair[1]);
});
});

View File

@ -0,0 +1,20 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
export function standardizePashto(input: string): string {
// Replace Arabic ى with Farsi ی
return input.replace(/\u0649/g, "\u06cc")
// Replace Arabic ك with ک
.replace(/\u0643/g, "\u06a9")
// Replace Farsi گ with ګ
.replace(/گ/g, "ګ")
// Replace ي in the middle of words with ی
.replace(/ي(?=[\u0621-\u065f\u0670-\u06d3\u06d5])/g, "ی")
// Replace آ two character version with combined آ character
.replace(/آ/g, "آ");
}

View File

@ -0,0 +1,354 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
interface IReplacerInfoItem {
char: string;
alalc: string | IDialects;
ipa: string | IDialects;
}
interface IDialects {
standard: string;
peshawer: string;
southern: string;
}
export const replacerInfo: IReplacerInfoItem[] = [
{
char: "aa",
alalc: "ā",
ipa: "ɑ",
},
{
char: "áa",
alalc: "ā́",
ipa: "ɑ́",
},
{
char: "aay",
alalc: "āy",
ipa: "ɑj", // TODO: This should change for peshawer?
},
{
char: "áay",
alalc: "ā́y",
ipa: "ɑ́j",
},
{
char: "a",
alalc: "a",
ipa: "a",
},
{
char: "ă",
alalc: "ạ",
ipa: "æ",
},
{
char: "á",
alalc: "á",
ipa: "á",
},
{
char: "u",
alalc: "ə",
ipa: "ə",
},
{
char: "ú",
alalc: "ə­́",
ipa: "ə­́",
},
{
char: "U",
alalc: "u",
ipa: "ú",
},
{
char: "Ú",
alalc: "ú",
ipa: "ú",
},
{
char: "o",
alalc: "o",
ipa: "o",
},
{
char: "ó",
alalc: "ó",
ipa: "ó",
},
{
char: "oo",
alalc: "ō",
ipa: "u:",
},
{
char: "óo",
alalc: "ṓ",
ipa: "ú",
},
{
char: "i",
alalc: "i",
ipa: "ɪ",
},
{
char: "í",
alalc: "í",
ipa: "ɪ́",
},
{
char: "ey",
alalc: "ay",
ipa: "ai",
},
{
char: "éy",
alalc: "áy",
ipa: "ái",
},
{
char: "ee",
alalc: "ī",
ipa: "i",
},
{
char: "ée",
alalc: "ī́",
ipa: "í",
},
{
char: "uy",
alalc: "əy",
ipa: "əj",
},
{
char: "úy",
alalc: "ə́y",
ipa: "ə́j",
},
{
char: "ooy",
alalc: "ōy",
ipa: "u:j",
},
{
char: "eyy",
alalc: "ạy",
ipa: "əj",
},
{
char: "e",
alalc: "e",
ipa: "e",
},
{
char: "é",
alalc: "é",
ipa: "é",
},
{
char: "w",
alalc: "w",
ipa: "w",
},
{
char: "y",
alalc: "y",
ipa: "j",
},
{
char: "ts",
alalc: {
standard: "ṡ",
peshawer: "s",
southern: "ṡ",
},
ipa: {
standard: "t͡s",
peshawer: "s",
southern: "t͡s",
},
},
{
char: "s",
alalc: "s",
ipa: "s",
},
{
char: "dz",
alalc: {
standard: "dz",
peshawer: "z",
southern: "dz",
},
ipa: {
standard: "d͡z",
peshawer: "z",
southern: "d͡z",
},
},
{
char: "z",
alalc: "z",
ipa: "z",
},
{
char: "t",
alalc: "t",
ipa: "t̪",
},
{
char: "T",
alalc: "ṭ",
ipa: "ʈ",
},
{
char: "d",
alalc: "d",
ipa: "d̪",
},
{
char: "D",
alalc: "ḍ",
ipa: "ɖ",
},
{
char: "r",
alalc: "r",
ipa: "r",
},
{
char: "R",
alalc: "ṛ",
ipa: "ɻ",
},
{
char: "n",
alalc: "n",
ipa: "n",
},
{
char: "N",
alalc: "ṇ",
ipa: "ɳ",
},
{
char: "f",
alalc: "f",
ipa: "f",
},
{
char: "b",
alalc: "b",
ipa: "b",
},
{
char: "p",
alalc: "p",
ipa: "p",
},
{
char: "sh",
alalc: "sh",
ipa: "ʃ",
},
{
char: "x",
alalc: {
standard: "k'h",
southern: "ṣh",
peshawer: "kh",
},
ipa: {
standard: "ç",
southern: "ʂ",
peshawer: "x",
},
},
{
char: "kh",
alalc: "x",
ipa: "x",
},
{
char: "k",
alalc: "k",
ipa: "k",
},
{
char: "q",
alalc: "q",
ipa: "q",
},
{
char: "jz",
alalc: "zh",
ipa: "ʒ",
},
{
char: "G",
alalc: {
southern: "ẓh",
peshawer: "g",
standard: "ğ",
},
ipa: {
standard: "ʝ",
southern: "ʐ",
peshawer: "g",
},
},
{
char: "g",
alalc: "g",
ipa: "g",
},
{
char: "gh",
alalc: "gh",
ipa: "ɣ",
},
{
char: "j",
alalc: "j",
ipa: "d͡ʒ",
},
{
char: "ch",
alalc: "ch",
ipa: "t͡ʃ",
},
{
char: "l",
alalc: "l",
ipa: "l",
},
{
char: "m",
alalc: "m",
ipa: "m",
},
{
char: "h",
alalc: "h",
ipa: "h",
},
];
// tslint:disable-next-line
export const replacerRegex = /aay|áay|aa|áa|a|á|U|Ú|u|ú|ooy|o{1,2}|óo|ó|ey|éy|e{1,2}|ée|é|uy|úy|i|í|w|y|q|g|ts|sh|s|dz|z|t|T|d|D|r|R|n|N|f|b|p|x|kh|q|k|gh|g|G|j|ch|l|l|m|h/g;

View File

@ -0,0 +1,89 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
translatePhonetics,
} from "./translate-phonetics";
const dialects = ["southern", "standard", "peshawer"];
const systems = ["ipa", "alalc"];
const translations = [
{
original: "looT",
ipa: {
southern: "lu:ʈ",
standard: "lu:ʈ",
peshawer: "lu:ʈ",
},
alalc: {
southern: "lōṭ",
standard: "lōṭ",
peshawer: "lōṭ",
},
},
{
original: "puxto",
ipa: {
southern: "pəʂt̪o",
standard: "pəçt̪o",
peshawer: "pəxt̪o",
},
alalc: {
southern: "pəṣhto",
standard: "pək'hto",
peshawer: "pəkhto",
},
},
{
original: "luG",
ipa: {
southern: "ləʐ",
standard: "ləʝ",
peshawer: "ləg",
},
alalc: {
southern: "ləẓh",
standard: "ləğ",
peshawer: "ləg",
},
},
{
original: "saRey",
ipa: {
southern: "saɻai",
standard: "saɻai",
peshawer: "saɻai",
},
alalc: {
southern: "saṛay",
standard: "saṛay",
peshawer: "saṛay",
},
},
];
translations.forEach((t) => {
systems.forEach((system) => {
// check each dialect with given system
dialects.forEach((dialect) => {
test(
`${t.original} should be translated to ${t.ipa[dialect]} using ${system} with ${dialect} dialect`,
() => {
const translated = translatePhonetics(t.original, {
// @ts-ignore
system,
// @ts-ignore
dialect,
});
expect(translated).toBe(t[system][dialect]);
},
);
});
});
});

View File

@ -0,0 +1,33 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
replacerInfo,
replacerRegex,
} from "./translate-phonetics-replacer";
export function translatePhonetics(input: string, options: {
system: "alalc" | "ipa";
dialect: "standard" | "peshawer" | "southern";
}): string {
const translated = input.replace(replacerRegex, (mtch): any => {
const r = replacerInfo.find((x) => x.char === mtch);
/* istanbul ignore next */
if (!r) {
return;
}
const r2 = r[options.system];
if (typeof r2 === "string") {
// no dialect options present
return r2;
}
// dialect options present, choose the appropriate one
return r2[options.dialect];
});
return translated;
}

View File

@ -0,0 +1,161 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { validateEntry } from "./validate-entry";
import * as T from "../types";
const toTest: {
input: any,
output: T.DictionaryEntryError | { ok: true } | { checkComplement: true },
}[] = [
{
input: { ts: undefined },
output: {
errors: ["missing ts", "missing i", "missing p", "missing f", "missing e"],
p: "",
f: "",
e: "",
erroneousFields: ["ts", "i", "p", "f", "e"],
ts: 0,
},
},
{
input: { ts: 123, p: "کور", e: "house" },
output: {
errors: ["missing i", "missing f"],
p: "کور",
f: "",
ts: 123,
e: "house",
erroneousFields: ["i", "f"],
},
},
{
input: {"i":293,"ts":1527821299,"p":"اخطار","f":"ixtáar","e":"warning, reprimand, admonishment","c":"n. m."},
output: {
errors: ["script and phonetics do not match for p and f"],
p: "اخطار",
f: "ixtáar",
e: "warning, reprimand, admonishment",
ts: 1527821299,
erroneousFields: ["p", "f"],
},
},
{
input: {"i":2433,"ts":1527815197,"p":"پښتون","f":"puxtoon","e":"Pashtun","c":"n. m. unisex / adj. irreg.","infap":"پښتانه","infaf":"puxtaanu","infbf":"puxtan"},
output: {
errors: ["missing infbp"],
p: "پښتون",
f: "puxtoon",
e: "Pashtun",
ts: 1527815197,
erroneousFields: ["infbp"],
},
},
{
input: {"i":2433,"ts":1527815197,"p":"پښتون","f":"puxtoon","e":"Pashtun","c":"n. m. unisex / adj. irreg.","infap":"پښتانه","infaf":"puxtaanu","infbp":"پښتن"},
output: {
errors: ["missing infbf"],
p: "پښتون",
f: "puxtoon",
e: "Pashtun",
ts: 1527815197,
erroneousFields: ["infbf"],
},
},
{
input: {"i":2433,"ts":1527815197,"p":"پښتون","f":"puxtoon","e":"Pashtun","c":"n. m. unisex / adj. irreg.","infap":"پښتانه","infaf":"puktaanu","infbp":"پښتن"},
output: {
errors: ["script and phonetics do not match for infap and infaf", "missing infbf"],
p: "پښتون",
f: "puxtoon",
e: "Pashtun",
ts: 1527815197,
erroneousFields: ["infap", "infaf", "infbf"],
},
},
{
input: {"i":5000,"ts":1527819674,"p":"څملاستل","f":"tsumlaastúl","e":"to lie down","l":1596485996977,"separationAtP":2,"c":"v. intrans. seperable","psp":"څمل","psf":"tsaml","noOo":true},
output: {
errors: ["missing separationAtF"],
p: "څملاستل",
f: "tsumlaastúl",
e: "to lie down",
ts: 1527819674,
erroneousFields: ["separationAtF"],
},
},
{
input: {"i":5000,"ts":1527819674,"p":"څملاستل","f":"sumlaastúl","e":"to lie down","l":1596485996977,"separationAtP":2,"c":"v. intrans. seperable","psp":"څمل","psf":"tsaml","noOo":true},
output: {
errors: ["script and phonetics do not match for p and f", "missing separationAtF"],
p: "څملاستل",
f: "sumlaastúl",
e: "to lie down",
ts: 1527819674,
erroneousFields: ["p", "f", "separationAtF"],
},
},
{
input: {"i":5000,"ts":1527819674,"p":"څملاستل","f":"tsumlaastúl","e":"to lie down","l":1596485996977,"separationAtF":4,"c":"v. intrans. seperable","psp":"څمل","psf":"tsaml","noOo":true},
output: {
errors: ["missing separationAtP"],
p: "څملاستل",
f: "tsumlaastúl",
e: "to lie down",
ts: 1527819674,
erroneousFields: ["separationAtP"],
},
},
{
input: {"i":2222,"ts":1571859113828,"p":"پخول","f":"pakhawul","e":"to cook, prepare, to cause to ripen, mature","c":"v. stat. comp. trans."},
output: {
errors: ["missing complement for compound verb"],
p: "پخول",
f: "pakhawul",
e: "to cook, prepare, to cause to ripen, mature",
ts: 1571859113828,
erroneousFields: ["l"],
},
},
{
input: {"i":2222,"ts":1571859113828,"p":"پخول","f":"pakhawul","e":"to cook, prepare, to cause to ripen, mature","l":1574867531681,"c":"v. stat. comp. trans."},
output: {
checkComplement: true,
},
},
{
input: {"i":2231,"ts":1527812013,"p":"پراخ","f":"praakh, paráakh","e":"wide, broad, spacious, vast","c":"adj."},
output: { ok: true },
},
{
input: {"i":0,"ts":1527812013,"p":"پراخ","f":"praakh, paráakh","e":"wide, broad, spacious, vast","c":"adj."},
output: { ok: true },
},
{
input: {"i":12,"ts":1575058859661,"p":"آبدار","f":"aawdáar","e":"watery, damp, humid, juicy","c":"adj."},
output: {
errors: ["script and phonetics do not match for p and f"],
p: "آبدار",
f: "aawdáar",
e: "watery, damp, humid, juicy",
ts: 1575058859661,
erroneousFields: ["p", "f"],
},
},
{
input: {"i":12,"ts":1575058859661,"p":"آبدار","f":"aawdáar","e":"watery, damp, humid, juicy","c":"adj.","diacExcept":true},
output: { ok: true },
},
];
test("validateEntry should work", () => {
toTest.forEach((t) => {
expect(validateEntry(t.input as T.DictionaryEntry)).toEqual(t.output);
});
});

100
src/lib/validate-entry.ts Normal file
View File

@ -0,0 +1,100 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import * as T from "../types";
import {
phoneticsToDiacritics,
} from "./phonetics-to-diacritics";
const textFieldPairs: [T.DictionaryEntryTextField, T.DictionaryEntryTextField][] = [
["p", "f"],
["infap", "infaf"],
["infbp", "infbf"],
["app", "apf"],
["ppp", "ppf"],
["psp", "psf"],
["ssp", "ssf"],
["prp", "prf"],
["pprtp", "pprtf"],
["tppp", "tppf"],
];
const requiredFields: T.DictionaryEntryField[] = [
"ts", "i", "p", "f", "e",
];
export function validateEntry(entry: T.DictionaryEntry): T.DictionaryEntryError | {
ok: true,
} | {
checkComplement: true,
} {
let errors: string[] = [];
const erroneousFields = new Set<T.DictionaryEntryField>();
requiredFields.forEach((field) => {
if (field !== "i" && !entry[field]) {
errors.push(`missing ${field}`);
erroneousFields.add(field);
}
if (field === "i" && typeof entry[field] !== "number") {
errors.push(`missing ${field}`);
erroneousFields.add(field);
}
});
textFieldPairs.forEach((pair) => {
const pField = pair[0];
const fField = pair[1];
const p = entry[pField];
const f = entry[fField];
if (!requiredFields.includes(pair[0])) {
if (!p && !f) {
return;
}
if (!p && f) {
errors.push(`missing ${pField}`);
erroneousFields.add(pField);
return;
}
if (p && !f) {
errors.push(`missing ${fField}`);
erroneousFields.add(fField);
return;
}
}
if (p && f && (!phoneticsToDiacritics(p, f) && !entry.diacExcept)) {
errors.push(`script and phonetics do not match for ${pField} and ${fField}`);
erroneousFields.add(pField)
erroneousFields.add(fField);
}
});
if ((entry.separationAtP && !entry.separationAtF)) {
errors.push("missing separationAtF");
erroneousFields.add("separationAtF");
}
if ((!entry.separationAtP && entry.separationAtF)) {
errors.push("missing separationAtP");
erroneousFields.add("separationAtP");
}
if (entry.c && entry.c.slice(0, 2) === "v." && entry.c.includes("comp.") && !entry.l) {
errors.push("missing complement for compound verb");
erroneousFields.add("l");
}
if (errors.length) {
return {
errors,
p: entry.p || "",
f: entry.f || "",
e: entry.e || "",
ts: entry.ts || 0,
erroneousFields: Array.from(erroneousFields),
};
}
if (entry.c && entry.c.slice(0, 2) === "v." && entry.c.includes("comp.") && entry.l) {
return { checkComplement: true };
}
return { ok: true };
}

632
src/lib/verb-conjugation.ts Normal file
View File

@ -0,0 +1,632 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { getVerbInfo } from "./verb-info";
import {
presentEndings,
pastEndings,
imperativeEndings,
baParticle,
equativeEndings,
emptyVerbBlock,
passiveStativeBridge,
aayTail,
} from "./grammar-units";
import {
addToForm,
mapVerbBlock,
concatPsString,
allOnePersonVerbForm,
complementInflects,
concatInflections,
unisexInfToObjectMatrix,
inflectYey,
psStringFromEntry,
allOnePersonInflection,
psStringEquals,
} from "./p-text-helpers";
import {
accentOnNFromEnd,
} from "./accent-helpers";
import { pashtoConsonants } from "./pashto-consonants";
import {
checkForIrregularConjugation,
stativeAux,
} from "./irregular-conjugations";
import {
chooseParticipleInflection,
spaceInForm,
noPersInfs,
} from "./misc-helpers";
import * as T from "../types";
const dummyEntry: T.DictionaryEntry = { i: 0, p: "", f: "", e: "", c: "", ts: 0 };
const getAayTail = (type: T.AayTail): T.PsString => (
type === "ey"
? { p: "ی", f: "ey" }
: { p: "ای", f: "aay" }
);
export function conjugateVerb(entry: T.DictionaryEntry, aayTailType: T.AayTail, complement?: T.DictionaryEntry, verbInfo?: T.NonComboVerbInfo): T.VerbOutput {
const irregularConj = checkForIrregularConjugation(entry);
if (irregularConj) {
return irregularConj;
}
const info = verbInfo ? verbInfo : getVerbInfo(entry, complement);
if (info.type === "transitive or grammatically transitive simple") {
return {
info,
transitive: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.transitive) as T.VerbConjugation,
grammaticallyTransitive: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.grammaticallyTransitive) as T.VerbConjugation,
};
}
if (info.type === "dynamic or stative compound" || info.type === "dynamic or generative stative compound") {
return {
info,
stative: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.stative) as T.VerbConjugation,
dynamic: conjugateVerb(dummyEntry, aayTailType, dummyEntry, info.dynamic) as T.VerbConjugation,
};
}
if (info.type === "dynamic compound") {
return conjugateDynamicCompound(info, aayTailType);
}
const nonComboInfo = info as T.NonComboVerbInfo;
// TODO: Handle verbs like چيغه کول
const conjugation: T.VerbConjugation = {
info: nonComboInfo,
imperfective: makeAspectContent(nonComboInfo, "imperfective", aayTailType),
perfective: makeAspectContent(nonComboInfo, "perfective", aayTailType),
hypothetical: makeHypotheticalContent(nonComboInfo),
participle: makeParticipleContent(nonComboInfo),
perfect: makePerfectContent(nonComboInfo),
..."singularForm" in info ? {
singularForm: conjugateVerb(entry, aayTailType, complement, info.singularForm) as T.VerbConjugation,
} : {},
// if transitive include passive voice
...info.transitivity !== "intransitive" ? {
// TODO: STATIVE COMPOUND VERSION OF THIS
passive: makePassiveContent(nonComboInfo),
} : {},
};
return nonComboInfo.transitivity === "grammatically transitive"
? enforceObject(conjugation, 10)
: nonComboInfo.type === "generative stative compound"
? enforceObject(conjugation, nonComboInfo.objComplement.person)
: conjugation;
}
function conjugateDynamicCompound(info: T.DynamicCompoundVerbInfo, aayTailType: "ey" | "aay"): T.VerbConjugation {
const willUseImperative = !(
info.type === "dynamic compound"
&& info.transitivity === "intransitive"
&& info.auxVerb.p === "کېدل"
);
const auxConj = enforceObject(
conjugateVerb(info.auxVerb, aayTailType, info.auxVerbComplement) as T.VerbConjugation,
info.objComplement.person,
);
const complement = info.objComplement.plural
? info.objComplement.plural
: psStringFromEntry(info.objComplement.entry);
const makeAspectContent = (aspect: T.Aspect): T.AspectContent => {
const makeModalContent = (): T.ModalContent => {
const nonImperative = addToForm([complement, " "], auxConj[aspect].modal.nonImperative);
const future = addToForm([baParticle, " "], nonImperative);
const past = addToForm([complement, " "], auxConj[aspect].modal.past);
const hypotheticalPast = addToForm([complement, " "], auxConj[aspect].modal.hypotheticalPast);
return {
nonImperative,
future,
past,
hypotheticalPast,
};
};
const ac = auxConj[aspect];
const nonImperative = addToForm([complement, " "], ac.nonImperative);
const future = addToForm([baParticle, " "], nonImperative);
const imperative = (ac.imperative && willUseImperative)
? addToForm([complement, " "], ac.imperative)
: null;
const past = addToForm([complement, " "], auxConj[aspect].past);
const modal = makeModalContent();
return {
nonImperative,
future,
...imperative ? {
imperative,
} : {},
past,
modal,
};
}
const hypothetical = addToForm([complement, " "], auxConj.hypothetical);
const auxPPart = auxConj.participle.past;
const participle = {
present: concatInflections(complement, auxConj.participle.present),
past: (
(("long" in auxPPart) && ("masc" in auxPPart.long)) ||
("masc" in auxPPart)
)
// @ts-ignore
? concatInflections(complement, auxPPart)
// @ts-ignore
: concatPsString(complement, " ", auxPPart)
}
const makePerfect = (pset: T.PerfectContent) => ({
halfPerfect: addToForm([complement, " "], pset.halfPerfect),
past: addToForm([complement, " "], pset.past),
present: addToForm([complement, " "], pset.present),
subjunctive: addToForm([complement, " "], pset.subjunctive),
future: addToForm([complement, " "], pset.future),
affirmational: addToForm([complement, " "], pset.affirmational),
pastSubjunctiveHypothetical: addToForm([complement, " "], pset.pastSubjunctiveHypothetical),
});
const makePassiveAspectContent = (aspect: T.Aspect, passive: T.PassiveContent): T.AspectContentPassive => {
const nonImperative = addToForm([complement, " "], passive[aspect].nonImperative);
const future = addToForm([baParticle, " "], nonImperative);
const past = addToForm([complement, " "], passive[aspect].past);
return {
nonImperative,
future,
past,
};
}
return {
info,
imperfective: makeAspectContent("imperfective"),
perfective: makeAspectContent("perfective"),
hypothetical,
participle,
perfect: makePerfect(auxConj.perfect),
...auxConj.passive ? {
passive: {
imperfective: makePassiveAspectContent("imperfective", auxConj.passive),
perfective: makePassiveAspectContent("perfective", auxConj.passive),
perfect: makePerfect(auxConj.passive.perfect),
},
} : {},
...info.singularForm ? {
singularForm: conjugateDynamicCompound(info.singularForm, aayTailType)
} : {},
...info.intransitiveForm ? {
intransitiveForm: conjugateDynamicCompound(info.intransitiveForm, aayTailType)
} : {},
};
}
function makeAspectContent(info: T.NonComboVerbInfo, aspect: T.Aspect, aayTailType: T.AayTail): T.AspectContent {
if ((info.type === "stative compound") && spaceInForm(info.root[aspect])) {
return makeStativeCompoundSeperatedAspectContent(info, aspect, aayTailType);
}
const stem = noPersInfs(info.stem[aspect]);
const root = noPersInfs(info.root[aspect]);
const nonImperative = addToForm([stem], presentEndings);
const future = addToForm([baParticle, " "], nonImperative);
const imperative = addToForm([stem], imperativeEndings);
const roughPast = addToForm([root], pastEndings) as T.LengthOptions<T.VerbBlock>;
// add accents and idiosyncratic third person sing masc forms
const past = finishSimpleVerbPast(info, aspect, roughPast);
return {
nonImperative, // stem + present endings
future, // به - ba + nonImperative
imperative, // stem + imperative endings
past, // root + past endings
modal: makeJoinedModalContent(info, aspect, aayTailType),
};
}
function makeJoinedModalContent(info: T.NonComboVerbInfo, aspectIn: T.Aspect, aayTailType: T.AayTail): T.ModalContent {
const aspect: T.Aspect = noPerfectiveModal(info) ? "imperfective" : aspectIn;
const aayTail = getAayTail(aayTailType);
const aux = stativeAux.intransitive.perfective;
const rAndT = info.yulEnding
? concatPsString(noPersInfs(info.root[aspect]).long, aayTail)
: concatPsString(noPersInfs(info.root[aspect]), aayTail);
const rootAndTail = aspect === "imperfective"
? accentImperfectiveModalRootAndTail(info, rAndT)
: rAndT;
const nonImperative = addToForm([rootAndTail, " "], aux.nonImperative);
const future = addToForm([baParticle, " "], nonImperative);
const past = addToForm(
[rootAndTail, " "],
// @ts-ignore
aux.past.short,
);
const hypotheticalPast = addToForm([rootAndTail, " ", { p: "شو", f: "shw" }, aayTail], emptyVerbBlock);
return {
nonImperative, // ROOT + aayTail + kedulStat subjunctive
future, // به - ba + modal nonImperative
past, // ROOT + aayTail + kedulStat simple past
hypotheticalPast, // ROOT + aayTail + sh + aayTail
};
}
function makeStativeCompoundSeperatedAspectContent(info: T.StativeCompoundVerbInfo, aspect: T.Aspect, aayTailType: T.AayTail): T.AspectContent {
const transitivity = getTransitivity(info);
const presentComplement = (transitivity === "transitive" && complementInflects(info.complement))
? unisexInfToObjectMatrix(info.complement) // transitive verb requires an object matrix for the complex
: info.complement; // intransitive verb doesn't require that because the complement matches the subject
function makeTransitiveStativeModalContent() {
const aux = stativeAux[transitivity][aspect].modal;
const nonImperative = addToForm([presentComplement, " "], aux.nonImperative);
const future = addToForm([baParticle, " "], nonImperative);
const past = addToForm([info.complement, " "], aux.past);
const hypotheticalPast = addToForm([info.complement, " "], aux.hypotheticalPast);
return {
nonImperative,
future,
past,
hypotheticalPast,
};
}
const aux = stativeAux[transitivity][aspect];
// CHECK, does this work with transitive and intransitive??
const nonImperative = addToForm(
[presentComplement, " "],
stativeAux[transitivity][aspect].nonImperative,
);
const future = addToForm([baParticle, " "], nonImperative);
const imperative = aux.imperative
? addToForm([presentComplement, " "], aux.imperative)
: null;
const past = addToForm([info.complement, " "], aux.past);
return {
nonImperative,
future,
past,
...imperative ? {
imperative,
} : {},
modal: info.transitivity === "transitive"
? makeTransitiveStativeModalContent()
: makeJoinedModalContent(info, "imperfective", aayTailType),
};
}
function makeHypotheticalContent(info: T.NonComboVerbInfo): T.VerbForm {
function makeStativeCompoundSepHypotheticalContent(info: T.StativeCompoundVerbInfo): T.VerbForm {
const transitivity = getTransitivity(info);
const aux = stativeAux[transitivity].hypothetical;
return addToForm([
(transitivity === "transitive" && complementInflects(info.complement))
? unisexInfToObjectMatrix(info.complement)
: info.complement,
" ",
], aux);
}
if (("complement" in info) && spaceInForm(info.root.imperfective)) {
return makeStativeCompoundSepHypotheticalContent(info as T.StativeCompoundVerbInfo);
}
const makeHypothetical = (root: T.OptionalPersonInflections<T.LengthOptions<T.PsString>>, length: "short" | "long"): T.PsString => {
if ("mascSing" in root) {
// BIG TODO: SHOULD THERE BE PERS INFS HERE?? IGNORING THEM NOW IF THEY EXIST
return makeHypothetical(root.mascSing, length) as T.PsString;
}
return accentOnNFromEnd(
concatPsString(root[length], aayTail),
(length === "long" ? 1 : 0) + (info.yulEnding ? 1 : 0),
)
};
const hyp = {
short: makeHypothetical(info.root.imperfective, "short"),
long: makeHypothetical(info.root.imperfective, "long"),
};
return addToForm([hyp], emptyVerbBlock);
}
function makeParticipleContent(info: T.NonComboVerbInfo): T.ParticipleContent {
const transitivity = getTransitivity(info);
const past = ("complement" in info)
? concatInflections(info.complement, stativeAux[transitivity].participle.past as T.UnisexInflections)
: ("objComplement" in info)
? concatInflections(info.objComplement.plural ? info.objComplement.plural : info.objComplement.entry, stativeAux[transitivity].participle.past as T.UnisexInflections)
: inflectYey(noPersInfs(info.participle.past));
const present = ("complement" in info && spaceInForm(info.root.imperfective))
? concatInflections(info.complement, stativeAux[transitivity].participle.present as T.UnisexInflections)
: inflectYey(noPersInfs(info.participle.present));
if ("objComplement" in info) {
console.log(info.objComplement, past);
}
return {
present, // PAST PARTICIPLE inflected
past, // PRESENT PARTICIPLE inflected
};
}
function makePerfectContent(info: T.NonComboVerbInfo): T.PerfectContent {
const transitivity = getTransitivity(info);
const pastPart: (" " | T.SingleOrLengthOpts<T.UnisexInflections> | T.SingleOrLengthOpts<T.PsString>)[] =
(info.type === "stative compound")
// for stative compounds
? [info.complement, " ", stativeAux[transitivity].participle.past]
// for regular compounds
: [inflectYey(noPersInfs(info.participle.past))]
const halfPerfect = addToForm([...pastPart], emptyVerbBlock);
const past = addToForm([...pastPart, " "], equativeEndings.past.short);
const present = addToForm([...pastPart, " "], equativeEndings.present);
const subjunctive = addToForm([...pastPart, " "], equativeEndings.subjunctive);
const future = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.subjunctive);
const affirmational = addToForm([baParticle, " ", ...pastPart, " "], equativeEndings.past.short);
const pastSubjunctiveHypothetical = addToForm([...pastPart, " "], equativeEndings.hypothetical);
return {
halfPerfect, // Past Participle
past, // Past Participle + Past Equative
present, // Past Participle + Present Equative
subjunctive, // Past Participle + Subjunctive Equative
future, // به - ba + Past Participle + Future/Subj Equative
affirmational, // به - ba + Past Participle + Past Equative
pastSubjunctiveHypothetical, // Past Participle + وای - waay
};
}
function makePassiveContent(info: T.NonComboVerbInfo): {
imperfective: T.AspectContentPassive // --╖ ASPECT = "imperfective"
perfective: T.AspectContentPassive // --╜ ASPECT = "perfective"
perfect: T.PerfectContent;
} {
function makePassiveAspectContent(aspect: T.Aspect): T.AspectContentPassive {
if ("complement" in info && spaceInForm(info.root[aspect])) {
// seperated stative compound verb
const bridge = aspect === "imperfective"
? noPersInfs(stativeAux.transitive.info.root.imperfective).long
: passiveStativeBridge;
const nonImperative = addToForm(
[info.complement, " ", bridge, " "],
stativeAux.intransitive[aspect].nonImperative,
);
const future = addToForm([baParticle, " "], nonImperative);
const past = addToForm(
[info.complement, " ", bridge, " "],
stativeAux.intransitive[aspect].past,
);
return {
nonImperative,
future,
past,
};
}
const root = noPersInfs(info.root[aspect]).long;
const aux = stativeAux.intransitive[aspect];
const nonImperative = addToForm([root, " "], aux.nonImperative);
const future = addToForm([baParticle, " "], nonImperative);
const past = addToForm([root, " "], aux.past);
return {
nonImperative, // ROOT LONG + kedulStat[aspect].nonImperative
future, // به ba + ROOT LONG + this.nonImperative
past, // ROOT LONG + kedulStat[aspect].past
};
}
const simpleVerbParticiple = {
past: concatPsString(
noPersInfs(info.root.imperfective).long,
" ",
stativeAux.intransitive.info.participle.past as T.PsString,
),
present: { p: ا", f: "n / a" },
};
const perfect = (info.type === "stative compound")
? makePassivePerfectContent(info)
: makePerfectContent({ ...info, participle: simpleVerbParticiple });
return {
imperfective: makePassiveAspectContent("imperfective"),
perfective: makePassiveAspectContent("perfective"),
perfect: perfect,
};
}
function makePassivePerfectContent(info: T.StativeCompoundVerbInfo): T.PerfectContent {
const pPart = stativeAux.intransitive.participle.past;
// will always be transitive
const halfPerfect = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart],
emptyVerbBlock,
);
const past = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.past.short,
);
const present = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.present,
);
const subjunctive = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.subjunctive,
);
const future = addToForm(
[baParticle, " ", info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.subjunctive,
);
const affirmational = addToForm(
[baParticle, " ", info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.past.short,
);
const pastSubjunctiveHypothetical = addToForm(
[info.complement, " ", passiveStativeBridge, " ", pPart, " "],
equativeEndings.hypothetical,
);
return {
halfPerfect,
past,
present,
subjunctive,
future,
affirmational,
pastSubjunctiveHypothetical,
};
}
function enforceObject(conj: T.VerbConjugation, person: T.Person): T.VerbConjugation {
const modifyPastInAspect = (as: T.AspectContent): T.AspectContent => ({
nonImperative: allOnePersonInflection(as.nonImperative, person),
future: allOnePersonInflection(as.future, person),
...as.imperative ? {
imperative: allOnePersonInflection(as.imperative, person),
} : {},
past: allOnePersonVerbForm(as.past, person),
modal: {
...as.modal,
past: allOnePersonVerbForm(as.modal.past, person),
},
});
const modifyParticiple = (part: T.ParticipleContent): T.ParticipleContent => ({
// TODO: What to do with this!
present: allOnePersonInflection(part.present, person),
past: chooseParticipleInflection(part.past, person),
});
const modifyPerfect = (perf: T.PerfectContent): T.PerfectContent => ({
halfPerfect: allOnePersonVerbForm(perf.halfPerfect, person),
past: allOnePersonVerbForm(perf.past, person),
present: allOnePersonVerbForm(perf.present, person),
subjunctive: allOnePersonInflection(perf.subjunctive, person),
future: allOnePersonVerbForm(perf.future, person),
affirmational: allOnePersonVerbForm(perf.affirmational, person),
pastSubjunctiveHypothetical: allOnePersonVerbForm(perf.pastSubjunctiveHypothetical, person),
});
const modifyPassiveAspect = (as: T.AspectContentPassive): T.AspectContentPassive => ({
nonImperative: allOnePersonVerbForm(as.nonImperative, person),
future: allOnePersonVerbForm(as.future, person),
past: allOnePersonVerbForm(as.past, person),
});
return {
...conj,
imperfective: modifyPastInAspect(conj.imperfective),
perfective: modifyPastInAspect(conj.perfective),
participle: modifyParticiple(conj.participle),
perfect: modifyPerfect(conj.perfect),
...conj.passive ? {
passive: {
imperfective: modifyPassiveAspect(conj.passive.imperfective),
perfective: modifyPassiveAspect(conj.passive.perfective),
perfect: modifyPerfect(conj.passive.perfect),
}
} : {},
};
}
// 2ND LEVER HELPERS
function finishSimpleVerbPast(
info: T.NonComboVerbInfo,
aspect: T.Aspect,
roughPast: T.LengthOptions<T.VerbBlock>,
): T.VerbForm {
const applyAccent = (block: T.VerbBlock, form: "short" | "long"): T.VerbBlock => (
mapVerbBlock((item: T.PsString, rowNum: number | undefined, colNum: number | undefined) => {
const nonRedundantLEnding = (
(rowNum === 4 && colNum === 1) &&
item.p.slice(-1) === "ل" &&
["ul", "úl"].includes(item.f.slice(-2))
)
const n = (((form === "short") || nonRedundantLEnding) ? 0 : 1) + (info.yulEnding ? 1 : 0);
return accentOnNFromEnd(item, n);
}, block)
);
const short = ensureShort3rdPersMascSing(info, aspect, roughPast.short);
if (aspect === "imperfective") {
return {
short: applyAccent(short, "short"),
long: applyAccent(roughPast.long, "long"),
};
}
// don't apply the accent on the perfective because the accent will
// already have been included in the perfective root
return { ...roughPast, short };
}
function ensureShort3rdPersMascSing(
info: T.NonComboVerbInfo,
aspect: T.Aspect,
block: T.VerbBlock,
): T.VerbBlock {
const replace3rdPersMascSing = (
replacement: T.ArrayOneOrMore<T.PsString>,
block: T.VerbBlock,
): T.VerbBlock => ([
...block.slice(0, 4),
[replacement, block[4][1]],
block[5],
] as T.VerbBlock);
const makeAawuForm = (root: T.PsString): T.PsString => {
const base = {
p: root.p.slice(0, -1),
f: root.f.slice(0, -2),
};
return concatPsString(base, { p: "اوه", f: "aawu" });
}
const infinitive = noPersInfs(info.root.imperfective).long;
const endsInAwul = (
(["awul", "awúl"].includes(infinitive.f.slice(-4)))
&&
(infinitive.p.slice(-2) === "ول")
);
if (endsInAwul) {
const root = noPersInfs(info.root[aspect]).short;
return replace3rdPersMascSing([makeAawuForm(root)], block);
}
if (info.idiosyncraticThirdMascSing) {
const form = info.idiosyncraticThirdMascSing[aspect];
// if it ends in a consonant, the special form will also have another
// variation ending with a ه - u
const endsInAConsonant = pashtoConsonants.includes(form.p.slice(-1));
const replacement: T.ArrayOneOrMore<T.PsString> = endsInAConsonant
? [form, concatPsString(form, { p: "ه", f: "u" })]
: [form];
return replace3rdPersMascSing(replacement, block);
}
// No need for any special third person masculine singular forms
return block;
}
function accentImperfectiveModalRootAndTail(
info: T.NonComboVerbInfo,
rt: T.SingleOrLengthOpts<T.PsString>,
length?: "long" | "short",
): T.SingleOrLengthOpts<T.PsString> {
if ("long" in rt) {
return {
short: accentImperfectiveModalRootAndTail(info, rt.short, "short") as T.PsString,
long: accentImperfectiveModalRootAndTail(info, rt.long, "long") as T.PsString,
}
}
const n = info.yulEnding
? 2
: length === "short"
? 0
: 1;
return accentOnNFromEnd(rt, n);
}
function getTransitivity(info: T.VerbInfo): "transitive" | "intransitive" {
return ("transitivity" in info && info.transitivity === "intransitive")
? "intransitive"
: "transitive";
}
function noPerfectiveModal(info: T.NonComboVerbInfo): boolean {
if (!("mascSing" in info.root.imperfective)) {
const inf = info.root.imperfective.long;
return (
inf.p === "راتلل" ||
psStringEquals({ p: "تلل", f: "tlul" }, inf) ||
inf.p === "درتلل" ||
inf.p === "ورتلل"
);
}
return false;
}

2680
src/lib/verb-info.test.ts Normal file

File diff suppressed because it is too large Load Diff

938
src/lib/verb-info.ts Normal file
View File

@ -0,0 +1,938 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
concatPsString,
firstPhonetics,
makePsString,
psStringEquals,
removeEndingL,
yulEndingInfinitive,
removeRetroflexR,
inflectYey,
unisexInfToObjectMatrix,
complementInflects,
beginsWithDirectionalPronoun,
checkForOoPrefix,
removeStartingTick,
ensureShortWurShwaShift,
choosePersInf,
} from "./p-text-helpers";
import {
accentOnFront,
accentOnNFromEnd,
removeAccents,
} from "./accent-helpers";
import {
inflectWord,
} from "./pashto-inflector";
import {
stativeAux,
} from "./irregular-conjugations";
import {
presentParticipleSuffix
} from "./grammar-units";
import {
dynamicAuxVerbs,
} from "./dyn-comp-aux-verbs";
import {
getPersonInflectionsKey,
getPersonNumber,
spaceInForm,
getAuxTransitivity,
chooseParticipleInflection,
} from "./misc-helpers";
import * as T from "../types";
const eyEndingUnaccented: T.PsString = { p: "ی", f: "ey" };
/**
* Compiles the base information (roots, stems etc.) needed in order
* to make all the conjugations. This is the first step of creating
* the conjugations.
*
* @param entry - the dictionary entry for the verb
* @param complement - the dictioanry entry for the complement of the verb if compound
*/
export function getVerbInfo(
entry: T.DictionaryEntry,
complement?: T.DictionaryEntry,
): T.VerbInfo {
const type = getType(entry);
if (type === "transitive or grammatically transitive simple") {
return {
type: "transitive or grammatically transitive simple",
transitive: getVerbInfo(
// @ts-ignore (will have entry.c)
{ ...entry, c: entry.c.replace("trans./gramm. trans.", "trans.") },
) as T.SimpleVerbInfo,
grammaticallyTransitive: getVerbInfo(
// @ts-ignore (will have entry.c)
{ ...entry, c: entry.c.replace("trans./gramm. trans.", "gramm. trans.") },
) as T.SimpleVerbInfo,
};
}
const transitivity = getTransitivity(entry);
if (type !== "simple") {
if (!complement) {
throw new Error("complement required for compound verb");
}
if (type === "dynamic compound") {
return getDynamicCompoundInfo(entry, complement)
}
if (type === "dynamic or stative compound") {
return {
type: "dynamic or stative compound",
transitivity,
dynamic: getDynamicCompoundInfo(
// @ts-ignore (will have entry.c)
{ ...entry, c: entry.c.replace("dyn./stat.", "dyn.") },
complement,
),
stative: getVerbInfo(
// @ts-ignore (will have entry.c)
{ ...entry, c: entry.c.replace("dyn./stat.", "stat.") },
complement,
) as T.StativeCompoundVerbInfo,
};
}
if (type === "dynamic or generative stative compound") {
return {
type: "dynamic or generative stative compound",
transitivity,
dynamic: getDynamicCompoundInfo(
// @ts-ignore (will have entry.c)
{ ...entry, c: entry.c.replace("gen. stat./dyn.", "dyn.") },
complement,
),
stative: getGenerativeStativeCompoundVerbInfo(
// @ts-ignore (will have entry.c)
{ ...entry, c: entry.c.replace("gen. stat./dyn.", "gen. stat.") },
complement,
),
}
}
if (type === "generative stative compound") {
return getGenerativeStativeCompoundVerbInfo(entry, complement as T.DictionaryEntry);
}
}
const comp = complement ? ensureUnisexInflections(complement) : undefined;
const root = getVerbRoots(entry, transitivity, comp);
const stem = getVerbStems(entry, root, transitivity, comp);
const infinitive = "mascSing" in root.imperfective ? root.imperfective.mascSing.long : root.imperfective.long;
const yulEnding = yulEndingInfinitive(infinitive);
const participle = getParticiple(entry, stem, infinitive, transitivity, comp);
const idiosyncraticThirdMascSing = getIdiosyncraticThirdMascSing(entry);
const baseInfo: T.VerbInfoBase = {
transitivity,
yulEnding,
root,
stem,
participle,
...idiosyncraticThirdMascSing ? {
idiosyncraticThirdMascSing,
} : {},
};
if (type === "stative compound") {
return {
...baseInfo,
type,
complement: comp as T.UnisexInflections,
};
}
return {
...baseInfo,
type,
};
}
type Bases = {
stem: {
imperfective: T.FullForm<T.PsString>,
perfective: T.FullForm<T.PsString>,
perfectiveSplit?: T.SplitInfo,
},
root: {
imperfective: T.FullForm<T.PsString>,
perfective: T.FullForm<T.PsString>,
perfectiveSplit?: T.SplitInfo,
},
participle: {
present: T.FullForm<T.PsString>,
past: T.FullForm<T.PsString>,
},
}
function getGenerativeStativeCompoundVerbInfo(
entry: T.DictionaryEntry, comp: T.DictionaryEntry, forceSingular?: true,
): T.GenerativeStativeCompoundVerbInfo {
const transitivity = getTransitivity(entry);
const transitivityNoGrammTrans = transitivity === "grammatically transitive" ? "transitive" : transitivity;
const yulEnding = null;
const objComplement = getObjComplementInfo(entry, comp, forceSingular);
const auxVerb = stativeAux[transitivityNoGrammTrans];
const compUsed = objComplement.plural ? objComplement.plural : makePsString(
objComplement.entry.p,
firstPhonetics(objComplement.entry.f),
);
const bases: Bases = {
stem: {
imperfective: auxVerb.info.stem.imperfective,
perfective: auxVerb.info.stem.perfective,
},
root: {
imperfective: auxVerb.info.root.imperfective,
perfective: auxVerb.info.root.perfective,
},
participle: {
present: auxVerb.info.participle.present,
past: chooseParticipleInflection(
inflectYey(
"mascSing" in auxVerb.info.participle.past
// purely for type saftey, will not have mascSing
// in a non stative compound verb
/* istanbul ignore next */
? auxVerb.info.participle.past.mascSing
: auxVerb.info.participle.past
),
objComplement.person,
),
}
}
const perfectiveStem = concatPsString(compUsed, " ", bases.stem.perfective);
const stem = {
imperfective: concatPsString(compUsed, " ", bases.stem.imperfective),
perfective: perfectiveStem,
perfectiveSplit: splitPerfective(perfectiveStem, 0, 0, true),
};
const perfectiveRoot = concatPsString(compUsed, " ", bases.root.perfective) as T.OptionalPersonInflections<T.LengthOptions<T.PsString>>;
const root = {
imperfective: concatPsString(compUsed, " ", bases.root.imperfective) as T.OptionalPersonInflections<T.LengthOptions<T.PsString>>,
perfective: perfectiveRoot,
perfectiveSplit: splitPerfective(perfectiveRoot, 0, 0, true),
};
const participle = {
present: concatPsString(compUsed, " ", auxVerb.info.participle.present),
past: concatPsString(compUsed, " ", bases.participle.past),
}
return {
type: "generative stative compound",
transitivity,
yulEnding,
stem,
root,
participle,
objComplement,
...objComplement.plural ? {
singularForm: getGenerativeStativeCompoundVerbInfo(entry, comp, true),
} : {},
};
}
function getDynamicCompoundInfo(entry: T.DictionaryEntry, comp: T.DictionaryEntry, forceSingular?: true): T.DynamicCompoundVerbInfo {
const transitivity = getTransitivity(entry);
const yulEnding = null;
const objComplement = getObjComplementInfo(entry, comp, forceSingular);
const auxVerb = getDynamicAuxVerb(entry);
const auxVerbInfo = getVerbInfo(auxVerb.entry, auxVerb.complement) as T.NonComboVerbInfo;
const compUsed = objComplement.plural ? objComplement.plural : makePsString(
objComplement.entry.p,
firstPhonetics(objComplement.entry.f),
);
const bases: Bases = (auxVerbInfo.type === "stative compound")
? getObjectMatchingBases(auxVerbInfo, objComplement.person)
: {
stem: {
imperfective: auxVerbInfo.stem.imperfective,
perfective: auxVerbInfo.stem.perfective,
...auxVerbInfo.stem.perfectiveSplit ? {
perfectiveSplit: auxVerbInfo.stem.perfectiveSplit,
} : {},
},
root: {
imperfective: auxVerbInfo.root.imperfective,
perfective: auxVerbInfo.root.perfective,
...auxVerbInfo.root.perfectiveSplit ? {
perfectiveSplit: auxVerbInfo.root.perfectiveSplit,
} : {},
},
participle: {
present: auxVerbInfo.participle.present,
past: chooseParticipleInflection(
inflectYey(
"mascSing" in auxVerbInfo.participle.past
// purely for type saftey, will not have mascSing
// in a non stative compound verb
/* istanbul ignore next */
? auxVerbInfo.participle.past.mascSing
: auxVerbInfo.participle.past
),
objComplement.person,
),
}
}
const stem = {
imperfective: concatPsString(compUsed, " ", bases.stem.imperfective),
perfective: concatPsString(compUsed, " ", bases.stem.perfective),
...bases.stem.perfectiveSplit ? {
perfectiveSplit: makeDynamicPerfectiveSplit(compUsed, bases.stem.perfectiveSplit),
} : {},
};
const root = {
imperfective: concatPsString(compUsed, " ", bases.root.imperfective) as T.OptionalPersonInflections<T.LengthOptions<T.PsString>>,
perfective: concatPsString(compUsed, " ", bases.root.perfective) as T.OptionalPersonInflections<T.LengthOptions<T.PsString>>,
...bases.root.perfectiveSplit ? {
perfectiveSplit: makeDynamicPerfectiveSplit(compUsed, bases.root.perfectiveSplit),
} : {},
};
const participle = {
present: concatPsString(compUsed, " ", auxVerbInfo.participle.present),
past: concatPsString(compUsed, " ", bases.participle.past),
};
const makeIntransitiveFormOfEntry = (e: T.DictionaryEntry): T.DictionaryEntry => ({
...e,
p: e.p.replace(
"کول",
"کېدل"
),
e: e.e.replace("to do", "to become"),
f: e.f.replace(/kaw[u|ú]l/, "kedul"),
c: "v. intrans. dyn. comp.",
});
const intransitiveFormEntry = (transitivity === "transitive" && auxVerb.entry.p === "کول")
? makeIntransitiveFormOfEntry(entry)
: null;
return {
type: "dynamic compound",
transitivity,
yulEnding,
stem,
root,
participle,
objComplement,
auxVerb: auxVerb.entry,
...auxVerb.complement ? {
auxVerbComplement: auxVerb.complement,
} : {},
...objComplement.plural ? {
singularForm: getDynamicCompoundInfo(entry, comp, true),
} : {},
...intransitiveFormEntry ? {
intransitiveForm: getDynamicCompoundInfo(intransitiveFormEntry, comp),
} : {},
};
}
function getObjectMatchingBases(auxInfo: T.NonComboVerbInfo, person: T.Person): Bases {
const key = getPersonInflectionsKey(person);
const getBase = (x: T.FullForm<T.PsString>): T.SingleOrLengthOpts<T.PsString> => (
"mascSing" in x ? x[key] : x
);
return {
stem: {
imperfective: getBase(auxInfo.stem.imperfective),
perfective: getBase(auxInfo.stem.perfective),
...auxInfo.stem.perfectiveSplit ? {
perfectiveSplit: choosePersInf(auxInfo.stem.perfectiveSplit, key),
} : {},
},
root: {
imperfective: getBase(auxInfo.root.imperfective),
perfective: getBase(auxInfo.root.perfective),
...auxInfo.root.perfectiveSplit ? {
perfectiveSplit: choosePersInf(auxInfo.root.perfectiveSplit, key),
} : {},
},
participle: {
present: getBase(auxInfo.participle.present),
past: getBase(auxInfo.participle.past),
},
};
}
function getObjComplementInfo(
entry: T.DictionaryEntry,
complement: T.DictionaryEntry,
forceSingular?: true
): T.ObjComplement {
const complementInEntry = makePsString(
entry.p.split(" ")[0],
entry.f.split(" ")[0],
);
const complementEntry: T.DictionaryEntry = { ...complement, f: firstPhonetics(complement.f) };
const usesSeperatePluralForm = !forceSingular && !psStringEquals(
makePsString(complementInEntry.p, removeAccents(complementInEntry.f)),
makePsString(complementEntry.p, removeAccents(complementEntry.f)),
);
return {
entry: complementEntry,
...usesSeperatePluralForm ? {
plural: complementInEntry,
} : {},
person: getComplementPerson(complement, usesSeperatePluralForm),
};
}
function getTransitivity(entry: T.DictionaryEntry): T.Transitivity {
if (!entry.c) {
throw new Error("No part of speech info");
}
if (entry.c.includes("gramm. trans.")) {
return "grammatically transitive";
}
if (entry.c.includes("intrans.")) {
return "intransitive";
}
return "transitive";
}
function getType(entry: T.DictionaryEntry):
"simple" | "stative compound" | "dynamic compound" |
"dynamic or stative compound" | "dynamic or generative stative compound" |
"generative stative compound" | "transitive or grammatically transitive simple"
{
// error will have thrown before on the getTransitivity function if missing entry.c
/* istanbul ignore if */
if (!entry.c) {
throw new Error("No part of speech info");
}
if (entry.c.includes(" trans./gramm. trans.")) {
return "transitive or grammatically transitive simple";
}
if (entry.c.includes(" gen. stat. comp.")) {
return "generative stative compound";
}
if (entry.c.includes(" stat. comp.")) {
return "stative compound";
}
if (entry.c.includes(" dyn. comp.")) {
return "dynamic compound";
}
if (entry.c.includes(" dyn./stat. comp.")) {
return "dynamic or stative compound";
}
if (entry.c.includes(" gen. stat./dyn. comp.")) {
return "dynamic or generative stative compound";
}
return "simple";
}
function getIdiosyncraticThirdMascSing(entry: T.DictionaryEntry): T.ShortThirdPersFormSet | false {
if (entry.tppp && entry.tppf) {
const tpp = makePsString(entry.tppp, entry.tppf);
const ooRes = addOoPrefix(tpp, entry)
return {
imperfective: tpp,
perfective: ooRes.ps as T.PsString,
};
}
return false;
}
/**
* Returns the roots (imperfective and perfective) of a given verb
*
* @param entry - the dictionary entry for the verb
*/
function getVerbRoots(entry: T.DictionaryEntry, transitivity: T.Transitivity, complement?: T.UnisexInflections): T.VerbRootSet {
// each of the roots compes with a short and long version
// with or without the ending ل - ul
const isKawulAux = entry.p === "کول";
const shortAndLong = (root: T.PsString, perfective?: "perfective"): T.LengthOptions<T.PsString> => {
const long = perfective ? root : accentOnNFromEnd(root, yulEndingInfinitive(root) ? 1 : 0);
const short = removeEndingL(root);
return {
long,
short,
...(isKawulAux && perfective) ? {
mini: removeRetroflexR(short)
} : {},
};
};
const infinitive = makePsString(entry.p, firstPhonetics(entry.f));
// the imperfective root is the infinitive
// TODO: CHECK THIS!! FOR PERSON INFLECTIONS??
const imperfective = ((): T.OptionalPersonInflections<T.LengthOptions<T.PsString>> => {
// if stative compound
if (complement && spaceInForm(infinitive)) {
const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0];
const t = getAuxTransitivity(transitivity);
const aux = stativeAux[t].info.root.imperfective
return concatPsString(comp, " ", aux) as T.OptionalPersonInflections<T.LengthOptions<T.PsString>>;
}
return shortAndLong(infinitive);
})();
const { perfective, pSplit, fSplit } = ((): {
perfective: T.OptionalPersonInflections<T.LengthOptions<T.PsString>>
pSplit: number,
fSplit: number,
} => {
// if stative compound
if (complement) {
const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0];
const t = getAuxTransitivity(transitivity);
const aux = stativeAux[t].info.root.perfective
return {
pSplit: 0,
fSplit: 0,
perfective: concatPsString(comp, " ", aux) as T.OptionalPersonInflections<T.LengthOptions<T.PsString>>,
};
}
// the perfective root is
// - the special perfective root if it exists, or
if (entry.prp && entry.prf) {
const perfective = shortAndLong(makePsString(entry.prp, entry.prf), "perfective");
const hasOoPrefix = checkForOoPrefix(perfective.long);
return {
perfective,
pSplit: entry.separationAtP || (hasOoPrefix ? 1 : 0),
fSplit: entry.separationAtF || (hasOoPrefix ? 2 : 0),
};
}
// - the infinitive prefixed with oo
const { ps, pSplit, fSplit } = addOoPrefix(infinitive, entry);
return {
perfective: shortAndLong(ps as T.PsString, "perfective"),
pSplit,
fSplit,
};
})();
const perfectiveSplit = splitPerfective(perfective, pSplit, fSplit, !!complement);
return {
imperfective,
perfective,
perfectiveSplit,
};
}
/**
* Returns the stems (imperfective and perfective) of a given verb
*
* @param entry - the dictionary entry for the verb
*/
function getVerbStems(entry: T.DictionaryEntry, root: T.VerbRootSet, transitivity: T.Transitivity, complement?: T.UnisexInflections): T.VerbStemSet {
function isRegEdulTransitive(): boolean {
/* istanbul ignore next */
if ("mascSing" in root.imperfective) {
return false;
}
const lastPCharacters = root.imperfective.long.p.slice(-3);
return (
// @ts-ignore - will always have a entry.c if we get to this point
(entry.c.includes("intrans."))
&& (lastPCharacters === "ېدل")
);
}
function makeIntransImperfectiveStem() {
const long = {
// @ts-ignore
p: root.imperfective.long.p.slice(0, -2) + "ږ",
// @ts-ignore
f: root.imperfective.long.f.slice(0, -4) + "éG",
};
if (entry.shortIntrans) {
const short = makePsString(
long.p.slice(0, -2),
long.f.slice(0, -2),
);
return { long, short };
}
return long;
}
const imperfective = ((): T.FullForm<T.PsString> => {
const auxTransitivity = getAuxTransitivity(transitivity);
if (complement && spaceInForm(root.imperfective)) {
const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0];
return concatPsString(
comp,
" ",
stativeAux[auxTransitivity].info.stem.imperfective as T.PsString,
);
}
// the imperfective stem is
// - the special present stem if it exists, or
if (entry.psp && entry.psf) {
return makePsString(entry.psp, entry.psf);
}
// - the eG form (and short form possibly) if regular transitive, or
if (isRegEdulTransitive()) {
return makeIntransImperfectiveStem()
}
// - the infinitive minus ل
return "mascSing" in root.imperfective
? root.imperfective.mascSing.short
: root.imperfective.short;
})();
const { perfective, pSplit, fSplit } = ((): { perfective: T.FullForm<T.PsString>, pSplit: number, fSplit: number } => {
if (complement) {
const comp = complementInflects(complement) ? unisexInfToObjectMatrix(complement) : complement.masc[0][0];
const t = getAuxTransitivity(transitivity);
return {
perfective: concatPsString(comp, " ", stativeAux[t].info.stem.perfective),
pSplit: 0,
fSplit: 0,
};
}
// the perfective stem is
// - the special subjunctive stem if it exists, or
if (entry.ssp && entry.ssf) {
const isKawulAux = entry.p === "کول";
const perfective = makePsString(entry.ssp, entry.ssf);
const hasOoPrefix = checkForOoPrefix(perfective);
if (isKawulAux) {
return {
perfective: {
long: perfective,
short: removeRetroflexR(perfective),
},
pSplit: hasOoPrefix ? 1 : 0,
fSplit: hasOoPrefix ? 2 : 0,
};
}
return {
perfective,
pSplit: entry.separationAtP || (hasOoPrefix ? 1 : 0),
fSplit: entry.separationAtF || (hasOoPrefix ? 2 : 0),
};
}
// - the perfective stem prefixed with oo (if possible)
const res = addOoPrefix(imperfective as T.SingleOrLengthOpts<T.PsString>, entry);
return {
perfective: res.ps,
pSplit: res.pSplit,
fSplit: res.fSplit,
};
})();
const perfectiveSplit = splitPerfective(perfective, pSplit, fSplit, !!complement);
return {
imperfective,
perfective,
...perfectiveSplit ? {
perfectiveSplit,
} : {},
};
}
function splitPerfective(perfective: T.FullForm<T.PsString>, pSplit: number, fSplit: number, isStativeComp: boolean): T.SplitInfo | undefined {
if (!isStativeComp && pSplit === 0 && fSplit === 0) {
return undefined;
}
if ("mascSing" in perfective) {
// @ts-ignore
return {
mascSing: splitPerfective(perfective.mascSing, pSplit, fSplit, isStativeComp),
mascPlur: splitPerfective(perfective.mascPlur, pSplit, fSplit, isStativeComp),
femSing: splitPerfective(perfective.femSing, pSplit, fSplit, isStativeComp),
femPlur: splitPerfective(perfective.femPlur, pSplit, fSplit, isStativeComp),
};
}
if ("long" in perfective) {
return {
// @ts-ignore
short: splitPerfective(perfective.short, pSplit, fSplit, isStativeComp) as [T.PsString, T.PsString],
long: splitPerfective(perfective.long, pSplit, fSplit, isStativeComp) as [T.PsString, T.PsString],
..."mini" in perfective ? {
// @ts-ignore
mini: splitPerfective(perfective.mini, pSplit, fSplit, isStativeComp) as [T.PsString, T.PsString],
} : {},
};
}
if (isStativeComp) {
// if it's a stative, split whatever is before the aux verb with a trailing space
const pWords = perfective.p.split(" ");
const fWords = perfective.f.split(" ");
const before = makePsString(
pWords.slice(0, -1).join(" ") + " ",
fWords.slice(0, -1).join(" ") + " ",
);
const after = makePsString(
pWords[pWords.length - 1],
fWords[fWords.length - 1],
);
return [before, after];
}
const pBeg = perfective.p.slice(0, pSplit);
const before = makePsString(
pBeg.endsWith(" ") ? pBeg.slice(0, -1) : pBeg,
perfective.f.slice(0, fSplit).replace("`", ""),
);
const beforeAccented = beginsWithDirectionalPronoun(before)
? before
: accentOnFront(before);
const after = makePsString(perfective.p.slice(pSplit), removeAccents(removeStartingTick(perfective.f.slice(fSplit))));
return [beforeAccented, after] as T.SplitInfo;
}
function getParticiple(entry: T.DictionaryEntry, stem: T.VerbStemSet, infinitive: T.PsString, transitivity: T.Transitivity, complement?: T.UnisexInflections): T.ParticipleSet {
const shortParticipleRoot = ((): T.PsString | null => {
const shortenableEndings = ["ښتل", "ستل", "وتل"];
// special thing for اېښودل - پرېښودل
if (infinitive.p.slice(-4) === "ښودل" && infinitive.p.length > 4 && infinitive.p !== "کېښودل" && infinitive.p !== "کښېښودل") {
return makePsString(
infinitive.p.slice(0, -3),
infinitive.f.slice(0, -4),
);
}
const isOrulShortenable = ["وړل", "راوړل", "وروړل"].includes(infinitive.p);
if (isOrulShortenable || (shortenableEndings.includes(infinitive.p.slice(-3)) && infinitive.p.slice(-4) !== "استل")) {
return makePsString(
infinitive.p.slice(0, -1),
infinitive.f.slice(0, -2),
)
}
return null;
})();
const makeSepStativePart = (complement: T.UnisexInflections, tense: "present" | "past"): T.FullForm<T.PsString> => {
const compInflects = complementInflects(complement);
const comp = compInflects ? unisexInfToObjectMatrix(complement) : complement.masc[0][0];
const aux = stativeAux[auxTransitivity].info.participle[tense] as T.PsString;
return concatPsString(
comp,
" ",
compInflects
? unisexInfToObjectMatrix(inflectYey(aux) as T.UnisexInflections)
: aux,
);
};
const accentPastPart = (pp: T.PsString): T.PsString => (
accentOnNFromEnd(pp, yulEndingInfinitive(infinitive) ? 2 : 1)
);
const auxTransitivity = getAuxTransitivity(transitivity);
const past = (entry.pprtp && entry.pprtf)
? makePsString(entry.pprtp, entry.pprtf)
: complement
? makeSepStativePart(complement, "past")
: shortParticipleRoot
? {
short: accentPastPart(
concatPsString(ensureShortWurShwaShift(shortParticipleRoot), eyEndingUnaccented),
),
long: accentPastPart(
concatPsString(infinitive, eyEndingUnaccented),
),
}
: accentPastPart(concatPsString(infinitive, eyEndingUnaccented));
// TODO: make this into a rule?
const shortImperfectiveRoot = (entry.p === "وتل") ? { p: "وتل", f: "watl" } : removeEndingL(infinitive);
const accentPresPart = (pp: T.PsString): T.PsString => (
accentOnNFromEnd(pp, 1)
);
const present = (complement && spaceInForm(infinitive))
? makeSepStativePart(complement, "present")
: (shortParticipleRoot && (!psStringEquals(shortParticipleRoot, shortImperfectiveRoot) || (entry.p === "وتل")))
? {
short: accentPresPart(
concatPsString(shortParticipleRoot, presentParticipleSuffix),
),
long: accentPresPart(
concatPsString(shortImperfectiveRoot, presentParticipleSuffix),
),
}
: ("short" in stem.imperfective && entry.shortIntrans && entry.p !== "اوسېدل")
? {
short: accentPresPart(
concatPsString(stem.imperfective.short, presentParticipleSuffix),
),
long: accentPresPart(
concatPsString(shortImperfectiveRoot, presentParticipleSuffix),
),
}
: accentPresPart(
concatPsString(
shortImperfectiveRoot.p === "وړ" ? ensureShortWurShwaShift(shortImperfectiveRoot) : shortImperfectiveRoot,
presentParticipleSuffix,
),
);
return {
past,
present,
};
}
/**
* Adds a perfective و - oo prefix to a verb
*
* @param entry - the dictionary entry for the verb
*/
function addOoPrefix(
s: T.SingleOrLengthOpts<T.PsString>,
entry: T.DictionaryEntry,
): { ps: T.SingleOrLengthOpts<T.PsString>, pSplit: number, fSplit: number } {
let pSplit = 0;
let fSplit = 0;
// A bit of side effects in this function... sorry!
function attachOo(ps: T.PsString): T.PsString;
function attachOo(ps: T.SingleOrLengthOpts<T.PsString>): T.SingleOrLengthOpts<T.PsString>;
function attachOo(ps: T.SingleOrLengthOpts<T.PsString>): T.SingleOrLengthOpts<T.PsString> {
if ("long" in ps) {
return {
short: attachOo(ps.short),
long: attachOo(ps.long),
};
}
if (entry.separationAtP && entry.separationAtF) {
pSplit = entry.separationAtP;
fSplit = entry.separationAtF;
return ps;
}
if (entry.noOo) {
return ps;
}
if (entry.sepOo) {
pSplit = 2;
fSplit = 3;
return {
p: `و ${ps.p}`,
f: `oo\`${ps.f}`,
};
}
const startsWithA = ps.p.charAt(0) === "ا" && ps.f.charAt(0) === "a";
if (startsWithA) {
pSplit = 2;
fSplit = 3;
return {
p: `و${ps.p}`,
f: `wa${ps.f}`,
};
}
const startsWithAa = ["آ", "ا"].includes(ps.p.charAt(0)) && ps.f.slice(0, 2) === "aa";
if (startsWithAa) {
pSplit = 2;
fSplit = 3;
return {
p: `وا${ps.p.substr(1)}`,
f: `w${ps.f}`,
};
}
const startsWithOo = ["óo", "oo"].includes(ps.f.slice(0, 2));
if (startsWithOo) {
pSplit = 1;
fSplit = 2;
return {
p: `و${ps.p}`,
f: `wU${ps.f}`,
};
}
const startsWithEe = ["ée", "ee"].includes(ps.f.slice(0, 2)) && ps.p.slice(0, 2) === "ای";
const startsWithE = ["e", "é"].includes(ps.f[0]) && ps.p.slice(0, 2) === "اې";
if (startsWithEe || startsWithE) {
pSplit = 2;
fSplit = startsWithEe ? 3 : 2;
return {
p: `و${ps.p.slice(1)}`,
f: `w${ps.f}`,
};
}
const startsWithO = ["ó", "o"].includes(ps.f[0]) && ps.p.slice(0, 2) === "او";
if (startsWithO) {
pSplit = 1;
fSplit = 2;
return {
p: `و${ps.p}`,
f: `oo\`${ps.f}`,
};
}
pSplit = 1;
fSplit = 2;
return {
p: `و${ps.p}`,
f: `oo${ps.f}`,
};
}
const attachedOo = attachOo(s);
return {
ps: accentOnFront(attachedOo),
pSplit: entry.separationAtP ? entry.separationAtP : pSplit,
fSplit: entry.separationAtF ? entry.separationAtF : fSplit,
};
}
function ensureUnisexInflections(complement: T.DictionaryEntry): T.UnisexInflections {
const inflected = inflectWord(complement);
const isUnisex = inflected && (("masc" in inflected) && ("fem" in inflected));
if (isUnisex) {
return inflected as T.UnisexInflections;
}
const word = makePsString(complement.p, firstPhonetics(complement.f));
return {
masc: [
[word],
[word],
[word],
],
fem: [
[word],
[word],
[word],
],
};
}
function getDynamicAuxVerb(entry: T.DictionaryEntry): {
entry: T.DictionaryEntry,
complement?: T.DictionaryEntry,
} {
const auxWord = entry.p.trim().split(" ").slice(-1)[0];
const auxWordResult = dynamicAuxVerbs.find((a) => a.entry.p === auxWord);
/* istanbul ignore next */
if (!auxWordResult) {
throw new Error("unknown auxilary verb for dynamic compound");
}
return {
entry: auxWordResult.entry,
...("complement" in auxWordResult) ? {
complement: auxWordResult.complement,
} : {},
};
}
function getComplementPerson(
complement: T.DictionaryEntry,
usesSeperatePluralForm?: boolean,
): T.Person {
const number = (
(complement.c && complement.c.includes("pl.")) || usesSeperatePluralForm
) ? "plural" : "singular";
const gender = (complement.c && complement.c.includes("n. m.")) ? "masc" : "fem";
return getPersonNumber(gender, number);
}
function makeDynamicPerfectiveSplit(comp: T.PsString, auxSplit: T.SplitInfo): T.SplitInfo {
if ("mascSing" in auxSplit) {
return {
mascSing: makeDynamicPerfectiveSplit(comp, auxSplit.mascSing) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>,
mascPlur: makeDynamicPerfectiveSplit(comp, auxSplit.mascPlur) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>,
femSing: makeDynamicPerfectiveSplit(comp, auxSplit.femSing) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>,
femPlur: makeDynamicPerfectiveSplit(comp, auxSplit.femPlur) as T.SingleOrLengthOpts<[T.PsString, T.PsString]>,
};
}
if ("long" in auxSplit) {
return {
long: makeDynamicPerfectiveSplit(comp, auxSplit.long) as [T.PsString, T.PsString],
short: makeDynamicPerfectiveSplit(comp, auxSplit.short) as [T.PsString, T.PsString],
...auxSplit.mini ? {
mini: makeDynamicPerfectiveSplit(comp, auxSplit.mini) as [T.PsString, T.PsString],
} : {},
};
}
return [
concatPsString(comp, " ", auxSplit[0]),
auxSplit[1],
];
}

84
src/library.ts Normal file
View File

@ -0,0 +1,84 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import {
conjugateVerb,
} from "./lib/verb-conjugation";
import {
inflectWord,
} from "./lib/pashto-inflector";
import {
getVerbInfo,
} from "./lib/verb-info";
import ConjugationViewer from "./components/ConjugationViewer";
import InflectionsTable from "./components/InflectionsTable";
import Pashto from "./components/Pashto";
import Phonetics from "./components/Phonetics";
import InlinePs from "./components/InlinePs";
import ButtonSelect from "./components/ButtonSelect";
import VerbFormDisplay from "./components/VerbFormDisplay";
import VerbTable from "./components/VerbTable";
import Examples from "./components/Examples";
import VerbInfo, { RootsAndStems } from "./components/verb-info/VerbInfo";
import {
addToForm,
concatPsString,
makePsString,
removeFVariants,
} from "./lib/p-text-helpers";
import { standardizePashto } from "./lib/standardize-pashto";
import {
convertAfToPkSpelling,
convertPkToAfSpelling,
} from "./lib/convert-spelling";
import {
dictionaryEntryBooleanFields,
dictionaryEntryNumberFields,
dictionaryEntryTextFields,
} from "./lib/fields";
import {
validateEntry
} from "./lib/validate-entry";
import defaultTextOptions from "./lib/default-text-options";
import * as grammarUnits from "./lib/grammar-units";
import * as Types from "./types";
export {
// FUNCTIONS
conjugateVerb,
getVerbInfo,
inflectWord,
addToForm,
concatPsString,
makePsString,
removeFVariants,
standardizePashto,
convertAfToPkSpelling,
convertPkToAfSpelling,
validateEntry,
// COMPONENTS
ConjugationViewer,
Examples,
VerbFormDisplay,
VerbTable,
VerbInfo,
RootsAndStems,
InflectionsTable,
Pashto,
Phonetics,
InlinePs,
ButtonSelect,
// OTHER
grammarUnits,
defaultTextOptions,
dictionaryEntryTextFields,
dictionaryEntryNumberFields,
dictionaryEntryBooleanFields,
// TYPES
Types,
}

1
src/logo.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

1
src/react-app-env.d.ts vendored Normal file
View File

@ -0,0 +1 @@
/// <reference types="react-scripts" />

13
src/reportWebVitals.js Normal file
View File

@ -0,0 +1,13 @@
const reportWebVitals = onPerfEntry => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;

5
src/setupTests.js Normal file
View File

@ -0,0 +1,5 @@
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';

387
src/types.ts Normal file
View File

@ -0,0 +1,387 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
export type PsStringField = "p" | "f";
export type PsString = {
[k in PsStringField]: string;
} & {
e?: string;
};
export type DictionaryInfo = {
title: string;
license: string;
release: number;
numberOfEntries: number;
url: string;
infoUrl: string;
}
export type Dictionary = {
info: DictionaryInfo;
entries: DictionaryEntry[];
}
export type DictionaryEntry = {
// BASE REQUIRED INFO
ts: number; // timestamp
i: number; // Pashto Alphabetical Index
p: string; // Pashto word
f: string; // Phonetics word
e: string; // English word
// PART OF SPEECH AND LINK INFO
c?: string; // Part of Speech Info
l?: number; // timestamp link to related word
// INFLECTION INFO
infap?: string; // Special (irregular) inflection info
infaf?: string;
infbp?: string;
infbf?: string;
noInf?: boolean; // No Inflections?
// PLURAL INFO
app?: string; // Arabic plural in Pashto
apf?: string; // Arabic plural in Phonetics
ppp?: string; // Pashto plural in Pashto
ppf?: string; // Pashto plural in Phonetics
// VERB INFO
psp?: string; // Present stem in Pashto
psf?: string; // Present stem in Phonetics
/** The subjuctive / perfective stem in Pashto */
ssp?: string;
/** The subjunctive / perfective stem in Phonetics */
ssf?: string;
prp?: string; // Perfective root in Pashto
prf?: string; // Perfective root in Phonetics
/** The past participle in Pashto */
pprtp?: string;
/** The past participle in Phonetics */
pprtf?: string;
/** The idiosyncratic third person singular masc. short past in Pashto */
tppp?: string;
/** The idiosyncratic third person singular masc. short past in Phonetics */
tppf?: string;
shortIntrans?: boolean; // Short version is available like ګرځېږي and ګرځي
noOo?: boolean; // No و - oo verb prefix?
sepOo?: boolean; // Separate oo prefix?
separationAtP?: number; // Pashto separation point for separable verbs
separationAtF?: number; // Phonetics separation point for separable verbs
// PHONETICS - PASHTO - DIACRITICS INFO
diacExcept?: boolean; // Is an exception to the diacritics thing
}
export type DictionaryEntryTextField = "p" | "f" | "e" | "c" | "infap" | "infaf" | "infbp" | "infbf" | "app" | "apf" | "ppp" | "ppf" | "psp" | "psf" | "ssp" | "ssf" | "prp" | "prf" | "pprtp" | "pprtf" | "tppp" | "tppf";
export type DictionaryEntryBooleanField = "noInf" | "shortIntrans" | "noOo" | "sepOo" | "diacExcept";
export type DictionaryEntryNumberField = "ts" | "i" | "l" | "separationAtP" | "separationAtF";
export type DictionaryEntryField = DictionaryEntryTextField | DictionaryEntryBooleanField | DictionaryEntryNumberField;
export type DictionaryEntryError = {
errors: string[],
p: string,
f: string,
e: string,
ts: number,
erroneousFields: DictionaryEntryField[],
}
export type TextOptions = {
pTextSize: "normal" | "larger" | "largest";
phonetics: "lingdocs" | "ipa" | "alalc" | "none";
dialect: "standard" | "peshawer" | "southern";
spelling: "Afghan" | "Pakistani";
diacritics: boolean;
}
export enum Person {
FirstSingMale = 0,
FirstSingFemale,
SecondSingMale,
SecondSingFemale,
ThirdSingMale,
ThirdSingFemale,
FirstPlurMale,
FirstPlurFemale,
SecondPlurMale,
SecondPlurFemale,
ThirdPlurMale,
ThirdPlurFemale,
}
// INPUT
// all information to be passed to conjugating functions
export type VerbInfoBase = {
transitivity: Transitivity;
yulEnding: boolean | null;
stem: VerbStemSet;
root: VerbRootSet;
participle: ParticipleSet;
idiosyncraticThirdMascSing?: ShortThirdPersFormSet;
}
export type SimpleVerbInfo = VerbInfoBase & {
type: "simple";
}
export type StativeCompoundVerbInfo = VerbInfoBase & {
type: "stative compound"
complement: UnisexInflections;
}
export type GenerativeStativeCompoundVerbInfo = VerbInfoBase & {
type: "generative stative compound"
objComplement: ObjComplement,
singularForm?: GenerativeStativeCompoundVerbInfo,
// TODO: Could add intransitive form 🤪
}
export type DynamicCompoundVerbInfo = VerbInfoBase & {
type: "dynamic compound";
objComplement: ObjComplement;
auxVerb: DictionaryEntry;
auxVerbComplement?: DictionaryEntry;
singularForm?: DynamicCompoundVerbInfo;
intransitiveForm?: DynamicCompoundVerbInfo;
}
export type ObjComplement = {
entry: DictionaryEntry;
plural?: PsString;
person: Person;
}
export type NonComboVerbInfo = SimpleVerbInfo |
StativeCompoundVerbInfo | DynamicCompoundVerbInfo | GenerativeStativeCompoundVerbInfo;
export type VerbInfo = NonComboVerbInfo | {
type: "transitive or grammatically transitive simple";
transitive: SimpleVerbInfo;
grammaticallyTransitive: SimpleVerbInfo;
} | {
type: "dynamic or stative compound";
transitivity: Transitivity;
stative: StativeCompoundVerbInfo;
dynamic: DynamicCompoundVerbInfo;
} | {
type: "dynamic or generative stative compound";
transitivity: Transitivity;
stative: GenerativeStativeCompoundVerbInfo;
dynamic: DynamicCompoundVerbInfo;
}
export type Transitivity = "transitive" | "intransitive" | "grammatically transitive";
export type SplitInfo = FullForm<[PsString, PsString]>;
export type VerbStemSet = {
perfective: FullForm<PsString>;
imperfective: FullForm<PsString>;
perfectiveSplit?: SplitInfo;
}
export type VerbRootSet = {
perfective: OptionalPersonInflections<LengthOptions<PsString>>;
imperfective: OptionalPersonInflections<LengthOptions<PsString>>;
perfectiveSplit?: SplitInfo;
}
export type ParticipleSet = {
present: FullForm<PsString>,
past: FullForm<PsString>,
}
export type ShortThirdPersFormSet = {
[K in Aspect]: PsString;
}
export type Aspect = "perfective" | "imperfective";
export type Length = "short" | "long" | "mini";
export type LengthOptions<T> = {
long: T;
short: T;
mini?: T;
}
export type PersonInflectionsField = "mascSing" | "mascPlur" | "femSing" | "femPlur";
export type OptionalPersonInflections<T> = {
[K in PersonInflectionsField]: T;
} | T;
export type SingleOrLengthOpts<T> = T | LengthOptions<T>;
export type VerbConjugation = {
info: NonComboVerbInfo,
// INFINITIVE = info.root.imperfective.long
imperfective: AspectContent; // --╖ ASPECT = "imperfective"
perfective: AspectContent; // --╜ ASPECT = "perfective"
hypothetical: VerbForm; // INFINITIVE - ul + aay
participle: ParticipleContent;
perfect: PerfectContent; // PPART = PAST PARTICIPLE (plus spectial short forms)
passive?: PassiveContent; // only on transitive verbs
singularForm?: VerbConjugation;
}
export type VerbOutput = VerbConjugation | {
info: VerbInfo,
stative: VerbConjugation,
dynamic: VerbConjugation,
} | {
info: VerbInfo,
transitive: VerbConjugation,
grammaticallyTransitive: VerbConjugation,
};
export type PassiveContent = {
imperfective: AspectContentPassive // --╖ ASPECT = "imperfective"
perfective: AspectContentPassive // --╜ ASPECT = "perfective"
perfect: PerfectContent; // PPART INFINITIVE + kedulStat perfect.pastParticiple
// TODO: ADD PARTICIPLE
}
// ASPECT -> AspectContent
export type AspectContent = {
// STEM = info.stem[ASPECT]
// ROOT = info.root[ASPECT]
nonImperative: VerbForm; // STEM + pres ending
future: VerbForm; // به + this.nonImperative
imperative?: ImperativeForm; // STEM + imperative ending
// -- optional because not used for intransitive verison of kawul dynamic compounds
past: VerbForm; // ROOT + past ending
modal: ModalContent;
}
export type ModalContent = {
nonImperative: VerbForm; // ROOT + ey + kedulStat.perfective.nonImperative
future: VerbForm; // به + this.nonImperative
past: VerbForm; // ROOT + ey + kedulStat.perfective.past
hypotheticalPast: VerbForm; // ROOT + ey + shw + ey
}
// ASPECT -> AspectContentPssive
export type AspectContentPassive = {
// ROOT = info.root[ASPECT]
nonImperative: VerbForm; // ROOT LONG + kedulStat[ASPECT].nonImperative
future: VerbForm; // ba + this.nonImperative
past: VerbForm; // ROOT LONG + kedulStat[ASPECT].past
}
export type ParticipleForm = SingleOrLengthOpts<UnisexInflections> | SingleOrLengthOpts<PsString>;
export type ParticipleContent = {
past: SingleOrLengthOpts<UnisexInflections> | SingleOrLengthOpts<PsString>,
// TODO: Should this ever have an object matrix??
present: SingleOrLengthOpts<UnisexInflections>,
}
// PPART -> PerfectContent
export type PerfectContent = {
halfPerfect: VerbForm; // PPART
past: VerbForm; // PPART + equative.past
present: VerbForm; // PPART + equative.prest
subjunctive: VerbForm; // PPART + equative.subj
future: VerbForm; // ba + PPART + equative.subj
affirmational: VerbForm; // ba + PPART + equative.past
pastSubjunctiveHypothetical: VerbForm; // PPART + waay
}
export type UnisexInflections = {
masc: ArrayFixed<ArrayOneOrMore<PsString>, 3>,
fem: ArrayFixed<ArrayOneOrMore<PsString>, 3>,
}
export type Inflections = UnisexInflections | {
masc: ArrayFixed<ArrayOneOrMore<PsString>, 3>,
} | {
fem: ArrayFixed<ArrayOneOrMore<PsString>, 3>,
}
export type PersonLine = [
/** singular form of person */
ArrayOneOrMore<PsString>,
/** plural form of person */
ArrayOneOrMore<PsString>,
];
/**
* The basic form of a verb conjugation
* Each line representing one person (singular and plural)
* 1st Person Male, 1st Person Female, 2nd Person Male etc...
*/
export type VerbBlock = [
PersonLine, // 1st Person Male
PersonLine, // 1st Person Female
PersonLine, // 2nd Person Male
PersonLine, // 2nd Person Female
PersonLine, // 3rd Person Male
PersonLine, // 3rd Person Female
];
export type EnglishBlock = [
[string, string],
[string, string],
[string, string],
[string, string],
[string, string],
[string, string],
];
export type ImperativeBlock = [
PersonLine, // 2nd Person Male
PersonLine, // 2nd Person Female
];
export type FullForm<T> = OptionalPersonInflections<SingleOrLengthOpts<T>>;
export type VerbForm = FullForm<VerbBlock>;
export type ImperativeForm = FullForm<ImperativeBlock>;
export type SentenceForm = SingleOrLengthOpts<ArrayOneOrMore<PsString>>;
export interface ArrayFixed<T, L extends number> extends Array<T> {
0: T;
length: L;
}
export type ArrayOneOrMore<T> = {
0: T
} & Array<T>
export type DisplayFormItem = DisplayForm | DisplayFormSubgroup | DisplayFormForSentence;
export type DisplayForm = {
label: string,
aspect?: Aspect,
form: VerbForm | ImperativeForm | ParticipleForm | SentenceForm,
advanced?: boolean,
formula: React.ReactNode,
explanation: React.ReactNode,
sentence?: boolean,
passive?: boolean,
past?: boolean,
reorderWithNegative?: boolean,
}
export type DisplayFormForSentence = {
label: string,
aspect?: Aspect,
form: VerbForm,
advanced?: boolean,
formula: React.ReactNode,
secondPronounNeeded?: boolean,
explanation: React.ReactNode,
sentence?: boolean,
passive?: boolean,
past?: boolean,
reorderWithNegative?: boolean,
}
export type DisplayFormSubgroup = {
label: string,
subgroup: string,
advanced?: boolean,
content: DisplayFormItem[],
}
export type AayTail = "ey" | "aay";

27
tsconfig.json Normal file
View File

@ -0,0 +1,27 @@
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"downlevelIteration": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}

142
verbs/dyn-comp-trans.js Normal file
View File

@ -0,0 +1,142 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
module.exports = [
1527816643, // استعفا کول - to resign, to quit (a job or position)
1527817823, // اصرار کول - to insist, persist, demand
1591002320547, // امر کول - to order, command
1527821339, // انتظار کول - to wait
1527817226, // اندازه لګول - to guess, to estimate
1527812167, // انکار کول - to deny, to renounce, to not recognize
1527812598, // ایمان راوړل - to beileve, have faith (du chaa baande / د چا باندې)
1527812002, // برخه اخستل - to take part in, to participate, to join in
1527813489, // پرهېز کول - to abstain, fast
1577390517316, // پرېکړه کول - to decide
1527820710, // پناه اړول - to take/seek refuge
1527817312, // پوښتنه کول - to ask
1527818188, // پیروي کول - to follow, obey (usually a religious teacher or leader)
1527811863, // تاوان رسول - to harm, damage
1527816383, // تپوس کول - to ask, to question, to request
1527822770, // ترپکې وهل - to stamp (feet), to tread, to tap ones foot
1527821587, // ترحم کول - to feel pity, to have sympathy, to feel sorry for someone
1527818390, // تشریف راوړل - to come (when speaking about someone w/ respect)
1527818391, // تشریف وړل - to go (when speaking about someone w/ respect)
1527814726, // تصمیم نیول - to make a decision
1579394718033, // تصور کول - to imagine, suppose
1527815968, // تکیه کول - to rely on, to depend on
1592303372377, // تلاوت کول - to read (relgious, usually the Quran)
1577551342853, // تمرکز کول - to concentrate, focus (په يوه شي باندې)
1527815351, // توبه ایستل - to repent
1586452103064, // توجه کول - to pay attention to, to consider
1527816822, // توکل کول - to count on, hope for, depend on
1527812186, // تیاري نیول - to prepare
1527814870, // ټوپونه وهل - to jump
1527815355, // ټوکې کول - to joke, tease, make fun of
1527815867, // ټینګار کول - to emphasize, to insist
1527822741, // جیټکه خوړل - to be jolted, surprised
1527814864, // ځان وژل - to commit suicide
1527819607, // چرت وهل - to think about something, reflect on something, worry about something
1527821070, // چکر وهل - to stroll, walk around
1577812269585, // چمچه ګیري کول - to suck up to, to flatter
1573768865232, // چنې وهل - to barter, bargain (for a price)
1527822814, // حسد کول - to be envious, to be jealous
1527823161, // حفاظت کول - to protect, guard
1527821042, // حمایه کول - to support, aid, protect, back
1527818810, // حیا کول - to be bashful, modest, observing of Islamic rules of modesty
1577823792516, // خدمت کول - to serve (د چا خدمت کول)
1588858155947, // خېز وهل - to jump, leap, bob up and down
1589024311021, // دافع کول - to defend (د ځان دفاع کول - to defend oneself)
1527816916, // دفاع کول - to defend, protect
1527820291, // ډغره وهل - to challenge, invite to engage in a contest, confront, provoke
1527813125, // ذکر کول - to mention, refernce, remark, refer to
1527813937, // روژه نیول - to fast
1591804639647, // روغه کول - to reconcile, to make peace
1527813212, // زاري کول - to plea, ask, request, beg
1584529741244, // زړه ساتل - to hold back and not say what you're really thinking
1575128717139, // زړه وهل - to feel hesitancy about some action or thing (د دې کار څخه زړه وهي); to satiate
1527813319, // زنګ وهل - to ring, phone, call (Afghanistan)
1527822368, // زیاتي کول - to do injustice, oppression (to someone) (د چا سرس زياتي کول)
1527819178, // زیان رسول - to damage, to cause harm
1594129207239, // سا اخستل - to breathe
1594129204513, // سا اخیستل - to breathe
1527815309, // سبق وایل - to study, go to school
1527814102, // ست کول - to invite, to make an offer out of politeness (د ډوډۍ ست مې ورته وکړ)
1527818975, // سترګه وهل - to wink, to blink
1578326320888, // سجده لګول - to bowing down to the ground, to prostrating (in religion)
1527816152, // سر ټکول - complain, gripe
1527816463, // سوله کول - to make peace, to reconcile
1527818094, // سیل کول - to stroll through, go on a walk or tour through, to see, watch, examine, survey, visit, tour
1527814855, // شپېلۍ وهل - to play the flute, fife, reed, to whistle
1527819033, // شکایت کول - to complain, to express a grievance
1577817988469, // شکست خوړل - to be defeated, to experience defeat
1527819185, // صبر کول - to be patient, to bear up and endure under difficult or painful circumstances
1527814887, // صفت کول - to praise; admire, glorify
1527818217, // طرفداري کول - to support, adhere to, pick a side, stand up for something or someone
1571946107980, // ظلم کول - to be cruel to, to oppress, to do voilence against, to persecute (د چا باندې ظلم کول)
1581610643511, // عبادت کول - to worship, pray
1527811674, // عمل کول - to act, to put into practice; to do something addicting (like smoking), to do out of habit
1581610659810, // غچ اخیستل - to take revenge
1527818401, // غرض کول - to interfere, to meddle, to step in
1592303194144, // غږ کول - to call out, to say something, make a sound
1578607689918, // غلا کول - to steal
1527818341, // غمرازي کول - to share in someones sorrow, to show sympathy or give condolences
1527818425, // غوټه اچول - to tie, fasten, hitch
1527818422, // غوټه وهل - to dive, dip, go into water
1527812633, // غوږ نیول - to listen
1527816328, // غیبت کول - to gossip
1588784260692, // فال اچول - to do fortune telling, divination
1527812607, // فکر کول - to think
1527822096, // قدم وهل - to take a step, to walk
1588152878869, // قرباني کول - to make a sacrifice
1527817624, // قسم خوړل - to take an oath, vow, to swear
1527812732, // کار کول - to work
1527811600, // کوشش کول - to try, to attempt, to put in effort
1527819661, // ګپ لګول - to talk, converse; to joke
1527814357, // ګډون کول - to participate, join, be involved
1582146016627, // ګذاره کول - to get by, make ends meet, deal with something, handle or get some task done (with difficulty or not quite in the ideal way), to bear with, to be tolerant or forgiving
1527819872, // ګمان کول - to think, to suppose
1579034883717, // لاړې تېرول - to spit ?? (other fluids too??)
1527817357, // لاس وړل - to touch
1527818937, // لامبو وهل - to swim, bathe
1527813950, // لحاظ کول - to be considerate of, pay attention to someone or something, to be polite, to show deference or respect to someone
1527813888, // لغته وهل - to kick
1527822099, // لمس کول - to touch, motivate, instigate
1588760636420, // لوظ کول - to promise, give one's word
1527819089, // ماته خوړل - to be defeated, beaten by someone
1527817361, // مخ اړول - to turn (ones face), to face, (when turning from someone or people) to neglect, (when turning to someone or people) to pay attention to
1527812934, // مخه نیول - to prevent, hold back
1588161314887, // مرسته کول - to help, assist
1527817165, // مزدوري کول - to do labour, to work
1609162269829, // مزې کول - to be enjoyable, to have good taste (the thing that gives enjoyment/taste "does maza"), to have fun
1579295606403, // ملاتړ کول - to support (ie. a political party etc.)
1589031340746, // موټر چلول - to drive a car
1527812902, // مینه کول - to love
1527817369, // ناره وهل - to cry out, to yell, to yell a chant or slogan
1527819687, // نارې کول - to cry out, shout (ناره)
1527821254, // نافرماني کول - to disobey, to not comply, to rebel
1527817709, // نجات موندل - to be saved, to find salvation
1527823208, // نفرت کول - to hate, abhor
1527811827, // نفس ایستل - breath in, inhale; kill
1579459605988, // نقصان کول - to suffer loss
1527815991, // ننداره کول - to behold, to spectate, to watch, to take in
1527823707, // نیالګی کېنول - to plant a sapling, young tree
1527811729, // نیوکه کول - to criticize
1527823733, // هجرت کول - to migrate, resettle
1527820620, // هجوم کول - to swarm, rush, attack
1527811599, // هڅه کول - to try, to attempt, to put in effort
1604431102462, // هدایت کول - to guide, show the true path, give revelation leading to truth
1527818092, // همکاري کول - to collaborate, to work together, to aid/help
1527816106, // وده کول - to grow, develop, improve, rise
1579723460957, // ورزش کول - to de exercise, athletics
1527814910, // وعده کول - to promise
1527816263, // وفا کول - to be faithful, to keep one's promise
1609162463793, // واده کول - to marry, get married
1609599425410, // دعا کول - to pray
1527812939, // منډې وهل - to run
1614602054303, // بدله اخیستل - to take revenge
]

View File

@ -0,0 +1,23 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
module.exports = [
1577383674332, // انګولل - to howl, wail
1527818962, // پرنجل - to sneeze
1527821425, // ټوخل - to cough
1527812767, // خندل - to laugh
1605360223155, // دنګل - to jump, leap, run, race
1605360127430, // زنګل - to swing, rock (back and forth)
1527812717, // ژړل - to cry
1591899573844, // نڅل - to dance
1577049208257, // اورېدل - to hear
1527812362, // فرمایل - to declare
1527812751, // کتل - to look
1527815396, // وایل - to say
1527817013, // ویل - to say
]

49
verbs/simple-intrans.js Normal file
View File

@ -0,0 +1,49 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
module.exports = [
1527813473, // الوتل - to fly
1527814012, // اوښتل - to pass over, overturn, be flipped over, spill over, shift, change, diverge, pass, cross, abandon
1527822843, // برېښېدل - to appear, seem; to shine, sparkle; to smart, have a pricking pain
1527815183, // پوهېدل - to understand (to do the act of understanding)
1527816495, // تښتېدل - to run off, escape, flee
1527811442, // توانېدل - become able, become strong or good enough to…
1527813022, // ټوخېدل - to cough
1527817259, // پرېوتل - to fall
1577572987826, // جنګېدل - to fight, battle, war, to bump or crash into
1527818535, // ځړېدل - to hang, to be hung, to be lowered
1527812273, // ځلېدل - to shine, glow, glitter
1577921634357, // ځنډېدل - to be delayed, postponed, held back, detained
1527814025, // ختل - to climb, ascend, rise, go up; to fall out, to fall off, to leave/dissapear; to turn out to be ...
1527823376, // وتل - to go out
1527814433, // خوځېدل - to shake, tremble, wiggle, move, vibrate
1527818980, // رپېدل - to quiver, shake, flutter, shiver
1578191534500, // رحمېدل - to have mercy on, to have compassion on
1527813573, // رسېدل - reach, arrive; (fig.) understand, attain to; mature, ripen
1527813710, // زېږېدل - to be born, to appear, arise
1527813837, // سوځېدل - to burn
1527814597, // شرمېدل - to be ashamed, to be embarrassed, to be shy
1527821558, // شړېدل - to be decomposed, break down, fall apart; to be boiled soft (meat)
1527811516, // شلېدل - to be torn, broken, rent, broken, severed
1527812615, // غځېدل - stretch out, lie, be extended, expand
1527813680, // غږېدل - to converse, speak, talk, sing
1527814867, // غورځېدل - to jump, leap, fall
1578682066756, // غوړېدل - to be spread, extended, opened, unfolded; to fall with arms flailing; to blossom, to be set with mines (military)
1527823696, // غولېدل - to be deceived, cheated, fooled
1527812759, // کېناستل - to sit
1527812645, // ګرځېدل - to walk, wander, turn about; to become, to be
1527814430, // لړزېدل - to shake, shudder, tremble, vibrate
1527814085, // لګېدل - to be busy or in motion, to be spent, to flare up, to hit, crash, touch, to suit / fit / conform, to seem
1527813994, // لوېدل - to fall, to tumble, go down, settle
1527823019, // وېرېدل - to be afraid, scared, to fear
1581086654898, // کېدل - to become _____
1527812754, // کېدل - to happen, occur
1527815348, // تلل - to go
1527815216, // راتلل - to come
1527819674, // څملاستل - to lie down
]

90
verbs/simple-trans.js Normal file
View File

@ -0,0 +1,90 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
module.exports = [
1527814617, // نیول - to take
1527811872, // اچول - to put, pour, drop, throw, put on
1527817298, // اخیستل - to take, buy, purchase, receive; to shave, cut with scissors
1527816127, // اړول - to turn over, flip over; convert, change; to move over to, establish oneself in a new spot; divert, turn away, hijack
1527811605, // ازمویل - to attempt, try; to experiment, test
1527812458, // استول - to send
1527811397, // اغوستل - to wear, to put on (clothes)
1527816125, // الوزول - to make fly, to toss, to release (birds); to blow up
1527816146, // ایستل - to throw out, discard, chuck, toss; to extract, to take out
1527817786, // بخښل - to forgive, to pardon
1527816092, // بلل - to call, invite; to consider, deem
1577389204616, // پرانیستل - to open; to undo; to initiate
1527819396, // پرځول - to throw down, to topple, overcome, wrestle to the ground
1527816874, // پلورل - to sell
1527813647, // پوښتل - to ask, question
1527815190, // پرېښودل - to quit
1527815216, // راتلل - to come
1527812284, // کېښودل - to put
1577394422280, // پوهول - to explain, to try to make understand
1527815165, // پېژندل - to recognize, know, meet
1527813405, // تړل - to connect, tie, bind, close
1527816494, // تښتول - to drive off, steal, abduct, kidnap
1527813394, // ټاکل - to select, appoint
1527821498, // ټکول - to knock, pound, crush, grind, hammer
1527818537, // ځړول - to hang, to suspend, to lower down, to let down
1527813046, // ځنډول - to delay, to postpone, to hold back, to detain
1527813755, // ځورول - to bother, irritate, torture, distress, vex, grind on
1527814586, // چلول - to drive, operate, handle, put forward, circulate
1527816564, // چیچل - to bite, chew, grind (teeth), clench (teeth), sting
1527812790, // خوړل - to eat, to bite
1527823551, // خېژول - load, upload, boost, cause to climb, cause to get on/in (a boat etc.)
1527815489, // داړل - to bite, tear, gnaw
1527812544, // درول - to stop (active, causative); to stand, set up, put in place; to bring in, introduce; to advance/field (an army/troops)
1527816533, // رټل - to tell off, berate, banish, drive off
1527813572, // رسول - to deliver, to make arrive, provide, send, supply, bring to,
1527819880, // رېبل - to reap, harvest
1527816064, // زغمل - to endure, bear, tolerate, take on, digest
1527811485, // زېږول - to give birth, to bear, create
1527813637, // ستایل - to praise, commend, glorify, mention
1527817750, // سکل - to drink
1527811625, // سنجول - to think over, deliberate, examine, think, develop
1527813831, // سوځول - to cause to burn, set on fire
1527814596, // شرمول - to shame, to disgrace, to dishonor
1527814908, // شړل - to drive out, fire, evict, push out
1527815531, // شکول - to tear, to break of, to dig up, to pull out
1527815296, // شمارل - to count
1527815273, // شمېرل - to count
1527811293, // ښودل - to show; to teach; to suit, look good with (fig.), befit
1527817865, // غځول - to extend, to stretch out, to expand
1527817622, // غړول - to open or roll (the eyes)
1527820150, // غږول - to make a sound, pronounce, to sing, to play (an instrument), to resound; to make someone talk, to get information
1527815886, // غندل - to condemn, reproach, to criticize
1527816122, // غورځول - to throw, hurl, fling
1527812627, // غوښتل - to want, to request
1527819301, // غولول - to deceive, cheat, fool
1527813568, // کارول - to use, utilize
1527816300, // کرل - to sow, to plant
1527819378, // کندل - to dig
1527811289, // کېنول - to seat, to make or have someone sit down
1527817661, // ګالل - to bear up under (diffucult things), to suffer, to take, to endure
1527812649, // ګټل - to earn (money), to win
1527812612, // ګنډل - to sew, mend, make, knit
1527812000, // ګڼل - to count, consider, reckon, suppose, assume
1527822144, // ګواښل - to threaten
1527812873, // لوستل - to read, study
1527816453, // ګومارل - to appoint, assign, delegate; load, charge
1527812869, // لټول - to search, seek
1527818206, // لړزول - to shake, rattle, cause to shake
1527813866, // لېږل - to send
1527812856, // لیکل - to write
1527815085, // منل - to accept, to believe
1527815399, // وهل - to hit
1527823020, // وېرول - to make afraid, to scare, to make fear
1527811701, // وېشل - divide, distribute, share
1579015359582, // کول - to make ____ ____ (as in "He's making me angry.")
1527812752, // کول - to do (an action or activity)
1527816865, // وړل
1527815214, // راوړل - to bring
1527819827, // راوستل - to bring
1527812275, // لیدل - to see
]

View File

@ -0,0 +1,139 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
module.exports = [
1588760879818, // احساسېدل - to feel, be sensed
1577223176187, // ادا کېدل - to be set forth, given, rendered (service), performed, fulfilled, expressed, said, done
1527814793, // اړېدل - to need, to be forced, to have to, to experience a need
1527820761, // استعمالېدل - to be used, utilized, applied
1527818887, // اموخته کېدل - to get used to, to get accustomed to, adjusted to, to become tame
1527821797, // انتقال کېدل - to be transfered, to move; to die, to pass away
1527822931, // اوده کېدل - to sleep, to be asleep
1588853804403, // اوږدېدل - to get long, to drag out, to get longer
1527813033, // ایسارېدل - to wait, wait (for), to be delayed, detained, stopped
1527812404, // بچ کېدل - to be saved, spared; run off, escape, nip off
1527814231, // بدلېدل - to be changed, replaced, exchanged, to undergo a change
1527815729, // بلدېدل - to become familiar, acquainted, used to
1527813842, // بلېدل - to burn, catch fire
1527815032, // بندي کېدل - to become a prisoner, to get imprisoned
1588781671306, // بندېدل - to be closed, blocked, stopped
1527817582, // بېزارېدل - to be fed up with, tired of, repulsed by, dissatisfied with, done with, disgusted by
1527815844, // بېلېدل - to be separated
1588073731662, // پاکېدل - to be cleaned, become clean, to be cleansed, purified
1527813895, // پټېدل - to hide, to be hidden
1527812011, // پخلا کېدل - to be reconciled, brought to an agreement
1581906176268, // پخېدل - to be cooked, prepared, ripened, matured
1584689265872, // پستېدل - to become soft, tender, gentle, loosened
1583269419054, // پورته کېدل - to be raised up, lifted up, brought up
1527814169, // پورې کېدل - to cross, traverse, go to the other side
1577394057681, // پوهېدل - to understand (to come to a state of understanding)
1527815170, // پیدا کېدل - to be found, born
1581189978440, // پېش کېدل - to be brought forward, presented, delivered
1527815167, // پېښېدل - to happen, occur, come up
1591872442272, // پیلېدل - to be started, begin
1527815324, // تاوېدل - to turn, rotate (passive), to be wrapped, twisted
1577398809240, // تباه کېدل - to be destroyed, ruined
1582391432928, // تبدیلېدل - to change, to undergo change, to be transformed
1580755448566, // ترکېدل - to be abondoned, left, refused
1527821367, // تسلیمېدل - to surrender, capitulate; to be handed over, delivered, passed on
1527814905, // تشېدل - to be emptied
1527821358, // تصدیق کېدل - to be confirmed, affirmed, attested
1527823430, // تقسیمېدل - to be divided, partitioned, distributed
1577501138221, // تکرار کېدل - to be repeated
1527814919, // تولیدېدل - to be produced, manufactured; to spring up, to be created, birthed
1579644515886, // تویېدل - to be poured, shed, spilled, scattered, knocked down (fruit)
1577571228633, // تیارېدل - to become ready, to become prepared, to get ready
1577571096956, // ټولېدل - to be gathered, collected
1577571391494, // ټیټېدل - to bow, stoop, go down
1589019870271, // ټیک کېدل - to be corrected, made right
1585310006948, // ثابتېدل - to be proven, established, made firm
1527816202, // ثبتېدل - to be entered, saved, recorded, registered
1527821166, // جارېدل - to be sacrificed, to be offered/at someones service
1527816943, // جوتېدل - to become evident, clear, apparent, explained, established
1527812713, // جوړېدل - to be made, formed, build, mended, become
1577905544406, // ځایېدل - to fit, to fit into a space, to be accomodated
1527812522, // چاپ کېدل - to be published, printed
1527811694, // چاغېدل - to put on weight, to get fat
1588783381414, // حاضرېدل - to show up, be present, appear; to be prepared, to get ready
1527814126, // حلېدل - to be solved, resolved
1588426001132, // حیرانېدل - to be amazed, astonished, shocked, surprized
1527819313, // خارجېدل - to be exiled, dismissed, fired, extracted, processed
1527816079, // خبرېدل - to be informed, to come to know
1527811394, // خپرېدل - to be spread, dispersed, opened, unfolded, publicized, distributed
1577900112011, // ختمېدل - to be finished, completed, ended, used up, killed, destroyed
1527814184, // خرڅېدل - to be sold, to be spent
1577898920635, // خفه کېدل - to be sad, grieved, annoyed, upset; to be choked, to suffocate
1527818360, // خلاصېدل - to be freed, saved, rescued, opened
1527814173, // خوږېدل - to hurt, to have pain
1527817114, // خوشتېدل - to become damp, wet, moist
1527812812, // خوښېدل - to be pleasing, happy, to be liked; to be chosen, selected
1527816735, // داخلېدل - to enter, go in; to be included; to be enrolled
1527815784, // درنېدل - to become heavier; to become more serious, respectable, reliable
1577059043220, // دفن کېدل - to be buried
1527817671, // ډکېدل - to fill up
1527817257, // ډوبېدل - to drown, sink, dissapear, be submerged
1527816895, // ډېرېدل - to increase, to become more, to be increased, to rise
1527818346, // راپورته کېدل - to be raised up, to rise
1527815734, // راټولېدل - to be brought together, gathered, collected, assembled
1585474304911, // رغېدل - to become healthy, to heal, to get better, to recover, to be cured; to be built up; to be sewn, mended, repaired
1527823278, // رنګېدل - to be painted, colored
1527812410, // روانېدل - to get under way, to get going, to depart
1527815236, // ړنګېدل - to be demolished, ruined, dissolved, disbanded
1527817576, // زرغونېدل - to germinate, grow, flourish, develop
1566120362058, // زړېدل - to get old, to age, to get worn out
1527817668, // زیاتېدل - to become more, to grow in number
1591033069786, // ستړی کېدل - to get tired, fatigued
1527816404, // ستنېدل - to return go back; to be delayed, to linger
1591782112190, // سمېدل - to become right, correct, get repaired, be fixed, be straightened out
1527811948, // شریکېدل - to be shared, held in common; to participate in something, share in something, be involved
1589883893191, // شړمېدل - to ba attached loosely, to become loose, lazy, flabby
1527820128, // ښخېدل - to be buried, entombed; to be pierced, plunged, thrust into
1527814077, // ښکارېدل - to become clear, evident, obvious; to appear, to seem
1577057620783, // عادت کېدل - to get used to, to get accustomed to; to get addicted to
1585475932743, // عذابېدل - to be tortured, tormented, punished, bothered, pained
1527814972, // غرقېدل - to be sunk, immersed, plunged, lost
1527821483, // غصه کېدل - to be angry, upset, distressed
1578607410634, // غلطېدل - to make a mistake, to err, to be decieved, to stray from, to miscalculate
1578683722262, // فارغېدل - to graduate; to become free from, finished from something, liberated
1527823367, // قبلېدل - to be accepted, to be approved
1578705585960, // قربانېدل - to be sacrificed
1588074081731, // قرنطینېدل - to be quarentined
1527811848, // کامیابېدل - to succed, to achieve success
1578769047886, // کلکېدل - to become firm, solid, to be hardened, to solidify; to became staunch, secured
1578769553469, // کمېدل - to decrease, become small, become less
1527811975, // کڼېدل - to become deaf
1573149364576, // ګډېدل - to be mixed, combined, blended, to meet, rejoin
1527814821, // ګرمېدل - to become warm, to warm up, heat up
1527819155, // ګمراه کېدل - to stray (from the path, the faith), to err
1579034600343, // ګیرېدل - to be seized, caught, trapped, confined, imprisoned, beseiged, stuck
1588152260378, // لرې کېدل - to be removed, put far away
1527817122, // لندېدل - to dampen, moisten, soak, get wet
1527817119, // لنډېدل - to be shortened, made short
1527813947, // لویېدل - to grow up, to be raised up, to get big
1527811901, // ماتېدل - to be broken, break, hurt badle, crumble
1527814560, // مجبورېدل - to be compelled, forced, obligated
1527820885, // مړېدل - to become full, to have ones fill; (fig.) to grow cold towards, lose interest in
1579295191646, // مقررېدل - to be appointed, assigned, delegated
1579295944312, // ملامتېدل - to be condemned, blamed, guilty
1527812920, // ملاوېدل - to meet, to be met, to be found, to be available
1579387693725, // مینېدل - to fall in love
1527815573, // نازلېدل - to befall, to come down, to be revealed, to be sent down
1527811761, // ناکامېدل - to fail, to not succeed
1527820482, // نسکورېدل - to be toppled over, brought down, ruined, shot down (ie. a plane), stoop down
1527817763, // هېرېدل - to be forgotten (ستا نوم ما نه هېر شو I forgot your name lit, Your name was forgotten from me)
1579721195157, // واردېدل - to be imported
1527817238, // وچېدل - to become dry
1589640142987, // ورکېدل - to get lost, dissapear
1588153594269, // وړېدل - to become smaller, shrink
1527812005, // وقفېدل - to be devoted, dedicated, given, donated, bequeathed
1576947352743, // ویدېدل - to sleep
1527819292, // ویښېدل - to awaken, become alert, wake up
1527812941, // یادېدل - to be remembered, to be missed
1527814768, // یخېدل - to chill, cool down, freeze
1579824223049, // یو ځای کېدل - to be gathered, brought together, come together
]

View File

@ -0,0 +1,85 @@
/**
* Copyright (c) 2021 lingdocs.com
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
module.exports = [
1527812403, // بچ کول - to save, protect, guard, spare, rescue, economize
1577299232429, // بدلول - to change, to adapt, exchange, replace
1527815728, // بلدول - to familiarize with, to acquaint, orient, to train
1588781694450, // بندول - to close, block, stop
1527821309, // بندول - to close, barricade, cut off, restrain, hold back
1527815843, // بېلول - to separate
1588073727998, // پاکول - to clean, cleanse, purify
1527812010, // پخلا کول - to reconcile, to bring to an agreement
1527820144, // پستول - to soften, knead, pulverize, dig over again
1584689306281, // پستول - to make soft, tender, gentle, loosened
1583269391864, // پورته کول - to raise up, lift up, bring up
1577394118297, // پوهول - to make understand (to bring someone to the state of understanding)
1571859113828, // پخول - to cook
1527812385, // پیدا کول - to find, birth, create
1581189437955, // پېش کول - to bring forward, present, deliver
1527820021, // پېښول - to cause, provoke, bring on
1591872434020, // پیلول - to start, begin
1527815323, // تاوول - to turn, to twist (active, causative), to rotate (causative) to wrap up, wind up
1527812388, // تباه کول - to destroy, ruin
1580754885011, // ترکول - to abandon, leave, refuse
1527821357, // تصدیق کول - to confirm, affirm, attest
1577501129214, // تکرار کول - to repeat
1527822697, // تولول - to weigh
1579908304357, // تولول - to balance
1579644522321, // تویول - to pour, shed, spill, scatter, knock down (fruit)
1527815731, // ټولول - to gather, collect
1589019863017, // ټیک کول - to correct, make right
1527816201, // ثبتول - to enter, save, record, register
1527821167, // جارول - to clean (with a brush), to warp (textiles); to sacrifice
1527816945, // جوتول - to make clear, evident, apparent, explained, established
1527816947, // جوتول - to harness, hitch up
1527812712, // جوړول - to make, form, build, mend, fix
1527817455, // ځایول - to place, put, accommodate, make room for, to make fit
1527815074, // چاپول - to print, publish
1527811693, // چاغول - to fatten up, to fatten, to make stout, plump
1527816239, // خبرول - to inform, communicate, make known, notify
1527811395, // خپرول - to spread, disperse, open, unfold, publicize, distribute
1527812222, // ختمول - to finish, complete, end, use up, destroy, kill
1527814183, // خرڅول - to sell, to spend, (fig.) to betray
1577898915919, // خفه کول - to make sad, to grieve, to annoy; to choke, to make suffocate
1592303701516, // خوږول - to sweeten, to make sweet, to delight, to give pleasure
1527814174, // خوږول - to cause hurt, pain
1527812811, // خوښول - to like, to choose, to select; to make happy
1527813502, // درنول - to make heavier; to make serious, respectable, reliable
1527811432, // دفن کول - to bury
1527813665, // ډکول - to fill
1527817258, // ډوبول - to cause to drown, to make sing, to submerge
1527823503, // ډېرول - to increase, make more
1527818347, // راپورته کول - to raise up
1527823277, // رنګول - to paint, color
1527813179, // ړنګول - to destroy, wreck, ruin, demolish, mess up, liquidate, disband
1591033078746, // ستړی کول - to make tired, wear out
1527813065, // ستنول - to return, to give back; to delay someone or something, to direct, to turn, to fix on
1527811949, // شریکول - to make a participant or involved, to share, to bring someone or something in, to include
1589883890933, // شړمول - to attach loosely, to cause to be loose, lazy, flabby
1527814493, // غرقول - to sink, plunge, submerge, immerse
1527823133, // غلطول - confuse, mix up, make a mistake; to go wrong, to stray from; to deceive, to lead into error; to distract, to be distracted
1527823366, // قبلول - to accept, to approve
1527820386, // کلکول - to make firm, hard solid, to fasten, to secure, to lock, to staunchly defend
1527814819, // ګرمول - to warm, to heat up, to heat
1579034597012, // ګیرول - to seize, catch, trap, confine, imprison, beseige, make stuck
1588152253147, // لرې کول - to remove, put far away
1527817121, // لندول - to make wet, moisten, to make damp, to soak
1527817118, // لنډول - to shorten, to make short, abbreviate
1527814350, // لویول - to raise, bring up (children)
1527816012, // ماتول - to break, split, defeat
1579387733916, // مینول - to cause to fall in love, to make to fall in love
1527817762, // هېرول - to forget
1589640176788, // ورکول - to lose/make lost, to misplace, to make dissapear, get rid off
1527812004, // وقفول - to devote, dedicate, give, donate
1579724723019, // ویدول - to put to sleep
1579822065104, // ویښول - to wake up, to make awake, to make alert
1527816559, // یادول - to remember, to recall, to think on, to call
1527813556, // یو ځای کول - to gather, bring together
1527815444, // زده کول - to learn, to teach
]

11720
yarn.lock Normal file

File diff suppressed because it is too large Load Diff