├── .gitignore
├── LICENSE
├── README.md
├── build.sh
├── build
├── c2dec.js
├── c2dec.wasm
├── c2enc.js
├── c2enc.wasm
├── sox.js
└── sox.wasm
├── codec2.patch
├── index.html
├── main.js
├── package-lock.json
├── package.json
└── screenshot.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | node_modules/
3 | build_wasm/
4 | codec2/
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Parts of this project are licensed under LGPL 2.1 and other parts are licensed under GPL 2.0.
2 |
3 | The following parts are produced from Codec2, and are thus licensed under LGPL 2.1
4 | - c2dec.js + c2dec.wasm
5 | - c2enc.js + c2enc.wasm
6 | - codec2.patch
7 |
8 | The following parts are produced from or use Sox, and are thus licensed under GPL 2.0
9 | - sox.js + sox.wasm
10 | - main.js
11 | - index.html
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Codec 2 Emscripten
2 |
3 | Codec 2 (https://github.com/drowe67/codec2) is a digital speech codec designed to operate as low as 450 bits/s. This repo compiles it using Emscripten for use in the browser.
4 |
5 | Check out the demo: https://rameshvarun.github.io/codec2-emscripten/
6 |
7 | 
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # Activate last Emscripten version.
4 | emsdk install 3.1.26
5 | emsdk activate 3.1.26
6 |
7 | # Clone codec2
8 | git clone https://github.com/drowe67/codec2.git
9 | cd codec2
10 | git checkout 67f31bce663caef85abb5dd2df62fb996b246c05
11 |
12 | # Apply patched changes.
13 | git apply ../codec2.patch
14 | cd ..
15 |
16 | # Build codec 2
17 | mkdir -p build_wasm
18 | cd build_wasm
19 | emcmake cmake ../codec2
20 | emmake make c2enc c2dec
21 |
22 | # Copy built artifacts into build/
23 | cd ..
24 | mkdir -p build/
25 | cp build_wasm/src/c2dec.js build
26 | cp build_wasm/src/c2dec.wasm build
27 | cp build_wasm/src/c2enc.js build
28 | cp build_wasm/src/c2enc.wasm build
--------------------------------------------------------------------------------
/build/c2dec.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/build/c2dec.wasm
--------------------------------------------------------------------------------
/build/c2enc.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/build/c2enc.wasm
--------------------------------------------------------------------------------
/build/sox.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/build/sox.wasm
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Codec2 Emscripten
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Codec2 Emscripten Demo Page
21 |
22 |
23 |
24 |
25 |
Codec 2 Encoder
26 |
27 |
28 |
29 |
Codec 2 Decoder
30 |
31 |
32 |
33 |
34 |
35 |
40 |
44 |
48 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | const html = htm.bind(React.createElement);
2 |
3 | function hexToArrayBuffer(hex) {
4 | return new Uint8Array(
5 | hex.match(/[\da-f]{2}/gi).map(function (h) {
6 | return parseInt(h, 16);
7 | })
8 | ).buffer;
9 | }
10 |
11 | function arrayBufferToHex(buffer) {
12 | return [...new Uint8Array(buffer)]
13 | .map((x) => x.toString(16).padStart(2, "0"))
14 | .join("");
15 | }
16 |
17 | function arrayBufferToBase64(buffer) {
18 | let binary = "";
19 | let bytes = new Uint8Array(buffer);
20 | for (let byte of bytes) {
21 | binary += String.fromCharCode(byte);
22 | }
23 | return window.btoa(binary);
24 | }
25 |
26 | function base64ToArrayBuffer(base64) {
27 | let binary = window.atob(base64);
28 | let bytes = new Uint8Array(binary.length);
29 | for (let i = 0; i < binary.length; i++) {
30 | bytes[i] = binary.charCodeAt(i);
31 | }
32 | return bytes.buffer;
33 | }
34 |
35 | function runDecode(mode, data) {
36 | return new Promise((resolve, reject) => {
37 | const module = {
38 | arguments: [mode, "input.bit", "output.raw"],
39 | preRun: () => {
40 | module.FS.writeFile("input.bit", new Uint8Array(data));
41 | },
42 | postRun: () => {
43 | let buffer = module.FS.readFile("output.raw", {
44 | encoding: "binary",
45 | });
46 | resolve(buffer);
47 | },
48 | };
49 | createC2Dec(module);
50 | });
51 | }
52 |
53 | function runEncode(mode, data) {
54 | return new Promise((resolve, reject) => {
55 | const module = {
56 | arguments: [mode, "input.raw", "output.bit"],
57 | preRun: () => {
58 | module.FS.writeFile("input.raw", new Uint8Array(data));
59 | },
60 | postRun: () => {
61 | let buffer = module.FS.readFile("output.bit", {
62 | encoding: "binary",
63 | });
64 | resolve(buffer);
65 | },
66 | };
67 | createC2Enc(module);
68 | });
69 | }
70 |
71 | function rawToWav(buffer) {
72 | return new Promise((resolve, reject) => {
73 | const module = {
74 | arguments: [
75 | "-r",
76 | "8000",
77 | "-L",
78 | "-e",
79 | "signed-integer",
80 | "-b",
81 | "16",
82 | "-c",
83 | "1",
84 | "input.raw",
85 | "output.wav",
86 | ],
87 | preRun: () => {
88 | module.FS.writeFile("input.raw", new Uint8Array(buffer));
89 | },
90 | postRun: () => {
91 | let output = module.FS.readFile("output.wav", {
92 | encoding: "binary",
93 | });
94 | resolve(output);
95 | },
96 | };
97 | SOXModule(module);
98 | });
99 | }
100 |
101 | function audioFileToRaw(buffer, filename) {
102 | return new Promise((resolve, reject) => {
103 | const module = {
104 | arguments: [
105 | filename,
106 | "-r",
107 | "8000",
108 | "-L",
109 | "-e",
110 | "signed-integer",
111 | "-b",
112 | "16",
113 | "-c",
114 | "1",
115 | "output.raw",
116 | ],
117 | preRun: () => {
118 | module.FS.writeFile(filename, new Uint8Array(buffer));
119 | },
120 | postRun: () => {
121 | let output = module.FS.readFile("output.raw", {
122 | encoding: "binary",
123 | });
124 | resolve(output);
125 | },
126 | };
127 | SOXModule(module);
128 | });
129 | }
130 |
131 | const DEFAULT_VALUE =
132 | "dOmBUOGFQjDhwIHwchQBIHIJQWDhxUHwRintQFH78RDBYKkwwUnpUAQ/fZDFj32wTl69oH4jOXBExliwK4pgwC3OYNBActjAGL8o8JCS8QCxpIAQN+oAgIS73AB4kKAQowK9gBYbdUBwXoQQkFaEAFl/gRCmrRSg4bBAAOHHQRBGKekwRlClEMPagMA6TMDQK9T1QC2zrTBtroVA/KhBAAG5QNDN99gA2QggALnlcWAlWr1QLxl9MIQ++RAf9+AA3YWkAF8fAADI3ohgmoLAANyGAAB7IxigjFVc4IwN1JCMDdBAa63QEHhdjABfKRAAu0ncALteGABIdcAAq/kBIOH/gSCT9gIQcj9BkOHDgADhsMFw4fEC0PrXQSByGoFw7qnCQKu3gYDh/4MQ";
133 |
134 | function ModeSelector(props) {
135 | return html`
136 |
139 |
140 |
151 |
152 |
`;
153 | }
154 |
155 | class Decoder extends React.Component {
156 | render() {
157 | return html`
158 |
159 |
160 |
167 |
168 |
169 | <${ModeSelector} selectId="decode-mode-select" />
170 |
171 |
179 |
186 |
187 |
188 |
191 |
`;
192 | }
193 |
194 | async decode() {
195 | const mode = document.getElementById("decode-mode-select").value;
196 |
197 | const input = document.getElementById("decode-input").value;
198 | const encoded = base64ToArrayBuffer(input);
199 |
200 | let decodedRaw = await runDecode(mode, encoded);
201 | let decodedWav = await rawToWav(decodedRaw);
202 |
203 | document.getElementById("decode-playback").src = URL.createObjectURL(
204 | new Blob([decodedWav], { type: "audio/wav" })
205 | );
206 | }
207 | }
208 |
209 | function readFileAsArrayBuffer(file) {
210 | return new Promise((resolve, reject) => {
211 | const reader = new FileReader();
212 | reader.onload = () => {
213 | resolve(reader.result);
214 | };
215 | reader.readAsArrayBuffer(file);
216 | });
217 | }
218 |
219 | class Encoder extends React.Component {
220 | render() {
221 | return html`
222 |
223 |
224 |
225 |
226 |
227 |
233 |
234 |
235 |
236 | <${ModeSelector} selectId="encode-mode-select" />
237 |
238 |
246 |
253 |
254 |
255 |
256 |
257 |
258 |
264 |
265 |
`;
266 | }
267 |
268 | async encode() {
269 | let file = document.getElementById("enc-upload").files[0];
270 | const mode = document.getElementById("encode-mode-select").value;
271 |
272 | let buffer = await readFileAsArrayBuffer(file);
273 | let rawBuffer = await audioFileToRaw(buffer, file.name || "input.wav");
274 | let encoded = await runEncode(mode, rawBuffer);
275 |
276 | document.getElementById("encode-output").innerHTML =
277 | arrayBufferToBase64(encoded);
278 | }
279 | }
280 |
281 | ReactDOM.createRoot(document.getElementById("dec-root")).render(
282 | React.createElement(Decoder)
283 | );
284 |
285 | ReactDOM.createRoot(document.getElementById("enc-root")).render(
286 | React.createElement(Encoder)
287 | );
288 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codec2-js",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "devDependencies": {
8 | "prettier": "^2.8.0",
9 | "serve": "^14.1.2"
10 | }
11 | },
12 | "node_modules/@zeit/schemas": {
13 | "version": "2.21.0",
14 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
15 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
16 | "dev": true
17 | },
18 | "node_modules/accepts": {
19 | "version": "1.3.8",
20 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
21 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
22 | "dev": true,
23 | "dependencies": {
24 | "mime-types": "~2.1.34",
25 | "negotiator": "0.6.3"
26 | },
27 | "engines": {
28 | "node": ">= 0.6"
29 | }
30 | },
31 | "node_modules/ajv": {
32 | "version": "8.11.0",
33 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
34 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
35 | "dev": true,
36 | "dependencies": {
37 | "fast-deep-equal": "^3.1.1",
38 | "json-schema-traverse": "^1.0.0",
39 | "require-from-string": "^2.0.2",
40 | "uri-js": "^4.2.2"
41 | },
42 | "funding": {
43 | "type": "github",
44 | "url": "https://github.com/sponsors/epoberezkin"
45 | }
46 | },
47 | "node_modules/ansi-align": {
48 | "version": "3.0.1",
49 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
50 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
51 | "dev": true,
52 | "dependencies": {
53 | "string-width": "^4.1.0"
54 | }
55 | },
56 | "node_modules/ansi-align/node_modules/string-width": {
57 | "version": "4.2.3",
58 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
59 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
60 | "dev": true,
61 | "dependencies": {
62 | "emoji-regex": "^8.0.0",
63 | "is-fullwidth-code-point": "^3.0.0",
64 | "strip-ansi": "^6.0.1"
65 | },
66 | "engines": {
67 | "node": ">=8"
68 | }
69 | },
70 | "node_modules/ansi-regex": {
71 | "version": "5.0.1",
72 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
73 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
74 | "dev": true,
75 | "engines": {
76 | "node": ">=8"
77 | }
78 | },
79 | "node_modules/ansi-styles": {
80 | "version": "6.2.1",
81 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
82 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
83 | "dev": true,
84 | "engines": {
85 | "node": ">=12"
86 | },
87 | "funding": {
88 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
89 | }
90 | },
91 | "node_modules/arch": {
92 | "version": "2.2.0",
93 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
94 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
95 | "dev": true,
96 | "funding": [
97 | {
98 | "type": "github",
99 | "url": "https://github.com/sponsors/feross"
100 | },
101 | {
102 | "type": "patreon",
103 | "url": "https://www.patreon.com/feross"
104 | },
105 | {
106 | "type": "consulting",
107 | "url": "https://feross.org/support"
108 | }
109 | ]
110 | },
111 | "node_modules/arg": {
112 | "version": "5.0.2",
113 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
114 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
115 | "dev": true
116 | },
117 | "node_modules/balanced-match": {
118 | "version": "1.0.2",
119 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
120 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
121 | "dev": true
122 | },
123 | "node_modules/boxen": {
124 | "version": "7.0.0",
125 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
126 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
127 | "dev": true,
128 | "dependencies": {
129 | "ansi-align": "^3.0.1",
130 | "camelcase": "^7.0.0",
131 | "chalk": "^5.0.1",
132 | "cli-boxes": "^3.0.0",
133 | "string-width": "^5.1.2",
134 | "type-fest": "^2.13.0",
135 | "widest-line": "^4.0.1",
136 | "wrap-ansi": "^8.0.1"
137 | },
138 | "engines": {
139 | "node": ">=14.16"
140 | },
141 | "funding": {
142 | "url": "https://github.com/sponsors/sindresorhus"
143 | }
144 | },
145 | "node_modules/brace-expansion": {
146 | "version": "1.1.11",
147 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
148 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
149 | "dev": true,
150 | "dependencies": {
151 | "balanced-match": "^1.0.0",
152 | "concat-map": "0.0.1"
153 | }
154 | },
155 | "node_modules/bytes": {
156 | "version": "3.0.0",
157 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
158 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
159 | "dev": true,
160 | "engines": {
161 | "node": ">= 0.8"
162 | }
163 | },
164 | "node_modules/camelcase": {
165 | "version": "7.0.0",
166 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
167 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
168 | "dev": true,
169 | "engines": {
170 | "node": ">=14.16"
171 | },
172 | "funding": {
173 | "url": "https://github.com/sponsors/sindresorhus"
174 | }
175 | },
176 | "node_modules/chalk": {
177 | "version": "5.0.1",
178 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
179 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
180 | "dev": true,
181 | "engines": {
182 | "node": "^12.17.0 || ^14.13 || >=16.0.0"
183 | },
184 | "funding": {
185 | "url": "https://github.com/chalk/chalk?sponsor=1"
186 | }
187 | },
188 | "node_modules/chalk-template": {
189 | "version": "0.4.0",
190 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
191 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
192 | "dev": true,
193 | "dependencies": {
194 | "chalk": "^4.1.2"
195 | },
196 | "engines": {
197 | "node": ">=12"
198 | },
199 | "funding": {
200 | "url": "https://github.com/chalk/chalk-template?sponsor=1"
201 | }
202 | },
203 | "node_modules/chalk-template/node_modules/ansi-styles": {
204 | "version": "4.3.0",
205 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
206 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
207 | "dev": true,
208 | "dependencies": {
209 | "color-convert": "^2.0.1"
210 | },
211 | "engines": {
212 | "node": ">=8"
213 | },
214 | "funding": {
215 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
216 | }
217 | },
218 | "node_modules/chalk-template/node_modules/chalk": {
219 | "version": "4.1.2",
220 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
221 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
222 | "dev": true,
223 | "dependencies": {
224 | "ansi-styles": "^4.1.0",
225 | "supports-color": "^7.1.0"
226 | },
227 | "engines": {
228 | "node": ">=10"
229 | },
230 | "funding": {
231 | "url": "https://github.com/chalk/chalk?sponsor=1"
232 | }
233 | },
234 | "node_modules/cli-boxes": {
235 | "version": "3.0.0",
236 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
237 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
238 | "dev": true,
239 | "engines": {
240 | "node": ">=10"
241 | },
242 | "funding": {
243 | "url": "https://github.com/sponsors/sindresorhus"
244 | }
245 | },
246 | "node_modules/clipboardy": {
247 | "version": "3.0.0",
248 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
249 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
250 | "dev": true,
251 | "dependencies": {
252 | "arch": "^2.2.0",
253 | "execa": "^5.1.1",
254 | "is-wsl": "^2.2.0"
255 | },
256 | "engines": {
257 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
258 | },
259 | "funding": {
260 | "url": "https://github.com/sponsors/sindresorhus"
261 | }
262 | },
263 | "node_modules/color-convert": {
264 | "version": "2.0.1",
265 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
266 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
267 | "dev": true,
268 | "dependencies": {
269 | "color-name": "~1.1.4"
270 | },
271 | "engines": {
272 | "node": ">=7.0.0"
273 | }
274 | },
275 | "node_modules/color-name": {
276 | "version": "1.1.4",
277 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
278 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
279 | "dev": true
280 | },
281 | "node_modules/compressible": {
282 | "version": "2.0.18",
283 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
284 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
285 | "dev": true,
286 | "dependencies": {
287 | "mime-db": ">= 1.43.0 < 2"
288 | },
289 | "engines": {
290 | "node": ">= 0.6"
291 | }
292 | },
293 | "node_modules/compression": {
294 | "version": "1.7.4",
295 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
296 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
297 | "dev": true,
298 | "dependencies": {
299 | "accepts": "~1.3.5",
300 | "bytes": "3.0.0",
301 | "compressible": "~2.0.16",
302 | "debug": "2.6.9",
303 | "on-headers": "~1.0.2",
304 | "safe-buffer": "5.1.2",
305 | "vary": "~1.1.2"
306 | },
307 | "engines": {
308 | "node": ">= 0.8.0"
309 | }
310 | },
311 | "node_modules/concat-map": {
312 | "version": "0.0.1",
313 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
314 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
315 | "dev": true
316 | },
317 | "node_modules/content-disposition": {
318 | "version": "0.5.2",
319 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
320 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
321 | "dev": true,
322 | "engines": {
323 | "node": ">= 0.6"
324 | }
325 | },
326 | "node_modules/cross-spawn": {
327 | "version": "7.0.3",
328 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
329 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
330 | "dev": true,
331 | "dependencies": {
332 | "path-key": "^3.1.0",
333 | "shebang-command": "^2.0.0",
334 | "which": "^2.0.1"
335 | },
336 | "engines": {
337 | "node": ">= 8"
338 | }
339 | },
340 | "node_modules/debug": {
341 | "version": "2.6.9",
342 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
343 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
344 | "dev": true,
345 | "dependencies": {
346 | "ms": "2.0.0"
347 | }
348 | },
349 | "node_modules/deep-extend": {
350 | "version": "0.6.0",
351 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
352 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
353 | "dev": true,
354 | "engines": {
355 | "node": ">=4.0.0"
356 | }
357 | },
358 | "node_modules/eastasianwidth": {
359 | "version": "0.2.0",
360 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
361 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
362 | "dev": true
363 | },
364 | "node_modules/emoji-regex": {
365 | "version": "8.0.0",
366 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
367 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
368 | "dev": true
369 | },
370 | "node_modules/execa": {
371 | "version": "5.1.1",
372 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
373 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
374 | "dev": true,
375 | "dependencies": {
376 | "cross-spawn": "^7.0.3",
377 | "get-stream": "^6.0.0",
378 | "human-signals": "^2.1.0",
379 | "is-stream": "^2.0.0",
380 | "merge-stream": "^2.0.0",
381 | "npm-run-path": "^4.0.1",
382 | "onetime": "^5.1.2",
383 | "signal-exit": "^3.0.3",
384 | "strip-final-newline": "^2.0.0"
385 | },
386 | "engines": {
387 | "node": ">=10"
388 | },
389 | "funding": {
390 | "url": "https://github.com/sindresorhus/execa?sponsor=1"
391 | }
392 | },
393 | "node_modules/fast-deep-equal": {
394 | "version": "3.1.3",
395 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
396 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
397 | "dev": true
398 | },
399 | "node_modules/fast-url-parser": {
400 | "version": "1.1.3",
401 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
402 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
403 | "dev": true,
404 | "dependencies": {
405 | "punycode": "^1.3.2"
406 | }
407 | },
408 | "node_modules/fast-url-parser/node_modules/punycode": {
409 | "version": "1.4.1",
410 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
411 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
412 | "dev": true
413 | },
414 | "node_modules/get-stream": {
415 | "version": "6.0.1",
416 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
417 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
418 | "dev": true,
419 | "engines": {
420 | "node": ">=10"
421 | },
422 | "funding": {
423 | "url": "https://github.com/sponsors/sindresorhus"
424 | }
425 | },
426 | "node_modules/has-flag": {
427 | "version": "4.0.0",
428 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
429 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
430 | "dev": true,
431 | "engines": {
432 | "node": ">=8"
433 | }
434 | },
435 | "node_modules/human-signals": {
436 | "version": "2.1.0",
437 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
438 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
439 | "dev": true,
440 | "engines": {
441 | "node": ">=10.17.0"
442 | }
443 | },
444 | "node_modules/ini": {
445 | "version": "1.3.8",
446 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
447 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
448 | "dev": true
449 | },
450 | "node_modules/is-docker": {
451 | "version": "2.2.1",
452 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
453 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
454 | "dev": true,
455 | "bin": {
456 | "is-docker": "cli.js"
457 | },
458 | "engines": {
459 | "node": ">=8"
460 | },
461 | "funding": {
462 | "url": "https://github.com/sponsors/sindresorhus"
463 | }
464 | },
465 | "node_modules/is-fullwidth-code-point": {
466 | "version": "3.0.0",
467 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
468 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
469 | "dev": true,
470 | "engines": {
471 | "node": ">=8"
472 | }
473 | },
474 | "node_modules/is-port-reachable": {
475 | "version": "4.0.0",
476 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
477 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
478 | "dev": true,
479 | "engines": {
480 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
481 | },
482 | "funding": {
483 | "url": "https://github.com/sponsors/sindresorhus"
484 | }
485 | },
486 | "node_modules/is-stream": {
487 | "version": "2.0.1",
488 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
489 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
490 | "dev": true,
491 | "engines": {
492 | "node": ">=8"
493 | },
494 | "funding": {
495 | "url": "https://github.com/sponsors/sindresorhus"
496 | }
497 | },
498 | "node_modules/is-wsl": {
499 | "version": "2.2.0",
500 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
501 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
502 | "dev": true,
503 | "dependencies": {
504 | "is-docker": "^2.0.0"
505 | },
506 | "engines": {
507 | "node": ">=8"
508 | }
509 | },
510 | "node_modules/isexe": {
511 | "version": "2.0.0",
512 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
513 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
514 | "dev": true
515 | },
516 | "node_modules/json-schema-traverse": {
517 | "version": "1.0.0",
518 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
519 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
520 | "dev": true
521 | },
522 | "node_modules/merge-stream": {
523 | "version": "2.0.0",
524 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
525 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
526 | "dev": true
527 | },
528 | "node_modules/mime-db": {
529 | "version": "1.52.0",
530 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
531 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
532 | "dev": true,
533 | "engines": {
534 | "node": ">= 0.6"
535 | }
536 | },
537 | "node_modules/mime-types": {
538 | "version": "2.1.35",
539 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
540 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
541 | "dev": true,
542 | "dependencies": {
543 | "mime-db": "1.52.0"
544 | },
545 | "engines": {
546 | "node": ">= 0.6"
547 | }
548 | },
549 | "node_modules/mimic-fn": {
550 | "version": "2.1.0",
551 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
552 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
553 | "dev": true,
554 | "engines": {
555 | "node": ">=6"
556 | }
557 | },
558 | "node_modules/minimatch": {
559 | "version": "3.1.2",
560 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
561 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
562 | "dev": true,
563 | "dependencies": {
564 | "brace-expansion": "^1.1.7"
565 | },
566 | "engines": {
567 | "node": "*"
568 | }
569 | },
570 | "node_modules/minimist": {
571 | "version": "1.2.7",
572 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
573 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
574 | "dev": true,
575 | "funding": {
576 | "url": "https://github.com/sponsors/ljharb"
577 | }
578 | },
579 | "node_modules/ms": {
580 | "version": "2.0.0",
581 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
582 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
583 | "dev": true
584 | },
585 | "node_modules/negotiator": {
586 | "version": "0.6.3",
587 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
588 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
589 | "dev": true,
590 | "engines": {
591 | "node": ">= 0.6"
592 | }
593 | },
594 | "node_modules/npm-run-path": {
595 | "version": "4.0.1",
596 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
597 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
598 | "dev": true,
599 | "dependencies": {
600 | "path-key": "^3.0.0"
601 | },
602 | "engines": {
603 | "node": ">=8"
604 | }
605 | },
606 | "node_modules/on-headers": {
607 | "version": "1.0.2",
608 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
609 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
610 | "dev": true,
611 | "engines": {
612 | "node": ">= 0.8"
613 | }
614 | },
615 | "node_modules/onetime": {
616 | "version": "5.1.2",
617 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
618 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
619 | "dev": true,
620 | "dependencies": {
621 | "mimic-fn": "^2.1.0"
622 | },
623 | "engines": {
624 | "node": ">=6"
625 | },
626 | "funding": {
627 | "url": "https://github.com/sponsors/sindresorhus"
628 | }
629 | },
630 | "node_modules/path-is-inside": {
631 | "version": "1.0.2",
632 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
633 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
634 | "dev": true
635 | },
636 | "node_modules/path-key": {
637 | "version": "3.1.1",
638 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
639 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
640 | "dev": true,
641 | "engines": {
642 | "node": ">=8"
643 | }
644 | },
645 | "node_modules/path-to-regexp": {
646 | "version": "2.2.1",
647 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
648 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
649 | "dev": true
650 | },
651 | "node_modules/prettier": {
652 | "version": "2.8.0",
653 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz",
654 | "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==",
655 | "dev": true,
656 | "bin": {
657 | "prettier": "bin-prettier.js"
658 | },
659 | "engines": {
660 | "node": ">=10.13.0"
661 | },
662 | "funding": {
663 | "url": "https://github.com/prettier/prettier?sponsor=1"
664 | }
665 | },
666 | "node_modules/punycode": {
667 | "version": "2.1.1",
668 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
669 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
670 | "dev": true,
671 | "engines": {
672 | "node": ">=6"
673 | }
674 | },
675 | "node_modules/range-parser": {
676 | "version": "1.2.0",
677 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
678 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
679 | "dev": true,
680 | "engines": {
681 | "node": ">= 0.6"
682 | }
683 | },
684 | "node_modules/rc": {
685 | "version": "1.2.8",
686 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
687 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
688 | "dev": true,
689 | "dependencies": {
690 | "deep-extend": "^0.6.0",
691 | "ini": "~1.3.0",
692 | "minimist": "^1.2.0",
693 | "strip-json-comments": "~2.0.1"
694 | },
695 | "bin": {
696 | "rc": "cli.js"
697 | }
698 | },
699 | "node_modules/registry-auth-token": {
700 | "version": "3.3.2",
701 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
702 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
703 | "dev": true,
704 | "dependencies": {
705 | "rc": "^1.1.6",
706 | "safe-buffer": "^5.0.1"
707 | }
708 | },
709 | "node_modules/registry-url": {
710 | "version": "3.1.0",
711 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
712 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
713 | "dev": true,
714 | "dependencies": {
715 | "rc": "^1.0.1"
716 | },
717 | "engines": {
718 | "node": ">=0.10.0"
719 | }
720 | },
721 | "node_modules/require-from-string": {
722 | "version": "2.0.2",
723 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
724 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
725 | "dev": true,
726 | "engines": {
727 | "node": ">=0.10.0"
728 | }
729 | },
730 | "node_modules/safe-buffer": {
731 | "version": "5.1.2",
732 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
733 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
734 | "dev": true
735 | },
736 | "node_modules/serve": {
737 | "version": "14.1.2",
738 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz",
739 | "integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==",
740 | "dev": true,
741 | "dependencies": {
742 | "@zeit/schemas": "2.21.0",
743 | "ajv": "8.11.0",
744 | "arg": "5.0.2",
745 | "boxen": "7.0.0",
746 | "chalk": "5.0.1",
747 | "chalk-template": "0.4.0",
748 | "clipboardy": "3.0.0",
749 | "compression": "1.7.4",
750 | "is-port-reachable": "4.0.0",
751 | "serve-handler": "6.1.5",
752 | "update-check": "1.5.4"
753 | },
754 | "bin": {
755 | "serve": "build/main.js"
756 | },
757 | "engines": {
758 | "node": ">= 14"
759 | }
760 | },
761 | "node_modules/serve-handler": {
762 | "version": "6.1.5",
763 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz",
764 | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==",
765 | "dev": true,
766 | "dependencies": {
767 | "bytes": "3.0.0",
768 | "content-disposition": "0.5.2",
769 | "fast-url-parser": "1.1.3",
770 | "mime-types": "2.1.18",
771 | "minimatch": "3.1.2",
772 | "path-is-inside": "1.0.2",
773 | "path-to-regexp": "2.2.1",
774 | "range-parser": "1.2.0"
775 | }
776 | },
777 | "node_modules/serve-handler/node_modules/mime-db": {
778 | "version": "1.33.0",
779 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
780 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
781 | "dev": true,
782 | "engines": {
783 | "node": ">= 0.6"
784 | }
785 | },
786 | "node_modules/serve-handler/node_modules/mime-types": {
787 | "version": "2.1.18",
788 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
789 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
790 | "dev": true,
791 | "dependencies": {
792 | "mime-db": "~1.33.0"
793 | },
794 | "engines": {
795 | "node": ">= 0.6"
796 | }
797 | },
798 | "node_modules/shebang-command": {
799 | "version": "2.0.0",
800 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
801 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
802 | "dev": true,
803 | "dependencies": {
804 | "shebang-regex": "^3.0.0"
805 | },
806 | "engines": {
807 | "node": ">=8"
808 | }
809 | },
810 | "node_modules/shebang-regex": {
811 | "version": "3.0.0",
812 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
813 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
814 | "dev": true,
815 | "engines": {
816 | "node": ">=8"
817 | }
818 | },
819 | "node_modules/signal-exit": {
820 | "version": "3.0.7",
821 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
822 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
823 | "dev": true
824 | },
825 | "node_modules/string-width": {
826 | "version": "5.1.2",
827 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
828 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
829 | "dev": true,
830 | "dependencies": {
831 | "eastasianwidth": "^0.2.0",
832 | "emoji-regex": "^9.2.2",
833 | "strip-ansi": "^7.0.1"
834 | },
835 | "engines": {
836 | "node": ">=12"
837 | },
838 | "funding": {
839 | "url": "https://github.com/sponsors/sindresorhus"
840 | }
841 | },
842 | "node_modules/string-width/node_modules/ansi-regex": {
843 | "version": "6.0.1",
844 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
845 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
846 | "dev": true,
847 | "engines": {
848 | "node": ">=12"
849 | },
850 | "funding": {
851 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
852 | }
853 | },
854 | "node_modules/string-width/node_modules/emoji-regex": {
855 | "version": "9.2.2",
856 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
857 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
858 | "dev": true
859 | },
860 | "node_modules/string-width/node_modules/strip-ansi": {
861 | "version": "7.0.1",
862 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
863 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
864 | "dev": true,
865 | "dependencies": {
866 | "ansi-regex": "^6.0.1"
867 | },
868 | "engines": {
869 | "node": ">=12"
870 | },
871 | "funding": {
872 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
873 | }
874 | },
875 | "node_modules/strip-ansi": {
876 | "version": "6.0.1",
877 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
878 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
879 | "dev": true,
880 | "dependencies": {
881 | "ansi-regex": "^5.0.1"
882 | },
883 | "engines": {
884 | "node": ">=8"
885 | }
886 | },
887 | "node_modules/strip-final-newline": {
888 | "version": "2.0.0",
889 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
890 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
891 | "dev": true,
892 | "engines": {
893 | "node": ">=6"
894 | }
895 | },
896 | "node_modules/strip-json-comments": {
897 | "version": "2.0.1",
898 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
899 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
900 | "dev": true,
901 | "engines": {
902 | "node": ">=0.10.0"
903 | }
904 | },
905 | "node_modules/supports-color": {
906 | "version": "7.2.0",
907 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
908 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
909 | "dev": true,
910 | "dependencies": {
911 | "has-flag": "^4.0.0"
912 | },
913 | "engines": {
914 | "node": ">=8"
915 | }
916 | },
917 | "node_modules/type-fest": {
918 | "version": "2.19.0",
919 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
920 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
921 | "dev": true,
922 | "engines": {
923 | "node": ">=12.20"
924 | },
925 | "funding": {
926 | "url": "https://github.com/sponsors/sindresorhus"
927 | }
928 | },
929 | "node_modules/update-check": {
930 | "version": "1.5.4",
931 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
932 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
933 | "dev": true,
934 | "dependencies": {
935 | "registry-auth-token": "3.3.2",
936 | "registry-url": "3.1.0"
937 | }
938 | },
939 | "node_modules/uri-js": {
940 | "version": "4.4.1",
941 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
942 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
943 | "dev": true,
944 | "dependencies": {
945 | "punycode": "^2.1.0"
946 | }
947 | },
948 | "node_modules/vary": {
949 | "version": "1.1.2",
950 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
951 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
952 | "dev": true,
953 | "engines": {
954 | "node": ">= 0.8"
955 | }
956 | },
957 | "node_modules/which": {
958 | "version": "2.0.2",
959 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
960 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
961 | "dev": true,
962 | "dependencies": {
963 | "isexe": "^2.0.0"
964 | },
965 | "bin": {
966 | "node-which": "bin/node-which"
967 | },
968 | "engines": {
969 | "node": ">= 8"
970 | }
971 | },
972 | "node_modules/widest-line": {
973 | "version": "4.0.1",
974 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
975 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
976 | "dev": true,
977 | "dependencies": {
978 | "string-width": "^5.0.1"
979 | },
980 | "engines": {
981 | "node": ">=12"
982 | },
983 | "funding": {
984 | "url": "https://github.com/sponsors/sindresorhus"
985 | }
986 | },
987 | "node_modules/wrap-ansi": {
988 | "version": "8.0.1",
989 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
990 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
991 | "dev": true,
992 | "dependencies": {
993 | "ansi-styles": "^6.1.0",
994 | "string-width": "^5.0.1",
995 | "strip-ansi": "^7.0.1"
996 | },
997 | "engines": {
998 | "node": ">=12"
999 | },
1000 | "funding": {
1001 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1002 | }
1003 | },
1004 | "node_modules/wrap-ansi/node_modules/ansi-regex": {
1005 | "version": "6.0.1",
1006 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
1007 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
1008 | "dev": true,
1009 | "engines": {
1010 | "node": ">=12"
1011 | },
1012 | "funding": {
1013 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
1014 | }
1015 | },
1016 | "node_modules/wrap-ansi/node_modules/strip-ansi": {
1017 | "version": "7.0.1",
1018 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
1019 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
1020 | "dev": true,
1021 | "dependencies": {
1022 | "ansi-regex": "^6.0.1"
1023 | },
1024 | "engines": {
1025 | "node": ">=12"
1026 | },
1027 | "funding": {
1028 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1029 | }
1030 | }
1031 | },
1032 | "dependencies": {
1033 | "@zeit/schemas": {
1034 | "version": "2.21.0",
1035 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
1036 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
1037 | "dev": true
1038 | },
1039 | "accepts": {
1040 | "version": "1.3.8",
1041 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
1042 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
1043 | "dev": true,
1044 | "requires": {
1045 | "mime-types": "~2.1.34",
1046 | "negotiator": "0.6.3"
1047 | }
1048 | },
1049 | "ajv": {
1050 | "version": "8.11.0",
1051 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
1052 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
1053 | "dev": true,
1054 | "requires": {
1055 | "fast-deep-equal": "^3.1.1",
1056 | "json-schema-traverse": "^1.0.0",
1057 | "require-from-string": "^2.0.2",
1058 | "uri-js": "^4.2.2"
1059 | }
1060 | },
1061 | "ansi-align": {
1062 | "version": "3.0.1",
1063 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
1064 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
1065 | "dev": true,
1066 | "requires": {
1067 | "string-width": "^4.1.0"
1068 | },
1069 | "dependencies": {
1070 | "string-width": {
1071 | "version": "4.2.3",
1072 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1073 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1074 | "dev": true,
1075 | "requires": {
1076 | "emoji-regex": "^8.0.0",
1077 | "is-fullwidth-code-point": "^3.0.0",
1078 | "strip-ansi": "^6.0.1"
1079 | }
1080 | }
1081 | }
1082 | },
1083 | "ansi-regex": {
1084 | "version": "5.0.1",
1085 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1086 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1087 | "dev": true
1088 | },
1089 | "ansi-styles": {
1090 | "version": "6.2.1",
1091 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
1092 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
1093 | "dev": true
1094 | },
1095 | "arch": {
1096 | "version": "2.2.0",
1097 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
1098 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
1099 | "dev": true
1100 | },
1101 | "arg": {
1102 | "version": "5.0.2",
1103 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1104 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1105 | "dev": true
1106 | },
1107 | "balanced-match": {
1108 | "version": "1.0.2",
1109 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1110 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1111 | "dev": true
1112 | },
1113 | "boxen": {
1114 | "version": "7.0.0",
1115 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
1116 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
1117 | "dev": true,
1118 | "requires": {
1119 | "ansi-align": "^3.0.1",
1120 | "camelcase": "^7.0.0",
1121 | "chalk": "^5.0.1",
1122 | "cli-boxes": "^3.0.0",
1123 | "string-width": "^5.1.2",
1124 | "type-fest": "^2.13.0",
1125 | "widest-line": "^4.0.1",
1126 | "wrap-ansi": "^8.0.1"
1127 | }
1128 | },
1129 | "brace-expansion": {
1130 | "version": "1.1.11",
1131 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1132 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1133 | "dev": true,
1134 | "requires": {
1135 | "balanced-match": "^1.0.0",
1136 | "concat-map": "0.0.1"
1137 | }
1138 | },
1139 | "bytes": {
1140 | "version": "3.0.0",
1141 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
1142 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
1143 | "dev": true
1144 | },
1145 | "camelcase": {
1146 | "version": "7.0.0",
1147 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
1148 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
1149 | "dev": true
1150 | },
1151 | "chalk": {
1152 | "version": "5.0.1",
1153 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
1154 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
1155 | "dev": true
1156 | },
1157 | "chalk-template": {
1158 | "version": "0.4.0",
1159 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
1160 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
1161 | "dev": true,
1162 | "requires": {
1163 | "chalk": "^4.1.2"
1164 | },
1165 | "dependencies": {
1166 | "ansi-styles": {
1167 | "version": "4.3.0",
1168 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1169 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1170 | "dev": true,
1171 | "requires": {
1172 | "color-convert": "^2.0.1"
1173 | }
1174 | },
1175 | "chalk": {
1176 | "version": "4.1.2",
1177 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1178 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1179 | "dev": true,
1180 | "requires": {
1181 | "ansi-styles": "^4.1.0",
1182 | "supports-color": "^7.1.0"
1183 | }
1184 | }
1185 | }
1186 | },
1187 | "cli-boxes": {
1188 | "version": "3.0.0",
1189 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
1190 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
1191 | "dev": true
1192 | },
1193 | "clipboardy": {
1194 | "version": "3.0.0",
1195 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
1196 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
1197 | "dev": true,
1198 | "requires": {
1199 | "arch": "^2.2.0",
1200 | "execa": "^5.1.1",
1201 | "is-wsl": "^2.2.0"
1202 | }
1203 | },
1204 | "color-convert": {
1205 | "version": "2.0.1",
1206 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1207 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1208 | "dev": true,
1209 | "requires": {
1210 | "color-name": "~1.1.4"
1211 | }
1212 | },
1213 | "color-name": {
1214 | "version": "1.1.4",
1215 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1216 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1217 | "dev": true
1218 | },
1219 | "compressible": {
1220 | "version": "2.0.18",
1221 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
1222 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
1223 | "dev": true,
1224 | "requires": {
1225 | "mime-db": ">= 1.43.0 < 2"
1226 | }
1227 | },
1228 | "compression": {
1229 | "version": "1.7.4",
1230 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
1231 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
1232 | "dev": true,
1233 | "requires": {
1234 | "accepts": "~1.3.5",
1235 | "bytes": "3.0.0",
1236 | "compressible": "~2.0.16",
1237 | "debug": "2.6.9",
1238 | "on-headers": "~1.0.2",
1239 | "safe-buffer": "5.1.2",
1240 | "vary": "~1.1.2"
1241 | }
1242 | },
1243 | "concat-map": {
1244 | "version": "0.0.1",
1245 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1246 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1247 | "dev": true
1248 | },
1249 | "content-disposition": {
1250 | "version": "0.5.2",
1251 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
1252 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
1253 | "dev": true
1254 | },
1255 | "cross-spawn": {
1256 | "version": "7.0.3",
1257 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1258 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1259 | "dev": true,
1260 | "requires": {
1261 | "path-key": "^3.1.0",
1262 | "shebang-command": "^2.0.0",
1263 | "which": "^2.0.1"
1264 | }
1265 | },
1266 | "debug": {
1267 | "version": "2.6.9",
1268 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1269 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1270 | "dev": true,
1271 | "requires": {
1272 | "ms": "2.0.0"
1273 | }
1274 | },
1275 | "deep-extend": {
1276 | "version": "0.6.0",
1277 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1278 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1279 | "dev": true
1280 | },
1281 | "eastasianwidth": {
1282 | "version": "0.2.0",
1283 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1284 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1285 | "dev": true
1286 | },
1287 | "emoji-regex": {
1288 | "version": "8.0.0",
1289 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1290 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1291 | "dev": true
1292 | },
1293 | "execa": {
1294 | "version": "5.1.1",
1295 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
1296 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
1297 | "dev": true,
1298 | "requires": {
1299 | "cross-spawn": "^7.0.3",
1300 | "get-stream": "^6.0.0",
1301 | "human-signals": "^2.1.0",
1302 | "is-stream": "^2.0.0",
1303 | "merge-stream": "^2.0.0",
1304 | "npm-run-path": "^4.0.1",
1305 | "onetime": "^5.1.2",
1306 | "signal-exit": "^3.0.3",
1307 | "strip-final-newline": "^2.0.0"
1308 | }
1309 | },
1310 | "fast-deep-equal": {
1311 | "version": "3.1.3",
1312 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1313 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1314 | "dev": true
1315 | },
1316 | "fast-url-parser": {
1317 | "version": "1.1.3",
1318 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
1319 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
1320 | "dev": true,
1321 | "requires": {
1322 | "punycode": "^1.3.2"
1323 | },
1324 | "dependencies": {
1325 | "punycode": {
1326 | "version": "1.4.1",
1327 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1328 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
1329 | "dev": true
1330 | }
1331 | }
1332 | },
1333 | "get-stream": {
1334 | "version": "6.0.1",
1335 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
1336 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
1337 | "dev": true
1338 | },
1339 | "has-flag": {
1340 | "version": "4.0.0",
1341 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1342 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1343 | "dev": true
1344 | },
1345 | "human-signals": {
1346 | "version": "2.1.0",
1347 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
1348 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
1349 | "dev": true
1350 | },
1351 | "ini": {
1352 | "version": "1.3.8",
1353 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
1354 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
1355 | "dev": true
1356 | },
1357 | "is-docker": {
1358 | "version": "2.2.1",
1359 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
1360 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
1361 | "dev": true
1362 | },
1363 | "is-fullwidth-code-point": {
1364 | "version": "3.0.0",
1365 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1366 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1367 | "dev": true
1368 | },
1369 | "is-port-reachable": {
1370 | "version": "4.0.0",
1371 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
1372 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
1373 | "dev": true
1374 | },
1375 | "is-stream": {
1376 | "version": "2.0.1",
1377 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
1378 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
1379 | "dev": true
1380 | },
1381 | "is-wsl": {
1382 | "version": "2.2.0",
1383 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
1384 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
1385 | "dev": true,
1386 | "requires": {
1387 | "is-docker": "^2.0.0"
1388 | }
1389 | },
1390 | "isexe": {
1391 | "version": "2.0.0",
1392 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1393 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1394 | "dev": true
1395 | },
1396 | "json-schema-traverse": {
1397 | "version": "1.0.0",
1398 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
1399 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
1400 | "dev": true
1401 | },
1402 | "merge-stream": {
1403 | "version": "2.0.0",
1404 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1405 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1406 | "dev": true
1407 | },
1408 | "mime-db": {
1409 | "version": "1.52.0",
1410 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1411 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1412 | "dev": true
1413 | },
1414 | "mime-types": {
1415 | "version": "2.1.35",
1416 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1417 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1418 | "dev": true,
1419 | "requires": {
1420 | "mime-db": "1.52.0"
1421 | }
1422 | },
1423 | "mimic-fn": {
1424 | "version": "2.1.0",
1425 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1426 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1427 | "dev": true
1428 | },
1429 | "minimatch": {
1430 | "version": "3.1.2",
1431 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1432 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1433 | "dev": true,
1434 | "requires": {
1435 | "brace-expansion": "^1.1.7"
1436 | }
1437 | },
1438 | "minimist": {
1439 | "version": "1.2.7",
1440 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
1441 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
1442 | "dev": true
1443 | },
1444 | "ms": {
1445 | "version": "2.0.0",
1446 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1447 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1448 | "dev": true
1449 | },
1450 | "negotiator": {
1451 | "version": "0.6.3",
1452 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1453 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1454 | "dev": true
1455 | },
1456 | "npm-run-path": {
1457 | "version": "4.0.1",
1458 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
1459 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
1460 | "dev": true,
1461 | "requires": {
1462 | "path-key": "^3.0.0"
1463 | }
1464 | },
1465 | "on-headers": {
1466 | "version": "1.0.2",
1467 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1468 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
1469 | "dev": true
1470 | },
1471 | "onetime": {
1472 | "version": "5.1.2",
1473 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1474 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1475 | "dev": true,
1476 | "requires": {
1477 | "mimic-fn": "^2.1.0"
1478 | }
1479 | },
1480 | "path-is-inside": {
1481 | "version": "1.0.2",
1482 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1483 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
1484 | "dev": true
1485 | },
1486 | "path-key": {
1487 | "version": "3.1.1",
1488 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1489 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1490 | "dev": true
1491 | },
1492 | "path-to-regexp": {
1493 | "version": "2.2.1",
1494 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
1495 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
1496 | "dev": true
1497 | },
1498 | "prettier": {
1499 | "version": "2.8.0",
1500 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz",
1501 | "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==",
1502 | "dev": true
1503 | },
1504 | "punycode": {
1505 | "version": "2.1.1",
1506 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1507 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1508 | "dev": true
1509 | },
1510 | "range-parser": {
1511 | "version": "1.2.0",
1512 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
1513 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
1514 | "dev": true
1515 | },
1516 | "rc": {
1517 | "version": "1.2.8",
1518 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
1519 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
1520 | "dev": true,
1521 | "requires": {
1522 | "deep-extend": "^0.6.0",
1523 | "ini": "~1.3.0",
1524 | "minimist": "^1.2.0",
1525 | "strip-json-comments": "~2.0.1"
1526 | }
1527 | },
1528 | "registry-auth-token": {
1529 | "version": "3.3.2",
1530 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
1531 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
1532 | "dev": true,
1533 | "requires": {
1534 | "rc": "^1.1.6",
1535 | "safe-buffer": "^5.0.1"
1536 | }
1537 | },
1538 | "registry-url": {
1539 | "version": "3.1.0",
1540 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
1541 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
1542 | "dev": true,
1543 | "requires": {
1544 | "rc": "^1.0.1"
1545 | }
1546 | },
1547 | "require-from-string": {
1548 | "version": "2.0.2",
1549 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
1550 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
1551 | "dev": true
1552 | },
1553 | "safe-buffer": {
1554 | "version": "5.1.2",
1555 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1556 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1557 | "dev": true
1558 | },
1559 | "serve": {
1560 | "version": "14.1.2",
1561 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz",
1562 | "integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==",
1563 | "dev": true,
1564 | "requires": {
1565 | "@zeit/schemas": "2.21.0",
1566 | "ajv": "8.11.0",
1567 | "arg": "5.0.2",
1568 | "boxen": "7.0.0",
1569 | "chalk": "5.0.1",
1570 | "chalk-template": "0.4.0",
1571 | "clipboardy": "3.0.0",
1572 | "compression": "1.7.4",
1573 | "is-port-reachable": "4.0.0",
1574 | "serve-handler": "6.1.5",
1575 | "update-check": "1.5.4"
1576 | }
1577 | },
1578 | "serve-handler": {
1579 | "version": "6.1.5",
1580 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz",
1581 | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==",
1582 | "dev": true,
1583 | "requires": {
1584 | "bytes": "3.0.0",
1585 | "content-disposition": "0.5.2",
1586 | "fast-url-parser": "1.1.3",
1587 | "mime-types": "2.1.18",
1588 | "minimatch": "3.1.2",
1589 | "path-is-inside": "1.0.2",
1590 | "path-to-regexp": "2.2.1",
1591 | "range-parser": "1.2.0"
1592 | },
1593 | "dependencies": {
1594 | "mime-db": {
1595 | "version": "1.33.0",
1596 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
1597 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
1598 | "dev": true
1599 | },
1600 | "mime-types": {
1601 | "version": "2.1.18",
1602 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
1603 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
1604 | "dev": true,
1605 | "requires": {
1606 | "mime-db": "~1.33.0"
1607 | }
1608 | }
1609 | }
1610 | },
1611 | "shebang-command": {
1612 | "version": "2.0.0",
1613 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1614 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1615 | "dev": true,
1616 | "requires": {
1617 | "shebang-regex": "^3.0.0"
1618 | }
1619 | },
1620 | "shebang-regex": {
1621 | "version": "3.0.0",
1622 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1623 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1624 | "dev": true
1625 | },
1626 | "signal-exit": {
1627 | "version": "3.0.7",
1628 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1629 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1630 | "dev": true
1631 | },
1632 | "string-width": {
1633 | "version": "5.1.2",
1634 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1635 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1636 | "dev": true,
1637 | "requires": {
1638 | "eastasianwidth": "^0.2.0",
1639 | "emoji-regex": "^9.2.2",
1640 | "strip-ansi": "^7.0.1"
1641 | },
1642 | "dependencies": {
1643 | "ansi-regex": {
1644 | "version": "6.0.1",
1645 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
1646 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
1647 | "dev": true
1648 | },
1649 | "emoji-regex": {
1650 | "version": "9.2.2",
1651 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1652 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1653 | "dev": true
1654 | },
1655 | "strip-ansi": {
1656 | "version": "7.0.1",
1657 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
1658 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
1659 | "dev": true,
1660 | "requires": {
1661 | "ansi-regex": "^6.0.1"
1662 | }
1663 | }
1664 | }
1665 | },
1666 | "strip-ansi": {
1667 | "version": "6.0.1",
1668 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1669 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1670 | "dev": true,
1671 | "requires": {
1672 | "ansi-regex": "^5.0.1"
1673 | }
1674 | },
1675 | "strip-final-newline": {
1676 | "version": "2.0.0",
1677 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
1678 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
1679 | "dev": true
1680 | },
1681 | "strip-json-comments": {
1682 | "version": "2.0.1",
1683 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1684 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
1685 | "dev": true
1686 | },
1687 | "supports-color": {
1688 | "version": "7.2.0",
1689 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1690 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1691 | "dev": true,
1692 | "requires": {
1693 | "has-flag": "^4.0.0"
1694 | }
1695 | },
1696 | "type-fest": {
1697 | "version": "2.19.0",
1698 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
1699 | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
1700 | "dev": true
1701 | },
1702 | "update-check": {
1703 | "version": "1.5.4",
1704 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
1705 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
1706 | "dev": true,
1707 | "requires": {
1708 | "registry-auth-token": "3.3.2",
1709 | "registry-url": "3.1.0"
1710 | }
1711 | },
1712 | "uri-js": {
1713 | "version": "4.4.1",
1714 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1715 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1716 | "dev": true,
1717 | "requires": {
1718 | "punycode": "^2.1.0"
1719 | }
1720 | },
1721 | "vary": {
1722 | "version": "1.1.2",
1723 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1724 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1725 | "dev": true
1726 | },
1727 | "which": {
1728 | "version": "2.0.2",
1729 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1730 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1731 | "dev": true,
1732 | "requires": {
1733 | "isexe": "^2.0.0"
1734 | }
1735 | },
1736 | "widest-line": {
1737 | "version": "4.0.1",
1738 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
1739 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
1740 | "dev": true,
1741 | "requires": {
1742 | "string-width": "^5.0.1"
1743 | }
1744 | },
1745 | "wrap-ansi": {
1746 | "version": "8.0.1",
1747 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
1748 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
1749 | "dev": true,
1750 | "requires": {
1751 | "ansi-styles": "^6.1.0",
1752 | "string-width": "^5.0.1",
1753 | "strip-ansi": "^7.0.1"
1754 | },
1755 | "dependencies": {
1756 | "ansi-regex": {
1757 | "version": "6.0.1",
1758 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
1759 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
1760 | "dev": true
1761 | },
1762 | "strip-ansi": {
1763 | "version": "7.0.1",
1764 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
1765 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
1766 | "dev": true,
1767 | "requires": {
1768 | "ansi-regex": "^6.0.1"
1769 | }
1770 | }
1771 | }
1772 | }
1773 | }
1774 | }
1775 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "prettier": "^2.8.0",
4 | "serve": "^14.1.2"
5 | },
6 | "scripts": {
7 | "format": "prettier -w index.html main.js",
8 | "start": "serve ."
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rameshvarun/codec2-emscripten/68e323e8659a24efe600422861c3b50b3944e1eb/screenshot.png
--------------------------------------------------------------------------------