From 8cb4fe4852e83d57435bcf0595058a66303afb7e Mon Sep 17 00:00:00 2001 From: olayway Date: Sun, 15 May 2022 00:07:41 +0200 Subject: [PATCH 001/116] gh actions test --- .github/workflows/learn-github-actions.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/workflows/learn-github-actions.yml diff --git a/.github/workflows/learn-github-actions.yml b/.github/workflows/learn-github-actions.yml new file mode 100644 index 0000000..97ea16a --- /dev/null +++ b/.github/workflows/learn-github-actions.yml @@ -0,0 +1,12 @@ +name: learn-github-actions +on: [push] +jobs: + check-bats-version: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '14' + - run: npm install -g bats + - run: bats -v From 5ef39edfe76150f4604822b6a51e77057ede39c7 Mon Sep 17 00:00:00 2001 From: olayway Date: Mon, 16 May 2022 14:06:36 +0200 Subject: [PATCH 002/116] [site/components][f]: basic tooltip on hover --- site/components/Anchor.js | 25 + site/components/Content.js | 67 + site/components/MDX.js | 6 +- site/components/{Link.js => Paragraph.js} | 1 - site/components/Tooltip.js | 32 + site/package-lock.json | 6431 ++++++++++++++++++++- site/package.json | 6 +- site/styles/global.css | 12 + 8 files changed, 6456 insertions(+), 124 deletions(-) create mode 100644 site/components/Anchor.js create mode 100644 site/components/Content.js rename site/components/{Link.js => Paragraph.js} (95%) create mode 100644 site/components/Tooltip.js diff --git a/site/components/Anchor.js b/site/components/Anchor.js new file mode 100644 index 0000000..bcf3960 --- /dev/null +++ b/site/components/Anchor.js @@ -0,0 +1,25 @@ +import { useState, Fragment } from 'react'; +import { Tooltip } from './Tooltip'; + +export const Anchor = (props) => { + const href = props.href; + if ( + href && + href.indexOf("http://") !== 0 && + href.indexOf("http://") !== 0 && + href.includes(".md") + ) { + return ( + + + + + + ); + } + return ; +}; diff --git a/site/components/Content.js b/site/components/Content.js new file mode 100644 index 0000000..19e783a --- /dev/null +++ b/site/components/Content.js @@ -0,0 +1,67 @@ +import { useState, useEffect } from 'react' +import {unified} from 'unified' +import rehypeParse from 'rehype-parse' +import find from 'unist-util-find' +import {toString} from 'hast-util-to-string' + +const textStyles = (theme) => ({ + padding: '16px 22px', + fontSize: '11px', + background: theme === 'light' ? '#fff' : '#000', +}) + +const display = (data, theme) => { + return ( +
+
{data}
+ {/*
{wikiLogo(theme)}
*/} + {/* {arrow(theme)} */} +
+ ) +} + +export const Content = (props) => { + const [state, setState] = useState({ + data: "", + isLoaded: false, + }) + + useEffect(async () => { + // const path = `/concepts/${props.value}`; + // console.log(path) + const path = "http://localhost:3000/concepts/bitcoin"; + fetch(path).then((response) => { + if (response.status !== 200) { + console.log(`Looks like there was a problem. Status Code: ${response.status}`) + return + } + response.text().then((data) => { + const hast = unified().use(rehypeParse).parse(data); + console.log(hast) + const article = find(hast, (node) => { + return node.tagName === "article" + }) + const main = find(article, (node) => { + return node.tagName === "main" + }) + const p = find(main, (node) => { + return node.tagName === "p" + }) + // console.log(toString(p)) + setState({ + data: toString(p), + isLoaded: true, + }) + }) + }) + }, []) + + const { theme } = props + const { data, isLoaded } = state + + return isLoaded ? display(data, theme) :
+} diff --git a/site/components/MDX.js b/site/components/MDX.js index fe906ff..d6e4c32 100644 --- a/site/components/MDX.js +++ b/site/components/MDX.js @@ -1,12 +1,14 @@ import Head from 'next/head' import ReactPlayer from 'react-player/lazy' -import { Paragraph } from './Link' import { NextSeo } from 'next-seo' import siteConfig from "../config/siteConfig" +import { Paragraph } from './Paragraph' +import { Anchor } from './Anchor' const components = { Head, - p: Paragraph + p: Paragraph, + a: Anchor } export default function MdxPage({ children, editUrl }) { diff --git a/site/components/Link.js b/site/components/Paragraph.js similarity index 95% rename from site/components/Link.js rename to site/components/Paragraph.js index b1d97df..b1096bf 100644 --- a/site/components/Link.js +++ b/site/components/Paragraph.js @@ -1,4 +1,3 @@ -import Link from "next/link"; import ReactPlayer from "react-player"; const videoLinks = [ diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js new file mode 100644 index 0000000..1cccf1f --- /dev/null +++ b/site/components/Tooltip.js @@ -0,0 +1,32 @@ +import Trigger from 'rc-trigger' +import { Content } from './Content' + +const position = { + bottom: { + points: ['tc', 'bc'], + offset: [0, 10] + }, + right: { + points: ['tl', 'tc'], + offset: [20, 0] + }, + top: { + points: ['bc', 'tc'], + offset: [0, -10] + } +} + +export const Tooltip = (props) => { + const { children, value, theme, mouseEnterDelay = 0.5 } = props; + return ( + } + mouseEnterDelay={mouseEnterDelay} + prefixCls='trigger' + popupAlign={position.bottom} + > + {children} + + ) +} diff --git a/site/package-lock.json b/site/package-lock.json index 36b4cf4..0b7fa30 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -1,12 +1,6079 @@ { + "name": "site", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, + "packages": { + "": { + "dependencies": { + "@headlessui/react": "^1.4.1", + "@heroicons/react": "^1.0.4", + "@mdx-js/loader": "^2.0.0", + "@mdx-js/react": "^2.0.0", + "@next/mdx": "^12.1.0", + "@silvenon/remark-smartypants": "^1.0.0", + "@tailwindcss/typography": "^0.5.2", + "contentlayer": "^0.1.2", + "gray-matter": "^4.0.3", + "hast-util-to-string": "^2.0.0", + "next": "^12.1.0", + "next-contentlayer": "^0.1.2", + "next-seo": "^4.28.1", + "next-themes": "^0.1.1", + "rc-trigger": "^5.2.18", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-player": "^2.10.0", + "rehype": "^12.0.1", + "rehype-autolink-headings": "^6.1.1", + "rehype-slug": "^5.0.1", + "remark-gfm": "^3.0.0", + "remark-slug": "^7.0.0", + "remark-toc": "^8.0.0", + "remark-wiki-link-plus": "^1.0.0", + "unist-util-find": "^1.0.2" + }, + "devDependencies": { + "autoprefixer": "^10.2.6", + "postcss": "^8.3.5", + "tailwindcss": "^3.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@contentlayer/cli": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@contentlayer/cli/-/cli-0.1.2.tgz", + "integrity": "sha512-FscghhxktHTxJkjSDVczHgoJU5DHrRzlgzfGuA2ZGlDQlsmfscCLCs2i7aLpEM3WEFeukLKpAxvbosRDTzMGww==", + "dependencies": { + "@contentlayer/core": "0.1.2", + "@contentlayer/utils": "0.1.2", + "clipanion": "^3.2.0-rc.6", + "typanion": "^3.7.1" + } + }, + "node_modules/@contentlayer/client": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@contentlayer/client/-/client-0.1.2.tgz", + "integrity": "sha512-iO5CI4Gpwjf8T8Yg0VNPFEwA6RuRykX5sm9g8B8e6TEln1McS998yUsQPt/uHkUQtW3IhM5E7mqHQ0rS2WX98g==", + "dependencies": { + "@contentlayer/core": "0.1.2" + } + }, + "node_modules/@contentlayer/core": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@contentlayer/core/-/core-0.1.2.tgz", + "integrity": "sha512-o+AzVyKcmFS16ROifDlGWZK28skVSNzINQ8sCZBhBM3xhvhiopLnzv/4QRmD047Z8GQqlcMmQ1BHFRJW6rWy8Q==", + "dependencies": { + "@contentlayer/utils": "0.1.2", + "camel-case": "^4.1.2", + "date-fns": "2.x", + "esbuild": "0.11.x || 0.12.x || 0.13.x || 0.14.x", + "gray-matter": "^4.0.3", + "mdx-bundler": "^8.0.1", + "rehype-stringify": "^9.0.2", + "remark-frontmatter": "^4.0.1", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.0.1", + "source-map-support": "^0.5.21", + "type-fest": "^1.2.1", + "unified": "^10.1.1" + }, + "peerDependencies": { + "date-fns": "2.x", + "esbuild": "0.11.x || 0.12.x || 0.13.x", + "markdown-wasm": "1.x" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "markdown-wasm": { + "optional": true + } + } + }, + "node_modules/@contentlayer/source-files": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@contentlayer/source-files/-/source-files-0.1.2.tgz", + "integrity": "sha512-c8i9xfENptRB1rCtSgCJGp30VR5xM8uCnWXBYE3jRRSzIhjsWXi3V7VQgMiN3sACxMa5rI9T1iQlIKBI+Uz4WQ==", + "dependencies": { + "@contentlayer/core": "0.1.2", + "@contentlayer/utils": "0.1.2", + "chokidar": "^3.5.3", + "date-fns-tz": "^1.2.2", + "glob": "^7.2.0", + "glob-promise": "^4.2.2", + "gray-matter": "^4.0.3", + "minimatch": "^3.0.4", + "ts-pattern": "^3.3.3", + "unified": "^10.1.1", + "yaml": "^1.10.2" + } + }, + "node_modules/@contentlayer/utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@contentlayer/utils/-/utils-0.1.2.tgz", + "integrity": "sha512-kPKJix3lQx5nDJ2lA6M8igJqmyxDIPTPpGwfXEB+sHTr2rbXnk7cDuIgG5uJAfIrYEuU//S+eu492CkWT9jSVQ==", + "dependencies": { + "@effect-ts/core": "^0.58.0", + "@effect-ts/otel": "^0.13.0", + "@effect-ts/otel-exporter-trace-otlp-grpc": "^0.13.0", + "@effect-ts/otel-sdk-trace-node": "^0.13.0", + "@opentelemetry/api": "^1.0.3", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/exporter-trace-otlp-grpc": "^0.27.0", + "@opentelemetry/resources": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/sdk-trace-node": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.0.0", + "chokidar": "^3.5.3", + "hash-wasm": "^4.9.0", + "inflection": "^1.13.1", + "oo-ascii-tree": "^1.36.0", + "ts-pattern": "^3.3.3", + "type-fest": "^1.2.1" + }, + "peerDependenciesMeta": { + "@effect-ts/core": { + "optional": true + }, + "@effect-ts/otel": { + "optional": true + }, + "@effect-ts/otel-node": { + "optional": true + } + } + }, + "node_modules/@effect-ts/core": { + "version": "0.58.1", + "resolved": "https://registry.npmjs.org/@effect-ts/core/-/core-0.58.1.tgz", + "integrity": "sha512-N0UwVyg+cx7FMG2zFh7uzpkyOk7iGYhiBfVN1K5MqpVXZzLvbuR9yud3SveaIxD0dJnso4AnPzrw6zhctNO+1A==", + "dependencies": { + "@effect-ts/system": "^0.55.1" + } + }, + "node_modules/@effect-ts/otel": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@effect-ts/otel/-/otel-0.13.0.tgz", + "integrity": "sha512-AR9l1Zj2eF1uv89Rpu0ePlW5l6qFNeBfmOsih7Yoi517g8dfURAXvgWVi67DmwqDQThz3xVuGd1evOcBqXCdsQ==", + "peerDependencies": { + "@effect-ts/core": "^0.58.0", + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^1.0.1" + } + }, + "node_modules/@effect-ts/otel-exporter-trace-otlp-grpc": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@effect-ts/otel-exporter-trace-otlp-grpc/-/otel-exporter-trace-otlp-grpc-0.13.0.tgz", + "integrity": "sha512-SIyRO+2Kvd4F6dKe8ztEUsqCxrKlnArWHyGELfruA9vB/BGdmbVaSFlUzLBHTuobXIgIFsCVaFmfUtwXTsHLMg==", + "dependencies": { + "@effect-ts/otel": "^0.13.0" + }, + "peerDependencies": { + "@effect-ts/core": "^0.58.0", + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/exporter-trace-otlp-grpc": "^0.27.0", + "@opentelemetry/sdk-trace-base": "^1.0.0" + } + }, + "node_modules/@effect-ts/otel-sdk-trace-node": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@effect-ts/otel-sdk-trace-node/-/otel-sdk-trace-node-0.13.0.tgz", + "integrity": "sha512-sdKZ6TJZuxkbkigIUwKK7mgNVJEl+9RkRYCAF9NLz3xbGEGHiIuK3IePy9/nawjfkV2bKSCZ6QRb9TgVg12yRA==", + "dependencies": { + "@effect-ts/otel": "^0.13.0" + }, + "peerDependencies": { + "@effect-ts/core": "^0.58.0", + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/sdk-trace-node": "^1.0.0" + } + }, + "node_modules/@effect-ts/system": { + "version": "0.55.1", + "resolved": "https://registry.npmjs.org/@effect-ts/system/-/system-0.55.1.tgz", + "integrity": "sha512-OEnwd9JhrV2Q5S7cke/ZgR56Hn75DSr1aIkA0PBE1edoX6GKB6nOdu8u/vPhvqjxLHfMgN8o+EVaWUHPLIC1UQ==" + }, + "node_modules/@esbuild-plugins/node-resolve": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.1.4.tgz", + "integrity": "sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==", + "dependencies": { + "@types/resolve": "^1.17.1", + "debug": "^4.3.1", + "escape-string-regexp": "^4.0.0", + "resolve": "^1.19.0" + }, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/@esbuild-plugins/node-resolve/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fal-works/esbuild-plugin-global-externals": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", + "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.9.tgz", + "integrity": "sha512-un+cXqErq5P4p3+WgYVNVh7FB51MSnaoRef7QWDcMXKR6FX2R6Z/bltcJMxNNdTUMC85lkOQcpnAAetFziPSng==", + "dependencies": { + "@grpc/proto-loader": "^0.6.4", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz", + "integrity": "sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@headlessui/react": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.5.0.tgz", + "integrity": "sha512-aaRnYxBb3MU2FNJf3Ut9RMTUqqU3as0aI1lQhgo2n9Fa67wRu14iOGqx93xB+uMNVfNwZ5B3y/Ndm7qZGuFeMQ==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/@heroicons/react": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz", + "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==", + "peerDependencies": { + "react": ">= 16" + } + }, + "node_modules/@mdx-js/loader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.1.0.tgz", + "integrity": "sha512-r2CqhmBELQUoUxiWDh8SnlD7QTRNULgXE26gmmlD/uE0HWM7CG8iw6F3ZfvVr5p9y2z4MHWsOHbaJEuNCa8i3Q==", + "dependencies": { + "@mdx-js/mdx": "^2.0.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "webpack": ">=4" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.0.tgz", + "integrity": "sha512-AuZGNLSGrytOd7a81E2SsWAOYg/eV5I51BlUPc11PPmPwhpovu7mwfyQ8PH1jxhdH0Is6aRtXHERuDxon0TluQ==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "@types/mdx": "^2.0.0", + "astring": "^1.6.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.0.tgz", + "integrity": "sha512-RlPnY2WcVe91pOilf3Rmu1pArKj7gSK03uoaMFKjPWTyh9t6t1VYGSX40twlpChNSPmbcQ29D0xvSBOVMWA6yw==", + "dependencies": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@next/env": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.0.tgz", + "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==" + }, + "node_modules/@next/mdx": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-12.1.0.tgz", + "integrity": "sha512-Y+VF6mMbm7pbiSj6c0YI0bD02aK0JUglWplHW48o65JYGhJSD7jzDfuIJG6/XdQ8fhTnDj/6+kYLnV+1QmXFRQ==", + "peerDependencies": { + "@mdx-js/loader": ">=0.15.0", + "@mdx-js/react": "*" + } + }, + "node_modules/@next/swc-android-arm64": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz", + "integrity": "sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz", + "integrity": "sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz", + "integrity": "sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz", + "integrity": "sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz", + "integrity": "sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz", + "integrity": "sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz", + "integrity": "sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz", + "integrity": "sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz", + "integrity": "sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz", + "integrity": "sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz", + "integrity": "sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.1.0.tgz", + "integrity": "sha512-hf+3bwuBwtXsugA2ULBc95qxrOqP2pOekLz34BJhcAKawt94vfeNyUKpYc0lZQ/3sCP6LqRa7UAdHA7i5UODzQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.1.1.tgz", + "integrity": "sha512-17wlKOwcWzo1Eo2T1OJqWTnrUZ6vTdmHs9XhcqChvyx6N8DRIP096qQxfebk/zDzVgvjryv+K2pYjONPH404hQ==", + "engines": { + "node": ">=8.1.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.1.1.tgz", + "integrity": "sha512-rNYVBLzO+gXeYmNVcm4NfKw9x+nTy08Qp8SMpkmM5cqfdEwEtKw83vpSrFKzafy2aOIpmUkKGpi2k/m5kiDP9w==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.1.1" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.27.0.tgz", + "integrity": "sha512-fFoLoCv9beWRouuhLy8zqnHrPj+Bj89iUbUzcg80cQ4tP3AXKyjWBowk/xHteKsTFbQYkIBhIQOpekyHtExwRw==", + "dependencies": { + "@grpc/grpc-js": "^1.3.7", + "@grpc/proto-loader": "^0.6.4", + "@opentelemetry/core": "1.0.1", + "@opentelemetry/exporter-trace-otlp-http": "0.27.0", + "@opentelemetry/resources": "1.0.1", + "@opentelemetry/sdk-trace-base": "1.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.0.1.tgz", + "integrity": "sha512-90nQ2X6b/8X+xjcLDBYKooAcOsIlwLRYm+1VsxcX5cHl6V4CSVmDpBreQSDH/A21SqROzapk6813008SatmPpQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.0.1" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.1.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/resources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.0.1.tgz", + "integrity": "sha512-p8DevOaAEepPucUtImR4cZKHOE2L1jgQAtkdZporV+XnxPA/HqCHPEESyUVuo4f5M0NUlL6k5Pba75KwNJlTRg==", + "dependencies": { + "@opentelemetry/core": "1.0.1", + "@opentelemetry/semantic-conventions": "1.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.1.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.0.1.tgz", + "integrity": "sha512-JVSAepTpW7dnqfV7XFN0zHj1jXGNd5OcvIGQl76buogqffdgJdgJWQNrOuUJaus56zrOtlzqFH+YtMA9RGEg8w==", + "dependencies": { + "@opentelemetry/core": "1.0.1", + "@opentelemetry/resources": "1.0.1", + "@opentelemetry/semantic-conventions": "1.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.1.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.1.tgz", + "integrity": "sha512-7XU1sfQ8uCVcXLxtAHA8r3qaLJ2oq7sKtEwzZhzuEXqYmjW+n+J4yM3kNo0HQo3Xp1eUe47UM6Wy6yuAvIyllg==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.27.0.tgz", + "integrity": "sha512-ZE8Ns/GGW83E4igrby69shiqEkVo+cULzbm4DprSEMCWrPAL/NBobETFOiOQyBBBgIfrhi5EG6truUiafB1cMQ==", + "dependencies": { + "@opentelemetry/core": "1.0.1", + "@opentelemetry/resources": "1.0.1", + "@opentelemetry/sdk-trace-base": "1.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.0.1.tgz", + "integrity": "sha512-90nQ2X6b/8X+xjcLDBYKooAcOsIlwLRYm+1VsxcX5cHl6V4CSVmDpBreQSDH/A21SqROzapk6813008SatmPpQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.0.1" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.1.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.0.1.tgz", + "integrity": "sha512-p8DevOaAEepPucUtImR4cZKHOE2L1jgQAtkdZporV+XnxPA/HqCHPEESyUVuo4f5M0NUlL6k5Pba75KwNJlTRg==", + "dependencies": { + "@opentelemetry/core": "1.0.1", + "@opentelemetry/semantic-conventions": "1.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.1.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.0.1.tgz", + "integrity": "sha512-JVSAepTpW7dnqfV7XFN0zHj1jXGNd5OcvIGQl76buogqffdgJdgJWQNrOuUJaus56zrOtlzqFH+YtMA9RGEg8w==", + "dependencies": { + "@opentelemetry/core": "1.0.1", + "@opentelemetry/resources": "1.0.1", + "@opentelemetry/semantic-conventions": "1.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.1.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.1.tgz", + "integrity": "sha512-7XU1sfQ8uCVcXLxtAHA8r3qaLJ2oq7sKtEwzZhzuEXqYmjW+n+J4yM3kNo0HQo3Xp1eUe47UM6Wy6yuAvIyllg==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.1.1.tgz", + "integrity": "sha512-FzrImysl3cVrPUm9mTTCN4Z/A6lYEyuKe6cE/SV9Avek6EKY8Ibgxqsg76T0KN27gm/i3YEbd/NL/+HZit0Wgw==", + "dependencies": { + "@opentelemetry/core": "1.1.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.1.1.tgz", + "integrity": "sha512-l1uuJN4phlsZgqGJLEJRo+QDnXizIwV9oC1N2+8KWpA+cKbAG0Wa4+JGjgio8vnF0kccJDQ02CG7cBbkcleBgA==", + "dependencies": { + "@opentelemetry/core": "1.1.1" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.1.1.tgz", + "integrity": "sha512-w0X65ufTaRevIumjylWzYhRquRNoM5T6e0ARNcE0o2YkYPkAxTr3PYkcXG8hUdWRAglqliZKG4IlMv03Q0wOXA==", + "dependencies": { + "@opentelemetry/core": "1.1.1", + "@opentelemetry/semantic-conventions": "1.1.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.1.1.tgz", + "integrity": "sha512-nj5kFly/d6V2UXZNi3jCaRBw44/7Z91xH0PcemXJTO3B6gyMx8zIHXdnECxrTVR1pglDWYCGs84uXPavu5SULw==", + "dependencies": { + "@opentelemetry/core": "1.1.1", + "@opentelemetry/resources": "1.1.1", + "@opentelemetry/semantic-conventions": "1.1.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.1.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.1.1.tgz", + "integrity": "sha512-wb/BONBrBs/EDN24AqB1KAAygVUiD8WdufaprLdv1LGTNat2ETCVVX+jKoi3K8W6y1KVLeEM5GjBV3Ww0E40nA==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.1.1", + "@opentelemetry/core": "1.1.1", + "@opentelemetry/propagator-b3": "1.1.1", + "@opentelemetry/propagator-jaeger": "1.1.1", + "@opentelemetry/sdk-trace-base": "1.1.1", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.1.0 <1.2.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.1.1.tgz", + "integrity": "sha512-GdTwDHSaZ6iP5LUdvS/SLUjn3067xn1HcBsLZCh8YOsf22d/YWTBcnFl3buieBP4KiajwHLho4I8HSMDKACBSg==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/@silvenon/remark-smartypants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@silvenon/remark-smartypants/-/remark-smartypants-1.0.0.tgz", + "integrity": "sha512-+Icx9z8zKBdO9mMcsUkfRbzGkHDXmv+Q4TyoPTiuhTrWK2UtLUglfTB5iRacuYHzNYKC4hJIJmTlC5c7fNxOiw==", + "dependencies": { + "retext": "^7.0.1", + "retext-smartypants": "^4.0.0", + "unist-util-visit": "^2.0.1" + } + }, + "node_modules/@silvenon/remark-smartypants/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@silvenon/remark-smartypants/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@silvenon/remark-smartypants/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.2.tgz", + "integrity": "sha512-coq8DBABRPFcVhVIk6IbKyyHUt7YTEC/C992tatFB+yEx5WGBQrCgsSFjxHUr8AWXphWckadVJbominEduYBqw==", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || insiders" + } + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/@types/estree-jsx": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-0.0.1.tgz", + "integrity": "sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", + "integrity": "sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==" + }, + "node_modules/@types/github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==" + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + }, + "node_modules/@types/mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.1.tgz", + "integrity": "sha512-JPEv4iAl0I+o7g8yVWDwk30es8mfVrjkvh5UeVR2sYPpZCK44vrAPsbJpIS+rJAUxLgaSAMKTEH5Vn5qd9XsrQ==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.22.tgz", + "integrity": "sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "node_modules/@types/react": { + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.42.tgz", + "integrity": "sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.1.tgz", + "integrity": "sha512-Ku5+GPFa12S3W26Uwtw+xyrtIpaZsGYHH6zxNbZlstmlvMYSZRzOwzwsXbxlVUbHyUucctSyuFtu6bNxwYomIw==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-iterate": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", + "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astring": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.1.tgz", + "integrity": "sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001319", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz", + "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", + "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "node_modules/clipanion": { + "version": "3.2.0-rc.10", + "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.0-rc.10.tgz", + "integrity": "sha512-OrDP3/bLGxf2BSGarzvqm4PrH5Pii7YoLNt/FnuJWJcnL735m2UOWEV2dCNcJ5QBgmoZF7X7vU7hetALmIqs4Q==", + "dependencies": { + "typanion": "^3.3.1" + }, + "peerDependencies": { + "typanion": "*" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/contentlayer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/contentlayer/-/contentlayer-0.1.2.tgz", + "integrity": "sha512-PKlPLgoIj1C9ZmXE1KMjCy8GO9AoKTLX0rlU6zR4Z0GX7u+4vO+dR2nKbF0xdQIgqS1q256IjVl7rEuIuxqdNQ==", + "hasInstallScript": true, + "dependencies": { + "@contentlayer/cli": "0.1.2", + "@contentlayer/client": "0.1.2", + "@contentlayer/core": "0.1.2", + "@contentlayer/source-files": "0.1.2", + "@contentlayer/utils": "0.1.2" + }, + "bin": { + "contentlayer": "bin/cli.cjs" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns-tz": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.0.tgz", + "integrity": "sha512-r6ye6PmGEvkF467/41qzU71oGwv9kHTnV3vtSZdyV6VThwPID47ZH7FtR7zQWrhgOUWkYySm2ems2w6ZfNUqoA==", + "peerDependencies": { + "date-fns": ">=2.0.0" + } + }, + "node_modules/deasync": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.24.tgz", + "integrity": "sha512-i98vg42xNfRZCymummMAN0rIcQ1gZFinSe3btvPIvy6JFTaeHcumeKybRo2HTv86nasfmT0nEgAn2ggLZhOCVA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + }, + "engines": { + "node": ">=0.11.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", + "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "node_modules/dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dependencies": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dom-align": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz", + "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.90", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz", + "integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.0.0.tgz", + "integrity": "sha512-kT9YVRvlt2ewPp9BazfIIgXMGsXOEpOm57bK8aa4F3eOEndMml2JAETjWaG3SZYHmC6axSNIzHGY718dYwIuVg==", + "dependencies": { + "@types/estree": "^0.0.46" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/estree-util-attach-comments/node_modules/@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==" + }, + "node_modules/estree-util-build-jsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.0.0.tgz", + "integrity": "sha512-d49hPGqBCJF/bF06g1Ywg7zjH1mrrUdPPrixBlKBxcX4WvMYlUUJ8BkrwlzWc8/fm6XqGgk5jilhgeZBDEGwOQ==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.0.tgz", + "integrity": "sha512-aXXZFVMnBBDRP81vS4YtAYJ0hUkgEsXea7lNKWCOeaAquGb1Jm2rcONPB5fpzwgbNxulTvrWuKnp9UElUGAKeQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", + "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", + "dependencies": { + "is-plain-obj": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/estree-util-value-to-estree/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-visit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.1.0.tgz", + "integrity": "sha512-3lXJ4Us9j8TUif9cWcQy81t9p5OLasnDuuhrFiqb+XstmKC1d1LmrQWYsY49/9URcfHE64mPypDBaNK9NwWDPQ==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", + "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fetch-blob": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.5.tgz", + "integrity": "sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/github-slugger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", + "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dependencies": { + "@types/glob": "^7.1.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/ahmadnassri" + }, + "peerDependencies": { + "glob": "^7.1.6" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-wasm": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz", + "integrity": "sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==" + }, + "node_modules/hast-util-from-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz", + "integrity": "sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-2.1.0.tgz", + "integrity": "sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.0.2.tgz", + "integrity": "sha512-UQrZVeBj6A9od0lpFvqHKNSH9zvDrNoyWKbveu1a2oSCXEDUI+3bnd6BoiQLPnLrcXXn/jzJ6y9hmJTTlvf8lQ==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", + "dependencies": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz", + "integrity": "sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflection": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", + "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", + "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", + "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/load-script": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", + "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.iteratee": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz", + "integrity": "sha1-vkF32yiajMw8CZDx2ya1si/BVUw=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", + "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz", + "integrity": "sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz", + "integrity": "sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==", + "dependencies": { + "micromark-extension-frontmatter": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", + "dependencies": { + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz", + "integrity": "sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==", + "dependencies": { + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.0.tgz", + "integrity": "sha512-wb36oi09XxqO9RVqgfD+xo8a7xaNgS+01+k3v0GKW0X0bYbeBmUZz22Z/IJ8SuphVlG+DNgNo9VoEaUJ3PKfJQ==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.0.1.tgz", + "integrity": "sha512-oPC7/smPBf7vxnvIYH5y3fPo2lw1rdrswFfSb4i0GTAXRUQv7JUU/t/hbp07dgGdUFTSDOHm5DNamhNg/s2Hrg==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.2.0.tgz", + "integrity": "sha512-IPpX9GBzAIbIRCjbyeLDpMhACFb0wxTIujuR3YElB8LWbducUdMgRJuqs/Vg8xQ1bIAMm7lw8L+YNtua0xKXRw==", + "dependencies": { + "@types/estree-jsx": "^0.0.1", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", + "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", + "mdurl": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-6.1.0.tgz", + "integrity": "sha512-0PuqZELXZl4ms1sF7Lqigrqik4Ll3UhbI+jdTrfw7pZ9QPawgl7LD4GQ8MkU7bT/EwiVqChNTbifa2jLLKo76A==", + "dependencies": { + "@types/extend": "^3.0.0", + "@types/github-slugger": "^1.0.0", + "@types/mdast": "^3.0.0", + "extend": "^3.0.0", + "github-slugger": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "unist-util-is": "^5.0.0", + "unist-util-visit": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-wiki-link": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-wiki-link/-/mdast-util-wiki-link-0.0.2.tgz", + "integrity": "sha512-lSsR10/dPuYIxzjGZIGA4oYzsnEnqcsD6DTXL0pqdbBzNB9teKVZB2aIzZcUsdg31v/NoHOstkVwzbN6VrQLtw==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "mdast-util-to-markdown": "^0.6.5" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-wiki-link/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/mdx-bundler": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/mdx-bundler/-/mdx-bundler-8.0.1.tgz", + "integrity": "sha512-pfUiuCsPI/AzewMeFhgWKThi0ccu889BXYKR4KEwPmBVda6JM9joH2nn9qrvYtl7Ih3NKgK4Na2hE4DAeDkXXg==", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@esbuild-plugins/node-resolve": "^0.1.4", + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", + "gray-matter": "^4.0.3", + "remark-frontmatter": "^4.0.1", + "remark-mdx-frontmatter": "^1.1.1", + "uuid": "^8.3.2", + "xdm": "^3.3.0" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "esbuild": "0.11.x || 0.12.x || 0.13.x || 0.14.x" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz", + "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz", + "integrity": "sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz", + "integrity": "sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz", + "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==", + "dependencies": { + "@types/acorn": "^4.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz", + "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz", + "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.2.tgz", + "integrity": "sha512-bIaxblNIM+CCaJvp3L/V+168l79iuNmxEiTU6i3vB0YuDW+rumV64BFMxvhfRDxaJxQE1zD5vTPdyLBbW4efGA==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-wiki-link": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-wiki-link/-/micromark-extension-wiki-link-0.0.4.tgz", + "integrity": "sha512-dJc8AfnoU8BHkN+7fWZvIS20SMsMS1ZlxQUn6We67MqeKbOiEDZV5eEvCpwqGBijbJbxX3Kxz879L4K9HIiOvw==", + "dependencies": { + "@babel/runtime": "^7.12.1" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz", + "integrity": "sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.0.4.tgz", + "integrity": "sha512-dpo8ecREK5s/KMph7jJ46RLM6g7N21CMc9LAJQbDLdbQnTpijigkSJPTIfLXZ+h5wdXlcsQ+b6ufAE9v76AdgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^0.0.50", + "estree-util-visit": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", + "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/next/-/next-12.1.0.tgz", + "integrity": "sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==", + "dependencies": { + "@next/env": "12.1.0", + "caniuse-lite": "^1.0.30001283", + "postcss": "8.4.5", + "styled-jsx": "5.0.0", + "use-subscription": "1.5.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=12.22.0" + }, + "optionalDependencies": { + "@next/swc-android-arm64": "12.1.0", + "@next/swc-darwin-arm64": "12.1.0", + "@next/swc-darwin-x64": "12.1.0", + "@next/swc-linux-arm-gnueabihf": "12.1.0", + "@next/swc-linux-arm64-gnu": "12.1.0", + "@next/swc-linux-arm64-musl": "12.1.0", + "@next/swc-linux-x64-gnu": "12.1.0", + "@next/swc-linux-x64-musl": "12.1.0", + "@next/swc-win32-arm64-msvc": "12.1.0", + "@next/swc-win32-ia32-msvc": "12.1.0", + "@next/swc-win32-x64-msvc": "12.1.0" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^6.0.0 || ^7.0.0", + "react": "^17.0.2 || ^18.0.0-0", + "react-dom": "^17.0.2 || ^18.0.0-0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-contentlayer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/next-contentlayer/-/next-contentlayer-0.1.2.tgz", + "integrity": "sha512-oVq8dVbE898pINkRIyMkqJF1urhwC2AwLAU+cROAMx+gxhmVF+VUXmof27QogKz2ZwOxu2ff13DrpnrE0qrCbQ==", + "dependencies": { + "@contentlayer/core": "0.1.2", + "@contentlayer/utils": "0.1.2", + "rxjs": "^7.1.0" + }, + "peerDependencies": { + "next": "^12", + "react": "*", + "react-dom": "*" + } + }, + "node_modules/next-seo": { + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-4.29.0.tgz", + "integrity": "sha512-xmwzcz4uHaYJ8glbuhs6FSBQ7z3irmdPYdJJ5saWm72Uy3o+mPKGaPCXQetTCE6/xxVnpoDV4yFtFlEjUcljSg==", + "peerDependencies": { + "next": "^8.1.1-canary.54 || >=9.0.0", + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/next-themes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.1.1.tgz", + "integrity": "sha512-Iqxt6rhS/KfK/iHJ0tfFjTcdLEAI0AgwFuAFrMwLOPK5e+MI3I+fzyvBoS+VaOS+NldUiazurhgwYhrfV0VXsQ==", + "peerDependencies": { + "next": ">=11.1.1", + "react": "*", + "react-dom": "*" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/nlcst-to-string": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", + "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "optional": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.3.tgz", + "integrity": "sha512-AXP18u4pidSZ1xYXRDPY/8jdv3RAozIt/WLNR/MBGZAz+xjtlr90RvCnsvHQRiXyWliZF/CpytExp32UU67/SA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/oo-ascii-tree": { + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.55.1.tgz", + "integrity": "sha512-wGtYFm45kmxdss2XrdXC14uDUfyekbaqqZJrfvPtYHSa98Bk+RXHdTHHLQ1kwem6HT5c3ogf7+ZUBhX0B034iA==", + "engines": { + "node": ">= 12.7.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", + "integrity": "sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-latin": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.3.0.tgz", + "integrity": "sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==", + "dependencies": { + "nlcst-to-string": "^2.0.0", + "unist-util-modify-children": "^2.0.0", + "unist-util-visit-children": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/periscopic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", + "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", + "dependencies": { + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", + "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", + "dependencies": { + "lilconfig": "^2.0.4", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rc-align": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz", + "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "dom-align": "^1.7.0", + "lodash": "^4.17.21", + "rc-util": "^5.3.0", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-motion": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.0.tgz", + "integrity": "sha512-1MDWA9+i174CZ0SIDenSYm2Wb9YbRkrexjZWR0CUFu7D6f23E8Y0KsTgk9NGOLJsGak5ELZK/Y5lOlf5wQdzbw==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.21.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-trigger": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.18.tgz", + "integrity": "sha512-hi2yZ7umtbAGLxgSph1az9BR9i4Pb4fiQa4pdvFQuKN7U//3nwwygHQKHfexnM+0APBnzZwVlEHA5I8BpWrygw==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-align": "^4.0.0", + "rc-motion": "^2.0.0", + "rc-util": "^5.19.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-util": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.4.tgz", + "integrity": "sha512-rq11ap3NnOIdywFhcMQ9J7DXRJJ1c1Id1Hvr/1Dphr+5X75ERJBJybuh779DdurP4LJQqAhT6Aie0AjrBc5Vqw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-player": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.10.0.tgz", + "integrity": "sha512-PccIqea9nxSHAdai6R+Yj9lp6tb2lyXWbaF6YVHi5uO4FiXYMKKr9rMXJrivwV5vXwQa65rYKBmwebsBmRTT3w==", + "dependencies": { + "deepmerge": "^4.0.0", + "load-script": "^1.0.0", + "memoize-one": "^5.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.0.1" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/rehype": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", + "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", + "dependencies": { + "@types/hast": "^2.0.0", + "rehype-parse": "^8.0.0", + "rehype-stringify": "^9.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-autolink-headings": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-6.1.1.tgz", + "integrity": "sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==", + "dependencies": { + "@types/hast": "^2.0.0", + "extend": "^3.0.0", + "hast-util-has-property": "^2.0.0", + "hast-util-heading-rank": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.4.tgz", + "integrity": "sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^6.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.0.1.tgz", + "integrity": "sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==", + "dependencies": { + "@types/hast": "^2.0.0", + "github-slugger": "^1.1.1", + "hast-util-has-property": "^2.0.0", + "hast-util-heading-rank": "^2.0.0", + "hast-util-to-string": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz", + "integrity": "sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-frontmatter": "^1.0.0", + "micromark-extension-frontmatter": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.0.tgz", + "integrity": "sha512-J6Yqw566SaEy6A9Neni1JJTaEjbjsM3OsKqL04TtCvZhevRtFi8CG8GIQPzvxIRKRCAOnWw1Vpk1AInB1OpNqA==", + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx-frontmatter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-1.1.1.tgz", + "integrity": "sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==", + "dependencies": { + "estree-util-is-identifier-name": "^1.0.0", + "estree-util-value-to-estree": "^1.0.0", + "js-yaml": "^4.0.0", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=12.2.0" + } + }, + "node_modules/remark-mdx-frontmatter/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/remark-mdx-frontmatter/node_modules/estree-util-is-identifier-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz", + "integrity": "sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-mdx-frontmatter/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-7.0.1.tgz", + "integrity": "sha512-NRvYePr69LdeCkEGwL4KYAmq7kdWG5rEavCXMzUR4qndLoXHJAOLSUmPY6Qm4NJfKix7/EmgObyVaYivONAFhg==", + "dependencies": { + "@types/hast": "^2.3.2", + "@types/mdast": "^3.0.0", + "github-slugger": "^1.0.0", + "mdast-util-to-string": "^3.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-toc": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/remark-toc/-/remark-toc-8.0.1.tgz", + "integrity": "sha512-7he2VOm/cy13zilnOTZcyAoyoolV26ULlon6XyCFU+vG54Z/LWJnwphj/xKIDLOt66QmJUgTyUvLVHi2aAElyg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-toc": "^6.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-wiki-link-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-wiki-link-plus/-/remark-wiki-link-plus-1.0.0.tgz", + "integrity": "sha512-LyIbc4LZaR0gEzET1DdQrv5NolSqChDXYqTvGdWx25yEN2evYnFKv8uG84rHIKq1YY63kg/t83+yacGH8Ep3Ag==", + "dependencies": { + "@babel/runtime": "^7.4.4", + "mdast-util-wiki-link": "^0.0.2", + "micromark-extension-wiki-link": "^0.0.4" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/retext": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/retext/-/retext-7.0.1.tgz", + "integrity": "sha512-N0IaEDkvUjqyfn3/gwxVfI51IxfGzOiVXqPLWnKeCDbiQdxSg0zebzHPxXWnL7TeplAJ+RE4uqrXyYN//s9HjQ==", + "dependencies": { + "retext-latin": "^2.0.0", + "retext-stringify": "^2.0.0", + "unified": "^8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-2.0.4.tgz", + "integrity": "sha512-fOoSSoQgDZ+l/uS81oxI3alBghDUPja0JEl0TpQxI6MN+dhM6fLFumPJwMZ4PJTyL5FFAgjlsdv8IX+6IRuwMw==", + "dependencies": { + "parse-latin": "^4.0.0", + "unherit": "^1.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-4.0.0.tgz", + "integrity": "sha512-Mknd05zuIycr4Z/hNDxA8ktqv7pG7wYdTZc68a2MJF+Ibg/WloR5bbyrEjijwNwHRR+xWsovkLH4OQIz/mghdw==", + "dependencies": { + "nlcst-to-string": "^2.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-2.0.4.tgz", + "integrity": "sha512-xOtx5mFJBoT3j7PBtiY2I+mEGERNniofWktI1cKXvjMEJPOuqve0dghLHO1+gz/gScLn4zqspDGv4kk2wS5kSA==", + "dependencies": { + "nlcst-to-string": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/retext/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/retext/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/retext/node_modules/unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", + "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/styled-jsx": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", + "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || 18.x.x" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz", + "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==", + "dependencies": { + "arg": "^5.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "cosmiconfig": "^7.0.1", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss": "^8.4.6", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "autoprefixer": "^10.0.2", + "postcss": "^8.0.9" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-pattern": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-3.3.5.tgz", + "integrity": "sha512-LD+wFR/RNckk1DrKV0LTH4KIT9wRqnnOjtEf77ovhKcVi8gf83Uf6U7OdywEua6KD9SbHadUdfolayfIUiPxzw==" + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/typanion": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.7.1.tgz", + "integrity": "sha512-g2QDI/ZLpuEor9EnJ1b7s9S2QSJgNCPBw9ZCSkQdqXNjg5ZQs4mASgW/elVifSxISFwBeMaIAmMBP5luAOIKAw==" + }, + "node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find/-/unist-util-find-1.0.2.tgz", + "integrity": "sha512-ft06UDYzqi9o9RmGP0sZWI/zvLLQiBW2/MD+rW6mDqbOWDcmknGX9orQPspfuGRYWr8eSJAmfsBcvOpfGRJseA==", + "dependencies": { + "lodash.iteratee": "^4.5.0", + "unist-util-visit": "^1.1.0" + } + }, + "node_modules/unist-util-find/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + }, + "node_modules/unist-util-find/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/unist-util-find/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dependencies": { + "unist-util-is": "^3.0.0" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz", + "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==", + "dependencies": { + "array-iterate": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.2.tgz", + "integrity": "sha512-Y6+plxR41dOLbyyqVDLuGWgXDmxdXslCSRYQkSDagBnOT9oFsQH0J8FzhirSklUEe0xZTT0WDnAE1gXPaDFljA==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz", + "integrity": "sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz", + "integrity": "sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", + "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz", + "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/use-subscription": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", + "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", + "dependencies": { + "object-assign": "^4.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", + "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vfile": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz", + "integrity": "sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", + "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", + "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/xdm": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/xdm/-/xdm-3.4.0.tgz", + "integrity": "sha512-jZceaPGSInEHL1EzllhBLtYPX9zhU8omUK3AqUgltYinUmfPJ4OWtRC70L1g0rdsyVbgAZrsTRuq58ACWlnWAQ==", + "dependencies": { + "@rollup/pluginutils": "^4.0.0", + "@types/estree-jsx": "^0.0.1", + "@types/mdx": "^2.0.0", + "astring": "^1.6.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0", + "node-fetch": "^3.2.0", + "periscopic": "^3.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "source-map": "^0.7.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + }, + "optionalDependencies": { + "deasync": "^0.1.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, "requires": { "@babel/highlight": "^7.16.7" } @@ -14,14 +6081,12 @@ "@babel/helper-validator-identifier": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/highlight": { "version": "7.16.10", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -32,7 +6097,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -41,7 +6105,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -52,7 +6115,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -60,26 +6122,22 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -186,7 +6244,8 @@ "@effect-ts/otel": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@effect-ts/otel/-/otel-0.13.0.tgz", - "integrity": "sha512-AR9l1Zj2eF1uv89Rpu0ePlW5l6qFNeBfmOsih7Yoi517g8dfURAXvgWVi67DmwqDQThz3xVuGd1evOcBqXCdsQ==" + "integrity": "sha512-AR9l1Zj2eF1uv89Rpu0ePlW5l6qFNeBfmOsih7Yoi517g8dfURAXvgWVi67DmwqDQThz3xVuGd1evOcBqXCdsQ==", + "requires": {} }, "@effect-ts/otel-exporter-trace-otlp-grpc": { "version": "0.13.0", @@ -256,12 +6315,14 @@ "@headlessui/react": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.5.0.tgz", - "integrity": "sha512-aaRnYxBb3MU2FNJf3Ut9RMTUqqU3as0aI1lQhgo2n9Fa67wRu14iOGqx93xB+uMNVfNwZ5B3y/Ndm7qZGuFeMQ==" + "integrity": "sha512-aaRnYxBb3MU2FNJf3Ut9RMTUqqU3as0aI1lQhgo2n9Fa67wRu14iOGqx93xB+uMNVfNwZ5B3y/Ndm7qZGuFeMQ==", + "requires": {} }, "@heroicons/react": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz", - "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==" + "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==", + "requires": {} }, "@mdx-js/loader": { "version": "2.1.0", @@ -313,7 +6374,8 @@ "@next/mdx": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-12.1.0.tgz", - "integrity": "sha512-Y+VF6mMbm7pbiSj6c0YI0bD02aK0JUglWplHW48o65JYGhJSD7jzDfuIJG6/XdQ8fhTnDj/6+kYLnV+1QmXFRQ==" + "integrity": "sha512-Y+VF6mMbm7pbiSj6c0YI0bD02aK0JUglWplHW48o65JYGhJSD7jzDfuIJG6/XdQ8fhTnDj/6+kYLnV+1QmXFRQ==", + "requires": {} }, "@next/swc-android-arm64": { "version": "12.1.0", @@ -385,7 +6447,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -394,14 +6455,12 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -415,7 +6474,8 @@ "@opentelemetry/context-async-hooks": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.1.1.tgz", - "integrity": "sha512-17wlKOwcWzo1Eo2T1OJqWTnrUZ6vTdmHs9XhcqChvyx6N8DRIP096qQxfebk/zDzVgvjryv+K2pYjONPH404hQ==" + "integrity": "sha512-17wlKOwcWzo1Eo2T1OJqWTnrUZ6vTdmHs9XhcqChvyx6N8DRIP096qQxfebk/zDzVgvjryv+K2pYjONPH404hQ==", + "requires": {} }, "@opentelemetry/core": { "version": "1.1.1", @@ -782,8 +6842,12 @@ "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" }, "@types/prop-types": { "version": "15.7.4", @@ -823,13 +6887,13 @@ "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} }, "acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, "requires": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -839,16 +6903,14 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" } } }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, "ansi-regex": { "version": "5.0.1", @@ -875,8 +6937,7 @@ "arg": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", - "dev": true + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" }, "argparse": { "version": "1.0.10", @@ -900,7 +6961,6 @@ "version": "10.4.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", - "dev": true, "requires": { "browserslist": "^4.20.2", "caniuse-lite": "^1.0.30001317", @@ -955,7 +7015,6 @@ "version": "4.20.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001317", "electron-to-chromium": "^1.4.84", @@ -972,8 +7031,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camel-case": { "version": "4.1.2", @@ -987,8 +7045,7 @@ "camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, "caniuse-lite": { "version": "1.0.30001319", @@ -1004,7 +7061,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1055,6 +7111,11 @@ } } }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, "clipanion": { "version": "3.2.0-rc.10", "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.0-rc.10.tgz", @@ -1112,7 +7173,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -1124,8 +7184,7 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "csstype": { "version": "3.0.11", @@ -1145,7 +7204,8 @@ "date-fns-tz": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.0.tgz", - "integrity": "sha512-r6ye6PmGEvkF467/41qzU71oGwv9kHTnV3vtSZdyV6VThwPID47ZH7FtR7zQWrhgOUWkYySm2ems2w6ZfNUqoA==" + "integrity": "sha512-r6ye6PmGEvkF467/41qzU71oGwv9kHTnV3vtSZdyV6VThwPID47ZH7FtR7zQWrhgOUWkYySm2ems2w6ZfNUqoA==", + "requires": {} }, "deasync": { "version": "0.1.24", @@ -1181,8 +7241,7 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, "dequal": { "version": "2.0.2", @@ -1193,7 +7252,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, "requires": { "acorn-node": "^1.6.1", "defined": "^1.0.0", @@ -1203,8 +7261,7 @@ "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "diff": { "version": "5.0.0", @@ -1214,14 +7271,17 @@ "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "dom-align": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz", + "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" }, "electron-to-chromium": { "version": "1.4.90", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz", - "integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==", - "dev": true + "integrity": "sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==" }, "emoji-regex": { "version": "8.0.0", @@ -1232,7 +7292,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -1475,7 +7534,6 @@ "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1488,7 +7546,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -1499,7 +7556,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -1551,8 +7607,7 @@ "fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" }, "fs.realpath": { "version": "1.0.0", @@ -1597,7 +7652,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "requires": { "is-glob": "^4.0.3" } @@ -1632,14 +7686,28 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "hash-wasm": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz", "integrity": "sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==" }, + "hast-util-from-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + } + }, "hast-util-has-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz", @@ -1662,6 +7730,14 @@ "@types/unist": "^2.0.0" } }, + "hast-util-parse-selector": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "requires": { + "@types/hast": "^2.0.0" + } + }, "hast-util-to-estree": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.0.2.tgz", @@ -1713,6 +7789,18 @@ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" }, + "hastscript": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, "html-void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", @@ -1722,7 +7810,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1769,8 +7856,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "2.1.0", @@ -1861,8 +7947,7 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "kind-of": { "version": "6.0.3", @@ -1877,20 +7962,23 @@ "lilconfig": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", - "dev": true + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==" }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "load-script": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -1906,6 +7994,11 @@ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, + "lodash.iteratee": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz", + "integrity": "sha1-vkF32yiajMw8CZDx2ya1si/BVUw=" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2310,8 +8403,7 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromark": { "version": "3.0.10", @@ -2736,7 +8828,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, "requires": { "braces": "^3.0.1", "picomatch": "^2.2.3" @@ -2753,8 +8844,7 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mri": { "version": "1.2.0", @@ -2819,12 +8909,14 @@ "next-seo": { "version": "4.29.0", "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-4.29.0.tgz", - "integrity": "sha512-xmwzcz4uHaYJ8glbuhs6FSBQ7z3irmdPYdJJ5saWm72Uy3o+mPKGaPCXQetTCE6/xxVnpoDV4yFtFlEjUcljSg==" + "integrity": "sha512-xmwzcz4uHaYJ8glbuhs6FSBQ7z3irmdPYdJJ5saWm72Uy3o+mPKGaPCXQetTCE6/xxVnpoDV4yFtFlEjUcljSg==", + "requires": {} }, "next-themes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.1.1.tgz", - "integrity": "sha512-Iqxt6rhS/KfK/iHJ0tfFjTcdLEAI0AgwFuAFrMwLOPK5e+MI3I+fzyvBoS+VaOS+NldUiazurhgwYhrfV0VXsQ==" + "integrity": "sha512-Iqxt6rhS/KfK/iHJ0tfFjTcdLEAI0AgwFuAFrMwLOPK5e+MI3I+fzyvBoS+VaOS+NldUiazurhgwYhrfV0VXsQ==", + "requires": {} }, "nlcst-to-string": { "version": "2.0.4", @@ -2864,8 +8956,7 @@ "node-releases": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "dev": true + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" }, "normalize-path": { "version": "3.0.0", @@ -2875,8 +8966,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, "object-assign": { "version": "4.1.1", @@ -2886,8 +8976,7 @@ "object-hash": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" }, "once": { "version": "1.4.0", @@ -2906,7 +8995,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -2930,7 +9018,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -2948,6 +9035,11 @@ "unist-util-visit-children": "^1.0.0" } }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, "pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", @@ -2970,8 +9062,7 @@ "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "periscopic": { "version": "3.0.4", @@ -2996,7 +9087,6 @@ "version": "8.4.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", - "dev": true, "requires": { "nanoid": "^3.3.1", "picocolors": "^1.0.0", @@ -3007,7 +9097,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, "requires": { "camelcase-css": "^2.0.1" } @@ -3016,7 +9105,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz", "integrity": "sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==", - "dev": true, "requires": { "lilconfig": "^2.0.4", "yaml": "^1.10.2" @@ -3026,7 +9114,6 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, "requires": { "postcss-selector-parser": "^6.0.6" } @@ -3035,7 +9122,6 @@ "version": "6.0.9", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", - "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3044,18 +9130,7 @@ "postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "property-information": { "version": "6.1.1", @@ -3085,14 +9160,57 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "rc-align": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz", + "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "dom-align": "^1.7.0", + "lodash": "^4.17.21", + "rc-util": "^5.3.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-motion": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.0.tgz", + "integrity": "sha512-1MDWA9+i174CZ0SIDenSYm2Wb9YbRkrexjZWR0CUFu7D6f23E8Y0KsTgk9NGOLJsGak5ELZK/Y5lOlf5wQdzbw==", + "requires": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.21.0" + } + }, + "rc-trigger": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.18.tgz", + "integrity": "sha512-hi2yZ7umtbAGLxgSph1az9BR9i4Pb4fiQa4pdvFQuKN7U//3nwwygHQKHfexnM+0APBnzZwVlEHA5I8BpWrygw==", + "requires": { + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-align": "^4.0.0", + "rc-motion": "^2.0.0", + "rc-util": "^5.19.2" + } + }, + "rc-util": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.4.tgz", + "integrity": "sha512-rq11ap3NnOIdywFhcMQ9J7DXRJJ1c1Id1Hvr/1Dphr+5X75ERJBJybuh779DdurP4LJQqAhT6Aie0AjrBc5Vqw==", + "requires": { + "@babel/runtime": "^7.12.5", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + } }, "react": { "version": "17.0.2", @@ -3148,6 +9266,17 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, + "rehype": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", + "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", + "requires": { + "@types/hast": "^2.0.0", + "rehype-parse": "^8.0.0", + "rehype-stringify": "^9.0.0", + "unified": "^10.0.0" + } + }, "rehype-autolink-headings": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-6.1.1.tgz", @@ -3162,6 +9291,17 @@ "unist-util-visit": "^4.0.0" } }, + "rehype-parse": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.4.tgz", + "integrity": "sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^6.0.0", + "unified": "^10.0.0" + } + }, "rehype-slug": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.0.1.tgz", @@ -3312,6 +9452,11 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -3325,8 +9470,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "retext": { "version": "7.0.1", @@ -3450,14 +9594,12 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -3504,6 +9646,11 @@ "lru-cache": "^6.0.0" } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -3583,13 +9730,13 @@ "styled-jsx": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", - "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==" + "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", + "requires": {} }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -3603,7 +9750,6 @@ "version": "3.0.23", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz", "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==", - "dev": true, "requires": { "arg": "^5.0.1", "chalk": "^4.1.2", @@ -3697,6 +9843,38 @@ "@types/unist": "^2.0.0" } }, + "unist-util-find": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find/-/unist-util-find-1.0.2.tgz", + "integrity": "sha512-ft06UDYzqi9o9RmGP0sZWI/zvLLQiBW2/MD+rW6mDqbOWDcmknGX9orQPspfuGRYWr8eSJAmfsBcvOpfGRJseA==", + "requires": { + "lodash.iteratee": "^4.5.0", + "unist-util-visit": "^1.1.0" + }, + "dependencies": { + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "requires": { + "unist-util-is": "^3.0.0" + } + } + } + }, "unist-util-generated": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", @@ -3794,8 +9972,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "8.3.2", @@ -3824,6 +10001,15 @@ "vfile-message": "^3.0.0" } }, + "vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "requires": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, "vfile-message": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", @@ -3833,6 +10019,11 @@ "unist-util-stringify-position": "^3.0.0" } }, + "web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" + }, "web-streams-polyfill": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", diff --git a/site/package.json b/site/package.json index bcd9707..a7834b0 100644 --- a/site/package.json +++ b/site/package.json @@ -16,19 +16,23 @@ "@tailwindcss/typography": "^0.5.2", "contentlayer": "^0.1.2", "gray-matter": "^4.0.3", + "hast-util-to-string": "^2.0.0", "next": "^12.1.0", "next-contentlayer": "^0.1.2", "next-seo": "^4.28.1", "next-themes": "^0.1.1", + "rc-trigger": "^5.2.18", "react": "^17.0.2", "react-dom": "^17.0.2", "react-player": "^2.10.0", + "rehype": "^12.0.1", "rehype-autolink-headings": "^6.1.1", "rehype-slug": "^5.0.1", "remark-gfm": "^3.0.0", "remark-slug": "^7.0.0", "remark-toc": "^8.0.0", - "remark-wiki-link-plus": "^1.0.0" + "remark-wiki-link-plus": "^1.0.0", + "unist-util-find": "^1.0.2" }, "devDependencies": { "autoprefixer": "^10.2.6", diff --git a/site/styles/global.css b/site/styles/global.css index 0387224..907ec95 100644 --- a/site/styles/global.css +++ b/site/styles/global.css @@ -27,3 +27,15 @@ body { .extra-small { font-size: 0.50rem; } + +/* TOOLTIP */ +.trigger { + position: absolute; + opacity: 1; + transition: 0.1s; + +} +.trigger-hidden { + opacity: 0; + visibility: hidden; +} From 1ba219387048da2ad57e052a3c3f34e50114bbf9 Mon Sep 17 00:00:00 2001 From: olayway Date: Mon, 16 May 2022 15:37:14 +0200 Subject: [PATCH 003/116] [site/components][f]: definitions preview on hover --- site/components/Content.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/site/components/Content.js b/site/components/Content.js index 19e783a..d809bdf 100644 --- a/site/components/Content.js +++ b/site/components/Content.js @@ -1,4 +1,5 @@ import { useState, useEffect } from 'react' +import { useRouter } from 'next/router' import {unified} from 'unified' import rehypeParse from 'rehype-parse' import find from 'unist-util-find' @@ -10,6 +11,7 @@ const textStyles = (theme) => ({ background: theme === 'light' ? '#fff' : '#000', }) + const display = (data, theme) => { return (
{ ) } +const getAbsolutePath = ({ currentPath, basePath, relativePath }) => { + console.log({ currentPath, basePath, relativePath }); + const absolutePath = currentPath.slice(1).split("/") + absolutePath.pop(); // remove current page name + absolutePath.unshift(basePath); + absolutePath.push(relativePath); + console.log(absolutePath); + return absolutePath.join("/"); +} + export const Content = (props) => { const [state, setState] = useState({ data: "", isLoaded: false, }) + const router = useRouter(); + useEffect(async () => { - // const path = `/concepts/${props.value}`; - // console.log(path) - const path = "http://localhost:3000/concepts/bitcoin"; - fetch(path).then((response) => { + const basePath = "http://localhost:3000"; + const currentPath = router.asPath; + const relativePath = props.value.split(".")[0]; // temp remove .md + const absolutePath = getAbsolutePath({ currentPath, basePath, relativePath }); + console.log(absolutePath); + fetch(absolutePath).then((response) => { if (response.status !== 200) { console.log(`Looks like there was a problem. Status Code: ${response.status}`) return @@ -51,7 +67,6 @@ export const Content = (props) => { const p = find(main, (node) => { return node.tagName === "p" }) - // console.log(toString(p)) setState({ data: toString(p), isLoaded: true, From 0b65f7d4041cf85a3170dd1d3de5cda8417123d4 Mon Sep 17 00:00:00 2001 From: olayway Date: Tue, 17 May 2022 14:38:24 +0200 Subject: [PATCH 004/116] [site/components][f]: floating-ui tooltip on hover --- site/components/Anchor.js | 100 ++++++++++++++++++++++++++----- site/components/Content.js | 82 ------------------------- site/components/Tooltip.js | 48 +++++++-------- site/package-lock.json | 119 +++++++++++++++++++++++++++++++++++++ site/package.json | 1 + site/styles/global.css | 12 ---- site/utils/absolutePath.js | 10 ++++ 7 files changed, 236 insertions(+), 136 deletions(-) delete mode 100644 site/components/Content.js create mode 100644 site/utils/absolutePath.js diff --git a/site/components/Anchor.js b/site/components/Anchor.js index bcf3960..7a719b3 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -1,25 +1,93 @@ -import { useState, Fragment } from 'react'; -import { Tooltip } from './Tooltip'; +import { useRouter } from 'next/router' +import { useState, useEffect, Fragment } from 'react' +import { useFloating, useHover, useInteractions } from '@floating-ui/react-dom-interactions' +import { unified } from 'unified' +import rehypeParse from 'rehype-parse' +import find from 'unist-util-find' +import { toString } from 'hast-util-to-string' + +import { Tooltip } from './Tooltip' +import getAbsolutePath from '../utils/absolutePath' + + +// TODO cancel request on mouseleave when it hasn't been fulfilled yet export const Anchor = (props) => { - const href = props.href; + const { href } = props; + const router = useRouter(); + const [ open, setOpen ] = useState(false); + const [ loaded, setLoaded ] = useState(false); + const [ preview, setPreview ] = useState(""); + const { x, y, reference, floating, strategy, context } = useFloating({ + open, + onOpenChange: setOpen + }); + const { getReferenceProps, getFloatingProps } = useInteractions([ + useHover(context, props) + ]); + + useEffect(() => { + if (open) { + fetchPreview(); + } + }, [open]) + + const fetchPreview = async () => { + setLoaded(false); + const basePath = "http://localhost:3000"; // TODO + const currentPath = router.asPath; + const relativePath = props.href.split(".")[0]; // TBD temp remove .md + const absolutePath = getAbsolutePath({ currentPath, basePath, relativePath }); + console.log(`Fetching: ${absolutePath}`); + + const response = await fetch(absolutePath); + if (response.status !== 200) { + // TODO + console.log(`Looks like there was a problem. Status Code: ${response.status}`) + return + } + const html = await response.text(); + const hast = unified().use(rehypeParse).parse(html); + console.log(hast) + const article = find(hast, (node) => { + return node.tagName === "article" + }) + const main = find(article, (node) => { + return node.tagName === "main" + }) + const p = find(main, (node) => { + return node.tagName === "p" + }) + + setPreview(toString(p)); + setLoaded(true); + } + if ( href && - href.indexOf("http://") !== 0 && - href.indexOf("http://") !== 0 && + href.indexOf("http:") !== 0 && + href.indexOf("https:") !== 0 && href.includes(".md") ) { - return ( - - - - - - ); + return + + {open && loaded && ( + // TODO temp span + + { preview } + + )} + ; } return ; }; diff --git a/site/components/Content.js b/site/components/Content.js deleted file mode 100644 index d809bdf..0000000 --- a/site/components/Content.js +++ /dev/null @@ -1,82 +0,0 @@ -import { useState, useEffect } from 'react' -import { useRouter } from 'next/router' -import {unified} from 'unified' -import rehypeParse from 'rehype-parse' -import find from 'unist-util-find' -import {toString} from 'hast-util-to-string' - -const textStyles = (theme) => ({ - padding: '16px 22px', - fontSize: '11px', - background: theme === 'light' ? '#fff' : '#000', -}) - - -const display = (data, theme) => { - return ( -
-
{data}
- {/*
{wikiLogo(theme)}
*/} - {/* {arrow(theme)} */} -
- ) -} - -const getAbsolutePath = ({ currentPath, basePath, relativePath }) => { - console.log({ currentPath, basePath, relativePath }); - const absolutePath = currentPath.slice(1).split("/") - absolutePath.pop(); // remove current page name - absolutePath.unshift(basePath); - absolutePath.push(relativePath); - console.log(absolutePath); - return absolutePath.join("/"); -} - -export const Content = (props) => { - const [state, setState] = useState({ - data: "", - isLoaded: false, - }) - - const router = useRouter(); - - useEffect(async () => { - const basePath = "http://localhost:3000"; - const currentPath = router.asPath; - const relativePath = props.value.split(".")[0]; // temp remove .md - const absolutePath = getAbsolutePath({ currentPath, basePath, relativePath }); - console.log(absolutePath); - fetch(absolutePath).then((response) => { - if (response.status !== 200) { - console.log(`Looks like there was a problem. Status Code: ${response.status}`) - return - } - response.text().then((data) => { - const hast = unified().use(rehypeParse).parse(data); - console.log(hast) - const article = find(hast, (node) => { - return node.tagName === "article" - }) - const main = find(article, (node) => { - return node.tagName === "main" - }) - const p = find(main, (node) => { - return node.tagName === "p" - }) - setState({ - data: toString(p), - isLoaded: true, - }) - }) - }) - }, []) - - const { theme } = props - const { data, isLoaded } = state - - return isLoaded ? display(data, theme) :
-} diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 1cccf1f..7a17402 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -1,32 +1,28 @@ -import Trigger from 'rc-trigger' -import { Content } from './Content' +const tooltipTextStyles = (theme) => ({ + padding: '16px 22px', + fontSize: '11px', + background: theme === 'light' ? '#fff' : '#000', + // color: theme === 'light' ? 'black' : 'white', + pointerEvents: 'none', + borderRadius: '4px', + position: 'absolute' +}) -const position = { - bottom: { - points: ['tc', 'bc'], - offset: [0, 10] - }, - right: { - points: ['tl', 'tc'], - offset: [20, 0] - }, - top: { - points: ['bc', 'tc'], - offset: [0, -10] - } -} +// const tooltipBoxStyles = (theme) => ({ +// color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', +// transition: "0.1s", +// width: "50vw" +// }) export const Tooltip = (props) => { - const { children, value, theme, mouseEnterDelay = 0.5 } = props; + const { theme, content } = props; return ( - } - mouseEnterDelay={mouseEnterDelay} - prefixCls='trigger' - popupAlign={position.bottom} - > - {children} - +
+
+ { content } +
+ {/*
{wikiLogo(theme)}
*/} + {/* {arrow(theme)} */} +
) } diff --git a/site/package-lock.json b/site/package-lock.json index 0b7fa30..f359ab9 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -5,6 +5,7 @@ "packages": { "": { "dependencies": { + "@floating-ui/react-dom-interactions": "^0.6.0", "@headlessui/react": "^1.4.1", "@heroicons/react": "^1.0.4", "@mdx-js/loader": "^2.0.0", @@ -337,6 +338,42 @@ "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==" }, + "node_modules/@floating-ui/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.0.tgz", + "integrity": "sha512-W7+i5Suhhvv97WDTW//KqUA43f/2a4abprM1rWqtLM9lIlJ29tbFI8h232SvqunXon0WmKNEKVjbOsgBhTnbLw==" + }, + "node_modules/@floating-ui/dom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.0.tgz", + "integrity": "sha512-PS75dnMg4GdWjDFOiOs15cDzYJpukRNHqQn0ugrBlsrpk2n+y8bwZ24XrsdLSL7kxshmxxr2nTNycLnmRIvV7g==", + "dependencies": { + "@floating-ui/core": "^0.7.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.0.tgz", + "integrity": "sha512-mpYGykTqwtBYT+ZTQQ2OfZ6wXJNuUgmqqD9ooCgbMRgvul6InFOTtWYvtujps439hmOFiVPm4PoBkEEn5imidg==", + "dependencies": { + "@floating-ui/dom": "^0.5.0", + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom-interactions": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom-interactions/-/react-dom-interactions-0.6.0.tgz", + "integrity": "sha512-8XzQuQStUNztHvg+Rj6MdUjBsOKIb6Oe0eIs1w9LfssOT0ZEPPHVsCZgLiWoyDaotF6pirLGAXkOfQxPM7VBRQ==", + "dependencies": { + "@floating-ui/react-dom": "^0.7.0", + "aria-hidden": "^1.1.3", + "use-isomorphic-layout-effect": "^1.1.1" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.5.9", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.9.tgz", @@ -1277,6 +1314,22 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-hidden": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.1.3.tgz", + "integrity": "sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==", + "dependencies": { + "tslib": "^1.0.0" + }, + "engines": { + "node": ">=8.5.0" + } + }, + "node_modules/aria-hidden/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/array-iterate": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", @@ -5850,6 +5903,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-subscription": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", @@ -6291,6 +6357,38 @@ "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==" }, + "@floating-ui/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.0.tgz", + "integrity": "sha512-W7+i5Suhhvv97WDTW//KqUA43f/2a4abprM1rWqtLM9lIlJ29tbFI8h232SvqunXon0WmKNEKVjbOsgBhTnbLw==" + }, + "@floating-ui/dom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.0.tgz", + "integrity": "sha512-PS75dnMg4GdWjDFOiOs15cDzYJpukRNHqQn0ugrBlsrpk2n+y8bwZ24XrsdLSL7kxshmxxr2nTNycLnmRIvV7g==", + "requires": { + "@floating-ui/core": "^0.7.0" + } + }, + "@floating-ui/react-dom": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.0.tgz", + "integrity": "sha512-mpYGykTqwtBYT+ZTQQ2OfZ6wXJNuUgmqqD9ooCgbMRgvul6InFOTtWYvtujps439hmOFiVPm4PoBkEEn5imidg==", + "requires": { + "@floating-ui/dom": "^0.5.0", + "use-isomorphic-layout-effect": "^1.1.1" + } + }, + "@floating-ui/react-dom-interactions": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom-interactions/-/react-dom-interactions-0.6.0.tgz", + "integrity": "sha512-8XzQuQStUNztHvg+Rj6MdUjBsOKIb6Oe0eIs1w9LfssOT0ZEPPHVsCZgLiWoyDaotF6pirLGAXkOfQxPM7VBRQ==", + "requires": { + "@floating-ui/react-dom": "^0.7.0", + "aria-hidden": "^1.1.3", + "use-isomorphic-layout-effect": "^1.1.1" + } + }, "@grpc/grpc-js": { "version": "1.5.9", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.9.tgz", @@ -6947,6 +7045,21 @@ "sprintf-js": "~1.0.2" } }, + "aria-hidden": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.1.3.tgz", + "integrity": "sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==", + "requires": { + "tslib": "^1.0.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "array-iterate": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", @@ -9961,6 +10074,12 @@ "unist-util-is": "^5.0.0" } }, + "use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} + }, "use-subscription": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", diff --git a/site/package.json b/site/package.json index a7834b0..b618c5f 100644 --- a/site/package.json +++ b/site/package.json @@ -7,6 +7,7 @@ "start": "next start" }, "dependencies": { + "@floating-ui/react-dom-interactions": "^0.6.0", "@headlessui/react": "^1.4.1", "@heroicons/react": "^1.0.4", "@mdx-js/loader": "^2.0.0", diff --git a/site/styles/global.css b/site/styles/global.css index 907ec95..0387224 100644 --- a/site/styles/global.css +++ b/site/styles/global.css @@ -27,15 +27,3 @@ body { .extra-small { font-size: 0.50rem; } - -/* TOOLTIP */ -.trigger { - position: absolute; - opacity: 1; - transition: 0.1s; - -} -.trigger-hidden { - opacity: 0; - visibility: hidden; -} diff --git a/site/utils/absolutePath.js b/site/utils/absolutePath.js new file mode 100644 index 0000000..d12126a --- /dev/null +++ b/site/utils/absolutePath.js @@ -0,0 +1,10 @@ +const absolutePath = ({ currentPath, basePath, relativePath }) => { + const absolutePath = currentPath.slice(1).split("/") + absolutePath.pop(); // remove current page name + absolutePath.unshift(basePath); + absolutePath.push(relativePath); + console.log(absolutePath); + return absolutePath.join("/"); +}; + +export default absolutePath; From 5290e24d9560049318c19906646ffa9d230ddec1 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 09:36:34 +0200 Subject: [PATCH 005/116] [site/components][f]: floatingui tooltip + arrow --- site/components/Anchor.js | 109 ++++++++++++++++++++-------------- site/components/Tooltip.js | 61 +++++++++++++------ site/utils/absolutePath.js | 1 - site/utils/documentExtract.js | 16 +++++ 4 files changed, 124 insertions(+), 63 deletions(-) create mode 100644 site/utils/documentExtract.js diff --git a/site/components/Anchor.js b/site/components/Anchor.js index 7a719b3..03dc895 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -1,13 +1,19 @@ +import ReactDOM from 'react-dom' import { useRouter } from 'next/router' -import { useState, useEffect, Fragment } from 'react' -import { useFloating, useHover, useInteractions } from '@floating-ui/react-dom-interactions' -import { unified } from 'unified' -import rehypeParse from 'rehype-parse' -import find from 'unist-util-find' -import { toString } from 'hast-util-to-string' +import { useState, useEffect, useRef, Fragment } from 'react' +import { + useFloating, + useHover, + useInteractions, + arrow, + autoPlacement, + autoUpdate, + offset +} from '@floating-ui/react-dom-interactions' -import { Tooltip } from './Tooltip' import getAbsolutePath from '../utils/absolutePath' +import documentExtract from '../utils/documentExtract' +import { Tooltip } from './Tooltip' // TODO cancel request on mouseleave when it hasn't been fulfilled yet @@ -15,30 +21,47 @@ import getAbsolutePath from '../utils/absolutePath' export const Anchor = (props) => { const { href } = props; const router = useRouter(); - const [ open, setOpen ] = useState(false); - const [ loaded, setLoaded ] = useState(false); + const arrowRef = useRef(null); + + const [ showTooltip, setShowTooltip ] = useState(false); const [ preview, setPreview ] = useState(""); - const { x, y, reference, floating, strategy, context } = useFloating({ - open, - onOpenChange: setOpen + const [ previewLoaded, setPreviewLoaded ] = useState(false); + + const { + x, + y, + reference, + floating, + placement, + strategy, + context, + middlewareData: { arrow: { x: arrowX, y: arrowY } = {}} + } = useFloating({ + open: showTooltip, + onOpenChange: setShowTooltip, + whileElementsMounted: autoUpdate, + middleware: [ + offset(5), + autoPlacement(), + arrow({ element: arrowRef, padding: 4 }) + ] }); const { getReferenceProps, getFloatingProps } = useInteractions([ useHover(context, props) ]); useEffect(() => { - if (open) { + if (showTooltip) { fetchPreview(); } - }, [open]) + }, [showTooltip]) const fetchPreview = async () => { - setLoaded(false); + setPreviewLoaded(false); const basePath = "http://localhost:3000"; // TODO const currentPath = router.asPath; const relativePath = props.href.split(".")[0]; // TBD temp remove .md const absolutePath = getAbsolutePath({ currentPath, basePath, relativePath }); - console.log(`Fetching: ${absolutePath}`); const response = await fetch(absolutePath); if (response.status !== 200) { @@ -47,20 +70,10 @@ export const Anchor = (props) => { return } const html = await response.text(); - const hast = unified().use(rehypeParse).parse(html); - console.log(hast) - const article = find(hast, (node) => { - return node.tagName === "article" - }) - const main = find(article, (node) => { - return node.tagName === "main" - }) - const p = find(main, (node) => { - return node.tagName === "p" - }) + const extract = documentExtract(html); - setPreview(toString(p)); - setLoaded(true); + setPreview(extract); + setPreviewLoaded(true); } if ( @@ -71,21 +84,29 @@ export const Anchor = (props) => { ) { return
- {open && loaded && ( - // TODO temp span - - { preview } - + {( // TODO temp client only + typeof window !== 'undefined' && window.document && + ReactDOM.createPortal( + ( + { preview } + + ), document.body + ) )} ; } diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 7a17402..4b90e2d 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -1,28 +1,53 @@ -const tooltipTextStyles = (theme) => ({ +import React from 'react'; + + +const tooltipStyles = (theme) => ({ + height: 'auto', + // maxWidth: '30rem', padding: '16px 22px', - fontSize: '11px', background: theme === 'light' ? '#fff' : '#000', - // color: theme === 'light' ? 'black' : 'white', - pointerEvents: 'none', + color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', borderRadius: '4px', - position: 'absolute' + boxShadow: 'rgba(0, 0, 0, 0.55) 0px 0px 16px -3px', + fontSize: '90%' }) -// const tooltipBoxStyles = (theme) => ({ -// color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', -// transition: "0.1s", -// width: "50vw" -// }) +const tooltipArrowStyles = ({ theme, x, y, side }) => ({ + position: "absolute", + left: x != null ? `${x}px` : '', + top: y != null ? `${y}px` : '', + right: '', + bottom: '', + [side]: '-4px', + height: "8px", + width: "8px", + background: theme === 'light' ? '#fff' : '#000', + transform: "rotate(45deg)" +}) + +export const Tooltip = React.forwardRef((props, ref) => { + const { theme, children, arrowRef, arrowX, arrowY, placement, ...tooltipProps } = props; + + console.log({ arrowRef, arrowX, arrowY, placement }); + + const arrowPlacement = { + top: 'bottom', + right: 'left', + bottom: 'top', + left: 'right', + }[placement.split('-')[0]]; -export const Tooltip = (props) => { - const { theme, content } = props; return ( -
-
- { content } +
+
+ { children }
- {/*
{wikiLogo(theme)}
*/} - {/* {arrow(theme)} */} +
) -} +}) diff --git a/site/utils/absolutePath.js b/site/utils/absolutePath.js index d12126a..441bdcb 100644 --- a/site/utils/absolutePath.js +++ b/site/utils/absolutePath.js @@ -3,7 +3,6 @@ const absolutePath = ({ currentPath, basePath, relativePath }) => { absolutePath.pop(); // remove current page name absolutePath.unshift(basePath); absolutePath.push(relativePath); - console.log(absolutePath); return absolutePath.join("/"); }; diff --git a/site/utils/documentExtract.js b/site/utils/documentExtract.js new file mode 100644 index 0000000..8f6ab55 --- /dev/null +++ b/site/utils/documentExtract.js @@ -0,0 +1,16 @@ +import { unified } from 'unified' +import rehypeParse from 'rehype-parse' +import find from 'unist-util-find' +import { toString } from 'hast-util-to-string' + + +// get first paragraph inside article's main tag +const documentExtract = (htmlString) => { + const hast = unified().use(rehypeParse).parse(htmlString); + const article = find(hast, (node) => node.tagName === "article"); + const main = find(article, (node) => node.tagName === "main"); + const paragraph = find(main, (node) => node.tagName === "p"); + return toString(paragraph); +} + +export default documentExtract; From 28c087e31d9fb501608a7cddbfad2a4fc70ec7d3 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 10:11:10 +0200 Subject: [PATCH 006/116] [site/components][f]: tooltip portal fix --- site/components/Anchor.js | 64 ++++++++++++++++++++------------------ site/components/Tooltip.js | 8 ++--- 2 files changed, 37 insertions(+), 35 deletions(-) diff --git a/site/components/Anchor.js b/site/components/Anchor.js index 03dc895..4abc02c 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -2,13 +2,17 @@ import ReactDOM from 'react-dom' import { useRouter } from 'next/router' import { useState, useEffect, useRef, Fragment } from 'react' import { - useFloating, - useHover, - useInteractions, arrow, autoPlacement, autoUpdate, - offset + FloatingPortal, + offset, + shift, + useDismiss, + useFloating, + useHover, + useInteractions, + useRole, } from '@floating-ui/react-dom-interactions' import getAbsolutePath from '../utils/absolutePath' @@ -42,12 +46,15 @@ export const Anchor = (props) => { whileElementsMounted: autoUpdate, middleware: [ offset(5), - autoPlacement(), + autoPlacement({ padding: 5 }), + shift({ padding: 5 }), arrow({ element: arrowRef, padding: 4 }) ] }); const { getReferenceProps, getFloatingProps } = useInteractions([ - useHover(context, props) + useHover(context, { delay: { open: 100, close: 0 } }), + useRole(context, { role: 'tooltip' }), + useDismiss(context, { ancestorScroll: true }) ]); useEffect(() => { @@ -57,6 +64,7 @@ export const Anchor = (props) => { }, [showTooltip]) const fetchPreview = async () => { + console.log("Fetching...") setPreviewLoaded(false); const basePath = "http://localhost:3000"; // TODO const currentPath = router.asPath; @@ -84,30 +92,26 @@ export const Anchor = (props) => { ) { return
- {( // TODO temp client only - typeof window !== 'undefined' && window.document && - ReactDOM.createPortal( - ( - { preview } - - ), document.body - ) - )} + + + { preview } + + ; } return ; diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 4b90e2d..d63e2eb 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -3,13 +3,13 @@ import React from 'react'; const tooltipStyles = (theme) => ({ height: 'auto', - // maxWidth: '30rem', - padding: '16px 22px', + maxWidth: '80vw', + padding: '1rem 2rem', background: theme === 'light' ? '#fff' : '#000', color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', borderRadius: '4px', boxShadow: 'rgba(0, 0, 0, 0.55) 0px 0px 16px -3px', - fontSize: '90%' + fontSize: '0.9em' }) const tooltipArrowStyles = ({ theme, x, y, side }) => ({ @@ -28,8 +28,6 @@ const tooltipArrowStyles = ({ theme, x, y, side }) => ({ export const Tooltip = React.forwardRef((props, ref) => { const { theme, children, arrowRef, arrowX, arrowY, placement, ...tooltipProps } = props; - console.log({ arrowRef, arrowX, arrowY, placement }); - const arrowPlacement = { top: 'bottom', right: 'left', From 5589b2244d89389085c91ce984b947c5927ede92 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 12:57:53 +0200 Subject: [PATCH 007/116] [site/components][f]: tooltip with clipped content --- site/components/Anchor.js | 55 +++++++++++++++++------------------ site/components/Tooltip.js | 26 +++++++++++------ site/config/siteConfig.js | 1 + site/styles/global.css | 12 ++++++++ site/utils/absolutePath.js | 9 ------ site/utils/documentExtract.js | 14 ++++----- 6 files changed, 62 insertions(+), 55 deletions(-) delete mode 100644 site/utils/absolutePath.js diff --git a/site/components/Anchor.js b/site/components/Anchor.js index 4abc02c..59137aa 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -15,7 +15,7 @@ import { useRole, } from '@floating-ui/react-dom-interactions' -import getAbsolutePath from '../utils/absolutePath' +import siteConfig from '../config/siteConfig.js' import documentExtract from '../utils/documentExtract' import { Tooltip } from './Tooltip' @@ -52,7 +52,7 @@ export const Anchor = (props) => { ] }); const { getReferenceProps, getFloatingProps } = useInteractions([ - useHover(context, { delay: { open: 100, close: 0 } }), + useHover(context, { delay: 100 }), useRole(context, { role: 'tooltip' }), useDismiss(context, { ancestorScroll: true }) ]); @@ -64,21 +64,17 @@ export const Anchor = (props) => { }, [showTooltip]) const fetchPreview = async () => { - console.log("Fetching...") setPreviewLoaded(false); - const basePath = "http://localhost:3000"; // TODO - const currentPath = router.asPath; - const relativePath = props.href.split(".")[0]; // TBD temp remove .md - const absolutePath = getAbsolutePath({ currentPath, basePath, relativePath }); - - const response = await fetch(absolutePath); + const path = new URL(props.href, document.baseURI).pathname; + const rawContentPath = [siteConfig.rawContentBaseUrl, path].join("") + const response = await fetch(rawContentPath); if (response.status !== 200) { // TODO console.log(`Looks like there was a problem. Status Code: ${response.status}`) return } - const html = await response.text(); - const extract = documentExtract(html); + const md = await response.text(); + const extract = documentExtract(md); setPreview(extract); setPreviewLoaded(true); @@ -93,24 +89,25 @@ export const Anchor = (props) => { return - - { preview } - + { showTooltip && previewLoaded && + + { preview } + + } ; } diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index d63e2eb..188e131 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -1,18 +1,24 @@ import React from 'react'; -const tooltipStyles = (theme) => ({ +const tooltipBoxStyle = (theme) => ({ height: 'auto', - maxWidth: '80vw', - padding: '1rem 2rem', + maxWidth: '60vw', + padding: '1rem', background: theme === 'light' ? '#fff' : '#000', color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', borderRadius: '4px', boxShadow: 'rgba(0, 0, 0, 0.55) 0px 0px 16px -3px', - fontSize: '0.9em' }) -const tooltipArrowStyles = ({ theme, x, y, side }) => ({ +const tooltipBodyStyle = () => ({ + maxHeight: '3.6rem', + position: 'relative', + lineHeight: '1.2rem', + overflow: 'hidden', +}) + +const tooltipArrowStyle = ({ theme, x, y, side }) => ({ position: "absolute", left: x != null ? `${x}px` : '', top: y != null ? `${y}px` : '', @@ -36,11 +42,13 @@ export const Tooltip = React.forwardRef((props, ref) => { }[placement.split('-')[0]]; return ( -
-
- { children } +
+
+
+ { children } +
-
{ - const absolutePath = currentPath.slice(1).split("/") - absolutePath.pop(); // remove current page name - absolutePath.unshift(basePath); - absolutePath.push(relativePath); - return absolutePath.join("/"); -}; - -export default absolutePath; diff --git a/site/utils/documentExtract.js b/site/utils/documentExtract.js index 8f6ab55..f6462dc 100644 --- a/site/utils/documentExtract.js +++ b/site/utils/documentExtract.js @@ -1,15 +1,13 @@ import { unified } from 'unified' -import rehypeParse from 'rehype-parse' +import remarkParse from 'remark-parse' import find from 'unist-util-find' -import { toString } from 'hast-util-to-string' +import { toString } from 'mdast-util-to-string' -// get first paragraph inside article's main tag -const documentExtract = (htmlString) => { - const hast = unified().use(rehypeParse).parse(htmlString); - const article = find(hast, (node) => node.tagName === "article"); - const main = find(article, (node) => node.tagName === "main"); - const paragraph = find(main, (node) => node.tagName === "p"); +// get first paragraph +const documentExtract = (md) => { + const mdast = unified().use(remarkParse).parse(md); + let paragraph = find(mdast, (node) => node.type === "paragraph"); return toString(paragraph); } From 1a13aed1533d2990f22823985f2a86ce419cb88d Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 16:26:24 +0200 Subject: [PATCH 008/116] [site/components][f]: tooltip animation --- site/components/Anchor.js | 121 ++++++--------------------------- site/components/Tooltip.js | 133 ++++++++++++++++++++++++++++++++----- site/package-lock.json | 129 +++++++++++++++++++++++++++++++++++ site/package.json | 1 + site/styles/global.css | 4 +- 5 files changed, 268 insertions(+), 120 deletions(-) diff --git a/site/components/Anchor.js b/site/components/Anchor.js index 59137aa..0faf460 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -1,115 +1,36 @@ -import ReactDOM from 'react-dom' import { useRouter } from 'next/router' -import { useState, useEffect, useRef, Fragment } from 'react' -import { - arrow, - autoPlacement, - autoUpdate, - FloatingPortal, - offset, - shift, - useDismiss, - useFloating, - useHover, - useInteractions, - useRole, -} from '@floating-ui/react-dom-interactions' +import { Tooltip } from './Tooltip'; import siteConfig from '../config/siteConfig.js' -import documentExtract from '../utils/documentExtract' -import { Tooltip } from './Tooltip' -// TODO cancel request on mouseleave when it hasn't been fulfilled yet - export const Anchor = (props) => { const { href } = props; const router = useRouter(); - const arrowRef = useRef(null); - const [ showTooltip, setShowTooltip ] = useState(false); - const [ preview, setPreview ] = useState(""); - const [ previewLoaded, setPreviewLoaded ] = useState(false); - - const { - x, - y, - reference, - floating, - placement, - strategy, - context, - middlewareData: { arrow: { x: arrowX, y: arrowY } = {}} - } = useFloating({ - open: showTooltip, - onOpenChange: setShowTooltip, - whileElementsMounted: autoUpdate, - middleware: [ - offset(5), - autoPlacement({ padding: 5 }), - shift({ padding: 5 }), - arrow({ element: arrowRef, padding: 4 }) - ] - }); - const { getReferenceProps, getFloatingProps } = useInteractions([ - useHover(context, { delay: 100 }), - useRole(context, { role: 'tooltip' }), - useDismiss(context, { ancestorScroll: true }) - ]); - - useEffect(() => { - if (showTooltip) { - fetchPreview(); + const absoluteContentPath = (href) => { + // return content path only if it points to a local file (href path is relative) + if ( + href && + href.indexOf("http:") !== 0 && + href.indexOf("https:") !== 0 + ) { + const currentPageContentPath = [siteConfig.rawContentBaseUrl, router.asPath].join(""); + const hrefContentPath = new URL(href, currentPageContentPath).href; + // excluding notes and claims + if (!hrefContentPath.includes("notes") && !hrefContentPath.includes("claims")) { + return hrefContentPath; + } } - }, [showTooltip]) - - const fetchPreview = async () => { - setPreviewLoaded(false); - const path = new URL(props.href, document.baseURI).pathname; - const rawContentPath = [siteConfig.rawContentBaseUrl, path].join("") - const response = await fetch(rawContentPath); - if (response.status !== 200) { - // TODO - console.log(`Looks like there was a problem. Status Code: ${response.status}`) - return - } - const md = await response.text(); - const extract = documentExtract(md); - - setPreview(extract); - setPreviewLoaded(true); } - if ( - href && - href.indexOf("http:") !== 0 && - href.indexOf("https:") !== 0 && - href.includes(".md") - ) { - return - - - { showTooltip && previewLoaded && - - { preview } - - } - - ; + if (absoluteContentPath(props.href)) { + return ( + ( + + )} + /> + ) } return ; }; diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 188e131..7493a82 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -1,4 +1,21 @@ -import React from 'react'; +import { useState, useEffect, useRef, Fragment } from 'react' +import { + arrow, + autoPlacement, + FloatingPortal, + inline, + offset, + shift, + useDismiss, + useFloating, + useHover, + useFocus, + useInteractions, + useRole, +} from '@floating-ui/react-dom-interactions' +import { motion, AnimatePresence } from 'framer-motion'; + +import documentExtract from '../utils/documentExtract' const tooltipBoxStyle = (theme) => ({ @@ -11,7 +28,7 @@ const tooltipBoxStyle = (theme) => ({ boxShadow: 'rgba(0, 0, 0, 0.55) 0px 0px 16px -3px', }) -const tooltipBodyStyle = () => ({ +const tooltipBodyStyle = (theme) => ({ maxHeight: '3.6rem', position: 'relative', lineHeight: '1.2rem', @@ -31,8 +48,51 @@ const tooltipArrowStyle = ({ theme, x, y, side }) => ({ transform: "rotate(45deg)" }) -export const Tooltip = React.forwardRef((props, ref) => { - const { theme, children, arrowRef, arrowX, arrowY, placement, ...tooltipProps } = props; +export const Tooltip = (props) => { + const theme = 'light'; // temporarily hard-coded; light theme tbd in next PR + + const arrowRef = useRef(null); + const [ showTooltip, setShowTooltip ] = useState(false); + const [ tooltipContent, setTooltipContent ] = useState(""); + const [ tooltipContentLoaded, setTooltipContentLoaded ] = useState(false); + // floating-ui dom hook + const { + x, + y, + reference, // trigger element back ref + floating, // tooltip back ref + placement, // default: 'bottom' + strategy, // default: 'absolute' + context, + middlewareData: { arrow: { x: arrowX, y: arrowY } = {}} // data for arrow positioning + } = useFloating({ + open: showTooltip, // state value binding + onOpenChange: setShowTooltip, // state value setter + middleware: [ + offset(5), // offset from container border + autoPlacement({ padding: 5 }), // auto place vertically + shift({ padding: 5 }), // flip horizontally if necessary + arrow({ element: arrowRef, padding: 4 }), // add arrow element + inline(), // correct position for multiline anchor tags + ] + }); + // floating-ui interactions hook + const { getReferenceProps, getFloatingProps } = useInteractions([ + useHover(context, { delay: 100 }), + useFocus(context), + useRole(context, { role: 'tooltip' }), + useDismiss(context, { ancestorScroll: true }), + ]); + + const tooltipTriggerProps = getReferenceProps({ ...props, ref: reference}); + const tooltipProps = getFloatingProps({ + ref: floating, + style: { + position: strategy, + left: x ?? '', + top: y ?? '', + }, + }); const arrowPlacement = { top: 'bottom', @@ -41,19 +101,56 @@ export const Tooltip = React.forwardRef((props, ref) => { left: 'right', }[placement.split('-')[0]]; + const fetchTooltipContent = async () => { + setTooltipContentLoaded(false); + + const response = await fetch(props.absolutePath); + if (response.status !== 200) { + console.log(`Looks like there was a problem. Status Code: ${response.status}`) + return + } + const md = await response.text(); + const extract = documentExtract(md); + + setTooltipContent(extract); + setTooltipContentLoaded(true); + } + + useEffect(() => { + if (showTooltip) { + fetchTooltipContent(); + } + }, [showTooltip]) + return ( -
-
-
- { children } -
-
-
-
+ + { props.render(tooltipTriggerProps) } + + + { showTooltip && tooltipContentLoaded && + +
+
+ { tooltipContent } +
+
+
+
+
+ } +
+
+
) -}) +} diff --git a/site/package-lock.json b/site/package-lock.json index f359ab9..cece734 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -14,6 +14,7 @@ "@silvenon/remark-smartypants": "^1.0.0", "@tailwindcss/typography": "^0.5.2", "contentlayer": "^0.1.2", + "framer-motion": "^6.3.3", "gray-matter": "^4.0.3", "hast-util-to-string": "^2.0.0", "next": "^12.1.0", @@ -308,6 +309,21 @@ "resolved": "https://registry.npmjs.org/@effect-ts/system/-/system-0.55.1.tgz", "integrity": "sha512-OEnwd9JhrV2Q5S7cke/ZgR56Hn75DSr1aIkA0PBE1edoX6GKB6nOdu8u/vPhvqjxLHfMgN8o+EVaWUHPLIC1UQ==" }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, "node_modules/@esbuild-plugins/node-resolve": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.1.4.tgz", @@ -2431,6 +2447,33 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/framer-motion": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.3.3.tgz", + "integrity": "sha512-wo0dCnoq5vn4L8YVOPO9W54dliH78vDaX0Lj+bSPUys6Nt5QaehrS3uaYa0q5eVeikUgtTjz070UhQ94thI5Sw==", + "dependencies": { + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": ">=16.8 || ^17.0.0 || ^18.0.0", + "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2701,6 +2744,11 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, "node_modules/html-void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", @@ -4630,6 +4678,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/popmotion": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", + "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", + "dependencies": { + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + } + }, "node_modules/postcss": { "version": "8.4.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", @@ -5571,6 +5630,15 @@ "inline-style-parser": "0.1.1" } }, + "node_modules/style-value-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", + "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "^2.1.0" + } + }, "node_modules/styled-jsx": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", @@ -6334,6 +6402,21 @@ "resolved": "https://registry.npmjs.org/@effect-ts/system/-/system-0.55.1.tgz", "integrity": "sha512-OEnwd9JhrV2Q5S7cke/ZgR56Hn75DSr1aIkA0PBE1edoX6GKB6nOdu8u/vPhvqjxLHfMgN8o+EVaWUHPLIC1UQ==" }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, "@esbuild-plugins/node-resolve": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.1.4.tgz", @@ -7722,6 +7805,27 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" }, + "framer-motion": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.3.3.tgz", + "integrity": "sha512-wo0dCnoq5vn4L8YVOPO9W54dliH78vDaX0Lj+bSPUys6Nt5QaehrS3uaYa0q5eVeikUgtTjz070UhQ94thI5Sw==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + } + }, + "framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "requires": { + "tslib": "^2.1.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -7914,6 +8018,11 @@ "space-separated-tokens": "^2.0.0" } }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, "html-void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", @@ -9196,6 +9305,17 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "popmotion": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", + "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", + "requires": { + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + } + }, "postcss": { "version": "8.4.12", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", @@ -9840,6 +9960,15 @@ "inline-style-parser": "0.1.1" } }, + "style-value-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", + "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", + "requires": { + "hey-listen": "^1.0.8", + "tslib": "^2.1.0" + } + }, "styled-jsx": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", diff --git a/site/package.json b/site/package.json index b618c5f..529a257 100644 --- a/site/package.json +++ b/site/package.json @@ -16,6 +16,7 @@ "@silvenon/remark-smartypants": "^1.0.0", "@tailwindcss/typography": "^0.5.2", "contentlayer": "^0.1.2", + "framer-motion": "^6.3.3", "gray-matter": "^4.0.3", "hast-util-to-string": "^2.0.0", "next": "^12.1.0", diff --git a/site/styles/global.css b/site/styles/global.css index b310d67..f124617 100644 --- a/site/styles/global.css +++ b/site/styles/global.css @@ -35,7 +35,7 @@ body { position: absolute; bottom: 0; right: 0; - width: 10%; + width: 30%; height: 1.2em; - background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 50%); + background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 100%); } From 9033ca0214471cd3693b30d834006d0dbd93e17a Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 16:32:50 +0200 Subject: [PATCH 009/116] [site/components][f]: tooltip props fix --- site/components/Tooltip.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 7493a82..bf320e6 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -48,7 +48,7 @@ const tooltipArrowStyle = ({ theme, x, y, side }) => ({ transform: "rotate(45deg)" }) -export const Tooltip = (props) => { +export const Tooltip = ({ absolutePath, render, ...props }) => { const theme = 'light'; // temporarily hard-coded; light theme tbd in next PR const arrowRef = useRef(null); @@ -104,7 +104,7 @@ export const Tooltip = (props) => { const fetchTooltipContent = async () => { setTooltipContentLoaded(false); - const response = await fetch(props.absolutePath); + const response = await fetch(absolutePath); if (response.status !== 200) { console.log(`Looks like there was a problem. Status Code: ${response.status}`) return @@ -124,7 +124,7 @@ export const Tooltip = (props) => { return ( - { props.render(tooltipTriggerProps) } + { render(tooltipTriggerProps) } { showTooltip && tooltipContentLoaded && From f67cb048985a34fd21511b70e80ac87d149ed6aa Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 17:46:58 +0200 Subject: [PATCH 010/116] [site/components][f]: tooltip content path adjstmn --- site/components/Anchor.js | 36 +++++++++++++++++++++--------------- site/components/Tooltip.js | 8 ++++---- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/site/components/Anchor.js b/site/components/Anchor.js index 0faf460..da9815f 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -3,30 +3,36 @@ import { useRouter } from 'next/router' import { Tooltip } from './Tooltip'; import siteConfig from '../config/siteConfig.js' - +/** + * Component for adding previews on hover for specific anchor tags. + * Note: currently tooltips will be displayed only for anchor tags pointing to concepts. + */ export const Anchor = (props) => { const { href } = props; const router = useRouter(); - const absoluteContentPath = (href) => { - // return content path only if it points to a local file (href path is relative) - if ( - href && + /* Check if the url is relative */ + const urlIsRelative = (url) => { + return href && href.indexOf("http:") !== 0 && href.indexOf("https:") !== 0 - ) { - const currentPageContentPath = [siteConfig.rawContentBaseUrl, router.asPath].join(""); - const hrefContentPath = new URL(href, currentPageContentPath).href; - // excluding notes and claims - if (!hrefContentPath.includes("notes") && !hrefContentPath.includes("claims")) { - return hrefContentPath; - } - } } - if (absoluteContentPath(props.href)) { + /* Return absolute path to raw markdown content + * Note: currently disabled for guide page due to non-standard relative paths in some anchors (TBD) */ + const getRawMdContentUrl = (url, routerPath) => { + if (routerPath === '/guide' || !urlIsRelative(url)) { + return null + } + const currentPageMdUrl = [siteConfig.rawContentBaseUrl, routerPath].join(""); + return new URL(href, currentPageMdUrl).href; + } + + const rawMdUrl = getRawMdContentUrl(href, router.asPath); + + if (rawMdUrl && !rawMdUrl.includes("notes") && !rawMdUrl.includes("claims")) { return ( - ( + (
)} /> diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index bf320e6..217d2ac 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -55,7 +55,7 @@ export const Tooltip = ({ absolutePath, render, ...props }) => { const [ showTooltip, setShowTooltip ] = useState(false); const [ tooltipContent, setTooltipContent ] = useState(""); const [ tooltipContentLoaded, setTooltipContentLoaded ] = useState(false); - // floating-ui dom hook + // floating-ui hook const { x, y, @@ -76,7 +76,7 @@ export const Tooltip = ({ absolutePath, render, ...props }) => { inline(), // correct position for multiline anchor tags ] }); - // floating-ui interactions hook + // floating-ui hook const { getReferenceProps, getFloatingProps } = useInteractions([ useHover(context, { delay: 100 }), useFocus(context), @@ -84,7 +84,7 @@ export const Tooltip = ({ absolutePath, render, ...props }) => { useDismiss(context, { ancestorScroll: true }), ]); - const tooltipTriggerProps = getReferenceProps({ ...props, ref: reference}); + const triggerElementProps = getReferenceProps({ ...props, ref: reference}); const tooltipProps = getFloatingProps({ ref: floating, style: { @@ -124,7 +124,7 @@ export const Tooltip = ({ absolutePath, render, ...props }) => { return ( - { render(tooltipTriggerProps) } + { render(triggerElementProps) } { showTooltip && tooltipContentLoaded && From 2ea5347d2e604f4752f72c538ee16f3500fb0dfe Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 21:29:00 +0200 Subject: [PATCH 011/116] [components/MDX][s]: class attribute fix --- site/components/MDX.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/components/MDX.js b/site/components/MDX.js index d6e4c32..3f454dd 100644 --- a/site/components/MDX.js +++ b/site/components/MDX.js @@ -130,7 +130,7 @@ export default function MdxPage({ children, editUrl }) { Edit this page - + From 6e3f95c70d632dbe995dcba25f587aad66af91e6 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 21:33:54 +0200 Subject: [PATCH 012/116] [.github][s]: removed test workflow file --- .github/workflows/learn-github-actions.yml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .github/workflows/learn-github-actions.yml diff --git a/.github/workflows/learn-github-actions.yml b/.github/workflows/learn-github-actions.yml deleted file mode 100644 index 97ea16a..0000000 --- a/.github/workflows/learn-github-actions.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: learn-github-actions -on: [push] -jobs: - check-bats-version: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: '14' - - run: npm install -g bats - - run: bats -v From 40efb6b6da5b353386962a47f7ae01d1a953c654 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 21:38:09 +0200 Subject: [PATCH 013/116] [site/package.json][s]: removed unused packages --- site/package-lock.json | 362 ++--------------------------------------- site/package.json | 3 +- 2 files changed, 12 insertions(+), 353 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index cece734..e20d8ee 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -21,14 +21,13 @@ "next-contentlayer": "^0.1.2", "next-seo": "^4.28.1", "next-themes": "^0.1.1", - "rc-trigger": "^5.2.18", "react": "^17.0.2", "react-dom": "^17.0.2", "react-player": "^2.10.0", - "rehype": "^12.0.1", "rehype-autolink-headings": "^6.1.1", "rehype-slug": "^5.0.1", "remark-gfm": "^3.0.0", + "remark-parse": "^10.0.1", "remark-slug": "^7.0.0", "remark-toc": "^8.0.0", "remark-wiki-link-plus": "^1.0.0", @@ -1200,11 +1199,6 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" - }, "node_modules/@types/prop-types": { "version": "15.7.4", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", @@ -1616,11 +1610,6 @@ "node": ">= 6" } }, - "node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, "node_modules/clipanion": { "version": "3.2.0-rc.10", "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.0-rc.10.tgz", @@ -1847,11 +1836,6 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "node_modules/dom-align": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz", - "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" - }, "node_modules/electron-to-chromium": { "version": "1.4.90", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz", @@ -2596,25 +2580,6 @@ "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz", "integrity": "sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==" }, - "node_modules/hast-util-from-parse5": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", - "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-has-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz", @@ -2649,18 +2614,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-parse-selector": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", - "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-estree": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.0.2.tgz", @@ -2728,22 +2681,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hastscript": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", - "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -3007,11 +2944,6 @@ "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -4618,11 +4550,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, "node_modules/pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", @@ -4863,70 +4790,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rc-align": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz", - "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "lodash": "^4.17.21", - "rc-util": "^5.3.0", - "resize-observer-polyfill": "^1.5.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-motion": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.0.tgz", - "integrity": "sha512-1MDWA9+i174CZ0SIDenSYm2Wb9YbRkrexjZWR0CUFu7D6f23E8Y0KsTgk9NGOLJsGak5ELZK/Y5lOlf5wQdzbw==", - "dependencies": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.21.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-trigger": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.18.tgz", - "integrity": "sha512-hi2yZ7umtbAGLxgSph1az9BR9i4Pb4fiQa4pdvFQuKN7U//3nwwygHQKHfexnM+0APBnzZwVlEHA5I8BpWrygw==", - "dependencies": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-align": "^4.0.0", - "rc-motion": "^2.0.0", - "rc-util": "^5.19.2" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-util": { - "version": "5.21.4", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.4.tgz", - "integrity": "sha512-rq11ap3NnOIdywFhcMQ9J7DXRJJ1c1Id1Hvr/1Dphr+5X75ERJBJybuh779DdurP4LJQqAhT6Aie0AjrBc5Vqw==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "react-is": "^16.12.0", - "shallowequal": "^1.1.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, "node_modules/react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -4993,21 +4856,6 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, - "node_modules/rehype": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", - "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", - "dependencies": { - "@types/hast": "^2.0.0", - "rehype-parse": "^8.0.0", - "rehype-stringify": "^9.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-autolink-headings": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-6.1.1.tgz", @@ -5026,21 +4874,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-parse": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.4.tgz", - "integrity": "sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^7.0.0", - "parse5": "^6.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-slug": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.0.1.tgz", @@ -5241,11 +5074,6 @@ "node": ">=0.10.0" } }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, "node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -5525,11 +5353,6 @@ "node": ">=10" } }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, "node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -6040,19 +5863,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-message": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", @@ -6066,15 +5876,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/web-streams-polyfill": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", @@ -7025,11 +6826,6 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, - "@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" - }, "@types/prop-types": { "version": "15.7.4", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", @@ -7307,11 +7103,6 @@ } } }, - "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, "clipanion": { "version": "3.2.0-rc.10", "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.0-rc.10.tgz", @@ -7469,11 +7260,6 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "dom-align": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz", - "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" - }, "electron-to-chromium": { "version": "1.4.90", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz", @@ -7910,21 +7696,6 @@ "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz", "integrity": "sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==" }, - "hast-util-from-parse5": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", - "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", - "requires": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" - } - }, "hast-util-has-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz", @@ -7947,14 +7718,6 @@ "@types/unist": "^2.0.0" } }, - "hast-util-parse-selector": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", - "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", - "requires": { - "@types/hast": "^2.0.0" - } - }, "hast-util-to-estree": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.0.2.tgz", @@ -8006,18 +7769,6 @@ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" }, - "hastscript": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", - "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", - "requires": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - } - }, "hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -8196,11 +7947,6 @@ "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -9257,11 +9003,6 @@ "unist-util-visit-children": "^1.0.0" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, "pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", @@ -9365,6 +9106,16 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "property-information": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", @@ -9400,51 +9151,6 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, - "rc-align": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz", - "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "lodash": "^4.17.21", - "rc-util": "^5.3.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-motion": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.0.tgz", - "integrity": "sha512-1MDWA9+i174CZ0SIDenSYm2Wb9YbRkrexjZWR0CUFu7D6f23E8Y0KsTgk9NGOLJsGak5ELZK/Y5lOlf5wQdzbw==", - "requires": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.21.0" - } - }, - "rc-trigger": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.18.tgz", - "integrity": "sha512-hi2yZ7umtbAGLxgSph1az9BR9i4Pb4fiQa4pdvFQuKN7U//3nwwygHQKHfexnM+0APBnzZwVlEHA5I8BpWrygw==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-align": "^4.0.0", - "rc-motion": "^2.0.0", - "rc-util": "^5.19.2" - } - }, - "rc-util": { - "version": "5.21.4", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.4.tgz", - "integrity": "sha512-rq11ap3NnOIdywFhcMQ9J7DXRJJ1c1Id1Hvr/1Dphr+5X75ERJBJybuh779DdurP4LJQqAhT6Aie0AjrBc5Vqw==", - "requires": { - "@babel/runtime": "^7.12.5", - "react-is": "^16.12.0", - "shallowequal": "^1.1.0" - } - }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -9499,17 +9205,6 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, - "rehype": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", - "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", - "requires": { - "@types/hast": "^2.0.0", - "rehype-parse": "^8.0.0", - "rehype-stringify": "^9.0.0", - "unified": "^10.0.0" - } - }, "rehype-autolink-headings": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-6.1.1.tgz", @@ -9524,17 +9219,6 @@ "unist-util-visit": "^4.0.0" } }, - "rehype-parse": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.4.tgz", - "integrity": "sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==", - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^7.0.0", - "parse5": "^6.0.0", - "unified": "^10.0.0" - } - }, "rehype-slug": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-5.0.1.tgz", @@ -9685,11 +9369,6 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -9879,11 +9558,6 @@ "lru-cache": "^6.0.0" } }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -10249,15 +9923,6 @@ "vfile-message": "^3.0.0" } }, - "vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", - "requires": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - } - }, "vfile-message": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", @@ -10267,11 +9932,6 @@ "unist-util-stringify-position": "^3.0.0" } }, - "web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" - }, "web-streams-polyfill": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", diff --git a/site/package.json b/site/package.json index 529a257..78f2aea 100644 --- a/site/package.json +++ b/site/package.json @@ -23,14 +23,13 @@ "next-contentlayer": "^0.1.2", "next-seo": "^4.28.1", "next-themes": "^0.1.1", - "rc-trigger": "^5.2.18", "react": "^17.0.2", "react-dom": "^17.0.2", "react-player": "^2.10.0", - "rehype": "^12.0.1", "rehype-autolink-headings": "^6.1.1", "rehype-slug": "^5.0.1", "remark-gfm": "^3.0.0", + "remark-parse": "^10.0.1", "remark-slug": "^7.0.0", "remark-toc": "^8.0.0", "remark-wiki-link-plus": "^1.0.0", From 87f7098319b8493a6dc1273bb67c24847a9a43a0 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 22:00:12 +0200 Subject: [PATCH 014/116] [site/config/siteConfig][s]: property name adjstmt --- site/components/Anchor.js | 2 +- site/config/siteConfig.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/site/components/Anchor.js b/site/components/Anchor.js index da9815f..b75dbf4 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -24,7 +24,7 @@ export const Anchor = (props) => { if (routerPath === '/guide' || !urlIsRelative(url)) { return null } - const currentPageMdUrl = [siteConfig.rawContentBaseUrl, routerPath].join(""); + const currentPageMdUrl = [siteConfig.repoRawContentRoot, routerPath].join(""); return new URL(href, currentPageMdUrl).href; } diff --git a/site/config/siteConfig.js b/site/config/siteConfig.js index 7672dfc..fd765e8 100644 --- a/site/config/siteConfig.js +++ b/site/config/siteConfig.js @@ -5,7 +5,7 @@ const siteConfig = { url: "https://web3.lifeitself.us", repoRoot: "https://github.com/life-itself/web3", repoEditPath: "/edit/main/", - rawContentBaseUrl: "https://raw.githubusercontent.com/life-itself/web3/main", + repoRawContentRoot: "https://raw.githubusercontent.com/life-itself/web3/main", tagline: "", description: "Introductions to key concepts and ideas in crypto and web3. Plus in-depth evaluation of its potential impact.", From 03c73b4c47ea6675f1897bc87e44487e5615b72b Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 22:00:56 +0200 Subject: [PATCH 015/116] [site/components][s]: tooltip fade-out element fix --- site/styles/global.css | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/site/styles/global.css b/site/styles/global.css index f124617..d295411 100644 --- a/site/styles/global.css +++ b/site/styles/global.css @@ -31,11 +31,10 @@ body { /* tooltip fade-out clip */ .tooltip-body::after { content: ""; - text-align: right; position: absolute; - bottom: 0; right: 0; - width: 30%; - height: 1.2em; + top: 2.4rem; /* multiple of $line-height used on the tooltip body */ + height: 1.2rem; /* ($top + $height)/$line-height is the number of lines we want to clip tooltip text at*/ + width: 10rem; background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 100%); } From 6af3ef9bd21ed69d831b1b27ca553a74eb595ce7 Mon Sep 17 00:00:00 2001 From: olayway Date: Wed, 18 May 2022 22:03:35 +0200 Subject: [PATCH 016/116] [components/tootlip][s]: tooltip width adjstmnt --- site/components/Tooltip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 217d2ac..94c3214 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -20,7 +20,7 @@ import documentExtract from '../utils/documentExtract' const tooltipBoxStyle = (theme) => ({ height: 'auto', - maxWidth: '60vw', + maxWidth: '30rem', padding: '1rem', background: theme === 'light' ? '#fff' : '#000', color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', From 19f3885780acd5b3f4708d2a5175aa4fdaa021af Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 10:26:55 +0100 Subject: [PATCH 017/116] Create financial-perpetual-motion-machine.md --- notes/financial-perpetual-motion-machine.md | 99 +++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 notes/financial-perpetual-motion-machine.md diff --git a/notes/financial-perpetual-motion-machine.md b/notes/financial-perpetual-motion-machine.md new file mode 100644 index 0000000..e6dea05 --- /dev/null +++ b/notes/financial-perpetual-motion-machine.md @@ -0,0 +1,99 @@ +--- +title: Crypto - can these financial perpetual motion machines work? +date: 2022-05-20 +created: 2022-05-20 +description: "Does crypto technology 'magic' allow it to transcend the principles of economics?" +featured: false +aliases: notes/financial-perpetual-motion-machine.md +--- + +The current crypto-economy is booming. A huge amount of money is circulating, and on the surface it appears many are gaining huge returns on their crypto investments. As one now infamous piece of crypto popular culture puts it, the line just keeps going up. Much of the rhetoric in the crypto-sphere gives a sense of a perpetual motion machine, generating self-fuelled growth which will last forever. The key question is, can it? + +This analysis will unpack the idea of crypto as a financial perpetual motion machine. Drawing on the downfall of TerraUSD as a case study it examines the dynamics and sustainability of the current crypto-economy, noting some worrying similarities to financial bubbles including the one which triggered the 2008 financial crisis. Finally, we consider the best case scenario for the sustainability of a crypto-asset – widespread acceptance and diversification before the speculation bubble bursts – before laying out our prognosis as to whether the crypto-economy can continue to operate as a financial perpetual motion machine. We conclude that this is unlikely at best. + +# Contents + +1. [What does it mean to call crypto a financial perpetual motion machine?](#para1) +2. [TerraUSD: a case study in the impossibility of financial perpetual motion](#para2) +3. [Similarities between the crypto-economy and the pre-2008 financial bubble](#para3) +4. [The best case scenario for crypto-assets: (1) ponzi, (2) acceptance, (3) diversification, (4) permanence](#para4) +5. [Conclusion: crypto isn’t a magic bullet for financial perpetual motion](#para5) + +# 1. What does it mean to call crypto a financial perpetual motion machine? + +A perpetual motion machine is a device that, once set in motion, continues to be in motion, with no requirement for any external source of energy to maintain it. The appeal of a perpetual motion machine is the reward of essentially limitless free energy (minus the cost of the initial input of energy to get it going). The first and second laws of thermodynamics have proven the existence of such machines to be impossible. + +By analogy, we can think of a financial perpetual motion machine as something generating continuing economic returns, and perhaps even growth in returns, forever, “for free”. The term “free” here is not used as strictly as in the technical definition above; in the case of crypto, money is spent on inputs such as developer labor, and the energy used for activities such as mining. The important characteristic is that the value of any given asset increases without any economically productive activity taking place. On the understanding of the crypto-economy as a financial perpetual motion machine, my crypto-assets will keep growing in value perpetually without my doing anything (i.e. expending any inputs myself), and without this growth being attached to economically productive activity – understood as the production of goods and services which generate utility for people – as is the case with traditional investments such as stocks. + +While the analogy is not perfect, the impossibility of true perpetual motion should give serious pause for thought as to the sustainability of this consistent and unproductive value growth. This skepticism can only be strengthened by observing the pattern played out time and again throughout economic history: financial perpetual motion invariably transpires to be little more than a bubble, grinding dramatically to a halt as spirits shift and the bubble bursts. Examining the dynamics of the crypto-economy in more detail, there are alarming similarities with both the pre-2008 financial system and bubbles further into the past. We will turn to this analysis in the following sections, beginning with an illustrative case study of the now defunct stablecoin Terra and its staggeringly rapid crash. + +# 2. TerraUSD: a case study in the impossibility of financial perpetual motion + +To explain why the cryptosphere is not a financial perpetual motion machine we are going to examine the mechanisms that enable the crypto market to churn out more value for investors than was deposited. We are going to use the stablecoin TerraUSD (UST) to demonstrate how these mechanisms operate and to explain why the system is unsustainable. UST is fitting to use as an example to demonstrate how all crypto-assets operate as they are fundamentally underpinned by the same mechanisms. We will explain how the crash suffered by UST is demonstrative of the systemic risk which runs throughout both DeFi and crypto-asset investments more broadly. + +UST is an algorithmic stable coin which is pegged to the US dollar. Whereas fiat- or crypto-collateralized stablecoins maintain their peg by having a reserve of a fiat or crypto currency as collateral, algorithmic stablecoins such as UST maintain their peg through a system of algorithmic arbitrage. UST has a sister token, Luna. The system is designed so that each UST token is redeemable for $1 worth of Luna. Therefore, when UST is trading below $1, traders are incentivized to buy one UST and exchange it for $1 worth of Luna. As UST is burnt to mint Luna, the supply of UST is reduced and its price is pushed up. When UST is trading above $1, token holders are incentivized to exchange their Luna for UST. This increases the supply of UST, thereby reducing its price and keeping the value of UST stable at $1. + +As an algorithmic stablecoin, untied from the volatility of other cryptocurrencies like bitcoin or ether, UST was presented as a safe and steady place to hold one’s money while still remaining within the crypto ecosystem. An additional motivation to potential investors of UST was the promise of staggering yields by holding their UST in a decentralized finance (DeFi) savings protocol called Anchor. The protocol, running on the Terra blockchain, promises 20% interest to those who deposit UST. + +While Terra and Luna is often described as a financial engineering experiment, for a long time it looked as though the experiment was working. According to Coingecko, at its peak in early April, the market value of all Luna exceeded $41 billion placing it in the top 10 cryptocurrencies. 1 + +On May 7 2022, UST deviated from its peg, seemingly as a result of massive withdrawals from Anchor. As billions of UST were removed from Anchor and dumped on the market, the price of Terra slipped, motivating more and more people to pull their money out of Anchor and get rid of their UST. While Luna tanked, the algorithm carried on doing what it was programmed to do: the system created more and more tokens to meet the demand of UST sellers who all remained entitled to a dollar’s worth of Luna. This caused the price to plunge even more, diluting the market with Luna. By May 13, one Luna was valued at $0.00001834 and the total supply of the coin was over 6.5 trillion. At time of writing, UST is currently sitting at 10 cents.2 As described by Kevin Zhou, crypto hedge fund Galois Capital founder, Luna had suffered from “hyperinflation of hyperinflation”.3 + +Terra provides a stark case study of the dynamics of the crypto-economy not just because of its dramatic demise, but because the mechanism by which it sustained its growth and subsequently crashed pervades the whole of the crypto-sphere. The Terra system depended entirely on Luna, a manufactured token with no intrinsic or [use value](https://web3.lifeitself.us/concepts/use-value). Its value was a product of [artificial demand](https://web3.lifeitself.us/concepts/artificial-demand) dynamics generated by overblown [narratives](https://web3.lifeitself.us/claims/is-narrative-economics.md) and speculation. Almost all crypto projects share this characteristic: they are fuelled by demand for newly created tokens devoid of meaningful value beyond allowing one to participate in the project and make financial gains from speculation. The growth stemming from sheer belief that these tokens will continue to increase in value bears all the hallmarks of [greater fool theory](https://web3.lifeitself.us/concepts/greater-fool-theory.md) and of an economic bubble, as we outline below. + +Even more worrying is the role of the Anchor platform in the case of Terra, and the prevalence of yield farming and the spate of complex financial derivatives which has sprung up around crypto-assets. As displayed by the impacts on Terra of large withdrawals from Anchor, this layering of ever more complex financial instruments on top of tokens whose value depends on belief alone builds an extremely high level of systemic risk into the system. Not only does this make it more likely that the [bubble](https://web3.lifeitself.us/concepts/bubble) will pop, but that the impacts will be all the more dire when it does. As outlined in the next section, this bears a striking resemblance to the system which underpinned the 2008 financial crisis. + +# 3. Similarities between the crypto-economy and the pre-2008 financial bubble + +As noted above, the case of Terra is indicative of the bubble dynamics that pervade the entire crypto ecosystem. When we compare these more directly to economic bubbles throughout history, it is hard to avoid drawing parallels which bode ill for the prospect of crypto’s perpetual growth. + +Economic bubbles are a market phenomenon that sees irrational pricing of an asset caused by herd mentality; people hear stories of others who bought in early and made big profits, more and more people jump in, pushing the value of the asset up and up, exceeding the intrinsic value of the asset (if the asset even has any value), until one day the mania subsides and the value of the asset plummets. + +Where such assets have complex financial instruments built on top, there is risk of far reaching systemic damage. The 2008 subprime crisis provides a demonstration of what happens when a range of complex financial products are completely dependent on the cash flows of a fundamentally unstable asset. Just as a fall in house prices caused mass mortgage defaults by borrowers in precarious financial positions, and in doing so brought down the entire financial system propped up by their repackaged debt, the cautionary tale of Terra shows the very same vulnerability throughout the system of decentralized finance (DeFi), which hinges on speculation-driven token value. + + +In her 2022 paper ‘DeFi: Shadow Banking 2.0?’ Prof. Hilary Allen warns that the current DeFi system risks emulating the “shadow banking” services (functional equivalents for banking products which operate outside the regulated banking sphere) which contributed to the 2008 banking crisis: + +“*if DeFi is permitted to develop without any regulatory intervention, it will magnify the tendencies towards heightened leverage, rigidity, and runs that characterized Shadow Banking 1.0.*”4 + +Commentators have raised concerns about stablecoins in particular, describing them as analogous to the money market funds (MMF) at the heart of the 2008 crisis in their potential to cause runs. Prof. Allen explains: + +“*If something were to shake confidence in stablecoins’ acceptance in the DeFi ecosystem (this ‘something’ could range from a hack, to a problem with the reserve of assets backing a stablecoin, to a problem with the smart contracts managing the value of a decentralized stablecoin), we could then expect holders to exchange their stablecoins for fiat currency and exchanges to seek redemption, forcing stablecoin issuers to start liquidating the reserve of assets backing the stablecoin, depressing the market value of those assets, and cutting off credit for the corporations in which MMFs usually invest through the commercial paper market.*”5 + +This fragility and extreme vulnerability to the [animal spirits](https://www.investopedia.com/terms/a/animal-spirits.asp#:~:text=%22Animal%20spirits%22%20is%20a%20term,of%20economic%20stress%20or%20uncertainty.) of investors pervades the entire crypto-economy. The core mechanism – of minting tokens with no use value and who’s market price is artificially driven by speculative hype – underpins the whole system. What might appear as a recipe for perpetual growth and financial gain in fact appears highly likely to have created a speculation fuelled bubble, with the complex token derivatives which characterize DeFi akin to castles built on foundations of sand. If this analysis is correct then not only is crypto far from a financial perpetual motion machine, but an economic time bomb. + +# 4. The best case scenario for crypto-assets: (1) ponzi, (2) acceptance, (3) diversification, (4) permanence + +The above paints a bleak outlook for the crypto-economy. So, what’s the best case scenario? Is there any way that the machine can keep running and generating wealth? + +The strongest case has been outlined in Bloomberg, although in a twist of irony it focuses on Terra, just days before its crash. While the piece focuses on [‘The Stability of Algorithmic Stablecoins’](https://www.bloomberg.com/opinion/articles/2022-04-19/the-stability-of-algorithmic-stablecoins) it can perhaps be extended to other crypto projects also. + +As the article notes, if you can keep your token based Ponzi scheme going for long enough then you may be able to reach a point of widespread acceptance. Your stablecoin, despite having no intrinsic value, is just accepted as being worth, say $1. It is this common recognition embedded in the collective psyche of the system’s participants which maintains this value rather than a reliance on an algorithmic mechanism. This is to some extent akin to the collective belief which upholds the value of fiat money, although crucially without the power of a state to enforce it should this belief waver. + +The next step would be to diversify the reserves backing the peg of your stablecoin, into other more embedded cryptocurrencies more embedded in the system such as bitcoin and perhaps also non-blockchain based assets such as gold and dollars. This diversification means that the project is no longer contingent just on investor belief in your own manufactured token’s value. If that spell breaks, there are assets deriving their market value from elsewhere which can be spent to return the value of your stablecoin to $1. More and more reserve assets are purchased, until there are sufficient ‘real world’ tools ready to back up this zero value, made up asset. This ‘best case scenario’ can be summarized, then, as: “(1) Ponzi, (2) acceptance, (3) diversification, (4) permanence.”6 + +In theory this process could be adapted to function for non-stablecoin projects also. The key is the transition from dependence on [speculative] belief in the value of the project’s manufactured token to other means of securing its value: economic norms and then external assets. + +Even under this best case scenario, however, the prospects for the perpetual growth of the crypto-economy as a whole remain slim. First, while this process could at least in theory work for specific crypto-assets, it cannot work for all of them. Not every crypto token can become so embedded that its value is simply accepted as a given, or become so big that it can fund the purchase of large amounts of external reserves. + +Second, while other crypto-assets still make up a part of a token’s reserve assets, its value will still depend largely on the performance of the crypto-market as a whole. If, as appears plausible based on the above analysis, the great majority of this market is subject to the same speculation fuelled bubble dynamics, then vulnerabilities persist both at the level of individual projects and the broader market. This could be seen in the case of Terra, where a large proportion of initial Anchor withdrawals seemed to occur in response to general market downturns. + +Third, pivoting to backing by real world assets, arguably the most likely way to ensure a crypto token can retain its value, will fundamentally undermine the dynamics giving rise to a perception of financial perpetual motion in the first place. As soon as real world assets enter the equation, so do the constraints of real world economics. Growth will become a function of the real world assets underpinning tokens, and this growth is far less likely to be propelled to dizzying rates by speculation. + +# 5. Conclusion: crypto isn’t a magic bullet for financial perpetual motion + +The above examples provide strong reason to believe that the crypto-economy cannot keep growing like this forever. The financial perpetual motion machine must at some point come to a halt, as the speculation-driven artificial demand for fundamentally valueless crypto-assets peters out. History is littered with examples of economic bubbles, all of which eventually burst. As the 2008 crash demonstrates, whole-system collapse is made both more likely and more disastrous when derivatives and other complex financial products spring up around bubble driven asset prices. This same systemic risk pervades the ‘DeFi’ system, with the case of Terra being a warning of dynamics which have the potential to cause crashes at far larger scales. + +The best case scenario for individual crypto-assets – normalization and backup asset diversification – is unlikely and does little to secure the continuing growth of the entire crypto-economy. This system is occupying some of the world’s smartest minds, contributing massive carbon emissions to our atmosphere, and had, at its peak, over $3 trillion dollars invested into it. It is time we stepped back from the illusion of financial perpetual motion, before the inevitable crypto-asset crashes begin shaking the wider global economy. + + +*** + +# Notes and references + +1. CoinGecko. ‘Terra Price, Luna Chart, and Market Cap’. Accessed 17 May 2022. https://www.coingecko.com/en/coins/terra-Luna. +2. CoinMarketCap. ‘TerraUSD Price Today, UST to USD Live, Marketcap and Chart’. Accessed 18 May 2022. https://coinmarketcap.com/currencies/terrausd/. +3. Weisenthal, Joe, and Tracy Alloway. ‘Meet the Hedge-Fund Manager Who Warned of Terra’s $60 Billion Implosion’. Bloomberg.Com, 15 May 2022. https://www.bloomberg.com/news/articles/2022-05-15/Luna-crash-this-crypto-insider-warned-of-terra-ust-s-collapse. +4. Allen, Hilary J. ‘DeFi: Shadow Banking 2.0?’ SSRN Electronic Journal, 2022. https://doi.org/10.2139/ssrn.4038788. +5. Ibid. +6. Levine, Matt. ‘The Stability of Algorithmic Stablecoins’. Bloomberg.Com, 19 April 2022. https://www.bloomberg.com/opinion/articles/2022-04-19/the-stability-of-algorithmic-stablecoins. From 1cdae6db9bafd3be2a4594c6604ee9efcbc53184 Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 10:38:36 +0100 Subject: [PATCH 018/116] Formatting fix --- notes/financial-perpetual-motion-machine.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/notes/financial-perpetual-motion-machine.md b/notes/financial-perpetual-motion-machine.md index e6dea05..cab5f20 100644 --- a/notes/financial-perpetual-motion-machine.md +++ b/notes/financial-perpetual-motion-machine.md @@ -1,16 +1,15 @@ --- -title: Crypto - can these financial perpetual motion machines work? +title: "Crypto: can these financial perpetual motion machines work?" +subtitle: "Does crypto technology 'magic' allow it to transcend the principles of economics?" date: 2022-05-20 created: 2022-05-20 -description: "Does crypto technology 'magic' allow it to transcend the principles of economics?" +description: "The current crypto-economy is booming. A huge amount of money is circulating, and on the surface it appears many are gaining huge returns on their crypto investments. As one now infamous piece of crypto popular culture puts it, the line just keeps going up. Much of the rhetoric in the crypto-sphere gives a sense of a perpetual motion machine, generating self-fuelled growth which will last forever. The key question is, can it? + +This analysis will unpack the idea of crypto as a financial perpetual motion machine. Drawing on the downfall of TerraUSD as a case study it examines the dynamics and sustainability of the current crypto-economy, noting some worrying similarities to financial bubbles including the one which triggered the 2008 financial crisis. Finally, we consider the best case scenario for the sustainability of a crypto-asset – widespread acceptance and diversification before the speculation bubble bursts – before laying out our prognosis as to whether the crypto-economy can continue to operate as a financial perpetual motion machine. We conclude that this is unlikely at best." featured: false aliases: notes/financial-perpetual-motion-machine.md --- -The current crypto-economy is booming. A huge amount of money is circulating, and on the surface it appears many are gaining huge returns on their crypto investments. As one now infamous piece of crypto popular culture puts it, the line just keeps going up. Much of the rhetoric in the crypto-sphere gives a sense of a perpetual motion machine, generating self-fuelled growth which will last forever. The key question is, can it? - -This analysis will unpack the idea of crypto as a financial perpetual motion machine. Drawing on the downfall of TerraUSD as a case study it examines the dynamics and sustainability of the current crypto-economy, noting some worrying similarities to financial bubbles including the one which triggered the 2008 financial crisis. Finally, we consider the best case scenario for the sustainability of a crypto-asset – widespread acceptance and diversification before the speculation bubble bursts – before laying out our prognosis as to whether the crypto-economy can continue to operate as a financial perpetual motion machine. We conclude that this is unlikely at best. - # Contents 1. [What does it mean to call crypto a financial perpetual motion machine?](#para1) From 992e5e0c755fcaa7a515aceba876472001343bad Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 10:46:10 +0100 Subject: [PATCH 019/116] Format fix --- notes/financial-perpetual-motion-machine.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/notes/financial-perpetual-motion-machine.md b/notes/financial-perpetual-motion-machine.md index cab5f20..a562b59 100644 --- a/notes/financial-perpetual-motion-machine.md +++ b/notes/financial-perpetual-motion-machine.md @@ -1,15 +1,17 @@ --- title: "Crypto: can these financial perpetual motion machines work?" -subtitle: "Does crypto technology 'magic' allow it to transcend the principles of economics?" date: 2022-05-20 created: 2022-05-20 -description: "The current crypto-economy is booming. A huge amount of money is circulating, and on the surface it appears many are gaining huge returns on their crypto investments. As one now infamous piece of crypto popular culture puts it, the line just keeps going up. Much of the rhetoric in the crypto-sphere gives a sense of a perpetual motion machine, generating self-fuelled growth which will last forever. The key question is, can it? - -This analysis will unpack the idea of crypto as a financial perpetual motion machine. Drawing on the downfall of TerraUSD as a case study it examines the dynamics and sustainability of the current crypto-economy, noting some worrying similarities to financial bubbles including the one which triggered the 2008 financial crisis. Finally, we consider the best case scenario for the sustainability of a crypto-asset – widespread acceptance and diversification before the speculation bubble bursts – before laying out our prognosis as to whether the crypto-economy can continue to operate as a financial perpetual motion machine. We conclude that this is unlikely at best." featured: false aliases: notes/financial-perpetual-motion-machine.md --- +*Does crypto technology “magic” allow it to transcend the principles of economics?* + +The current crypto-economy is booming. A huge amount of money is circulating, and on the surface it appears many are gaining huge returns on their crypto investments. As one now infamous piece of crypto popular culture puts it, the line just keeps going up. Much of the rhetoric in the crypto-sphere gives a sense of a perpetual motion machine, generating self-fuelled growth which will last forever. The key question is, can it? + +This analysis will unpack the idea of crypto as a financial perpetual motion machine. Drawing on the downfall of TerraUSD as a case study it examines the dynamics and sustainability of the current crypto-economy, noting some worrying similarities to financial bubbles including the one which triggered the 2008 financial crisis. Finally, we consider the best case scenario for the sustainability of a crypto-asset – widespread acceptance and diversification before the speculation bubble bursts – before laying out our prognosis as to whether the crypto-economy can continue to operate as a financial perpetual motion machine. We conclude that this is unlikely at best. + # Contents 1. [What does it mean to call crypto a financial perpetual motion machine?](#para1) From cfa8993cc3a1f8cf918369d5ec245224b26ce7db Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 10:56:53 +0100 Subject: [PATCH 020/116] Create in-conversation-with-klimadao-1.md --- notes/in-conversation-with-klimadao-1.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 notes/in-conversation-with-klimadao-1.md diff --git a/notes/in-conversation-with-klimadao-1.md b/notes/in-conversation-with-klimadao-1.md new file mode 100644 index 0000000..6b28ba8 --- /dev/null +++ b/notes/in-conversation-with-klimadao-1.md @@ -0,0 +1,12 @@ +--- +title: "KlimaDAO & Life Itself in Conversation: Part One" +date: 2022-05-18 +created: 2022-05-18 +description: "In a [previous episode](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs met with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims." +youtube: https://youtu.be/fHHxQAQW0co +podcast: https://anchor.fm/life-itself/episodes/KlimaDAO--Life-Itself-In-Conversation-Part-One-e1ilbra +featured: false +aliases: in-conversation-with-klimadao-1.md +--- + +*** From 8097c580836adc530344c9bcbd845347a90eb5c4 Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 13:26:08 +0100 Subject: [PATCH 021/116] fix --- ...-klimadao-1.md => in-conversation-with-klimadao-part-one.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename notes/{in-conversation-with-klimadao-1.md => in-conversation-with-klimadao-part-one.md} (93%) diff --git a/notes/in-conversation-with-klimadao-1.md b/notes/in-conversation-with-klimadao-part-one.md similarity index 93% rename from notes/in-conversation-with-klimadao-1.md rename to notes/in-conversation-with-klimadao-part-one.md index 6b28ba8..322a840 100644 --- a/notes/in-conversation-with-klimadao-1.md +++ b/notes/in-conversation-with-klimadao-part-one.md @@ -6,7 +6,7 @@ description: "In a [previous episode](https://youtu.be/SLXtnCL6IxE), Steven Dieh youtube: https://youtu.be/fHHxQAQW0co podcast: https://anchor.fm/life-itself/episodes/KlimaDAO--Life-Itself-In-Conversation-Part-One-e1ilbra featured: false -aliases: in-conversation-with-klimadao-1.md +aliases: in-conversation-with-klimadao-part-one.md --- *** From d14511772bfe506bba0de0f7937a3493a81d6644 Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 13:42:31 +0100 Subject: [PATCH 022/116] Fix title --- notes/in-conversation-with-klimadao-part-one.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/in-conversation-with-klimadao-part-one.md b/notes/in-conversation-with-klimadao-part-one.md index 322a840..634cbdd 100644 --- a/notes/in-conversation-with-klimadao-part-one.md +++ b/notes/in-conversation-with-klimadao-part-one.md @@ -1,6 +1,6 @@ --- title: "KlimaDAO & Life Itself in Conversation: Part One" -date: 2022-05-18 +date: 2022-05-20 created: 2022-05-18 description: "In a [previous episode](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs met with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims." youtube: https://youtu.be/fHHxQAQW0co From ee2e29af2ee6ea0a211787854de1498b8124609d Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 14:15:43 +0100 Subject: [PATCH 023/116] Alias fix --- notes/in-conversation-with-klimadao-part-one.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/in-conversation-with-klimadao-part-one.md b/notes/in-conversation-with-klimadao-part-one.md index 634cbdd..988b671 100644 --- a/notes/in-conversation-with-klimadao-part-one.md +++ b/notes/in-conversation-with-klimadao-part-one.md @@ -6,7 +6,7 @@ description: "In a [previous episode](https://youtu.be/SLXtnCL6IxE), Steven Dieh youtube: https://youtu.be/fHHxQAQW0co podcast: https://anchor.fm/life-itself/episodes/KlimaDAO--Life-Itself-In-Conversation-Part-One-e1ilbra featured: false -aliases: in-conversation-with-klimadao-part-one.md +aliases: notes/in-conversation-with-klimadao-part-one.md --- *** From 60d820d8564041a2280ba46ff4d235f35948bbd1 Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Fri, 20 May 2022 17:05:26 +0300 Subject: [PATCH 024/116] [site/mdx][xs]: fix links causing page overflow in mobile screens --- site/components/MDX.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/components/MDX.js b/site/components/MDX.js index fe906ff..6465b45 100644 --- a/site/components/MDX.js +++ b/site/components/MDX.js @@ -68,7 +68,7 @@ export default function MdxPage({ children, editUrl }) { : siteConfig.nextSeo.openGraph.images, }} /> -
+
{title &&

{title}

} From 51803aebafc7a8e2ff51e9f8b293f29eddaf8778 Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 15:28:56 +0100 Subject: [PATCH 025/116] Description edit --- notes/in-conversation-with-klimadao-part-one.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/notes/in-conversation-with-klimadao-part-one.md b/notes/in-conversation-with-klimadao-part-one.md index 988b671..d615778 100644 --- a/notes/in-conversation-with-klimadao-part-one.md +++ b/notes/in-conversation-with-klimadao-part-one.md @@ -2,7 +2,6 @@ title: "KlimaDAO & Life Itself in Conversation: Part One" date: 2022-05-20 created: 2022-05-18 -description: "In a [previous episode](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs met with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims." youtube: https://youtu.be/fHHxQAQW0co podcast: https://anchor.fm/life-itself/episodes/KlimaDAO--Life-Itself-In-Conversation-Part-One-e1ilbra featured: false @@ -10,3 +9,5 @@ aliases: notes/in-conversation-with-klimadao-part-one.md --- *** + +In a previous episode, [Collective Action Problems & Climate Change](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs sat down with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims. From 2cafb638647ae093172c53e1a5307e293047784f Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 15:37:50 +0100 Subject: [PATCH 026/116] Description update --- notes/in-conversation-with-klimadao-part-one.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/notes/in-conversation-with-klimadao-part-one.md b/notes/in-conversation-with-klimadao-part-one.md index d615778..2caccbb 100644 --- a/notes/in-conversation-with-klimadao-part-one.md +++ b/notes/in-conversation-with-klimadao-part-one.md @@ -2,6 +2,7 @@ title: "KlimaDAO & Life Itself in Conversation: Part One" date: 2022-05-20 created: 2022-05-18 +description: "In a previous episode, [Collective Action Problems & Climate Change](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs sat down with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims." youtube: https://youtu.be/fHHxQAQW0co podcast: https://anchor.fm/life-itself/episodes/KlimaDAO--Life-Itself-In-Conversation-Part-One-e1ilbra featured: false @@ -10,4 +11,4 @@ aliases: notes/in-conversation-with-klimadao-part-one.md *** -In a previous episode, [Collective Action Problems & Climate Change](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs sat down with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims. + From 6c7cb62d56e3011f5a34d69b6037d8562f39752c Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Fri, 20 May 2022 15:45:37 +0100 Subject: [PATCH 027/116] Update in-conversation-with-klimadao-part-one.md --- notes/in-conversation-with-klimadao-part-one.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/in-conversation-with-klimadao-part-one.md b/notes/in-conversation-with-klimadao-part-one.md index 2caccbb..fd9e1db 100644 --- a/notes/in-conversation-with-klimadao-part-one.md +++ b/notes/in-conversation-with-klimadao-part-one.md @@ -2,7 +2,7 @@ title: "KlimaDAO & Life Itself in Conversation: Part One" date: 2022-05-20 created: 2022-05-18 -description: "In a previous episode, [Collective Action Problems & Climate Change](https://youtu.be/SLXtnCL6IxE), Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs sat down with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims." +description: "In a previous episode, Collective Action Problems & Climate Change, Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs sat down with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims." youtube: https://youtu.be/fHHxQAQW0co podcast: https://anchor.fm/life-itself/episodes/KlimaDAO--Life-Itself-In-Conversation-Part-One-e1ilbra featured: false From ae629e3127bc8e44f8f2a72778ab7b325c11b349 Mon Sep 17 00:00:00 2001 From: Rufus Pollock Date: Fri, 20 May 2022 17:49:59 +0200 Subject: [PATCH 028/116] [klima][m]: notes from call just now with klimadao. --- assets/Pasted Image 20220520174240_131.png | 3 + assets/Pasted Image 20220520174240_189.png | 3 + ...ao-converstaion-2-2022-05-20.excalidraw.md | 1628 +++++++++++++++++ ...o-converstaion-2-2022-05-20.excalidraw.svg | 5 + 4 files changed, 1639 insertions(+) create mode 100644 assets/Pasted Image 20220520174240_131.png create mode 100644 assets/Pasted Image 20220520174240_189.png create mode 100644 excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.md create mode 100644 excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.svg diff --git a/assets/Pasted Image 20220520174240_131.png b/assets/Pasted Image 20220520174240_131.png new file mode 100644 index 0000000..d8d78d9 --- /dev/null +++ b/assets/Pasted Image 20220520174240_131.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca53ff6b3314cbc4078c212424d64f750f3abebf4fa276ae923356984667bcb1 +size 667691 diff --git a/assets/Pasted Image 20220520174240_189.png b/assets/Pasted Image 20220520174240_189.png new file mode 100644 index 0000000..244023c --- /dev/null +++ b/assets/Pasted Image 20220520174240_189.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc4e4a9b1b9e01994c8e10ac1bc41deb7d2261f6a5861619a1f8d4b77aef09f9 +size 263612 diff --git a/excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.md b/excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.md new file mode 100644 index 0000000..f3e13c1 --- /dev/null +++ b/excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.md @@ -0,0 +1,1628 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== + + +# Text Elements + +# Embedded files +9ce08eb8acd42929f5a5445de9310f3b983006f4: [[assets/Pasted Image 20220520174240_131.png]] +70aade1c99dfa22fc9d79ac9a6d19b919f4fbf20: [[assets/Pasted Image 20220520174240_189.png]] + +%% +# Drawing +```json +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "text", + "version": 20, + "versionNonce": 1808382929, + "isDeleted": false, + "id": "OaC_Oo8FANt6xa-COyToY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -831.7284979434532, + "y": -1616.9324385029695, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 104, + "height": 46, + "seed": 88381288, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359831, + "link": null, + "fontSize": 36, + "fontFamily": 1, + "text": "Notes", + "rawText": "", + "baseline": 32, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Notes" + }, + { + "type": "text", + "version": 591, + "versionNonce": 1537041855, + "isDeleted": false, + "id": "zCU11zpFP7cPTx3Jb9m2E", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1288.5253729434532, + "y": -1509.9324385029695, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 929, + "height": 350, + "seed": 1350628120, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359831, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "1. Off-chain BCT is around $7 via a broker\n2. Our BCT is around $3 on-chain atm\n3. If that difference is due to brokerage fees => then we are dis-intermediating brokers well\n\nStill complex to interact with our system (ie. with blockchain etc)\n\nHope to have increased demand for on-chain system\n\nCurrently about the demand-side i.e. making it easy to buy carbon offsets\n\nFuture\n\n* increase accessibility of on-chain carbon\n* support more supply-side stuff e.g. crowd-fund projects via crypto", + "rawText": "", + "baseline": 343, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1. Off-chain BCT is around $7 via a broker\n2. Our BCT is around $3 on-chain atm\n3. If that difference is due to brokerage fees => then we are dis-intermediating brokers well\n\nStill complex to interact with our system (ie. with blockchain etc)\n\nHope to have increased demand for on-chain system\n\nCurrently about the demand-side i.e. making it easy to buy carbon offsets\n\nFuture\n\n* increase accessibility of on-chain carbon\n* support more supply-side stuff e.g. crowd-fund projects via crypto" + }, + { + "type": "ellipse", + "version": 160, + "versionNonce": 1103100184, + "isDeleted": false, + "id": "wPLWmknSleFpaQaGInbZL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -215.82615419345348, + "y": -1585.0094535626508, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 147.7051460048483, + "height": 147.22073532798584, + "seed": 713910888, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "IG7YH7t__1UkEYn7urcxv", + "type": "text" + }, + { + "type": "text", + "id": "IG7YH7t__1UkEYn7urcxv" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "ellipse", + "version": 318, + "versionNonce": 891929704, + "isDeleted": false, + "id": "__fFRpA263lwWKA7tzCXi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 130.0272935516973, + "y": -1585.930517580956, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 147.7051460048483, + "height": 147.22073532798584, + "seed": 522375192, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "1p1626uZdbu7TOJoIHuRa", + "type": "text" + }, + { + "type": "text", + "id": "1p1626uZdbu7TOJoIHuRa" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "text", + "version": 203, + "versionNonce": 1277747048, + "isDeleted": false, + "id": "1p1626uZdbu7TOJoIHuRa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 135.0272935516973, + "y": -1524.8201499169627, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 138, + "height": 25, + "seed": 1967381864, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Demand", + "rawText": "", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "__fFRpA263lwWKA7tzCXi", + "originalText": "Demand" + }, + { + "type": "ellipse", + "version": 273, + "versionNonce": 1586566680, + "isDeleted": false, + "id": "YDTJ-l6fKNpWK_6ySLC2r", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -16.076154193453476, + "y": -1608.3279298914272, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 94, + "height": 92.9571804067621, + "seed": 1468075288, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "OmakUzUE0-Za9bKg-apf_", + "type": "text" + }, + { + "id": "OmakUzUE0-Za9bKg-apf_", + "type": "text" + }, + { + "type": "text", + "id": "OmakUzUE0-Za9bKg-apf_" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "ellipse", + "version": 309, + "versionNonce": 1598355304, + "isDeleted": false, + "id": "T5QvYOCJWVWZuKDkBAqjx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -17.814435443453476, + "y": -1499.0271486414272, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 94, + "height": 92.9571804067621, + "seed": 649326696, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "CEqrxuTGGGhWZE4lBILyv", + "type": "text" + }, + { + "id": "CEqrxuTGGGhWZE4lBILyv", + "type": "text" + }, + { + "id": "CEqrxuTGGGhWZE4lBILyv", + "type": "text" + }, + { + "type": "text", + "id": "CEqrxuTGGGhWZE4lBILyv" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "text", + "version": 141, + "versionNonce": 711634024, + "isDeleted": false, + "id": "IG7YH7t__1UkEYn7urcxv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -210.82615419345348, + "y": -1523.899085898658, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 138, + "height": 25, + "seed": 1125100056, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Supply", + "rawText": "", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "wPLWmknSleFpaQaGInbZL", + "originalText": "Supply" + }, + { + "type": "text", + "version": 284, + "versionNonce": 497594984, + "isDeleted": false, + "id": "OmakUzUE0-Za9bKg-apf_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -11.076154193453476, + "y": -1581.8493396880463, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 84, + "height": 40, + "seed": 1990828904, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "OTC\nBroker", + "rawText": "", + "baseline": 34, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "YDTJ-l6fKNpWK_6ySLC2r", + "originalText": "OTC\nBroker" + }, + { + "type": "text", + "version": 351, + "versionNonce": 1974871400, + "isDeleted": false, + "id": "CEqrxuTGGGhWZE4lBILyv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -12.814435443453476, + "y": -1472.5485584380463, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 84, + "height": 40, + "seed": 1556260632, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "Toucan?\nKlima?", + "rawText": "", + "baseline": 34, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "T5QvYOCJWVWZuKDkBAqjx", + "originalText": "Toucan?\nKlima?" + }, + { + "type": "text", + "version": 70, + "versionNonce": 2010915487, + "isDeleted": false, + "id": "T9XxONgBPzQzgqnXhvgL6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 140.17948956336068, + "y": -1413.1926408428208, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 241, + "height": 40, + "seed": 1131476584, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "i.e. orgs and individuals\nwanting to buy carbon offsets", + "rawText": "", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "i.e. orgs and individuals\nwanting to buy carbon offsets" + }, + { + "type": "text", + "version": 94, + "versionNonce": 493099729, + "isDeleted": false, + "id": "MxIppJw77CScaXN93zzQ8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -213.34605358248496, + "y": -1410.3592285685022, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 137, + "height": 40, + "seed": 554566680, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "i.e. people building\noffset projects", + "rawText": "", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "i.e. people building\noffset projects" + }, + { + "type": "text", + "version": 29, + "versionNonce": 2013682321, + "isDeleted": false, + "id": "52WDJ16HTL6PpzDcrBJ9H", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1276.8468071750622, + "y": -1086.4683816877118, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 182, + "height": 36, + "seed": 1104537960, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Major Claim 1", + "rawText": "", + "baseline": 25, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Major Claim 1" + }, + { + "type": "text", + "version": 195, + "versionNonce": 906957567, + "isDeleted": false, + "id": "PB6jo6VfBuw9NcIE7jMWB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1272.7487645636181, + "y": -1020.5275891618938, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 688, + "height": 75, + "seed": 1575338264, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Increasing demand for carbon-offsets (ultimately driving up the price)\n\nThat isn't happening yet (?)", + "rawText": "", + "baseline": 68, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Increasing demand for carbon-offsets (ultimately driving up the price)\n\nThat isn't happening yet (?)" + }, + { + "type": "text", + "version": 96, + "versionNonce": 1147068529, + "isDeleted": false, + "id": "d4c7ZkDrenBnhhi8RMm0m", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -57.95660190557737, + "y": -1330.6916813794014, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 254, + "height": 40, + "seed": 757365864, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "Note: is Klima a carbon investor\nor a broker ...", + "rawText": "", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Note: is Klima a carbon investor\nor a broker ..." + }, + { + "type": "text", + "version": 204, + "versionNonce": 1574066975, + "isDeleted": false, + "id": "bbVxKNaIS3p3j_x3HEgZm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -311.40026065005986, + "y": -1060.478168630491, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 585, + "height": 160, + "seed": 45997592, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "Aside: Carbon bridges spinning up other than Toucan.\n\n* C3 (started with one way bridge and could they launch a 2 way bridge)\n* FlowCarbon\n\nVC backed?\n\nKlima ...", + "rawText": "", + "baseline": 154, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Aside: Carbon bridges spinning up other than Toucan.\n\n* C3 (started with one way bridge and could they launch a 2 way bridge)\n* FlowCarbon\n\nVC backed?\n\nKlima ..." + }, + { + "type": "text", + "version": 76, + "versionNonce": 2114205745, + "isDeleted": false, + "id": "07BvLDA95FHTUfKlyEbe_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1272.748764563618, + "y": -897.7263931536512, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 849, + "height": 36, + "seed": 1999155048, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Question: this system depends on the trusted intermediary ...", + "rawText": "", + "baseline": 25, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Question: this system depends on the trusted intermediary ..." + }, + { + "type": "text", + "version": 252, + "versionNonce": 2107596639, + "isDeleted": false, + "id": "t6EA80q1oL70GHsjzMZdm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1265.9186935445443, + "y": -821.7671865138688, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 724, + "height": 125, + "seed": 1888115480, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Intermediaries needed to bring credits on-chain. (or oracles to give price)\n\nSo ... not really a trustless system in that regard.\n\nSo ... why use blockchain.", + "rawText": "", + "baseline": 118, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Intermediaries needed to bring credits on-chain. (or oracles to give price)\n\nSo ... not really a trustless system in that regard.\n\nSo ... why use blockchain." + }, + { + "type": "text", + "version": 152, + "versionNonce": 225674399, + "isDeleted": false, + "id": "xsFyxjsfYjCEwjHwjecKd", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -299.6977527348067, + "y": -810.9932487735006, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 735, + "height": 75, + "seed": 2016313960, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Aside: you can tip with BTC on blockchain social network ... (and retire it)\n\nComplex to do in the \"old world\"", + "rawText": "", + "baseline": 68, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Aside: you can tip with BTC on blockchain social network ... (and retire it)\n\nComplex to do in the \"old world\"" + }, + { + "type": "text", + "version": 238, + "versionNonce": 1618646705, + "isDeleted": false, + "id": "7HttVYQdrwGhQoRQ5YK0y", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1333.1249541853695, + "y": -575.0536098396632, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 1178, + "height": 182, + "seed": 1237268504, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 36, + "fontFamily": 1, + "text": "Chance to disrupt to Carbon offset market ...\n\nAnd therefore to drive more demand for carbon and\nhence higher price for carbon offsets and more carbon offsetting ", + "rawText": "", + "baseline": 169, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Chance to disrupt to Carbon offset market ...\n\nAnd therefore to drive more demand for carbon and\nhence higher price for carbon offsets and more carbon offsetting " + }, + { + "type": "text", + "version": 350, + "versionNonce": 1731631249, + "isDeleted": false, + "id": "BK5xD5sQr7jmkuHJwW521", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1320.157448078816, + "y": -300.74335068354765, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 1218, + "height": 107, + "seed": 520222056, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Question 2: is the ability to do what Klima is doing thanks to regulatory arbitrage? \ni.e. doing things more easily, quickly, cheaply than would be possible in traditional finance\n(because of regulation)?", + "rawText": "", + "baseline": 96, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Question 2: is the ability to do what Klima is doing thanks to regulatory arbitrage? \ni.e. doing things more easily, quickly, cheaply than would be possible in traditional finance\n(because of regulation)?" + }, + { + "type": "text", + "version": 622, + "versionNonce": 385168945, + "isDeleted": false, + "id": "BjADNidNK-sqJ41qHewuI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1316.2590217621073, + "y": -145.64960589221698, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 911, + "height": 350, + "seed": 1112569112, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "At least 2 areas\n\n- \"investors\" in the Klima project\n- \"buyers\" of carbon offsets through Klima (Klima either as market maker or as ETF)\n\nBunch of regulations for offering of securities to investors ...\n\nBunch of regulations on market makers and ETF\n\nKlima team: we didn't need to comply with regulations in either of those areas.\n\nWhat about the people who bought Klima early at > $1k ...? Did they need to be protected.\n\nDYOR = do your own research is the general approach of the DeFi space.", + "rawText": "", + "baseline": 343, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "At least 2 areas\n\n- \"investors\" in the Klima project\n- \"buyers\" of carbon offsets through Klima (Klima either as market maker or as ETF)\n\nBunch of regulations for offering of securities to investors ...\n\nBunch of regulations on market makers and ETF\n\nKlima team: we didn't need to comply with regulations in either of those areas.\n\nWhat about the people who bought Klima early at > $1k ...? Did they need to be protected.\n\nDYOR = do your own research is the general approach of the DeFi space." + }, + { + "type": "image", + "version": 125, + "versionNonce": 1348354065, + "isDeleted": false, + "id": "fDuBbiATE1OQuHq8ETiZm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1303.433591041303, + "y": 221.2321766948677, + "strokeColor": "transparent", + "backgroundColor": "#fa5252", + "width": 370.3570108011667, + "height": 239.70328754631072, + "seed": 552536168, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "status": "saved", + "fileId": "9ce08eb8acd42929f5a5445de9310f3b983006f4", + "scale": [ + 1, + 1 + ] + }, + { + "type": "text", + "version": 225, + "versionNonce": 213912209, + "isDeleted": false, + "id": "udjnL_sK6y6d3RuuY7oCO", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1328.087194034714, + "y": 502.6859504161408, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 827, + "height": 71, + "seed": 1873941016, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Qu 3: is there a risk that tech/finance approach distracts\nfrom essential political action", + "rawText": "", + "baseline": 61, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Qu 3: is there a risk that tech/finance approach distracts\nfrom essential political action" + }, + { + "type": "text", + "version": 451, + "versionNonce": 778024575, + "isDeleted": false, + "id": "CCMKHp-p2GNrSRZUwR82S", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1329.3388297188335, + "y": 587.3830907999651, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 896, + "height": 225, + "seed": 700562280, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Came to Klima from previous work doing stuff on climate.\n\nBut don't we ultimately need political action? And if so, doesn't these kind of\nfinancial engineering projects distract us from the political work to address\nclimate change.\n\nKlima: reject there is a substitution effect. Opposite, we are telling people about climate.\n\n", + "rawText": "", + "baseline": 218, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Came to Klima from previous work doing stuff on climate.\n\nBut don't we ultimately need political action? And if so, doesn't these kind of\nfinancial engineering projects distract us from the political work to address\nclimate change.\n\nKlima: reject there is a substitution effect. Opposite, we are telling people about climate.\n\n" + }, + { + "type": "text", + "version": 167, + "versionNonce": 1803706545, + "isDeleted": false, + "id": "inx-lxjSr8Px8I4KWJcFI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1326.1688795497748, + "y": 825.7800030611075, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 886, + "height": 71, + "seed": 416812824, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Qu 4: Is this a scalable way to lock-up carbon?\nIsn't this dependent on a capital raise in a speculative bubble?", + "rawText": "", + "baseline": 61, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Qu 4: Is this a scalable way to lock-up carbon?\nIsn't this dependent on a capital raise in a speculative bubble?" + }, + { + "type": "text", + "version": 495, + "versionNonce": 275073937, + "isDeleted": false, + "id": "x8E28brheowyu5ThcWeYV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1329.0033397416469, + "y": 940.0733810477642, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 992, + "height": 125, + "seed": 197529192, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Klima point to the amount of carbon captured. But that's just due to capital raise at the start.\n\nSimply buying carbon offsets and there is a limit to that (and nothing specific to DeFi.\nYou could raise $50m or $100m and buy carbon offsets but that doesn't solve the\ncollective action problem that is political.", + "rawText": "", + "baseline": 118, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Klima point to the amount of carbon captured. But that's just due to capital raise at the start.\n\nSimply buying carbon offsets and there is a limit to that (and nothing specific to DeFi.\nYou could raise $50m or $100m and buy carbon offsets but that doesn't solve the\ncollective action problem that is political." + }, + { + "type": "image", + "version": 175, + "versionNonce": 1143466367, + "isDeleted": false, + "id": "CavvPzoGNV_yLqO0s_-th", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1322.6030218292362, + "y": 1104.98996014178, + "strokeColor": "transparent", + "backgroundColor": "#fa5252", + "width": 377.21506496177085, + "height": 92.73203680310199, + "seed": 104229912, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "status": "saved", + "fileId": "70aade1c99dfa22fc9d79ac9a6d19b919f4fbf20", + "scale": [ + 1, + 1 + ] + }, + { + "type": "ellipse", + "version": 188, + "versionNonce": 1563857688, + "isDeleted": false, + "id": "QWi5IVOxjH1j2Kab-YOHr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 535.0408002193942, + "y": -1565.7625578846316, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 147.7051460048483, + "height": 147.22073532798584, + "seed": 1875378536, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "vV18XJd9E4V5nBMAlthKD", + "type": "text" + }, + { + "id": "vV18XJd9E4V5nBMAlthKD", + "type": "text" + }, + { + "id": "vV18XJd9E4V5nBMAlthKD", + "type": "text" + }, + { + "type": "text", + "id": "vV18XJd9E4V5nBMAlthKD" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "ellipse", + "version": 346, + "versionNonce": 629262952, + "isDeleted": false, + "id": "e2KexBHZzDd1FP625-XGH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 880.894247964545, + "y": -1566.6836219029362, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 147.7051460048483, + "height": 147.22073532798584, + "seed": 1371613464, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "RkQfVMMh_vjI6DuSgc4MD", + "type": "text" + }, + { + "id": "RkQfVMMh_vjI6DuSgc4MD", + "type": "text" + }, + { + "id": "RkQfVMMh_vjI6DuSgc4MD", + "type": "text" + }, + { + "type": "text", + "id": "RkQfVMMh_vjI6DuSgc4MD" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "text", + "version": 229, + "versionNonce": 623504232, + "isDeleted": false, + "id": "RkQfVMMh_vjI6DuSgc4MD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 885.894247964545, + "y": -1505.5732542389435, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 138, + "height": 25, + "seed": 85169256, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Demand", + "rawText": "", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "e2KexBHZzDd1FP625-XGH", + "originalText": "Demand" + }, + { + "type": "ellipse", + "version": 303, + "versionNonce": 1143238680, + "isDeleted": false, + "id": "pkSFOavtnb15gaj-_ZszI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 735.0174871156416, + "y": -1588.8543473171605, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 94, + "height": 92.9571804067621, + "seed": 921454104, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "tKzrUADZUKOHCa8-bHlNN", + "type": "text" + }, + { + "id": "tKzrUADZUKOHCa8-bHlNN", + "type": "text" + }, + { + "id": "tKzrUADZUKOHCa8-bHlNN", + "type": "text" + }, + { + "id": "tKzrUADZUKOHCa8-bHlNN", + "type": "text" + }, + { + "type": "text", + "id": "tKzrUADZUKOHCa8-bHlNN" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "text", + "version": 167, + "versionNonce": 1906129000, + "isDeleted": false, + "id": "vV18XJd9E4V5nBMAlthKD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 540.0408002193942, + "y": -1504.6521902206384, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 138, + "height": 25, + "seed": 829736808, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Supply", + "rawText": "", + "baseline": 18, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "QWi5IVOxjH1j2Kab-YOHr", + "originalText": "Supply" + }, + { + "type": "text", + "version": 312, + "versionNonce": 1252540008, + "isDeleted": false, + "id": "tKzrUADZUKOHCa8-bHlNN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 740.0174871156416, + "y": -1562.3757571137792, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 84, + "height": 40, + "seed": 1655423768, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "OTC\nBroker", + "rawText": "", + "baseline": 34, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pkSFOavtnb15gaj-_ZszI", + "originalText": "OTC\nBroker" + }, + { + "type": "text", + "version": 118, + "versionNonce": 355319825, + "isDeleted": false, + "id": "jN6mV70P8cQJg7EMR4yqC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 537.520900830363, + "y": -1391.112332890483, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 137, + "height": 40, + "seed": 1094163048, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "i.e. people building\noffset projects", + "rawText": "", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "i.e. people building\noffset projects" + }, + { + "type": "text", + "version": 132, + "versionNonce": 1838859647, + "isDeleted": false, + "id": "t2Qx-M_qCLvWQqUn2jcsY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 918.7902456814556, + "y": -1389.9692417874999, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 241, + "height": 40, + "seed": 1131651096, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "i.e. orgs and individuals\nwanting to buy carbon offsets", + "rawText": "", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "i.e. orgs and individuals\nwanting to buy carbon offsets" + }, + { + "type": "ellipse", + "version": 361, + "versionNonce": 1387019624, + "isDeleted": false, + "id": "cEzb4rQGrmfQeNkLe0OXc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 737.9829969225659, + "y": -1475.2440429132675, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 94, + "height": 92.9571804067621, + "seed": 388500840, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "JeU2cw3Ni3_-IQzo_hSNP", + "type": "text" + }, + { + "id": "JeU2cw3Ni3_-IQzo_hSNP", + "type": "text" + }, + { + "id": "JeU2cw3Ni3_-IQzo_hSNP", + "type": "text" + }, + { + "id": "JeU2cw3Ni3_-IQzo_hSNP", + "type": "text" + }, + { + "id": "JeU2cw3Ni3_-IQzo_hSNP", + "type": "text" + }, + { + "type": "text", + "id": "JeU2cw3Ni3_-IQzo_hSNP" + } + ], + "updated": 1653061359832, + "link": null + }, + { + "type": "text", + "version": 422, + "versionNonce": 1927557480, + "isDeleted": false, + "id": "JeU2cw3Ni3_-IQzo_hSNP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 742.9829969225659, + "y": -1438.7654527098864, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 84, + "height": 20, + "seed": 1496833304, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "Exchange", + "rawText": "", + "baseline": 14, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cEzb4rQGrmfQeNkLe0OXc", + "originalText": "Exchange" + }, + { + "type": "text", + "version": 78, + "versionNonce": 118992849, + "isDeleted": false, + "id": "0cZ2G8XVWz4Ru-39mDvYX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 737.9477982698475, + "y": -1342.112831021427, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 99, + "height": 50, + "seed": 1553080424, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Database\nExchange", + "rawText": "", + "baseline": 43, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Database\nExchange" + }, + { + "type": "text", + "version": 98, + "versionNonce": 1532539327, + "isDeleted": false, + "id": "ZRnC_A3tbSpkcq-K1TbwE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 741.0854327702884, + "y": -1257.33628229771, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 293, + "height": 40, + "seed": 90995224, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "Every big bank is trying to do this ...\n", + "rawText": "", + "baseline": 34, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Every big bank is trying to do this ...\n" + }, + { + "type": "text", + "version": 68, + "versionNonce": 689147313, + "isDeleted": false, + "id": "GBmTLQ_uGik9aOOlyrfBV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 690.0844793193148, + "y": -1212.9839084149098, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 301, + "height": 25, + "seed": 826397544, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "So why not do this off-chain??", + "rawText": "", + "baseline": 18, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "So why not do this off-chain??" + }, + { + "type": "text", + "version": 450, + "versionNonce": 1308238303, + "isDeleted": false, + "id": "f09zy6rAzj-9SpW9jNBPt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 694.2080219081965, + "y": -1161.3865557051, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 580, + "height": 120, + "seed": 1527084824, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 16, + "fontFamily": 1, + "text": "* Lots of different types of offset types (but why is that a problem?)\n* CDL \"GEO\" ticker (futures contract). Problem is you just get delivery?\n - you can't select what you want (in terms of the offset project)\n - on-chain greater flexibility\n - can do GEO-like (redeem auto)\n - select_redemption", + "rawText": "", + "baseline": 114, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "* Lots of different types of offset types (but why is that a problem?)\n* CDL \"GEO\" ticker (futures contract). Problem is you just get delivery?\n - you can't select what you want (in terms of the offset project)\n - on-chain greater flexibility\n - can do GEO-like (redeem auto)\n - select_redemption" + }, + { + "type": "text", + "version": 134, + "versionNonce": 272277393, + "isDeleted": false, + "id": "QjKPJe8OOPzssWvsE-46-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 549.8840312973218, + "y": -1671.4151217314184, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 667, + "height": 36, + "seed": 1535321704, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Why not do this the traditional way (off-chain)?", + "rawText": "", + "baseline": 25, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Why not do this the traditional way (off-chain)?" + }, + { + "type": "text", + "version": 168, + "versionNonce": 316904767, + "isDeleted": false, + "id": "sI4STI7OE5N9GI30n_aIe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -204.57427197214065, + "y": -1671.2288856036193, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 520, + "height": 36, + "seed": 1853281304, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 28, + "fontFamily": 1, + "text": "Overview of the Blockchain Brokerage", + "rawText": "", + "baseline": 25, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Overview of the Blockchain Brokerage" + }, + { + "type": "text", + "version": 174, + "versionNonce": 1866059007, + "isDeleted": false, + "id": "bwDrmQLiJvYdRCikUhdLU", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -1334.2080219081965, + "y": 1289.4151217314184, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 323, + "height": 125, + "seed": 2015500648, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1653061359832, + "link": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Parking Lot\n\n* Protocol owned liquidity model\n* defending the peg\n* why not build this all off-chain", + "rawText": "", + "baseline": 118, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Parking Lot\n\n* Protocol owned liquidity model\n* defending the peg\n* why not build this all off-chain" + } + ], + "appState": { + "theme": "light", + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#000000", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "hachure", + "currentItemStrokeWidth": 1, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 1, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStrokeSharpness": "sharp", + "currentItemStartArrowhead": null, + "currentItemEndArrowhead": "arrow", + "currentItemLinearStrokeSharpness": "round", + "gridSize": null, + "colorPalette": {} + }, + "files": {} +} +``` +%% \ No newline at end of file diff --git a/excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.svg b/excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.svg new file mode 100644 index 0000000..4d211ea --- /dev/null +++ b/excalidraw/klimadao-converstaion-2-2022-05-20.excalidraw.svg @@ -0,0 +1,5 @@ + + + + + Notes1. Off-chain BCT is around $7 via a broker2. Our BCT is around $3 on-chain atm3. If that difference is due to brokerage fees => then we are dis-intermediating brokers wellStill complex to interact with our system (ie. with blockchain etc)Hope to have increased demand for on-chain systemCurrently about the demand-side i.e. making it easy to buy carbon offsetsFuture* increase accessibility of on-chain carbon* support more supply-side stuff e.g. crowd-fund projects via cryptoDemandSupplyOTCBrokerToucan?Klima?i.e. orgs and individualswanting to buy carbon offsetsi.e. people buildingoffset projectsMajor Claim 1Increasing demand for carbon-offsets (ultimately driving up the price)That isn't happening yet (?)Note: is Klima a carbon investoror a broker ...Aside: Carbon bridges spinning up other than Toucan.* C3 (started with one way bridge and could they launch a 2 way bridge)* FlowCarbonVC backed?Klima ...Question: this system depends on the trusted intermediary ...Intermediaries needed to bring credits on-chain. (or oracles to give price)So ... not really a trustless system in that regard.So ... why use blockchain.Aside: you can tip with BTC on blockchain social network ... (and retire it)Complex to do in the "old world"Chance to disrupt to Carbon offset market ...And therefore to drive more demand for carbon andhence higher price for carbon offsets and more carbon offsetting Question 2: is the ability to do what Klima is doing thanks to regulatory arbitrage? i.e. doing things more easily, quickly, cheaply than would be possible in traditional finance(because of regulation)?At least 2 areas- "investors" in the Klima project- "buyers" of carbon offsets through Klima (Klima either as market maker or as ETF)Bunch of regulations for offering of securities to investors ...Bunch of regulations on market makers and ETFKlima team: we didn't need to comply with regulations in either of those areas.What about the people who bought Klima early at > $1k ...? Did they need to be protected.DYOR = do your own research is the general approach of the DeFi space.Qu 3: is there a risk that tech/finance approach distractsfrom essential political actionCame to Klima from previous work doing stuff on climate.But don't we ultimately need political action? And if so, doesn't these kind offinancial engineering projects distract us from the political work to addressclimate change.Klima: reject there is a substitution effect. Opposite, we are telling people about climate.Qu 4: Is this a scalable way to lock-up carbon?Isn't this dependent on a capital raise in a speculative bubble?Klima point to the amount of carbon captured. But that's just due to capital raise at the start.Simply buying carbon offsets and there is a limit to that (and nothing specific to DeFi.You could raise $50m or $100m and buy carbon offsets but that doesn't solve thecollective action problem that is political.DemandSupplyOTCBrokeri.e. people buildingoffset projectsi.e. orgs and individualswanting to buy carbon offsetsExchangeDatabaseExchangeEvery big bank is trying to do this ...So why not do this off-chain??* Lots of different types of offset types (but why is that a problem?)* CDL "GEO" ticker (futures contract). Problem is you just get delivery? - you can't select what you want (in terms of the offset project) - on-chain greater flexibility - can do GEO-like (redeem auto) - select_redemptionWhy not do this the traditional way (off-chain)?Overview of the Blockchain BrokerageParking Lot* Protocol owned liquidity model* defending the peg* why not build this all off-chain \ No newline at end of file From 40a51ac22b288c59bb1b93c5a0f2c1a1bf9ee930 Mon Sep 17 00:00:00 2001 From: olayway Date: Sun, 22 May 2022 15:00:04 +0200 Subject: [PATCH 029/116] [site/components][s]: contentlayer data in tooltip --- site/components/Anchor.js | 35 +++++++++-------------------------- site/components/Tooltip.js | 32 ++++++++++++++++++++++---------- site/styles/global.css | 2 +- site/utils/documentExtract.js | 2 +- 4 files changed, 33 insertions(+), 38 deletions(-) diff --git a/site/components/Anchor.js b/site/components/Anchor.js index b75dbf4..6ef0b78 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -1,38 +1,21 @@ -import { useRouter } from 'next/router' - import { Tooltip } from './Tooltip'; import siteConfig from '../config/siteConfig.js' /** - * Component for adding previews on hover for specific anchor tags. - * Note: currently tooltips will be displayed only for anchor tags pointing to concepts. + * Component for adding previews on hovering over anchor tags with relative paths */ export const Anchor = (props) => { - const { href } = props; - const router = useRouter(); - - /* Check if the url is relative */ - const urlIsRelative = (url) => { - return href && - href.indexOf("http:") !== 0 && - href.indexOf("https:") !== 0 + /* Check if the path is relative */ + const pathIsRelative = (path) => { + return path && + path.indexOf("http:") !== 0 && + path.indexOf("https:") !== 0 && + path.indexOf("#") !== 0 } - /* Return absolute path to raw markdown content - * Note: currently disabled for guide page due to non-standard relative paths in some anchors (TBD) */ - const getRawMdContentUrl = (url, routerPath) => { - if (routerPath === '/guide' || !urlIsRelative(url)) { - return null - } - const currentPageMdUrl = [siteConfig.repoRawContentRoot, routerPath].join(""); - return new URL(href, currentPageMdUrl).href; - } - - const rawMdUrl = getRawMdContentUrl(href, router.asPath); - - if (rawMdUrl && !rawMdUrl.includes("notes") && !rawMdUrl.includes("claims")) { + if (pathIsRelative(props.href)) { return ( - ( + ( )} /> diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 94c3214..0046426 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -14,13 +14,14 @@ import { useRole, } from '@floating-ui/react-dom-interactions' import { motion, AnimatePresence } from 'framer-motion'; +import { allOtherPages } from 'contentlayer/generated'; import documentExtract from '../utils/documentExtract' const tooltipBoxStyle = (theme) => ({ height: 'auto', - maxWidth: '30rem', + maxWidth: '40rem', padding: '1rem', background: theme === 'light' ? '#fff' : '#000', color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8', @@ -29,7 +30,7 @@ const tooltipBoxStyle = (theme) => ({ }) const tooltipBodyStyle = (theme) => ({ - maxHeight: '3.6rem', + maxHeight: '4.8rem', position: 'relative', lineHeight: '1.2rem', overflow: 'hidden', @@ -48,7 +49,8 @@ const tooltipArrowStyle = ({ theme, x, y, side }) => ({ transform: "rotate(45deg)" }) -export const Tooltip = ({ absolutePath, render, ...props }) => { +// export const Tooltip = ({ absolutePath, render, ...props }) => { +export const Tooltip = ({ render, ...props }) => { const theme = 'light'; // temporarily hard-coded; light theme tbd in next PR const arrowRef = useRef(null); @@ -104,15 +106,25 @@ export const Tooltip = ({ absolutePath, render, ...props }) => { const fetchTooltipContent = async () => { setTooltipContentLoaded(false); - const response = await fetch(absolutePath); - if (response.status !== 200) { - console.log(`Looks like there was a problem. Status Code: ${response.status}`) - return + let content; + // get tooltip content + try { + // create a temporary anchor tag to convert relative href to absolute path + const tempLink = document.createElement("a"); + tempLink.href = props.href; + // not all notes documents are structured so that the first paragraph will be the content summary + // TBD check if the docs can be adjusted and if previews for notes are even required + if (tempLink.pathname.includes('notes')) { + return + } + const filePath = tempLink.pathname.slice(1) // remove slash from the beginning + const page = allOtherPages.find(p => p._raw.sourceFilePath === filePath) + content = documentExtract(page.body.raw); + } catch { + content = 'An error occured...' } - const md = await response.text(); - const extract = documentExtract(md); - setTooltipContent(extract); + setTooltipContent(content); setTooltipContentLoaded(true); } diff --git a/site/styles/global.css b/site/styles/global.css index d295411..b0cea0b 100644 --- a/site/styles/global.css +++ b/site/styles/global.css @@ -33,7 +33,7 @@ body { content: ""; position: absolute; right: 0; - top: 2.4rem; /* multiple of $line-height used on the tooltip body */ + top: 3.6rem; /* multiple of $line-height used on the tooltip body (defined in tooltipBodyStyle) */ height: 1.2rem; /* ($top + $height)/$line-height is the number of lines we want to clip tooltip text at*/ width: 10rem; background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 100%); diff --git a/site/utils/documentExtract.js b/site/utils/documentExtract.js index f6462dc..5dff749 100644 --- a/site/utils/documentExtract.js +++ b/site/utils/documentExtract.js @@ -4,7 +4,7 @@ import find from 'unist-util-find' import { toString } from 'mdast-util-to-string' -// get first paragraph +// get first paragraph found in the document const documentExtract = (md) => { const mdast = unified().use(remarkParse).parse(md); let paragraph = find(mdast, (node) => node.type === "paragraph"); From 86c1f8f4cb2297ea3e50bb465bacf51406146122 Mon Sep 17 00:00:00 2001 From: olayway Date: Sun, 22 May 2022 19:52:13 +0200 Subject: [PATCH 030/116] [components/tooltip][s]: minor adjustment --- site/components/Tooltip.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 0046426..3237869 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -112,12 +112,11 @@ export const Tooltip = ({ render, ...props }) => { // create a temporary anchor tag to convert relative href to absolute path const tempLink = document.createElement("a"); tempLink.href = props.href; - // not all notes documents are structured so that the first paragraph will be the content summary - // TBD check if the docs can be adjusted and if previews for notes are even required - if (tempLink.pathname.includes('notes')) { + const filePath = tempLink.pathname.slice(1) // remove slash from the beginning + // disallow tooltips for 'notes' pages for now due to their different structure + if (filePath.includes('notes')) { return } - const filePath = tempLink.pathname.slice(1) // remove slash from the beginning const page = allOtherPages.find(p => p._raw.sourceFilePath === filePath) content = documentExtract(page.body.raw); } catch { From 5b3b07e0f15a11b238e36c84f2dbf005dc146a9c Mon Sep 17 00:00:00 2001 From: olayway Date: Sun, 22 May 2022 19:56:51 +0200 Subject: [PATCH 031/116] [components/tooltip][m]: minor behavior change --- site/components/Tooltip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/components/Tooltip.js b/site/components/Tooltip.js index 3237869..619b7c9 100644 --- a/site/components/Tooltip.js +++ b/site/components/Tooltip.js @@ -120,7 +120,7 @@ export const Tooltip = ({ render, ...props }) => { const page = allOtherPages.find(p => p._raw.sourceFilePath === filePath) content = documentExtract(page.body.raw); } catch { - content = 'An error occured...' + return } setTooltipContent(content); From e79aa43ae820aafb9771d336e2bf621b9410a60e Mon Sep 17 00:00:00 2001 From: olayway Date: Sun, 22 May 2022 20:18:35 +0200 Subject: [PATCH 032/116] [site/config][s]: removed unnecesary property --- site/config/siteConfig.js | 1 - 1 file changed, 1 deletion(-) diff --git a/site/config/siteConfig.js b/site/config/siteConfig.js index fd765e8..b93ba16 100644 --- a/site/config/siteConfig.js +++ b/site/config/siteConfig.js @@ -5,7 +5,6 @@ const siteConfig = { url: "https://web3.lifeitself.us", repoRoot: "https://github.com/life-itself/web3", repoEditPath: "/edit/main/", - repoRawContentRoot: "https://raw.githubusercontent.com/life-itself/web3/main", tagline: "", description: "Introductions to key concepts and ideas in crypto and web3. Plus in-depth evaluation of its potential impact.", From bd7c692c1b25c58fdc3d477f5dcf7e776dd4d6e6 Mon Sep 17 00:00:00 2001 From: theo-cox <72795023+theo-cox@users.noreply.github.com> Date: Mon, 23 May 2022 09:20:08 +0100 Subject: [PATCH 033/116] Update financial-perpetual-motion-machine.md financial-perpetual-motion-machine[s]: phrasing tweaks --- notes/financial-perpetual-motion-machine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/financial-perpetual-motion-machine.md b/notes/financial-perpetual-motion-machine.md index a562b59..26c4a47 100644 --- a/notes/financial-perpetual-motion-machine.md +++ b/notes/financial-perpetual-motion-machine.md @@ -61,7 +61,7 @@ Commentators have raised concerns about stablecoins in particular, describing th “*If something were to shake confidence in stablecoins’ acceptance in the DeFi ecosystem (this ‘something’ could range from a hack, to a problem with the reserve of assets backing a stablecoin, to a problem with the smart contracts managing the value of a decentralized stablecoin), we could then expect holders to exchange their stablecoins for fiat currency and exchanges to seek redemption, forcing stablecoin issuers to start liquidating the reserve of assets backing the stablecoin, depressing the market value of those assets, and cutting off credit for the corporations in which MMFs usually invest through the commercial paper market.*”5 -This fragility and extreme vulnerability to the [animal spirits](https://www.investopedia.com/terms/a/animal-spirits.asp#:~:text=%22Animal%20spirits%22%20is%20a%20term,of%20economic%20stress%20or%20uncertainty.) of investors pervades the entire crypto-economy. The core mechanism – of minting tokens with no use value and who’s market price is artificially driven by speculative hype – underpins the whole system. What might appear as a recipe for perpetual growth and financial gain in fact appears highly likely to have created a speculation fuelled bubble, with the complex token derivatives which characterize DeFi akin to castles built on foundations of sand. If this analysis is correct then not only is crypto far from a financial perpetual motion machine, but an economic time bomb. +This fragility and extreme vulnerability to the [animal spirits](https://www.investopedia.com/terms/a/animal-spirits.asp#:~:text=%22Animal%20spirits%22%20is%20a%20term,of%20economic%20stress%20or%20uncertainty.) of investors pervades the entire crypto-economy. The core mechanism – of minting tokens with no use value and who’s market price is artificially driven by speculative hype – underpins almost the whole system (with the small exception of tokens who are in some way backed by real world assets, whose value growth beyond the price of these assets still remains fuelled by speculaiton). What might appear as a recipe for perpetual growth and financial gain in fact appears highly likely to have created a speculation fuelled bubble, with the complex token derivatives which characterize DeFi akin to castles built on foundations of sand. If this analysis is correct then not only is crypto far from a financial perpetual motion machine, but an economic time bomb. # 4. The best case scenario for crypto-assets: (1) ponzi, (2) acceptance, (3) diversification, (4) permanence From 466944599b24cbbcf8e36749ac18947c7e26467a Mon Sep 17 00:00:00 2001 From: olayway Date: Mon, 23 May 2022 22:34:16 +0200 Subject: [PATCH 034/116] [components/nav][s]: responsiveness adjstmnt --- site/components/Nav.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/site/components/Nav.js b/site/components/Nav.js index cae7410..832b804 100644 --- a/site/components/Nav.js +++ b/site/components/Nav.js @@ -12,14 +12,14 @@ function classNames(...classes) { export default function Nav() { return ( - + {({ open }) => ( <>
-
-
+
+
{/* Mobile menu button */} - + Open main menu {open ? (
-
+
-
+
{/* Current: "border-indigo-500 text-gray-900", Default: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700" */} {navLinks.map((item, i) => ( @@ -53,7 +53,7 @@ export default function Nav() { ))}
-
+
{siteConfig.social.map( ({ name, href, icon: Icon }) => ["YouTube", "GitHub", "Life Itself"].includes(name) && ( @@ -77,8 +77,7 @@ export default function Nav() {
- - +
{/* Current: "bg-indigo-50 border-indigo-500 text-indigo-700", Default: "border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700" */} {navLinks.map((item, i) => ( From 75d5a06334678f5269d1955a4567cae10aff7fb9 Mon Sep 17 00:00:00 2001 From: olayway Date: Mon, 23 May 2022 22:48:22 +0200 Subject: [PATCH 035/116] [components/Nav][s]: font size adjstmnt --- site/components/Nav.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/components/Nav.js b/site/components/Nav.js index 832b804..07f4aa7 100644 --- a/site/components/Nav.js +++ b/site/components/Nav.js @@ -29,7 +29,7 @@ export default function Nav() {
-
+
{siteConfig.title} From 75e63c6bbf0ec60e78431a2130da5c8bb33b7f14 Mon Sep 17 00:00:00 2001 From: olayway Date: Tue, 24 May 2022 08:28:44 +0200 Subject: [PATCH 036/116] [components/Nav][s]: z-index added to keep on top --- site/components/Nav.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/components/Nav.js b/site/components/Nav.js index 07f4aa7..5b19267 100644 --- a/site/components/Nav.js +++ b/site/components/Nav.js @@ -12,7 +12,7 @@ function classNames(...classes) { export default function Nav() { return ( - + {({ open }) => ( <>
From 933ceae58c4e6b52456cce7361acf20f557d22ce Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Tue, 24 May 2022 14:10:35 +0100 Subject: [PATCH 037/116] Added SEO optimizing note --- notes/deconstructing-decentralization.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/notes/deconstructing-decentralization.md b/notes/deconstructing-decentralization.md index 26ce380..c16831e 100644 --- a/notes/deconstructing-decentralization.md +++ b/notes/deconstructing-decentralization.md @@ -39,7 +39,7 @@ aliases: notes/deconstructing-decentralization.md * **To describe how power or agency works within permissionless blockchain systems.** If there is not a single, central party keeping the record, that means that power is not held centrally, instead power is diffused throughout the blockchain. * Both political (no one has any power, especially not the state) and physical (we have a lot of computers running, so you can’t easily knock the entire system out) meanings have melded in mainstream usage of the terms. * Director Hinman’s June 2018 speech reflected these melded meanings of ‘decentralized’. His understanding of the ‘decentralized’ nature of bitcoin and ether led to his conclusion that the two are not securities. -* Walch argues that the SEC’s standard for “sufficiently decentralized” is extremely low, and argues that a deeper analysis of the concept is needed. +* Walch argues that the SEC’s standard for “sufficiently decentralized” is extremely low, and argues that a deeper analysis of the concept is needed. ## II. The Complex Nature of “Decentralization” @@ -70,6 +70,10 @@ aliases: notes/deconstructing-decentralization.md * Calls to Action * The status quo usage of the terms “decentralized” and “decentralization” is deemed untenable by many commentators, and there are a variety of calls to action in the literature: deeper study of the term; frameworks for better understanding or measuring the decentralization of crypto systems; doing away with the terms altogether in discussing crypto systems. +> **_What does decentralized mean?_** +> +> There are two different common usages for the term 'decentralized' within the crypto-sphere: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. + ## III. Examples of Concentrations of Power in Permissionless Blockchain Systems * Emergency rescues of Bitcoin by small groups of developers in 2018 when a critical software bug was discovered and March 2013 when the blockchain suffered an unintended [hard fork](https://web3.lifeitself.us/concepts/hard-fork). From 94eaf000afeb471def28a5437b66a95794db19e2 Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Tue, 24 May 2022 14:11:54 +0100 Subject: [PATCH 038/116] formatting edit --- notes/deconstructing-decentralization.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/notes/deconstructing-decentralization.md b/notes/deconstructing-decentralization.md index c16831e..13e55a2 100644 --- a/notes/deconstructing-decentralization.md +++ b/notes/deconstructing-decentralization.md @@ -14,6 +14,10 @@ aliases: notes/deconstructing-decentralization.md # Overview +> **_What does decentralized mean?_** +> +> There are two different common usages for the term 'decentralized' within the crypto-sphere: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. + * In Part I, Walch outlines the two key senses of the word “decentralized” within this space: describing how power operates in blockchain systems; and describing the network of computers that comprise a permissionless blockchain. * In Part II, Walch identifies and explores key themes within the commentary, such as the different domains where power is exercised in blockchain systems and the fluid nature of power concentration and diffusion in these systems. * In Part III, Walch explores examples of events which reveal sites of concentrated power in permissionless blockchain systems. @@ -70,9 +74,6 @@ aliases: notes/deconstructing-decentralization.md * Calls to Action * The status quo usage of the terms “decentralized” and “decentralization” is deemed untenable by many commentators, and there are a variety of calls to action in the literature: deeper study of the term; frameworks for better understanding or measuring the decentralization of crypto systems; doing away with the terms altogether in discussing crypto systems. -> **_What does decentralized mean?_** -> -> There are two different common usages for the term 'decentralized' within the crypto-sphere: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. ## III. Examples of Concentrations of Power in Permissionless Blockchain Systems From 34a5ada5fb514f2e0f49d11a88c3970274dca72e Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Tue, 24 May 2022 14:20:46 +0100 Subject: [PATCH 039/116] fix --- notes/deconstructing-decentralization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notes/deconstructing-decentralization.md b/notes/deconstructing-decentralization.md index 13e55a2..f88d9e4 100644 --- a/notes/deconstructing-decentralization.md +++ b/notes/deconstructing-decentralization.md @@ -14,9 +14,9 @@ aliases: notes/deconstructing-decentralization.md # Overview -> **_What does decentralized mean?_** +> **What does decentralized mean?** > -> There are two different common usages for the term 'decentralized' within the crypto-sphere: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. +> There are two different common usages for the term 'decentralized' within crypto: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. * In Part I, Walch outlines the two key senses of the word “decentralized” within this space: describing how power operates in blockchain systems; and describing the network of computers that comprise a permissionless blockchain. * In Part II, Walch identifies and explores key themes within the commentary, such as the different domains where power is exercised in blockchain systems and the fluid nature of power concentration and diffusion in these systems. From 1a1c8716b7000c2e28dbee780c6c196518c55e42 Mon Sep 17 00:00:00 2001 From: EilidhRoss1 <98904290+EilidhRoss1@users.noreply.github.com> Date: Tue, 24 May 2022 14:58:47 +0100 Subject: [PATCH 040/116] format fix --- notes/deconstructing-decentralization.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/notes/deconstructing-decentralization.md b/notes/deconstructing-decentralization.md index f88d9e4..e072ff8 100644 --- a/notes/deconstructing-decentralization.md +++ b/notes/deconstructing-decentralization.md @@ -14,9 +14,9 @@ aliases: notes/deconstructing-decentralization.md # Overview -> **What does decentralized mean?** -> -> There are two different common usages for the term 'decentralized' within crypto: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. +**What does decentralized mean?** + +There are two different common usages for the term 'decentralized' within crypto: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is. * In Part I, Walch outlines the two key senses of the word “decentralized” within this space: describing how power operates in blockchain systems; and describing the network of computers that comprise a permissionless blockchain. * In Part II, Walch identifies and explores key themes within the commentary, such as the different domains where power is exercised in blockchain systems and the fluid nature of power concentration and diffusion in these systems. From 37eaaefa9cb041c543a5cd8f3ec538a5366fba5f Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Mon, 30 May 2022 12:13:38 -0500 Subject: [PATCH 041/116] Fix spelling, grammar and typos --- notes/neo-metallism.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/notes/neo-metallism.md b/notes/neo-metallism.md index 9ae9489..3fcb84e 100644 --- a/notes/neo-metallism.md +++ b/notes/neo-metallism.md @@ -44,16 +44,16 @@ Neo-metallism argues that cryptocurrencies, and in particular Bitcoin, can and s ## Gold as Currency -* Gold has a historical precedent as money across cultures going back millenia. +* Gold has a historical precedent as money across cultures going back millennia. * Multiple cultures have independently used it as currency. -* It’s metallurgical properties make it uniquely suited amongst the elements on the periodic table. - * It’s relative abundance (although not excessive abundance) and distribution across the Earth’s crust make it rare enough to horde and access even for bronze age cultures. - * It is stable at room temperature, doesn’t oxidize , easily detectable because of its glimmer and unique aesthetics, it is malleable without advanced smelting technology and is uniquely distinguishable from other metals. +* Its metallurgical properties make it uniquely suited amongst the elements on the periodic table. + * Its relative abundance (although not excessive abundance) and distribution across the Earth’s crust make it rare enough to hoard and access even for Bronze Age cultures. + * It is stable at room temperature, doesn’t oxidize, is easily detectable because of its glimmer and unique aesthetics, is malleable without advanced smelting technology and is uniquely distinguishable from other metals. * It is probably the ONLY element on the periodic table that has all of these unique characteristics that could even be used for monetary purposes. - * There is only a finite amount of it produced in supernova events and nuclear reactions, it is thus impossible to counterfeit or “debase” the supply. + * There is only a finite amount of it produced in supernova events and nuclear reactions: it is thus impossible to counterfeit or “debase” the supply. * Advanced economies began stockpiling gold in government reserves and issuing notes against that float in redemption in gold by a government treasury. -* Gold theoretically acts as a universal numeraire across economic systems allowing interchange and commerce. It is a fixed “measuring sticking” for economic value that cannot be changed. -* It satisfies the definition of money, it can theoretically function as a unit of account, medium of exchange, and store of value. The only issue is that it incurs storage costs and is not easily transported because of its density and physicality. +* Gold theoretically acts as a universal numéraire across economic systems allowing interchange and commerce. It is a fixed “measuring stick” for economic value that cannot be changed. +* It satisfies the definition of money: it can theoretically function as a unit of account, a medium of exchange, and a store of value. The only issue is that it incurs storage costs and is not easily transported because of its density and physicality. ### Why the Gold Standard: Fiat Money, Sound Money and the Gold Standard @@ -75,7 +75,7 @@ The Gold Standard is Good * Inflation is a bad thing: prices will be driven up at different times, distorting relative prices, wages, and rates of return. Artificial distortion can lead to booms in production and consumption which are out of line with future reality, leading in turn to dramatic busts. * The Philosophical Argument * Intervention is inherently undemocratic, in that it allows a select few individuals to exert undue power over the lives of the rest of a nation (and beyond). - * This is the argument laid out in Hayek’s famous Road to Serfdom (1944). + * This is the argument laid out in Hayek’s famous *Road to Serfdom* (1944). Bitcoin is Better * Bitcoin is Like Gold @@ -86,9 +86,9 @@ Bitcoin is Better * Bitcoin shares three other important characteristics with gold: 1. Scarcity: Bitcoin is artificially scarce, just as gold is naturally scarce. There is a hard limit of 21 million coins baked into Bitcoin’s design. This makes it inherently deflationary, just like gold. 2. Universality: Bitcoin shares gold’s “universality” due to its prominence in the crypto sphere. Just as gold is the standout element suited to peg currency to, so Bitcoin is the only standout cryptocurrency due to it being the original and most prominent. - 3. Fair initial distribution: The lack of overarching controller or owner means there was a “fair” distribution mechanism for Bitcoin. It rewarded early finders and /investors in the same way as natural distribution of gold rewarded those who initially unearthed it. + 3. Fair initial distribution: The lack of overarching controller or owner means there was a “fair” distribution mechanism for Bitcoin. It rewarded early finders and investors in the same way as natural distribution of gold rewarded those who initially unearthed it. * Bitcoin Functions Better Than Gold - * Bitcoin is digital and so is not subject to the same costs around storage and transport as gold. + * Bitcoin is digital and so is not subject to the same costs around storage and transportation as gold. * Bitcoin is arguably more decentralized. Gold supply is mostly controlled by sovereign nations like the U.S., China, Germany, and other European countries. @@ -105,7 +105,7 @@ Bitcoin is Better * While excessive inflation is bad and governments/central banks have made errors in the past, this has been rare. Historically most have quite easily kept inflation under control. * The flexibility offered by the ability for governments/central banks to intervene is highly useful, and worth the risk of error. Most obviously, they can stabilise in the face of shocks, for example, a pandemic. This was the reason we switched to fiat currency in the first place. * Paper money was issued as an emergency measure in Spain, during the conquest of Granada (1482-1492). - * The gold standard can also lead to the reverberation of shocks through the global economy. This is because economic shocks in one economy will lead to investors buying up gold as a safe asset. Given currencies are pegged to gold, this increase in demand in one nation can have significant impacts on the value of currencies the world over. + * The gold standard can also lead to the reverberation of shocks through the global economy. This is because economic shocks in one economy will lead to investors buying up gold as a safe asset. Given that currencies are pegged to gold, this increase in demand in one nation can have significant impacts on the value of currencies the world over. * The Philosophical Argument * Hayek's claim hasn't been borne out historically. Since leaving metallism most metrics of prosperity have increased, and there have been fewer crises than under the old system. There hasn’t been any evidence of any shift away from democracy or increases of the translation of political power to economic benefit (where such things do happen today, it’s not happening through monetary policy). * There are ways to democratize the fiat system without returning to gold e.g. we can increase the democratic accountability of those in control of monetary policy. @@ -113,7 +113,7 @@ Bitcoin is Better 'The Bitcoin Standard is Better' * 'Bitcoin is Like Gold' - * Bitcoin cannot function as a medium of exchange. The transaction throughput is so small that it doesn't work as a global system of currency - it can't process transactions fast enough.This is inherent to the proof-of-work process Bitcon uses to verify its transactions. This incapacity is therefore baked in. + * Bitcoin cannot function as a medium of exchange. The transaction throughput is so small that it doesn't work as a global system of currency - it can't process transactions fast enough. This is inherent to the proof-of-work process Bitcoin uses to verify its transactions. This incapacity is therefore baked in. * Bitcoin does not appear to hold potential as a store of value given its extremely high price variance. * Gold, on the other hand, has historical precedent as a store of value in economic insecurity; its price has proven to be better insulated from broader economic dynamics than many other asset types. * If Bitcoin were to behave as a [store of value](../concepts/store-of-value.md) it would have to abandon hypervolatility, and there is no easily identifiable economic mechanism for this to happen. @@ -121,15 +121,15 @@ Bitcoin is Better * Bitcoin being digital does not mean it is without its costs. * The extraction, transport and storage costs associated with gold are outweighed by massive Bitcoin mining costs. The [“proof-of-work” mechanism](../concepts/consensus-algorithm.md) used to validate transactions and undertake mining for Bitcoin requires a huge amount of electricity (costly and environmentally damaging). This verification process creates significant friction around transactions - the system is very slow, particularly when lots of people are using it. * Bitcoin, unlike traditional commodities, has a negative price elasticity of demand - demand goes up with price, not down. For this reason, Bitcoin looks like a [speculative](../concepts/speculation.md) [bubble](../concepts/bubble.md), which at some point will inevitably crash. - * States can synthetically stimulate demand for a single, fiat currency by demanding tax in this currency, ensuring the whole system works and that the value of such currency can never drop to zero. In other words, there is a clear mechanism to guard against value bottoming out. The same cannot be said for cryptocurrencies such as Bitcon. + * States can synthetically stimulate demand for a single, fiat currency by demanding tax in this currency, ensuring the whole system works and that the value of such currency can never drop to zero. In other words, there is a clear mechanism to guard against value bottoming out. The same cannot be said for cryptocurrencies such as Bitcoin. * Bitcoin no longer shares gold’s uniqueness. * Lots of new “alt coins” - new alternatives to Bitcoin - are being minted, meaning the cryptocurrency market is now crowded with competitors. * High numbers of different coins also creates inflationary effects - the very thing stores of value are intended to guard against. * Single currency systems were adopted as these are significantly more efficient. A single price in a single currency allows far easier exchange of goods. Having multiple issuers of currency adds friction to trade, as one must convert the value of a given object between currencies before exchange can take place. - * The history of large issuances of private money isn't good.These systems are subject to fraud and a general breakdown of trust. If any bank can issue its own [private bank notes](../concepts/private-money.md), how does one know which bank is reliable and which isn’t? + * The history of large issuances of private money isn't good. These systems are subject to fraud and a general breakdown of trust. If any bank can issue its own [private bank notes](../concepts/private-money.md), how does one know which bank is reliable and which isn’t? ## A Final Note on Trust -* In the world of Bitcon, and [blockchain](../concepts/blockchain.md) more generally, replacing interpersonal trust with cryptographic verification mechanisms is seen as positive; we no longer need trust: in states, governmental institutions or one another. +* In the world of Bitcoin, and [blockchain](../concepts/blockchain.md) more generally, replacing interpersonal trust with cryptographic verification mechanisms is seen as positive; we no longer need trust: in states, governmental institutions or one another. * The problem with trust is that when you get rid of it, it's very hard to get it back. If crypto were to fail we would risk a large-scale general reduction in trust. Even if it were to succeed, it would likely lead to a significantly diminished role for trust at a broader level. * At the root of [trustless](../concepts/decentralization.md) blockchain technologies are assumptions about human nature, which have significant implications for how we approach vital questions of social cooperation. * There is evidence that high trust of strangers correlates with positive economic and social outcomes. @@ -173,4 +173,4 @@ Bitcoin is Better 1. Wang, G., Tang, Y., Xie, C., & Chen, S. (2019). Is bitcoin a safe haven or a hedging asset? Evidence from China. Journal of Management Science and Engineering, 4(3), 173–188. https://doi.org/10.1016/j.jmse.2019.09.001 1. Caferra, Rocco, Gabriele Tedeschi, and Andrea Morone. 2021. ‘Bitcoin: Bubble That Bursts or Gold That Glitters?’ Economics Letters 205: 109942. https://doi.org/10.1016/j.econlet.2021.109942. 1. Wolf, Martin. 2019. ‘The Libertarian Fantasies of Cryptocurrencies’. Financial Times, February. https://www.ft.com/content/eeeacd7c-2e0e-11e9-ba00-0251022932c8. -1. Fantacci, Luca. 2019. ‘Cryptocurrencies and the Denationalization of Money’. International Journal of Political Economy 48 (2): 105–26. https://doi.org/10.1080/08911916.2019.1624319. \ No newline at end of file +1. Fantacci, Luca. 2019. ‘Cryptocurrencies and the Denationalization of Money’. International Journal of Political Economy 48 (2): 105–26. https://doi.org/10.1080/08911916.2019.1624319. From 4d54c56ee3a853b546e8fa1acb8aafe1d6d88351 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Mon, 30 May 2022 13:04:27 -0500 Subject: [PATCH 042/116] fix spelling, grammar, typos --- notes/market-fundamentalism.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/notes/market-fundamentalism.md b/notes/market-fundamentalism.md index acbce70..fc19b2a 100644 --- a/notes/market-fundamentalism.md +++ b/notes/market-fundamentalism.md @@ -23,9 +23,9 @@ The trader or market fundamentalist view likely represents a majority of interes Rufus and Stephen 'steel man' the market fundamentalism position, exploring four key claims: -1. [Unregulated](../concepts/regulation.md) markets allow companies to so what they're supposed to do: maximize returns to shareholders. -2. [Markets](../concepts/market.md) are likeable to evolution; they have no moral quality. -3. Crypto-trading is a [public good](../concepts/public-goods-problem.md) +1. [Unregulated](../concepts/regulation.md) markets allow companies to do what they're supposed to do: maximize returns to shareholders. +2. [Markets](../concepts/market.md) are comparable to evolution; they have no moral quality. +3. Crypto trading is a [public good](../concepts/public-goods-problem.md) 4. There is no [non-public](../concepts/asymmetric-information.md) disclosure about the risks of these assets, everyone is going in with their eyes open that this is the wild west. Rufus and Stephen end their conversation with an analysis of the market fundamentalist position and the associated claims. @@ -41,11 +41,11 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen * Exchange traded [pyramid scheme](../concepts/pyramid-scheme.md)? * [Derivative](../concepts/derivative.md) contract with no underlying? * [Libertarian](../concepts/libertarianism.md) performance [art](../concepts/art.md) split into 21 million pieces https://en.wikipedia.org/wiki/Monte_Carlo_Bonds -* If we value it as a "block box" [financial asset](../concepts/financial-asset.md) (ala Nassim Taleb) we find it’s [present value](../concepts/present-value.md) can only be zero. https://www.fooledbyrandomness.com/BTC-QF.pdf +* If we value it as a "block box" [financial asset](../concepts/financial-asset.md) (ala Nassim Taleb) we find its [present value](../concepts/present-value.md) can only be zero. https://www.fooledbyrandomness.com/BTC-QF.pdf ## Who is Trading Crypto? -* The day-trader in the pub, WallStreetBets demographic. +* The day trader in the pub, WallStreetBets demographic. * [Barrett, Claer. ‘Why Young Investors Bet the Farm on Cryptocurrencies’. Financial Times, 2021.](https:www.ft.com/content/162839aa-0437-478b-a4d4-4a8d7ab71458): > "I’ll either be rich, or wrong." This is how Sam, a 29-year-old cryptocurrency enthusiast I interviewed on this week’s Money Clinic podcast, summarized his strategy for investing the last £2,000 of his savings in a hugely volatile and unregulated asset class. Claiming that he's not a natural risk taker, Sam has never set foot inside a casino or put money on a horse. "To me, that seems stupid, like you’re throwing money away." He has never considered investing in stocks and shares. Being self-employed, he's never paid into a pension or thought about setting up a self-invested personal pension (Sipp). "No one’s ever given me that kind of information," he says. So why is he prepared to risk his spare cash betting on crypto? Sam found out his younger brother had turned a £3,000 investment into £30,000 within four years — money he now intends to use as a property deposit. "I was very surprised and it made me feel a bit stupid . . . why aren’t I doing this?"* * cf low bets in general: tiny but possible asymmetric returns. A regressive tax or distributed lottery. @@ -60,8 +60,8 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen ## Why is the Crypto-Can-Make-Me-Money Position So Interesting to Examine? -* Likely represents a majority of interest and activity in crypto (and even [DAOs](../concepts/dao.md)) from the day-trader in the pub up to the wall street trader -* Generally not brought up explicitly as much in the crypto / [web3](../concepts/web3.md) discussion (for obvious reasons: it is not as substantive or attractive position to espouse publicly) +* Likely represents a majority of interest and activity in crypto (and even [DAOs](../concepts/dao.md)) from the day trader in the pub up to the Wall Street trader +* Generally not brought up explicitly as much in the crypto / [web3](../concepts/web3.md) discussion (for obvious reasons: it is not a substantive or attractive position to espouse publicly) * The political imaginaries aren’t there - "I just want to make money", "Greed is good" * Consequences and externalities be damned * Hyper-[capitalist](../concepts/capitalism.md) @@ -72,15 +72,15 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen ## Steel-Manning the Market Fundamentalism Position -* Unregulated markets allow companies to so what they're supposed to do: maximize returns to shareholders. +* Unregulated markets allow companies to do what they're supposed to do: maximize returns to shareholders. * [Friedman Doctrine](https://en.wikipedia.org/wiki/Friedman_doctrine) applied to unregulated markets. Optimize for shareholder value. * Now we get to redefine shareholder to mean token holder, without any regulatory baggage from traditional markets. * Line must go up at any cost. * Crypto products are risk assets that have no fundamentals, but that’s not necessarily a problem because you can make money on trading them. - * There other financial products (ETNs - exchange traded notes, volatility swaps) many of which are intrinsically negative-sum and high-risk as well, these are allowed in markets … so why shouldn’t crypto be. + * There are other financial products (ETNs - exchange traded notes, volatility swaps) many of which are intrinsically negative-sum and high-risk as well, these are allowed in markets … so why shouldn’t crypto be. * [Credit Suisse defends controversial financial product at the center of the market turmoil](https://www.cnbc.com/2018/02/07/credit-suisse-defends-controversial-xiv-etn-amid-market-turmoil.html) -* Markets are likeable to evolution; they have no moral quality. - * Markets are a mechanism likeable to evolution: they [select](../concepts/price-formation.md) for fitness and success +* Markets are comparable to evolution; they have no moral quality. + * Markets are a mechanism comparable to evolution: they [select](../concepts/price-formation.md) for fitness and success * If I'm allowed to trade products that are massively [asymmetric](../concepts/asymmetric-information.md) and disadvantageous to retail traders (individual, non-professional market participants) then I can and I will => it will eliminate those inefficient players (it punishes unfitness and rewards fitness) * Even if I know it’s a [greater fool asset](../concepts/greater-fool-theory), if I have access to non-public information and more capital I can (and should) use it and exit before the other fools. * Some people legitimately did make money trading on [bubbles](../concepts/bubble.md): South Sea Bubble, Dotcom Bubble, Tulip Mania @@ -116,17 +116,17 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen * What does that lead to? * Inequality (money flows to the sharks) * Distrust and cynicism - * Both wider in society: i’m out for myself, other people are just out for themselves. Dishonesty and exploitation are a normal part of (capitalist) society + * Both wider in society: I’m out for myself, other people are just out for themselves. Dishonesty and exploitation are a normal part of (capitalist) society * Subversive opportunism - * When it goes wrong the state and its institutions and leaders are blamed further corroding trust in our collective capabilities when we most need them (climate change etc) + * When it goes wrong the state and its institutions and leaders are blamed, further corroding trust in our collective capabilities when we most need them (climate change etc.) * In markets - assuming that markets esp financial markets have some value then undermining faith in them is problematic. Cf the 1920s/1930s which led to much of the market regulations we have today * You may think this is a good if you are anarchist-nihilist * Just because you can trade something doesn't mean it’s good for the world (opium trade, slave trade, asbestos) - * [Moral hazard](../concepts/moral-hazard.md)- public is incentivized to take on disproportionate risk expecting a bailout + * [Moral hazard](../concepts/moral-hazard.md) - public is incentivized to take on disproportionate risk expecting a bailout * A deformation of character: we become enslaved to the idea of getting rich quick (cf Salgado). Capitalist alienation -* Terribly pathological form of [capitalism](../concepts/capitalism.md) that doesn't result in price formation on collective enterprise, goods or services. Funds are betting on financial fantasy castles in the sky detached from any day to day reality of human life. +* Terribly pathological form of [capitalism](../concepts/capitalism.md) that doesn't result in price formation on collective enterprise, goods or services. Funds are betting on financial fantasy castles in the sky detached from any day-to-day reality of human life. * What is the purpose of public [markets](../concepts/market.md) then? -* A captive market for [ficticious commodities](../concepts/ficticious-commodity.md) that is controlled by opaque unregulated market making and an economic [cartel](../concepts/cartel.md). +* A captive market for [fictiyious commodities](../concepts/ficticious-commodity.md) that is controlled by opaque unregulated market making and an economic [cartel](../concepts/cartel.md). * This is great if you're inside the cartel. Not so great if you aren’t. * Wealth transfer from public to insiders is all but guaranteed by the information [asymmetry](../concepts/asymmetric-information.md). From b583af2f8a3e5570eeafeb1616164b2a8d912fb9 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Mon, 30 May 2022 14:09:25 -0500 Subject: [PATCH 043/116] Fix spelling, typos, grammar --- notes/are-crypto-tokens-securities.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/notes/are-crypto-tokens-securities.md b/notes/are-crypto-tokens-securities.md index 2896f9f..99adad3 100644 --- a/notes/are-crypto-tokens-securities.md +++ b/notes/are-crypto-tokens-securities.md @@ -38,9 +38,9 @@ Rufus and Stephen end their conversation with an analysis of this position and t * Gave rise to a modern framework of laws that cover financial products from debt instruments, bonds, equities, and derivatives. The legal foundation on which all of market capitalism is built. * **Because of their centrality to markets, securities have strict registration, ownership and transfer regulation.** -## The Debate Aurrounding Crypto Investments +## The Debate Surrounding Crypto Investments -* There is currently debate about how crypto investments fall under the existing securities regulatory framework. This is being debated inside the government regulatory agencies, on the floor of the senate, and in the courts. +* There is currently debate about how crypto investments fall under the existing securities regulatory framework. This is being debated inside the government regulatory agencies, on the floor of the Senate, and in the courts. * The outcome of the final ruling will potentially impact trillions of notional value in “scofflaw” investments of potentially unregistered securities. * Landmark case from 1946, SEC vs W. J. Howey Co. set the [Howey Test](../concepts/howey-test.md) precedent for determining what is a securities contract. * (1) an investment of money, (2) in a common enterprise, (3) with the expectation of profit and (4) to be derived from the efforts of others. @@ -48,11 +48,11 @@ Rufus and Stephen end their conversation with an analysis of this position and t * **If we accept the premise that crypto tokens aren’t currencies, then tokens are clearly investments made with the expectation of profit. Are crypto assets unregistered securities?** * Crypto tokens currently exist partially outside the US securities framework. * The SEC has taken action against some [Initial Coin Offerings](https://www.sec.gov/ICO), [selling debt instruments to retail](https://www.reuters.com/article/sec-investors-retail-idUSL2N0XB0NU20150414), against outright [Ponzi schemes](https://www.sec.gov/spotlight/enf-actions-ponzi.shtml), and firms acting as bank-like entities. - * District courts have set precedent in many investment fraud cases that have consistently indicated token sales to US persons meet [Howey Test](../concepts/howey-test.md) and Dodd-Frank criterion of securities sales, even if done internationally (i.e from Switzerland). If you sell to US persons it becomes a security under US law. + * District courts have set precedent in many investment fraud cases that have consistently indicated that token sales to US persons meet [Howey Test](../concepts/howey-test.md) and Dodd-Frank criteria of securities sales, even if done internationally (i.e. from Switzerland). If you sell to US persons it becomes a security under US law. * **A federal case or executive order that sets precedent nationally has yet not been heard in the courts.** - * Thousands of companies and projects' success or failure rests on token sales not being regulated as securities. If they are regulated as securities it is quite possible the entire market implodes. -* Sale of securities depends who you are selling to, and what kind of risk and return are presented in the prospectus. - * Selling to the general public is highly regulated, with lots of disclosures, auditing of financials by PWC, Deloitte, etc, and transparency in ownership and inside stock sales. + * Thousands of companies' and projects' success or failure rests on token sales not being regulated as securities. If they are regulated as securities it is quite possible the entire market implodes. +* Sale of securities depends on who you are selling to, and what kind of risk and return are presented in the prospectus. + * Selling to the general public is highly regulated, with lots of disclosures, auditing of financials by PWC, Deloitte, etc., and transparency in ownership and inside stock sales. * Selling securities to institutions and high net worth individuals is not as highly regulated. SEC defines “accredited investor” as: * A company you are a director of. * A limited liability company or family office with over $5 million. @@ -60,8 +60,8 @@ Rufus and Stephen end their conversation with an analysis of this position and t * Case example: Theranos raised $724 million from private accredited investors including Henry Kissinger and Betsy Devos. The people in the blast radius of the fraud were all fabulously wealthy and invested capital they already allocated to high-risk investments anyways. * Many policymakers on both sides of the aisle debate whether or not the accreditation laws are too restrictive and shut the public out of high-risk-high-return investments that only wealthy people have access to. * On the right, then individual choice is a paramount, the government shouldn’t dictate risk-taking in markets. Just “evolution” and the natural state of being. - * On the left, Pikkety’s analysis that wealth generated from capital grows faster than economic output and patrimonial capitalism leads to distortions of markets and inequality. -### Steel Manning the Position that Crypto Investments Should Not Be Brought Within Tformhe Securities Regulation Framework + * On the left, Pikkety’s analysis that wealth generated from capital grows faster than economic output and that patrimonial capitalism leads to distortions of markets and inequality. +### Steel Manning the Position that Crypto Investments Should Not Be Brought Within The Securities Regulation Framework * It is very easy to create an equity crowdfunding and cap table structure on top of crypto platforms like [ethereum](../concepts/ethereum.md). * Individuals can do it anonymously and raise billions of dollar equivalents in seed capital for ventures that are very early. Don’t need to involve the SEC, government or lawyers at all. * Previously this kind of access was gated to US persons with connections and access to funds, connections and access to capital. @@ -73,17 +73,17 @@ Rufus and Stephen end their conversation with an analysis of this position and t ### Analysis -* We tried the complete laissez faire caveat emptor securities model in the 1920s. **It ended very badly**. -* The kind of fly-by-night “There Will Be Blood” type of charlatans ran wild selling securities to the public. +* We tried the complete laissez-faire *caveat emptor* securities model in the 1920s. **It ended very badly**. + * The kind of fly-by-night “There Will Be Blood” type of charlatans ran wild selling securities to the public. * Most US states created Blue Sky Laws to "to stop the sale of stock in fly-by-night concerns, visionary oil wells, distant gold mines and other fraudulent exploitations." - * History is repeating itself exactly like it did then. **Shibu Inu and Dogecoin were the blue sky securities of the 1920s**. People were attracted to get rich quick schemes back then just as much as they are today. Human psychology is remarkably invariant across time. + * History is repeating itself exactly like it did then. **Shibu Inu and Dogecoin were the blue sky securities of the 1920s**. People were attracted to get-rich-quick schemes back then just as much as they are today. Human psychology is remarkably invariant across time. * As part of the New Deal, the United States signs into law the Securities Act of 1933, Glass-Steagall Act of 1933, Securities Exchange Act of 1934. These largely clean up the fraud. The US framework is the blueprint for many industrialized nations to do the same. * The Great Depression ends and the US is victorious in WWII. * A long peace in financial markets. * Bank runs are entirely eliminated. * US capital markets become extremely large, robust and a new era of unrivalled growth and private innovation. * Centrist Hypothesis: Regulated capital markets, taken on the whole arc of human history, produce relative prosperity. -* According to the SEC crypto tokens meet the Howey test and thus are securities contracts. +* According to the SEC, crypto tokens meet the Howey Test and thus are securities contracts. * This fits with our general intuition about the intent and purpose retail day traders are buying them. They’re investing in common ventures with the expectation of profit from the sale of tokens the same as equity. * The enterprises possibly now exist as anonymous internet entities and Discord servers now instead of law firms and board rooms. * Some [DAO](../concepts/dao.md) governance tokens quite literally are designed to imitate voting shares as seen in existing equity structures. @@ -100,7 +100,7 @@ Rufus and Stephen end their conversation with an analysis of this position and t * There’s a perverse incentive to simply abscond with seed money rather than actually build anything. * There’s a perverse incentive to build technical Potemkin villages that focus on “token value go up” without building anything. Many crypto companies are here. * Can read the whitepapers of these companies and even people with PhDs in econ and software engineering can’t parse what they’re doing. ***How is the lay public going to do due-diligence on claims of financial perpetual motion machines?*** -* Is there an legal investment vehicle structure that balances the risks of retail investors with their desire for access to high risk early ventures? +* Is there a legal investment vehicle structure that balances the risks of retail investors with their desire for access to high-risk early ventures? * Or should we simply bracket these kinds of securities sales to the already-wealthy? Because the check-size to risk ratio just empirically fits in the “Goldilocks zone” of the practical regulatory/legal/public-interest concerns. * Where should the accredited investor red line be? * Can the courts scale to handle millions of new investment fraud cases every year? From 14d2589cf8d6ea821e3a6e256ef618b54e707ae4 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Mon, 30 May 2022 14:21:44 -0500 Subject: [PATCH 044/116] fix grammar, typos --- notes/post-state-technocracy.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/notes/post-state-technocracy.md b/notes/post-state-technocracy.md index 9d40251..7e23643 100644 --- a/notes/post-state-technocracy.md +++ b/notes/post-state-technocracy.md @@ -78,13 +78,13 @@ This thesis has been put forward in various forms. So far, the most fully articu * Problems like climate change show that liberal democracies and the existing international order are highly vulnerable to paralysis on global tragedy of the commons problems. * Just like evolution, corruption is the natural state of being, so we need to embrace corruption rather than live up to the ideals of liberal democracy. * Instead of a strong man to save us, we need strong tech. -* **Claim 5:** [web3](../concepts/web3.md) is a paradigm shift akin to the industrial revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life. - * We can’t stop runaway phenomenon. We simply have to embrace them. +* **Claim 5:** [web3](../concepts/web3.md) is a paradigm shift akin to the Industrial Revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life. + * We can’t stop runaway phenomena. We simply have to embrace them. * Crypto is inevitable. We can’t put the toothpaste back in the tube. * Creative destruction is unpredictable but in the end it’s right. * Historical inventions like the printing press were fraught with concern and risk, and yet humanity survived those paradigm shifts. The disruption of the financial system is no different than the printing press. * The train of progress only goes one direction, get on or get off. There’s no place for Luddites in the future. - * Matt Damon superbowl ad is the soft form of this worldview. + * Matt Damon Superbowl ad is the soft form of this worldview. ## Evaluating the position @@ -105,7 +105,7 @@ This thesis has been put forward in various forms. So far, the most fully articu * **Claim 2:** "The state can (and should) be hollowed out" * "Nation states are being dissolved from within. The internet is global, the internet is the basis of human life, so borders should not exist." * “No borders politics” is legitimately a divergence from classical right wing positions. Usually resonates with far-left positions. This is an interesting shift in thinking. - * "We can replace all of the state's legacy functions with software, and the public goods that it once supported can be replaced by either the private sector or blockchain apps."" + * "We can replace all of the state's legacy functions with software, and the public goods that it once supported can be replaced by either the private sector or blockchain apps." * Replacing the DMV and the tax authority with automation is a genuinely appealing idea to many people. Replacing it with the private sector is more controversial. * People have successfully built antifragile services that exist outside the regulatory perimeter that have endured the test of time: * ThePirateBay has existed since 2003 despite government attempts to remove it from the internet. No government cares enough to really pursue it because it only infringes on the private sector and there’s no political will to shut it down. @@ -129,8 +129,8 @@ This thesis has been put forward in various forms. So far, the most fully articu * **Claim 4:** "Crypto is the smartest people in the world exiting into their own economy" * A tech-led plutocracy, not a utopia. * The result would be an oligarchy: the technical elite and those with access to capital rule. -* **Claim 5:** [web3](../concepts/web3.md) is a paradigm shift akin to the industrial revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life. - * This is a vision of the future detached from the lived experience and day to day economics of the vast majority of people globally. +* **Claim 5:** "[web3](../concepts/web3.md) is a paradigm shift akin to the industrial revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life." + * This is a vision of the future detached from the lived experience and day-to-day economics of the vast majority of people globally. * We'll all be full-time FX traders at face value makes zero sense. Price discovery is important but who will smelt the aluminium for your MacBook? * How will this new economy function when their financial system can't even be used to buy goods and services? * “Crypto doesn’t currently function as money, not because of technical or economics limitations, but because statists won’t give up their power.” @@ -145,7 +145,7 @@ This thesis has been put forward in various forms. So far, the most fully articu * We can’t run nation states like we run tech startups. * Skeptical about finding a quick-fix in technology or politics. There is wisdom in learning from the past and the institutions that exist. * Esperanto-style solutionism has never worked for societies or economies. - * Anna Neima’s book The Utopians is full of similarly minded people and communities. They usually dissolve or collapse. + * Anna Neima’s book *The Utopians* is full of similarly minded people and communities. They usually dissolve or collapse. *** From d7209e0efe68fd67fccf418f4fc7de151d5cb833 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Mon, 30 May 2022 14:34:41 -0500 Subject: [PATCH 045/116] fix grammar, typos --- ...ch-incrementalism-and-responsible-innovation.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/notes/fintech-incrementalism-and-responsible-innovation.md b/notes/fintech-incrementalism-and-responsible-innovation.md index b51386a..44f0031 100644 --- a/notes/fintech-incrementalism-and-responsible-innovation.md +++ b/notes/fintech-incrementalism-and-responsible-innovation.md @@ -2,7 +2,7 @@ title: Fintech Incrementalism and Responsible Innovation created: 2022-04-04 date: 2022-04-04 -description: "In episode #5 of our ongoing deep dive into web3 and crypto, Rufus Pollock and Stephen Diehl explore the claim that blockchain can be a vehicle for increase in financialization through the development of more complex, blockchain based financial products." +description: "In episode #5 of our ongoing deep dive into web3 and crypto, Rufus Pollock and Stephen Diehl explore the claim that blockchain can be a vehicle for increase in financialization through the development of more complex, blockchain-based financial products." youtube: https://www.youtube.com/watch?v=7rLQoTtwRSU&t=4s podcast: https://anchor.fm/life-itself/episodes/Fintech-Incrementalism-and-Responsible-Innovation-e1gn02u featured: false @@ -21,9 +21,9 @@ aliases: notes/fintech-incrementalism-and-responsible-innovation.md In this episode, Rufus and Stephen explore an argument for blockchain and crypto that they term “fintech incrementalism”. -This position assumes the capitalist notion that greater [financialization](../claims/is-hyperfinancialization.md) is an engine for progress, and claims that blockchain can be a vehicle for this increase in financialization through the development of more complex, [blockchain](../concepts/blockchain.md) based [financial products](../concepts/financial-asset.md) – and the added market efficiency which will result. This ranges from better payment rails i.e. a better visa, stripe etc, to more efficient clearings systems, to full-scale innovation in financial engineering. +This position assumes the capitalist notion that greater [financialization](../claims/is-hyperfinancialization.md) is an engine for progress, and claims that blockchain can be a vehicle for this increase in financialization through the development of more complex, [blockchain](../concepts/blockchain.md)-based [financial products](../concepts/financial-asset.md) – and the added market efficiency which will result. This ranges from better payment rails i.e. a better Visa, Stripe etc, to more efficient clearing systems, to full-scale innovation in financial engineering. -The political imaginaries of this position are more efficient markets and more bespoke and customized financial products to buy. [Capitalism](../concepts/capitalism.md) is net positive in the world, and a fairer, more efficient and transparent economy benefits everyone. +The political imaginaries of this position are: more efficient markets and more bespoke and customized financial products to buy. [Capitalism](../concepts/capitalism.md) is net positive in the world, and a fairer, more efficient and transparent economy benefits everyone. Rufus and Stephen 'steel man' the “fintech incrementalism” position, identifying 7 key claims, before then conducting an analysis of the position. @@ -43,7 +43,7 @@ Rufus and Stephen 'steel man' the “fintech incrementalism” position, identif * Fintech innovation and quantitative finance has a good track record of progress in the last few decades. * New York Fed’s open source models of the US economy * GitHub - [FRBNY-DSGE/DSGE.jl: Solve and estimate Dynamic Stochastic General Equilibrium models (including the New York Fed DSGE)](https://github.com/FRBNY-DSGE/DSGE.jl) - * Low cost index funds + * Low-cost index funds * [Mechanism design](https://www.investopedia.com/terms/m/mechanism-design-theory.asp#:~:text=Mechanism%20design%20is%20a%20branch,self%2Dinterest%20and%20incomplete%20information.), [auction theory](https://en.wikipedia.org/wiki/Auction_theory) * [Myerson–Satterthwaite theorem](https://en.wikipedia.org/wiki/Myerson%E2%80%93Satterthwaite_theorem) * [Black-Scholes-Merton model](https://www.investopedia.com/terms/b/blackscholes.asp) @@ -60,9 +60,9 @@ Rufus and Stephen 'steel man' the “fintech incrementalism” position, identif * **Claim 1:** Everything is moving towards real-time and international finance. Crypto is the evolution of this trend. We want to move the entire economy into a hyperfinanicalized 24/7 real-time always-trading market with even more complexity and lower friction than what we have presently. * Building a [T+0 settlement](https://www.investopedia.com/ask/answers/what-do-t1-t2-and-t3-mean/) system for equities is a great idea. Real-time settlements would be a boon for the liquidity of US capital markets. - * Real time payments are a resounding success in Europe and Asia. + * Real-time payments are a resounding success in Europe and Asia. * We’ve solved volatility problems of asset classes in the past. We’ll do it again. It just requires more math and more sophisticated models. -* **Claim 2:** Banks are outdated and slow to innovate: core banking software is mostly from the 1980s; state of bitrot in financial infrastructure is vast; American infrastructure is massively outdated. Crypto is the means to fix all this. +* **Claim 2:** Banks are outdated and slow to innovate: core banking software is mostly from the 1980s; state of bit rot in financial infrastructure is vast; American infrastructure is massively outdated. Crypto is the means to fix all this. * **Subclaim 2a)** Private money and [Central Bank Digital Currencies](../concepts/cbdc.md) will compete for market share and will coexist. This will be the future of finance. * The Federal Reserve, and the European Central Bank will keep all of their balance sheets and swap lines on a global distributed ledger providing greater market transparency and efficiency of sovereign flows. * Retail accounts will all be held directly at the [central bank](../concepts/central-banks.md) @@ -85,7 +85,7 @@ Rufus and Stephen 'steel man' the “fintech incrementalism” position, identif * If we can create completely synthetic hedges for a wide range of real-world phenomenal factors then it doesn’t really matter how we do it. * **Claim 6:** There are a few **[asset classes](asset) that are almost exclusively narrative-driven** rather than mathematics or cashflow-driven. * “If gold appears to be a hedge for anything, it’s the fear of inflation, or the fear of financial instability as proxied by changes in government deficits.” - * **The demand curve for [gold](../concepts/gold.md) is, at least partially,generated by emotion and politics.** This is squishy but quantifiable. + * **The demand curve for [gold](../concepts/gold.md) is, at least partially, generated by emotion and politics.** This is squishy but quantifiable. * With crypto tokens we can create new synthetic assets whose demand curves are artificially generated by different [psychological forces](../concepts/narrative-economics.md) * Gold is a proxy asset for investing in the “[libertarian](../concepts/libertarianism.md) project”. With crypto can we create a proxy asset for investing in the “[anarchist](../concepts/anarchocapitalism.md) project” or the “[Marxism](../concepts/marxism.md) project”? * **Claim 7:** “The next step in the evolutionary tree of homo economicus, in which all aspects of our humanity sublimates into the free market.” From 161e173ecad093175f071b64a615d9044da5a6a0 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Mon, 30 May 2022 15:05:53 -0500 Subject: [PATCH 046/116] fix spelling, grammar, typos --- ...ctive-action-problems-and-climate-change.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/notes/collective-action-problems-and-climate-change.md b/notes/collective-action-problems-and-climate-change.md index 5d620dc..f1a6450 100644 --- a/notes/collective-action-problems-and-climate-change.md +++ b/notes/collective-action-problems-and-climate-change.md @@ -35,16 +35,16 @@ According to the founders of KlimaDAO: Value and price are visibly disconnected Their goal, according to their own words, is to become a Climate Carbon-Based Reserve Currency... effectively a semi-algorithmic [central bank](../concepts/central-banks.md) with [DAO](../concepts/dao.md) governance structures. -> “The DAO serves the role of "de-central" bank, governing the monetary policy of this new carbon-backed currency, just as a central bank governs the monetary policy of a fiat currency. Over time, we will build an economy around KLIMA by driving adoption and unlocking growth of the crypto-carbon economy.” - [KlimaDAO](https://docs.klimadao.finance/) +> The DAO serves the role of "de-central" bank, governing the monetary policy of this new carbon-backed currency, just as a central bank governs the monetary policy of a fiat currency. Over time, we will build an economy around KLIMA by driving adoption and unlocking growth of the crypto-carbon economy. - [KlimaDAO](https://docs.klimadao.finance/) We have drawn up our best understanding of the underlying model of KlimaDAO as an investment vehicle: -[view it here](https://excalidraw.com/#room=1891d6b61b0fee7269f9,T_TZqXxVGi5TGABRzS0T7w) +[View it here](https://excalidraw.com/#room=1891d6b61b0fee7269f9,T_TZqXxVGi5TGABRzS0T7w) Boiled down to the essentials, the model is as follows: * Someone comes along with some currency, eg a [dollar](../concepts/dollar.md) or a euro, and then converts that into USDC, the [stablecoin](../concepts/stablecoin.md) equivalent of a US dollar. - * In exchange for depositing whatever amount of USDC, you get 1 divided by the price of Klima Klima tokens from the Klima treasury. + * In exchange for depositing whatever amount of USDC, you get 1 divided by the price of Klima tokens from the Klima treasury. * Then the Klima organization takes the USDC that it has received, converts them back into dollars (or euros or pounds etc) and buys carbon offset certificates. Carbon offset certificates represent carbon sequestration (tree planting), methane capture, and renewable energy initiatives. The idea is then that certificates of carbon offsets come back into the treasury. As we understand it from the white paper, there's a guarantee that every Klima token that's issued is backed by at least one tonne of carbon offsets. * So essentially what is being done is they're collecting money together and buying carbon offsets. It's basically the equivalent of a special purpose vehicle for buying carbon offsets. * You can also take those Klima tokens and sell them back to the Treasury or create [derivative](../concepts/derivative.md) financial products on top of them, which can potentially give you more shares in the entity itself. This is called [staking](../concepts/staking.md) and bonding. This process doesn't change the macro structure of what KlimaDAO is trying to do end to end, it just adds a level for people who are already invested in it to get more invested in it. @@ -66,7 +66,7 @@ In Summary: * Underlying aspiration: To sequestrate carbon, to plant more trees, and to drive up the price of carbon offsets - as we buy more of them, there'll be less supply, that will make it more expensive to pollute... * Klima tokens are a reserve currency that can act as a complementary currency to the world's national currencies that can be used to do targeted quantitative easing to encourage either degrowth or decarbonisation. * The potential to raise a lot of money due to price volatility of Klima tokens -* KlimaDAO are engaging with important questions that need addressed +* KlimaDAO are engaging with important questions that need to be addressed * How do we find cooperative solutions to climate change? KlimaDAO are trying to address crucial questions surrounding human cooperation and institutional design. ## *The Ministry of the Future* - Kim Stanley Robinson @@ -95,7 +95,7 @@ In Summary: * Firstly, the insane price volatility means Klima can't function as a [currency](../concepts/currency.md). The price of Klima peaked at around $3600, well above the intrinsic value of one ton of carbon. It has since collapsed, losing around 99% of its value over 1 year - it's now trading at around $20. * The notion that it can be a [reserve currency](../concepts/reserve-currency.md), when nobody's denominated any kind of goods or services, seems to be an irreconcilable contradiction inherent in Klima. * Like many other crypto projects it seems to be a piece of financial engineering that at the bottom sits nothing but some appeal to narrative and the faith that “number go up” by creating artificial scarcity of a digital speculative asset. So not a currency. - * If this is supposed to be a currency then it looks like the Weimar republic. + * If this is supposed to be a currency then it looks like the Weimar Republic. * Something that makes Klima exciting is this price volatility and the potential to raise a lot of money based on this price volatility. * Why not just raise the money at the beginning and then shut down the thing and just buy carbon offsets and hold on to them? * KlimaDAO are asking an important question: how can we tackle climate change using human cooperation? @@ -111,14 +111,14 @@ In Summary: * Are effectively a form of indulgence where you pay for the right to pollute the environment by paying off the damage via some future project or activity. You're not seeking to solve the problem, but rather to mitigate it. It doesn't seek to fix the root of the problem: that we're burning fossil fuels. Buying tokens that represent tree planting in the future will not solve climate change. * People will and can exploit these mechanisms to maximize their capacity to pollute. Secondary markets for carbon credits are driven by bizarre corruption. Tesla has made a lot of money on secondary markets trading carbon credits * Web3 Common Theme: [Technosolutionism](../concepts/technosolutionism.md) via the [financialization of everything](../claims/is-hyperfinancialization.md) - * Let’s turn the abstract idea of fighting climate change into a [ficticious commodity](../concepts/ficticious-commodity.md) to be traded on the market. + * Let’s turn the abstract idea of fighting climate change into a [fictitious commodity](../concepts/ficticious-commodity.md) to be traded on the market. * This is a distraction from actual solutions. Of which there is no financial silver bullet. * Just adding an additional layer of complexity to fighting climate change. Such a project absorbs time, money, and runs on [proof of work](../concepts/proof-of-work.md) which requires a large amount of energy. All these resources could be better allocated. * Anything we can do we can afford. The money exists, the problem is doing supranational coordination of solutions and allocating resources to those projects. * Mark Carney proposed to COP26 to allocate $130 trillion to help address solutions to climate change. **The money to fight climate change absolutely exists, but sufficient funds is not the issue.** * “Anything we can actually do we can afford.” — John Maynard Keynes * Unfettered capitalism is a process of commoditizing everything, privatizing the commons and destroying that which has no value and converting everything into private profit. - * [Crypto asset](../concepts/cryptoasset.md) are an extension of that program to an even more extreme level. + * [Crypto assets](../concepts/cryptoasset.md) are an extension of that program to an even more extreme level. * **Our system will continue exploiting fossil fuels so long as the private costs to capitalists are much lower than the societal cost.** * Vague appeals to new mechanism designs and appeals to absolute free [markets](../concepts/market.md) about “aligning incentives” can’t conceive of solutions outside their own capitalist logics. * Overall: @@ -135,7 +135,7 @@ In Summary: * "Let others do the costly things that need to be done to ensure the upkeep of the commons." * If enough people stop contributing, the good disappears. * Rufus’s book [‘The Open Revolution’](https://openrevolution.net/) is an extensive exploration of the internet economy, public goods, and the free-rider problem. - * A lot of attention is being payed to this problem by people within the [web3](../concepts/web3.md) space through things like quadratic voting, DAOs, however these don't really seem to be dealing with the issue of what to do if people aren't contributing. + * A lot of attention is being paid to this problem by people within the [web3](../concepts/web3.md) space through things like quadratic voting, DAOs, however these don't really seem to be dealing with the issue of what to do if people aren't contributing. * The mechanisms we currently have in our society to address this problem have been developed over thousands of years, eg if we don't pay our taxes we go to jail, and generally the way it is achieved is that someone or some body enforces this contribution, eg the state. * Rufus's book goes into detail into mechanisms for funding software, goods, information, movies, music. We also have examples of funding informational public goods at a large scale, and efforts around the environment. Governments spend billions, trillions in combination, a year on international research and development. All of modern medical science, all of modern mathematics was publicly funded in some way by governments or through other mechanisms. So we have got examples of solutions to the collective action problem - most done via states. It of course comes with some oppressive characteristics, eg the state can compel you to pay taxes, but we haven't really found a mechanism better than that * There are often visions of [libertarian](../concepts/libertarianism.md) solutions to the collective action problem, completely voluntary solutions. And such solutions would be great but they don't seem to exist: we charge people to use swimming pools and we build walls around them to limit access to those who have paid or those who have access by virtue of having contributed to the building of the swimming pool for example. @@ -146,7 +146,7 @@ In Summary: * Collective action problems are not impossible to solve, but they are not by any means straightforward. * **The urgency of the time scale of the climate crisis requires us to engage with existing institutions. There is no other choice, we're out of time** * More innovative solutions to addressing the free rider problem are not mutually incompatible with compelling our institutions to behave differently, and seeking to change them from within. - * We need to affect change from within existing institutions instead of burning everything down and replacing it with [DAOs](../concepts/dao.md). + * We need to effect change from within existing institutions instead of burning everything down and replacing it with [DAOs](../concepts/dao.md). * Solving climate change is going to involve some aspect of the state, it's going to involve claiming public money and putting that money towards the sustenance of public goods. * **We need to deconstruct the $100 trillion [shadow banking](../concepts/shadow-bank.md) system** that’s being used by plutocrats to evade taxes and strangle democracy. We need to on-shore that capital and redistribute it towards public interests: public works projects, R&D (fusion, solar cells, etc), green infrastructure development, relocation and international development. * Crypto is just enabling more shadow banking as scholars like Ann Pettifor and Hillary Allen have noted. From b098d387578b1d664a611096a30c252cc1d12720 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:04:19 -0500 Subject: [PATCH 047/116] Add link to editor guide --- meta/editing.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta/editing.md b/meta/editing.md index aa9d913..896fd51 100644 --- a/meta/editing.md +++ b/meta/editing.md @@ -1,3 +1,5 @@ # Editing Guide This is a guide to help people contribute content or manage contribution of content. Focus is on the "wiki" content stored in markdown -- which is all pages except the front page and a few special generated pages e.g. `/all` page. + +[Read the guide]([url](https://docs.google.com/document/d/1RcwjaJYn0jtMw9rOR9W0Gv2fmQDd7Fjr53NM6j1-lco/edit#heading=h.yh6fpxybdhx1). From 2929cbb74d1bfde582d9cdea1fec2605660e1d77 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:04:35 -0500 Subject: [PATCH 048/116] Fix link to guide --- meta/editing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/editing.md b/meta/editing.md index 896fd51..ba7f801 100644 --- a/meta/editing.md +++ b/meta/editing.md @@ -2,4 +2,4 @@ This is a guide to help people contribute content or manage contribution of content. Focus is on the "wiki" content stored in markdown -- which is all pages except the front page and a few special generated pages e.g. `/all` page. -[Read the guide]([url](https://docs.google.com/document/d/1RcwjaJYn0jtMw9rOR9W0Gv2fmQDd7Fjr53NM6j1-lco/edit#heading=h.yh6fpxybdhx1). +[Read the guide]([url](https://docs.google.com/document/d/1RcwjaJYn0jtMw9rOR9W0Gv2fmQDd7Fjr53NM6j1-lco/edit#heading=h.yh6fpxybdhx1)). From a44e55a70a468435e21e42bcf42e19f9e7520a10 Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:07:17 -0500 Subject: [PATCH 049/116] Fix link --- meta/editing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/editing.md b/meta/editing.md index ba7f801..10bad89 100644 --- a/meta/editing.md +++ b/meta/editing.md @@ -2,4 +2,4 @@ This is a guide to help people contribute content or manage contribution of content. Focus is on the "wiki" content stored in markdown -- which is all pages except the front page and a few special generated pages e.g. `/all` page. -[Read the guide]([url](https://docs.google.com/document/d/1RcwjaJYn0jtMw9rOR9W0Gv2fmQDd7Fjr53NM6j1-lco/edit#heading=h.yh6fpxybdhx1)). +[Read the guide](https://docs.google.com/document/d/1RcwjaJYn0jtMw9rOR9W0Gv2fmQDd7Fjr53NM6j1-lco/edit?usp=sharing). From 0171c58d352b493c23faf107c9b510973881dc7e Mon Sep 17 00:00:00 2001 From: catherinet1 <97066487+catherinet1@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:25:05 -0500 Subject: [PATCH 050/116] Add link to editor guide --- site/content/contribute.md | 1 + 1 file changed, 1 insertion(+) diff --git a/site/content/contribute.md b/site/content/contribute.md index 53af39c..b8a55b9 100644 --- a/site/content/contribute.md +++ b/site/content/contribute.md @@ -8,6 +8,7 @@ This is an open collaborative project. We already have a variety of partners and * Write up key concepts and ideas. You can check out our [existing guide][guide] to see which ones could be extended or improved. * See our [concepts-todo](../../meta/concepts-todo.md) task list for open topics. * See our [claims-todo](../../meta/claims-todo.md) task list for open topics. +* Read our [editor guide](../../meta/editing.md) on how to contribute or edit content on the website. * Proof edit articles and transcribe dialogs. Please [get in touch][contact] to find out more. ### If you like coding and designing From a9b303d0292b34e173d696210e31f938083dc80a Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 1 Jun 2022 17:57:57 +0300 Subject: [PATCH 051/116] [site/config]: add keywords field and move date logic to contentlayer --- site/contentlayer.config.ts | 18 ++++++++++++++---- site/pages/[...slug].js | 12 ++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/site/contentlayer.config.ts b/site/contentlayer.config.ts index 15e0d31..43cf1e0 100644 --- a/site/contentlayer.config.ts +++ b/site/contentlayer.config.ts @@ -5,6 +5,9 @@ import rehypeSlug from 'rehype-slug' import rehypeAutolinkHeadings from 'rehype-autolink-headings' import wikiLinkPlugin from "remark-wiki-link-plus" +const isValidDate = dateObject => new Date(dateObject) + .toString() !== 'Invalid Date'; + const ObsidianAliases = defineNestedType(() => ({ name: 'Obsidian', filePathPattern: '**/*.md*', @@ -22,6 +25,7 @@ const OtherPage = defineDocumentType(() => ({ date: { type: "date", description: "This will be the publication date" }, image: { type: "string" }, description: { type: 'string' }, + keywords: { type: "string" }, youtube: { type: "string" }, podcast: { type: "string" }, featured: { type: "boolean", default: false }, @@ -31,13 +35,19 @@ const OtherPage = defineDocumentType(() => ({ computedFields: { date: { type: "date", - resolve: (doc) => new Date(doc.date).toLocaleDateString('en-US', { - weekday: "long", year: "numeric", month: "long", day: "numeric" - }) + resolve: (doc) => { + const formattedDate = new Date(doc.date).toLocaleDateString('en-US', { + weekday: "long", year: "numeric", month: "long", day: "numeric" + }) + return isValidDate(formattedDate) ? formattedDate : null + } }, created: { type: "date", - resolve: (doc) => new Date(doc.created).toLocaleDateString('en-US') + resolve: (doc) => { + const formattedDate = new Date(doc.created).toLocaleDateString('en-US') + return isValidDate(formattedDate) ? formattedDate : null + } }, } })); diff --git a/site/pages/[...slug].js b/site/pages/[...slug].js index 4ec7602..4c51bd9 100644 --- a/site/pages/[...slug].js +++ b/site/pages/[...slug].js @@ -1,7 +1,6 @@ import MdxPage from '../components/MDX'; import { allOtherPages } from 'contentlayer/generated'; import { useMDXComponent } from 'next-contentlayer/hooks'; -import siteConfig from "../config/siteConfig" export default function Page({ body, ...rest }) { @@ -9,19 +8,12 @@ export default function Page({ body, ...rest }) { const children = { Component, frontmatter: { - ...rest, - date: rest.date === "Invalid Date" ? null : rest.date, - created: rest.created === "Invalid Date" ? null : rest.created + ...rest }, }; - - // enable editing content only for claims, concepts, and guide for now - const editUrl = ['claims', 'concepts', 'guide'].includes(rest._raw.sourceFileDir) - ? siteConfig.repoRoot + siteConfig.repoEditPath + rest._raw.sourceFilePath - : null return ( - + ); } From ed858069588cce83b50d7900d5b16f7a233c0dc4 Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 1 Jun 2022 17:58:48 +0300 Subject: [PATCH 052/116] [site/lib]: create file to store regex constants --- site/lib/constants.js | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 site/lib/constants.js diff --git a/site/lib/constants.js b/site/lib/constants.js new file mode 100644 index 0000000..2ebe063 --- /dev/null +++ b/site/lib/constants.js @@ -0,0 +1,2 @@ +export const YOUTUBE_REGEX = + /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/; From d04ee80ea64b4bec5be373d6fdf7d1c0d6741b1d Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 1 Jun 2022 18:29:38 +0300 Subject: [PATCH 053/116] [site/components]: replace youtube embed with lite-youtube component --- site/components/Paragraph.js | 29 +++++++---------------------- site/pages/_app.js | 1 + 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/site/components/Paragraph.js b/site/components/Paragraph.js index b1096bf..3940a5d 100644 --- a/site/components/Paragraph.js +++ b/site/components/Paragraph.js @@ -1,30 +1,15 @@ -import ReactPlayer from "react-player"; - -const videoLinks = [ - "youtube.com", - "dailymotion.com", - "vimeo.com", - "soundcloud.com", - "facebook.com/watch", - "twitch.com", -]; +import LiteYouTubeEmbed from "react-lite-youtube-embed"; +import { YOUTUBE_REGEX } from "../lib/constants"; export const Paragraph = (props) => { if ( typeof props.children == "object" && props.children.props && props.children.props.href && - videoLinks.some((str) => props.children.props.href.includes(str)) - ) - return ( -
- -
- ); + YOUTUBE_REGEX.test(props.children.props.href) + ) { + const youtubeId = props.children.props.href.split(/^|=|\//).pop(); + return ; + } return

; }; diff --git a/site/pages/_app.js b/site/pages/_app.js index b4da4b1..21c40fd 100644 --- a/site/pages/_app.js +++ b/site/pages/_app.js @@ -5,6 +5,7 @@ import { DefaultSeo } from 'next-seo' import { ThemeProvider } from 'next-themes' import '../styles/global.css' +import "react-lite-youtube-embed/dist/LiteYouTubeEmbed.css"; import siteConfig from '../config/siteConfig.js' import Layout from '../components/Layout' import * as gtag from '../lib/gtag' From fa80441cbffbfcfe014663e6e18ad4397601a25e Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 1 Jun 2022 18:30:05 +0300 Subject: [PATCH 054/116] [site/components]: remove unused import --- site/components/Anchor.js | 1 - 1 file changed, 1 deletion(-) diff --git a/site/components/Anchor.js b/site/components/Anchor.js index 6ef0b78..f239f93 100644 --- a/site/components/Anchor.js +++ b/site/components/Anchor.js @@ -1,5 +1,4 @@ import { Tooltip } from './Tooltip'; -import siteConfig from '../config/siteConfig.js' /** * Component for adding previews on hovering over anchor tags with relative paths From 1d527ca32932815ffc1226dcf1f0bbfe5b9f0756 Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 1 Jun 2022 18:44:01 +0300 Subject: [PATCH 055/116] [site/mdx/seo]: add seo keyword, youtube embed and dynamic imports * add keywords and article tags for seo * replace youtube embed with lite-youtube component for faster page loads * use youtube regex to add proper id check to render youtube component * add dynamic imports for faster builds and improving page speed performance * remove podcast embed iframe and replace with link due to slower page loads --- site/components/MDX.js | 88 ++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 47 deletions(-) diff --git a/site/components/MDX.js b/site/components/MDX.js index e93c671..43b3af2 100644 --- a/site/components/MDX.js +++ b/site/components/MDX.js @@ -1,9 +1,15 @@ import Head from 'next/head' -import ReactPlayer from 'react-player/lazy' +import dynamic from 'next/dynamic' import { NextSeo } from 'next-seo' import siteConfig from "../config/siteConfig" -import { Paragraph } from './Paragraph' -import { Anchor } from './Anchor' +import LiteYouTubeEmbed from "react-lite-youtube-embed" +import { YOUTUBE_REGEX } from "../lib/constants" + +const Anchor = dynamic(() => import('./Anchor').then(module => module.Anchor), { + ssr: false +}) + +const Paragraph = dynamic(() => import("./Paragraph").then(mod => mod.Paragraph)) const components = { Head, @@ -11,30 +17,25 @@ const components = { a: Anchor } -export default function MdxPage({ children, editUrl }) { +export default function MdxPage({ children }) { const { Component, frontmatter: { - title, description, date, authors, youtube, podcast, image, _raw + title, description, date, keywords, youtube, podcast, image, _raw }} = children let youtubeThumnbnail - let podcastEmbed - if (youtube && !image) { + const youtubeId = + youtube && YOUTUBE_REGEX.test(youtube) && youtube.split(/^|=|\//).pop(); + + if (youtubeId && !image) { // get the youtube thumbnail image from https://img.youtube.com/vi//maxresdefault.jpg - const regex = - /\www.youtube.com\/\embed\/|youtube.com\/\embed\/|youtu.be\/|\www.youtube.com\/\watch\?v=|\youtube.com\/\watch\?v=/; - youtubeThumnbnail = - youtube.replace(regex, "img.youtube.com/vi/") + "/maxresdefault.jpg"; + youtubeThumnbnail = youtube.replace( + YOUTUBE_REGEX, + `https://img.youtube.com/vi/${youtubeId}/maxresdefault.jpg` + ); } - if (podcast && podcast.includes("life-itself")) { - const podcastUrl = podcast - podcastEmbed = ([ - podcastUrl.slice(0, "https://anchor.fm/life-itself".length), - "/embed", - podcastUrl.slice("https://anchor.fm/life-itself".length) - ].join("")) - } + const PodcastIcon = siteConfig.social.find((s) => s.name === "Podcast").icon; const titleFromUrl = _raw.flattenedPath .split("/") @@ -47,6 +48,11 @@ export default function MdxPage({ children, editUrl }) { const imageUrl = image ? siteConfig.url + image : youtubeThumnbnail ? youtubeThumnbnail : null + + // enable editing content only for claims, concepts, and guide for now + const editUrl = ['claims', 'concepts', 'guide'].includes(_raw.sourceFileDir) + ? siteConfig.repoRoot + siteConfig.repoEditPath + _raw.sourceFilePath + : null return ( <> @@ -57,6 +63,11 @@ export default function MdxPage({ children, editUrl }) { openGraph={{ title: SeoTitle, description: description, + url: `${siteConfig.url}/${_raw.flattenedPath}`, + type: "article", + article: { + tags: keywords ? keywords.split(",") : [] + }, images: imageUrl ? ([ { @@ -69,16 +80,14 @@ export default function MdxPage({ children, editUrl }) { ]) : siteConfig.nextSeo.openGraph.images, }} + additionalMetaTags={[ + { name: "keywords", content: keywords ? keywords : "" } + ]} />

{title &&

{title}

} - {authors && ( -
-

{authors}

-
- )} {date && (

on {date} @@ -87,36 +96,21 @@ export default function MdxPage({ children, editUrl }) { {description && (

{description}

)} - {youtube && ( -
- -
+ {youtubeId && ( + )} {podcast && (
- {podcastEmbed && ( -
-